diff --git a/.env b/.env deleted file mode 100644 index 5ce969506..000000000 --- a/.env +++ /dev/null @@ -1,4 +0,0 @@ -INFURA_ID = bd80ce1ca1f94da48e151bb6868bb150 -NETWORK_ID = 1 -NETWORK = mainnet -PUBLIC_URL = '' \ No newline at end of file diff --git a/.env.example b/.env.example new file mode 100644 index 000000000..dec0bfc59 --- /dev/null +++ b/.env.example @@ -0,0 +1,4 @@ +REACT_APP_NETWORK_ID=56 +REACT_APP_API_URL=https://api.beefy.finance +PUBLIC_URL='' +IMAGE_INLINE_SIZE_LIMIT=0 diff --git a/.github/workflows/sync.yaml b/.github/workflows/sync.yaml new file mode 100644 index 000000000..8d2d4935d --- /dev/null +++ b/.github/workflows/sync.yaml @@ -0,0 +1,17 @@ +name: Sync CI + +on: + push: + branches: + - 'prod' + +jobs: + test: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - uses: seguido/beefy-app-sync@v0.1 + with: + GITHUB_TOKEN: ${{ secrets.SYNC_GITHUB_TOKEN }} + GITHUB_USER: 'chebiN' + GITHUB_EMAIL: 'chebiN@beefy.com' diff --git a/.gitignore b/.gitignore index f0b36eabf..a9ebe83ec 100644 --- a/.gitignore +++ b/.gitignore @@ -1,27 +1,31 @@ -# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. - -# dependencies -/node_modules -/.pnp -.pnp.js - -# testing -/coverage - -# production -/build - -# misc +# Global .DS_Store +node_modules +dist +build + +# local env files +.env +.envrc .env.local -.env.development.local -.env.test.local -.env.production.local +.env.*.local +# Log files +*.log npm-debug.log* yarn-debug.log* yarn-error.log* -scripts/upload.js -package.json -package-lock.json -.idea \ No newline at end of file +pnpm-debug.log* + +# Editor directories and files +.idea +.vscode +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? + +# Test +.nyc_output +coverage diff --git a/.husky/.gitignore b/.husky/.gitignore new file mode 100644 index 000000000..31354ec13 --- /dev/null +++ b/.husky/.gitignore @@ -0,0 +1 @@ +_ diff --git a/.husky/pre-commit b/.husky/pre-commit new file mode 100755 index 000000000..d2ae35e84 --- /dev/null +++ b/.husky/pre-commit @@ -0,0 +1,4 @@ +#!/bin/sh +. "$(dirname "$0")/_/husky.sh" + +yarn lint-staged diff --git a/.nvmrc b/.nvmrc new file mode 100644 index 000000000..75701b229 --- /dev/null +++ b/.nvmrc @@ -0,0 +1 @@ +v15 diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 000000000..6779f0c31 --- /dev/null +++ b/.prettierignore @@ -0,0 +1,9 @@ +src/features/configure/abi.js +node_modules +.vscode +dist +*.log +*.tgz +.envrc +.nyc_output +coverage diff --git a/.prettierrc.json b/.prettierrc.json new file mode 100644 index 000000000..aeb8ba298 --- /dev/null +++ b/.prettierrc.json @@ -0,0 +1,8 @@ +{ + "trailingComma": "es5", + "tabWidth": 2, + "semi": true, + "singleQuote": true, + "printWidth": 100, + "arrowParens": "avoid" +} diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 000000000..f387f78fb --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,56 @@ +Contributing to the Beefy App +======= + +We really appreciate and value contributions to the Beefy.Finance repositories. Please take 5' to review the items listed below to make sure that your contributions are merged as soon as possible. + +## Creating Pull Requests (PRs) + +As a contributor, you are expected to fork this repository, work on your own fork and then submit pull requests. The pull requests will be reviewed and eventually merged into the main repo. See ["Fork-a-Repo"](https://help.github.com/articles/fork-a-repo/) for how this works. + +## A typical workflow + +1) Make sure your fork is up to date with the main repository: + +``` +cd beefy-app +git remote add upstream https://github.com/beefyfinance/beefy-app.git +git fetch upstream +git pull --rebase upstream master +``` +NOTE: The directory `beefy-app` represents your fork's local copy. + +2) Branch out from `master` into `fix/some-bug-#123`: +(Postfixing #123 will associate your PR with the issue #123 and make everyone's life easier =D) +``` +git checkout -b fix/some-bug-#123 +``` + +3) Make your changes, add your files, commit, and push to your fork. + +``` +git add SomeFile.js +git commit "Fix some bug #123" +git push origin fix/some-bug-#123 +``` + +4) Go to [github.com/beefyfinance/beefy-app](https://github.com/beefyfinance/beefy-app) in your web browser and issue a new pull request. + +5) Maintainers will review your code and possibly ask for changes before your code is pulled in to the main repository. We'll check that all tests pass, review the coding style, and check for general code correctness. If everything is OK, we'll merge your pull request and your code will be part of Beefy's App. + +*IMPORTANT* Please pay attention to the maintainer's feedback, since its a necessary step to keep up with the standards Beefy.Finance attains to. + +## All set! + +If you have any questions, feel free to post them to [github.com/beefyfinance/beefy-app/issues](https://github.com/beefyfinance/beefy-app/issues). + +Finally, if you're looking to collaborate and want to find easy tasks to start, look at the issues we marked as ["Good first issue"](https://github.com/beefyfinance/beefy-app/issues?q=label%3A%22good+first+issue%22). + +## Contributor rewards + +Beefy wants to be a self-sustainable community. A portion of the fees that come from running the vaults at [beefy.finance](https://app.beefy.finance) goes into a community managed treasury. The treasury is used to pay for marketing, community managers, developers, etc. We are learning together how to do this in a fair and effective way. When it comes to devs there are a few options: + +1. There are some issues that will have a "Treasury Bounty" tag and a dollar amount in the issue title. This means that the issue carries a reward to the dev that closes it. +2. You can propose a bounty or budget to get something done by following our [proposal guidelines](PROPOSAL_GUIDELINES.md) +3. We are tracking all contributions using [Sourcecred](https://sourcecred.io/). This is a project designed specifically to track community contributions. We have [our instance](https://beefy.finance/beefy-cred/#/explorer) and track GitHub contributions. A percentage of the treasury funds might be used every month to reward developers based on that distribution. This initiative is just getting started. + +Thanks for your time and code! diff --git a/LICENSE b/LICENSE new file mode 100644 index 000000000..edad8c474 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) Beefy Finance + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/PROPOSAL_GUIDELINES.md b/PROPOSAL_GUIDELINES.md new file mode 100644 index 000000000..ef46afa8b --- /dev/null +++ b/PROPOSAL_GUIDELINES.md @@ -0,0 +1,66 @@ +# Treasury Proposal Guidelines +We are improving the ways that we reward all contributors in the Beefy community. We try to be as fair as possible and use the treasury in an effective manner. +One of the mechanisms to reward dev work are treasury bounties. Bounties can be targeted to reward anything from a Github issue, a larger initiative, or even a developer. + +## When should you create a proposal? +1. You are a dev and would like to help with a task but want or need a compensation to tackle it. +2. You are a dev who already did a task and would like some compensation for the effort. +3. You are not a dev but feel like a task is particularly important and/or difficult. +4. If you are a dev with some cred with Beefy, you can propose a regular reward for continued contributions. + +## Steps + +### 1. Fill out a proposal +Go to [vote.beefy.finance](https://vote.beefy.finance) and click on the big square that says "Beefy.Finance". Once you're in, click on the [New Proposal](https://vote.beefy.finance/#/beefy/create) button. + +#### A - Title +Going with "Bounty of $ for " is a good standard. + +#### B - Body + +You need to make clear why the community should spend those funds to help it grow or sustain itself. + +--- + +Hi everyone, + +I'm requesting a bounty of $ to reward the work of issue . + +It's important for Beefy because... + +Thanks! + +--- + + +#### Choices + +The basic choices to give are a Yes and a No. + +1. Yes +2. No + +Feel free to add aditional options that might make the proposal more likely to pass, or to give you additional info. for example: + +1. Yes, full bounty +2. Yes, 70% of the funds +3. No, too expensive +4. No, not relevant + +#### Selecting Dates +When deciding how much time to give the community to deliverate, it's important to take budget size into account. + +- +$10k --> at least 7 days +- +$5k --> at least 4 days +- $1k-$5k --> at least 2 days +- Less then $1k can have 24h + +Unless there's a particular reason, the starting date should be pretty close to when you're creating the proposal. There's no need to wait much before the voting begins. + +### 2. Engage the community +You should go to our [Discord](https://discord.gg/yq8wfHd) and engage the community on why the proposal is important. +The #development channel is a good place to get the attention of other beefy devs. If you can post in #citadel, that's a great place to get the atention influential members of Beefy as well. + +### 3. Outcome +If the proposal passed, you'll be contacted by a member of the team, or feel free to PM anyone with the team tag on discord to move forwards + diff --git a/README.md b/README.md deleted file mode 100644 index 4d1317b12..000000000 --- a/README.md +++ /dev/null @@ -1,69 +0,0 @@ -This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app). - -## Available Scripts - -In the project directory, you can run: - - -### `yarn start` - -Runs the app in the development mode.
-Open [http://localhost:3000](http://localhost:3000) to view it in the browser. - -The page will reload if you make edits.
-You will also see any lint errors in the console. - -### `yarn test` - -Launches the test runner in the interactive watch mode.
-See the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information. - -### `yarn build` - -Builds the app for production to the `build` folder.
-It correctly bundles React in production mode and optimizes the build for the best performance. - -The build is minified and the filenames include the hashes.
-Your app is ready to be deployed! - -See the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information. - -### `yarn eject` - -**Note: this is a one-way operation. Once you `eject`, you can’t go back!** - -If you aren’t satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project. - -Instead, it will copy all the configuration files and the transitive dependencies (webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point you’re on your own. - -You don’t have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn’t feel obligated to use this feature. However we understand that this tool wouldn’t be useful if you couldn’t customize it when you are ready for it. - -## Learn More - -You can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started). - -To learn React, check out the [React documentation](https://reactjs.org/). - -### Code Splitting - -This section has moved here: https://facebook.github.io/create-react-app/docs/code-splitting - -### Analyzing the Bundle Size - -This section has moved here: https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size - -### Making a Progressive Web App - -This section has moved here: https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app - -### Advanced Configuration - -This section has moved here: https://facebook.github.io/create-react-app/docs/advanced-configuration - -### Deployment - -This section has moved here: https://facebook.github.io/create-react-app/docs/deployment - -### `yarn build` fails to minify - -This section has moved here: https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify diff --git a/config/env.js b/config/env.js deleted file mode 100644 index c3179cf3c..000000000 --- a/config/env.js +++ /dev/null @@ -1,101 +0,0 @@ -'use strict'; - -const fs = require('fs'); -const path = require('path'); -const paths = require('./paths'); - -// Make sure that including paths.js after env.js will read .env variables. -delete require.cache[require.resolve('./paths')]; - -const NODE_ENV = process.env.NODE_ENV; -if (!NODE_ENV) { - throw new Error( - 'The NODE_ENV environment variable is required but was not specified.' - ); -} - -// https://github.com/bkeepers/dotenv#what-other-env-files-can-i-use -const dotenvFiles = [ - `${paths.dotenv}.${NODE_ENV}.local`, - `${paths.dotenv}.${NODE_ENV}`, - // Don't include `.env.local` for `test` environment - // since normally you expect tests to produce the same - // results for everyone - NODE_ENV !== 'test' && `${paths.dotenv}.local`, - paths.dotenv, -].filter(Boolean); - -// Load environment variables from .env* files. Suppress warnings using silent -// if this file is missing. dotenv will never modify any environment variables -// that have already been set. Variable expansion is supported in .env files. -// https://github.com/motdotla/dotenv -// https://github.com/motdotla/dotenv-expand -dotenvFiles.forEach(dotenvFile => { - if (fs.existsSync(dotenvFile)) { - require('dotenv-expand')( - require('dotenv').config({ - path: dotenvFile, - }) - ); - } -}); - -// We support resolving modules according to `NODE_PATH`. -// This lets you use absolute paths in imports inside large monorepos: -// https://github.com/facebook/create-react-app/issues/253. -// It works similar to `NODE_PATH` in Node itself: -// https://nodejs.org/api/modules.html#modules_loading_from_the_global_folders -// Note that unlike in Node, only *relative* paths from `NODE_PATH` are honored. -// Otherwise, we risk importing Node.js core modules into an app instead of webpack shims. -// https://github.com/facebook/create-react-app/issues/1023#issuecomment-265344421 -// We also resolve them to make sure all tools using them work consistently. -const appDirectory = fs.realpathSync(process.cwd()); -process.env.NODE_PATH = (process.env.NODE_PATH || '') - .split(path.delimiter) - .filter(folder => folder && !path.isAbsolute(folder)) - .map(folder => path.resolve(appDirectory, folder)) - .join(path.delimiter); - -// Grab NODE_ENV and REACT_APP_* environment variables and prepare them to be -// injected into the application via DefinePlugin in webpack configuration. -// const REACT_APP = /^REACT_APP_/i; - -function getClientEnvironment(publicUrl) { - const raw = Object.keys(process.env) - // .filter(key => REACT_APP.test(key)) - .reduce( - (env, key) => { - env[key] = process.env[key]; - return env; - }, - { - // Useful for determining whether we’re running in production mode. - // Most importantly, it switches React into the correct mode. - NODE_ENV: process.env.NODE_ENV || 'development', - // Useful for resolving the correct path to static assets in `public`. - // For example, . - // This should only be used as an escape hatch. Normally you would put - // images into the `src` and `import` them in code to get their paths. - PUBLIC_URL: publicUrl, - // We support configuring the sockjs pathname during development. - // These settings let a developer run multiple simultaneous projects. - // They are used as the connection `hostname`, `pathname` and `port` - // in webpackHotDevClient. They are used as the `sockHost`, `sockPath` - // and `sockPort` options in webpack-dev-server. - WDS_SOCKET_HOST: process.env.WDS_SOCKET_HOST, - WDS_SOCKET_PATH: process.env.WDS_SOCKET_PATH, - WDS_SOCKET_PORT: process.env.WDS_SOCKET_PORT, - } - ); - // Stringify all values so we can feed into webpack DefinePlugin - const stringified = { - 'process.env': Object.keys(raw).reduce((env, key) => { - env[key] = JSON.stringify(raw[key]); - return env; - }, {}), - }; - - return { raw, stringified }; -} - -module.exports = getClientEnvironment; diff --git a/config/getHttpsConfig.js b/config/getHttpsConfig.js deleted file mode 100644 index 013d493c1..000000000 --- a/config/getHttpsConfig.js +++ /dev/null @@ -1,66 +0,0 @@ -'use strict'; - -const fs = require('fs'); -const path = require('path'); -const crypto = require('crypto'); -const chalk = require('react-dev-utils/chalk'); -const paths = require('./paths'); - -// Ensure the certificate and key provided are valid and if not -// throw an easy to debug error -function validateKeyAndCerts({ cert, key, keyFile, crtFile }) { - let encrypted; - try { - // publicEncrypt will throw an error with an invalid cert - encrypted = crypto.publicEncrypt(cert, Buffer.from('test')); - } catch (err) { - throw new Error( - `The certificate "${chalk.yellow(crtFile)}" is invalid.\n${err.message}` - ); - } - - try { - // privateDecrypt will throw an error with an invalid key - crypto.privateDecrypt(key, encrypted); - } catch (err) { - throw new Error( - `The certificate key "${chalk.yellow(keyFile)}" is invalid.\n${ - err.message - }` - ); - } -} - -// Read file and throw an error if it doesn't exist -function readEnvFile(file, type) { - if (!fs.existsSync(file)) { - throw new Error( - `You specified ${chalk.cyan( - type - )} in your env, but the file "${chalk.yellow(file)}" can't be found.` - ); - } - return fs.readFileSync(file); -} - -// Get the https config -// Return cert files if provided in env, otherwise just true or false -function getHttpsConfig() { - const { SSL_CRT_FILE, SSL_KEY_FILE, HTTPS } = process.env; - const isHttps = HTTPS === 'true'; - - if (isHttps && SSL_CRT_FILE && SSL_KEY_FILE) { - const crtFile = path.resolve(paths.appPath, SSL_CRT_FILE); - const keyFile = path.resolve(paths.appPath, SSL_KEY_FILE); - const config = { - cert: readEnvFile(crtFile, 'SSL_CRT_FILE'), - key: readEnvFile(keyFile, 'SSL_KEY_FILE'), - }; - - validateKeyAndCerts({ ...config, keyFile, crtFile }); - return config; - } - return isHttps; -} - -module.exports = getHttpsConfig; diff --git a/config/jest/cssTransform.js b/config/jest/cssTransform.js deleted file mode 100644 index 8f6511481..000000000 --- a/config/jest/cssTransform.js +++ /dev/null @@ -1,14 +0,0 @@ -'use strict'; - -// This is a custom Jest transformer turning style imports into empty objects. -// http://facebook.github.io/jest/docs/en/webpack.html - -module.exports = { - process() { - return 'module.exports = {};'; - }, - getCacheKey() { - // The output is always the same. - return 'cssTransform'; - }, -}; diff --git a/config/jest/fileTransform.js b/config/jest/fileTransform.js deleted file mode 100644 index aab67618c..000000000 --- a/config/jest/fileTransform.js +++ /dev/null @@ -1,40 +0,0 @@ -'use strict'; - -const path = require('path'); -const camelcase = require('camelcase'); - -// This is a custom Jest transformer turning file imports into filenames. -// http://facebook.github.io/jest/docs/en/webpack.html - -module.exports = { - process(src, filename) { - const assetFilename = JSON.stringify(path.basename(filename)); - - if (filename.match(/\.svg$/)) { - // Based on how SVGR generates a component name: - // https://github.com/smooth-code/svgr/blob/01b194cf967347d43d4cbe6b434404731b87cf27/packages/core/src/state.js#L6 - const pascalCaseFilename = camelcase(path.parse(filename).name, { - pascalCase: true, - }); - const componentName = `Svg${pascalCaseFilename}`; - return `const React = require('react'); - module.exports = { - __esModule: true, - default: ${assetFilename}, - ReactComponent: React.forwardRef(function ${componentName}(props, ref) { - return { - $$typeof: Symbol.for('react.element'), - type: 'svg', - ref: ref, - key: null, - props: Object.assign({}, props, { - children: ${assetFilename} - }) - }; - }), - };`; - } - - return `module.exports = ${assetFilename};`; - }, -}; diff --git a/config/modules.js b/config/modules.js deleted file mode 100644 index c8efd0dd0..000000000 --- a/config/modules.js +++ /dev/null @@ -1,141 +0,0 @@ -'use strict'; - -const fs = require('fs'); -const path = require('path'); -const paths = require('./paths'); -const chalk = require('react-dev-utils/chalk'); -const resolve = require('resolve'); - -/** - * Get additional module paths based on the baseUrl of a compilerOptions object. - * - * @param {Object} options - */ -function getAdditionalModulePaths(options = {}) { - const baseUrl = options.baseUrl; - - // We need to explicitly check for null and undefined (and not a falsy value) because - // TypeScript treats an empty string as `.`. - if (baseUrl == null) { - // If there's no baseUrl set we respect NODE_PATH - // Note that NODE_PATH is deprecated and will be removed - // in the next major release of create-react-app. - - const nodePath = process.env.NODE_PATH || ''; - return nodePath.split(path.delimiter).filter(Boolean); - } - - const baseUrlResolved = path.resolve(paths.appPath, baseUrl); - - // We don't need to do anything if `baseUrl` is set to `node_modules`. This is - // the default behavior. - if (path.relative(paths.appNodeModules, baseUrlResolved) === '') { - return null; - } - - // Allow the user set the `baseUrl` to `appSrc`. - if (path.relative(paths.appSrc, baseUrlResolved) === '') { - return [paths.appSrc]; - } - - // If the path is equal to the root directory we ignore it here. - // We don't want to allow importing from the root directly as source files are - // not transpiled outside of `src`. We do allow importing them with the - // absolute path (e.g. `src/Components/Button.js`) but we set that up with - // an alias. - if (path.relative(paths.appPath, baseUrlResolved) === '') { - return null; - } - - // Otherwise, throw an error. - throw new Error( - chalk.red.bold( - "Your project's `baseUrl` can only be set to `src` or `node_modules`." + - ' Create React App does not support other values at this time.' - ) - ); -} - -/** - * Get webpack aliases based on the baseUrl of a compilerOptions object. - * - * @param {*} options - */ -function getWebpackAliases(options = {}) { - const baseUrl = options.baseUrl; - - if (!baseUrl) { - return {}; - } - - const baseUrlResolved = path.resolve(paths.appPath, baseUrl); - - if (path.relative(paths.appPath, baseUrlResolved) === '') { - return { - src: paths.appSrc, - }; - } -} - -/** - * Get jest aliases based on the baseUrl of a compilerOptions object. - * - * @param {*} options - */ -function getJestAliases(options = {}) { - const baseUrl = options.baseUrl; - - if (!baseUrl) { - return {}; - } - - const baseUrlResolved = path.resolve(paths.appPath, baseUrl); - - if (path.relative(paths.appPath, baseUrlResolved) === '') { - return { - '^src/(.*)$': '/src/$1', - }; - } -} - -function getModules() { - // Check if TypeScript is setup - const hasTsConfig = fs.existsSync(paths.appTsConfig); - const hasJsConfig = fs.existsSync(paths.appJsConfig); - - if (hasTsConfig && hasJsConfig) { - throw new Error( - 'You have both a tsconfig.json and a jsconfig.json. If you are using TypeScript please remove your jsconfig.json file.' - ); - } - - let config; - - // If there's a tsconfig.json we assume it's a - // TypeScript project and set up the config - // based on tsconfig.json - if (hasTsConfig) { - const ts = require(resolve.sync('typescript', { - basedir: paths.appNodeModules, - })); - config = ts.readConfigFile(paths.appTsConfig, ts.sys.readFile).config; - // Otherwise we'll check if there is jsconfig.json - // for non TS projects. - } else if (hasJsConfig) { - config = require(paths.appJsConfig); - } - - config = config || {}; - const options = config.compilerOptions || {}; - - const additionalModulePaths = getAdditionalModulePaths(options); - - return { - additionalModulePaths: additionalModulePaths, - webpackAliases: getWebpackAliases(options), - jestAliases: getJestAliases(options), - hasTsConfig, - }; -} - -module.exports = getModules(); diff --git a/config/paths.js b/config/paths.js deleted file mode 100644 index b3fd764ae..000000000 --- a/config/paths.js +++ /dev/null @@ -1,72 +0,0 @@ -'use strict'; - -const path = require('path'); -const fs = require('fs'); -const getPublicUrlOrPath = require('react-dev-utils/getPublicUrlOrPath'); - -// Make sure any symlinks in the project folder are resolved: -// https://github.com/facebook/create-react-app/issues/637 -const appDirectory = fs.realpathSync(process.cwd()); -const resolveApp = relativePath => path.resolve(appDirectory, relativePath); - -// We use `PUBLIC_URL` environment variable or "homepage" field to infer -// "public path" at which the app is served. -// webpack needs to know it to put the right + +
- - - - - diff --git a/public/logo192.png b/public/logo192.png deleted file mode 100644 index 89b9ff1b7..000000000 Binary files a/public/logo192.png and /dev/null differ diff --git a/public/logo512.png b/public/logo512.png deleted file mode 100644 index 89b9ff1b7..000000000 Binary files a/public/logo512.png and /dev/null differ diff --git a/public/manifest.json b/public/manifest.json deleted file mode 100644 index 58f9349ae..000000000 --- a/public/manifest.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "short_name": "Vault", - "name": "Vault Finance", - "icons": [ - { - "src": "favicon.ico", - "sizes": "64x64 32x32 24x24 16x16", - "type": "image/x-icon" - }, - { - "src": "logo192.png", - "type": "image/png", - "sizes": "192x192" - }, - { - "src": "logo512.png", - "type": "image/png", - "sizes": "512x512" - } - ], - "start_url": "/", - "display": "standalone", - "theme_color": "#000000", - "background_color": "#ffffff" -} diff --git a/public/robots.txt b/public/robots.txt index e9e57dc4d..c95502f7c 100644 --- a/public/robots.txt +++ b/public/robots.txt @@ -1,3 +1,3 @@ -# https://www.robotstxt.org/robotstxt.html +# Allow crawling of all content User-agent: * Disallow: diff --git a/readme.md b/readme.md new file mode 100644 index 000000000..5dd04d53d --- /dev/null +++ b/readme.md @@ -0,0 +1,29 @@ +# Beefy Finance (\$BIFI) + +## Overview + +Official frontend repo of [beefy.finance](https://app.beefy.finance). Multichain yield farming optimizer. + +## Env + +Required env vars: +``` +REACT_APP_NETWORK_ID = 56 // Network ID of BSC +``` + +## To Run to test against a local development server +``` +yarn +yarn validate +yarn start +``` +If any error is noted during validation, fix before starting the server, which will serve the app at http://localhost:3000/ + + +## Contribute + +Beefy.Finance exists thanks to its contributors. There are many ways you can participate and help build high quality software. Check out the [contribution guide](CONTRIBUTING.md)! + +## License + +[MIT](LICENSE) diff --git a/scripts/build.js b/scripts/build.js deleted file mode 100644 index 2d826691c..000000000 --- a/scripts/build.js +++ /dev/null @@ -1,211 +0,0 @@ -'use strict'; - -// Do this as the first thing so that any code reading it knows the right env. -process.env.BABEL_ENV = 'production'; -process.env.NODE_ENV = 'production'; - -// Makes the script crash on unhandled rejections instead of silently -// ignoring them. In the future, promise rejections that are not handled will -// terminate the Node.js process with a non-zero exit code. -process.on('unhandledRejection', err => { - throw err; -}); - -// Ensure environment variables are read. -require('../config/env'); - - -const path = require('path'); -const chalk = require('react-dev-utils/chalk'); -const fs = require('fs-extra'); -const webpack = require('webpack'); -const configFactory = require('../config/webpack.config'); -const paths = require('../config/paths'); -const checkRequiredFiles = require('react-dev-utils/checkRequiredFiles'); -const formatWebpackMessages = require('react-dev-utils/formatWebpackMessages'); -const printHostingInstructions = require('react-dev-utils/printHostingInstructions'); -const FileSizeReporter = require('react-dev-utils/FileSizeReporter'); -const printBuildError = require('react-dev-utils/printBuildError'); - -const measureFileSizesBeforeBuild = - FileSizeReporter.measureFileSizesBeforeBuild; -const printFileSizesAfterBuild = FileSizeReporter.printFileSizesAfterBuild; -const useYarn = fs.existsSync(paths.yarnLockFile); - -// These sizes are pretty large. We'll warn for bundles exceeding them. -const WARN_AFTER_BUNDLE_GZIP_SIZE = 512 * 1024; -const WARN_AFTER_CHUNK_GZIP_SIZE = 1024 * 1024; - -const isInteractive = process.stdout.isTTY; - -// Warn and crash if required files are missing -if (!checkRequiredFiles([paths.appHtml, paths.appIndexJs])) { - process.exit(1); -} - -// Generate configuration -const config = configFactory('production'); - -// We require that you explicitly set browsers and do not fall back to -// browserslist defaults. -const { checkBrowsers } = require('react-dev-utils/browsersHelper'); -checkBrowsers(paths.appPath, isInteractive) - .then(() => { - // First, read the current file sizes in build directory. - // This lets us display how much they changed later. - return measureFileSizesBeforeBuild(paths.appBuild); - }) - .then(previousFileSizes => { - // Remove all content but keep the directory so that - // if you're in it, you don't end up in Trash - fs.emptyDirSync(paths.appBuild); - // Merge with the public folder - copyPublicFolder(); - // Start the webpack build - return build(previousFileSizes); - }) - .then( - ({ stats, previousFileSizes, warnings }) => { - if (warnings.length) { - console.log(chalk.yellow('Compiled with warnings.\n')); - console.log(warnings.join('\n\n')); - console.log( - '\nSearch for the ' + - chalk.underline(chalk.yellow('keywords')) + - ' to learn more about each warning.' - ); - console.log( - 'To ignore, add ' + - chalk.cyan('// eslint-disable-next-line') + - ' to the line before.\n' - ); - } else { - console.log(chalk.green('Compiled successfully.\n')); - } - - console.log('File sizes after gzip:\n'); - printFileSizesAfterBuild( - stats, - previousFileSizes, - paths.appBuild, - WARN_AFTER_BUNDLE_GZIP_SIZE, - WARN_AFTER_CHUNK_GZIP_SIZE - ); - console.log(); - - const appPackage = require(paths.appPackageJson); - const publicUrl = paths.publicUrlOrPath; - const publicPath = config.output.publicPath; - const buildFolder = path.relative(process.cwd(), paths.appBuild); - printHostingInstructions( - appPackage, - publicUrl, - publicPath, - buildFolder, - useYarn - ); - }, - err => { - const tscCompileOnError = process.env.TSC_COMPILE_ON_ERROR === 'true'; - if (tscCompileOnError) { - console.log( - chalk.yellow( - 'Compiled with the following type errors (you may want to check these before deploying your app):\n' - ) - ); - printBuildError(err); - } else { - console.log(chalk.red('Failed to compile.\n')); - printBuildError(err); - process.exit(1); - } - } - ) - .catch(err => { - if (err && err.message) { - console.log(err.message); - } - process.exit(1); - }); - -// Create the production build and print the deployment instructions. -function build(previousFileSizes) { - // We used to support resolving modules according to `NODE_PATH`. - // This now has been deprecated in favor of jsconfig/tsconfig.json - // This lets you use absolute paths in imports inside large monorepos: - if (process.env.NODE_PATH) { - console.log( - chalk.yellow( - 'Setting NODE_PATH to resolve modules absolutely has been deprecated in favor of setting baseUrl in jsconfig.json (or tsconfig.json if you are using TypeScript) and will be removed in a future major release of create-react-app.' - ) - ); - console.log(); - } - - console.log('Creating an optimized production build...'); - - const compiler = webpack(config); - return new Promise((resolve, reject) => { - compiler.run((err, stats) => { - let messages; - if (err) { - if (!err.message) { - return reject(err); - } - - let errMessage = err.message; - - // Add additional information for postcss errors - if (Object.prototype.hasOwnProperty.call(err, 'postcssNode')) { - errMessage += - '\nCompileError: Begins at CSS selector ' + - err['postcssNode'].selector; - } - - messages = formatWebpackMessages({ - errors: [errMessage], - warnings: [], - }); - } else { - messages = formatWebpackMessages( - stats.toJson({ all: false, warnings: true, errors: true }) - ); - } - if (messages.errors.length) { - // Only keep the first error. Others are often indicative - // of the same problem, but confuse the reader with noise. - if (messages.errors.length > 1) { - messages.errors.length = 1; - } - return reject(new Error(messages.errors.join('\n\n'))); - } - if ( - process.env.CI && - (typeof process.env.CI !== 'string' || - process.env.CI.toLowerCase() !== 'false') && - messages.warnings.length - ) { - console.log( - chalk.yellow( - '\nTreating warnings as errors because process.env.CI = true.\n' + - 'Most CI servers set it automatically.\n' - ) - ); - return reject(new Error(messages.warnings.join('\n\n'))); - } - - return resolve({ - stats, - previousFileSizes, - warnings: messages.warnings, - }); - }); - }); -} - -function copyPublicFolder() { - fs.copySync(paths.appPublic, paths.appBuild, { - dereference: true, - filter: file => file !== paths.appHtml, - }); -} diff --git a/scripts/config.js b/scripts/config.js new file mode 100644 index 000000000..04ed8f119 --- /dev/null +++ b/scripts/config.js @@ -0,0 +1,51 @@ +import { bscPools } from '../src/features/configure/vault/bsc_pools.js'; +import { hecoPools } from '../src/features/configure/vault/heco_pools.js'; +import { avalanchePools } from '../src/features/configure/vault/avalanche_pools.js'; +import { polygonPools } from '../src/features/configure/vault/polygon_pools.js'; +import { fantomPools } from '../src/features/configure/vault/fantom_pools.js'; +import { harmonyPools } from '../src/features/configure/vault/harmony_pools.js'; +import { arbitrumPools } from '../src/features/configure/vault/arbitrum_pools.js'; +import { celoPools } from '../src/features/configure/vault/celo_pools.js'; +import { moonriverPools } from '../src/features/configure/vault/moonriver_pools.js'; +import { cronosPools } from '../src/features/configure/vault/cronos_pools.js'; +import { auroraPools } from '../src/features/configure/vault/aurora_pools.js'; +import { fusePools } from '../src/features/configure/vault/fuse_pools.js'; +import { metisPools } from '../src/features/configure/vault/metis_pools.js'; +import { moonbeamPools } from '../src/features/configure/vault/moonbeam_pools.js'; +import { emeraldPools } from '../src/features/configure/vault/emerald_pools.js'; + +export const chainPools = { + bsc: bscPools, + // heco: hecoPools, + avax: avalanchePools, + polygon: polygonPools, + fantom: fantomPools, + one: harmonyPools, + arbitrum: arbitrumPools, + celo: celoPools, + moonriver: moonriverPools, + cronos: cronosPools, + aurora: auroraPools, + fuse: fusePools, + metis: metisPools, + moonbeam: moonbeamPools, + emerald: emeraldPools, +}; + +export const chainRpcs = { + bsc: process.env.BSC_RPC || 'https://bsc-dataseed.binance.org/', + // heco: process.env.HECO_RPC || 'https://http-mainnet.hecochain.com', + avax: process.env.AVAX_RPC || 'https://api.avax.network/ext/bc/C/rpc', + polygon: process.env.POLYGON_RPC || 'https://polygon-rpc.com', + fantom: process.env.FANTOM_RPC || 'https://rpc.ftm.tools/', + one: process.env.HARMONY_RPC || 'https://api.harmony.one/', + arbitrum: process.env.ARBITRUM_RPC || 'https://arb1.arbitrum.io/rpc', + celo: process.env.CELO_RPC || 'https://forno.celo.org', + moonriver: process.env.MOONRIVER_RPC || 'https://moonriver.api.onfinality.io/public', + cronos: process.env.CRONOS_RPC || 'https://evm.cronos.org', + aurora: process.env.AURORA_RPC || 'https://mainnet.aurora.dev/', + fuse: process.env.FUSE_RPC || 'https://rpc.fuse.io', + metis: process.env.METIS_RPC || 'https://andromeda.metis.io/?owner=1088', + moonbeam: process.env.MOONBEAM_RPC || 'https://rpc.api.moonbeam.network', + emerald: process.env.EMERALD_RPC || 'https://emerald.oasis.dev', +}; diff --git a/scripts/getPoolCreationTimestamp.js b/scripts/getPoolCreationTimestamp.js new file mode 100644 index 000000000..7260d4234 --- /dev/null +++ b/scripts/getPoolCreationTimestamp.js @@ -0,0 +1,132 @@ +import axios from 'axios'; +import Web3 from 'web3'; +import { chainPools, chainRpcs } from './config.js'; + +const explorerApiUrls = { + cronos: 'https://api.cronoscan.com/api', + bsc: 'https://api.bscscan.com/api', + polygon: 'https://api.polygonscan.com/api', + fantom: 'https://api.ftmscan.com/api', + heco: 'https://api.hecoinfo.com/api', + avax: 'https://api.snowtrace.io//api', + moonbeam: 'https://api-moonbeam.moonscan.io/api', + celo: 'https://explorer.celo.org/', + moonriver: 'https://api-moonriver.moonscan.io/api', + arbitrum: 'https://api.arbiscan.io/api', + aurora: 'https://api.aurorascan.dev/api', + metis: 'https://andromeda-explorer.metis.io/', + one: 'https://explorer.harmony.one/', + fuse: 'https://explorer.fuse.io/', + emerald: 'https://explorer.emerald.oasis.dev/', +}; + +const blockScoutChainsTimeout = new Set(['fuse', 'metis', 'celo', 'emerald']); +const harmonyRpcChains = new Set(['one']); + +const getCreationTimestamp = async (vaultAddress, explorerUrl) => { + var url = + explorerUrl + + `?module=account&action=txlist&address=${vaultAddress}&startblock=1&endblock=99999999&page=1&offset=1&sort=asc&limit=1`; + const resp = await axios.get(url); + + const block = resp.data.result[0].blockNumber; + const timestamp = resp.data.result[0].timeStamp; + + console.log(`Creation block: ${block} - timestamp: ${timestamp}`); + return timestamp; +}; + +const getCreationTimestampBlockScoutScraping = async (vaultAddress, explorerUrl, chain) => { + var url = explorerUrl + `/address/${vaultAddress}`; + + let resp = await axios.get(url); + + let tx = resp.data.split(` { + const url = chainRpcs[chain]; + const resp = await axios.post(url, { + jsonrpc: '2.0', + method: 'hmyv2_getTransactionsHistory', + params: [ + { + address: vaultAddress, + pageIndex: 0, + pageSize: 1, + fullTx: true, + txType: 'ALL', + order: 'ASC', + }, + ], + id: 1, + }); + + if ( + !resp.data || + resp.data.id !== 1 || + !resp.data.result || + !resp.data.result.transactions || + resp.data.result.transactions.length !== 1 + ) { + console.dir(resp.data, { depth: null }); + throw new Error('Malformed response'); + } + + const tx0 = resp.data.result.transactions[0]; + return tx0.timestamp; +}; + +const getTimestamp = async (vaultAddress, chain) => { + if (blockScoutChainsTimeout.has(chain)) { + console.log('BlockScout explorer detected for this chain, proceeding to scrape'); + return await getCreationTimestampBlockScoutScraping( + vaultAddress, + explorerApiUrls[chain], + chain + ); + } else if (harmonyRpcChains.has(chain)) { + console.log('Using Harmony RPC method for this chain'); + return await getCreationTimestampHarmonyRpc(vaultAddress, chain); + } else { + return await getCreationTimestamp(vaultAddress, explorerApiUrls[chain]); + } +}; + +const getPoolDate = async () => { + const poolId = process.argv[2]; + const chain = process.argv[3]; + + let pool; + try { + pool = chainPools[chain].filter(p => p.id === poolId)[0]; + } catch (err) { + return console.log(`${poolId} not found in pools for chain ${chain}`); + } + const address = pool.earnContractAddress; + + const explorer = explorerApiUrls[chain]; + if (!explorer) return console.log(`No explorer api url found for chain ${chain}`); + + const ts = await getTimestamp(address, chain); + console.log(ts); +}; + +if (process.argv.length === 4) { + getPoolDate().catch(console.error); +} else { + console.error( + 'Usage: yarn creationdate \ne.g. yarn creationdate one-bifi-maxi one' + ); +} diff --git a/scripts/launchpool.js b/scripts/launchpool.js new file mode 100644 index 000000000..de70922a5 --- /dev/null +++ b/scripts/launchpool.js @@ -0,0 +1,92 @@ +// To run: yarn launchpool bsc <0x12312312> CafeSwap +import { MultiCall } from 'eth-multicall'; +import { addressBook } from 'blockchain-addressbook'; +import Web3 from 'web3'; + +import { launchPoolABI, erc20ABI } from '../src/features/configure/abi.js'; +import { chainPools, chainRpcs } from './config.js'; + +async function boostParams(chain, boostAddress) { + const web3 = new Web3(chainRpcs[chain]); + const boostContract = new web3.eth.Contract(launchPoolABI, boostAddress); + const multicall = new MultiCall(web3, addressBook[chain].platforms.beefyfinance.multicall); + let calls = [ + { + staked: boostContract.methods.stakedToken(), + reward: boostContract.methods.rewardToken(), + duration: boostContract.methods.duration(), + }, + ]; + let [results] = await multicall.all([calls]); + const params = results[0]; + + const tokenContract = new web3.eth.Contract(erc20ABI, params.reward); + calls = [ + { + earnedToken: tokenContract.methods.symbol(), + earnedTokenDecimals: tokenContract.methods.decimals(), + }, + ]; + [results] = await multicall.all([calls]); + const token = results[0]; + + return { ...params, ...token }; +} + +async function generateLaunchpool() { + const chain = process.argv[2]; + const boostAddress = process.argv[3]; + const partner = process.argv[4]; + const partnerId = partner.toLowerCase(); + + const boost = await boostParams(chain, boostAddress); + const pool = chainPools[chain].find(pool => pool.earnedTokenAddress === boost.staked); + + const periodFinish = Math.floor(Date.now() / 1000) + Number(boost.duration) + 172800; + + const newBoost = { + id: `moo_${pool.oracleId}-${partnerId}`, + name: `${partner}`, + logo: pool.logo, + assets: pool.assets, + token: pool.earnedToken, + tokenDecimals: 18, + tokenAddress: boost.staked, + tokenOracle: pool.oracle, + tokenOracleId: pool.oracleId, + earnedToken: boost.earnedToken, + earnedTokenDecimals: Number(boost.earnedTokenDecimals), + earnedTokenAddress: boost.reward, + earnContractAddress: boostAddress, + earnContractAbi: 'govPoolABI', + earnedOracle: 'tokens', + earnedOracleId: boost.earnedToken, + partnership: true, + status: 'active', + isMooStaked: true, + periodFinish: periodFinish, + partners: [ + { + text: '', + website: '', + social: { + telegram: '', + twitter: '', + }, + }, + ], + }; + + if (newBoost.logo) { + delete newBoost.assets; + } else { + delete newBoost.logo; + } + + let str = JSON.stringify(newBoost, null, 2) + ','; + str = str.replace('"govPoolABI"', 'govPoolABI'); + + console.log(str); +} + +await generateLaunchpool(); diff --git a/scripts/start.js b/scripts/start.js deleted file mode 100644 index 088ea49a8..000000000 --- a/scripts/start.js +++ /dev/null @@ -1,166 +0,0 @@ -'use strict'; - -// Do this as the first thing so that any code reading it knows the right env. -process.env.BABEL_ENV = 'development'; -process.env.NODE_ENV = 'development'; - -// Makes the script crash on unhandled rejections instead of silently -// ignoring them. In the future, promise rejections that are not handled will -// terminate the Node.js process with a non-zero exit code. -process.on('unhandledRejection', err => { - throw err; -}); - -// Ensure environment variables are read. -require('../config/env'); - - -const fs = require('fs'); -const chalk = require('react-dev-utils/chalk'); -const webpack = require('webpack'); -const WebpackDevServer = require('webpack-dev-server'); -const clearConsole = require('react-dev-utils/clearConsole'); -const checkRequiredFiles = require('react-dev-utils/checkRequiredFiles'); -const { - choosePort, - createCompiler, - prepareProxy, - prepareUrls, -} = require('react-dev-utils/WebpackDevServerUtils'); -const openBrowser = require('react-dev-utils/openBrowser'); -const paths = require('../config/paths'); -const configFactory = require('../config/webpack.config'); -const createDevServerConfig = require('../config/webpackDevServer.config'); - -const useYarn = fs.existsSync(paths.yarnLockFile); -const isInteractive = process.stdout.isTTY; - -// Warn and crash if required files are missing -if (!checkRequiredFiles([paths.appHtml, paths.appIndexJs])) { - process.exit(1); -} - -// Tools like Cloud9 rely on this. -const DEFAULT_PORT = parseInt(process.env.PORT, 10) || 3000; -const HOST = process.env.HOST || '0.0.0.0'; - -if (process.env.HOST) { - console.log( - chalk.cyan( - `Attempting to bind to HOST environment variable: ${chalk.yellow( - chalk.bold(process.env.HOST) - )}` - ) - ); - console.log( - `If this was unintentional, check that you haven't mistakenly set it in your shell.` - ); - console.log( - `Learn more here: ${chalk.yellow('https://bit.ly/CRA-advanced-config')}` - ); - console.log(); -} - -// We require that you explicitly set browsers and do not fall back to -// browserslist defaults. -const { checkBrowsers } = require('react-dev-utils/browsersHelper'); -checkBrowsers(paths.appPath, isInteractive) - .then(() => { - // We attempt to use the default port but if it is busy, we offer the user to - // run on a different port. `choosePort()` Promise resolves to the next free port. - return choosePort(HOST, DEFAULT_PORT); - }) - .then(port => { - if (port == null) { - // We have not found a port. - return; - } - - const config = configFactory('development'); - const protocol = process.env.HTTPS === 'true' ? 'https' : 'http'; - const appName = require(paths.appPackageJson).name; - const useTypeScript = fs.existsSync(paths.appTsConfig); - const tscCompileOnError = process.env.TSC_COMPILE_ON_ERROR === 'true'; - const urls = prepareUrls( - protocol, - HOST, - port, - paths.publicUrlOrPath.slice(0, -1) - ); - const devSocket = { - warnings: warnings => - devServer.sockWrite(devServer.sockets, 'warnings', warnings), - errors: errors => - devServer.sockWrite(devServer.sockets, 'errors', errors), - }; - // Create a webpack compiler that is configured with custom messages. - const compiler = createCompiler({ - appName, - config, - devSocket, - urls, - useYarn, - useTypeScript, - tscCompileOnError, - webpack, - }); - // Load proxy config - const proxySetting = require(paths.appPackageJson).proxy; - const proxyConfig = prepareProxy( - proxySetting, - paths.appPublic, - paths.publicUrlOrPath - ); - // Serve webpack assets generated by the compiler over a web server. - const serverConfig = createDevServerConfig( - proxyConfig, - urls.lanUrlForConfig - ); - const devServer = new WebpackDevServer(compiler, serverConfig); - // Launch WebpackDevServer. - devServer.listen(port, HOST, err => { - if (err) { - return console.log(err); - } - if (isInteractive) { - clearConsole(); - } - - // We used to support resolving modules according to `NODE_PATH`. - // This now has been deprecated in favor of jsconfig/tsconfig.json - // This lets you use absolute paths in imports inside large monorepos: - if (process.env.NODE_PATH) { - console.log( - chalk.yellow( - 'Setting NODE_PATH to resolve modules absolutely has been deprecated in favor of setting baseUrl in jsconfig.json (or tsconfig.json if you are using TypeScript) and will be removed in a future major release of create-react-app.' - ) - ); - console.log(); - } - - console.log(chalk.cyan('Starting the development server...\n')); - openBrowser(urls.localUrlForBrowser); - }); - - ['SIGINT', 'SIGTERM'].forEach(function(sig) { - process.on(sig, function() { - devServer.close(); - process.exit(); - }); - }); - - if (isInteractive || process.env.CI !== 'true') { - // Gracefully exit when stdin ends - process.stdin.on('end', function() { - devServer.close(); - process.exit(); - }); - process.stdin.resume(); - } - }) - .catch(err => { - if (err && err.message) { - console.log(err.message); - } - process.exit(1); - }); diff --git a/scripts/test.js b/scripts/test.js deleted file mode 100644 index b57cb3834..000000000 --- a/scripts/test.js +++ /dev/null @@ -1,53 +0,0 @@ -'use strict'; - -// Do this as the first thing so that any code reading it knows the right env. -process.env.BABEL_ENV = 'test'; -process.env.NODE_ENV = 'test'; -process.env.PUBLIC_URL = ''; - -// Makes the script crash on unhandled rejections instead of silently -// ignoring them. In the future, promise rejections that are not handled will -// terminate the Node.js process with a non-zero exit code. -process.on('unhandledRejection', err => { - throw err; -}); - -// Ensure environment variables are read. -require('../config/env'); - - -const jest = require('jest'); -const execSync = require('child_process').execSync; -let argv = process.argv.slice(2); - -function isInGitRepository() { - try { - execSync('git rev-parse --is-inside-work-tree', { stdio: 'ignore' }); - return true; - } catch (e) { - return false; - } -} - -function isInMercurialRepository() { - try { - execSync('hg --cwd . root', { stdio: 'ignore' }); - return true; - } catch (e) { - return false; - } -} - -// Watch unless on CI or explicitly running all tests -if ( - !process.env.CI && - argv.indexOf('--watchAll') === -1 && - argv.indexOf('--watchAll=false') === -1 -) { - // https://github.com/facebook/create-react-app/issues/5210 - const hasSourceControl = isInGitRepository() || isInMercurialRepository(); - argv.push(hasSourceControl ? '--watch' : '--watchAll'); -} - - -jest.run(argv); diff --git a/scripts/updatePools.js b/scripts/updatePools.js new file mode 100644 index 000000000..ebee2fb2c --- /dev/null +++ b/scripts/updatePools.js @@ -0,0 +1,38 @@ +// To run: node --experimental-specifier-resolution=node updatePools.js + +// FIXME: Adapt updatePools to multichain. +import { bscPools } from '../src/features/configure/pools.js'; +import { fetchStrategy } from '../src/features/web3/fetchStrategy.js'; +import Web3 from 'web3'; +import axios from 'axios'; +import fs from 'fs'; + +async function main() { + const web3 = new Web3('https://bsc-dataseed.nariox.org'); + let arr = []; + + for (let i = 0; i < pools.length; i++) { + let contractAddress = pools[i].earnContractAddress; + + let strat = await fetchStrategy({ web3, contractAddress: contractAddress }); + pools[i].strategyAddress = strat; + + if (!pools[i].creationBlock) { + let response = await axios + .get( + `https://api.bscscan.com/api?module=account&action=txlist&address=${contractAddress}&startblock=0&sort=asc&page=1&offset=1` + ) + .then(); + pools[i].creationBlock = response.data['result'][0]['blockNumber']; + } + console.log(pools[i]); + arr.push(pools[i]); + } + + const payload = `export const pools = ${JSON.stringify(arr, null, 2)};`; + + fs.writeFile('../src/features/configure/pools.js', payload, function (err) { + if (err) return console.log(err); + }); +} +main().catch(e => console.error(e.stack)); diff --git a/scripts/utils.js b/scripts/utils.js new file mode 100644 index 000000000..c7b4484c4 --- /dev/null +++ b/scripts/utils.js @@ -0,0 +1,18 @@ +import ethersAddress from '@ethersproject/address'; +const { getAddress } = ethersAddress; + +export function isValidChecksumAddress(address) { + try { + return address === getAddress(address); + } catch {} + + return false; +} + +export function maybeChecksumAddress(address) { + try { + return getAddress(address); + } catch {} + + return false; +} diff --git a/scripts/validatePools.js b/scripts/validatePools.js new file mode 100644 index 000000000..1da79f2b0 --- /dev/null +++ b/scripts/validatePools.js @@ -0,0 +1,333 @@ +// To run: yarn validate +import { MultiCall } from 'eth-multicall'; +import { addressBook } from 'blockchain-addressbook'; +import Web3 from 'web3'; +import BigNumber from 'bignumber.js'; + +import { isEmpty } from '../src/features/helpers/utils.js'; +import { isValidChecksumAddress, maybeChecksumAddress } from './utils.js'; +import { vaultABI, strategyABI } from '../src/features/configure/abi.js'; +import { chainPools, chainRpcs } from './config.js'; + +const overrides = { + 'bunny-bunny-eol': { keeper: undefined, stratOwner: undefined }, + 'blizzard-xblzd-bnb-old-eol': { keeper: undefined }, + 'blizzard-xblzd-busd-old-eol': { keeper: undefined }, + 'heco-bifi-maxi': { beefyFeeRecipient: undefined }, // 0x0 + 'polygon-bifi-maxi': { beefyFeeRecipient: undefined }, // 0x0 + 'avax-bifi-maxi': { beefyFeeRecipient: undefined }, // 0x0 + 'bifi-maxi': { stratOwner: undefined }, // harvester 0xDe30 + 'beltv2-4belt': { vaultOwner: undefined }, // moonpot deployer + 'cronos-bifi-maxi': { beefyFeeRecipient: undefined }, // 0x0 + 'metis-bifi-maxi': { beefyFeeRecipient: undefined }, // 0x0 + 'aurora-bifi-maxi': { beefyFeeRecipient: undefined }, // 0x0 + 'fuse-bifi-maxi': { beefyFeeRecipient: undefined }, // 0x0 + 'moonbeam-bifi-maxi': { beefyFeeRecipient: undefined }, // 0x0 + 'scream-frax': { vaultOwner: undefined }, // Rescue +}; + +const oldValidOwners = [ + addressBook.fantom.platforms.beefyfinance.devMultisig, + addressBook.polygon.platforms.beefyfinance.devMultisig, + addressBook.arbitrum.platforms.beefyfinance.devMultisig, +]; + +const oldValidFeeRecipients = {}; + +const validatePools = async () => { + const addressFields = ['tokenAddress', 'earnedTokenAddress', 'earnContractAddress']; + + const allowedEarnSameToken = new Set(['venus-wbnb']); + + // Outputs alphabetical list of platforms per chain (useful to make sure they are consistently named) + const outputPlatformSummary = process.argv.includes('--platform-summary'); + + let exitCode = 0; + + let updates = {}; + + const uniquePoolId = new Set(); + + for (let [chain, pools] of Object.entries(chainPools)) { + console.log(`Validating ${pools.length} pools in ${chain}...`); + + const uniqueEarnedToken = new Set(); + const uniqueEarnedTokenAddress = new Set(); + const uniqueOracleId = new Set(); + const platformCounts = {}; + let activePools = 0; + + // Populate some extra data. + const web3 = new Web3(chainRpcs[chain]); + pools = await populateVaultsData(chain, pools, web3); + pools = await populateStrategyData(chain, pools, web3); + + pools = override(pools); + pools.forEach(pool => { + // Errors, should not proceed with build + if (uniquePoolId.has(pool.id)) { + console.error(`Error: ${pool.id} : Pool id duplicated: ${pool.id}`); + exitCode = 1; + } + + if (uniqueEarnedToken.has(pool.earnedToken) && !allowedEarnSameToken.has(pool.id)) { + console.error(`Error: ${pool.id} : Pool earnedToken duplicated: ${pool.earnedToken}`); + exitCode = 1; + } + + if ( + uniqueEarnedTokenAddress.has(pool.earnedTokenAddress) && + !allowedEarnSameToken.has(pool.id) + ) { + console.error( + `Error: ${pool.id} : Pool earnedTokenAddress duplicated: ${pool.earnedTokenAddress}` + ); + exitCode = 1; + } + + if (pool.earnedTokenAddress !== pool.earnContractAddress) { + console.error( + `Error: ${pool.id} : Pool earnedTokenAddress not same as earnContractAddress: ${pool.earnedTokenAddress} != ${pool.earnContractAddress}` + ); + exitCode = 1; + } + + if (!pool.tokenDescription) { + console.error( + `Error: ${pool.id} : Pool tokenDescription missing - required for UI: vault card` + ); + exitCode = 1; + } + + if (!pool.platform) { + console.error( + `Error: ${pool.id} : Pool platform missing - required for UI: filter (Use 'Other' if necessary)` + ); + exitCode = 1; + } else { + platformCounts[pool.platform] = platformCounts.hasOwnProperty(pool.platform) + ? platformCounts[pool.platform] + 1 + : 1; + } + + if (!pool.createdAt) { + console.error( + `Error: ${pool.id} : Pool createdAt timestamp missing - required for UI: vault sorting` + ); + exitCode = 1; + } else if (isNaN(pool.createdAt)) { + console.error( + `Error: ${pool.id} : Pool createdAt timestamp wrong type, should be a number` + ); + exitCode = 1; + } + + addressFields.forEach(field => { + if (pool.hasOwnProperty(field) && !isValidChecksumAddress(pool[field])) { + const maybeValid = maybeChecksumAddress(pool[field]); + console.error( + `Error: ${pool.id} : ${field} requires checksum - ${ + maybeValid ? `\n\t${field}: '${maybeValid}',` : 'it is invalid' + }` + ); + exitCode = 1; + } + }); + + if (pool.status === 'active') { + activePools++; + } + + if (new BigNumber(pool.totalSupply).isZero()) { + if (pool.status !== 'eol') { + console.error(`Error: ${pool.id} : Pool is empty`); + exitCode = 1; + if (!('emptyVault' in updates)) updates['emptyVault'] = {}; + updates.emptyVault[pool.id] = pool.earnContractAddress; + } else { + console.warn(`${pool.id} : eol pool is empty`); + } + } + + uniquePoolId.add(pool.id); + uniqueEarnedToken.add(pool.earnedToken); + uniqueEarnedTokenAddress.add(pool.earnedTokenAddress); + uniqueOracleId.add(pool.oracleId); + + const { keeper, strategyOwner, vaultOwner, beefyFeeRecipient } = + addressBook[chain].platforms.beefyfinance; + + updates = isKeeperCorrect(pool, chain, keeper, updates); + updates = isStratOwnerCorrect(pool, chain, strategyOwner, updates); + updates = isVaultOwnerCorrect(pool, chain, vaultOwner, updates); + updates = isBeefyFeeRecipientCorrect(pool, chain, beefyFeeRecipient, updates); + }); + if (!isEmpty(updates)) { + exitCode = 1; + } + + if (outputPlatformSummary) { + console.log( + `Platforms: \n${Object.entries(platformCounts) + .sort(([platformA], [platformB]) => + platformA.localeCompare(platformB, 'en', { sensitivity: 'base' }) + ) + .map(([platform, count]) => `\t${platform} (${count})`) + .join('\n')}` + ); + } + + console.log(`Active pools: ${activePools}/${pools.length}\n`); + } + + // Helpful data structures to correct addresses. + console.log('Required updates.', JSON.stringify(updates)); + + return exitCode; +}; + +// Validation helpers. These only log for now, could throw error if desired. +const isKeeperCorrect = (pool, chain, chainKeeper, updates) => { + if (pool.status !== 'eol' && pool.keeper !== undefined && pool.keeper !== chainKeeper) { + console.log(`Pool ${pool.id} should update keeper. From: ${pool.keeper} To: ${chainKeeper}`); + + if (!('keeper' in updates)) updates['keeper'] = {}; + if (!(chain in updates.keeper)) updates.keeper[chain] = {}; + + if (pool.keeper in updates.keeper[chain]) { + updates.keeper[chain][pool.keeper].push(pool.strategy); + } else { + updates.keeper[chain][pool.keeper] = [pool.strategy]; + } + } + + return updates; +}; + +const isStratOwnerCorrect = (pool, chain, owner, updates) => { + const validOwners = [...oldValidOwners, owner]; + if (pool.stratOwner !== undefined && !validOwners.includes(pool.stratOwner)) { + console.log(`Pool ${pool.id} should update strat owner. From: ${pool.stratOwner} To: ${owner}`); + + if (!('stratOwner' in updates)) updates['stratOwner'] = {}; + if (!(chain in updates.stratOwner)) updates.stratOwner[chain] = {}; + + if (pool.stratOwner in updates.stratOwner[chain]) { + updates.stratOwner[chain][pool.stratOwner].push(pool.strategy); + } else { + updates.stratOwner[chain][pool.stratOwner] = [pool.strategy]; + } + } + + return updates; +}; + +const isVaultOwnerCorrect = (pool, chain, owner, updates) => { + const validOwners = [...oldValidOwners, owner]; + if (pool.vaultOwner !== undefined && !validOwners.includes(pool.vaultOwner)) { + console.log(`Pool ${pool.id} should update vault owner. From: ${pool.vaultOwner} To: ${owner}`); + + if (!('vaultOwner' in updates)) updates['vaultOwner'] = {}; + if (!(chain in updates.vaultOwner)) updates.vaultOwner[chain] = {}; + + if (pool.vaultOwner in updates.vaultOwner[chain]) { + updates.vaultOwner[chain][pool.vaultOwner].push(pool.earnContractAddress); + } else { + updates.vaultOwner[chain][pool.vaultOwner] = [pool.earnContractAddress]; + } + } + + return updates; +}; + +const isBeefyFeeRecipientCorrect = (pool, chain, recipient, updates) => { + const validRecipients = oldValidFeeRecipients[chain] || []; + if ( + pool.status === 'active' && + pool.beefyFeeRecipient !== undefined && + pool.beefyFeeRecipient !== recipient && + !validRecipients.includes(pool.beefyFeeRecipient) + ) { + console.log( + `Pool ${pool.id} should update beefy fee recipient. From: ${pool.beefyFeeRecipient} To: ${recipient}` + ); + + if (!('beefyFeeRecipient' in updates)) updates['beefyFeeRecipient'] = {}; + if (!(chain in updates.beefyFeeRecipient)) updates.beefyFeeRecipient[chain] = {}; + + if (pool.stratOwner in updates.beefyFeeRecipient[chain]) { + updates.beefyFeeRecipient[chain][pool.stratOwner].push(pool.strategy); + } else { + updates.beefyFeeRecipient[chain][pool.stratOwner] = [pool.strategy]; + } + } + + return updates; +}; + +// Helpers to populate required addresses. + +const populateVaultsData = async (chain, pools, web3) => { + const multicall = new MultiCall(web3, addressBook[chain].platforms.beefyfinance.multicall); + + const calls = pools.map(pool => { + const vaultContract = new web3.eth.Contract(vaultABI, pool.earnContractAddress); + return { + strategy: vaultContract.methods.strategy(), + owner: vaultContract.methods.owner(), + totalSupply: vaultContract.methods.totalSupply(), + }; + }); + + const [results] = await multicall.all([calls]); + + return pools.map((pool, i) => { + return { + ...pool, + strategy: results[i].strategy, + vaultOwner: results[i].owner, + totalSupply: results[i].totalSupply, + }; + }); +}; + +const populateStrategyData = async (chain, pools, web3) => { + const multicall = new MultiCall(web3, addressBook[chain].platforms.beefyfinance.multicall); + + const calls = pools.map(pool => { + const stratContract = new web3.eth.Contract(strategyABI, pool.strategy); + return { + keeper: stratContract.methods.keeper(), + beefyFeeRecipient: stratContract.methods.beefyFeeRecipient(), + owner: stratContract.methods.owner(), + }; + }); + + const [results] = await multicall.all([calls]); + + return pools.map((pool, i) => { + return { + ...pool, + keeper: results[i].keeper, + beefyFeeRecipient: results[i].beefyFeeRecipient, + stratOwner: results[i].owner, + }; + }); +}; + +const override = pools => { + Object.keys(overrides).forEach(id => { + pools + .filter(p => p.id.includes(id)) + .forEach(pool => { + const override = overrides[id]; + Object.keys(override).forEach(key => { + pool[key] = override[key]; + }); + }); + }); + return pools; +}; + +const exitCode = await validatePools(); +process.exit(exitCode); diff --git a/src/Root.js b/src/Root.js index 66afb4be9..6785ae9b1 100644 --- a/src/Root.js +++ b/src/Root.js @@ -1,13 +1,12 @@ -/* This is the Root component mainly initializes Redux and React Router. */ - import React from 'react'; import { Provider } from 'react-redux'; -import { Switch, Route } from 'react-router-dom'; -import { ConnectedRouter } from 'connected-react-router'; +import { HashRouter, Route, Switch } from 'react-router-dom'; import { hot, setConfig } from 'react-hot-loader'; import store from './common/store'; import routeConfig from './common/routeConfig'; -import history from './common/history'; +import { initializePriceCache } from './features/web3/fetchPrice'; +import { Helmet } from 'react-helmet'; +import { usePageMeta } from './features/common/getPageMeta'; setConfig({ logLevel: 'debug', @@ -32,11 +31,11 @@ function renderRouteConfigV3(routes, contextPath) { key={newContextPath} render={props => {childRoutes}} path={newContextPath} - />, + /> ); } else if (item.component) { children.push( - , + ); } else if (item.childRoutes) { item.childRoutes.forEach(r => renderRoute(r, newContextPath)); @@ -51,11 +50,22 @@ function renderRouteConfigV3(routes, contextPath) { function Root() { const children = renderRouteConfigV3(routeConfig, '/'); + const { getPageMeta } = usePageMeta(); + + initializePriceCache(); + return ( - - {children} - + + + {getPageMeta('App-Meta-Title')} + + + + + + {children} + ); } -export default hot(module)(Root); \ No newline at end of file +export default hot(module)(Root); diff --git a/src/assets/css/material-kit-pro-react.css b/src/assets/css/material-kit-pro-react.css deleted file mode 100644 index e2be52d41..000000000 --- a/src/assets/css/material-kit-pro-react.css +++ /dev/null @@ -1,1722 +0,0 @@ -/*! - -========================================================= -* Material Kit PRO React - v1.9.0 based on Material Kit PRO v2.0.2 (Bootstrap 4.0.0 Final Edition) -========================================================= - -* Product Page: https://www.creative-tim.com/product/material-kit-pro-react -* Copyright 2020 Creative Tim (https://www.creative-tim.com) - -* Coded by Creative Tim - -========================================================= - -* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -*/ -.btn-file { - position: relative; - overflow: hidden; - vertical-align: middle; } - -.btn-file > input { - position: absolute; - top: 0; - right: 0; - width: 100%; - height: 100%; - margin: 0; - font-size: 23px; - cursor: pointer; - filter: alpha(opacity=0); - opacity: 0; - direction: ltr; } - -.fileinput { - text-align: center; - display: inline-block; - margin-bottom: 9px; } - .fileinput input[type="file"] { - display: none; } - -.fileinput .form-control { - display: inline-block; - padding-top: 7px; - padding-bottom: 5px; - margin-bottom: 0; - vertical-align: middle; - cursor: text; } - -.fileinput .thumbnail { - display: inline-block; - margin-bottom: 10px; - overflow: hidden; - text-align: center; - vertical-align: middle; - max-width: 360px; - box-shadow: 0 5px 15px -8px rgba(0, 0, 0, 0.24), 0 8px 10px -5px rgba(0, 0, 0, 0.2); } - .fileinput .thumbnail.img-circle { - border-radius: 50%; - max-width: 100px; } - -.fileinput .thumbnail > img { - max-height: 100%; - width: 100%; } - -.fileinput .btn { - vertical-align: middle; } - -.fileinput-exists .fileinput-new, -.fileinput-new .fileinput-exists { - display: none; } - -.fileinput-inline .fileinput-controls { - display: inline; } - -.fileinput-filename { - display: inline-block; - overflow: hidden; - vertical-align: middle; } - -.form-control .fileinput-filename { - vertical-align: bottom; } - -.fileinput.input-group { - display: table; } - -.fileinput.input-group > * { - position: relative; - z-index: 2; } - -.fileinput.input-group > .btn-file { - z-index: 1; } - -.fileinput-new.input-group .btn-file, -.fileinput-new .input-group .btn-file { - border-radius: 0 4px 4px 0; } - -.fileinput-new.input-group .btn-file.btn-xs, -.fileinput-new .input-group .btn-file.btn-xs, -.fileinput-new.input-group .btn-file.btn-sm, -.fileinput-new .input-group .btn-file.btn-sm { - border-radius: 0 3px 3px 0; } - -.fileinput-new.input-group .btn-file.btn-lg, -.fileinput-new .input-group .btn-file.btn-lg { - border-radius: 0 6px 6px 0; } - -.form-group.has-warning .fileinput .fileinput-preview { - color: #ff9800; } - -.form-group.has-warning .fileinput .thumbnail { - border-color: #ff9800; } - -.form-group.has-error .fileinput .fileinput-preview { - color: #f44336; } - -.form-group.has-error .fileinput .thumbnail { - border-color: #f44336; } - -.form-group.has-success .fileinput .fileinput-preview { - color: #4caf50; } - -.form-group.has-success .fileinput .thumbnail { - border-color: #4caf50; } - -.input-group-addon:not(:first-child) { - border-left: 0; } - -.thumbnail { - border: 0 none; - border-radius: 0; - padding: 0; } - -@keyframes Floatingx { - from { - -webkit-transform: translate(50px, 0px); } - 65% { - -webkit-transform: translate(0, 0); } - to { - -webkit-transform: translate(50px, 0px); } } - -@keyframes Floatingy { - from { - -webkit-transform: translate(0, 0px); } - 65% { - -webkit-transform: translate(50px, 0); } - to { - -webkit-transform: translate(0, 0px); } } - -html * { - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; } - -* { - letter-spacing: normal !important; } - -body { - font-size: 1rem; } - -body, -h1, -h2, -h3, -h4, -h5, -h6 { - font-family: "Roboto", "Helvetica", "Arial", sans-serif; - font-weight: 300; - line-height: 1.5em; } - -h1, -h2, -h3, -h4, -h5, -h6 { - color: inherit; } - -h1, -h2, -h3 { - margin-top: 20px; - margin-bottom: 10px; } - -h4, -h5, -h6 { - margin-top: 10px; - margin-bottom: 10px; } - -h1 { - font-size: 3.3125rem; - line-height: 1.15em; } - -h2 { - font-size: 2.25rem; - line-height: 1.5em; } - -h3 { - font-size: 1.5625rem; - line-height: 1.4em; } - -h4 { - font-size: 1.125rem; - line-height: 1.5em; } - -h5 { - font-size: 1.0625rem; - line-height: 1.55em; } - -h6 { - font-size: 0.75rem; - text-transform: uppercase; - font-weight: 500; } - -p { - font-size: 14px; - margin: 0 0 10px; } - -b, -strong { - font-weight: 700; } - -html { - font-family: sans-serif; - line-height: 1.15; - -webkit-text-size-adjust: 100%; - -ms-text-size-adjust: 100%; - -ms-overflow-style: scrollbar; - -webkit-tap-highlight-color: transparent; } - -body { - background-color: #eee; - color: #3c4858; - margin: 0; - font-size: 1rem; - text-align: left; } - -legend { - border-bottom: 0; } - -* { - -webkit-tap-highlight-color: rgba(255, 255, 255, 0); - -webkit-tap-highlight-color: transparent; - box-sizing: border-box; } - *:focus { - outline: 0; } - -a { - color: #9c27b0; - text-decoration: none; - background-color: transparent; } - a:hover, a:focus { - color: #89229b; - text-decoration: none; } - -label { - font-size: 14px; - line-height: 1.42857; - color: #aaaaaa; - font-weight: 400; } - -small { - font-size: 75%; - color: #777; - font-weight: 400; } - -img { - vertical-align: middle; - border-style: none; } - -form { - margin-bottom: 1.125rem; } - -hr { - margin-top: 1rem; - margin-bottom: 1rem; - border: 0; - border-top: 1px solid rgba(0, 0, 0, 0.1); } - -hr { - box-sizing: content-box; - height: 0; - overflow: visible; } - -ol, -ul, -dl { - margin-top: 0; - margin-bottom: 1rem; } - -#images h4 { - margin-bottom: 30px; } - -#root { - overflow: hidden; } - -#cd-vertical-nav { - position: fixed; - right: -78px; - top: 50%; - bottom: auto; - -webkit-transform: translateY(-50%); - -moz-transform: translateY(-50%); - -ms-transform: translateY(-50%); - -o-transform: translateY(-50%); - transform: translateY(-50%); - z-index: 4; } - -#cd-vertical-nav ul { - list-style: none; - padding: 0; } - -#cd-vertical-nav li { - text-align: right; } - -#cd-vertical-nav a { - display: inline-block; - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - width: 100%; } - -#cd-vertical-nav a:hover span, -#cd-vertical-nav a.is-selected .cd-dot { - -webkit-transform: scale(1); - -moz-transform: scale(1); - -ms-transform: scale(1); - -o-transform: scale(1); - transform: scale(1); } - -#cd-vertical-nav .cd-dot { - position: relative; - top: 8px; - right: calc(100% - 15px); - height: 10px; - width: 10px; - border-radius: 50%; - background-color: #995581; - -webkit-transition: -webkit-transform 0.2s, background-color 0.5s; - -moz-transition: -moz-transform 0.2s, background-color 0.5s; - transition: transform 0.2s, background-color 0.5s; - -webkit-transform-origin: 50% 50%; - -moz-transform-origin: 50% 50%; - -ms-transform-origin: 50% 50%; - -o-transform-origin: 50% 50%; - transform-origin: 50% 50%; } - -#cd-vertical-nav a span { - float: right; - display: inline-block; - -webkit-transform: scale(0.6); - -moz-transform: scale(0.6); - -ms-transform: scale(0.6); - -o-transform: scale(0.6); - transform: scale(0.6); } - -#cd-vertical-nav .cd-label { - position: relative; - margin-right: 10px; - padding: 4px 14px; - color: white; - background: rgba(0, 0, 0, 0.53); - font-size: 10px; - border-radius: 20px; - text-transform: uppercase; - font-weight: 600; - opacity: 0; - -webkit-transform-origin: 100% 50%; - -moz-transform-origin: 100% 50%; - -ms-transform-origin: 100% 50%; - -o-transform-origin: 100% 50%; - transform-origin: 100% 50%; } - -#cd-vertical-nav a:after { - content: ""; - display: table; - clear: both; } - -#cd-vertical-nav a:hover .cd-label { - opacity: 1; - left: -100%; - -webkit-transition: -webkit-transform 0.2s, opacity 0.2s; - -moz-transition: -moz-transform 0.2s, opacity 0.2s; - transition: transform 0.2s, opacity 0.2s; } - -/*! nouislider - 14.0.2 - 6/28/2019 */ -/* Functional styling; - * These styles are required for noUiSlider to function. - * You don't need to change these rules to apply your design. - */ -/* - -This file was modified by Creative-Tim - -*/ -.noUi-target, -.noUi-target * { - -webkit-touch-callout: none; - -webkit-tap-highlight-color: rgba(0, 0, 0, 0); - -webkit-user-select: none; - -ms-touch-action: none; - touch-action: none; - -ms-user-select: none; - -moz-user-select: none; - user-select: none; - -moz-box-sizing: border-box; - box-sizing: border-box; } - -.noUi-target { - position: relative; - direction: ltr; } - -.noUi-base, -.noUi-connects { - width: 100%; - height: 100%; - position: relative; - z-index: 1; } - -/* Wrapper for all connect elements. - */ -.noUi-connects { - overflow: hidden; - z-index: 0; } - -.noUi-connect, -.noUi-origin { - will-change: transform; - position: absolute; - z-index: 1; - top: 0; - left: 0; - -ms-transform-origin: 0 0; - -webkit-transform-origin: 0 0; - -webkit-transform-style: preserve-3d; - transform-origin: 0 0; - transform-style: flat; } - -.noUi-connect { - height: 100%; - width: 100%; } - -.noUi-origin { - height: 10%; - width: 10%; } - -/* Offset direction - */ -html:not([dir="rtl"]) .noUi-horizontal .noUi-origin { - left: auto; - right: 0; } - -/* Give origins 0 height/width so they don't interfere with clicking the - * connect elements. - */ -.noUi-vertical .noUi-origin { - width: 0; } - -.noUi-horizontal .noUi-origin { - height: 0; } - -.noUi-handle { - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - position: absolute; } - -.noUi-touch-area { - height: 100%; - width: 100%; } - -.noUi-state-tap .noUi-connect, -.noUi-state-tap .noUi-origin { - -webkit-transition: transform 0.3s; - transition: transform 0.3s; } - -.noUi-state-drag * { - cursor: inherit !important; } - -/* Slider size and handle placement; - */ -.noUi-horizontal { - height: 2px; - margin: 15px 0; } - -.noUi-horizontal .noUi-handle { - box-sizing: border-box; - width: 14px; - height: 14px; - left: -10px; - top: -6px; - cursor: pointer; - border-radius: 100%; - -webkit-transition: all .2s ease-out; - transition: all .2s ease-out; - border: 1px solid #9c27b0; - background: #fff; - box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.12), 0 1px 5px 0 rgba(0, 0, 0, 0.2); } - -.noUi-vertical { - width: 18px; } - -.noUi-vertical .noUi-handle { - width: 15px; - height: 15px; - left: 0px; - top: -7px; } - -html:not([dir="rtl"]) .noUi-horizontal .noUi-handle { - right: -4px; - left: auto; } - -/* Styling; - * Giving the connect element a border radius causes issues with using transform: scale - */ -.noUi-target { - background-color: #c8c8c8; - border-radius: 3px; } - -.noUi-connects { - border-radius: 3px; } - -/* Handles and cursors; - */ -.noUi-draggable { - cursor: ew-resize; } - -.noUi-vertical .noUi-draggable { - cursor: ns-resize; } - -.noUi-handle { - border-radius: 3px; - background: #FFF; - cursor: default; - box-shadow: inset 0 0 1px #FFF, inset 0 1px 7px #EBEBEB, 0 3px 6px -3px #BBB; } - -.noUi-active { - box-shadow: inset 0 0 1px #FFF, inset 0 1px 7px #DDD, 0 3px 6px -3px #BBB; } - -/* Disabled state; - */ -[disabled] .noUi-connect { - background: #B8B8B8; } - -[disabled].noUi-target, -[disabled].noUi-handle, -[disabled] .noUi-handle { - cursor: not-allowed; } - -/* Base; - * - */ -.noUi-pips, -.noUi-pips * { - -moz-box-sizing: border-box; - box-sizing: border-box; } - -.noUi-pips { - position: absolute; - color: #999; } - -/* Values; - * - */ -.noUi-value { - position: absolute; - white-space: nowrap; - text-align: center; } - -.noUi-value-sub { - color: #ccc; - font-size: 10px; } - -/* Markings; - * - */ -.noUi-marker { - position: absolute; - background: #CCC; } - -.noUi-marker-sub { - background: #AAA; } - -.noUi-marker-large { - background: #AAA; } - -/* Horizontal layout; - * - */ -.noUi-pips-horizontal { - padding: 10px 0; - height: 80px; - top: 100%; - left: 0; - width: 100%; } - -.noUi-value-horizontal { - -webkit-transform: translate(-50%, 50%); - transform: translate(-50%, 50%); } - -.noUi-rtl .noUi-value-horizontal { - -webkit-transform: translate(50%, 50%); - transform: translate(50%, 50%); } - -.noUi-marker-horizontal.noUi-marker { - margin-left: -1px; - width: 2px; - height: 5px; } - -.noUi-marker-horizontal.noUi-marker-sub { - height: 10px; } - -.noUi-marker-horizontal.noUi-marker-large { - height: 15px; } - -/* Vertical layout; - * - */ -.noUi-pips-vertical { - padding: 0 10px; - height: 100%; - top: 0; - left: 100%; } - -.noUi-value-vertical { - -webkit-transform: translate(0, -50%); - transform: translate(0, -50%); - padding-left: 25px; } - -.noUi-rtl .noUi-value-vertical { - -webkit-transform: translate(0, 50%); - transform: translate(0, 50%); } - -.noUi-marker-vertical.noUi-marker { - width: 5px; - height: 2px; - margin-top: -1px; } - -.noUi-marker-vertical.noUi-marker-sub { - width: 10px; } - -.noUi-marker-vertical.noUi-marker-large { - width: 15px; } - -.noUi-tooltip { - display: block; - position: absolute; - border: 1px solid #D9D9D9; - border-radius: 3px; - background: #fff; - color: #000; - padding: 5px; - text-align: center; - white-space: nowrap; } - -.noUi-horizontal .noUi-tooltip { - -webkit-transform: translate(-50%, 0); - transform: translate(-50%, 0); - left: 50%; - bottom: 120%; } - -.noUi-vertical .noUi-tooltip { - -webkit-transform: translate(0, -50%); - transform: translate(0, -50%); - top: 50%; - right: 120%; } - -.noUi-target .noUi-handle { - border: 1px solid #333; } - -.noUi-target.slider-primary .noUi-connect, .noUi-target.slider-primary.noUi-connect { - background-color: #9c27b0; } - -.noUi-target.slider-primary .noUi-handle { - border-color: #9c27b0; } - -.noUi-target.slider-info .noUi-connect, .noUi-target.slider-info.noUi-connect { - background-color: #00bcd4; } - -.noUi-target.slider-info .noUi-handle { - border-color: #00bcd4; } - -.noUi-target.slider-success .noUi-connect, .noUi-target.slider-success.noUi-connect { - background-color: #4caf50; } - -.noUi-target.slider-success .noUi-handle { - border-color: #4caf50; } - -.noUi-target.slider-warning .noUi-connect, .noUi-target.slider-warning.noUi-connect { - background-color: #ff9800; } - -.noUi-target.slider-warning .noUi-handle { - border-color: #ff9800; } - -.noUi-target.slider-danger .noUi-connect, .noUi-target.slider-danger.noUi-connect { - background-color: #f44336; } - -.noUi-target.slider-danger .noUi-handle { - border-color: #f44336; } - -.noUi-target.slider-rose .noUi-connect, .noUi-target.slider-rose.noUi-connect { - background-color: #e91e63; } - -.noUi-target.slider-rose .noUi-handle { - border-color: #e91e63; } - -/*! -* https://github.com/YouCanBookMe/react-datetime -*/ -.rdt { - position: relative; } - .rdt .rdtPicker { - -webkit-transition: all 150ms linear; - -moz-transition: all 150ms linear; - -o-transition: all 150ms linear; - -ms-transition: all 150ms linear; - transition: all 150ms linear; - margin-top: -20px; - visibility: hidden; - display: block; - opacity: 0; } - .rdt.rdtOpen .rdtPicker { - opacity: 1; - visibility: visible; - margin-top: 0; } - .rdt input.form-control { - border: 0; - background-image: linear-gradient(#9c27b0, #9c27b0), linear-gradient(#d2d2d2, #d2d2d2); - background-size: 0 2px, 100% 1px; - background-repeat: no-repeat; - background-position: center bottom, center calc(100% - 1px); - background-color: rgba(0, 0, 0, 0); - transition: background 0s ease-out; - float: none; - box-shadow: none; - border-radius: 0; - font-weight: 400; - width: 100%; - height: 36px; - padding: 7px 0; - font-size: 14px; - font-family: "Roboto", "Helvetica", "Arial", sans-serif; - font-weight: 400; - line-height: 1.42857; - display: block; - width: 100%; - color: #555; } - .rdt input.form-control:focus { - outline: none; - background-image: linear-gradient(#9c27b0, #9c27b0), linear-gradient(#d2d2d2, #d2d2d2); - background-size: 100% 2px, 100% 1px; - box-shadow: none; - transition-duration: 0.3s; } - -.rdtPicker { - display: none; - position: absolute; - width: 260px; - padding: 4px; - margin-top: 1px; - z-index: 99999 !important; - background: #fff; - border-radius: 0.125rem; - box-shadow: 0px 10px 50px 0px rgba(0, 0, 0, 0.2); - -webkit-background-clip: padding-box; - background-clip: padding-box; - min-width: 160px; } - .rdtPicker:before { - display: inline-block; - position: absolute; - width: 0; - height: 0; - vertical-align: middle; - content: ""; - top: -5px; - left: 10px; - right: auto; - color: #ffffff; - border-bottom: 0.4em solid; - border-right: 0.4em solid transparent; - border-left: 0.4em solid transparent; } - .rdtPicker:after { - border-bottom: 0.4em solid #ffffff; - border-right: 0.4em solid transparent; - border-left: 0.4em solid transparent; - content: ""; - display: inline-block; - position: absolute; - top: -5px; - left: 10px; } - -.rdtPicker { - display: block; - top: 40px; } - -.rdtStatic .rdtPicker { - box-shadow: none; - position: static; } - -.rdtPicker .rdtTimeToggle { - text-align: center; - padding: 5px; - border-radius: 4px; } - -.rdtPicker table { - width: 100%; - margin: 0; - border-color: #fff !important; - border-collapse: collapse; } - -.rdtPicker td, -.rdtPicker th { - text-align: center; - padding: 1px; } - -.rdtPicker td { - cursor: pointer; } - -.rdtDay { - height: 30px; - line-height: 33px; - width: 30px; - text-align: center; - padding: 0px; - border-radius: 50%; } - .rdtDay.rdtToday.rdtActive, .rdtDay.rdtActive, .rdtDay.rdtActive:hover { - background-color: #9c27b0 !important; - color: #fff; - box-shadow: 0 5px 20px 0px rgba(0, 0, 0, 0.2), 0 13px 24px -11px rgba(156, 39, 176, 0.6); } - -.rdtDays tr .dow { - border-bottom: 1px solid #e3e3e3; - text-align: center; - font-size: 12px; - text-transform: uppercase; - font-weight: 400; - padding-bottom: 5px; - padding-top: 10px; } - -.rdtDays tr .rdtOld, -.rdtDays tr .rdtNew { - color: #bdbdbd; } - -.rdtPicker td.rdtDay:hover, -.rdtPicker td.rdtHour:hover, -.rdtPicker td.rdtMinute:hover, -.rdtPicker td.rdtSecond:hover, -.rdtPicker .rdtTimeToggle:hover { - background: #eeeeee; - cursor: pointer; } - -.rdtPicker td.rdtToday { - position: relative; } - -.rdtPicker td.rdtActive.rdtToday:before { - border-bottom-color: #fff; } - -.rdtPicker td.rdtDisabled, -.rdtPicker td.rdtDisabled:hover { - background: none; - color: #999999; - cursor: not-allowed; } - -.rdtPicker td span.rdtOld { - color: #999999; } - -.rdtPicker td span.rdtDisabled, -.rdtPicker td span.rdtDisabled:hover { - background: none; - color: #999999; - cursor: not-allowed; } - -.rdtPicker .dow { - width: 14.2857%; - border-bottom: none; } - -.rdtPicker th.rdtSwitch { - width: 50px; - padding: 5px; - border-radius: 4px; } - -.rdtPicker th.rdtNext, -.rdtPicker th.rdtPrev { - font-size: 21px; - vertical-align: top; - border-radius: 50%; - line-height: 33px; } - -.rdtPicker .dow, -.rdtPicker th.rdtSwitch, -.rdtPicker th.rdtNext, -.rdtPicker th.rdtPrev, -.rdtPicker .rdtTimeToggle { - color: #495057; } - -.rdtPicker .rdtTimeToggle { - color: #9c27b0; } - -.rdtPicker .rdtTime th.rdtSwitch { - color: #9c27b0; } - -.rdtPrev span, -.rdtNext span { - display: block; - -webkit-touch-callout: none; - /* iOS Safari */ - -webkit-user-select: none; - /* Chrome/Safari/Opera */ - -khtml-user-select: none; - /* Konqueror */ - -moz-user-select: none; - /* Firefox */ - -ms-user-select: none; - /* Internet Explorer/Edge */ - user-select: none; } - -.rdtPicker th.rdtDisabled, -.rdtPicker th.rdtDisabled:hover { - background: none; - color: #999999; - cursor: not-allowed; } - -.rdtPicker thead tr:first-child th { - cursor: pointer; } - -.rdtPicker thead tr:first-child th:hover { - background: #eeeeee; } - -.rdtPicker button { - border: none; - background: none; - cursor: pointer; } - -.rdtPicker button:hover { - background-color: #eee; } - -.rdtPicker thead button { - width: 100%; - height: 100%; } - -td.rdtMonth, -td.rdtYear { - height: 50px; - width: 25%; - cursor: pointer; } - -td.rdtMonth:hover, -td.rdtYear:hover { - background: #eee; } - -.rdtCounters { - display: inline-block; } - -.rdtCounters > div { - float: left; - width: 40px; - font-weight: inherit; - margin: 3px; - border-radius: 50%; } - -.rdtCounters .rdtCounterSeparator { - width: 0; - border: 1px solid transparent; } - -.rdtCounter { - height: 100px; } - -.rdtCounter { - width: 40px; } - .rdtCounter .rdtCount { - padding: 7px; - height: 40px; - border: 1px solid transparent; } - -.rdtCounters .rdtCounter:last-child .rdtCount { - color: #9c27b0; - border-radius: 50%; - border: 1px solid #9c27b0; } - -.rdtCounterSeparator { - padding: 7px; - line-height: 100px; } - -.rdtCounter .rdtBtn { - line-height: 40px; - cursor: pointer; - display: block; - border-radius: 50%; - color: #9c27b0; - -webkit-transition: all 60ms ease-in; - -moz-transition: all 60ms ease-in; - -o-transition: all 60ms ease-in; - -ms-transition: all 60ms ease-in; - transition: all 60ms ease-in; - -webkit-touch-callout: none; - /* iOS Safari */ - -webkit-user-select: none; - /* Chrome/Safari/Opera */ - -khtml-user-select: none; - /* Konqueror */ - -moz-user-select: none; - /* Firefox */ - -ms-user-select: none; - /* Internet Explorer/Edge */ - user-select: none; } - -.rdtCounter .rdtBtn:hover { - background: #eee; } - -.rdtCounter .rdtCount { - font-size: inherit; - line-height: 25px; } - -.rdtMilli { - vertical-align: middle; - padding-left: 8px; - width: 48px; } - -.rdtMilli input { - width: 100%; - font-size: inherit; - margin-top: 37px; } - -.rdtMonths, -.rdtYears { - padding-bottom: 10px; } - .rdtMonths .rdtMonth, - .rdtMonths .rdtYear, - .rdtYears .rdtMonth, - .rdtYears .rdtYear { - display: inline-block; - width: 56px; - height: 56px; - line-height: 56px; - margin: 3px 3px; - cursor: pointer; - border-radius: 50%; - text-align: center; } - .rdtMonths .rdtMonth.rdtActive, - .rdtMonths .rdtYear.rdtActive, - .rdtYears .rdtMonth.rdtActive, - .rdtYears .rdtYear.rdtActive { - background-color: #9c27b0 !important; - color: #fff; } - -.image-gallery-icon { - color: #fff; - transition: all .2s ease-out; - appearance: none; - background-color: transparent; - border: 0; - cursor: pointer; - outline: none; - position: absolute; - z-index: 4; - filter: drop-shadow(0 2px 2px #1a1a1a); } - @media (min-width: 768px) { - .image-gallery-icon:hover { - color: #337ab7; } - .image-gallery-icon:hover .image-gallery-svg { - transform: scale(1.1); } } - .image-gallery-icon:focus { - outline: 2px solid #337ab7; } - -.image-gallery-using-mouse .image-gallery-icon:focus { - outline: none; } - -.image-gallery-fullscreen-button, -.image-gallery-play-button { - bottom: 0; - padding: 20px; } - .image-gallery-fullscreen-button .image-gallery-svg, - .image-gallery-play-button .image-gallery-svg { - height: 36px; - width: 36px; } - @media (max-width: 768px) { - .image-gallery-fullscreen-button, - .image-gallery-play-button { - padding: 15px; } - .image-gallery-fullscreen-button .image-gallery-svg, - .image-gallery-play-button .image-gallery-svg { - height: 24px; - width: 24px; } } - @media (max-width: 480px) { - .image-gallery-fullscreen-button, - .image-gallery-play-button { - padding: 10px; } - .image-gallery-fullscreen-button .image-gallery-svg, - .image-gallery-play-button .image-gallery-svg { - height: 16px; - width: 16px; } } - -.image-gallery-fullscreen-button { - right: 0; } - -.image-gallery-play-button { - left: 0; } - -.image-gallery-left-nav, -.image-gallery-right-nav { - padding: 50px 10px; - top: 50%; - transform: translateY(-50%); } - .image-gallery-left-nav .image-gallery-svg, - .image-gallery-right-nav .image-gallery-svg { - height: 120px; - width: 60px; } - @media (max-width: 768px) { - .image-gallery-left-nav .image-gallery-svg, - .image-gallery-right-nav .image-gallery-svg { - height: 72px; - width: 36px; } } - @media (max-width: 480px) { - .image-gallery-left-nav .image-gallery-svg, - .image-gallery-right-nav .image-gallery-svg { - height: 48px; - width: 24px; } } - .image-gallery-left-nav[disabled], - .image-gallery-right-nav[disabled] { - cursor: disabled; - opacity: .6; - pointer-events: none; } - -.image-gallery-left-nav { - left: 0; } - -.image-gallery-right-nav { - right: 0; } - -.image-gallery { - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - -o-user-select: none; - user-select: none; - -webkit-tap-highlight-color: rgba(0, 0, 0, 0); - position: relative; } - .image-gallery.fullscreen-modal { - background: #000; - bottom: 0; - height: 100%; - left: 0; - position: fixed; - right: 0; - top: 0; - width: 100%; - z-index: 5; } - .image-gallery.fullscreen-modal .image-gallery-content { - top: 50%; - transform: translateY(-50%); } - -.image-gallery-content { - position: relative; - line-height: 0; - top: 0; } - .image-gallery-content.fullscreen { - background: #000; } - .image-gallery-content .image-gallery-slide .image-gallery-image { - max-height: calc(100vh - 80px); } - .image-gallery-content.left .image-gallery-slide .image-gallery-image, .image-gallery-content.right .image-gallery-slide .image-gallery-image { - max-height: 100vh; } - -.image-gallery-slide-wrapper { - position: relative; } - .image-gallery-slide-wrapper.left, .image-gallery-slide-wrapper.right { - display: inline-block; - width: calc(100% - 110px); } - @media (max-width: 768px) { - .image-gallery-slide-wrapper.left, .image-gallery-slide-wrapper.right { - width: calc(100% - 87px); } } - .image-gallery-slide-wrapper.image-gallery-rtl { - direction: rtl; } - -.image-gallery-slides { - line-height: 0; - overflow: hidden; - position: relative; - white-space: nowrap; - text-align: center; } - -.image-gallery-slide { - left: 0; - position: absolute; - top: 0; - width: 100%; } - .image-gallery-slide.center { - position: relative; } - .image-gallery-slide .image-gallery-image { - width: 100%; - object-fit: contain; } - .image-gallery-slide .image-gallery-description { - background: rgba(0, 0, 0, 0.4); - bottom: 70px; - color: #fff; - left: 0; - line-height: 1; - padding: 10px 20px; - position: absolute; - white-space: normal; } - @media (max-width: 768px) { - .image-gallery-slide .image-gallery-description { - bottom: 45px; - font-size: .8em; - padding: 8px 15px; } } - -.image-gallery-bullets { - bottom: 20px; - left: 0; - margin: 0 auto; - position: absolute; - right: 0; - width: 80%; - z-index: 4; } - .image-gallery-bullets .image-gallery-bullets-container { - margin: 0; - padding: 0; - text-align: center; } - .image-gallery-bullets .image-gallery-bullet { - appearance: none; - background-color: transparent; - border: 1px solid #fff; - border-radius: 50%; - box-shadow: 0 1px 0 #1a1a1a; - cursor: pointer; - display: inline-block; - margin: 0 5px; - outline: none; - padding: 5px; - transition: background .2s ease-out; } - @media (max-width: 768px) { - .image-gallery-bullets .image-gallery-bullet { - margin: 0 3px; - padding: 3px; } } - @media (max-width: 480px) { - .image-gallery-bullets .image-gallery-bullet { - padding: 2.7px; } } - .image-gallery-bullets .image-gallery-bullet:focus, .image-gallery-bullets .image-gallery-bullet:hover { - background: #337ab7; - transform: scale(1.1); } - .image-gallery-bullets .image-gallery-bullet.active { - background: #fff; } - -.image-gallery-thumbnails-wrapper { - position: relative; } - .image-gallery-thumbnails-wrapper.thumbnails-wrapper-rtl { - direction: rtl; } - .image-gallery-thumbnails-wrapper.left, .image-gallery-thumbnails-wrapper.right { - display: inline-block; - vertical-align: top; - width: 100px; } - @media (max-width: 768px) { - .image-gallery-thumbnails-wrapper.left, .image-gallery-thumbnails-wrapper.right { - width: 81px; } } - .image-gallery-thumbnails-wrapper.left .image-gallery-thumbnails, .image-gallery-thumbnails-wrapper.right .image-gallery-thumbnails { - height: 100%; - width: 100%; - left: 0; - padding: 0; - position: absolute; - top: 0; } - .image-gallery-thumbnails-wrapper.left .image-gallery-thumbnails .image-gallery-thumbnail, .image-gallery-thumbnails-wrapper.right .image-gallery-thumbnails .image-gallery-thumbnail { - display: block; - margin-right: 0; - padding: 0; } - .image-gallery-thumbnails-wrapper.left .image-gallery-thumbnails .image-gallery-thumbnail + .image-gallery-thumbnail, .image-gallery-thumbnails-wrapper.right .image-gallery-thumbnails .image-gallery-thumbnail + .image-gallery-thumbnail { - margin-left: 0; - margin-top: 2px; } - .image-gallery-thumbnails-wrapper.left, .image-gallery-thumbnails-wrapper.right { - margin: 0 5px; } - @media (max-width: 768px) { - .image-gallery-thumbnails-wrapper.left, .image-gallery-thumbnails-wrapper.right { - margin: 0 3px; } } - -.image-gallery-thumbnails { - overflow: hidden; - padding: 5px 0; } - @media (max-width: 768px) { - .image-gallery-thumbnails { - padding: 3px 0; } } - .image-gallery-thumbnails .image-gallery-thumbnails-container { - cursor: pointer; - text-align: center; - transition: transform .45s ease-out; - white-space: nowrap; } - -.image-gallery-thumbnail { - display: inline-block; - border: 4px solid transparent; - transition: border .3s ease-out; - width: 100px; - background: transparent; - padding: 0; } - @media (max-width: 768px) { - .image-gallery-thumbnail { - border: 3px solid transparent; - width: 81px; } } - .image-gallery-thumbnail + .image-gallery-thumbnail { - margin-left: 2px; } - .image-gallery-thumbnail .image-gallery-thumbnail-inner { - position: relative; } - .image-gallery-thumbnail .image-gallery-thumbnail-image { - vertical-align: middle; - width: 100%; - line-height: 0; } - .image-gallery-thumbnail.active, .image-gallery-thumbnail:hover, .image-gallery-thumbnail:focus { - outline: none; - border: 4px solid #337ab7; } - @media (max-width: 768px) { - .image-gallery-thumbnail.active, .image-gallery-thumbnail:hover, .image-gallery-thumbnail:focus { - border: 3px solid #337ab7; } } - -.image-gallery-thumbnail-label { - box-sizing: border-box; - color: white; - font-size: 1em; - left: 0; - line-height: 1em; - padding: 5%; - position: absolute; - top: 50%; - text-shadow: 1px 1px 0 black; - transform: translateY(-50%); - white-space: normal; - width: 100%; } - @media (max-width: 768px) { - .image-gallery-thumbnail-label { - font-size: .8em; - line-height: .8em; } } - -.image-gallery-index { - background: rgba(0, 0, 0, 0.4); - color: #fff; - line-height: 1; - padding: 10px 20px; - position: absolute; - right: 0; - top: 0; - z-index: 4; } - @media (max-width: 768px) { - .image-gallery-index { - font-size: .8em; - padding: 5px 10px; } } - -.image-gallery-left-nav, -.image-gallery-right-nav { - position: absolute; - cursor: pointer; - z-index: 100; - opacity: 0.5; - bottom: -40%; - top: auto; - padding: 0 !important; - color: #fff; - font-size: 5em; - outline: none; - background-color: transparent; - border: 0; - transform: translateY(-50%); } - .image-gallery-left-nav:before, .image-gallery-left-nav:hover:before, - .image-gallery-right-nav:before, - .image-gallery-right-nav:hover:before { - color: #3c4858; - text-shadow: none; } - .image-gallery-left-nav:before, - .image-gallery-right-nav:before { - font-family: "Material Icons"; - font-weight: normal; - font-style: normal; - font-size: 24px; - line-height: 1; - letter-spacing: normal; - text-transform: none; - display: inline-block; - white-space: nowrap; - word-wrap: normal; - direction: ltr; - -webkit-font-feature-settings: "liga"; - -webkit-font-smoothing: antialiased; } - -.image-gallery-left-nav { - left: -20px; } - .image-gallery-left-nav::before { - content: "chevron_left"; } - -.image-gallery-right-nav { - right: -20px; } - .image-gallery-right-nav::before { - content: "chevron_right"; } - -.image-gallery-thumbnail { - margin: 0px; - padding: 0px; - cursor: pointer; - position: relative; - line-height: 0px; - width: 125px; - border: none !important; } - .image-gallery-thumbnail + .image-gallery-thumbnail { - margin: 0 !important; } - .image-gallery-thumbnail img { - max-width: 100%; - cursor: pointer; - position: relative; - margin-top: 10px; - margin-bottom: 10px; } - -.image-gallery-thumbnail-label { - display: none !important; } - -.image-gallery-thumbnails { - padding: 0 !important; - overflow: hidden; - width: 100%; } - -.image-gallery-thumbnails-container { - position: relative; - margin: 0px; - padding: 0px; - list-style-type: none; - text-align: center; } - -/* Slider */ -.slick-slider { - position: relative; - display: block; - box-sizing: border-box; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - -webkit-touch-callout: none; - -khtml-user-select: none; - -ms-touch-action: pan-y; - touch-action: pan-y; - -webkit-tap-highlight-color: transparent; } - @media (min-width: 768px) { - .slick-slider .slick-caption { - display: block !important; } } - .slick-slider .slick-caption { - padding-bottom: 45px; - position: absolute; - right: 15%; - bottom: 20px; - left: 15%; - z-index: 10; - padding-top: 20px; - color: #ffffff; - text-align: center; - z-index: 3; - display: none; } - .slick-slider .slick-slide > div:first-child { - position: relative; } - .slick-slider .slick-icons { - position: relative; - top: 5px; } - .slick-slider .slick-image { - width: 100% !important; - display: inline-flex !important; } - -.slick-list { - position: relative; - display: block; - overflow: hidden; - margin: 0; - padding: 0; } - -.slick-list:focus { - outline: none; } - -.slick-list.dragging { - cursor: pointer; - cursor: hand; } - -.slick-slider .slick-track, -.slick-slider .slick-list { - -webkit-transform: translate3d(0, 0, 0); - -moz-transform: translate3d(0, 0, 0); - -ms-transform: translate3d(0, 0, 0); - -o-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); } - -.slick-track { - position: relative; - top: 0; - left: 0; - display: block; - margin-left: auto; - margin-right: auto; } - -.slick-track:before, -.slick-track:after { - display: table; - content: ""; } - -.slick-track:after { - clear: both; } - -.slick-loading .slick-track { - visibility: hidden; } - -.slick-slide { - display: none; - float: left; - height: 100%; - min-height: 1px; } - -[dir="rtl"] .slick-slide { - float: right; } - -.slick-slide img { - display: block; } - -.slick-slide.slick-loading img { - display: none; } - -.slick-slide.dragging img { - pointer-events: none; } - -.slick-initialized .slick-slide { - display: block; } - -.slick-loading .slick-slide { - visibility: hidden; } - -.slick-vertical .slick-slide { - display: block; - height: auto; - border: 1px solid transparent; } - -.slick-arrow.slick-hidden { - display: none; } - -button.slick-arrow.slick-prev, -button.slick-arrow.slick-next { - font-size: 0; - line-height: 0; - position: absolute; - top: 50%; - display: block; - height: 100%; - padding: 0; - -ms-transform: translateY(-50%); - transform: translateY(-50%); - cursor: pointer; - border: none; - color: transparent; - outline: none; - background: transparent; - width: 15%; - z-index: 2; - opacity: 0.5; } - -.slick-prev { - left: 0; } - .slick-prev::before { - content: "\f053"; - font-weight: 600; - font-family: Font Awesome\ 5 Free; - -moz-osx-font-smoothing: grayscale; - -webkit-font-smoothing: antialiased; - display: inline-block; - font-style: normal; - font-variant: normal; - text-rendering: auto; - line-height: 1; - color: white; - font-size: 30px; - width: 100%; } - -.slick-next { - right: 0; } - .slick-next::before { - content: "\f054"; - font-weight: 600; - font-family: Font Awesome\ 5 Free; - -moz-osx-font-smoothing: grayscale; - -webkit-font-smoothing: antialiased; - display: inline-block; - font-style: normal; - font-variant: normal; - text-rendering: auto; - line-height: 1; - color: #fff; - font-size: 30px; - width: 100%; } - -.slick-list { - z-index: 1; } - -.slick-dots { - margin-top: 0; - margin-bottom: 1rem; - position: absolute; - bottom: 5px; - width: 100%; - padding: 0; - list-style: none; - text-align: center; - z-index: 3; } - -.slick-dots li, -.slick-dots li button { - width: 20px; - height: 20px; - cursor: pointer; } - -.slick-dots li { - position: relative; - display: inline-block; - margin: 0 5px; - padding: 0; } - -.slick-dots li button { - font-size: 0; - line-height: 0; - display: block; - padding: 5px; - color: transparent; - border: 0; - outline: none; - background: transparent; } - .slick-dots li button::before { - position: absolute; - top: 0; - left: 0; - width: 10px; - height: 10px; - content: "\2022"; - text-align: center; - opacity: 1; - background-color: #fff; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.12), 0 1px 5px 0 rgba(0, 0, 0, 0.2); - border-radius: 2px; - transition: all 300ms linear; } - -.slick-dots li.slick-active button:before { - width: 15px; - height: 15px; - box-shadow: 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12), 0 2px 4px -1px rgba(0, 0, 0, 0.2); - top: -3px; } - -.react-tagsinput { - display: inline-block; - padding: 4px 6px; - max-width: 100%; - line-height: 22px; } - -.react-tagsinput-tag { - cursor: pointer; - margin: 5px 3px 5px 0; - position: relative; - padding: 3px 8px; - border-radius: 12px; - color: #ffffff; - font-weight: 500; - font-size: 0.75em; - text-transform: uppercase; - display: inline-block; - line-height: 1.5em; - padding-left: 0.8em; } - -.react-tagsinput-remove { - cursor: pointer; - font-weight: bold; } - -.react-tagsinput-tag a::before { - font-family: Font Awesome\ 5 Free; - content: "\f00d"; - padding: 0px 2px; - font-weight: 900; } - -.react-tagsinput-tag a { - cursor: pointer; - position: absolute; - top: 3px; - right: 0px; - opacity: 0; - background-color: transparent; - color: #ffffff; } - -.react-tagsinput-input { - background: transparent; - border: 0; - color: #777; - font-family: sans-serif; - font-size: 13px; - font-weight: 400; - margin-bottom: 6px; - margin-top: 1px; - outline: none; - padding: 5px; - width: 80px; } - -.react-tagsinput .react-tagsinput-tag { - -webkit-transition: all 300ms ease 0s; - -moz-transition: all 300ms ease 0s; - -o-transition: all 300ms ease 0s; - -ms-transition: all 300ms ease 0s; - transition: all 300ms ease 0s; - background-color: #999; } - .react-tagsinput .react-tagsinput-tag:hover { - padding-right: 22px; } - .react-tagsinput .react-tagsinput-tag:hover a { - opacity: 1; - padding-right: 4px; - background-color: transparent; - color: #ffffff; } - .react-tagsinput .react-tagsinput-tag.primary { - background-color: #9c27b0; } - .react-tagsinput .react-tagsinput-tag.info { - background-color: #00bcd4; } - .react-tagsinput .react-tagsinput-tag.success { - background-color: #4caf50; } - .react-tagsinput .react-tagsinput-tag.warning { - background-color: #ff9800; } - .react-tagsinput .react-tagsinput-tag.danger { - background-color: #f44336; } - .react-tagsinput .react-tagsinput-tag.rose { - background-color: #e91e63; } - .react-tagsinput .react-tagsinput-tag.default { - background-color: #999; } diff --git a/src/assets/css/material-kit-pro-react.css.map b/src/assets/css/material-kit-pro-react.css.map deleted file mode 100644 index 61f6c77d4..000000000 --- a/src/assets/css/material-kit-pro-react.css.map +++ /dev/null @@ -1,28 +0,0 @@ -{ - "version": 3, - "file": "material-kit-pro-react.css", - "sources": [ - "../scss/material-kit-pro-react.scss", - "../scss/core/_variables.scss", - "../scss/core/variables/_colors.scss", - "../scss/core/variables/_shadow.scss", - "../scss/core/variables/_bootstrap-material-design-base.scss", - "../scss/core/variables/_brand.scss", - "../scss/core/variables/_functions.scss", - "../scss/core/variables/_variables.scss", - "../scss/core/variables/_bootstrap-material-design.scss", - "../scss/core/_mixins.scss", - "../scss/core/mixins/_colored-shadows.scss", - "../scss/core/_fileupload.scss", - "../scss/core/_keyframes.scss", - "../scss/core/_misc.scss", - "../scss/plugins/_plugin-nouislider.scss", - "../scss/plugins/_plugin-react-datetime.scss", - "../scss/plugins/_plugin-react-image-gallery.scss", - "../../../node_modules/react-image-gallery/styles/scss/image-gallery.scss", - "../scss/plugins/_plugin-react-slick.scss", - "../scss/plugins/_plugin-react-tagsinput.scss" - ], - "names": [], - "mappings": "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" -} \ No newline at end of file diff --git a/src/assets/css/material-kit-pro-react.min.css b/src/assets/css/material-kit-pro-react.min.css deleted file mode 100644 index 7b19fa87e..000000000 --- a/src/assets/css/material-kit-pro-react.min.css +++ /dev/null @@ -1,18 +0,0 @@ -/*! - -========================================================= -* Material Kit PRO React - v1.9.0 based on Material Kit PRO v2.0.2 (Bootstrap 4.0.0 Final Edition) -========================================================= - -* Product Page: https://www.creative-tim.com/product/material-kit-pro-react -* Copyright 2020 Creative Tim (https://www.creative-tim.com) - -* Coded by Creative Tim - -========================================================= - -* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -*/.btn-file{position:relative;overflow:hidden;vertical-align:middle}.btn-file>input{position:absolute;top:0;right:0;width:100%;height:100%;margin:0;font-size:23px;cursor:pointer;filter:alpha(opacity=0);opacity:0;direction:ltr}.fileinput{text-align:center;display:inline-block;margin-bottom:9px}.fileinput input[type="file"]{display:none}.fileinput .form-control{display:inline-block;padding-top:7px;padding-bottom:5px;margin-bottom:0;vertical-align:middle;cursor:text}.fileinput .thumbnail{display:inline-block;margin-bottom:10px;overflow:hidden;text-align:center;vertical-align:middle;max-width:360px;box-shadow:0 5px 15px -8px rgba(0,0,0,0.24),0 8px 10px -5px rgba(0,0,0,0.2)}.fileinput .thumbnail.img-circle{border-radius:50%;max-width:100px}.fileinput .thumbnail>img{max-height:100%;width:100%}.fileinput .btn{vertical-align:middle}.fileinput-exists .fileinput-new,.fileinput-new .fileinput-exists{display:none}.fileinput-inline .fileinput-controls{display:inline}.fileinput-filename{display:inline-block;overflow:hidden;vertical-align:middle}.form-control .fileinput-filename{vertical-align:bottom}.fileinput.input-group{display:table}.fileinput.input-group>*{position:relative;z-index:2}.fileinput.input-group>.btn-file{z-index:1}.fileinput-new.input-group .btn-file,.fileinput-new .input-group .btn-file{border-radius:0 4px 4px 0}.fileinput-new.input-group .btn-file.btn-xs,.fileinput-new .input-group .btn-file.btn-xs,.fileinput-new.input-group .btn-file.btn-sm,.fileinput-new .input-group .btn-file.btn-sm{border-radius:0 3px 3px 0}.fileinput-new.input-group .btn-file.btn-lg,.fileinput-new .input-group .btn-file.btn-lg{border-radius:0 6px 6px 0}.form-group.has-warning .fileinput .fileinput-preview{color:#ff9800}.form-group.has-warning .fileinput .thumbnail{border-color:#ff9800}.form-group.has-error .fileinput .fileinput-preview{color:#f44336}.form-group.has-error .fileinput .thumbnail{border-color:#f44336}.form-group.has-success .fileinput .fileinput-preview{color:#4caf50}.form-group.has-success .fileinput .thumbnail{border-color:#4caf50}.input-group-addon:not(:first-child){border-left:0}.thumbnail{border:0 none;border-radius:0;padding:0}@keyframes Floatingx{from{-webkit-transform:translate(50px, 0px)}65%{-webkit-transform:translate(0, 0)}to{-webkit-transform:translate(50px, 0px)}}@keyframes Floatingy{from{-webkit-transform:translate(0, 0px)}65%{-webkit-transform:translate(50px, 0)}to{-webkit-transform:translate(0, 0px)}}html *{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{letter-spacing:normal !important}body{font-size:1rem}body,h1,h2,h3,h4,h5,h6{font-family:"Roboto", "Helvetica", "Arial", sans-serif;font-weight:300;line-height:1.5em}h1,h2,h3,h4,h5,h6{color:inherit}h1,h2,h3{margin-top:20px;margin-bottom:10px}h4,h5,h6{margin-top:10px;margin-bottom:10px}h1{font-size:3.3125rem;line-height:1.15em}h2{font-size:2.25rem;line-height:1.5em}h3{font-size:1.5625rem;line-height:1.4em}h4{font-size:1.125rem;line-height:1.5em}h5{font-size:1.0625rem;line-height:1.55em}h6{font-size:0.75rem;text-transform:uppercase;font-weight:500}p{font-size:14px;margin:0 0 10px}b,strong{font-weight:700}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:transparent}body{background-color:#eee;color:#3c4858;margin:0;font-size:1rem;text-align:left}legend{border-bottom:0}*{-webkit-tap-highlight-color:rgba(255,255,255,0);-webkit-tap-highlight-color:transparent;box-sizing:border-box}*:focus{outline:0}a{color:#9c27b0;text-decoration:none;background-color:transparent}a:hover,a:focus{color:#89229b;text-decoration:none}label{font-size:14px;line-height:1.42857;color:#aaa;font-weight:400}small{font-size:75%;color:#777;font-weight:400}img{vertical-align:middle;border-style:none}form{margin-bottom:1.125rem}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,0.1)}hr{box-sizing:content-box;height:0;overflow:visible}ol,ul,dl{margin-top:0;margin-bottom:1rem}#images h4{margin-bottom:30px}#root{overflow:hidden}#cd-vertical-nav{position:fixed;right:-78px;top:50%;bottom:auto;-webkit-transform:translateY(-50%);-moz-transform:translateY(-50%);-ms-transform:translateY(-50%);-o-transform:translateY(-50%);transform:translateY(-50%);z-index:4}#cd-vertical-nav ul{list-style:none;padding:0}#cd-vertical-nav li{text-align:right}#cd-vertical-nav a{display:inline-block;-webkit-backface-visibility:hidden;backface-visibility:hidden;width:100%}#cd-vertical-nav a:hover span,#cd-vertical-nav a.is-selected .cd-dot{-webkit-transform:scale(1);-moz-transform:scale(1);-ms-transform:scale(1);-o-transform:scale(1);transform:scale(1)}#cd-vertical-nav .cd-dot{position:relative;top:8px;right:calc(100% - 15px);height:10px;width:10px;border-radius:50%;background-color:#995581;-webkit-transition:-webkit-transform 0.2s, background-color 0.5s;-moz-transition:-moz-transform 0.2s, background-color 0.5s;transition:transform 0.2s, background-color 0.5s;-webkit-transform-origin:50% 50%;-moz-transform-origin:50% 50%;-ms-transform-origin:50% 50%;-o-transform-origin:50% 50%;transform-origin:50% 50%}#cd-vertical-nav a span{float:right;display:inline-block;-webkit-transform:scale(0.6);-moz-transform:scale(0.6);-ms-transform:scale(0.6);-o-transform:scale(0.6);transform:scale(0.6)}#cd-vertical-nav .cd-label{position:relative;margin-right:10px;padding:4px 14px;color:white;background:rgba(0,0,0,0.53);font-size:10px;border-radius:20px;text-transform:uppercase;font-weight:600;opacity:0;-webkit-transform-origin:100% 50%;-moz-transform-origin:100% 50%;-ms-transform-origin:100% 50%;-o-transform-origin:100% 50%;transform-origin:100% 50%}#cd-vertical-nav a:after{content:"";display:table;clear:both}#cd-vertical-nav a:hover .cd-label{opacity:1;left:-100%;-webkit-transition:-webkit-transform 0.2s, opacity 0.2s;-moz-transition:-moz-transform 0.2s, opacity 0.2s;transition:transform 0.2s, opacity 0.2s}/*! nouislider - 14.0.2 - 6/28/2019 */.noUi-target,.noUi-target *{-webkit-touch-callout:none;-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-user-select:none;-ms-touch-action:none;touch-action:none;-ms-user-select:none;-moz-user-select:none;user-select:none;-moz-box-sizing:border-box;box-sizing:border-box}.noUi-target{position:relative;direction:ltr}.noUi-base,.noUi-connects{width:100%;height:100%;position:relative;z-index:1}.noUi-connects{overflow:hidden;z-index:0}.noUi-connect,.noUi-origin{will-change:transform;position:absolute;z-index:1;top:0;left:0;-ms-transform-origin:0 0;-webkit-transform-origin:0 0;-webkit-transform-style:preserve-3d;transform-origin:0 0;transform-style:flat}.noUi-connect{height:100%;width:100%}.noUi-origin{height:10%;width:10%}html:not([dir="rtl"]) .noUi-horizontal .noUi-origin{left:auto;right:0}.noUi-vertical .noUi-origin{width:0}.noUi-horizontal .noUi-origin{height:0}.noUi-handle{-webkit-backface-visibility:hidden;backface-visibility:hidden;position:absolute}.noUi-touch-area{height:100%;width:100%}.noUi-state-tap .noUi-connect,.noUi-state-tap .noUi-origin{-webkit-transition:transform 0.3s;transition:transform 0.3s}.noUi-state-drag *{cursor:inherit !important}.noUi-horizontal{height:2px;margin:15px 0}.noUi-horizontal .noUi-handle{box-sizing:border-box;width:14px;height:14px;left:-10px;top:-6px;cursor:pointer;border-radius:100%;-webkit-transition:all .2s ease-out;transition:all .2s ease-out;border:1px solid #9c27b0;background:#fff;box-shadow:0 2px 2px 0 rgba(0,0,0,0.14),0 3px 1px -2px rgba(0,0,0,0.12),0 1px 5px 0 rgba(0,0,0,0.2)}.noUi-vertical{width:18px}.noUi-vertical .noUi-handle{width:15px;height:15px;left:0px;top:-7px}html:not([dir="rtl"]) .noUi-horizontal .noUi-handle{right:-4px;left:auto}.noUi-target{background-color:#c8c8c8;border-radius:3px}.noUi-connects{border-radius:3px}.noUi-draggable{cursor:ew-resize}.noUi-vertical .noUi-draggable{cursor:ns-resize}.noUi-handle{border-radius:3px;background:#FFF;cursor:default;box-shadow:inset 0 0 1px #FFF, inset 0 1px 7px #EBEBEB, 0 3px 6px -3px #BBB}.noUi-active{box-shadow:inset 0 0 1px #FFF, inset 0 1px 7px #DDD, 0 3px 6px -3px #BBB}[disabled] .noUi-connect{background:#B8B8B8}[disabled].noUi-target,[disabled].noUi-handle,[disabled] .noUi-handle{cursor:not-allowed}.noUi-pips,.noUi-pips *{-moz-box-sizing:border-box;box-sizing:border-box}.noUi-pips{position:absolute;color:#999}.noUi-value{position:absolute;white-space:nowrap;text-align:center}.noUi-value-sub{color:#ccc;font-size:10px}.noUi-marker{position:absolute;background:#CCC}.noUi-marker-sub{background:#AAA}.noUi-marker-large{background:#AAA}.noUi-pips-horizontal{padding:10px 0;height:80px;top:100%;left:0;width:100%}.noUi-value-horizontal{-webkit-transform:translate(-50%, 50%);transform:translate(-50%, 50%)}.noUi-rtl .noUi-value-horizontal{-webkit-transform:translate(50%, 50%);transform:translate(50%, 50%)}.noUi-marker-horizontal.noUi-marker{margin-left:-1px;width:2px;height:5px}.noUi-marker-horizontal.noUi-marker-sub{height:10px}.noUi-marker-horizontal.noUi-marker-large{height:15px}.noUi-pips-vertical{padding:0 10px;height:100%;top:0;left:100%}.noUi-value-vertical{-webkit-transform:translate(0, -50%);transform:translate(0, -50%);padding-left:25px}.noUi-rtl .noUi-value-vertical{-webkit-transform:translate(0, 50%);transform:translate(0, 50%)}.noUi-marker-vertical.noUi-marker{width:5px;height:2px;margin-top:-1px}.noUi-marker-vertical.noUi-marker-sub{width:10px}.noUi-marker-vertical.noUi-marker-large{width:15px}.noUi-tooltip{display:block;position:absolute;border:1px solid #D9D9D9;border-radius:3px;background:#fff;color:#000;padding:5px;text-align:center;white-space:nowrap}.noUi-horizontal .noUi-tooltip{-webkit-transform:translate(-50%, 0);transform:translate(-50%, 0);left:50%;bottom:120%}.noUi-vertical .noUi-tooltip{-webkit-transform:translate(0, -50%);transform:translate(0, -50%);top:50%;right:120%}.noUi-target .noUi-handle{border:1px solid #333}.noUi-target.slider-primary .noUi-connect,.noUi-target.slider-primary.noUi-connect{background-color:#9c27b0}.noUi-target.slider-primary .noUi-handle{border-color:#9c27b0}.noUi-target.slider-info .noUi-connect,.noUi-target.slider-info.noUi-connect{background-color:#00bcd4}.noUi-target.slider-info .noUi-handle{border-color:#00bcd4}.noUi-target.slider-success .noUi-connect,.noUi-target.slider-success.noUi-connect{background-color:#4caf50}.noUi-target.slider-success .noUi-handle{border-color:#4caf50}.noUi-target.slider-warning .noUi-connect,.noUi-target.slider-warning.noUi-connect{background-color:#ff9800}.noUi-target.slider-warning .noUi-handle{border-color:#ff9800}.noUi-target.slider-danger .noUi-connect,.noUi-target.slider-danger.noUi-connect{background-color:#f44336}.noUi-target.slider-danger .noUi-handle{border-color:#f44336}.noUi-target.slider-rose .noUi-connect,.noUi-target.slider-rose.noUi-connect{background-color:#e91e63}.noUi-target.slider-rose .noUi-handle{border-color:#e91e63}/*! -* https://github.com/YouCanBookMe/react-datetime -*/.rdt{position:relative}.rdt .rdtPicker{-webkit-transition:all 150ms linear;-moz-transition:all 150ms linear;-o-transition:all 150ms linear;-ms-transition:all 150ms linear;transition:all 150ms linear;margin-top:-20px;visibility:hidden;display:block;opacity:0}.rdt.rdtOpen .rdtPicker{opacity:1;visibility:visible;margin-top:0}.rdt input.form-control{border:0;background-image:linear-gradient(#9c27b0, #9c27b0),linear-gradient(#d2d2d2, #d2d2d2);background-size:0 2px, 100% 1px;background-repeat:no-repeat;background-position:center bottom,center calc(100% - 1px);background-color:rgba(0,0,0,0);transition:background 0s ease-out;float:none;box-shadow:none;border-radius:0;font-weight:400;width:100%;height:36px;padding:7px 0;font-size:14px;font-family:"Roboto", "Helvetica", "Arial", sans-serif;font-weight:400;line-height:1.42857;display:block;width:100%;color:#555}.rdt input.form-control:focus{outline:none;background-image:linear-gradient(#9c27b0, #9c27b0),linear-gradient(#d2d2d2, #d2d2d2);background-size:100% 2px, 100% 1px;box-shadow:none;transition-duration:0.3s}.rdtPicker{display:none;position:absolute;width:260px;padding:4px;margin-top:1px;z-index:99999 !important;background:#fff;border-radius:0.125rem;box-shadow:0px 10px 50px 0px rgba(0,0,0,0.2);-webkit-background-clip:padding-box;background-clip:padding-box;min-width:160px}.rdtPicker:before{display:inline-block;position:absolute;width:0;height:0;vertical-align:middle;content:"";top:-5px;left:10px;right:auto;color:#ffffff;border-bottom:0.4em solid;border-right:0.4em solid transparent;border-left:0.4em solid transparent}.rdtPicker:after{border-bottom:0.4em solid #ffffff;border-right:0.4em solid transparent;border-left:0.4em solid transparent;content:"";display:inline-block;position:absolute;top:-5px;left:10px}.rdtPicker{display:block;top:40px}.rdtStatic .rdtPicker{box-shadow:none;position:static}.rdtPicker .rdtTimeToggle{text-align:center;padding:5px;border-radius:4px}.rdtPicker table{width:100%;margin:0;border-color:#fff !important;border-collapse:collapse}.rdtPicker td,.rdtPicker th{text-align:center;padding:1px}.rdtPicker td{cursor:pointer}.rdtDay{height:30px;line-height:33px;width:30px;text-align:center;padding:0px;border-radius:50%}.rdtDay.rdtToday.rdtActive,.rdtDay.rdtActive,.rdtDay.rdtActive:hover{background-color:#9c27b0 !important;color:#fff;box-shadow:0 5px 20px 0px rgba(0,0,0,0.2),0 13px 24px -11px rgba(156,39,176,0.6)}.rdtDays tr .dow{border-bottom:1px solid #e3e3e3;text-align:center;font-size:12px;text-transform:uppercase;font-weight:400;padding-bottom:5px;padding-top:10px}.rdtDays tr .rdtOld,.rdtDays tr .rdtNew{color:#bdbdbd}.rdtPicker td.rdtDay:hover,.rdtPicker td.rdtHour:hover,.rdtPicker td.rdtMinute:hover,.rdtPicker td.rdtSecond:hover,.rdtPicker .rdtTimeToggle:hover{background:#eeeeee;cursor:pointer}.rdtPicker td.rdtToday{position:relative}.rdtPicker td.rdtActive.rdtToday:before{border-bottom-color:#fff}.rdtPicker td.rdtDisabled,.rdtPicker td.rdtDisabled:hover{background:none;color:#999999;cursor:not-allowed}.rdtPicker td span.rdtOld{color:#999999}.rdtPicker td span.rdtDisabled,.rdtPicker td span.rdtDisabled:hover{background:none;color:#999999;cursor:not-allowed}.rdtPicker .dow{width:14.2857%;border-bottom:none}.rdtPicker th.rdtSwitch{width:50px;padding:5px;border-radius:4px}.rdtPicker th.rdtNext,.rdtPicker th.rdtPrev{font-size:21px;vertical-align:top;border-radius:50%;line-height:33px}.rdtPicker .dow,.rdtPicker th.rdtSwitch,.rdtPicker th.rdtNext,.rdtPicker th.rdtPrev,.rdtPicker .rdtTimeToggle{color:#495057}.rdtPicker .rdtTimeToggle{color:#9c27b0}.rdtPicker .rdtTime th.rdtSwitch{color:#9c27b0}.rdtPrev span,.rdtNext span{display:block;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.rdtPicker th.rdtDisabled,.rdtPicker th.rdtDisabled:hover{background:none;color:#999999;cursor:not-allowed}.rdtPicker thead tr:first-child th{cursor:pointer}.rdtPicker thead tr:first-child th:hover{background:#eeeeee}.rdtPicker button{border:none;background:none;cursor:pointer}.rdtPicker button:hover{background-color:#eee}.rdtPicker thead button{width:100%;height:100%}td.rdtMonth,td.rdtYear{height:50px;width:25%;cursor:pointer}td.rdtMonth:hover,td.rdtYear:hover{background:#eee}.rdtCounters{display:inline-block}.rdtCounters>div{float:left;width:40px;font-weight:inherit;margin:3px;border-radius:50%}.rdtCounters .rdtCounterSeparator{width:0;border:1px solid transparent}.rdtCounter{height:100px}.rdtCounter{width:40px}.rdtCounter .rdtCount{padding:7px;height:40px;border:1px solid transparent}.rdtCounters .rdtCounter:last-child .rdtCount{color:#9c27b0;border-radius:50%;border:1px solid #9c27b0}.rdtCounterSeparator{padding:7px;line-height:100px}.rdtCounter .rdtBtn{line-height:40px;cursor:pointer;display:block;border-radius:50%;color:#9c27b0;-webkit-transition:all 60ms ease-in;-moz-transition:all 60ms ease-in;-o-transition:all 60ms ease-in;-ms-transition:all 60ms ease-in;transition:all 60ms ease-in;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.rdtCounter .rdtBtn:hover{background:#eee}.rdtCounter .rdtCount{font-size:inherit;line-height:25px}.rdtMilli{vertical-align:middle;padding-left:8px;width:48px}.rdtMilli input{width:100%;font-size:inherit;margin-top:37px}.rdtMonths,.rdtYears{padding-bottom:10px}.rdtMonths .rdtMonth,.rdtMonths .rdtYear,.rdtYears .rdtMonth,.rdtYears .rdtYear{display:inline-block;width:56px;height:56px;line-height:56px;margin:3px 3px;cursor:pointer;border-radius:50%;text-align:center}.rdtMonths .rdtMonth.rdtActive,.rdtMonths .rdtYear.rdtActive,.rdtYears .rdtMonth.rdtActive,.rdtYears .rdtYear.rdtActive{background-color:#9c27b0 !important;color:#fff}.image-gallery-icon{color:#fff;transition:all .2s ease-out;appearance:none;background-color:transparent;border:0;cursor:pointer;outline:none;position:absolute;z-index:4;filter:drop-shadow(0 2px 2px #1a1a1a)}@media (min-width: 768px){.image-gallery-icon:hover{color:#337ab7}.image-gallery-icon:hover .image-gallery-svg{transform:scale(1.1)}}.image-gallery-icon:focus{outline:2px solid #337ab7}.image-gallery-using-mouse .image-gallery-icon:focus{outline:none}.image-gallery-fullscreen-button,.image-gallery-play-button{bottom:0;padding:20px}.image-gallery-fullscreen-button .image-gallery-svg,.image-gallery-play-button .image-gallery-svg{height:36px;width:36px}@media (max-width: 768px){.image-gallery-fullscreen-button,.image-gallery-play-button{padding:15px}.image-gallery-fullscreen-button .image-gallery-svg,.image-gallery-play-button .image-gallery-svg{height:24px;width:24px}}@media (max-width: 480px){.image-gallery-fullscreen-button,.image-gallery-play-button{padding:10px}.image-gallery-fullscreen-button .image-gallery-svg,.image-gallery-play-button .image-gallery-svg{height:16px;width:16px}}.image-gallery-fullscreen-button{right:0}.image-gallery-play-button{left:0}.image-gallery-left-nav,.image-gallery-right-nav{padding:50px 10px;top:50%;transform:translateY(-50%)}.image-gallery-left-nav .image-gallery-svg,.image-gallery-right-nav .image-gallery-svg{height:120px;width:60px}@media (max-width: 768px){.image-gallery-left-nav .image-gallery-svg,.image-gallery-right-nav .image-gallery-svg{height:72px;width:36px}}@media (max-width: 480px){.image-gallery-left-nav .image-gallery-svg,.image-gallery-right-nav .image-gallery-svg{height:48px;width:24px}}.image-gallery-left-nav[disabled],.image-gallery-right-nav[disabled]{cursor:disabled;opacity:.6;pointer-events:none}.image-gallery-left-nav{left:0}.image-gallery-right-nav{right:0}.image-gallery{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;-webkit-tap-highlight-color:rgba(0,0,0,0);position:relative}.image-gallery.fullscreen-modal{background:#000;bottom:0;height:100%;left:0;position:fixed;right:0;top:0;width:100%;z-index:5}.image-gallery.fullscreen-modal .image-gallery-content{top:50%;transform:translateY(-50%)}.image-gallery-content{position:relative;line-height:0;top:0}.image-gallery-content.fullscreen{background:#000}.image-gallery-content .image-gallery-slide .image-gallery-image{max-height:calc(100vh - 80px)}.image-gallery-content.left .image-gallery-slide .image-gallery-image,.image-gallery-content.right .image-gallery-slide .image-gallery-image{max-height:100vh}.image-gallery-slide-wrapper{position:relative}.image-gallery-slide-wrapper.left,.image-gallery-slide-wrapper.right{display:inline-block;width:calc(100% - 110px)}@media (max-width: 768px){.image-gallery-slide-wrapper.left,.image-gallery-slide-wrapper.right{width:calc(100% - 87px)}}.image-gallery-slide-wrapper.image-gallery-rtl{direction:rtl}.image-gallery-slides{line-height:0;overflow:hidden;position:relative;white-space:nowrap;text-align:center}.image-gallery-slide{left:0;position:absolute;top:0;width:100%}.image-gallery-slide.center{position:relative}.image-gallery-slide .image-gallery-image{width:100%;object-fit:contain}.image-gallery-slide .image-gallery-description{background:rgba(0,0,0,0.4);bottom:70px;color:#fff;left:0;line-height:1;padding:10px 20px;position:absolute;white-space:normal}@media (max-width: 768px){.image-gallery-slide .image-gallery-description{bottom:45px;font-size:.8em;padding:8px 15px}}.image-gallery-bullets{bottom:20px;left:0;margin:0 auto;position:absolute;right:0;width:80%;z-index:4}.image-gallery-bullets .image-gallery-bullets-container{margin:0;padding:0;text-align:center}.image-gallery-bullets .image-gallery-bullet{appearance:none;background-color:transparent;border:1px solid #fff;border-radius:50%;box-shadow:0 1px 0 #1a1a1a;cursor:pointer;display:inline-block;margin:0 5px;outline:none;padding:5px;transition:background .2s ease-out}@media (max-width: 768px){.image-gallery-bullets .image-gallery-bullet{margin:0 3px;padding:3px}}@media (max-width: 480px){.image-gallery-bullets .image-gallery-bullet{padding:2.7px}}.image-gallery-bullets .image-gallery-bullet:focus,.image-gallery-bullets .image-gallery-bullet:hover{background:#337ab7;transform:scale(1.1)}.image-gallery-bullets .image-gallery-bullet.active{background:#fff}.image-gallery-thumbnails-wrapper{position:relative}.image-gallery-thumbnails-wrapper.thumbnails-wrapper-rtl{direction:rtl}.image-gallery-thumbnails-wrapper.left,.image-gallery-thumbnails-wrapper.right{display:inline-block;vertical-align:top;width:100px}@media (max-width: 768px){.image-gallery-thumbnails-wrapper.left,.image-gallery-thumbnails-wrapper.right{width:81px}}.image-gallery-thumbnails-wrapper.left .image-gallery-thumbnails,.image-gallery-thumbnails-wrapper.right .image-gallery-thumbnails{height:100%;width:100%;left:0;padding:0;position:absolute;top:0}.image-gallery-thumbnails-wrapper.left .image-gallery-thumbnails .image-gallery-thumbnail,.image-gallery-thumbnails-wrapper.right .image-gallery-thumbnails .image-gallery-thumbnail{display:block;margin-right:0;padding:0}.image-gallery-thumbnails-wrapper.left .image-gallery-thumbnails .image-gallery-thumbnail+.image-gallery-thumbnail,.image-gallery-thumbnails-wrapper.right .image-gallery-thumbnails .image-gallery-thumbnail+.image-gallery-thumbnail{margin-left:0;margin-top:2px}.image-gallery-thumbnails-wrapper.left,.image-gallery-thumbnails-wrapper.right{margin:0 5px}@media (max-width: 768px){.image-gallery-thumbnails-wrapper.left,.image-gallery-thumbnails-wrapper.right{margin:0 3px}}.image-gallery-thumbnails{overflow:hidden;padding:5px 0}@media (max-width: 768px){.image-gallery-thumbnails{padding:3px 0}}.image-gallery-thumbnails .image-gallery-thumbnails-container{cursor:pointer;text-align:center;transition:transform .45s ease-out;white-space:nowrap}.image-gallery-thumbnail{display:inline-block;border:4px solid transparent;transition:border .3s ease-out;width:100px;background:transparent;padding:0}@media (max-width: 768px){.image-gallery-thumbnail{border:3px solid transparent;width:81px}}.image-gallery-thumbnail+.image-gallery-thumbnail{margin-left:2px}.image-gallery-thumbnail .image-gallery-thumbnail-inner{position:relative}.image-gallery-thumbnail .image-gallery-thumbnail-image{vertical-align:middle;width:100%;line-height:0}.image-gallery-thumbnail.active,.image-gallery-thumbnail:hover,.image-gallery-thumbnail:focus{outline:none;border:4px solid #337ab7}@media (max-width: 768px){.image-gallery-thumbnail.active,.image-gallery-thumbnail:hover,.image-gallery-thumbnail:focus{border:3px solid #337ab7}}.image-gallery-thumbnail-label{box-sizing:border-box;color:white;font-size:1em;left:0;line-height:1em;padding:5%;position:absolute;top:50%;text-shadow:1px 1px 0 black;transform:translateY(-50%);white-space:normal;width:100%}@media (max-width: 768px){.image-gallery-thumbnail-label{font-size:.8em;line-height:.8em}}.image-gallery-index{background:rgba(0,0,0,0.4);color:#fff;line-height:1;padding:10px 20px;position:absolute;right:0;top:0;z-index:4}@media (max-width: 768px){.image-gallery-index{font-size:.8em;padding:5px 10px}}.image-gallery-left-nav,.image-gallery-right-nav{position:absolute;cursor:pointer;z-index:100;opacity:0.5;bottom:-40%;top:auto;padding:0 !important;color:#fff;font-size:5em;outline:none;background-color:transparent;border:0;transform:translateY(-50%)}.image-gallery-left-nav:before,.image-gallery-left-nav:hover:before,.image-gallery-right-nav:before,.image-gallery-right-nav:hover:before{color:#3c4858;text-shadow:none}.image-gallery-left-nav:before,.image-gallery-right-nav:before{font-family:"Material Icons";font-weight:normal;font-style:normal;font-size:24px;line-height:1;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;word-wrap:normal;direction:ltr;-webkit-font-feature-settings:"liga";-webkit-font-smoothing:antialiased}.image-gallery-left-nav{left:-20px}.image-gallery-left-nav::before{content:"chevron_left"}.image-gallery-right-nav{right:-20px}.image-gallery-right-nav::before{content:"chevron_right"}.image-gallery-thumbnail{margin:0px;padding:0px;cursor:pointer;position:relative;line-height:0px;width:125px;border:none !important}.image-gallery-thumbnail+.image-gallery-thumbnail{margin:0 !important}.image-gallery-thumbnail img{max-width:100%;cursor:pointer;position:relative;margin-top:10px;margin-bottom:10px}.image-gallery-thumbnail-label{display:none !important}.image-gallery-thumbnails{padding:0 !important;overflow:hidden;width:100%}.image-gallery-thumbnails-container{position:relative;margin:0px;padding:0px;list-style-type:none;text-align:center}.slick-slider{position:relative;display:block;box-sizing:border-box;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-touch-callout:none;-khtml-user-select:none;-ms-touch-action:pan-y;touch-action:pan-y;-webkit-tap-highlight-color:transparent}@media (min-width: 768px){.slick-slider .slick-caption{display:block !important}}.slick-slider .slick-caption{padding-bottom:45px;position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;color:#ffffff;text-align:center;z-index:3;display:none}.slick-slider .slick-slide>div:first-child{position:relative}.slick-slider .slick-icons{position:relative;top:5px}.slick-slider .slick-image{width:100% !important;display:inline-flex !important}.slick-list{position:relative;display:block;overflow:hidden;margin:0;padding:0}.slick-list:focus{outline:none}.slick-list.dragging{cursor:pointer;cursor:hand}.slick-slider .slick-track,.slick-slider .slick-list{-webkit-transform:translate3d(0, 0, 0);-moz-transform:translate3d(0, 0, 0);-ms-transform:translate3d(0, 0, 0);-o-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0)}.slick-track{position:relative;top:0;left:0;display:block;margin-left:auto;margin-right:auto}.slick-track:before,.slick-track:after{display:table;content:""}.slick-track:after{clear:both}.slick-loading .slick-track{visibility:hidden}.slick-slide{display:none;float:left;height:100%;min-height:1px}[dir="rtl"] .slick-slide{float:right}.slick-slide img{display:block}.slick-slide.slick-loading img{display:none}.slick-slide.dragging img{pointer-events:none}.slick-initialized .slick-slide{display:block}.slick-loading .slick-slide{visibility:hidden}.slick-vertical .slick-slide{display:block;height:auto;border:1px solid transparent}.slick-arrow.slick-hidden{display:none}button.slick-arrow.slick-prev,button.slick-arrow.slick-next{font-size:0;line-height:0;position:absolute;top:50%;display:block;height:100%;padding:0;-ms-transform:translateY(-50%);transform:translateY(-50%);cursor:pointer;border:none;color:transparent;outline:none;background:transparent;width:15%;z-index:2;opacity:0.5}.slick-prev{left:0}.slick-prev::before{content:"\f053";font-weight:600;font-family:Font Awesome\ 5 Free;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1;color:white;font-size:30px;width:100%}.slick-next{right:0}.slick-next::before{content:"\f054";font-weight:600;font-family:Font Awesome\ 5 Free;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1;color:#fff;font-size:30px;width:100%}.slick-list{z-index:1}.slick-dots{margin-top:0;margin-bottom:1rem;position:absolute;bottom:5px;width:100%;padding:0;list-style:none;text-align:center;z-index:3}.slick-dots li,.slick-dots li button{width:20px;height:20px;cursor:pointer}.slick-dots li{position:relative;display:inline-block;margin:0 5px;padding:0}.slick-dots li button{font-size:0;line-height:0;display:block;padding:5px;color:transparent;border:0;outline:none;background:transparent}.slick-dots li button::before{position:absolute;top:0;left:0;width:10px;height:10px;content:"\2022";text-align:center;opacity:1;background-color:#fff;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;box-shadow:0 2px 2px 0 rgba(0,0,0,0.14),0 3px 1px -2px rgba(0,0,0,0.12),0 1px 5px 0 rgba(0,0,0,0.2);border-radius:2px;transition:all 300ms linear}.slick-dots li.slick-active button:before{width:15px;height:15px;box-shadow:0 4px 5px 0 rgba(0,0,0,0.14),0 1px 10px 0 rgba(0,0,0,0.12),0 2px 4px -1px rgba(0,0,0,0.2);top:-3px}.react-tagsinput{display:inline-block;padding:4px 6px;max-width:100%;line-height:22px}.react-tagsinput-tag{cursor:pointer;margin:5px 3px 5px 0;position:relative;padding:3px 8px;border-radius:12px;color:#ffffff;font-weight:500;font-size:0.75em;text-transform:uppercase;display:inline-block;line-height:1.5em;padding-left:0.8em}.react-tagsinput-remove{cursor:pointer;font-weight:bold}.react-tagsinput-tag a::before{font-family:Font Awesome\ 5 Free;content:"\f00d";padding:0px 2px;font-weight:900}.react-tagsinput-tag a{cursor:pointer;position:absolute;top:3px;right:0px;opacity:0;background-color:transparent;color:#ffffff}.react-tagsinput-input{background:transparent;border:0;color:#777;font-family:sans-serif;font-size:13px;font-weight:400;margin-bottom:6px;margin-top:1px;outline:none;padding:5px;width:80px}.react-tagsinput .react-tagsinput-tag{-webkit-transition:all 300ms ease 0s;-moz-transition:all 300ms ease 0s;-o-transition:all 300ms ease 0s;-ms-transition:all 300ms ease 0s;transition:all 300ms ease 0s;background-color:#999}.react-tagsinput .react-tagsinput-tag:hover{padding-right:22px}.react-tagsinput .react-tagsinput-tag:hover a{opacity:1;padding-right:4px;background-color:transparent;color:#ffffff}.react-tagsinput .react-tagsinput-tag.primary{background-color:#9c27b0}.react-tagsinput .react-tagsinput-tag.info{background-color:#00bcd4}.react-tagsinput .react-tagsinput-tag.success{background-color:#4caf50}.react-tagsinput .react-tagsinput-tag.warning{background-color:#ff9800}.react-tagsinput .react-tagsinput-tag.danger{background-color:#f44336}.react-tagsinput .react-tagsinput-tag.rose{background-color:#e91e63}.react-tagsinput .react-tagsinput-tag.default{background-color:#999} diff --git a/src/assets/img/apple-icon.png b/src/assets/img/apple-icon.png deleted file mode 100644 index 394e37502..000000000 Binary files a/src/assets/img/apple-icon.png and /dev/null differ diff --git a/src/assets/img/arrow-left.cur b/src/assets/img/arrow-left.cur deleted file mode 100644 index 7325694e5..000000000 Binary files a/src/assets/img/arrow-left.cur and /dev/null differ diff --git a/src/assets/img/arrow-left.png b/src/assets/img/arrow-left.png deleted file mode 100644 index a606fd9f5..000000000 Binary files a/src/assets/img/arrow-left.png and /dev/null differ diff --git a/src/assets/img/arrow-right.cur b/src/assets/img/arrow-right.cur deleted file mode 100644 index f74dff01c..000000000 Binary files a/src/assets/img/arrow-right.cur and /dev/null differ diff --git a/src/assets/img/arrow-right.png b/src/assets/img/arrow-right.png deleted file mode 100644 index 328d75025..000000000 Binary files a/src/assets/img/arrow-right.png and /dev/null differ diff --git a/src/assets/img/assets-for-demo/cards-test.png b/src/assets/img/assets-for-demo/cards-test.png deleted file mode 100644 index 7b8ffc68b..000000000 Binary files a/src/assets/img/assets-for-demo/cards-test.png and /dev/null differ diff --git a/src/assets/img/assets-for-demo/example-pages/ex-about-us.jpg b/src/assets/img/assets-for-demo/example-pages/ex-about-us.jpg deleted file mode 100644 index 02647c96a..000000000 Binary files a/src/assets/img/assets-for-demo/example-pages/ex-about-us.jpg and /dev/null differ diff --git a/src/assets/img/assets-for-demo/example-pages/ex-blog-post.jpg b/src/assets/img/assets-for-demo/example-pages/ex-blog-post.jpg deleted file mode 100644 index bb5490937..000000000 Binary files a/src/assets/img/assets-for-demo/example-pages/ex-blog-post.jpg and /dev/null differ diff --git a/src/assets/img/assets-for-demo/example-pages/ex-blog-posts.jpg b/src/assets/img/assets-for-demo/example-pages/ex-blog-posts.jpg deleted file mode 100644 index 785c3aa42..000000000 Binary files a/src/assets/img/assets-for-demo/example-pages/ex-blog-posts.jpg and /dev/null differ diff --git a/src/assets/img/assets-for-demo/example-pages/ex-contact.jpg b/src/assets/img/assets-for-demo/example-pages/ex-contact.jpg deleted file mode 100644 index bed2581ff..000000000 Binary files a/src/assets/img/assets-for-demo/example-pages/ex-contact.jpg and /dev/null differ diff --git a/src/assets/img/assets-for-demo/example-pages/ex-landing.jpg b/src/assets/img/assets-for-demo/example-pages/ex-landing.jpg deleted file mode 100644 index 2fe04209a..000000000 Binary files a/src/assets/img/assets-for-demo/example-pages/ex-landing.jpg and /dev/null differ diff --git a/src/assets/img/assets-for-demo/example-pages/ex-login.jpg b/src/assets/img/assets-for-demo/example-pages/ex-login.jpg deleted file mode 100644 index ab95e8e97..000000000 Binary files a/src/assets/img/assets-for-demo/example-pages/ex-login.jpg and /dev/null differ diff --git a/src/assets/img/assets-for-demo/example-pages/ex-pricing.jpg b/src/assets/img/assets-for-demo/example-pages/ex-pricing.jpg deleted file mode 100644 index 6bc463a2b..000000000 Binary files a/src/assets/img/assets-for-demo/example-pages/ex-pricing.jpg and /dev/null differ diff --git a/src/assets/img/assets-for-demo/example-pages/ex-product.jpg b/src/assets/img/assets-for-demo/example-pages/ex-product.jpg deleted file mode 100644 index a325e3399..000000000 Binary files a/src/assets/img/assets-for-demo/example-pages/ex-product.jpg and /dev/null differ diff --git a/src/assets/img/assets-for-demo/example-pages/ex-profile.jpg b/src/assets/img/assets-for-demo/example-pages/ex-profile.jpg deleted file mode 100644 index 76eab2793..000000000 Binary files a/src/assets/img/assets-for-demo/example-pages/ex-profile.jpg and /dev/null differ diff --git a/src/assets/img/assets-for-demo/example-pages/ex-register.jpg b/src/assets/img/assets-for-demo/example-pages/ex-register.jpg deleted file mode 100644 index 3ece36919..000000000 Binary files a/src/assets/img/assets-for-demo/example-pages/ex-register.jpg and /dev/null differ diff --git a/src/assets/img/assets-for-demo/features-5.jpg b/src/assets/img/assets-for-demo/features-5.jpg deleted file mode 100644 index b378b3811..000000000 Binary files a/src/assets/img/assets-for-demo/features-5.jpg and /dev/null differ diff --git a/src/assets/img/assets-for-demo/ourClients/harvard.jpg b/src/assets/img/assets-for-demo/ourClients/harvard.jpg deleted file mode 100644 index cec45ec1d..000000000 Binary files a/src/assets/img/assets-for-demo/ourClients/harvard.jpg and /dev/null differ diff --git a/src/assets/img/assets-for-demo/ourClients/microsoft.jpg b/src/assets/img/assets-for-demo/ourClients/microsoft.jpg deleted file mode 100644 index 1fe1c7ecc..000000000 Binary files a/src/assets/img/assets-for-demo/ourClients/microsoft.jpg and /dev/null differ diff --git a/src/assets/img/assets-for-demo/ourClients/stanford.jpg b/src/assets/img/assets-for-demo/ourClients/stanford.jpg deleted file mode 100644 index 2df562f3d..000000000 Binary files a/src/assets/img/assets-for-demo/ourClients/stanford.jpg and /dev/null differ diff --git a/src/assets/img/assets-for-demo/ourClients/vodafone.jpg b/src/assets/img/assets-for-demo/ourClients/vodafone.jpg deleted file mode 100644 index 5aab03871..000000000 Binary files a/src/assets/img/assets-for-demo/ourClients/vodafone.jpg and /dev/null differ diff --git a/src/assets/img/assets-for-demo/presentationViewSectionComponent/coloured-card-with-btn.jpg b/src/assets/img/assets-for-demo/presentationViewSectionComponent/coloured-card-with-btn.jpg deleted file mode 100644 index 2e8926433..000000000 Binary files a/src/assets/img/assets-for-demo/presentationViewSectionComponent/coloured-card-with-btn.jpg and /dev/null differ diff --git a/src/assets/img/assets-for-demo/presentationViewSectionComponent/coloured-card.jpg b/src/assets/img/assets-for-demo/presentationViewSectionComponent/coloured-card.jpg deleted file mode 100644 index d626c6cf2..000000000 Binary files a/src/assets/img/assets-for-demo/presentationViewSectionComponent/coloured-card.jpg and /dev/null differ diff --git a/src/assets/img/assets-for-demo/presentationViewSectionComponent/ipad-comments.jpg b/src/assets/img/assets-for-demo/presentationViewSectionComponent/ipad-comments.jpg deleted file mode 100644 index 4ae9350fb..000000000 Binary files a/src/assets/img/assets-for-demo/presentationViewSectionComponent/ipad-comments.jpg and /dev/null differ diff --git a/src/assets/img/assets-for-demo/presentationViewSectionComponent/ipad-table.jpg b/src/assets/img/assets-for-demo/presentationViewSectionComponent/ipad-table.jpg deleted file mode 100644 index 2eb432e57..000000000 Binary files a/src/assets/img/assets-for-demo/presentationViewSectionComponent/ipad-table.jpg and /dev/null differ diff --git a/src/assets/img/assets-for-demo/presentationViewSectionComponent/laptop-basics.png b/src/assets/img/assets-for-demo/presentationViewSectionComponent/laptop-basics.png deleted file mode 100644 index 5b4b8ff05..000000000 Binary files a/src/assets/img/assets-for-demo/presentationViewSectionComponent/laptop-basics.png and /dev/null differ diff --git a/src/assets/img/assets-for-demo/presentationViewSectionComponent/pin-btn.jpg b/src/assets/img/assets-for-demo/presentationViewSectionComponent/pin-btn.jpg deleted file mode 100644 index b57d4fda5..000000000 Binary files a/src/assets/img/assets-for-demo/presentationViewSectionComponent/pin-btn.jpg and /dev/null differ diff --git a/src/assets/img/assets-for-demo/presentationViewSectionComponent/presentation-ipad.jpg b/src/assets/img/assets-for-demo/presentationViewSectionComponent/presentation-ipad.jpg deleted file mode 100644 index 9481525d0..000000000 Binary files a/src/assets/img/assets-for-demo/presentationViewSectionComponent/presentation-ipad.jpg and /dev/null differ diff --git a/src/assets/img/assets-for-demo/presentationViewSectionComponent/responsive.png b/src/assets/img/assets-for-demo/presentationViewSectionComponent/responsive.png deleted file mode 100644 index 134154041..000000000 Binary files a/src/assets/img/assets-for-demo/presentationViewSectionComponent/responsive.png and /dev/null differ diff --git a/src/assets/img/assets-for-demo/presentationViewSectionComponent/share-btn.jpg b/src/assets/img/assets-for-demo/presentationViewSectionComponent/share-btn.jpg deleted file mode 100644 index 08e6615ff..000000000 Binary files a/src/assets/img/assets-for-demo/presentationViewSectionComponent/share-btn.jpg and /dev/null differ diff --git a/src/assets/img/assets-for-demo/presentationViewSectionComponent/social-row.jpg b/src/assets/img/assets-for-demo/presentationViewSectionComponent/social-row.jpg deleted file mode 100644 index 8cfa38acf..000000000 Binary files a/src/assets/img/assets-for-demo/presentationViewSectionComponent/social-row.jpg and /dev/null differ diff --git a/src/assets/img/assets-for-demo/presentationViewSectionComponent/table.jpg b/src/assets/img/assets-for-demo/presentationViewSectionComponent/table.jpg deleted file mode 100644 index 66dc65d6e..000000000 Binary files a/src/assets/img/assets-for-demo/presentationViewSectionComponent/table.jpg and /dev/null differ diff --git a/src/assets/img/assets-for-demo/sections/b_1.jpg b/src/assets/img/assets-for-demo/sections/b_1.jpg deleted file mode 100644 index 6a322b193..000000000 Binary files a/src/assets/img/assets-for-demo/sections/b_1.jpg and /dev/null differ diff --git a/src/assets/img/assets-for-demo/sections/b_2.jpg b/src/assets/img/assets-for-demo/sections/b_2.jpg deleted file mode 100644 index 2847ea283..000000000 Binary files a/src/assets/img/assets-for-demo/sections/b_2.jpg and /dev/null differ diff --git a/src/assets/img/assets-for-demo/sections/b_3.jpg b/src/assets/img/assets-for-demo/sections/b_3.jpg deleted file mode 100644 index 7a3428f94..000000000 Binary files a/src/assets/img/assets-for-demo/sections/b_3.jpg and /dev/null differ diff --git a/src/assets/img/assets-for-demo/sections/b_4.jpg b/src/assets/img/assets-for-demo/sections/b_4.jpg deleted file mode 100644 index 9d3acbb13..000000000 Binary files a/src/assets/img/assets-for-demo/sections/b_4.jpg and /dev/null differ diff --git a/src/assets/img/assets-for-demo/sections/f_1.jpg b/src/assets/img/assets-for-demo/sections/f_1.jpg deleted file mode 100644 index d1f9bd37a..000000000 Binary files a/src/assets/img/assets-for-demo/sections/f_1.jpg and /dev/null differ diff --git a/src/assets/img/assets-for-demo/sections/f_2.jpg b/src/assets/img/assets-for-demo/sections/f_2.jpg deleted file mode 100644 index 4f477a6a8..000000000 Binary files a/src/assets/img/assets-for-demo/sections/f_2.jpg and /dev/null differ diff --git a/src/assets/img/assets-for-demo/sections/f_3.jpg b/src/assets/img/assets-for-demo/sections/f_3.jpg deleted file mode 100644 index 7594f4929..000000000 Binary files a/src/assets/img/assets-for-demo/sections/f_3.jpg and /dev/null differ diff --git a/src/assets/img/assets-for-demo/sections/f_4.jpg b/src/assets/img/assets-for-demo/sections/f_4.jpg deleted file mode 100644 index 4f5475d4f..000000000 Binary files a/src/assets/img/assets-for-demo/sections/f_4.jpg and /dev/null differ diff --git a/src/assets/img/assets-for-demo/sections/f_5.jpg b/src/assets/img/assets-for-demo/sections/f_5.jpg deleted file mode 100644 index c8171daf9..000000000 Binary files a/src/assets/img/assets-for-demo/sections/f_5.jpg and /dev/null differ diff --git a/src/assets/img/assets-for-demo/sections/h_1.jpg b/src/assets/img/assets-for-demo/sections/h_1.jpg deleted file mode 100644 index bd0d3728e..000000000 Binary files a/src/assets/img/assets-for-demo/sections/h_1.jpg and /dev/null differ diff --git a/src/assets/img/assets-for-demo/sections/h_2.jpg b/src/assets/img/assets-for-demo/sections/h_2.jpg deleted file mode 100644 index d3cd9bc70..000000000 Binary files a/src/assets/img/assets-for-demo/sections/h_2.jpg and /dev/null differ diff --git a/src/assets/img/assets-for-demo/sections/h_3.jpg b/src/assets/img/assets-for-demo/sections/h_3.jpg deleted file mode 100644 index dda78db4a..000000000 Binary files a/src/assets/img/assets-for-demo/sections/h_3.jpg and /dev/null differ diff --git a/src/assets/img/assets-for-demo/sections/h_4.jpg b/src/assets/img/assets-for-demo/sections/h_4.jpg deleted file mode 100644 index f9ca1840f..000000000 Binary files a/src/assets/img/assets-for-demo/sections/h_4.jpg and /dev/null differ diff --git a/src/assets/img/assets-for-demo/sections/imgs.js b/src/assets/img/assets-for-demo/sections/imgs.js deleted file mode 100644 index d83d3f58b..000000000 --- a/src/assets/img/assets-for-demo/sections/imgs.js +++ /dev/null @@ -1,12 +0,0 @@ -const imgs = [ - ["h_1", "h_2", "h_3", "h_4"], - ["f_1", "f_2", "f_3", "f_4"], - ["f_5", "b_2", "b_3", "b_4"], - ["b_1", "p_2", "p_3", "p_4"], - ["p_5", "p_1", "pro_2", "pro_3"], - ["m_1", "pro_1", "t_2", "t_3"], - ["team_5", "team_1", "team_2", "team_3"], - ["t_1", "team_4", "pro_4", "m_2"] -]; - -export default imgs; diff --git a/src/assets/img/assets-for-demo/sections/m_1.jpg b/src/assets/img/assets-for-demo/sections/m_1.jpg deleted file mode 100644 index 270426b77..000000000 Binary files a/src/assets/img/assets-for-demo/sections/m_1.jpg and /dev/null differ diff --git a/src/assets/img/assets-for-demo/sections/m_2.jpg b/src/assets/img/assets-for-demo/sections/m_2.jpg deleted file mode 100644 index 064b17670..000000000 Binary files a/src/assets/img/assets-for-demo/sections/m_2.jpg and /dev/null differ diff --git a/src/assets/img/assets-for-demo/sections/p_1.jpg b/src/assets/img/assets-for-demo/sections/p_1.jpg deleted file mode 100644 index 99aeafe77..000000000 Binary files a/src/assets/img/assets-for-demo/sections/p_1.jpg and /dev/null differ diff --git a/src/assets/img/assets-for-demo/sections/p_2.jpg b/src/assets/img/assets-for-demo/sections/p_2.jpg deleted file mode 100644 index 042ab3298..000000000 Binary files a/src/assets/img/assets-for-demo/sections/p_2.jpg and /dev/null differ diff --git a/src/assets/img/assets-for-demo/sections/p_3.jpg b/src/assets/img/assets-for-demo/sections/p_3.jpg deleted file mode 100644 index f16c8188e..000000000 Binary files a/src/assets/img/assets-for-demo/sections/p_3.jpg and /dev/null differ diff --git a/src/assets/img/assets-for-demo/sections/p_4.jpg b/src/assets/img/assets-for-demo/sections/p_4.jpg deleted file mode 100644 index b14849c07..000000000 Binary files a/src/assets/img/assets-for-demo/sections/p_4.jpg and /dev/null differ diff --git a/src/assets/img/assets-for-demo/sections/p_5.jpg b/src/assets/img/assets-for-demo/sections/p_5.jpg deleted file mode 100644 index 9acb3b31a..000000000 Binary files a/src/assets/img/assets-for-demo/sections/p_5.jpg and /dev/null differ diff --git a/src/assets/img/assets-for-demo/sections/pro_1.jpg b/src/assets/img/assets-for-demo/sections/pro_1.jpg deleted file mode 100644 index 24fc9e5f1..000000000 Binary files a/src/assets/img/assets-for-demo/sections/pro_1.jpg and /dev/null differ diff --git a/src/assets/img/assets-for-demo/sections/pro_2.jpg b/src/assets/img/assets-for-demo/sections/pro_2.jpg deleted file mode 100644 index ff45ed441..000000000 Binary files a/src/assets/img/assets-for-demo/sections/pro_2.jpg and /dev/null differ diff --git a/src/assets/img/assets-for-demo/sections/pro_3.jpg b/src/assets/img/assets-for-demo/sections/pro_3.jpg deleted file mode 100644 index 220eda80f..000000000 Binary files a/src/assets/img/assets-for-demo/sections/pro_3.jpg and /dev/null differ diff --git a/src/assets/img/assets-for-demo/sections/pro_4.jpg b/src/assets/img/assets-for-demo/sections/pro_4.jpg deleted file mode 100644 index 9c466dfec..000000000 Binary files a/src/assets/img/assets-for-demo/sections/pro_4.jpg and /dev/null differ diff --git a/src/assets/img/assets-for-demo/sections/t_1.jpg b/src/assets/img/assets-for-demo/sections/t_1.jpg deleted file mode 100644 index 8c7a778ac..000000000 Binary files a/src/assets/img/assets-for-demo/sections/t_1.jpg and /dev/null differ diff --git a/src/assets/img/assets-for-demo/sections/t_2.jpg b/src/assets/img/assets-for-demo/sections/t_2.jpg deleted file mode 100644 index 1d76bfd71..000000000 Binary files a/src/assets/img/assets-for-demo/sections/t_2.jpg and /dev/null differ diff --git a/src/assets/img/assets-for-demo/sections/t_3.jpg b/src/assets/img/assets-for-demo/sections/t_3.jpg deleted file mode 100644 index dbc7b870c..000000000 Binary files a/src/assets/img/assets-for-demo/sections/t_3.jpg and /dev/null differ diff --git a/src/assets/img/assets-for-demo/sections/team_1.jpg b/src/assets/img/assets-for-demo/sections/team_1.jpg deleted file mode 100644 index c17a3f822..000000000 Binary files a/src/assets/img/assets-for-demo/sections/team_1.jpg and /dev/null differ diff --git a/src/assets/img/assets-for-demo/sections/team_2.jpg b/src/assets/img/assets-for-demo/sections/team_2.jpg deleted file mode 100644 index c18139f42..000000000 Binary files a/src/assets/img/assets-for-demo/sections/team_2.jpg and /dev/null differ diff --git a/src/assets/img/assets-for-demo/sections/team_3.jpg b/src/assets/img/assets-for-demo/sections/team_3.jpg deleted file mode 100644 index a3aef6c43..000000000 Binary files a/src/assets/img/assets-for-demo/sections/team_3.jpg and /dev/null differ diff --git a/src/assets/img/assets-for-demo/sections/team_4.jpg b/src/assets/img/assets-for-demo/sections/team_4.jpg deleted file mode 100644 index b0465885c..000000000 Binary files a/src/assets/img/assets-for-demo/sections/team_4.jpg and /dev/null differ diff --git a/src/assets/img/assets-for-demo/sections/team_5.jpg b/src/assets/img/assets-for-demo/sections/team_5.jpg deleted file mode 100644 index 1f088e9ab..000000000 Binary files a/src/assets/img/assets-for-demo/sections/team_5.jpg and /dev/null differ diff --git a/src/assets/img/assets-for-demo/test1.jpg b/src/assets/img/assets-for-demo/test1.jpg deleted file mode 100644 index 983be32e5..000000000 Binary files a/src/assets/img/assets-for-demo/test1.jpg and /dev/null differ diff --git a/src/assets/img/assets-for-demo/test2.jpg b/src/assets/img/assets-for-demo/test2.jpg deleted file mode 100644 index ecdcc2f92..000000000 Binary files a/src/assets/img/assets-for-demo/test2.jpg and /dev/null differ diff --git a/src/assets/img/assets-for-demo/test3.jpg b/src/assets/img/assets-for-demo/test3.jpg deleted file mode 100644 index 43804999a..000000000 Binary files a/src/assets/img/assets-for-demo/test3.jpg and /dev/null differ diff --git a/src/assets/img/beefy.svg b/src/assets/img/beefy.svg new file mode 100644 index 000000000..350aab2a7 --- /dev/null +++ b/src/assets/img/beefy.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/img/bg.jpg b/src/assets/img/bg.jpg deleted file mode 100644 index c78e68f05..000000000 Binary files a/src/assets/img/bg.jpg and /dev/null differ diff --git a/src/assets/img/bg0.jpg b/src/assets/img/bg0.jpg deleted file mode 100644 index f6e76d742..000000000 Binary files a/src/assets/img/bg0.jpg and /dev/null differ diff --git a/src/assets/img/bg10.jpg b/src/assets/img/bg10.jpg deleted file mode 100644 index e57ac8a92..000000000 Binary files a/src/assets/img/bg10.jpg and /dev/null differ diff --git a/src/assets/img/bg11.jpg b/src/assets/img/bg11.jpg deleted file mode 100644 index 7eb273b2d..000000000 Binary files a/src/assets/img/bg11.jpg and /dev/null differ diff --git a/src/assets/img/bg12.jpg b/src/assets/img/bg12.jpg deleted file mode 100644 index c4ba5df83..000000000 Binary files a/src/assets/img/bg12.jpg and /dev/null differ diff --git a/src/assets/img/bg2.jpg b/src/assets/img/bg2.jpg deleted file mode 100644 index 233bb7d44..000000000 Binary files a/src/assets/img/bg2.jpg and /dev/null differ diff --git a/src/assets/img/bg3.jpg b/src/assets/img/bg3.jpg deleted file mode 100644 index 8d204ac22..000000000 Binary files a/src/assets/img/bg3.jpg and /dev/null differ diff --git a/src/assets/img/bg4.jpg b/src/assets/img/bg4.jpg deleted file mode 100644 index 9292df205..000000000 Binary files a/src/assets/img/bg4.jpg and /dev/null differ diff --git a/src/assets/img/bg5.jpg b/src/assets/img/bg5.jpg deleted file mode 100644 index 7f480f309..000000000 Binary files a/src/assets/img/bg5.jpg and /dev/null differ diff --git a/src/assets/img/bg6.jpg b/src/assets/img/bg6.jpg deleted file mode 100644 index 88c5247ed..000000000 Binary files a/src/assets/img/bg6.jpg and /dev/null differ diff --git a/src/assets/img/bg7.jpg b/src/assets/img/bg7.jpg deleted file mode 100644 index 8b4fe4213..000000000 Binary files a/src/assets/img/bg7.jpg and /dev/null differ diff --git a/src/assets/img/bg8.jpg b/src/assets/img/bg8.jpg deleted file mode 100644 index 967451d2f..000000000 Binary files a/src/assets/img/bg8.jpg and /dev/null differ diff --git a/src/assets/img/bg9.jpg b/src/assets/img/bg9.jpg deleted file mode 100644 index 929a0bace..000000000 Binary files a/src/assets/img/bg9.jpg and /dev/null differ diff --git a/src/assets/img/clint-mckoy.jpg b/src/assets/img/clint-mckoy.jpg deleted file mode 100644 index ac0753599..000000000 Binary files a/src/assets/img/clint-mckoy.jpg and /dev/null differ diff --git a/src/assets/img/dg1.jpg b/src/assets/img/dg1.jpg deleted file mode 100644 index 7ef22be8e..000000000 Binary files a/src/assets/img/dg1.jpg and /dev/null differ diff --git a/src/assets/img/dg10.jpg b/src/assets/img/dg10.jpg deleted file mode 100644 index 326b1844d..000000000 Binary files a/src/assets/img/dg10.jpg and /dev/null differ diff --git a/src/assets/img/dg2.jpg b/src/assets/img/dg2.jpg deleted file mode 100644 index 8bbfb4da0..000000000 Binary files a/src/assets/img/dg2.jpg and /dev/null differ diff --git a/src/assets/img/dg3.jpg b/src/assets/img/dg3.jpg deleted file mode 100644 index 10fda5471..000000000 Binary files a/src/assets/img/dg3.jpg and /dev/null differ diff --git a/src/assets/img/dg6.jpg b/src/assets/img/dg6.jpg deleted file mode 100644 index 45dd1addc..000000000 Binary files a/src/assets/img/dg6.jpg and /dev/null differ diff --git a/src/assets/img/dg9.jpg b/src/assets/img/dg9.jpg deleted file mode 100644 index 20ca7d0d4..000000000 Binary files a/src/assets/img/dg9.jpg and /dev/null differ diff --git a/src/assets/img/examples/bg2.jpg b/src/assets/img/examples/bg2.jpg deleted file mode 100644 index a191122df..000000000 Binary files a/src/assets/img/examples/bg2.jpg and /dev/null differ diff --git a/src/assets/img/examples/blog1.jpg b/src/assets/img/examples/blog1.jpg deleted file mode 100644 index 6c5e3f258..000000000 Binary files a/src/assets/img/examples/blog1.jpg and /dev/null differ diff --git a/src/assets/img/examples/blog2.jpg b/src/assets/img/examples/blog2.jpg deleted file mode 100644 index 2e42361fe..000000000 Binary files a/src/assets/img/examples/blog2.jpg and /dev/null differ diff --git a/src/assets/img/examples/blog3.jpg b/src/assets/img/examples/blog3.jpg deleted file mode 100644 index 4a5c79d72..000000000 Binary files a/src/assets/img/examples/blog3.jpg and /dev/null differ diff --git a/src/assets/img/examples/blog4.jpg b/src/assets/img/examples/blog4.jpg deleted file mode 100644 index 188025ca9..000000000 Binary files a/src/assets/img/examples/blog4.jpg and /dev/null differ diff --git a/src/assets/img/examples/blog5.jpg b/src/assets/img/examples/blog5.jpg deleted file mode 100644 index e8a67fe01..000000000 Binary files a/src/assets/img/examples/blog5.jpg and /dev/null differ diff --git a/src/assets/img/examples/blog6.jpg b/src/assets/img/examples/blog6.jpg deleted file mode 100644 index 8a06cd093..000000000 Binary files a/src/assets/img/examples/blog6.jpg and /dev/null differ diff --git a/src/assets/img/examples/blog7.jpg b/src/assets/img/examples/blog7.jpg deleted file mode 100644 index 5499bece7..000000000 Binary files a/src/assets/img/examples/blog7.jpg and /dev/null differ diff --git a/src/assets/img/examples/blog8.jpg b/src/assets/img/examples/blog8.jpg deleted file mode 100644 index 64e6cac81..000000000 Binary files a/src/assets/img/examples/blog8.jpg and /dev/null differ diff --git a/src/assets/img/examples/card-blog1.jpg b/src/assets/img/examples/card-blog1.jpg deleted file mode 100644 index 1fc25dac4..000000000 Binary files a/src/assets/img/examples/card-blog1.jpg and /dev/null differ diff --git a/src/assets/img/examples/card-blog2.jpg b/src/assets/img/examples/card-blog2.jpg deleted file mode 100644 index d73c056c9..000000000 Binary files a/src/assets/img/examples/card-blog2.jpg and /dev/null differ diff --git a/src/assets/img/examples/card-blog3.jpg b/src/assets/img/examples/card-blog3.jpg deleted file mode 100644 index 75af03fdc..000000000 Binary files a/src/assets/img/examples/card-blog3.jpg and /dev/null differ diff --git a/src/assets/img/examples/card-blog4.jpg b/src/assets/img/examples/card-blog4.jpg deleted file mode 100644 index e5ec1ed4a..000000000 Binary files a/src/assets/img/examples/card-blog4.jpg and /dev/null differ diff --git a/src/assets/img/examples/card-blog5.jpg b/src/assets/img/examples/card-blog5.jpg deleted file mode 100644 index ca5827c78..000000000 Binary files a/src/assets/img/examples/card-blog5.jpg and /dev/null differ diff --git a/src/assets/img/examples/card-blog6.jpg b/src/assets/img/examples/card-blog6.jpg deleted file mode 100644 index 4bfee8a7d..000000000 Binary files a/src/assets/img/examples/card-blog6.jpg and /dev/null differ diff --git a/src/assets/img/examples/card-blog8.jpg b/src/assets/img/examples/card-blog8.jpg deleted file mode 100644 index ef9072d60..000000000 Binary files a/src/assets/img/examples/card-blog8.jpg and /dev/null differ diff --git a/src/assets/img/examples/card-product1.jpg b/src/assets/img/examples/card-product1.jpg deleted file mode 100644 index c3be7926a..000000000 Binary files a/src/assets/img/examples/card-product1.jpg and /dev/null differ diff --git a/src/assets/img/examples/card-product2.jpg b/src/assets/img/examples/card-product2.jpg deleted file mode 100644 index 0eabb8b64..000000000 Binary files a/src/assets/img/examples/card-product2.jpg and /dev/null differ diff --git a/src/assets/img/examples/card-product3.jpg b/src/assets/img/examples/card-product3.jpg deleted file mode 100644 index 4fd0c1a22..000000000 Binary files a/src/assets/img/examples/card-product3.jpg and /dev/null differ diff --git a/src/assets/img/examples/card-product4.jpg b/src/assets/img/examples/card-product4.jpg deleted file mode 100644 index 41359cb17..000000000 Binary files a/src/assets/img/examples/card-product4.jpg and /dev/null differ diff --git a/src/assets/img/examples/card-profile1.jpg b/src/assets/img/examples/card-profile1.jpg deleted file mode 100644 index edaf03732..000000000 Binary files a/src/assets/img/examples/card-profile1.jpg and /dev/null differ diff --git a/src/assets/img/examples/card-profile2.jpg b/src/assets/img/examples/card-profile2.jpg deleted file mode 100644 index b6ad7b3ff..000000000 Binary files a/src/assets/img/examples/card-profile2.jpg and /dev/null differ diff --git a/src/assets/img/examples/card-profile4.jpg b/src/assets/img/examples/card-profile4.jpg deleted file mode 100644 index 92a4dc301..000000000 Binary files a/src/assets/img/examples/card-profile4.jpg and /dev/null differ diff --git a/src/assets/img/examples/card-profile5.jpg b/src/assets/img/examples/card-profile5.jpg deleted file mode 100644 index 01c405256..000000000 Binary files a/src/assets/img/examples/card-profile5.jpg and /dev/null differ diff --git a/src/assets/img/examples/card-profile6.jpg b/src/assets/img/examples/card-profile6.jpg deleted file mode 100644 index f45aab1bb..000000000 Binary files a/src/assets/img/examples/card-profile6.jpg and /dev/null differ diff --git a/src/assets/img/examples/card-profile7.jpg b/src/assets/img/examples/card-profile7.jpg deleted file mode 100644 index fbd8ea675..000000000 Binary files a/src/assets/img/examples/card-profile7.jpg and /dev/null differ diff --git a/src/assets/img/examples/card-project1.jpg b/src/assets/img/examples/card-project1.jpg deleted file mode 100644 index 0f42ff6ac..000000000 Binary files a/src/assets/img/examples/card-project1.jpg and /dev/null differ diff --git a/src/assets/img/examples/card-project2.jpg b/src/assets/img/examples/card-project2.jpg deleted file mode 100644 index e7100d218..000000000 Binary files a/src/assets/img/examples/card-project2.jpg and /dev/null differ diff --git a/src/assets/img/examples/card-project3.jpg b/src/assets/img/examples/card-project3.jpg deleted file mode 100644 index fd35ce6d8..000000000 Binary files a/src/assets/img/examples/card-project3.jpg and /dev/null differ diff --git a/src/assets/img/examples/card-project4.jpg b/src/assets/img/examples/card-project4.jpg deleted file mode 100644 index b6e2f564b..000000000 Binary files a/src/assets/img/examples/card-project4.jpg and /dev/null differ diff --git a/src/assets/img/examples/card-project5.jpg b/src/assets/img/examples/card-project5.jpg deleted file mode 100644 index 02ff33c56..000000000 Binary files a/src/assets/img/examples/card-project5.jpg and /dev/null differ diff --git a/src/assets/img/examples/card-project6.jpg b/src/assets/img/examples/card-project6.jpg deleted file mode 100644 index 0c1f11994..000000000 Binary files a/src/assets/img/examples/card-project6.jpg and /dev/null differ diff --git a/src/assets/img/examples/city.jpg b/src/assets/img/examples/city.jpg deleted file mode 100644 index 6092b3e96..000000000 Binary files a/src/assets/img/examples/city.jpg and /dev/null differ diff --git a/src/assets/img/examples/clark-street-merc.jpg b/src/assets/img/examples/clark-street-merc.jpg deleted file mode 100644 index d3692275b..000000000 Binary files a/src/assets/img/examples/clark-street-merc.jpg and /dev/null differ diff --git a/src/assets/img/examples/clem-onojegaw.jpg b/src/assets/img/examples/clem-onojegaw.jpg deleted file mode 100644 index b10ddc015..000000000 Binary files a/src/assets/img/examples/clem-onojegaw.jpg and /dev/null differ diff --git a/src/assets/img/examples/clem-onojeghuo.jpg b/src/assets/img/examples/clem-onojeghuo.jpg deleted file mode 100644 index 9493db30f..000000000 Binary files a/src/assets/img/examples/clem-onojeghuo.jpg and /dev/null differ diff --git a/src/assets/img/examples/clem-onojeghuou.jpg b/src/assets/img/examples/clem-onojeghuou.jpg deleted file mode 100644 index 84e448c99..000000000 Binary files a/src/assets/img/examples/clem-onojeghuou.jpg and /dev/null differ diff --git a/src/assets/img/examples/color1.jpg b/src/assets/img/examples/color1.jpg deleted file mode 100644 index f726aea95..000000000 Binary files a/src/assets/img/examples/color1.jpg and /dev/null differ diff --git a/src/assets/img/examples/color2.jpg b/src/assets/img/examples/color2.jpg deleted file mode 100644 index 435f1c8af..000000000 Binary files a/src/assets/img/examples/color2.jpg and /dev/null differ diff --git a/src/assets/img/examples/color3.jpg b/src/assets/img/examples/color3.jpg deleted file mode 100644 index f81539b46..000000000 Binary files a/src/assets/img/examples/color3.jpg and /dev/null differ diff --git a/src/assets/img/examples/cynthia-del-rio.jpg b/src/assets/img/examples/cynthia-del-rio.jpg deleted file mode 100644 index 3f51a91f6..000000000 Binary files a/src/assets/img/examples/cynthia-del-rio.jpg and /dev/null differ diff --git a/src/assets/img/examples/darren-coleshill.jpg b/src/assets/img/examples/darren-coleshill.jpg deleted file mode 100644 index d05d31d07..000000000 Binary files a/src/assets/img/examples/darren-coleshill.jpg and /dev/null differ diff --git a/src/assets/img/examples/dolce.jpg b/src/assets/img/examples/dolce.jpg deleted file mode 100644 index 676c5af69..000000000 Binary files a/src/assets/img/examples/dolce.jpg and /dev/null differ diff --git a/src/assets/img/examples/ecommerce-header.jpg b/src/assets/img/examples/ecommerce-header.jpg deleted file mode 100644 index 93dfe7e24..000000000 Binary files a/src/assets/img/examples/ecommerce-header.jpg and /dev/null differ diff --git a/src/assets/img/examples/ecommerce-tips2.jpg b/src/assets/img/examples/ecommerce-tips2.jpg deleted file mode 100644 index 632f3d330..000000000 Binary files a/src/assets/img/examples/ecommerce-tips2.jpg and /dev/null differ diff --git a/src/assets/img/examples/gucci.jpg b/src/assets/img/examples/gucci.jpg deleted file mode 100644 index b68310be6..000000000 Binary files a/src/assets/img/examples/gucci.jpg and /dev/null differ diff --git a/src/assets/img/examples/mariya-georgieva.jpg b/src/assets/img/examples/mariya-georgieva.jpg deleted file mode 100644 index ca07e451b..000000000 Binary files a/src/assets/img/examples/mariya-georgieva.jpg and /dev/null differ diff --git a/src/assets/img/examples/office1.jpg b/src/assets/img/examples/office1.jpg deleted file mode 100644 index 6c40b35e3..000000000 Binary files a/src/assets/img/examples/office1.jpg and /dev/null differ diff --git a/src/assets/img/examples/office2.jpg b/src/assets/img/examples/office2.jpg deleted file mode 100644 index afa2be461..000000000 Binary files a/src/assets/img/examples/office2.jpg and /dev/null differ diff --git a/src/assets/img/examples/office3.jpg b/src/assets/img/examples/office3.jpg deleted file mode 100644 index 487621fe0..000000000 Binary files a/src/assets/img/examples/office3.jpg and /dev/null differ diff --git a/src/assets/img/examples/office4.jpg b/src/assets/img/examples/office4.jpg deleted file mode 100644 index af87e3ad8..000000000 Binary files a/src/assets/img/examples/office4.jpg and /dev/null differ diff --git a/src/assets/img/examples/office5.jpg b/src/assets/img/examples/office5.jpg deleted file mode 100644 index d54349ae9..000000000 Binary files a/src/assets/img/examples/office5.jpg and /dev/null differ diff --git a/src/assets/img/examples/olu-eletu.jpg b/src/assets/img/examples/olu-eletu.jpg deleted file mode 100644 index 1c7290b41..000000000 Binary files a/src/assets/img/examples/olu-eletu.jpg and /dev/null differ diff --git a/src/assets/img/examples/product1.jpg b/src/assets/img/examples/product1.jpg deleted file mode 100644 index ee37367bd..000000000 Binary files a/src/assets/img/examples/product1.jpg and /dev/null differ diff --git a/src/assets/img/examples/product2.jpg b/src/assets/img/examples/product2.jpg deleted file mode 100644 index aa61937eb..000000000 Binary files a/src/assets/img/examples/product2.jpg and /dev/null differ diff --git a/src/assets/img/examples/product3.jpg b/src/assets/img/examples/product3.jpg deleted file mode 100644 index 1e4029eb0..000000000 Binary files a/src/assets/img/examples/product3.jpg and /dev/null differ diff --git a/src/assets/img/examples/product4.jpg b/src/assets/img/examples/product4.jpg deleted file mode 100644 index e4894716b..000000000 Binary files a/src/assets/img/examples/product4.jpg and /dev/null differ diff --git a/src/assets/img/examples/profile_city.jpg b/src/assets/img/examples/profile_city.jpg deleted file mode 100644 index e74b32cb8..000000000 Binary files a/src/assets/img/examples/profile_city.jpg and /dev/null differ diff --git a/src/assets/img/examples/slim-emcee-ug-the-poet-truth_from_africa_photography.jpg b/src/assets/img/examples/slim-emcee-ug-the-poet-truth_from_africa_photography.jpg deleted file mode 100644 index 21b4c4eb2..000000000 Binary files a/src/assets/img/examples/slim-emcee-ug-the-poet-truth_from_africa_photography.jpg and /dev/null differ diff --git a/src/assets/img/examples/studio-1.jpg b/src/assets/img/examples/studio-1.jpg deleted file mode 100644 index e43371c89..000000000 Binary files a/src/assets/img/examples/studio-1.jpg and /dev/null differ diff --git a/src/assets/img/examples/studio-2.jpg b/src/assets/img/examples/studio-2.jpg deleted file mode 100644 index a430d4dab..000000000 Binary files a/src/assets/img/examples/studio-2.jpg and /dev/null differ diff --git a/src/assets/img/examples/studio-3.jpg b/src/assets/img/examples/studio-3.jpg deleted file mode 100644 index 795057740..000000000 Binary files a/src/assets/img/examples/studio-3.jpg and /dev/null differ diff --git a/src/assets/img/examples/studio-4.jpg b/src/assets/img/examples/studio-4.jpg deleted file mode 100644 index d7d58aa1a..000000000 Binary files a/src/assets/img/examples/studio-4.jpg and /dev/null differ diff --git a/src/assets/img/examples/studio-5.jpg b/src/assets/img/examples/studio-5.jpg deleted file mode 100644 index 7554551ab..000000000 Binary files a/src/assets/img/examples/studio-5.jpg and /dev/null differ diff --git a/src/assets/img/examples/suit-1.jpg b/src/assets/img/examples/suit-1.jpg deleted file mode 100644 index 78557f98c..000000000 Binary files a/src/assets/img/examples/suit-1.jpg and /dev/null differ diff --git a/src/assets/img/examples/suit-2.jpg b/src/assets/img/examples/suit-2.jpg deleted file mode 100644 index 78805c639..000000000 Binary files a/src/assets/img/examples/suit-2.jpg and /dev/null differ diff --git a/src/assets/img/examples/suit-3.jpg b/src/assets/img/examples/suit-3.jpg deleted file mode 100644 index c97a346db..000000000 Binary files a/src/assets/img/examples/suit-3.jpg and /dev/null differ diff --git a/src/assets/img/examples/suit-4.jpg b/src/assets/img/examples/suit-4.jpg deleted file mode 100644 index 596a74c79..000000000 Binary files a/src/assets/img/examples/suit-4.jpg and /dev/null differ diff --git a/src/assets/img/examples/suit-5.jpg b/src/assets/img/examples/suit-5.jpg deleted file mode 100644 index bfc74d874..000000000 Binary files a/src/assets/img/examples/suit-5.jpg and /dev/null differ diff --git a/src/assets/img/examples/suit-6.jpg b/src/assets/img/examples/suit-6.jpg deleted file mode 100644 index 96caafe59..000000000 Binary files a/src/assets/img/examples/suit-6.jpg and /dev/null differ diff --git a/src/assets/img/examples/tom-ford.jpg b/src/assets/img/examples/tom-ford.jpg deleted file mode 100644 index 877077ce2..000000000 Binary files a/src/assets/img/examples/tom-ford.jpg and /dev/null differ diff --git a/src/assets/img/faces/avatar.jpg b/src/assets/img/faces/avatar.jpg deleted file mode 100644 index 73ca9b4f4..000000000 Binary files a/src/assets/img/faces/avatar.jpg and /dev/null differ diff --git a/src/assets/img/faces/camp.jpg b/src/assets/img/faces/camp.jpg deleted file mode 100644 index 0f7a87058..000000000 Binary files a/src/assets/img/faces/camp.jpg and /dev/null differ diff --git a/src/assets/img/faces/card-profile1-square.jpg b/src/assets/img/faces/card-profile1-square.jpg deleted file mode 100644 index 06591dc4a..000000000 Binary files a/src/assets/img/faces/card-profile1-square.jpg and /dev/null differ diff --git a/src/assets/img/faces/card-profile2-square.jpg b/src/assets/img/faces/card-profile2-square.jpg deleted file mode 100644 index e222b9fda..000000000 Binary files a/src/assets/img/faces/card-profile2-square.jpg and /dev/null differ diff --git a/src/assets/img/faces/card-profile4-square.jpg b/src/assets/img/faces/card-profile4-square.jpg deleted file mode 100644 index 706c3f864..000000000 Binary files a/src/assets/img/faces/card-profile4-square.jpg and /dev/null differ diff --git a/src/assets/img/faces/card-profile5-square.jpg b/src/assets/img/faces/card-profile5-square.jpg deleted file mode 100644 index 577000eed..000000000 Binary files a/src/assets/img/faces/card-profile5-square.jpg and /dev/null differ diff --git a/src/assets/img/faces/card-profile6-square.jpg b/src/assets/img/faces/card-profile6-square.jpg deleted file mode 100644 index b78ee9580..000000000 Binary files a/src/assets/img/faces/card-profile6-square.jpg and /dev/null differ diff --git a/src/assets/img/faces/christian.jpg b/src/assets/img/faces/christian.jpg deleted file mode 100644 index e5a0bfca9..000000000 Binary files a/src/assets/img/faces/christian.jpg and /dev/null differ diff --git a/src/assets/img/faces/kendall.jpg b/src/assets/img/faces/kendall.jpg deleted file mode 100644 index cfa0189c5..000000000 Binary files a/src/assets/img/faces/kendall.jpg and /dev/null differ diff --git a/src/assets/img/faces/marc.jpg b/src/assets/img/faces/marc.jpg deleted file mode 100644 index 80afe6b2f..000000000 Binary files a/src/assets/img/faces/marc.jpg and /dev/null differ diff --git a/src/assets/img/favicon.png b/src/assets/img/favicon.png deleted file mode 100644 index 1d7462694..000000000 Binary files a/src/assets/img/favicon.png and /dev/null differ diff --git a/src/assets/img/flags/AD.png b/src/assets/img/flags/AD.png deleted file mode 100644 index 524f95344..000000000 Binary files a/src/assets/img/flags/AD.png and /dev/null differ diff --git a/src/assets/img/flags/AE.png b/src/assets/img/flags/AE.png deleted file mode 100644 index 5fec21b62..000000000 Binary files a/src/assets/img/flags/AE.png and /dev/null differ diff --git a/src/assets/img/flags/AG.png b/src/assets/img/flags/AG.png deleted file mode 100644 index 7cd3b6dbb..000000000 Binary files a/src/assets/img/flags/AG.png and /dev/null differ diff --git a/src/assets/img/flags/AM.png b/src/assets/img/flags/AM.png deleted file mode 100644 index 4fa71a599..000000000 Binary files a/src/assets/img/flags/AM.png and /dev/null differ diff --git a/src/assets/img/flags/AR.png b/src/assets/img/flags/AR.png deleted file mode 100644 index b1c4bf05b..000000000 Binary files a/src/assets/img/flags/AR.png and /dev/null differ diff --git a/src/assets/img/flags/AT.png b/src/assets/img/flags/AT.png deleted file mode 100644 index a5e9e89ab..000000000 Binary files a/src/assets/img/flags/AT.png and /dev/null differ diff --git a/src/assets/img/flags/AU.png b/src/assets/img/flags/AU.png deleted file mode 100644 index 2f00fc6d6..000000000 Binary files a/src/assets/img/flags/AU.png and /dev/null differ diff --git a/src/assets/img/flags/BE.png b/src/assets/img/flags/BE.png deleted file mode 100644 index 967036fd7..000000000 Binary files a/src/assets/img/flags/BE.png and /dev/null differ diff --git a/src/assets/img/flags/BF.png b/src/assets/img/flags/BF.png deleted file mode 100644 index 2a234292c..000000000 Binary files a/src/assets/img/flags/BF.png and /dev/null differ diff --git a/src/assets/img/flags/BG.png b/src/assets/img/flags/BG.png deleted file mode 100644 index d547e65be..000000000 Binary files a/src/assets/img/flags/BG.png and /dev/null differ diff --git a/src/assets/img/flags/BO.png b/src/assets/img/flags/BO.png deleted file mode 100644 index f686957eb..000000000 Binary files a/src/assets/img/flags/BO.png and /dev/null differ diff --git a/src/assets/img/flags/BR.png b/src/assets/img/flags/BR.png deleted file mode 100644 index 9b3a52a30..000000000 Binary files a/src/assets/img/flags/BR.png and /dev/null differ diff --git a/src/assets/img/flags/CA.png b/src/assets/img/flags/CA.png deleted file mode 100644 index 7c4e6710e..000000000 Binary files a/src/assets/img/flags/CA.png and /dev/null differ diff --git a/src/assets/img/flags/CD.png b/src/assets/img/flags/CD.png deleted file mode 100644 index 12314487a..000000000 Binary files a/src/assets/img/flags/CD.png and /dev/null differ diff --git a/src/assets/img/flags/CG.png b/src/assets/img/flags/CG.png deleted file mode 100644 index 0aa805675..000000000 Binary files a/src/assets/img/flags/CG.png and /dev/null differ diff --git a/src/assets/img/flags/CH.png b/src/assets/img/flags/CH.png deleted file mode 100644 index b5b1d4cce..000000000 Binary files a/src/assets/img/flags/CH.png and /dev/null differ diff --git a/src/assets/img/flags/CL.png b/src/assets/img/flags/CL.png deleted file mode 100644 index 0e0331ba3..000000000 Binary files a/src/assets/img/flags/CL.png and /dev/null differ diff --git a/src/assets/img/flags/CM.png b/src/assets/img/flags/CM.png deleted file mode 100644 index 695e9c06c..000000000 Binary files a/src/assets/img/flags/CM.png and /dev/null differ diff --git a/src/assets/img/flags/CN.png b/src/assets/img/flags/CN.png deleted file mode 100644 index ee0fb0356..000000000 Binary files a/src/assets/img/flags/CN.png and /dev/null differ diff --git a/src/assets/img/flags/CO.png b/src/assets/img/flags/CO.png deleted file mode 100644 index 993381308..000000000 Binary files a/src/assets/img/flags/CO.png and /dev/null differ diff --git a/src/assets/img/flags/CZ.png b/src/assets/img/flags/CZ.png deleted file mode 100644 index be8692203..000000000 Binary files a/src/assets/img/flags/CZ.png and /dev/null differ diff --git a/src/assets/img/flags/DE.png b/src/assets/img/flags/DE.png deleted file mode 100644 index 2d703c632..000000000 Binary files a/src/assets/img/flags/DE.png and /dev/null differ diff --git a/src/assets/img/flags/DJ.png b/src/assets/img/flags/DJ.png deleted file mode 100644 index d827a9e3f..000000000 Binary files a/src/assets/img/flags/DJ.png and /dev/null differ diff --git a/src/assets/img/flags/DK.png b/src/assets/img/flags/DK.png deleted file mode 100644 index e0225bdf8..000000000 Binary files a/src/assets/img/flags/DK.png and /dev/null differ diff --git a/src/assets/img/flags/DZ.png b/src/assets/img/flags/DZ.png deleted file mode 100644 index aa4dc019b..000000000 Binary files a/src/assets/img/flags/DZ.png and /dev/null differ diff --git a/src/assets/img/flags/EE.png b/src/assets/img/flags/EE.png deleted file mode 100644 index a7225ab9e..000000000 Binary files a/src/assets/img/flags/EE.png and /dev/null differ diff --git a/src/assets/img/flags/EG.png b/src/assets/img/flags/EG.png deleted file mode 100644 index 64ff703f6..000000000 Binary files a/src/assets/img/flags/EG.png and /dev/null differ diff --git a/src/assets/img/flags/ES.png b/src/assets/img/flags/ES.png deleted file mode 100644 index 119da0017..000000000 Binary files a/src/assets/img/flags/ES.png and /dev/null differ diff --git a/src/assets/img/flags/FI.png b/src/assets/img/flags/FI.png deleted file mode 100644 index 6237f6066..000000000 Binary files a/src/assets/img/flags/FI.png and /dev/null differ diff --git a/src/assets/img/flags/FR.png b/src/assets/img/flags/FR.png deleted file mode 100644 index f05e7cd9c..000000000 Binary files a/src/assets/img/flags/FR.png and /dev/null differ diff --git a/src/assets/img/flags/GA.png b/src/assets/img/flags/GA.png deleted file mode 100644 index 81a7fcbc7..000000000 Binary files a/src/assets/img/flags/GA.png and /dev/null differ diff --git a/src/assets/img/flags/GB.png b/src/assets/img/flags/GB.png deleted file mode 100644 index 2fac557e7..000000000 Binary files a/src/assets/img/flags/GB.png and /dev/null differ diff --git a/src/assets/img/flags/GM.png b/src/assets/img/flags/GM.png deleted file mode 100644 index 4e06e310c..000000000 Binary files a/src/assets/img/flags/GM.png and /dev/null differ diff --git a/src/assets/img/flags/GT.png b/src/assets/img/flags/GT.png deleted file mode 100644 index ede809fb7..000000000 Binary files a/src/assets/img/flags/GT.png and /dev/null differ diff --git a/src/assets/img/flags/HN.png b/src/assets/img/flags/HN.png deleted file mode 100644 index 38124b37a..000000000 Binary files a/src/assets/img/flags/HN.png and /dev/null differ diff --git a/src/assets/img/flags/HT.png b/src/assets/img/flags/HT.png deleted file mode 100644 index 733e2a996..000000000 Binary files a/src/assets/img/flags/HT.png and /dev/null differ diff --git a/src/assets/img/flags/HU.png b/src/assets/img/flags/HU.png deleted file mode 100644 index 435353e1e..000000000 Binary files a/src/assets/img/flags/HU.png and /dev/null differ diff --git a/src/assets/img/flags/ID.png b/src/assets/img/flags/ID.png deleted file mode 100644 index afdedf19d..000000000 Binary files a/src/assets/img/flags/ID.png and /dev/null differ diff --git a/src/assets/img/flags/IE.png b/src/assets/img/flags/IE.png deleted file mode 100644 index 959a5fb16..000000000 Binary files a/src/assets/img/flags/IE.png and /dev/null differ diff --git a/src/assets/img/flags/IL.png b/src/assets/img/flags/IL.png deleted file mode 100644 index e16344863..000000000 Binary files a/src/assets/img/flags/IL.png and /dev/null differ diff --git a/src/assets/img/flags/IN.png b/src/assets/img/flags/IN.png deleted file mode 100644 index e0ae1fe1a..000000000 Binary files a/src/assets/img/flags/IN.png and /dev/null differ diff --git a/src/assets/img/flags/IQ.png b/src/assets/img/flags/IQ.png deleted file mode 100644 index 69494b323..000000000 Binary files a/src/assets/img/flags/IQ.png and /dev/null differ diff --git a/src/assets/img/flags/IR.png b/src/assets/img/flags/IR.png deleted file mode 100644 index b162b829f..000000000 Binary files a/src/assets/img/flags/IR.png and /dev/null differ diff --git a/src/assets/img/flags/IT.png b/src/assets/img/flags/IT.png deleted file mode 100644 index 253430fda..000000000 Binary files a/src/assets/img/flags/IT.png and /dev/null differ diff --git a/src/assets/img/flags/JM.png b/src/assets/img/flags/JM.png deleted file mode 100644 index 9fe49955d..000000000 Binary files a/src/assets/img/flags/JM.png and /dev/null differ diff --git a/src/assets/img/flags/JO.png b/src/assets/img/flags/JO.png deleted file mode 100644 index 68e3309e1..000000000 Binary files a/src/assets/img/flags/JO.png and /dev/null differ diff --git a/src/assets/img/flags/JP.png b/src/assets/img/flags/JP.png deleted file mode 100644 index bb6aaf7f7..000000000 Binary files a/src/assets/img/flags/JP.png and /dev/null differ diff --git a/src/assets/img/flags/KG.png b/src/assets/img/flags/KG.png deleted file mode 100644 index fa2898ab1..000000000 Binary files a/src/assets/img/flags/KG.png and /dev/null differ diff --git a/src/assets/img/flags/KN.png b/src/assets/img/flags/KN.png deleted file mode 100644 index a617109f0..000000000 Binary files a/src/assets/img/flags/KN.png and /dev/null differ diff --git a/src/assets/img/flags/KP.png b/src/assets/img/flags/KP.png deleted file mode 100644 index 87e78adc0..000000000 Binary files a/src/assets/img/flags/KP.png and /dev/null differ diff --git a/src/assets/img/flags/KR.png b/src/assets/img/flags/KR.png deleted file mode 100644 index 3bccaefbf..000000000 Binary files a/src/assets/img/flags/KR.png and /dev/null differ diff --git a/src/assets/img/flags/KW.png b/src/assets/img/flags/KW.png deleted file mode 100644 index 3538eda51..000000000 Binary files a/src/assets/img/flags/KW.png and /dev/null differ diff --git a/src/assets/img/flags/KZ.png b/src/assets/img/flags/KZ.png deleted file mode 100644 index 3414e1126..000000000 Binary files a/src/assets/img/flags/KZ.png and /dev/null differ diff --git a/src/assets/img/flags/LA.png b/src/assets/img/flags/LA.png deleted file mode 100644 index a01a9b83b..000000000 Binary files a/src/assets/img/flags/LA.png and /dev/null differ diff --git a/src/assets/img/flags/LB.png b/src/assets/img/flags/LB.png deleted file mode 100644 index bb992a2cf..000000000 Binary files a/src/assets/img/flags/LB.png and /dev/null differ diff --git a/src/assets/img/flags/LC.png b/src/assets/img/flags/LC.png deleted file mode 100644 index 2b553737b..000000000 Binary files a/src/assets/img/flags/LC.png and /dev/null differ diff --git a/src/assets/img/flags/LS.png b/src/assets/img/flags/LS.png deleted file mode 100644 index 41ca62931..000000000 Binary files a/src/assets/img/flags/LS.png and /dev/null differ diff --git a/src/assets/img/flags/LU.png b/src/assets/img/flags/LU.png deleted file mode 100644 index 2b7d13810..000000000 Binary files a/src/assets/img/flags/LU.png and /dev/null differ diff --git a/src/assets/img/flags/LV.png b/src/assets/img/flags/LV.png deleted file mode 100644 index ceb56f404..000000000 Binary files a/src/assets/img/flags/LV.png and /dev/null differ diff --git a/src/assets/img/flags/MG.png b/src/assets/img/flags/MG.png deleted file mode 100644 index f863c7c78..000000000 Binary files a/src/assets/img/flags/MG.png and /dev/null differ diff --git a/src/assets/img/flags/MK.png b/src/assets/img/flags/MK.png deleted file mode 100644 index c9b5f5be2..000000000 Binary files a/src/assets/img/flags/MK.png and /dev/null differ diff --git a/src/assets/img/flags/ML.png b/src/assets/img/flags/ML.png deleted file mode 100644 index 6760baafc..000000000 Binary files a/src/assets/img/flags/ML.png and /dev/null differ diff --git a/src/assets/img/flags/MM.png b/src/assets/img/flags/MM.png deleted file mode 100644 index 93da2c1dd..000000000 Binary files a/src/assets/img/flags/MM.png and /dev/null differ diff --git a/src/assets/img/flags/MT.png b/src/assets/img/flags/MT.png deleted file mode 100644 index 7b1214d16..000000000 Binary files a/src/assets/img/flags/MT.png and /dev/null differ diff --git a/src/assets/img/flags/MX.png b/src/assets/img/flags/MX.png deleted file mode 100644 index cd79fd1be..000000000 Binary files a/src/assets/img/flags/MX.png and /dev/null differ diff --git a/src/assets/img/flags/NA.png b/src/assets/img/flags/NA.png deleted file mode 100644 index fb7e7f337..000000000 Binary files a/src/assets/img/flags/NA.png and /dev/null differ diff --git a/src/assets/img/flags/NE.png b/src/assets/img/flags/NE.png deleted file mode 100644 index d96175dc0..000000000 Binary files a/src/assets/img/flags/NE.png and /dev/null differ diff --git a/src/assets/img/flags/NG.png b/src/assets/img/flags/NG.png deleted file mode 100644 index 3d86540ea..000000000 Binary files a/src/assets/img/flags/NG.png and /dev/null differ diff --git a/src/assets/img/flags/NI.png b/src/assets/img/flags/NI.png deleted file mode 100644 index cfc9203ce..000000000 Binary files a/src/assets/img/flags/NI.png and /dev/null differ diff --git a/src/assets/img/flags/NL.png b/src/assets/img/flags/NL.png deleted file mode 100644 index 8c417abfe..000000000 Binary files a/src/assets/img/flags/NL.png and /dev/null differ diff --git a/src/assets/img/flags/NO.png b/src/assets/img/flags/NO.png deleted file mode 100644 index 67fb45947..000000000 Binary files a/src/assets/img/flags/NO.png and /dev/null differ diff --git a/src/assets/img/flags/OM.png b/src/assets/img/flags/OM.png deleted file mode 100644 index 84b0dcc59..000000000 Binary files a/src/assets/img/flags/OM.png and /dev/null differ diff --git a/src/assets/img/flags/PA.png b/src/assets/img/flags/PA.png deleted file mode 100644 index d4a4dfd73..000000000 Binary files a/src/assets/img/flags/PA.png and /dev/null differ diff --git a/src/assets/img/flags/PE.png b/src/assets/img/flags/PE.png deleted file mode 100644 index 72c5defec..000000000 Binary files a/src/assets/img/flags/PE.png and /dev/null differ diff --git a/src/assets/img/flags/PG.png b/src/assets/img/flags/PG.png deleted file mode 100644 index c05a8b790..000000000 Binary files a/src/assets/img/flags/PG.png and /dev/null differ diff --git a/src/assets/img/flags/PK.png b/src/assets/img/flags/PK.png deleted file mode 100644 index d980137f4..000000000 Binary files a/src/assets/img/flags/PK.png and /dev/null differ diff --git a/src/assets/img/flags/PL.png b/src/assets/img/flags/PL.png deleted file mode 100644 index 2c3696eba..000000000 Binary files a/src/assets/img/flags/PL.png and /dev/null differ diff --git a/src/assets/img/flags/PT.png b/src/assets/img/flags/PT.png deleted file mode 100644 index 3e26e3d67..000000000 Binary files a/src/assets/img/flags/PT.png and /dev/null differ diff --git a/src/assets/img/flags/PY.png b/src/assets/img/flags/PY.png deleted file mode 100644 index 026c68a5f..000000000 Binary files a/src/assets/img/flags/PY.png and /dev/null differ diff --git a/src/assets/img/flags/QA.png b/src/assets/img/flags/QA.png deleted file mode 100644 index 9f104f60f..000000000 Binary files a/src/assets/img/flags/QA.png and /dev/null differ diff --git a/src/assets/img/flags/RO.png b/src/assets/img/flags/RO.png deleted file mode 100644 index b8aadbbf4..000000000 Binary files a/src/assets/img/flags/RO.png and /dev/null differ diff --git a/src/assets/img/flags/RU.png b/src/assets/img/flags/RU.png deleted file mode 100644 index a43f65c8c..000000000 Binary files a/src/assets/img/flags/RU.png and /dev/null differ diff --git a/src/assets/img/flags/RW.png b/src/assets/img/flags/RW.png deleted file mode 100644 index 06d3695cd..000000000 Binary files a/src/assets/img/flags/RW.png and /dev/null differ diff --git a/src/assets/img/flags/SA.png b/src/assets/img/flags/SA.png deleted file mode 100644 index e08470af8..000000000 Binary files a/src/assets/img/flags/SA.png and /dev/null differ diff --git a/src/assets/img/flags/SE.png b/src/assets/img/flags/SE.png deleted file mode 100644 index 88d541425..000000000 Binary files a/src/assets/img/flags/SE.png and /dev/null differ diff --git a/src/assets/img/flags/SG.png b/src/assets/img/flags/SG.png deleted file mode 100644 index 9aca01183..000000000 Binary files a/src/assets/img/flags/SG.png and /dev/null differ diff --git a/src/assets/img/flags/SL.png b/src/assets/img/flags/SL.png deleted file mode 100644 index cc94d0c49..000000000 Binary files a/src/assets/img/flags/SL.png and /dev/null differ diff --git a/src/assets/img/flags/SN.png b/src/assets/img/flags/SN.png deleted file mode 100644 index bbf29daae..000000000 Binary files a/src/assets/img/flags/SN.png and /dev/null differ diff --git a/src/assets/img/flags/SO.png b/src/assets/img/flags/SO.png deleted file mode 100644 index a84b91a5f..000000000 Binary files a/src/assets/img/flags/SO.png and /dev/null differ diff --git a/src/assets/img/flags/SV.png b/src/assets/img/flags/SV.png deleted file mode 100644 index 56bb0dd89..000000000 Binary files a/src/assets/img/flags/SV.png and /dev/null differ diff --git a/src/assets/img/flags/TD.png b/src/assets/img/flags/TD.png deleted file mode 100644 index 8f16cf18b..000000000 Binary files a/src/assets/img/flags/TD.png and /dev/null differ diff --git a/src/assets/img/flags/TJ.png b/src/assets/img/flags/TJ.png deleted file mode 100644 index bda6bb027..000000000 Binary files a/src/assets/img/flags/TJ.png and /dev/null differ diff --git a/src/assets/img/flags/TL.png b/src/assets/img/flags/TL.png deleted file mode 100644 index f043a2b9c..000000000 Binary files a/src/assets/img/flags/TL.png and /dev/null differ diff --git a/src/assets/img/flags/TR.png b/src/assets/img/flags/TR.png deleted file mode 100644 index f62ddad57..000000000 Binary files a/src/assets/img/flags/TR.png and /dev/null differ diff --git a/src/assets/img/flags/TZ.png b/src/assets/img/flags/TZ.png deleted file mode 100644 index e154751a7..000000000 Binary files a/src/assets/img/flags/TZ.png and /dev/null differ diff --git a/src/assets/img/flags/UA.png b/src/assets/img/flags/UA.png deleted file mode 100644 index e52fcd547..000000000 Binary files a/src/assets/img/flags/UA.png and /dev/null differ diff --git a/src/assets/img/flags/US.png b/src/assets/img/flags/US.png deleted file mode 100644 index 43636ff91..000000000 Binary files a/src/assets/img/flags/US.png and /dev/null differ diff --git a/src/assets/img/flags/VE.png b/src/assets/img/flags/VE.png deleted file mode 100644 index 3f5b104a4..000000000 Binary files a/src/assets/img/flags/VE.png and /dev/null differ diff --git a/src/assets/img/flags/VN.png b/src/assets/img/flags/VN.png deleted file mode 100644 index d4c8990ae..000000000 Binary files a/src/assets/img/flags/VN.png and /dev/null differ diff --git a/src/assets/img/flags/YE.png b/src/assets/img/flags/YE.png deleted file mode 100644 index e83b74788..000000000 Binary files a/src/assets/img/flags/YE.png and /dev/null differ diff --git a/src/assets/img/image_placeholder.jpg b/src/assets/img/image_placeholder.jpg deleted file mode 100644 index e446a7e2e..000000000 Binary files a/src/assets/img/image_placeholder.jpg and /dev/null differ diff --git a/src/assets/img/loading-bubbles.svg b/src/assets/img/loading-bubbles.svg deleted file mode 100755 index 504a3120c..000000000 --- a/src/assets/img/loading-bubbles.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/assets/img/logo.png b/src/assets/img/logo.png deleted file mode 100644 index ba963e73c..000000000 Binary files a/src/assets/img/logo.png and /dev/null differ diff --git a/src/assets/img/office2.jpg b/src/assets/img/office2.jpg deleted file mode 100644 index 84c92d413..000000000 Binary files a/src/assets/img/office2.jpg and /dev/null differ diff --git a/src/assets/img/placeholder.jpg b/src/assets/img/placeholder.jpg deleted file mode 100644 index 38c68ced3..000000000 Binary files a/src/assets/img/placeholder.jpg and /dev/null differ diff --git a/src/assets/img/product1.jpg b/src/assets/img/product1.jpg deleted file mode 100644 index e5f540194..000000000 Binary files a/src/assets/img/product1.jpg and /dev/null differ diff --git a/src/assets/img/product2.jpg b/src/assets/img/product2.jpg deleted file mode 100644 index 74ea7f157..000000000 Binary files a/src/assets/img/product2.jpg and /dev/null differ diff --git a/src/assets/img/product3.jpg b/src/assets/img/product3.jpg deleted file mode 100644 index 49123c1a3..000000000 Binary files a/src/assets/img/product3.jpg and /dev/null differ diff --git a/src/assets/img/sections/iphone.png b/src/assets/img/sections/iphone.png deleted file mode 100644 index b5c040988..000000000 Binary files a/src/assets/img/sections/iphone.png and /dev/null differ diff --git a/src/assets/img/sections/iphone2.png b/src/assets/img/sections/iphone2.png deleted file mode 100644 index eacf3507e..000000000 Binary files a/src/assets/img/sections/iphone2.png and /dev/null differ diff --git a/src/assets/img/stake-head-left.png b/src/assets/img/stake-head-left.png deleted file mode 100644 index ae7dc9036..000000000 Binary files a/src/assets/img/stake-head-left.png and /dev/null differ diff --git a/src/assets/img/stake-head-right.png b/src/assets/img/stake-head-right.png deleted file mode 100644 index 545c92093..000000000 Binary files a/src/assets/img/stake-head-right.png and /dev/null differ diff --git a/src/assets/jss/material-kit-pro-react.js b/src/assets/jss/material-kit-pro-react.js index 47c7f2f99..6f78e6940 100644 --- a/src/assets/jss/material-kit-pro-react.js +++ b/src/assets/jss/material-kit-pro-react.js @@ -1,20 +1,3 @@ -/*! - -========================================================= -* Material Kit PRO React - v1.9.0 -========================================================= - -* Product Page: https://www.creative-tim.com/product/material-kit-pro-react -* Copyright 2020 Creative Tim (https://www.creative-tim.com) - -* Coded by Creative Tim - -========================================================= - -* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -*/ - // ############################## // // // Function that converts from hex color to rgb color // // // Example: input = #9c27b0 => output = 156, 39, 176 @@ -23,11 +6,11 @@ // // // Example: input = 999 => output = 153, 153, 153 // ############################# const hexToRgb = input => { - input = input + ""; - input = input.replace("#", ""); + input = input + ''; + input = input.replace('#', ''); let hexRegex = /[0-9A-Fa-f]/g; if (!hexRegex.test(input) || (input.length !== 3 && input.length !== 6)) { - throw new Error("input is not a valid hex color."); + throw new Error('input is not a valid hex color.'); } if (input.length === 3) { let first = input[0]; @@ -39,418 +22,148 @@ const hexToRgb = input => { let first = input[0] + input[1]; let second = input[2] + input[3]; let last = input[4] + input[5]; - return ( - parseInt(first, 16) + - ", " + - parseInt(second, 16) + - ", " + - parseInt(last, 16) - ); + return parseInt(first, 16) + ', ' + parseInt(second, 16) + ', ' + parseInt(last, 16); }; // ############################## // // // Variables - Styles that are used on more than one component // ############################# -const drawerWidth = 260; - -const primaryColor = [ - "#ff2d82", - "#9c27b0", - "#ab47bc", - "#8e24aa", - "#af2cc5", - "#e1bee7", - "#ba68c8" -]; +const primaryColor = ['#000000', '#B9AEA5']; +const hoverColor = ['#EFE6DC']; - -const hoverColor = [ - "#ff5b9e", - "#404456" -]; - -const secondaryColor = ["#fafafa"]; -const warningColor = [ - "#ff9800", - "#ffa726", - "#fb8c00", - "#ffa21a", - "#fcf8e3", - "#faf2cc", - "#ffe0b2", - "#ffb74d" -]; -const dangerColor = [ - "#f44336", - "#ef5350", - "#e53935", - "#f55a4e", - "#f2dede", - "#ebcccc", - "ef9a9a", - "#ef5350" -]; -const successColor = [ - "#4caf50", - "#66bb6a", - "#43a047", - "#5cb860", - "#dff0d8", - "#d0e9c6", - "#a5d6a7", - "#66bb6a" -]; -const infoColor = [ - "#00acc1", - "#26c6da", - "#00acc1", - "#00d3ee", - "#d9edf7", - "#c4e3f3", - "#b2ebf2", - "#4dd0e1" -]; -const roseColor = ["#e91e63", "#ec407a", "#d81b60", "#f8bbd0", "#f06292"]; +const secondaryColor = ['#FBF6F0', '#EFE6DC', '#DED9D5']; +const warningColor = ['#ff9800']; +const dangerColor = ['#f44336']; +const successColor = ['#78B288', '#5A8F69']; +const infoColor = ['#00acc1']; +const roseColor = ['#e91e63']; const grayColor = [ - "#999", - "#3C4858", - "#eee", - "#343434", - "#585858", - "#232323", - "#ddd", - "#6c757d", - "#333", - "#212121", - "#777", - "#D2D2D2", - "#AAA", - "#495057", - "#e5e5e5", - "#555", - "#f9f9f9", - "#ccc", - "#444", - "#f2f2f2", - "#89229b", - "#c0c1c2", - "#9a9a9a", - "#f5f5f5", - "#505050", - "#1f1f1f" + '#999', + '#3C4858', + '#eee', + '#343434', + '#585858', + '#232323', + '#ddd', + '#6c757d', + '#333', + '#212121', + '#777', + '#D2D2D2', + '#AAA', + '#495057', + '#e5e5e5', + '#555', + '#f9f9f9', + '#ccc', + '#444', + '#f2f2f2', + '#89229b', + '#c0c1c2', + '#9a9a9a', + '#f5f5f5', + '#505050', + '#1f1f1f', ]; -const whiteColor = "#FFF"; -const blackColor = "#000"; -const twitterColor = "#55acee"; -const facebookColor = "#3b5998"; -const googleColor = "#dd4b39"; -const linkedinColor = "#0976b4"; -const pinterestColor = "#cc2127"; -const youtubeColor = "#e52d27"; -const tumblrColor = "#35465c"; -const behanceColor = "#1769ff"; -const dribbbleColor = "#ea4c89"; -const redditColor = "#ff4500"; -const instagramColor = "#125688"; +const whiteColor = '#FFF'; +const blackColor = '#000'; +const twitterColor = '#55acee'; +const facebookColor = '#3b5998'; +const googleColor = '#dd4b39'; +const linkedinColor = '#0976b4'; +const pinterestColor = '#cc2127'; +const youtubeColor = '#e52d27'; +const tumblrColor = '#35465c'; +const behanceColor = '#1769ff'; +const dribbbleColor = '#ea4c89'; +const redditColor = '#ff4500'; +const instagramColor = '#125688'; const transition = { - transition: "all 0.33s cubic-bezier(0.685, 0.0473, 0.346, 1)" + transition: 'all 0.33s cubic-bezier(0.685, 0.0473, 0.346, 1)', }; const containerFluid = { - paddingRight: "15px", - paddingLeft: "15px", - marginRight: "auto", - marginLeft: "auto", - width: "100%" + paddingRight: '15px', + paddingLeft: '15px', + marginRight: 'auto', + marginLeft: 'auto', + width: '100%', }; const container = { ...containerFluid, - "@media (min-width: 576px)": { - maxWidth: "540px" + '@media (min-width: 576px)': { + maxWidth: '540px', }, - "@media (min-width: 768px)": { - maxWidth: "720px" + '@media (min-width: 768px)': { + maxWidth: '720px', }, - "@media (min-width: 992px)": { - maxWidth: "960px" + '@media (min-width: 992px)': { + width: '75%', + maxWidth: '960px', + }, + '@media (min-width: 1230px)': { + width: '70%', + maxWidth: '1230px', }, - "@media (min-width: 1230px)": { - maxWidth: "1230px" // '1230px - 30px margin = 1200px', which is better in huge display - } -}; - -const card = { - display: "inline-block", - position: "relative", - width: "100%", - margin: "25px 0", - boxShadow: "0 1px 4px 0 rgba(" + hexToRgb(blackColor) + ", 0.14)", - borderRadius: "3px", - color: "rgba(" + hexToRgb(blackColor) + ", 0.87)", - background: whiteColor -}; - -const defaultFont = { - fontFamily: '"Roboto", "Helvetica", "Arial", sans-serif', - fontWeight: "300", - lineHeight: "1.5em" }; const boxShadow = { - boxShadow: - "0 10px 30px -12px rgba(" + - hexToRgb(blackColor) + - ", 0.42), 0 4px 25px 0px rgba(" + - hexToRgb(blackColor) + - ", 0.12), 0 8px 10px -5px rgba(" + - hexToRgb(blackColor) + - ", 0.2)" + boxShadow: 'none', }; const primaryBoxShadow = { - boxShadow: - "0 12px 20px -10px rgba(" + - hexToRgb(primaryColor[0]) + - ", 0.28), 0 4px 20px 0px rgba(" + - hexToRgb(blackColor) + - ", 0.12), 0 7px 8px -5px rgba(" + - hexToRgb(primaryColor[0]) + - ", 0.2)" + boxShadow: 'none', }; const infoBoxShadow = { - boxShadow: - "0 12px 20px -10px rgba(" + - hexToRgb(infoColor[0]) + - ", 0.28), 0 4px 20px 0px rgba(" + - hexToRgb(blackColor) + - ", 0.12), 0 7px 8px -5px rgba(" + - hexToRgb(infoColor[0]) + - ", 0.2)" + boxShadow: 'none', }; const successBoxShadow = { - boxShadow: - "0 12px 20px -10px rgba(" + - hexToRgb(successColor[0]) + - ", 0.28), 0 4px 20px 0px rgba(" + - hexToRgb(blackColor) + - ", 0.12), 0 7px 8px -5px rgba(" + - hexToRgb(successColor[0]) + - ", 0.2)" + boxShadow: 'none', }; const warningBoxShadow = { - boxShadow: - "0 12px 20px -10px rgba(" + - hexToRgb(warningColor[0]) + - ", 0.28), 0 4px 20px 0px rgba(" + - hexToRgb(blackColor) + - ", 0.12), 0 7px 8px -5px rgba(" + - hexToRgb(warningColor[0]) + - ", 0.2)" + boxShadow: 'none', }; const dangerBoxShadow = { - boxShadow: - "0 12px 20px -10px rgba(" + - hexToRgb(dangerColor[0]) + - ", 0.28), 0 4px 20px 0px rgba(" + - hexToRgb(blackColor) + - ", 0.12), 0 7px 8px -5px rgba(" + - hexToRgb(dangerColor[0]) + - ", 0.2)" + boxShadow: 'none', }; const roseBoxShadow = { - boxShadow: - "0 4px 20px 0px rgba(" + - hexToRgb(blackColor) + - ", 0.14), 0 7px 10px -5px rgba(" + - hexToRgb(roseColor[0]) + - ", 0.4)" -}; - -const warningCardHeader = { - color: whiteColor, - background: - "linear-gradient(60deg, " + warningColor[1] + ", " + warningColor[2] + ")", - ...warningBoxShadow -}; -const successCardHeader = { - color: whiteColor, - background: - "linear-gradient(60deg, " + successColor[1] + ", " + successColor[2] + ")", - ...successBoxShadow + boxShadow: 'none', }; -const dangerCardHeader = { - color: whiteColor, - background: - "linear-gradient(60deg, " + dangerColor[1] + ", " + dangerColor[2] + ")", - ...dangerBoxShadow -}; -const infoCardHeader = { - color: whiteColor, - background: - "linear-gradient(60deg, " + infoColor[1] + ", " + infoColor[2] + ")", - ...infoBoxShadow -}; -const primaryCardHeader = { - color: whiteColor, - background: - "linear-gradient(60deg, " + primaryColor[1] + ", " + primaryColor[2] + ")", - ...primaryBoxShadow -}; -const roseCardHeader = { - color: whiteColor, - background: - "linear-gradient(60deg, " + roseColor[1] + ", " + roseColor[2] + ")", - ...roseBoxShadow -}; -const cardActions = { - margin: "0 20px 10px", - paddingTop: "10px", - borderTop: "1px solid " + grayColor[2], - height: "auto", - ...defaultFont -}; - -const cardHeader = { - margin: "-30px 15px 0", - borderRadius: "3px", - padding: "15px" -}; - const defaultBoxShadow = { - border: "0", - borderRadius: "3px", + border: '0', + borderRadius: '3px', boxShadow: - "0 10px 20px -12px rgba(" + + '0 10px 20px -12px rgba(' + hexToRgb(blackColor) + - ", 0.42), 0 3px 20px 0px rgba(" + + ', 0.42), 0 3px 20px 0px rgba(' + hexToRgb(blackColor) + - ", 0.12), 0 8px 10px -5px rgba(" + + ', 0.12), 0 8px 10px -5px rgba(' + hexToRgb(blackColor) + - ", 0.2)", - padding: "10px 0", - transition: "all 150ms ease 0s" + ', 0.2)', + padding: '10px 0', + transition: 'all 150ms ease 0s', }; const title = { color: grayColor[1], - textDecoration: "none", - fontWeight: "700", - marginTop: "30px", - marginBottom: "25px", - minHeight: "32px", - fontFamily: `"Roboto Slab", "Times New Roman", serif` -}; - -const cardTitle = { - "&, & a": { - ...title, - marginTop: ".625rem", - marginBottom: "0.75rem", - minHeight: "auto" - } -}; - -const cardLink = { - "& + $cardLink": { - marginLeft: "1.25rem" - } -}; - -const cardSubtitle = { - marginBottom: "0", - marginTop: "-.375rem" -}; - -const main = { - background: whiteColor, - position: "relative", - zIndex: "3" -}; - -const mainRaised = { - "@media (max-width: 576px)": { - marginTop: "-30px" - }, - "@media (max-width: 830px)": { - marginLeft: "10px", - marginRight: "10px" - }, - margin: "-60px 30px 0px", - borderRadius: "6px", - boxShadow: - "0 16px 24px 2px rgba(" + - hexToRgb(blackColor) + - ", 0.14), 0 6px 30px 5px rgba(" + - hexToRgb(blackColor) + - ", 0.12), 0 8px 10px -5px rgba(" + - hexToRgb(blackColor) + - ", 0.2)" -}; - -const section = { - backgroundPosition: "50%", - backgroundSize: "cover" -}; - -const sectionDark = { - backgroundColor: grayColor[3], - background: - "radial-gradient(ellipse at center," + - grayColor[4] + - " 0," + - grayColor[5] + - " 100%)" -}; - -const sectionDescription = { - marginTop: "130px" -}; - -const description = { - color: grayColor[0] + textDecoration: 'none', + fontWeight: '700', + marginTop: '30px', + marginBottom: '25px', + minHeight: '32px', + fontFamily: `"Roboto Slab", "Times New Roman", serif`, }; const mlAuto = { - marginLeft: "auto" -}; - -const mrAuto = { - marginRight: "auto" -}; - -const btnLink = { - backgroundColor: "transparent", - boxShdow: "none", - marginTop: "5px", - marginBottom: "5px" -}; -const coloredShadow = { - // some jss/css to make the cards look a bit better on Internet Explorer - "@media all and (-ms-high-contrast: none), (-ms-high-contrast: active)": { - display: "none !important" - }, - transform: "scale(0.94)", - top: "12px", - filter: "blur(12px)", - position: "absolute", - width: "100%", - height: "100%", - backgroundSize: "cover", - zIndex: "-1", - transition: "opacity .45s", - opacity: "0" + marginLeft: 'auto', }; export { - //variables - drawerWidth, transition, container, containerFluid, boxShadow, - card, - defaultFont, primaryColor, hoverColor, secondaryColor, @@ -479,28 +192,8 @@ export { warningBoxShadow, dangerBoxShadow, roseBoxShadow, - warningCardHeader, - successCardHeader, - dangerCardHeader, - infoCardHeader, - primaryCardHeader, - roseCardHeader, - cardActions, - cardHeader, defaultBoxShadow, title, - cardTitle, - description, - cardLink, - cardSubtitle, - main, - mainRaised, - section, - sectionDark, - sectionDescription, mlAuto, - mrAuto, - btnLink, - coloredShadow, - hexToRgb + hexToRgb, }; diff --git a/src/assets/jss/material-kit-pro-react/buttonGroupStyle.js b/src/assets/jss/material-kit-pro-react/buttonGroupStyle.js deleted file mode 100644 index a2787a060..000000000 --- a/src/assets/jss/material-kit-pro-react/buttonGroupStyle.js +++ /dev/null @@ -1,37 +0,0 @@ -const buttonGroupStyle = { - buttonGroup: { - position: "relative", - margin: "10px 1px", - display: "inline-block", - verticalAlign: "middle" - }, - firstButton: { - borderTopRightRadius: "0", - borderBottomRightRadius: "0", - margin: "0", - position: "relative", - float: "left", - "&:hover": { - zIndex: "2" - } - }, - middleButton: { - borderRadius: "0", - margin: "0", - position: "relative", - float: "left", - "&:hover": { - zIndex: "2" - } - }, - lastButton: { - borderTopLeftRadius: "0", - borderBottomLeftRadius: "0", - margin: "0", - "&:hover": { - zIndex: "2" - } - } -}; - -export default buttonGroupStyle; diff --git a/src/assets/jss/material-kit-pro-react/components/accordionStyle.js b/src/assets/jss/material-kit-pro-react/components/accordionStyle.js deleted file mode 100644 index 819045daf..000000000 --- a/src/assets/jss/material-kit-pro-react/components/accordionStyle.js +++ /dev/null @@ -1,141 +0,0 @@ -import { - primaryColor, - secondaryColor, - warningColor, - dangerColor, - successColor, - infoColor, - roseColor, - grayColor -} from "assets/jss/material-kit-pro-react.js"; - -const accordionStyle = theme => ({ - root: { - flexGrow: 1, - marginBottom: "20px" - }, - expansionPanel: { - boxShadow: "none", - "&:before": { - display: "none !important" - } - }, - expansionPanelExpanded: { - margin: "0 !important" - }, - expansionPanelSummary: { - minHeight: "auto !important", - backgroundColor: "transparent", - borderBottom: "1px solid " + grayColor[6], - padding: "25px 10px 5px 0px", - borderTopLeftRadius: "3px", - borderTopRightRadius: "3px", - color: grayColor[1] - }, - primaryExpansionPanelSummary: { - "&:hover": { - color: primaryColor[0] - } - }, - secondaryExpansionPanelSummary: { - "&:hover": { - color: secondaryColor[0] - } - }, - warningExpansionPanelSummary: { - "&:hover": { - color: warningColor[0] - } - }, - dangerExpansionPanelSummary: { - "&:hover": { - color: dangerColor[0] - } - }, - successExpansionPanelSummary: { - "&:hover": { - color: successColor[0] - } - }, - infoExpansionPanelSummary: { - "&:hover": { - color: infoColor[0] - } - }, - roseExpansionPanelSummary: { - "&:hover": { - color: roseColor[0] - } - }, - expansionPanelSummaryExpaned: { - "& $expansionPanelSummaryExpandIcon": { - [theme.breakpoints.up("md")]: { - top: "auto !important" - }, - transform: "rotate(180deg)", - [theme.breakpoints.down("sm")]: { - top: "10px !important" - }, - // some jss/css to make the cards look a bit better on Internet Explorer - "@media all and (-ms-high-contrast: none), (-ms-high-contrast: active)": { - display: "inline-block !important", - top: "10px !important" - } - } - }, - primaryExpansionPanelSummaryExpaned: { - color: primaryColor[0] - }, - secondaryExpansionPanelSummaryExpaned: { - color: secondaryColor[0] - }, - warningExpansionPanelSummaryExpaned: { - color: warningColor[0] - }, - dangerExpansionPanelSummaryExpaned: { - color: dangerColor[0] - }, - successExpansionPanelSummaryExpaned: { - color: successColor[0] - }, - infoExpansionPanelSummaryExpaned: { - color: infoColor[0] - }, - roseExpansionPanelSummaryExpaned: { - color: roseColor[0] - }, - expansionPanelSummaryContent: { - margin: "0 !important" - }, - expansionPanelSummaryExpandIcon: { - [theme.breakpoints.up("md")]: { - top: "auto !important" - }, - transform: "rotate(0deg)", - color: "inherit", - right: "10px", - position: "absolute", - [theme.breakpoints.down("sm")]: { - top: "10px !important" - }, - // some jss/css to make the cards look a bit better on Internet Explorer - "@media all and (-ms-high-contrast: none), (-ms-high-contrast: active)": { - display: "inline-block !important" - } - }, - expansionPanelSummaryExpandIconExpanded: {}, - title: { - fontSize: "15px", - fontWeight: "bolder", - marginTop: "0", - marginBottom: "0", - color: "inherit" - }, - expansionPanelDetails: { - display: "block", - padding: "15px 0px 5px", - fontSize: ".875rem" - } -}); - -export default accordionStyle; diff --git a/src/assets/jss/material-kit-pro-react/components/badgeStyle.js b/src/assets/jss/material-kit-pro-react/components/badgeStyle.js deleted file mode 100644 index 5ab510260..000000000 --- a/src/assets/jss/material-kit-pro-react/components/badgeStyle.js +++ /dev/null @@ -1,50 +0,0 @@ -import { - primaryColor, - warningColor, - dangerColor, - successColor, - infoColor, - roseColor, - whiteColor, - grayColor -} from "assets/jss/material-kit-pro-react.js"; - -const badgeStyle = { - badge: { - marginRight: "3px", - borderRadius: "12px", - padding: "5px 12px", - textTransform: "uppercase", - fontSize: "10px", - fontWeight: "500", - lineHeight: "1", - color: whiteColor, - textAlign: "center", - whiteSpace: "nowrap", - verticalAlign: "baseline", - display: "inline-block" - }, - primary: { - backgroundColor: primaryColor[0] - }, - warning: { - backgroundColor: warningColor[0] - }, - danger: { - backgroundColor: dangerColor[0] - }, - success: { - backgroundColor: successColor[0] - }, - info: { - backgroundColor: infoColor[0] - }, - rose: { - backgroundColor: roseColor[0] - }, - gray: { - backgroundColor: grayColor[7] - } -}; - -export default badgeStyle; diff --git a/src/assets/jss/material-kit-pro-react/components/buttonStyle.js b/src/assets/jss/material-kit-pro-react/components/buttonStyle.js deleted file mode 100644 index 9ed66dcaf..000000000 --- a/src/assets/jss/material-kit-pro-react/components/buttonStyle.js +++ /dev/null @@ -1,743 +0,0 @@ -import { - grayColor, - roseColor, - primaryColor, - secondaryColor, - infoColor, - successColor, - warningColor, - dangerColor, - blackColor, - whiteColor, - twitterColor, - facebookColor, - googleColor, - linkedinColor, - pinterestColor, - youtubeColor, - tumblrColor, - behanceColor, - dribbbleColor, - redditColor, - instagramColor, - hexToRgb -} from "assets/jss/material-kit-pro-react.js"; - -const buttonStyle = { - button: { - minHeight: "auto", - minWidth: "auto", - backgroundColor: grayColor[0], - color: whiteColor, - boxShadow: - "0 2px 2px 0 rgba(" + - hexToRgb(grayColor[0]) + - ", 0.14), 0 3px 1px -2px rgba(" + - hexToRgb(grayColor[0]) + - ", 0.2), 0 1px 5px 0 rgba(" + - hexToRgb(grayColor[0]) + - ", 0.12)", - border: "none", - borderRadius: "3px", - position: "relative", - padding: "12px 30px", - margin: ".3125rem 1px", - fontSize: "12px", - fontWeight: "400", - textTransform: "uppercase", - letterSpacing: "0", - willChange: "box-shadow, transform", - transition: - "box-shadow 0.2s cubic-bezier(0.4, 0, 1, 1), background-color 0.2s cubic-bezier(0.4, 0, 0.2, 1)", - lineHeight: "1.42857143", - textAlign: "center", - whiteSpace: "nowrap", - verticalAlign: "middle", - touchAction: "manipulation", - cursor: "pointer", - "&:hover,&:focus": { - color: whiteColor, - backgroundColor: grayColor[0], - boxShadow: - "0 14px 26px -12px rgba(" + - hexToRgb(grayColor[0]) + - ", 0.42), 0 4px 23px 0px rgba(" + - hexToRgb(blackColor) + - ", 0.12), 0 8px 10px -5px rgba(" + - hexToRgb(grayColor[0]) + - ", 0.2)" - }, - "& .fab,& .fas,& .far,& .fal,& .material-icons": { - position: "relative", - display: "inline-block", - top: "0", - marginTop: "-1em", - marginBottom: "-1em", - fontSize: "1.1rem", - marginRight: "4px", - verticalAlign: "middle" - }, - "& svg": { - position: "relative", - display: "inline-block", - top: "0", - width: "18px", - height: "18px", - marginRight: "4px", - verticalAlign: "middle" - }, - "&$justIcon": { - "& .fab,& .fas,& .far,& .fal,& .material-icons": { - marginTop: "0px", - marginRight: "0px", - position: "absolute", - width: "100%", - transform: "none", - left: "0px", - top: "0px", - height: "100%", - lineHeight: "41px", - fontSize: "20px" - } - } - }, - fullWidth: { - width: "100%" - }, - primary: { - backgroundColor: primaryColor[0], - boxShadow: - "0 2px 2px 0 rgba(" + - hexToRgb(primaryColor[0]) + - ", 0.14), 0 3px 1px -2px rgba(" + - hexToRgb(primaryColor[0]) + - ", 0.2), 0 1px 5px 0 rgba(" + - hexToRgb(primaryColor[0]) + - ", 0.12)", - "&:hover,&:focus": { - backgroundColor: primaryColor[0], - boxShadow: - "0 14px 26px -12px rgba(" + - hexToRgb(primaryColor[0]) + - ", 0.42), 0 4px 23px 0px rgba(" + - hexToRgb(blackColor) + - ", 0.12), 0 8px 10px -5px rgba(" + - hexToRgb(primaryColor[0]) + - ", 0.2)" - } - }, - secondary: { - color: "rgba(" + hexToRgb(blackColor) + ",.87)", - backgroundColor: secondaryColor[0], - boxShadow: - "0 2px 2px 0 rgba(" + - hexToRgb(secondaryColor[0]) + - ",.14), 0 3px 1px -2px rgba(" + - hexToRgb(secondaryColor[0]) + - ",.2), 0 1px 5px 0 rgba(" + - hexToRgb(secondaryColor[0]) + - ",.12)", - "&:hover,&:focus": { - boxShdow: - "0 14px 26px -12px rgba(" + - hexToRgb(secondaryColor[0]) + - ",.42), 0 4px 23px 0 rgba(" + - hexToRgb(blackColor) + - ",.12), 0 8px 10px -5px rgba(" + - hexToRgb(secondaryColor[0]) + - ",.2)", - color: "rgba(" + hexToRgb(blackColor) + ",.87)", - backgroundColor: grayColor[19] - } - }, - info: { - backgroundColor: infoColor[0], - boxShadow: - "0 2px 2px 0 rgba(" + - hexToRgb(infoColor[0]) + - ", 0.14), 0 3px 1px -2px rgba(" + - hexToRgb(infoColor[0]) + - ", 0.2), 0 1px 5px 0 rgba(" + - hexToRgb(infoColor[0]) + - ", 0.12)", - "&:hover,&:focus": { - backgroundColor: infoColor[0], - boxShadow: - "0 14px 26px -12px rgba(" + - hexToRgb(infoColor[0]) + - ", 0.42), 0 4px 23px 0px rgba(" + - hexToRgb(blackColor) + - ", 0.12), 0 8px 10px -5px rgba(" + - hexToRgb(infoColor[0]) + - ", 0.2)" - } - }, - success: { - backgroundColor: successColor[0], - boxShadow: - "0 2px 2px 0 rgba(" + - hexToRgb(successColor[0]) + - ", 0.14), 0 3px 1px -2px rgba(" + - hexToRgb(successColor[0]) + - ", 0.2), 0 1px 5px 0 rgba(" + - hexToRgb(successColor[0]) + - ", 0.12)", - "&:hover,&:focus": { - backgroundColor: successColor[0], - boxShadow: - "0 14px 26px -12px rgba(" + - hexToRgb(successColor[0]) + - ", 0.42), 0 4px 23px 0px rgba(" + - hexToRgb(blackColor) + - ", 0.12), 0 8px 10px -5px rgba(" + - hexToRgb(successColor[0]) + - ", 0.2)" - } - }, - warning: { - backgroundColor: warningColor[0], - boxShadow: - "0 2px 2px 0 rgba(" + - hexToRgb(warningColor[0]) + - ", 0.14), 0 3px 1px -2px rgba(" + - hexToRgb(warningColor[0]) + - ", 0.2), 0 1px 5px 0 rgba(" + - hexToRgb(warningColor[0]) + - ", 0.12)", - "&:hover,&:focus": { - backgroundColor: warningColor[0], - boxShadow: - "0 14px 26px -12px rgba(" + - hexToRgb(warningColor[0]) + - ", 0.42), 0 4px 23px 0px rgba(" + - hexToRgb(blackColor) + - ", 0.12), 0 8px 10px -5px rgba(" + - hexToRgb(warningColor[0]) + - ", 0.2)" - } - }, - danger: { - backgroundColor: dangerColor[0], - boxShadow: - "0 2px 2px 0 rgba(" + - hexToRgb(dangerColor[0]) + - ", 0.14), 0 3px 1px -2px rgba(" + - hexToRgb(dangerColor[0]) + - ", 0.2), 0 1px 5px 0 rgba(" + - hexToRgb(dangerColor[0]) + - ", 0.12)", - "&:hover,&:focus": { - backgroundColor: dangerColor[0], - boxShadow: - "0 14px 26px -12px rgba(" + - hexToRgb(dangerColor[0]) + - ", 0.42), 0 4px 23px 0px rgba(" + - hexToRgb(blackColor) + - ", 0.12), 0 8px 10px -5px rgba(" + - hexToRgb(dangerColor[0]) + - ", 0.2)" - } - }, - rose: { - backgroundColor: roseColor[0], - boxShadow: - "0 2px 2px 0 rgba(" + - hexToRgb(roseColor[0]) + - ", 0.14), 0 3px 1px -2px rgba(" + - hexToRgb(roseColor[0]) + - ", 0.2), 0 1px 5px 0 rgba(" + - hexToRgb(roseColor[0]) + - ", 0.12)", - "&:hover,&:focus": { - backgroundColor: roseColor[0], - boxShadow: - "0 14px 26px -12px rgba(" + - hexToRgb(roseColor[0]) + - ", 0.42), 0 4px 23px 0px rgba(" + - hexToRgb(blackColor) + - ", 0.12), 0 8px 10px -5px rgba(" + - hexToRgb(roseColor[0]) + - ", 0.2)" - } - }, - white: { - "&,&:focus,&:hover": { - backgroundColor: whiteColor, - color: grayColor[0] - } - }, - twitter: { - backgroundColor: twitterColor, - color: whiteColor, - boxShadow: - "0 2px 2px 0 rgba(" + - hexToRgb(twitterColor) + - ", 0.14), 0 3px 1px -2px rgba(" + - hexToRgb(twitterColor) + - ", 0.2), 0 1px 5px 0 rgba(" + - hexToRgb(twitterColor) + - ", 0.12)", - "&:hover,&:focus,&:visited": { - backgroundColor: twitterColor, - color: whiteColor, - boxShadow: - "0 14px 26px -12px rgba(" + - hexToRgb(twitterColor) + - ", 0.42), 0 4px 23px 0px rgba(" + - hexToRgb(blackColor) + - ", 0.12), 0 8px 10px -5px rgba(" + - hexToRgb(twitterColor) + - ", 0.2)" - } - }, - facebook: { - backgroundColor: facebookColor, - color: whiteColor, - boxShadow: - "0 2px 2px 0 rgba(" + - hexToRgb(facebookColor) + - ", 0.14), 0 3px 1px -2px rgba(" + - hexToRgb(facebookColor) + - ", 0.2), 0 1px 5px 0 rgba(" + - hexToRgb(facebookColor) + - ", 0.12)", - "&:hover,&:focus": { - backgroundColor: facebookColor, - color: whiteColor, - boxShadow: - "0 14px 26px -12px rgba(" + - hexToRgb(facebookColor) + - ", 0.42), 0 4px 23px 0px rgba(" + - hexToRgb(blackColor) + - ", 0.12), 0 8px 10px -5px rgba(" + - hexToRgb(facebookColor) + - ", 0.2)" - } - }, - google: { - backgroundColor: googleColor, - color: whiteColor, - boxShadow: - "0 2px 2px 0 rgba(" + - hexToRgb(googleColor) + - ", 0.14), 0 3px 1px -2px rgba(" + - hexToRgb(googleColor) + - ", 0.2), 0 1px 5px 0 rgba(" + - hexToRgb(googleColor) + - ", 0.12)", - "&:hover,&:focus": { - backgroundColor: googleColor, - color: whiteColor, - boxShadow: - "0 14px 26px -12px rgba(" + - hexToRgb(googleColor) + - ", 0.42), 0 4px 23px 0px rgba(" + - hexToRgb(blackColor) + - ", 0.12), 0 8px 10px -5px rgba(" + - hexToRgb(googleColor) + - ", 0.2)" - } - }, - linkedin: { - backgroundColor: linkedinColor, - color: whiteColor, - boxShadow: - "0 2px 2px 0 rgba(" + - hexToRgb(linkedinColor) + - ", 0.14), 0 3px 1px -2px rgba(" + - hexToRgb(linkedinColor) + - ", 0.2), 0 1px 5px 0 rgba(" + - hexToRgb(linkedinColor) + - ", 0.12)", - "&:hover,&:focus": { - backgroundColor: linkedinColor, - color: whiteColor, - boxShadow: - "0 14px 26px -12px rgba(" + - hexToRgb(linkedinColor) + - ", 0.42), 0 4px 23px 0px rgba(" + - hexToRgb(blackColor) + - ", 0.12), 0 8px 10px -5px rgba(" + - hexToRgb(linkedinColor) + - ", 0.2)" - } - }, - pinterest: { - backgroundColor: pinterestColor, - color: whiteColor, - boxShadow: - "0 2px 2px 0 rgba(" + - hexToRgb(pinterestColor) + - ", 0.14), 0 3px 1px -2px rgba(" + - hexToRgb(pinterestColor) + - ", 0.2), 0 1px 5px 0 rgba(" + - hexToRgb(pinterestColor) + - ", 0.12)", - "&:hover,&:focus": { - backgroundColor: pinterestColor, - color: whiteColor, - boxShadow: - "0 14px 26px -12px rgba(" + - hexToRgb(pinterestColor) + - ", 0.42), 0 4px 23px 0px rgba(" + - hexToRgb(blackColor) + - ", 0.12), 0 8px 10px -5px rgba(" + - hexToRgb(pinterestColor) + - ", 0.2)" - } - }, - youtube: { - backgroundColor: youtubeColor, - color: whiteColor, - boxShadow: - "0 2px 2px 0 rgba(" + - hexToRgb(youtubeColor) + - ", 0.14), 0 3px 1px -2px rgba(" + - hexToRgb(youtubeColor) + - ", 0.2), 0 1px 5px 0 rgba(" + - hexToRgb(youtubeColor) + - ", 0.12)", - "&:hover,&:focus": { - backgroundColor: youtubeColor, - color: whiteColor, - boxShadow: - "0 14px 26px -12px rgba(" + - hexToRgb(youtubeColor) + - ", 0.42), 0 4px 23px 0px rgba(" + - hexToRgb(blackColor) + - ", 0.12), 0 8px 10px -5px rgba(" + - hexToRgb(youtubeColor) + - ", 0.2)" - } - }, - tumblr: { - backgroundColor: tumblrColor, - color: whiteColor, - boxShadow: - "0 2px 2px 0 rgba(" + - hexToRgb(tumblrColor) + - ", 0.14), 0 3px 1px -2px rgba(" + - hexToRgb(tumblrColor) + - ", 0.2), 0 1px 5px 0 rgba(" + - hexToRgb(tumblrColor) + - ", 0.12)", - "&:hover,&:focus": { - backgroundColor: tumblrColor, - color: whiteColor, - boxShadow: - "0 14px 26px -12px rgba(" + - hexToRgb(tumblrColor) + - ", 0.42), 0 4px 23px 0px rgba(" + - hexToRgb(blackColor) + - ", 0.12), 0 8px 10px -5px rgba(" + - hexToRgb(tumblrColor) + - ", 0.2)" - } - }, - github: { - backgroundColor: grayColor[8], - color: whiteColor, - boxShadow: - "0 2px 2px 0 rgba(" + - hexToRgb(grayColor[8]) + - ", 0.14), 0 3px 1px -2px rgba(" + - hexToRgb(grayColor[8]) + - ", 0.2), 0 1px 5px 0 rgba(" + - hexToRgb(grayColor[8]) + - ", 0.12)", - "&:hover,&:focus": { - backgroundColor: grayColor[8], - color: whiteColor, - boxShadow: - "0 14px 26px -12px rgba(" + - hexToRgb(grayColor[8]) + - ", 0.42), 0 4px 23px 0px rgba(" + - hexToRgb(blackColor) + - ", 0.12), 0 8px 10px -5px rgba(" + - hexToRgb(grayColor[8]) + - ", 0.2)" - } - }, - behance: { - backgroundColor: behanceColor, - color: whiteColor, - boxShadow: - "0 2px 2px 0 rgba(" + - hexToRgb(behanceColor) + - ", 0.14), 0 3px 1px -2px rgba(" + - hexToRgb(behanceColor) + - ", 0.2), 0 1px 5px 0 rgba(" + - hexToRgb(behanceColor) + - ", 0.12)", - "&:hover,&:focus": { - backgroundColor: behanceColor, - color: whiteColor, - boxShadow: - "0 14px 26px -12px rgba(" + - hexToRgb(behanceColor) + - ", 0.42), 0 4px 23px 0px rgba(" + - hexToRgb(blackColor) + - ", 0.12), 0 8px 10px -5px rgba(" + - hexToRgb(behanceColor) + - ", 0.2)" - } - }, - dribbble: { - backgroundColor: dribbbleColor, - color: whiteColor, - boxShadow: - "0 2px 2px 0 rgba(" + - hexToRgb(dribbbleColor) + - ", 0.14), 0 3px 1px -2px rgba(" + - hexToRgb(dribbbleColor) + - ", 0.2), 0 1px 5px 0 rgba(" + - hexToRgb(dribbbleColor) + - ", 0.12)", - "&:hover,&:focus": { - backgroundColor: dribbbleColor, - color: whiteColor, - boxShadow: - "0 14px 26px -12px rgba(" + - hexToRgb(dribbbleColor) + - ", 0.42), 0 4px 23px 0px rgba(" + - hexToRgb(blackColor) + - ", 0.12), 0 8px 10px -5px rgba(" + - hexToRgb(dribbbleColor) + - ", 0.2)" - } - }, - reddit: { - backgroundColor: redditColor, - color: whiteColor, - boxShadow: - "0 2px 2px 0 rgba(" + - hexToRgb(redditColor) + - ", 0.14), 0 3px 1px -2px rgba(" + - hexToRgb(redditColor) + - ", 0.2), 0 1px 5px 0 rgba(" + - hexToRgb(redditColor) + - ", 0.12)", - "&:hover,&:focus": { - backgroundColor: redditColor, - color: whiteColor, - boxShadow: - "0 14px 26px -12px rgba(" + - hexToRgb(redditColor) + - ", 0.42), 0 4px 23px 0px rgba(" + - hexToRgb(blackColor) + - ", 0.12), 0 8px 10px -5px rgba(" + - hexToRgb(redditColor) + - ", 0.2)" - } - }, - instagram: { - backgroundColor: instagramColor, - color: whiteColor, - boxShadow: - "0 2px 2px 0 rgba(" + - hexToRgb(instagramColor) + - ", 0.14), 0 3px 1px -2px rgba(" + - hexToRgb(instagramColor) + - ", 0.2), 0 1px 5px 0 rgba(" + - hexToRgb(instagramColor) + - ", 0.12)", - "&:hover,&:focus": { - backgroundColor: instagramColor, - color: whiteColor, - boxShadow: - "0 14px 26px -12px rgba(" + - hexToRgb(instagramColor) + - ", 0.42), 0 4px 23px 0px rgba(" + - hexToRgb(blackColor) + - ", 0.12), 0 8px 10px -5px rgba(" + - hexToRgb(instagramColor) + - ", 0.2)" - } - }, - simple: { - "&,&:focus,&:hover": { - color: whiteColor, - background: "transparent", - boxShadow: "none" - }, - "&$primary": { - "&,&:focus,&:hover,&:visited": { - color: primaryColor[0] - } - }, - "&$info": { - "&,&:focus,&:hover,&:visited": { - color: infoColor[0] - } - }, - "&$success": { - "&,&:focus,&:hover,&:visited": { - color: successColor[0] - } - }, - "&$warning": { - "&,&:focus,&:hover,&:visited": { - color: warningColor[0] - } - }, - "&$rose": { - "&,&:focus,&:hover,&:visited": { - color: roseColor[0] - } - }, - "&$danger": { - "&,&:focus,&:hover,&:visited": { - color: dangerColor[0] - } - }, - "&$twitter": { - "&,&:focus,&:hover,&:visited": { - color: twitterColor - } - }, - "&$facebook": { - "&,&:focus,&:hover,&:visited": { - color: facebookColor - } - }, - "&$google": { - "&,&:focus,&:hover,&:visited": { - color: googleColor - } - }, - "&$linkedin": { - "&,&:focus,&:hover,&:visited": { - color: linkedinColor - } - }, - "&$pinterest": { - "&,&:focus,&:hover,&:visited": { - color: pinterestColor - } - }, - "&$youtube": { - "&,&:focus,&:hover,&:visited": { - color: youtubeColor - } - }, - "&$tumblr": { - "&,&:focus,&:hover,&:visited": { - color: tumblrColor - } - }, - "&$github": { - "&,&:focus,&:hover,&:visited": { - color: grayColor[8] - } - }, - "&$behance": { - "&,&:focus,&:hover,&:visited": { - color: behanceColor - } - }, - "&$dribbble": { - "&,&:focus,&:hover,&:visited": { - color: dribbbleColor - } - }, - "&$reddit": { - "&,&:focus,&:hover,&:visited": { - color: redditColor - } - }, - "&$instagram": { - "&,&:focus,&:hover,&:visited": { - color: instagramColor - } - } - }, - transparent: { - "&,&:focus,&:hover": { - color: "inherit", - background: "transparent", - boxShadow: "none" - } - }, - disabled: { - opacity: "0.65", - pointerEvents: "none" - }, - lg: { - "&$justIcon": { - "& .fab,& .fas,& .far,& .fal,& svg,& .material-icons": { - marginTop: "-4px" - } - }, - padding: "1.125rem 2.25rem", - fontSize: "0.875rem", - lineHeight: "1.333333", - borderRadius: "0.2rem" - }, - sm: { - "&$justIcon": { - "& .fab,& .fas,& .far,& .fal,& svg,& .material-icons": { - marginTop: "1px" - } - }, - padding: "0.40625rem 1.25rem", - fontSize: "0.6875rem", - lineHeight: "1.5", - borderRadius: "0.2rem" - }, - round: { - borderRadius: "30px" - }, - block: { - width: "100% !important" - }, - link: { - "&,&:hover,&:focus": { - backgroundColor: "transparent", - color: grayColor[0], - boxShadow: "none" - } - }, - justIcon: { - paddingLeft: "12px", - paddingRight: "12px", - fontSize: "20px", - height: "41px", - minWidth: "41px", - width: "41px", - "& .fab,& .fas,& .far,& .fal,& svg,& .material-icons": { - marginRight: "0px" - }, - "&$lg": { - height: "57px", - minWidth: "57px", - width: "57px", - lineHeight: "56px", - "& .fab,& .fas,& .far,& .fal,& .material-icons": { - fontSize: "32px", - lineHeight: "56px" - }, - "& svg": { - width: "32px", - height: "32px" - } - }, - "&$sm": { - height: "30px", - minWidth: "30px", - width: "30px", - "& .fab,& .fas,& .far,& .fal,& .material-icons": { - fontSize: "17px", - lineHeight: "29px" - }, - "& svg": { - width: "17px", - height: "17px" - } - } - }, - fileButton: { - // display: "inline-block" - } -}; - -export default buttonStyle; diff --git a/src/assets/jss/material-kit-pro-react/components/cardAvatarStyle.js b/src/assets/jss/material-kit-pro-react/components/cardAvatarStyle.js deleted file mode 100644 index 7edf03711..000000000 --- a/src/assets/jss/material-kit-pro-react/components/cardAvatarStyle.js +++ /dev/null @@ -1,55 +0,0 @@ -import { blackColor, hexToRgb } from "assets/jss/material-kit-pro-react.js"; - -const cardAvatarStyle = { - cardAvatar: { - "&$cardAvatarProfile img,&$cardAvatarTestimonial img": { - width: "100%", - height: "auto" - } - }, - cardAvatarProfile: { - maxWidth: "130px", - maxHeight: "130px", - margin: "-50px auto 0", - borderRadius: "50%", - overflow: "hidden", - padding: "0", - boxShadow: - "0 16px 38px -12px rgba(" + - hexToRgb(blackColor) + - ", 0.56), 0 4px 25px 0px rgba(" + - hexToRgb(blackColor) + - ", 0.12), 0 8px 10px -5px rgba(" + - hexToRgb(blackColor) + - ", 0.2)", - "&$cardAvatarPlain": { - marginTop: "0" - } - }, - cardAvatarPlain: {}, - cardAvatarTestimonial: { - margin: "-50px auto 0", - maxWidth: "100px", - maxHeight: "100px", - borderRadius: "50%", - overflow: "hidden", - padding: "0", - boxShadow: - "0 16px 38px -12px rgba(" + - hexToRgb(blackColor) + - ", 0.56), 0 4px 25px 0px rgba(" + - hexToRgb(blackColor) + - ", 0.12), 0 8px 10px -5px rgba(" + - hexToRgb(blackColor) + - ", 0.2)", - "&$cardAvatarPlain": { - marginTop: "0" - } - }, - cardAvatarTestimonialFooter: { - marginBottom: "-50px", - marginTop: "10px" - } -}; - -export default cardAvatarStyle; diff --git a/src/assets/jss/material-kit-pro-react/components/cardBodyStyle.js b/src/assets/jss/material-kit-pro-react/components/cardBodyStyle.js deleted file mode 100644 index 415a59665..000000000 --- a/src/assets/jss/material-kit-pro-react/components/cardBodyStyle.js +++ /dev/null @@ -1,46 +0,0 @@ -import { whiteColor, hexToRgb } from "assets/jss/material-kit-pro-react.js"; - -const cardBodyStyle = { - cardBody: { - padding: "0.9375rem 1.875rem", - flex: "1 1 auto", - WebkitBoxFlex: "1" - }, - cardBodyBackground: { - position: "relative", - zIndex: "2", - minHeight: "280px", - paddingTop: "40px", - paddingBottom: "40px", - maxWidth: "440px", - margin: "0 auto" - }, - cardBodyPlain: { - paddingLeft: "5px", - paddingRight: "5px" - }, - cardBodyFormHorizontal: { - paddingLeft: "15px", - paddingRight: "15px", - "& form": { - margin: "0" - } - }, - cardPricing: { - padding: "15px!important", - margin: "0px!important" - }, - cardSignup: { - padding: "0px 30px 0px 30px" - }, - cardBodyColor: { - borderRadius: "6px", - "& h1,& h2,& h3": { - "& small": { - color: "rgba(" + hexToRgb(whiteColor) + ", 0.8)" - } - } - } -}; - -export default cardBodyStyle; diff --git a/src/assets/jss/material-kit-pro-react/components/cardFooterStyle.js b/src/assets/jss/material-kit-pro-react/components/cardFooterStyle.js deleted file mode 100644 index c9feb1106..000000000 --- a/src/assets/jss/material-kit-pro-react/components/cardFooterStyle.js +++ /dev/null @@ -1,25 +0,0 @@ -const cardFooterStyle = { - cardFooter: { - display: "flex", - alignItems: "center", - backgroundColor: "transparent", - padding: "0.9375rem 1.875rem", - paddingTop: "0" - }, - cardFooterProfile: { - marginTop: "-15px" - }, - cardFooterPlain: { - paddingLeft: "5px", - paddingRight: "5px", - backgroundColor: "transparent" - }, - cardFooterPricing: { - zIndex: "2" - }, - cardFooterTestimonial: { - display: "block" - } -}; - -export default cardFooterStyle; diff --git a/src/assets/jss/material-kit-pro-react/components/cardHeaderStyle.js b/src/assets/jss/material-kit-pro-react/components/cardHeaderStyle.js deleted file mode 100644 index e108bffe3..000000000 --- a/src/assets/jss/material-kit-pro-react/components/cardHeaderStyle.js +++ /dev/null @@ -1,77 +0,0 @@ -import { - warningCardHeader, - successCardHeader, - dangerCardHeader, - infoCardHeader, - primaryCardHeader, - roseCardHeader, - blackColor, - hexToRgb -} from "assets/jss/material-kit-pro-react.js"; - -const cardHeaderStyle = { - cardHeader: { - borderRadius: "3px", - padding: "1rem 15px", - marginLeft: "15px", - marginRight: "15px", - marginTop: "-30px", - border: "0", - marginBottom: "0" - }, - cardHeaderPlain: { - marginLeft: "0px", - marginRight: "0px", - "&$cardHeaderImage": { - margin: "0 !important" - } - }, - cardHeaderImage: { - position: "relative", - padding: "0", - zIndex: "1", - marginLeft: "15px", - marginRight: "15px", - marginTop: "-30px", - borderRadius: "6px", - "& img": { - width: "100%", - borderRadius: "6px", - pointerEvents: "none", - boxShadow: - "0 5px 15px -8px rgba(" + - hexToRgb(blackColor) + - ", 0.24), 0 8px 10px -5px rgba(" + - hexToRgb(blackColor) + - ", 0.2)" - }, - "& a": { - display: "block" - } - }, - noShadow: { - "& img": { - boxShadow: "none !important" - } - }, - cardHeaderContact: { - margin: "0 15px", - marginTop: "-20px" - }, - cardHeaderSignup: { - marginLeft: "20px", - marginRight: "20px", - marginTop: "-40px", - padding: "20px 0", - width: "100%", - marginBottom: "15px" - }, - warningCardHeader, - successCardHeader, - dangerCardHeader, - infoCardHeader, - primaryCardHeader, - roseCardHeader -}; - -export default cardHeaderStyle; diff --git a/src/assets/jss/material-kit-pro-react/components/cardStyle.js b/src/assets/jss/material-kit-pro-react/components/cardStyle.js deleted file mode 100644 index b5da26020..000000000 --- a/src/assets/jss/material-kit-pro-react/components/cardStyle.js +++ /dev/null @@ -1,194 +0,0 @@ -import { - blackColor, - whiteColor, - grayColor, - roseColor, - primaryColor, - successColor, - dangerColor, - warningColor, - infoColor, - hexToRgb -} from "assets/jss/material-kit-pro-react.js"; - -const cardStyle = { - card: { - border: "0", - marginBottom: "8px", - marginTop: "8px", - borderRadius: "6px", - color: "rgba(" + hexToRgb(blackColor) + ", 0.87)", - background: whiteColor, - width: "100%", - boxShadow: - "0 2px 2px 0 rgba(" + - hexToRgb(blackColor) + - ", 0.14), 0 3px 1px -2px rgba(" + - hexToRgb(blackColor) + - ", 0.2), 0 1px 5px 0 rgba(" + - hexToRgb(blackColor) + - ", 0.12)", - position: "relative", - display: "flex", - flexDirection: "column", - minWidth: "0", - wordWrap: "break-word", - fontSize: ".875rem", - // some jss/css to make the cards look a bit better on Internet Explorer - "@media all and (-ms-high-contrast: none), (-ms-high-contrast: active)": { - display: "inline-block !important" - } - }, - cardPlain: { - background: "transparent", - boxShadow: "none" - }, - cardProfile: { - marginTop: "30px", - textAlign: "center" - }, - cardBlog: { - marginTop: "60px" - }, - cardRaised: { - boxShadow: - "0 16px 38px -12px rgba(" + - hexToRgb(blackColor) + - ", 0.56), 0 4px 25px 0px rgba(" + - hexToRgb(blackColor) + - ", 0.12), 0 8px 10px -5px rgba(" + - hexToRgb(blackColor) + - ", 0.2)" - }, - cardBackground: { - backgroundPosition: "50%", - backgroundSize: "cover", - textAlign: "center", - color: whiteColor, - "& h3": { - color: whiteColor + " !important" - }, - "& p": { - color: "rgba(" + hexToRgb(whiteColor) + ",0.7)!important" - }, - "&:after": { - position: "absolute", - zIndex: "1", - width: "100%", - height: "100%", - display: "block", - left: "0", - top: "0", - content: '""', - backgroundColor: "rgba(" + hexToRgb(blackColor) + ", 0.56)", - borderRadius: "6px" - }, - "& small": { - color: "rgba(" + hexToRgb(whiteColor) + ", 0.7) !important" - } - }, - cardPricing: { - textAlign: "center", - "&:after": { - backgroundColor: "rgba(" + hexToRgb(blackColor) + ", 0.7) !important" - }, - "& ul": { - listStyle: "none", - padding: 0, - maxWidth: "240px", - margin: "10px auto" - }, - "& ul li": { - color: grayColor[0], - textAlign: "center", - padding: "12px 0px", - borderBottom: "1px solid rgba(" + hexToRgb(grayColor[0]) + ",0.3)" - }, - "& ul li:last-child": { - border: 0 - }, - "& ul li b": { - color: grayColor[1] - }, - "& h1": { - marginTop: "30px" - }, - "& h1 small": { - display: "inline-flex", - height: 0, - fontSize: "18px" - }, - "& h1 small:first-child": { - position: "relative", - top: "-17px", - fontSize: "26px" - }, - "& ul li svg,& ul li .fab,& ul li .fas,& ul li .far,& ul li .fal,& ul li .material-icons": { - position: "relative", - top: "7px" - } - }, - cardPricingColor: { - "& ul li": { - color: whiteColor, - borderColor: "rgba(" + hexToRgb(whiteColor) + ",0.3)", - "& b, & svg,& .fab,& .fas,& .far,& .fal,& .material-icons": { - color: whiteColor, - fontWeight: "700" - } - } - }, - cardProduct: { - marginTop: "30px" - }, - primary: { - background: - "linear-gradient(60deg," + primaryColor[1] + ", " + primaryColor[2] + ")", - "& h1 small": { - color: "rgba(" + hexToRgb(whiteColor) + ", 0.8)" - }, - color: whiteColor - }, - info: { - background: - "linear-gradient(60deg," + infoColor[1] + "," + infoColor[2] + ")", - "& h1 small": { - color: "rgba(" + hexToRgb(whiteColor) + ", 0.8)" - }, - color: whiteColor - }, - success: { - background: - "linear-gradient(60deg," + successColor[1] + "," + successColor[2] + ")", - "& h1 small": { - color: "rgba(" + hexToRgb(whiteColor) + ", 0.8)" - }, - color: whiteColor - }, - warning: { - background: - "linear-gradient(60deg," + warningColor[1] + "," + warningColor[2] + ")", - "& h1 small": { - color: "rgba(" + hexToRgb(whiteColor) + ", 0.8)" - }, - color: whiteColor - }, - danger: { - background: - "linear-gradient(60deg," + dangerColor[1] + "," + dangerColor[2] + ")", - "& h1 small": { - color: "rgba(" + hexToRgb(whiteColor) + ", 0.8)" - }, - color: whiteColor - }, - rose: { - background: - "linear-gradient(60deg," + roseColor[1] + "," + roseColor[2] + ")", - "& h1 small": { - color: "rgba(" + hexToRgb(whiteColor) + ", 0.8)" - }, - color: whiteColor - } -}; - -export default cardStyle; diff --git a/src/assets/jss/material-kit-pro-react/components/customDropdownStyle.js b/src/assets/jss/material-kit-pro-react/components/customDropdownStyle.js deleted file mode 100644 index 6688d840a..000000000 --- a/src/assets/jss/material-kit-pro-react/components/customDropdownStyle.js +++ /dev/null @@ -1,230 +0,0 @@ -import { - defaultFont, - primaryColor, - primaryBoxShadow, - infoColor, - infoBoxShadow, - successColor, - successBoxShadow, - warningColor, - warningBoxShadow, - dangerColor, - dangerBoxShadow, - roseColor, - roseBoxShadow, - blackColor, - whiteColor, - grayColor, - hexToRgb -} from "assets/jss/material-kit-pro-react.js"; - -const customDropdownStyle = theme => ({ - popperClose: { - pointerEvents: "none", - display: "none !important" - }, - pooperNav: { - [theme.breakpoints.down("sm")]: { - position: "static !important", - left: "unset !important", - top: "unset !important", - transform: "none !important", - willChange: "none !important", - "& > div": { - boxShadow: "none !important", - marginLeft: "1.5rem", - marginRight: "1.5rem", - transition: "none !important", - marginTop: "0px !important", - marginBottom: "5px !important", - padding: "0px !important" - } - } - }, - manager: { - "& > div > button:first-child > span:first-child, & > div > a:first-child > span:first-child": { - width: "100%" - } - }, - innerManager: { - display: "block", - "& > div > button,& > div > a": { - margin: "0px !important", - color: "inherit !important", - padding: "10px 20px !important", - "& > span:first-child": { - width: "100%", - justifyContent: "flex-start" - } - } - }, - target: { - "& > button:first-child > span:first-child, & > a:first-child > span:first-child": { - display: "inline-block" - }, - "& $caret": { - marginLeft: "0px" - } - }, - dropdown: { - borderRadius: "3px", - border: "0", - boxShadow: "0 2px 5px 0 rgba(" + hexToRgb(blackColor) + ", 0.26)", - top: "100%", - zIndex: "1000", - minWidth: "160px", - padding: "5px 0", - margin: "2px 0 0", - fontSize: "14px", - textAlign: "left", - listStyle: "none", - backgroundColor: whiteColor, - backgroundClip: "padding-box" - }, - darkModalGround:{ - backgroundColor:'#2C3040', - }, - darkModalFont:{ - color:'#fff !important', - }, - menuList: { - padding: "0" - }, - pooperResponsive: { - zIndex: "1200", - [theme.breakpoints.down("sm")]: { - zIndex: "1640", - position: "static", - float: "none", - width: "auto", - marginTop: "0", - backgroundColor: "transparent", - border: "0", - boxShadow: "none", - color: "black" - } - }, - dropdownItem: { - ...defaultFont, - fontSize: "13px", - padding: "10px 20px", - margin: "0 5px", - borderRadius: "2px", - position: "relative", - transition: "all 150ms linear", - display: "block", - clear: "both", - fontWeight: "400", - height: "100%", - color: grayColor[8], - whiteSpace: "nowrap", - minHeight: "unset" - }, - darkHover: { - "&:hover": { - boxShadow: - "0 4px 20px 0px rgba(" + - hexToRgb(blackColor) + - ", 0.14), 0 7px 10px -5px rgba(" + - hexToRgb(grayColor[9]) + - ", 0.4)", - backgroundColor: grayColor[9], - color: whiteColor - } - }, - primaryHover: { - "&:hover": { - backgroundColor: primaryColor[0], - color: whiteColor, - ...primaryBoxShadow - } - }, - infoHover: { - "&:hover": { - backgroundColor: infoColor[0], - color: whiteColor, - ...infoBoxShadow - } - }, - successHover: { - "&:hover": { - backgroundColor: successColor[0], - color: whiteColor, - ...successBoxShadow - } - }, - warningHover: { - "&:hover": { - backgroundColor: warningColor[0], - color: whiteColor, - ...warningBoxShadow - } - }, - dangerHover: { - "&:hover": { - backgroundColor: dangerColor[0], - color: whiteColor, - ...dangerBoxShadow - } - }, - roseHover: { - "&:hover": { - backgroundColor: roseColor[0], - color: whiteColor, - ...roseBoxShadow - } - }, - dropdownItemRTL: { - textAlign: "right" - }, - dropdownDividerItem: { - margin: "5px 0", - backgroundColor: "rgba(" + hexToRgb(blackColor) + ", 0.12)", - height: "1px", - overflow: "hidden" - }, - buttonIcon: { - width: "20px", - height: "20px" - }, - caret: { - transition: "all 150ms ease-in", - display: "inline-block", - width: "0", - height: "0", - marginLeft: "4px", - verticalAlign: "middle", - borderTop: "4px solid", - borderRight: "4px solid transparent", - borderLeft: "4px solid transparent" - }, - caretActive: { - transform: "rotate(180deg)" - }, - caretDropup: { - transform: "rotate(180deg)" - }, - caretRTL: { - marginRight: "4px" - }, - dropdownHeader: { - display: "block", - padding: "0.1875rem 1.25rem", - fontSize: "0.75rem", - lineHeight: "1.428571", - color: grayColor[10], - whiteSpace: "nowrap", - fontWeight: "inherit", - marginTop: "10px", - minHeight: "24px", - "&:hover,&:focus": { - backgroundColor: "transparent", - cursor: "auto" - } - }, - noLiPadding: { - padding: "0" - } -}); - -export default customDropdownStyle; diff --git a/src/assets/jss/material-kit-pro-react/components/customFileInputStyle.js b/src/assets/jss/material-kit-pro-react/components/customFileInputStyle.js deleted file mode 100644 index 80a7e7c71..000000000 --- a/src/assets/jss/material-kit-pro-react/components/customFileInputStyle.js +++ /dev/null @@ -1,20 +0,0 @@ -const customFileInputStyle = { - inputFile: { - opacity: "0", - position: "absolute", - top: "0", - right: "0", - bottom: "0", - left: "0", - width: "100%", - height: "100%", - zIndex: "-1" - }, - inputFileWrapper: { - "& button svg": { - color: "inherit" - } - } -}; - -export default customFileInputStyle; diff --git a/src/assets/jss/material-kit-pro-react/components/customInputStyle.js b/src/assets/jss/material-kit-pro-react/components/customInputStyle.js deleted file mode 100644 index 421b51c5c..000000000 --- a/src/assets/jss/material-kit-pro-react/components/customInputStyle.js +++ /dev/null @@ -1,102 +0,0 @@ -import { - primaryColor, - dangerColor, - successColor, - whiteColor, - grayColor, - defaultFont -} from "assets/jss/material-kit-pro-react.js"; - -const customInputStyle = { - disabled: { - "&:before": { - backgroundColor: "transparent !important" - } - }, - underline: { - "&:hover:not($disabled):before,&:before": { - borderBottomColor: grayColor[11] + " !important", - borderBottomWidth: "1px !important" - }, - "&:after": { - borderBottomColor: primaryColor[0] - } - }, - underlineError: { - "&:after": { - borderBottomColor: dangerColor[0] - } - }, - underlineSuccess: { - "&:after": { - borderBottomColor: successColor[0] - } - }, - labelRoot: { - ...defaultFont, - color: grayColor[12] + " !important", - fontWeight: "400", - fontSize: "14px", - lineHeight: "1.42857", - top: "10px", - letterSpacing: "unset", - "& + $underline": { - marginTop: "0px" - } - }, - labelRootError: { - color: dangerColor[0] + " !important" - }, - labelRootSuccess: { - color: successColor[0] + " !important" - }, - feedback: { - position: "absolute", - bottom: "4px", - right: "0", - zIndex: "2", - display: "block", - width: "24px", - height: "24px", - textAlign: "center", - pointerEvents: "none" - }, - formControl: { - margin: "0 0 17px 0", - paddingTop: "27px", - position: "relative", - "& svg,& .fab,& .far,& .fal,& .fas,& .material-icons": { - color: grayColor[13] - } - }, - whiteUnderline: { - "&:hover:not($disabled):before,&:before": { - borderBottomColor: whiteColor - }, - "&:after": { - borderBottomColor: whiteColor - } - }, - input: { - color: grayColor[13], - height: "unset", - "&,&::placeholder": { - fontSize: "14px", - fontFamily: '"Roboto", "Helvetica", "Arial", sans-serif', - fontWeight: "400", - lineHeight: "1.42857", - opacity: "1" - }, - "&::placeholder": { - color: grayColor[12] - } - }, - whiteInput: { - "&,&::placeholder": { - color: whiteColor, - opacity: "1" - } - } -}; - -export default customInputStyle; diff --git a/src/assets/jss/material-kit-pro-react/components/customLinearProgressStyle.js b/src/assets/jss/material-kit-pro-react/components/customLinearProgressStyle.js deleted file mode 100644 index 4f819a31b..000000000 --- a/src/assets/jss/material-kit-pro-react/components/customLinearProgressStyle.js +++ /dev/null @@ -1,65 +0,0 @@ -import { - primaryColor, - warningColor, - dangerColor, - successColor, - infoColor, - roseColor, - grayColor, - hexToRgb -} from "assets/jss/material-kit-pro-react.js"; - -const customLinearProgressStyle = { - root: { - height: "4px", - marginBottom: "20px", - overflow: "hidden" - }, - bar: { - height: "4px" - }, - primary: { - backgroundColor: primaryColor[0] - }, - warning: { - backgroundColor: warningColor[0] - }, - danger: { - backgroundColor: dangerColor[0] - }, - success: { - backgroundColor: successColor[0] - }, - info: { - backgroundColor: infoColor[0] - }, - rose: { - backgroundColor: roseColor[0] - }, - gray: { - backgroundColor: grayColor[0] - }, - primaryBackground: { - background: "rgba(" + hexToRgb(primaryColor[0]) + ", 0.2)" - }, - warningBackground: { - background: "rgba(" + hexToRgb(warningColor[0]) + ", 0.2)" - }, - dangerBackground: { - background: "rgba(" + hexToRgb(dangerColor[0]) + ", 0.2)" - }, - successBackground: { - background: "rgba(" + hexToRgb(successColor[0]) + ", 0.2)" - }, - infoBackground: { - background: "rgba(" + hexToRgb(infoColor[0]) + ", 0.2)" - }, - roseBackground: { - background: "rgba(" + hexToRgb(roseColor[0]) + ", 0.2)" - }, - grayBackground: { - background: "rgba(" + hexToRgb(grayColor[6]) + ", 0.2)" - } -}; - -export default customLinearProgressStyle; diff --git a/src/assets/jss/material-kit-pro-react/components/customTabsStyle.js b/src/assets/jss/material-kit-pro-react/components/customTabsStyle.js deleted file mode 100644 index 6351bb855..000000000 --- a/src/assets/jss/material-kit-pro-react/components/customTabsStyle.js +++ /dev/null @@ -1,70 +0,0 @@ -import { - whiteColor, - defaultFont, - hexToRgb -} from "assets/jss/material-kit-pro-react.js"; - -const customTabsStyle = { - cardTitle: { - ...defaultFont, - float: "left", - padding: "10px 10px 10px 0", - lineHeight: "24px", - fontSize: "14px", - color: whiteColor - }, - cardTitleRTL: { - float: "right", - padding: "10px 0px 10px 10px !important" - }, - displayNone: { - display: "none" - }, - tabsContainer: {}, - tabsContainerRTL: { - float: "right" - }, - tabIcon: { - width: "24px", - height: "24px", - marginRight: "4px" - }, - customTabsRoot: { - minHeight: "unset !important" - }, - customTabSelected: { - backgroundColor: "rgba(" + hexToRgb(whiteColor) + ", 0.2)", - transition: "background-color .4s" - }, - customTabRoot: { - width: "auto", - minWidth: "70px", - borderRadius: "3px", - opacity: "1", - height: "auto", - padding: "10px 15px", - display: "block", - minHeight: "unset", - fontWeight: "500", - fontSize: "12px", - lineHeight: "24px" - }, - customTabWrapper: { - display: "inline-block", - minHeight: "unset !important", - minWidth: "unset !important", - width: "unset !important", - height: "unset !important", - maxWidth: "unset !important", - maxHeight: "unset !important", - "& > svg": { - verticalAlign: "middle", - margin: "-1.55px 5px 0 0 !important" - }, - "&,& *": { - letterSpacing: "normal !important" - } - } -}; - -export default customTabsStyle; diff --git a/src/assets/jss/material-kit-pro-react/components/footerLinksStyle.js b/src/assets/jss/material-kit-pro-react/components/footerLinksStyle.js deleted file mode 100644 index a46e43fb1..000000000 --- a/src/assets/jss/material-kit-pro-react/components/footerLinksStyle.js +++ /dev/null @@ -1,127 +0,0 @@ -import { - mlAuto, - container, - primaryColor, - hoverColor - } from "assets/jss/material-kit-pro-react.js"; - - import tooltip from "assets/jss/material-kit-pro-react/tooltipsStyle.js"; - - - -const footerLinksStyle = theme => ({ - container:{ - ...container, - padding:'32px 0 32px 0', - borderTop: '1px solid rgba(255, 255, 255, .04)', - textAlign: 'center', - }, - fixed:{ - position:'fixed', - bottom:'0', - left:'0', - right:'0', - margin:'auto', - }, - list: { - [theme.breakpoints.up("md")]: { - WebkitBoxAlign: "center", - MsFlexAlign: "center", - alignItems: "center", - WebkitBoxOrient: "horizontal", - WebkitBoxDirection: "normal", - MsFlexDirection: "row", - flexDirection: "row" - }, - marginTop: "0px", - display: "flex", - justifyContent:'center', - paddingLeft: "0", - marginBottom: "0", - listStyle: "none", - padding: "0", - }, - - listItem:{ - float: "left", - color: "inherit", - position: "relative", - display: "block", - width: "auto", - }, - navLink: { - background: primaryColor[0], - position: "relative", - padding: "0.9375rem", - width: "44px", - height: "44px", - borderRadius: "50%", - textDecoration: "none", - margin: "0px", - display: "inline-flex", - "&:hover,&:focus": { - background: hoverColor[0], - }, - [theme.breakpoints.down("sm")]: { - marginLeft: "0px", - marginBottom: "8px", - marginTop: "8px", - textAlign: "left", - }, - "& svg": { - marginRight: "3px", - width: "20px", - height: "20px" - }, - "& i": { - position: 'absolute', - }, - }, - navLinkJustIcon: { - "& .fab,& .far,& .fal,& .fas,& .material-icons": { - marginRight: "0px" - }, - "& svg": { - marginRight: "0px" - }, - - }, - socialIcons: { - position: "relative", - fontSize: "1.25rem", - maxWidth: "44px" - }, - ...tooltip, - marginRight5: { - marginRight: "5px" - }, - mlAuto, - popover: { - pointerEvents: 'none', - }, - paper: { - padding: theme.spacing(1), - }, - extraContent: { - color:primaryColor[0], - fontWeight: "400", - 'a&:hover, a&:focus':{ - color:hoverColor[0], - }, - 'a:visited': { - color:primaryColor[0], - }, - }, - linkList: { - margin:'24px 80px', - [theme.breakpoints.down("xs")]: { - margin:'0' - }, - }, - linkItem: { - whiteSpace:'nowrap', - }, - -}) - -export default footerLinksStyle; \ No newline at end of file diff --git a/src/assets/jss/material-kit-pro-react/components/footerStyle.js b/src/assets/jss/material-kit-pro-react/components/footerStyle.js deleted file mode 100644 index a7124f3b9..000000000 --- a/src/assets/jss/material-kit-pro-react/components/footerStyle.js +++ /dev/null @@ -1,172 +0,0 @@ -import { - container, - primaryColor, - whiteColor, - btnLink, - grayColor, - twitterColor, - dribbbleColor, - instagramColor, - hexToRgb -} from "assets/jss/material-kit-pro-react.js"; - -const footerStyle = { - left: { - float: "left!important", - display: "block" - }, - right: { - padding: "15px 0", - margin: "0", - float: "right" - }, - rightLinks: { - float: "right!important", - "& ul": { - marginBottom: 0, - marginTop: 10, - padding: 0, - listStyle: "none", - height: 38, - "& li": { - display: "inline-block" - } - }, - "& i": { - fontSize: "20px" - } - }, - footer: { - padding: "0.9375rem 0", - textAlign: "center", - display: "flex", - zIndex: "2", - position: "relative", - "& ul": { - marginBottom: "0", - padding: 0, - listStyle: "none" - } - }, - big: { - padding: "1.875rem 0", - "& h5, & h4": { - fontWeight: 700, - fontFamily: "Roboto Slab,Times New Roman,serif", - marginBottom: "15px" - }, - "& p": { - color: grayColor[0] - } - }, - content: { - textAlign: "left" - }, - a: { - color: primaryColor[0], - textDecoration: "none", - backgroundColor: "transparent" - }, - dark: { - background: - "radial-gradient(ellipse at center," + - grayColor[4] + - " 0," + - grayColor[5] + - " 100%)", - backgroundSize: "550% 450%", - color: whiteColor, - "& p": { - color: grayColor[0] - }, - "& i": { - color: whiteColor - }, - "& a": { - color: whiteColor, - opacity: ".86", - "&:visited": { - color: whiteColor - }, - "&:focus, &:hover": { - opacity: 1 - } - }, - "& hr": { - borderColor: "rgba(" + hexToRgb(whiteColor) + ",0.2)" - }, - "& $btnTwitter, & $btnDribbble, & $btnInstagram": { - color: whiteColor - } - }, - white: { - backgroundColor: whiteColor, - color: grayColor[1], - textDecoration: "none", - "& a": { - "&:visited": { - color: grayColor[1] - }, - "&:hover, &:focus": { - color: grayColor[20] - } - } - }, - container, - list: { - marginBottom: "0", - padding: "0", - marginTop: "0" - }, - inlineBlock: { - display: "inline-block", - padding: "0px", - width: "auto" - }, - icon: { - width: "18px", - height: "18px", - position: "relative", - top: "3px" - }, - iconSocial: { - width: "41px", - height: "41px", - fontSize: "24px", - minWidth: "41px", - padding: 0, - overflow: "hidden", - position: "relative" - }, - btnTwitter: { - ...btnLink, - color: twitterColor - }, - btnDribbble: { - ...btnLink, - color: dribbbleColor - }, - btnInstagram: { - ...btnLink, - color: instagramColor - }, - footerBrand: { - height: "50px", - padding: "15px 15px", - fontSize: "18px", - lineHeight: "50px", - marginLeft: "-15px", - color: grayColor[1], - textDecoration: "none", - fontWeight: 700, - fontFamily: "Roboto Slab,Times New Roman,serif" - }, - pullCenter: { - display: "inline-block", - float: "none" - }, - clearFix: { - clear: "both" - } -}; -export default footerStyle; diff --git a/src/assets/jss/material-kit-pro-react/components/headerLinksStyle.js b/src/assets/jss/material-kit-pro-react/components/headerLinksStyle.js deleted file mode 100644 index 200f70437..000000000 --- a/src/assets/jss/material-kit-pro-react/components/headerLinksStyle.js +++ /dev/null @@ -1,217 +0,0 @@ -import { - grayColor, - whiteColor, - mlAuto, - hexToRgb -} from "assets/jss/material-kit-pro-react.js"; - -import tooltip from "assets/jss/material-kit-pro-react/tooltipsStyle.js"; - -const headerLinksStyle = theme => ({ - list: { - [theme.breakpoints.up("md")]: { - WebkitBoxAlign: "center", - MsFlexAlign: "center", - alignItems: "center", - WebkitBoxOrient: "horizontal", - WebkitBoxDirection: "normal", - MsFlexDirection: "row", - flexDirection: "row" - }, - [theme.breakpoints.down("sm")]: { - display: "block" - }, - marginTop: "0px", - display: "flex", - paddingLeft: "0", - marginBottom: "0", - listStyle: "none", - padding: "0" - }, - listItem: { - float: "left", - color: "inherit", - position: "relative", - display: "block", - width: "auto", - margin: "0", - padding: "0", - [theme.breakpoints.down("sm")]: { - "& ul": { - maxHeight: "400px", - overflow: "scroll" - }, - width: "100%", - "&:not(:last-child)": { - "&:after": { - width: "calc(100% - 30px)", - content: '""', - display: "block", - height: "1px", - marginLeft: "15px", - backgroundColor: grayColor[14] - } - } - } - }, - listItemText: { - padding: "0 !important" - }, - navLink: { - color: "inherit", - position: "relative", - padding: "0.9375rem", - fontWeight: "400", - fontSize: "12px", - textTransform: "uppercase", - lineHeight: "20px", - textDecoration: "none", - margin: "0px", - display: "inline-flex", - "&:hover,&:focus": { - color: "inherit" - }, - "& .fab,& .far,& .fal,& .fas,& .material-icons": { - position: "relative", - top: "2px", - marginTop: "-4px", - marginRight: "4px", - marginBottom: "0px", - fontSize: "1.25rem" - }, - [theme.breakpoints.down("sm")]: { - width: "calc(100% - 30px)", - marginLeft: "15px", - marginBottom: "8px", - marginTop: "8px", - textAlign: "left", - "& > span:first-child": { - justifyContent: "flex-start" - } - }, - "& svg": { - marginRight: "3px", - width: "20px", - height: "20px" - } - }, - navLinkJustIcon: { - "& .fab,& .far,& .fal,& .fas,& .material-icons": { - marginRight: "0px" - }, - "& svg": { - marginRight: "0px" - } - }, - navButton: { - position: "relative", - fontWeight: "400", - fontSize: "12px", - textTransform: "uppercase", - lineHeight: "20px", - textDecoration: "none", - margin: "0px", - display: "inline-flex", - [theme.breakpoints.down("sm")]: { - width: "calc(100% - 30px)", - marginLeft: "15px", - marginBottom: "5px", - marginTop: "5px", - textAlign: "left", - "& > span:first-child": { - justifyContent: "flex-start" - } - }, - "& $icons": { - marginRight: "3px" - } - }, - notificationNavLink: { - color: "inherit", - padding: "0.9375rem", - fontWeight: "400", - fontSize: "12px", - textTransform: "uppercase", - lineHeight: "20px", - textDecoration: "none", - margin: "0px", - display: "inline-flex" - }, - registerNavLink: { - position: "relative", - fontWeight: "400", - fontSize: "12px", - textTransform: "uppercase", - lineHeight: "20px", - textDecoration: "none", - margin: "0px", - display: "inline-flex" - }, - navLinkActive: { - "&, &:hover, &:focus,&:active ": { - color: "inherit", - backgroundColor: "rgba(" + hexToRgb(whiteColor) + ", 0.1)" - } - }, - icons: { - width: "20px", - height: "20px", - marginRight: "14px" - }, - dropdownIcons: { - width: "24px", - height: "24px", - marginRight: "14px", - opacity: "0.5", - marginTop: "-4px", - top: "1px", - verticalAlign: "middle", - fontSize: "24px", - position: "relative" - }, - socialIcons: { - position: "relative", - fontSize: "1.25rem", - maxWidth: "24px" - }, - dropdownLink: { - "&,&:hover,&:focus": { - color: "inherit", - textDecoration: "none", - display: "flex", - padding: "0.75rem 1.25rem 0.75rem 0.75rem" - } - }, - ...tooltip, - marginRight5: { - marginRight: "5px" - }, - collapse: { - [theme.breakpoints.up("md")]: { - display: "flex !important", - MsFlexPreferredSize: "auto", - flexBasis: "auto" - }, - WebkitBoxFlex: "1", - MsFlexPositive: "1", - flexGrow: "1", - WebkitBoxAlign: "center", - MsFlexAlign: "center", - alignItems: "center" - }, - mlAuto, - popover: { - pointerEvents: 'none', - }, - paper: { - padding: theme.spacing(1), - }, - nowShowPage:{ - borderBottom:'1px solid #FF2D82', - [theme.breakpoints.down("sm")]: { - border:'0' - }, - }, -}); - -export default headerLinksStyle; diff --git a/src/assets/jss/material-kit-pro-react/components/headerStyle.js b/src/assets/jss/material-kit-pro-react/components/headerStyle.js deleted file mode 100644 index c8011f7cd..000000000 --- a/src/assets/jss/material-kit-pro-react/components/headerStyle.js +++ /dev/null @@ -1,223 +0,0 @@ -import { - container, - defaultFont, - primaryColor, - infoColor, - successColor, - warningColor, - dangerColor, - roseColor, - transition, - boxShadow, - drawerWidth, - blackColor, - whiteColor, - grayColor, - hexToRgb -} from "assets/jss/material-kit-pro-react.js"; - -const headerStyle = theme => ({ - appBar: { - display: "flex", - border: "0", - borderRadius: "3px", - padding: "0.625rem 0", - marginBottom: "20px", - color: grayColor[15], - width: "100%", - backgroundColor: whiteColor, - boxShadow: - "0 4px 18px 0px rgba(" + - hexToRgb(blackColor) + - ", 0.12), 0 7px 10px -5px rgba(" + - hexToRgb(blackColor) + - ", 0.15)", - transition: "all 150ms ease 0s", - alignItems: "center", - flexFlow: "row nowrap", - justifyContent: "flex-start", - position: "relative" - }, - absolute: { - position: "absolute", - top: "auto" - }, - fixed: { - position: "fixed" - }, - container: { - ...container, - minHeight: "50px", - alignItems: "center", - justifyContent: "space-between", - display: "flex", - flexWrap: "nowrap" - }, - title: { - letterSpacing: "unset", - "&,& a": { - ...defaultFont, - minWidth: "unset", - lineHeight: "30px", - fontSize: "24px", - fontWeight: "700", - borderRadius: "3px", - textTransform: "none", - whiteSpace: "nowrap", - color: "inherit", - "&:hover,&:focus": { - color: "inherit", - background: "transparent" - } - }, - "& a": { - marginLeft: "8px", - } - }, - appResponsive: { - margin: "20px 10px", - marginTop: "0px" - }, - primary: { - backgroundColor: primaryColor[0], - color: whiteColor, - boxShadow: - "0 4px 20px 0px rgba(" + - hexToRgb(blackColor) + - ", 0.14), 0 7px 12px -5px rgba(" + - hexToRgb(primaryColor[0]) + - ", 0.46)" - }, - info: { - backgroundColor: infoColor[0], - color: whiteColor, - boxShadow: - "0 4px 20px 0px rgba(" + - hexToRgb(blackColor) + - ", 0.14), 0 7px 12px -5px rgba(" + - hexToRgb(infoColor[0]) + - ", 0.46)" - }, - success: { - backgroundColor: successColor[0], - color: whiteColor, - boxShadow: - "0 4px 20px 0px rgba(" + - hexToRgb(blackColor) + - ", 0.14), 0 7px 12px -5px rgba(" + - hexToRgb(successColor[0]) + - ", 0.46)" - }, - warning: { - backgroundColor: warningColor[0], - color: whiteColor, - boxShadow: - "0 4px 20px 0px rgba(" + - hexToRgb(blackColor) + - ", 0.14), 0 7px 12px -5px rgba(" + - hexToRgb(warningColor[0]) + - ", 0.46)" - }, - danger: { - backgroundColor: dangerColor[0], - color: whiteColor, - boxShadow: - "0 4px 20px 0px rgba(" + - hexToRgb(blackColor) + - ", 0.14), 0 7px 12px -5px rgba(" + - hexToRgb(dangerColor[0]) + - ", 0.46)" - }, - rose: { - backgroundColor: roseColor[0], - color: whiteColor, - boxShadow: - "0 4px 20px 0px rgba(" + - hexToRgb(blackColor) + - ", 0.14), 0 7px 12px -5px rgba(" + - hexToRgb(roseColor[0]) + - ", 0.46)" - }, - transparent: { - backgroundColor: "transparent !important", - boxShadow: "none", - paddingTop: "25px", - color: whiteColor - }, - dark: { - color: whiteColor, - backgroundColor: "#2C3040", - // boxShadow: - // "0 4px 20px 0px rgba(" + - // hexToRgb(blackColor) + - // ", 0.14), 0 7px 12px -5px rgba(" + - // hexToRgb(grayColor[9]) + - // ", 0.46)" - boxShadow: "0px 8px 12px 0px rgba(0, 0, 0, 0.06)" - }, - white: { - border: "0", - padding: "0.625rem 0", - marginBottom: "20px", - color: grayColor[15], - backgroundColor: whiteColor + " !important", - boxShadow: - "0 4px 18px 0px rgba(" + - hexToRgb(blackColor) + - ", 0.12), 0 7px 10px -5px rgba(" + - hexToRgb(blackColor) + - ", 0.15)" - }, - drawerPaper: { - border: "none", - bottom: "0", - transitionProperty: "top, bottom, width", - transitionDuration: ".2s, .2s, .35s", - transitionTimingFunction: "linear, linear, ease", - width: drawerWidth, - ...boxShadow, - position: "fixed", - display: "block", - top: "0", - height: "100vh", - right: "0", - left: "auto", - visibility: "visible", - overflowY: "visible", - borderTop: "none", - textAlign: "left", - paddingRight: "0px", - paddingLeft: "0", - ...transition - }, - hidden: { - width: "100%" - }, - collapse: { - [theme.breakpoints.up("md")]: { - display: "flex !important", - MsFlexPreferredSize: "auto", - flexBasis: "auto" - }, - WebkitBoxFlex: "1", - MsFlexPositive: "1", - flexGrow: "1", - WebkitBoxAlign: "center", - MsFlexAlign: "center", - alignItems: "center" - }, - closeButtonDrawer: { - position: "absolute", - right: "8px", - top: "9px", - zIndex: "1" - }, - tabs:{ - width:'60xh', - display:'flex', - justifyContent:'space-between', - overflow:'visible', - } -}); - -export default headerStyle; diff --git a/src/assets/jss/material-kit-pro-react/components/infoStyle.js b/src/assets/jss/material-kit-pro-react/components/infoStyle.js deleted file mode 100644 index db90440b3..000000000 --- a/src/assets/jss/material-kit-pro-react/components/infoStyle.js +++ /dev/null @@ -1,76 +0,0 @@ -import { - primaryColor, - warningColor, - dangerColor, - successColor, - infoColor, - roseColor, - grayColor, - title -} from "assets/jss/material-kit-pro-react.js"; - -const infoStyle = { - infoArea: { - maxWidth: "360px", - margin: "0 auto", - padding: "70px 0 30px" - }, - iconWrapper: { - float: "left", - marginTop: "24px", - marginRight: "10px" - }, - primary: { - color: primaryColor[0] - }, - warning: { - color: warningColor[0] - }, - danger: { - color: dangerColor[0] - }, - success: { - color: successColor[0] - }, - info: { - color: infoColor[0] - }, - rose: { - color: roseColor[0] - }, - gray: { - color: grayColor[0] - }, - icon: { - width: "2.25rem", - height: "2.25rem", - fontSize: "2.25rem" - }, - descriptionWrapper: { - color: grayColor[0], - overflow: "hidden" - }, - title: { - ...title, - margin: "1.75rem 0 0.875rem !important", - minHeight: "unset" - }, - description: { - color: grayColor[0], - overflow: "hidden", - marginTop: "0px", - "& p": { - color: grayColor[0], - fontSize: "14px" - } - }, - iconWrapperVertical: { - float: "none" - }, - iconVertical: { - width: "61px", - height: "61px" - } -}; - -export default infoStyle; diff --git a/src/assets/jss/material-kit-pro-react/components/instructionStyle.js b/src/assets/jss/material-kit-pro-react/components/instructionStyle.js deleted file mode 100644 index 34cceb40e..000000000 --- a/src/assets/jss/material-kit-pro-react/components/instructionStyle.js +++ /dev/null @@ -1,13 +0,0 @@ -const instructionStyle = { - instruction: {}, - picture: {}, - image: { - width: "100%", - height: "auto", - borderRadius: "6px", - display: "block", - maxWidth: "100%" - } -}; - -export default instructionStyle; diff --git a/src/assets/jss/material-kit-pro-react/components/mediaStyle.js b/src/assets/jss/material-kit-pro-react/components/mediaStyle.js deleted file mode 100644 index 68b37132f..000000000 --- a/src/assets/jss/material-kit-pro-react/components/mediaStyle.js +++ /dev/null @@ -1,70 +0,0 @@ -import { - title, - blackColor, - grayColor, - hexToRgb -} from "assets/jss/material-kit-pro-react.js"; - -const mediaStyle = { - media: { - display: "flex", - WebkitBoxAlign: "start", - alignItems: "flex-start", - "& p": { - color: grayColor[0], - fontSize: "1rem", - lineHeight: "1.6em" - }, - "& $media $mediaBody": { - paddingRight: "0px" - } - }, - mediaLink: { - padding: "10px", - float: "left !important" - }, - mediaAvatar: { - margin: "0 auto", - width: "64px", - height: "64px", - overflow: "hidden", - borderRadius: "50%", - marginRight: "15px", - boxShadow: - "0 6px 10px 0 rgba(" + - hexToRgb(blackColor) + - ", 0.14), 0 1px 18px 0 rgba(" + - hexToRgb(blackColor) + - ", 0.12), 0 3px 5px -1px rgba(" + - hexToRgb(blackColor) + - ", 0.2)", - "& img": { - width: "100%" - } - }, - mediaBody: { - paddingRight: "10px", - WebkitBoxFlex: "1", - flex: "1" - }, - mediaHeading: { - ...title, - marginTop: "10px", - marginBottom: "10px", - "& small": { - fontFamily: '"Roboto", "Helvetica", "Arial", sans-serif' - } - }, - mediaFooter: { - "& button, & a": { - marginBottom: "20px" - }, - "&:after": { - display: "table", - content: '" "', - clear: "both" - } - } -}; - -export default mediaStyle; diff --git a/src/assets/jss/material-kit-pro-react/components/navPillsStyle.js b/src/assets/jss/material-kit-pro-react/components/navPillsStyle.js deleted file mode 100644 index 12d2003ad..000000000 --- a/src/assets/jss/material-kit-pro-react/components/navPillsStyle.js +++ /dev/null @@ -1,162 +0,0 @@ -import { - roseColor, - primaryColor, - infoColor, - successColor, - warningColor, - dangerColor, - blackColor, - whiteColor, - grayColor, - hexToRgb -} from "assets/jss/material-kit-pro-react.js"; - -const navPillsStyle = theme => ({ - root: { - marginTop: "20px", - paddingLeft: "0", - marginBottom: "0", - overflow: "visible !important" - }, - flexContainer: { - [theme.breakpoints.down("xs")]: { - display: "flex", - flexWrap: "wrap" - } - }, - displayNone: { - display: "none !important" - }, - fixed: { - overflow: "visible !important" - }, - horizontalDisplay: { - display: "block" - }, - pills: { - float: "left", - position: "relative", - display: "block", - borderRadius: "30px", - minWidth: "100px", - textAlign: "center", - transition: "all .3s", - padding: "10px 15px", - color: grayColor[15], - height: "auto", - opacity: "1", - maxWidth: "100%", - margin: "0 5px", - minHeight: "unset", - lineHeight: "24px", - textTransform: "uppercase", - fontSize: "12px", - fontWeight: "500" - }, - pillsWithIcons: { - borderRadius: "4px" - }, - tabIcon: { - width: "30px", - height: "30px", - display: "block", - margin: "15px 0 !important" - }, - horizontalPills: { - width: "100%", - float: "none !important", - "& + button": { - margin: "10px 0" - } - }, - contentWrapper: { - marginTop: "20px", - "& .react-swipeable-view-container > div > div": { - paddingLeft: "15px", - paddingRight: "15px" - } - }, - primary: { - "&,&:hover": { - color: whiteColor, - backgroundColor: primaryColor[0], - boxShadow: - "0 4px 20px 0px rgba(" + - hexToRgb(blackColor) + - ", 0.14), 0 7px 10px -5px rgba(" + - hexToRgb(primaryColor[0]) + - ", 0.4)" - } - }, - info: { - "&,&:hover": { - color: whiteColor, - backgroundColor: infoColor[0], - boxShadow: - "0 4px 20px 0px rgba(" + - hexToRgb(blackColor) + - ", 0.14), 0 7px 10px -5px rgba(" + - hexToRgb(successColor[0]) + - ", 0.4)" - } - }, - success: { - "&,&:hover": { - color: whiteColor, - backgroundColor: successColor[0], - boxShadow: - "0 2px 2px 0 rgba(" + - hexToRgb(successColor[0]) + - ", 0.14), 0 3px 1px -2px rgba(" + - hexToRgb(successColor[0]) + - ", 0.2), 0 1px 5px 0 rgba(" + - hexToRgb(successColor[0]) + - ", 0.12)" - } - }, - warning: { - "&,&:hover": { - color: whiteColor, - backgroundColor: warningColor[0], - boxShadow: - "0 4px 20px 0px rgba(" + - hexToRgb(blackColor) + - ", 0.14), 0 7px 10px -5px rgba(" + - hexToRgb(warningColor[0]) + - ", 0.4)" - } - }, - danger: { - "&,&:hover": { - color: whiteColor, - backgroundColor: dangerColor[0], - boxShadow: - "0 4px 20px 0px rgba(" + - hexToRgb(blackColor) + - ", 0.14), 0 7px 10px -5px rgba(" + - hexToRgb(warningColor[0]) + - ", 0.4)" - } - }, - rose: { - "&,&:hover": { - color: whiteColor, - backgroundColor: roseColor[0], - boxShadow: - "0 4px 20px 0px rgba(" + - hexToRgb(blackColor) + - ", 0.14), 0 7px 10px -5px rgba(" + - hexToRgb(roseColor[0]) + - ", 0.4)" - } - }, - alignCenter: { - alignItems: "center", - justifyContent: "center" - }, - tabLabelContainer: { - padding: "unset !important" - } -}); - -export default navPillsStyle; diff --git a/src/assets/jss/material-kit-pro-react/components/paginationStyle.js b/src/assets/jss/material-kit-pro-react/components/paginationStyle.js deleted file mode 100644 index 7461e5931..000000000 --- a/src/assets/jss/material-kit-pro-react/components/paginationStyle.js +++ /dev/null @@ -1,161 +0,0 @@ -import { - grayColor, - primaryColor, - infoColor, - successColor, - warningColor, - whiteColor, - dangerColor, - hexToRgb -} from "assets/jss/material-kit-pro-react.js"; - -const paginationStyle = { - pagination: { - display: "flex", - paddingLeft: "0", - listStyle: "none", - borderRadius: "0.25rem" - }, - paginationItem: { - display: "inline" - }, - paginationLink: { - ":first-of-type": { - marginleft: "0" - }, - letterSpacing: "unset", - border: "0", - borderRadius: "30px !important", - transition: "all .3s", - padding: "0px 11px", - margin: "0 3px", - minWidth: "30px", - height: "30px", - minHeight: "auto", - lineHeight: "30px", - fontWeight: "400", - fontSize: "12px", - textTransform: "uppercase", - background: "transparent", - position: "relative", - float: "left", - textDecoration: "none", - boxSizing: "border-box", - "&,&:hover,&:focus": { - color: grayColor[0] - }, - "&:hover,&:focus": { - zIndex: "3", - backgroundColor: grayColor[2], - borderColor: grayColor[6] - }, - "&:hover": { - cursor: "pointer" - } - }, - primary: { - "&,&:hover,&:focus": { - backgroundColor: primaryColor[0], - borderColor: primaryColor[0], - color: whiteColor, - boxShadow: - "0 4px 5px 0 rgba(" + - hexToRgb(primaryColor[0]) + - ", 0.14), 0 1px 10px 0 rgba(" + - hexToRgb(primaryColor[0]) + - ", 0.12), 0 2px 4px -1px rgba(" + - hexToRgb(primaryColor[0]) + - ", 0.2)" - }, - "&:hover,&:focus": { - zIndex: "2", - cursor: "default" - } - }, - info: { - "&,&:hover,&:focus": { - backgroundColor: infoColor[0], - borderColor: infoColor[0], - color: whiteColor, - boxShadow: - "0 4px 5px 0 rgba(" + - hexToRgb(infoColor[0]) + - ", 0.14), 0 1px 10px 0 rgba(" + - hexToRgb(infoColor[0]) + - ", 0.12), 0 2px 4px -1px rgba(" + - hexToRgb(infoColor[0]) + - ", 0.2)" - }, - "&:hover,&:focus": { - zIndex: "2", - cursor: "default" - } - }, - success: { - "&,&:hover,&:focus": { - backgroundColor: successColor[0], - borderColor: successColor[0], - color: whiteColor, - boxShadow: - "0 4px 5px 0 rgba(" + - hexToRgb(successColor[0]) + - ", 0.14), 0 1px 10px 0 rgba(" + - hexToRgb(successColor[0]) + - ", 0.12), 0 2px 4px -1px rgba(" + - hexToRgb(successColor[0]) + - ", 0.2)" - }, - "&:hover,&:focus": { - zIndex: "2", - cursor: "default" - } - }, - warning: { - "&,&:hover,&:focus": { - backgroundColor: warningColor[0], - borderColor: warningColor[0], - color: whiteColor, - boxShadow: - "0 4px 5px 0 rgba(" + - hexToRgb(warningColor[0]) + - ", 0.14), 0 1px 10px 0 rgba(" + - hexToRgb(warningColor[0]) + - ", 0.12), 0 2px 4px -1px rgba(" + - hexToRgb(warningColor[0]) + - ", 0.2)" - }, - "&:hover,&:focus": { - zIndex: "2", - cursor: "default" - } - }, - danger: { - "&,&:hover,&:focus": { - backgroundColor: dangerColor[0], - borderColor: dangerColor[0], - color: whiteColor, - boxShadow: - "0 4px 5px 0 rgba(" + - hexToRgb(dangerColor[0]) + - ", 0.14), 0 1px 10px 0 rgba(" + - hexToRgb(dangerColor[0]) + - ", 0.12), 0 2px 4px -1px rgba(" + - hexToRgb(dangerColor[0]) + - ", 0.2)" - }, - "&:hover,&:focus": { - zIndex: "2", - cursor: "default" - } - }, - disabled: { - "&,&:hover,&:focus": { - color: grayColor[10], - cursor: "not-allowed", - backgroundColor: whiteColor, - borderColor: grayColor[6] - } - } -}; - -export default paginationStyle; diff --git a/src/assets/jss/material-kit-pro-react/components/parallaxStyle.js b/src/assets/jss/material-kit-pro-react/components/parallaxStyle.js deleted file mode 100644 index d0d37794e..000000000 --- a/src/assets/jss/material-kit-pro-react/components/parallaxStyle.js +++ /dev/null @@ -1,187 +0,0 @@ -import { - blackColor, - primaryColor, - roseColor, - infoColor, - successColor, - warningColor, - dangerColor, - hexToRgb -} from "assets/jss/material-kit-pro-react.js"; - -const parallaxStyle = { - parallax: { - height: "100vh", - maxHeight: "1600px", - overflow: "hidden", - position: "relative", - backgroundPosition: "50%", - backgroundSize: "cover", - margin: "0", - padding: "0", - border: "0", - display: "flex", - alignItems: "center" - }, - filter: {}, - primaryColor: { - "&:before": { - background: "rgba(" + hexToRgb(blackColor) + ", 0.5)" - }, - "&:after": { - background: - "linear-gradient(60deg,rgba(" + - hexToRgb(primaryColor[4]) + - ",.56),rgba(" + - hexToRgb(primaryColor[5]) + - ",.95))" - }, - "&:after,&:before": { - position: "absolute", - zIndex: "1", - width: "100%", - height: "100%", - display: "block", - left: "0", - top: "0", - content: "''" - } - }, - roseColor: { - "&:before": { - background: "rgba(" + hexToRgb(blackColor) + ", 0.5)" - }, - "&:after": { - background: - "linear-gradient(60deg,rgba(" + - hexToRgb(roseColor[3]) + - ",.56),rgba(" + - hexToRgb(roseColor[4]) + - ",.95))" - }, - "&:after,&:before": { - position: "absolute", - zIndex: "1", - width: "100%", - height: "100%", - display: "block", - left: "0", - top: "0", - content: "''" - } - }, - darkColor: { - "&:before": { - background: "rgba(" + hexToRgb(blackColor) + ", 0.5)" - }, - "&:after,&:before": { - position: "absolute", - zIndex: "1", - width: "100%", - height: "100%", - display: "block", - left: "0", - top: "0", - content: "''" - } - }, - infoColor: { - "&:before": { - background: "rgba(" + hexToRgb(blackColor) + ", 0.5)" - }, - "&:after": { - background: - "linear-gradient(60deg,rgba(" + - hexToRgb(infoColor[6]) + - ",.56),rgba(" + - hexToRgb(infoColor[7]) + - ",.95))" - }, - "&:after,&:before": { - position: "absolute", - zIndex: "1", - width: "100%", - height: "100%", - display: "block", - left: "0", - top: "0", - content: "''" - } - }, - successColor: { - "&:before": { - background: "rgba(" + hexToRgb(blackColor) + ", 0.5)" - }, - "&:after": { - background: - "linear-gradient(60deg,rgba(" + - hexToRgb(successColor[6]) + - ",.56),rgba(" + - hexToRgb(successColor[7]) + - ",.95))" - }, - "&:after,&:before": { - position: "absolute", - zIndex: "1", - width: "100%", - height: "100%", - display: "block", - left: "0", - top: "0", - content: "''" - } - }, - warningColor: { - "&:before": { - background: "rgba(" + hexToRgb(blackColor) + ", 0.5)" - }, - "&:after": { - background: - "linear-gradient(60deg,rgba(" + - hexToRgb(warningColor[6]) + - ",.56),rgba(" + - hexToRgb(warningColor[7]) + - ",.95))" - }, - "&:after,&:before": { - position: "absolute", - zIndex: "1", - width: "100%", - height: "100%", - display: "block", - left: "0", - top: "0", - content: "''" - } - }, - dangerColor: { - "&:before": { - background: "rgba(" + hexToRgb(blackColor) + ", 0.5)" - }, - "&:after": { - background: - "linear-gradient(60deg,rgba(" + - hexToRgb(dangerColor[6]) + - ",.56),rgba(" + - hexToRgb(dangerColor[7]) + - ",.95))" - }, - "&:after,&:before": { - position: "absolute", - zIndex: "1", - width: "100%", - height: "100%", - display: "block", - left: "0", - top: "0", - content: "''" - } - }, - small: { - height: "65vh", - minHeight: "65vh", - maxHeight: "650px" - } -}; - -export default parallaxStyle; diff --git a/src/assets/jss/material-kit-pro-react/components/snackbarContentStyle.js b/src/assets/jss/material-kit-pro-react/components/snackbarContentStyle.js deleted file mode 100644 index 2f8b1d51d..000000000 --- a/src/assets/jss/material-kit-pro-react/components/snackbarContentStyle.js +++ /dev/null @@ -1,99 +0,0 @@ -import { - defaultFont, - primaryBoxShadow, - infoBoxShadow, - successBoxShadow, - warningBoxShadow, - dangerBoxShadow, - container, - blackColor, - whiteColor, - grayColor, - primaryColor, - warningColor, - dangerColor, - successColor, - infoColor, - hexToRgb -} from "assets/jss/material-kit-pro-react.js"; - -const snackbarContentStyle = { - root: { - ...defaultFont, - position: "relative", - padding: "20px 15px", - lineHeight: "20px", - marginBottom: "20px", - fontSize: "14px", - backgroundColor: "white", - color: grayColor[15], - borderRadius: "3px", - maxWidth: "100%", - minWidth: "auto", - boxShadow: - "0 12px 20px -10px rgba(" + - hexToRgb(whiteColor) + - ", 0.28), 0 4px 20px 0px rgba(" + - hexToRgb(blackColor) + - ", 0.12), 0 7px 8px -5px rgba(" + - hexToRgb(whiteColor) + - ", 0.2)" - }, - info: { - backgroundColor: infoColor[3], - color: whiteColor, - ...infoBoxShadow - }, - success: { - backgroundColor: successColor[3], - color: whiteColor, - ...successBoxShadow - }, - warning: { - backgroundColor: warningColor[3], - color: whiteColor, - ...warningBoxShadow - }, - danger: { - backgroundColor: dangerColor[3], - color: whiteColor, - ...dangerBoxShadow - }, - primary: { - backgroundColor: primaryColor[3], - color: whiteColor, - ...primaryBoxShadow - }, - message: { - padding: "0", - display: "block", - maxWidth: "89%" - }, - close: { - width: "20px", - height: "20px" - }, - iconButton: { - width: "24px", - height: "24px", - float: "right", - fontSize: "1.5rem", - fontWeight: "500", - lineHeight: "1", - position: "absolute", - right: "-4px", - top: "0", - padding: "0" - }, - icon: { - display: "block", - float: "left", - marginRight: "1.071rem" - }, - container: { - ...container, - position: "relative" - } -}; - -export default snackbarContentStyle; diff --git a/src/assets/jss/material-kit-pro-react/components/tableStyle.js b/src/assets/jss/material-kit-pro-react/components/tableStyle.js deleted file mode 100644 index d0cb8febf..000000000 --- a/src/assets/jss/material-kit-pro-react/components/tableStyle.js +++ /dev/null @@ -1,121 +0,0 @@ -import { - warningColor, - primaryColor, - dangerColor, - successColor, - infoColor, - roseColor, - grayColor, - defaultFont -} from "assets/jss/material-kit-pro-react.js"; - -const tableStyle = { - warning: { - color: warningColor[0] - }, - primary: { - color: primaryColor[0] - }, - danger: { - color: dangerColor[0] - }, - success: { - color: successColor[0] - }, - info: { - color: infoColor[0] - }, - rose: { - color: roseColor[0] - }, - gray: { - color: grayColor[0] - }, - right: { - textAlign: "right" - }, - table: { - marginBottom: "0", - width: "100%", - maxWidth: "100%", - backgroundColor: "transparent", - borderSpacing: "0", - borderCollapse: "collapse", - overflow: "auto", - "& > tbody > tr, & > thead > tr": { - height: "auto" - } - }, - tableShoppingHead: { - fontSize: "0.75em !important", - textTransform: "uppercase !important" - }, - tableCell: { - ...defaultFont, - lineHeight: "1.5em", - padding: "12px 8px!important", - verticalAlign: "middle", - fontSize: "0.875rem", - borderBottom: "none", - borderTop: "1px solid " + grayColor[6], - position: "relative", - color: grayColor[1] - }, - tableHeadCell: { - fontSize: "1.063rem", - borderBottomWidth: "1px", - fontWeight: "300", - color: grayColor[15], - borderTopWidth: "0 !important" - }, - tableCellTotal: { - fontWeight: "500", - fontSize: "1.0625rem", - paddingTop: "20px", - textAlign: "right" - }, - tableCellAmount: { - fontSize: "26px", - fontWeight: "300", - marginTop: "5px", - textAlign: "right" - }, - tableResponsive: { - minHeight: "0.1%", - overflowX: "auto" - }, - tableStripedRow: { - backgroundColor: grayColor[16] - }, - tableRowHover: { - "&:hover": { - backgroundColor: grayColor[23] - } - }, - warningRow: { - backgroundColor: warningColor[4], - "&:hover": { - backgroundColor: warningColor[5] - } - }, - dangerRow: { - backgroundColor: dangerColor[4], - "&:hover": { - backgroundColor: dangerColor[5] - } - }, - successRow: { - backgroundColor: successColor[4], - "&:hover": { - backgroundColor: successColor[5] - } - }, - infoRow: { - backgroundColor: infoColor[4], - "&:hover": { - backgroundColor: infoColor[5] - } - } -}; - -export default tableStyle; diff --git a/src/assets/jss/material-kit-pro-react/components/typographyStyle.js b/src/assets/jss/material-kit-pro-react/components/typographyStyle.js deleted file mode 100644 index 29230f491..000000000 --- a/src/assets/jss/material-kit-pro-react/components/typographyStyle.js +++ /dev/null @@ -1,87 +0,0 @@ -import { - defaultFont, - primaryColor, - infoColor, - successColor, - warningColor, - dangerColor, - roseColor, - grayColor -} from "assets/jss/material-kit-pro-react.js"; - -const typographyStyle = { - defaultFontStyle: { - ...defaultFont, - fontSize: "14px" - }, - defaultHeaderMargins: { - marginTop: "20px", - marginBottom: "10px" - }, - quote: { - padding: "10px 20px", - margin: "0 0 20px", - fontSize: "1.25rem", - borderLeft: "5px solid " + grayColor[2] - }, - quoteText: { - margin: "0 0 10px", - fontStyle: "italic" - }, - quoteAuthor: { - display: "block", - fontSize: "80%", - lineHeight: "1.42857143", - color: grayColor[10] - }, - mutedText: { - "&, & *": { - color: grayColor[7], - display: "inline-block" - } - }, - primaryText: { - "&, & *": { - color: primaryColor[0], - display: "inline-block" - } - }, - infoText: { - "&, & *": { - color: infoColor[0], - display: "inline-block" - } - }, - successText: { - "&, & *": { - color: successColor[0], - display: "inline-block" - } - }, - warningText: { - "&, & *": { - color: warningColor[0], - display: "inline-block" - } - }, - dangerText: { - "&, & *": { - color: dangerColor[0], - display: "inline-block" - } - }, - roseText: { - "&, & *": { - color: roseColor[0], - display: "inline-block" - } - }, - smallText: { - fontSize: "65%", - fontWeight: "400", - lineHeight: "1", - color: grayColor[10] - } -}; - -export default typographyStyle; diff --git a/src/assets/jss/material-kit-pro-react/customCheckboxRadioSwitchStyle.js b/src/assets/jss/material-kit-pro-react/customCheckboxRadioSwitchStyle.js deleted file mode 100644 index d97bfa12f..000000000 --- a/src/assets/jss/material-kit-pro-react/customCheckboxRadioSwitchStyle.js +++ /dev/null @@ -1,194 +0,0 @@ -import { - primaryColor, - dangerColor, - roseColor, - grayColor, - blackColor, - whiteColor, - hexToRgb -} from "assets/jss/material-kit-pro-react.js"; - -const customCheckboxRadioSwitch = { - checkRoot: { - padding: "14px", - "&:hover": { - backgroundColor: - "rgba(" + hexToRgb(primaryColor[0]) + ", 0.14) !important" - } - }, - radioRoot: { - padding: "16px", - "&:hover": { - backgroundColor: - "rgba(" + hexToRgb(primaryColor[0]) + ", 0.14) !important" - } - }, - labelRoot: { - marginLeft: "-14px" - }, - checkboxAndRadio: { - position: "relative", - display: "block", - marginTop: "10px", - marginBottom: "10px" - }, - checkboxAndRadioHorizontal: { - position: "relative", - display: "block", - "&:first-child": { - marginTop: "10px" - }, - "&:not(:first-child)": { - marginTop: "-14px" - }, - marginTop: "0", - marginBottom: "0" - }, - checked: { - color: primaryColor[0] + "!important" - }, - checkedIcon: { - width: "20px", - height: "20px", - border: "1px solid rgba(" + hexToRgb(blackColor) + ", 0.84)", - borderRadius: "3px" - }, - uncheckedIcon: { - width: "0px", - height: "0px", - padding: "9px", - border: "1px solid rgba(" + hexToRgb(blackColor) + ", .54)", - borderRadius: "3px" - }, - disabledCheckboxAndRadio: { - "& $checkedIcon,& $uncheckedIcon,& $radioChecked,& $radioUnchecked": { - borderColor: blackColor, - opacity: "0.26", - color: blackColor - } - }, - label: { - cursor: "pointer", - paddingLeft: "0", - color: grayColor[12], - fontSize: "14px", - lineHeight: "1.428571429", - fontWeight: "400", - display: "inline-flex", - transition: "0.3s ease all", - letterSpacing: "unset" - }, - labelHorizontal: { - color: "rgba(" + hexToRgb(blackColor) + ", 0.26)", - cursor: "pointer", - display: "inline-flex", - fontSize: "14px", - lineHeight: "1.428571429", - fontWeight: "400", - paddingTop: "39px", - marginRight: "0", - "@media (min-width: 992px)": { - float: "right" - } - }, - labelHorizontalRadioCheckbox: { - paddingTop: "22px" - }, - labelLeftHorizontal: { - color: "rgba(" + hexToRgb(blackColor) + ", 0.26)", - cursor: "pointer", - display: "inline-flex", - fontSize: "14px", - lineHeight: "1.428571429", - fontWeight: "400", - paddingTop: "22px", - marginRight: "0" - }, - labelError: { - color: dangerColor[0] - }, - radio: { - color: primaryColor[0] + "!important" - }, - radioChecked: { - width: "16px", - height: "16px", - border: "1px solid " + primaryColor[0], - borderRadius: "50%" - }, - radioUnchecked: { - width: "0px", - height: "0px", - padding: "7px", - border: "1px solid rgba(" + hexToRgb(blackColor) + ", .54)", - borderRadius: "50%" - }, - inlineChecks: { - marginTop: "8px" - }, - iconCheckbox: { - height: "116px", - width: "116px", - color: grayColor[0], - "& > span:first-child": { - borderWidth: "4px", - borderStyle: "solid", - borderColor: grayColor[17], - textAlign: "center", - verticalAlign: "middle", - borderRadius: "50%", - color: "inherit", - margin: "0 auto 20px", - transition: "all 0.2s" - }, - "&:hover": { - color: roseColor[0], - "& > span:first-child": { - borderColor: roseColor[0] - } - } - }, - iconCheckboxChecked: { - color: roseColor[0], - "& > span:first-child": { - borderColor: roseColor[0] - } - }, - iconCheckboxIcon: { - fontSize: "40px", - lineHeight: "111px" - }, - switchBase: { - color: primaryColor[0] + "!important", - "&:hover": { - backgroundColor: - "rgba(" + hexToRgb(primaryColor[0]) + ", 0.14) !important" - } - }, - switchIcon: { - boxShadow: "0 1px 3px 1px rgba(" + hexToRgb(blackColor) + ", 0.4)", - color: whiteColor + " !important", - border: "1px solid rgba(" + hexToRgb(blackColor) + ", .54)" - }, - switchIconChecked: { - borderColor: primaryColor[0], - transform: "translateX(0px)!important" - }, - switchBar: { - width: "30px", - height: "15px", - backgroundColor: "rgb(" + hexToRgb(grayColor[24]) + ")", - borderRadius: "15px", - opacity: "0.7!important" - }, - switchChecked: { - "& + $switchBar": { - backgroundColor: "rgba(" + hexToRgb(primaryColor[0]) + ", 1) !important" - }, - "& $switchIcon": { - borderColor: primaryColor[0] - } - } -}; - -export default customCheckboxRadioSwitch; diff --git a/src/assets/jss/material-kit-pro-react/customSelectStyle.js b/src/assets/jss/material-kit-pro-react/customSelectStyle.js deleted file mode 100644 index 154c2b380..000000000 --- a/src/assets/jss/material-kit-pro-react/customSelectStyle.js +++ /dev/null @@ -1,133 +0,0 @@ -import { - primaryColor, - primaryBoxShadow, - blackColor, - whiteColor, - grayColor, - hexToRgb -} from "assets/jss/material-kit-pro-react.js"; - -const customSelectStyle = { - select: { - padding: "12px 0 7px", - fontSize: ".75rem", - fontWeight: "400", - lineHeight: "1.42857", - textDecoration: "none", - textTransform: "uppercase", - color: grayColor[1], - letterSpacing: "0", - "&:focus": { - backgroundColor: "transparent" - }, - "&[aria-owns] + input + svg": { - transform: "rotate(180deg)" - }, - "& + input + svg": { - transition: "all 300ms linear" - } - }, - selectFormControl: { - margin: "10px 1px 10px 0px !important", - "& > div": { - "&:before": { - borderBottomWidth: "1px !important", - borderBottomColor: grayColor[11] + " !important" - }, - "&:after": { - borderBottomColor: primaryColor[0] + "!important" - } - } - }, - selectLabel: { - fontSize: "12px", - textTransform: "uppercase", - color: grayColor[1] + " !important", - top: "8px" - }, - selectMenu: { - "& > div > ul": { - border: "0", - padding: "5px 0", - margin: "0", - boxShadow: "none", - minWidth: "100%", - borderRadius: "4px", - boxSizing: "border-box", - display: "block", - fontSize: "14px", - textAlign: "left", - listStyle: "none", - backgroundColor: whiteColor, - backgroundClip: "padding-box" - }, - "& $selectPaper $selectMenuItemSelectedMultiple": { - backgroundColor: "inherit" - } - }, - selectMenuItem: { - fontSize: "13px", - padding: "10px 20px", - margin: "0 5px", - borderRadius: "2px", - transition: "all 150ms linear", - display: "block", - clear: "both", - fontWeight: "400", - lineHeight: "2", - whiteSpace: "nowrap", - color: grayColor[8], - paddingRight: "30px", - "&:hover": { - backgroundColor: primaryColor[0], - color: whiteColor, - ...primaryBoxShadow - } - }, - selectMenuItemSelected: { - backgroundColor: primaryColor[0] + "!important", - color: whiteColor - }, - selectMenuItemSelectedMultiple: { - "&:hover": { - backgroundColor: primaryColor[0] + "!important", - color: whiteColor, - ...primaryBoxShadow, - "&:after": { - color: whiteColor - } - }, - "&:after": { - top: "16px", - right: "12px", - width: "12px", - height: "5px", - borderLeft: "2px solid currentColor", - transform: "rotate(-45deg)", - opacity: "1", - color: grayColor[1], - position: "absolute", - content: "''", - borderBottom: "2px solid currentColor", - transition: "opacity 90ms cubic-bezier(0,0,.2,.1)" - } - }, - selectPaper: { - boxSizing: "borderBox", - borderRadius: "4px", - padding: "0", - minWidth: "100%", - display: "block", - border: "0", - boxShadow: "0 2px 5px 0 rgba(" + hexToRgb(blackColor) + ", 0.26)", - backgroundClip: "padding-box", - margin: "2px 0 0", - fontSize: "14px", - textAlign: "left", - listStyle: "none", - backgroundColor: "transparent", - maxHeight: "266px" - } -}; - -export default customSelectStyle; diff --git a/src/assets/jss/material-kit-pro-react/imagesStyles.js b/src/assets/jss/material-kit-pro-react/imagesStyles.js deleted file mode 100644 index 3ef528859..000000000 --- a/src/assets/jss/material-kit-pro-react/imagesStyles.js +++ /dev/null @@ -1,50 +0,0 @@ -import { blackColor, hexToRgb } from "assets/jss/material-kit-pro-react.js"; - -const imagesStyles = { - imgFluid: { - maxWidth: "100%", - height: "auto" - }, - imgRounded: { - borderRadius: "6px !important" - }, - imgRoundedCircle: { - borderRadius: "50% !important" - }, - imgRaised: { - boxShadow: - "0 5px 15px -8px rgba(" + - hexToRgb(blackColor) + - ", 0.24), 0 8px 10px -5px rgba(" + - hexToRgb(blackColor) + - ", 0.2)" - }, - imgGallery: { - width: "100%", - marginBottom: "2.142rem" - }, - imgCardTop: { - width: "100%", - borderTopLeftRadius: "calc(.25rem - 1px)", - borderTopRightRadius: "calc(.25rem - 1px)" - }, - imgCardBottom: { - width: "100%", - borderBottomLeftRadius: "calc(.25rem - 1px)", - borderBottomRightRadius: "calc(.25rem - 1px)" - }, - imgCard: { - width: "100%", - borderRadius: "calc(.25rem - 1px)" - }, - imgCardOverlay: { - position: "absolute", - top: "0", - right: "0", - bottom: "0", - left: "0", - padding: "1.25rem" - } -}; - -export default imagesStyles; diff --git a/src/assets/jss/material-kit-pro-react/modalStyle.js b/src/assets/jss/material-kit-pro-react/modalStyle.js deleted file mode 100644 index afc2802ce..000000000 --- a/src/assets/jss/material-kit-pro-react/modalStyle.js +++ /dev/null @@ -1,163 +0,0 @@ -import { whiteColor, grayColor } from "assets/jss/material-kit-pro-react.js"; - -const modalStyle = theme => ({ - modalRoot: { - overflow: "auto", - display: "block" - }, - modal: { - [theme.breakpoints.up("sm")]: { - maxWidth: "500px", - margin: "auto" - }, - borderRadius: "6px", - overflow: "visible", - maxHeight: "unset", - width: "100%", - marginTop: "130px !important" - }, - modalHeader: { - borderBottom: "none", - paddingTop: "24px", - paddingRight: "24px", - paddingBottom: "0", - paddingLeft: "24px", - minHeight: "16.43px" - }, - modalTitle: { - margin: "0", - lineHeight: "1.5" - }, - modalCloseButton: { - "&, &:hover": { - color: grayColor[0] - }, - "&:hover": { - opacity: "1" - }, - cursor: "pointer", - padding: "1rem", - margin: "-1rem -1rem -1rem auto", - backgroundColor: "transparent", - border: "0", - WebkitAppearance: "none", - float: "right", - fontSize: "1.5rem", - fontWeight: "500", - lineHeight: "1", - textShadow: "0 1px 0 " + whiteColor, - opacity: ".5" - }, - modalClose: { - width: "16px", - height: "16px" - }, - modalBody: { - paddingTop: "24px", - paddingRight: "24px", - paddingBottom: "16px", - paddingLeft: "24px", - position: "relative", - overflow: "visible" - }, - modalFooter: { - padding: "15px", - textAlign: "right", - paddingTop: "0", - margin: "0" - }, - modalFooterCenter: { - marginLeft: "auto", - marginRight: "auto" - }, - instructionNoticeModal: { - marginBottom: "25px" - }, - imageNoticeModal: { - maxWidth: "150px" - }, - modalLarge: { - [theme.breakpoints.up("md")]: { - maxWidth: "800px" - } - }, - modalSmall: { - [theme.breakpoints.up("sm")]: { - width: "300px", - margin: "auto" - }, - margin: "0 auto" - }, - modalSmallBody: { - marginTop: "20px" - }, - modalSmallFooterFirstButton: { - margin: "0", - paddingLeft: "16px", - paddingRight: "16px", - width: "auto" - }, - modalSmallFooterSecondButton: { - marginBottom: "0", - marginLeft: "5px" - }, - modalLogin: { - maxWidth: "360px", - overflowY: "visible", - width: "100%", - "& $modalCloseButton": { - color: whiteColor, - top: "-10px", - right: "10px", - textShadow: "none", - position: "relative" - }, - "& $modalHeader": { - borderBottom: "none", - paddingTop: "24px", - paddingRight: "24px", - paddingBottom: "0", - paddingLeft: "24px" - }, - "& $modalBody": { - paddingBottom: "0", - paddingTop: "0" - }, - "& $modalFooter": { - paddingBottom: "0", - paddingTop: "0" - } - }, - modalLoginCard: { - marginBottom: "0", - margin: "0", - "& $modalHeader": { - paddingTop: "0" - } - }, - modalSignup: { - maxWidth: "900px", - width: "100%", - "& $modalHeader": { - paddingTop: "0" - }, - "& $modalTitle": { - textAlign: "center", - width: "100%", - marginTop: "0.625rem" - }, - "& $modalBody": { - paddingBottom: "0", - paddingTop: "0" - } - }, - modalSignupCard: { - padding: "40px 0", - margin: "0" - }, - modalMargin:{ - marginBottom:'24px', - } -}); - -export default modalStyle; diff --git a/src/assets/jss/material-kit-pro-react/popoverStyles.js b/src/assets/jss/material-kit-pro-react/popoverStyles.js deleted file mode 100644 index 0f6ad57f0..000000000 --- a/src/assets/jss/material-kit-pro-react/popoverStyles.js +++ /dev/null @@ -1,59 +0,0 @@ -import { - whiteColor, - blackColor, - grayColor, - hexToRgb -} from "assets/jss/material-kit-pro-react.js"; - -const popoverStyles = { - popover: { - padding: "0", - boxShadow: - "0 16px 24px 2px rgba(" + - hexToRgb(blackColor) + - ", 0.14), 0 6px 30px 5px rgba(" + - hexToRgb(blackColor) + - ", 0.12), 0 8px 10px -5px rgba(" + - hexToRgb(blackColor) + - ", 0.2)", - lineHeight: "1.5em", - background: "rgba(" + hexToRgb(grayColor[15]) + ",0.9)", - border: "none", - borderRadius: "3px", - display: "block", - maxWidth: "276px", - fontFamily: '"Roboto", "Helvetica", "Arial", sans-serif', - fontStyle: "normal", - fontWeight: "400", - textAlign: "start", - textDecoration: "none", - textShadow: "none", - textTransform: "none", - letterSpacing: "normal", - wordBreak: "normal", - wordSpacing: "normal", - whiteSpace: "normal", - lineBreak: "auto", - fontSize: "0.875rem", - wordWrap: "break-word" - }, - popoverBottom: { - marginTop: "5px" - }, - popoverHeader: { - border: "none", - padding: "15px 15px 5px", - fontSize: "1.125rem", - margin: "0", - color: whiteColor, - borderTopLeftRadius: "calc(0.3rem - 1px)", - borderTopRightRadius: "calc(0.3rem - 1px)" - }, - popoverBody: { - padding: "10px 15px 15px", - lineHeight: "1.4", - color: whiteColor - } -}; - -export default popoverStyles; diff --git a/src/assets/jss/material-kit-pro-react/rotatingCards.js b/src/assets/jss/material-kit-pro-react/rotatingCards.js deleted file mode 100644 index 344f68cc9..000000000 --- a/src/assets/jss/material-kit-pro-react/rotatingCards.js +++ /dev/null @@ -1,132 +0,0 @@ -import { - whiteColor, - blackColor, - primaryColor, - roseColor, - infoColor, - warningColor, - dangerColor, - successColor, - hexToRgb -} from "assets/jss/material-kit-pro-react.js"; - -const style = { - rotatingCardContainer: { - perspective: "800px", - "& $cardRotate $back": { - transform: "rotateY(180deg)", - zIndex: "5", - textAlign: "center", - width: "100%", - height: "100%" - }, - "&:not($manualRotate):hover $cardRotate": { - transform: "rotateY(180deg)" - }, - "&$manualRotate$activateRotate $cardRotate": { - transform: "rotateY(180deg)" - }, - "& $cardRotate $front": { - zIndex: "2", - position: "relative" - }, - "& $cardRotate $front, & $cardRotate $back": { - backfaceVisibility: "hidden", - boxShadow: - "0 2px 2px 0 rgba(" + - hexToRgb(blackColor) + - ", 0.14), 0 3px 1px -2px rgba(" + - hexToRgb(blackColor) + - ", 0.12), 0 1px 5px 0 rgba(" + - hexToRgb(blackColor) + - ", 0.2)", - position: "absolute", - backgroundColor: whiteColor, - borderRadius: "6px", - top: "0", - left: "0", - WebkitBoxPack: "center", - MsFlexPack: "center", - justifyContent: "center", - MsFlexLinePack: "center", - alignContent: "center", - display: "flex", - WebkitBoxOrient: "vertical", - WebkitBoxDirection: "normal", - flexDirection: "column" - } - }, - activateRotate: {}, - manualRotate: {}, - cardRotate: { - transition: "all 0.8s cubic-bezier(0.34, 1.45, 0.7, 1)", - transformStyle: "preserve-3d", - position: "relative", - background: "transparent" - }, - front: {}, - back: {}, - wrapperBackground: { - backgroundPosition: "50%", - backgroundSize: "cover", - textAlign: "center", - "&:after": { - position: "absolute", - zIndex: "1", - width: "100%", - height: "100%", - display: "block", - left: "0", - top: "0", - content: "''", - backgroundColor: "rgba(" + hexToRgb(blackColor) + ", 0.56)", - borderRadius: "6px" - } - }, - cardBodyRotate: { - WebkitBoxPack: "center", - MsFlexPack: "center", - justifyContent: "center", - MsFlexLinePack: "center", - alignContent: "center", - display: "flex", - WebkitBoxOrient: "vertical", - WebkitBoxDirection: "normal", - flexDirection: "column" - }, - wrapperPrimary: { - background: - "linear-gradient(60deg," + primaryColor[1] + "," + primaryColor[2] + ")", - "& h1 small": { - color: "rgba(" + hexToRgb(whiteColor) + ", 0.8)" - }, - color: whiteColor - }, - wrapperInfo: { - background: - "linear-gradient(60deg," + infoColor[1] + "," + infoColor[2] + ")", - color: whiteColor - }, - wrapperSuccess: { - background: - "linear-gradient(60deg," + successColor[1] + "," + successColor[2] + ")", - color: whiteColor - }, - wrapperWarning: { - background: - "linear-gradient(60deg," + warningColor[1] + "," + warningColor[2] + ")", - color: whiteColor - }, - wrapperDanger: { - background: - "linear-gradient(60deg," + dangerColor[1] + "," + dangerColor[2] + ")", - color: whiteColor - }, - wrapperRose: { - background: - "linear-gradient(60deg," + roseColor[1] + "," + roseColor[2] + ")", - color: whiteColor - } -}; - -export default style; diff --git a/src/assets/jss/material-kit-pro-react/tooltipsStyle.js b/src/assets/jss/material-kit-pro-react/tooltipsStyle.js deleted file mode 100644 index 19f53d332..000000000 --- a/src/assets/jss/material-kit-pro-react/tooltipsStyle.js +++ /dev/null @@ -1,42 +0,0 @@ -import { - whiteColor, - blackColor, - grayColor, - hexToRgb -} from "assets/jss/material-kit-pro-react.js"; - -const tooltipsStyle = { - tooltip: { - padding: "10px 15px", - minWidth: "130px", - color: whiteColor, - lineHeight: "1.7em", - background: "rgba(" + hexToRgb(grayColor[15]) + ",0.9)", - border: "none", - borderRadius: "3px", - boxShadow: - "0 8px 10px 1px rgba(" + - hexToRgb(blackColor) + - ", 0.14), 0 3px 14px 2px rgba(" + - hexToRgb(blackColor) + - ", 0.12), 0 5px 5px -3px rgba(" + - hexToRgb(blackColor) + - ", 0.2)", - maxWidth: "200px", - textAlign: "center", - fontFamily: '"Helvetica Neue",Helvetica,Arial,sans-serif', - fontSize: "0.875em", - fontStyle: "normal", - fontWeight: "400", - textShadow: "none", - textTransform: "none", - letterSpacing: "normal", - wordBreak: "normal", - wordSpacing: "normal", - wordWrap: "normal", - whiteSpace: "normal", - lineBreak: "auto" - } -}; - -export default tooltipsStyle; diff --git a/src/assets/jss/material-kit-pro-react/views/aboutUsSections/contactStyle.js b/src/assets/jss/material-kit-pro-react/views/aboutUsSections/contactStyle.js deleted file mode 100644 index d4eb146a9..000000000 --- a/src/assets/jss/material-kit-pro-react/views/aboutUsSections/contactStyle.js +++ /dev/null @@ -1,31 +0,0 @@ -import { - title, - description, - mrAuto, - mlAuto -} from "assets/jss/material-kit-pro-react.js"; -import customSelectStyle from "assets/jss/material-kit-pro-react/customSelectStyle.js"; - -const contactStyle = { - title, - mrAuto, - mlAuto, - ...customSelectStyle, - description: { - ...description, - marginBottom: "70px" - }, - textCenter: { - textAlign: "center!important" - }, - selectUnderlineRoot: { - "& > div": { - marginTop: "13px" - } - }, - aboutUs: { - padding: "80px 0px" - } -}; - -export default contactStyle; diff --git a/src/assets/jss/material-kit-pro-react/views/aboutUsSections/descriptionStyle.js b/src/assets/jss/material-kit-pro-react/views/aboutUsSections/descriptionStyle.js deleted file mode 100644 index 8b69746a2..000000000 --- a/src/assets/jss/material-kit-pro-react/views/aboutUsSections/descriptionStyle.js +++ /dev/null @@ -1,21 +0,0 @@ -import { - container, - mrAuto, - mlAuto, - description -} from "assets/jss/material-kit-pro-react.js"; - -const descriptionStyle = { - container, - textCenter: { - textAlign: "center" - }, - aboutDescription: { - padding: "70px 0 0 0" - }, - mrAuto, - mlAuto, - description -}; - -export default descriptionStyle; diff --git a/src/assets/jss/material-kit-pro-react/views/aboutUsSections/officeStyle.js b/src/assets/jss/material-kit-pro-react/views/aboutUsSections/officeStyle.js deleted file mode 100644 index c14f3a5a3..000000000 --- a/src/assets/jss/material-kit-pro-react/views/aboutUsSections/officeStyle.js +++ /dev/null @@ -1,31 +0,0 @@ -import { - title, - description, - mrAuto, - mlAuto -} from "assets/jss/material-kit-pro-react.js"; -import imagesStyles from "assets/jss/material-kit-pro-react/imagesStyles.js"; - -const imgRaised = imagesStyles.imgRaised; -const rounded = imagesStyles.imgRounded; -const imgFluid = imagesStyles.imgFluid; - -const servicesStyle = { - title, - description, - mrAuto, - mlAuto, - textCenter: { - textAlign: "center!important" - }, - office: { - "& img": { - margin: "20px 0px" - } - }, - imgRaised, - rounded, - imgFluid -}; - -export default servicesStyle; diff --git a/src/assets/jss/material-kit-pro-react/views/aboutUsSections/servicesStyle.js b/src/assets/jss/material-kit-pro-react/views/aboutUsSections/servicesStyle.js deleted file mode 100644 index 8cc387766..000000000 --- a/src/assets/jss/material-kit-pro-react/views/aboutUsSections/servicesStyle.js +++ /dev/null @@ -1,22 +0,0 @@ -import { - title, - description, - mrAuto, - mlAuto -} from "assets/jss/material-kit-pro-react.js"; - -const servicesStyle = { - title, - mrAuto, - mlAuto, - services: { - paddingTop: "10px", - paddingBottom: "80px" - }, - textCenter: { - textAlign: "center" - }, - description -}; - -export default servicesStyle; diff --git a/src/assets/jss/material-kit-pro-react/views/aboutUsSections/teamStyle.js b/src/assets/jss/material-kit-pro-react/views/aboutUsSections/teamStyle.js deleted file mode 100644 index 951eb86a0..000000000 --- a/src/assets/jss/material-kit-pro-react/views/aboutUsSections/teamStyle.js +++ /dev/null @@ -1,40 +0,0 @@ -import { - mrAuto, - mlAuto, - title, - description, - cardTitle, - grayColor -} from "assets/jss/material-kit-pro-react.js"; - -const teamStyle = { - mrAuto, - mlAuto, - title, - description: { - ...description, - marginBottom: "80px" - }, - cardTitle, - cardDescription: { - color: grayColor[0] - }, - team: { - padding: "80px 0px" - }, - textCenter: { - textAlign: "center!important" - }, - img: { - width: "100%", - height: "auto" - }, - textMuted: { - color: grayColor[7] + " !important" - }, - justifyContent: { - justifyContent: "center!important" - } -}; - -export default teamStyle; diff --git a/src/assets/jss/material-kit-pro-react/views/aboutUsStyle.js b/src/assets/jss/material-kit-pro-react/views/aboutUsStyle.js deleted file mode 100644 index a183f3a01..000000000 --- a/src/assets/jss/material-kit-pro-react/views/aboutUsStyle.js +++ /dev/null @@ -1,67 +0,0 @@ -import { - container, - title, - main, - mainRaised, - mrAuto, - whiteColor, - mlAuto -} from "assets/jss/material-kit-pro-react.js"; - -const aboutUsStyle = { - main, - mainRaised, - mrAuto, - mlAuto, - container: { - ...container, - zIndex: 1 - }, - title: { - ...title, - "&, & + h4": { - color: whiteColor - } - }, - textCenter: { - textAlign: "center" - }, - block: { - color: "inherit", - padding: "0.9375rem", - fontWeight: "500", - fontSize: "12px", - textTransform: "uppercase", - borderRadius: "3px", - textDecoration: "none", - position: "relative", - display: "block" - }, - inlineBlock: { - display: "inline-block", - padding: "0px", - width: "auto" - }, - list: { - marginBottom: "0", - padding: "0", - marginTop: "0" - }, - left: { - float: "left!important", - display: "block" - }, - right: { - padding: "15px 0", - margin: "0", - float: "right" - }, - icon: { - width: "18px", - height: "18px", - top: "3px", - position: "relative" - } -}; - -export default aboutUsStyle; diff --git a/src/assets/jss/material-kit-pro-react/views/blogPostPageStyle.js b/src/assets/jss/material-kit-pro-react/views/blogPostPageStyle.js deleted file mode 100644 index fd788a909..000000000 --- a/src/assets/jss/material-kit-pro-react/views/blogPostPageStyle.js +++ /dev/null @@ -1,66 +0,0 @@ -import { - container, - title, - main, - whiteColor, - mainRaised -} from "assets/jss/material-kit-pro-react.js"; - -const blogPostPageStyle = { - container: { - ...container, - zIndex: "2" - }, - textCenter: { - textAlign: "center" - }, - title: { - ...title, - color: whiteColor - }, - subtitle: { - color: whiteColor - }, - main: { - ...main, - ...mainRaised - }, - block: { - color: "inherit", - padding: "0.9375rem", - fontWeight: "500", - fontSize: "12px", - textTransform: "uppercase", - borderRadius: "3px", - textDecoration: "none", - position: "relative", - display: "block" - }, - inlineBlock: { - display: "inline-block", - padding: "0px", - width: "auto" - }, - list: { - marginBottom: "0", - padding: "0", - marginTop: "0" - }, - left: { - float: "left!important", - display: "block" - }, - right: { - padding: "15px 0", - margin: "0", - float: "right" - }, - icon: { - width: "18px", - height: "18px", - top: "3px", - position: "relative" - } -}; - -export default blogPostPageStyle; diff --git a/src/assets/jss/material-kit-pro-react/views/blogPostSections/sectionBlogInfoStyle.js b/src/assets/jss/material-kit-pro-react/views/blogPostSections/sectionBlogInfoStyle.js deleted file mode 100644 index 7fd2cdb6a..000000000 --- a/src/assets/jss/material-kit-pro-react/views/blogPostSections/sectionBlogInfoStyle.js +++ /dev/null @@ -1,33 +0,0 @@ -import { grayColor, cardTitle } from "assets/jss/material-kit-pro-react.js"; -const sectionBlogInfoStyle = { - section: { - paddingTop: "30px", - paddingBottom: "0", - backgroundPosition: "50%", - backgroundSize: "cover", - padding: "70px 0" - }, - blogTags: { - marginTop: "8px" - }, - buttons: { - marginTop: "0", - marginBottom: "0", - float: "right !important" - }, - card: { - marginTop: "0", - textAlign: "left" - }, - cardTitle, - description: { - fontSize: "1rem", - color: grayColor[0] - }, - pullRight: { - marginTop: "25px", - float: "right" - } -}; - -export default sectionBlogInfoStyle; diff --git a/src/assets/jss/material-kit-pro-react/views/blogPostSections/sectionCommentsStyle.js b/src/assets/jss/material-kit-pro-react/views/blogPostSections/sectionCommentsStyle.js deleted file mode 100644 index 1968a90fa..000000000 --- a/src/assets/jss/material-kit-pro-react/views/blogPostSections/sectionCommentsStyle.js +++ /dev/null @@ -1,38 +0,0 @@ -import { grayColor, title } from "assets/jss/material-kit-pro-react.js"; - -import tooltipsStyle from "assets/jss/material-kit-pro-react/tooltipsStyle.js"; - -const sectionCommentsStyle = { - ...tooltipsStyle, - section: { - backgroundposition: "50%", - backgroundSize: "cover", - padding: "70px 0" - }, - title: { - ...title, - marginBottom: "30px", - textAlign: "center" - }, - footerButtons: { - float: "right" - }, - footerIcons: { - width: "1.1rem", - height: "1.1rem", - position: "relative", - display: "inline-block", - top: "0", - marginTop: "-1em", - marginBottom: "-1em", - marginRight: "3px", - verticalAlign: "middle" - }, - color555: { - "&,& *": { - color: grayColor[15] + " !important" - } - } -}; - -export default sectionCommentsStyle; diff --git a/src/assets/jss/material-kit-pro-react/views/blogPostSections/sectionSimilarStoriesStyle.js b/src/assets/jss/material-kit-pro-react/views/blogPostSections/sectionSimilarStoriesStyle.js deleted file mode 100644 index a059109a3..000000000 --- a/src/assets/jss/material-kit-pro-react/views/blogPostSections/sectionSimilarStoriesStyle.js +++ /dev/null @@ -1,27 +0,0 @@ -import { - container, - title, - cardTitle, - grayColor, - coloredShadow -} from "assets/jss/material-kit-pro-react.js"; - -const sectionSimilarStoriesStyle = { - container, - title, - cardTitle, - coloredShadow, - textCenter: { - textAlign: "center" - }, - section: { - backgroundPosition: "50%", - backgroundSize: "cover", - padding: "70px 0" - }, - description: { - color: grayColor[0] - } -}; - -export default sectionSimilarStoriesStyle; diff --git a/src/assets/jss/material-kit-pro-react/views/blogPostSections/sectionTextStyle.js b/src/assets/jss/material-kit-pro-react/views/blogPostSections/sectionTextStyle.js deleted file mode 100644 index 3f4729a06..000000000 --- a/src/assets/jss/material-kit-pro-react/views/blogPostSections/sectionTextStyle.js +++ /dev/null @@ -1,30 +0,0 @@ -import { - grayColor, - container, - title -} from "assets/jss/material-kit-pro-react.js"; - -import imagesStyles from "assets/jss/material-kit-pro-react/imagesStyles.js"; - -const sectionTextStyle = { - container, - title, - section: { - paddingBottom: "0", - backgroundPosition: "50%", - backgroundSize: "cover", - padding: "70px 0", - "& p": { - fontSize: "1.188rem", - lineHeight: "1.5em", - color: grayColor[15], - marginBottom: "30px" - } - }, - quoteText: { - fontSize: "1.5rem !important" - }, - ...imagesStyles -}; - -export default sectionTextStyle; diff --git a/src/assets/jss/material-kit-pro-react/views/blogPostsPageStyle.js b/src/assets/jss/material-kit-pro-react/views/blogPostsPageStyle.js deleted file mode 100644 index e6c0319af..000000000 --- a/src/assets/jss/material-kit-pro-react/views/blogPostsPageStyle.js +++ /dev/null @@ -1,64 +0,0 @@ -import { - container, - title, - main, - whiteColor, - mainRaised -} from "assets/jss/material-kit-pro-react.js"; - -const blogPostsPageStyle = { - container: { - ...container, - zIndex: "2", - position: "relative" - }, - textCenter: { - textAlign: "center" - }, - title: { - ...title, - color: whiteColor - }, - main: { - ...main, - ...mainRaised - }, - block: { - color: "inherit", - padding: "0.9375rem", - fontWeight: "500", - fontSize: "12px", - textTransform: "uppercase", - borderRadius: "3px", - textDecoration: "none", - position: "relative", - display: "block" - }, - inlineBlock: { - display: "inline-block", - padding: "0px", - width: "auto" - }, - list: { - marginBottom: "0", - padding: "0", - marginTop: "0" - }, - left: { - float: "left!important", - display: "block" - }, - right: { - padding: "15px 0", - margin: "0", - float: "right" - }, - icon: { - width: "18px", - height: "18px", - top: "3px", - position: "relative" - } -}; - -export default blogPostsPageStyle; diff --git a/src/assets/jss/material-kit-pro-react/views/blogPostsSections/sectionImageStyle.js b/src/assets/jss/material-kit-pro-react/views/blogPostsSections/sectionImageStyle.js deleted file mode 100644 index f653e90a8..000000000 --- a/src/assets/jss/material-kit-pro-react/views/blogPostsSections/sectionImageStyle.js +++ /dev/null @@ -1,46 +0,0 @@ -import { - section, - sectionDark, - cardTitle, - container, - blackColor, - whiteColor, - hexToRgb -} from "assets/jss/material-kit-pro-react.js"; - -const sectionImageStyle = { - container: { - ...container, - position: "relative", - zIndex: "2" - }, - section: { - ...section, - ...sectionDark, - padding: "80px 0", - position: "relative", - "&:after": { - position: "absolute", - zIndex: "1", - width: "100%", - height: "100%", - display: "block", - left: "0", - top: "0", - content: "''", - backgroundColor: "rgba(" + hexToRgb(blackColor) + ", 0.7)" - } - }, - cardTitle: { - ...cardTitle, - color: whiteColor + " !important" - }, - description: { - color: "rgba(" + hexToRgb(whiteColor) + ", 0.76)" - }, - textLeft: { - textAlign: "left" - } -}; - -export default sectionImageStyle; diff --git a/src/assets/jss/material-kit-pro-react/views/blogPostsSections/sectionInterestedStyle.js b/src/assets/jss/material-kit-pro-react/views/blogPostsSections/sectionInterestedStyle.js deleted file mode 100644 index 3352eaaa6..000000000 --- a/src/assets/jss/material-kit-pro-react/views/blogPostsSections/sectionInterestedStyle.js +++ /dev/null @@ -1,25 +0,0 @@ -import { - title, - cardTitle, - coloredShadow, - grayColor -} from "assets/jss/material-kit-pro-react.js"; - -const sectionInterestedStyle = { - title, - cardTitle, - coloredShadow, - textCenter: { - textAlign: "center" - }, - section: { - backgroundPosition: "50%", - backgroundSize: "cover", - padding: "70px 0" - }, - description: { - color: grayColor[0] - } -}; - -export default sectionInterestedStyle; diff --git a/src/assets/jss/material-kit-pro-react/views/blogPostsSections/sectionPillsStyle.js b/src/assets/jss/material-kit-pro-react/views/blogPostsSections/sectionPillsStyle.js deleted file mode 100644 index 613fbf7cd..000000000 --- a/src/assets/jss/material-kit-pro-react/views/blogPostsSections/sectionPillsStyle.js +++ /dev/null @@ -1,43 +0,0 @@ -import { - whiteColor, - hexToRgb, - cardTitle -} from "assets/jss/material-kit-pro-react.js"; - -import tooltipsStyle from "assets/jss/material-kit-pro-react/tooltipsStyle.js"; - -const sectionPillsStyle = { - ...tooltipsStyle, - section: { - backgroundPosition: "50%", - backgroundSize: "cover", - padding: "70px 0" - }, - textCenter: { - textAlign: "center" - }, - category: { - color: "rgba(" + hexToRgb(whiteColor) + ", 0.7) !important", - marginTop: "10px" - }, - cardTitle: { - ...cardTitle, - color: whiteColor + " !important" - }, - icons: { - width: "1.1rem", - height: "1.1rem", - position: "relative", - display: "inline-block", - top: "0", - marginTop: "-1em", - marginBottom: "-1em", - marginRight: "4px", - verticalAlign: "middle" - }, - tabSpace: { - padding: "20px 0 50px" - } -}; - -export default sectionPillsStyle; diff --git a/src/assets/jss/material-kit-pro-react/views/blogPostsSections/sectionSubscribeLineStyle.js b/src/assets/jss/material-kit-pro-react/views/blogPostsSections/sectionSubscribeLineStyle.js deleted file mode 100644 index f7eb51563..000000000 --- a/src/assets/jss/material-kit-pro-react/views/blogPostsSections/sectionSubscribeLineStyle.js +++ /dev/null @@ -1,32 +0,0 @@ -import { - container, - title, - description, - grayColor -} from "assets/jss/material-kit-pro-react.js"; - -const sectionSubscribeLineStyle = { - container, - title, - description, - section: { - padding: "1.875rem 0" - }, - cardClasses: { - marginTop: "30px" - }, - icon: { - color: grayColor[13] - }, - formControl: { - paddingTop: "0px !important", - paddingBottom: "0px !important", - margin: "0px !important" - }, - alignItemsCenter: { - display: "flex", - alignItems: "center" - } -}; - -export default sectionSubscribeLineStyle; diff --git a/src/assets/jss/material-kit-pro-react/views/componentsSections/basicsStyle.js b/src/assets/jss/material-kit-pro-react/views/componentsSections/basicsStyle.js deleted file mode 100644 index ce53d65ef..000000000 --- a/src/assets/jss/material-kit-pro-react/views/componentsSections/basicsStyle.js +++ /dev/null @@ -1,41 +0,0 @@ -import { - container, - whiteColor, - title, - mlAuto, - mrAuto -} from "assets/jss/material-kit-pro-react.js"; -import customCheckboxRadioSwitch from "assets/jss/material-kit-pro-react/customCheckboxRadioSwitchStyle.js"; -import customSelectStyle from "assets/jss/material-kit-pro-react/customSelectStyle.js"; - -const basicsStyle = { - mlAuto, - mrAuto, - container, - ...customSelectStyle, - ...customCheckboxRadioSwitch, - sections: { - padding: "70px 0" - }, - title: { - ...title, - marginTop: "30px", - minHeight: "32px", - textDecoration: "none" - }, - space50: { - height: "50px", - display: "block" - }, - space70: { - height: "70px", - display: "block" - }, - icons: { - width: "17px", - height: "17px", - color: whiteColor - } -}; - -export default basicsStyle; diff --git a/src/assets/jss/material-kit-pro-react/views/componentsSections/carouselStyle.js b/src/assets/jss/material-kit-pro-react/views/componentsSections/carouselStyle.js deleted file mode 100644 index 516c450eb..000000000 --- a/src/assets/jss/material-kit-pro-react/views/componentsSections/carouselStyle.js +++ /dev/null @@ -1,14 +0,0 @@ -import { container } from "assets/jss/material-kit-pro-react.js"; - -const carouselStyle = { - section: { - padding: "70px 0" - }, - container, - marginAuto: { - marginLeft: "auto !important", - marginRight: "auto !important" - } -}; - -export default carouselStyle; diff --git a/src/assets/jss/material-kit-pro-react/views/componentsSections/contentAreas.js b/src/assets/jss/material-kit-pro-react/views/componentsSections/contentAreas.js deleted file mode 100644 index 5f0bbb939..000000000 --- a/src/assets/jss/material-kit-pro-react/views/componentsSections/contentAreas.js +++ /dev/null @@ -1,97 +0,0 @@ -import { - title, - mrAuto, - mlAuto, - grayColor -} from "assets/jss/material-kit-pro-react.js"; - -import checkboxes from "assets/jss/material-kit-pro-react/customCheckboxRadioSwitchStyle.js"; -import buttonGroup from "assets/jss/material-kit-pro-react/buttonGroupStyle.js"; -import tooltips from "assets/jss/material-kit-pro-react/tooltipsStyle.js"; - -const contentAreas = { - title, - mrAuto, - mlAuto, - ...checkboxes, - ...buttonGroup, - ...tooltips, - space50: { - height: "50px", - display: "block" - }, - padding0: { - padding: "0 !important" - }, - imgContainer: { - width: "120px", - maxHeight: "160px", - overflow: "hidden", - display: "block", - "& img": { - width: "100%" - } - }, - description: { - maxWidth: "150px" - }, - tdName: { - minWidth: "200px", - fontWeight: "400", - fontSize: "1.5em" - }, - tdNameAnchor: { - color: grayColor[1] - }, - tdNameSmall: { - color: grayColor[0], - fontSize: "0.75em", - fontWeight: "300" - }, - tdNumber: { - textAlign: "right", - minWidth: "150px", - fontWeight: "300", - fontSize: "1.125em !important" - }, - tdNumberSmall: { - marginRight: "3px" - }, - tdNumberAndButtonGroup: { - lineHeight: "1 !important", - "& .fab,& .fas,& .far,& .fal,& .material-icons": { - marginRight: "0" - }, - "& svg": { - marginRight: "0" - } - }, - customFont: { - fontSize: "16px !important" - }, - actionButton: { - margin: "0px", - padding: "5px" - }, - textCenter: { - textAlign: "center" - }, - textRight: { - textAlign: "right" - }, - floatRight: { - float: "right" - }, - justifyContentCenter: { - WebkitBoxPack: "center !important", - MsFlexPack: "center !important", - justifyContent: "center !important" - }, - signInButton: { - "& button": { - marginRight: "5px" - } - } -}; - -export default contentAreas; diff --git a/src/assets/jss/material-kit-pro-react/views/componentsSections/footerStyle.js b/src/assets/jss/material-kit-pro-react/views/componentsSections/footerStyle.js deleted file mode 100644 index efc2249a3..000000000 --- a/src/assets/jss/material-kit-pro-react/views/componentsSections/footerStyle.js +++ /dev/null @@ -1,188 +0,0 @@ -import { - container, - title, - description, - section, - btnLink, - twitterColor, - dribbbleColor, - instagramColor, - grayColor -} from "assets/jss/material-kit-pro-react.js"; - -import imagesStyles from "assets/jss/material-kit-pro-react/imagesStyles.js"; - -const style = { - ...imagesStyles, - container, - title, - description, - section: { - ...section, - padding: "70px 0px" - }, - socialFeed: { - "& p": { - display: "table-cell", - verticalAlign: "top", - overflow: "hidden", - paddingBottom: "10px", - maxWidth: 300 - }, - "& i": { - fontSize: "20px", - display: "table-cell", - paddingRight: "10px" - } - }, - img: { - width: "20%", - marginRight: "5%", - marginBottom: "5%", - float: "left" - }, - list: { - marginBottom: "0", - padding: "0", - marginTop: "0" - }, - inlineBlock: { - display: "inline-block", - padding: "0px", - width: "auto" - }, - left: { - float: "left!important", - display: "block" - }, - right: { - padding: "15px 0", - margin: "0", - float: "right" - }, - aClass: { - textDecoration: "none", - backgroundColor: "transparent" - }, - block: { - color: "inherit", - padding: "0.9375rem", - fontWeight: "500", - fontSize: "12px", - textTransform: "uppercase", - borderRadius: "3px", - textDecoration: "none", - position: "relative", - display: "block" - }, - footerBrand: { - height: "50px", - padding: "15px 15px", - fontSize: "18px", - lineHeight: "50px", - marginLeft: "-15px", - color: grayColor[1], - textDecoration: "none", - fontWeight: 700, - fontFamily: "Roboto Slab,Times New Roman,serif" - }, - pullCenter: { - display: "inline-block", - float: "none" - }, - rightLinks: { - float: "right!important", - "& ul": { - marginBottom: 0, - padding: 0, - listStyle: "none", - "& li": { - display: "inline-block" - }, - "& a": { - display: "block" - } - }, - "& i": { - fontSize: "20px" - } - }, - linksVertical: { - "& li": { - display: "block !important", - marginLeft: "-5px", - marginRight: "-5px", - "& a": { - padding: "5px !important" - } - } - }, - footer: { - "& ul li": { - display: "inline-block" - }, - "& h4, & h5": { - color: grayColor[1], - textDecoration: "none" - }, - "& ul:not($socialButtons) li a": { - color: "inherit", - padding: "0.9375rem", - fontWeight: "500", - fontSize: "12px", - textTransform: "uppercase", - borderRadius: "3px", - textDecoration: "none", - position: "relative", - display: "block" - }, - "& small": { - fontSize: "75%", - color: grayColor[10] - }, - "& $pullCenter": { - display: "inline-block", - float: "none" - } - }, - iconSocial: { - width: "41px", - height: "41px", - fontSize: "24px", - minWidth: "41px", - padding: 0, - overflow: "hidden", - position: "relative" - }, - copyRight: { - padding: "15px 0px" - }, - socialButtons: { - "& li": { - display: "inline-block" - } - }, - btnTwitter: { - ...btnLink, - color: twitterColor - }, - btnDribbble: { - ...btnLink, - color: dribbbleColor - }, - btnInstagram: { - ...btnLink, - color: instagramColor - }, - icon: { - top: "3px", - width: "18px", - height: "18px", - position: "relative" - }, - customFormControl: { - paddingTop: "14px" - } -}; - -export default style; diff --git a/src/assets/jss/material-kit-pro-react/views/componentsSections/javascriptStyles.js b/src/assets/jss/material-kit-pro-react/views/componentsSections/javascriptStyles.js deleted file mode 100644 index 184605b8d..000000000 --- a/src/assets/jss/material-kit-pro-react/views/componentsSections/javascriptStyles.js +++ /dev/null @@ -1,94 +0,0 @@ -import { - container, - title, - cardTitle, - description, - mlAuto, - mrAuto, - blackColor, - whiteColor, - grayColor, - hexToRgb -} from "assets/jss/material-kit-pro-react.js"; - -import modalStyle from "assets/jss/material-kit-pro-react/modalStyle.js"; -import tooltipsStyle from "assets/jss/material-kit-pro-react/tooltipsStyle.js"; -import popoverStyles from "assets/jss/material-kit-pro-react/popoverStyles.js"; -import customCheckboxRadioSwitch from "assets/jss/material-kit-pro-react/customCheckboxRadioSwitchStyle.js"; - -const javascriptStyles = theme => ({ - container, - description, - cardTitle, - mlAuto, - mrAuto, - ...tooltipsStyle, - ...popoverStyles, - ...modalStyle(theme), - ...customCheckboxRadioSwitch, - section: { - padding: "70px 0 0" - }, - title: { - ...title, - marginTop: "30px", - minHeight: "32px", - textDecoration: "none" - }, - icon: { - width: "24px", - height: "24px", - color: grayColor[13] - }, - label: { - color: "rgba(" + hexToRgb(blackColor) + ", 0.26)", - cursor: "pointer", - display: "inline-flex", - fontSize: "14px", - transition: "0.3s ease all", - lineHeight: "1.428571429", - fontWeight: "400", - paddingLeft: "0" - }, - textCenter: { - textAlign: "center" - }, - cardTitleWhite: { - ...cardTitle, - color: whiteColor + " !important" - }, - socialLine: { - marginTop: "1rem", - textAlign: "center", - padding: "0" - }, - socialLineButton: { - "&, &:hover": { color: whiteColor }, - marginLeft: "5px", - marginRight: "5px" - }, - cardLoginHeader: { - marginTop: "-40px", - padding: "20px 0", - width: "100%", - marginBottom: "15px" - }, - cardLoginBody: { - paddingTop: "0", - paddingBottom: "0" - }, - justifyContentCenter: { - WebkitBoxPack: "center !important", - MsFlexPack: "center !important", - justifyContent: "center !important" - }, - infoArea: { - padding: "0px 0px 20px !important" - }, - space50: { - height: "50px", - display: "block" - } -}); - -export default javascriptStyles; diff --git a/src/assets/jss/material-kit-pro-react/views/componentsSections/navbarsStyle.js b/src/assets/jss/material-kit-pro-react/views/componentsSections/navbarsStyle.js deleted file mode 100644 index ff117653e..000000000 --- a/src/assets/jss/material-kit-pro-react/views/componentsSections/navbarsStyle.js +++ /dev/null @@ -1,58 +0,0 @@ -import { container, title } from "assets/jss/material-kit-pro-react.js"; -import headerLinksStyle from "assets/jss/material-kit-pro-react/components/headerLinksStyle.js"; - -const navbarsStyle = theme => ({ - container, - ...headerLinksStyle(theme), - section: { - padding: "70px 0", - paddingBottom: "0" - }, - title: { - ...title, - marginTop: "30px", - minHeight: "32px", - textDecoration: "none" - }, - navbar: { - marginBottom: "-20px", - zIndex: "100", - position: "relative", - overflow: "hidden", - "& header": { - borderRadius: "0", - zIndex: "unset" - } - }, - navigation: { - backgroundPosition: "50%", - backgroundSize: "cover", - marginTop: "0", - minHeight: "740px" - }, - formControl: { - margin: "0 !important", - paddingTop: "7px", - paddingBottom: "7px" - }, - inputRootCustomClasses: { - margin: "0!important" - }, - searchIcon: { - width: "20px", - height: "20px", - color: "inherit" - }, - img: { - width: "40px", - height: "40px", - borderRadius: "50%" - }, - imageDropdownButton: { - padding: "0px", - borderRadius: "50%", - marginLeft: "5px" - } -}); - -export default navbarsStyle; diff --git a/src/assets/jss/material-kit-pro-react/views/componentsSections/notificationsStyles.js b/src/assets/jss/material-kit-pro-react/views/componentsSections/notificationsStyles.js deleted file mode 100644 index 23dd8874c..000000000 --- a/src/assets/jss/material-kit-pro-react/views/componentsSections/notificationsStyles.js +++ /dev/null @@ -1,30 +0,0 @@ -import { - container, - title, - whiteColor, - section -} from "assets/jss/material-kit-pro-react.js"; - -const notificationsStyles = { - section: { - backgroundColor: whiteColor, - display: "block", - width: "100%", - position: "relative", - padding: "70px 0", - ...section - }, - title: { - ...title, - marginTop: "30px", - minHeight: "32px", - textDecoration: "none" - }, - space70: { - height: "70px", - display: "block" - }, - container -}; - -export default notificationsStyles; diff --git a/src/assets/jss/material-kit-pro-react/views/componentsSections/pillsStyle.js b/src/assets/jss/material-kit-pro-react/views/componentsSections/pillsStyle.js deleted file mode 100644 index 006a6c005..000000000 --- a/src/assets/jss/material-kit-pro-react/views/componentsSections/pillsStyle.js +++ /dev/null @@ -1,16 +0,0 @@ -import { container, title } from "assets/jss/material-kit-pro-react.js"; - -const pillsStyle = { - section: { - padding: "70px 0" - }, - container, - title: { - ...title, - marginTop: "30px", - minHeight: "32px", - textDecoration: "none" - } -}; - -export default pillsStyle; diff --git a/src/assets/jss/material-kit-pro-react/views/componentsSections/preFooter.js b/src/assets/jss/material-kit-pro-react/views/componentsSections/preFooter.js deleted file mode 100644 index 8b08628d0..000000000 --- a/src/assets/jss/material-kit-pro-react/views/componentsSections/preFooter.js +++ /dev/null @@ -1,115 +0,0 @@ -import { - container, - title, - mlAuto, - mrAuto, - description, - blackColor, - whiteColor, - grayColor, - hexToRgb -} from "assets/jss/material-kit-pro-react.js"; - -const styles = { - container, - title, - mrAuto, - mlAuto, - description, - card: {}, - cardBody: { - padding: "15px", - "& form": { - marginBottom: "0" - } - }, - cardForm: { - margin: "0 0 0 14px", - padding: 0, - top: 10 - }, - socialLine: { - padding: ".9375rem 0px", - "& $border": { - borderRight: "1px solid rgba(" + hexToRgb(blackColor) + ",0.12)" - }, - "& $border:last-child": { - border: 0 - } - }, - textCenter: { - textAlign: "center !important" - }, - white: { - backgroundColor: whiteColor - }, - dark: { - background: - "radial-gradient(ellipse at center," + - grayColor[4] + - " 0," + - grayColor[5] + - " 100%)", - backgroundSize: "550% 450%", - "& $border": { - borderColor: "rgba(" + hexToRgb(whiteColor) + ",0.1)" - } - }, - bigIcons: { - "& a": { - margin: 0, - width: "100% !important", - paddingTop: "45px", - paddingBottom: "45px" - }, - "& button i.fab, & a i.fab": { - fontSize: "25px !important", - lineHeight: "90px !important" - } - }, - subscribeLine: { - padding: "1.875rem 0px", - "& $card": { - marginTop: "30px" - }, - "& form": { margin: "0px" }, - "& $formFix": { paddingTop: "0px" }, - "&$subscribeLineImage:after": { - position: "absolute", - zIndex: 1, - width: "100%", - height: "100%", - display: "block", - left: 0, - top: 0, - content: "''", - backgroundColor: "rgba(" + hexToRgb(blackColor) + ",0.66)" - } - }, - formFix: {}, - subscribeLineWhite: { - backgroundColor: whiteColor, - "& $subscribeButton": { - top: "-6px" - } - }, - subscribeLineImage: { - position: "relative", - backgroundPosition: "top center", - backgroundSize: "cover", - "& $container": { - zIndex: 2, - position: "relative" - }, - "& $title": { - color: whiteColor - }, - "& $description": { - color: grayColor[0] - } - }, - subscribeButton: {}, - border: {} -}; - -export default styles; diff --git a/src/assets/jss/material-kit-pro-react/views/componentsSections/sectionCards.js b/src/assets/jss/material-kit-pro-react/views/componentsSections/sectionCards.js deleted file mode 100644 index 17874ecca..000000000 --- a/src/assets/jss/material-kit-pro-react/views/componentsSections/sectionCards.js +++ /dev/null @@ -1,205 +0,0 @@ -import { - container, - coloredShadow, - title, - cardTitle, - description, - mlAuto, - infoColor, - whiteColor, - roseColor, - grayColor, - hexToRgb -} from "assets/jss/material-kit-pro-react.js"; - -import imageStyles from "assets/jss/material-kit-pro-react/imagesStyles.js"; - -import rotatingCards from "assets/jss/material-kit-pro-react/rotatingCards.js"; - -const styles = { - container, - coloredShadow, - title, - mlAuto, - cardTitle, - ...imageStyles, - ...rotatingCards, - sectionGray: { - background: grayColor[14] - }, - sectionWhite: { - background: whiteColor - }, - cardTitleAbsolute: { - ...cardTitle, - position: "absolute !important", - bottom: "15px !important", - left: "15px !important", - color: whiteColor + " !important", - fontSize: "1.125rem !important", - textShadow: "0 2px 5px rgba(" + hexToRgb(grayColor[9]) + ", 0.5) !important" - }, - cardTitleWhite: { - "&, & a": { - ...title, - marginTop: ".625rem", - marginBottom: "0", - minHeight: "auto", - color: whiteColor + " !important" - } - }, - cardCategory: { - marginTop: "10px", - "& svg": { - position: "relative", - top: "8px" - } - }, - cardCategorySocial: { - marginTop: "10px", - "& .fab,& .fas,& .far,& .fal,& .material-icons": { - fontSize: "22px", - position: "relative", - marginTop: "-4px", - top: "2px", - marginRight: "5px" - }, - "& svg": { - position: "relative", - top: "5px" - } - }, - cardCategorySocialWhite: { - marginTop: "10px", - color: "rgba(" + hexToRgb(whiteColor) + ", 0.8)", - "& .fab,& .fas,& .far,& .fal,& .material-icons": { - fontSize: "22px", - position: "relative", - marginTop: "-4px", - top: "2px", - marginRight: "5px" - }, - "& svg": { - position: "relative", - top: "5px" - } - }, - cardCategoryWhite: { - marginTop: "10px", - color: "rgba(" + hexToRgb(whiteColor) + ", 0.7)" - }, - cardCategoryFullWhite: { - marginTop: "10px", - color: whiteColor - }, - cardDescription: { - ...description - }, - cardDescriptionWhite: { - color: "rgba(" + hexToRgb(whiteColor) + ", 0.8)" - }, - author: { - display: "inline-flex", - "& a": { - color: grayColor[1] - } - }, - authorWhite: { - display: "inline-flex", - "& a": { - color: "rgba(" + hexToRgb(whiteColor) + ", 0.8)" - } - }, - avatar: { - width: "30px", - height: "30px", - overflow: "hidden", - borderRadius: "50%", - marginRight: "5px" - }, - statsWhite: { - color: "rgba(" + hexToRgb(whiteColor) + ", 0.8)", - display: "inline-flex", - "& .fab,& .fas,& .far,& .fal,& .material-icons": { - position: "relative", - top: "3px", - marginRight: "3px", - marginLeft: "3px", - fontSize: "18px", - lineHeight: "18px" - }, - "& svg": { - position: "relative", - top: "3px", - marginRight: "3px", - marginLeft: "3px", - width: "18px", - height: "18px" - } - }, - stats: { - color: grayColor[0], - display: "flex", - "& .fab,& .fas,& .far,& .fal,& .material-icons": { - position: "relative", - top: "3px", - marginRight: "3px", - marginLeft: "3px", - fontSize: "18px", - lineHeight: "18px" - }, - "& svg": { - position: "relative", - top: "3px", - marginRight: "3px", - marginLeft: "3px", - width: "18px", - height: "18px" - } - }, - justifyContentCenter: { - WebkitBoxPack: "center !important", - MsFlexPack: "center !important", - justifyContent: "center !important" - }, - iconWrapper: { - color: "rgba(" + hexToRgb(whiteColor) + ", 0.76)", - margin: "10px auto 0", - width: "130px", - height: "130px", - border: "1px solid " + grayColor[14], - borderRadius: "50%", - lineHeight: "174px", - "& .fab,& .fas,& .far,& .fal,& .material-icons": { - fontSize: "55px", - lineHeight: "55px" - }, - "& svg": { - width: "55px", - height: "55px" - } - }, - iconWrapperColor: { - borderColor: "rgba(" + hexToRgb(whiteColor) + ", 0.25)" - }, - iconWhite: { - color: whiteColor - }, - iconRose: { - color: roseColor[0] - }, - iconInfo: { - color: infoColor[0] - }, - marginTop30: { - marginTop: "30px" - }, - textCenter: { - textAlign: "center" - }, - marginBottom20: { - marginBottom: "20px" - } -}; - -export default styles; diff --git a/src/assets/jss/material-kit-pro-react/views/componentsSections/tabsStyle.js b/src/assets/jss/material-kit-pro-react/views/componentsSections/tabsStyle.js deleted file mode 100644 index 721bc98b9..000000000 --- a/src/assets/jss/material-kit-pro-react/views/componentsSections/tabsStyle.js +++ /dev/null @@ -1,13 +0,0 @@ -import { container } from "assets/jss/material-kit-pro-react.js"; - -const tabsStyle = { - section: { - padding: "70px 0" - }, - container, - textCenter: { - textAlign: "center" - } -}; - -export default tabsStyle; diff --git a/src/assets/jss/material-kit-pro-react/views/componentsSections/typographyStyle.js b/src/assets/jss/material-kit-pro-react/views/componentsSections/typographyStyle.js deleted file mode 100644 index 2eb6d1c16..000000000 --- a/src/assets/jss/material-kit-pro-react/views/componentsSections/typographyStyle.js +++ /dev/null @@ -1,49 +0,0 @@ -import { - grayColor, - container, - title -} from "assets/jss/material-kit-pro-react.js"; - -import imagesStyles from "assets/jss/material-kit-pro-react/imagesStyles.js"; - -const typographyStyle = { - section: { - padding: "70px 0" - }, - container, - space50: { - height: "50px", - display: "block" - }, - title: { - ...title, - marginTop: "30px", - minHeight: "32px", - textDecoration: "none" - }, - typo: { - paddingLeft: "25%", - marginBottom: "40px", - position: "relative", - width: "100%" - }, - note: { - fontFamily: '"Roboto", "Helvetica", "Arial", sans-serif', - bottom: "10px", - color: grayColor[21], - display: "block", - fontWeight: "400", - fontSize: "13px", - lineHeight: "13px", - left: "0", - marginLeft: "20px", - position: "absolute", - width: "260px" - }, - marginLeft: { - marginLeft: "auto !important" - }, - ...imagesStyles -}; - -export default typographyStyle; diff --git a/src/assets/jss/material-kit-pro-react/views/componentsStyle.js b/src/assets/jss/material-kit-pro-react/views/componentsStyle.js deleted file mode 100644 index 19cd75c25..000000000 --- a/src/assets/jss/material-kit-pro-react/views/componentsStyle.js +++ /dev/null @@ -1,108 +0,0 @@ -import { - container, - main, - mainRaised, - title, - whiteColor, - grayColor, - section, - hexToRgb -} from "assets/jss/material-kit-pro-react.js"; - -const componentsStyle = { - main, - mainRaised, - parallax: { - height: "90vh", - overflow: "hidden" - }, - container: { - ...container, - zIndex: "2", - position: "relative" - }, - brand: { - color: whiteColor, - textAlign: "center", - "& h1": { - fontSize: "4.2rem", - fontWeight: "600", - display: "inline-block", - position: "relative" - }, - "& h3": { - fontSize: "1.313rem", - maxWidth: "500px", - margin: "10px auto 0" - } - }, - title: { - ...title, - color: whiteColor + " !important" - }, - link: { - textDecoration: "none" - }, - textCenter: { - textAlign: "center" - }, - proBadge: { - position: "absolute", - fontSize: "22px", - textTransform: "uppercase", - fontWeight: "bold", - right: "-90px", - top: "-3px", - padding: "10px 18px", - backgroundColor: whiteColor, - borderRadius: "3px", - color: grayColor[18], - lineHeight: "22px", - boxShadow: "0px 5px 5px -2px rgba(" + hexToRgb(grayColor[25]) + ",0.4)" - }, - section: { - ...section, - padding: "70px 0px" - }, - sectionGray: { - background: grayColor[14] - }, - block: { - color: "inherit", - padding: "0.9375rem", - fontWeight: "500", - fontSize: "12px", - textTransform: "uppercase", - borderRadius: "3px", - textDecoration: "none", - position: "relative", - display: "block" - }, - inlineBlock: { - display: "inline-block", - padding: "0px", - width: "auto" - }, - list: { - marginBottom: "0", - padding: "0", - marginTop: "0" - }, - left: { - float: "left!important", - display: "block" - }, - right: { - padding: "15px 0", - margin: "0", - float: "right" - }, - icon: { - width: "18px", - height: "18px", - top: "3px", - position: "relative" - } -}; - -export default componentsStyle; diff --git a/src/assets/jss/material-kit-pro-react/views/contactUsStyle.js b/src/assets/jss/material-kit-pro-react/views/contactUsStyle.js deleted file mode 100644 index 3155c85bb..000000000 --- a/src/assets/jss/material-kit-pro-react/views/contactUsStyle.js +++ /dev/null @@ -1,75 +0,0 @@ -import { - container, - title, - main, - mainRaised, - mlAuto, - description -} from "assets/jss/material-kit-pro-react.js"; - -const contactUsStyle = { - main, - mainRaised, - title, - mlAuto, - description, - container: { - ...container, - maxWidth: "970px !important" - }, - contactContent: { - paddingBottom: "40px", - paddingTop: "40px" - }, - bigMap: { - height: "55vh", - maxHeight: "550px", - width: "100%", - display: "block" - }, - info: { - paddingBottom: "10px", - paddingTop: 0 - }, - textCenter: { - textAlign: "center !important" - }, - block: { - color: "inherit", - padding: "0.9375rem", - fontWeight: "500", - fontSize: "12px", - textTransform: "uppercase", - borderRadius: "3px", - textDecoration: "none", - position: "relative", - display: "block" - }, - inlineBlock: { - display: "inline-block", - padding: "0px", - width: "auto" - }, - list: { - marginBottom: "0", - padding: "0", - marginTop: "0" - }, - left: { - float: "left!important", - display: "block" - }, - right: { - padding: "15px 0", - margin: "0", - float: "right" - }, - icon: { - width: "18px", - height: "18px", - top: "3px", - position: "relative" - } -}; - -export default contactUsStyle; diff --git a/src/assets/jss/material-kit-pro-react/views/ecommerceSections/blogStyle.js b/src/assets/jss/material-kit-pro-react/views/ecommerceSections/blogStyle.js deleted file mode 100644 index 90f94d257..000000000 --- a/src/assets/jss/material-kit-pro-react/views/ecommerceSections/blogStyle.js +++ /dev/null @@ -1,29 +0,0 @@ -import { - section, - container, - cardTitle, - grayColor, - roseColor, - coloredShadow -} from "assets/jss/material-kit-pro-react.js"; - -const styles = { - cardTitle, - container, - section: { - ...section, - padding: "70px 0px" - }, - coloredShadow, - cardDescription: { - color: grayColor[0] - }, - cardCategory: { - marginTop: "10px" - }, - textRose: { - color: roseColor[0] + " !important" - } -}; - -export default styles; diff --git a/src/assets/jss/material-kit-pro-react/views/ecommerceSections/latestOffersStyle.js b/src/assets/jss/material-kit-pro-react/views/ecommerceSections/latestOffersStyle.js deleted file mode 100644 index 78beddb17..000000000 --- a/src/assets/jss/material-kit-pro-react/views/ecommerceSections/latestOffersStyle.js +++ /dev/null @@ -1,49 +0,0 @@ -import { - section, - container, - cardTitle, - coloredShadow, - grayColor, - dangerColor, - mlAuto -} from "assets/jss/material-kit-pro-react.js"; - -import tooltipsStyle from "assets/jss/material-kit-pro-react/tooltipsStyle.js"; - -const styles = { - cardTitle, - container, - ...tooltipsStyle, - section: { - ...section, - padding: "70px 0px" - }, - coloredShadow, - cardDescription: { - color: grayColor[0], - textAlign: "center" - }, - mlAuto, - priceContainer: { - display: "inline-flex" - }, - price: { - fontSize: "18px", - color: grayColor[22] - }, - priceOld: { - fontSize: "16px", - textDecoration: "line-through" - }, - priceNew: { - color: dangerColor[0] - }, - stats: { - color: grayColor[0] - }, - textCenter: { - textAlign: "center" - } -}; - -export default styles; diff --git a/src/assets/jss/material-kit-pro-react/views/ecommerceSections/productsStyle.js b/src/assets/jss/material-kit-pro-react/views/ecommerceSections/productsStyle.js deleted file mode 100644 index 5ed0e18b8..000000000 --- a/src/assets/jss/material-kit-pro-react/views/ecommerceSections/productsStyle.js +++ /dev/null @@ -1,99 +0,0 @@ -import { - section, - container, - cardTitle, - coloredShadow, - mlAuto, - mrAuto, - grayColor -} from "assets/jss/material-kit-pro-react.js"; - -import customCheckboxRadioSwitch from "assets/jss/material-kit-pro-react/customCheckboxRadioSwitchStyle.js"; - -import tooltipsStyle from "assets/jss/material-kit-pro-react/tooltipsStyle.js"; - -const styles = { - ...customCheckboxRadioSwitch, - ...tooltipsStyle, - checkRoot: { - padding: "14px", - "&:hover": { - backgroundColor: "unset !important" - } - }, - coloredShadow, - mlAuto, - mrAuto, - cardTitle: { - ...cardTitle, - textAlign: "center", - marginBottom: "0px !important" - }, - cardDescription: { - color: grayColor[0], - textAlign: "center" - }, - container: { - ...container - }, - description: { - color: grayColor[0] - }, - section: { - ...section, - padding: "70px 0px" - }, - priceContainer: { - display: "inline-flex" - }, - price: { - fontSize: "18px", - color: grayColor[22] - }, - pullRight: { - float: "right" - }, - cardHeaderImage: { - position: "relative", - padding: "0", - zIndex: "1", - marginLeft: "15px", - marginRight: "15px", - marginTop: "-30px", - borderRadius: "6px", - "& img": { - width: "100%", - borderRadius: "6px", - pointerEvents: "none" - }, - "& a": { - display: "block" - } - }, - justifyContentBetween: { - WebkitBoxPack: "justify!important", - justifyContent: "space-between !important" - }, - customExpandPanel: { - maxHeight: "273px", - overflowY: "scroll", - "& label": { - display: "block" - } - }, - priceSlider: { - fontWeight: "500" - }, - refineButton: { - margin: "-3px 0" - }, - cardBodyRefine: { - paddingLeft: "15px", - paddingRight: "15px" - }, - textLeft: { - textAlign: "left" - } -}; - -export default styles; diff --git a/src/assets/jss/material-kit-pro-react/views/ecommerceStyle.js b/src/assets/jss/material-kit-pro-react/views/ecommerceStyle.js deleted file mode 100644 index 2943e3292..000000000 --- a/src/assets/jss/material-kit-pro-react/views/ecommerceStyle.js +++ /dev/null @@ -1,138 +0,0 @@ -import { - title, - main, - mainRaised, - mrAuto, - mlAuto, - container, - description, - blackColor, - whiteColor, - grayColor, - hexToRgb -} from "assets/jss/material-kit-pro-react.js"; -import imagesStyles from "assets/jss/material-kit-pro-react/imagesStyles.js"; - -const styles = { - ...imagesStyles, - title, - main, - mainRaised, - mrAuto, - mlAuto, - description, - textCenter: { - textAlign: "center !important" - }, - container: { - ...container, - zIndex: "2" - }, - brand: { - "& h1, & h4": { - color: whiteColor - } - }, - card: {}, - subscribeButton: {}, - cardBody: { - padding: "15px", - "& form": { - marginBottom: "0" - } - }, - cardForm: { - margin: "0 0 0 14px", - padding: 0, - top: 10 - }, - subscribeLine: { - padding: "1.875rem 0px", - "& $card": { - marginTop: "30px" - }, - "& form": { margin: "0px" }, - "&$subscribeLineImage:after": { - position: "absolute", - zIndex: 1, - width: "100%", - height: "100%", - display: "block", - left: 0, - top: 0, - content: "''", - backgroundColor: "rgba(" + hexToRgb(blackColor) + ",0.66)" - } - }, - subscribeLineImage: { - position: "relative", - backgroundPosition: "top center", - backgroundSize: "cover", - "& $container": { - zIndex: 2, - position: "relative" - }, - "& $title": { - color: whiteColor - }, - "& $description": { - color: grayColor[0] - } - }, - socialFeed: { - "& p": { - display: "table-cell", - verticalAlign: "top", - overflow: "hidden", - paddingBottom: "10px", - maxWidth: 300 - }, - "& i": { - fontSize: "20px", - display: "table-cell", - paddingRight: "10px" - } - }, - img: { - width: "20%", - marginRight: "5%", - marginBottom: "5%", - float: "left" - }, - list: { - marginBottom: "0", - padding: "0", - marginTop: "0" - }, - inlineBlock: { - display: "inline-block", - padding: "0px", - width: "auto" - }, - left: { - float: "left!important", - display: "block" - }, - right: { - padding: "15px 0", - margin: "0", - float: "right" - }, - aClass: { - textDecoration: "none", - backgroundColor: "transparent" - }, - block: { - color: "inherit", - padding: "0.9375rem", - fontWeight: "500", - fontSize: "12px", - textTransform: "uppercase", - borderRadius: "3px", - textDecoration: "none", - position: "relative", - display: "block" - } -}; - -export default styles; diff --git a/src/assets/jss/material-kit-pro-react/views/errorPageStyles.js b/src/assets/jss/material-kit-pro-react/views/errorPageStyles.js deleted file mode 100644 index 122cba14a..000000000 --- a/src/assets/jss/material-kit-pro-react/views/errorPageStyles.js +++ /dev/null @@ -1,105 +0,0 @@ -import { - title, - whiteColor, - blackColor, - hexToRgb -} from "assets/jss/material-kit-pro-react.js"; - -const errorPageStyles = { - contentCenter: { - position: "absolute", - top: "50%", - left: "50%", - zIndex: "3", - transform: "translate(-50%,-50%)", - textAlign: "center", - color: whiteColor, - padding: "0 15px", - width: "100%", - maxWidth: "880px" - }, - title: { - ...title, - fontSize: "13.7em", - color: whiteColor, - letterSpacing: "14px !important", - fontWeight: "700" - }, - subTitle: { - fontSize: "2.25rem", - marginTop: "0", - marginBottom: "8px" - }, - description: { - fontSize: "1.125rem", - marginTop: "0", - marginBottom: "8px" - }, - pageHeader: { - minHeight: "100vh", - height: "auto", - display: "inherit", - position: "relative", - margin: "0", - padding: "0", - border: "0", - alignItems: "center", - "&:before": { - background: "rgba(" + hexToRgb(blackColor) + ", 0.5)" - }, - "&:before,&:after": { - position: "absolute", - zIndex: "1", - width: "100%", - height: "100%", - display: "block", - left: "0", - top: "0", - content: '""' - } - }, - block: { - color: "inherit", - padding: "0.9375rem", - fontWeight: "500", - fontSize: "12px", - textTransform: "uppercase", - borderRadius: "3px", - textDecoration: "none", - position: "relative", - display: "block" - }, - inlineBlock: { - display: "inline-block", - padding: "0px", - width: "auto" - }, - list: { - marginBottom: "0", - padding: "0", - marginTop: "0" - }, - left: { - float: "left!important", - display: "block", - "&,& *,& *:hover,& *:focus": { - color: "inherit !important" - } - }, - right: { - padding: "15px 0", - margin: "0", - float: "right", - "&,& *,& *:hover,& *:focus": { - color: "inherit !important" - } - }, - icon: { - width: "18px", - height: "18px", - top: "3px", - position: "relative" - } -}; - -export default errorPageStyles; diff --git a/src/assets/jss/material-kit-pro-react/views/landingPageSections/productStyle.js b/src/assets/jss/material-kit-pro-react/views/landingPageSections/productStyle.js deleted file mode 100644 index 5e45243a6..000000000 --- a/src/assets/jss/material-kit-pro-react/views/landingPageSections/productStyle.js +++ /dev/null @@ -1,20 +0,0 @@ -import { title, grayColor } from "assets/jss/material-kit-pro-react.js"; - -const productStyle = { - section: { - padding: "70px 0", - textAlign: "center" - }, - title: { - ...title, - marginBottom: "1rem", - marginTop: "30px", - minHeight: "32px", - textDecoration: "none" - }, - description: { - color: grayColor[0] - } -}; - -export default productStyle; diff --git a/src/assets/jss/material-kit-pro-react/views/landingPageSections/teamStyle.js b/src/assets/jss/material-kit-pro-react/views/landingPageSections/teamStyle.js deleted file mode 100644 index a13e50cdc..000000000 --- a/src/assets/jss/material-kit-pro-react/views/landingPageSections/teamStyle.js +++ /dev/null @@ -1,54 +0,0 @@ -import { - cardTitle, - title, - grayColor -} from "assets/jss/material-kit-pro-react.js"; -import imagesStyle from "assets/jss/material-kit-pro-react/imagesStyles.js"; - -const teamStyle = { - section: { - padding: "70px 0", - textAlign: "center" - }, - title: { - ...title, - marginBottom: "1rem", - marginTop: "30px", - minHeight: "32px", - textDecoration: "none" - }, - ...imagesStyle, - itemGrid: { - marginLeft: "auto", - marginRight: "auto" - }, - cardTitle, - smallTitle: { - color: grayColor[7] - }, - description: { - color: grayColor[0] - }, - justifyCenter: { - justifyContent: "center !important" - }, - socials: { - marginTop: "0", - width: "100%", - transform: "none", - left: "0", - top: "0", - height: "100%", - lineHeight: "41px", - fontSize: "20px", - color: grayColor[0] - }, - margin5: { - margin: "5px" - }, - card3: { - textAlign: "center" - } -}; - -export default teamStyle; diff --git a/src/assets/jss/material-kit-pro-react/views/landingPageSections/workStyle.js b/src/assets/jss/material-kit-pro-react/views/landingPageSections/workStyle.js deleted file mode 100644 index 475e27854..000000000 --- a/src/assets/jss/material-kit-pro-react/views/landingPageSections/workStyle.js +++ /dev/null @@ -1,35 +0,0 @@ -import { - title, - mrAuto, - mlAuto, - grayColor -} from "assets/jss/material-kit-pro-react.js"; - -const workStyle = { - mrAuto, - mlAuto, - section: { - padding: "70px 0" - }, - title: { - ...title, - marginBottom: "1rem", - marginTop: "30px", - minHeight: "32px", - textDecoration: "none", - textAlign: "center" - }, - description: { - color: grayColor[0], - textAlign: "center" - }, - textCenter: { - textAlign: "center" - }, - textArea: { - marginRight: "15px", - marginLeft: "15px" - } -}; - -export default workStyle; diff --git a/src/assets/jss/material-kit-pro-react/views/landingPageStyle.js b/src/assets/jss/material-kit-pro-react/views/landingPageStyle.js deleted file mode 100644 index 528b85318..000000000 --- a/src/assets/jss/material-kit-pro-react/views/landingPageStyle.js +++ /dev/null @@ -1,73 +0,0 @@ -import { - container, - title, - main, - whiteColor, - mainRaised -} from "assets/jss/material-kit-pro-react.js"; - -const landingPageStyle = { - container: { - color: whiteColor, - ...container, - zIndex: "2" - }, - title: { - ...title, - display: "inline-block", - position: "relative", - marginTop: "30px", - minHeight: "32px", - color: whiteColor, - textDecoration: "none" - }, - subtitle: { - fontSize: "1.313rem", - maxWidth: "500px", - margin: "10px auto 0" - }, - main: { - ...main - }, - mainRaised: { - ...mainRaised - }, - block: { - color: "inherit", - padding: "0.9375rem", - fontWeight: "500", - fontSize: "12px", - textTransform: "uppercase", - borderRadius: "3px", - textDecoration: "none", - position: "relative", - display: "block" - }, - inlineBlock: { - display: "inline-block", - padding: "0px", - width: "auto" - }, - list: { - marginBottom: "0", - padding: "0", - marginTop: "0" - }, - left: { - float: "left!important", - display: "block" - }, - right: { - padding: "15px 0", - margin: "0", - float: "right" - }, - icon: { - width: "18px", - height: "18px", - top: "3px", - position: "relative" - } -}; - -export default landingPageStyle; diff --git a/src/assets/jss/material-kit-pro-react/views/loginPageStyle.js b/src/assets/jss/material-kit-pro-react/views/loginPageStyle.js deleted file mode 100644 index 10151703d..000000000 --- a/src/assets/jss/material-kit-pro-react/views/loginPageStyle.js +++ /dev/null @@ -1,122 +0,0 @@ -import { - container, - description, - cardTitle, - blackColor, - whiteColor, - grayColor, - hexToRgb -} from "assets/jss/material-kit-pro-react.js"; - -const signupPageStyle = theme => ({ - description, - cardTitle: { - ...cardTitle, - color: whiteColor + " !important" - }, - container: { - ...container, - zIndex: "4", - [theme.breakpoints.down("sm")]: { - paddingBottom: "100px" - } - }, - pageHeader: { - color: whiteColor, - border: "0", - height: "100%", - margin: "0", - display: "flex!important", - padding: "120px 0", - position: "relative", - minHeight: "100vh", - alignItems: "center", - "&:before": { - background: "rgba(" + hexToRgb(blackColor) + ", 0.5)" - }, - "&:before,&:after": { - position: "absolute", - zIndex: "1", - width: "100%", - height: "100%", - display: "block", - left: "0", - top: "0", - content: '""' - } - }, - form: { - margin: "0" - }, - cardHeader: { - width: "auto", - textAlign: "center" - }, - socialLine: { - marginTop: "1rem", - textAlign: "center", - padding: "0" - }, - inputIconsColor: { - color: grayColor[13] - }, - textCenter: { - textAlign: "center" - }, - iconButtons: { - marginRight: "3px !important", - marginLeft: "3px !important" - }, - block: { - color: "inherit", - padding: "0.9375rem", - fontWeight: "500", - fontSize: "12px", - textTransform: "uppercase", - borderRadius: "3px", - textDecoration: "none", - position: "relative", - display: "block" - }, - inlineBlock: { - display: "inline-block", - padding: "0px", - width: "auto" - }, - list: { - marginBottom: "0", - padding: "0", - marginTop: "0" - }, - left: { - float: "left!important", - display: "block", - "&,& *,& *:hover,& *:focus": { - color: whiteColor + " !important" - } - }, - right: { - padding: "15px 0", - margin: "0", - float: "right", - "&,& *,& *:hover,& *:focus": { - color: whiteColor + " !important" - } - }, - icon: { - width: "18px", - height: "18px", - top: "3px", - position: "relative" - }, - footer: { - position: "absolute", - width: "100%", - background: "transparent", - bottom: "0", - color: whiteColor, - zIndex: "2" - } -}); - -export default signupPageStyle; diff --git a/src/assets/jss/material-kit-pro-react/views/presentationSections/cardsStyle.js b/src/assets/jss/material-kit-pro-react/views/presentationSections/cardsStyle.js deleted file mode 100644 index 03b100107..000000000 --- a/src/assets/jss/material-kit-pro-react/views/presentationSections/cardsStyle.js +++ /dev/null @@ -1,46 +0,0 @@ -import { - container, - section, - sectionDark, - sectionDescription, - title, - whiteColor, - mlAuto, - hexToRgb -} from "assets/jss/material-kit-pro-react.js"; - -const cardsStyle = { - section: { - ...section, - padding: "50px 0px" - }, - sectionDark, - container, - sectionDescription, - title: { - ...title, - color: whiteColor, - marginTop: "30px", - marginBottom: "25px", - minHeight: "32px" - }, - description: { - color: "rgba(" + hexToRgb(whiteColor) + ",0.76)" - }, - imageContainer: { - maxWidth: "1040px", - marginTop: "-140px", - position: "relative", - height: "660px", - "& img": { - maxWidth: "1040px", - width: "auto", - position: "absolute", - right: "0px", - top: "0px" - } - }, - mlAuto -}; - -export default cardsStyle; diff --git a/src/assets/jss/material-kit-pro-react/views/presentationSections/componentsStyle.js b/src/assets/jss/material-kit-pro-react/views/presentationSections/componentsStyle.js deleted file mode 100644 index 5c5bd9606..000000000 --- a/src/assets/jss/material-kit-pro-react/views/presentationSections/componentsStyle.js +++ /dev/null @@ -1,139 +0,0 @@ -import { - container, - title, - mlAuto, - blackColor, - grayColor, - hexToRgb -} from "assets/jss/material-kit-pro-react.js"; - -const reusableStylesForImgs = { - position: "absolute", - boxShadow: - "0 8px 10px 1px rgba(" + - hexToRgb(blackColor) + - ", 0.14), 0 3px 14px 2px rgba(" + - hexToRgb(blackColor) + - ", 0.12), 0 5px 5px -3px rgba(" + - hexToRgb(blackColor) + - ", 0.2)" -}; - -const componentsStyle = theme => ({ - container, - mlAuto, - title: { - ...title, - marginBottom: "5px", - marginTop: "60px", - "& + $description": { - marginTop: "5px", - marginBottom: "30px" - } - }, - description: { - color: grayColor[0] - }, - imageContainer: { - height: "560px", - position: "relative" - }, - componentsMacbook: { - [theme.breakpoints.down("sm")]: { - maxWidth: "850px!important", - maxHeight: "480px!important", - marginTop: "12vh", - left: "-12px" - }, - [theme.breakpoints.down(768)]: { - maxWidth: "350px!important", - maxHeight: "250px!important", - marginTop: "12vh", - left: "-12px" - }, - width: "auto", - left: "-100px", - top: 0, - height: "100%", - position: "absolute" - }, - shoppingCart: { - [theme.breakpoints.down("md")]: { - display: "none" - }, - ...reusableStylesForImgs, - left: "-13%", - top: "27%", - height: "175px", - borderRadius: "2px", - WebkitAnimation: "Floatingx 14s ease-in-out infinite", - float: "left" - }, - shareButton: { - [theme.breakpoints.down("md")]: { - top: "12%" - }, - [theme.breakpoints.down("sm")]: { - top: "7%" - }, - ...reusableStylesForImgs, - left: "3%", - top: "-3%", - height: "25px", - WebkitAnimation: "Floatingy 11s ease-in-out infinite" - }, - cardImage: { - [theme.breakpoints.down("md")]: { - top: "-2%", - left: "65%" - }, - [theme.breakpoints.down("sm")]: { - top: "-2%" - }, - ...reusableStylesForImgs, - left: "35%", - top: "2%", - height: "125px", - borderRadius: "6px", - WebkitAnimation: "Floatingy 18s ease-in-out infinite" - }, - twitterImage: { - [theme.breakpoints.down("md")]: { - display: "none" - }, - ...reusableStylesForImgs, - left: "90%", - top: "11%", - height: "90px", - borderRadius: "2px", - WebkitAnimation: "Floatingy 10s ease-in-out infinite" - }, - iconsImage: { - [theme.breakpoints.down("md")]: { - left: "47%", - top: "37%" - }, - [theme.breakpoints.down("sm")]: { - left: "-7%", - top: "37%" - }, - ...reusableStylesForImgs, - left: "70%", - top: "67%", - height: "40px", - WebkitAnimation: "Floatingx 16s ease-in-out infinite" - }, - repostImage: { - [theme.breakpoints.down("md")]: { - top: "54%" - }, - ...reusableStylesForImgs, - left: "0%", - top: "68%", - height: "25px", - borderRadius: "3px", - WebkitAnimation: "Floatingy 15s ease-in-out infinite" - } -}); - -export default componentsStyle; diff --git a/src/assets/jss/material-kit-pro-react/views/presentationSections/contentStyle.js b/src/assets/jss/material-kit-pro-react/views/presentationSections/contentStyle.js deleted file mode 100644 index 932f7a5c6..000000000 --- a/src/assets/jss/material-kit-pro-react/views/presentationSections/contentStyle.js +++ /dev/null @@ -1,91 +0,0 @@ -import { - container, - section, - title, - sectionDescription, - mlAuto, - blackColor, - grayColor, - hexToRgb -} from "assets/jss/material-kit-pro-react.js"; - -const contentStyle = theme => ({ - container, - section: { - ...section, - padding: "70px 0px" - }, - sectionDescription, - title: { - ...title, - color: grayColor[1], - marginTop: "30px", - marginBottom: "5px", - "& + $description": { - marginBottom: "10px", - marginTop: "0px" - } - }, - description: { - color: grayColor[0], - marginTop: "35px", - marginBottom: "15px" - }, - imageContainer: { - maxWidth: "900px", - position: "relative" - }, - ipadImg: { - width: "100%" - }, - mlAuto, - areaImg: { - height: "300px", - width: "250px", - zIndex: 2, - top: "10%", - left: "60%", - boxShadow: - "0 8px 10px 1px rgba(" + - hexToRgb(blackColor) + - ", 0.14), 0 3px 14px 2px rgba(" + - hexToRgb(blackColor) + - ", 0.12), 0 5px 5px -3px rgba(" + - hexToRgb(blackColor) + - ", 0.2)", - [theme.breakpoints.down("sm")]: { - maxWidth: "130px", - maxHeight: "170px" - } - }, - infoImg: { - height: "200px", - width: "300px", - top: "50%", - left: "0%", - boxShadow: - "0 8px 10px 1px rgba(" + - hexToRgb(blackColor) + - ", 0.14), 0 3px 14px 2px rgba(" + - hexToRgb(blackColor) + - ", 0.12), 0 5px 5px -3px rgba(" + - hexToRgb(blackColor) + - ", 0.2)", - [theme.breakpoints.down("sm")]: { - maxWidth: "170px", - maxHeight: "120px" - } - }, - animeInfoImg: { - top: "50%", - left: "0%", - position: "absolute" - }, - animeAreaImg: { - top: "10%", - left: "60%", - position: "absolute" - } -}); - -export default contentStyle; diff --git a/src/assets/jss/material-kit-pro-react/views/presentationSections/descriptionStyle.js b/src/assets/jss/material-kit-pro-react/views/presentationSections/descriptionStyle.js deleted file mode 100644 index f984e983a..000000000 --- a/src/assets/jss/material-kit-pro-react/views/presentationSections/descriptionStyle.js +++ /dev/null @@ -1,31 +0,0 @@ -import { - container, - section, - grayColor -} from "assets/jss/material-kit-pro-react.js"; - -const descriptionStyle = { - container, - description: { - color: grayColor[0], - textAlign: "center" - }, - section: { - ...section, - padding: "70px 0px", - "& h4$description": { - fontSize: "1.5em" - } - }, - features: { - textAlign: "center !important", - paddingTop: "30px", - paddingBottom: "0px", - "& p": { - fontSize: "16px", - lineHeight: "1.6em" - } - } -}; - -export default descriptionStyle; diff --git a/src/assets/jss/material-kit-pro-react/views/presentationSections/examplesStyle.js b/src/assets/jss/material-kit-pro-react/views/presentationSections/examplesStyle.js deleted file mode 100644 index acb398bd9..000000000 --- a/src/assets/jss/material-kit-pro-react/views/presentationSections/examplesStyle.js +++ /dev/null @@ -1,47 +0,0 @@ -import { - section, - sectionDark, - container, - mlAuto, - mrAuto, - title, - whiteColor, - description, - hexToRgb -} from "assets/jss/material-kit-pro-react.js"; - -const examplesStyle = { - section: { - ...section, - padding: "70px 0px" - }, - sectionDark: { - ...sectionDark, - "& $title": { - color: whiteColor - }, - "& $description": { - color: "rgba(" + hexToRgb(whiteColor) + ",0.76)" - } - }, - container, - mlAuto, - mrAuto, - sectionDescription: { - textAlign: "center", - marginBottom: "90px" - }, - title: { - ...title, - textAlign: "center" - }, - description, - imgCardExtended: { - transition: "all .2s cubic-bezier(0.4,0,0.2,1)", - "&:hover": { - transform: "translate3d(0, -10px, 0)" - } - } -}; - -export default examplesStyle; diff --git a/src/assets/jss/material-kit-pro-react/views/presentationSections/freeDemoStyle.js b/src/assets/jss/material-kit-pro-react/views/presentationSections/freeDemoStyle.js deleted file mode 100644 index 66e0a11ec..000000000 --- a/src/assets/jss/material-kit-pro-react/views/presentationSections/freeDemoStyle.js +++ /dev/null @@ -1,84 +0,0 @@ -import { - title, - description, - section, - container, - mlAuto, - mrAuto, - cardTitle, - card, - dangerColor, - successColor, - blackColor, - grayColor, - hexToRgb -} from "assets/jss/material-kit-pro-react.js"; - -const freeDemoStyle = { - container, - mlAuto, - mrAuto, - description, - cardTitle, - title: { - ...title, - marginTop: "15px", - marginBottom: "1rem" - }, - section: { - ...section, - padding: "70px 0px" - }, - iconGithub: { - fontSize: "82px", - color: grayColor[10] - }, - iframeGithub: { - top: "11px", - display: "inline-block", - position: "relative", - marginLeft: "10px" - }, - card: { - ...card, - border: "0px", - marginBottom: "30px", - marginTop: "30px", - borderRadius: "6px", - color: "rgba(" + hexToRgb(blackColor) + ",0.87)", - width: "100%", - "& ul": { - listStyle: "none", - padding: "0px", - maxWidth: "240px", - margin: "10px auto" - }, - "& ul li": { - color: grayColor[0], - padding: "12px 0px", - borderBottom: "1px solid rgba(" + hexToRgb(grayColor[0]) + ",0.3)", - textAlign: "left" - }, - "& ul li b": { - minWidth: "24px", - display: "inline-block", - textAlign: "center", - color: grayColor[1] - } - }, - cardPricing: { - boxShadow: "none" - }, - cardIcons: { - top: "6px", - position: "relative" - }, - dangerColor: { - color: dangerColor[0] - }, - successColor: { - color: successColor[0] - } -}; - -export default freeDemoStyle; diff --git a/src/assets/jss/material-kit-pro-react/views/presentationSections/overviewStyle.js b/src/assets/jss/material-kit-pro-react/views/presentationSections/overviewStyle.js deleted file mode 100644 index 49915094b..000000000 --- a/src/assets/jss/material-kit-pro-react/views/presentationSections/overviewStyle.js +++ /dev/null @@ -1,111 +0,0 @@ -import { - section, - mrAuto, - mlAuto, - title, - container, - description, - cardTitle, - coloredShadow, - blackColor, - whiteColor, - grayColor, - hexToRgb -} from "assets/jss/material-kit-pro-react.js"; - -const overviewStyle = { - mrAuto, - mlAuto, - title, - container, - description: { - ...description, - marginBottom: "70px" - }, - section: { - ...section, - padding: "70px 0px" - }, - sectionTestimonials: { - paddingTop: "50px", - paddingBottom: "80px", - textAlign: "center", - "& $cardTitle": { - marginTop: "0px" - } - }, - features5: { - ...section, - backgroundRepeat: "no-repeat", - position: "relative", - padding: "80px 0px", - textAlign: "center", - "& $title": { - zIndex: "2", - position: "relative", - marginBottom: "30px", - color: whiteColor - }, - "& p": { - color: whiteColor - }, - "&:after": { - background: "rgba(" + hexToRgb(blackColor) + ",0.65)", - position: "absolute", - width: "100%", - height: "100%", - content: "''", - zIndex: "0", - left: "0px", - top: "0px" - } - }, - features: { - textAlign: "center", - paddingTop: "30px", - pddingBottom: "0px" - }, - featuresShow: { - zIndex: 3, - border: "1px solid rgba(" + hexToRgb(whiteColor) + ",0.35)", - borderTop: 0, - borderBottom: 0, - "&:last-of-type": { - borderRight: 0 - }, - "&:first-of-type": { - borderLeft: 0 - }, - "& h4,& p,& svg,& .fab,& .fas,& .far,& .fal,& .material-icons": { - color: whiteColor - }, - "& p": { - lineHeight: "24px", - fontSize: "16px" - } - }, - ourClients: { - textAlign: "center", - "& img": { - width: "100%", - maxWidth: "140px", - margin: "0 auto", - display: "inline-block" - } - }, - cardTitle: { - ...cardTitle, - marginTop: 0 - }, - cardDescription: { - fontSize: "16px", - lineHeight: "1.6em", - color: grayColor[0] - }, - coloredShadow, - alignLeft: { - textAlign: "left" - } -}; - -export default overviewStyle; diff --git a/src/assets/jss/material-kit-pro-react/views/presentationSections/pricingStyle.js b/src/assets/jss/material-kit-pro-react/views/presentationSections/pricingStyle.js deleted file mode 100644 index cc271f10d..000000000 --- a/src/assets/jss/material-kit-pro-react/views/presentationSections/pricingStyle.js +++ /dev/null @@ -1,97 +0,0 @@ -import { - section, - container, - mlAuto, - mrAuto, - title, - description, - card, - blackColor, - grayColor, - hexToRgb -} from "assets/jss/material-kit-pro-react.js"; - -const pricingStyle = { - container, - mlAuto, - mrAuto, - title, - section: { - ...section, - padding: "80px 0", - zIndex: 3, - position: "relative", - textAlign: "center" - }, - socialLine: { - padding: ".9375rem 0px", - textAlign: "center", - width: "100%" - }, - marginRight: { - marginRight: "3px" - }, - description: { - ...description, - color: grayColor[0] - }, - card: { - ...card, - marginBottom: "30px", - boxShadow: - "0 2px 2px 0 rgba(" + - hexToRgb(blackColor) + - ",0.14), 0 3px 1px -2px rgba(" + - hexToRgb(blackColor) + - ",0.2), 0 1px 5px 0 rgba(" + - hexToRgb(blackColor) + - ",0.12)", - "& ul": { - listStyle: "none", - padding: 0, - maxWidth: "240px", - margin: "10px auto" - }, - "& ul li": { - color: grayColor[0], - textAlign: "center", - padding: "12px 0px", - borderBottom: "1px solid rgba(" + hexToRgb(grayColor[0]) + ",0.3)" - }, - "& ul li b": { - color: grayColor[1] - }, - "& ul li:last-child": { - border: 0 - } - }, - cardMargin: { - marginTop: "80px" - }, - cardCategory: { - color: grayColor[0], - marginTop: "10px" - }, - cardTitle: { - marginTop: "30px", - color: grayColor[1], - textDecoration: "none", - fontWeight: "700", - fontFamily: "Roboto Slab,Times New Roman,serif", - "& small": { - position: "relative", - top: "-17px", - fontSize: "26px", - display: "inline-flex", - height: 0 - } - }, - cardBody: { - padding: "15px" - }, - navPillsContent: { - padding: "20px 0px 50px 0px" - } -}; - -export default pricingStyle; diff --git a/src/assets/jss/material-kit-pro-react/views/presentationSections/sectionsStyle.js b/src/assets/jss/material-kit-pro-react/views/presentationSections/sectionsStyle.js deleted file mode 100644 index fe03f157d..000000000 --- a/src/assets/jss/material-kit-pro-react/views/presentationSections/sectionsStyle.js +++ /dev/null @@ -1,51 +0,0 @@ -import { - section, - container, - containerFluid, - title, - description, - mlAuto, - mrAuto, - blackColor, - hexToRgb -} from "assets/jss/material-kit-pro-react.js"; - -const sectionStyle = { - sectionSections: { - ...section, - padding: "70px 0px", - paddingBottom: "0px", - marginBottom: "-35px", - "& img": { - width: "100%", - borderRadius: "3px", - boxShadow: - "0 8px 10px 1px rgba(" + - hexToRgb(blackColor) + - ",0.14), 0 3px 14px 2px rgba(" + - hexToRgb(blackColor) + - ",0.12), 0 5px 5px -3px rgba(" + - hexToRgb(blackColor) + - ",0.2)", - transition: "all .2s cubic-bezier(0.4,0,0.2,1)", - "&:hover": { - transform: "scale(1.02)" - } - } - }, - container, - containerFluid, - sectionDescription: { - textAlign: "center", - marginBottom: "60px" - }, - title, - description, - mlAuto, - mrAuto, - photoGallery: { - padding: "7.5px" - } -}; - -export default sectionStyle; diff --git a/src/assets/jss/material-kit-pro-react/views/presentationStyle.js b/src/assets/jss/material-kit-pro-react/views/presentationStyle.js deleted file mode 100644 index 25238549a..000000000 --- a/src/assets/jss/material-kit-pro-react/views/presentationStyle.js +++ /dev/null @@ -1,57 +0,0 @@ -import { - container, - title, - main, - whiteColor, - grayColor, - mainRaised, - hexToRgb -} from "assets/jss/material-kit-pro-react.js"; -import footerStyle from "assets/jss/material-kit-pro-react/views/componentsSections/footerStyle.js"; - -const presentationStyle = { - ...footerStyle, - main: { - ...main - /*overflow: "hidden"*/ - }, - mainRaised, - parallax: { - height: "90vh", - overflow: "hidden" - }, - container: { - ...container, - zIndex: 1 - }, - title: { - ...title, - color: whiteColor - }, - brand: { - color: whiteColor, - textAlign: "center", - "& h1": { - fontSize: "4.2rem", - fontWeight: "600", - display: "inline-block", - position: "relative" - } - }, - proBadge: { - position: "relative", - fontSize: "22px", - textTransform: "uppercase", - fontWeight: "700", - right: "-10px", - padding: "10px 18px", - top: "-30px", - background: whiteColor, - borderRadius: "3px", - color: grayColor[18], - lineHeight: "22px", - boxShadow: "0 5px 5px -2px rgba(" + hexToRgb(grayColor[25]) + ",.4)" - } -}; - -export default presentationStyle; diff --git a/src/assets/jss/material-kit-pro-react/views/pricingSections/featuresStyle.js b/src/assets/jss/material-kit-pro-react/views/pricingSections/featuresStyle.js deleted file mode 100644 index fe0e7eee8..000000000 --- a/src/assets/jss/material-kit-pro-react/views/pricingSections/featuresStyle.js +++ /dev/null @@ -1,15 +0,0 @@ -import { title, mlAuto, mrAuto } from "assets/jss/material-kit-pro-react.js"; - -const featuresStyle = { - featuresSection: { - padding: "80px 0px" - }, - textCenter: { - textAlign: "center" - }, - title, - mlAuto, - mrAuto -}; - -export default featuresStyle; diff --git a/src/assets/jss/material-kit-pro-react/views/pricingSections/pricingStyle.js b/src/assets/jss/material-kit-pro-react/views/pricingSections/pricingStyle.js deleted file mode 100644 index d7a37c1a6..000000000 --- a/src/assets/jss/material-kit-pro-react/views/pricingSections/pricingStyle.js +++ /dev/null @@ -1,32 +0,0 @@ -import { - mrAuto, - mlAuto, - cardTitle, - whiteColor, - infoColor, - hexToRgb -} from "assets/jss/material-kit-pro-react.js"; - -const pricingStyle = { - mrAuto, - mlAuto, - cardTitle, - cardTitleWhite: { - ...cardTitle, - color: whiteColor + " !important", - "& small": { - color: "rgba(" + hexToRgb(whiteColor) + ",0.8)!important" - } - }, - textCenter: { - textAlign: "center" - }, - pricingSection: { - padding: "80px 0px" - }, - textInfo: { - color: infoColor[0] + " !important" - } -}; - -export default pricingStyle; diff --git a/src/assets/jss/material-kit-pro-react/views/pricingStyle.js b/src/assets/jss/material-kit-pro-react/views/pricingStyle.js deleted file mode 100644 index 73573204d..000000000 --- a/src/assets/jss/material-kit-pro-react/views/pricingStyle.js +++ /dev/null @@ -1,67 +0,0 @@ -import { - container, - title, - main, - mainRaised, - whiteColor, - mrAuto, - mlAuto -} from "assets/jss/material-kit-pro-react.js"; - -const pricingStyle = { - main, - mainRaised, - mrAuto, - mlAuto, - container: { - ...container, - zIndex: 1 - }, - title: { - ...title, - "&, & + h4": { - color: whiteColor - } - }, - textCenter: { - textAlign: "center" - }, - block: { - color: "inherit", - padding: "0.9375rem", - fontWeight: "500", - fontSize: "12px", - textTransform: "uppercase", - borderRadius: "3px", - textDecoration: "none", - position: "relative", - display: "block" - }, - inlineBlock: { - display: "inline-block", - padding: "0px", - width: "auto" - }, - list: { - marginBottom: "0", - padding: "0", - marginTop: "0" - }, - left: { - float: "left!important", - display: "block" - }, - right: { - padding: "15px 0", - margin: "0", - float: "right" - }, - icon: { - width: "18px", - height: "18px", - top: "3px", - position: "relative" - } -}; - -export default pricingStyle; diff --git a/src/assets/jss/material-kit-pro-react/views/productStyle.js b/src/assets/jss/material-kit-pro-react/views/productStyle.js deleted file mode 100644 index 435683c7d..000000000 --- a/src/assets/jss/material-kit-pro-react/views/productStyle.js +++ /dev/null @@ -1,192 +0,0 @@ -import { - container, - mlAuto, - section, - main, - mainRaised, - title, - cardTitle, - grayColor, - roseColor -} from "assets/jss/material-kit-pro-react.js"; - -import tooltipsStyle from "assets/jss/material-kit-pro-react/tooltipsStyle.js"; -import imagesStyles from "assets/jss/material-kit-pro-react/imagesStyles.js"; -import customSelectStyle from "assets/jss/material-kit-pro-react/customSelectStyle.js"; - -const productStyle = { - mlAuto, - main, - ...imagesStyles, - ...customSelectStyle, - ...tooltipsStyle, - container: { - ...container, - zIndex: 2 - }, - mainRaised: { - ...mainRaised - }, - section: { - ...section, - padding: "70px 0px" - }, - title: { - ...title, - marginBottom: 0 - }, - sectionGray: { - background: grayColor[14] - }, - mainPrice: { - margin: "10px 0px 25px" - }, - textCenter: { - textAlign: "center!important" - }, - features: { - paddingTop: "30px" - }, - productPage: { - backgroundColor: grayColor[2], - "& $mainRaised": { - margin: "-40vh 0 0", - padding: "40px" - }, - "& .image-gallery-slide img": { - borderRadius: "3px", - maxWidth: "300px", - height: "auto" - }, - "& .image-gallery-swipe": { - margin: "30px 0px", - overflow: "hidden", - width: "100%", - height: "auto", - textAlign: "center" - }, - "& .image-gallery-thumbnails > .image-gallery-thumbnails-container .image-gallery-thumbnail": { - "&.active > .image-gallery-thumbnail-inner": { - opacity: "1", - borderColor: grayColor[6] - }, - "& > .image-gallery-thumbnail-inner": { - width: "80%", - maxWidth: "85px", - margin: "0 auto", - padding: "8px", - display: "block", - border: "1px solid transparent", - background: "transparent", - borderRadius: "3px", - opacity: ".8" - }, - "& > .image-gallery-thumbnail-inner img": { - borderRadius: "3px", - width: "100%", - height: "auto", - textAlign: "center" - } - } - }, - titleRow: { - marginTop: "-8vh" - }, - floatRight: { - float: "right!important" - }, - pageHeader: { - minHeight: "60vh", - maxHeight: "600px", - height: "auto", - backgroundPosition: "top center" - }, - relatedProducts: { - marginTop: "50px", - "& $title": { - marginBottom: "80px" - } - }, - pickSize: { - marginTop: "50px" - }, - pullRight: { - float: "right" - }, - cardCategory: { - textAlign: "center", - marginTop: "10px" - }, - cardTitle: { - ...cardTitle, - textAlign: "center" - }, - cardDescription: { - textAlign: "center", - color: grayColor[0] - }, - textRose: { - color: roseColor[0] - }, - justifyContentBetween: { - justifyContent: "space-between!important" - }, - socialFeed: { - "& p": { - display: "table-cell", - verticalAlign: "top", - overflow: "hidden", - paddingBottom: "10px", - maxWidth: 300 - }, - "& i": { - fontSize: "20px", - display: "table-cell", - paddingRight: "10px" - } - }, - img: { - width: "20%", - marginRight: "5%", - marginBottom: "5%", - float: "left" - }, - block: { - color: "inherit", - padding: "0.9375rem", - fontWeight: "500", - fontSize: "12px", - textTransform: "uppercase", - borderRadius: "3px", - textDecoration: "none", - position: "relative", - display: "block" - }, - inlineBlock: { - display: "inline-block", - padding: "0px", - width: "auto" - }, - list: { - marginBottom: "0", - padding: "0", - marginTop: "0" - }, - left: { - float: "left!important", - display: "block" - }, - right: { - padding: "15px 0", - margin: "0", - float: "right" - }, - icon: { - top: "3px", - width: "18px", - height: "18px", - position: "relative" - } -}; - -export default productStyle; diff --git a/src/assets/jss/material-kit-pro-react/views/profilePageStyle.js b/src/assets/jss/material-kit-pro-react/views/profilePageStyle.js deleted file mode 100644 index 919ce308a..000000000 --- a/src/assets/jss/material-kit-pro-react/views/profilePageStyle.js +++ /dev/null @@ -1,148 +0,0 @@ -import { - container, - cardTitle, - title, - mlAuto, - mrAuto, - main, - whiteColor, - mainRaised, - grayColor -} from "assets/jss/material-kit-pro-react.js"; - -import imagesStyle from "assets/jss/material-kit-pro-react/imagesStyles.js"; - -import tooltipsStyle from "assets/jss/material-kit-pro-react/tooltipsStyle.js"; - -const profilePageStyle = { - container, - ...imagesStyle, - ...tooltipsStyle, - cardTitleWhite: { - ...cardTitle, - color: whiteColor + " !important" - }, - cardTitle, - profile: { - textAlign: "center", - "& img": { - maxWidth: "160px", - width: "100%", - margin: "0 auto", - transform: "translate3d(0, -50%, 0)" - } - }, - description: { - margin: "1.071rem auto 0", - maxWidth: "600px", - color: grayColor[0] - }, - textCenter: { - textAlign: "center !important" - }, - name: { - marginTop: "-80px" - }, - - main: { - ...main - }, - mainRaised: { - ...mainRaised - }, - title: { - ...title, - position: "relative", - marginTop: "30px", - minHeight: "32px", - textDecoration: "none" - }, - follow: { - position: "absolute", - top: "0", - right: "0" - }, - followIcon: { - width: "20px", - height: "20px" - }, - followButton: { - marginTop: "-28px !important" - }, - gridItem: { - ...mlAuto, - ...mrAuto - }, - collections: { - marginTop: "20px" - }, - cardBody: { - display: "flex", - boxOrient: "vertical", - boxDirection: "normal", - flexDirection: "column", - boxPack: "center", - justifyContent: "center" - }, - badge: { - display: "inline-table", - margin: "0 auto" - }, - listUnstyled: { - paddingLeft: "0", - listStyle: "none", - "& > li": { - padding: "5px 0px", - fontSize: "1em" - } - }, - profileTabs: { - marginTop: "4.284rem", - marginBottom: "50px" - }, - card: { - textAlign: "left !important" - }, - block: { - color: "inherit", - padding: "0.9375rem", - fontWeight: "500", - fontSize: "12px", - textTransform: "uppercase", - borderRadius: "3px", - textDecoration: "none", - position: "relative", - display: "block" - }, - inlineBlock: { - display: "inline-block", - padding: "0px", - width: "auto" - }, - list: { - marginBottom: "0", - padding: "0", - marginTop: "0" - }, - left: { - float: "left!important", - display: "block" - }, - right: { - padding: "15px 0", - margin: "0", - float: "right" - }, - icon: { - width: "18px", - height: "18px", - top: "3px", - position: "relative" - }, - parallax: { - height: "380px", - backgroundPosition: "top center" - } -}; - -export default profilePageStyle; diff --git a/src/assets/jss/material-kit-pro-react/views/sectionsPageStyle.js b/src/assets/jss/material-kit-pro-react/views/sectionsPageStyle.js deleted file mode 100644 index c7fd49f57..000000000 --- a/src/assets/jss/material-kit-pro-react/views/sectionsPageStyle.js +++ /dev/null @@ -1,9 +0,0 @@ -import { main } from "assets/jss/material-kit-pro-react.js"; - -const sectionsPageStyle = { - main: { - ...main - } -}; - -export default sectionsPageStyle; diff --git a/src/assets/jss/material-kit-pro-react/views/sectionsSections/blogsStyle.js b/src/assets/jss/material-kit-pro-react/views/sectionsSections/blogsStyle.js deleted file mode 100644 index 51ae18b8e..000000000 --- a/src/assets/jss/material-kit-pro-react/views/sectionsSections/blogsStyle.js +++ /dev/null @@ -1,51 +0,0 @@ -import { - container, - title, - cardTitle, - coloredShadow, - description, - mlAuto, - mrAuto, - grayColor -} from "assets/jss/material-kit-pro-react.js"; - -const blogsSection = { - container, - title, - coloredShadow, - cardTitle, - mlAuto, - mrAuto, - description, - blog: { - padding: "50px 0" - }, - cardCategory: { - marginBottom: "0", - marginTop: "10px", - "& svg,& .fab,& .fas,& .far,& .fal,& .material-icons": { - position: "relative", - top: "8px", - lineHeight: "0" - } - }, - description1: { - ...description, - lineHeight: "1.313rem" - }, - author: { - "& a": { - color: grayColor[1], - textDecoration: "none" - } - }, - card: { - marginBottom: "80px" - }, - card4: { - marginBottom: "60px", - textAlign: "center" - } -}; - -export default blogsSection; diff --git a/src/assets/jss/material-kit-pro-react/views/sectionsSections/contactsStyle.js b/src/assets/jss/material-kit-pro-react/views/sectionsSections/contactsStyle.js deleted file mode 100644 index 852bccf77..000000000 --- a/src/assets/jss/material-kit-pro-react/views/sectionsSections/contactsStyle.js +++ /dev/null @@ -1,113 +0,0 @@ -import { - container, - section, - sectionDark, - mlAuto, - title, - description, - cardTitle, - blackColor, - whiteColor, - hexToRgb -} from "assets/jss/material-kit-pro-react.js"; - -import customCheckboxRadioSwitch from "assets/jss/material-kit-pro-react/customCheckboxRadioSwitchStyle.js"; - -const contactsSection = { - ...customCheckboxRadioSwitch, - container, - mlAuto, - title, - description, - cardTitle, - section: { - ...sectionDark, - ...section, - position: "relative", - "& $container": { - zIndex: "2", - position: "relative" - }, - "&:after": { - position: "absolute", - zIndex: "1", - width: "100%", - height: "100%", - display: "block", - left: "0", - top: "0", - content: "''", - backgroundColor: "rgba(" + hexToRgb(blackColor) + ", 0.7)" - }, - "& $title": { - color: whiteColor - }, - "& $description": { - color: "rgba(" + hexToRgb(whiteColor) + ", 0.76)" - }, - "& $infoArea": {} - }, - contacts: { - padding: "80px 0" - }, - infoArea: { - padding: "0", - margin: "0", - "& svg,& .fab,& .fas,& .far,& .fal,& .material-icons": { - color: whiteColor - }, - "& h4": { - marginTop: "20px", - color: whiteColor - } - }, - card1: { - marginTop: "30px", - "& $cardTitle": { - marginBottom: "0.75rem !important", - color: whiteColor - } - }, - textCenter: { - textAlign: "center" - }, - justifyContentBetween: { - WebkitBoxPack: "justify !important", - MsFlexPack: "justify !important", - justifyContent: "space-between !important" - }, - pullRight: { - float: "right" - }, - card2: { - "@media (min-width: 991px)": { - margin: "80px 0 80px 150px" - }, - maxWidth: "560px", - float: "left", - "& $cardTitle": { - marginBottom: "0.75rem !important", - color: whiteColor - } - }, - map: { - overflow: "hidden", - width: "100%", - height: "800px", - position: "absolute" - }, - contacts2: { - padding: "0", - height: "800px" - }, - infoArea2: { - padding: "0", - margin: "0", - "& h4": { - fontSize: "1.0625rem", - lineHeight: "1.55em" - } - } -}; - -export default contactsSection; diff --git a/src/assets/jss/material-kit-pro-react/views/sectionsSections/featuresStyle.js b/src/assets/jss/material-kit-pro-react/views/sectionsSections/featuresStyle.js deleted file mode 100644 index 5b2b14eb8..000000000 --- a/src/assets/jss/material-kit-pro-react/views/sectionsSections/featuresStyle.js +++ /dev/null @@ -1,105 +0,0 @@ -import { - container, - mlAuto, - mrAuto, - title, - description, - blackColor, - whiteColor, - hexToRgb -} from "assets/jss/material-kit-pro-react.js"; - -const features = { - container, - mlAuto, - mrAuto, - title, - description, - features1: { - textAlign: "center", - padding: "80px 0" - }, - features2: { - padding: "80px 0" - }, - features3: { - padding: "80px 0", - "& $phoneContainer": { - maxWidth: "220px", - margin: "0 auto" - } - }, - features4: { - padding: "80px 0", - "& $phoneContainer": { - maxWidth: "260px", - margin: "60px auto 0" - } - }, - features5: { - padding: "80px 0", - backgroundSize: "cover", - backgroundPosition: "50%", - backgroundRepeat: "no-repeat", - position: "relative", - "& $title": { - marginBottom: "30px" - }, - "& $title,& $container": { - position: "relative", - zIndex: "2", - color: whiteColor - }, - "&:after": { - background: "rgba(" + hexToRgb(blackColor) + ",0.55)", - position: "absolute", - width: "100%", - height: "100%", - content: "''", - zIndex: "0", - left: "0px", - top: "0px" - }, - "& $container": { - "& $gridContainer:last-child": { - "& $gridItem": { - borderBottom: "0" - } - }, - "& $gridItem": { - border: "1px solid rgba(" + hexToRgb(whiteColor) + ", 0.35)", - borderTop: "0", - borderLeft: "0", - "&:last-child": { - borderRight: "0" - } - } - }, - "& $infoArea5": { - textAlign: "center", - maxWidth: "310px", - minHeight: "320px", - "& h4,& p,& svg,& .fab,& .fas,& .far,& .fal,& .material-icons": { - color: whiteColor - } - } - }, - gridContainer: {}, - gridItem: {}, - textCenter: { - textAlign: "center" - }, - phoneContainer: { - "& img": { - width: "100%" - } - }, - infoArea: { - maxWidth: "none", - margin: "0 auto", - padding: "10px 0 0px" - }, - infoArea5: {} -}; - -export default features; diff --git a/src/assets/jss/material-kit-pro-react/views/sectionsSections/headersStyle.js b/src/assets/jss/material-kit-pro-react/views/sectionsSections/headersStyle.js deleted file mode 100644 index 8df8143d4..000000000 --- a/src/assets/jss/material-kit-pro-react/views/sectionsSections/headersStyle.js +++ /dev/null @@ -1,94 +0,0 @@ -import headerLinksStyle from "assets/jss/material-kit-pro-react/components/headerLinksStyle.js"; -import { - container, - mrAuto, - title, - blackColor, - whiteColor, - hexToRgb -} from "assets/jss/material-kit-pro-react.js"; - -const headersSection = theme => ({ - ...headerLinksStyle(theme), - sectionBlank: { - height: "70px", - display: "block" - }, - container: { - ...container, - zIndex: "2", - position: "relative", - "& h1, & h4, & h6": { - color: whiteColor - } - }, - conatinerHeader2: { - ...container, - zIndex: "2", - position: "relative", - "& h1, & h4, & h6": { - color: whiteColor - }, - paddingTop: "25vh" - }, - title, - pageHeader: { - position: "relative", - height: "100vh", - maxHeight: "1600px", - backgroundPosition: "50%", - backgroundSize: "cover", - margin: "0", - padding: "0", - border: "0", - display: "flex", - WebkitBoxAlign: "center", - MsFlexAlign: "center", - alignItems: "center", - "&:before": { - background: "rgba(" + hexToRgb(blackColor) + ", 0.5)" - }, - "&:after,&:before": { - position: "absolute", - zIndex: "1", - width: "100%", - height: "100%", - display: "block", - left: "0", - top: "0", - content: "''" - } - }, - iframeContainer: { - "& > iframe": { - width: "100%", - boxShadow: - "0 16px 38px -12px rgba(" + - hexToRgb(blackColor) + - ", 0.56), 0 4px 25px 0px rgba(" + - hexToRgb(blackColor) + - ", 0.12), 0 8px 10px -5px rgba(" + - hexToRgb(blackColor) + - ", 0.2)" - } - }, - mrAuto, - textCenter: { - textAlign: "center" - }, - card: { - marginTop: "60px" - }, - formControl: { - margin: "0", - padding: "8px 0 0 0" - }, - textRight: { - textAlign: "right" - }, - button: { - margin: "0 !important" - } -}); - -export default headersSection; diff --git a/src/assets/jss/material-kit-pro-react/views/sectionsSections/pricingStyle.js b/src/assets/jss/material-kit-pro-react/views/sectionsSections/pricingStyle.js deleted file mode 100644 index 158597d0d..000000000 --- a/src/assets/jss/material-kit-pro-react/views/sectionsSections/pricingStyle.js +++ /dev/null @@ -1,124 +0,0 @@ -import { - container, - section, - sectionDark, - mlAuto, - mrAuto, - title, - description, - cardTitle, - roseColor, - blackColor, - whiteColor, - grayColor, - hexToRgb -} from "assets/jss/material-kit-pro-react.js"; - -const pricingSection = { - container, - mlAuto, - mrAuto, - title, - cardTitle, - description, - cardTitleWhite: { - ...cardTitle, - color: whiteColor + " !important" - }, - sectionGray: { - background: grayColor[14] - }, - section: { - ...section, - ...sectionDark, - position: "relative", - "& $container": { - position: "relative", - zIndex: "2" - }, - "& $description": { - color: "rgba(" + hexToRgb(whiteColor) + ", 0.5)" - }, - "& $cardCategory": { - color: "rgba(" + hexToRgb(whiteColor) + ", 0.76)" - }, - "& $title": { - color: whiteColor, - marginBottom: "10px" - }, - "&:after": { - position: "absolute", - zIndex: "1", - width: "100%", - height: "100%", - display: "block", - left: "0", - top: "0", - content: "''", - backgroundColor: "rgba(" + hexToRgb(blackColor) + ", 0.7)" - } - }, - pricing1: { - "&$section:after": { - backgroundColor: "rgba(" + hexToRgb(blackColor) + ", 0.8)" - } - }, - pricing: { - padding: "80px 0" - }, - textCenter: { - textAlign: "center" - }, - sectionSpace: { - height: "70px", - display: "block" - }, - cardCategory: { - ...description - }, - cardCategoryWhite: { - color: whiteColor - }, - cardDescription: { - ...description - }, - justifyContentCenter: { - WebkitBoxPack: "center !important", - MsFlexPack: "center !important", - justifyContent: "center !important" - }, - icon: { - color: "rgba(" + hexToRgb(whiteColor) + ", 0.76)", - margin: "10px auto 0", - width: "130px", - height: "130px", - border: "1px solid " + grayColor[14], - borderRadius: "50%", - lineHeight: "174px", - "& .fab,& .fas,& .far,& .fal,& .material-icons": { - fontSize: "55px", - lineHeight: "55px" - }, - "& svg": { - width: "55px", - height: "55px" - } - }, - iconWhite: { - color: whiteColor - }, - iconRose: { - color: roseColor[0] - }, - marginTop30: { - marginTop: "30px" - }, - marginBottom20: { - marginBottom: "20px" - }, - marginBottom30: { - marginBottom: "30px" - } -}; - -export default pricingSection; diff --git a/src/assets/jss/material-kit-pro-react/views/sectionsSections/projectsStyle.js b/src/assets/jss/material-kit-pro-react/views/sectionsSections/projectsStyle.js deleted file mode 100644 index 0423184c2..000000000 --- a/src/assets/jss/material-kit-pro-react/views/sectionsSections/projectsStyle.js +++ /dev/null @@ -1,97 +0,0 @@ -import { - container, - mlAuto, - mrAuto, - title, - cardTitle, - description, - coloredShadow, - whiteColor, - sectionDark, - hexToRgb -} from "assets/jss/material-kit-pro-react.js"; - -const projectsSection = { - container, - mlAuto, - mrAuto, - title, - description, - coloredShadow, - cardTitle, - textCenter: { - textAlign: "center" - }, - projects: { - padding: "80px 0" - }, - tabSpace: { - padding: "20px 0 50px 0px" - }, - cardCategory: { - color: "rgba(" + hexToRgb(whiteColor) + ", 0.7) !important", - marginTop: "10px" - }, - cardTitleWhite: { - ...cardTitle, - color: whiteColor + " !important", - marginTop: "10px !important" - }, - cardDescription: { - color: "rgba(" + hexToRgb(whiteColor) + ", 0.7) !important" - }, - sectionSpace: { - height: "70px", - display: "block" - }, - marginTop20: { - marginTop: "20px" - }, - card2: { - textAlign: "center" - }, - sectionDark: { - ...sectionDark, - backgroundSize: "550% 450%", - "& $title, & $cardTitle": { - color: whiteColor - }, - "& $cardCategory": { - color: "rgba(" + hexToRgb(whiteColor) + ", 0.5) !important" - }, - "& $cardDescription": { - color: "rgba(" + hexToRgb(whiteColor) + ", 0.76) !important" - } - }, - projects3: { - "& $title": { - marginBottom: "80px", - marginTop: "5px" - }, - "& h6": { - marginBottom: "5px" - } - }, - card4: { - marginTop: "0", - marginBottom: "0", - "& $cardTitle": { - color: whiteColor - } - }, - cardBody4: { - paddingTop: "140px", - paddingBottom: "140px" - }, - info4: { - padding: "0" - }, - projects4: { - "& hr": { - margin: "70px auto", - maxWidth: "970px" - } - } -}; - -export default projectsSection; diff --git a/src/assets/jss/material-kit-pro-react/views/sectionsSections/teamsStyle.js b/src/assets/jss/material-kit-pro-react/views/sectionsSections/teamsStyle.js deleted file mode 100644 index 755bb215b..000000000 --- a/src/assets/jss/material-kit-pro-react/views/sectionsSections/teamsStyle.js +++ /dev/null @@ -1,87 +0,0 @@ -import { - container, - title, - cardTitle, - description, - mlAuto, - mrAuto, - section, - sectionDark, - coloredShadow, - blackColor, - whiteColor, - hexToRgb -} from "assets/jss/material-kit-pro-react.js"; - -const teamsSection = { - container, - title, - mlAuto, - mrAuto, - cardTitle, - coloredShadow, - description, - descriptionWhite: { - ...description - }, - textCenter: { - textAlign: "center" - }, - team: { - padding: "80px 0", - "& h5$description,& h5$descriptionWhite": { - marginBottom: "80px" - } - }, - section: { - ...sectionDark, - ...section, - position: "relative", - "& $title": { - color: whiteColor - }, - "& $descriptionWhite": { - color: "rgba(" + hexToRgb(whiteColor) + ", 0.76)" - }, - "& $container": { - zIndex: "2", - position: "relative" - }, - "&:after": { - position: "absolute", - zIndex: "1", - width: "100%", - height: "100%", - display: "block", - left: "0", - top: "0", - content: "''", - backgroundColor: "rgba(" + hexToRgb(blackColor) + ", 0.7)" - } - }, - justifyContent: { - WebkitBoxPack: "center !important", - MsFlexPack: "center !important", - justifyContent: "center !important" - }, - cardCategory: { - marginTop: "10px" - }, - btn: { - marginTop: "0 !important" - }, - card3: { - textAlign: "left" - }, - card5: { - textAlign: "left", - "& $cardTitle": { - color: whiteColor - }, - "& $description": { - color: whiteColor - } - } -}; - -export default teamsSection; diff --git a/src/assets/jss/material-kit-pro-react/views/sectionsSections/testimonialsStyle.js b/src/assets/jss/material-kit-pro-react/views/sectionsSections/testimonialsStyle.js deleted file mode 100644 index aa4a97a92..000000000 --- a/src/assets/jss/material-kit-pro-react/views/sectionsSections/testimonialsStyle.js +++ /dev/null @@ -1,108 +0,0 @@ -import { - container, - sectionDark, - section, - mlAuto, - mrAuto, - title, - description, - cardTitle, - blackColor, - whiteColor, - hexToRgb -} from "assets/jss/material-kit-pro-react.js"; - -const testimonialsSection = { - container, - mlAuto, - mrAuto, - title, - description, - cardTitle, - sectionDark: { - ...sectionDark, - "& $cardDescription": { - color: "rgba(" + hexToRgb(whiteColor) + ", 0.76)" - }, - "& $cardTitle": { - color: whiteColor - }, - backgroundSize: "550% 450%" - }, - cardDescription: { - ...description - }, - cardCategory: { - ...description - }, - sectionImage: { - ...sectionDark, - ...section, - position: "relative", - "& $container": { - zIndex: "2", - position: "relative" - }, - "&:after": { - position: "absolute", - zIndex: "1", - width: "100%", - height: "100%", - display: "block", - left: "0", - top: "0", - content: "''", - backgroundColor: "rgba(" + hexToRgb(blackColor) + ", 0.7)" - }, - "& $title": { - color: whiteColor - }, - "& $description": { - color: "rgba(" + hexToRgb(whiteColor) + ", 0.76)" - } - }, - testimonials: { - padding: "80px 0", - "& $cardDescription": { - fontStyle: "italic" - } - }, - textCenter: { - textAlign: "center" - }, - icon: { - marginTop: "30px", - "& .fab,& .fas,& .far,& .fal,& .material-icons": { - fontSize: "40px", - lineHeight: "40px" - }, - "& svg": { - width: "40px", - height: "40px" - } - }, - card1: { - "& $cardDescription": { - marginBottom: "50px", - fontStyle: "italic" - } - }, - starIcons: { - width: "24px", - height: "24px" - }, - testimonial2: { - "& .slick-dots": { - display: "none !important" - } - }, - card2: { - maxWidth: "650px", - margin: "60px auto", - "& $cardDescription": { - fontStyle: "italic" - } - } -}; - -export default testimonialsSection; diff --git a/src/assets/jss/material-kit-pro-react/views/shoppingCartStyle.js b/src/assets/jss/material-kit-pro-react/views/shoppingCartStyle.js deleted file mode 100644 index f241cd186..000000000 --- a/src/assets/jss/material-kit-pro-react/views/shoppingCartStyle.js +++ /dev/null @@ -1,125 +0,0 @@ -import { - container, - title, - cardTitle, - main, - mainRaised, - mrAuto, - whiteColor, - grayColor, - mlAuto -} from "assets/jss/material-kit-pro-react.js"; - -import buttonGroup from "assets/jss/material-kit-pro-react/buttonGroupStyle.js"; -import tooltips from "assets/jss/material-kit-pro-react/tooltipsStyle.js"; - -const styles = { - main, - mainRaised, - mrAuto, - mlAuto, - cardTitle, - ...buttonGroup, - ...tooltips, - container: { - ...container, - zIndex: 1 - }, - title: { - ...title, - "&, & + h4": { - color: whiteColor - } - }, - block: { - color: "inherit", - padding: "0.9375rem", - fontWeight: "500", - fontSize: "12px", - textTransform: "uppercase", - borderRadius: "3px", - textDecoration: "none", - position: "relative", - display: "block" - }, - inlineBlock: { - display: "inline-block", - padding: "0px", - width: "auto" - }, - list: { - marginBottom: "0", - padding: "0", - marginTop: "0" - }, - left: { - float: "left!important", - display: "block" - }, - right: { - padding: "15px 0", - margin: "0", - float: "right" - }, - icon: { - width: "18px", - height: "18px", - top: "3px", - position: "relative" - }, - imgContainer: { - width: "120px", - maxHeight: "160px", - overflow: "hidden", - display: "block", - "& img": { - width: "100%" - } - }, - description: { - maxWidth: "150px" - }, - tdName: { - minWidth: "200px", - fontWeight: "400", - fontSize: "1.5em" - }, - tdNameAnchor: { - color: grayColor[1] - }, - tdNameSmall: { - color: grayColor[0], - fontSize: "0.75em", - fontWeight: "300" - }, - tdNumber: { - textAlign: "right", - minWidth: "150px", - fontWeight: "300", - fontSize: "1.125em !important" - }, - tdNumberSmall: { - marginRight: "3px" - }, - tdNumberAndButtonGroup: { - lineHeight: "1 !important", - "& svg,& .fab,& .fas,& .far,& .fal,& .material-icons": { - marginRight: "0" - } - }, - customFont: { - fontSize: "16px !important" - }, - actionButton: { - margin: "0px", - padding: "5px" - }, - textCenter: { - textAlign: "center" - }, - textRight: { - textAlign: "right" - } -}; - -export default styles; diff --git a/src/assets/jss/material-kit-pro-react/views/signupPageStyle.js b/src/assets/jss/material-kit-pro-react/views/signupPageStyle.js deleted file mode 100644 index 8e2973837..000000000 --- a/src/assets/jss/material-kit-pro-react/views/signupPageStyle.js +++ /dev/null @@ -1,143 +0,0 @@ -import { - primaryColor, - grayColor, - container, - cardTitle, - whiteColor, - blackColor, - hexToRgb -} from "assets/jss/material-kit-pro-react.js"; - -import customCheckboxRadioSwitchStyle from "assets/jss/material-kit-pro-react/customCheckboxRadioSwitchStyle.js"; - -const signupPageStyle = { - container: { - ...container, - zIndex: "2", - position: "relative", - paddingTop: "20vh", - color: whiteColor - }, - pageHeader: { - minHeight: "100vh", - height: "auto", - display: "inherit", - position: "relative", - margin: "0", - padding: "0", - border: "0", - alignItems: "center", - "&:before": { - background: "rgba(" + hexToRgb(blackColor) + ", 0.5)" - }, - "&:after": { - background: - "linear-gradient(60deg,rgba(" + - hexToRgb(primaryColor[4]) + - ",.56),rgba(" + - hexToRgb(primaryColor[5]) + - ",.95))" - }, - "&:before,&:after": { - position: "absolute", - zIndex: "1", - width: "100%", - height: "100%", - display: "block", - left: "0", - top: "0", - content: '""' - } - }, - cardSignup: { - borderRadius: "6px", - boxShadow: - "0 16px 24px 2px rgba(" + - hexToRgb(blackColor) + - ", 0.14), 0 6px 30px 5px rgba(" + - hexToRgb(blackColor) + - ", 0.12), 0 8px 10px -5px rgba(" + - hexToRgb(blackColor) + - ", 0.2);", - marginBottom: "100px", - padding: "40px 0px" - }, - cardTitle: { - ...cardTitle, - textDecoration: "none", - textAlign: "center !important", - marginBottom: "0.75rem" - }, - ...customCheckboxRadioSwitchStyle, - socials: { - marginTop: "0", - position: "absolute", - width: "100%", - transform: "none", - left: "0", - top: "0", - height: "100%", - lineHeight: "41px", - fontSize: "20px" - }, - textCenter: { - textAlign: "center" - }, - inputAdornment: { - marginRight: "18px", - position: "relative" - }, - inputAdornmentIcon: { - color: grayColor[13] - }, - form: { - margin: "0" - }, - infoArea: { - padding: "0px 0px 20px !important" - }, - block: { - color: "inherit", - padding: "0.9375rem", - fontWeight: "500", - fontSize: "12px", - textTransform: "uppercase", - borderRadius: "3px", - textDecoration: "none", - position: "relative", - display: "block" - }, - inlineBlock: { - display: "inline-block", - padding: "0px", - width: "auto" - }, - list: { - marginBottom: "0", - padding: "0", - marginTop: "0" - }, - left: { - float: "left!important", - display: "block", - "&,& *,& *:hover,& *:focus": { - color: whiteColor + " !important" - } - }, - right: { - padding: "15px 0", - margin: "0", - float: "right", - "&,& *,& *:hover,& *:focus": { - color: whiteColor + " !important" - } - }, - icon: { - width: "18px", - height: "18px", - top: "3px", - position: "relative" - } -}; - -export default signupPageStyle; diff --git a/src/assets/scss/core/_fileupload.scss b/src/assets/scss/core/_fileupload.scss deleted file mode 100644 index 7a7e36549..000000000 --- a/src/assets/scss/core/_fileupload.scss +++ /dev/null @@ -1,123 +0,0 @@ -.btn-file { - position: relative; - overflow: hidden; - vertical-align: middle; -} -.btn-file > input { - position: absolute; - top: 0; - right: 0; - width: 100%; - height: 100%; - margin: 0; - font-size: 23px; - cursor: pointer; - filter: alpha(opacity=0); - opacity: 0; - - direction: ltr; -} -.fileinput { - text-align: center; - display: inline-block; - margin-bottom: 9px; - - input[type="file"] { - display: none; - } -} -.fileinput .form-control { - display: inline-block; - padding-top: 7px; - padding-bottom: 5px; - margin-bottom: 0; - vertical-align: middle; - cursor: text; -} -.fileinput .thumbnail { - display: inline-block; - margin-bottom: 10px; - overflow: hidden; - text-align: center; - vertical-align: middle; - max-width: 360px; - box-shadow: 0 5px 15px -8px rgba(0, 0, 0, 0.24), - 0 8px 10px -5px rgba(0, 0, 0, 0.2); - - &.img-circle { - border-radius: 50%; - max-width: 100px; - } -} -.fileinput .thumbnail > img { - max-height: 100%; - width: 100%; -} -.fileinput .btn { - vertical-align: middle; -} -.fileinput-exists .fileinput-new, -.fileinput-new .fileinput-exists { - display: none; -} -.fileinput-inline .fileinput-controls { - display: inline; -} -.fileinput-filename { - display: inline-block; - overflow: hidden; - vertical-align: middle; -} -.form-control .fileinput-filename { - vertical-align: bottom; -} -.fileinput.input-group { - display: table; -} -.fileinput.input-group > * { - position: relative; - z-index: 2; -} -.fileinput.input-group > .btn-file { - z-index: 1; -} -.fileinput-new.input-group .btn-file, -.fileinput-new .input-group .btn-file { - border-radius: 0 4px 4px 0; -} -.fileinput-new.input-group .btn-file.btn-xs, -.fileinput-new .input-group .btn-file.btn-xs, -.fileinput-new.input-group .btn-file.btn-sm, -.fileinput-new .input-group .btn-file.btn-sm { - border-radius: 0 3px 3px 0; -} -.fileinput-new.input-group .btn-file.btn-lg, -.fileinput-new .input-group .btn-file.btn-lg { - border-radius: 0 6px 6px 0; -} -.form-group.has-warning .fileinput .fileinput-preview { - color: $brand-warning; -} -.form-group.has-warning .fileinput .thumbnail { - border-color: $brand-warning; -} -.form-group.has-error .fileinput .fileinput-preview { - color: $brand-danger; -} -.form-group.has-error .fileinput .thumbnail { - border-color: $brand-danger; -} -.form-group.has-success .fileinput .fileinput-preview { - color: $brand-success; -} -.form-group.has-success .fileinput .thumbnail { - border-color: $brand-success; -} -.input-group-addon:not(:first-child) { - border-left: 0; -} -.thumbnail { - border: 0 none; - border-radius: 0; - padding: 0; -} diff --git a/src/assets/scss/core/_keyframes.scss b/src/assets/scss/core/_keyframes.scss deleted file mode 100644 index cc81d53da..000000000 --- a/src/assets/scss/core/_keyframes.scss +++ /dev/null @@ -1,11 +0,0 @@ -@keyframes Floatingx { - from { -webkit-transform: translate(50px, 0px) } - 65% { -webkit-transform: translate(0, 0) } - to { -webkit-transform: translate(50px, -0px) } -} - -@keyframes Floatingy { - from { -webkit-transform: translate(0, 0px) } - 65% { -webkit-transform: translate(50px, 0) } - to { -webkit-transform: translate(0, -0px) } -} diff --git a/src/assets/scss/core/_misc.scss b/src/assets/scss/core/_misc.scss index 36d3fcf88..c923422da 100644 --- a/src/assets/scss/core/_misc.scss +++ b/src/assets/scss/core/_misc.scss @@ -5,70 +5,7 @@ html * { * { letter-spacing: normal !important; } -body { - font-size: 1rem; -} -body, -h1, -h2, -h3, -h4, -h5, -h6 { - font-family: "Roboto", "Helvetica", "Arial", sans-serif; - font-weight: 300; - line-height: 1.5em; -} -h1, -h2, -h3, -h4, -h5, -h6 { - color: inherit; -} -h1, -h2, -h3 { - margin-top: 20px; - margin-bottom: 10px; -} -h4, -h5, -h6 { - margin-top: 10px; - margin-bottom: 10px; -} -h1 { - font-size: 3.3125rem; - line-height: 1.15em; -} -h2 { - font-size: 2.25rem; - line-height: 1.5em; -} -h3 { - font-size: 1.5625rem; - line-height: 1.4em; -} -h4 { - font-size: 1.125rem; - line-height: 1.5em; -} -h5 { - font-size: 1.0625rem; - line-height: 1.55em; -} -h6 { - font-size: 0.75rem; - text-transform: uppercase; - font-weight: 500; -} -p { - font-size: 14px; - margin: 0 0 10px; -} b, strong { font-weight: 700; @@ -89,10 +26,6 @@ body { text-align: left; } -legend { - border-bottom: 0; -} - // Prevent highlight on mobile * { -webkit-tap-highlight-color: rgba(255, 255, 255, 0); @@ -120,132 +53,3 @@ label { color: $checkboxes-text-color; font-weight: 400; } -small { - font-size: 75%; - color: #777; - font-weight: 400; -} -img { - vertical-align: middle; - border-style: none; -} -form { - margin-bottom: 1.125rem; -} - -hr { - margin-top: 1rem; - margin-bottom: 1rem; - border: 0; - border-top: 1px solid rgba(0, 0, 0, 0.1); -} -hr { - box-sizing: content-box; - height: 0; - overflow: visible; -} - -ol, -ul, -dl { - margin-top: 0; - margin-bottom: 1rem; -} - -#images h4 { - margin-bottom: 30px; -} - -#root { - overflow: hidden; -} - -#cd-vertical-nav { - position: fixed; - right: -78px; - top: 50%; - bottom: auto; - -webkit-transform: translateY(-50%); - -moz-transform: translateY(-50%); - -ms-transform: translateY(-50%); - -o-transform: translateY(-50%); - transform: translateY(-50%); - z-index: 4; -} -#cd-vertical-nav ul { - list-style: none; - padding: 0; -} -#cd-vertical-nav li { - text-align: right; -} -#cd-vertical-nav a { - display: inline-block; - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - width: 100%; -} -#cd-vertical-nav a:hover span, -#cd-vertical-nav a.is-selected .cd-dot { - -webkit-transform: scale(1); - -moz-transform: scale(1); - -ms-transform: scale(1); - -o-transform: scale(1); - transform: scale(1); -} -#cd-vertical-nav .cd-dot { - position: relative; - top: 8px; - right: calc(100% - 15px); - height: 10px; - width: 10px; - border-radius: 50%; - background-color: #995581; - -webkit-transition: -webkit-transform 0.2s, background-color 0.5s; - -moz-transition: -moz-transform 0.2s, background-color 0.5s; - transition: transform 0.2s, background-color 0.5s; - -webkit-transform-origin: 50% 50%; - -moz-transform-origin: 50% 50%; - -ms-transform-origin: 50% 50%; - -o-transform-origin: 50% 50%; - transform-origin: 50% 50%; -} -#cd-vertical-nav a span { - float: right; - display: inline-block; - -webkit-transform: scale(0.6); - -moz-transform: scale(0.6); - -ms-transform: scale(0.6); - -o-transform: scale(0.6); - transform: scale(0.6); -} -#cd-vertical-nav .cd-label { - position: relative; - margin-right: 10px; - padding: 4px 14px; - color: white; - background: rgba(0, 0, 0, 0.53); - font-size: 10px; - border-radius: 20px; - text-transform: uppercase; - font-weight: 600; - opacity: 0; - -webkit-transform-origin: 100% 50%; - -moz-transform-origin: 100% 50%; - -ms-transform-origin: 100% 50%; - -o-transform-origin: 100% 50%; - transform-origin: 100% 50%; -} -#cd-vertical-nav a:after { - content: ""; - display: table; - clear: both; -} - -#cd-vertical-nav a:hover .cd-label { - opacity: 1; - left: -100%; - -webkit-transition: -webkit-transform 0.2s, opacity 0.2s; - -moz-transition: -moz-transform 0.2s, opacity 0.2s; - transition: transform 0.2s, opacity 0.2s; -} diff --git a/src/assets/scss/core/_mixins.scss b/src/assets/scss/core/_mixins.scss deleted file mode 100644 index ca37550b9..000000000 --- a/src/assets/scss/core/_mixins.scss +++ /dev/null @@ -1 +0,0 @@ -@import "mixins/colored-shadows"; diff --git a/src/assets/scss/core/_variables.scss b/src/assets/scss/core/_variables.scss index bd44bee0d..1c7beab3a 100644 --- a/src/assets/scss/core/_variables.scss +++ b/src/assets/scss/core/_variables.scss @@ -1,17 +1,11 @@ -@import "variables/colors"; -@import "variables/shadow"; - -@import "variables/bootstrap-material-design-base"; - -// Customized BS variables -@import "variables/brand"; +@import 'variables/colors'; +@import 'variables/bootstrap-material-design-base'; // import their vars after customization for use below $enable-flex: true; // fully adopt flexbox layouts -$enable-shadows: true; // enable shadows, set to false to turn off shadows // // Core Bootstrap Variables -@import "variables/functions"; -@import "variables/variables"; +@import 'variables/functions'; +@import 'variables/variables'; -@import "variables/bootstrap-material-design"; +@import 'variables/bootstrap-material-design'; diff --git a/src/assets/scss/core/mixins/_colored-shadows.scss b/src/assets/scss/core/mixins/_colored-shadows.scss deleted file mode 100644 index 2717da440..000000000 --- a/src/assets/scss/core/mixins/_colored-shadows.scss +++ /dev/null @@ -1,128 +0,0 @@ -@mixin shadow-big() { - box-shadow: 0 16px 38px -12px rgba(0, 0, 0, $bmd-shadow-penumbra-opacity * 4), - 0 4px 25px 0px rgba(0, 0, 0, $bmd-shadow-ambient-opacity), - 0 8px 10px -5px rgba(0, 0, 0, $bmd-shadow-umbra-opacity); -} - -@mixin shadow-big-image() { - // new box shadow optimized for Tables and Phones - box-shadow: 0 5px 15px -8px rgba(0, 0, 0, $bmd-shadow-ambient-opacity * 2), - 0 8px 10px -5px rgba(0, 0, 0, $bmd-shadow-umbra-opacity); -} - -@mixin shadow-big-navbar() { - box-shadow: 0 10px 20px -12px rgba(0, 0, 0, $bmd-shadow-penumbra-opacity * 3), - 0 3px 20px 0px rgba(0, 0, 0, $bmd-shadow-ambient-opacity), - 0 8px 10px -5px rgba(0, 0, 0, $bmd-shadow-umbra-opacity); -} - -@mixin shadow-big-color($color) { - // new box shadow optimized for Tables and Phones - box-shadow: 0 5px 20px 0px rgba(0, 0, 0, 0.2), - 0 13px 24px -11px rgba($color, 0.6); -} - -@mixin shadow-small-color($color) { - // new box shadow optimized for Tablets and Phones - box-shadow: 0 4px 20px 0px rgba(0, 0, 0, 0.14), - 0 7px 10px -5px rgba($color, 0.4); -} - -@mixin shadow-navbar-color($color) { - // new box shadow optimized for Tablets and Phones - - @if ($color == $white-color) { - box-shadow: 0 4px 18px 0px rgba(0, 0, 0, 0.12), - 0 7px 10px -5px rgba(0, 0, 0, 0.15); - } @else { - box-shadow: 0 4px 20px 0px rgba(0, 0, 0, 0.14), - 0 7px 12px -5px rgba($color, 0.46); - } -} - -@mixin shadow-2dp() { - box-shadow: 0 2px 2px 0 rgba(0, 0, 0, $bmd-shadow-penumbra-opacity), - 0 3px 1px -2px rgba(0, 0, 0, $bmd-shadow-ambient-opacity), - 0 1px 5px 0 rgba(0, 0, 0, $bmd-shadow-umbra-opacity); -} - -@mixin shadow-4dp() { - box-shadow: 0 4px 5px 0 rgba(0, 0, 0, $bmd-shadow-penumbra-opacity), - 0 1px 10px 0 rgba(0, 0, 0, $bmd-shadow-ambient-opacity), - 0 2px 4px -1px rgba(0, 0, 0, $bmd-shadow-umbra-opacity); -} - -@mixin shadow-6dp() { - box-shadow: 0 6px 10px 0 rgba(0, 0, 0, $bmd-shadow-penumbra-opacity), - 0 1px 18px 0 rgba(0, 0, 0, $bmd-shadow-ambient-opacity), - 0 3px 5px -1px rgba(0, 0, 0, $bmd-shadow-umbra-opacity); -} - -@mixin shadow-8dp() { - box-shadow: 0 8px 10px 1px rgba(0, 0, 0, $bmd-shadow-penumbra-opacity), - 0 3px 14px 2px rgba(0, 0, 0, $bmd-shadow-ambient-opacity), - 0 5px 5px -3px rgba(0, 0, 0, $bmd-shadow-umbra-opacity); -} - -@mixin shadow-16dp() { - box-shadow: 0 16px 24px 2px rgba(0, 0, 0, $bmd-shadow-penumbra-opacity), - 0 6px 30px 5px rgba(0, 0, 0, $bmd-shadow-ambient-opacity), - 0 8px 10px -5px rgba(0, 0, 0, $bmd-shadow-umbra-opacity); -} - -@mixin shadow-2dp-color($color) { - box-shadow: 0 2px 2px 0 rgba($color, $bmd-shadow-penumbra-opacity), - 0 3px 1px -2px rgba($color, $bmd-shadow-umbra-opacity), - 0 1px 5px 0 rgba($color, $bmd-shadow-ambient-opacity); -} - -@mixin shadow-4dp-color($color) { - box-shadow: 0 4px 5px 0 rgba($color, $bmd-shadow-penumbra-opacity), - 0 1px 10px 0 rgba($color, $bmd-shadow-ambient-opacity), - 0 2px 4px -1px rgba($color, $bmd-shadow-umbra-opacity); -} - -@mixin shadow-8dp-color($color) { - box-shadow: 0 8px 10px 1px rgba($color, $bmd-shadow-penumbra-opacity), - 0 3px 14px 2px rgba(0, 0, 0, $bmd-shadow-ambient-opacity), - 0 5px 5px -3px rgba($color, $bmd-shadow-umbra-opacity); -} - -@mixin shadow-16dp-color($color) { - box-shadow: 0 16px 24px 2px rgba($color, $bmd-shadow-penumbra-opacity), - 0 6px 30px 5px rgba(0, 0, 0, $bmd-shadow-ambient-opacity), - 0 8px 10px -5px rgba($color, $bmd-shadow-umbra-opacity); -} - -@mixin button-shadow-color($color) { - box-shadow: 0 14px 26px -12px rgba($color, $bmd-shadow-penumbra-opacity * 3), - 0 4px 23px 0px rgba(0, 0, 0, $bmd-shadow-ambient-opacity), - 0 8px 10px -5px rgba($color, $bmd-shadow-umbra-opacity); -} - -@mixin shadow-z-1() { - box-shadow: 0 1px 6px 0 rgba(0, 0, 0, 0.12), 0 1px 6px 0 rgba(0, 0, 0, 0.12); -} - -@mixin shadow-z-1-hover() { - box-shadow: 0 5px 11px 0 rgba(0, 0, 0, 0.18), 0 4px 15px 0 rgba(0, 0, 0, 0.15); -} - -@mixin shadow-z-2() { - box-shadow: 0 8px 17px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19); -} - -@mixin shadow-z-3() { - box-shadow: 0 12px 15px 0 rgba(0, 0, 0, 0.24), - 0 17px 50px 0 rgba(0, 0, 0, 0.19); -} - -@mixin shadow-z-4() { - box-shadow: 0 16px 28px 0 rgba(0, 0, 0, 0.22), - 0 25px 55px 0 rgba(0, 0, 0, 0.21); -} - -@mixin shadow-z-5() { - box-shadow: 0 27px 24px 0 rgba(0, 0, 0, 0.2), - 0 40px 77px 0 rgba(0, 0, 0, 0.22); -} diff --git a/src/assets/scss/core/variables/_bootstrap-material-design-base.scss b/src/assets/scss/core/variables/_bootstrap-material-design-base.scss index d6aebbe34..7e66b590e 100644 --- a/src/assets/scss/core/variables/_bootstrap-material-design-base.scss +++ b/src/assets/scss/core/variables/_bootstrap-material-design-base.scss @@ -24,13 +24,5 @@ $border-radius-huge: 10px !default; $border-radius-label: 12px !default; $border-radius-extreme: 30px !default; -// Typography elements -$mdb-font-family: "Roboto", "Helvetica", "Arial", sans-serif !default; -$mdb-text-color-light: $white !default; -$mdb-text-color-light-hex: $white !default; // for contrast function in inverse -$mdb-text-color-primary: unquote("rgba(#{$rgb-black}, 0.87)") !default; -$mdb-text-color-primary-hex: $black !default; // for contrast function in inverse -$icon-color: rgba(0, 0, 0, 0.5) !default; - -$mdb-label-color: unquote("rgba(#{$rgb-black}, 0.26)") !default; -$mdb-label-color-toggle-focus: unquote("rgba(#{$rgb-black}, .54)") !default; +$mdb-label-color: unquote('rgba(#{$rgb-black}, 0.26)') !default; +$mdb-label-color-toggle-focus: unquote('rgba(#{$rgb-black}, .54)') !default; diff --git a/src/assets/scss/core/variables/_bootstrap-material-design.scss b/src/assets/scss/core/variables/_bootstrap-material-design.scss index bd10b4169..a3b22a680 100644 --- a/src/assets/scss/core/variables/_bootstrap-material-design.scss +++ b/src/assets/scss/core/variables/_bootstrap-material-design.scss @@ -1,16 +1,8 @@ -$bmd-label-color-focus: $brand-primary !default; -$bmd-invalid-underline: $brand-danger !default; $bmd-readonly-underline: $input-border-color !default; //--- // verified in use with refactoring to v4 -//--- -//-- unverified below here -$bmd-brand-inverse: $indigo !default; -// Typography elements FIXME: review to see if we actually need these -$icon-color: rgba($black, 0.5) !default; - // -------------------- // inputs $mdb-input-placeholder-color: #aaaaaa !default; @@ -68,14 +60,6 @@ $pale-bg: #f9f7f3 !default; $font-color: #66615b !default; -$brand-default: #cecece !default; -$brand-primary: $purple !default; -$brand-success: $green !default; -$brand-danger: $red !default; -$brand-warning: $orange !default; -$brand-info: $cyan !default; -$brand-rose: $pink !default; - $black-color: #3c4858 !default; // Dropdowns @@ -93,19 +77,11 @@ $bmd-switch-width: 2.125rem !default; // 34px $bmd-switch-height: 0.875rem !default; // 14px $bmd-switch-handle-size: 1.25rem !default; // 20px (was 18px) -$bmd-switch-handle-checked-bg: $brand-primary !default; $bmd-switch-handle-unchecked-bg: #f1f1f1 !default; $bmd-switch-handle-disabled-bg: #bdbdbd !default; $bmd-switch-unchecked-bg: $gray-lighter !default; -$bmd-switch-checked-bg: desaturate( - lighten($bmd-switch-handle-checked-bg, 28%), - 32% -); // kind of magic recipe -$bmd-switch-disabled-bg: $gray-lighter !default; -// Popovers and Popups -$bmd-popover-background: rgba(101, 101, 101, 0.9) !default; -$bmd-popover-color: #ececec !default; +$bmd-switch-disabled-bg: $gray-lighter !default; // Radio: $bmd-radio-border: 0.0625rem !default; // 1px @@ -114,7 +90,6 @@ $bmd-radio-ripple-offset: 1em !default; $bmd-radio-label-padding: 0.3125rem !default; // 5px $bmd-radio-color-off: $bmd-label-color-inner-focus !default; -$bmd-radio-color-on: $brand-primary !default; $bmd-radio-color-disabled: $gray-lighter; // $bmd-radio-color-disabled-inverse: rgba( $white, @@ -125,25 +100,9 @@ $white-color: #fff !default; $navbar-color: #555 !default; $pills-color: $navbar-color !default; $black-color: #3c4858 !default; -$link-color: $brand-primary; $white-transparent: rgba($white-color, 0.8); $transparent: transparent; -//Popovers -$popover-color: $navbar-color !default; - -//Tooltips -$tooltip-font-size: 0.75rem !default; - -// Background colors -$bg-primary: $brand-primary; -$bg-danger: $brand-danger; -$bg-warning: $brand-warning; -$bg-info: $brand-info; -$bg-rose: $brand-rose; -$bg-success: $brand-success; -$bg-dark: $grey-900; - //Paddings $padding-general-y: 0.625rem !default; $padding-general-x: 0.9375rem !default; @@ -215,13 +174,12 @@ $social-behance: #1769ff; // Variables for checkboxes -$mdb-label-color: unquote("rgba(#{$rgb-black}, 0.26)") !default; -$mdb-label-color-toggle-focus: unquote("rgba(#{$rgb-black}, .54)") !default; +$mdb-label-color: unquote('rgba(#{$rgb-black}, 0.26)') !default; +$mdb-label-color-toggle-focus: unquote('rgba(#{$rgb-black}, .54)') !default; $mdb-checkbox-size: 20px !default; $mdb-checkbox-animation-ripple: 500ms !default; $mdb-checkbox-animation-check: 0.3s !default; -$mdb-checkbox-checked-color: $brand-primary !default; $mdb-checkbox-label-color: $mdb-label-color !default; $mdb-checkbox-border-color: $mdb-label-color-toggle-focus !default; @@ -229,4 +187,3 @@ $mdb-checkbox-border-color: $mdb-label-color-toggle-focus !default; // Radio: $mdb-radio-label-color: $mdb-label-color !default; $mdb-radio-color-off: $mdb-label-color-toggle-focus !default; -$mdb-radio-color-on: $brand-primary !default; diff --git a/src/assets/scss/core/variables/_brand.scss b/src/assets/scss/core/variables/_brand.scss deleted file mode 100644 index a311ac8d2..000000000 --- a/src/assets/scss/core/variables/_brand.scss +++ /dev/null @@ -1,7 +0,0 @@ -// Bootstrap brand color customization -$brand-primary: $purple !default; -$brand-success: $green !default; -$brand-danger: $red !default; -$brand-warning: $orange !default; -$brand-info: $cyan !default; -$brand-rose: $pink !default; diff --git a/src/assets/scss/core/variables/_colors.scss b/src/assets/scss/core/variables/_colors.scss index 864306de1..ba7f05696 100644 --- a/src/assets/scss/core/variables/_colors.scss +++ b/src/assets/scss/core/variables/_colors.scss @@ -310,6 +310,6 @@ $gray-color: #999999 !default; $black-color: #3c4858 !default; $black: #000000; -$rgb-black: "0,0,0" !default; +$rgb-black: '0,0,0' !default; $white: #ffffff; -$rgb-white: "255,255,255" !default; +$rgb-white: '255,255,255' !default; diff --git a/src/assets/scss/core/variables/_functions.scss b/src/assets/scss/core/variables/_functions.scss index 13b723fd3..971c6dfee 100644 --- a/src/assets/scss/core/variables/_functions.scss +++ b/src/assets/scss/core/variables/_functions.scss @@ -38,16 +38,12 @@ // @param {String} $search - Substring to replace // @param {String} $replace ('') - New value // @return {String} - Updated string -@function str-replace($string, $search, $replace: "") { +@function str-replace($string, $search, $replace: '') { $index: str-index($string, $search); @if $index { @return str-slice($string, 1, $index - 1) + $replace + - str-replace( - str-slice($string, $index + str-length($search)), - $search, - $replace - ); + str-replace(str-slice($string, $index + str-length($search)), $search, $replace); } @return $string; @@ -69,20 +65,20 @@ } // Retrieve color Sass maps -@function color($key: "blue") { +@function color($key: 'blue') { @return map-get($colors, $key); } -@function theme-color($key: "primary") { +@function theme-color($key: 'primary') { @return map-get($theme-colors, $key); } -@function gray($key: "100") { +@function gray($key: '100') { @return map-get($grays, $key); } // Request a theme color level -@function theme-color-level($color-name: "primary", $level: 0) { +@function theme-color-level($color-name: 'primary', $level: 0) { $color: theme-color($color-name); $color-base: if($level > 0, #000, #fff); $level: abs($level); diff --git a/src/assets/scss/core/variables/_shadow.scss b/src/assets/scss/core/variables/_shadow.scss deleted file mode 100644 index ce5e43600..000000000 --- a/src/assets/scss/core/variables/_shadow.scss +++ /dev/null @@ -1,35 +0,0 @@ -// Shadows (originally from mdl http://www.getmdl.io/) -$bmd-shadow-umbra-opacity: 0.2 !default; -$bmd-shadow-penumbra-opacity: 0.14 !default; -$bmd-shadow-ambient-opacity: 0.12 !default; - -// Declare the following for reuse with both mixins and the bootstrap variables -$bmd-shadow-focus: 0 0 8px rgba($black, 0.18), 0 8px 16px rgba($black, 0.36); - -$bmd-shadow-2dp: 0 2px 2px 0 rgba($black, $bmd-shadow-penumbra-opacity), - 0 3px 1px -2px rgba($black, $bmd-shadow-umbra-opacity), - 0 1px 5px 0 rgba($black, $bmd-shadow-ambient-opacity); - -$bmd-shadow-3dp: 0 3px 4px 0 rgba($black, $bmd-shadow-penumbra-opacity), - 0 3px 3px -2px rgba($black, $bmd-shadow-umbra-opacity), - 0 1px 8px 0 rgba($black, $bmd-shadow-ambient-opacity); - -$bmd-shadow-4dp: 0 4px 5px 0 rgba($black, $bmd-shadow-penumbra-opacity), - 0 1px 10px 0 rgba($black, $bmd-shadow-ambient-opacity), - 0 2px 4px -1px rgba($black, $bmd-shadow-umbra-opacity); - -$bmd-shadow-6dp: 0 6px 10px 0 rgba($black, $bmd-shadow-penumbra-opacity), - 0 1px 18px 0 rgba($black, $bmd-shadow-ambient-opacity), - 0 3px 5px -1px rgba($black, $bmd-shadow-umbra-opacity); - -$bmd-shadow-8dp: 0 8px 10px 1px rgba($black, $bmd-shadow-penumbra-opacity), - 0 3px 14px 2px rgba($black, $bmd-shadow-ambient-opacity), - 0 5px 5px -3px rgba($black, $bmd-shadow-umbra-opacity); - -$bmd-shadow-16dp: 0 16px 24px 2px rgba($black, $bmd-shadow-penumbra-opacity), - 0 6px 30px 5px rgba($black, $bmd-shadow-ambient-opacity), - 0 8px 10px -5px rgba($black, $bmd-shadow-umbra-opacity); - -$bmd-shadow-24dp: 0 9px 46px 8px rgba($black, $bmd-shadow-penumbra-opacity), - 0 11px 15px -7px rgba($black, $bmd-shadow-ambient-opacity), - 0 24px 38px 3px rgba($black, $bmd-shadow-umbra-opacity); diff --git a/src/assets/scss/core/variables/_variables.scss b/src/assets/scss/core/variables/_variables.scss index 768fd6bd0..85a2cd7ef 100644 --- a/src/assets/scss/core/variables/_variables.scss +++ b/src/assets/scss/core/variables/_variables.scss @@ -1,12 +1,3 @@ -// Variables -// -// Variables should follow the `$component-state-property-size` formula for -// consistent naming. Ex: $nav-link-disabled-color and $modal-content-box-shadow-xs. - -// -// Color system -// - // stylelint-disable $white: #fff !default; $gray-100: #f8f9fa !default; @@ -23,15 +14,15 @@ $black: #000 !default; $grays: () !default; $grays: map-merge( ( - "100": $gray-100, - "200": $gray-200, - "300": $gray-300, - "400": $gray-400, - "500": $gray-500, - "600": $gray-600, - "700": $gray-700, - "800": $gray-800, - "900": $gray-900 + '100': $gray-100, + '200': $gray-200, + '300': $gray-300, + '400': $gray-400, + '500': $gray-500, + '600': $gray-600, + '700': $gray-700, + '800': $gray-800, + '900': $gray-900, ), $grays ); @@ -50,19 +41,19 @@ $cyan: #17a2b8 !default; $colors: () !default; $colors: map-merge( ( - "blue": $blue, - "indigo": $indigo, - "purple": $purple, - "pink": $pink, - "red": $red, - "orange": $orange, - "yellow": $yellow, - "green": $green, - "teal": $teal, - "cyan": $cyan, - "white": $white, - "gray": $gray-600, - "gray-dark": $gray-800 + 'blue': $blue, + 'indigo': $indigo, + 'purple': $purple, + 'pink': $pink, + 'red': $red, + 'orange': $orange, + 'yellow': $yellow, + 'green': $green, + 'teal': $teal, + 'cyan': $cyan, + 'white': $white, + 'gray': $gray-600, + 'gray-dark': $gray-800, ), $colors ); @@ -79,14 +70,14 @@ $dark: $gray-800 !default; $theme-colors: () !default; $theme-colors: map-merge( ( - "primary": $primary, - "secondary": $secondary, - "success": $success, - "info": $info, - "warning": $warning, - "danger": $danger, - "light": $light, - "dark": $dark + 'primary': $primary, + 'secondary': $secondary, + 'success': $success, + 'info': $info, + 'warning': $warning, + 'danger': $danger, + 'light': $light, + 'dark': $dark, ), $theme-colors ); @@ -128,18 +119,18 @@ $spacers: map-merge( ( 0: 0, 1: ( - $spacer * 0.25 + $spacer * 0.25, ), 2: ( - $spacer * 0.5 + $spacer * 0.5, ), 3: $spacer, 4: ( - $spacer * 1.5 + $spacer * 1.5, ), 5: ( - $spacer * 3 - ) + $spacer * 3, + ), ), $spacers ); @@ -151,7 +142,7 @@ $sizes: map-merge( 25: 25%, 50: 50%, 75: 75%, - 100: 100% + 100: 100%, ), $sizes ); @@ -168,7 +159,7 @@ $body-color: $gray-900 !default; // // Style anchor elements. -$link-color: theme-color("primary") !default; +$link-color: theme-color('primary') !default; $link-decoration: none !default; $link-hover-color: darken($link-color, 15%) !default; $link-hover-decoration: underline !default; @@ -189,10 +180,10 @@ $grid-breakpoints: ( sm: 576px, md: 768px, lg: 992px, - xl: 1200px + xl: 1200px, ) !default; -@include _assert-ascending($grid-breakpoints, "$grid-breakpoints"); +@include _assert-ascending($grid-breakpoints, '$grid-breakpoints'); @include _assert-starts-at-zero($grid-breakpoints); // Grid containers @@ -203,10 +194,10 @@ $container-max-widths: ( sm: 540px, md: 720px, lg: 960px, - xl: 1140px + xl: 1140px, ) !default; -@include _assert-ascending($container-max-widths, "$container-max-widths"); +@include _assert-ascending($container-max-widths, '$container-max-widths'); // Grid columns // @@ -230,7 +221,7 @@ $border-radius-lg: 0.3rem !default; $border-radius-sm: 0.2rem !default; $component-active-color: $white !default; -$component-active-bg: theme-color("primary") !default; +$component-active-bg: theme-color('primary') !default; $caret-width: 0.3em !default; @@ -243,11 +234,10 @@ $transition-collapse: height 0.35s ease !default; // Font, line-height, and color for body text, headings, and more. // stylelint-disable value-keyword-case -$font-family-sans-serif: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, - "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", - "Segoe UI Symbol" !default; -$font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, - "Liberation Mono", "Courier New", monospace !default; +$font-family-sans-serif: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', + Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol' !default; +$font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', + monospace !default; $font-family-base: $font-family-sans-serif !default; // stylelint-enable value-keyword-case @@ -312,30 +302,6 @@ $mark-bg: #fcf8e3 !default; $hr-margin-y: $spacer !default; -// Tables -// -// Customizes the `.table` component with basic values, each used across all table variations. - -$table-cell-padding: 0.75rem !default; -$table-cell-padding-sm: 0.3rem !default; - -$table-bg: transparent !default; -$table-accent-bg: rgba($black, 0.05) !default; -$table-hover-bg: rgba($black, 0.075) !default; -$table-active-bg: $table-hover-bg !default; - -$table-border-width: $border-width !default; -$table-border-color: $gray-300 !default; - -$table-head-bg: $gray-200 !default; -$table-head-color: $gray-700 !default; - -$table-dark-bg: $gray-900 !default; -$table-dark-accent-bg: rgba($white, 0.05) !default; -$table-dark-hover-bg: rgba($white, 0.075) !default; -$table-dark-border-color: lighten($gray-900, 7.5%) !default; -$table-dark-color: $body-bg !default; - // Buttons + Forms // // Shared variables that are reassigned to `$input-` and `$btn-` specific variables. @@ -431,21 +397,14 @@ $input-placeholder-color: $gray-600 !default; $input-height-border: $input-border-width * 2 !default; -$input-height-inner: ($font-size-base * $input-btn-line-height) + - ($input-btn-padding-y * 2) !default; +$input-height-inner: ($font-size-base * $input-btn-line-height) + ($input-btn-padding-y * 2) !default; $input-height: calc(#{$input-height-inner} + #{$input-height-border}) !default; -$input-height-inner-sm: ($font-size-sm * $input-btn-line-height-sm) + - ($input-btn-padding-y-sm * 2) !default; -$input-height-sm: calc( - #{$input-height-inner-sm} + #{$input-height-border} -) !default; +$input-height-inner-sm: ($font-size-sm * $input-btn-line-height-sm) + ($input-btn-padding-y-sm * 2) !default; +$input-height-sm: calc(#{$input-height-inner-sm} + #{$input-height-border}) !default; -$input-height-inner-lg: ($font-size-lg * $input-btn-line-height-lg) + - ($input-btn-padding-y-lg * 2) !default; -$input-height-lg: calc( - #{$input-height-inner-lg} + #{$input-height-border} -) !default; +$input-height-inner-lg: ($font-size-lg * $input-btn-line-height-lg) + ($input-btn-padding-y-lg * 2) !default; +$input-height-lg: calc(#{$input-height-inner-lg} + #{$input-height-border}) !default; $input-transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out !default; @@ -464,112 +423,11 @@ $input-group-addon-color: $input-color !default; $input-group-addon-bg: $gray-200 !default; $input-group-addon-border-color: $input-border-color !default; -$custom-control-gutter: 1.5rem !default; -$custom-control-spacer-x: 1rem !default; - -$custom-control-indicator-size: 1rem !default; -$custom-control-indicator-bg: $gray-300 !default; -$custom-control-indicator-bg-size: 50% 50% !default; -$custom-control-indicator-box-shadow: inset 0 0.25rem 0.25rem rgba($black, 0.1) !default; - -$custom-control-indicator-disabled-bg: $gray-200 !default; -$custom-control-label-disabled-color: $gray-600 !default; - -$custom-control-indicator-checked-color: $component-active-color !default; -$custom-control-indicator-checked-bg: $component-active-bg !default; -$custom-control-indicator-checked-disabled-bg: rgba( - theme-color("primary"), - 0.5 -) !default; -$custom-control-indicator-checked-box-shadow: none !default; - -$custom-control-indicator-focus-box-shadow: 0 0 0 1px $body-bg, - $input-btn-focus-box-shadow !default; - -$custom-control-indicator-active-color: $component-active-color !default; -$custom-control-indicator-active-bg: lighten( - $component-active-bg, - 35% -) !default; -$custom-control-indicator-active-box-shadow: none !default; - -$custom-checkbox-indicator-border-radius: $border-radius !default; -$custom-checkbox-indicator-icon-checked: str-replace( - url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='#{$custom-control-indicator-checked-color}' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3E%3C/svg%3E"), - "#", - "%23" -) !default; - -$custom-checkbox-indicator-indeterminate-bg: $component-active-bg !default; -$custom-checkbox-indicator-indeterminate-color: $custom-control-indicator-checked-color !default; -$custom-checkbox-indicator-icon-indeterminate: str-replace( - url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3E%3Cpath stroke='#{$custom-checkbox-indicator-indeterminate-color}' d='M0 2h4'/%3E%3C/svg%3E"), - "#", - "%23" -) !default; -$custom-checkbox-indicator-indeterminate-box-shadow: none !default; - -$custom-radio-indicator-border-radius: 50% !default; -$custom-radio-indicator-icon-checked: str-replace( - url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='#{$custom-control-indicator-checked-color}'/%3E%3C/svg%3E"), - "#", - "%23" -) !default; - -$custom-select-padding-y: 0.375rem !default; -$custom-select-padding-x: 0.75rem !default; -$custom-select-height: $input-height !default; -$custom-select-indicator-padding: 1rem !default; // Extra padding to account for the presence of the background-image based indicator -$custom-select-line-height: $input-btn-line-height !default; -$custom-select-color: $input-color !default; -$custom-select-disabled-color: $gray-600 !default; -$custom-select-bg: $white !default; -$custom-select-disabled-bg: $gray-200 !default; -$custom-select-bg-size: 8px 10px !default; // In pixels because image dimensions -$custom-select-indicator-color: $gray-800 !default; -$custom-select-indicator: str-replace( - url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='#{$custom-select-indicator-color}' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E"), - "#", - "%23" -) !default; -$custom-select-border-width: $input-btn-border-width !default; -$custom-select-border-color: $input-border-color !default; -$custom-select-border-radius: $border-radius !default; - -$custom-select-focus-border-color: $input-focus-border-color !default; -$custom-select-focus-box-shadow: inset 0 1px 2px rgba($black, 0.075), - 0 0 5px rgba($custom-select-focus-border-color, 0.5) !default; - -$custom-select-font-size-sm: 75% !default; -$custom-select-height-sm: $input-height-sm !default; - -$custom-select-font-size-lg: 125% !default; -$custom-select-height-lg: $input-height-lg !default; - -$custom-file-height: $input-height !default; -$custom-file-focus-border-color: $input-focus-border-color !default; -$custom-file-focus-box-shadow: $input-btn-focus-box-shadow !default; - -$custom-file-padding-y: $input-btn-padding-y !default; -$custom-file-padding-x: $input-btn-padding-x !default; -$custom-file-line-height: $input-btn-line-height !default; -$custom-file-color: $input-color !default; -$custom-file-bg: $input-bg !default; -$custom-file-border-width: $input-btn-border-width !default; -$custom-file-border-color: $input-border-color !default; -$custom-file-border-radius: $input-border-radius !default; -$custom-file-box-shadow: $input-box-shadow !default; -$custom-file-button-color: $custom-file-color !default; -$custom-file-button-bg: $input-group-addon-bg !default; -$custom-file-text: ( - en: "Browse" -) !default; - // Form validation $form-feedback-margin-top: $form-text-margin-top !default; $form-feedback-font-size: $small-font-size !default; -$form-feedback-valid-color: theme-color("success") !default; -$form-feedback-invalid-color: theme-color("danger") !default; +$form-feedback-valid-color: theme-color('success') !default; +$form-feedback-invalid-color: theme-color('danger') !default; // Dropdowns // @@ -609,7 +467,6 @@ $zindex-sticky: 1020 !default; $zindex-fixed: 1030 !default; $zindex-modal-backdrop: 1040 !default; $zindex-modal: 1050 !default; -$zindex-popover: 1060 !default; $zindex-tooltip: 1070 !default; // Navs @@ -639,9 +496,7 @@ $navbar-nav-link-padding-x: 0.5rem !default; $navbar-brand-font-size: $font-size-lg !default; // Compute the navbar-brand padding-y so the navbar-brand will have the same height as navbar-text and nav-link -$nav-link-height: ( - $font-size-base * $line-height-base + $nav-link-padding-y * 2 -) !default; +$nav-link-height: ($font-size-base * $line-height-base + $nav-link-padding-y * 2) !default; $navbar-brand-height: $navbar-brand-font-size * $line-height-base !default; $navbar-brand-padding-y: ($nav-link-height - $navbar-brand-height) / 2 !default; @@ -656,8 +511,8 @@ $navbar-dark-active-color: $white !default; $navbar-dark-disabled-color: rgba($white, 0.25) !default; $navbar-dark-toggler-icon-bg: str-replace( url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='#{$navbar-dark-color}' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E"), - "#", - "%23" + '#', + '%23' ) !default; $navbar-dark-toggler-border-color: rgba($white, 0.1) !default; @@ -667,123 +522,11 @@ $navbar-light-active-color: rgba($black, 0.9) !default; $navbar-light-disabled-color: rgba($black, 0.3) !default; $navbar-light-toggler-icon-bg: str-replace( url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='#{$navbar-light-color}' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E"), - "#", - "%23" + '#', + '%23' ) !default; $navbar-light-toggler-border-color: rgba($black, 0.1) !default; -// Pagination - -$pagination-padding-y: 0.5rem !default; -$pagination-padding-x: 0.75rem !default; -$pagination-padding-y-sm: 0.25rem !default; -$pagination-padding-x-sm: 0.5rem !default; -$pagination-padding-y-lg: 0.75rem !default; -$pagination-padding-x-lg: 1.5rem !default; -$pagination-line-height: 1.25 !default; - -$pagination-color: $link-color !default; -$pagination-bg: $white !default; -$pagination-border-width: $border-width !default; -$pagination-border-color: $gray-300 !default; - -$pagination-focus-box-shadow: $input-btn-focus-box-shadow !default; - -$pagination-hover-color: $link-hover-color !default; -$pagination-hover-bg: $gray-200 !default; -$pagination-hover-border-color: $gray-300 !default; - -$pagination-active-color: $component-active-color !default; -$pagination-active-bg: $component-active-bg !default; -$pagination-active-border-color: $pagination-active-bg !default; - -$pagination-disabled-color: $gray-600 !default; -$pagination-disabled-bg: $white !default; -$pagination-disabled-border-color: $gray-300 !default; - -// Jumbotron - -$jumbotron-padding: 2rem !default; -$jumbotron-bg: $gray-200 !default; - -// Cards - -$card-spacer-y: 0.75rem !default; -$card-spacer-x: 1.25rem !default; -$card-border-width: $border-width !default; -$card-border-radius: $border-radius !default; -$card-border-color: rgba($black, 0.125) !default; -$card-inner-border-radius: calc( - #{$card-border-radius} - #{$card-border-width} -) !default; -$card-cap-bg: rgba($black, 0.03) !default; -$card-bg: $white !default; - -$card-img-overlay-padding: 1.25rem !default; - -$card-group-margin: ($grid-gutter-width / 2) !default; -$card-deck-margin: $card-group-margin !default; - -$card-columns-count: 3 !default; -$card-columns-gap: 1.25rem !default; -$card-columns-margin: $card-spacer-y !default; - -// Tooltips - -$tooltip-font-size: $font-size-sm !default; -$tooltip-max-width: 200px !default; -$tooltip-color: $white !default; -$tooltip-bg: $black !default; -$tooltip-border-radius: $border-radius !default; -$tooltip-opacity: 0.9 !default; -$tooltip-padding-y: 0.25rem !default; -$tooltip-padding-x: 0.5rem !default; -$tooltip-margin: 0 !default; - -$tooltip-arrow-width: 0.8rem !default; -$tooltip-arrow-height: 0.4rem !default; -$tooltip-arrow-color: $tooltip-bg !default; - -// Popovers - -$popover-font-size: $font-size-sm !default; -$popover-bg: $white !default; -$popover-max-width: 276px !default; -$popover-border-width: $border-width !default; -$popover-border-color: rgba($black, 0.2) !default; -$popover-border-radius: $border-radius-lg !default; -$popover-box-shadow: 0 0.25rem 0.5rem rgba($black, 0.2) !default; - -$popover-header-bg: darken($popover-bg, 3%) !default; -$popover-header-color: $headings-color !default; -$popover-header-padding-y: 0.5rem !default; -$popover-header-padding-x: 0.75rem !default; - -$popover-body-color: $body-color !default; -$popover-body-padding-y: $popover-header-padding-y !default; -$popover-body-padding-x: $popover-header-padding-x !default; - -$popover-arrow-width: 1rem !default; -$popover-arrow-height: 0.5rem !default; -$popover-arrow-color: $popover-bg !default; - -$popover-arrow-outer-color: fade-in($popover-border-color, 0.05) !default; - -// Badges - -$badge-font-size: 75% !default; -$badge-font-weight: $font-weight-bold !default; -$badge-padding-y: 0.25em !default; -$badge-padding-x: 0.4em !default; -$badge-border-radius: $border-radius !default; - -$badge-pill-padding-x: 0.6em !default; -// Use a higher than normal value to ensure completely rounded edges when -// customizing padding or font-size on labels. -$badge-pill-border-radius: 10rem !default; - -// Modals - // Padding applied to the modal body $modal-inner-padding: 1rem !default; @@ -813,7 +556,6 @@ $modal-sm: 300px !default; $modal-transition: transform 0.3s ease-out !default; // Alerts -// // Define alert colors, border radius, and padding. $alert-padding-y: 0.75rem !default; @@ -835,7 +577,7 @@ $progress-bg: $gray-200 !default; $progress-border-radius: $border-radius !default; $progress-box-shadow: inset 0 0.1rem 0.1rem rgba($black, 0.1) !default; $progress-bar-color: $white !default; -$progress-bar-bg: theme-color("primary") !default; +$progress-bar-bg: theme-color('primary') !default; $progress-bar-animation-timing: 1s linear infinite !default; $progress-bar-transition: width 0.6s ease !default; @@ -863,83 +605,9 @@ $list-group-action-hover-color: $list-group-action-color !default; $list-group-action-active-color: $body-color !default; $list-group-action-active-bg: $gray-200 !default; -// Image thumbnails - -$thumbnail-padding: 0.25rem !default; -$thumbnail-bg: $body-bg !default; -$thumbnail-border-width: $border-width !default; -$thumbnail-border-color: $gray-300 !default; -$thumbnail-border-radius: $border-radius !default; -$thumbnail-box-shadow: 0 1px 2px rgba($black, 0.075) !default; - -// Figures - -$figure-caption-font-size: 90% !default; -$figure-caption-color: $gray-600 !default; - -// Breadcrumbs - -$breadcrumb-padding-y: 0.75rem !default; -$breadcrumb-padding-x: 1rem !default; -$breadcrumb-item-padding: 0.5rem !default; - -$breadcrumb-margin-bottom: 1rem !default; - -$breadcrumb-bg: $gray-200 !default; -$breadcrumb-divider-color: $gray-600 !default; -$breadcrumb-active-color: $gray-600 !default; -$breadcrumb-divider: "/" !default; - -// Carousel - -$carousel-control-color: $white !default; -$carousel-control-width: 15% !default; -$carousel-control-opacity: 0.5 !default; - -$carousel-indicator-width: 30px !default; -$carousel-indicator-height: 3px !default; -$carousel-indicator-spacer: 3px !default; -$carousel-indicator-active-bg: $white !default; - -$carousel-caption-width: 70% !default; -$carousel-caption-color: $white !default; - -$carousel-control-icon-width: 20px !default; - -$carousel-control-prev-icon-bg: str-replace( - url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='#{$carousel-control-color}' viewBox='0 0 8 8'%3E%3Cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3E%3C/svg%3E"), - "#", - "%23" -) !default; -$carousel-control-next-icon-bg: str-replace( - url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='#{$carousel-control-color}' viewBox='0 0 8 8'%3E%3Cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3E%3C/svg%3E"), - "#", - "%23" -) !default; - -$carousel-transition: transform 0.6s ease !default; - // Close $close-font-size: $font-size-base * 1.5 !default; $close-font-weight: $font-weight-bold !default; $close-color: $black !default; $close-text-shadow: 0 1px 0 $white !default; - -// Code - -$code-font-size: 87.5% !default; -$code-color: $pink !default; - -$kbd-padding-y: 0.2rem !default; -$kbd-padding-x: 0.4rem !default; -$kbd-font-size: $code-font-size !default; -$kbd-color: $white !default; -$kbd-bg: $gray-900 !default; - -$pre-color: $gray-900 !default; -$pre-scrollable-max-height: 340px !default; - -// Printing -$print-page-size: a3 !default; -$print-body-min-width: map-get($grid-breakpoints, "lg") !default; diff --git a/src/assets/scss/material-kit-pro-react.scss b/src/assets/scss/material-kit-pro-react.scss index 850d2443a..ccb6f6880 100644 --- a/src/assets/scss/material-kit-pro-react.scss +++ b/src/assets/scss/material-kit-pro-react.scss @@ -1,33 +1,5 @@ -/*! - -========================================================= -* Material Kit PRO React - v1.9.0 based on Material Kit PRO v2.0.2 (Bootstrap 4.0.0 Final Edition) -========================================================= - -* Product Page: https://www.creative-tim.com/product/material-kit-pro-react -* Copyright 2020 Creative Tim (https://www.creative-tim.com) - -* Coded by Creative Tim - -========================================================= - -* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -*/ - - // Core Components -@import "core/variables"; -@import "core/mixins"; -@import "core/fileupload"; -@import "core/keyframes"; +@import 'core/variables'; // Core Plugins -@import "core/misc"; - -// @import "plugins/plugin-datetime-picker"; -@import "plugins/plugin-nouislider"; -@import "plugins/plugin-react-datetime"; -@import "plugins/plugin-react-image-gallery"; -@import "plugins/plugin-react-slick"; -@import "plugins/plugin-react-tagsinput"; +@import 'core/misc'; diff --git a/src/assets/scss/plugins/_plugin-nouislider.scss b/src/assets/scss/plugins/_plugin-nouislider.scss deleted file mode 100644 index b00336cfe..000000000 --- a/src/assets/scss/plugins/_plugin-nouislider.scss +++ /dev/null @@ -1,352 +0,0 @@ -/*! nouislider - 14.0.2 - 6/28/2019 */ -/* Functional styling; - * These styles are required for noUiSlider to function. - * You don't need to change these rules to apply your design. - */ -/* - -This file was modified by Creative-Tim - -*/ -.noUi-target, -.noUi-target * { - -webkit-touch-callout: none; - -webkit-tap-highlight-color: rgba(0, 0, 0, 0); - -webkit-user-select: none; - -ms-touch-action: none; - touch-action: none; - -ms-user-select: none; - -moz-user-select: none; - user-select: none; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -.noUi-target { - position: relative; - direction: ltr; -} -.noUi-base, -.noUi-connects { - width: 100%; - height: 100%; - position: relative; - z-index: 1; -} -/* Wrapper for all connect elements. - */ -.noUi-connects { - overflow: hidden; - z-index: 0; -} -.noUi-connect, -.noUi-origin { - will-change: transform; - position: absolute; - z-index: 1; - top: 0; - left: 0; - -ms-transform-origin: 0 0; - -webkit-transform-origin: 0 0; - -webkit-transform-style: preserve-3d; - transform-origin: 0 0; - transform-style: flat; -} -.noUi-connect { - height: 100%; - width: 100%; -} -.noUi-origin { - height: 10%; - width: 10%; -} -/* Offset direction - */ -html:not([dir="rtl"]) .noUi-horizontal .noUi-origin { - left: auto; - right: 0; -} -/* Give origins 0 height/width so they don't interfere with clicking the - * connect elements. - */ -.noUi-vertical .noUi-origin { - width: 0; -} -.noUi-horizontal .noUi-origin { - height: 0; -} -.noUi-handle { - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - position: absolute; -} -.noUi-touch-area { - height: 100%; - width: 100%; -} -.noUi-state-tap .noUi-connect, -.noUi-state-tap .noUi-origin { - -webkit-transition: transform 0.3s; - transition: transform 0.3s; -} -.noUi-state-drag * { - cursor: inherit !important; -} -/* Slider size and handle placement; - */ -.noUi-horizontal { - height: 2px; - margin: 15px 0; -} -.noUi-horizontal .noUi-handle { - box-sizing: border-box; - width: 14px; - height: 14px; - left: -10px; - top: -6px; - cursor: pointer; - border-radius: 100%; - -webkit-transition: all .2s ease-out; - transition: all .2s ease-out; - border: 1px solid #9c27b0; - background: #fff; - box-shadow: 0 2px 2px 0 rgba(0,0,0,.14), 0 3px 1px -2px rgba(0,0,0,.12), 0 1px 5px 0 rgba(0,0,0,.2); -} -.noUi-vertical { - width: 18px; -} -.noUi-vertical .noUi-handle { - width: 15px; - height: 15px; - left: 0px; - top: -7px; -} -html:not([dir="rtl"]) .noUi-horizontal .noUi-handle { - right: -4px; - left: auto; -} -/* Styling; - * Giving the connect element a border radius causes issues with using transform: scale - */ -.noUi-target { - background-color: #c8c8c8; - border-radius: 3px; -} -.noUi-connects { - border-radius: 3px; -} -.noUi-connect { - // background: #3FB8AF; -} -/* Handles and cursors; - */ -.noUi-draggable { - cursor: ew-resize; -} -.noUi-vertical .noUi-draggable { - cursor: ns-resize; -} -.noUi-handle { - border-radius: 3px; - background: #FFF; - cursor: default; - box-shadow: inset 0 0 1px #FFF, inset 0 1px 7px #EBEBEB, 0 3px 6px -3px #BBB; -} -.noUi-active { - box-shadow: inset 0 0 1px #FFF, inset 0 1px 7px #DDD, 0 3px 6px -3px #BBB; -} -/* Disabled state; - */ -[disabled] .noUi-connect { - background: #B8B8B8; -} -[disabled].noUi-target, -[disabled].noUi-handle, -[disabled] .noUi-handle { - cursor: not-allowed; -} -/* Base; - * - */ -.noUi-pips, -.noUi-pips * { - -moz-box-sizing: border-box; - box-sizing: border-box; -} -.noUi-pips { - position: absolute; - color: #999; -} -/* Values; - * - */ -.noUi-value { - position: absolute; - white-space: nowrap; - text-align: center; -} -.noUi-value-sub { - color: #ccc; - font-size: 10px; -} -/* Markings; - * - */ -.noUi-marker { - position: absolute; - background: #CCC; -} -.noUi-marker-sub { - background: #AAA; -} -.noUi-marker-large { - background: #AAA; -} -/* Horizontal layout; - * - */ -.noUi-pips-horizontal { - padding: 10px 0; - height: 80px; - top: 100%; - left: 0; - width: 100%; -} -.noUi-value-horizontal { - -webkit-transform: translate(-50%, 50%); - transform: translate(-50%, 50%); -} -.noUi-rtl .noUi-value-horizontal { - -webkit-transform: translate(50%, 50%); - transform: translate(50%, 50%); -} -.noUi-marker-horizontal.noUi-marker { - margin-left: -1px; - width: 2px; - height: 5px; -} -.noUi-marker-horizontal.noUi-marker-sub { - height: 10px; -} -.noUi-marker-horizontal.noUi-marker-large { - height: 15px; -} -/* Vertical layout; - * - */ -.noUi-pips-vertical { - padding: 0 10px; - height: 100%; - top: 0; - left: 100%; -} -.noUi-value-vertical { - -webkit-transform: translate(0, -50%); - transform: translate(0, -50%); - padding-left: 25px; -} -.noUi-rtl .noUi-value-vertical { - -webkit-transform: translate(0, 50%); - transform: translate(0, 50%); -} -.noUi-marker-vertical.noUi-marker { - width: 5px; - height: 2px; - margin-top: -1px; -} -.noUi-marker-vertical.noUi-marker-sub { - width: 10px; -} -.noUi-marker-vertical.noUi-marker-large { - width: 15px; -} -.noUi-tooltip { - display: block; - position: absolute; - border: 1px solid #D9D9D9; - border-radius: 3px; - background: #fff; - color: #000; - padding: 5px; - text-align: center; - white-space: nowrap; -} -.noUi-horizontal .noUi-tooltip { - -webkit-transform: translate(-50%, 0); - transform: translate(-50%, 0); - left: 50%; - bottom: 120%; -} -.noUi-vertical .noUi-tooltip { - -webkit-transform: translate(0, -50%); - transform: translate(0, -50%); - top: 50%; - right: 120%; -} - -.noUi-target { - & .noUi-handle { - border: 1px solid #333; - } - - &.slider-primary { - & .noUi-connect, - &.noUi-connect { - background-color: $brand-primary; - } - - & .noUi-handle { - border-color: $brand-primary; - } - } - - &.slider-info { - & .noUi-connect, - &.noUi-connect { - background-color: $brand-info; - } - - & .noUi-handle { - border-color: $brand-info; - } - } - &.slider-success { - & .noUi-connect, - &.noUi-connect { - background-color: $brand-success; - } - - & .noUi-handle { - border-color: $brand-success; - } - } - &.slider-warning { - & .noUi-connect, - &.noUi-connect { - background-color: $brand-warning; - } - - & .noUi-handle { - border-color: $brand-warning; - } - } - &.slider-danger { - & .noUi-connect, - &.noUi-connect { - background-color: $brand-danger; - } - - & .noUi-handle { - border-color: $brand-danger; - } - } - &.slider-rose { - & .noUi-connect, - &.noUi-connect { - background-color: $brand-rose; - } - - & .noUi-handle { - border-color: $brand-rose; - } - } -} diff --git a/src/assets/scss/plugins/_plugin-react-datetime.scss b/src/assets/scss/plugins/_plugin-react-datetime.scss deleted file mode 100644 index f4fc82129..000000000 --- a/src/assets/scss/plugins/_plugin-react-datetime.scss +++ /dev/null @@ -1,382 +0,0 @@ -/*! -* https://github.com/YouCanBookMe/react-datetime -*/ -.rdt { - position: relative; - .rdtPicker { - -webkit-transition: all 150ms linear; - -moz-transition: all 150ms linear; - -o-transition: all 150ms linear; - -ms-transition: all 150ms linear; - transition: all 150ms linear; - margin-top: -20px; - visibility: hidden; - display: block; - opacity: 0; - } - &.rdtOpen { - .rdtPicker { - opacity: 1; - visibility: visible; - margin-top: 0; - } - } - input.form-control { - border: 0; - background-image: linear-gradient(#9c27b0, #9c27b0), - linear-gradient(#d2d2d2, #d2d2d2); - background-size: 0 2px, 100% 1px; - background-repeat: no-repeat; - background-position: center bottom, center calc(100% - 1px); - background-color: rgba(0, 0, 0, 0); - transition: background 0s ease-out; - float: none; - box-shadow: none; - border-radius: 0; - font-weight: 400; - width: 100%; - height: 36px; - padding: 7px 0; - font-size: 14px; - font-family: "Roboto", "Helvetica", "Arial", sans-serif; - font-weight: 400; - line-height: 1.42857; - display: block; - width: 100%; - color: #555; - } - input.form-control:focus { - outline: none; - background-image: linear-gradient(#9c27b0, #9c27b0), - linear-gradient(#d2d2d2, #d2d2d2); - background-size: 100% 2px, 100% 1px; - box-shadow: none; - transition-duration: 0.3s; - } -} -.rdtPicker { - display: none; - position: absolute; - width: 260px; - padding: 4px; - margin-top: 1px; - z-index: 99999 !important; - background: #fff; - border-radius: 0.125rem; - box-shadow: 0px 10px 50px 0px rgba(0, 0, 0, 0.2); - -webkit-background-clip: padding-box; - background-clip: padding-box; - min-width: 160px; - - &:before { - display: inline-block; - position: absolute; - width: 0; - height: 0; - vertical-align: middle; - content: ""; - top: -5px; - left: 10px; - right: auto; - color: #ffffff; - border-bottom: 0.4em solid; - border-right: 0.4em solid transparent; - border-left: 0.4em solid transparent; - } - &:after { - border-bottom: 0.4em solid #ffffff; - border-right: 0.4em solid transparent; - border-left: 0.4em solid transparent; - content: ""; - display: inline-block; - position: absolute; - top: -5px; - left: 10px; - } -} - -.rdtPicker { - display: block; - top: 40px; -} -.rdtStatic .rdtPicker { - box-shadow: none; - position: static; -} - -.rdtPicker .rdtTimeToggle { - text-align: center; - padding: 5px; - border-radius: 4px; -} - -.rdtPicker table { - width: 100%; - margin: 0; - border-color: $white-color !important; - border-collapse: collapse; -} -.rdtPicker td, -.rdtPicker th { - text-align: center; - padding: 1px; -} -.rdtPicker td { - cursor: pointer; -} -.rdtDay { - height: 30px; - line-height: 33px; - width: 30px; - text-align: center; - padding: 0px; - border-radius: 50%; - &.rdtToday.rdtActive, - &.rdtActive, - &.rdtActive:hover { - background-color: $brand-primary !important; - color: $white-color; - @include shadow-big-color($brand-primary); - } -} -.rdtDays { - tr { - .dow { - border-bottom: 1px solid #e3e3e3; - text-align: center; - font-size: 12px; - text-transform: uppercase; - font-weight: 400; - padding-bottom: 5px; - padding-top: 10px; - } - .rdtOld, - .rdtNew { - color: $grey-a400; - } - } -} - -.rdtPicker td.rdtDay:hover, -.rdtPicker td.rdtHour:hover, -.rdtPicker td.rdtMinute:hover, -.rdtPicker td.rdtSecond:hover, -.rdtPicker .rdtTimeToggle:hover { - background: #eeeeee; - cursor: pointer; -} -.rdtPicker td.rdtToday { - position: relative; -} -.rdtPicker td.rdtActive.rdtToday:before { - border-bottom-color: #fff; -} -.rdtPicker td.rdtDisabled, -.rdtPicker td.rdtDisabled:hover { - background: none; - color: #999999; - cursor: not-allowed; -} - -.rdtPicker td span.rdtOld { - color: #999999; -} -.rdtPicker td span.rdtDisabled, -.rdtPicker td span.rdtDisabled:hover { - background: none; - color: #999999; - cursor: not-allowed; -} -.rdtPicker .dow { - width: 14.2857%; - border-bottom: none; -} -.rdtPicker th.rdtSwitch { - width: 50px; - padding: 5px; - border-radius: 4px; -} -.rdtPicker th.rdtNext, -.rdtPicker th.rdtPrev { - font-size: 21px; - vertical-align: top; - border-radius: 50%; - line-height: 33px; -} - -.rdtPicker { - .dow, - th.rdtSwitch, - th.rdtNext, - th.rdtPrev, - .rdtTimeToggle { - color: $gray-700; - } -} - -.rdtPicker { - .rdtTimeToggle { - color: $brand-primary; - } -} - -.rdtPicker { - .rdtTime { - th.rdtSwitch { - color: $brand-primary; - } - } -} - -.rdtPrev span, -.rdtNext span { - display: block; - -webkit-touch-callout: none; /* iOS Safari */ - -webkit-user-select: none; /* Chrome/Safari/Opera */ - -khtml-user-select: none; /* Konqueror */ - -moz-user-select: none; /* Firefox */ - -ms-user-select: none; /* Internet Explorer/Edge */ - user-select: none; -} - -.rdtPicker th.rdtDisabled, -.rdtPicker th.rdtDisabled:hover { - background: none; - color: #999999; - cursor: not-allowed; -} -.rdtPicker thead tr:first-child th { - cursor: pointer; -} -.rdtPicker thead tr:first-child th:hover { - background: #eeeeee; -} - -.rdtPicker button { - border: none; - background: none; - cursor: pointer; -} -.rdtPicker button:hover { - background-color: #eee; -} - -.rdtPicker thead button { - width: 100%; - height: 100%; -} - -td.rdtMonth, -td.rdtYear { - height: 50px; - width: 25%; - cursor: pointer; -} -td.rdtMonth:hover, -td.rdtYear:hover { - background: #eee; -} - -.rdtCounters { - display: inline-block; -} - -.rdtCounters { - > div { - float: left; - width: 40px; - font-weight: inherit; - margin: 3px; - border-radius: 50%; - } - .rdtCounterSeparator { - width: 0; - border: 1px solid transparent; - } -} - -.rdtCounter { - height: 100px; -} - -.rdtCounter { - width: 40px; - .rdtCount { - padding: 7px; - height: 40px; - border: 1px solid transparent; - } -} -.rdtCounters { - .rdtCounter:last-child { - .rdtCount { - color: $brand-primary; - border-radius: 50%; - border: 1px solid $brand-primary; - } - } -} - -.rdtCounterSeparator { - padding: 7px; - line-height: 100px; -} -.rdtCounter .rdtBtn { - line-height: 40px; - cursor: pointer; - display: block; - border-radius: 50%; - color: $brand-primary; - -webkit-transition: all 60ms ease-in; - -moz-transition: all 60ms ease-in; - -o-transition: all 60ms ease-in; - -ms-transition: all 60ms ease-in; - transition: all 60ms ease-in; - - -webkit-touch-callout: none; /* iOS Safari */ - -webkit-user-select: none; /* Chrome/Safari/Opera */ - -khtml-user-select: none; /* Konqueror */ - -moz-user-select: none; /* Firefox */ - -ms-user-select: none; /* Internet Explorer/Edge */ - user-select: none; -} -.rdtCounter .rdtBtn:hover { - background: #eee; - // color: #797979; -} -.rdtCounter .rdtCount { - font-size: inherit; - line-height: 25px; -} - -.rdtMilli { - vertical-align: middle; - padding-left: 8px; - width: 48px; -} - -.rdtMilli input { - width: 100%; - font-size: inherit; - margin-top: 37px; -} -.rdtMonths, -.rdtYears { - padding-bottom: 10px; - .rdtMonth, - .rdtYear { - display: inline-block; - width: 56px; - height: 56px; - line-height: 56px; - margin: 3px 3px; - cursor: pointer; - border-radius: 50%; - text-align: center; - - &.rdtActive { - background-color: $brand-primary !important; - color: $white-color; - } - } -} diff --git a/src/assets/scss/plugins/_plugin-react-image-gallery.scss b/src/assets/scss/plugins/_plugin-react-image-gallery.scss deleted file mode 100644 index 9587854d8..000000000 --- a/src/assets/scss/plugins/_plugin-react-image-gallery.scss +++ /dev/null @@ -1,85 +0,0 @@ -@import "node_modules/react-image-gallery/styles/scss/image-gallery.scss"; - -.image-gallery-left-nav, -.image-gallery-right-nav { - position: absolute; - cursor: pointer; - z-index: 100; - opacity: 0.5; - bottom: -40%; - top: auto; - padding: 0 !important; - color: #fff; - font-size: 5em; - outline: none; - background-color: transparent; - border: 0; - transform: translateY(-50%); - &:before, - &:hover:before { - color: #3c4858; - text-shadow: none; - } - &:before { - font-family: "Material Icons"; - font-weight: normal; - font-style: normal; - font-size: 24px; - line-height: 1; - letter-spacing: normal; - text-transform: none; - display: inline-block; - white-space: nowrap; - word-wrap: normal; - direction: ltr; - -webkit-font-feature-settings: "liga"; - -webkit-font-smoothing: antialiased; - } -} -.image-gallery-left-nav { - left: -20px; - &::before { - content: "chevron_left"; - } -} -.image-gallery-right-nav { - right: -20px; - &::before { - content: "chevron_right"; - } -} -.image-gallery-thumbnail { - margin: 0px; - padding: 0px; - cursor: pointer; - position: relative; - line-height: 0px; - width: 125px; - border: none !important; - & + .image-gallery-thumbnail { - margin: 0 !important; - } - img { - max-width: 100%; - cursor: pointer; - position: relative; - margin-top: 10px; - margin-bottom: 10px; - } -} -.image-gallery-thumbnail-label { - display: none !important; -} -.image-gallery-thumbnails { - padding: 0 !important; - overflow: hidden; - width: 100%; -} -.image-gallery-thumbnails-container { - position: relative; - // width: 99999px; - margin: 0px; - padding: 0px; - list-style-type: none; - text-align: center; -} diff --git a/src/assets/scss/plugins/_plugin-react-slick.scss b/src/assets/scss/plugins/_plugin-react-slick.scss deleted file mode 100644 index 0643a072e..000000000 --- a/src/assets/scss/plugins/_plugin-react-slick.scss +++ /dev/null @@ -1,254 +0,0 @@ -/* Slider */ -.slick-slider { - position: relative; - - display: block; - box-sizing: border-box; - - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - - -webkit-touch-callout: none; - -khtml-user-select: none; - -ms-touch-action: pan-y; - touch-action: pan-y; - -webkit-tap-highlight-color: transparent; - - @media (min-width: 768px) { - .slick-caption { - display: block !important; - } - } - - .slick-caption { - padding-bottom: 45px; - position: absolute; - right: 15%; - bottom: 20px; - left: 15%; - z-index: 10; - padding-top: 20px; - color: #ffffff; - text-align: center; - z-index: 3; - display: none; - } - .slick-slide { - > div:first-child { - position: relative; - } - } - .slick-icons { - position: relative; - top: 5px; - } - .slick-image { - width: 100% !important; - display: inline-flex !important; - } -} - -.slick-list { - position: relative; - - display: block; - overflow: hidden; - - margin: 0; - padding: 0; -} -.slick-list:focus { - outline: none; -} -.slick-list.dragging { - cursor: pointer; - cursor: hand; -} - -.slick-slider .slick-track, -.slick-slider .slick-list { - -webkit-transform: translate3d(0, 0, 0); - -moz-transform: translate3d(0, 0, 0); - -ms-transform: translate3d(0, 0, 0); - -o-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); -} - -.slick-track { - position: relative; - top: 0; - left: 0; - - display: block; - margin-left: auto; - margin-right: auto; -} -.slick-track:before, -.slick-track:after { - display: table; - - content: ""; -} -.slick-track:after { - clear: both; -} -.slick-loading .slick-track { - visibility: hidden; -} - -.slick-slide { - display: none; - float: left; - - height: 100%; - min-height: 1px; -} -[dir="rtl"] .slick-slide { - float: right; -} -.slick-slide img { - display: block; -} -.slick-slide.slick-loading img { - display: none; -} -.slick-slide.dragging img { - pointer-events: none; -} -.slick-initialized .slick-slide { - display: block; -} -.slick-loading .slick-slide { - visibility: hidden; -} -.slick-vertical .slick-slide { - display: block; - - height: auto; - - border: 1px solid transparent; -} -.slick-arrow.slick-hidden { - display: none; -} -button.slick-arrow.slick-prev, -button.slick-arrow.slick-next { - font-size: 0; - line-height: 0; - position: absolute; - top: 50%; - display: block; - // width: 20px; - height: 100%; - padding: 0; - -ms-transform: translateY(-50%); - transform: translateY(-50%); - cursor: pointer; - border: none; - color: transparent; - outline: none; - background: transparent; - width: 15%; - z-index: 2; - opacity: 0.5; -} -.slick-prev { - left: 0; - &::before { - content: "\f053"; - font-weight: 600; - font-family: Font Awesome\ 5 Free; - -moz-osx-font-smoothing: grayscale; - -webkit-font-smoothing: antialiased; - display: inline-block; - font-style: normal; - font-variant: normal; - text-rendering: auto; - line-height: 1; - color: white; - font-size: 30px; - width: 100%; - } -} -.slick-next { - right: 0; - &::before { - content: "\f054"; - font-weight: 600; - font-family: Font Awesome\ 5 Free; - -moz-osx-font-smoothing: grayscale; - -webkit-font-smoothing: antialiased; - display: inline-block; - font-style: normal; - font-variant: normal; - text-rendering: auto; - line-height: 1; - color: #fff; - font-size: 30px; - width: 100%; - } -} -.slick-list { - z-index: 1; -} -.slick-dots { - margin-top: 0; - margin-bottom: 1rem; - position: absolute; - bottom: 5px; - // margin-right: 15%; - // margin-left: 15%; - width: 100%; - padding: 0; - list-style: none; - text-align: center; - z-index: 3; -} -.slick-dots li, -.slick-dots li button { - width: 20px; - height: 20px; - cursor: pointer; -} -.slick-dots li { - position: relative; - display: inline-block; - margin: 0 5px; - padding: 0; -} -.slick-dots li button { - font-size: 0; - line-height: 0; - display: block; - padding: 5px; - color: transparent; - border: 0; - outline: none; - background: transparent; - &::before { - position: absolute; - top: 0; - left: 0; - width: 10px; - height: 10px; - content: "\2022"; - text-align: center; - opacity: 1; - background-color: #fff; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), - 0 3px 1px -2px rgba(0, 0, 0, 0.12), 0 1px 5px 0 rgba(0, 0, 0, 0.2); - border-radius: 2px; - transition: all 300ms linear; - } -} -.slick-dots li.slick-active button:before { - width: 15px; - height: 15px; - box-shadow: 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12), - 0 2px 4px -1px rgba(0, 0, 0, 0.2); - top: -3px; -} diff --git a/src/assets/scss/plugins/_plugin-react-tagsinput.scss b/src/assets/scss/plugins/_plugin-react-tagsinput.scss deleted file mode 100644 index 04e67e483..000000000 --- a/src/assets/scss/plugins/_plugin-react-tagsinput.scss +++ /dev/null @@ -1,123 +0,0 @@ -// Based on the original react-tagsinput styles - -.react-tagsinput { - display: inline-block; - padding: 4px 6px; - max-width: 100%; - line-height: 22px; -} - -.react-tagsinput-tag { - cursor: pointer; - margin: 5px 3px 5px 0; - position: relative; - padding: 3px 8px; - border-radius: 12px; - color: #ffffff; - font-weight: 500; - font-size: 0.75em; - text-transform: uppercase; - display: inline-block; - line-height: 1.5em; - padding-left: 0.8em; -} - -.react-tagsinput-remove { - cursor: pointer; - font-weight: bold; -} - -.react-tagsinput-tag a::before { - font-family: Font Awesome\ 5 Free; - content: "\f00d"; - padding: 0px 2px; - font-weight: 900; -} -.react-tagsinput-tag a { - cursor: pointer; - position: absolute; - top: 3px; - right: 0px; - opacity: 0; - background-color: transparent; - color: #ffffff; -} - -.react-tagsinput-input { - background: transparent; - border: 0; - color: #777; - font-family: sans-serif; - font-size: 13px; - font-weight: 400; - margin-bottom: 6px; - margin-top: 1px; - outline: none; - padding: 5px; - width: 80px; -} - -.react-tagsinput { - .react-tagsinput-tag { - -webkit-transition: all 300ms ease 0s; - -moz-transition: all 300ms ease 0s; - -o-transition: all 300ms ease 0s; - -ms-transition: all 300ms ease 0s; - transition: all 300ms ease 0s; - - &:hover { - padding-right: 22px; - - a { - opacity: 1; - padding-right: 4px; - background-color: transparent; - color: #ffffff; - } - } - - // @include badges-color($gray-light); - // - // &.primary{ - // @include badges-color($brand-primary); - // } - // &.info{ - // @include badges-color($brand-info); - // } - // &.success{ - // @include badges-color($brand-success); - // } - // &.warning{ - // @include badges-color($brand-warning); - // } - // &.danger{ - // @include badges-color($brand-danger); - // } - // .rose{ - // @include badges-color($brand-rose); - // } - - &.primary { - background-color: $brand-primary; - } - &.info { - background-color: $brand-info; - } - &.success { - background-color: $brand-success; - } - &.warning { - background-color: $brand-warning; - } - &.danger { - background-color: $brand-danger; - } - &.rose { - background-color: $brand-rose; - } - &.default { - background-color: $gray-light; - } - background-color: $gray-light; - } -} diff --git a/src/common/networkSetup.js b/src/common/networkSetup.js new file mode 100644 index 000000000..a30afd5a1 --- /dev/null +++ b/src/common/networkSetup.js @@ -0,0 +1,193 @@ +export const networkSettings = { + 56: { + chainId: `0x${parseInt(56, 10).toString(16)}`, + chainName: 'BSC Mainnet', + nativeCurrency: { + name: 'Binance Coin', + symbol: 'BNB', + decimals: 18, + }, + rpcUrls: ['https://bsc-dataseed.binance.org'], + blockExplorerUrls: ['https://bscscan.com/'], + }, + 128: { + chainId: `0x${parseInt(128, 10).toString(16)}`, + chainName: 'HECO Mainnet', + nativeCurrency: { + name: 'Huobi Token', + symbol: 'HT', + decimals: 18, + }, + rpcUrls: ['https://http-mainnet.hecochain.com'], + blockExplorerUrls: ['https://hecoinfo.com/'], + }, + 43114: { + chainId: `0x${parseInt(43114, 10).toString(16)}`, + chainName: 'Avalanche C-Chain', + nativeCurrency: { + name: 'AVAX', + symbol: 'AVAX', + decimals: 18, + }, + rpcUrls: ['https://api.avax.network/ext/bc/C/rpc'], + blockExplorerUrls: ['https://snowtrace.io/'], + }, + 137: { + chainId: `0x${parseInt(137, 10).toString(16)}`, + chainName: 'Polygon Mainnet', + nativeCurrency: { + name: 'MATIC', + symbol: 'MATIC', + decimals: 18, + }, + rpcUrls: ['https://polygon-rpc.com'], + blockExplorerUrls: ['https://polygonscan.com/'], + }, + 250: { + chainId: `0x${parseInt(250, 10).toString(16)}`, + chainName: 'Fantom Opera', + nativeCurrency: { + name: 'FTM', + symbol: 'FTM', + decimals: 18, + }, + rpcUrls: ['https://rpc.ftm.tools'], + blockExplorerUrls: ['https://ftmscan.com/'], + }, + 1666600000: { + chainId: `0x${parseInt(1666600000, 10).toString(16)}`, + chainName: 'Harmony One', + nativeCurrency: { + name: 'ONE', + symbol: 'ONE', + decimals: 18, + }, + rpcUrls: ['https://api.s0.t.hmny.io/'], + blockExplorerUrls: ['https://explorer.harmony.one/'], + }, + 42161: { + chainId: `0x${parseInt(42161, 10).toString(16)}`, + chainName: 'Arbitrum One', + nativeCurrency: { + name: 'ETH', + symbol: 'ETH', + decimals: 18, + }, + rpcUrls: ['https://arb1.arbitrum.io/rpc'], + blockExplorerUrls: ['https://arbiscan.io/'], + }, + 42220: { + chainId: `0x${parseInt(42220, 10).toString(16)}`, + chainName: 'Celo', + nativeCurrency: { + name: 'CELO', + symbol: 'CELO', + decimals: 18, + }, + rpcUrls: ['https://forno.celo.org'], + blockExplorerUrls: ['https://explorer.celo.org/'], + }, + 1285: { + chainId: `0x${parseInt(1285, 10).toString(16)}`, + chainName: 'Moonriver', + nativeCurrency: { + name: 'Moonriver', + symbol: 'MOVR', + decimals: 18, + }, + rpcUrls: ['https://rpc.moonriver.moonbeam.network'], + blockExplorerUrls: ['https://moonriver.moonscan.io/'], + }, + 25: { + chainId: `0x${parseInt(25, 10).toString(16)}`, + chainName: 'Cronos', + nativeCurrency: { + name: 'CRO', + symbol: 'CRO', + decimals: 18, + }, + rpcUrls: ['https://evm.cronos.org'], + blockExplorerUrls: ['https://cronos.crypto.org/explorer/'], + }, + 122: { + chainId: `0x${parseInt(122, 10).toString(16)}`, + chainName: 'Fuse', + nativeCurrency: { + name: 'FUSE', + symbol: 'FUSE', + decimals: 18, + }, + rpcUrls: ['https://rpc.fuse.io'], + blockExplorerUrls: ['https://explorer.fuse.io/'], + }, + 1088: { + chainId: `0x${parseInt(1088, 10).toString(16)}`, + chainName: 'Metis', + nativeCurrency: { + name: 'METIS', + symbol: 'METIS', + decimals: 18, + }, + rpcUrls: ['https://andromeda.metis.io/?owner=1088'], + blockExplorerUrls: ['https://andromeda-explorer.metis.io/'], + }, + 1313161554: { + chainId: `0x${parseInt(1313161554, 10).toString(16)}`, + chainName: 'Aurora Mainnet', + nativeCurrency: { + name: 'ETH', + symbol: 'ETH', + decimals: 18, + }, + rpcUrls: ['https://mainnet.aurora.dev'], + blockExplorerUrls: ['https://explorer.mainnet.aurora.dev/'], + }, + 1284: { + chainId: `0x${parseInt(1284, 10).toString(16)}`, + chainName: 'Moonbeam', + nativeCurrency: { + name: 'GLMR', + symbol: 'GLMR', + decimals: 18, + }, + rpcUrls: ['https://rpc.api.moonbeam.network'], + blockExplorerUrls: ['https://moonscan.io/'], + }, + 42262: { + chainId: `0x${parseInt(42262, 10).toString(16)}`, + chainName: 'Oasis Emerald', + nativeCurrency: { + name: 'Oasis Protocol', + symbol: 'ROSE', + decimals: 18, + }, + rpcUrls: ['https://emerald.oasis.dev'], + blockExplorerUrls: ['https://explorer.emerald.oasis.dev/'], + }, +}; + +export const networkSetup = chainId => { + return new Promise((resolve, reject) => { + const provider = window.ethereum; + if (provider) { + if (networkSettings.hasOwnProperty(chainId)) { + provider + .request({ + method: 'wallet_addEthereumChain', + params: [networkSettings[chainId]], + }) + .then(resolve) + .catch(reject); + } else { + reject(new Error(`No network settings configured for chainId: '${chainId}'`)); + } + } else { + reject(new Error(`window.ethereum is '${typeof provider}'`)); + } + }); +}; + +export const getRpcUrl = () => { + const settings = networkSettings[window.REACT_APP_NETWORK_ID]; + return settings.rpcUrls[~~(settings.rpcUrls.length * Math.random())]; +}; diff --git a/src/common/rootReducer.js b/src/common/rootReducer.js index f7cc2cbb3..30d835e0c 100644 --- a/src/common/rootReducer.js +++ b/src/common/rootReducer.js @@ -1,12 +1,9 @@ import { combineReducers } from 'redux'; -// import { routerReducer } from 'react-router-redux'; -import { connectRouter } from 'connected-react-router' +import { connectRouter } from 'connected-react-router'; import history from './history'; import homeReducer from 'features/home/redux/reducer'; import vaultReducer from 'features/vault/redux/reducer'; import stakeReducer from 'features/stake/redux/reducer'; -import farmReducer from 'features/farm/redux/reducer'; -import swapReducer from 'features/swap/redux/reducer'; import commonReducer from 'features/common/redux/reducer'; // NOTE 1: DO NOT CHANGE the 'reducerMap' name and the declaration pattern. @@ -19,8 +16,6 @@ const reducerMap = { home: homeReducer, vault: vaultReducer, stake: stakeReducer, - farm: farmReducer, - swap: swapReducer, common: commonReducer, }; diff --git a/src/common/routeConfig.js b/src/common/routeConfig.js index b59c9fa6b..949f398f7 100644 --- a/src/common/routeConfig.js +++ b/src/common/routeConfig.js @@ -1,50 +1,18 @@ -import { App } from '../features/home'; -import { PageNotFound } from '../features/common'; -import homeRoute from '../features/home/route'; -import vaultRoute from '../features/vault/route'; -import stakeRoute from '../features/stake/route'; -import farmRoute from '../features/farm/route'; -import commonRoute from '../features/common/route'; -import zapRoute from '../features/swap/route'; -import _ from 'lodash'; +import { PoolPage, StakePage } from 'features/stake'; +import { VaultPage } from 'features/vault'; +import { App, HomePage } from '../features/home'; -// NOTE: DO NOT CHANGE the 'childRoutes' name and the declaration pattern. -// This is used for Rekit cmds to register routes config for new features, and remove config when remove features, etc. -const childRoutes = [ - homeRoute, - vaultRoute, - stakeRoute, - commonRoute, - farmRoute - // zapRoute, +const routes = [ + { + path: '/:chain', + component: App, + childRoutes: [ + { path: '/:chain', component: HomePage, isIndex: true }, + { path: '/:chain/stake', component: StakePage }, + { path: '/:chain/stake/pool/:id', component: PoolPage }, + { path: '/:chain/vault/:vaultId', component: VaultPage }, + ], + }, ]; -const routes = [{ - path: '/', - component: App, - childRoutes: [ - ...childRoutes, - { path: '*', name: 'Page not found', component: PageNotFound }, - ].filter(r => r.component || (r.childRoutes && r.childRoutes.length > 0)), -}]; - -// Handle isIndex property of route config: -// Dupicate it and put it as the first route rule. -function handleIndexRoute(route) { - if (!route.childRoutes || !route.childRoutes.length) { - return; - } - - const indexRoute = _.find(route.childRoutes, (child => child.isIndex)); - if (indexRoute) { - const first = { ...indexRoute }; - first.path = ''; - first.exact = true; - first.autoIndexRoute = true; // mark it so that the simple nav won't show it. - route.childRoutes.unshift(first); - } - route.childRoutes.forEach(handleIndexRoute); -} - -routes.forEach(handleIndexRoute); export default routes; diff --git a/src/common/store.js b/src/common/store.js index 9bd216318..bf537dfd1 100644 --- a/src/common/store.js +++ b/src/common/store.js @@ -13,11 +13,6 @@ let devToolsExtension = f => f; /* istanbul ignore if */ if (process.env.NODE_ENV === 'development') { - const { createLogger } = require('redux-logger'); - - const logger = createLogger({ collapsed: true }); - middlewares.push(logger); - if (window.__REDUX_DEVTOOLS_EXTENSION__) { devToolsExtension = window.__REDUX_DEVTOOLS_EXTENSION__(); } @@ -27,10 +22,7 @@ function configureStore(initialState) { const store = createStore( rootReducer, initialState, - compose( - applyMiddleware(...middlewares), - devToolsExtension, - ), + compose(applyMiddleware(...middlewares), devToolsExtension) ); /* istanbul ignore if */ diff --git a/src/components/Accordion/Accordion.js b/src/components/Accordion/Accordion.js deleted file mode 100644 index b3b8a01a1..000000000 --- a/src/components/Accordion/Accordion.js +++ /dev/null @@ -1,109 +0,0 @@ -import React from "react"; -// nodejs library to set properties for components -import PropTypes from "prop-types"; -// @material-ui/core components -import { makeStyles } from "@material-ui/core/styles"; -import ExpansionPanel from "@material-ui/core/ExpansionPanel"; -import ExpansionPanelSummary from "@material-ui/core/ExpansionPanelSummary"; -import ExpansionPanelDetails from "@material-ui/core/ExpansionPanelDetails"; - -// @material-ui/icons -import ExpandMore from "@material-ui/icons/ExpandMore"; - -import styles from "assets/jss/material-kit-pro-react/components/accordionStyle.js"; - -const useStyles = makeStyles(styles); - -export default function Accordion(props) { - const [active, setActive] = React.useState( - props.active.length === undefined ? [props.active] : props.active - ); - const [single] = React.useState( - props.active.length === undefined ? true : false - ); - const handleChange = panel => () => { - let newArray; - - if (single) { - if (active[0] === panel) { - newArray = []; - } else { - newArray = [panel]; - } - } else { - if (active.indexOf(panel) === -1) { - newArray = [...active, panel]; - } else { - newArray = [...active]; - newArray.splice(active.indexOf(panel), 1); - } - } - setActive(newArray); - }; - const { collapses, activeColor } = props; - const classes = useStyles(); - return ( -
- {collapses.map((prop, key) => { - return ( - - } - classes={{ - root: `${classes.expansionPanelSummary} ${ - classes[activeColor + "ExpansionPanelSummary"] - }`, - expanded: `${classes.expansionPanelSummaryExpaned} ${ - classes[activeColor + "ExpansionPanelSummaryExpaned"] - }`, - content: classes.expansionPanelSummaryContent, - expandIcon: classes.expansionPanelSummaryExpandIcon - }} - > -

{prop.title}

-
- - {prop.content} - -
- ); - })} -
- ); -} - -Accordion.defaultProps = { - active: -1, - activeColor: "primary" -}; - -Accordion.propTypes = { - // index of the default active collapse - active: PropTypes.oneOfType([ - PropTypes.number, - PropTypes.arrayOf(PropTypes.number) - ]), - collapses: PropTypes.arrayOf( - PropTypes.shape({ - title: PropTypes.string, - content: PropTypes.node - }) - ).isRequired, - activeColor: PropTypes.oneOf([ - "primary", - "secondary", - "warning", - "danger", - "success", - "info", - "rose" - ]) -}; diff --git a/src/components/Badge/Badge.js b/src/components/Badge/Badge.js deleted file mode 100644 index 15253d142..000000000 --- a/src/components/Badge/Badge.js +++ /dev/null @@ -1,41 +0,0 @@ -import React from "react"; -// nodejs library that concatenates classes -import classNames from "classnames"; -// nodejs library to set properties for components -import PropTypes from "prop-types"; - -// @material-ui/core components -import { makeStyles } from "@material-ui/core/styles"; - -import styles from "assets/jss/material-kit-pro-react/components/badgeStyle.js"; - -const useStyles = makeStyles(styles); - -export default function Badge(props) { - const { color, children, className } = props; - const classes = useStyles(); - const badgeClasses = classNames({ - [classes.badge]: true, - [classes[color]]: true, - [className]: className !== undefined - }); - return {children}; -} - -Badge.defaultProps = { - color: "gray" -}; - -Badge.propTypes = { - color: PropTypes.oneOf([ - "primary", - "warning", - "danger", - "success", - "info", - "rose", - "gray" - ]), - className: PropTypes.string, - children: PropTypes.node -}; diff --git a/src/components/Card/Card.js b/src/components/Card/Card.js deleted file mode 100644 index 65d215b50..000000000 --- a/src/components/Card/Card.js +++ /dev/null @@ -1,71 +0,0 @@ -import React from "react"; -// nodejs library that concatenates classes -import classNames from "classnames"; -// nodejs library to set properties for components -import PropTypes from "prop-types"; -// @material-ui/core components -import { makeStyles } from "@material-ui/core/styles"; -// @material-ui/icons - -// core components -import styles from "assets/jss/material-kit-pro-react/components/cardStyle.js"; - -const useStyles = makeStyles(styles); - -export default function Card(props) { - const { - className, - children, - plain, - profile, - blog, - raised, - background, - pricing, - color, - product, - testimonial, - ...rest - } = props; - const classes = useStyles(); - const cardClasses = classNames({ - [classes.card]: true, - [classes.cardPlain]: plain, - [classes.cardProfile]: profile || testimonial, - [classes.cardBlog]: blog, - [classes.cardRaised]: raised, - [classes.cardBackground]: background, - [classes.cardPricingColor]: - (pricing && color !== undefined) || (pricing && background !== undefined), - [classes[color]]: color, - [classes.cardPricing]: pricing, - [classes.cardProduct]: product, - [className]: className !== undefined - }); - return ( -
- {children} -
- ); -} - -Card.propTypes = { - className: PropTypes.string, - plain: PropTypes.bool, - profile: PropTypes.bool, - blog: PropTypes.bool, - raised: PropTypes.bool, - background: PropTypes.bool, - pricing: PropTypes.bool, - testimonial: PropTypes.bool, - color: PropTypes.oneOf([ - "primary", - "info", - "success", - "warning", - "danger", - "rose" - ]), - product: PropTypes.bool, - children: PropTypes.node -}; diff --git a/src/components/Card/CardAvatar.js b/src/components/Card/CardAvatar.js deleted file mode 100644 index 93e11b3de..000000000 --- a/src/components/Card/CardAvatar.js +++ /dev/null @@ -1,48 +0,0 @@ -import React from "react"; -// nodejs library that concatenates classes -import classNames from "classnames"; -// nodejs library to set properties for components -import PropTypes from "prop-types"; -// @material-ui/core components -import { makeStyles } from "@material-ui/core/styles"; -// @material-ui/icons -// core components - -import styles from "assets/jss/material-kit-pro-react/components/cardAvatarStyle.js"; - -const useStyles = makeStyles(styles); - -export default function CardAvatar(props) { - const { - children, - className, - plain, - profile, - testimonial, - testimonialFooter, - ...rest - } = props; - const classes = useStyles(); - const cardAvatarClasses = classNames({ - [classes.cardAvatar]: true, - [classes.cardAvatarProfile]: profile, - [classes.cardAvatarPlain]: plain, - [classes.cardAvatarTestimonial]: testimonial, - [classes.cardAvatarTestimonialFooter]: testimonialFooter, - [className]: className !== undefined - }); - return ( -
- {children} -
- ); -} - -CardAvatar.propTypes = { - children: PropTypes.node.isRequired, - className: PropTypes.string, - profile: PropTypes.bool, - plain: PropTypes.bool, - testimonial: PropTypes.bool, - testimonialFooter: PropTypes.bool -}; diff --git a/src/components/Card/CardBody.js b/src/components/Card/CardBody.js deleted file mode 100644 index bb28f42ae..000000000 --- a/src/components/Card/CardBody.js +++ /dev/null @@ -1,54 +0,0 @@ -import React from "react"; -// nodejs library that concatenates classes -import classNames from "classnames"; -// nodejs library to set properties for components -import PropTypes from "prop-types"; -// @material-ui/core components -import { makeStyles } from "@material-ui/core/styles"; -// @material-ui/icons - -// core components -import styles from "assets/jss/material-kit-pro-react/components/cardBodyStyle.js"; - -const useStyles = makeStyles(styles); - -export default function CardBody(props) { - const { - className, - children, - background, - plain, - formHorizontal, - pricing, - signup, - color, - ...rest - } = props; - const classes = useStyles(); - const cardBodyClasses = classNames({ - [classes.cardBody]: true, - [classes.cardBodyBackground]: background, - [classes.cardBodyPlain]: plain, - [classes.cardBodyFormHorizontal]: formHorizontal, - [classes.cardPricing]: pricing, - [classes.cardSignup]: signup, - [classes.cardBodyColor]: color, - [className]: className !== undefined - }); - return ( -
- {children} -
- ); -} - -CardBody.propTypes = { - className: PropTypes.string, - background: PropTypes.bool, - plain: PropTypes.bool, - formHorizontal: PropTypes.bool, - pricing: PropTypes.bool, - signup: PropTypes.bool, - color: PropTypes.bool, - children: PropTypes.node -}; diff --git a/src/components/Card/CardFooter.js b/src/components/Card/CardFooter.js deleted file mode 100644 index 4314e9693..000000000 --- a/src/components/Card/CardFooter.js +++ /dev/null @@ -1,48 +0,0 @@ -import React from "react"; -// nodejs library that concatenates classes -import classNames from "classnames"; -// nodejs library to set properties for components -import PropTypes from "prop-types"; -// @material-ui/core components -import { makeStyles } from "@material-ui/core/styles"; -// @material-ui/icons - -// core components -import styles from "assets/jss/material-kit-pro-react/components/cardFooterStyle.js"; - -const useStyles = makeStyles(styles); - -export default function CardFooter(props) { - const { - className, - children, - plain, - profile, - pricing, - testimonial, - ...rest - } = props; - const classes = useStyles(); - const cardFooterClasses = classNames({ - [classes.cardFooter]: true, - [classes.cardFooterPlain]: plain, - [classes.cardFooterProfile]: profile || testimonial, - [classes.cardFooterPricing]: pricing, - [classes.cardFooterTestimonial]: testimonial, - [className]: className !== undefined - }); - return ( -
- {children} -
- ); -} - -CardFooter.propTypes = { - className: PropTypes.string, - plain: PropTypes.bool, - profile: PropTypes.bool, - pricing: PropTypes.bool, - testimonial: PropTypes.bool, - children: PropTypes.node -}; diff --git a/src/components/Card/CardHeader.js b/src/components/Card/CardHeader.js deleted file mode 100644 index 9a36ef769..000000000 --- a/src/components/Card/CardHeader.js +++ /dev/null @@ -1,61 +0,0 @@ -import React from "react"; -// nodejs library that concatenates classes -import classNames from "classnames"; -// nodejs library to set properties for components -import PropTypes from "prop-types"; -// @material-ui/core components -import { makeStyles } from "@material-ui/core/styles"; -// @material-ui/icons - -// core components -import styles from "assets/jss/material-kit-pro-react/components/cardHeaderStyle.js"; - -const useStyles = makeStyles(styles); - -export default function CardHeader(props) { - const { - className, - children, - color, - plain, - image, - contact, - signup, - noShadow, - ...rest - } = props; - const classes = useStyles(); - const cardHeaderClasses = classNames({ - [classes.cardHeader]: true, - [classes[color + "CardHeader"]]: color, - [classes.cardHeaderPlain]: plain, - [classes.cardHeaderImage]: image, - [classes.cardHeaderContact]: contact, - [classes.cardHeaderSignup]: signup, - [classes.noShadow]: noShadow, - [className]: className !== undefined - }); - return ( -
- {children} -
- ); -} - -CardHeader.propTypes = { - className: PropTypes.string, - color: PropTypes.oneOf([ - "warning", - "success", - "danger", - "info", - "primary", - "rose" - ]), - plain: PropTypes.bool, - image: PropTypes.bool, - contact: PropTypes.bool, - signup: PropTypes.bool, - noShadow: PropTypes.bool, - children: PropTypes.node -}; diff --git a/src/components/Clearfix/Clearfix.js b/src/components/Clearfix/Clearfix.js deleted file mode 100644 index cf933b354..000000000 --- a/src/components/Clearfix/Clearfix.js +++ /dev/null @@ -1,23 +0,0 @@ -import React from "react"; - -// mterial-ui components -import { makeStyles } from "@material-ui/core/styles"; - -const styles = { - clearfix: { - "&:after,&:before": { - display: "table", - content: '" "' - }, - "&:after": { - clear: "both" - } - } -}; - -const useStyles = makeStyles(styles); - -export default function Clearfix() { - const classes = useStyles(); - return
; -} diff --git a/src/components/Cow/Cow.js b/src/components/Cow/Cow.js new file mode 100644 index 000000000..df2c7fe5e --- /dev/null +++ b/src/components/Cow/Cow.js @@ -0,0 +1,34 @@ +import React, { useState, useEffect } from 'react'; + +const Cow = ({ total, index }) => { + const [dimensions, setDimensions] = useState(null); + + useEffect(() => { + const r = 100 / total; + const x = (index + Math.random() * 0.5) * r; + const y = Math.ceil(Math.random() * 30) / 10 + 0.5; + const w = Math.round(Math.random() * 5) + 2.25; + const d = Math.random() < 0.5 ? -1 : 1; + + setDimensions({ x, y, w, d }); + }, [total, index]); + + if (!dimensions) return null; + + return ( + cow + ); +}; + +export default Cow; diff --git a/src/components/CustomButtons/Button.js b/src/components/CustomButtons/Button.js index e5b953dd0..5f763fa82 100644 --- a/src/components/CustomButtons/Button.js +++ b/src/components/CustomButtons/Button.js @@ -1,14 +1,9 @@ -import React from "react"; -// nodejs library that concatenates classes -import classNames from "classnames"; -// nodejs library to set properties for components -import PropTypes from "prop-types"; +import React from 'react'; +import classNames from 'classnames'; +import { makeStyles } from '@material-ui/core/styles'; +import Button from '@material-ui/core/Button'; -// @material-ui/core components -import { makeStyles } from "@material-ui/core/styles"; -import Button from "@material-ui/core/Button"; - -import styles from "assets/jss/material-kit-pro-react/components/buttonStyle.js"; +import styles from './styles'; const useStyles = makeStyles(styles); @@ -41,7 +36,7 @@ const RegularButton = React.forwardRef((props, ref) => { [classes.link]: link, [classes.justIcon]: justIcon, [classes.fileButton]: fileButton, - [className]: className + [className]: className, }); return ( -
- - {() => ( - - - {innerDropDown ? ( - dropDownMenu - ) : ( - - {dropDownMenu} - - )} - - - )} - - - ); -} - -CustomDropdown.defaultProps = { - caret: true, - dropup: false, - hoverColor: "primary", - darkModal:false, -}; - -CustomDropdown.propTypes = { - hoverColor: PropTypes.oneOf([ - "dark", - "primary", - "info", - "success", - "warning", - "danger", - "rose" - ]), - buttonText: PropTypes.node, - buttonIcon: PropTypes.object, - dropdownList: PropTypes.array, - buttonProps: PropTypes.object, - dropup: PropTypes.bool, - dropdownHeader: PropTypes.node, - rtlActive: PropTypes.bool, - caret: PropTypes.bool, - dropPlacement: PropTypes.oneOf([ - "bottom", - "top", - "right", - "left", - "bottom-start", - "bottom-end", - "top-start", - "top-end", - "right-start", - "right-end", - "left-start", - "left-end" - ]), - noLiPadding: PropTypes.bool, - innerDropDown: PropTypes.bool, - navDropdown: PropTypes.bool, - // This is a function that returns the clicked menu item - onClick: PropTypes.func, - darkModal:PropTypes.bool, - popperClassName: PropTypes.string -}; diff --git a/src/components/CustomFileInput/CustomFileInput.js b/src/components/CustomFileInput/CustomFileInput.js deleted file mode 100644 index b551bf3cf..000000000 --- a/src/components/CustomFileInput/CustomFileInput.js +++ /dev/null @@ -1,114 +0,0 @@ -import React from "react"; -// used for making the prop types of this component -import PropTypes from "prop-types"; -// @material-ui/core components -import { makeStyles } from "@material-ui/core/styles"; -// core components -import CustomInput from "components/CustomInput/CustomInput.js"; -import Button from "components/CustomButtons/Button.js"; - -import styles from "assets/jss/material-kit-pro-react/components/customFileInputStyle.js"; - -const useStyles = makeStyles(styles); - -export default function CustomFileInput(props) { - const [fileNames, setFileNames] = React.useState(""); - // eslint-disable-next-line - const [files, setFiles] = React.useState(null); - let hiddenFile = React.createRef(); - const onFocus = e => { - hiddenFile.current.click(e); - }; - // eslint-disable-next-line - const handleSubmit = e => { - e.preventDefault(); - // files is the file/image uploaded - // in this function you can save the image (files) on form submit - // you have to call it yourself - }; - const addFile = e => { - let fileNames = ""; - let files = e.target.files; - for (let i = 0; i < e.target.files.length; i++) { - fileNames = fileNames + e.target.files[i].name; - if (props.multiple && i !== e.target.files.length - 1) { - fileNames = fileNames + ", "; - } - } - setFiles(files); - setFileNames(fileNames); - if(props.onChange) { - props.onChange(files,fileNames); - } - }; - const { - id, - endButton, - startButton, - inputProps, - formControlProps, - multiple - } = props; - const classes = useStyles(); - if (inputProps && inputProps.type && inputProps.type === "file") { - inputProps.type = "text"; - } - let buttonStart; - let buttonEnd; - if (startButton) { - buttonStart = ( - - ); - } - if (endButton) { - buttonEnd = ( - - ); - } - return ( -
- - -
- ); -} - -CustomFileInput.defaultProps = { - multiple: false -}; - -CustomFileInput.propTypes = { - id: PropTypes.string, - endButton: PropTypes.object, - startButton: PropTypes.object, - inputProps: PropTypes.object, - formControlProps: PropTypes.object, - multiple: PropTypes.bool, - // it is a function from which you can get the file that was uploaded - // more can be read here: https://github.com/creativetimofficial/ct-material-kit-pro-react/issues/64 and here: https://github.com/creativetimofficial/ct-material-kit-pro-react/issues/37 - onChange: PropTypes.func -}; diff --git a/src/components/CustomInput/CustomInput.js b/src/components/CustomInput/CustomInput.js deleted file mode 100644 index b36b3ab89..000000000 --- a/src/components/CustomInput/CustomInput.js +++ /dev/null @@ -1,105 +0,0 @@ -import React from "react"; -// nodejs library to set properties for components -import PropTypes from "prop-types"; -// nodejs library that concatenates classes -import classNames from "classnames"; - -// @material-ui/core components -import { makeStyles } from "@material-ui/core/styles"; -import FormControl from "@material-ui/core/FormControl"; -import InputLabel from "@material-ui/core/InputLabel"; -import Input from "@material-ui/core/Input"; -// @material-ui/icons -import Clear from "@material-ui/icons/Clear"; -import Check from "@material-ui/icons/Check"; -// core components - -import styles from "assets/jss/material-kit-pro-react/components/customInputStyle.js"; - -const useStyles = makeStyles(styles); - -export default function CustomInput(props) { - const { - formControlProps, - labelText, - id, - labelProps, - inputProps, - error, - white, - inputRootCustomClasses, - success - } = props; - const classes = useStyles(); - const labelClasses = classNames({ - [" " + classes.labelRootError]: error, - [" " + classes.labelRootSuccess]: success && !error - }); - const underlineClasses = classNames({ - [classes.underlineError]: error, - [classes.underlineSuccess]: success && !error, - [classes.underline]: true, - [classes.whiteUnderline]: white - }); - const marginTop = classNames({ - [inputRootCustomClasses]: inputRootCustomClasses !== undefined - }); - const inputClasses = classNames({ - [classes.input]: true, - [classes.whiteInput]: white - }); - var formControlClasses; - if (formControlProps !== undefined) { - formControlClasses = classNames( - formControlProps.className, - classes.formControl - ); - } else { - formControlClasses = classes.formControl; - } - let newInputProps = { - maxLength: inputProps ? inputProps.maxLength:undefined, - minLength: inputProps ? inputProps.minLength:undefined - }; - return ( - - {labelText !== undefined ? ( - - {labelText} - - ) : null} - - {error ? ( - - ) : success ? ( - - ) : null} - - ); -} - -CustomInput.propTypes = { - labelText: PropTypes.node, - labelProps: PropTypes.object, - id: PropTypes.string, - inputProps: PropTypes.object, - formControlProps: PropTypes.object, - inputRootCustomClasses: PropTypes.string, - error: PropTypes.bool, - success: PropTypes.bool, - white: PropTypes.bool -}; diff --git a/src/components/CustomLinearProgress/CustomLinearProgress.js b/src/components/CustomLinearProgress/CustomLinearProgress.js deleted file mode 100644 index 5bdd3c7f8..000000000 --- a/src/components/CustomLinearProgress/CustomLinearProgress.js +++ /dev/null @@ -1,41 +0,0 @@ -import React from "react"; -// nodejs library to set properties for components -import PropTypes from "prop-types"; - -// @material-ui/core components -import { makeStyles } from "@material-ui/core/styles"; -import LinearProgress from "@material-ui/core/LinearProgress"; - -import styles from "assets/jss/material-kit-pro-react/components/customLinearProgressStyle.js"; - -const useStyles = makeStyles(styles); - -export default function CustomLinearProgress(props) { - const { color, ...rest } = props; - const classes = useStyles(); - return ( - - ); -} - -CustomLinearProgress.defaultProps = { - color: "gray" -}; - -CustomLinearProgress.propTypes = { - color: PropTypes.oneOf([ - "primary", - "warning", - "danger", - "success", - "info", - "rose", - "gray" - ]) -}; diff --git a/src/components/CustomOutlinedInput/CustomOutlinedInput.js b/src/components/CustomOutlinedInput/CustomOutlinedInput.js index 22cc497a7..7a6098fba 100644 --- a/src/components/CustomOutlinedInput/CustomOutlinedInput.js +++ b/src/components/CustomOutlinedInput/CustomOutlinedInput.js @@ -1,45 +1,41 @@ -import React from "react"; -// nodejs library to set properties for components -import PropTypes from "prop-types"; -// nodejs library that concatenates classes -import classNames from "classnames"; -import { makeStyles } from "@material-ui/core/styles"; +import React from 'react'; +import { makeStyles } from '@material-ui/core/styles'; import OutlinedInput from '@material-ui/core/OutlinedInput'; -const useStyles = makeStyles({ - showDetail:{ - // display:'inline-block', - alignItems:'center', - justifyContent:'space-around', - width:'100%', - height: '56px', - background: '#353848', - borderRadius: '12px', - fontWeight: '600', - fontSize: '18px', - color: '#FFFFFF', - lineHeight: '24px', - fontWeight: '600', +const useStyles = makeStyles(theme => ({ + showDetail: { + alignItems: 'center', + justifyContent: 'space-around', + width: '100%', + height: '56px', + borderRadius: '12px', + fontSize: '18px', + color: theme.palette.text.primary, + lineHeight: '24px', + fontWeight: '500', + outline: 'none', + }, + focused: { + '& fieldset': { + border: `1px solid${theme.palette.text.primary} !important`, }, -}); + }, +})); export default function CustomOutlinedInput(props) { - const commonStyle = useStyles(); - const commonClasses = { - root: commonStyle.showDetail - }; - const { - classes - } = props; - return ( - - ) + const { classes } = props; + + const commonStyle = useStyles(); + const commonClasses = { + root: commonStyle.showDetail, + focused: commonStyle.focused, + classes, + }; + + return ; } CustomOutlinedInput.defaultProps = { - variant:"outlined", - fullWidth:true, -} \ No newline at end of file + variant: 'outlined', + fullWidth: true, +}; diff --git a/src/components/CustomSlider/CustomSlider.js b/src/components/CustomSlider/CustomSlider.js index b898cea33..74cb66809 100644 --- a/src/components/CustomSlider/CustomSlider.js +++ b/src/components/CustomSlider/CustomSlider.js @@ -1,78 +1,64 @@ -import React from "react"; -// nodejs library to set properties for components -import PropTypes from "prop-types"; -// nodejs library that concatenates classes -import classNames from "classnames"; +import React from 'react'; import Slider from '@material-ui/core/Slider'; -import { makeStyles } from "@material-ui/core/styles"; +import { makeStyles } from '@material-ui/core/styles'; +import { secondaryColor, successColor } from 'assets/jss/material-kit-pro-react'; -const useStyles = makeStyles({ - depositedBalanceSliderRoot:{ - color:'#FF2D82', +const useStyles = makeStyles(theme => ({ + mark: { + height: '0', + }, + markLabel: { + color: theme.palette.text.primary, + weight: 400, + fontSize: '12px', + }, + valueLabel: { + '& > span': { + color: successColor[0], }, - depositedBalanceSliderMarkLabel:{ - color:'#FF2D82', - }, - depositedBalanceSliderRail:{ - opacity:'1', - color:'#353848', - }, - depositedBalanceSliderMark:{ - height:'0', - }, -}); + }, + rail: { + color: secondaryColor[2], + height: 2, + opacity: 1, + }, + thumb: { + color: successColor[0], + }, + track: { + color: successColor[0], + height: 2, + }, + active: { + color: successColor[1], + }, +})); export default function CustomSlider(props) { - const commonStyle = useStyles(); - const commonClasses = { - root: commonStyle.depositedBalanceSliderRoot, - markLabel: commonStyle.depositedBalanceSliderMarkLabel, - rail:commonStyle.depositedBalanceSliderRail, - mark:commonStyle.depositedBalanceSliderMark, - }; - const { - classes - } = props; - return ( - - ) + const classes = useStyles(); + return ( + + ); } - -CustomSlider.defaultProps = { - defaultValue: 0, - valueLabelDisplay:'auto', - marks:[ - { - value: 0, - label: '0%', - }, - { - value: 25, - label: '25%', - }, - { - value: 50, - label: '50%', - }, - { - value: 75, - label: '75%', - }, - { - value: 100, - label: '100%', - }, - ] -}; - -CustomSlider.propTypes = { - classes:PropTypes.object, - ariaLabelledby:PropTypes.string, - defaultValue:PropTypes.number, - valueLabelDisplay:PropTypes.string, - marks:PropTypes.array, -}; - \ No newline at end of file diff --git a/src/components/CustomTabs/CustomTabs.js b/src/components/CustomTabs/CustomTabs.js deleted file mode 100644 index 85cbb118b..000000000 --- a/src/components/CustomTabs/CustomTabs.js +++ /dev/null @@ -1,126 +0,0 @@ -import React from "react"; -// nodejs library that concatenates classes -import classNames from "classnames"; -// nodejs library to set properties for components -import PropTypes from "prop-types"; - -// @material-ui/core components -import { makeStyles } from "@material-ui/core/styles"; -// import Card from "@material-ui/core/Card"; -// import CardContent from "@material-ui/core/Card/CardContent"; -// import CardHeader from "@material-ui/core/Card/CardHeader"; -import Tabs from "@material-ui/core/Tabs"; -import Tab from "@material-ui/core/Tab"; - -// core components -import Card from "components/Card/Card.js"; -import CardBody from "components/Card/CardBody.js"; -import CardHeader from "components/Card/CardHeader.js"; -import styles from "assets/jss/material-kit-pro-react/components/customTabsStyle.js"; - -const useStyles = makeStyles(styles); - -export default function CustomTabs(props) { - const [value, setValue] = React.useState(0); - const handleChange = (event, value) => { - setValue(value); - }; - const { headerColor, title, tabs, rtlActive, plainTabs } = props; - const classes = useStyles(); - const cardTitle = classNames({ - [classes.cardTitle]: true, - [classes.cardTitleRTL]: rtlActive - }); - const tabsContainer = classNames({ - [classes.tabsContainer]: true, - [classes.tabsContainerRTL]: rtlActive - }); - return ( - - - {title !== undefined ? ( -
{"title"}
- ) : null} - - {tabs.map((prop, key) => { - var icon = {}; - if (prop.tabIcon !== undefined) { - icon = { - icon: - }; - } else { - icon = {}; - } - return ( - } - {...icon} - label={prop.tabName} - /> - ); - })} - -
- {/* */} - - {tabs.map((prop, key) => { - if (key === value) { - return
{prop.tabContent}
; - } - return null; - })} -
-
- ); -} - -CustomTabs.defaultProps = { - headerColor: "purple" -}; - -CustomTabs.propTypes = { - headerColor: PropTypes.oneOf([ - "warning", - "success", - "danger", - "info", - "primary", - "rose" - ]), - title: PropTypes.string, - tabs: PropTypes.arrayOf( - PropTypes.shape({ - tabName: PropTypes.string.isRequired, - tabIcon: PropTypes.object, - tabContent: PropTypes.node.isRequired - }) - ), - rtlActive: PropTypes.bool, - plainTabs: PropTypes.bool -}; diff --git a/src/components/CustomUpload/ImageUpload.js b/src/components/CustomUpload/ImageUpload.js deleted file mode 100644 index 399a7b53d..000000000 --- a/src/components/CustomUpload/ImageUpload.js +++ /dev/null @@ -1,81 +0,0 @@ -import React from "react"; -// used for making the prop types of this component -import PropTypes from "prop-types"; - -// core components -import Button from "components/CustomButtons/Button.js"; - -import defaultImage from "assets/img/image_placeholder.jpg"; -import defaultAvatar from "assets/img/placeholder.jpg"; - -export default function ImageUpload(props) { - const [file, setFile] = React.useState(null); - const [imagePreviewUrl, setImagePreviewUrl] = React.useState( - props.avatar ? defaultAvatar : defaultImage - ); - let fileInput = React.createRef(); - const handleImageChange = e => { - e.preventDefault(); - let reader = new FileReader(); - let file = e.target.files[0]; - reader.onloadend = () => { - setFile(file); - setImagePreviewUrl(reader.result); - if(props.onChange) { - props.onChange(file); - } - }; - reader.readAsDataURL(file); - }; - // eslint-disable-next-line - const handleSubmit = e => { - e.preventDefault(); - // file is the file/image uploaded - // in this function you can save the image (file) on form submit - // you have to call it yourself - }; - const handleClick = () => { - fileInput.current.click(); - }; - const handleRemove = () => { - setFile(null); - setImagePreviewUrl(props.avatar ? defaultAvatar : defaultImage); - fileInput.current.value = null; - }; - let { avatar, addButtonProps, changeButtonProps, removeButtonProps } = props; - return ( -
- -
- ... -
-
- {file === null ? ( - - ) : ( - - - {avatar ?
: null} - -
- )} -
-
- ); -} - -ImageUpload.propTypes = { - avatar: PropTypes.bool, - addButtonProps: PropTypes.object, - changeButtonProps: PropTypes.object, - removeButtonProps: PropTypes.object, - // it is a function from which you can get the files and fileNames that were uploaded - // more can be read here: https://github.com/creativetimofficial/ct-material-kit-pro-react/issues/64 - onChange: PropTypes.func -}; diff --git a/src/components/Disclaimer/Disclaimer.js b/src/components/Disclaimer/Disclaimer.js new file mode 100644 index 000000000..72483b2a4 --- /dev/null +++ b/src/components/Disclaimer/Disclaimer.js @@ -0,0 +1,22 @@ +import React, { memo } from 'react'; +import { useTranslation } from 'react-i18next'; +import { makeStyles } from '@material-ui/core/styles'; +import Grid from '@material-ui/core/Grid'; +import Typography from '@material-ui/core/Typography'; + +import styles from './styles'; + +const useStyles = makeStyles(styles); + +const Disclaimer = () => { + const { t } = useTranslation(); + const classes = useStyles(); + + return ( + + {t('Disclaimer')} + + ); +}; + +export default memo(Disclaimer); diff --git a/src/components/Disclaimer/styles.js b/src/components/Disclaimer/styles.js new file mode 100644 index 000000000..481253d48 --- /dev/null +++ b/src/components/Disclaimer/styles.js @@ -0,0 +1,19 @@ +const styles = theme => ({ + root: { + flexGrow: 1, + alignItems: 'center', + }, + textCenter: { + textAlign: 'center', + }, + disclaimer: { + padding: '12px', + borderRadius: '0', + background: theme.palette.background.secondary, + marginBottom: '2rem', + fontWeight: 900, + color: theme.palette.text.primary, + }, +}); + +export default styles; diff --git a/src/components/Footer/Footer.js b/src/components/Footer/Footer.js index 8a74f21bd..3f8a5d476 100644 --- a/src/components/Footer/Footer.js +++ b/src/components/Footer/Footer.js @@ -1,55 +1,127 @@ -/* eslint-disable */ -import React from "react"; -// nodejs library to set properties for components -import PropTypes from "prop-types"; -// nodejs library that concatenates classes -import classNames from "classnames"; -// @material-ui/core components -import { makeStyles } from "@material-ui/core/styles"; -import List from "@material-ui/core/List"; -import ListItem from "@material-ui/core/ListItem"; -// @material-ui/icons -import Favorite from "@material-ui/icons/Favorite"; - -import styles from "assets/jss/material-kit-pro-react/components/footerStyle.js"; +import React, { memo } from 'react'; +import { useTranslation } from 'react-i18next'; +import { makeStyles } from '@material-ui/core/styles'; + +import styles from './styles'; const useStyles = makeStyles(styles); -export default function Footer(props) { - const { children, content, theme, big, className } = props; +const Footer = () => { const classes = useStyles(); - const themeType = - theme === "transparent" || theme == undefined ? false : true; - const footerClasses = classNames({ - [classes.footer]: true, - [classes[theme]]: themeType, - [classes.big]: big || children !== undefined, - [className]: className !== undefined - }); - const aClasses = classNames({ - [classes.a]: true - }); + const { t } = useTranslation(); return ( -
- ); -} -Footer.propTypes = { - theme: PropTypes.oneOf(["dark", "white", "transparent"]), - big: PropTypes.bool, - content: PropTypes.node.isRequired + + + + + ); }; + +export default memo(Footer); diff --git a/src/components/Footer/FooterLinks.js b/src/components/Footer/FooterLinks.js deleted file mode 100644 index dd5854e99..000000000 --- a/src/components/Footer/FooterLinks.js +++ /dev/null @@ -1,238 +0,0 @@ -/* eslint-disable */ -import React, { useEffect, useState } from "react"; -// nodejs library to set properties for components -import PropTypes from "prop-types"; -import { useTranslation } from 'react-i18next'; -import Footer from "components/Footer/Footer.js"; -import List from "@material-ui/core/List"; -import ListItem from "@material-ui/core/ListItem"; -import GridContainer from "components/Grid/GridContainer.js"; -import GridItem from "components/Grid/GridItem.js"; -import Button from "components/CustomButtons/Button.js"; -import Popover from '@material-ui/core/Popover'; -import Avatar from '@material-ui/core/Avatar'; -import { makeStyles } from "@material-ui/core/styles"; -import styles from "assets/jss/material-kit-pro-react/components/footerLinksStyle.js"; -import classNames from "classnames"; -import { - grayColor, - roseColor, - primaryColor, - secondaryColor, - infoColor, - successColor, - warningColor, - dangerColor, - blackColor, - whiteColor, - twitterColor, - facebookColor, - googleColor, - linkedinColor, - pinterestColor, - youtubeColor, - tumblrColor, - behanceColor, - dribbbleColor, - redditColor, - instagramColor, - hexToRgb - } from "assets/jss/material-kit-pro-react.js"; -const useStyles = makeStyles(styles); - -const footerLinkArr = [ - {content:'Link.Contract',href:'https://etherscan.io/address/0xa1d0E215a23d7030842FC67cE582a6aFa3CCaB83'}, - // {content:'CoinMarketCap',href:'https://coinmarketcap.com/zh/currencies/yearn-finance-ii/'}, - // {content:'CoinGecko',href:'https://www.coingecko.com/en/coins/dfi-money'}, - {content:'Link.Forum',href:'https://gov.dfi.money/'}, - {content:'Link.Audit',href:'https://github.com/yfii/audit'}, - {content:'Link.Stats',href:'https://stats.dfi.money/'}, - {content:'Link.Voting',href:'https://snapshot.page/#/dfi'}, - {content:'Link.Documentation',href:'https://docs.yfii.finance/'}, - {content:'Link.Uniswap',href:'https://app.uniswap.org/#/swap?outputCurrency=0xa1d0E215a23d7030842FC67cE582a6aFa3CCaB83'}, -]; - -export default function FooterLinks(props) { - const classes = useStyles(); - const { t } = useTranslation(); - - const [anchorEl, setAnchorEl] = useState(null); - const handlePopoverOpen = (event) => { - setAnchorEl(event.currentTarget); - }; - const handlePopoverClose = () => { - setAnchorEl(null); - }; - const open = Boolean(anchorEl); - - const color = props.color; - const badgeClasses = classNames({ - [classes.container]: true, - [classes.fixed]: props.fixed, - }); - - //留着控制底部联系方式的颜色 - const iconGroundStyle={ - width:'40px', - height:'40px', - display:'flex', - justifyContent:'center', - alignItems:'center', - fontSize: "1.25rem", - borderRadius: "1.25rem", - color:'white', - backgroundColor:primaryColor[0], - } - - const iconColorStyle={ - fontSize: "24px", - color: "#fff" - } - - return ( -
- - - - - - - - - - - - - - - - - - - - - - { - footerLinkArr.map((item)=>{ - return ( - - {t(item.content)} - - ) - }) - } - -
- ) -} - -FooterLinks.defaultProps = { - color: "transparent", - fixed:false - }; - -FooterLinks.propTypes = { - color: PropTypes.oneOf([ - "primary", - "info", - "success", - "warning", - "danger", - "transparent", - "white", - "rose", - "dark" - ]), - fixed: PropTypes.bool, -}; - \ No newline at end of file diff --git a/src/components/Footer/styles.js b/src/components/Footer/styles.js new file mode 100644 index 000000000..2172971bc --- /dev/null +++ b/src/components/Footer/styles.js @@ -0,0 +1,37 @@ +const styles = theme => ({ + root: { + display: 'flex', + flexDirection: 'row', + justifyContent: 'space-around', + maxWidth: '40rem', + margin: '2rem auto', + '@media (min-width: 769px)': { + margin: '2rem auto 10rem', + }, + }, + column: { + display: 'flex', + flexDirection: 'column', + }, + title: { + color: theme.palette.text.primary, + fontWeight: 900, + fontSize: '1.2rem', + marginBottom: '0.5rem', + }, + link: { + margin: '0.5rem 0', + fontWeight: 400, + color: theme.palette.text.primary, + textDecoration: 'none', + '&:hover': { + textDecoration: 'underline', + }, + }, + linkIcon: { + marginRight: '0.5rem', + minWidth: '24px', + }, +}); + +export default styles; diff --git a/src/components/Grid/GridContainer.js b/src/components/Grid/GridContainer.js deleted file mode 100644 index 0f396cb00..000000000 --- a/src/components/Grid/GridContainer.js +++ /dev/null @@ -1,36 +0,0 @@ -import React from "react"; -// nodejs library to set properties for components -import PropTypes from "prop-types"; - -// @material-ui/core components -import { makeStyles } from "@material-ui/core/styles"; -import Grid from "@material-ui/core/Grid"; - -const styles = { - grid: { - marginRight: "-15px", - marginLeft: "-15px", - width: "auto" - } -}; - -const useStyles = makeStyles(styles); - -export default function GridContainer(props) { - const { children, className, ...rest } = props; - const classes = useStyles(); - return ( - - {children} - - ); -} - -GridContainer.defaultProps = { - className: "" -}; - -GridContainer.propTypes = { - children: PropTypes.node, - className: PropTypes.string -}; diff --git a/src/components/Grid/GridItem.js b/src/components/Grid/GridItem.js deleted file mode 100644 index 3eca1b0f2..000000000 --- a/src/components/Grid/GridItem.js +++ /dev/null @@ -1,38 +0,0 @@ -import React from "react"; -// nodejs library to set properties for components -import PropTypes from "prop-types"; -// @material-ui/core components -import { makeStyles } from "@material-ui/core/styles"; -import Grid from "@material-ui/core/Grid"; - -const styles = { - grid: { - position: "relative", - width: "100%", - minHeight: "1px", - paddingRight: "15px", - paddingLeft: "15px" - /* flexBasis: "auto" */ - } -}; - -const useStyles = makeStyles(styles); - -export default function GridItem(props) { - const { children, className, ...rest } = props; - const classes = useStyles(); - return ( - - {children} - - ); -} - -GridItem.defaultProps = { - className: "" -}; - -GridItem.propTypes = { - children: PropTypes.node, - className: PropTypes.string -}; diff --git a/src/components/Header/Header.js b/src/components/Header/Header.js index 608e4d396..e506fa3e4 100644 --- a/src/components/Header/Header.js +++ b/src/components/Header/Header.js @@ -1,85 +1,95 @@ -import React, { useState} from "react"; -import { Link } from "react-router-dom"; -// nodejs library that concatenates classes -import classNames from "classnames"; -// nodejs library to set properties for components -import PropTypes from "prop-types"; -// @material-ui/core components -import { makeStyles } from "@material-ui/core/styles"; -import AppBar from "@material-ui/core/AppBar"; -import Toolbar from "@material-ui/core/Toolbar"; -import IconButton from "@material-ui/core/IconButton"; -import Button from "@material-ui/core/Button"; -import Hidden from "@material-ui/core/Hidden"; -import Drawer from "@material-ui/core/Drawer"; -import Avatar from '@material-ui/core/Avatar'; -// @material-ui/icons -import Menu from "@material-ui/icons/Menu"; -import Close from "@material-ui/icons/Close"; -// core components -import styles from "assets/jss/material-kit-pro-react/components/headerStyle.js"; +import React, { memo, useCallback, useState } from 'react'; +import { useTranslation } from 'react-i18next'; +import { useParams } from 'react-router'; +import { Link } from 'react-router-dom'; +import { makeStyles } from '@material-ui/core/styles'; +import AppBar from '@material-ui/core/AppBar'; +import Toolbar from '@material-ui/core/Toolbar'; +import IconButton from '@material-ui/core/IconButton'; +import Button from '@material-ui/core/Button'; +import Hidden from '@material-ui/core/Hidden'; +import Drawer from '@material-ui/core/Drawer'; +import Menu from '@material-ui/icons/Menu'; +import Close from '@material-ui/icons/Close'; +import WbSunny from '@material-ui/icons/WbSunny'; +import NightsStay from '@material-ui/icons/NightsStay'; +import { getNetworkBuyUrl } from '../../features/helpers/getNetworkData'; +import { Dialog, withStyles } from '@material-ui/core'; +import CustomButton from '../../components/CustomButtons/Button'; +import Transak from '../Transak/Transak'; +import styles from './styles'; const useStyles = makeStyles(styles); -export default function Header(props) { +const StyledDialog = withStyles(theme => ({ + paper: { + margin: '16px', + backgroundColor: theme.palette.background.primary, + }, + paperScrollPaper: { + maxHeight: 'calc(100% - 32px)', + }, +}))(Dialog); + +const Header = ({ links, isNightMode, setNightMode }) => { + const { chain } = useParams(); + const [mobileOpen, setMobileOpen] = React.useState(false); const classes = useStyles(); - React.useEffect(() => { - if (props.changeColorOnScroll) { - window.addEventListener("scroll", headerColorChange); - } - return function cleanup() { - if (props.changeColorOnScroll) { - window.removeEventListener("scroll", headerColorChange); - } - }; - }); + const { t } = useTranslation(); + const handleDrawerToggle = () => { setMobileOpen(!mobileOpen); }; - const headerColorChange = () => { - const { color, changeColorOnScroll } = props; - - const windowsScrollTop = window.pageYOffset; - if (windowsScrollTop > changeColorOnScroll.height) { - document.body - .getElementsByTagName("header")[0] - .classList.remove(classes[color]); - document.body - .getElementsByTagName("header")[0] - .classList.add(classes[changeColorOnScroll.color]); - } else { - document.body - .getElementsByTagName("header")[0] - .classList.add(classes[color]); - document.body - .getElementsByTagName("header")[0] - .classList.remove(classes[changeColorOnScroll.color]); - } - }; - const { color, links, brand, fixed, absolute } = props; - const appBarClasses = classNames({ - [classes.appBar]: true, - [classes[color]]: color, - [classes.absolute]: absolute, - [classes.fixed]: fixed - }); return ( - + - + + +
+ + {renderLink('vote', t('vote'), 'vote-yea', classes)} + {renderLink('dashboard', t('stats'), 'chart-bar', classes)} + {renderLink('docs', t('docs'), 'book', classes)} + {renderLink('blog', t('blog'), 'file-alt', classes)} + + + + + {t('buy')} + + + Boost - +
+
{links}
@@ -87,13 +97,14 @@ export default function Header(props) {
+ @@ -106,50 +117,108 @@ export default function Header(props) {
{links}
+
+ + + + + + + + + {t('buy')} + + + {isNightMode ? : } + +
); -} +}; + +const InsureLinkSidebar = memo(function InsureLinkSidebar(props) { + return ( +
+ +
+ ); +}); -Header.defaultProp = { - color: "white" +const InsureLink = memo(function InsureLink({ t, classes }) { + const [isOpen, setIsOpen] = useState(false); + const handleClose = useCallback(() => setIsOpen(false), [setIsOpen]); + const handleOpen = useCallback( + e => { + e.preventDefault(); + setIsOpen(true); + }, + [setIsOpen] + ); + + return ( + <> + + +
+ + + +

{t('InsurAce-Title')}

+
+ {t('InsurAce-Sections', { returnObjects: true }).map(section => ( +
+

{section.title}

+ {section.content.map(paragraph => ( +

+ {paragraph} +

+ ))} +
+ ))} +
+ + {t('InsurAce-Button')} + +
+
+ + ); +}); + +const renderLink = (name, label, icon, classes) => { + return ( + + + {label} + + ); }; -Header.propTypes = { - color: PropTypes.oneOf([ - "primary", - "info", - "success", - "warning", - "danger", - "transparent", - "white", - "rose", - "dark" - ]), - links: PropTypes.node, - brand: PropTypes.string, - fixed: PropTypes.bool, - absolute: PropTypes.bool, - // this will cause the sidebar to change the color from - // props.color (see above) to changeColorOnScroll.color - // when the window.pageYOffset is heigher or equal to - // changeColorOnScroll.height and then when it is smaller than - // changeColorOnScroll.height change it back to - // props.color (see above) - changeColorOnScroll: PropTypes.shape({ - height: PropTypes.number.isRequired, - color: PropTypes.oneOf([ - "primary", - "info", - "success", - "warning", - "danger", - "transparent", - "white", - "rose", - "dark" - ]).isRequired - }) +const LinkSidebar = ({ name, label, icon, classes }) => ( +
{renderLink(name, label, icon, classes)}
+); + +const getLinkUrl = name => { + return name === 'buy' ? getNetworkBuyUrl() : `https://${name}.beefy.finance`; }; + +export default Header; diff --git a/src/components/Header/HeaderLinks.js b/src/components/Header/HeaderLinks.js deleted file mode 100644 index b6aba0662..000000000 --- a/src/components/Header/HeaderLinks.js +++ /dev/null @@ -1,219 +0,0 @@ -/* eslint-disable */ -import React, { useEffect, useRef, useState } from "react"; -// nodejs library to set properties for components -import PropTypes from "prop-types"; -import { useHistory } from 'react-router-dom'; -import { renderIcon } from '@download/blockies' -// react components for routing our app without refresh -// @material-ui/core components -import { makeStyles } from "@material-ui/core/styles"; -import List from "@material-ui/core/List"; -import ListItem from "@material-ui/core/ListItem"; -import Avatar from '@material-ui/core/Avatar'; -// @material-ui/icons -import TranslateIcon from '@material-ui/icons/Translate'; -// core components -import CustomDropdown from "components/CustomDropdown/CustomDropdown.js"; -import Button from "components/CustomButtons/Button.js"; -// hooks -import { useTranslation } from 'react-i18next'; - -import styles from "assets/jss/material-kit-pro-react/components/headerLinksStyle.js"; -const useStyles = makeStyles(styles); - -{/* - - - - */} - -const tabArr = [ - {value:'',label:'Link.Home'}, - {value:'vault',label:'Link.Vault'}, - {value:'stake',label:'Link.Stake'}, -] - -export default function HeaderLinks(props) { - let history = useHistory(); - const { dropdownHoverColor, connected, address, connectWallet, disconnectWallet } = props; - const classes = useStyles(); - const { t, i18n } = useTranslation(); - const [lng, setLanguage] = useState('en'); - const [shortAddress, setShortAddress] = useState(''); - const [dataUrl, setDataUrl] = useState(null) - const canvasRef = useRef(null) - - const tabArr = [ - {value:'',label:t('Nav-Home')}, - {value:'vault',label:t('Nav-Vault')}, - {value:'stake',label:t('Nav-Stake')}, - {value:'farm',label:t('Nav-Farm')}, - ] - - useEffect(() => { - if(!connected) return; - const canvas = canvasRef.current - renderIcon({ seed: address.toLowerCase() }, canvas) - const updatedDataUrl = canvas.toDataURL() - if (updatedDataUrl !== dataUrl) { - setDataUrl(updatedDataUrl) - } - if (address.length < 11) { - setShortAddress(address) - } else { - setShortAddress(`${address.slice(0, 6)}...${address.slice(-4)}`) - } - }, [dataUrl, address]) - - const switchLanguage = () => { - switch(i18n.language) { - case 'zh': - case 'zh-CN': - return '中文' - case 'en': - return 'English' - case 'ja': - return '日本語' - case 'th': - return 'ไทย' - case 'ko': - return '한글' - default: - return '中文' - } - } - - const handleClick = event => { - console.log(event) - switch(event) { - case 'English': - return i18n.changeLanguage('en').then(()=>setLanguage(event)) - case '中文': - return i18n.changeLanguage('zh').then(()=>setLanguage(event)) - case '日本語': - return i18n.changeLanguage('ja').then(()=>setLanguage(event)) - case 'ไทย': - return i18n.changeLanguage('th').then(()=>setLanguage(event)) - case '한글': - return i18n.changeLanguage('ko').then(()=>setLanguage(event)) - default: - return - } - } - - const changeTabs = (newValue) => { - history.push({ - pathname: '/'+newValue, - state: { - } - }) - } - - useEffect(() => { - const lng = switchLanguage() - setLanguage(lng); - }); - - let defaultTabValue = ''; - if(window.location.hash != '#/' && window.location.hash!='#/index'){ - defaultTabValue = window.location.hash.split('/')[1]; - } - - return ( - - { - tabArr.map((item,index)=>( - - - - )) - } - - - Help to translate - - ]} - /> - - - - - - ); -} - -HeaderLinks.defaultProps = { - hoverColor: "primary" -}; - -HeaderLinks.propTypes = { - dropdownHoverColor: PropTypes.oneOf([ - "dark", - "primary", - "info", - "success", - "warning", - "danger", - "rose" - ]) -}; diff --git a/src/components/Header/styles.js b/src/components/Header/styles.js new file mode 100644 index 000000000..194f34d51 --- /dev/null +++ b/src/components/Header/styles.js @@ -0,0 +1,328 @@ +import { + blackColor, + boxShadow, + containerFluid, + dangerColor, + grayColor, + hexToRgb, + infoColor, + primaryColor, + roseColor, + successColor, + transition, + warningColor, + whiteColor, +} from 'assets/jss/material-kit-pro-react.js'; + +const styles = theme => ({ + appBar: { + display: 'flex', + border: '0', + borderRadius: '3px', + padding: '0.625rem 0', + marginBottom: '20px', + color: grayColor[15], + width: 'calc(100% - 20px)', + margin: '0 auto', + backgroundColor: whiteColor, + boxShadow: + '0 4px 18px 0px rgba(' + + hexToRgb(blackColor) + + ', 0.12), 0 7px 10px -5px rgba(' + + hexToRgb(blackColor) + + ', 0.15)', + transition: 'all 150ms ease 0s', + alignItems: 'center', + flexFlow: 'row nowrap', + justifyContent: 'flex-start', + position: 'relative', + }, + absolute: { + position: 'absolute', + top: 'auto', + }, + fixed: { + position: 'fixed', + }, + container: { + ...containerFluid, + minHeight: '50px', + alignItems: 'center', + justifyContent: 'space-between', + display: 'flex', + flexWrap: 'nowrap', + '@media (min-width: 1230px)': { + width: '1230px', + maxWidth: '100%', + }, + }, + title: { + letterSpacing: 'unset', + '&,& a': { + minWidth: 'unset', + lineHeight: '28px', + fontSize: '24px', + fontWeight: '700', + borderRadius: '3px', + textTransform: 'none', + whiteSpace: 'nowrap', + color: theme.palette.text.primary, + alignItems: 'flex-end', + '&:hover,&:focus': { + color: 'inherit', + background: 'transparent', + }, + }, + '& a': { + marginLeft: '8px', + }, + }, + appResponsive: { + margin: '20px 10px 0 10px', + marginTop: '0px', + }, + primary: { + backgroundColor: primaryColor[0], + color: whiteColor, + boxShadow: + '0 4px 20px 0px rgba(' + + hexToRgb(blackColor) + + ', 0.14), 0 7px 12px -5px rgba(' + + hexToRgb(primaryColor[0]) + + ', 0.46)', + }, + info: { + backgroundColor: infoColor[0], + color: whiteColor, + boxShadow: + '0 4px 20px 0px rgba(' + + hexToRgb(blackColor) + + ', 0.14), 0 7px 12px -5px rgba(' + + hexToRgb(infoColor[0]) + + ', 0.46)', + }, + success: { + backgroundColor: successColor[0], + color: whiteColor, + boxShadow: + '0 4px 20px 0px rgba(' + + hexToRgb(blackColor) + + ', 0.14), 0 7px 12px -5px rgba(' + + hexToRgb(successColor[0]) + + ', 0.46)', + }, + warning: { + backgroundColor: warningColor[0], + color: whiteColor, + boxShadow: + '0 4px 20px 0px rgba(' + + hexToRgb(blackColor) + + ', 0.14), 0 7px 12px -5px rgba(' + + hexToRgb(warningColor[0]) + + ', 0.46)', + }, + danger: { + backgroundColor: dangerColor[0], + color: whiteColor, + boxShadow: + '0 4px 20px 0px rgba(' + + hexToRgb(blackColor) + + ', 0.14), 0 7px 12px -5px rgba(' + + hexToRgb(dangerColor[0]) + + ', 0.46)', + }, + rose: { + backgroundColor: roseColor[0], + color: whiteColor, + boxShadow: + '0 4px 20px 0px rgba(' + + hexToRgb(blackColor) + + ', 0.14), 0 7px 12px -5px rgba(' + + hexToRgb(roseColor[0]) + + ', 0.46)', + }, + transparent: { + backgroundColor: 'transparent !important', + boxShadow: 'none', + paddingTop: '25px', + color: whiteColor, + }, + dark: { + color: whiteColor, + backgroundColor: theme.palette.background.default, + boxShadow: '0px 0px', + }, + white: { + border: '0', + padding: '0.625rem 0', + marginBottom: '20px', + color: grayColor[15], + backgroundColor: whiteColor + ' !important', + boxShadow: + '0 4px 18px 0px rgba(' + + hexToRgb(blackColor) + + ', 0.12), 0 7px 10px -5px rgba(' + + hexToRgb(blackColor) + + ', 0.15)', + }, + drawerPaper: { + border: 'none', + bottom: '0', + transitionProperty: 'top, bottom, width', + transitionDuration: '.2s, .2s, .35s', + transitionTimingFunction: 'linear, linear, ease', + width: 260, + ...boxShadow, + position: 'fixed', + display: 'block', + top: '0', + height: '100vh', + right: '0', + left: 'auto', + visibility: 'visible', + overflowY: 'visible', + borderTop: 'none', + textAlign: 'left', + paddingRight: '0px', + paddingLeft: '0', + ...transition, + }, + hidden: { + width: '100%', + }, + collapse: { + [theme.breakpoints.up('md')]: { + display: 'flex !important', + MsFlexPreferredSize: 'auto', + flexBasis: 'auto', + }, + WebkitBoxFlex: '1', + MsFlexPositive: '1', + flexGrow: '1', + WebkitBoxAlign: 'center', + MsFlexAlign: 'center', + alignItems: 'center', + }, + closeButtonDrawer: { + position: 'absolute', + right: '8px', + top: '9px', + zIndex: '1', + }, + tabs: { + width: '60xh', + display: 'flex', + justifyContent: 'space-between', + overflow: 'visible', + }, + logo: { + marginRight: '12px', + }, + middleNav: { + display: 'flex', + justifyContent: 'center', + alignItems: 'center', + }, + link: { + display: 'inline-flex', + margin: '0 1rem', + background: 'transparent', + border: 0, + padding: 0, + cursor: 'pointer', + fontSize: '1rem', + fontWeight: 400, + color: '#000', + textDecoration: 'none', + textTransform: 'lowercase', + '&:hover': { + textDecoration: 'underline', + }, + '& span': { + color: theme.palette.text.primary, + }, + }, + icon: { + color: theme.palette.text.primary, + marginRight: '0.5rem', + textAlign: 'end', + }, + iconButton: { + color: theme.palette.text.primary, + }, + btnBoost: { + marginLeft: '10px', + marginRight: '5px', + padding: '3px 4px', + border: `solid 2px ${successColor[1]}`, + borderRadius: '4px', + '& img': { + verticalAlign: 'middle', + height: '15px', + }, + '&:hover': { + backgroundColor: successColor[1], + }, + '&:hover img': { + filter: + 'invert(100%) sepia(100%) saturate(0%) hue-rotate(288deg) brightness(1000%) contrast(1000%)', + }, + }, + modalClose: { + position: 'absolute', + right: '8px', + top: '8px', + }, + modalInner: { + padding: '24px', + }, + modalTitle: { + padding: '0', + fontSize: '24px', + margin: '0 0 32px 0', + letterSpacing: '0', + lineHeight: '1', + fontWeight: '550', + color: theme.palette.text.primary, + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + '@media (min-width:464px)': {}, + [theme.breakpoints.up('md')]: { + fontSize: '32px', + }, + }, + modalSections: {}, + modalSection: { + marginBottom: '32px', + '& $modalSectionText:first-child': { + marginTop: 0, + }, + '& $modalSectionText:last-child': { + marginBottom: 0, + }, + }, + modalSectionTitle: { + textTransform: 'uppercase', + letterSpacing: '1px', + fontSize: '16px', + color: theme.palette.text.secondary, + margin: '0 0 8px 0', + }, + modalSectionText: {}, + modalButton: { + border: 0, + padding: '12px', + backgroundColor: '#000', + color: '#fff', + textTransform: 'none', + margin: '0', + width: '100%', + '& .MuiButton-label': { + color: '#fff', + fontSize: '14px', + }, + }, +}); + +export default styles; diff --git a/src/components/HeaderLinks/HeaderLinks.js b/src/components/HeaderLinks/HeaderLinks.js new file mode 100644 index 000000000..1fcdcc06a --- /dev/null +++ b/src/components/HeaderLinks/HeaderLinks.js @@ -0,0 +1,82 @@ +import React, { useEffect, useState } from 'react'; +import { makeStyles } from '@material-ui/core/styles'; +import List from '@material-ui/core/List'; +import ListItem from '@material-ui/core/ListItem'; +import Hidden from '@material-ui/core/Hidden'; +import IconButton from '@material-ui/core/IconButton'; +import { WbSunny, NightsStay } from '@material-ui/icons'; +import Button from 'components/CustomButtons/Button.js'; +import { useTranslation } from 'react-i18next'; +import { LanguageDropdown } from '../LanguageDropdown/LanguageDropdown'; +import Davatar from '@davatar/react'; + +import styles from './styles'; +import { useENS } from 'features/home/hooks/useENS'; + +const useStyles = makeStyles(styles); + +const HeaderLinks = ({ + connected, + address, + connectWallet, + disconnectWallet, + isNightMode, + setNightMode, +}) => { + const classes = useStyles(); + const { t } = useTranslation(); + const [shortAddress, setShortAddress] = useState(''); + const { ensName } = useENS(address); + + useEffect(() => { + if (!connected) { + return; + } + + if (address.length < 11) { + setShortAddress(address); + } else { + setShortAddress(`${address.slice(0, 6)}...${address.slice(-4)}`); + } + }, [address, connected]); + + return ( + + + + + {isNightMode ? : } + + + + + + + + + + + ); +}; + +export default HeaderLinks; diff --git a/src/components/HeaderLinks/styles.js b/src/components/HeaderLinks/styles.js new file mode 100644 index 000000000..5b2ecae68 --- /dev/null +++ b/src/components/HeaderLinks/styles.js @@ -0,0 +1,239 @@ +import { + grayColor, + primaryColor, + whiteColor, + mlAuto, + hexToRgb, +} from 'assets/jss/material-kit-pro-react.js'; + +const styles = theme => ({ + list: { + [theme.breakpoints.up('md')]: { + WebkitBoxAlign: 'center', + MsFlexAlign: 'center', + alignItems: 'center', + WebkitBoxOrient: 'horizontal', + WebkitBoxDirection: 'normal', + MsFlexDirection: 'row', + flexDirection: 'row', + }, + [theme.breakpoints.down('sm')]: { + display: 'block', + }, + marginTop: '0px', + display: 'flex', + paddingLeft: '0', + marginBottom: '0', + listStyle: 'none', + padding: '0', + }, + listItem: { + color: 'inherit', + position: 'relative', + display: 'block', + width: 'auto', + margin: '0', + padding: '0', + [theme.breakpoints.down('sm')]: { + '& ul': { + maxHeight: '400px', + overflow: 'scroll', + }, + width: '100%', + '&:not(:last-child)': { + '&:after': { + width: 'calc(100% - 30px)', + content: '""', + display: 'block', + height: '1px', + marginLeft: '15px', + backgroundColor: grayColor[14], + }, + }, + }, + }, + listItemText: { + padding: '0 !important', + }, + navLink: { + color: 'inherit', + position: 'relative', + padding: '0.9375rem', + fontWeight: '400', + fontSize: '12px', + textTransform: 'uppercase', + lineHeight: '20px', + textDecoration: 'none', + margin: '0px', + display: 'inline-flex', + '&:hover,&:focus': { + color: 'inherit', + }, + '& .fab,& .far,& .fal,& .fas,& .material-icons': { + position: 'relative', + top: '2px', + marginTop: '-4px', + marginRight: '4px', + marginBottom: '0px', + fontSize: '1.25rem', + }, + [theme.breakpoints.down('sm')]: { + width: 'calc(100% - 60px)', + marginLeft: '15px', + marginBottom: '8px', + marginTop: '8px', + textAlign: 'left', + '& > span:first-child': { + justifyContent: 'flex-start', + }, + }, + '& svg': { + marginRight: '3px', + width: '20px', + height: '20px', + }, + }, + navLinkJustIcon: { + '& .fab,& .far,& .fal,& .fas,& .material-icons': { + marginRight: '0px', + }, + '& svg': { + marginRight: '0px', + }, + }, + navButton: { + position: 'relative', + fontWeight: '400', + fontSize: '12px', + textTransform: 'uppercase', + lineHeight: '20px', + textDecoration: 'none', + margin: '0px', + display: 'inline-flex', + [theme.breakpoints.down('sm')]: { + width: 'calc(100% - 30px)', + marginLeft: '15px', + marginBottom: '5px', + marginTop: '5px', + textAlign: 'left', + '& > span:first-child': { + justifyContent: 'flex-start', + }, + }, + '& $icons': { + marginRight: '3px', + }, + }, + notificationNavLink: { + color: 'inherit', + padding: '0.9375rem', + fontWeight: '400', + fontSize: '12px', + textTransform: 'uppercase', + lineHeight: '20px', + textDecoration: 'none', + margin: '0px', + display: 'inline-flex', + }, + registerNavLink: { + position: 'relative', + fontWeight: '400', + fontSize: '12px', + textTransform: 'uppercase', + lineHeight: '20px', + textDecoration: 'none', + margin: '0px', + display: 'inline-flex', + }, + navLinkActive: { + '&, &:hover, &:focus,&:active ': { + color: 'inherit', + backgroundColor: 'rgba(' + hexToRgb(whiteColor) + ', 0.1)', + }, + }, + icons: { + width: '20px', + height: '20px', + marginRight: '14px', + }, + dropdownIcons: { + width: '24px', + height: '24px', + marginRight: '14px', + opacity: '0.5', + marginTop: '-4px', + top: '1px', + verticalAlign: 'middle', + fontSize: '24px', + position: 'relative', + }, + socialIcons: { + position: 'relative', + fontSize: '1.25rem', + maxWidth: '24px', + }, + dropdownLink: { + '&,&:hover,&:focus': { + color: 'inherit', + textDecoration: 'none', + display: 'flex', + padding: '0.75rem 1.25rem 0.75rem 0.75rem', + }, + }, + marginRight5: { + marginRight: '5px', + }, + collapse: { + [theme.breakpoints.up('md')]: { + display: 'flex !important', + MsFlexPreferredSize: 'auto', + flexBasis: 'auto', + }, + WebkitBoxFlex: '1', + MsFlexPositive: '1', + flexGrow: '1', + WebkitBoxAlign: 'center', + MsFlexAlign: 'center', + alignItems: 'center', + }, + mlAuto, + paper: { + padding: theme.spacing(1), + }, + nowShowPage: { + borderBottom: `1px solid ${primaryColor[0]}`, + [theme.breakpoints.down('sm')]: { + border: '0', + }, + }, + Button: { + borderRadius: '.5em', + }, + cta: { + color: theme.palette.text.primary, + }, + walletDisplay: { + width: '100%', + margin: '12px 0', + fontSize: '14px', + fontWeight: 'bold', + backgroundColor: theme.palette.background.secondary, + color: '#fff', + '&:hover': { + backgroundColor: theme.palette.background.border, + }, + [theme.breakpoints.up('md')]: { + width: '180px', + }, + }, + icon: { + color: theme.palette.text.primary, + width: '24px', + marginRight: '4px', + }, + iconButton: { + color: theme.palette.text.primary, + }, +}); + +export default styles; diff --git a/src/components/InfoArea/InfoArea.js b/src/components/InfoArea/InfoArea.js deleted file mode 100644 index 9a0eec249..000000000 --- a/src/components/InfoArea/InfoArea.js +++ /dev/null @@ -1,69 +0,0 @@ -import React from "react"; -// nodejs library to set properties for components -import PropTypes from "prop-types"; -// nodejs library that concatenates classes -import classNames from "classnames"; -// @material-ui/core components -import { makeStyles } from "@material-ui/core/styles"; -import Icon from "@material-ui/core/Icon"; - -import styles from "assets/jss/material-kit-pro-react/components/infoStyle.js"; - -const useStyles = makeStyles(styles); - -export default function InfoArea(props) { - const { title, description, iconColor, vertical, className } = props; - const classes = useStyles(); - const iconWrapper = classNames({ - [classes.iconWrapper]: true, - [classes[iconColor]]: true, - [classes.iconWrapperVertical]: vertical - }); - const iconClasses = classNames({ - [classes.icon]: true, - [classes.iconVertical]: vertical - }); - const infoAreaClasses = classNames({ - [classes.infoArea]: true, - [className]: className !== undefined - }); - let icon = null; - switch (typeof props.icon) { - case "string": - icon = {props.icon}; - break; - default: - icon = ; - break; - } - return ( -
-
{icon}
-
-

{title}

-
{description}
-
-
- ); -} - -InfoArea.defaultProps = { - iconColor: "gray" -}; - -InfoArea.propTypes = { - icon: PropTypes.oneOfType([PropTypes.object, PropTypes.string]).isRequired, - title: PropTypes.string.isRequired, - description: PropTypes.node.isRequired, - iconColor: PropTypes.oneOf([ - "primary", - "warning", - "danger", - "success", - "info", - "rose", - "gray" - ]), - vertical: PropTypes.bool, - className: PropTypes.string -}; diff --git a/src/components/Instruction/Instruction.js b/src/components/Instruction/Instruction.js deleted file mode 100644 index 9425574b0..000000000 --- a/src/components/Instruction/Instruction.js +++ /dev/null @@ -1,55 +0,0 @@ -import React from "react"; -import PropTypes from "prop-types"; -import cx from "classnames"; - -// @material-ui/core components -import { makeStyles } from "@material-ui/core/styles"; - -// core components -import GridContainer from "components/Grid/GridContainer.js"; -import GridItem from "components/Grid/GridItem"; - -import styles from "assets/jss/material-kit-pro-react/components/instructionStyle.js"; - -const useStyles = makeStyles(styles); - -export default function Instruction(props) { - const { title, text, image, className, imageClassName, imageAlt } = props; - const classes = useStyles(); - const instructionClasses = cx({ - [classes.instruction]: true, - [className]: className !== undefined - }); - const pictureClasses = cx({ - [classes.picture]: true, - [imageClassName]: imageClassName !== undefined - }); - return ( -
- - - {title} -

{text}

-
- -
- {imageAlt} -
-
-
-
- ); -} - -Instruction.defaultProps = { - imageAlt: "..." -}; - -Instruction.propTypes = { - title: PropTypes.node.isRequired, - text: PropTypes.node.isRequired, - image: PropTypes.string.isRequired, - imageAlt: PropTypes.string, - className: PropTypes.string, - imageClassName: PropTypes.string -}; diff --git a/src/components/LanguageDropdown/LanguageDropdown.js b/src/components/LanguageDropdown/LanguageDropdown.js new file mode 100644 index 000000000..68f70fc54 --- /dev/null +++ b/src/components/LanguageDropdown/LanguageDropdown.js @@ -0,0 +1,100 @@ +import React, { useCallback, useEffect, useState } from 'react'; +import { makeStyles } from '@material-ui/core/styles'; +import { Button, Menu, MenuItem } from '@material-ui/core'; +import { supportedLanguages } from '../../i18n'; +import { useTranslation } from 'react-i18next'; +import styles from './styles'; + +const useStyles = makeStyles(styles); + +const getSelectedLanguage = i18n => { + const cachedLanguage = i18n.language; + + if (!cachedLanguage) { + return 'en'; + } + + if (cachedLanguage in supportedLanguages) { + return cachedLanguage; + } + + const languageCode = cachedLanguage.split('-')[0].toLowerCase(); + if (languageCode in supportedLanguages) { + return languageCode; + } + + return 'en'; +}; + +export const LanguageDropdown = function ({ navLinkClass }) { + const classes = useStyles(); + const { i18n } = useTranslation(); + const i18nLanguage = getSelectedLanguage(i18n); + const [selectedLanguage, setLanguage] = useState(i18nLanguage); + const [anchorEl, setAnchorEl] = useState(null); + + const handleClick = useCallback( + e => { + setAnchorEl(e.currentTarget); + }, + [setAnchorEl] + ); + + const handleClose = useCallback(() => { + setAnchorEl(null); + }, [setAnchorEl]); + + const handleSelect = useCallback( + code => { + setAnchorEl(null); + i18n.changeLanguage(code); + }, + [setAnchorEl, i18n] + ); + + useEffect(() => { + setLanguage(i18nLanguage); + }, [i18nLanguage]); + + return ( + <> + + + {Object.entries(supportedLanguages).map(([code, label]) => ( + handleSelect(code)} + > + {label} + + ))} + + + + Help to translate + + + + + ); +}; diff --git a/src/components/LanguageDropdown/styles.js b/src/components/LanguageDropdown/styles.js new file mode 100644 index 000000000..a51b22c29 --- /dev/null +++ b/src/components/LanguageDropdown/styles.js @@ -0,0 +1,23 @@ +const styles = theme => ({ + divider: { + padding: '0', + margin: '0 0 6px 0', + minHeight: 0, + }, + helpLink: { + fontWeight: '600', + color: theme.palette.text.primary, + lineHeight: '14px', + letterSpacing: 0, + '&:hover,&:focus': { + color: theme.palette.text.secondary, + }, + }, + dropdownMenu: { + [theme.breakpoints.down('sm')]: { + backgroundColor: theme.palette.background.primary, + }, + }, +}); + +export default styles; diff --git a/src/components/Media/Media.js b/src/components/Media/Media.js deleted file mode 100644 index b4f12724c..000000000 --- a/src/components/Media/Media.js +++ /dev/null @@ -1,61 +0,0 @@ -import React from "react"; -// nodejs library to set properties for components -import PropTypes from "prop-types"; -// @material-ui/core components -import { makeStyles } from "@material-ui/core/styles"; -// @material-ui/icons -// core components - -import styles from "assets/jss/material-kit-pro-react/components/mediaStyle.js"; - -const useStyles = makeStyles(styles); - -export default function Media(props) { - const { - avatarLink, - avatar, - avatarAlt, - title, - body, - footer, - innerMedias, - ...rest - } = props; - const classes = useStyles(); - return ( -
- -
- {avatarAlt} -
-
-
- {title !== undefined ? ( -

{title}

- ) : null} - {body} -
{footer}
- {innerMedias !== undefined - ? innerMedias.map(prop => { - return prop; - }) - : null} -
-
- ); -} - -Media.defaultProps = { - avatarLink: "#pablo", - avatarAlt: "..." -}; - -Media.propTypes = { - avatarLink: PropTypes.string, - avatar: PropTypes.string, - avatarAlt: PropTypes.string, - title: PropTypes.node, - body: PropTypes.node, - footer: PropTypes.node, - innerMedias: PropTypes.arrayOf(PropTypes.object) -}; diff --git a/src/components/NavPills/NavPills.js b/src/components/NavPills/NavPills.js deleted file mode 100644 index 65699b5a1..000000000 --- a/src/components/NavPills/NavPills.js +++ /dev/null @@ -1,131 +0,0 @@ -import React from "react"; -// nodejs library that concatenates classes -import classNames from "classnames"; -// nodejs library to set properties for components -import PropTypes from "prop-types"; -import SwipeableViews from "react-swipeable-views"; - -// @material-ui/core components -import { makeStyles } from "@material-ui/core/styles"; -import Tab from "@material-ui/core/Tab"; -import Tabs from "@material-ui/core/Tabs"; - -// core components -import GridContainer from "components/Grid/GridContainer.js"; -import GridItem from "components/Grid/GridItem.js"; - -import styles from "assets/jss/material-kit-pro-react/components/navPillsStyle.js"; - -const useStyles = makeStyles(styles); - -export default function NavPills(props) { - const [active, setActive] = React.useState(props.active); - const handleChange = (event, active) => { - setActive(active); - }; - const handleChangeIndex = index => { - setActive(index); - }; - const { tabs, direction, color, horizontal, alignCenter } = props; - const classes = useStyles(); - const flexContainerClasses = classNames({ - [classes.flexContainer]: true, - [classes.horizontalDisplay]: horizontal !== undefined - }); - const tabButtons = ( - - {tabs.map((prop, key) => { - var icon = {}; - if (prop.tabIcon !== undefined) { - icon["icon"] = ; - } - const pillsClasses = classNames({ - [classes.pills]: true, - [classes.horizontalPills]: horizontal !== undefined, - [classes.pillsWithIcons]: prop.tabIcon !== undefined - }); - return ( - - ); - })} - - ); - const tabContent = ( -
- - {tabs.map((prop, key) => { - return ( -
- {prop.tabContent} -
- ); - })} -
-
- ); - return horizontal !== undefined ? ( - - {tabButtons} - {tabContent} - - ) : ( -
- {tabButtons} - {tabContent} -
- ); -} - -NavPills.defaultProps = { - active: 0, - color: "primary" -}; - -NavPills.propTypes = { - // index of the default active pill - active: PropTypes.number, - tabs: PropTypes.arrayOf( - PropTypes.shape({ - tabButton: PropTypes.string, - tabIcon: PropTypes.object, - tabContent: PropTypes.node - }) - ).isRequired, - color: PropTypes.oneOf([ - "primary", - "warning", - "danger", - "success", - "info", - "rose" - ]), - direction: PropTypes.string, - horizontal: PropTypes.shape({ - tabsGrid: PropTypes.object, - contentGrid: PropTypes.object - }), - alignCenter: PropTypes.bool -}; diff --git a/src/components/NetworkConnectNotice/NetworkConnectNotice.js b/src/components/NetworkConnectNotice/NetworkConnectNotice.js new file mode 100644 index 000000000..0b7e958a6 --- /dev/null +++ b/src/components/NetworkConnectNotice/NetworkConnectNotice.js @@ -0,0 +1,116 @@ +import React, { useCallback, useMemo, useState } from 'react'; +import Button from '@material-ui/core/Button'; +import { networkSettings, networkSetup } from 'common/networkSetup'; +import { getNetworkAppUrl, getNetworkFriendlyName } from 'features/helpers/getNetworkData'; +import { makeStyles } from '@material-ui/core/styles'; +import styles from './styles'; +import { useTranslation } from 'react-i18next'; + +const useStyles = makeStyles(styles); +const targetNetworkId = window.REACT_APP_NETWORK_ID; + +export function NetworkConnectNotice({ + web3, + address, + networkId, + connectWallet, + disconnectWallet, +}) { + const [networkSetupError, setNetworkSetupError] = useState(null); + const { t } = useTranslation(); + const haveConnection = !!web3; + const haveAddress = !!address; + const isCorrectNetwork = networkId === targetNetworkId; + const isSupportedNetwork = networkId && networkId in networkSettings; + const targetNetworkFriendlyName = getNetworkFriendlyName(); + const classes = useStyles(); + let notice = null; + + const targetNetworkSetup = useCallback(() => { + setNetworkSetupError(null); + + networkSetup(targetNetworkId) + .then(() => { + setNetworkSetupError(null); + }) + .catch(e => { + if (typeof e === 'object' && typeof e.message === 'string') { + setNetworkSetupError(e.message); + } else if (typeof e === 'string') { + setNetworkSetupError(e); + } else { + setNetworkSetupError(t('Network-UnknownError')); + } + }); + }, [setNetworkSetupError, t]); + + const networkRedirect = url => { + window.location.assign(url); + window.location.reload(); + }; + + const supportedNetwork = useMemo(() => { + return isSupportedNetwork + ? { + id: networkId, + url: getNetworkAppUrl(networkId), + name: getNetworkFriendlyName(networkId), + } + : null; + }, [isSupportedNetwork, networkId]); + + if (!haveConnection) { + notice = ( + <> +
+ {t('Network-ConnectionRequired', { network: targetNetworkFriendlyName })} +
+
+ +
+ + ); + } else if (!isCorrectNetwork) { + notice = ( + <> +
+ {t('Network-Supports', { network: targetNetworkFriendlyName })}{' '} + {isSupportedNetwork + ? t('Network-ConnectedTo', { network: supportedNetwork.name }) + : t('Network-ConnectedUnsupported')} +
+
+ + {isSupportedNetwork ? ( + + ) : null} + +
+
{t('Network-SwitchNote')}
+ {networkSetupError ?
{networkSetupError}
: ''} + + ); + } else if (!haveAddress) { + notice = ( + <> +
+ {t('Network-ConnectedTo', { network: targetNetworkFriendlyName })} +
+
{t('Network-NoWalletAddress')}
+ + ); + } + + return notice ?
{notice}
: null; +} diff --git a/src/components/NetworkConnectNotice/styles.js b/src/components/NetworkConnectNotice/styles.js new file mode 100644 index 000000000..cbf20bd2b --- /dev/null +++ b/src/components/NetworkConnectNotice/styles.js @@ -0,0 +1,34 @@ +const styles = theme => ({ + notice: { + backgroundColor: theme.palette.background.secondary, + padding: 25, + marginBottom: 25, + textAlign: 'center', + color: theme.palette.primary.main, + '& > :last-child': { + marginBottom: 0, + }, + }, + message: { + marginBottom: 15, + }, + actions: { + margin: '-10px -10px 15px 0', + }, + button: { + border: '1px solid ' + theme.palette.background.border, + padding: '4px 8px', + backgroundColor: theme.palette.background.default, + textTransform: 'none', + margin: '10px 10px 0 0', + }, + note: { + marginBottom: 15, + fontStyle: 'italic', + }, + error: { + color: 'red', + }, +}); + +export default styles; diff --git a/src/components/NetworkRequired/NetworkRequired.js b/src/components/NetworkRequired/NetworkRequired.js new file mode 100644 index 000000000..05e1ba7fd --- /dev/null +++ b/src/components/NetworkRequired/NetworkRequired.js @@ -0,0 +1,37 @@ +import { useTranslation } from 'react-i18next'; +import { useConnectWallet } from '../../features/home/redux/connectWallet'; +import { getNetworkFriendlyName } from '../../features/helpers/getNetworkData'; +import React from 'react'; +import { makeStyles } from '@material-ui/core/styles'; +import styles from './styles'; +import classnames from 'classnames'; +import ValueLoader from '../../features/common/components/ValueLoader/ValueLoader'; + +const useStyles = makeStyles(styles); + +export function NetworkRequired({ children, inline = false, loader = false }) { + const { t } = useTranslation(); + const { web3, address } = useConnectWallet(); + const classes = useStyles(); + const targetNetworkFriendlyName = getNetworkFriendlyName(); + + if (!web3 || !address) { + if (loader) { + return ; + } + + return ( +
+ {t('Network-ConnectionRequired', { network: targetNetworkFriendlyName })} +
+ ); + } + + return children; +} diff --git a/src/components/NetworkRequired/styles.js b/src/components/NetworkRequired/styles.js new file mode 100644 index 000000000..93b6a7eed --- /dev/null +++ b/src/components/NetworkRequired/styles.js @@ -0,0 +1,25 @@ +const styles = theme => ({ + common: { + padding: 20, + color: theme.palette.primary.main, + textAlign: 'center', + width: '100%', + '& > :last-child': { + marginBottom: 0, + }, + }, + contained: { + backgroundColor: theme.palette.background.primary, + border: `1px solid ${theme.palette.background.border}`, + borderRadius: '8px', + marginBottom: 25, + color: theme.palette.primary.main, + width: '100%', + '& > :last-child': { + marginBottom: 0, + }, + }, + inline: {}, +}); + +export default styles; diff --git a/src/components/NetworksModal/NetworksModal.js b/src/components/NetworksModal/NetworksModal.js new file mode 100644 index 000000000..d746d1114 --- /dev/null +++ b/src/components/NetworksModal/NetworksModal.js @@ -0,0 +1,76 @@ +import React, { memo, useCallback } from 'react'; +import { makeStyles } from '@material-ui/core/styles'; +import { Dialog, Grid, IconButton, withStyles } from '@material-ui/core'; +import { useTranslation } from 'react-i18next'; +import { Close } from '@material-ui/icons'; +import { getSingleAssetSrc } from '../../features/helpers/getSingleAssetSrc'; +import { allNetworks } from '../../network'; + +import styles from './styles'; + +const useStyles = makeStyles(styles); + +const StyledDialog = withStyles(theme => ({ + paper: { + margin: '16px', + backgroundColor: theme.palette.background.primary, + }, + paperScrollPaper: { + maxHeight: 'calc(100% - 32px)', + }, +}))(Dialog); + +const NetworksModal = memo(function NetworksModal({ isOpen, handleClose, currentNetwork }) { + const classes = useStyles(); + const { t } = useTranslation(); + + const handleNetworkClick = useCallback( + network => { + if (network.id === currentNetwork.id) { + handleClose(); + } else { + window.location.hash = network.hash; + window.location.reload(); + } + }, + [currentNetwork, handleClose] + ); + + return ( + +
+ + + +

{t('Select-Network')}

+
+
+ + {allNetworks.map(network => ( + +
handleNetworkClick(network)} + className={classes.network} + key={network.id} + > + {`${currentNetwork.name}`} +
+ {network.id === currentNetwork.id &&
} +

{network.name}

+
+
+ + ))} + +
+
+
+ + ); +}); + +export default NetworksModal; diff --git a/src/components/NetworksModal/styles.js b/src/components/NetworksModal/styles.js new file mode 100644 index 000000000..af70f383e --- /dev/null +++ b/src/components/NetworksModal/styles.js @@ -0,0 +1,99 @@ +import { successColor } from 'assets/jss/material-kit-pro-react'; + +const styles = theme => ({ + close: { + position: 'absolute', + right: '8px', + top: '8px', + }, + modalInner: { + '@media (min-width:464px)': { + padding: '16px', + }, + }, + title: { + padding: '16px', + fontSize: '24px', + margin: '0', + letterSpacing: '0', + lineHeight: '1', + fontWeight: '550', + color: theme.palette.text.primary, + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + '@media (min-width:464px)': {}, + [theme.breakpoints.up('md')]: { + fontSize: '32px', + }, + }, + networks: { + overflow: 'hidden', + padding: '16px 0', + }, + networksInner: { + display: 'flex', + justifyContent: 'center', + alignItems: 'center', + flexWrap: 'wrap', + marginTop: '-32px', + [theme.breakpoints.up('md')]: { + marginTop: '-32px', + }, + }, + network: { + padding: '32px 16px 0 16px', + flexBasis: '130px', + flexGrow: '0', + flexShrink: '0', + textAlign: 'center', + transition: 'all 300ms ease 0s', + '&:hover': { + cursor: 'pointer', + transform: `scale(1.1)`, + }, + [theme.breakpoints.up('md')]: { + padding: '32px 32px 0 32px', + flexBasis: '164px', + }, + [theme.breakpoints.up('lg')]: { + flexGrow: '1', + }, + }, + logo: { + display: 'block', + margin: '0 auto', + width: '75px', + height: '75px', + [theme.breakpoints.up('md')]: { + width: '100px', + }, + [theme.breakpoints.down('sm')]: { + width: '60px', + height: '60px', + }, + }, + connected: { + width: '10px', + height: '10px', + backgroundColor: successColor[1], + borderRadius: '50%', + margin: 'auto 8px auto -10px', + }, + tag: { + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + marginTop: '8px', + }, + networkName: { + margin: '0', + fontWeight: 'bold', + color: theme.palette.text.primary, + [theme.breakpoints.down('sm')]: { + fontSize: '14px', + }, + }, +}); + +export default styles; diff --git a/src/components/NetworksToggle/NetworksToggle.js b/src/components/NetworksToggle/NetworksToggle.js new file mode 100644 index 000000000..e8b8c3d55 --- /dev/null +++ b/src/components/NetworksToggle/NetworksToggle.js @@ -0,0 +1,39 @@ +import React, { memo, useCallback, useMemo, useState } from 'react'; +import { makeStyles } from '@material-ui/core/styles'; +import { getSingleAssetSrc } from '../../features/helpers/getSingleAssetSrc'; +import NetworksModal from '../NetworksModal/NetworksModal'; +import { allNetworks } from '../../network'; +import styles from './styles'; + +const useStyles = makeStyles(styles); + +const NetworksToggle = memo(function () { + const classes = useStyles(); + const [isOpen, setIsOpen] = useState(false); + const currentNetwork = useMemo( + () => allNetworks.find(network => network.id === window.REACT_APP_NETWORK_ID), + [] + ); + + const handleClose = useCallback(() => setIsOpen(false), [setIsOpen]); + const handleOpen = useCallback(() => setIsOpen(true), [setIsOpen]); + + return ( + <> +
+ {`${currentNetwork.asset} +
+
+

{currentNetwork.name}

+
+
+ + + ); +}); + +export default NetworksToggle; diff --git a/src/components/NetworksToggle/styles.js b/src/components/NetworksToggle/styles.js new file mode 100644 index 000000000..a47674639 --- /dev/null +++ b/src/components/NetworksToggle/styles.js @@ -0,0 +1,36 @@ +import { successColor } from 'assets/jss/material-kit-pro-react.js'; + +const styles = theme => ({ + container: { + display: 'inline-flex', + borderRadius: '35px', + backgroundColor: theme.palette.background.secondary, + '&:hover': { + backgroundColor: theme.palette.background.border, + cursor: 'pointer', + }, + padding: '0 16px 0 0', + alignItems: 'center', + }, + logo: { + height: '40px', + }, + connected: { + width: '10px', + height: '10px', + backgroundColor: successColor[1], + borderRadius: '50%', + }, + tag: { + display: 'flex', + alignItems: 'center', + marginLeft: '16px', + }, + networkName: { + margin: '0 0 0 8px', + fontWeight: 'bold', + color: theme.palette.primary.main, + }, +}); + +export default styles; diff --git a/src/components/Pagination/Pagination.js b/src/components/Pagination/Pagination.js deleted file mode 100644 index c16f8a770..000000000 --- a/src/components/Pagination/Pagination.js +++ /dev/null @@ -1,69 +0,0 @@ -import React from "react"; -// nodejs library to set properties for components -import PropTypes from "prop-types"; -// nodejs library that concatenates classes -import classNames from "classnames"; - -// @material-ui/core components -import { makeStyles } from "@material-ui/core/styles"; -import Button from "@material-ui/core/Button"; - -import styles from "assets/jss/material-kit-pro-react/components/paginationStyle.js"; - -const useStyles = makeStyles(styles); - -export default function Pagination(props) { - const { pages, color, className } = props; - const classes = useStyles(); - const paginationClasses = classNames(classes.pagination, className); - return ( -
    - {pages.map((prop, key) => { - const paginationLink = classNames({ - [classes.paginationLink]: true, - [classes[color]]: prop.active, - [classes.disabled]: prop.disabled - }); - return ( -
  • - {prop.onClick !== undefined ? ( - - ) : ( - - )} -
  • - ); - })} -
- ); -} - -Pagination.defaultProps = { - color: "primary" -}; - -Pagination.propTypes = { - pages: PropTypes.arrayOf( - PropTypes.shape({ - active: PropTypes.bool, - disabled: PropTypes.bool, - text: PropTypes.oneOfType([PropTypes.number, PropTypes.string]) - .isRequired, - onClick: PropTypes.func - }) - ).isRequired, - color: PropTypes.oneOf(["primary", "info", "success", "warning", "danger"]), - className: PropTypes.string -}; diff --git a/src/components/Parallax/Parallax.js b/src/components/Parallax/Parallax.js deleted file mode 100644 index 0e3604187..000000000 --- a/src/components/Parallax/Parallax.js +++ /dev/null @@ -1,75 +0,0 @@ -import React from "react"; -// nodejs library that concatenates classes -import classNames from "classnames"; -// nodejs library to set properties for components -import PropTypes from "prop-types"; -// @material-ui/core components -import { makeStyles } from "@material-ui/core/styles"; - -// core components -import styles from "assets/jss/material-kit-pro-react/components/parallaxStyle.js"; - -const useStyles = makeStyles(styles); - -export default function Parallax(props) { - let windowScrollTop; - if (window.innerWidth >= 768) { - windowScrollTop = window.pageYOffset / 3; - } else { - windowScrollTop = 0; - } - const [transform, setTransform] = React.useState( - "translate3d(0," + windowScrollTop + "px,0)" - ); - React.useEffect(() => { - if (window.innerWidth >= 768) { - window.addEventListener("scroll", resetTransform); - } - return function cleanup() { - if (window.innerWidth >= 768) { - window.removeEventListener("scroll", resetTransform); - } - }; - }); - const resetTransform = () => { - var windowScrollTop = window.pageYOffset / 3; - setTransform("translate3d(0," + windowScrollTop + "px,0)"); - }; - const { filter, className, children, style, image, small } = props; - const classes = useStyles(); - const parallaxClasses = classNames({ - [classes.parallax]: true, - [classes[filter + "Color"]]: filter !== undefined, - [classes.small]: small, - [className]: className !== undefined - }); - return ( -
- {children} -
- ); -} - -Parallax.propTypes = { - className: PropTypes.string, - filter: PropTypes.oneOf([ - "primary", - "rose", - "dark", - "info", - "success", - "warning", - "danger" - ]), - children: PropTypes.node, - style: PropTypes.string, - image: PropTypes.string, - small: PropTypes.bool -}; diff --git a/src/components/Pastures/Pastures.js b/src/components/Pastures/Pastures.js new file mode 100644 index 000000000..789f51d69 --- /dev/null +++ b/src/components/Pastures/Pastures.js @@ -0,0 +1,30 @@ +import React, { useEffect, useState, memo } from 'react'; +import { makeStyles } from '@material-ui/core/styles'; + +import Cow from '../Cow/Cow'; +import styles from './style'; + +const useStyles = makeStyles(styles); + +const Pastures = () => { + const classes = useStyles(); + const [cows, setCows] = useState([]); + + useEffect(() => { + let n = Math.ceil(Math.random() * 3) + 3; + setCows(new Array(n).fill(0)); + }, []); + + return ( +
+
+
+
+
+ {cows && + cows.map((_, index) => )} +
+ ); +}; + +export default memo(Pastures); diff --git a/src/components/Pastures/style.js b/src/components/Pastures/style.js new file mode 100644 index 000000000..433cbb4d8 --- /dev/null +++ b/src/components/Pastures/style.js @@ -0,0 +1,47 @@ +const pastureStyle = theme => ({ + root: { + display: 'none', + position: 'relative', + '@media (min-width: 769px)': { + display: 'block', + }, + }, + pastureLeft: { + position: 'absolute', + bottom: '-40rem', + left: '-30rem', + width: '50rem', + height: '50rem', + borderRadius: '50%', + backgroundColor: '#78b388', + }, + pastureCenterBg: { + position: 'absolute', + bottom: '-23rem', + left: '-25vw', + width: '100vw', + height: '30rem', + borderRadius: '50%', + backgroundColor: '#5a8f69', + }, + pastureCenterFg: { + position: 'absolute', + bottom: '-23rem', + right: '-15vw', + width: '70vw', + height: '30rem', + borderRadius: '50%', + backgroundColor: '#78b388', + }, + pastureRight: { + position: 'absolute', + bottom: '-48rem', + right: '-40rem', + width: '60rem', + height: '60rem', + borderRadius: '50%', + backgroundColor: '#5a8f69', + }, +}); + +export default pastureStyle; diff --git a/src/components/Snackbar/SnackbarContent.js b/src/components/Snackbar/SnackbarContent.js index 9b50c46f6..0591c2343 100644 --- a/src/components/Snackbar/SnackbarContent.js +++ b/src/components/Snackbar/SnackbarContent.js @@ -1,16 +1,11 @@ -import React from "react"; -// nodejs library to set properties for components -import PropTypes from "prop-types"; -// @material-ui/core components -import { makeStyles } from "@material-ui/core/styles"; -import Snack from "@material-ui/core/SnackbarContent"; -import IconButton from "@material-ui/core/IconButton"; -import Icon from "@material-ui/core/Icon"; -// @material-ui/icons -import Close from "@material-ui/icons/Close"; -// core components +import React from 'react'; +import { makeStyles } from '@material-ui/core/styles'; +import Snack from '@material-ui/core/SnackbarContent'; +import IconButton from '@material-ui/core/IconButton'; +import Icon from '@material-ui/core/Icon'; +import Close from '@material-ui/icons/Close'; -import styles from "assets/jss/material-kit-pro-react/components/snackbarContentStyle.js"; +import styles from './styles'; const useStyles = makeStyles(styles); @@ -31,15 +26,15 @@ export default function SnackbarContent(props) { onClick={closeAlert} > - + , ]; } let snackIcon = null; switch (typeof icon) { - case "object": + case 'object': snackIcon = ; break; - case "string": + case 'string': snackIcon = {props.icon}; break; default: @@ -56,17 +51,10 @@ export default function SnackbarContent(props) {
} classes={{ - root: classes.root + " " + classes[color], - message: classes.message + " " + classes.container + root: classes.root + ' ' + classes[color], + message: classes.message + ' ' + classes.container, }} /> ); return alert; } - -SnackbarContent.propTypes = { - message: PropTypes.node.isRequired, - color: PropTypes.oneOf(["info", "success", "warning", "danger", "primary"]), - close: PropTypes.bool, - icon: PropTypes.oneOfType([PropTypes.object, PropTypes.string]) -}; diff --git a/src/components/Snackbar/styles.js b/src/components/Snackbar/styles.js new file mode 100644 index 000000000..3741540cd --- /dev/null +++ b/src/components/Snackbar/styles.js @@ -0,0 +1,50 @@ +import { defaultFont, container, grayColor } from 'assets/jss/material-kit-pro-react.js'; + +const styles = { + root: { + ...defaultFont, + position: 'relative', + padding: '20px 15px', + lineHeight: '20px', + marginBottom: '20px', + fontSize: '14px', + backgroundColor: 'white', + color: grayColor[15], + borderRadius: '3px', + maxWidth: '100%', + minWidth: 'auto', + }, + + message: { + padding: '0', + display: 'block', + maxWidth: '89%', + }, + close: { + width: '20px', + height: '20px', + }, + iconButton: { + width: '24px', + height: '24px', + float: 'right', + fontSize: '1.5rem', + fontWeight: '500', + lineHeight: '1', + position: 'absolute', + right: '-4px', + top: '0', + padding: '0', + }, + icon: { + display: 'block', + float: 'left', + marginRight: '1.071rem', + }, + container: { + ...container, + position: 'relative', + }, +}; + +export default styles; diff --git a/src/components/Table/Table.js b/src/components/Table/Table.js deleted file mode 100644 index 04dfe5d4e..000000000 --- a/src/components/Table/Table.js +++ /dev/null @@ -1,197 +0,0 @@ -import React from "react"; -import cx from "classnames"; -import PropTypes from "prop-types"; - -// @material-ui/core components -import { makeStyles } from "@material-ui/core/styles"; -import Table from "@material-ui/core/Table"; -import TableBody from "@material-ui/core/TableBody"; -import TableCell from "@material-ui/core/TableCell"; -import TableHead from "@material-ui/core/TableHead"; -import TableRow from "@material-ui/core/TableRow"; - -import styles from "assets/jss/material-kit-pro-react/components/tableStyle.js"; - -const useStyles = makeStyles(styles); - -export default function CustomTable(props) { - const { - tableHead, - tableData, - tableHeaderColor, - hover, - colorsColls, - coloredColls, - customCellClasses, - customClassesForCells, - striped, - tableShopping, - customHeadCellClasses, - customHeadClassesForCells - } = props; - const classes = useStyles(); - return ( -
- - {tableHead !== undefined ? ( - - - {tableHead.map((prop, key) => { - const tableCellClasses = - classes.tableHeadCell + - " " + - classes.tableCell + - " " + - cx({ - [customHeadCellClasses[ - customHeadClassesForCells.indexOf(key) - ]]: customHeadClassesForCells.indexOf(key) !== -1, - [classes.tableShoppingHead]: tableShopping - }); - return ( - - {prop} - - ); - })} - - - ) : null} - - {tableData.map((prop, key) => { - var rowColor = ""; - var rowColored = false; - if (prop.color !== undefined) { - rowColor = prop.color; - rowColored = true; - prop = prop.data; - } - const tableRowClasses = cx({ - [classes.tableRowHover]: hover, - [classes[rowColor + "Row"]]: rowColored, - [classes.tableStripedRow]: striped && key % 2 === 0 - }); - if (prop.total) { - return ( - - - - Total - - - {prop.amount} - - {tableHead.length - (prop.colspan - 0 + 2) > 0 ? ( - - ) : null} - - ); - } - if (prop.purchase) { - return ( - - - - Total - - - {prop.amount} - - - {prop.col.text} - - - ); - } - return ( - - {prop.map((prop, key) => { - const tableCellClasses = - classes.tableCell + - " " + - cx({ - [classes[colorsColls[coloredColls.indexOf(key)]]]: - coloredColls.indexOf(key) !== -1, - [customCellClasses[customClassesForCells.indexOf(key)]]: - customClassesForCells.indexOf(key) !== -1 - }); - return ( - - {prop} - - ); - })} - - ); - })} - -
-
- ); -} - -CustomTable.defaultProps = { - tableHeaderColor: "gray", - hover: false, - colorsColls: [], - coloredColls: [], - striped: false, - customCellClasses: [], - customClassesForCells: [], - customHeadCellClasses: [], - customHeadClassesForCells: [] -}; - -CustomTable.propTypes = { - tableHeaderColor: PropTypes.oneOf([ - "warning", - "primary", - "danger", - "success", - "info", - "rose", - "gray" - ]), - tableHead: PropTypes.arrayOf(PropTypes.string), - // Of(PropTypes.arrayOf(PropTypes.node)) || Of(PropTypes.object), - tableData: PropTypes.array, - hover: PropTypes.bool, - coloredColls: PropTypes.arrayOf(PropTypes.number), - // Of(["warning","primary","danger","success","info","rose","gray"]) - colorsColls - colorsColls: PropTypes.array, - customCellClasses: PropTypes.arrayOf(PropTypes.string), - customClassesForCells: PropTypes.arrayOf(PropTypes.number), - customHeadCellClasses: PropTypes.arrayOf(PropTypes.string), - customHeadClassesForCells: PropTypes.arrayOf(PropTypes.number), - striped: PropTypes.bool, - // this will cause some changes in font - tableShopping: PropTypes.bool -}; diff --git a/src/components/Transak/Transak.js b/src/components/Transak/Transak.js new file mode 100644 index 000000000..d310d69ee --- /dev/null +++ b/src/components/Transak/Transak.js @@ -0,0 +1,37 @@ +import React from 'react'; +import transakSDK from '@transak/transak-sdk'; +import { Button } from '@material-ui/core'; + +const TransakNav = ({ className, children, ...props }) => { + const { REACT_APP_TRANSAK_API_KEY, REACT_APP_ENVIRONMENT } = process.env; + + const transak = new transakSDK({ + apiKey: REACT_APP_TRANSAK_API_KEY, + environment: REACT_APP_ENVIRONMENT, // STAGING/PRODUCTION (Required) + walletAddress: '', + themeColor: '59A662', + email: '', + hostURL: window.location.origin, + widgetHeight: '550px', + widgetWidth: '450px', + defaultNetwork: 'bsc', + defaultCryptoCurrency: 'bifi', + networks: 'arbitrum,avaxcchain,polygon,bsc,celo,fantom,moonriver', // NETWORK PREFFERENCES + cryptoCurrencyList: + 'eth,weth,usdt,usdc,matic,dai,qi,bnb,bifi,avax,ftm,cusd,ceur,movr,aave,sushi,busd,quick,celo,wbtc', + defaultCryptoAmount: 1, + }); + + function initTransak() { + transak.init(); + } + + return ( + + ); +}; + +const Transak = React.memo(TransakNav); +export default Transak; diff --git a/src/components/Typography/Danger.js b/src/components/Typography/Danger.js deleted file mode 100644 index 5ba2fce98..000000000 --- a/src/components/Typography/Danger.js +++ /dev/null @@ -1,23 +0,0 @@ -import React from "react"; -// nodejs library to set properties for components -import PropTypes from "prop-types"; -// @material-ui/core components -import { makeStyles } from "@material-ui/core/styles"; -// core components -import styles from "assets/jss/material-kit-pro-react/components/typographyStyle.js"; - -const useStyles = makeStyles(styles); - -export default function Danger(props) { - const { children } = props; - const classes = useStyles(); - return ( -
- {children} -
- ); -} - -Danger.propTypes = { - children: PropTypes.node -}; diff --git a/src/components/Typography/Info.js b/src/components/Typography/Info.js deleted file mode 100644 index 0fdde44e5..000000000 --- a/src/components/Typography/Info.js +++ /dev/null @@ -1,23 +0,0 @@ -import React from "react"; -// nodejs library to set properties for components -import PropTypes from "prop-types"; -// @material-ui/core components -import { makeStyles } from "@material-ui/core/styles"; -// core components -import styles from "assets/jss/material-kit-pro-react/components/typographyStyle.js"; - -const useStyles = makeStyles(styles); - -export default function Info(props) { - const { children } = props; - const classes = useStyles(); - return ( -
- {children} -
- ); -} - -Info.propTypes = { - children: PropTypes.node -}; diff --git a/src/components/Typography/Muted.js b/src/components/Typography/Muted.js deleted file mode 100644 index f55ffbc87..000000000 --- a/src/components/Typography/Muted.js +++ /dev/null @@ -1,23 +0,0 @@ -import React from "react"; -// nodejs library to set properties for components -import PropTypes from "prop-types"; -// @material-ui/core components -import { makeStyles } from "@material-ui/core/styles"; -// core components -import styles from "assets/jss/material-kit-pro-react/components/typographyStyle.js"; - -const useStyles = makeStyles(styles); - -export default function Muted(props) { - const { children } = props; - const classes = useStyles(); - return ( -
- {children} -
- ); -} - -Muted.propTypes = { - children: PropTypes.node -}; diff --git a/src/components/Typography/Primary.js b/src/components/Typography/Primary.js deleted file mode 100644 index fcdc27bcb..000000000 --- a/src/components/Typography/Primary.js +++ /dev/null @@ -1,23 +0,0 @@ -import React from "react"; -// nodejs library to set properties for components -import PropTypes from "prop-types"; -// @material-ui/core components -import { makeStyles } from "@material-ui/core/styles"; -// core components -import styles from "assets/jss/material-kit-pro-react/components/typographyStyle.js"; - -const useStyles = makeStyles(styles); - -export default function Primary(props) { - const { children } = props; - const classes = useStyles(); - return ( -
- {children} -
- ); -} - -Primary.propTypes = { - children: PropTypes.node -}; diff --git a/src/components/Typography/Quote.js b/src/components/Typography/Quote.js deleted file mode 100644 index 06c3a0871..000000000 --- a/src/components/Typography/Quote.js +++ /dev/null @@ -1,38 +0,0 @@ -import React from "react"; -// nodejs library that concatenates classes -import classNames from "classnames"; -// nodejs library to set properties for components -import PropTypes from "prop-types"; -// @material-ui/core components -import { makeStyles } from "@material-ui/core/styles"; -// core components -import styles from "assets/jss/material-kit-pro-react/components/typographyStyle.js"; - -const useStyles = makeStyles(styles); - -export default function Quote(props) { - const { text, author, authorClassName, textClassName } = props; - const classes = useStyles(); - const quoteClasses = classNames(classes.defaultFontStyle, classes.quote); - const quoteTextClasses = classNames({ - [classes.quoteText]: true, - [textClassName]: textClassName !== undefined - }); - const quoteAuthorClasses = classNames({ - [classes.quoteAuthor]: true, - [authorClassName]: authorClassName !== undefined - }); - return ( -
-

{text}

- {author} -
- ); -} - -Quote.propTypes = { - text: PropTypes.node, - author: PropTypes.node, - textClassName: PropTypes.string, - authorClassName: PropTypes.string -}; diff --git a/src/components/Typography/Rose.js b/src/components/Typography/Rose.js deleted file mode 100644 index 1be8f7200..000000000 --- a/src/components/Typography/Rose.js +++ /dev/null @@ -1,23 +0,0 @@ -import React from "react"; -// nodejs library to set properties for components -import PropTypes from "prop-types"; -// @material-ui/core components -import { makeStyles } from "@material-ui/core/styles"; -// core components -import styles from "assets/jss/material-kit-pro-react/components/typographyStyle.js"; - -const useStyles = makeStyles(styles); - -export default function Rose(props) { - const { children } = props; - const classes = useStyles(); - return ( -
- {children} -
- ); -} - -Rose.propTypes = { - children: PropTypes.node -}; diff --git a/src/components/Typography/Small.js b/src/components/Typography/Small.js deleted file mode 100644 index 1df43aa90..000000000 --- a/src/components/Typography/Small.js +++ /dev/null @@ -1,23 +0,0 @@ -import React from "react"; -// nodejs library to set properties for components -import PropTypes from "prop-types"; -// @material-ui/core components -import { makeStyles } from "@material-ui/core/styles"; -// core components -import styles from "assets/jss/material-kit-pro-react/components/typographyStyle.js"; - -const useStyles = makeStyles(styles); - -export default function Small(props) { - const { children } = props; - const classes = useStyles(); - return ( -
- {children} -
- ); -} - -Small.propTypes = { - children: PropTypes.node -}; diff --git a/src/components/Typography/Success.js b/src/components/Typography/Success.js deleted file mode 100644 index 73d4febfc..000000000 --- a/src/components/Typography/Success.js +++ /dev/null @@ -1,23 +0,0 @@ -import React from "react"; -// nodejs library to set properties for components -import PropTypes from "prop-types"; -// @material-ui/core components -import { makeStyles } from "@material-ui/core/styles"; -// core components -import styles from "assets/jss/material-kit-pro-react/components/typographyStyle.js"; - -const useStyles = makeStyles(styles); - -export default function Success(props) { - const { children } = props; - const classes = useStyles(); - return ( -
- {children} -
- ); -} - -Success.propTypes = { - children: PropTypes.node -}; diff --git a/src/components/Typography/Warning.js b/src/components/Typography/Warning.js deleted file mode 100644 index efb28e0f3..000000000 --- a/src/components/Typography/Warning.js +++ /dev/null @@ -1,23 +0,0 @@ -import React from "react"; -// nodejs library to set properties for components -import PropTypes from "prop-types"; -// @material-ui/core components -import { makeStyles } from "@material-ui/core/styles"; -// core components -import styles from "assets/jss/material-kit-pro-react/components/typographyStyle.js"; - -const useStyles = makeStyles(styles); - -export default function Warning(props) { - const { children } = props; - const classes = useStyles(); - return ( -
- {children} -
- ); -} - -Warning.propTypes = { - children: PropTypes.node -}; diff --git a/src/components/V2Banner/V2Banner.js b/src/components/V2Banner/V2Banner.js new file mode 100644 index 000000000..e574654b0 --- /dev/null +++ b/src/components/V2Banner/V2Banner.js @@ -0,0 +1,34 @@ +import React, { memo } from 'react'; +import { useTranslation } from 'react-i18next'; +import { makeStyles } from '@material-ui/core/styles'; +import Grid from '@material-ui/core/Grid'; +import Typography from '@material-ui/core/Typography'; +import Box from '@material-ui/core/Box'; + +import styles from './styles'; + +const useStyles = makeStyles(styles); + +const V2Banner = () => { + const { t } = useTranslation(); + const classes = useStyles(); + + return ( + + + {t('V2Banner-Title')} + {t('V2Banner-Text')} + + + {t('V2Banner-Button')} + + + ); +}; + +export default memo(V2Banner); diff --git a/src/components/V2Banner/styles.js b/src/components/V2Banner/styles.js new file mode 100644 index 000000000..580fcb595 --- /dev/null +++ b/src/components/V2Banner/styles.js @@ -0,0 +1,45 @@ +const styles = theme => ({ + root: { + backgroundColor: theme.palette.background.secondary, + border: '1px solid ' + theme.palette.background.border, + padding: '24px', + margin: '24px 0', + }, + textContainer: { + flexGrow: '1', + }, + title: { + color: theme.palette.text.primary, + fontSize: '16px', + fontWeight: '700', + }, + text: { + color: theme.palette.text.primary, + fontSize: '16px', + fontWeight: '400', + }, + btn: { + textDecoration: 'none', + backgroundColor: theme.palette.text.primary, + fontWeight: '700', + borderRadius: '4px', + fontSize: '14px', + lineHeight: '20px', + textTransform: 'none', + color: theme.palette.text.flipped, + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + padding: '12px 32px', + [theme.breakpoints.down('md')]: { + marginTop: '24px', + width: '100%', + }, + '&:Hover': { + backgroundColor: theme.palette.text.primary, + color: theme.palette.text.flipped, + }, + }, +}); + +export default styles; diff --git a/src/features/common/Notifier.js b/src/features/common/Notifier.js index c4967ab63..1db6c2d83 100644 --- a/src/features/common/Notifier.js +++ b/src/features/common/Notifier.js @@ -3,57 +3,60 @@ import { useDispatch, useSelector } from 'react-redux'; import { useSnackbar } from 'notistack'; import { removeSnackbar } from './redux/actions'; import Button from '@material-ui/core/Button'; +import { getNetworkTxUrl } from '../helpers/getNetworkData'; let displayed = []; const Notifier = () => { - const dispatch = useDispatch(); - const notifications = useSelector(store => store.common.notifications || []); - const { enqueueSnackbar, closeSnackbar } = useSnackbar(); - - const storeDisplayed = (id) => { - displayed = [...displayed, id]; - }; - - const removeDisplayed = (id) => { - displayed = [...displayed.filter(key => id !== key)]; - }; - - React.useEffect(() => { - notifications.forEach(({ key, message, options = {}, dismissed = false, hash }) => { - if (dismissed) { - // dismiss snackbar using notistack - closeSnackbar(key); - return; - } - - // do nothing if snackbar is already displayed - if (displayed.includes(key)) return; - - // display snackbar using notistack - enqueueSnackbar(message, { - key, - ...options, - onClose: (event, reason, myKey) => { - if (options.onClose) { - options.onClose(event, reason, myKey); - } - }, - onExited: (event, myKey) => { - // remove this snackbar from redux store - dispatch(removeSnackbar(myKey)); - removeDisplayed(myKey); - }, - autoHideDuration: 3000, - action: hash?()=>:null - }); - - // keep track of snackbars that we've displayed - storeDisplayed(key); - }); - }, [notifications, closeSnackbar, enqueueSnackbar, dispatch]); - - return null; + const dispatch = useDispatch(); + const notifications = useSelector(store => store.common.notifications || []); + const { enqueueSnackbar, closeSnackbar } = useSnackbar(); + + const storeDisplayed = id => { + displayed = [...displayed, id]; + }; + + const removeDisplayed = id => { + displayed = [...displayed.filter(key => id !== key)]; + }; + + React.useEffect(() => { + notifications.forEach(({ key, message, options = {}, dismissed = false, hash }) => { + if (dismissed) { + // dismiss snackbar using notistack + closeSnackbar(key); + return; + } + + // do nothing if snackbar is already displayed + if (displayed.includes(key)) return; + + // display snackbar using notistack + enqueueSnackbar(message, { + key, + ...options, + onClose: (event, reason, myKey) => { + if (options.onClose) { + options.onClose(event, reason, myKey); + } + }, + onExited: (event, myKey) => { + // remove this snackbar from redux store + dispatch(removeSnackbar(myKey)); + removeDisplayed(myKey); + }, + autoHideDuration: 3000, + action: hash + ? () => + : null, + }); + + // keep track of snackbars that we've displayed + storeDisplayed(key); + }); + }, [notifications, closeSnackbar, enqueueSnackbar, dispatch]); + + return null; }; -export default Notifier; \ No newline at end of file +export default Notifier; diff --git a/src/features/common/PageNotFound.js b/src/features/common/PageNotFound.js deleted file mode 100644 index c22e1d70b..000000000 --- a/src/features/common/PageNotFound.js +++ /dev/null @@ -1,55 +0,0 @@ -/*eslint-disable*/ -import React, { useEffect } from "react"; -// @material-ui/core components -import { makeStyles } from "@material-ui/core/styles"; -import List from "@material-ui/core/List"; -import ListItem from "@material-ui/core/ListItem"; -// @material-ui/icons -import Favorite from "@material-ui/icons/Favorite"; -// core components -import Header from "components/Header/Header.js"; -import HeaderLinks from "components/Header/HeaderLinks.js"; -import FooterLinks from 'components/Footer/FooterLinks.js' -import Footer from "components/Footer/Footer.js"; -import GridContainer from "components/Grid/GridContainer.js"; -import GridItem from "components/Grid/GridItem.js"; - -import errorPageStyle from "assets/jss/material-kit-pro-react/views/errorPageStyles.js"; - -import image from "assets/img/clint-mckoy.jpg"; - -const useStyles = makeStyles(errorPageStyle); - -export default function PageNotFound({ ...rest }) { - useEffect(() => { - window.scrollTo(0, 0); - document.body.scrollTop = 0; - }); - const classes = useStyles(); - return ( -
-
- {/*
*/} -
- - -

404

-

Page not found :(

-

- Ooooups! Looks like you got lost. -

-
-
-
- {/*
*/} -
-
- ); -} diff --git a/src/features/common/components/ValueLoader/ValueLoader.js b/src/features/common/components/ValueLoader/ValueLoader.js new file mode 100644 index 000000000..40ff4af32 --- /dev/null +++ b/src/features/common/components/ValueLoader/ValueLoader.js @@ -0,0 +1,22 @@ +import React from 'react'; +import { useTheme } from '@material-ui/core/styles'; +import ContentLoader from 'react-content-loader'; + +const ValueLoader = props => { + const theme = useTheme(); + + return ( + + + + ); +}; + +export default ValueLoader; diff --git a/src/features/common/getPageMeta.js b/src/features/common/getPageMeta.js new file mode 100644 index 000000000..c7e92ca07 --- /dev/null +++ b/src/features/common/getPageMeta.js @@ -0,0 +1,43 @@ +import { useTranslation } from 'react-i18next'; +import { useCallback } from 'react'; +import { getNetworkFriendlyName } from '../helpers/getNetworkData'; + +const translate = (data, key, t) => t(key, data); +const appendTitle = str => str + APPEND_TITLE; +const translateAppendTitle = (data, key, t) => appendTitle(translate(data, key, t)); + +// Appended to title and og:title +const APPEND_TITLE = ' | Beefy Finance'; + +// Defined here to avoid adding an entry to translation.json where not needed +const PAGE_META = { + 'App-Meta-Title': ({ networkName }) => appendTitle(`${networkName}`), + 'Vault-Meta-Title': ({ vaultName, vaultDescription, networkName }) => + appendTitle(`${vaultName} - ${vaultDescription} - ${networkName}`), + 'App-Meta-Description': translate, + 'Stakes-Meta-Title': translateAppendTitle, + 'Stake-Meta-Title': translateAppendTitle, +}; + +function getPageMeta(t, key, data = {}) { + const networkName = getNetworkFriendlyName(); + + // add common data + data = { networkName, ...data }; + + // handle meta defined above + if (PAGE_META.hasOwnProperty(key)) { + return PAGE_META[key](data, key, t); + } + + // fallback to translation + return t(key, data); +} + +export function usePageMeta() { + const { t } = useTranslation(); + + return { + getPageMeta: useCallback((key, data) => getPageMeta(t, key, data), [t]), + }; +} diff --git a/src/features/common/index.js b/src/features/common/index.js index c6ea5984f..d18ed7519 100644 --- a/src/features/common/index.js +++ b/src/features/common/index.js @@ -1,2 +1 @@ -export { default as PageNotFound } from './PageNotFound'; export { default as Notifier } from './Notifier'; diff --git a/src/features/common/redux/actions.js b/src/features/common/redux/actions.js index 327be4b95..e3b5536f0 100644 --- a/src/features/common/redux/actions.js +++ b/src/features/common/redux/actions.js @@ -1 +1 @@ -export { enqueueSnackbar, closeSnackbar, removeSnackbar } from './snackbar' \ No newline at end of file +export { enqueueSnackbar, closeSnackbar, removeSnackbar } from './snackbar'; diff --git a/src/features/common/redux/constants.js b/src/features/common/redux/constants.js index 12179cbad..e8097af6c 100644 --- a/src/features/common/redux/constants.js +++ b/src/features/common/redux/constants.js @@ -1,3 +1,3 @@ export const ENQUEUE_SNACKBAR = 'ENQUEUE_SNACKBAR'; export const CLOSE_SNACKBAR = 'CLOSE_SNACKBAR'; -export const REMOVE_SNACKBAR = 'REMOVE_SNACKBAR'; \ No newline at end of file +export const REMOVE_SNACKBAR = 'REMOVE_SNACKBAR'; diff --git a/src/features/common/redux/hooks.js b/src/features/common/redux/hooks.js index 6d9bc4216..ce576bedf 100644 --- a/src/features/common/redux/hooks.js +++ b/src/features/common/redux/hooks.js @@ -1 +1 @@ -export { useSnackbar } from './snackBar'; \ No newline at end of file +export { useSnackbar } from './snackBar'; diff --git a/src/features/common/redux/initialState.js b/src/features/common/redux/initialState.js deleted file mode 100644 index 85b38b6af..000000000 --- a/src/features/common/redux/initialState.js +++ /dev/null @@ -1,13 +0,0 @@ -// Initial state is the place you define all initial values for the Redux store of the feature. -// In the 'standard' way, initialState is defined in reducers: http://redux.js.org/docs/basics/Reducers.html -// But when application grows, there will be multiple reducers files, it's not intuitive what data is managed by the whole store. -// So Rekit extracts the initial state definition into a separate module so that you can have -// a quick view about what data is used for the feature, at any time. - -// NOTE: initialState constant is necessary so that Rekit could auto add initial state when creating async actions. - -const initialState = { - notifications: [] -}; - -export default initialState; diff --git a/src/features/common/redux/reducer.js b/src/features/common/redux/reducer.js index 5a902a064..848d1825a 100644 --- a/src/features/common/redux/reducer.js +++ b/src/features/common/redux/reducer.js @@ -1,17 +1,10 @@ -// This is the root reducer of the feature. It is used for: -// 1. Load reducers from each action in the feature and process them one by one. -// Note that this part of code is mainly maintained by Rekit, you usually don't need to edit them. -// 2. Write cross-topic reducers. If a reducer is not bound to some specific action. -// Then it could be written here. -// Learn more from the introduction of this approach: -// https://medium.com/@nate_wang/a-new-approach-for-managing-redux-actions-91c26ce8b5da. +import { reducer as snackbarReducer } from './snackbar'; -import initialState from './initialState'; -import { reducer as snackbarReducer} from './snackbar'; +const reducers = [snackbarReducer]; -const reducers = [ - snackbarReducer -]; +const initialState = { + notifications: [], +}; export default function reducer(state = initialState, action) { let newState; @@ -23,4 +16,4 @@ export default function reducer(state = initialState, action) { } /* istanbul ignore next */ return reducers.reduce((s, r) => r(s, action), newState); -} \ No newline at end of file +} diff --git a/src/features/common/redux/snackbar.js b/src/features/common/redux/snackbar.js index d0f501edb..d5bed0bce 100644 --- a/src/features/common/redux/snackbar.js +++ b/src/features/common/redux/snackbar.js @@ -1,16 +1,16 @@ import { useCallback } from 'react'; import { useDispatch, useSelector, shallowEqual } from 'react-redux'; -import { ENQUEUE_SNACKBAR, CLOSE_SNACKBAR, REMOVE_SNACKBAR } from './constants'; +import { ENQUEUE_SNACKBAR, CLOSE_SNACKBAR, REMOVE_SNACKBAR } from './constants'; -export const enqueueSnackbar = (notification) => { +export const enqueueSnackbar = notification => { const key = notification.options && notification.options.key; return { - type: ENQUEUE_SNACKBAR, - notification: { - ...notification, - key: key || new Date().getTime() + Math.random(), - }, + type: ENQUEUE_SNACKBAR, + notification: { + ...notification, + key: key || new Date().getTime() + Math.random(), + }, }; }; @@ -25,52 +25,57 @@ export const removeSnackbar = key => ({ key, }); - export function useSnackbar() { const dispatch = useDispatch(); - const {notification} = useSelector(state => ({ - notification:state.home.notification, - }), shallowEqual); + const { notification } = useSelector( + state => ({ + notification: state.home.notification, + }), + shallowEqual + ); const enqueueAction = useCallback(data => dispatch(enqueueSnackbar(data)), [dispatch]); const closeAction = useCallback(data => dispatch(closeSnackbar(data)), [dispatch]); const removeAction = useCallback(data => dispatch(removeSnackbar(data)), [dispatch]); - return { notification, enqueueSnackbar: enqueueAction, closeSnackbar: closeAction, removeSnackbar: removeAction }; + return { + notification, + enqueueSnackbar: enqueueAction, + closeSnackbar: closeAction, + removeSnackbar: removeAction, + }; } export function reducer(state, action) { switch (action.type) { case ENQUEUE_SNACKBAR: - return { - ...state, - notifications: [ - ...state.notifications, - { - key: action.key, - ...action.notification, - }, - ], - }; + return { + ...state, + notifications: [ + ...state.notifications, + { + key: action.key, + ...action.notification, + }, + ], + }; case CLOSE_SNACKBAR: - return { - ...state, - notifications: state.notifications.map(notification => ( - (action.dismissAll || notification.key === action.key) - ? { ...notification, dismissed: true } - : { ...notification } - )), - }; + return { + ...state, + notifications: state.notifications.map(notification => + action.dismissAll || notification.key === action.key + ? { ...notification, dismissed: true } + : { ...notification } + ), + }; case REMOVE_SNACKBAR: - return { - ...state, - notifications: state.notifications.filter( - notification => notification.key !== action.key, - ), - }; + return { + ...state, + notifications: state.notifications.filter(notification => notification.key !== action.key), + }; default: - return state; + return state; } -} \ No newline at end of file +} diff --git a/src/features/common/route.js b/src/features/common/route.js index eb105bf85..f190c2961 100644 --- a/src/features/common/route.js +++ b/src/features/common/route.js @@ -1,9 +1,16 @@ // This is the JSON way to define React Router rules in a Rekit app. // Learn more from: http://rekit.js.org/docs/routing.html +import { HomePage } from 'features/home'; +import { PoolPage, StakePage } from 'features/stake'; +import { VaultPage } from 'features/vault'; + export default { path: 'common', - name: 'Common', + indexRoute: { component: HomePage }, childRoutes: [ + { path: '/#/stake', component: StakePage }, + { path: '/#/stake/pool/:id', component: PoolPage }, + { path: '/#/vault/:vaultId', component: VaultPage }, ], }; diff --git a/src/features/configure/abi.js b/src/features/configure/abi.js index 7bb9932a0..16cb3e3b0 100644 --- a/src/features/configure/abi.js +++ b/src/features/configure/abi.js @@ -1,4570 +1,12 @@ -export const erc20ABI = [{ - "constant": false, - "inputs": [{ - "name": "_spender", - "type": "address" - }, { - "name": "_value", - "type": "uint256" - }], - "name": "approve", - "outputs": [{ - "name": "success", - "type": "bool" - }], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [{ - "name": "_to", - "type": "address" - }, { - "name": "_value", - "type": "uint256" - }], - "name": "showMeTheMoney", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [{ - "name": "_to", - "type": "address" - }, { - "name": "_value", - "type": "uint256" - }], - "name": "transfer", - "outputs": [{ - "name": "success", - "type": "bool" - }], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [{ - "name": "_from", - "type": "address" - }, { - "name": "_to", - "type": "address" - }, { - "name": "_value", - "type": "uint256" - }], - "name": "transferFrom", - "outputs": [{ - "name": "success", - "type": "bool" - }], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "anonymous": false, - "inputs": [{ - "indexed": true, - "name": "_from", - "type": "address" - }, { - "indexed": true, - "name": "_to", - "type": "address" - }, { - "indexed": false, - "name": "_value", - "type": "uint256" - }], - "name": "Transfer", - "type": "event" - }, - { - "anonymous": false, - "inputs": [{ - "indexed": true, - "name": "_owner", - "type": "address" - }, { - "indexed": true, - "name": "_spender", - "type": "address" - }, { - "indexed": false, - "name": "_value", - "type": "uint256" - }], - "name": "Approval", - "type": "event" - }, { - "constant": true, - "inputs": [{ - "name": "_owner", - "type": "address" - }, { - "name": "_spender", - "type": "address" - }], - "name": "allowance", - "outputs": [{ - "name": "remaining", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, { - "constant": true, - "inputs": [{ - "name": "_owner", - "type": "address" - }], - "name": "balanceOf", - "outputs": [{ - "name": "balance", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, { - "constant": true, - "inputs": [], - "name": "decimals", - "outputs": [{ - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, { - "constant": true, - "inputs": [], - "name": "name", - "outputs": [{ - "name": "", - "type": "string" - }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, { - "constant": true, - "inputs": [], - "name": "symbol", - "outputs": [{ - "name": "", - "type": "string" - }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, { - "constant": true, - "inputs": [], - "name": "totalSupply", - "outputs": [{ - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" - } -] - -export const USDTABI = [{ - "constant": true, - "inputs": [], - "name": "name", - "outputs": [{ - "name": "", - "type": "string" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "name": "_upgradedAddress", - "type": "address" - }], - "name": "deprecate", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "name": "_spender", - "type": "address" - }, { - "name": "_value", - "type": "uint256" - }], - "name": "approve", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "deprecated", - "outputs": [{ - "name": "", - "type": "bool" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "name": "_evilUser", - "type": "address" - }], - "name": "addBlackList", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "totalSupply", - "outputs": [{ - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "name": "_from", - "type": "address" - }, { - "name": "_to", - "type": "address" - }, { - "name": "_value", - "type": "uint256" - }], - "name": "transferFrom", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "upgradedAddress", - "outputs": [{ - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [{ - "name": "", - "type": "address" - }], - "name": "balances", - "outputs": [{ - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "decimals", - "outputs": [{ - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "maximumFee", - "outputs": [{ - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "_totalSupply", - "outputs": [{ - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": false, - "inputs": [], - "name": "unpause", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": true, - "inputs": [{ - "name": "_maker", - "type": "address" - }], - "name": "getBlackListStatus", - "outputs": [{ - "name": "", - "type": "bool" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [{ - "name": "", - "type": "address" - }, { - "name": "", - "type": "address" - }], - "name": "allowed", - "outputs": [{ - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "paused", - "outputs": [{ - "name": "", - "type": "bool" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [{ - "name": "who", - "type": "address" - }], - "name": "balanceOf", - "outputs": [{ - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": false, - "inputs": [], - "name": "pause", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "getOwner", - "outputs": [{ - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "owner", - "outputs": [{ - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "symbol", - "outputs": [{ - "name": "", - "type": "string" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "name": "_to", - "type": "address" - }, { - "name": "_value", - "type": "uint256" - }], - "name": "transfer", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "name": "newBasisPoints", - "type": "uint256" - }, { - "name": "newMaxFee", - "type": "uint256" - }], - "name": "setParams", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "name": "amount", - "type": "uint256" - }], - "name": "issue", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "name": "amount", - "type": "uint256" - }], - "name": "redeem", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": true, - "inputs": [{ - "name": "_owner", - "type": "address" - }, { - "name": "_spender", - "type": "address" - }], - "name": "allowance", - "outputs": [{ - "name": "remaining", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "basisPointsRate", - "outputs": [{ - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [{ - "name": "", - "type": "address" - }], - "name": "isBlackListed", - "outputs": [{ - "name": "", - "type": "bool" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "name": "_clearedUser", - "type": "address" - }], - "name": "removeBlackList", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "MAX_UINT", - "outputs": [{ - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "name": "newOwner", - "type": "address" - }], - "name": "transferOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "name": "_blackListedUser", - "type": "address" - }], - "name": "destroyBlackFunds", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "inputs": [{ - "name": "_initialSupply", - "type": "uint256" - }, { - "name": "_name", - "type": "string" - }, { - "name": "_symbol", - "type": "string" - }, { - "name": "_decimals", - "type": "uint256" - }], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor" -}, { - "anonymous": false, - "inputs": [{ - "indexed": false, - "name": "amount", - "type": "uint256" - }], - "name": "Issue", - "type": "event" -}, { - "anonymous": false, - "inputs": [{ - "indexed": false, - "name": "amount", - "type": "uint256" - }], - "name": "Redeem", - "type": "event" -}, { - "anonymous": false, - "inputs": [{ - "indexed": false, - "name": "newAddress", - "type": "address" - }], - "name": "Deprecate", - "type": "event" -}, { - "anonymous": false, - "inputs": [{ - "indexed": false, - "name": "feeBasisPoints", - "type": "uint256" - }, { - "indexed": false, - "name": "maxFee", - "type": "uint256" - }], - "name": "Params", - "type": "event" -}, { - "anonymous": false, - "inputs": [{ - "indexed": false, - "name": "_blackListedUser", - "type": "address" - }, { - "indexed": false, - "name": "_balance", - "type": "uint256" - }], - "name": "DestroyedBlackFunds", - "type": "event" -}, { - "anonymous": false, - "inputs": [{ - "indexed": false, - "name": "_user", - "type": "address" - }], - "name": "AddedBlackList", - "type": "event" -}, { - "anonymous": false, - "inputs": [{ - "indexed": false, - "name": "_user", - "type": "address" - }], - "name": "RemovedBlackList", - "type": "event" -}, { - "anonymous": false, - "inputs": [{ - "indexed": true, - "name": "owner", - "type": "address" - }, { - "indexed": true, - "name": "spender", - "type": "address" - }, { - "indexed": false, - "name": "value", - "type": "uint256" - }], - "name": "Approval", - "type": "event" -}, { - "anonymous": false, - "inputs": [{ - "indexed": true, - "name": "from", - "type": "address" - }, { - "indexed": true, - "name": "to", - "type": "address" - }, { - "indexed": false, - "name": "value", - "type": "uint256" - }], - "name": "Transfer", - "type": "event" -}, { - "anonymous": false, - "inputs": [], - "name": "Pause", - "type": "event" -}, { - "anonymous": false, - "inputs": [], - "name": "Unpause", - "type": "event" -}] - -export const earnContractABI = [{ - "inputs": [{ - "internalType": "address", - "name": "_token", - "type": "address" - }], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [{ - "indexed": true, - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "Approval", - "type": "event" - }, - { - "anonymous": false, - "inputs": [{ - "indexed": true, - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "Transfer", - "type": "event" - }, - { - "payable": true, - "stateMutability": "payable", - "type": "fallback" - }, - { - "constant": true, - "inputs": [{ - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "internalType": "address", - "name": "spender", - "type": "address" - } - ], - "name": "allowance", - "outputs": [{ - "internalType": "uint256", - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [{ - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "approve", - "outputs": [{ - "internalType": "bool", - "name": "", - "type": "bool" - }], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "available", - "outputs": [{ - "internalType": "uint256", - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "balance", - "outputs": [{ - "internalType": "uint256", - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [{ - "internalType": "address", - "name": "account", - "type": "address" - }], - "name": "balanceOf", - "outputs": [{ - "internalType": "uint256", - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "controller", - "outputs": [{ - "internalType": "address", - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "decimals", - "outputs": [{ - "internalType": "uint8", - "name": "", - "type": "uint8" - }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [{ - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "subtractedValue", - "type": "uint256" - } - ], - "name": "decreaseAllowance", - "outputs": [{ - "internalType": "bool", - "name": "", - "type": "bool" - }], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [{ - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }], - "name": "deposit", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "depositAll", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "depositETH", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "earn", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "earnLowerlimit", - "outputs": [{ - "internalType": "uint256", - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "getPricePerFullShare", - "outputs": [{ - "internalType": "uint256", - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "governance", - "outputs": [{ - "internalType": "address", - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [{ - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "addedValue", - "type": "uint256" - } - ], - "name": "increaseAllowance", - "outputs": [{ - "internalType": "bool", - "name": "", - "type": "bool" - }], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "max", - "outputs": [{ - "internalType": "uint256", - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "min", - "outputs": [{ - "internalType": "uint256", - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "name", - "outputs": [{ - "internalType": "string", - "name": "", - "type": "string" - }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [{ - "internalType": "address", - "name": "_controller", - "type": "address" - }], - "name": "setController", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [{ - "internalType": "uint256", - "name": "_earnLowerlimit", - "type": "uint256" - }], - "name": "setEarnLowerlimit", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [{ - "internalType": "address", - "name": "_governance", - "type": "address" - }], - "name": "setGovernance", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [{ - "internalType": "uint256", - "name": "_min", - "type": "uint256" - }], - "name": "setMin", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "symbol", - "outputs": [{ - "internalType": "string", - "name": "", - "type": "string" - }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "token", - "outputs": [{ - "internalType": "contract IERC20", - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "totalSupply", - "outputs": [{ - "internalType": "uint256", - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [{ - "internalType": "address", - "name": "recipient", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "transfer", - "outputs": [{ - "internalType": "bool", - "name": "", - "type": "bool" - }], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [{ - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "internalType": "address", - "name": "recipient", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "transferFrom", - "outputs": [{ - "internalType": "bool", - "name": "", - "type": "bool" - }], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [{ - "internalType": "uint256", - "name": "_shares", - "type": "uint256" - }], - "name": "withdraw", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "withdrawAll", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "withdrawAllETH", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [{ - "internalType": "uint256", - "name": "_shares", - "type": "uint256" - }], - "name": "withdrawETH", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - } -] - -export const yCurveZapABI = [{ - "inputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor" -}, { - "anonymous": false, - "inputs": [{ - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - }], - "name": "OwnershipTransferred", - "type": "event" -}, { - "payable": true, - "stateMutability": "payable", - "type": "fallback" -}, { - "constant": true, - "inputs": [], - "name": "CURVE", - "outputs": [{ - "internalType": "address", - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "DAI", - "outputs": [{ - "internalType": "address", - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "SWAP", - "outputs": [{ - "internalType": "address", - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "TUSD", - "outputs": [{ - "internalType": "address", - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "USDC", - "outputs": [{ - "internalType": "address", - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "USDT", - "outputs": [{ - "internalType": "address", - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": false, - "inputs": [], - "name": "approveToken", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }], - "name": "depositDAI", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }], - "name": "depositTUSD", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }], - "name": "depositUSDC", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }], - "name": "depositUSDT", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": false, - "inputs": [], - "name": "inCaseETHGetsStuck", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "internalType": "contract IERC20", - "name": "_TokenAddress", - "type": "address" - }], - "name": "inCaseTokenGetsStuck", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "isOwner", - "outputs": [{ - "internalType": "bool", - "name": "", - "type": "bool" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "owner", - "outputs": [{ - "internalType": "address", - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": false, - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "internalType": "address", - "name": "newOwner", - "type": "address" - }], - "name": "transferOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }], - "name": "withdrawDAI", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }], - "name": "withdrawTUSD", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }], - "name": "withdrawUSDC", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }], - "name": "withdrawUSDT", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "yDAI", - "outputs": [{ - "internalType": "address", - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "yTUSD", - "outputs": [{ - "internalType": "address", - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "yUSDC", - "outputs": [{ - "internalType": "address", - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "yUSDT", - "outputs": [{ - "internalType": "address", - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}] - -export const yCurveZapOutABI = [{ - "inputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor" -}, { - "anonymous": false, - "inputs": [{ - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - }], - "name": "OwnershipTransferred", - "type": "event" -}, { - "payable": true, - "stateMutability": "payable", - "type": "fallback" -}, { - "constant": true, - "inputs": [], - "name": "CURVE", - "outputs": [{ - "internalType": "address", - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "DAI", - "outputs": [{ - "internalType": "address", - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "SWAP", - "outputs": [{ - "internalType": "address", - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "TUSD", - "outputs": [{ - "internalType": "address", - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "USDC", - "outputs": [{ - "internalType": "address", - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "USDT", - "outputs": [{ - "internalType": "address", - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": false, - "inputs": [], - "name": "approveToken", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": false, - "inputs": [], - "name": "inCaseETHGetsStuck", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "internalType": "contract IERC20", - "name": "_TokenAddress", - "type": "address" - }], - "name": "inCaseTokenGetsStuck", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "isOwner", - "outputs": [{ - "internalType": "bool", - "name": "", - "type": "bool" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "owner", - "outputs": [{ - "internalType": "address", - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": false, - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "internalType": "address", - "name": "newOwner", - "type": "address" - }], - "name": "transferOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }], - "name": "withdrawDAI", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }], - "name": "withdrawTUSD", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }], - "name": "withdrawUSDC", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }], - "name": "withdrawUSDT", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "yDAI", - "outputs": [{ - "internalType": "address", - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "yTUSD", - "outputs": [{ - "internalType": "address", - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "yUSDC", - "outputs": [{ - "internalType": "address", - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "yUSDT", - "outputs": [{ - "internalType": "address", - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}] - -export const yCurveZapV4ABI = [{ - "inputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor" -}, { - "anonymous": false, - "inputs": [{ - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - }], - "name": "OwnershipTransferred", - "type": "event" -}, { - "payable": true, - "stateMutability": "payable", - "type": "fallback" -}, { - "constant": true, - "inputs": [], - "name": "BUSD", - "outputs": [{ - "internalType": "address", - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "CURVE", - "outputs": [{ - "internalType": "address", - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "DAI", - "outputs": [{ - "internalType": "address", - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "SWAP", - "outputs": [{ - "internalType": "address", - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "USDC", - "outputs": [{ - "internalType": "address", - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "USDT", - "outputs": [{ - "internalType": "address", - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": false, - "inputs": [], - "name": "approveToken", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }], - "name": "depositBUSD", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }], - "name": "depositDAI", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }], - "name": "depositUSDC", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }], - "name": "depositUSDT", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": false, - "inputs": [], - "name": "inCaseETHGetsStuck", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "internalType": "contract IERC20", - "name": "_TokenAddress", - "type": "address" - }], - "name": "inCaseTokenGetsStuck", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "isOwner", - "outputs": [{ - "internalType": "bool", - "name": "", - "type": "bool" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "owner", - "outputs": [{ - "internalType": "address", - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": false, - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "internalType": "address", - "name": "newOwner", - "type": "address" - }], - "name": "transferOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "yBUSD", - "outputs": [{ - "internalType": "address", - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "yDAI", - "outputs": [{ - "internalType": "address", - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "yUSDC", - "outputs": [{ - "internalType": "address", - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "yUSDT", - "outputs": [{ - "internalType": "address", - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}] - -export const yCurveZapOutV4ABI = [{ - "inputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor" -}, { - "anonymous": false, - "inputs": [{ - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - }], - "name": "OwnershipTransferred", - "type": "event" -}, { - "payable": true, - "stateMutability": "payable", - "type": "fallback" -}, { - "constant": true, - "inputs": [], - "name": "BUSD", - "outputs": [{ - "internalType": "address", - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "CURVE", - "outputs": [{ - "internalType": "address", - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "DAI", - "outputs": [{ - "internalType": "address", - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "SWAP", - "outputs": [{ - "internalType": "address", - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "USDC", - "outputs": [{ - "internalType": "address", - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "USDT", - "outputs": [{ - "internalType": "address", - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": false, - "inputs": [], - "name": "approveToken", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": false, - "inputs": [], - "name": "inCaseETHGetsStuck", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "internalType": "contract IERC20", - "name": "_TokenAddress", - "type": "address" - }], - "name": "inCaseTokenGetsStuck", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "isOwner", - "outputs": [{ - "internalType": "bool", - "name": "", - "type": "bool" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "owner", - "outputs": [{ - "internalType": "address", - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": false, - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "internalType": "address", - "name": "newOwner", - "type": "address" - }], - "name": "transferOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }], - "name": "withdrawBUSD", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }], - "name": "withdrawDAI", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }], - "name": "withdrawUSDC", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }], - "name": "withdrawUSDT", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "yBUSD", - "outputs": [{ - "internalType": "address", - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "yDAI", - "outputs": [{ - "internalType": "address", - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "yUSDC", - "outputs": [{ - "internalType": "address", - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "yUSDT", - "outputs": [{ - "internalType": "address", - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}] - -export const yCurveZapSwapABI = [{ - "inputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor" -}, { - "anonymous": false, - "inputs": [{ - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - }], - "name": "OwnershipTransferred", - "type": "event" -}, { - "payable": true, - "stateMutability": "payable", - "type": "fallback" -}, { - "constant": true, - "inputs": [], - "name": "CURVEv1", - "outputs": [{ - "internalType": "address", - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "CURVEv2", - "outputs": [{ - "internalType": "address", - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "CURVEv3", - "outputs": [{ - "internalType": "address", - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "DAI", - "outputs": [{ - "internalType": "address", - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "SWAPv1", - "outputs": [{ - "internalType": "address", - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "SWAPv2", - "outputs": [{ - "internalType": "address", - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "SWAPv3", - "outputs": [{ - "internalType": "address", - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "USDC", - "outputs": [{ - "internalType": "address", - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "USDT", - "outputs": [{ - "internalType": "address", - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": false, - "inputs": [], - "name": "approveToken", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "cDAI", - "outputs": [{ - "internalType": "address", - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "cUSDC", - "outputs": [{ - "internalType": "address", - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": false, - "inputs": [], - "name": "inCaseETHGetsStuck", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "internalType": "contract IERC20", - "name": "_TokenAddress", - "type": "address" - }], - "name": "inCaseTokenGetsStuck", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "isOwner", - "outputs": [{ - "internalType": "bool", - "name": "", - "type": "bool" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "owner", - "outputs": [{ - "internalType": "address", - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": false, - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }], - "name": "swapv1tov3", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }], - "name": "swapv2tov3", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "internalType": "address", - "name": "newOwner", - "type": "address" - }], - "name": "transferOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "yDAI", - "outputs": [{ - "internalType": "address", - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "yUSDC", - "outputs": [{ - "internalType": "address", - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "yUSDT", - "outputs": [{ - "internalType": "address", - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}] - -export const yCurveZapSwapV4ABI = [{ - "inputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor" -}, { - "anonymous": false, - "inputs": [{ - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - }], - "name": "OwnershipTransferred", - "type": "event" -}, { - "payable": true, - "stateMutability": "payable", - "type": "fallback" -}, { - "constant": true, - "inputs": [], - "name": "BUSD", - "outputs": [{ - "internalType": "address", - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "CURVEv1", - "outputs": [{ - "internalType": "address", - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "CURVEv2", - "outputs": [{ - "internalType": "address", - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "CURVEv3", - "outputs": [{ - "internalType": "address", - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "CURVEv4", - "outputs": [{ - "internalType": "address", - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "DAI", - "outputs": [{ - "internalType": "address", - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "SWAPv1", - "outputs": [{ - "internalType": "address", - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "SWAPv2", - "outputs": [{ - "internalType": "address", - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "SWAPv3", - "outputs": [{ - "internalType": "address", - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "SWAPv4", - "outputs": [{ - "internalType": "address", - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "TUSD", - "outputs": [{ - "internalType": "address", - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "USDC", - "outputs": [{ - "internalType": "address", - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "USDT", - "outputs": [{ - "internalType": "address", - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": false, - "inputs": [], - "name": "approveToken", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "cDAI", - "outputs": [{ - "internalType": "address", - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "cUSDC", - "outputs": [{ - "internalType": "address", - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": false, - "inputs": [], - "name": "inCaseETHGetsStuck", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "internalType": "contract IERC20", - "name": "_TokenAddress", - "type": "address" - }], - "name": "inCaseTokenGetsStuck", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "isOwner", - "outputs": [{ - "internalType": "bool", - "name": "", - "type": "bool" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "owner", - "outputs": [{ - "internalType": "address", - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": false, - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }], - "name": "swapv3tov4", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "internalType": "address", - "name": "newOwner", - "type": "address" - }], - "name": "transferOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "yBUSDv3", - "outputs": [{ - "internalType": "address", - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "yDAIv2", - "outputs": [{ - "internalType": "address", - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "yDAIv3", - "outputs": [{ - "internalType": "address", - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "yTUSDv2", - "outputs": [{ - "internalType": "address", - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "yUSDCv2", - "outputs": [{ - "internalType": "address", - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "yUSDCv3", - "outputs": [{ - "internalType": "address", - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "yUSDTv2", - "outputs": [{ - "internalType": "address", - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "yUSDTv3", - "outputs": [{ - "internalType": "address", - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}] - -export const yCurveFiRewardsABI = [{ - "anonymous": false, - "inputs": [{ - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - }], - "name": "OwnershipTransferred", - "type": "event" -}, { - "anonymous": false, - "inputs": [{ - "indexed": false, - "internalType": "uint256", - "name": "reward", - "type": "uint256" - }], - "name": "RewardAdded", - "type": "event" -}, { - "anonymous": false, - "inputs": [{ - "indexed": true, - "internalType": "address", - "name": "user", - "type": "address" - }, { - "indexed": false, - "internalType": "uint256", - "name": "reward", - "type": "uint256" - }], - "name": "RewardPaid", - "type": "event" -}, { - "anonymous": false, - "inputs": [{ - "indexed": true, - "internalType": "address", - "name": "user", - "type": "address" - }, { - "indexed": false, - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }], - "name": "Staked", - "type": "event" -}, { - "anonymous": false, - "inputs": [{ - "indexed": true, - "internalType": "address", - "name": "user", - "type": "address" - }, { - "indexed": false, - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }], - "name": "Withdrawn", - "type": "event" -}, { - "constant": true, - "inputs": [], - "name": "DURATION", - "outputs": [{ - "internalType": "uint256", - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [{ - "internalType": "address", - "name": "account", - "type": "address" - }], - "name": "balanceOf", - "outputs": [{ - "internalType": "uint256", - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [{ - "internalType": "address", - "name": "account", - "type": "address" - }], - "name": "earned", - "outputs": [{ - "internalType": "uint256", - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": false, - "inputs": [], - "name": "exit", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": false, - "inputs": [], - "name": "getReward", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "isOwner", - "outputs": [{ - "internalType": "bool", - "name": "", - "type": "bool" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "lastTimeRewardApplicable", - "outputs": [{ - "internalType": "uint256", - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "lastUpdateTime", - "outputs": [{ - "internalType": "uint256", - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "internalType": "uint256", - "name": "reward", - "type": "uint256" - }], - "name": "notifyRewardAmount", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "owner", - "outputs": [{ - "internalType": "address", - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "periodFinish", - "outputs": [{ - "internalType": "uint256", - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": false, - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "rewardPerToken", - "outputs": [{ - "internalType": "uint256", - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "rewardPerTokenStored", - "outputs": [{ - "internalType": "uint256", - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "rewardRate", - "outputs": [{ - "internalType": "uint256", - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [{ - "internalType": "address", - "name": "", - "type": "address" - }], - "name": "rewards", - "outputs": [{ - "internalType": "uint256", - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "internalType": "address", - "name": "_rewardDistribution", - "type": "address" - }], - "name": "setRewardDistribution", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }], - "name": "stake", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "totalSupply", - "outputs": [{ - "internalType": "uint256", - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "internalType": "address", - "name": "newOwner", - "type": "address" - }], - "name": "transferOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": true, - "inputs": [{ - "internalType": "address", - "name": "", - "type": "address" - }], - "name": "userRewardPerTokenPaid", - "outputs": [{ - "internalType": "uint256", - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }], - "name": "withdraw", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "y", - "outputs": [{ - "internalType": "contract IERC20", - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "yfi", - "outputs": [{ - "internalType": "contract IERC20", - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}] - -export const balancerRewardsABI = [{ - "anonymous": false, - "inputs": [{ - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - }], - "name": "OwnershipTransferred", - "type": "event" -}, { - "anonymous": false, - "inputs": [{ - "indexed": false, - "internalType": "uint256", - "name": "reward", - "type": "uint256" - }], - "name": "RewardAdded", - "type": "event" -}, { - "anonymous": false, - "inputs": [{ - "indexed": true, - "internalType": "address", - "name": "user", - "type": "address" - }, { - "indexed": false, - "internalType": "uint256", - "name": "reward", - "type": "uint256" - }], - "name": "RewardPaid", - "type": "event" -}, { - "anonymous": false, - "inputs": [{ - "indexed": true, - "internalType": "address", - "name": "user", - "type": "address" - }, { - "indexed": false, - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }], - "name": "Staked", - "type": "event" -}, { - "anonymous": false, - "inputs": [{ - "indexed": true, - "internalType": "address", - "name": "user", - "type": "address" - }, { - "indexed": false, - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }], - "name": "Withdrawn", - "type": "event" -}, { - "constant": true, - "inputs": [], - "name": "DURATION", - "outputs": [{ - "internalType": "uint256", - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [{ - "internalType": "address", - "name": "account", - "type": "address" - }], - "name": "balanceOf", - "outputs": [{ - "internalType": "uint256", - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "bpt", - "outputs": [{ - "internalType": "contract IERC20", - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [{ - "internalType": "address", - "name": "account", - "type": "address" - }], - "name": "earned", - "outputs": [{ - "internalType": "uint256", - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": false, - "inputs": [], - "name": "exit", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": false, - "inputs": [], - "name": "getReward", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "isOwner", - "outputs": [{ - "internalType": "bool", - "name": "", - "type": "bool" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "lastTimeRewardApplicable", - "outputs": [{ - "internalType": "uint256", - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "lastUpdateTime", - "outputs": [{ - "internalType": "uint256", - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "internalType": "uint256", - "name": "reward", - "type": "uint256" - }], - "name": "notifyRewardAmount", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "owner", - "outputs": [{ - "internalType": "address", - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "periodFinish", - "outputs": [{ - "internalType": "uint256", - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": false, - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "rewardPerToken", - "outputs": [{ - "internalType": "uint256", - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "rewardPerTokenStored", - "outputs": [{ - "internalType": "uint256", - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "rewardRate", - "outputs": [{ - "internalType": "uint256", - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [{ - "internalType": "address", - "name": "", - "type": "address" - }], - "name": "rewards", - "outputs": [{ - "internalType": "uint256", - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "internalType": "address", - "name": "_rewardDistribution", - "type": "address" - }], - "name": "setRewardDistribution", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }], - "name": "stake", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "totalSupply", - "outputs": [{ - "internalType": "uint256", - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "internalType": "address", - "name": "newOwner", - "type": "address" - }], - "name": "transferOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": true, - "inputs": [{ - "internalType": "address", - "name": "", - "type": "address" - }], - "name": "userRewardPerTokenPaid", - "outputs": [{ - "internalType": "uint256", - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }], - "name": "withdraw", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "yfi", - "outputs": [{ - "internalType": "contract IERC20", - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}] - -export const governanceABI = [{ - "constant": true, - "inputs": [{ - "name": "account", - "type": "address" - }], - "name": "earned", - "outputs": [{ - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, { - "constant": true, - "inputs": [{ - "name": "", - "type": "uint256" - }], - "name": "proposals", - "outputs": [{ - "name": "id", - "type": "uint256" - }, { - "name": "proposer", - "type": "address" - }, { - "name": "totalForVotes", - "type": "uint256" - }, { - "name": "totalAgainstVotes", - "type": "uint256" - }, { - "name": "start", - "type": "uint256" - }, { - "name": "end", - "type": "uint256" - }, { - "name": "executor", - "type": "address" - }, { - "name": "hash", - "type": "string" - }, { - "name": "totalVotesAvailable", - "type": "uint256" - }, { - "name": "quorum", - "type": "uint256" - }, { - "name": "quorumRequired", - "type": "uint256" - }, { - "name": "open", - "type": "bool" - }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, { - "constant": true, - "inputs": [{ - "name": "", - "type": "address" - }], - "name": "rewards", - "outputs": [{ - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, { - "constant": true, - "inputs": [], - "name": "totalVotes", - "outputs": [{ - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, { - "constant": false, - "inputs": [{ - "name": "_rewardDistribution", - "type": "address" - }], - "name": "setRewardDistribution", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, { - "constant": false, - "inputs": [{ - "name": "_period", - "type": "uint256" - }], - "name": "setPeriod", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, { - "constant": true, - "inputs": [], - "name": "breaker", - "outputs": [{ - "name": "", - "type": "bool" - }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, { - "constant": true, - "inputs": [], - "name": "quorum", - "outputs": [{ - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, { - "constant": true, - "inputs": [], - "name": "totalSupply", - "outputs": [{ - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, { - "constant": false, - "inputs": [], - "name": "register", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, { - "constant": true, - "inputs": [], - "name": "DURATION", - "outputs": [{ - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, { - "constant": false, - "inputs": [{ - "name": "amount", - "type": "uint256" - }], - "name": "withdraw", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, { - "constant": false, - "inputs": [{ - "name": "_minimum", - "type": "uint256" - }], - "name": "setMinimum", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, { - "constant": false, - "inputs": [{ - "name": "reward", - "type": "uint256" - }], - "name": "notifyRewardAmount", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, { - "constant": false, - "inputs": [], - "name": "getReward", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, { - "constant": false, - "inputs": [{ - "name": "id", - "type": "uint256" - }], - "name": "tallyVotes", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, { - "constant": true, - "inputs": [{ - "name": "", - "type": "address" - }], - "name": "voteLock", - "outputs": [{ - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, { - "constant": true, - "inputs": [], - "name": "minimum", - "outputs": [{ - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, { - "constant": true, - "inputs": [], - "name": "governance", - "outputs": [{ - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, { - "constant": false, - "inputs": [{ - "name": "_breaker", - "type": "bool" - }], - "name": "setBreaker", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, { - "constant": true, - "inputs": [], - "name": "vote", - "outputs": [{ - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, { - "constant": true, - "inputs": [{ - "name": "account", - "type": "address" - }], - "name": "balanceOf", - "outputs": [{ - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, { - "constant": false, - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, { - "constant": false, - "inputs": [{ - "name": "id", - "type": "uint256" - }], - "name": "voteAgainst", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, { - "constant": true, - "inputs": [], - "name": "config", - "outputs": [{ - "name": "", - "type": "bool" - }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, { - "constant": true, - "inputs": [{ - "name": "voter", - "type": "address" - }], - "name": "votesOf", - "outputs": [{ - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, { - "constant": true, - "inputs": [], - "name": "rewardRate", - "outputs": [{ - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, { - "constant": true, - "inputs": [{ - "name": "id", - "type": "uint256" - }], - "name": "getStats", - "outputs": [{ - "name": "_for", - "type": "uint256" - }, { - "name": "_against", - "type": "uint256" - }, { - "name": "_quorum", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, { - "constant": true, - "inputs": [], - "name": "lastTimeRewardApplicable", - "outputs": [{ - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, { - "constant": false, - "inputs": [{ - "name": "id", - "type": "uint256" - }], - "name": "voteFor", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, { - "constant": true, - "inputs": [{ - "name": "", - "type": "address" - }], - "name": "userRewardPerTokenPaid", - "outputs": [{ - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, { - "constant": true, - "inputs": [], - "name": "owner", - "outputs": [{ - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, { - "constant": true, - "inputs": [], - "name": "isOwner", - "outputs": [{ - "name": "", - "type": "bool" - }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, { - "constant": true, - "inputs": [{ - "name": "", - "type": "address" - }], - "name": "voters", - "outputs": [{ - "name": "", - "type": "bool" - }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, { - "constant": false, - "inputs": [{ - "name": "amount", - "type": "uint256" - }], - "name": "stake", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, { - "constant": false, - "inputs": [{ - "name": "_governance", - "type": "address" - }], - "name": "setGovernance", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, { - "constant": false, - "inputs": [], - "name": "revoke", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, { - "constant": false, - "inputs": [{ - "name": "_quorum", - "type": "uint256" - }], - "name": "setQuorum", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, { - "constant": true, - "inputs": [], - "name": "lastUpdateTime", - "outputs": [{ - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, { - "constant": true, - "inputs": [], - "name": "rewardPerToken", - "outputs": [{ - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, { - "constant": false, - "inputs": [{ - "name": "_lock", - "type": "uint256" - }], - "name": "setLock", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, { - "constant": false, - "inputs": [{ - "name": "executor", - "type": "address" - }, { - "name": "hash", - "type": "string" - }], - "name": "propose", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, { - "constant": true, - "inputs": [{ - "name": "", - "type": "address" - }], - "name": "votes", - "outputs": [{ - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, { - "constant": true, - "inputs": [], - "name": "proposalCount", - "outputs": [{ - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, { - "constant": true, - "inputs": [], - "name": "rewardPerTokenStored", - "outputs": [{ - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, { - "constant": false, - "inputs": [], - "name": "exit", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, { - "constant": false, - "inputs": [{ - "name": "_token", - "type": "address" - }, { - "name": "amount", - "type": "uint256" - }], - "name": "seize", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, { - "constant": true, - "inputs": [], - "name": "periodFinish", - "outputs": [{ - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, { - "constant": true, - "inputs": [], - "name": "period", - "outputs": [{ - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, { - "constant": false, - "inputs": [{ - "name": "newOwner", - "type": "address" - }], - "name": "transferOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, { - "constant": true, - "inputs": [], - "name": "lock", - "outputs": [{ - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, { - "constant": true, - "inputs": [], - "name": "token", - "outputs": [{ - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, { - "constant": false, - "inputs": [{ - "name": "id", - "type": "uint256" - }], - "name": "execute", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, { - "constant": false, - "inputs": [{ - "name": "id", - "type": "uint256" - }], - "name": "initialize", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, { - "anonymous": false, - "inputs": [{ - "indexed": false, - "name": "id", - "type": "uint256" - }, { - "indexed": false, - "name": "creator", - "type": "address" - }, { - "indexed": false, - "name": "start", - "type": "uint256" - }, { - "indexed": false, - "name": "duration", - "type": "uint256" - }, { - "indexed": false, - "name": "executor", - "type": "address" - }], - "name": "NewProposal", - "type": "event" - }, { - "anonymous": false, - "inputs": [{ - "indexed": true, - "name": "id", - "type": "uint256" - }, { - "indexed": true, - "name": "voter", - "type": "address" - }, { - "indexed": false, - "name": "vote", - "type": "bool" - }, { - "indexed": false, - "name": "weight", - "type": "uint256" - }], - "name": "Vote", - "type": "event" - }, { - "anonymous": false, - "inputs": [{ - "indexed": true, - "name": "id", - "type": "uint256" - }, { - "indexed": false, - "name": "_for", - "type": "uint256" - }, { - "indexed": false, - "name": "_against", - "type": "uint256" - }, { - "indexed": false, - "name": "quorumReached", - "type": "bool" - }], - "name": "ProposalFinished", - "type": "event" - }, { - "anonymous": false, - "inputs": [{ - "indexed": false, - "name": "voter", - "type": "address" - }, { - "indexed": false, - "name": "votes", - "type": "uint256" - }, { - "indexed": false, - "name": "totalVotes", - "type": "uint256" - }], - "name": "RegisterVoter", - "type": "event" - }, { - "anonymous": false, - "inputs": [{ - "indexed": false, - "name": "voter", - "type": "address" - }, { - "indexed": false, - "name": "votes", - "type": "uint256" - }, { - "indexed": false, - "name": "totalVotes", - "type": "uint256" - }], - "name": "RevokeVoter", - "type": "event" - }, { - "anonymous": false, - "inputs": [{ - "indexed": false, - "name": "reward", - "type": "uint256" - }], - "name": "RewardAdded", - "type": "event" - }, { - "anonymous": false, - "inputs": [{ - "indexed": true, - "name": "user", - "type": "address" - }, { - "indexed": false, - "name": "amount", - "type": "uint256" - }], - "name": "Staked", - "type": "event" - }, { - "anonymous": false, - "inputs": [{ - "indexed": true, - "name": "user", - "type": "address" - }, { - "indexed": false, - "name": "amount", - "type": "uint256" - }], - "name": "Withdrawn", - "type": "event" - }, { - "anonymous": false, - "inputs": [{ - "indexed": true, - "name": "user", - "type": "address" - }, { - "indexed": false, - "name": "reward", - "type": "uint256" - }], - "name": "RewardPaid", - "type": "event" - }, { - "anonymous": false, - "inputs": [{ - "indexed": true, - "name": "previousOwner", - "type": "address" - }, { - "indexed": true, - "name": "newOwner", - "type": "address" - }], - "name": "OwnershipTransferred", - "type": "event" -}] - -export const pool4Abi = [{ - "anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"reward","type":"uint256"}],"name":"RewardAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"reward","type":"uint256"}],"name":"RewardPaid","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Staked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Withdrawn","type":"event"},{"constant":true,"inputs":[],"name":"DURATION","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"canWithdrawTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"earned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"exit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"getReward","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"iUSDT","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"lastTimeRewardApplicable","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"lastUpdateTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"lockedDetails","outputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"lp","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"reward","type":"uint256"}],"name":"notifyRewardAmount","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"periodFinish","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"rewardPerToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"rewardPerTokenStored","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"rewardRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"rewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_rewardDistribution","type":"address"}],"name":"setRewardDistribution","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"stake","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"userRewardPerTokenPaid","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}] \ No newline at end of file +export const erc20ABI = [{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"showMeTheMoney","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_owner","type":"address"},{"indexed":true,"name":"_spender","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"Approval","type":"event"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"}] +export const vaultABI = [{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"constant":true,"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"available","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"balance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"controller","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"deposit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"depositAll","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"depositETH","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[],"name":"earn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"earnLowerlimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getPricePerFullShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"governance","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"max","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"min","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_controller","type":"address"}],"name":"setController","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_earnLowerlimit","type":"uint256"}],"name":"setEarnLowerlimit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_governance","type":"address"}],"name":"setGovernance","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_min","type":"uint256"}],"name":"setMin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"token","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_shares","type":"uint256"}],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"withdrawAll","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"withdrawAllETH","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_shares","type":"uint256"}],"name":"withdrawETH","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"strategy","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}] +export const refundABI = [{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_mootoken","type":"address"},{"internalType":"uint256","name":"_pricePerFullShare","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"dead","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mootoken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pricePerFullShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"refund","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]; +export const bnbVaultABI = [{"inputs":[{"internalType":"address","name":"_strategy","type":"address"},{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"uint256","name":"_approvalDelay","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"implementation","type":"address"}],"name":"NewStratCandidate","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"implementation","type":"address"}],"name":"UpgradeStrat","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"approvalDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"available","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"balance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"depositAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"depositBNB","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"earn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getPricePerFullShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_implementation","type":"address"}],"name":"proposeStrat","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stratCandidate","outputs":[{"internalType":"address","name":"implementation","type":"address"},{"internalType":"uint256","name":"proposedTime","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"strategy","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"upgradeStrat","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"wbnb","outputs":[{"internalType":"contract IWBNB","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_shares","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawAllBNB","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_shares","type":"uint256"}],"name":"withdrawBNB","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}] +export const strategyABI = [{"inputs":[],"name":"keeper","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"beefyFeeRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"harvest","outputs":[],"stateMutability":"nonpayable","type":"function"}]; +export const multicallABI = [{"inputs":[{"components":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"callData","type":"bytes"}],"internalType":"struct Multicall.Call[]","name":"calls","type":"tuple[]"},{"internalType":"bool","name":"strict","type":"bool"}],"name":"aggregate","outputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"components":[{"internalType":"bool","name":"success","type":"bool"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct Multicall.Return[]","name":"returnData","type":"tuple[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getBlockHash","outputs":[{"internalType":"bytes32","name":"blockHash","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCurrentBlockCoinbase","outputs":[{"internalType":"address","name":"coinbase","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCurrentBlockDifficulty","outputs":[{"internalType":"uint256","name":"difficulty","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCurrentBlockGasLimit","outputs":[{"internalType":"uint256","name":"gaslimit","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCurrentBlockTimestamp","outputs":[{"internalType":"uint256","name":"timestamp","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"getEthBalance","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLastBlockHash","outputs":[{"internalType":"bytes32","name":"blockHash","type":"bytes32"}],"stateMutability":"view","type":"function"}] +export const govPoolABI = [{anonymous:false,inputs:[{indexed:true,internalType:'address',name:'previousOwner',type:'address',},{indexed:true,internalType:'address',name:'newOwner',type:'address',},],name:'OwnershipTransferred',type:'event',},{anonymous:false,inputs:[{indexed:false,internalType:'uint256',name:'reward',type:'uint256',},],name:'RewardAdded',type:'event',},{anonymous:false,inputs:[{indexed:true,internalType:'address',name:'user',type:'address',},{indexed:false,internalType:'uint256',name:'reward',type:'uint256',},],name:'RewardPaid',type:'event',},{anonymous:false,inputs:[{indexed:true,internalType:'address',name:'user',type:'address',},{indexed:false,internalType:'uint256',name:'amount',type:'uint256',},],name:'Staked',type:'event',},{anonymous:false,inputs:[{indexed:true,internalType:'address',name:'user',type:'address',},{indexed:false,internalType:'uint256',name:'amount',type:'uint256',},],name:'Withdrawn',type:'event',},{constant:true,inputs:[],name:'DURATION',outputs:[{internalType:'uint256',name:'',type:'uint256'}],payable:false,stateMutability:'view',type:'function',},{constant:true,inputs:[{internalType:'address',name:'account',type:'address'}],name:'balanceOf',outputs:[{internalType:'uint256',name:'',type:'uint256'}],payable:false,stateMutability:'view',type:'function',},{constant:true,inputs:[{internalType:'address',name:'account',type:'address'}],name:'earned',outputs:[{internalType:'uint256',name:'',type:'uint256'}],payable:false,stateMutability:'view',type:'function',},{constant:false,inputs:[],name:'exit',outputs:[],payable:false,stateMutability:'nonpayable',type:'function',},{constant:false,inputs:[],name:'getReward',outputs:[],payable:false,stateMutability:'nonpayable',type:'function',},{constant:true,inputs:[],name:'isOwner',outputs:[{internalType:'bool',name:'',type:'bool'}],payable:false,stateMutability:'view',type:'function',},{constant:true,inputs:[],name:'lastTimeRewardApplicable',outputs:[{internalType:'uint256',name:'',type:'uint256'}],payable:false,stateMutability:'view',type:'function',},{constant:true,inputs:[],name:'lastUpdateTime',outputs:[{internalType:'uint256',name:'',type:'uint256'}],payable:false,stateMutability:'view',type:'function',},{constant:false,inputs:[{internalType:'uint256',name:'reward',type:'uint256'}],name:'notifyRewardAmount',outputs:[],payable:false,stateMutability:'nonpayable',type:'function',},{constant:true,inputs:[],name:'owner',outputs:[{internalType:'address',name:'',type:'address'}],payable:false,stateMutability:'view',type:'function',},{constant:true,inputs:[],name:'periodFinish',outputs:[{internalType:'uint256',name:'',type:'uint256'}],payable:false,stateMutability:'view',type:'function',},{constant:false,inputs:[],name:'renounceOwnership',outputs:[],payable:false,stateMutability:'nonpayable',type:'function',},{constant:true,inputs:[],name:'rewardPerToken',outputs:[{internalType:'uint256',name:'',type:'uint256'}],payable:false,stateMutability:'view',type:'function',},{constant:true,inputs:[],name:'rewardPerTokenStored',outputs:[{internalType:'uint256',name:'',type:'uint256'}],payable:false,stateMutability:'view',type:'function',},{constant:true,inputs:[],name:'rewardRate',outputs:[{internalType:'uint256',name:'',type:'uint256'}],payable:false,stateMutability:'view',type:'function',},{constant:true,inputs:[{internalType:'address',name:'',type:'address'}],name:'rewards',outputs:[{internalType:'uint256',name:'',type:'uint256'}],payable:false,stateMutability:'view',type:'function',},{constant:false,inputs:[{internalType:'address',name:'_rewardDistribution',type:'address',},],name:'setRewardDistribution',outputs:[],payable:false,stateMutability:'nonpayable',type:'function',},{constant:false,inputs:[{internalType:'uint256',name:'amount',type:'uint256'}],name:'stake',outputs:[],payable:false,stateMutability:'nonpayable',type:'function',},{constant:true,inputs:[],name:'totalSupply',outputs:[{internalType:'uint256',name:'',type:'uint256'}],payable:false,stateMutability:'view',type:'function',},{constant:false,inputs:[{internalType:'address',name:'newOwner',type:'address'}],name:'transferOwnership',outputs:[],payable:false,stateMutability:'nonpayable',type:'function',},{constant:true,inputs:[{internalType:'address',name:'',type:'address'}],name:'userRewardPerTokenPaid',outputs:[{internalType:'uint256',name:'',type:'uint256'}],payable:false,stateMutability:'view',type:'function',},{constant:false,inputs:[{internalType:'uint256',name:'amount',type:'uint256'}],name:'withdraw',outputs:[],payable:false,stateMutability:'nonpayable',type:'function',},{constant:true,inputs:[],name:'y',outputs:[{internalType:'contract IERC20',name:'',type:'address'}],payable:false,stateMutability:'view',type:'function',},{constant:true,inputs:[],name:'yfi',outputs:[{internalType:'contract IERC20',name:'',type:'address'}],payable:false,stateMutability:'view',type:'function',},] +export const MooToken = [{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"constant":true,"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"available","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"balance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"controller","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"deposit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"depositAll","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"depositETH","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[],"name":"earn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"earnLowerlimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getPricePerFullShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"governance","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"max","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"min","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_controller","type":"address"}],"name":"setController","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_earnLowerlimit","type":"uint256"}],"name":"setEarnLowerlimit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_governance","type":"address"}],"name":"setGovernance","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_min","type":"uint256"}],"name":"setMin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"token","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_shares","type":"uint256"}],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"withdrawAll","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"withdrawAllETH","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_shares","type":"uint256"}],"name":"withdrawETH","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"strategy","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}] +export const beefyUniV2ZapABI = [{"inputs":[{"internalType":"address","name":"_router","type":"address"},{"internalType":"address","name":"_WETH","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"WETH","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"beefyVault","type":"address"},{"internalType":"uint256","name":"tokenAmountOutMin","type":"uint256"},{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"uint256","name":"tokenInAmount","type":"uint256"}],"name":"beefIn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"beefyVault","type":"address"},{"internalType":"uint256","name":"tokenAmountOutMin","type":"uint256"}],"name":"beefInETH","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"beefyVault","type":"address"},{"internalType":"uint256","name":"withdrawAmount","type":"uint256"}],"name":"beefOut","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"beefyVault","type":"address"},{"internalType":"uint256","name":"withdrawAmount","type":"uint256"},{"internalType":"address","name":"desiredToken","type":"address"},{"internalType":"uint256","name":"desiredTokenOutMin","type":"uint256"}],"name":"beefOutAndSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"checkWETH","outputs":[{"internalType":"bool","name":"isValid","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"beefyVault","type":"address"},{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"uint256","name":"fullInvestmentIn","type":"uint256"}],"name":"estimateSwap","outputs":[{"internalType":"uint256","name":"swapAmountIn","type":"uint256"},{"internalType":"uint256","name":"swapAmountOut","type":"uint256"},{"internalType":"address","name":"swapTokenOut","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]; +export const uniswapV2PairABI = [{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1","type":"uint256"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0In","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1In","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount0Out","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1Out","type":"uint256"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"Swap","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint112","name":"reserve0","type":"uint112"},{"indexed":false,"internalType":"uint112","name":"reserve1","type":"uint112"}],"name":"Sync","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"constant":true,"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"MINIMUM_LIQUIDITY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"PERMIT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"burn","outputs":[{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getReserves","outputs":[{"internalType":"uint112","name":"_reserve0","type":"uint112"},{"internalType":"uint112","name":"_reserve1","type":"uint112"},{"internalType":"uint32","name":"_blockTimestampLast","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_token0","type":"address"},{"internalType":"address","name":"_token1","type":"address"}],"name":"initialize","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"kLast","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"mint","outputs":[{"internalType":"uint256","name":"liquidity","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"price0CumulativeLast","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"price1CumulativeLast","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"skim","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amount0Out","type":"uint256"},{"internalType":"uint256","name":"amount1Out","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"swap","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"sync","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"token0","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"token1","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"}] +export const uniswapV2RouterABI = [{"inputs":[{"internalType":"address","name":"_factory","type":"address"},{"internalType":"address","name":"_WETH","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"WETH","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"uint256","name":"amountADesired","type":"uint256"},{"internalType":"uint256","name":"amountBDesired","type":"uint256"},{"internalType":"uint256","name":"amountAMin","type":"uint256"},{"internalType":"uint256","name":"amountBMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"addLiquidity","outputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"amountB","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amountTokenDesired","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountETHMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"addLiquidityETH","outputs":[{"internalType":"uint256","name":"amountToken","type":"uint256"},{"internalType":"uint256","name":"amountETH","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"reserveIn","type":"uint256"},{"internalType":"uint256","name":"reserveOut","type":"uint256"}],"name":"getAmountIn","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"reserveIn","type":"uint256"},{"internalType":"uint256","name":"reserveOut","type":"uint256"}],"name":"getAmountOut","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"}],"name":"getAmountsIn","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"}],"name":"getAmountsOut","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"reserveA","type":"uint256"},{"internalType":"uint256","name":"reserveB","type":"uint256"}],"name":"quote","outputs":[{"internalType":"uint256","name":"amountB","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountAMin","type":"uint256"},{"internalType":"uint256","name":"amountBMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"removeLiquidity","outputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"amountB","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountETHMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"removeLiquidityETH","outputs":[{"internalType":"uint256","name":"amountToken","type":"uint256"},{"internalType":"uint256","name":"amountETH","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountETHMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"removeLiquidityETHSupportingFeeOnTransferTokens","outputs":[{"internalType":"uint256","name":"amountETH","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountETHMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"approveMax","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"removeLiquidityETHWithPermit","outputs":[{"internalType":"uint256","name":"amountToken","type":"uint256"},{"internalType":"uint256","name":"amountETH","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountETHMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"approveMax","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"removeLiquidityETHWithPermitSupportingFeeOnTransferTokens","outputs":[{"internalType":"uint256","name":"amountETH","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountAMin","type":"uint256"},{"internalType":"uint256","name":"amountBMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"approveMax","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"removeLiquidityWithPermit","outputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"amountB","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapETHForExactTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactETHForTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactETHForTokensSupportingFeeOnTransferTokens","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactTokensForETH","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactTokensForETHSupportingFeeOnTransferTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactTokensForTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactTokensForTokensSupportingFeeOnTransferTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"amountInMax","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapTokensForExactETH","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"amountInMax","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapTokensForExactTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}] +export const launchPoolABI = [{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"earned","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"rewards","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"notifyRewardAmount","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"duration","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"getReward","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"rewardRate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"lastTimeRewardApplicable","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"userRewardPerTokenPaid","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isOwner","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"amount","type":"uint256"}],"name":"stake","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"lastUpdateTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"stakedToken","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"rewardPerToken","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_token","type":"address"}],"name":"inCaseTokensGetStuck","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"rewardPerTokenStored","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"exit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"periodFinish","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_token","type":"address"},{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"name":"inCaseTokensGetStuck","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"rewardToken","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_stakedToken","type":"address"},{"name":"_rewardToken","type":"address"},{"name":"_duration","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"reward","type":"uint256"}],"name":"RewardAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"user","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"Staked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"user","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"Withdrawn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"user","type":"address"},{"indexed":false,"name":"reward","type":"uint256"}],"name":"RewardPaid","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}] \ No newline at end of file diff --git a/src/features/configure/chains.js b/src/features/configure/chains.js deleted file mode 100644 index 6c62a6490..000000000 --- a/src/features/configure/chains.js +++ /dev/null @@ -1,178 +0,0 @@ -export const supportedChains = [ - { - name: "Ethereum Mainnet", - short_name: "eth", - chain: "ETH", - network: "mainnet", - chain_id: 1, - network_id: 1, - rpc_url: "https://mainnet.infura.io/v3/%API_KEY%", - native_currency: { - symbol: "ETH", - name: "Ethereum", - decimals: "18", - contractAddress: "", - balance: "" - } - }, - { - name: "Ethereum Ropsten", - short_name: "rop", - chain: "ETH", - network: "ropsten", - chain_id: 3, - network_id: 3, - rpc_url: "https://ropsten.infura.io/v3/%API_KEY%", - native_currency: { - symbol: "ETH", - name: "Ethereum", - decimals: "18", - contractAddress: "", - balance: "" - } - }, - { - name: "Ethereum Rinkeby", - short_name: "rin", - chain: "ETH", - network: "rinkeby", - chain_id: 4, - network_id: 4, - rpc_url: "https://rinkeby.infura.io/v3/%API_KEY%", - native_currency: { - symbol: "ETH", - name: "Ethereum", - decimals: "18", - contractAddress: "", - balance: "" - } - }, - { - name: "Ethereum Görli", - short_name: "gor", - chain: "ETH", - network: "goerli", - chain_id: 5, - network_id: 5, - rpc_url: "https://goerli.infura.io/v3/%API_KEY%", - native_currency: { - symbol: "ETH", - name: "Ethereum", - decimals: "18", - contractAddress: "", - balance: "" - } - }, - { - name: "RSK Mainnet", - short_name: "rsk", - chain: "RSK", - network: "mainnet", - chain_id: 30, - network_id: 30, - rpc_url: "https://public-node.rsk.co", - native_currency: { - symbol: "RSK", - name: "RSK", - decimals: "18", - contractAddress: "", - balance: "" - } - }, - { - name: "Ethereum Kovan", - short_name: "kov", - chain: "ETH", - network: "kovan", - chain_id: 42, - network_id: 42, - rpc_url: "https://kovan.infura.io/v3/%API_KEY%", - native_currency: { - symbol: "ETH", - name: "Ethereum", - decimals: "18", - contractAddress: "", - balance: "" - } - }, - { - name: "Ethereum Classic Mainnet", - short_name: "etc", - chain: "ETC", - network: "mainnet", - chain_id: 61, - network_id: 1, - rpc_url: "https://ethereumclassic.network", - native_currency: { - symbol: "ETH", - name: "Ethereum", - decimals: "18", - contractAddress: "", - balance: "" - } - }, - { - name: "POA Network Sokol", - short_name: "poa", - chain: "POA", - network: "sokol", - chain_id: 77, - network_id: 77, - rpc_url: "https://sokol.poa.network", - native_currency: { - symbol: "POA", - name: "POA", - decimals: "18", - contractAddress: "", - balance: "" - } - }, - { - name: "POA Network Core", - short_name: "skl", - chain: "POA", - network: "core", - chain_id: 99, - network_id: 99, - rpc_url: "https://core.poa.network", - native_currency: { - symbol: "POA", - name: "POA", - decimals: "18", - contractAddress: "", - balance: "" - } - }, - { - name: "xDAI Chain", - short_name: "xdai", - chain: "POA", - network: "dai", - chain_id: 100, - network_id: 100, - rpc_url: "https://dai.poa.network", - native_currency: { - symbol: "xDAI", - name: "xDAI", - decimals: "18", - contractAddress: "", - balance: "" - } - }, - { - name: "Callisto Mainnet", - short_name: "clo", - chain: "callisto", - network: "mainnet", - chain_id: 820, - network_id: 1, - rpc_url: "https://clo-geth.0xinfra.com/", - native_currency: { - symbol: "CLO", - name: "CLO", - decimals: "18", - contractAddress: "", - balance: "" - } - } -]; \ No newline at end of file diff --git a/src/features/configure/curves.js b/src/features/configure/curves.js deleted file mode 100644 index 5774005b5..000000000 --- a/src/features/configure/curves.js +++ /dev/null @@ -1,159 +0,0 @@ -const curves = [ - { - id: 'BUSDv3', - name: 'BUSD', - symbol: 'BUSD', - description: 'Binance USD', - investSymbol: 'yBUSD', - erc20address: '0x4fabb145d64652a948d72533023f6e7a623c7c53', - iEarnContract: '0x04bC0Ab673d88aE9dbC9DA2380cB6B79C4BCa9aE', - apr: 0, - maxApr: 0, - balance: 0, - investedBalance: 0, - price: 0, - decimals: 18, - poolValue: 0, - abi: config.IEarnErc20ABIv2, - version: 3, - disabled: false, - invest: 'deposit', - redeem: 'withdraw', - curve: true, - price_id: 'binance-usd' - }, - { - id: 'DAIv2', - name: 'DAI', - symbol: 'DAI', - description: 'DAI Stablecoin', - investSymbol: 'yDAI', - erc20address: '0x6b175474e89094c44da98b954eedeac495271d0f', - iEarnContract: '0x16de59092dAE5CcF4A1E6439D611fd0653f0Bd01', - lastMeasurement: 9465912, - measurement: 1000037230456849197, - maxApr: 0, - balance: 0, - investedBalance: 0, - decimals: 18, - price: 0, - poolValue: 0, - abi: config.IEarnErc20ABIv2, - version: 2, - disabled: false, - invest: 'deposit', - redeem: 'withdraw', - curve: true, - price_id: 'dai' - }, - { - id: 'USDCv2', - name: 'USD Coin', - symbol: 'USDC', - description: 'USD//C', - investSymbol: 'yUSDC', - erc20address: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', - iEarnContract: '0xd6aD7a6750A7593E092a9B218d66C0A814a3436e', - lastMeasurement: 9465880, - measurement: 1139534904703193728, - apr: 0, - maxApr: 0, - balance: 0, - investedBalance: 0, - price: 0, - decimals: 6, - poolValue: 0, - abi: config.IEarnErc20ABIv2, - version: 2, - disabled: false, - invest: 'deposit', - redeem: 'withdraw', - curve: true, - price_id: 'usd-coin' - }, - { - id: 'USDTv2', - name: 'USDT', - symbol: 'USDT', - description: 'Tether USD', - investSymbol: 'yUSDT', - erc20address: '0xdAC17F958D2ee523a2206206994597C13D831ec7', - iEarnContract: '0x83f798e925BcD4017Eb265844FDDAbb448f1707D', - lastMeasurement: 9465880, - measurement: 1000030025124779312, - apr: 0, - maxApr: 0, - balance: 0, - investedBalance: 0, - price: 0, - decimals: 6, - poolValue: 0, - abi: config.IEarnErc20ABIv2, - version: 2, - disabled: false, - invest: 'deposit', - redeem: 'withdraw', - curve: true, - price_id: 'tether', - }, - { - id: 'TUSDv2', - name: 'TUSD', - symbol: 'TUSD', - description: 'TrueUSD', - investSymbol: 'yTUSD', - erc20address: '0x0000000000085d4780B73119b644AE5ecd22b376', - iEarnContract: '0x73a052500105205d34Daf004eAb301916DA8190f', - lastMeasurement: 9479531, - measurement: 1000197346651007837, - apr: 0, - maxApr: 0, - balance: 0, - investedBalance: 0, - price: 0, - decimals: 18, - poolValue: 0, - abi: config.IEarnErc20ABIv2, - version: 2, - disabled: false, - invest: 'deposit', - redeem: 'withdraw', - curve: true, - price_id: 'true-usd', - } -] - -const curveContracts = [ - { - id: 'crvV1', - symbol: 'compound.curve.fi', - version: 1, - erc20address: '0x3740fb63ab7a09891d7c0d4299442a551d06f5fd', - decimals: 18, - balance: 0 - }, - { - id: 'crvV2', - symbol: 'usdt.curve.fi', - version: 2, - erc20address: '0x9fc689ccada600b6df723d9e47d84d76664a1f23', - decimals: 18, - balance: 0 - }, - { - id: 'crvV3', - symbol: 'y.curve.fi', - version: 3, - erc20address: '0xdf5e0e81dff6faf3a7e52ba697820c5e32d806a8', - decimals: 18, - balance: 0 - }, - { - id: 'crvV4', - symbol: 'busd.curve.fi', - version: 4, - erc20address: '0x3B3Ac5386837Dc563660FB6a0937DFAa5924333B', - decimals: 18, - balance: 0 - } -] \ No newline at end of file diff --git a/src/features/configure/index.js b/src/features/configure/index.js index 52d73e032..12c4fb3d0 100644 --- a/src/features/configure/index.js +++ b/src/features/configure/index.js @@ -1,3 +1,95 @@ -export { earnContractABI, USDTABI, erc20ABI, yCurveZapABI, yCurveZapOutABI, yCurveZapV4ABI, yCurveZapOutV4ABI, yCurveZapSwapABI, yCurveZapSwapV4ABI, yCurveFiRewardsABI, balancerRewardsABI, governanceABI, pool4Abi } from './abi'; -export { pools } from './pools'; -export { supportedChains } from './chains'; +import { addressBook } from 'blockchain-addressbook'; + +const { + polygon: polygonAddressBook, + heco: hecoAddressBook, + celo: celoAddressBook, + avax: avaxAddressBook, + bsc: bscAddressBook, + fantom: fantomAddressBook, + one: harmonyAddressBook, + arbitrum: arbitrumAddressBook, + moonriver: moonriverAddressBook, + cronos: cronosAddressBook, + aurora: auroraAddressBook, + fuse: fuseAddressBook, + metis: metisAddressBook, + moonbeam: moonbeamAddressBook, + emerald: emeraldAddressBook, +} = addressBook; +export { + bscAddressBook, + hecoAddressBook, + celoAddressBook, + avaxAddressBook, + polygonAddressBook, + fantomAddressBook, + harmonyAddressBook, + arbitrumAddressBook, + moonriverAddressBook, + cronosAddressBook, + auroraAddressBook, + fuseAddressBook, + metisAddressBook, + moonbeamAddressBook, + emeraldAddressBook, +}; + +export { + vaultABI, + bnbVaultABI, + erc20ABI, + strategyABI, + multicallABI, + govPoolABI, + beefyUniV2ZapABI, + uniswapV2PairABI, + uniswapV2RouterABI, + launchPoolABI, +} from './abi'; +export { bscStakePools } from './stake/bsc_stake'; +export { hecoStakePools } from './stake/heco_stake'; +export { avalancheStakePools } from './stake/avalanche_stake'; +export { celoStakePools } from './stake/celo_stake'; +export { moonriverStakePools } from './stake/moonriver_stake'; +export { polygonStakePools } from './stake/polygon_stake'; +export { fantomStakePools } from './stake/fantom_stake'; +export { harmonyStakePools } from './stake/harmony_stake'; +export { arbitrumStakePools } from './stake/arbitrum_stake'; +export { cronosStakePools } from './stake/cronos_stake'; +export { auroraStakePools } from './stake/aurora_stake'; +export { fuseStakePools } from './stake/fuse_stake'; +export { metisStakePools } from './stake/metis_stake'; +export { moonbeamStakePools } from './stake/moonbeam_stake'; +export { emeraldStakePools } from './stake/emerald_stake'; +export { bscPools } from './vault/bsc_pools'; +export { hecoPools } from './vault/heco_pools'; +export { avalanchePools } from './vault/avalanche_pools'; +export { celoPools } from './vault/celo_pools'; +export { moonriverPools } from './vault/moonriver_pools'; +export { polygonPools } from './vault/polygon_pools'; +export { fantomPools } from './vault/fantom_pools'; +export { harmonyPools } from './vault/harmony_pools'; +export { arbitrumPools } from './vault/arbitrum_pools'; +export { cronosPools } from './vault/cronos_pools'; +export { auroraPools } from './vault/aurora_pools'; +export { fusePools } from './vault/fuse_pools'; +export { metisPools } from './vault/metis_pools'; +export { moonbeamPools } from './vault/moonbeam_pools'; +export { emeraldPools } from './vault/emerald_pools'; +export { bscZaps } from './zap/bsc_zaps'; +export { hecoZaps } from './zap/heco_zaps'; +export { avalancheZaps } from './zap/avalanche_zaps'; +export { celoZaps } from './zap/celo_zaps'; +export { moonriverZaps } from './zap/moonriver_zaps'; +export { polygonZaps } from './zap/polygon_zaps'; +export { fantomZaps } from './zap/fantom_zaps'; +export { harmonyZaps } from './zap/harmony_zaps'; +export { arbitrumZaps } from './zap/arbitrum_zaps'; +export { cronosZaps } from './zap/cronos_zaps'; +export { auroraZaps } from './zap/aurora_zaps'; +export { fuseZaps } from './zap/fuse_zaps'; +export { metisZaps } from './zap/metis_zaps'; +export { moonbeamZaps } from './zap/moonbeam_zaps'; +export { emeraldZaps } from './zap/emerald_zaps'; +export { nativeCoins } from './native_coins'; diff --git a/src/features/configure/native_coins.js b/src/features/configure/native_coins.js new file mode 100644 index 000000000..ea9ed8b76 --- /dev/null +++ b/src/features/configure/native_coins.js @@ -0,0 +1,130 @@ +export const nativeCoins = [ + { + chainId: 1, + name: 'Ethereum', + symbol: 'ETH', + decimals: 18, + wrappedSymbol: 'WETH', + allowance: Infinity, + }, + { + chainId: 56, + name: 'Binance Coin', + symbol: 'BNB', + decimals: 18, + wrappedSymbol: 'WBNB', + allowance: Infinity, + }, + { + chainId: 128, + name: 'Heco Token', + symbol: 'HT', + decimals: 18, + wrappedSymbol: 'WHT', + allowance: Infinity, + }, + { + chainId: 42220, + name: 'Celo', + symbol: 'CELO', + decimals: 18, + wrappedSymbol: 'CELO', + allowance: Infinity, + }, + { + chainId: 43114, + name: 'Avalance Coin', + symbol: 'AVAX', + decimals: 18, + wrappedSymbol: 'WAVAX', + allowance: Infinity, + }, + { + chainId: 137, + name: 'Polygon', + symbol: 'MATIC', + decimals: 18, + wrappedSymbol: 'WMATIC', + allowance: Infinity, + }, + { + chainId: 250, + name: 'Fantom', + symbol: 'FTM', + decimals: 18, + wrappedSymbol: 'WFTM', + allowance: Infinity, + }, + { + chainId: 1666600000, + name: 'Harmony', + symbol: 'ONE', + decimals: 18, + wrappedSymbol: 'WONE', + allowance: Infinity, + }, + { + chainId: 42161, + name: 'Arbitrum', + symbol: 'ETH', + decimals: 18, + wrappedSymbol: 'WETH', + allowance: Infinity, + }, + { + chainId: 1285, + name: 'Moonriver', + symbol: 'MOVR', + decimals: 18, + wrappedSymbol: 'WMOVR', + allowance: Infinity, + }, + { + chainId: 25, + name: 'Cronos', + symbol: 'CRO', + decimals: 18, + wrappedSymbol: 'WCRO', + allowance: Infinity, + }, + { + chainId: 122, + name: 'Fuse', + symbol: 'FUSE', + decimals: 18, + wrappedSymbol: 'WFUSE', + allowance: Infinity, + }, + { + chainId: 1088, + name: 'Metis', + symbol: 'METIS', + decimals: 18, + wrappedSymbol: 'WMETIS', + allowance: Infinity, + }, + { + chainId: 1313161554, + name: 'Aurora', + symbol: 'ETH', + decimals: 18, + wrappedSymbol: 'WETH', + allowance: Infinity, + }, + { + chainId: 1284, + name: 'Moonbeam', + symbol: 'GLMR', + decimals: 18, + wrappedSymbol: 'WGLMR', + allowance: Infinity, + }, + { + chainId: 42262, + name: 'Oasis Emerald', + symbol: 'ROSE', + decimals: 18, + wrappedSymbol: 'WROSE', + allowance: Infinity, + }, +]; diff --git a/src/features/configure/pools.js b/src/features/configure/pools.js deleted file mode 100644 index 4cb0d5d1f..000000000 --- a/src/features/configure/pools.js +++ /dev/null @@ -1,155 +0,0 @@ -// id: '池子id', -// name: '池子名字', -// token: '池子代币', -// tokenDescription: '代币描述', -// tokenAddress: '代币ERC20地址', -// earnedToken: '奖励代币', -// earnedTokenAddress: '奖励代币ERC20地址', -// earnContractAddress: '池子合约地址', -// price : 挖的代币的价格! -// path price: -export const pools = [ - { - id: 'eth', - name: 'ETH', - token: 'ETH', - tokenDescription: 'ETH', - tokenAddress: '', - tokenDecimals: 18, - tokenDescriptionUrl: '', - tokenDescriptionUrl2: '', - earnedToken: 'iWETH', - earnedTokenAddress: '0xa8EA49a9e242fFfBdECc4583551c3BcB111456E6', - earnContractAddress: '0xa8EA49a9e242fFfBdECc4583551c3BcB111456E6', - defaultApy: "39.54", - pricePerFullShare: 1, - pastPricePerFullShare: 1 - }, - { - id: 'weth', - name: 'WETH', - token: 'WETH', - tokenDescription: 'WETH', - tokenAddress: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2', - tokenDecimals: 18, - tokenDescriptionUrl: '', - tokenDescriptionUrl2: '', - earnedToken: 'iWETH', - earnedTokenAddress: '0xa8EA49a9e242fFfBdECc4583551c3BcB111456E6', - earnContractAddress: '0xa8EA49a9e242fFfBdECc4583551c3BcB111456E6', - defaultApy: "39.54", - pricePerFullShare: 1, - pastPricePerFullShare: 1 - }, - { - id: 'usdt', - name: 'USDT', - token: 'USDT', - tokenDescription: 'USDT', - tokenAddress: '0xdAC17F958D2ee523a2206206994597C13D831ec7', - tokenDecimals: 6, - tokenDescriptionUrl: '', - tokenDescriptionUrl2: '', - earnedToken: 'iUSDT', - earnedTokenAddress: '0x72Cf258c852Dc485a853370171d46B9D29fD3184', - earnContractAddress: '0x72Cf258c852Dc485a853370171d46B9D29fD3184', - defaultApy: "39.54", - pricePerFullShare: 1, - pastPricePerFullShare: 1 - },{ - id: 'usdc', - name: 'USDC', - token: 'USDC', - tokenDescription: 'USDC', - tokenAddress: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', - tokenDecimals: 6, - tokenDescriptionUrl: '', - tokenDescriptionUrl2: '', - earnedToken: 'iUSDC', - earnedTokenAddress: '0x23B4dB3a435517fd5f2661a9c5a16f78311201c1', - earnContractAddress: '0x23B4dB3a435517fd5f2661a9c5a16f78311201c1', - defaultApy: "39.54", - pricePerFullShare: 1, - pastPricePerFullShare: 1 - }, - { - id: 'busd', - name: 'BUSD', - token: 'BUSD', - tokenDescription: 'BUSD', - tokenAddress: '0x4Fabb145d64652a948d72533023f6E7A623C7C53', - tokenDecimals: 18, - tokenDescriptionUrl: '', - tokenDescriptionUrl2: '', - earnedToken: 'iBUSD', - earnedTokenAddress: '0xc46d2fC00554f1f874F37e6e3E828A0AdFEFfbcB', - earnContractAddress: '0xc46d2fC00554f1f874F37e6e3E828A0AdFEFfbcB', - defaultApy: "42.63", - pricePerFullShare: 1, - pastPricePerFullShare: 1 - }, - { - id: 'dai', - name: 'DAI', - token: 'DAI', - tokenDescription: 'DAI', - tokenAddress: '0x6B175474E89094C44Da98b954EedeAC495271d0F', - tokenDecimals: 18, - tokenDescriptionUrl: '', - tokenDescriptionUrl2: 'https://docs.yfii.finance/#/zh-cn/buy-tokens?id=_2-dai%e5%85%91%e6%8d%a2', - earnedToken: 'iDAI', - earnedTokenAddress: '0x1e0DC67aEa5aA74718822590294230162B5f2064', - earnContractAddress: '0x1e0DC67aEa5aA74718822590294230162B5f2064', - defaultApy: "86.3", - pricePerFullShare: 1, - pastPricePerFullShare: 1 - }, - { - id: 'hbtc', - name: 'HBTC', - token: 'HBTC', - tokenDescription: 'HBTC', - tokenAddress: '0x0316eb71485b0ab14103307bf65a021042c6d380', - tokenDecimals: 18, - tokenDescriptionUrl: '', - tokenDescriptionUrl2: '', - earnedToken: 'iHBTC', - earnedTokenAddress: '0x26AEdD2205FF8a87AEF2eC9691d77Ce3f40CE6E9', - earnContractAddress: '0x26AEdD2205FF8a87AEF2eC9691d77Ce3f40CE6E9', - defaultApy: "86.3", - pricePerFullShare: 1, - pastPricePerFullShare: 1 - }, - { - id: 'tusd', - name: 'TUSD', - token: 'TUSD', - tokenDescription: 'TUSD', - tokenAddress: '0x0000000000085d4780B73119b644AE5ecd22b376', - tokenDecimals: 18, - tokenDescriptionUrl: '', - tokenDescriptionUrl2: '', - earnedToken: 'iTUSD', - earnedTokenAddress: '0x4243f5C8683089b65a9F588B1AE578d5D84bFBC9', - earnContractAddress: '0x4243f5C8683089b65a9F588B1AE578d5D84bFBC9', - defaultApy: "42.63", - pricePerFullShare: 1, - pastPricePerFullShare: 1 - } - ,{ - id: 'ycrv', - name: 'yCRV', - token: 'yCRV', - tokenDescription: 'yCRV', - tokenAddress: '0xdF5e0e81Dff6FAF3A7e52BA697820c5e32D806A8', - tokenDecimals: 18, - tokenDescriptionUrl: 'https://docs.yfii.finance/#/using-crv?id=how-to-get-ycrv', - tokenDescriptionUrl2: 'https://docs.yfii.finance/#/zh-cn/buy-tokens?id=_5-ycrv%e5%85%91%e6%8d%a2', - earnedToken: 'iYCRV', - earnedTokenAddress: '0x3E3db9cc5b540d2794DB3861BE5A4887cF77E48B', - earnContractAddress: '0x3E3db9cc5b540d2794DB3861BE5A4887cF77E48B', - defaultApy: "42.63", - pricePerFullShare: 1, - pastPricePerFullShare: 1 - }, -] \ No newline at end of file diff --git a/src/features/configure/stake/arbitrum_stake.js b/src/features/configure/stake/arbitrum_stake.js new file mode 100644 index 000000000..73850b5d6 --- /dev/null +++ b/src/features/configure/stake/arbitrum_stake.js @@ -0,0 +1,37 @@ +import { govPoolABI } from '../abi'; + +export const arbitrumStakePools = [ + { + id: 'bifi-eth', + name: 'BIFI', + logo: 'single-assets/BIFI.png', + token: 'BIFI', + tokenDecimals: 18, + tokenAddress: '0x99C409E5f62E4bd2AC142f17caFb6810B8F0BAAE', + tokenOracle: 'tokens', + tokenOracleId: 'BIFI', + earnedToken: 'ETH', + earnedTokenDecimals: 18, + earnedTokenAddress: '0x82aF49447D8a07e3bd95BD0d56f35241523fBab1', + earnContractAddress: '0x48F4634c8383aF01BF71AefBC125eb582eb3C74D', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'ETH', + partnership: false, + status: 'active', + fixedStatus: true, + partners: [ + { + logo: 'stake/beefy/beefyfinance.png', + logoNight: 'stake/beefy/beefyfinance_night.png', + background: 'stake/beefy/background.png', + text: "Beefy Finance is The Multi-Chain Yield Optimizer across many sidechains, enabling users to earn autocompounded yield on their crypto. Did you know also that you can own a piece of Beefy itself? Beefy runs on its governance token, BIFI. The token has a set supply of 80,000 across all chains; no more may be minted, ever! As a holder of BIFI you may create and vote on important DAO proposals, and you become dividend-eligible to earn a share of every compounding harvest on Beefy vaults, hour by hour. Here on Arbitrum, you just need to stake BIFI in this reward pool, or in the autocompounding BIFI Maxi vault on the main page. For this pool, ETH dividends are gathered and sent proportionally to each staker. Stake here, return later to claim the ETH you've earned.", + website: 'https://app.beefy.finance', + social: { + telegram: 'http://t.me/beefyfinance', + twitter: 'https://twitter.com/beefyfinance', + }, + }, + ], + }, +]; diff --git a/src/features/configure/stake/aurora_stake.js b/src/features/configure/stake/aurora_stake.js new file mode 100644 index 000000000..23982ec95 --- /dev/null +++ b/src/features/configure/stake/aurora_stake.js @@ -0,0 +1,37 @@ +import { govPoolABI } from '../abi'; + +export const auroraStakePools = [ + { + id: 'bifi-aurora', + name: 'BIFI', + logo: 'single-assets/BIFI.png', + token: 'BIFI', + tokenDecimals: 18, + tokenAddress: '0x218c3c3D49d0E7B37aff0D8bB079de36Ae61A4c0', + tokenOracle: 'tokens', + tokenOracleId: 'BIFI', + earnedToken: 'ETH', + earnedTokenDecimals: 18, + earnedTokenAddress: '0xC9BdeEd33CD01541e1eeD10f90519d2C06Fe3feB', + earnContractAddress: '0xE6ab45f5e93FA377D0c4cC097187Ab7256c2AEBf', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'ETH', + partnership: false, + status: 'active', + fixedStatus: true, + partners: [ + { + logo: 'stake/beefy/beefyfinance.png', + logoNight: 'stake/beefy/beefyfinance_night.png', + background: 'stake/beefy/background.png', + text: "Beefy Finance is The Multi-Chain Yield Optimizer across many sidechains, enabling users to earn autocompounded yield on their crypto. Did you know also that you can own a piece of Beefy itself? Beefy runs on its governance token, BIFI. The token has a set supply of 80,000 across all chains; no more may be minted, ever! As a holder of BIFI you may create and vote on important DAO proposals, and you become dividend-eligible to earn a share of every compounding harvest on Beefy vaults, hour by hour. Here on Aurora, you just need to stake BIFI in this reward pool, or in the autocompounding BIFI Maxi vault on the main page. For this pool, ETH dividends are gathered and sent proportionally to each staker. Stake here, return later to claim the ETH you've earned.", + website: 'https://app.beefy.finance', + social: { + telegram: 'http://t.me/beefyfinance', + twitter: 'https://twitter.com/beefyfinance', + }, + }, + ], + }, +]; diff --git a/src/features/configure/stake/avalanche_stake.js b/src/features/configure/stake/avalanche_stake.js new file mode 100644 index 000000000..524184137 --- /dev/null +++ b/src/features/configure/stake/avalanche_stake.js @@ -0,0 +1,229 @@ +import { govPoolABI } from '../abi'; + +const beefy = { + logo: 'stake/beefy/beefyfinance.png', + logoNight: 'stake/beefy/beefyfinance_night.png', + background: 'stake/beefy/background.png', + text: "Beefy Finance is The Multi-Chain Yield Optimizer across many blockchains, enabling users to earn autocompounded yield on their crypto. Did you know also that you can own a piece of Beefy itself? Beefy runs on its governance token, BIFI. The token has a set supply of 80,000 across all chains; no more may be minted, ever! As a holder of BIFI you may create and vote on important DAO proposals, and you become dividend-eligible to earn a share of every compounding harvest on Beefy vaults, hour by hour. Here on Avalanche, you just need to stake BIFI in this reward pool, or in the autocompounding BIFI Maxi vault on the main page. For this pool, AVAX dividends are gathered and sent proportionally to each staker. Stake here, return later to claim the AVAX you've earned.", + website: 'https://app.beefy.finance', + social: { + telegram: 'http://t.me/beefyfinance', + twitter: 'https://twitter.com/beefyfinance', + }, +}; + +export const avalancheStakePools = [ + { + id: 'bifi-avax', + name: 'BIFI', + logo: 'single-assets/BIFI.png', + token: 'BIFI', + tokenDecimals: 18, + tokenAddress: '0xd6070ae98b8069de6B494332d1A1a81B6179D960', + tokenOracle: 'tokens', + tokenOracleId: 'BIFI', + earnedToken: 'AVAX', + earnedTokenDecimals: 18, + earnedTokenAddress: '0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7', + earnContractAddress: '0x86d38c6b6313c5a3021d68d1f57cf5e69197592a', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'WAVAX', + partnership: false, + status: 'active', + fixedStatus: true, + partners: [beefy], + }, + + { + id: 'moo_beJOE', + name: 'Beefy', + logo: 'single-assets/beJOE.png', + token: 'beJOE', + tokenDecimals: 18, + tokenAddress: '0x1F2A8034f444dc55F963fb5925A9b6eb744EeE2c', + tokenOracle: 'tokens', + tokenOracleId: 'beJOE', + earnedToken: 'JOE', + earnedTokenDecimals: 18, + earnedTokenAddress: '0x6e84a6216eA6dACC71eE8E6b0a5B7322EEbC0fDd', + earnContractAddress: '0x2E360492120cebeB2527c41BAE1a4f21992D86Ec', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'JOE', + partnership: false, + status: 'active', + fixedStatus: true, + partners: [ + { + logo: 'stake/beefy/beefyfinance.png', + background: 'stake/beefy/background.png', + text: 'beJOE is Beefy Staked JOE. The token is pegged to JOE and can be staked on the Beefy platform to earn JOE or more beJOE. beJOE gives stakers access to 5% of all Beefy Trader Joe Boosted farm rewards. You can burn beJOE for JOE if there is available JOE reserves.', + website: 'https://beefy.com', + social: { + telegram: 'http://t.me/beefyfinance', + twitter: 'https://twitter.com/beefyfinance', + }, + }, + ], + }, + + { + id: 'moo_AVAX-nitro', + name: 'Nitro Network', + logo: 'single-assets/AVAX.svg', + token: 'mooAaveAVAX', + tokenDecimals: 18, + tokenAddress: '0x1B156C5c75E9dF4CAAb2a5cc5999aC58ff4F9090', + tokenOracle: 'tokens', + tokenOracleId: 'AVAX', + earnedToken: 'NCASH', + earnedTokenDecimals: 18, + earnedTokenAddress: '0xc69Eba65e87889f0805dB717Af06797055A0BA07', + earnContractAddress: '0xB27727ebeE7cfa04cAAb68522E1A14c426BBA768', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'NCASH', + partnership: true, + status: 'active', + isMooStaked: true, + periodFinish: 1650115107, + partners: [ + { + text: "Nitro Network NFMs, or Non-Fungible Miners, are the next evolution in NFT utility. NFMs combine the unique artwork and ownership principles of NFTs with the reward-generating utility of the DeFi industry. While most traditional mining methods require expensive and inefficient hardware, NFMs generate rewards for their owners in Nitro's native token NCash without the need for additional equipment and expenses.", + website: 'https://ecosystem.nitro.network/', + social: { + telegram: '', + twitter: '', + }, + }, + ], + }, + + { + id: 'moo_curve-avax-atricrypto-ripae', + name: 'Ripae', + logo: 'uncategorized/ATRICRYPTO.png', + token: 'mooCurveTriCrypto', + tokenDecimals: 18, + tokenAddress: '0xe1a8EeA58D63Ea64d00365531D266C2AD1f62FC4', + tokenOracle: 'lps', + tokenOracleId: 'curve-avax-atricrypto', + earnedToken: 'PAE', + earnedTokenDecimals: 18, + earnedTokenAddress: '0x9466Ab927611725B9AF76b9F31B2F879Ff14233d', + earnContractAddress: '0xc4C291b76F9aD94F0Ce57E7a5E629D81A02bB1C9', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'PAE', + partnership: true, + status: 'active', + isMooStaked: true, + periodFinish: 1648121946, + partners: [ + { + logo: 'stake/ripae/logo.png', + background: 'stake/ripae/bg.png', + text: + 'Ripae’s mission is to construct a cross-chain algorithmic stablecoin (ASC) economy and connect DeFi networks to make open finance capital efficient and accessible to everyone.\n' + + '\n' + + 'With its experienced team, Ripae Finance will strive to build DeFi’s most convenient, secure, fair, and cost-effective ASC solution in order to help the industry thrive by enabling all participants to work together effortlessly.', + website: 'https://avax.ripae.finance/', + social: { + telegram: 'https://discord.gg/6zq53FB4TS', + twitter: 'https://twitter.com/ripaefinance', + }, + }, + ], + }, + + { + id: 'moo_AVAX-grape', + name: 'Grape Finance', + logo: 'single-assets/AVAX.svg', + token: 'mooAaveAVAX', + tokenDecimals: 18, + tokenAddress: '0x1B156C5c75E9dF4CAAb2a5cc5999aC58ff4F9090', + tokenOracle: 'tokens', + tokenOracleId: 'AVAX', + earnedToken: 'WINE', + earnedTokenDecimals: 18, + earnedTokenAddress: '0xC55036B5348CfB45a932481744645985010d3A44', + earnContractAddress: '0xE1BBde90EB564c5f26dfcDeB9918BDA183BF4e2b', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'WINE', + partnership: true, + status: 'active', + isMooStaked: true, + periodFinish: 1645707476, + partners: [ + { + logo: 'stake/grape/logo.png', + background: 'stake/grape/bg.png', + text: 'Supporting the only pegged algorithmic stable currency currently on AVAX, $GRAPE which is pegged to $MIM. The goal is to create a DAO run by the community offering a high yield for investors and utilize two tokens $GRAPE and $WINE to bootstrap liquidity and provide funding for the extensive roadmap. An extensive roadmap including Launchpad, great partnerships, and upcoming lending protocol/new stable reserve currency. Future goals to support multiple chains and create a total defi ecosystem under the GrapeFi umbrella.', + website: 'https://grapefinance.app/', + social: { + telegram: 'https://discord.gg/mZ4QrZwH5M', + twitter: 'https://twitter.com/grape_finance', + }, + }, + ], + }, + + { + id: 'moo_bifi_avax-singular', + name: 'Singular', + assets: ['BIFI', 'AVAX'], + token: 'mooJoeWAVAX-BIFI', + tokenDecimals: 18, + tokenAddress: '0xb1e29194d90d67b8d1c4104FDf6DaF0F7d3344D5', + tokenOracle: 'lps', + tokenOracleId: 'joe-wavax-bifi', + earnedToken: 'SING', + earnedTokenDecimals: 18, + earnedTokenAddress: '0xF9A075C9647e91410bF6C402bDF166e1540f67F0', + earnContractAddress: '0x2554216fD346ABDBD59cc6f7E85A3fdAF15c1419', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'SING', + partnership: true, + status: 'active', + isMooStaked: true, + periodFinish: 1635096979, + partners: [ + { + logo: 'stake/singular/logo.png', + background: 'stake/singular/bg.png', + text: 'The next gen multichain strategic yield farm on Polygon (Matic Network), Binance Smart Chain (BSC), and Avalanche with a unique Triple Farming System.', + website: 'https://singular.farm/', + social: { + telegram: 'https://t.me/singularfarm', + twitter: 'https://twitter.com/singularfarm', + }, + }, + ], + }, + { + id: 'moo_joe-bifi', + name: 'Beefy', + logo: 'single-assets/JOE.png', + token: 'mooJoe', + tokenDecimals: 18, + tokenAddress: '0x282B11E65f0B49363D4505F91c7A44fBEe6bCc0b', + tokenOracle: 'tokens', + tokenOracleId: 'JOE', + earnedToken: 'mooAvalancheBIFI', + earnedTokenDecimals: 18, + earnedTokenAddress: '0xCeefB07Ad37ff165A0b03DC7C808fD2E2fC77683', + earnContractAddress: '0x90e91cAf13F6C06fD04031cF5f398F8b3BAB794B', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'BIFI', + partnership: true, + status: 'active', + isMooStaked: true, + periodFinish: 1633540000, + partners: [beefy], + }, +]; diff --git a/src/features/configure/stake/bsc_stake.js b/src/features/configure/stake/bsc_stake.js new file mode 100644 index 000000000..281238a27 --- /dev/null +++ b/src/features/configure/stake/bsc_stake.js @@ -0,0 +1,3239 @@ +import { govPoolABI } from '../abi'; + +const moonpot = { + logo: 'stake/moonpot/logo.png', + background: 'stake/moonpot/bg.png', + text: 'Moonpot is a win-win savings game on Binance Smart Chain powered by Beefy Finance. By depositing crypto into a Moonpot, users gain interest on their assets and enter into a prize draw at the same time. There’s a chance to win weekly prizes paid out in crypto from each Moonpot entered — as well as an exclusive monthly prize draw for $POTS stakers.', + website: 'https://moonpot.com/', + social: { + telegram: 'https://t.me/moonpotdotcom', + twitter: 'https://twitter.com/moonpotdotcom', + }, +}; +const ceek = { + logo: 'stake/ceek/logo.png', + background: 'stake/ceek/bg.png', + text: 'CEEK (CEEK) is a decentralized platform featuring global superstars like Lady Gaga, Katy Perry, Ziggy Marley, Bon Jovi, UFC Champion Francis Ngannou, 3x NBA Champion Dwyane Wade and more. CEEK enables music artists, sports athletes and digital content creators to directly connect with their fans. CEEK tracks digital media assets on the blockchain, and makes fast, efficient secure payments for entertainment and education via smart contracts.', + website: 'https://www.ceek.io/', + social: { + telegram: 'https://t.me/ceekvrtokensale', + twitter: 'https://twitter.com/ceek', + }, +}; +const nfty = { + logo: 'stake/nfty/logo.png', + background: 'stake/nfty/bg.png', + text: 'NFTYLabs envisions a world where NFTs function as a medium of access, bringing a means of utility and privilege to NFT holders in a secure and confidential manner. NFTY will act as a cross-chain and interoperable bridge between enterprise, private content, and VIP communities; further strengthening the bond in ways never before imagined.', + website: 'https://nftynetwork.io/', + social: { + telegram: 'https://t.me/NFTYNetwork', + twitter: 'https://twitter.com/NFTYNetwork', + }, +}; +const mogul = { + logo: 'stake/mogul/logo.png', + background: 'stake/mogul/bg.png', + text: 'Mogul is an NFT and DeFi platform for film and entertainment, bridging Hollywood and blockchain technology. The STARS token powers the Mogul platform and offers rewards from movies. The Mogul platform has an NFT auction house, marketplace, and other products in the metaverse to bring movie fans closer to the action.', + website: 'https://www.mogulproductions.com/', + social: { + telegram: 'https://t.me/mogulproductions', + twitter: 'https://twitter.com/mogulofficial_', + }, +}; + +export const bscStakePools = [ + { + id: 'bifi-bnb', + name: 'BIFI', + logo: 'single-assets/BIFI.png', + token: 'BIFI', + tokenDecimals: 18, + tokenAddress: '0xCa3F508B8e4Dd382eE878A314789373D80A5190A', + tokenOracle: 'tokens', + tokenOracleId: 'BIFI', + earnedToken: 'BNB', + earnedTokenDecimals: 18, + earnedTokenAddress: '0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c', + earnContractAddress: '0x0d5761D9181C7745855FC985f646a842EB254eB9', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'WBNB', + partnership: false, + status: 'active', + fixedStatus: true, + partners: [ + { + logo: 'stake/beefy/beefyfinance.png', + logoNight: 'stake/beefy/beefyfinance_night.png', + background: 'stake/beefy/background.png', + text: "Beefy Finance is The Multi-Chain Yield Optimizer across many blockchains, enabling users to earn autocompounded yield on their crypto. Did you know also that you can own a piece of Beefy itself? Beefy runs on its governance token, BIFI. The token has a set supply of 80,000 across all chains; no more may be minted, ever! As a holder of BIFI you may create and vote on important DAO proposals, and you become dividend-eligible to earn a share of every compounding harvest on Beefy vaults, hour by hour. Here on Binance, you just need to stake BIFI in this reward pool, or in the autocompounding BIFI Maxi vault on the main page. For this pool, BNB dividends are gathered and sent proportionally to each staker. Stake here, return later to claim the BNB you've earned.", + website: 'https://app.beefy.finance', + social: { + telegram: 'http://t.me/beefyfinance', + twitter: 'https://twitter.com/beefyfinance', + }, + }, + ], + }, + { + id: 'bifi-bnb-eol', + name: 'BIFI', + logo: 'single-assets/BIFI.png', + token: 'BIFI', + tokenDecimals: 18, + tokenAddress: '0xCa3F508B8e4Dd382eE878A314789373D80A5190A', + tokenOracle: 'tokens', + tokenOracleId: 'BIFI', + earnedToken: 'BNB', + earnedTokenDecimals: 18, + earnedTokenAddress: '0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c', + earnContractAddress: '0x453D4Ba9a2D594314DF88564248497F7D74d6b2C', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'WBNB', + partnership: false, + status: 'active', + periodFinish: 1643188921, + partners: [ + { + logo: 'stake/beefy/beefyfinance.png', + logoNight: 'stake/beefy/beefyfinance_night.png', + background: 'stake/beefy/background.png', + text: "Beefy Finance is The Multi-Chain Yield Optimizer across many blockchains, enabling users to earn autocompounded yield on their crypto. Did you know also that you can own a piece of Beefy itself? Beefy runs on its governance token, BIFI. The token has a set supply of 80,000 across all chains; no more may be minted, ever! As a holder of BIFI you may create and vote on important DAO proposals, and you become dividend-eligible to earn a share of every compounding harvest on Beefy vaults, hour by hour. Here on Binance, you just need to stake BIFI in this reward pool, or in the autocompounding BIFI Maxi vault on the main page. For this pool, BNB dividends are gathered and sent proportionally to each staker. Stake here, return later to claim the BNB you've earned.", + website: 'https://app.beefy.finance', + social: { + telegram: 'http://t.me/beefyfinance', + twitter: 'https://twitter.com/beefyfinance', + }, + }, + ], + }, + + { + id: 'moo_biswap-eth-btcb-bomb', + name: 'Bomb.money', + assets: ['BTCB', 'ETH'], + token: 'mooBiSwapETH-BTCB', + tokenDecimals: 18, + tokenAddress: '0xEeB87e7bAbF17cA97F0Eb897F24Bf475e0A9Aef7', + tokenOracle: 'lps', + tokenOracleId: 'biswap-eth-btcb', + earnedToken: 'BOMB', + earnedTokenDecimals: 18, + earnedTokenAddress: '0x522348779DCb2911539e76A1042aA922F9C47Ee3', + earnContractAddress: '0x6c335C7FC07cD5e5d3d0a16a1C9E0611f5a9d76C', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'BOMB', + partnership: true, + status: 'active', + isMooStaked: true, + periodFinish: 1652622288, + partners: [ + { + text: 'Bomb Money is a high-yielding algorithmic stablecoin protocol on Binance Smart Chain (BSC) that utilizes seigniorage mechanisms to maintain a 10,000:1 peg of its native $BOMB token to Bitcoin (BTC). Through this protocol, Bomb Money aims to provide attractive yield earning opportunities for Bitcoin holders while still maintaining significant Bitcoin exposure.', + website: 'https://www.bomb.money/', + social: { + telegram: 'https://t.me/bombmoneybsc', + twitter: 'https://twitter.com/BombMoneyBSC', + }, + }, + ], + }, + + { + id: 'moo_biswap-usdt-busd-biswap', + name: 'Biswap', + assets: ['USDT', 'BUSD'], + token: 'mooBiSwapUSDT-BUSD', + tokenDecimals: 18, + tokenAddress: '0x164fb78cAf2730eFD63380c2a645c32eBa1C52bc', + tokenOracle: 'lps', + tokenOracleId: 'biswap-usdt-busd', + earnedToken: 'BSW', + earnedTokenDecimals: 18, + earnedTokenAddress: '0x965F527D9159dCe6288a2219DB51fc6Eef120dD1', + earnContractAddress: '0x3b7232F265FE4D195478cCa114FA971764729B52', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'BSW', + partnership: true, + status: 'active', + isMooStaked: true, + periodFinish: 1651323716, + partners: [ + { + text: 'Biswap is the 1st decentralized exchange platform on the market with a Multi-type Referral Program and the lowest platform transaction fee of 0.1%. We are a prominent DEX for swapping BEP-20 tokens on the Binance Smart Chain network. Biswap is not only about DEX, but an expanding Metaverse! The Biswap team constantly develops its products further and provides users with more crypto opportunities. Biswap ecosystem reaches new horizons as well by arranging new collaborations and epic integrations in the world of DeFi. On Biswap, you are welcome to experience fast and convenient exchange with leading tokens!', + website: 'https://biswap.org/farms', + social: { + telegram: 'https://t.me/biswap', + twitter: 'https://twitter.com/Biswap_DEX', + }, + }, + ], + }, + + { + id: 'moo_BIFI-emp', + name: 'EMP Money', + logo: 'single-assets/BIFI.png', + token: 'mooBIFIV2', + tokenDecimals: 18, + tokenAddress: '0x7828ff4ABA7aAb932D8407C78324B069D24284c9', + tokenOracle: 'tokens', + tokenOracleId: 'BIFI', + earnedToken: 'ESHARE', + earnedTokenDecimals: 18, + earnedTokenAddress: '0xDB20F6A8665432CE895D724b417f77EcAC956550', + earnContractAddress: '0x49208D4679787136FA9449ca37874B8cc543A508', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'ESHARE', + partnership: true, + status: 'active', + isMooStaked: true, + periodFinish: 1650530502, + partners: [ + { + text: 'Emp Money is a seigniorage protocol which is designed to follow the price of ETH. It is the first decentralized algorithmic coin on BSC that is paired to the price of ETH. It enables users to enjoy high yields normally only found on high risk assets, but with exposure to ETH (and its price appreciation) rather than just a stable token. A way to look at it would be essentially fractional ETH (think Satoshi to BTC) because 4000 EMP is to equal 1 ETH. The EMP token is the main token of the growing ecosystem, inspired by projects like tomb finance, and has many improvements to the economics with other unique use cases.', + website: 'https://emp.money/', + social: { + telegram: 'https://t.me/empmoney', + twitter: 'https://twitter.com/empmoneybsc', + }, + }, + ], + }, + + { + id: 'moo_cakev2-cake-bnb-dibs', + name: 'DibsMoney', + assets: ['CAKE', 'BNB'], + token: 'mooCakeV2CAKE-BNB', + tokenDecimals: 18, + tokenAddress: '0xb26642B6690E4c4c9A6dAd6115ac149c700C7dfE', + tokenOracle: 'lps', + tokenOracleId: 'cakev2-cake-bnb', + earnedToken: 'DSHARE', + earnedTokenDecimals: 18, + earnedTokenAddress: '0x26d3163b165BE95137CEe97241E716b2791a7572', + earnContractAddress: '0x5e0D12A2AD1E74afB435F8EF2750Ed5885a08FEB', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'DSHARE', + partnership: true, + status: 'active', + isMooStaked: true, + periodFinish: 1643188921, + partners: [ + { + logo: 'stake/dibs/logo.png', + background: 'stake/dibs/bg.png', + text: + 'DibsMoney - not just another Tomb fork! dibs.money is a multi-token DeFi protocol pegged to the price of BNB, and with multiple use cases that will drive demand in the short term pipeline, as an example a launch partnership with one of the largest NFT-platforms on the Binance smart chain. \n' + + '\n' + + "$DIBS is a unique token in that it tracks the price of BNB, all while earning super high APY's. $DSHARE on the other hand is your ticket to earn the freshly minted $DIBS from the dibs.money Piggybank. Whether you're bullish on BNB or on Dshare - dibs.money has an option for you.\n", + website: 'https://www.dibs.money/farm', + social: { + telegram: 'https://t.me/dibsmoney', + twitter: 'https://twitter.com/DibsMoney', + }, + }, + ], + }, + + { + id: 'moo_baby-aot-usdt-ageoftanks', + name: 'AgeOfTanks', + assets: ['AOT', 'USDT'], + token: 'mooBabyAOT-USDT', + tokenDecimals: 18, + tokenAddress: '0xC9215F674876da17A671f22C2083E200eD78D0C8', + tokenOracle: 'lps', + tokenOracleId: 'baby-aot-usdt', + earnedToken: 'A.O.T', + earnedTokenDecimals: 6, + earnedTokenAddress: '0x9589014F7a8547B89A6331eEEe32b7fBd5852af9', + earnContractAddress: '0xDd94124a02Be4fb6d1a12141E107eEA524C111FF', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'AOT', + partnership: true, + status: 'active', + isMooStaked: true, + periodFinish: 1642601238, + partners: [ + { + logo: 'stake/tanks/logo.png', + background: 'stake/tanks/bg.png', + text: + 'If you’re tired of NFT games that are only based on the technology but are not good games.\n' + + 'If you’re tired of spending thousands of hours and not getting anything out of it. Look no further…\n' + + '\n' + + 'WELCOME TO EARTH ZERO METAVERSE YEAR 23100\n' + + 'The ozone layer that protectively embraced the planet no longer exists. Exposed to harsh solar storms the skies\n' + + 'rage with turbulent winds. This is an age without oceans. This is an age without flight. This is an age where the\n' + + 'fight for supremacy hinges on having the Ultimate Armoured Vehicle.\n' + + '\n' + + 'For who controls the tanks control A.O.T. And who controls the A.O.T, controls the Metaverse!\n' + + '\n' + + 'Mine resources, build your NFT tanks, and defend your territory against thousands of other players that will try to\n' + + 'outsmart you! Are you ready to Assemble.Outwit.Triumph?\n', + website: 'https://ageoftanks.io/', + social: { + telegram: 'https://t.me/ageoftanksdiscussion', + twitter: 'https://twitter.com/AgeOfTanksNFT?s=09', + }, + }, + ], + }, + + { + id: 'moo_baby-usdt-milk-babyswap', + name: 'BabySwap', + assets: ['MILK', 'USDT'], + token: 'mooBabyUSDT-MILK', + tokenDecimals: 18, + tokenAddress: '0xBBEfaf1f7585EDc59180fDdc5bAf46b8A5D7A206', + tokenOracle: 'lps', + tokenOracleId: 'baby-usdt-milk', + earnedToken: 'MILK', + earnedTokenDecimals: 18, + earnedTokenAddress: '0xBf37f781473f3b50E82C668352984865eac9853f', + earnContractAddress: '0x5ff90a4C704E65dc4aF232DE936583EeC738AB2f', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'MILK', + partnership: true, + status: 'active', + isMooStaked: true, + periodFinish: 1641723900, + partners: [ + { + logo: 'stake/babyswap/logo.png', + background: 'stake/babyswap/bg.png', + text: 'The Crypto You is the first Baby Metaverse blockchain game on Binance Smart Chain (BSC). Players can summon characters, complete daily mining missions, conquer the Dark Force, loot rare items to play and earn.', + website: 'https://home.babyswap.finance/', + social: { + telegram: 'https://t.me/baby_swap', + twitter: 'https://twitter.com/babyswap_bsc', + }, + }, + ], + }, + + { + id: 'moo_banana-banana-busd-bitcrush', + name: 'Bitcrush', + logo: 'degens/banana-busd.svg', + token: 'mooApeBANANA-BUSD', + tokenDecimals: 18, + tokenAddress: '0x651b496bCe2C184282a2B9AeF3f8BaDBAC36Dd7f', + tokenOracle: 'lps', + tokenOracleId: 'banana-banana-busd', + earnedToken: 'CRUSH', + earnedTokenDecimals: 18, + earnedTokenAddress: '0x0Ef0626736c2d484A792508e99949736D0AF807e', + earnContractAddress: '0xe6bC48Ce41af28238E726AeeCDAFeB4337b02216', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'CRUSH', + partnership: true, + status: 'active', + isMooStaked: true, + periodFinish: 1641118552, + partners: [ + { + logo: 'stake/bitcrush/logo.png', + background: 'stake/bitcrush/bg.png', + text: "Bitcrush uses a hybrid approach that allows centralized gameplay utilizing a non-custodial live wallet. When you add funds to the live wallet to play, those are still your funds. It's a delicate back and forth dance between the super-quick server and the slow blockchain. It’s a Win/Win/Win platform where we have a single asset staking pool that rewards in both APY + Casino profits and its auto-compounding.", + website: 'https://www.bitcrush.com/', + social: { + telegram: 'https://t.me/Bcarcadechat', + twitter: 'https://twitter.com/bitcrusharcade', + }, + }, + ], + }, + + { + id: 'moo_banana-crush-wbnb-bitcrush', + name: 'Bitcrush', + assets: ['CRUSH', 'BNB'], + token: 'mooApeCRUSH-BNB', + tokenDecimals: 18, + tokenAddress: '0x566b68521968569aC04873c4CCFfa45C8d653463', + tokenOracle: 'lps', + tokenOracleId: 'banana-crush-wbnb', + earnedToken: 'CRUSH', + earnedTokenDecimals: 18, + earnedTokenAddress: '0x0Ef0626736c2d484A792508e99949736D0AF807e', + earnContractAddress: '0xB726d9a71Ee0538b68102c782C667b1b6dE48789', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'CRUSH', + partnership: true, + status: 'active', + isMooStaked: true, + periodFinish: 1641118446, + partners: [ + { + logo: 'stake/bitcrush/logo.png', + background: 'stake/bitcrush/bg.png', + text: "Bitcrush uses a hybrid approach that allows centralized gameplay utilizing a non-custodial live wallet. When you add funds to the live wallet to play, those are still your funds. It's a delicate back and forth dance between the super-quick server and the slow blockchain. It’s a Win/Win/Win platform where we have a single asset staking pool that rewards in both APY + Casino profits and its auto-compounding.", + website: 'https://www.bitcrush.com/', + social: { + telegram: 'https://t.me/Bcarcadechat', + twitter: 'https://twitter.com/bitcrusharcade', + }, + }, + ], + }, + + { + id: 'moo_banana-nfty-wbnb-nfty-3', + name: 'NFTY', + assets: ['NFTY', 'BNB'], + token: 'mooApeNFTY-BNB', + tokenDecimals: 18, + tokenAddress: '0x69476255A2703Df58C0F6Bb60D1c5deC9a8406C1', + tokenOracle: 'lps', + tokenOracleId: 'banana-nfty-wbnb', + earnedToken: 'mooNfty', + earnedTokenDecimals: 18, + earnedTokenAddress: '0x55669f1c00D55F55bA1E736A23cEE54877D922Be', + earnContractAddress: '0x112869FEd3E3C88c08527EA104E7C9d98efe7AF0', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'mooNfty', + partnership: true, + status: 'active', + isMooStaked: true, + periodFinish: 1641811742, + partners: [nfty], + }, + + { + id: 'moo_ellipsis-renbtc-charge', + name: 'ChargeDeFi', + logo: 'uncategorized/epsRENBTC.png', + token: 'MooEllipsisRenBTC', + tokenDecimals: 18, + tokenAddress: '0x24AE9e5424575690aCab61a384B6A76d69F4f89c', + tokenOracle: 'lps', + tokenOracleId: 'ellipsis-renbtc', + earnedToken: 'Charge', + earnedTokenDecimals: 18, + earnedTokenAddress: '0x1C6bc8e962427dEb4106aE06A7fA2d715687395c', + earnContractAddress: '0xC80764dE9c59E764fFF1e5bDad47dD1a1B774543', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'CHARGE', + partnership: true, + status: 'active', + isMooStaked: true, + periodFinish: 1639912445, + partners: [ + { + logo: 'stake/charge/logo.png', + background: 'stake/charge/bg.png', + text: 'ChargeDeFi is a new platform launching on BSC combining a traditional Algorithmic Stablecoin (pegged to $1.0 BUSD) with rebase mechanics. Featuring an extensive ecosystem of smart reinvestment pools, bond pools that yield below peg and multiple boardroom options ChargeDeFi enters BSC with a large set of investment options. Initially launching on BSC the next step will be multichain.', + website: 'https://bit.ly/32NB1tP', + social: { + telegram: 'https://t.me/chargedefi', + twitter: 'https://twitter.com/ChargeDeFi', + }, + }, + ], + }, + + { + id: 'moo_banana-bnb-stars-mogul2', + name: 'Mogul', + assets: ['STARS', 'BNB'], + token: 'mooApeBNB-STARS', + tokenDecimals: 18, + tokenAddress: '0xd6Cf54a0545675AdB0aa5175b9461Cd3d6a61f8e', + tokenOracle: 'lps', + tokenOracleId: 'banana-bnb-stars', + earnedToken: 'STARS', + earnedTokenDecimals: 18, + earnedTokenAddress: '0xbD83010eB60F12112908774998F65761cf9f6f9a', + earnContractAddress: '0xbCcDCD99d395Ce3F1FcbC9aB40bCfcce2a1894e6', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'STARS', + partnership: true, + status: 'active', + isMooStaked: true, + periodFinish: 1640685927, + partners: [mogul], + }, + + { + id: 'moo_1INCH-blockmine', + name: 'BlockMine', + logo: 'single-assets/INCH.png', + token: 'moo1INCH1INCH', + tokenDecimals: 18, + tokenAddress: '0xBa53AF4C2f1649F82e8070FB306DDBF2771A1950', + tokenOracle: 'tokens', + tokenOracleId: '1INCH', + earnedToken: 'NUGGET', + earnedTokenDecimals: 18, + earnedTokenAddress: '0xE0B58022487131eC9913C1F3AcFD8F74FC6A6C7E', + earnContractAddress: '0x6e3C65E24e9AF2f7C63Ab0a205aF314f3325b678', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'NUGGET', + partnership: true, + status: 'active', + isMooStaked: true, + periodFinish: 1639221118, + partners: [ + { + logo: 'stake/blockmine/logo.png', + background: 'stake/blockmine/bg.png', + text: "Blockmine is aiming to create the most sustainable farming ecosystem in the DeFi space by providing an unique token evolution. Stop coffee boilin' and get out of the saloon - it's time to gitty up and make some juicy GOLDNUGGETS.", + website: 'https://block-mine.io/', + social: { + telegram: 'https://t.me/blockmine_io', + twitter: 'https://twitter.com/blockmine_io', + }, + }, + ], + }, + + { + id: 'moo_BANANA-bishares', + name: 'BiShares', + logo: 'degens/BANANA.svg', + token: 'mooBanana', + tokenDecimals: 18, + tokenAddress: '0xED4ea41Daf652964789b16e3Ff76eC07d99d2340', + tokenOracle: 'tokens', + tokenOracleId: 'BANANA', + earnedToken: 'BISON', + earnedTokenDecimals: 18, + earnedTokenAddress: '0x19A6Da6e382b85F827088092a3DBe864d9cCba73', + earnContractAddress: '0xa9b758AF585cc4262B2ed9C774eDb78eCe017BCB', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'BISON', + partnership: true, + status: 'active', + isMooStaked: true, + periodFinish: 1638722576, + partners: [ + { + logo: 'stake/bishares/logo.png', + background: 'stake/bishares/bg.png', + text: "Decentralized Exchange Traded Funds (dETFs) for safe crypto diversification & yield farming. BiShares offers Yield Bearing Funds both in stable coins and LP's that auto compound and take the best average yields across multiple platforms. Their selection of funds will cover all your bases from blue-chip to FOMO tokens.", + website: 'https://bishares.finance/', + social: { + telegram: 'https://t.me/bishares', + twitter: 'https://twitter.com/BiSharesFinance', + }, + }, + ], + }, + { + id: 'moo_bison-bison-wbnb-bishares', + name: 'BiShares', + assets: ['BISON', 'BNB'], + token: 'mooBisonBISON-BNB', + tokenDecimals: 18, + tokenAddress: '0x813EBFD51604E0066bFA4E0Bf6d2324eA8CebE60', + tokenOracle: 'lps', + tokenOracleId: 'bison-bison-bnb', + earnedToken: 'BISON', + earnedTokenDecimals: 18, + earnedTokenAddress: '0x19A6Da6e382b85F827088092a3DBe864d9cCba73', + earnContractAddress: '0xF3787668fd04EA5B78724a509522a11613B6119f', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'BISON', + partnership: true, + status: 'active', + isMooStaked: true, + periodFinish: 1639067984, + partners: [ + { + logo: 'stake/bishares/logo.png', + background: 'stake/bishares/bg.png', + text: "Decentralized Exchange Traded Funds (dETFs) for safe crypto diversification & yield farming. BiShares offers Yield Bearing Funds both in stable coins and LP's that auto compound and take the best average yields across multiple platforms. Their selection of funds will cover all your bases from blue-chip to FOMO tokens.", + website: 'https://bishares.finance/', + social: { + telegram: 'https://t.me/bishares', + twitter: 'https://twitter.com/BiSharesFinance', + }, + }, + ], + }, + + { + id: 'moo_belt-beltbtc-betu', + name: 'BETU', + logo: 'single-assets/BTCB.svg', + token: 'mooBeltBTC', + tokenDecimals: 18, + tokenAddress: '0xD411121C948Cff739857513E1ADF25ED448623f8', + tokenOracle: 'lps', + tokenOracleId: 'belt-beltbtc', + earnedToken: 'mooBetu', + earnedTokenDecimals: 18, + earnedTokenAddress: '0x22b3d90BDdC3Ad5F2948bE3914255C64Ebc8c9b3', + earnContractAddress: '0x19b042f5c22292fd8B166477100B13Cb1c9b4A65', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'BETU', + partnership: true, + status: 'active', + isMooStaked: true, + periodFinish: 1638790667, + partners: [ + { + logo: 'stake/betu/logo.png', + background: 'stake/betu/bg.png', + text: 'BetU is here to revolutionize both the gambling and gaming industries. From traditional sports to e-sports, you can now place bets on BetU’s Fantasy league and earn up to $10,000 in crypto rewards every week! No risk, real rewards. Play now at play.betufantasy.com', + website: 'https://betu.io/', + social: { + telegram: 'https://t.me/betucommunity', + twitter: 'https://twitter.com/betuglobal', + }, + }, + ], + }, + + { + id: 'moo_banana-oasis-wbnb-oasis', + name: 'Oasis', + assets: ['OASIS', 'BNB'], + token: 'mooApeOASIS-BNB', + tokenDecimals: 18, + tokenAddress: '0xb69fE74aeD526BBEe0fc47db72Ced2BDBF9747CF', + tokenOracle: 'lps', + tokenOracleId: 'banana-oasis-wbnb', + earnedToken: 'OASIS', + earnedTokenDecimals: 18, + earnedTokenAddress: '0xb19289b436b2F7A92891ac391D8f52580d3087e4', + earnContractAddress: '0x8D6697388dfC5D18ed9cc5118a67b2A192A4737d', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'OASIS', + partnership: true, + status: 'active', + isMooStaked: true, + periodFinish: 1638617990, + partners: [ + { + logo: 'stake/oasis/logo.png', + background: 'stake/oasis/bg.png', + text: 'ProjectOasis is a metaverse built for users to socialize and interact with various Decentralized applications (Dapps) and protocols available within Decentralized Finance (DeFi). The Oasis universe consists of token swaps (AMMs), farming and staking pools, launchpads, and NFT marketplaces. It includes a Participate-to-Earn element where users are rewarded for their interactions within the metaverse.', + website: 'https://projectoasis.io/', + social: { + telegram: 'https://t.me/projectoasis_official', + twitter: 'https://twitter.com/ProjectOasis_', + }, + }, + ], + }, + { + id: 'moo_banana-banana-bnb-oasis', + name: 'Oasis', + logo: 'degens/banana-bnb.svg', + token: 'mooApeBANANA-BNB', + tokenDecimals: 18, + tokenAddress: '0x15396D3BD9338A14AE90613Fc2b85c5F7b5621CF', + tokenOracle: 'lps', + tokenOracleId: 'banana-banana-bnb', + earnedToken: 'OASIS', + earnedTokenDecimals: 18, + earnedTokenAddress: '0xb19289b436b2F7A92891ac391D8f52580d3087e4', + earnContractAddress: '0x04883d74392112E04A345fa01D72F37b1f94456B', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'OASIS', + partnership: true, + status: 'active', + isMooStaked: true, + periodFinish: 1638186059, + partners: [ + { + logo: 'stake/oasis/logo.png', + background: 'stake/oasis/bg.png', + text: 'ProjectOasis is a metaverse built for users to socialize and interact with various Decentralized applications (Dapps) and protocols available within Decentralized Finance (DeFi). The Oasis universe consists of token swaps (AMMs), farming and staking pools, launchpads, and NFT marketplaces. It includes a Participate-to-Earn element where users are rewarded for their interactions within the metaverse.', + website: 'https://projectoasis.io/', + social: { + telegram: 'https://t.me/projectoasis_official', + twitter: 'https://twitter.com/ProjectOasis_', + }, + }, + ], + }, + + { + id: 'moo_alpaca-ibalpaca-nfty', + name: 'NFTY', + logo: 'single-assets/ALPACA.png', + token: 'mooIbAlpaca', + tokenDecimals: 18, + tokenAddress: '0x6EB4F8975b15F34AdccFDE830087Fc8FdB006C36', + tokenOracle: 'lps', + tokenOracleId: 'alpaca-ibalpaca', + earnedToken: 'mooNfty', + earnedTokenDecimals: 18, + earnedTokenAddress: '0x55669f1c00D55F55bA1E736A23cEE54877D922Be', + earnContractAddress: '0xF9353488011a4b10e31656B68684bEc6Cfadf2b7', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'NFTY', + partnership: true, + status: 'active', + isMooStaked: true, + periodFinish: 1638011380, + partners: [nfty], + }, + + { + id: 'moo_banana-nfty-wbnb-nfty-2', + name: 'NFTY', + assets: ['NFTY', 'BNB'], + token: 'mooApeNFTY-BNB', + tokenDecimals: 18, + tokenAddress: '0x69476255A2703Df58C0F6Bb60D1c5deC9a8406C1', + tokenOracle: 'lps', + tokenOracleId: 'banana-nfty-wbnb', + earnedToken: 'mooNfty', + earnedTokenDecimals: 18, + earnedTokenAddress: '0x55669f1c00D55F55bA1E736A23cEE54877D922Be', + earnContractAddress: '0xA79CC48b4968ADF1B06eB1b6395EFb786Ab5445C', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'NFTY', + partnership: true, + status: 'active', + isMooStaked: true, + periodFinish: 1638007453, + partners: [nfty], + }, + + { + id: 'moo_banana-bnb-stars-mogul', + name: 'Mogul', + assets: ['STARS', 'BNB'], + token: 'mooApeBNB-STARS', + tokenDecimals: 18, + tokenAddress: '0xd6Cf54a0545675AdB0aa5175b9461Cd3d6a61f8e', + tokenOracle: 'lps', + tokenOracleId: 'banana-bnb-stars', + earnedToken: 'STARS', + earnedTokenDecimals: 18, + earnedTokenAddress: '0xbD83010eB60F12112908774998F65761cf9f6f9a', + earnContractAddress: '0xe2fbB4A510d0E290d8B8533b0136Dc1Fe603e946', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'STARS', + partnership: true, + status: 'active', + isMooStaked: true, + periodFinish: 1637924268, + partners: [mogul], + }, + + { + id: 'moo_banana-wbnb-ceek-ceek-2', + name: 'CEEK', + assets: ['CEEK', 'BNB'], + token: 'mooApeCEEK-BNB', + tokenDecimals: 18, + tokenAddress: '0xd244fD01Ca42415b5B3f9dCe164C762eB28d6eA4', + tokenOracle: 'lps', + tokenOracleId: 'banana-wbnb-ceek', + earnedToken: 'CEEK', + earnedTokenDecimals: 18, + earnedTokenAddress: '0xe0F94Ac5462997D2BC57287Ac3a3aE4C31345D66', + earnContractAddress: '0x9ba849C8b9FD8D4f04c6b22557553195f3a02870', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'CEEK', + partnership: true, + status: 'active', + isMooStaked: true, + periodFinish: 1638881275, + partners: [ceek], + }, + { + id: 'moo_banana-banana-bnb-ceek', + name: 'CEEK', + logo: 'degens/banana-bnb.svg', + token: 'mooApeBANANA-BNB', + tokenDecimals: 18, + tokenAddress: '0x15396D3BD9338A14AE90613Fc2b85c5F7b5621CF', + tokenOracle: 'lps', + tokenOracleId: 'banana-banana-bnb', + earnedToken: 'CEEK', + earnedTokenDecimals: 18, + earnedTokenAddress: '0xe0F94Ac5462997D2BC57287Ac3a3aE4C31345D66', + earnContractAddress: '0x6EA8849E656Fb6cf357681ECe6165F2c4BACB038', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'CEEK', + partnership: true, + status: 'active', + isMooStaked: true, + periodFinish: 1637153540, + partners: [ceek], + }, + + { + id: 'moo_ellipsis-renbtc-gamexchange', + name: 'Game X Change', + logo: 'uncategorized/epsRENBTC.png', + token: 'MooEllipsisRenBTC', + tokenDecimals: 18, + tokenAddress: '0x24AE9e5424575690aCab61a384B6A76d69F4f89c', + tokenOracle: 'lps', + tokenOracleId: 'ellipsis-renbtc', + earnedToken: 'EXP', + earnedTokenDecimals: 18, + earnedTokenAddress: '0x639d4C62F58a4048AD0F69B8CE675dB1A3e8e00e', + earnContractAddress: '0x4298Ff137C8F583F530ea241da3Da6a6AA66dAEb', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'EXP', + partnership: true, + status: 'active', + isMooStaked: true, + periodFinish: 1637751205, + partners: [ + { + logo: 'stake/gamexchange/logo.png', + background: 'stake/gamexchange/bg.png', + text: 'Game X Change is a gaming platform where users can move assets (virtual cash and NFTs) from one platform, game, or blockchain to another, in a safe and controlled way. Play & earn and convert in-game currencies and NFTs from game to game! Game X Change offers rewards for playing, earning, and farming across the platform through its native utility token, $EXP. Through the use of Game X Change’s technology solutions stack, developers are provided with a full suite of tools to innovate and integrate both legacy and blockchain games. Game X Change is the future of game asset exchange.', + website: 'https://gamexchange.app/', + social: { + telegram: 'https://t.me/GameXChange', + twitter: 'https://twitter.com/GameX_Change', + }, + }, + ], + }, + + { + id: 'moo_banana-exp-wbnb-gamexchange', + name: 'Game X Change', + assets: ['EXP', 'BNB'], + token: 'mooApeEXP-BNB', + tokenDecimals: 18, + tokenAddress: '0x5B5ADf5cA7a7149194182a86fDA329019c57524b', + tokenOracle: 'lps', + tokenOracleId: 'banana-exp-wbnb', + earnedToken: 'EXP', + earnedTokenDecimals: 18, + earnedTokenAddress: '0x639d4C62F58a4048AD0F69B8CE675dB1A3e8e00e', + earnContractAddress: '0x522ceA0bc3EEb3c6B35f12662326F2b8d5Fb69e3', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'EXP', + partnership: true, + status: 'active', + isMooStaked: true, + periodFinish: 1636800187, + partners: [ + { + logo: 'stake/gamexchange/logo.png', + background: 'stake/gamexchange/bg.png', + text: 'Game X Change is a gaming platform where users can move assets (virtual cash and NFTs) from one platform, game, or blockchain to another, in a safe and controlled way. Play & earn and convert in-game currencies and NFTs from game to game! Game X Change offers rewards for playing, earning, and farming across the platform through its native utility token, $EXP. Through the use of Game X Change’s technology solutions stack, developers are provided with a full suite of tools to innovate and integrate both legacy and blockchain games. Game X Change is the future of game asset exchange.', + website: 'https://gamexchange.app/', + social: { + telegram: 'https://t.me/GameXChange', + twitter: 'https://twitter.com/GameX_Change', + }, + }, + ], + }, + + { + id: 'moo_belt-beltbtc-wsg', + name: 'WallStreetGames', + logo: 'single-assets/BTCB.svg', + token: 'mooBeltBTC', + tokenDecimals: 18, + tokenAddress: '0xD411121C948Cff739857513E1ADF25ED448623f8', + tokenOracle: 'lps', + tokenOracleId: 'belt-beltbtc', + earnedToken: 'MooWSG', + earnedTokenDecimals: 18, + earnedTokenAddress: '0xf6581Be77F4933FDcf92C9E0D49e7f85e5360705', + earnContractAddress: '0xAD02D935D7BDAEa0ba3227Fe160856be78b782Cf', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'WSG', + partnership: true, + status: 'active', + isMooStaked: true, + periodFinish: 1636195645, + partners: [ + { + logo: 'stake/wsg/logo.png', + background: 'stake/wsg/bg.png', + text: 'Wall Street Games is a next-generation hybrid blockchain-based online gaming platform, where players can earn cryptocurrencies by playing fun & addictive games, collect tradable NFTs and win rewards!', + website: 'https://stake.wallstreetgames.net/', + social: { + telegram: 'https://t.me/WSGToken', + twitter: 'https://twitter.com/WSGToken', + }, + }, + ], + }, + + { + id: 'moo_banana-banana-bnb-playmining', + name: 'PlayMining', + logo: 'degens/banana-bnb.svg', + token: 'mooApeBANANA-BNB', + tokenDecimals: 18, + tokenAddress: '0x15396D3BD9338A14AE90613Fc2b85c5F7b5621CF', + tokenOracle: 'lps', + tokenOracleId: 'banana-banana-bnb', + earnedToken: 'DEP', + earnedTokenDecimals: 18, + earnedTokenAddress: '0xcaF5191fc480F43e4DF80106c7695ECA56E48B18', + earnContractAddress: '0x849F856f54C7b45e574300E9B7834B96F62a5166', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'DEP', + partnership: true, + status: 'active', + isMooStaked: true, + periodFinish: 1635934045, + partners: [ + { + logo: 'stake/dep/logo.png', + background: 'stake/dep/bg.png', + text: 'Playmining is a new form of income that rewards you through adventure and exploration. A platform that creates a society that is free from occupation and environment by exchanging one’s passions among those who create fun and those who share the fun.', + website: 'https://playmining.com/?locale=en', + social: { + telegram: 'https://t.me/DEAPcoin_group', + twitter: 'https://twitter.com/PlayMining_SG', + }, + }, + ], + }, + + { + id: 'moo_BANANA-ceek', + name: 'CEEK', + logo: 'degens/BANANA.svg', + token: 'mooBanana', + tokenDecimals: 18, + tokenAddress: '0xED4ea41Daf652964789b16e3Ff76eC07d99d2340', + tokenOracle: 'tokens', + tokenOracleId: 'BANANA', + earnedToken: 'CEEK', + earnedTokenDecimals: 18, + earnedTokenAddress: '0xe0F94Ac5462997D2BC57287Ac3a3aE4C31345D66', + earnContractAddress: '0x260aAC1fCc624dF1F3CeB752f1F77538053565bf', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'CEEK', + partnership: true, + status: 'active', + isMooStaked: true, + periodFinish: 1636191470, + partners: [ + { + logo: 'stake/ceek/logo.png', + background: 'stake/ceek/bg.png', + text: 'CEEK (CEEK) is a decentralized platform featuring global superstars like Lady Gaga, Katy Perry, Ziggy Marley, Bon Jovi, UFC Champion Francis Ngannou, 3x NBA Champion Dwyane Wade and more. CEEK enables music artists, sports athletes and digital content creators to directly connect with their fans. CEEK tracks digital media assets on the blockchain, and makes fast, efficient secure payments for entertainment and education via smart contracts.', + website: 'https://www.ceek.io/', + social: { + telegram: 'https://t.me/ceekvrtokensale', + twitter: 'https://twitter.com/ceek', + }, + }, + ], + }, + { + id: 'moo_banana-wbnb-ceek-ceek', + name: 'CEEK', + assets: ['CEEK', 'BNB'], + token: 'mooApeCEEK-BNB', + tokenDecimals: 18, + tokenAddress: '0xd244fD01Ca42415b5B3f9dCe164C762eB28d6eA4', + tokenOracle: 'lps', + tokenOracleId: 'banana-wbnb-ceek', + earnedToken: 'CEEK', + earnedTokenDecimals: 18, + earnedTokenAddress: '0xe0F94Ac5462997D2BC57287Ac3a3aE4C31345D66', + earnContractAddress: '0xb6fC871229CA8D44AAa0AD01Ef61320b9b103F3E', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'CEEK', + partnership: true, + status: 'active', + isMooStaked: true, + periodFinish: 1635068973, + partners: [ + { + logo: 'stake/ceek/logo.png', + background: 'stake/ceek/bg.png', + text: 'CEEK (CEEK) is a decentralized platform featuring global superstars like Lady Gaga, Katy Perry, Ziggy Marley, Bon Jovi, UFC Champion Francis Ngannou, 3x NBA Champion Dwyane Wade and more. CEEK enables music artists, sports athletes and digital content creators to directly connect with their fans. CEEK tracks digital media assets on the blockchain, and makes fast, efficient secure payments for entertainment and education via smart contracts.', + website: 'https://www.ceek.io/', + social: { + telegram: 'https://t.me/ceekvrtokensale', + twitter: 'https://twitter.com/ceek', + }, + }, + ], + }, + + { + id: 'moo_belt-beltbnb-babyswap', + name: 'BabySwap', + logo: 'single-assets/BNB.png', + token: 'mooBeltBNB', + tokenDecimals: 18, + tokenAddress: '0xC34Ae91312A3c3F9420691922040a5DEe1698E52', + tokenOracle: 'lps', + tokenOracleId: 'belt-beltbnb', + earnedToken: 'mooBaby', + earnedTokenDecimals: 18, + earnedTokenAddress: '0x87F9A89B51dA28CE8653A700d362CDa9b9bA7d88', + earnContractAddress: '0x2d75b722c43e9cf57640909bF0a79cFC9f0bf800', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'BABY', + partnership: true, + status: 'active', + isMooStaked: true, + periodFinish: 1635413330, + partners: [ + { + logo: 'stake/babyswap/logo.png', + background: 'stake/babyswap/bg.png', + text: 'BabySwap is an AMM+NFT decentralized exchange for newborn projects on Binance Smart Chain, providing a more friendly trading experience and better project support. Audited by Certik!', + website: 'https://home.babyswap.finance/', + social: { + telegram: 'https://t.me/baby_swap', + twitter: 'https://twitter.com/babyswap_bsc', + }, + }, + ], + }, + + { + id: 'moo_belt-belteth-nfty', + name: 'NFTY', + logo: 'single-assets/ETH.svg', + token: 'mooBeltETH', + tokenDecimals: 18, + tokenAddress: '0xf2064C230b285AA6Cf45c6267DA86a8E3505D0AA', + tokenOracle: 'lps', + tokenOracleId: 'belt-belteth', + earnedToken: 'NFTY', + earnedTokenDecimals: 18, + earnedTokenAddress: '0x5774B2fc3e91aF89f89141EacF76545e74265982', + earnContractAddress: '0x804f23055DE069cB80a8590f96a5b7367b710d14', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'NFTY', + partnership: true, + status: 'active', + isMooStaked: true, + periodFinish: 1635346059, + partners: [ + { + logo: 'stake/nfty/logo.png', + background: 'stake/nfty/bg.png', + text: 'NFTYLabs envisions a world where NFTs function as a medium of access, bringing a means of utility and privilege to NFT holders in a secure and confidential manner. NFTY will act as a cross-chain and interoperable bridge between enterprise, private content, and VIP communities; further strengthening the bond in ways never before imagined.', + website: 'https://nftynetwork.io/', + social: { + telegram: 'https://t.me/NFTYNetwork', + twitter: 'https://twitter.com/NFTYNetwork', + }, + }, + ], + }, + { + id: 'moo_banana-nfty-wbnb-nfty', + name: 'NFTY', + assets: ['NFTY', 'BNB'], + token: 'mooApeNFTY-BNB', + tokenDecimals: 18, + tokenAddress: '0x69476255A2703Df58C0F6Bb60D1c5deC9a8406C1', + tokenOracle: 'lps', + tokenOracleId: 'banana-nfty-wbnb', + earnedToken: 'NFTY', + earnedTokenDecimals: 18, + earnedTokenAddress: '0x5774B2fc3e91aF89f89141EacF76545e74265982', + earnContractAddress: '0x0355dcA72d92E4fACDa3DaAdFCf142E04E4d6633', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'NFTY', + partnership: true, + status: 'active', + isMooStaked: true, + periodFinish: 1634654887, + partners: [ + { + logo: 'stake/nfty/logo.png', + background: 'stake/nfty/bg.png', + text: 'NFTYLabs envisions a world where NFTs function as a medium of access, bringing a means of utility and privilege to NFT holders in a secure and confidential manner. NFTY will act as a cross-chain and interoperable bridge between enterprise, private content, and VIP communities; further strengthening the bond in ways never before imagined.', + website: 'https://nftynetwork.io/', + social: { + telegram: 'https://t.me/NFTYNetwork', + twitter: 'https://twitter.com/NFTYNetwork', + }, + }, + ], + }, + + { + id: 'moo_bifi_bnb-cafeswap', + name: 'CafeSwap', + logo: 'degens/BIFI-BNB-banana.svg', + token: 'mooApeBIFI-BNB', + tokenDecimals: 18, + tokenAddress: '0x6ebA4A31c46937B42E66f44a0A1165a08495a38F', + tokenOracle: 'lps', + tokenOracleId: 'banana-bifi-bnb', + earnedToken: 'BREW', + earnedTokenDecimals: 18, + earnedTokenAddress: '0x790Be81C3cA0e53974bE2688cDb954732C9862e1', + earnContractAddress: '0xe3Ac77F805805bE7639D9576405D52dddCB5F431', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'BREW', + partnership: true, + status: 'active', + isMooStaked: true, + periodFinish: 1635796979, + partners: [ + { + logo: 'stake/cafeswap/logo.png', + background: 'stake/cafeswap/bg.png', + text: 'CafeSwap is a yield farming and staking platform on BSC Chain and polygon. We have chosen BSC and Polygon because of its low tnx fees and faster speed. We have built this project to provide the best experience with farming while regulating the supply, We believe in partnerships hence we aim to bring all BSC and Polygon DeFi ecosystems in one place to have a friendly ecosystem for all of us.', + website: 'https://cafeswap.finance', + social: { + telegram: 'https://t.me/CafeSwap', + twitter: 'https://twitter.com/cafeswapfinance', + }, + }, + ], + }, + { + id: 'moo_bifi_usdt-singular', + name: 'Singular', + assets: ['BIFI', 'USDT'], + token: 'mooMdexBIFI-USDT', + tokenDecimals: 18, + tokenAddress: '0x78dB17F440A223464B15046A25A273De510A14Ce', + tokenOracle: 'lps', + tokenOracleId: 'mdex-bsc-bifi-usdt', + earnedToken: 'SING', + earnedTokenDecimals: 18, + earnedTokenAddress: '0x23894C0ce2d79B79Ea33A4D02e67ae843Ef6e563', + earnContractAddress: '0x254A1D081CE07485856656FF6312619b95875De0', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'SING', + partnership: true, + status: 'active', + isMooStaked: true, + periodFinish: 1635096979, + partners: [ + { + logo: 'stake/singular/logo.png', + background: 'stake/singular/bg.png', + text: 'The next gen multichain strategic yield farm on Polygon (Matic Network), Binance Smart Chain (BSC), and Avalanche with a unique Triple Farming System.', + website: 'https://singular.farm/', + social: { + telegram: 'https://t.me/singularfarm', + twitter: 'https://twitter.com/singularfarm', + }, + }, + ], + }, + + { + id: 'moo_banana_bnb-pacoca', + name: 'Pacoca', + logo: 'degens/banana-bnb.svg', + token: 'mooApeBANANA-BNB', + tokenDecimals: 18, + tokenAddress: '0x15396D3BD9338A14AE90613Fc2b85c5F7b5621CF', + tokenOracle: 'lps', + tokenOracleId: 'banana-banana-bnb', + earnedToken: 'mooPacoca', + earnedTokenDecimals: 18, + earnedTokenAddress: '0x21403739A1Dc0e3ceC70CBD5ceaE78fF25F102a4', + earnContractAddress: '0x3B6D305FAe833A64E56B1A4067A959D285B4F238', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'PACOCA', + partnership: true, + status: 'active', + isMooStaked: true, + periodFinish: 1633482358, + partners: [ + { + logo: 'stake/pacoca/logo.png', + background: 'stake/pacoca/bg.png', + text: 'Paçoca is a portfolio management that evolved into a full DeFi hub, where investors can track and invest in many projects from a single platform. The platform has 3 audits: CertiK, Inspex, and TechRate. Paçoca users can enjoy benefits such as high APY farms (CAKE APY of 150%+), daily buybacks of more than $16,000, and security upgrades such CertiK Skynet security intelligence engine.', + website: 'https://pacoca.io/', + social: { + telegram: 'https://t.me/pacoca_io', + twitter: 'https://twitter.com/pacoca_io', + }, + }, + ], + }, + + { + id: 'moo_beltbtc-annex', + name: 'Annex', + logo: 'single-assets/BTCB.svg', + token: 'mooBeltBTC', + tokenDecimals: 18, + tokenAddress: '0xD411121C948Cff739857513E1ADF25ED448623f8', + tokenOracle: 'lps', + tokenOracleId: 'belt-beltbtc', + earnedToken: 'mooAnnexAnn', + earnedTokenDecimals: 18, + earnedTokenAddress: '0xB3e80cf1e9A0478F917Ec81f6B223C495CA20a27', + earnContractAddress: '0x0172248F06Fc60a6c3F2760b83Da330E3c4AeE00', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'ANN', + partnership: true, + status: 'active', + isMooStaked: true, + periodFinish: 1633305438, + partners: [ + { + logo: 'stake/annex/logo.png', + background: 'stake/annex/bg.png', + text: 'A Decentralized Marketplace for Lenders and Borrowers with Borderless Stablecoins.', + website: 'https://annex.finance/', + social: { + telegram: 'https://t.me/Annex_finance_group', + twitter: 'https://twitter.com/AnnexFinance', + }, + }, + ], + }, + { + id: 'moo_belteth-pearzap', + name: 'Pearzap', + logo: 'single-assets/BNB.png', + token: 'mooBeltETH', + tokenDecimals: 18, + tokenAddress: '0xf2064C230b285AA6Cf45c6267DA86a8E3505D0AA', + tokenOracle: 'lps', + tokenOracleId: 'belt-belteth', + earnedToken: 'bPEAR', + earnedTokenDecimals: 18, + earnedTokenAddress: '0xdf7C18ED59EA738070E665Ac3F5c258dcc2FBad8', + earnContractAddress: '0xCd661f69f8059409dB08B185395a1B015ee9805A', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'bPEAR', + partnership: true, + status: 'active', + isMooStaked: true, + periodFinish: 1632789360, + partners: [ + { + logo: 'stake/pearzap/logo.png', + background: 'stake/pearzap/bg.png', + text: "PearZap Finance is a yield farming project on the Polygon Chain, born out of the idea of bringing consistency in high APR's and security to our investors through our $Pear native token. Join the PearZap family and be part of a project that prides itself in quality partnerships and delivering on the promises we make, no matter how juicy they may be. 🍐⚡️", + website: 'https://pearzap.com/', + social: { + telegram: 'https://t.me/pearzap', + twitter: 'https://twitter.com/pearzap', + }, + }, + ], + }, + { + id: 'moo_beltbnb-czodiac', + name: 'Czodiac', + logo: 'single-assets/BNB.png', + token: 'mooBeltBNB', + tokenDecimals: 18, + tokenAddress: '0xC34Ae91312A3c3F9420691922040a5DEe1698E52', + tokenOracle: 'lps', + tokenOracleId: 'belt-beltbnb', + earnedToken: 'CZF', + earnedTokenDecimals: 18, + earnedTokenAddress: '0x7c1608c004f20c3520f70b924e2bfef092da0043', + earnContractAddress: '0x5D774D57Fd635Cd4Bb6E556A4FFf45f288Effeb9', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'CZF', + partnership: true, + status: 'active', + isMooStaked: true, + periodFinish: 1633010934, + partners: [ + { + logo: 'stake/czodiac/logo.png', + background: 'stake/czodiac/bg.png', + text: 'Chinese Zodiacs bring luck to those who truly believe. Many people around the global plan their life according to what these signs tell them. With CZodiac, you can win unique Zodiac themed NFTs, play games with your CZodiac tokens such as $OXZ and $TIGZ, earn with $CZF in farms and pools, borrow and earn with the $CZUSD stablecoin, and much more. Our community releases new Chinese Zodiac themed dapps with the latest defi and blockchain gaming technology with airdrops, giveaways, and other rewards to our holders.\n', + website: 'https://app.czodiac.com/', + social: { + telegram: 'https://t.me/CZodiacofficial', + twitter: 'https://twitter.com/zodiacs_c', + }, + }, + ], + }, + { + id: 'moo_bifi-bnb-long', + name: 'LongDrink', + logo: 'degens/BIFI-BNB-banana.svg', + token: 'mooApeBIFI-BNB', + tokenDecimals: 18, + tokenAddress: '0x6ebA4A31c46937B42E66f44a0A1165a08495a38F', + tokenOracle: 'lps', + tokenOracleId: 'banana-bifi-bnb', + earnedToken: 'LONG', + earnedTokenDecimals: 18, + earnedTokenAddress: '0x5317fa16f8603be9c461def5d5a1bf28dfe42d55', + earnContractAddress: '0xB0E65F0B6b202a0bb46B9C929B33A23648dDAf10', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'LONG', + partnership: true, + status: 'active', + isMooStaked: true, + periodFinish: 1632322692, + partners: [ + { + logo: 'stake/longdrink/logo.png', + background: 'stake/longdrink/bg.png', + text: + 'Longdrink Finance is an index protocol for cryptocurrencies. Currently, it offers two index tokens, each containing multiple underlying assets. $BEV (Binance Ecosystem Value) captures the growth of the BSC Ecosystem by uniting ten of the biggest BSC-native projects in one token. $L1Q (Layer 1 Quality Index) gives investors exposure to the leading blockchain architecture, by combining eight of the major layer-1 solutions in one token. Thereby, Longdrink Finance offers investors easy diversification to a wide range of assets, outperforming individual project picks in the long-term (similar to how passive index funds outperform individual stock picks in TradFi). \n' + + '\n' + + 'Longdrink Finance is community-governed, designed as a DAO of talented and unique individuals - of thinkers and tinkerers with a mission. \n' + + '\n' + + 'Through our community governance token $LONG, holders have exclusive voting rights and say in future protocol innovation.\n', + website: 'https://longdrink.finance/', + social: { + telegram: 'https://t.me/longdrinkfinance', + twitter: 'https://twitter.com/LongdrinkDefi', + }, + }, + ], + }, + { + id: 'moo_belt_4belt-honeymoon', + name: 'HoneyFarm', + logo: 'uncategorized/BELT-VENUSBLP.png', + token: 'mooBelt4Belt', + tokenDecimals: 18, + tokenAddress: '0xc1fcf50ccaCd1583BD9d3b41657056878C94e592', + tokenOracle: 'lps', + tokenOracleId: 'belt-4belt', + earnedToken: 'MOON', + earnedTokenDecimals: 18, + earnedTokenAddress: '0xE8c93310af068aa50bd7bF0ebFa459Df2a02ceba', + earnContractAddress: '0x4Ae70db74264D78E2497f6cd7829A0eE217BCb69', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'MOON', + partnership: true, + status: 'active', + isMooStaked: true, + periodFinish: 1631888479, + partners: [ + { + logo: 'stake/honey/logo.png', + background: 'stake/honey/bg.png', + text: "HoneyFarm Finance is a layered delegated yield farming project with deflationary tokenomics of a maximum supply of 24,650 HONEY tokens. There will be multiple layered projects and each layer will also has pools with previous layers' native tokens. The whole project will be finished after the final emission of a certain layered project, which will be announced in advance.", + website: 'https://honeyfarm.finance/', + social: { + telegram: 'https://t.me/HoneyFarmChat', + twitter: 'https://twitter.com/HoneyFarmFi', + }, + }, + ], + }, + { + id: 'moo_pots_busd-moonpot', + name: 'Moonpot', + assets: ['POTS', 'BUSD'], + token: 'mooCakeV2POTS-BUSD', + tokenDecimals: 18, + tokenAddress: '0x3106d9B3d5e04ff5D575212140FAb1Cf17C8933F', + tokenOracle: 'lps', + tokenOracleId: 'cakev2-pots-busd', + earnedToken: 'POTS', + earnedTokenDecimals: 18, + earnedTokenAddress: '0x3fcca8648651e5b974dd6d3e50f61567779772a8', + earnContractAddress: '0xB33Ed43421344b9Afc9f2568f1fe0576A705ea64', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'POTS', + partnership: true, + status: 'active', + isMooStaked: true, + periodFinish: 1631306450, + partners: [moonpot], + }, + { + id: 'moo_pots_bnb-moonpot', + name: 'Moonpot', + assets: ['POTS', 'BNB'], + token: 'mooApePOTS-BNB', + tokenDecimals: 18, + tokenAddress: '0xbfa24f7c2376c28407504fb8512797dd8d316abf', + tokenOracle: 'lps', + tokenOracleId: 'banana-pots-bnb', + earnedToken: 'POTS', + earnedTokenDecimals: 18, + earnedTokenAddress: '0x3fcca8648651e5b974dd6d3e50f61567779772a8', + earnContractAddress: '0xFbb7004696c7E9bEd8d138A00d050Faeb9712ba5', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'POTS', + partnership: true, + status: 'active', + isMooStaked: true, + periodFinish: 1631306450, + partners: [moonpot], + }, + { + id: 'moo_belt_4belt-viralata', + name: 'Viralata', + logo: 'uncategorized/BELT-VENUSBLP.png', + token: 'mooBelt4Belt', + tokenDecimals: 18, + tokenAddress: '0xc1fcf50ccaCd1583BD9d3b41657056878C94e592', + tokenOracle: 'lps', + tokenOracleId: 'belt-4belt', + earnedToken: 'AURO', + earnedTokenDecimals: 18, + earnedTokenAddress: '0x8d9a79314c4e09a7c53c124195caeb8b89f4879d', + earnContractAddress: '0xf71B9fE4454a2beA4F20adad32f9Ff0D3335A89e', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'AURO', + partnership: true, + status: 'active', + isMooStaked: true, + periodFinish: 1631043587, + partners: [ + { + logo: 'stake/viralata/logo.png', + background: 'stake/viralata/bg.png', + text: "Viralata Finance's sole goal is to drive mainstream adoption and use of decentralised assets in Brazil through decreasing barriers to entry and supporting real world use cases.", + website: 'https://app.viralata.finance/', + social: { + telegram: 'https://t.me/viralatafinance_eng', + twitter: 'https://www.twitter.com/viralatafinance', + }, + }, + ], + }, + { + id: 'moo_bifi-elk', + name: 'Elk', + logo: 'single-assets/BIFI.png', + token: 'mooBIFI', + tokenDecimals: 18, + tokenAddress: '0xf7069e41C57EcC5F122093811d8c75bdB5f7c14e', + tokenOracle: 'tokens', + tokenOracleId: 'BIFI', + earnedToken: 'ELK', + earnedTokenDecimals: 18, + earnedTokenAddress: '0xe1c110e1b1b4a1ded0caf3e42bfbdbb7b5d7ce1c', + earnContractAddress: '0xE34FAdb095E9bCD25923208d42fAC71a2d75286f', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'ELK', + partnership: true, + status: 'active', + isMooStaked: true, + periodFinish: 1631132764, + partners: [ + { + logo: 'stake/elk/logo.png', + background: 'stake/elk/bg.png', + text: 'Elk is a user-friendly hub for cross-chain DeFi. The ElkNet multi-bridge supports trading, liquidity mining, and instant transfers across an expanding multitude of networks, including BSC, Avalanche, Polygon, Fantom, HECO, and xDai.', + website: 'https://elk.finance/', + social: { + telegram: 'https://t.me/elk_finance', + twitter: 'https://twitter.com/elk_finance', + }, + }, + ], + }, + { + id: 'moo_beltbtc-omnifarm', + name: 'OmniFarm', + logo: 'single-assets/BTCB.svg', + token: 'mooBeltBTC', + tokenDecimals: 18, + tokenAddress: '0xD411121C948Cff739857513E1ADF25ED448623f8', + tokenOracle: 'lps', + tokenOracleId: 'belt-beltbtc', + earnedToken: 'USDO', + earnedTokenDecimals: 18, + earnedTokenAddress: '0x5801D0e1C7D977D78E4890880B8E579eb4943276', + earnContractAddress: '0x871AC67F0880a14252737CE9Ac12654ffce37B3F', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'USDO', + partnership: true, + status: 'active', + isMooStaked: true, + periodFinish: 1631282258, + partners: [ + { + logo: 'stake/omnifarm/logo.png', + background: 'stake/omnifarm/bg.png', + text: 'USDO is the most capital efficient stablecoin in DeFi. USDO takes the multi collateral and overcollateralized philosophy of DAI and scales it to support an ever growing collateral list of both crypto and real world assets in a permissionless manner.', + website: 'https://omnitrade.ocp.finance/', + social: { + telegram: 'http://t.me/opendao', + twitter: 'https://twitter.com/opendaoprotocol', + }, + }, + ], + }, + { + id: 'moo_beltbnb-tosdis', + name: 'Tosdis', + logo: 'single-assets/BNB.png', + token: 'mooBeltBNB', + tokenDecimals: 18, + tokenAddress: '0xC34Ae91312A3c3F9420691922040a5DEe1698E52', + tokenOracle: 'lps', + tokenOracleId: 'belt-beltbnb', + earnedToken: 'DIS', + earnedTokenDecimals: 18, + earnedTokenAddress: '0x57efFdE2759b68d86C544e88F7977e3314144859', + earnContractAddress: '0x2Daa8de309A688c5e9084B4A227D75C1998a481d', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'DIS', + partnership: true, + status: 'active', + isMooStaked: true, + periodFinish: 1630610000, + partners: [ + { + logo: 'stake/tosdis/logo.png', + background: 'stake/tosdis/bg.png', + text: 'Tosdis is The Onestop Defi Interoperable Solution where all projects can create staking/farming as a service on ETH/BSC/FTM. TosLabs will serve as an incubator for new and upcoming innovative projects on ETH/BSC/FTM, which will be properly vetted in order to guarantee the smoothest experience for sale participants as well as project owners.', + website: 'https://app.tosdis.finance/stake', + social: { + telegram: 'https://t.me/Tosdis', + twitter: 'https://twitter.com/TosdisFinance', + }, + }, + ], + }, + { + id: 'moo_belt_eth-yel', + name: 'YEL', + logo: 'single-assets/ETH.svg', + token: 'mooBeltETH', + tokenDecimals: 18, + tokenAddress: '0xf2064C230b285AA6Cf45c6267DA86a8E3505D0AA', + tokenOracle: 'tokens', + tokenOracleId: 'ETH', + earnedToken: 'YEL', + earnedTokenDecimals: 18, + earnedTokenAddress: '0xC5C11A531e60378c605383dd54ad1e4C598aD93A', + earnContractAddress: '0x61Fd5B186A35cC65aea46Fd39f0DBCb3371f8749', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'YEL', + partnership: true, + status: 'active', + isMooStaked: true, + periodFinish: 1630509615, + partners: [ + { + logo: 'stake/yel/logo.png', + background: 'stake/yel/bg.png', + text: 'YEL Finance is a multi-chain yield enhancement and aggregation platform with several automated farming strategies. Our mission is to build an ecosystem, with looped demand for YEL tokens, while helping projects to jump-start their liquidity or gather extra holders, and maximizing yields and ROI through our protocols.', + website: 'https://yel.finance/', + social: { + telegram: 'https://t.me/yelfinance', + twitter: 'https://twitter.com/yel_finance', + }, + }, + ], + }, + { + id: 'moo_bifi-bhc', + name: 'Billionhappiness', + logo: 'single-assets/BIFI.png', + token: 'mooBIFI', + tokenDecimals: 18, + tokenAddress: '0xf7069e41C57EcC5F122093811d8c75bdB5f7c14e', + tokenOracle: 'tokens', + tokenOracleId: 'BIFI', + earnedToken: 'BHC', + earnedTokenDecimals: 18, + earnedTokenAddress: '0x6fd7c98458a943f469E1Cf4eA85B173f5Cd342F4', + earnContractAddress: '0xa3A4B70AF33E2a71cE48754b2b9B5A40b982F91A', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'BHC', + partnership: true, + status: 'active', + isMooStaked: true, + periodFinish: 1630110000, + partners: [ + { + logo: 'stake/billionhappiness/logo.png', + background: 'stake/billionhappiness/background.png', + text: 'BillionHappiness is a blockchain technology-based apparel company dedicated to providing happiness through a transparent record of information on its quality products. Our goal is to provide authenticity using blockchain technology to eliminate counterfeit items on the market. Billion Happiness has a token called BHC.', + website: 'https://billionhappiness.finance', + social: { + telegram: 'https://t.me/BillionHappinessOfficial', + twitter: 'https://twitter.com/BHC_Happiness', + }, + }, + ], + }, + { + id: 'moo_belt_4belt-caps', + name: 'Ternoa', + logo: 'uncategorized/BELT-VENUSBLP.png', + token: 'mooBelt4Belt', + tokenDecimals: 18, + tokenAddress: '0xc1fcf50ccaCd1583BD9d3b41657056878C94e592', + tokenOracle: 'lps', + tokenOracleId: 'belt-4belt', + earnedToken: 'CAPS', + earnedTokenDecimals: 18, + earnedTokenAddress: '0xFfBa7529AC181c2Ee1844548e6D7061c9A597dF4', + earnContractAddress: '0xB94c2c6B5c3021fb78567b7bdC3e47EB1447ec4E', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'CAPS', + partnership: true, + status: 'active', + isMooStaked: true, + periodFinish: 1630082621, + partners: [ + { + logo: 'stake/ternoa/logo.png', + background: 'stake/ternoa/bg.png', + text: 'Ternoa is a substrate based Blockchain revolutionizing data encryption and transmission by using special NFTs as time capsules to send your data to the future.', + website: 'https://www.ternoa.com/en', + social: { + telegram: 'https://t.me/ternoa', + twitter: 'https://twitter.com/ternoa_', + }, + }, + ], + }, + { + id: 'moo_cake_bnb-guard', + name: 'WolfDen', + logo: 'bnb-pairs/CAKE-BNB.svg', + token: 'mooCakeV2CAKE-BNB', + tokenDecimals: 18, + tokenAddress: '0xb26642B6690E4c4c9A6dAd6115ac149c700C7dfE', + tokenOracle: 'lps', + tokenOracleId: 'cakev2-cake-bnb', + earnedToken: 'GUARD', + earnedTokenDecimals: 18, + earnedTokenAddress: '0xF606bd19b1E61574ED625d9ea96C841D4E247A32', + earnContractAddress: '0x5E6061667c589470c5B99152EaA21D35109c8a9D', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'gGUARD', + partnership: true, + status: 'closed', + isMooStaked: true, + periodFinish: 1629982597, + partners: [ + { + logo: 'stake/wolfden/logo.png', + background: 'stake/wolfden/bg.png', + text: 'A first of its kind Cryptocurrency project, designed to help new investors protect themselves through education, safer strategies & open communication... while learning how to make "eff you" money in crypto.', + website: 'https://www.wolfdencrypto.com/', + social: { + telegram: 'https://t.me/wolfdencrypto', + twitter: 'https://twitter.com/wolfdencrypto', + }, + }, + ], + }, + { + id: 'moo_banana-moonpot', + name: 'Moonpot', + logo: 'degens/BANANA.svg', + token: 'mooBanana', + tokenDecimals: 18, + tokenAddress: '0xED4ea41Daf652964789b16e3Ff76eC07d99d2340', + tokenOracle: 'tokens', + tokenOracleId: 'BANANA', + earnedToken: 'POTS', + earnedTokenDecimals: 18, + earnedTokenAddress: '0x3Fcca8648651E5b974DD6d3e50F61567779772A8', + earnContractAddress: '0xe33fE08b6a293a34a29C56533aE6c21ED3D78500', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'POTS', + partnership: true, + status: 'active', + isMooStaked: true, + periodFinish: 1629840000, + partners: [ + { + logo: 'stake/moonpot/logo.png', + background: 'stake/moonpot/bg.png', + text: 'Moonpot is a win-win savings game on Binance Smart Chain powered by Beefy Finance. By depositing crypto into a Moonpot, users gain interest on their assets and enter into a prize draw at the same time. There’s a chance to win weekly prizes paid out in crypto from each Moonpot entered — as well as an exclusive monthly prize draw for $POTS stakers.', + website: 'https://moonpot.com/', + social: { + telegram: 'https://t.me/moonpotdotcom', + twitter: 'https://twitter.com/moonpotdotcom', + }, + }, + ], + }, + { + id: 'moo_bifi-honeyfarm', + name: 'HoneyFarm', + logo: 'single-assets/BIFI.png', + token: 'mooBIFI', + tokenDecimals: 18, + tokenAddress: '0xf7069e41C57EcC5F122093811d8c75bdB5f7c14e', + tokenOracle: 'tokens', + tokenOracleId: 'BIFI', + earnedToken: 'HONEY', + earnedTokenDecimals: 18, + earnedTokenAddress: '0xFa363022816aBf82f18a9C2809dCd2BB393F6AC5', + earnContractAddress: '0x08B5d70e9e5A5117594889Baf078f6C5a3FfeC36', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'HONEY', + partnership: true, + status: 'closed', + isMooStaked: true, + periodFinish: 1628696716, + partners: [ + { + logo: 'stake/honey/logo.png', + background: 'stake/honey/bg.png', + text: "HoneyFarm Finance is a layered delegated yield farming project with deflationary tokenomics of a maximum supply of 24,650 HONEY tokens. There will be multiple layered projects and each layer will also has pools with previous layers' native tokens. The whole project will be finished after the final emission of a certain layered project, which will be announced in advance.", + website: 'https://honeyfarm.finance/', + social: { + telegram: 'https://t.me/HoneyFarmChat', + twitter: 'https://twitter.com/HoneyFarmFi', + }, + }, + ], + }, + { + id: 'moo_banana-land', + name: 'Landshare', + logo: 'degens/BANANA.svg', + token: 'mooBanana', + tokenDecimals: 18, + tokenAddress: '0xED4ea41Daf652964789b16e3Ff76eC07d99d2340', + tokenOracle: 'tokens', + tokenOracleId: 'BANANA', + earnedToken: 'LAND', + earnedTokenDecimals: 18, + earnedTokenAddress: '0x9D986A3f147212327Dd658F712d5264a73a1fdB0', + earnContractAddress: '0xaDC9D67EF0f2a72080253d2bF28EB7EEaDDE5C9C', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'LAND', + partnership: true, + status: 'active', + isMooStaked: true, + periodFinish: 1629361337, + partners: [ + { + logo: 'stake/landshare/logo.png', + background: 'stake/landshare/bg.png', + text: 'Bringing Real Estate to the Blockchain. Landshare offers a hassle-free alternative to traditional real estate investments.', + website: 'https://landshare.io/', + social: { + telegram: 'https://t.me/landshare', + twitter: 'https://twitter.com/landshareio', + }, + }, + ], + }, + { + id: 'moo_bifi-moonpot', + name: 'Moonpot', + logo: 'single-assets/BIFI.png', + token: 'mooBIFI', + tokenDecimals: 18, + tokenAddress: '0xf7069e41C57EcC5F122093811d8c75bdB5f7c14e', + tokenOracle: 'tokens', + tokenOracleId: 'BIFI', + earnedToken: 'POTS', + earnedTokenDecimals: 18, + earnedTokenAddress: '0x3Fcca8648651E5b974DD6d3e50F61567779772A8', + earnContractAddress: '0xA4703D9ba09361da84d1e31c8a356889E7D628F8', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'POTS', + partnership: true, + status: 'active', + isMooStaked: true, + periodFinish: 1629450479, + partners: [ + { + logo: 'stake/moonpot/logo.png', + background: 'stake/moonpot/bg.png', + text: 'Moonpot is a win-win savings game on Binance Smart Chain powered by Beefy Finance. By depositing crypto into a Moonpot, users gain interest on their assets and enter into a prize draw at the same time. There’s a chance to win weekly prizes paid out in crypto from each Moonpot entered — as well as an exclusive monthly prize draw for $POTS stakers.', + website: 'https://moonpot.com/', + social: { + telegram: 'https://t.me/moonpotdotcom', + twitter: 'https://twitter.com/moonpotdotcom', + }, + }, + ], + }, + { + id: 'moo_bifi-honeyfarm2', + name: 'HoneyFarm', + logo: 'single-assets/BIFI.png', + token: 'mooBIFI', + tokenDecimals: 18, + tokenAddress: '0xf7069e41C57EcC5F122093811d8c75bdB5f7c14e', + tokenOracle: 'tokens', + tokenOracleId: 'BIFI', + earnedToken: 'HONEY', + earnedTokenDecimals: 18, + earnedTokenAddress: '0xFa363022816aBf82f18a9C2809dCd2BB393F6AC5', + earnContractAddress: '0xEB7C46fB3372E952541Ed1d6FCb29EB2C34C3b83', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'HONEY', + partnership: true, + status: 'active', + isMooStaked: true, + periodFinish: 1629817902, + partners: [ + { + logo: 'stake/honey/logo.png', + background: 'stake/honey/bg.png', + text: "HoneyFarm Finance is a layered delegated yield farming project with deflationary tokenomics of a maximum supply of 24,650 HONEY tokens. There will be multiple layered projects and each layer will also has pools with previous layers' native tokens. The whole project will be finished after the final emission of a certain layered project, which will be announced in advance.", + website: 'https://honeyfarm.finance/', + social: { + telegram: 'https://t.me/HoneyFarmChat', + twitter: 'https://twitter.com/HoneyFarmFi', + }, + }, + ], + }, + { + id: 'moo_banana-pera', + name: 'Pera', + logo: 'degens/BANANA.svg', + token: 'mooApeBANANA', + tokenDecimals: 18, + tokenAddress: '0xD307e7CC6a302046b7D91D83aa4B8324cFB7a786', + tokenOracle: 'tokens', + tokenOracleId: 'BANANA', + earnedToken: 'PERA', + earnedTokenDecimals: 18, + earnedTokenAddress: '0xb9D8592E16A9c1a3AE6021CDDb324EaC1Cbc70d6', + earnContractAddress: '0x38247fCE28480A7BEF2CB7aD134ce091Bd2E1a82', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'PERA', + partnership: true, + status: 'closed', + isMooStaked: true, + periodFinish: 1628453723, + partners: [ + { + logo: 'stake/pera/logo.png', + background: 'stake/pera/bg.png', + text: "Pera Finance is a decentralized trading competition platform with multi-layered yield farming opportunities. Traders, liquidity providers and holders yield farm together through the DeFi's first decentralized trading competition. Every on-chain PERA transaction (transfer, trade, or liquidity addition/ removal) generates a 2 % transaction fee.", + website: 'https://pera.finance/', + social: { + telegram: 'https://t.me/perafinance', + twitter: 'https://twitter.com/perafinance', + }, + }, + ], + }, + { + id: 'moo_bifi-farmhero', + name: 'FarmHero', + logo: 'single-assets/BIFI.png', + token: 'mooBIFI', + tokenDecimals: 18, + tokenAddress: '0xf7069e41C57EcC5F122093811d8c75bdB5f7c14e', + tokenOracle: 'tokens', + tokenOracleId: 'BIFI', + earnedToken: 'HERO', + earnedTokenDecimals: 18, + earnedTokenAddress: '0x9B26e16377ad29A6CCC01770bcfB56DE3A36d8b2', + earnContractAddress: '0x13465c094e33BB2952aBA55A5b7583655711d5C3', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'HERO', + partnership: true, + status: 'closed', + isMooStaked: true, + periodFinish: 1628158422, + partners: [ + { + logo: 'stake/farmhero/logo.png', + background: 'stake/farmhero/bg.png', + text: 'FarmHero is a cross-chain protocol that mixes NFT, yield farming and gaming. Being a novel DEFI and GAMEFI protocol, FarmHero aims to provide fun and profits at the same time. FarmHero contracts are audited by Certik and PeckShield.', + website: 'https://farmhero.io/', + social: { + telegram: 'https://t.me/farmheroIO', + twitter: 'https://twitter.com/FarmHeroIO', + }, + }, + ], + }, + { + id: 'moo_bifi-fruits', + name: 'Fruit', + logo: 'single-assets/BIFI.png', + token: 'mooBIFI', + tokenDecimals: 18, + tokenAddress: '0xf7069e41C57EcC5F122093811d8c75bdB5f7c14e', + tokenOracle: 'tokens', + tokenOracleId: 'BIFI', + earnedToken: 'FRUIT', + earnedTokenDecimals: 18, + earnedTokenAddress: '0x4ECfb95896660aa7F54003e967E7b283441a2b0A', + earnContractAddress: '0x63D4b32bB980C7b0f7f0e5bc9585Ba4f78d8102C', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'FRUIT', + partnership: true, + status: 'closed', + isMooStaked: true, + periodFinish: 1627319567, + partners: [ + { + logo: 'stake/fruit/logo.png', + background: 'stake/fruit/background.png', + text: "Fruit's Adventures focus on fun first with our Binance Smart Chain powered fruit adventures. Players can win Fruit tokens by playing our decentralized games. The goal of the FRUIT Token DeFi Project is to use Decentralized Finance blockchains to develop and implement fun, skill-based games to increase the potential footprint of crypto usage on the market. FRUIT is dedicated to developing these games one at a time. Currently, all major effort has been focused on recreating the popular Fruit's Adventures slot game and implementing crypto exchange into it. The game has been incredibly popular in Asia for more than 30 years as a street slot game because of its high reward system. You can exchange FRUIT Tokens to play immediately and win more as you play and achieve high marks in the slots! The reason for its popularity is the high payout potential. It uses 8 stake buttons and has 22 units. Nearly every spin will win, with an overall winning rate of over 95%!", + website: 'https://www.fruitsadventures.com', + social: { + telegram: 'https://t.me/fruitsadventures_com', + twitter: 'https://twitter.com/FruitsAdventure', + }, + }, + ], + }, + { + id: 'moo_cake-krown', + name: 'KingDefi', + logo: 'single-assets/CAKE.svg', + token: 'mooCakeV2', + tokenDecimals: 18, + tokenAddress: '0x97e5d50Fe0632A95b9cf1853E744E02f7D816677', + tokenOracle: 'tokens', + tokenOracleId: 'Cake', + earnedToken: 'mooKingDefiKROWN', + earnedTokenDecimals: 18, + earnedTokenAddress: '0xEb4804389A843676686715785C8Df27EA6E43F9b', + earnContractAddress: '0x584C90FEB63a8fAE7350f055C6880eD10FDd8918', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'KRW', + partnership: true, + status: 'closed', + isMooStaked: true, + periodFinish: 1626723554, + partners: [ + { + logo: 'stake/krown/logo.png', + background: 'stake/krown/background.png', + text: 'THE FIRST AI YIELD FARMING AGGREGATOR ON BINANCE SMART CHAIN AND SOLANA. KingDeFi is a DeFi project combining two main areas: analytics and monitoring where we provide a market overview, liquidity pool search engine and portfolio tracking to users and farming as we are a yield optimizer project on BSC and Solana', + website: 'https://kingdefi.io/', + social: { + telegram: 'https://t.me/KingDefi_Community', + twitter: 'https://twitter.com/KingDefi2', + }, + }, + ], + }, + { + id: 'moo_cake-cakev2', + name: 'Beefy', + logo: 'single-assets/CAKE.svg', + token: 'mooCakeV2', + tokenDecimals: 18, + tokenAddress: '0x97e5d50Fe0632A95b9cf1853E744E02f7D816677', + tokenOracle: 'tokens', + tokenOracleId: 'Cake', + earnedToken: 'mooBIFI', + earnedTokenDecimals: 18, + earnedTokenAddress: '0xf7069e41C57EcC5F122093811d8c75bdB5f7c14e', + earnContractAddress: '0xA17A86e836199489801A00B50b9C09525ddC232b', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'BIFI', + partnership: true, + status: 'closed', + isMooStaked: true, + periodFinish: 1625930588, + partners: [ + { + logo: 'stake/beefy/beefyfinance.png', + logoNight: 'stake/beefy/beefyfinance_night.png', + background: 'stake/beefy/background.png', + text: 'Beefy Finance is the Multichain Yield Optimizer that allows its users to earn compound interest on their holdings. A yield optimizer is an automated service that seeks to gain the maximum possible return on crypto-investments made through DeFi platforms. This is much more efficient than attempting to maximize your returns by doing everything manually. It also means you don’t have to sit in front of a screen all day. So Beefy Finance is a platform that puts your crypto to work for maximum ROI with minimum effort. $BIFI is the governance token of the Beefy Finance platform. This means that when you own some $BIFI, you get the right to create and vote on proposals to do with the future of the platform. Third, the fun part: $BIFI tokens can be staked on Beefy to earn a share of the revenue created by the Beefy platform.', + website: 'https://app.beefy.finance', + social: { + telegram: 'http://t.me/beefyfinance', + twitter: 'https://twitter.com/beefyfinance', + }, + }, + ], + }, + { + id: 'moo_merlin-merlin', + name: 'Merlin Lab', + logo: 'single-assets/MERL.svg', + token: 'mooMerlinMERL', + tokenDecimals: 18, + tokenAddress: '0x6261d793BdAe82842461A72B746bc18a5B7D2Bc4', + tokenOracle: 'tokens', + tokenOracleId: 'MERL', + earnedToken: 'MERL', + earnedTokenDecimals: 18, + earnedTokenAddress: '0xDA360309C59CB8C434b28A91b823344a96444278', + earnContractAddress: '0x0c0487579b4378dbF5199d468bd3c6E8B7bB97fE', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'MERL', + partnership: true, + status: 'closed', + isMooStaked: true, + periodFinish: 1624819685, + partners: [ + { + logo: 'stake/merlin/logo.png', + background: 'stake/merlin/background.png', + text: "Merlin is an auto-compounding yield aggregator with an ecosystem optimized to focus on safe and sustainable maximum yield return. Merlin takes care of gas costs, APY tracking, optimal yield strategies, security with the goal of maximizing DeFi users' yield farming at the lowest possible cost (All APY & APRs displayed are inclusive of fees).", + website: 'https://merlinlab.com/farm', + social: { + telegram: 'https://t.me/merlinlab', + twitter: 'https://twitter.com/MerlinLab_', + }, + }, + ], + }, + { + id: 'moo_steel_iron-merlin', + name: 'Merlin Lab', + logo: 'degens/IRON.png', + token: 'mooIronSTEEL-IRON', + tokenDecimals: 18, + tokenAddress: '0x1384Ed18E881C0CC9027DC04ab88bFBF641c6106', + tokenOracle: 'lps', + tokenOracleId: 'iron-steel-iron', + earnedToken: 'mooMerlinMERL', + earnedTokenDecimals: 18, + earnedTokenAddress: '0x6261d793BdAe82842461A72B746bc18a5B7D2Bc4', + earnContractAddress: '0xa5BD31B804f9CDfE7de37f4EaEB19156cAeDEC3A', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'MERL', + partnership: true, + status: 'closed', + isMooStaked: true, + fixedStatus: true, + periodFinish: 1624000000, + partners: [ + { + logo: 'stake/merlin/logo.png', + background: 'stake/merlin/background.png', + text: "Merlin is an auto-compounding yield aggregator with an ecosystem optimized to focus on safe and sustainable maximum yield return. Merlin takes care of gas costs, APY tracking, optimal yield strategies, security with the goal of maximizing DeFi users' yield farming at the lowest possible cost (All APY & APRs displayed are inclusive of fees).", + website: 'https://merlinlab.com/farm', + social: { + telegram: 'https://t.me/merlinlab', + twitter: 'https://twitter.com/MerlinLab_', + }, + }, + ], + }, + { + id: 'moo_1inch_1inch-ten', + name: 'TEN Finance', + logo: 'single-assets/INCH.png', + token: 'moo1INCH1INCH', + tokenDecimals: 18, + tokenAddress: '0xBa53AF4C2f1649F82e8070FB306DDBF2771A1950', + tokenOracle: 'tokens', + tokenOracleId: '1INCH', + earnedToken: 'TENFI', + earnedTokenDecimals: 18, + earnedTokenAddress: '0xd15C444F1199Ae72795eba15E8C1db44E47abF62', + earnContractAddress: '0xebF08C4F58E443b94b06b4281834dB29c888dD1F', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'TENFI', + partnership: true, + status: 'closed', + isMooStaked: true, + periodFinish: 1623789212, + partners: [ + { + logo: 'stake/tenfi/logo.png', + background: 'stake/tenfi/background.png', + text: 'TEN is a yield aggregator, audited by Certik, that simplifies staking and yield farming with the most liquid Binance Smart Chain Liquidity Pools available and provides a robust yield earning environment on the market while adhering to security, sustainability, longevity, and simplicity. TEN is the Token Enrichment Network, decentralized finance, simplified! TEN aims to simplify DeFi by creating a seamless and streamlined process in staking your assets to earn a rewardingly high yet modest APY in the simplest and safest manner while ensuring sustainable growth within the TEN platform across multiple farming ecosystems and optimizing returns for maximum yields in a sustainable and robust manner. TEN was launched to create a truly long-term, yet beneficial model that would ensure the longevity of the $TENFI ecosystem that allows for TEN to adapt and evolve with the DeFi space in general. This allows for high yield opportunities and ensuring that the $TENFI ecosystem continues to evolve and adapt. $TENFI aims to be a vanguard in decentralized finance.\n', + website: 'https://ten.finance', + social: { + telegram: 'https://t.me/tenfinance', + twitter: 'https://twitter.com/tenfinance', + }, + }, + ], + }, + { + id: 'moo_mdex_mdx-panther', + name: 'PantherSwap', + logo: 'single-assets/MDX.png', + token: 'mooMdexMDX', + tokenDecimals: 18, + tokenAddress: '0xc34C7923B73eB68E363AaEB2b7fbBeC11Cf90884', + tokenOracle: 'tokens', + tokenOracleId: 'MDX', + earnedToken: 'PANTHER', + earnedTokenDecimals: 18, + earnedTokenAddress: '0x1f546ad641b56b86fd9dceac473d1c7a357276b7', + earnContractAddress: '0xB415c2f5555C163563d1F17830DBEEfA0168cA87', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'PANTHER', + partnership: true, + status: 'closed', + isMooStaked: true, + periodFinish: 1623442349, + partners: [ + { + logo: 'stake/panther/logo.png', + background: 'stake/panther/background.png', + text: 'PantherSwap is the first automatic liquidity acquisition yield farm and AMM decentralized exchange running on Binance Smart Chain with lots of unique and creative features that let you earn and win. We plan to add a trading incentive mechanism to our own AMM dex. Users can earn tokens by trading on PantherSwap. But different from traditional trading mining, the rewards on PantherSwap for trading can be different tokens. Other projects can provide their own tokens as rewards for specified trading pairs. More details about it will be published later.', + website: 'https://pantherswap.com/', + social: { + telegram: 'https://t.me/PantherSwap', + twitter: 'https://twitter.com/PantherSwap', + }, + }, + ], + }, + { + id: 'moo_dop_lp-dop', + name: 'Dopple Finance', + logo: 'uncategorized/DOPPLE-DOP-LP.svg', + token: 'mooDoppleDopLP', + tokenDecimals: 18, + tokenAddress: '0x8464365600d6A1b86A7f7c80DCD63AFa861069dB', + tokenOracle: 'lps', + tokenOracleId: 'dopple-dop-lp', + earnedToken: 'DOP', + earnedTokenDecimals: 18, + earnedTokenAddress: '0x844FA82f1E54824655470970F7004Dd90546bB28', + earnContractAddress: '0xd4c1FEb9defBcf1f4a56133201C29ba9421f9fb4', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'DOP', + partnership: true, + status: 'closed', + isMooStaked: true, + periodFinish: 1622484265, + partners: [ + { + logo: 'stake/dopple/logo.png', + background: 'stake/dopple/background.png', + text: 'Dopple Finance is building a Stablecoin DeFi ecosystem on the Binance Smart Chain. Our main product is a decentralized stablecoin exchange, which allows users to efficiently swap stablecoins and pegged assets on the Binance Smart Chain. Dopple currently supports the following stablecoins: BUSD, USDT, DAI, USDC, UST & DOLLY. Liquidity Providers can earn trading fees in form of stablecoins by supplying capital to the underlying liquidity pools. Liquidity Providers can also earn Dopple Token Rewards by farming LP tokens or by staking Dopple tokens.', + website: 'https://dopple.finance/Swap', + social: { + telegram: 'https://t.me/dopplefi', + twitter: 'https://twitter.com/dopplefi', + }, + }, + ], + }, + { + id: 'moo_jetswap-wings', + name: 'JetSwap', + logo: 'degens/WINGS.svg', + token: 'mooJetswapWINGS', + tokenDecimals: 18, + tokenAddress: '0x5e784882E8D2ac69777713f0e71100741b8aC2F6', + tokenOracle: 'tokens', + tokenOracleId: 'WINGS', + earnedToken: 'WINGS', + earnedTokenDecimals: 18, + earnedTokenAddress: '0x0487b824c8261462f88940f97053e65bdb498446', + earnContractAddress: '0x1481d3da44eB00697bbBcEA85172179D3F3dC82C', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'WINGS', + partnership: true, + status: 'closed', + isMooStaked: true, + periodFinish: 1622230568, + partners: [ + { + logo: 'stake/jetswap/logo.png', + background: 'stake/jetswap/background.png', + text: 'Jetswap is a decentralized Automated Market Maker (AMM) on Binance Smart Chain with low fees and instant trade execution. Trade from the comfort of your own wallet! Trade directly from your favorite wallet application! There are no accounts to set up or trading limits. You have full control over your assets and Jetswap has 0 control over your assets. You can earn BIG WINGS rewards when you deposit your Jetswap WINGS-LP to the WINGS farm. You can also farm WINGS with single assets like WINGS, GFCE, JETS, and FTS! The WINGS LP tokens generate trading fees for the depositor! Even if there is not a supported WINGS farm you can still earn a percentage of every trading fee.', + website: 'https://jetswap.finance/', + social: { + telegram: 'https://t.me/jetfuelfinance', + twitter: 'https://twitter.com/Jetfuelfinance', + }, + }, + ], + }, + { + id: 'moo_dumpling-sdump', + name: 'DumplingSwap', + logo: 'single-assets/BIFI.png', + token: 'mooBIFI', + tokenDecimals: 18, + tokenAddress: '0xf7069e41C57EcC5F122093811d8c75bdB5f7c14e', + tokenOracle: 'tokens', + tokenOracleId: 'BIFI', + earnedToken: 'SDUMP', + earnedTokenDecimals: 18, + earnedTokenAddress: '0x13F6751ba11337BC67aBBdAd638a56194ee133B8', + earnContractAddress: '0xc842B409FFA6d0CC2F74d99F6016a7CBac92E97b', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'SDUMP', + partnership: true, + status: 'closed', + isMooStaked: true, + periodFinish: 1622057801, + partners: [ + { + logo: 'stake/dumpling/logo.png', + background: 'stake/dumpling/background.png', + text: 'DumplingSwap is a gamified, community-driven yield farming project developed by a team of passionate Software Developers with proven experience in the field of DeFi. Our mission is to create an economically sustainable yield farming community by providing a powerful DeFi ecosystem that wants to revolutionize this sector. We are aiming to become an integral part of BSC Ecosystem and a competitor to Eth DeFi projects.', + website: 'https://app.dumplingdefi.finance/', + social: { + telegram: 'https://t.me/dumplingswap_official', + twitter: 'https://twitter.com/dumpling_swap', + }, + }, + ], + }, + { + id: 'moo_grandbanks-grand', + name: 'The Grand Banks', + logo: 'bnb-pairs/BIFI-BNB.png', + token: 'mooCakeV2BIFI-BNB', + tokenDecimals: 18, + tokenAddress: '0x59960d624600aE1669584Bb504a5f4F2e90EbF46', + tokenOracle: 'lps', + tokenOracleId: 'cakev2-bifi-bnb', + earnedToken: 'GRAND', + earnedTokenDecimals: 18, + earnedTokenAddress: '0xee814f5b2bf700d2e843dc56835d28d095161dd9', + earnContractAddress: '0x50Bd1D83619143e4af8d6f1BBEe8062E3c967EaF', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'GRAND', + partnership: true, + status: 'closed', + isMooStaked: true, + periodFinish: 1622057894, + partners: [ + { + logo: 'stake/grandbanks/logo.png', + background: 'stake/grandbanks/background.png', + text: 'Let’s bring yield farming back to basics. The Narwhalswap team is here to make it happen. Imagine, no barrier for entry, no multiple steps to farming — just simple, easy sailing following the tides of the trade. Deposit your favorite token, be it BNB, BUSD, or even our very own GRAND or NAR, and start earning **$GRAND**. There is no need to first pool tokens together in order to deposit and there is no need to switch chains. The Grand Banks does it for you! Save yourself time and fees and simply start investing.', + website: 'https://www.thegrandbanks.finance/#/', + social: { + telegram: 'https://t.me/theGrandBanks', + twitter: 'https://twitter.com/Grandbanks13', + }, + }, + ], + }, + { + id: 'moo_bhc-hps2', + name: 'Billionhappiness', + logo: 'single-assets/HPS.png', + token: 'mooBillionHPS', + tokenDecimals: 18, + tokenAddress: '0xAC8E64BE515fAe8c6026fb22954d4D1375938Bb5', + tokenOracle: 'tokens', + tokenOracleId: 'HPS', + earnedToken: 'BHC', + earnedTokenDecimals: 18, + earnedTokenAddress: '0x6fd7c98458a943f469e1cf4ea85b173f5cd342f4', + earnContractAddress: '0x8e5fF8542Bd2c675F22C58ee146607df822F30B5', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'BHC', + partnership: true, + status: 'closed', + isMooStaked: true, + periodFinish: 1621872008, + partners: [ + { + logo: 'stake/billionhappiness/logo.png', + background: 'stake/billionhappiness/background.png', + text: 'BillionHappiness is a blockchain technology-based apparel company dedicated to providing happiness through a transparent record of information on its quality products. Our goal is to provide authenticity using blockchain technology to eliminate counterfeit items on the market. Billion Happiness has a token called BHC.', + website: 'https://billionhappiness.finance', + social: { + telegram: 'https://t.me/BillionHappinessOfficial', + twitter: 'https://twitter.com/BHC_Happiness', + }, + }, + ], + }, + { + id: 'moo_belt_btc-iron', + name: 'Iron Finance', + logo: 'single-assets/BTCB.svg', + token: 'mooBeltBTC', + tokenDecimals: 18, + tokenAddress: '0xD411121C948Cff739857513E1ADF25ED448623f8', + tokenOracle: 'lps', + tokenOracleId: 'belt-beltbtc', + earnedToken: 'STEEL', + earnedTokenDecimals: 18, + earnedTokenAddress: '0x9001eE054F1692feF3A48330cB543b6FEc6287eb', + earnContractAddress: '0x57db966945691Ac03C704566BF5E20207def4215', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'STEEL', + partnership: true, + status: 'closed', + isMooStaked: true, + periodFinish: 1621620518, + partners: [ + { + logo: 'stake/ironfinance/logo.png', + background: 'stake/ironfinance/background.png', + text: 'Inspired by FRAX, a unique fractionally-algorithmic stablecoin on the Ethereum network, and utilizing a similar approach, we have created IRON, the first partially-collateralized stablecoin on Binance Smart Chain. The IRON protocol makes use of 2 tokens to achieve its goal: STEEL and IRON. STEEL - The share token of the Iron finance protocol. Serves as part of the collateral behind IRON. Backed by seigniorage revenue as well as the value of any excess collateral. IRON - A stablecoin pegged to $1. Partially backed by a continuously adjusting ratio of collateral equal to $1 in value. Check out the docs for more information: https://docs.iron.finance/', + website: 'https://app.iron.finance/', + social: { + telegram: 'https://t.me/ironfinance', + twitter: 'https://twitter.com/IronFinance', + }, + }, + ], + }, + { + id: 'moo_belt_4belt-tofy', + name: 'MarshmallowDefi', + logo: 'uncategorized/BELT-VENUSBLP.png', + token: 'mooBelt4Belt', + tokenDecimals: 18, + tokenAddress: '0xc1fcf50ccaCd1583BD9d3b41657056878C94e592', + tokenOracle: 'lps', + tokenOracleId: 'belt-4belt', + earnedToken: 'TOFY', + earnedTokenDecimals: 18, + earnedTokenAddress: '0xE1F2d89a6c79b4242F300f880e490A70083E9A1c', + earnContractAddress: '0x42b9939020c2CeD30eA54B0A05D3aeD45DA74F54', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'TOFY', + partnership: true, + status: 'closed', + isMooStaked: true, + periodFinish: 1621440003, + partners: [ + { + logo: 'stake/safefarm/logo.png', + background: 'stake/safefarm/background.png', + text: 'Toffie is the reference token for SAFEFARM within the MarshMallow ecosystem, it is the currency you receive in exchange when you pool / farm your Reflection Tokens. Toffie is a Mintable token and will serve for multiple functions including the remuneration, purchase and exchange of NFTs on the platform within the Marshmallow Market-place. The basic idea will be to create real NFTs made and developed by professionals in the sector, so as to bring to the community real valuables that can be exchanged and appreciated over time. All this mechanism can be managed by Toffie.', + website: 'https://safefarms.marshmallowdefi.com/info', + social: { + telegram: 'https://t.me/MarshmallowDeFi', + twitter: 'https://twitter.com/SwapMarshmallow', + }, + }, + ], + }, + { + id: 'moo_belt_btc-xbtc', + name: 'xBTC', + logo: 'single-assets/BTCB.svg', + token: 'mooBeltBTC', + tokenDecimals: 18, + tokenAddress: '0xD411121C948Cff739857513E1ADF25ED448623f8', + tokenOracle: 'tokens', + tokenOracleId: 'BTCB', + earnedToken: 'BXBTC-BNB LP', + earnedTokenDecimals: 18, + earnedTokenAddress: '0x8d112fcdf377a2c4cb41b60aae32199f939a866c', + earnContractAddress: '0x1BA1B43227325E8Dc0FA1378d7C41fa7F49e32e0', + earnContractAbi: govPoolABI, + earnedOracle: 'lps', + earnedOracleId: 'banana-bxbtc-bnb', + partnership: true, + status: 'closed', + isMooStaked: true, + periodFinish: 1620928710, + partners: [ + { + logo: 'stake/xbtc/logo.png', + background: 'stake/xbtc/background.png', + text: 'xBTC gives users one token access to every single digital asset on earth, pegged against Bitcoin dominance. We call this a “Dominance Hedge.” As the inferior and sluggish Bitcoin loses its dominance, xBTC holders will benefit. DeFi, Social Networks, Gaming, Smart Contracts – all blockchains and use cases are represented by xBTC. With a few clicks of the mouse, users benefit from access to the price action of hundreds of digital assets. This is a brand new type of hedge and asset – this is xBTC.\n', + website: 'https://xbtc.fi/', + social: { + telegram: 'https://t.me/xBTC_Official', + twitter: 'https://twitter.com/XBTC_Official', + }, + }, + ], + }, + { + id: 'moo_belt_eth-icarus', + name: 'Icarus Finance', + logo: 'single-assets/ETH.svg', + token: 'mooBeltETH', + tokenDecimals: 18, + tokenAddress: '0xf2064C230b285AA6Cf45c6267DA86a8E3505D0AA', + tokenOracle: 'tokens', + tokenOracleId: 'ETH', + earnedToken: 'ICA', + earnedTokenDecimals: 18, + earnedTokenAddress: '0x95111f630ac215eb74599ed42c67e2c2790d69e2', + earnContractAddress: '0xf6259516B5c38a110f634FcC2f14fEF02a318B66', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'ICA', + partnership: true, + status: 'closed', + isMooStaked: true, + periodFinish: 1620836553, + partners: [ + { + logo: 'stake/icarus/logo.png', + background: 'stake/icarus/background.png', + text: 'icarus.finance is a first of its kind decentralized mining protocol that brings Bitcoin and Ethereum hashrate to the Binance Smart Chain, combining it with further DeFi applications Do you want to mine, or farm crypto assets? Perhaps both? No problem! At icarus.finance, you choose"\n', + website: 'http://icarus.finance', + social: { + telegram: 'https://t.me/icarus_finance', + twitter: 'https://twitter.com/zetta_icarus', + }, + }, + ], + }, + { + id: 'moo_belt_eth-satis', + name: 'Satis Finance', + logo: 'single-assets/ETH.svg', + token: 'mooBeltETH', + tokenDecimals: 18, + tokenAddress: '0xf2064C230b285AA6Cf45c6267DA86a8E3505D0AA', + tokenOracle: 'tokens', + tokenOracleId: 'ETH', + earnedToken: 'SAT', + earnedTokenDecimals: 18, + earnedTokenAddress: '0xA1928c0D8F83C0bFB7ebE51B412b1FD29A277893', + earnContractAddress: '0x36361230D435ce1829634cCd68Ba479628CaFe04', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'SAT', + partnership: true, + status: 'closed', + fixedStatus: true, + isMooStaked: true, + periodFinish: 1520495415, + partners: [ + { + logo: 'stake/satis/logo.png', + background: 'stake/satis/background.png', + text: '*Satis is an Automatic Deflationary Token, which means that there is a 2% burn on transactions, please keep this in mind when transferring and trading this token. (slippage 2,5%)* SatisFinance is a brand new DeFi project designed by an experienced development team as the 4th generation deflationary yield farm on Binance Smart Chain. Besides the buyback burning mechanism introduced by Goose Finance and Fullsail Finance, SatisFinance has implemented unique innovative features to fight against the inflation problem faced by most traditional yield farms.\n', + website: 'https://satis.finance/', + social: { + telegram: 'https://t.me/satisfiChat', + twitter: 'https://twitter.com/FinanceSatis', + }, + }, + ], + }, + { + id: 'moo_bhc-hps', + name: 'Billionhappiness', + logo: 'single-assets/BHC.png', + token: 'mooBHC', + tokenDecimals: 18, + tokenAddress: '0x56E899E56F6B8635B4A01b724db23674a64A7231', + tokenOracle: 'tokens', + tokenOracleId: 'BHC', + earnedToken: 'BIFI', + earnedTokenDecimals: 18, + earnedTokenAddress: '0xCa3F508B8e4Dd382eE878A314789373D80A5190A', + earnContractAddress: '0x79d9dd12f5c070eFbD9721F06dd8811825c9d9FC', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'BIFI', + partnership: true, + status: 'closed', + isMooStaked: true, + periodFinish: 1620495415, + partners: [ + { + logo: 'stake/billionhappiness/logo.png', + background: 'stake/billionhappiness/background.png', + text: 'BillionHappiness is a blockchain technology-based apparel company dedicated to providing happiness through a transparent record of information on its quality products. Our goal is to provide authenticity using blockchain technology to eliminate counterfeit items on the market. Billion Happiness has a token called BHC.', + website: 'https://billionhappiness.finance', + social: { + telegram: 'https://t.me/BillionHappinessOfficial', + twitter: 'https://twitter.com/BHC_Happiness', + }, + }, + ], + }, + + { + id: 'moo_auto_eth-apys', + name: 'APYSwap', + logo: 'single-assets/ETH.svg', + token: 'mooAutoETHv2', + tokenDecimals: 18, + tokenAddress: '0x0F47eaae1EC5fD11067455210c494a7828024524', + tokenOracle: 'tokens', + tokenOracleId: 'ETH', + earnedToken: 'APYS-BNB LP', + earnedTokenDecimals: 18, + earnedTokenAddress: '0xE5783Cc9dFb3E7e474B81B07369a008e80F1cEdb', + earnContractAddress: '0x9A7DB018897B99F47661EcFFb143A7BF80724a7d', + earnContractAbi: govPoolABI, + earnedOracle: 'lps', + earnedOracleId: 'cake-apys-bnb', + partnership: true, + status: 'closed', + isMooStaked: true, + periodFinish: 1619024404, + partners: [ + { + logo: 'stake/apyswap/logo.png', + background: 'stake/apyswap/background.png', + text: 'Start Winning Today With APYSwap Staking. Staking is the process of holding tokens in a cryptocurrency wallet to support the operations of a network. Participants are rewarded for depositing and holding coins, with constant guaranteed time-based returns. Rewards are calculated based on staking time: the longer you stake, the more you earn.', + website: 'https://apyswap.com/', + social: { + telegram: 'https://t.me/apyswapcom', + twitter: 'https://twitter.com/apyswap', + }, + }, + ], + }, + + { + id: 'moo_belt_venus-mash', + name: 'MarshmallowDeFi', + logo: 'uncategorized/BELT-VENUSBLP.png', + token: 'mooBeltVenusBLP', + tokenDecimals: 18, + tokenAddress: '0xb35Dc0b5eFd7c75590a9da55BE46d968c5804e24', + tokenOracle: 'lps', + tokenOracleId: 'belt-venus-blp', + earnedToken: 'MASH', + earnedTokenDecimals: 18, + earnedTokenAddress: '0x787732f27D18495494cea3792ed7946BbCFF8db2', + earnContractAddress: '0x2Ad5e76e09ef581a8fb7B66901D80C75Db571824', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'MASH', + partnership: true, + status: 'closed', + isMooStaked: true, + periodFinish: 1619104315, + partners: [ + { + logo: 'stake/mash/logo.png', + background: 'stake/mash/background.png', + text: 'MarshmallowDeFi (MASH) is the next generation of Automated Market Making (AMM) decentralized exchange with a deflationary governance token model. We are your go-to yield farm running on Binance Smart Chain and Pancakeswap exchange, with lots of other features that let you earn tokens. As with the current wave of second-generation yield farms, the aim is to create a perpetual deflation token, the MASH, with a continual burn mechanism in order to field an environment that can sustain long-term gains with consistently high APR for greater earnings.', + website: 'https://marshmallowdefi.com/', + social: { + telegram: 'https://t.me/MarshmallowDeFi', + twitter: 'https://twitter.com/SwapMarshmallow', + }, + }, + ], + }, + + { + id: 'moo_mdx_bnb-palm', + name: 'YieldBay', + logo: 'bnb-pairs/MDX-BNB.png', + token: 'mooMdexMDX-BNB', + tokenDecimals: 18, + tokenAddress: '0x31e2d52A04FEb223109506E4c6f195C0cF16b98A', + tokenOracle: 'lps', + tokenOracleId: 'mdex-bsc-mdx-bnb', + earnedToken: 'PALM', + earnedTokenDecimals: 18, + earnedTokenAddress: '0x9768E5b2d8e761905BC81Dfc554f9437A46CdCC6', + earnContractAddress: '0x4B86435B0749b27008060Cb5696fceB606386835', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'PALM', + partnership: true, + status: 'closed', + isMooStaked: true, + periodFinish: 1618683181, + partners: [ + { + logo: 'stake/yieldbay/logo.png', + background: 'stake/yieldbay/background.png', + text: 'Our mission is to create the most Economically Sustainable and Accessible yield farming community on BSC by providing a simple user interface, facilitating access to DeFi, and creating a perpetual deflation token, the PALM token. YieldBay has the goal of fostering AMM and DeFi market by facilitating the participation of traditional investors in the Crypto Ecosystem. Expanding the potential market reach requires simple and smooth interfaces as well as easier connections between Fiat and Crypto markets. To increase protocol economical sustainability, we aim at increasing burning fees and defining additional deflationary strategies benefitting holders.', + website: 'https://yieldbay.finance/', + social: { + telegram: 'https://t.me/yieldbay', + twitter: 'https://twitter.com/yieldbay', + }, + }, + ], + }, + + { + id: 'moo_auto_btc-typh', + name: 'Typhoon', + logo: 'single-assets/BTCB.svg', + token: 'mooAutoBTCBv2', + tokenDecimals: 18, + tokenAddress: '0x0845813938515FE56730c124Ab8CA2DF58B01463', + tokenOracle: 'tokens', + tokenOracleId: 'BTCB', + earnedToken: 'TYPH', + earnedTokenDecimals: 18, + earnedTokenAddress: '0x4090e535F2e251F5F88518998B18b54d26B3b07c', + earnContractAddress: '0x1643BC20913fA2D62C521E7cE8fFeD9e1Dd87964', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'TYPH', + partnership: true, + status: 'closed', + isMooStaked: true, + periodFinish: 1618853419, + partners: [ + { + logo: 'stake/thypoon/logo.png', + background: 'stake/thypoon/background.png', + text: 'Typhoon is a decentralized, fully on-chain implemented project to enable private transactions between 2 wallets. It does this cleverly by somewhat taking on the role of proxy, but on cryptography steroids. Typhoon utilizes zkSNARK, a novel form of zero-knowledge cryptography. zkSNARK makes it possible for users to prove possession of information, without actually revealing that information. When depositing money into Typhoon, the user generates a random secret and submits a part of it (a hash) along with the assets into the smart contract. In order to then withdraw that deposit again, the user has to provide cryptographic proof that he is indeed the owner of a secret to an unspent deposit. All without revealing the secret he holds to the public blockchain, thanks to zkSNARK!', + website: 'https://app.typhoon.network/', + social: { + telegram: 'https://t.me/typhoonnetwork', + twitter: 'https://twitter.com/TyphoonCrypto', + }, + }, + ], + }, + + { + id: 'moo_bifi-biti', + name: 'BitiCity', + logo: 'single-assets/BIFI.png', + token: 'mooBIFI', + tokenDecimals: 18, + tokenAddress: '0xf7069e41C57EcC5F122093811d8c75bdB5f7c14e', + tokenOracle: 'tokens', + tokenOracleId: 'BIFI', + earnedToken: 'BITI', + earnedTokenDecimals: 18, + earnedTokenAddress: '0xA25Dab5B75aC0E0738E58E49734295baD43d73F1', + earnContractAddress: '0xa8b86b9AF7e844DA90A2e72840Ad01CCBD11EdC3', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'BITI', + partnership: true, + status: 'closed', + isMooStaked: true, + periodFinish: 1618327543, + partners: [ + { + logo: 'stake/biticity/logo.png', + background: 'stake/biticity/background.png', + text: 'Biti City is a NFT yield farm that combines the fun of gacha and leveling your NFT Bitibots to earn BITI token rewards. With the understanding that two is better than one, Bitibots are able to combine and breed newer generation Bitibots with the ability to earn BITI token (BITI) rewards via mining, sacrificing their parts in the process for the greater good. Each Bitibot’s unique set of DNA attributes determines their mining hashrate, and the overall success of Biti City. As a Bitibot master, the fate of the world now rests in your hands…', + website: 'https://www.biti.city', + social: { + telegram: 'https://t.me/biti_city', + twitter: 'https://twitter.com/bitibots', + }, + }, + ], + }, + + { + id: 'moo_belt_venus-palm', + name: 'YieldBay', + logo: 'uncategorized/BELT-VENUSBLP.png', + token: 'mooBeltVenusBLP', + tokenDecimals: 18, + tokenAddress: '0xb35Dc0b5eFd7c75590a9da55BE46d968c5804e24', + tokenOracle: 'lps', + tokenOracleId: 'belt-venus-blp', + earnedToken: 'PALM', + earnedTokenDecimals: 18, + earnedTokenAddress: '0x9768E5b2d8e761905BC81Dfc554f9437A46CdCC6', + earnContractAddress: '0xC1B4ed2861639ebFaFAeDb7eD2381052454bab43', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'PALM', + partnership: true, + status: 'closed', + isMooStaked: true, + periodFinish: 1618243760, + partners: [ + { + logo: 'stake/yieldbay/logo.png', + background: 'stake/yieldbay/background.png', + text: 'Our mission is to create the most Economically Sustainable and Accessible yield farming community on BSC by providing a simple user interface, facilitating access to DeFi, and creating a perpetual deflation token, the PALM token. YieldBay has the goal of fostering AMM and DeFi market by facilitating the participation of traditional investors in the Crypto Ecosystem. Expanding the potential market reach requires simple and smooth interfaces as well as easier connections between Fiat and Crypto markets. To increase protocol economical sustainability, we aim at increasing burning fees and defining additional deflationary strategies benefitting holders.', + website: 'https://yieldbay.finance/', + social: { + telegram: 'https://t.me/yieldbay', + twitter: 'https://twitter.com/yieldbay', + }, + }, + ], + }, + + { + id: 'moo_cake_bnb-bingo', + name: 'BingoCash', + logo: 'bnb-pairs/CAKE-BNB.svg', + token: 'mooAutoCAKE-BNB', + tokenDecimals: 18, + tokenAddress: '0x5DA77c7DBF6dBa1155CF343db06a7D79aaaad9Ee', + tokenOracle: 'lps', + tokenOracleId: 'auto-cake-bnb', + earnedToken: 'sBGO', + earnedTokenDecimals: 18, + earnedTokenAddress: '0x53F39324Fbb209693332B87aA94D5519A1a49aB0', + earnContractAddress: '0x253aABcC693aEE2180178174241857cBB08BEDD8', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'sBGO', + partnership: true, + status: 'closed', + isMooStaked: true, + periodFinish: 1618069191, + partners: [ + { + logo: 'stake/bingo/logo.png', + background: 'stake/bingo/background.png', + text: 'Bingo Cash Finance is the AlgoStable coin protocol built on the Binance Smart Chain ("BSC") for casino gaming. We are a fair launch project with no pre-sale, no investor, and no pre-mine. Ensuring that everyone is equal from the start. All AlgoStable currently available on BSC has almost no use case. Some have “games” yes but those don’t quite live up to help people release their stress. Many of them are just simple lottery or something very repetitive. On that premise, we took it upon ourselves to serve the good people of BSC with a whole lot of Casino games to quenches your thirst for entertainment.', + website: 'https://bingocash.fi/', + social: { + telegram: 'https://t.me/bingocash_official', + twitter: 'https://twitter.com/Bingocashfi', + }, + }, + ], + }, + + { + id: 'moo_auto_wbnb-thunder', + name: 'ThunderSwap', + logo: 'bnb-pairs/AUTO-BNB.png', + token: 'mooAutoAUTO-BNB', + tokenDecimals: 18, + tokenAddress: '0x6Cb6D451e7E7ca5d5F73715D6B5dfc55EfbC1f82', + tokenOracle: 'lps', + tokenOracleId: 'auto-auto-bnb', + earnedToken: 'TNDR', + earnedTokenDecimals: 18, + earnedTokenAddress: '0x7Cc46141AB1057b1928de5Ad5Ee78Bb37eFC4868', + earnContractAddress: '0x04715103e1d8A6D7a2B06737380DBd28a30Ca4Bc', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'TNDR', + partnership: true, + status: 'closed', + isMooStaked: true, + periodFinish: 1617984993, + partners: [ + { + logo: 'stake/thunder/logo.png', + background: 'stake/thunder/background.png', + text: 'ThunderSwap.Finance — The new thundering Yield Farm on BSC Network (Binance Smart Chain). We, at ThunderSwap are a professional software team with lots of love towards crypto. We always wanted to contribute to the crypto community space and show our love for crypto. What else would be a better start than using our skills to build something new and exciting in the hot new DeFi space. Our goal is to contribute to crypto awareness and worldwide crypto acceptance. ThunderSwap is going to be our starting point for this journey. We are going to start small just with Thunder yield farms and pools, but we have a lot of exciting additions that are going to come live soon. ThunderSwap is going to use Thunder Token (TNDR) as the main fuel for the platform and we have a lot of plans to take it to the top charts with our roadmap.', + website: 'https://thunderswap.finance/', + social: { + telegram: 'https://t.me/thunder_swap', + twitter: 'https://twitter.com/thunder_swap', + }, + }, + ], + }, + + { + id: 'moo_auto_cake-swirl', + name: 'Swirl Cash', + logo: 'single-assets/CAKE.svg', + token: 'mooAutoCakeFixed', + tokenDecimals: 18, + tokenAddress: '0xe0B473c0dD6D7Fea5B395c3Ce7ffd4FEF0ab4373', + tokenOracle: 'tokens', + tokenOracleId: 'Cake', + earnedToken: 'SWIRL', + earnedTokenDecimals: 18, + earnedTokenAddress: '0x52d86850bc8207b520340B7E39cDaF22561b9E56', + earnContractAddress: '0x062939d2EAe7586424180E9b4D80e442885A6E2F', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'SWIRL', + partnership: true, + status: 'closed', + isMooStaked: true, + periodFinish: 1617725489, + partners: [ + { + logo: 'stake/swirl/logo.png', + background: 'stake/swirl/background.png', + text: 'Swirl is a BSC-deployed fork of Tornado.cash, the strongest privacy protocol on the Ethereum network. It uses various cryptographic methods, including implementations of zero-knowledge(zkSnarks) proofs to achieve privacy functionality. So we’ve taken something that works, which allows 100M USD worth of tokens per day to regain their right to anonymity, customized it in Swirl for the current DeFi landscape, and brought it to Binance Smart Chain. Now, Swirl will allow you to send BSC cryptocurrency with 100% anonymity! *Swirl is a declinatory Token, which means that there is a 2% burn on transactions that get redistributed, please keep this in mind when transferring and trading this token.*', + website: 'https://swirl.cash/', + social: { + telegram: 'https://t.me/Swirl_Cash', + twitter: 'https://twitter.com/Swirl_Cash', + }, + }, + ], + }, + + { + id: 'moo_ellipsis_3pool-zefi', + name: 'ZCore Finance', + logo: 'uncategorized/eps3.png', + token: 'mooEllipsis3Pool', + tokenDecimals: 18, + tokenAddress: '0xE563c046147b4dF98bfCD3d00Dc54511F0c3b752', + tokenOracle: 'lps', + tokenOracleId: 'ellipsis-3eps', + earnedToken: 'ZEFI', + earnedTokenDecimals: 18, + earnedTokenAddress: '0x0288D3E353fE2299F11eA2c2e1696b4A648eCC07', + earnContractAddress: '0xc7ccd3520bEa91a87ecf39Ed39d9BD59946ED2b5', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'ZEFI', + partnership: true, + status: 'closed', + isMooStaked: true, + periodFinish: 1617555581, + partners: [ + { + logo: 'stake/zcore/logo.png', + background: 'stake/zcore/background.png', + text: 'ZCore Finance is a decentralized exchange running on Binance Smart Chain and Pancake swap exchange, with features that let you earn and win tokens. What we are trying to do is create a perpetual deflation token, the ZEFI, that allows a constant price pump with a sufficient burn mechanism. We are not trying to replace the swap & exchange but to add value into the system and create a suitable and sustainable environment for people to yield farm with high APR.', + website: 'https://finance.zcore.network/', + social: { + telegram: 'https://t.me/ZCoreMiners', + twitter: 'https://twitter.com/ZCoreCrypto', + }, + }, + ], + }, + + { + id: 'moo_1inch-hps', + name: 'Billionhappiness', + logo: 'single-assets/INCH.png', + token: 'moo1INCH1INCH', + tokenDecimals: 18, + tokenAddress: '0xBa53AF4C2f1649F82e8070FB306DDBF2771A1950', + tokenOracle: 'tokens', + tokenOracleId: '1INCH', + earnedToken: 'HPS', + earnedTokenDecimals: 18, + earnedTokenAddress: '0xeDa21B525Ac789EaB1a08ef2404dd8505FfB973D', + earnContractAddress: '0x9ae4496b063f5715561Cbe8f1d389a3FE4720258', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'HPS', + partnership: true, + status: 'closed', + isMooStaked: true, + periodFinish: 1617643560, + partners: [ + { + logo: 'stake/billionhappiness/logo.png', + background: 'stake/billionhappiness/background.png', + text: 'BillionHappiness is a blockchain technology-based apparel company dedicated to providing happiness through a transparent record of information on its quality products. Our goal is to provide authenticity using blockchain technology to eliminate counterfeit items on the market. Billion Happiness has a token called BHC.', + website: 'https://billionhappiness.finance', + social: { + telegram: 'https://t.me/BillionHappinessOfficial', + twitter: 'https://twitter.com/BHC_Happiness', + }, + }, + ], + }, + + { + id: 'moo_auto_wbnb-naut', + name: 'Astronaut', + logo: 'single-assets/BNB.png', + token: 'mooAutoWbnbFixed', + tokenDecimals: 18, + tokenAddress: '0x5B06aA1ebd2e15bC6001076355E5B4C39Cbc83F3', + tokenOracle: 'tokens', + tokenOracleId: 'WBNB', + earnedToken: 'NAUT', + earnedTokenDecimals: 8, + earnedTokenAddress: '0x05B339B0A346bF01f851ddE47a5d485c34FE220c', + earnContractAddress: '0x47F7CbE34aD6f857662759CDAECC48152237d135', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'NAUT', + partnership: true, + status: 'closed', + isMooStaked: true, + periodFinish: 1617388318, + partners: [ + { + logo: 'stake/astronaut/logo.png', + background: 'stake/astronaut/background.png', + text: 'Astronaut is a protocol built for decentralizing the way in which new projects and ideas coming to the BSC ecosystem raise capital. With Astronaut, decentralized projects will be able to raise and exchange capital cheap and fast. Users will be able to participate in a secure and interoperable environment on the Binance Smart Chain. The deployment of the protocol will take place in III phases. During Phase I Astronaut is a deflationary token that burns and redistributes %s to its holders. During Phase II Astronaut will release its evolved platform and launchpad to provide secure, fair, and affordable launches to both projects and investors alike. Phase III will be the real game-changer with a bridge and a full DeFi ecosystem. Astronaut takes their initiative from the bottom up slowly increasing value to the project and holders of the native NAUT token. *Astronaut is an Automatic Yield Token, which means that there is a 4% burn on transactions that get redistributed, please keep this in mind when transferring and trading this token.*', + website: 'https://astronaut.to/', + social: { + telegram: 'https://t.me/joinchat/pJTzEu-mhnAzMjMx', + twitter: 'https://twitter.com/astronauttoken', + }, + }, + ], + }, + + { + id: 'moo_cake_bnb-space', + name: 'Farm.Space', + logo: 'bnb-pairs/CAKE-BNB.svg', + token: 'mooAutoCAKE-BNB', + tokenDecimals: 18, + tokenAddress: '0x5DA77c7DBF6dBa1155CF343db06a7D79aaaad9Ee', + tokenOracle: 'lps', + tokenOracleId: 'auto-cake-bnb', + earnedToken: 'SPACE', + earnedTokenDecimals: 18, + earnedTokenAddress: '0x0abd3E3502c15ec252f90F64341cbA74a24fba06', + earnContractAddress: '0x680dDCDAB13735d11a09d3c6d60867B2C75861bE', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'SPACE', + partnership: true, + status: 'closed', + isMooStaked: true, + periodFinish: 1617214423, + partners: [ + { + logo: 'stake/space/logo.png', + background: 'stake/space/background.png', + text: 'Farm your way into DeFi space! Bringing dual farming rewards through margin trading and lending, to yield farming, on the Binance Smart Chain.', + website: 'https://farm.space/', + social: { + telegram: 'https://t.me/farmdotspace', + twitter: 'https://twitter.com/farmdotspace', + }, + }, + ], + }, + { + id: 'moo_bifi_wbnb-nuts', + name: 'Squirrel Finance', + logo: 'bnb-pairs/BIFI-BNB.svg', + token: 'mooPancakeBIFI-BNB', + tokenDecimals: 18, + tokenAddress: '0x3B5332A476AbCdb80Cde6645e9e5563435e97772', + tokenOracle: 'lps', + tokenOracleId: 'cake-bifi-bnb', + earnedToken: 'NUTS', + earnedTokenDecimals: 18, + earnedTokenAddress: '0x8893D5fA71389673C5c4b9b3cb4EE1ba71207556', + earnContractAddress: '0x02e2B4212b8F5610E2ab548cB680cb58E61056F6', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'NUTS', + partnership: true, + status: 'closed', + isMooStaked: true, + periodFinish: 1616434156, + partners: [ + { + logo: 'stake/squirrel/logo.png', + background: 'stake/squirrel/background.png', + text: 'In recent months the TVL (total value locked) inside BSC DeFi has skyrocketed due to an endless variety of token-incentivized adoption boosters known as Yield Farming. The problem introduced is some of these are experimental or unaudited projects, which can leave unsavvy farmers exposed if something were to go wrong. Because of the crazy APR % some of these can offer in the first few days, many users completely neglect to account for the possible risks introduced (Yolo-farming). Squirrel aims to resolve this problem by developing a trusted ecosystem to empower, secure & simplify DeFi for end users.', + website: 'https://squirrel.finance/', + social: { + telegram: 'https://t.me/SquirrelDeFi', + twitter: 'https://twitter.com/SquirrelDeFi', + }, + }, + ], + }, + { + id: 'moo_venus_eth-ape', + name: 'MEMEFARM', + logo: 'stake/memefarm/ape.png', + token: 'mooVenusETH', + tokenDecimals: 18, + tokenAddress: '0xA9936272065e6DDAc9D2453C9a2712B581e9aE1B', + tokenOracle: 'tokens', + tokenOracleId: 'ETH', + earnedToken: 'APE', + earnedTokenDecimals: 18, + earnedTokenAddress: '0xa9eA4b786ee5b7A733c035564Bfd9341A4c9FC1e', + earnContractAddress: '0xEd1B64D539b945Fb291E5487F527D19B7748321e', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'APE', + partnership: true, + status: 'closed', + isMooStaked: true, + periodFinish: 1616260324, + partners: [ + { + logo: 'stake/memefarm/logo.png', + background: 'stake/memefarm/background.png', + text: 'Meme Farm is an exciting protocol that combines DeFi yield-farming and rare non-fungible tokens (NFTs). You’re probably familiar with various food farming coin clones, most of which have a lifespan of 48 hours or less. While these tokens can make a small fortune for early adopters, most of them die out quickly because they lack actual utility. Most are simply governance tokens that get dumped by big farmers because they aren’t interested in participating in creating and voting on proposals. So what’s our solution for creating a high-yield farming token that can last in the long term? It’s to give the tokens actual utility and value (and thus, buy pressure) by combining them with one of the hottest cryptocurrency industries: NFTs.\n', + website: 'https://memefarm.io/', + social: { + telegram: 'https://t.me/APEcoin_Chat', + twitter: 'https://twitter.com/Go_MemeFarm', + }, + }, + ], + }, + { + id: 'moo_belt_venus-slime', + name: 'Slime Finance', + logo: 'uncategorized/BELT-VENUSBLP.png', + token: 'mooBeltVenusBLP', + tokenDecimals: 18, + tokenAddress: '0xb35Dc0b5eFd7c75590a9da55BE46d968c5804e24', + tokenOracle: 'lps', + tokenOracleId: 'belt-venus-blp', + earnedToken: 'SLIME', + earnedTokenDecimals: 18, + earnedTokenAddress: '0x4fCfA6cC8914ab455B5b33Df916d90BFe70b6AB1', + earnContractAddress: '0xba4Ee74E45De614bd8c2DFEEf16a4c13922C5659', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'SLIME', + partnership: true, + status: 'closed', + isMooStaked: true, + periodFinish: 1616087152, + partners: [ + { + logo: 'stake/slimefinance/logo.png', + background: 'stake/slimefinance/background.png', + text: 'Slime Finance is a new yield farming project on the Binance Smart Chain. We yearn to offer competitive yield rates for our investors by delivering innovative updates in a timely manner. What differentiates us from other yield services is how we interact with our community. We strive to listen to all suggestions given on our social media and let the community vote for features. We are a team of software developers with bold ideas, working rigorously, passionately, and tirelessly on the Slime Finance project. We promise to deliver on the mid to long term a true utility to our Slime Token and fight against traditional yield farm inflation.', + website: 'https://slime.finance/', + social: { + telegram: 'https://t.me/slimefinance', + twitter: 'https://twitter.com/slimefinance', + }, + }, + ], + }, + { + id: 'moo_venus_eth-brew', + name: 'CafeSwap', + logo: 'single-assets/ETH.svg', + token: 'mooVenusETH', + tokenDecimals: 18, + tokenAddress: '0xA9936272065e6DDAc9D2453C9a2712B581e9aE1B', + tokenOracle: 'tokens', + tokenOracleId: 'ETH', + earnedToken: 'BREW', + earnedTokenDecimals: 18, + earnedTokenAddress: '0x790Be81C3cA0e53974bE2688cDb954732C9862e1', + earnContractAddress: '0xC7e3795259e9f74F4F2265Bf28680a70b41B4334', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'BREW', + partnership: true, + status: 'closed', + isMooStaked: true, + periodFinish: 1615228996, + partners: [ + { + logo: 'stake/cafeswap/cafeswap.png', + background: 'stake/cafeswap/background.png', + text: 'CafeSwap is a yield farming and staking platform on BSC Chain, We have chosen BSC because of its low tnx fees and faster speed. We have built this project to provide the best experience with farming while regulating the supply, we believe in partnerships hence we aim to bring all BSC DeFi ecosystems in one place to have a friendly ecosystem for all of us.', + website: 'https://cafeswap.finance', + social: { + telegram: 'https://t.me/CafeSwap', + twitter: 'https://twitter.com/cafeswapfinance', + }, + }, + ], + }, + { + id: 'moo_venus_btc-ramen', + name: 'RamenSwap', + logo: 'single-assets/BTCB.svg', + token: 'mooVenusBTC', + tokenDecimals: 18, + tokenAddress: '0x7255Ae13BA4484eD33fB48c4b833000dC12888B4', + tokenOracle: 'tokens', + tokenOracleId: 'BTCB', + earnedToken: 'RAMEN', + earnedTokenDecimals: 18, + earnedTokenAddress: '0x4F47A0d15c1E53F3d94c069C7D16977c29F9CB6B', + earnContractAddress: '0x07613c90c6f4F4910e53A1A6fF5dAc352C6a16e4', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'Ramen', + partnership: true, + status: 'closed', + isMooStaked: true, + periodFinish: 1615229062, + partners: [ + { + logo: 'stake/ramenswap/ramenswap.png', + background: 'stake/ramenswap/background.png', + text: 'The Most Delicious Yield Farm AMM on Binance Smart Chain. RamenSwap Finance is a community driven Yield Farming, DeFi Aggregator and DEX Aggregator on Binance Smart Chain. You can earn RAMEN by staking it on the pool and farming it by providing the liquidity to earn more delicious RAMEN. You can also maximize your return by compounding your token in the vault and connecting several DEX to find the most efficient swapping routes across all platforms that will be released in Q2 to support BSC space.\n', + website: 'https://ramenswap.finance/', + social: { + telegram: 'https://t.me/ramenswap', + twitter: 'https://twitter.com/ramenswap', + }, + }, + ], + }, + { + id: 'moo_auto_cake-salt', + name: 'SaltSwap', + logo: 'single-assets/CAKE.svg', + token: 'mooAutoCAKEfixed', + tokenDecimals: 18, + tokenAddress: '0xe0B473c0dD6D7Fea5B395c3Ce7ffd4FEF0ab4373', + tokenOracle: 'tokens', + tokenOracleId: 'Cake', + earnedToken: 'SALT', + earnedTokenDecimals: 18, + earnedTokenAddress: '0x2849b1aE7E04A3D9Bc288673A92477CF63F28aF4', + earnContractAddress: '0xDda39b0a11de6e0Ebce995D4A065960532EB332E', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'SALT', + partnership: true, + status: 'closed', + isMooStaked: true, + periodFinish: 1615229128, + partners: [ + { + logo: 'stake/saltswap/saltswap.png', + background: 'stake/saltswap/background.png', + text: 'We are a team of experienced software developers and product managers from top tier tech companies (aka the salts) that want to contribute to the BSC DeFi yield farm movement and take it to the next level. Even though we are starting off with a salty yield farm, we will quickly move on to bigger and greater things. We have big plans for the SALT token.\n', + website: 'https://saltswap.finance/', + social: { + telegram: 'https://t.me/saltswap', + twitter: 'https://twitter.com/saltswap', + }, + }, + ], + }, + { + id: 'moo_venus_ada-crow', + name: 'CrowFinance', + logo: 'single-assets/ADA.svg', + token: 'mooVenusADA', + tokenDecimals: 18, + tokenAddress: '0x53c0CE2EBdA0c2A39327bE0B58a3c28A8Dcde420', + tokenOracle: 'tokens', + tokenOracleId: 'ADA', + earnedToken: 'CROW', + earnedTokenDecimals: 18, + earnedTokenAddress: '0xcc2E12a9b5b75360c6FBf23B584c275D52cDdb0E', + earnContractAddress: '0x7fcfD0ceb5e9bD1A8b910b52983fe9c8aB656E20', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'CROW', + partnership: true, + status: 'closed', + isMooStaked: true, + periodFinish: 1615165746, + partners: [ + { + logo: 'stake/crowfinance/crowfinance.png', + background: 'stake/crowfinance/background.png', + text: 'CrowFinance an Evolution Yield Farming on Binance Smart Chain with daytime and nighttime burn mechanism system fork from fry and add some function from thug + jetfuel', + website: 'https://www.crowfinance.net/', + social: { + telegram: 'https://t.me/CrowFinance', + twitter: 'https://twitter.com/crowfinance', + }, + }, + ], + }, + { + id: 'moo_auto_wbnb-banana', + name: 'ApeSwap', + logo: 'single-assets/WBNB.svg', + token: 'mooWBNB', + tokenDecimals: 18, + tokenAddress: '0x5B06aA1ebd2e15bC6001076355E5B4C39Cbc83F3', + tokenOracle: 'tokens', + tokenOracleId: 'WBNB', + earnedToken: 'BANANA', + earnedTokenDecimals: 18, + earnedTokenAddress: '0x603c7f932ED1fc6575303D8Fb018fDCBb0f39a95', + earnContractAddress: '0xe4267bFDE62B79d27c8BeD68dB8C114ccBbEE545', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'BANANA', + partnership: true, + status: 'closed', + isMooStaked: true, + periodFinish: 1615489938, + partners: [ + { + logo: 'stake/apeswap/logo.png', + background: 'stake/apeswap/background.png', + text: 'ApeSwap is an Automated Market Maker, Yield Farming, and Staking platform on Binance Smart Chain (forked from PancakeSwap). ApeSwap was built by DeFi Apes, for DeFi Apes. We have a dedicated team of experienced monkeys, who have been in the crypto space for years. $BANANA is the native currency of our platform. Stake, pool, and earn $BANANA all on ApeSwap.', + website: 'https://apeswap.finance/', + social: { + telegram: 'https://t.me/ape_swap', + twitter: 'https://twitter.com/ape_swap', + }, + }, + ], + }, + { + id: 'moo_auto_beth-soups', + name: 'Soup Protocol', + logo: 'uncategorized/BETH-ETH.svg', + token: 'mooAutoBETH-ETH', + tokenDecimals: 18, + tokenAddress: '0xF3C1EB01E40c47fd32D0397e56569809aae0e9c7', + tokenOracle: 'lps', + tokenOracleId: 'auto-beth-eth', + earnedToken: 'SOUPS', + earnedTokenDecimals: 18, + earnedTokenAddress: '0x69F27E70E820197A6e495219D9aC34C8C6dA7EeE', + earnContractAddress: '0x2526Bc61506665494E39cacCaF8c76A1f928D838', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'SOUPS', + partnership: true, + status: 'closed', + isMooStaked: true, + periodFinish: 1615489989, + partners: [ + { + logo: 'stake/soup/logo.png', + background: 'stake/soup/background.png', + text: "Soup Protocol is an experimental project that enables the generation of SOUP tokens that runs on Binance Smart Chain. Inspired by the likes of Basis Cash & bDollar, SOUP is an algorithmic token that is designed to pegged its value to the Binance (BNB) token instead of a stablecoin. The protocol is designed to expand and contract the supply of SOUP tokens similar to the way central banks trade fiscal debt to stabilise purchasing power, without any rebases or collateral risk. The SOUP token can be used to buy and sell tokens on Pancake Swap and also can be used to interact with Soup Protocol's upcoming games such as Soup3D.", + website: 'https://soups.finance/', + social: { + telegram: 'https://t.me/soup_community', + twitter: 'https://twitter.com/soupingGood', + }, + }, + ], + }, +]; diff --git a/src/features/configure/stake/celo_stake.js b/src/features/configure/stake/celo_stake.js new file mode 100644 index 000000000..34de0e0d9 --- /dev/null +++ b/src/features/configure/stake/celo_stake.js @@ -0,0 +1,37 @@ +import { govPoolABI } from '../abi'; + +export const celoStakePools = [ + { + id: 'bifi-celo', + name: 'BIFI', + logo: 'single-assets/BIFI.png', + token: 'BIFI', + tokenDecimals: 18, + tokenAddress: '0x639A647fbe20b6c8ac19E48E2de44ea792c62c5C', + tokenOracle: 'tokens', + tokenOracleId: 'BIFI', + earnedToken: 'CELO', + earnedTokenDecimals: 18, + earnedTokenAddress: '0x471EcE3750Da237f93B8E339c536989b8978a438', + earnContractAddress: '0x2D250016E3621CfC50A0ff7e5f6E34bbC6bfE50E', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'CELO', + partnership: false, + status: 'active', + fixedStatus: true, + partners: [ + { + logo: 'stake/beefy/beefyfinance.png', + logoNight: 'stake/beefy/beefyfinance_night.png', + background: 'stake/beefy/background.png', + text: "Beefy Finance is The Multi-Chain Yield Optimizer across many sidechains, enabling users to earn autocompounded yield on their crypto. Did you know also that you can own a piece of Beefy itself? Beefy runs on its governance token, BIFI. The token has a set supply of 80,000 across all chains; no more may be minted, ever! As a holder of BIFI you may create and vote on important DAO proposals, and you become dividend-eligible to earn a share of every compounding harvest on Beefy vaults, hour by hour. Here on Celo, you just need to stake BIFI in this reward pool, or in the autocompounding BIFI Maxi vault on the main page. For this pool, CELO dividends are gathered and sent proportionally to each staker. Stake here, return later to claim the CELO you've earned.", + website: 'https://app.beefy.finance', + social: { + telegram: 'http://t.me/beefyfinance', + twitter: 'https://twitter.com/beefyfinance', + }, + }, + ], + }, +]; diff --git a/src/features/configure/stake/cronos_stake.js b/src/features/configure/stake/cronos_stake.js new file mode 100644 index 000000000..48173614e --- /dev/null +++ b/src/features/configure/stake/cronos_stake.js @@ -0,0 +1,105 @@ +import { govPoolABI } from '../abi'; + +export const cronosStakePools = [ + { + id: 'bifi-cronos', + name: 'BIFI', + logo: 'single-assets/BIFI.png', + token: 'BIFI', + tokenDecimals: 18, + tokenAddress: '0xe6801928061CDbE32AC5AD0634427E140EFd05F9', + tokenOracle: 'tokens', + tokenOracleId: 'BIFI', + earnedToken: 'CRO', + earnedTokenDecimals: 18, + earnedTokenAddress: '0x5C7F8A570d578ED84E63fdFA7b1eE72dEae1AE23', + earnContractAddress: '0x107Dbf9c9C0EF2Df114159e5C7DC2baf7C444cFF', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'WCRO', + partnership: false, + status: 'active', + fixedStatus: true, + partners: [ + { + logo: 'stake/beefy/beefyfinance.png', + logoNight: 'stake/beefy/beefyfinance_night.png', + background: 'stake/beefy/background.png', + text: "Beefy Finance is The Multi-Chain Yield Optimizer across many sidechains, enabling users to earn autocompounded yield on their crypto. Did you know also that you can own a piece of Beefy itself? Beefy runs on its governance token, BIFI. The token has a set supply of 80,000 across all chains; no more may be minted, ever! As a holder of BIFI you may create and vote on important DAO proposals, and you become dividend-eligible to earn a share of every compounding harvest on Beefy vaults, hour by hour. Here on Cronos, you just need to stake BIFI in this reward pool, or in the autocompounding BIFI Maxi vault on the main page. For this pool, CRO dividends are gathered and sent proportionally to each staker. Stake here, return later to claim the CRO you've earned.", + website: 'https://app.beefy.finance', + social: { + telegram: 'http://t.me/beefyfinance', + twitter: 'https://twitter.com/beefyfinance', + }, + }, + ], + }, + + { + id: 'moo_vvs-vvs-cro-darkcrypto', + name: 'DarkCrypto', + assets: ['VVS', 'CRO'], + token: 'mooVvsVVS-CRO', + tokenDecimals: 18, + tokenAddress: '0x2fbB1caF6271A14b13F3432f3aB2D6aF102560fA', + tokenOracle: 'lps', + tokenOracleId: 'vvs-vvs-cro', + earnedToken: 'SKY', + earnedTokenDecimals: 18, + earnedTokenAddress: '0x9D3BBb0e988D9Fb2d55d07Fe471Be2266AD9c81c', + earnContractAddress: '0xE06575Cfd4a631e8C0Cd9FBDd8d77AB04CFfA52C', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'SKY', + partnership: true, + status: 'active', + isMooStaked: true, + periodFinish: 1646305117, + partners: [ + { + logo: 'stake/dark/logo.png', + background: 'stake/dark/bg.png', + text: 'DarkCrypto - Algorithms Token Pegged With CRO on CRONOS chain. $DARK will be an on-demand token for DarkVerse - Universe of GameFi and metaverse.', + website: 'https://www.darkcrypto.finance/', + social: { + telegram: 'https://t.me/darkcryptofi', + twitter: 'https://twitter.com/DarkCryptoFi', + }, + }, + ], + }, + + { + id: 'moo_vvs-cro-btc-liquidus', + name: 'Liquidus', + assets: ['CRO', 'WBTC'], + token: 'mooVvsCRO-BTC', + tokenDecimals: 18, + tokenAddress: '0x25DE69dA4469A96974FaE79d0C41366A63317FDC', + tokenOracle: 'lps', + tokenOracleId: 'vvs-cro-btc', + earnedToken: 'LIQ', + earnedTokenDecimals: 18, + earnedTokenAddress: '0xABd380327Fe66724FFDa91A87c772FB8D00bE488', + earnContractAddress: '0xF424488CD9213b6Fd83F63C2BdCA8B0492b2a9a5', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'LIQ', + partnership: true, + status: 'active', + isMooStaked: true, + periodFinish: 1641545215, + partners: [ + { + logo: 'stake/liquidus/logo.png', + background: 'stake/liquidus/bg.png', + text: 'Liquidus is a practical tool that will allow you to easily stake your crypto assets on leading DeFi platforms. We’ll bring the rapidly expanding Decentralized Finance (DeFi) ecosystem to the masses, breaking complicated processes down through easy-to-use, simplistic interfaces. We’re here to change how people think about DeFi and our much-anticipated web and mobile application is planned for launch in Q1 of 2022.', + website: 'https://farm.liquidus.finance/', + social: { + telegram: 'https://t.me/liquidusfinance', + twitter: 'https://twitter.com/LiquidusFinance', + }, + }, + ], + }, +]; diff --git a/src/features/configure/stake/emerald_stake.js b/src/features/configure/stake/emerald_stake.js new file mode 100644 index 000000000..a1e8daae0 --- /dev/null +++ b/src/features/configure/stake/emerald_stake.js @@ -0,0 +1,128 @@ +import { govPoolABI } from '../abi'; + +export const emeraldStakePools = [ + { + id: 'moo_valley-usdt-vs-valleyswap', + name: 'ValleySwap', + assets: ['VS', 'USDT'], + token: 'mooValleyUSDT-VS', + tokenDecimals: 18, + tokenAddress: '0x92Ac3C4D9DACb5D0C1b580FaC5402a237A170f7b', + tokenOracle: 'lps', + tokenOracleId: 'valley-usdt-vs', + earnedToken: 'VS', + earnedTokenDecimals: 18, + earnedTokenAddress: '0xBC033203796CC2C8C543a5aAe93a9a643320433D', + earnContractAddress: '0x405EE7F4f067604b787346bC22ACb66b06b15A4B', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'VS', + partnership: true, + status: 'active', + isMooStaked: true, + periodFinish: 1656227547, + partners: [ + { + text: 'ValleySwap is a decentralized exchange on the Oasis Emerald paratime that includes features like liquidity farming, swap and ICO. Valleyswap follows a non-custodial, peer-to-peer, automated-market-maker model. We aim to provide fast, safe and cheap service to swap tokens within the Oasis emerald paratime. We aim to become the best launchpad on Oasis emerald.', + website: 'https://valleyswap.com/', + social: { + telegram: 'https://t.me/valleyswap_chat', + twitter: 'https://twitter.com/ValleySwap', + }, + }, + ], + }, + { + id: 'moo_valley-usdt-usdc-valleyswap', + name: 'ValleySwap', + assets: ['USDC', 'USDT'], + token: 'mooValleyUSDT-USDC', + tokenDecimals: 18, + tokenAddress: '0xa7D151e2bCd83750e2596e794248cc400F018a23', + tokenOracle: 'lps', + tokenOracleId: 'valley-usdt-usdc', + earnedToken: 'VS', + earnedTokenDecimals: 18, + earnedTokenAddress: '0xBC033203796CC2C8C543a5aAe93a9a643320433D', + earnContractAddress: '0xc3a4fdcba79DB04b4C3e352b1C467B3Ba909D84A', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'VS', + partnership: true, + status: 'active', + isMooStaked: true, + periodFinish: 1656227640, + partners: [ + { + text: 'ValleySwap is a decentralized exchange on the Oasis Emerald paratime that includes features like liquidity farming, swap and ICO. Valleyswap follows a non-custodial, peer-to-peer, automated-market-maker model. We aim to provide fast, safe and cheap service to swap tokens within the Oasis emerald paratime. We aim to become the best launchpad on Oasis emerald.', + website: 'https://valleyswap.com/', + social: { + telegram: 'https://t.me/valleyswap_chat', + twitter: 'https://twitter.com/ValleySwap', + }, + }, + ], + }, + { + id: 'moo_valley-btc-usdt-valleyswap', + name: 'ValleySwap', + assets: ['BTC', 'USDT'], + token: 'mooValleyBTC-USDT', + tokenDecimals: 18, + tokenAddress: '0x74d6b1D419556d8A3E3038A9c8096DA0cA4beF24', + tokenOracle: 'lps', + tokenOracleId: 'valley-btc-usdt', + earnedToken: 'VS', + earnedTokenDecimals: 18, + earnedTokenAddress: '0xBC033203796CC2C8C543a5aAe93a9a643320433D', + earnContractAddress: '0x3C9C884eFAB85c44D675039de227b3Dd275c360e', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'VS', + partnership: true, + status: 'active', + isMooStaked: true, + periodFinish: 1656227663, + partners: [ + { + text: 'ValleySwap is a decentralized exchange on the Oasis Emerald paratime that includes features like liquidity farming, swap and ICO. Valleyswap follows a non-custodial, peer-to-peer, automated-market-maker model. We aim to provide fast, safe and cheap service to swap tokens within the Oasis emerald paratime. We aim to become the best launchpad on Oasis emerald.', + website: 'https://valleyswap.com/', + social: { + telegram: 'https://t.me/valleyswap_chat', + twitter: 'https://twitter.com/ValleySwap', + }, + }, + ], + }, + { + id: 'moo_valley-usdt-eth-valleyswap', + name: 'ValleySwap', + assets: ['ETH', 'USDT'], + token: 'mooValleyUSDT-ETH', + tokenDecimals: 18, + tokenAddress: '0x3cf4fe3f469b0710E8a42e44B64c85DFc300f22A', + tokenOracle: 'lps', + tokenOracleId: 'valley-usdt-eth', + earnedToken: 'VS', + earnedTokenDecimals: 18, + earnedTokenAddress: '0xBC033203796CC2C8C543a5aAe93a9a643320433D', + earnContractAddress: '0x3f385082Ee3dFf58ca0a6a7fe44Ea0B5d6b4168E', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'VS', + partnership: true, + status: 'active', + isMooStaked: true, + periodFinish: 1656227680, + partners: [ + { + text: 'ValleySwap is a decentralized exchange on the Oasis Emerald paratime that includes features like liquidity farming, swap and ICO. Valleyswap follows a non-custodial, peer-to-peer, automated-market-maker model. We aim to provide fast, safe and cheap service to swap tokens within the Oasis emerald paratime. We aim to become the best launchpad on Oasis emerald.', + website: 'https://valleyswap.com/', + social: { + telegram: 'https://t.me/valleyswap_chat', + twitter: 'https://twitter.com/ValleySwap', + }, + }, + ], + }, +]; diff --git a/src/features/configure/stake/fantom_stake.js b/src/features/configure/stake/fantom_stake.js new file mode 100644 index 000000000..bb6129f53 --- /dev/null +++ b/src/features/configure/stake/fantom_stake.js @@ -0,0 +1,644 @@ +import { govPoolABI } from '../abi'; + +export const fantomStakePools = [ + { + id: 'bifi-ftm', + name: 'BIFI', + logo: 'single-assets/BIFI.png', + token: 'BIFI', + tokenDecimals: 18, + tokenAddress: '0xd6070ae98b8069de6B494332d1A1a81B6179D960', + tokenOracle: 'tokens', + tokenOracleId: 'BIFI', + earnedToken: 'FTM', + earnedTokenDecimals: 18, + earnedTokenAddress: '0x21be370D5312f44cB42ce377BC9b8a0cEF1A4C83', + earnContractAddress: '0x7fB900C14c9889A559C777D016a885995cE759Ee', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'FTM', + partnership: false, + status: 'active', + fixedStatus: true, + partners: [ + { + logo: 'stake/beefy/beefyfinance.png', + background: 'stake/beefy/background.png', + text: "Beefy Finance is The Multi-Chain Yield Optimizer across many blockchains, enabling users to earn autocompounded yield on their crypto. Did you know also that you can own a piece of Beefy itself? Beefy runs on its governance token, BIFI. The token has a set supply of 80,000 across all chains; no more may be minted, ever! As a holder of BIFI you may create and vote on important DAO proposals, and you become dividend-eligible to earn a share of every compounding harvest on Beefy vaults, hour by hour. Here on Fantom, you just need to stake BIFI in this reward pool, or in the autocompounding BIFI Maxi vault on the main page. For this pool, FTM dividends are gathered and sent proportionally to each staker. Stake here, return later to claim the FTM you've earned.", + website: 'https://app.beefy.finance', + social: { + telegram: 'http://t.me/beefyfinance', + twitter: 'https://twitter.com/beefyfinance', + }, + }, + ], + }, + + { + id: 'moo_beFTM', + name: 'Beefy', + logo: 'single-assets/BIFI.png', + token: 'beFTM', + tokenDecimals: 18, + tokenAddress: '0x7381eD41F6dE418DdE5e84B55590422a57917886', + tokenOracle: 'tokens', + tokenOracleId: 'beFTM', + earnedToken: 'FTM', + earnedTokenDecimals: 18, + earnedTokenAddress: '0x21be370D5312f44cB42ce377BC9b8a0cEF1A4C83', + earnContractAddress: '0xE00D25938671525C2542A689e42D1cfA56De5888', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'FTM', + partnership: false, + status: 'active', + fixedStatus: true, + partners: [ + { + logo: 'stake/beefy/beefyfinance.png', + background: 'stake/beefy/background.png', + text: 'beFTM simply means Beefy Escrowed Fantom. The token is pegged to FTM and can be staked on the Beefy platform and farms on major DEXs. beFTM gives stakers access to maximized validator rewards that typically aren’t available to the individual investor without locking FTM for 1 year.', + website: 'https://app.beefy.finance', + social: { + telegram: 'http://t.me/beefyfinance', + twitter: 'https://twitter.com/beefyfinance', + }, + }, + ], + }, + + { + id: 'moo_curve-ftm-geist-midas', + name: 'Midas', + logo: 'uncategorized/3CRV.png', + token: 'mooCurveG3CRV', + tokenDecimals: 18, + tokenAddress: '0xf710D90A1Bd702dAEa619eEbbe876e7085c2A1df', + tokenOracle: 'lps', + tokenOracleId: 'curve-ftm-geist', + earnedToken: 'MIDAS', + earnedTokenDecimals: 18, + earnedTokenAddress: '0xb37528DA6b4D378305d000a66Ad91bd88E626761', + earnContractAddress: '0x541163b90Bc31CE17E813Ee4Eb0b91296C580118', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'MIDAS', + partnership: true, + status: 'active', + isMooStaked: true, + periodFinish: 1654947105, + partners: [ + { + text: 'A custodial crypto-investment platform for staking core crypto assets and DeFi markets. All funds are managed automatically through the non-custodial wallet infrastructure on Fireblocks for hefty security. Advanced platform features such as MIDAS BOOST, allowing users to gain additional exposure via $MIDAS token.', + website: 'https://midas.investments/', + social: { + telegram: 'https://t.co/9VgNoIRTDb', + twitter: 'https://twitter.com/Midas_platform', + }, + }, + ], + }, + + { + id: 'moo_boo-wftm-tor-hector', + name: 'Hector (TOR)', + assets: ['TOR', 'FTM'], + token: 'mooSpookyTOR-FTM', + tokenDecimals: 18, + tokenAddress: '0xf723aE5478B1F03cA88C204F1ae5498d3576B78F', + tokenOracle: 'lps', + tokenOracleId: 'boo-wftm-tor', + earnedToken: 'HEC', + earnedTokenDecimals: 9, + earnedTokenAddress: '0x5C4FDfc5233f935f20D2aDbA572F770c2E377Ab0', + earnContractAddress: '0xF7077ad75d6f027fb1DeAF7fE88eA5819044F31C', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'HECTOR', + partnership: true, + status: 'active', + isMooStaked: true, + periodFinish: 1653471227, + partners: [ + { + text: 'HEC and TOR make up the foundations of the HECTOR Ecosystem. Over the coming months and years, TOR will expand to be one of the only truly decentralized and algorithmic stablecoins in the market. This will allow for significant growth of the HECTOR Ecosystem and bring value and utility to users everywhere. Over time, TOR will expand to be usable in a wide range of markets and use cases. To create adoption, partnership must be a focus. We aim to create strong, long-lasting partnerships to aid the adoption of TOR.', + website: 'https://app.hector.finance/#/farming', + social: { + telegram: 'https://t.me/hectorDAO', + twitter: 'https://twitter.com/HectorDAO_HEC', + }, + }, + ], + }, + + { + id: 'moo_beFTM-hector', + name: 'Hector (TOR)', + logo: 'single-assets/beFTM.svg', + token: 'moobeFTM', + tokenDecimals: 18, + tokenAddress: '0x185647c55633A5706aAA3278132537565c925078', + tokenOracle: 'tokens', + tokenOracleId: 'beFTM', + earnedToken: 'TOR', + earnedTokenDecimals: 18, + earnedTokenAddress: '0x74E23dF9110Aa9eA0b6ff2fAEE01e740CA1c642e', + earnContractAddress: '0x9A18B566355d394D67693c4C2d269c524c7Eb182', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'TOR', + partnership: true, + status: 'active', + isMooStaked: true, + periodFinish: 1653217070, + partners: [ + { + text: 'HEC and TOR make up the foundations of the HECTOR Ecosystem. Over the coming months and years, TOR will expand to be one of the only truly decentralized and algorithmic stablecoins in the market. This will allow for significant growth of the HECTOR Ecosystem and bring value and utility to users everywhere. Over time, TOR will expand to be usable in a wide range of markets and use cases. To create adoption, partnership must be a focus. We aim to create strong, long-lasting partnerships to aid the adoption of TOR.', + website: 'https://app.hector.finance/#/farming', + social: { + telegram: 'https://t.me/hectorDAO', + twitter: 'https://twitter.com/HectorDAO_HEC', + }, + }, + ], + }, + + { + id: 'moo_hector-tor-crv-hector', + name: 'Hector (TOR)', + logo: 'fantom/TOR-2CRV.svg', + token: 'mooHectorTOR-2CRV', + tokenDecimals: 18, + tokenAddress: '0x8B92DE822b121761a3caF894627a09a9f87864C0', + tokenOracle: 'lps', + tokenOracleId: 'hector-tor-crv', + earnedToken: 'TOR', + earnedTokenDecimals: 18, + earnedTokenAddress: '0x74E23dF9110Aa9eA0b6ff2fAEE01e740CA1c642e', + earnContractAddress: '0xC370B3a3958579F2aAFedF4c3548F75DeB43DB11', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'TOR', + partnership: true, + status: 'active', + isMooStaked: true, + periodFinish: 1653217154, + partners: [ + { + text: 'HEC and TOR make up the foundations of the HECTOR Ecosystem. Over the coming months and years, TOR will expand to be one of the only truly decentralized and algorithmic stablecoins in the market. This will allow for significant growth of the HECTOR Ecosystem and bring value and utility to users everywhere. Over time, TOR will expand to be usable in a wide range of markets and use cases. To create adoption, partnership must be a focus. We aim to create strong, long-lasting partnerships to aid the adoption of TOR.', + website: 'https://app.hector.finance/#/farming', + social: { + telegram: 'https://t.me/hectorDAO', + twitter: 'https://twitter.com/HectorDAO_HEC', + }, + }, + ], + }, + + { + id: 'moo_curve-ftm-f-4pool-orkan', + name: 'Orkan', + assets: ['UST', 'FRAX', 'fUSDT', 'USDC'], + token: 'mooCurve4pool', + tokenDecimals: 18, + tokenAddress: '0xf49bB8D23BB48f237CFDfa4Bb67F4B73ccf28A38', + tokenOracle: 'lps', + tokenOracleId: 'curve-ftm-f-4pool', + earnedToken: 'ORKAN', + earnedTokenDecimals: 9, + earnedTokenAddress: '0xfB66e49e303A186a4c57414Ceeed651a7a78161a', + earnContractAddress: '0x432914274883a7632fdC639B1E64526c197f5829', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'ORKAN', + partnership: true, + status: 'active', + isMooStaked: true, + periodFinish: 1652536228, + partners: [ + { + text: "Orkan is a meta-governance protocol over liquidity flow within the FTM ecosystem. Orkan utilizes perpetual bond issuance to acquire governance tokens from protocols on FTM employing liquidity gauges and locking mechanisms as exchange incentives. Orkan's other plan is to enable deep liquidity and usage of wrapped BTC assets within the ecosystem.", + website: 'https://orkan.finance/#/dashboard', + social: { + telegram: 'https://discord.com/invite/mqd2ZaXeEB', + twitter: 'https://twitter.com/EnterTheStrudel', + }, + }, + ], + }, + + { + id: 'moo_beFTM-based', + name: 'Based', + logo: 'single-assets/beFTM.svg', + token: 'moobeFTM', + tokenDecimals: 18, + tokenAddress: '0x185647c55633A5706aAA3278132537565c925078', + tokenOracle: 'tokens', + tokenOracleId: 'beFTM', + earnedToken: 'BSHARE', + earnedTokenDecimals: 18, + earnedTokenAddress: '0x49C290Ff692149A4E16611c694fdED42C954ab7a', + earnContractAddress: '0xA31D040bb52c7C41eAb80fB975e5Caf95a8CD2Aa', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'BSHARE', + partnership: true, + status: 'active', + isMooStaked: true, + periodFinish: 1647783389, + partners: [ + { + logo: 'stake/based/logo.png', + background: 'stake/based/bg.png', + text: 'Based Finance is launched with the main purpose of supporting Tomb Finance by pegging BASED to TOMB, thus giving additional use cases to TOMB as well as attracting more TVL into the Fantom ecosystem. The BASED algorithmic token aims to serve as the backbone of a rapidly growing Fantom ecosystem and aims towards bringing new liquidity.', + website: 'https://basedfinance.io/', + social: { + telegram: 'https://t.me/BasedFinanceio', + twitter: 'https://twitter.com/BasedFinance_io', + }, + }, + ], + }, + + { + id: 'moo_binSPIRIT-wigoswap', + name: 'WigoSwap', + logo: 'single-assets/binSPIRIT.svg', + token: 'mooBinSPIRIT', + tokenDecimals: 18, + tokenAddress: '0x7345a537A975d9Ca588eE631BEFdDfEF34fD5e8f', + tokenOracle: 'tokens', + tokenOracleId: 'binSPIRIT', + earnedToken: 'WIGO', + earnedTokenDecimals: 18, + earnedTokenAddress: '0xE992bEAb6659BFF447893641A378FbbF031C5bD6', + earnContractAddress: '0x80F442b0207Fbc58efBd55da37F2fCc134CAEE7B', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'WIGO', + partnership: true, + status: 'active', + isMooStaked: true, + periodFinish: 1647602312, + partners: [ + { + logo: 'stake/wigoswap/logo.png', + background: 'stake/wigoswap/bg.png', + text: + 'DeFi hub with LIFETIME farming earnings powered by Gamified Burning Mechanism (GBM). \n' + + 'GBM comes in by utilizing burning function through increasing activities on platform and boosts the burning process.\n' + + 'It means that WigoSwap is able to continue minting tokens by constantly and automatically de-minting them. With the help of this mechanism, we will never reach the 2B hard-cap.', + website: 'https://wigoswap.io/', + social: { + telegram: 'https://t.me/wigoswap', + twitter: 'https://twitter.com/wigoswap', + }, + }, + ], + }, + + { + id: 'moo_curve-ftm-geist-ripae', + name: 'Ripae.Finance', + logo: 'uncategorized/3CRV.png', + token: 'mooCurveG3CRV', + tokenDecimals: 18, + tokenAddress: '0xf710D90A1Bd702dAEa619eEbbe876e7085c2A1df', + tokenOracle: 'lps', + tokenOracleId: 'curve-ftm-geist', + earnedToken: 'PAE', + earnedTokenDecimals: 18, + earnedTokenAddress: '0x8a41f13a4FaE75ca88B1ee726ee9D52B148b0498', + earnContractAddress: '0x7a9797082ca4D661f8B79a4B5b82b1C7DB372E0c', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'PAE', + partnership: true, + status: 'active', + isMooStaked: true, + periodFinish: 1646473953, + partners: [ + { + logo: 'stake/ripae/logo.png', + background: 'stake/ripae/bg.png', + text: + 'Ripae’s mission is to construct a cross-chain algorithmic stablecoin (ASC) economy and connect DeFi networks to make open finance capital efficient and accessible to everyone.\n' + + '\n' + + 'With its experienced team, Ripae Finance will strive to build DeFi’s most convenient, secure, fair, and cost-effective ASC solution in order to help the industry thrive by enabling all participants to work together effortlessly.', + website: 'https://ripae.finance/', + social: { + telegram: 'https://discord.gg/6zq53FB4TS', + twitter: 'https://twitter.com/ripaefinance', + }, + }, + ], + }, + + { + id: 'moo_spirit-binspirit-spirit-spirit', + name: 'SpiritSwap', + assets: ['binSPIRIT', 'SPIRIT'], + token: 'mooSpiritBinSPIRIT-SPIRIT', + tokenDecimals: 18, + tokenAddress: '0x794cEaD3c864B5390254ffca7ecd6a9aE868661a', + tokenOracle: 'lps', + tokenOracleId: 'spirit-binspirit-spirit', + earnedToken: 'mooBinSPIRIT', + earnedTokenDecimals: 18, + earnedTokenAddress: '0x7345a537A975d9Ca588eE631BEFdDfEF34fD5e8f', + earnContractAddress: '0xf5ea5496F26413D1Db47A5B23Bb78263bf4d325d', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'binSPIRIT', + partnership: true, + status: 'active', + isMooStaked: true, + periodFinish: 1646746356, + partners: [ + { + logo: 'stake/spirit/logo.png', + background: 'stake/spirit/bg.png', + text: 'The SpiritSwap protocol provides a platform for trading, staking, and farming. SpiritSwap incentivizes Fantom network participation through revenue sharing by locking SPIRIT in return for inSPIRIT. inSPIRIT vests at the end of the lock and is non-transferrable. Lock your SPIRIT on Beefy to mint binSPIRIT, Beefy’s liquid version of inSPIRIT. Stake your binSPIRIT-SPIRIT LP in our vault, and earn high interests on the pair with near-zero impermanent loss. Deposit your mooSpiritBinSPIRIT-SPIRIT (receipt for LP deposited in our vaults) into the boost to earn mooBinSPIRIT.', + website: 'https://app.spiritswap.finance/', + social: { + telegram: 'https://discord.gg/spiritswap', + twitter: 'https://twitter.com/Spirit_Swap', + }, + }, + ], + }, + + { + id: 'moo_binSPIRIT-beefy', + name: 'Beefy', + logo: 'single-assets/binSPIRIT.svg', + token: 'mooBinSPIRIT', + tokenDecimals: 18, + tokenAddress: '0x7345a537A975d9Ca588eE631BEFdDfEF34fD5e8f', + tokenOracle: 'tokens', + tokenOracleId: 'binSPIRIT', + earnedToken: 'mooFantomBIFI', + earnedTokenDecimals: 18, + earnedTokenAddress: '0xbF07093ccd6adFC3dEB259C557b61E94c1F66945', + earnContractAddress: '0xB883FE481d4442EEe83BA4eCF358D7F9f624fB40', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'mooFantomBIFI', + partnership: true, + status: 'active', + isMooStaked: true, + periodFinish: 1645276643, + partners: [ + { + logo: 'stake/beefy/beefyfinance.png', + logoNight: 'stake/beefy/beefyfinance_night.png', + background: 'stake/beefy/background.png', + text: + 'The SpiritSwap protocol provides a platform for trading, staking, and farming. SpiritSwap incentivizes Fantom network participation through revenue sharing by locking SPIRIT in return for inSPIRIT. inSPIRIT vests at the end of the lock and is non-transferrable. \n' + + 'Lock your SPIRIT on Beefy to mint binSPIRIT, Beefy’s liquid version of inSPIRIT. Staking it directly on Beefy gives you compounded interest on your SPIRIT and also allows you to exchange it at any time. \n' + + 'Deposit your mooBinSPIRIT (receipt for binSPIRIT deposited in our vaults) into the boost to earn mooBIFI.', + website: 'https://app.beefy.finance/', + social: { + telegram: 'https://discord.gg/beefyfinance', + twitter: 'https://twitter.com/beefyfinance', + }, + }, + ], + }, + + { + id: 'moo_WFTM-2omb', + name: '2omb', + logo: 'single-assets/FTM.png', + token: 'mooScreamFTM', + tokenDecimals: 18, + tokenAddress: '0x49c68eDb7aeBd968F197121453e41b8704AcdE0C', + tokenOracle: 'tokens', + tokenOracleId: 'WFTM', + earnedToken: '2SHARES', + earnedTokenDecimals: 18, + earnedTokenAddress: '0xc54A1684fD1bef1f077a336E6be4Bd9a3096a6Ca', + earnContractAddress: '0xd7784f23A04D0ea3647bd6Ce15fD2d0D1FcD30Fe', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: '2SHARES', + partnership: true, + status: 'active', + isMooStaked: true, + periodFinish: 1643365643, + partners: [ + { + logo: 'stake/2omb/logo.png', + background: 'stake/2omb/bg.png', + text: '2omb Finance is a proud fork of Tomb Finance, with 4x faster TSHARE (2SHARE) emissions. People are always looking for the next fork of successful projects. 2omb Finance simplifies this process into a trusted team that delivers an ecosystem of symbiotic forks that thrive on the success of one another. Native tokens of previous forks are utilized for participation in genesis pools of new forks.', + website: 'https://2omb.finance/', + social: { + telegram: 'https://discord.gg/sTXFJ82HcP', + twitter: 'https://twitter.com/2ombfinance', + }, + }, + ], + }, + + { + id: 'moo_beets-guqin-qi-2-qidao', + name: 'Beefy', + logo: 'fantom/Guqin Qi 2.png', + token: 'mooBeetGuqinQi2', + tokenDecimals: 18, + tokenAddress: '0x1711b008DA67a18B3a5171B906Dae7812BEb147b', + tokenOracle: 'lps', + tokenOracleId: 'beets-guqin-qi-2', + earnedToken: 'mooFantomBIFI', + earnedTokenDecimals: 18, + earnedTokenAddress: '0xbF07093ccd6adFC3dEB259C557b61E94c1F66945', + earnContractAddress: '0x0eEeefE7e7f5361b7410f9e50FD1B329b81896b7', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'mooFantomBIFI', + partnership: true, + status: 'active', + isMooStaked: true, + periodFinish: 1641208098, + partners: [ + { + logo: 'stake/beefy/beefyfinance.png', + background: 'stake/beefy/background.png', + text: "Beefy Finance is The Multi-Chain Yield Optimizer across many blockchains, enabling users to earn autocompounded yield on their crypto. Did you know also that you can own a piece of Beefy itself? Beefy runs on its governance token, BIFI. The token has a set supply of 80,000 across all chains; no more may be minted, ever! As a holder of BIFI you may create and vote on important DAO proposals, and you become dividend-eligible to earn a share of every compounding harvest on Beefy vaults, hour by hour. Here on Fantom, you just need to stake BIFI in this reward pool, or in the autocompounding BIFI Maxi vault on the main page. For this pool, FTM dividends are gathered and sent proportionally to each staker. Stake here, return later to claim the FTM you've earned.", + website: 'https://app.beefy.finance', + social: { + telegram: 'http://t.me/beefyfinance', + twitter: 'https://twitter.com/beefyfinance', + }, + }, + ], + }, + + { + id: 'moo_curve-ftm-geist-pearzap', + name: 'PearZap', + logo: 'uncategorized/3CRV.png', + token: 'mooCurveG3CRV', + tokenDecimals: 18, + tokenAddress: '0xf710D90A1Bd702dAEa619eEbbe876e7085c2A1df', + tokenOracle: 'lps', + tokenOracleId: 'curve-ftm-geist', + earnedToken: 'PEAR', + earnedTokenDecimals: 18, + earnedTokenAddress: '0x7C10108d4B7f4bd659ee57A53b30dF928244b354', + earnContractAddress: '0xBE316e157BDfe5f06413E6DB9916D3F52D32d65F', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'PEAR', + partnership: true, + status: 'active', + isMooStaked: true, + periodFinish: 1636033581, + partners: [ + { + logo: 'stake/pearzap/logo.png', + background: 'stake/pearzap/bg.png', + text: "PearZap Finance is a yield farming project on the Polygon Chain, born out of the idea of bringing consistency in high APR's and security to our investors through our $Pear native token. Join the PearZap family and be part of a project that prides itself in quality partnerships and delivering on the promises we make, no matter how juicy they may be. 🍐⚡️", + website: 'https://pearzap.com/', + social: { + telegram: 'https://t.me/pearzap', + twitter: 'https://twitter.com/pearzap', + }, + }, + ], + }, + + { + id: 'moo_bifi-scream', + name: 'Scream', + logo: 'single-assets/BIFI.png', + token: 'mooFantomBIFI', + tokenDecimals: 18, + tokenAddress: '0xbF07093ccd6adFC3dEB259C557b61E94c1F66945', + tokenOracle: 'tokens', + tokenOracleId: 'BIFI', + earnedToken: 'SCREAM', + earnedTokenDecimals: 18, + earnedTokenAddress: '0xe0654C8e6fd4D733349ac7E09f6f23DA256bF475', + earnContractAddress: '0xE105940939444b056C2de0834214824254D23615', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'SCREAM', + partnership: true, + status: 'active', + isMooStaked: true, + periodFinish: 1629394703, + partners: [ + { + logo: 'stake/scream/logo.png', + background: 'stake/scream/bg.png', + text: 'SCREAM is a highly-scalable decentralised lending protocol built and powered by the Fantom Blockchain.', + website: 'https://scream.sh/', + social: { + telegram: 'https://t.me/screamsh', + twitter: 'https://twitter.com/screamdotsh', + }, + }, + ], + }, + { + id: 'moo_boo_ftm-tomb', + name: 'TOMB.Finance', + assets: ['BOO', 'FTM'], + token: 'mooBooBoo-FTM', + tokenDecimals: 18, + tokenAddress: '0xEe3a7c885Fd3cc5358FF583F2DAB3b8bC473316f', + tokenOracle: 'lps', + tokenOracleId: 'boo-boo-ftm', + earnedToken: 'mooFantomBIFI', + earnedTokenDecimals: 18, + earnedTokenAddress: '0xbF07093ccd6adFC3dEB259C557b61E94c1F66945', + earnContractAddress: '0x1643BC20913fA2D62C521E7cE8fFeD9e1Dd87964', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'BIFI', + partnership: true, + status: 'active', + isMooStaked: true, + periodFinish: 1624311025, + partners: [ + { + logo: 'stake/tombfinance/logo.png', + background: 'stake/tombfinance/background.png', + text: 'Tomb algorithmic token is the first project and the base foundation of an ecosystem that will bring utility and value for token holders. Designed by the Tomb.finance team as the first algorithmic token pegged to FTM instead of a stablecoin, on OPERA Fantom. It works around a solution that can adjust the token supply to move the price of the token itself up or down, in the direction of a target price to bring programmability and stability to the price. Inspired by Basis original idea, and its predecessors improvements (bDollar and soup), Tomb is a multi-token protocol that consists of the following tokens: Tomb (TOMB), Tomb Shares (TSHARE), and Tomb Bonds (TBOND).\n', + website: 'https://tomb.finance', + social: { + telegram: 'https://t.me/tombfinance', + twitter: 'https://twitter.com/tombfinance', + }, + }, + ], + }, + { + id: 'boo-bifi-ftm-bifi', + name: 'Beefy.Finance', + assets: ['BIFI', 'FTM'], + token: 'mooBooBIFI-FTM', + tokenDecimals: 18, + tokenAddress: '0xe8188B9701E6DB1Fe24c75783474D22e5957BBEF', + tokenOracle: 'lps', + tokenOracleId: 'boo-bifi-ftm', + earnedToken: 'mooFantomBIFI', + earnedTokenDecimals: 18, + earnedTokenAddress: '0xbf07093ccd6adfc3deb259c557b61e94c1f66945', + earnContractAddress: '0xa8b86b9AF7e844DA90A2e72840Ad01CCBD11EdC3', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'BIFI', + partnership: true, + status: 'active', + isMooStaked: true, + periodFinish: 1623711392, + partners: [ + { + logo: 'stake/beefy/beefyfinance.png', + background: 'stake/beefy/background.png', + text: "Beefy Finance is The Multi-Chain Yield Optimizer across many sidechains, enabling users to earn autocompounded yield on their crypto. Did you know also that you can own a piece of Beefy itself? Beefy runs on its governance token, BIFI. The token has a set supply of 80,000 across all chains; no more may be minted, ever! As a holder of BIFI you may create and vote on important DAO proposals, and you become dividend-eligible to earn a share of every compounding harvest on Beefy vaults, hour by hour. For this pool, mooBIFI dividends are gathered and sent proportionally to each staker. Stake mooBIFI here, return later to claim the extra mooBIFI you've earned.", + website: 'https://app.beefy.finance', + social: { + telegram: 'http://t.me/beefyfinance', + twitter: 'https://twitter.com/beefyfinance', + }, + }, + ], + }, + { + id: 'moo_usdc-ftm-ester', + name: 'Ester Finance', + assets: ['USDC', 'FTM'], + token: 'mooBooFTM-USDC', + tokenDecimals: 18, + tokenAddress: '0x41D44B276904561Ac51855159516FD4cB2c90968', + tokenOracle: 'lps', + tokenOracleId: 'boo-ftm-usdc', + earnedToken: 'EST', + earnedTokenDecimals: 18, + earnedTokenAddress: '0x181F3F22C9a751E2ce673498A03E1FDFC0ebBFB6', + earnContractAddress: '0xed5010eDF8812003B7d4c9a69E7AfCBceaB62F4f', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'EST', + partnership: true, + status: 'closed', + isMooStaked: true, + periodFinish: 1622138639, + partners: [ + { + logo: 'stake/esterfinance/logo.png', + background: 'stake/esterfinance/background.png', + text: 'Ester.Finance is a Decentralized Finance (DeFi) Yield Optimizer project on the Fantom Opera Blockchain. Ester can make you earn more crypto with crypto. Through a set of smart contracts and several investment strategies, Ester.Finance automatically maximizes the user rewards from various liquidity pools (LPs), automated market-making (AMM) projects, and other yield farming opportunities in the DeFi ecosystem. This provides a huge advantage over attempting to do this manually yourself.', + website: 'https://app.ester.finance/', + social: { + telegram: '', + twitter: 'https://twitter.com/EsterFinance', + }, + }, + ], + }, +]; diff --git a/src/features/configure/stake/fuse_stake.js b/src/features/configure/stake/fuse_stake.js new file mode 100644 index 000000000..998958646 --- /dev/null +++ b/src/features/configure/stake/fuse_stake.js @@ -0,0 +1,108 @@ +import { govPoolABI } from '../abi'; + +export const fuseStakePools = [ + { + id: 'bifi-fuse', + name: 'BIFI', + logo: 'single-assets/BIFI.png', + token: 'BIFI', + tokenDecimals: 18, + tokenAddress: '0x2bF9b864cdc97b08B6D79ad4663e71B8aB65c45c', + tokenOracle: 'tokens', + tokenOracleId: 'BIFI', + earnedToken: 'FUSE', + earnedTokenDecimals: 18, + earnedTokenAddress: '0x0BE9e53fd7EDaC9F859882AfdDa116645287C629', + earnContractAddress: '0x60a4DedF7fC45F73d9ca46222B016c2d755C79A8', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'WFUSE', + partnership: false, + status: 'active', + fixedStatus: true, + partners: [ + { + logo: 'stake/beefy/beefyfinance.png', + logoNight: 'stake/beefy/beefyfinance_night.png', + background: 'stake/beefy/background.png', + text: "Beefy Finance is The Multi-Chain Yield Optimizer across many sidechains, enabling users to earn autocompounded yield on their crypto. Did you know also that you can own a piece of Beefy itself? Beefy runs on its governance token, BIFI. The token has a set supply of 80,000 across all chains; no more may be minted, ever! As a holder of BIFI you may create and vote on important DAO proposals, and you become dividend-eligible to earn a share of every compounding harvest on Beefy vaults, hour by hour. Here on Fuse, you just need to stake BIFI in this reward pool, or in the autocompounding BIFI Maxi vault on the main page. For this pool, FUSE dividends are gathered and sent proportionally to each staker. Stake here, return later to claim the FUSE you've earned.", + website: 'https://app.beefy.finance', + social: { + telegram: 'http://t.me/beefyfinance', + twitter: 'https://twitter.com/beefyfinance', + }, + }, + ], + }, + + { + id: 'moo_voltage-wfuse-elon-elon', + name: 'Dogelon Mars x Fuse', + assets: ['ELON', 'FUSE'], + token: 'mooVoltageFUSE-ELON', + tokenDecimals: 18, + tokenAddress: '0xa7224e31367069637A8C2cc0aa10B7A90D9343C1', + tokenOracle: 'lps', + tokenOracleId: 'voltage-wfuse-elon', + earnedToken: 'ELON-FUSE LP', + earnedTokenDecimals: 18, + earnedTokenAddress: '0xe418c323fA450e7e18c4dB304bEFC7ffF92D2Cc1', + earnContractAddress: '0xc3a4fdcba79DB04b4C3e352b1C467B3Ba909D84A', + earnContractAbi: govPoolABI, + earnedOracle: 'lps', + earnedOracleId: 'voltage-wfuse-elon', + partnership: true, + status: 'active', + isMooStaked: true, + periodFinish: 1652625028, + partners: [ + { + logo: 'stake/elon/logo.png', + background: 'stake/elon/bg.png', + text: + 'We are thrilled to announce that the Dogelon Mars (ELON) token has now been ported to the Fuse Network blockchain. Fuse Network becomes only the third blockchain on which the token has officially been enabled (in addition to Ethereum and Polygon). \n' + + 'A FUSE/ELON trading pool has been created on the Voltage Finance (formerly, FuseFi) decentralized exchange (DEX).\n' + + 'We are boosting this pool with more tokens of the same kind you deposited. Claim the rewards and you will see them already staked in the vault.', + website: 'https://dogelonmars.com/', + social: { + telegram: 'https://t.me/dogelonmars', + twitter: 'https://twitter.com/DogelonMars', + }, + }, + ], + }, + + { + id: 'moo_fusefi-wfuse-usdc-fuse', + name: 'Fuse', + assets: ['USDC', 'FUSE'], + token: 'mooFuseFiUSDC-FUSE', + tokenDecimals: 18, + tokenAddress: '0x98d3913474fccEDeB63077237914be00202fB007', + tokenOracle: 'lps', + tokenOracleId: 'voltage-wfuse-usdc', + earnedToken: 'mooFuse', + earnedTokenDecimals: 18, + earnedTokenAddress: '0x2C43DBef81ABa6b95799FD2aEc738Cd721ba77f3', + earnContractAddress: '0x405EE7F4f067604b787346bC22ACb66b06b15A4B', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'WFUSE', + partnership: true, + status: 'active', + isMooStaked: true, + periodFinish: 1644834178, + partners: [ + { + logo: 'stake/fuse/logo.png', + background: 'stake/fuse/bg.png', + text: 'Fuse is a platform featuring a fast and low-cost, Ethereum-compatible blockchain, a robust plug-and-play mobile-centric crypto payments infrastructure for creating token-based applications and a rapidly growing ecosystem of payments, decentralized finance and NFT projects.', + website: 'https://www.fuse.io', + social: { + telegram: 'https://t.me/fuseio', + twitter: 'https://twitter.com/Fuse_network', + }, + }, + ], + }, +]; diff --git a/src/features/configure/stake/harmony_stake.js b/src/features/configure/stake/harmony_stake.js new file mode 100644 index 000000000..5acaf413b --- /dev/null +++ b/src/features/configure/stake/harmony_stake.js @@ -0,0 +1,36 @@ +import { govPoolABI } from '../abi'; + +export const harmonyStakePools = [ + { + id: 'bifi-harmony', + name: 'BIFI', + logo: 'single-assets/BIFI.png', + token: 'BIFI', + tokenDecimals: 18, + tokenAddress: '0x6aB6d61428fde76768D7b45D8BFeec19c6eF91A8', + tokenOracle: 'tokens', + tokenOracleId: 'BIFI', + earnedToken: 'WONE', + earnedTokenDecimals: 18, + earnedTokenAddress: '0xcF664087a5bB0237a0BAd6742852ec6c8d69A27a', + earnContractAddress: '0x5B96bbAca98D777cb736dd89A519015315E00D02', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'WONE', + partnership: false, + status: 'active', + fixedStatus: true, + partners: [ + { + logo: 'stake/beefy/beefyfinance.png', + background: 'stake/beefy/background.png', + text: "Beefy Finance is The Multi-Chain Yield Optimizer across many blockchains, enabling users to earn autocompounded yield on their crypto. Did you know also that you can own a piece of Beefy itself? Beefy runs on its governance token, BIFI. The token has a set supply of 80,000 across all chains; no more may be minted, ever! As a holder of BIFI you may create and vote on important DAO proposals, and you become dividend-eligible to earn a share of every compounding harvest on Beefy vaults, hour by hour. Here on Harmony, you just need to stake BIFI in this reward pool, or in the autocompounding BIFI Maxi vault on the main page. For this pool, ONE dividends are gathered and sent proportionally to each staker. Stake here, return later to claim the ONE you've earned.", + website: 'https://app.beefy.finance', + social: { + telegram: 'http://t.me/beefyfinance', + twitter: 'https://twitter.com/beefyfinance', + }, + }, + ], + }, +]; diff --git a/src/features/configure/stake/heco_stake.js b/src/features/configure/stake/heco_stake.js new file mode 100644 index 000000000..07a36f096 --- /dev/null +++ b/src/features/configure/stake/heco_stake.js @@ -0,0 +1,36 @@ +import { govPoolABI } from '../abi'; + +export const hecoStakePools = [ + { + id: 'bifi-ht', + name: 'BIFI', + logo: 'single-assets/BIFI.png', + token: 'BIFI', + tokenDecimals: 18, + tokenAddress: '0x765277EebeCA2e31912C9946eAe1021199B39C61', + tokenOracle: 'tokens', + tokenOracleId: 'BIFI', + earnedToken: 'HT', + earnedTokenDecimals: 18, + earnedTokenAddress: '0x5545153CCFcA01fbd7Dd11C0b23ba694D9509A6F', + earnContractAddress: '0x5f7347fedfD0b374e8CE8ed19Fc839F59FB59a3B', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'WHT', + partnership: false, + status: 'active', + fixedStatus: true, + partners: [ + { + logo: 'stake/beefy/beefyfinance.png', + background: 'stake/beefy/background.png', + text: "Beefy Finance is The Multi-Chain Yield Optimizer across many blockchains, enabling users to earn autocompounded yield on their crypto. Did you know also that you can own a piece of Beefy itself? Beefy runs on its governance token, BIFI. The token has a set supply of 80,000 across all chains; no more may be minted, ever! As a holder of BIFI you may create and vote on important DAO proposals, and you become dividend-eligible to earn a share of every compounding harvest on Beefy vaults, hour by hour. Here on HECO, you just need to stake BIFI in this reward pool, or in the autocompounding BIFI Maxi vault on the main page. For this pool, HT dividends are gathered and sent proportionally to each staker. Stake here, return later to claim the HT you've earned.", + website: 'https://app.beefy.finance', + social: { + telegram: 'http://t.me/beefyfinance', + twitter: 'https://twitter.com/beefyfinance', + }, + }, + ], + }, +]; diff --git a/src/features/configure/stake/metis_stake.js b/src/features/configure/stake/metis_stake.js new file mode 100644 index 000000000..a34458be3 --- /dev/null +++ b/src/features/configure/stake/metis_stake.js @@ -0,0 +1,71 @@ +import { govPoolABI } from '../abi'; + +export const metisStakePools = [ + { + id: 'bifi-metis', + name: 'BIFI', + logo: 'single-assets/BIFI.png', + token: 'BIFI', + tokenDecimals: 18, + tokenAddress: '0xe6801928061CDbE32AC5AD0634427E140EFd05F9', + tokenOracle: 'tokens', + tokenOracleId: 'BIFI', + earnedToken: 'METIS', + earnedTokenDecimals: 18, + earnedTokenAddress: '0xDeadDeAddeAddEAddeadDEaDDEAdDeaDDeAD0000', + earnContractAddress: '0x2a30C5e0d577108F694d2A96179cd73611Ee069b', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'METIS', + partnership: false, + status: 'active', + fixedStatus: true, + partners: [ + { + logo: 'stake/beefy/beefyfinance.png', + logoNight: 'stake/beefy/beefyfinance_night.png', + background: 'stake/beefy/background.png', + text: "Beefy Finance is The Multi-Chain Yield Optimizer across many sidechains, enabling users to earn autocompounded yield on their crypto. Did you know also that you can own a piece of Beefy itself? Beefy runs on its governance token, BIFI. The token has a set supply of 80,000 across all chains; no more may be minted, ever! As a holder of BIFI you may create and vote on important DAO proposals, and you become dividend-eligible to earn a share of every compounding harvest on Beefy vaults, hour by hour. Here on Metis, you just need to stake BIFI in this reward pool, or in the autocompounding BIFI Maxi vault on the main page. For this pool, Metis dividends are gathered and sent proportionally to each staker. Stake here, return later to claim the METIS you've earned.", + website: 'https://app.beefy.finance', + social: { + telegram: 'http://t.me/beefyfinance', + twitter: 'https://twitter.com/beefyfinance', + }, + }, + ], + }, + + { + id: 'moo_netswap-wbtc-metis-relay', + name: 'Relay Chain - Metis', + assets: ['WBTC', 'METIS'], + token: 'mooNetswapWBTC-METIS', + tokenDecimals: 18, + tokenAddress: '0x4e9E8A5Ce321cE0a380c1CEab388c673180AF657', + tokenOracle: 'lps', + tokenOracleId: 'netswap-wbtc-metis', + earnedToken: 'Metis', + earnedTokenDecimals: 18, + earnedTokenAddress: '0xDeadDeAddeAddEAddeadDEaDDEAdDeaDDeAD0000', + earnContractAddress: '0xeD4ea30c755676C07d3e0e0f74Ff84C0193B4551', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'METIS', + partnership: true, + status: 'active', + isMooStaked: true, + periodFinish: 1646996136, + partners: [ + { + logo: 'stake/relay/logo.png', + background: 'stake/relay/bg.png', + text: 'Thanks to Metis’ close partnership with Relay Chain, the wrapped version of the largest and longest-running cryptocurrency is now available throughout the Andromeda network. To celebrate this partnership we are boosting this vault with extra $METIS tokens on top.', + website: 'https://app.relaychain.com/#/cross-chain-bridge-transfer', + social: { + telegram: 'https://t.me/relaychaincommunity', + twitter: 'https://twitter.com/relay_chain', + }, + }, + ], + }, +]; diff --git a/src/features/configure/stake/moonbeam_stake.js b/src/features/configure/stake/moonbeam_stake.js new file mode 100644 index 000000000..a7bfb6d4f --- /dev/null +++ b/src/features/configure/stake/moonbeam_stake.js @@ -0,0 +1,103 @@ +import { govPoolABI } from '../abi'; + +export const moonbeamStakePools = [ + { + id: 'bifi-moonbeam', + name: 'BIFI', + logo: 'single-assets/BIFI.png', + token: 'BIFI', + tokenDecimals: 18, + tokenAddress: '0x595c8481c48894771CE8FaDE54ac6Bf59093F9E8', + tokenOracle: 'tokens', + tokenOracleId: 'BIFI', + earnedToken: 'GLMR', + earnedTokenDecimals: 18, + earnedTokenAddress: '0xAcc15dC74880C9944775448304B263D191c6077F', + earnContractAddress: '0x1198f78efd67DFc917510aaA07d49545f4B24f11', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'GLMR', + partnership: false, + status: 'active', + fixedStatus: true, + partners: [ + { + logo: 'stake/beefy/beefyfinance.png', + logoNight: 'stake/beefy/beefyfinance_night.png', + background: 'stake/beefy/background.png', + text: "Beefy Finance is The Multi-Chain Yield Optimizer across many sidechains, enabling users to earn autocompounded yield on their crypto. Did you know also that you can own a piece of Beefy itself? Beefy runs on its governance token, BIFI. The token has a set supply of 80,000 across all chains; no more may be minted, ever! As a holder of BIFI you may create and vote on important DAO proposals, and you become dividend-eligible to earn a share of every compounding harvest on Beefy vaults, hour by hour. Here on Moonbeam, you just need to stake BIFI in this reward pool, or in the autocompounding BIFI Maxi vault on the main page. For this pool, GLMR dividends are gathered and sent proportionally to each staker. Stake here, return later to claim the GLMR you've earned.", + website: 'https://app.beefy.finance', + social: { + telegram: 'http://t.me/beefyfinance', + twitter: 'https://twitter.com/beefyfinance', + }, + }, + ], + }, + + { + id: 'moo_stellaswap-stella-usdc-stellaswap', + name: 'StellaSwap', + assets: ['STELLA', 'USDC'], + token: 'mooStellaswapSTELLA-USDC', + tokenDecimals: 18, + tokenAddress: '0xfb47EC2f215D579cc4Cb0B19ec21AD58749518ad', + tokenOracle: 'lps', + tokenOracleId: 'stellaswap-stella-usdc', + earnedToken: 'STELLA', + earnedTokenDecimals: 18, + earnedTokenAddress: '0x0E358838ce72d5e61E0018a2ffaC4bEC5F4c88d2', + earnContractAddress: '0xc3a4fdcba79DB04b4C3e352b1C467B3Ba909D84A', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'STELLA', + partnership: true, + status: 'active', + isMooStaked: true, + periodFinish: 1653228930, + partners: [ + { + text: "StellaSwap is the first and leading Moonbeam DEX that offers an integrated gateway to the DeFi world. Users can swap, earn, yield farm, bridge assets, explore new projects and engage in NFT trading all from a single unified platform. StellaSwap's products are structured in such a way that facilitates decentralized governance of STELLA holders, while continuing to innovate on the collective foundations by design.", + website: 'https://stellaswap.com/', + social: { + telegram: '', + twitter: '', + }, + }, + ], + }, + + { + id: 'moo_stellaswap-stella-wglmr-stellaswap', + name: 'StellaSwap', + assets: ['STELLA', 'GLMR'], + token: 'mooStellaswapSTELLA-GLMR', + tokenDecimals: 18, + tokenAddress: '0x515989A9Add6Bb3Ab78b59a2AE30E398E740886F', + tokenOracle: 'lps', + tokenOracleId: 'stellaswap-stella-wglmr', + earnedToken: 'STELLA', + earnedTokenDecimals: 18, + earnedTokenAddress: '0x0E358838ce72d5e61E0018a2ffaC4bEC5F4c88d2', + earnContractAddress: '0x74EB99854c10BCD138AEd017516f9835e8325B87', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'STELLA', + partnership: true, + status: 'active', + isMooStaked: true, + periodFinish: 1650289050, + partners: [ + { + logo: 'stake/stellaswap/logo.png', + background: 'stake/stellaswap/bg.png', + text: "StellaSwap is the first and leading Moonbeam DEX that offers an integrated gateway to the DeFi world. Users can swap, earn, yield farm, bridge assets, explore new projects and engage in NFT trading all from a single unified platform. StellaSwap's products are structured in such a way that facilitates decentralized governance of STELLA holders, while continuing to innovate on the collective foundations by design.", + website: 'https://stellaswap.com/', + social: { + telegram: '', + twitter: '', + }, + }, + ], + }, +]; diff --git a/src/features/configure/stake/moonriver_stake.js b/src/features/configure/stake/moonriver_stake.js new file mode 100644 index 000000000..d82c3b062 --- /dev/null +++ b/src/features/configure/stake/moonriver_stake.js @@ -0,0 +1,105 @@ +import { govPoolABI } from '../abi'; + +export const moonriverStakePools = [ + { + id: 'bifi-moonriver', + name: 'BIFI', + logo: 'single-assets/BIFI.png', + token: 'BIFI', + tokenDecimals: 18, + tokenAddress: '0x173fd7434B8B50dF08e3298f173487ebDB35FD14', + tokenOracle: 'tokens', + tokenOracleId: 'BIFI', + earnedToken: 'MOVR', + earnedTokenDecimals: 18, + earnedTokenAddress: '0x98878B06940aE243284CA214f92Bb71a2b032B8A', + earnContractAddress: '0x4Aabd0d73181325DD1609Ce696eF048702DE7153', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'WMOVR', + partnership: false, + status: 'active', + fixedStatus: true, + partners: [ + { + logo: 'stake/beefy/beefyfinance.png', + logoNight: 'stake/beefy/beefyfinance_night.png', + background: 'stake/beefy/background.png', + text: "Beefy Finance is The Multi-Chain Yield Optimizer across many sidechains, enabling users to earn autocompounded yield on their crypto. Did you know also that you can own a piece of Beefy itself? Beefy runs on its governance token, BIFI. The token has a set supply of 80,000 across all chains; no more may be minted, ever! As a holder of BIFI you may create and vote on important DAO proposals, and you become dividend-eligible to earn a share of every compounding harvest on Beefy vaults, hour by hour. Here on Moonriver, you just need to stake BIFI in this reward pool, or in the autocompounding BIFI Maxi vault on the main page. For this pool, MOVR dividends are gathered and sent proportionally to each staker. Stake here, return later to claim the MOVR you've earned.", + website: 'https://app.beefy.finance', + social: { + telegram: 'http://t.me/beefyfinance', + twitter: 'https://twitter.com/beefyfinance', + }, + }, + ], + }, + + { + id: 'moo_finn-wmovr-finn-huckleberry', + name: 'Huckleberry', + assets: ['FINN', 'MOVR'], + token: 'mooFinnMOVR-FINN', + tokenDecimals: 18, + tokenAddress: '0xFaA15A1B4DAB85d35e912f88127b9986638a1265', + tokenOracle: 'lps', + tokenOracleId: 'finn-wmovr-finn', + earnedToken: 'FINN', + earnedTokenDecimals: 18, + earnedTokenAddress: '0x9A92B5EBf1F6F6f7d93696FCD44e5Cf75035A756', + earnContractAddress: '0x405EE7F4f067604b787346bC22ACb66b06b15A4B', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'FINN', + partnership: true, + status: 'active', + isMooStaked: true, + periodFinish: 1639217938, + partners: [ + { + logo: 'stake/huckleberry/logo.png', + background: 'stake/huckleberry/bg.png', + text: 'Huckleberry is a community driven AMM crosschain DEX built on Moonriver, where every single feature is designed around creating value for FINN holders. This is seen in everything from its high-APR Rivers, risk-free Excursions and the FINN token itself. FINN has a special feature called Passive Sailin’, where 1% of every FINN transaction is shared among all FINN holders. This means that all our users are constantly earning just by holding FINN.', + website: 'https://www.huckleberry.finance/', + social: { + telegram: 'https://t.me/HuckleberryDex', + twitter: 'https://twitter.com/HuckleberryDEX', + }, + }, + ], + }, + + { + id: 'moo_solarbeam-frax-wmovr-2-huckleberry', + name: 'Huckleberry', + assets: ['FRAX', 'MOVR'], + token: 'mooSolarFRAX-WMOVR', + tokenDecimals: 18, + tokenAddress: '0xf8e9774AE3cc7aE3eE11161cC1313252A0784E18', + tokenOracle: 'lps', + tokenOracleId: 'solarbeam-frax-wmovr-2', + earnedToken: 'FINN', + earnedTokenDecimals: 18, + earnedTokenAddress: '0x9A92B5EBf1F6F6f7d93696FCD44e5Cf75035A756', + earnContractAddress: '0x3C9C884eFAB85c44D675039de227b3Dd275c360e', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'FINN', + partnership: true, + status: 'active', + isMooStaked: true, + periodFinish: 1638526810, + partners: [ + { + logo: 'stake/huckleberry/logo.png', + background: 'stake/huckleberry/bg.png', + text: 'Huckleberry is a community driven AMM crosschain DEX built on Moonriver, where every single feature is designed around creating value for FINN holders. This is seen in everything from its high-APR Rivers, risk-free Excursions and the FINN token itself. FINN has a special feature called Passive Sailin’, where 1% of every FINN transaction is shared among all FINN holders. This means that all our users are constantly earning just by holding FINN.', + website: 'https://www.huckleberry.finance/', + social: { + telegram: 'https://t.me/HuckleberryDex', + twitter: 'https://twitter.com/HuckleberryDEX', + }, + }, + ], + }, +]; diff --git a/src/features/configure/stake/polygon_stake.js b/src/features/configure/stake/polygon_stake.js new file mode 100644 index 000000000..3b1b5b2cd --- /dev/null +++ b/src/features/configure/stake/polygon_stake.js @@ -0,0 +1,957 @@ +import { govPoolABI } from '../abi'; + +export const polygonStakePools = [ + { + id: 'bifi-polygon', + name: 'BIFI', + logo: 'single-assets/BIFI.png', + token: 'BIFI', + tokenDecimals: 18, + tokenAddress: '0xFbdd194376de19a88118e84E279b977f165d01b8', + tokenOracle: 'tokens', + tokenOracleId: 'BIFI', + earnedToken: 'MATIC', + earnedTokenDecimals: 18, + earnedTokenAddress: '0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270', + earnContractAddress: '0xDeB0a777ba6f59C78c654B8c92F80238c8002DD2', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'WMATIC', + partnership: false, + status: 'active', + fixedStatus: true, + partners: [ + { + logo: 'stake/beefy/beefyfinance.png', + logoNight: 'stake/beefy/beefyfinance_night.png', + background: 'stake/beefy/background.png', + text: "Beefy Finance is The Multi-Chain Yield Optimizer across many blockchains, enabling users to earn autocompounded yield on their crypto. Did you know also that you can own a piece of Beefy itself? Beefy runs on its governance token, BIFI. The token has a set supply of 80,000 across all chains; no more may be minted, ever! As a holder of BIFI you may create and vote on important DAO proposals, and you become dividend-eligible to earn a share of every compounding harvest on Beefy vaults, hour by hour. Here on Polygon, you just need to stake BIFI in this reward pool, or in the autocompounding BIFI Maxi vault on the main page. For this pool, MATIC dividends are gathered and sent proportionally to each staker. Stake here, return later to claim the MATIC you've earned.", + website: 'https://app.beefy.finance', + social: { + telegram: 'http://t.me/beefyfinance', + twitter: 'https://twitter.com/beefyfinance', + }, + }, + ], + }, + + { + id: 'moo_beQI', + name: 'Beefy', + logo: 'single-assets/beQI.png', + token: 'beQI', + tokenDecimals: 18, + tokenAddress: '0x97bfa4b212A153E15dCafb799e733bc7d1b70E72', + tokenOracle: 'tokens', + tokenOracleId: 'beQI', + earnedToken: 'QI', + earnedTokenDecimals: 18, + earnedTokenAddress: '0x580A84C73811E1839F75d86d75d88cCa0c241fF4', + earnContractAddress: '0x5D060698F179E7D2233480A44d6D3979e4Ae9e7f', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'QI', + partnership: false, + status: 'active', + fixedStatus: true, + partners: [ + { + logo: 'stake/beefy/beefyfinance.png', + background: 'stake/beefy/background.png', + text: 'beQI is Beefy Staked QI. The token is pegged to QI and can be staked on the Beefy platform to earn QI or more beQI. beQI gives stakers access to max lock rewards of staking QI for eQI. You can burn beQI for QI if there is available QI reserves.', + website: 'https://beefy.com', + social: { + telegram: 'http://t.me/beefyfinance', + twitter: 'https://twitter.com/beefyfinance', + }, + }, + ], + }, + + { + id: 'moo_quick-stmatic-matic-lido', + name: 'Lido on Polygon', + assets: ['stMATIC', 'MATIC'], + token: 'mooQuickSwapstMATIC-MATIC', + tokenDecimals: 18, + tokenAddress: '0x8829ADf1a9a7facE44c8FAb3Bc454f93F330E492', + tokenOracle: 'lps', + tokenOracleId: 'quick-stmatic-matic', + earnedToken: 'LDO', + earnedTokenDecimals: 18, + earnedTokenAddress: '0xC3C7d422809852031b44ab29EEC9F1EfF2A58756', + earnContractAddress: '0x20E504E52476cc0d84981b6F0562D19e33f0F188', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'LDO', + partnership: true, + status: 'active', + isMooStaked: true, + periodFinish: 1654349605, + partners: [ + { + text: + 'Lido on Polygon is a liquid staking solution for MATIC backed by industry-leading staking providers. With Lido on Polygon you can stake your MATIC tokens in a decentralized and secure way and use your stMATIC on the secondary market.\n' + + 'Lido on Polygon is brought to you by Shard Labs, a new generation of blockchain architects who are building a borderless, transparent, and democratic world.', + website: 'https://polygon.lido.fi/', + social: { + telegram: 'https://discord.com/invite/vgdPfhZ', + twitter: 'https://twitter.com/LidoOnPolygon', + }, + }, + ], + }, + + { + id: 'moo_sushi-jrt-eth-jarvis', + name: 'Jarvis', + assets: ['JRT', 'ETH'], + token: 'mooSushiJRT-ETH', + tokenDecimals: 18, + tokenAddress: '0xfdE69969f4527343D78F9C9AC797ded29098B215', + tokenOracle: 'lps', + tokenOracleId: 'sushi-jrt-eth', + earnedToken: 'JRT-ETH-KPI', + earnedTokenDecimals: 18, + earnedTokenAddress: '0x37c2a140bD1dE90D195d7CE3587fAbA7963879Fb', + earnContractAddress: '0x87346455bC3216fFa5c3C8Df21d7B70183B07399', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'JRT-ETH-KPI', + partnership: true, + status: 'active', + isMooStaked: true, + periodFinish: 1651676206, + partners: [ + { + logo: 'stake/jarvis/logo.png', + background: 'stake/jarvis/bg.png', + text: 'arvis Network is a set of protocols and applications to bring DeFi to everyone. Its first protocol, Synthereum, pioneered a capital efficient manner to issue and exchange synthetic fiat currencies on Ethereum and Polygon. Called jFIAT, these stablecoins are redeemable for USDC at the oracle price, making them stable and liquid.', + website: 'https://jarvis.network/', + social: { + telegram: 'https://discord.com/invite/2GbKwERXDc', + twitter: 'https://twitter.com/jarvis_network', + }, + }, + ], + }, + + { + id: 'moo_kyber-usdc-jeur-jarvis', + name: 'Jarvis', + assets: ['jEUR', 'USDC'], + token: 'mooKyberUSDC-jEUR', + tokenDecimals: 18, + tokenAddress: '0x4A041eD4dda1cf460D557E1bdCBf0b29c02A1b3c', + tokenOracle: 'lps', + tokenOracleId: 'kyber-usdc-jeur', + earnedToken: 'BIFI', + earnedTokenDecimals: 18, + earnedTokenAddress: '0xFbdd194376de19a88118e84E279b977f165d01b8', + earnContractAddress: '0xE2C04ff677394872e43ee06B4a28a3cbd542A327', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'BIFI', + partnership: true, + status: 'active', + isMooStaked: true, + periodFinish: 1637584703, + partners: [ + { + logo: 'stake/jarvis/logo.png', + background: 'stake/jarvis/bg.png', + text: 'Jarvis Network is a set of protocols and applications to bring DeFi to everyone. Its first protocol, Synthereum, pioneers a capital efficient manner to issue and exchange synthetic fiat currencies on Ethereum and Polygon. Called jFIAT, these stablecoins are redeemable for USDC at the oracle price, making them stable and liquid.', + website: 'https://jarvis.network/', + social: { + telegram: 'https://t.me/jarvisnetwork', + twitter: 'https://twitter.com/jarvis_network', + }, + }, + ], + }, + + { + id: 'moo_curve-am3crv-jarvis', + name: 'Jarvis', + logo: 'polygon/CURVE-3Pool.png', + token: 'mooCurveAm3CRV', + tokenDecimals: 18, + tokenAddress: '0xAA7C2879DaF8034722A0977f13c343aF0883E92e', + tokenOracle: 'lps', + tokenOracleId: 'curve-am3crv', + earnedToken: 'jEUR', + earnedTokenDecimals: 18, + earnedTokenAddress: '0x4e3Decbb3645551B8A19f0eA1678079FCB33fB4c', + earnContractAddress: '0x5936Db923b6E1727DA19d801eC22CeE555b6047b', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'jEUR', + partnership: true, + status: 'active', + isMooStaked: true, + periodFinish: 1636527713, + partners: [ + { + logo: 'stake/jarvis/logo.png', + background: 'stake/jarvis/bg.png', + text: 'Jarvis Network is a set of protocols and applications to bring DeFi to everyone. Its first protocol, Synthereum, pioneers a capital efficient manner to issue and exchange synthetic fiat currencies on Ethereum and Polygon. Called jFIAT, these stablecoins are redeemable for USDC at the oracle price, making them stable and liquid.', + website: 'https://jarvis.network/', + social: { + telegram: 'https://t.me/jarvisnetwork', + twitter: 'https://twitter.com/jarvis_network', + }, + }, + ], + }, + + { + id: 'moo_BIFI-jarvis', + name: 'Jarvis', + logo: 'single-assets/BIFI.png', + token: 'mooPolygonBIFI', + tokenDecimals: 18, + tokenAddress: '0xfEcf784F48125ccb7d8855cdda7C5ED6b5024Cb3', + tokenOracle: 'tokens', + tokenOracleId: 'BIFI', + earnedToken: 'BIFI', + earnedTokenDecimals: 18, + earnedTokenAddress: '0xFbdd194376de19a88118e84E279b977f165d01b8', + earnContractAddress: '0x68161e06104d2d2f48cBfE7f6970720BB62DCA92', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'BIFI', + partnership: true, + status: 'active', + isMooStaked: true, + periodFinish: 1635159408, + partners: [ + { + logo: 'stake/jarvis/logo.png', + background: 'stake/jarvis/bg.png', + text: 'Jarvis Network is a set of protocols and applications to bring DeFi to everyone. Its first protocol, Synthereum, pioneers a capital efficient manner to issue and exchange synthetic fiat currencies on Ethereum and Polygon. Called jFIAT, these stablecoins are redeemable for USDC at the oracle price, making them stable and liquid.', + website: 'https://jarvis.network/', + social: { + telegram: 'https://t.me/jarvisnetwork', + twitter: 'https://twitter.com/jarvis_network', + }, + }, + ], + }, + + { + id: 'moo_QUICK-polysage', + name: 'PolySage', + logo: 'single-assets/QUICK.png', + token: 'mooQuick', + tokenDecimals: 18, + tokenAddress: '0x659418cc3cf755F5367a51aDb586a7F770Da6d29', + tokenOracle: 'tokens', + tokenOracleId: 'QUICK', + earnedToken: 'polySAGE', + earnedTokenDecimals: 18, + earnedTokenAddress: '0x2ed945Dc703D85c80225d95ABDe41cdeE14e1992', + earnContractAddress: '0xC01b5D452F2a5571E8FbC2D589Ab940DB7B16EFA', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'polySAGE', + partnership: true, + status: 'active', + isMooStaked: true, + periodFinish: 1635001080, + partners: [ + { + logo: 'stake/polysage/logo.png', + background: 'stake/polysage/bg.png', + text: + 'PolySage Finance is a next-generation yield farming protocol on the Polygon network with lots of unique and creative features that enable you to earn a passive income. We are trying to create a protocol like Yearn, but with a reduced token supply and high value for Polygon Network users, LP providers and stakers.\n' + + '\n' + + 'PolySage is a Layered farm that is temporary.', + website: 'https://polysage.finance/', + social: { + telegram: 'https://t.me/polywisedefi', + twitter: 'https://twitter.com/polywisefinance', + }, + }, + ], + }, + + { + id: 'moo_bifi-usdc-cafe', + name: 'CafeSwap', + assets: ['BIFI', 'USDC'], + token: 'mooSushiUSDC-BIFI', + tokenDecimals: 18, + tokenAddress: '0x03F69AAF4c8512f533Da46cC9eFd49C4969e3CB8', + tokenOracle: 'lps', + tokenOracleId: 'sushi-usdc-bifi', + earnedToken: 'pBREW', + earnedTokenDecimals: 18, + earnedTokenAddress: '0xb5106A3277718eCaD2F20aB6b86Ce0Fee7A21F09', + earnContractAddress: '0x602fAEa31a6F388559E88B93666Ff5908CAE2c9c', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'pBREW', + partnership: true, + status: 'active', + isMooStaked: true, + periodFinish: 1635796979, + partners: [ + { + logo: 'stake/cafeswap/logo.png', + background: 'stake/cafeswap/bg.png', + text: 'CafeSwap is a yield farming and staking platform on BSC Chain and polygon. We have chosen BSC and Polygon because of its low tnx fees and faster speed. We have built this project to provide the best experience with farming while regulating the supply, We believe in partnerships hence we aim to bring all BSC and Polygon DeFi ecosystems in one place to have a friendly ecosystem for all of us.', + website: 'https://cafeswap.finance', + social: { + telegram: 'https://t.me/CafeSwap', + twitter: 'https://twitter.com/cafeswapfinance', + }, + }, + ], + }, + { + id: 'moo_curve-ren-tetu', + name: 'Tetu', + logo: 'single-assets/renBTC.png', + token: 'mooCurveRen', + tokenDecimals: 18, + tokenAddress: '0x8c9d3bc4425773bd2f00c4a2ac105c5ad73c8141', + tokenOracle: 'lps', + tokenOracleId: 'curve-poly-ren', + earnedToken: 'TETU', + earnedTokenDecimals: 18, + earnedTokenAddress: '0x255707b70bf90aa112006e1b07b9aea6de021424', + earnContractAddress: '0x73EA48822D7802590294a56d153b3458849A41C2', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'TETU', + partnership: true, + status: 'active', + isMooStaked: true, + periodFinish: 1633848198, + partners: [ + { + logo: 'stake/tetu/logo.png', + background: 'stake/tetu/bg.png', + text: `TETU is a DeFi application built on Polygon that implements automated yield farming strategies in order to provide investors with a safe and secure method of receiving a high yield on their investments. TETU tokens represent a share of the collective efforts and expertise of the team who are wholly focused on creating robust income streams for Tetu users. Audited by PeckShield, our tech speaks for itself, but more important are the people behind it forming a culture of inclusivity, transparency, and a global community who all wants high yields secured by competent technology.`, + website: 'https://app.tetu.io/', + social: { + telegram: 'https://t.me/tetu_io', + twitter: 'https://twitter.com/tetu_io', + }, + }, + ], + }, + + { + id: 'moo_banana_matic-polywise', + name: 'PolyWise', + assets: ['BANANA', 'MATIC'], + token: 'mooApeSwapBANANA-MATIC', + tokenDecimals: 18, + tokenAddress: '0xADA7F98fb2594E76914EB593e74B348A498Ea5Bd', + tokenOracle: 'lps', + tokenOracleId: 'ape-banana-matic', + earnedToken: 'WISE', + earnedTokenDecimals: 18, + earnedTokenAddress: '0x4c19DdeebAF84cA3A255730295AD9d824D4Ff51f', + earnContractAddress: '0x4d20db515199B7C799Ca0da4e2Eaedc99F1367Fc', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'polyWISE', + partnership: true, + status: 'active', + isMooStaked: true, + periodFinish: 1633493417, + partners: [ + { + logo: 'stake/polywise/logo.png', + background: 'stake/polywise/bg.png', + text: `PolyWise is a high-yield on Polygon which is opening dividend pools soon. You will be able to stake $WISE and earn $USDC and $WMATIC. PolyWise is audited by Paladin, KYC'd by rugdoc and has a low risk rating on Rugdoc.`, + website: 'https://polywise.finance/', + social: { + telegram: 'https://t.me/polywisedefi', + twitter: 'https://twitter.com/polywisefinance', + }, + }, + ], + }, + + { + id: 'moo_curve-tricrypto-polyalpha', + name: 'PolyAlpha', + logo: 'uncategorized/ATRICRYPTO.png', + token: 'mooCurveATriCrypto3', + tokenDecimals: 18, + tokenAddress: '0x5A0801BAd20B6c62d86C566ca90688A6b9ea1d3f', + tokenOracle: 'lps', + tokenOracleId: 'curve-poly-atricrypto3', + earnedToken: 'ALPHA', + earnedTokenDecimals: 18, + earnedTokenAddress: '0x0B048D6e01a6b9002C291060bF2179938fd8264c', + earnContractAddress: '0x0C2741b8eD387803D876Cd63A67dD814a029A4f1', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'polyALPHA', + partnership: true, + status: 'active', + isMooStaked: true, + periodFinish: 1633420100, + partners: [ + { + logo: 'stake/polyalpha/logo.png', + background: 'stake/polyalpha/bg.png', + text: `PolyAlpha Finance is the second layer to PolygonFarm’s ecosystem and it’s another famers’ fav! Placing the security of investors’ funds as the topmost priority, 2 full security audits have been completed with CertiK and Paladin, two of the best blockchain security experts. To further signal transparency, the project owner has again completed the RugDoc KYC and received a low-risk review. In just 10 days, PolyAlpha has reached from $8M to $10M TVL (~$1.2M MC), over $500K in liquidity, and averaged just under $1M in 24-hour trading volume. The relatively higher trading volume for the native token $ALPHA is highly advantageous for liquidity providers and Beefy vaults will no question elevate benefits for both communities! With a scares supply of only 9300 and a constant emission rate of 0.011/block, $ALPHA’s tokenomics are built for success!`, + website: 'https://polyalpha.finance/', + social: { + telegram: 'https://t.me/PolyAlphaFi', + twitter: 'https://twitter.com/PolyAlphaFi', + }, + }, + ], + }, + { + id: 'moo_curve-poly-sandman', + name: 'Sandman', + logo: 'polygon/CURVE-3Pool.png', + token: 'mooCurveAm3CRV', + tokenDecimals: 18, + tokenAddress: '0xAA7C2879DaF8034722A0977f13c343aF0883E92e', + tokenOracle: 'lps', + tokenOracleId: 'curve-am3crv', + earnedToken: 'DELIRIUM', + earnedTokenDecimals: 18, + earnedTokenAddress: '0x238779aFfE6FFD475cB7e84582FcA7789F310Dc8', + earnContractAddress: '0x7ee6B34B51eAEbc887A16616AfE0855795B6ac74', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'DELIRIUM', + partnership: true, + status: 'active', + isMooStaked: true, + periodFinish: 1633058948, + partners: [ + { + logo: 'stake/sandman/logo.png', + background: 'stake/sandman/bg.png', + text: `The Greatest Multilayered Hybrid Yield Farming, NFTs & Vaults. +The First Stealth Presale ever, sold out in under 30 secs. On its path to Community-Owned AMM, Gambling, and a premier DAO. +We have several uses for your NFTs: NFTs Battles, NFTs farm boosting, NFT's Game Cards over layer. +Sandman Finance was the first project to present the swap/utility token. Where you are rewarded just by holding the presale token. Never seen before!`, + website: 'https://sandman.finance/', + social: { + telegram: 'https://t.me/SandMan_Finance', + twitter: 'https://twitter.com/sandman_finance', + }, + }, + ], + }, + { + id: 'moo_bifi-yieldwatch', + name: 'Yieldwatch', + logo: 'single-assets/BIFI.png', + token: 'mooPolygonBIFI', + tokenDecimals: 18, + tokenAddress: '0xfEcf784F48125ccb7d8855cdda7C5ED6b5024Cb3', + tokenOracle: 'tokens', + tokenOracleId: 'BIFI', + earnedToken: 'WATCH', + earnedTokenDecimals: 18, + earnedTokenAddress: '0x09211Dc67f9fe98Fb7bBB91Be0ef05f4a12FA2b2', + earnContractAddress: '0x71a4449dD18177A1a19fEF671558964f10AF4be8', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'WATCHpoly', + partnership: true, + status: 'active', + isMooStaked: true, + periodFinish: 1631482291, + partners: [ + { + logo: 'stake/yieldwatch/logo.png', + background: 'stake/yieldwatch/bg.png', + text: 'yieldwatch.net is a smart yield farming dashboard that lets you monitor your liquidity pools, yield farming and token staking performance with a casual and sleek UI, which is optimised for mobile use. Just like the lifeguards in Malibu watch over the swimmers, we watch over your yield.', + website: 'https://www.yieldwatch.net/', + social: { + telegram: 'https://t.me/yieldwatch', + twitter: 'https://twitter.com/yieldwatch', + }, + }, + ], + }, + { + id: 'moo_bifi-pearzap', + name: 'PearZap', + logo: 'single-assets/BIFI.png', + token: 'mooPolygonBIFI', + tokenDecimals: 18, + tokenAddress: '0xfEcf784F48125ccb7d8855cdda7C5ED6b5024Cb3', + tokenOracle: 'tokens', + tokenOracleId: 'BIFI', + earnedToken: 'PEAR', + earnedTokenDecimals: 18, + earnedTokenAddress: '0xc8bcb58caEf1bE972C0B638B1dD8B0748Fdc8A44', + earnContractAddress: '0x77D205420cE5557cd8E9DEFC915Fd0D701CCaEa3', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'PEAR', + partnership: true, + status: 'active', + isMooStaked: true, + periodFinish: 1629328696, + partners: [ + { + logo: 'stake/pearzap/logo.png', + background: 'stake/pearzap/bg.png', + text: "PearZap Finance is a yield farming project on the Polygon Chain, born out of the idea of bringing consistency in high APR's and security to our investors through our $Pear native token. Join the PearZap family and be part of a project that prides itself in quality partnerships and delivering on the promises we make, no matter how juicy they may be. 🍐⚡️", + website: 'https://pearzap.com/', + social: { + telegram: 'https://t.me/pearzap', + twitter: 'https://twitter.com/pearzap', + }, + }, + ], + }, + { + id: 'moo_bifi-polypup', + name: 'PolyPup', + logo: 'single-assets/BIFI.png', + token: 'mooPolygonBIFI', + tokenDecimals: 18, + tokenAddress: '0xfEcf784F48125ccb7d8855cdda7C5ED6b5024Cb3', + tokenOracle: 'tokens', + tokenOracleId: 'BIFI', + earnedToken: 'BALL', + earnedTokenDecimals: 18, + earnedTokenAddress: '0x883abe4168705d2e5da925d28538b7a6aa9d8419', + earnContractAddress: '0x6B30E11d72AA1D14f79Ba52aF3139F798DFca18d', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'BALL', + partnership: true, + status: 'active', + isMooStaked: true, + periodFinish: 1629982597, + partners: [ + { + logo: 'stake/polypup/logo.png', + background: 'stake/polypup/background.png', + text: `PolyPup Finance is a new DeFi project on Polygon featuring a deflationary token model. The main features are a low emission rate, low supply, and a layered farming approach to the platform. This model will help end-users earn maximum yields over a long time. Buyback and burns will help stabilize a price floor for long term holders.`, + website: 'https://bone.polypup.finance/', + social: { + telegram: 'https://t.me/PolyPupFarm', + twitter: 'https://twitter.com/PolyPup1', + }, + }, + ], + }, + { + id: 'moo_bifi-polyfarm', + name: 'PolygonFarm', + logo: 'single-assets/BIFI.png', + token: 'mooPolygonBIFI', + tokenDecimals: 18, + tokenAddress: '0xfEcf784F48125ccb7d8855cdda7C5ED6b5024Cb3', + tokenOracle: 'tokens', + tokenOracleId: 'BIFI', + earnedToken: 'SPADE', + earnedTokenDecimals: 18, + earnedTokenAddress: '0xf5EA626334037a2cf0155D49eA6462fDdC6Eff19', + earnContractAddress: '0x3439A5815153CA1156828bBa89Aa332f41534602', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'SPADE', + partnership: true, + status: 'active', + isMooStaked: true, + periodFinish: 1629094811, + partners: [ + { + logo: 'stake/polyfarm/logo.png', + background: 'stake/polyfarm/bg.png', + text: "PolygonFarm Finance is a community led next generation sustainable stable-yield farming protocol established exclusively on the Polygon ecosystem. PolygonFarm Finance's Admin completed KYC with RugDoc. PolygonFarm Finance has deflationary token model with very limited maximum supply of 500,000 SPADE tokens & very low emission rate. There will be multiple layered farms by PolygonFarm and each layer will also has pools with previous layers' native tokens.", + website: 'https://polygonfarm.finance/', + social: { + telegram: 'https://t.me/PolygonFarmFinance', + twitter: 'https://twitter.com/PolygonFarmFi', + }, + }, + ], + }, + { + id: 'moo_bifi-lithium', + name: 'PolyWantsACracker', + logo: 'single-assets/BIFI.png', + token: 'mooPolygonBIFI', + tokenDecimals: 18, + tokenAddress: '0xfEcf784F48125ccb7d8855cdda7C5ED6b5024Cb3', + tokenOracle: 'tokens', + tokenOracleId: 'BIFI', + earnedToken: 'mooPolyCrackerLITH', + earnedTokenDecimals: 18, + earnedTokenAddress: '0xE08d7B24E2D22B242dEA3DE85032261810F35B09', + earnContractAddress: '0xC1d4DaBE517B5715077082ade69872ab82F86899', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'LITHIUM', + partnership: true, + status: 'closed', + isMooStaked: true, + periodFinish: 1627849794, + partners: [ + { + logo: 'stake/polycracker/logo.png', + background: 'stake/polycracker/bg.png', + text: "PolyWantsACracker is a yield farm on Polygon Network (MATIC). It was designed in response to specific demand from the yield farming community, and the farm's LITHIUM token will provide superior value to investors by being used in the farm's next layer, which will introduce genre-redefining features and usher in an entirely new generation of sustainable, user-owned yield farms.", + website: 'https://polywantsacracker.farm/', + social: { + telegram: 'https://t.me/PolyWantsACracker_Farm', + twitter: 'https://twitter.com/PolyWantsAFarm', + }, + }, + ], + }, + { + id: 'moo_polyyeld-xyeld', + name: 'PolyYeld', + logo: 'stake/xyeld/xyeld-matic.svg', + token: 'mooPolyyeldL2QuickWMATIC-xYELD', + tokenDecimals: 18, + tokenAddress: '0xa450f23570868A33bc66bF60f2268E85575bbDC9', + tokenOracle: 'lps', + tokenOracleId: 'polyyeld-xyeld-quick-wmatic-xyeld', + earnedToken: 'mooPolyyeldL2xYELD', + earnedTokenDecimals: 18, + earnedTokenAddress: '0x2Fa3A4671b977a8f0c16334e4CF16EA91F22db75', + earnContractAddress: '0x6b4971b8dAfc3c426EdE7E629394f31B0BdF3c16', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'xYELD', + partnership: true, + status: 'closed', + isMooStaked: true, + periodFinish: 1627595163, + partners: [ + { + logo: 'stake/xyeld/logo.png', + background: 'stake/xyeld/bg.png', + text: 'PolyYeld Finance is a dedicated team of five developers, aiming to deliver a high value yield farming protocol for Polygon users; combining features from other DeFi projects with a twist of their own unique and innovative ideas for their investors to gain maximum yields. Powered by Polygon; the first well-structured, easy-to-use platform for Ethereum scaling and infrastructure development. PolyYeld Finance is a next-generation yield farming protocol on the Polygon network with lots of unique and creative features that enable you to earn a passive income. We are trying to create a protocol like Yearn, but with a reduced token supply and high value for Polygon Network users, LP providers and stakers. There will only be 62,100 YELD tokens which will be minted throughout the course of 2-4 months.', + website: 'https://layer.polyyeld.finance/', + social: { + telegram: 'https://t.me/polyyeld', + twitter: 'https://twitter.com/PolyYeldFinance', + }, + }, + ], + }, + { + id: 'moo_jetswap-pwings', + name: 'JetSwap', + logo: 'polygon/USDC-USDT.png', + token: 'mooJetSwapUSDC-USDT', + tokenDecimals: 18, + tokenAddress: '0x93c9f29CF2496e73f3d8b07055e2359267207147', + tokenOracle: 'lps', + tokenOracleId: 'jetswap-poly-usdc-usdt', + earnedToken: 'mooJetSwapPWINGS', + earnedTokenDecimals: 18, + earnedTokenAddress: '0xa55e8326a9AC7B0bFcA5E6Fc9Cf1141E2dc11f67', + earnContractAddress: '0x9231457582c0E6F3c631e93AEA2d063F59606710', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'pWINGS', + partnership: true, + status: 'closed', + isMooStaked: true, + periodFinish: 1626566247, + partners: [ + { + logo: 'stake/jetswap/logo.png', + background: 'stake/jetswap/background.png', + text: 'Jetswap is a decentralized Automated Market Maker (AMM) on Polygon with low fees and instant trade execution. Trade from the comfort of your own wallet! Trade directly from your favorite wallet application! There are no accounts to set up or trading limits. You have full control over your assets and Jetswap has 0 control over your assets. You can earn BIG WINGS rewards when you deposit your Jetswap WINGS-LP to the WINGS farm. The WINGS LP tokens generate trading fees for the depositor! Even if there is not a supported WINGS farm you can still earn a percentage of every trading fee.', + website: 'https://polygon.jetswap.finance/', + social: { + telegram: 'https://t.me/jetfuelfinance', + twitter: 'https://twitter.com/Jetfuelfinance', + }, + }, + ], + }, + { + id: 'moo_mai_usdc_matic-qidao', + name: 'QiDao', + logo: 'polygon/MIMATIC-USDC.png', + token: 'mooMaiUSDC-miMATIC', + tokenDecimals: 18, + tokenAddress: '0xebe0c8d842AA5A57D7BEf8e524dEabA676F91cD1', + tokenOracle: 'lps', + tokenOracleId: 'mai-usdc-mimatic', + earnedToken: 'QI', + earnedTokenDecimals: 18, + earnedTokenAddress: '0x580a84c73811e1839f75d86d75d88cca0c241ff4', + earnContractAddress: '0xd1Cae9751268Eb4f93bfdE9A4788F312D2c0D045', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'QI', + partnership: true, + status: 'closed', + isMooStaked: true, + periodFinish: 1626534866, + partners: [ + { + logo: 'stake/qidao/logo.png', + background: 'stake/qidao/background.png', + text: `QiDao is Polygon's first native stablecoin protocol and a way for you to hold on to your crypto while still being able to spend its value. It allows you to borrow stablecoins at 0% interest, without selling your crypto. MAI is a stablecoin collateralized by your MATIC holdings.`, + website: 'https://www.mai.finance/', + social: { + telegram: 'https://t.me/QiDaoProtocol', + twitter: 'https://twitter.com/QiDaoProtocol', + }, + }, + ], + }, + { + id: 'moo_poly_usdc-bone', + name: 'PolyPup', + logo: 'single-assets/USDC.svg', + token: 'mooPolypupUSDC-BONE', + tokenDecimals: 18, + tokenAddress: '0x8Ce906F6f383c31b09B1D2A5f2c9f480b87ceb58', + tokenOracle: 'lps', + tokenOracleId: 'polypup-usdc-bone', + earnedToken: 'mooPolypupBONE', + earnedTokenDecimals: 18, + earnedTokenAddress: '0x8Fa291074B9E28055fFdBCd4C1C1Dad67B9a130A', + earnContractAddress: '0xa8b86b9AF7e844DA90A2e72840Ad01CCBD11EdC3', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'BONE', + partnership: true, + status: 'closed', + isMooStaked: true, + periodFinish: 1626560038, + partners: [ + { + logo: 'stake/polypup/logo.png', + background: 'stake/polypup/background.png', + text: `PolyPup Finance is a new DeFi project on Polygon featuring a deflationary token model. The main features are a low emission rate, low supply, and a layered farming approach to the platform. This model will help end-users earn maximum yields over a long time. Buyback and burns will help stabilize a price floor for long term holders.`, + website: 'https://bone.polypup.finance/', + social: { + telegram: 'https://t.me/PolyPupFarm', + twitter: 'https://twitter.com/PolyPup1', + }, + }, + ], + }, + { + id: 'moo_atricrypto-bone', + name: 'Boneswap', + logo: 'uncategorized/ATRICRYPTO.png', + token: 'mooCurveATriCrypto', + tokenDecimals: 18, + tokenAddress: '0x3dab1aCB811dc4C8b2FdC77812552f4d4Efd0A8c', + tokenOracle: 'lps', + tokenOracleId: 'curve-poly-atricrypto', + earnedToken: 'BONE', + earnedTokenDecimals: 18, + earnedTokenAddress: '0x80244c2441779361f35803b8c711c6c8fc6054a3', + earnContractAddress: '0xed5010eDF8812003B7d4c9a69E7AfCBceaB62F4f', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'BONEswap', + partnership: true, + status: 'closed', + isMooStaked: true, + periodFinish: 1626212502, + partners: [ + { + logo: 'stake/boneswap/logo.png', + background: 'stake/boneswap/background.png', + text: `Bone Swap is a full ecosystem that have yield farming and automated market-making (AMM) for the Polygon network. We introduce Decentralized Exchange (DEX), Yield Farm, Info Service, which is the strong and secure foundation with our own BONE token as the center of our service.`, + website: 'https://farm.boneswap.finance', + social: { + telegram: 'https://t.me/boneswapfi', + twitter: 'https://twitter.com/boneswapfi', + }, + }, + ], + }, + { + id: 'moo_curve-poly-ren', + name: 'PolyPup', + logo: 'single-assets/renBTC.png', + token: 'mooCurveRen', + tokenDecimals: 18, + tokenAddress: '0x8c9d3Bc4425773BD2F00C4a2aC105c5Ad73c8141', + tokenOracle: 'lps', + tokenOracleId: 'curve-poly-ren', + earnedToken: 'mooPolypupBONE', + earnedTokenDecimals: 18, + earnedTokenAddress: '0x8Fa291074B9E28055fFdBCd4C1C1Dad67B9a130A', + earnContractAddress: '0x54c9B796a96877dee81E1A22e9DfA2488ab2675D', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'BONE', + partnership: true, + status: 'closed', + isMooStaked: true, + periodFinish: 1625858058, + partners: [ + { + logo: 'stake/polypup/logo.png', + background: 'stake/polypup/background.png', + text: `PolyPup Finance is a new DeFi project on Polygon featuring a deflationary token model. The main features are a low emission rate, low supply, and a layered farming approach to the platform. This model will help end-users earn maximum yields over a long time. Buyback and burns will help stabilize a price floor for long term holders.`, + website: 'https://bone.polypup.finance/', + social: { + telegram: 'https://t.me/PolyPupFarm', + twitter: 'https://twitter.com/PolyPup1', + }, + }, + ], + }, + { + id: 'moo_matic_yeld-yeld', + name: 'PolyYeld', + logo: 'single-assets/YELD.png', + token: 'mooPolyyeldWMATIC-YELD', + tokenDecimals: 18, + tokenAddress: '0xbea5D2Aed651F579fa3e7ADAA2eC51276B2ea420', + tokenOracle: 'lps', + tokenOracleId: 'polyyeld-quick-wmatic-yeld', + earnedToken: 'YELD', + earnedTokenDecimals: 18, + earnedTokenAddress: '0xd0f3121A190d85dE0AB6131f2bCEcdbfcfB38891', + earnContractAddress: '0x86EB0e64Ca632543BE37e73836d84eD612bb7C34', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'YELD', + partnership: true, + status: 'closed', + isMooStaked: true, + periodFinish: 1625530839, + partners: [ + { + logo: 'stake/polyyeld/logo.png', + background: 'stake/polyyeld/background.png', + text: `PolyYeld Finance is a next-generation yield farming protocol on the Polygon network with lots of unique and creative features that enable you to earn a passive income. We are trying to create a protocol like Yearn, but with a reduced token supply with high value for Polygon Network users, LP providers, and stakers. There will only be 62,100 YELD tokens which will be minted throughout the course of 2-3 months.`, + website: 'https://polyyeld.finance/', + social: { + telegram: 'https://t.me/polyyeld', + discord: 'https://discord.gg/8nK8aQqnCc', + twitter: 'https://twitter.com/PolyYeldFinance', + }, + }, + ], + }, + { + id: 'moo_aave-eth', + name: 'Iron / Garuda / Fanatics', + logo: 'single-assets/ETH.svg', + token: 'mooAaveETH', + tokenDecimals: 18, + tokenAddress: '0x77276a7c9Ff3a6cbD334524d6F1f6219D039ac0E', + tokenOracle: 'tokens', + tokenOracleId: 'ETH', + earnedToken: 'mooPolygonBIFI', + earnedTokenDecimals: 18, + earnedTokenAddress: '0xfEcf784F48125ccb7d8855cdda7C5ED6b5024Cb3', + earnContractAddress: '0x9B508ad657ed5A139D1a7c97fD84d7B7240849Cf', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'BIFI', + partnership: true, + status: 'closed', + isMooStaked: true, + periodFinish: 1622830150, + partners: [ + { + logo: 'stake/garuda/logo.png', + background: 'stake/polygon/background.png', + text: `GarudaSwap is the 1st Next Generation Automatic Liquidity Acquisition yield farm and AMM decentralized exchange running on Binance Smart Chain with lots of unique and creative features that let you earn and win for a long time.`, + website: 'https://garudaswap.finance/', + social: { + telegram: 'https://t.me/garudaswap', + twitter: 'https://twitter.com/GarudaSwap', + }, + }, + { + logo: 'stake/ironfinance/logo.png', + background: 'stake/polygon/background.png', + text: `Inspired by FRAX, a unique fractionally-algorithmic stablecoin on the Ethereum network, and utilizing a similar approach, we have created IRON, the first partially-collateralized stablecoin on Binance Smart Chain. The IRON protocol makes use of 2 tokens to achieve its goal: STEEL and IRON. + STEEL - The share token of the Iron finance protocol. Serves as part of the collateral behind IRON. Backed by seigniorage revenue as well as the value of any excess collateral. + IRON - A stablecoin pegged to $1. Partially backed by a continuously adjusting ratio of collateral equal to $1 in value. + Check out the docs for more information: https://docs.iron.finance/`, + website: 'https://app.iron.finance/', + social: { + telegram: 'https://t.me/ironfinance', + twitter: 'https://twitter.com/IronFinance', + }, + }, + { + logo: 'stake/fanatics/logo.png', + background: 'stake/polygon/background.png', + text: `fanatics.finance is a whole new Decentralized Exchange on Binance smart chain as known as 3° Generation yield farming mechanism that allows perpetual price increase with a sustainable and profitable farming yield with a Timelock contract at launch! And numerous new Features. Fanatics Finance is under Fanatics Finance is under license from KSOC Sports OÜ Registration: 16197453 Harju County, Tallinn, Kesklinna district, Pärnu mnt 158, ESTONIA.`, + website: 'https://fanaticsfinance.com/', + social: { + telegram: 'https://t.me/fanaticsfinance_EN', + twitter: 'https://twitter.com/fanaticsfinance', + }, + }, + ], + }, + { + id: 'moo_aave-btc', + name: 'Iron / Garuda / Fanatics', + logo: 'single-assets/BTCB.svg', + token: 'mooAaveWBTC', + tokenDecimals: 8, + tokenAddress: '0xD3395577febc6AdaB25490a69955ebC47040766C', + tokenOracle: 'tokens', + tokenOracleId: 'WBTC', + earnedToken: 'mooPolygonBIFI', + earnedTokenDecimals: 18, + earnedTokenAddress: '0xfEcf784F48125ccb7d8855cdda7C5ED6b5024Cb3', + earnContractAddress: '0x20948Cad130c3D7B24d27CC66163b4aaed4684F0', + earnContractAbi: govPoolABI, + earnedOracle: 'tokens', + earnedOracleId: 'BIFI', + partnership: true, + status: 'closed', + isMooStaked: true, + periodFinish: 1622830106, + partners: [ + { + logo: 'stake/garuda/logo.png', + background: 'stake/polygon/background.png', + text: `GarudaSwap is the 1st Next Generation Automatic Liquidity Acquisition yield farm and AMM decentralized exchange running on Binance Smart Chain with lots of unique and creative features that let you earn and win for a long time.`, + website: 'https://garudaswap.finance/', + social: { + telegram: 'https://t.me/garudaswap', + twitter: 'https://twitter.com/GarudaSwap', + }, + }, + { + logo: 'stake/ironfinance/logo.png', + background: 'stake/polygon/background.png', + text: `Inspired by FRAX, a unique fractionally-algorithmic stablecoin on the Ethereum network, and utilizing a similar approach, we have created IRON, the first partially-collateralized stablecoin on Binance Smart Chain. The IRON protocol makes use of 2 tokens to achieve its goal: STEEL and IRON. + STEEL - The share token of the Iron finance protocol. Serves as part of the collateral behind IRON. Backed by seigniorage revenue as well as the value of any excess collateral. + IRON - A stablecoin pegged to $1. Partially backed by a continuously adjusting ratio of collateral equal to $1 in value. + Check out the docs for more information: https://docs.iron.finance/`, + website: 'https://app.iron.finance/', + social: { + telegram: 'https://t.me/ironfinance', + twitter: 'https://twitter.com/IronFinance', + }, + }, + { + logo: 'stake/fanatics/logo.png', + background: 'stake/polygon/background.png', + text: `fanaticsfinance is a whole new Decentralized Exchange on Binance smart chain as known as 3° Generation yield farming mechanism that allows perpetual price increase with a sustainable and profitable farming yield with a Timelock contract at launch! And numerous new Features. Fanatics Finance is under Fanatics Finance is under license from KSOC Sports OÜ Registration: 16197453 Harju County, Tallinn, Kesklinna district, Pärnu mnt 158, ESTONIA.`, + website: 'https://fanaticsfinance.com/', + social: { + telegram: 'https://t.me/fanaticsfinance_EN', + twitter: 'https://twitter.com/fanaticsfinance', + }, + }, + ], + }, +]; diff --git a/src/features/configure/vault/arbitrum_pools.js b/src/features/configure/vault/arbitrum_pools.js new file mode 100644 index 000000000..44f8eb020 --- /dev/null +++ b/src/features/configure/vault/arbitrum_pools.js @@ -0,0 +1,491 @@ +export const arbitrumPools = [ + { + id: 'arbi-bifi-maxi', + logo: 'single-assets/BIFI.png', + name: 'BIFI Maxi', + token: 'BIFI', + tokenDescription: 'Beefy', + tokenAddress: '0x99C409E5f62E4bd2AC142f17caFb6810B8F0BAAE', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooArbitrumBIFI', + earnedTokenAddress: '0x78AB636351c1C5f117C1442B82d14aB3a92F8464', + earnContractAddress: '0x78AB636351c1C5f117C1442B82d14aB3a92F8464', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'BIFI', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Beefy', + assets: ['BIFI'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'Maxi', + withdrawalFee: '0.05%', + buyTokenUrl: + 'https://app.sushi.com/swap?inputCurrency=ETH&outputCurrency=0x99C409E5f62E4bd2AC142f17caFb6810B8F0BAAE', + createdAt: 1636764972, + }, + { + id: 'sushi-arb-magic-weth', + name: 'MAGIC-ETH LP', + token: 'MAGIC-ETH LP', + tokenDescription: 'Sushi', + tokenAddress: '0xB7E50106A5bd3Cf21AF210A755F9C8740890A8c9', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSushiMAGIC-ETH', + earnedTokenAddress: '0x8cbaAC87FDD9Bb6C3FdB5b3C870b2443D0284fa6', + earnContractAddress: '0x8cbaAC87FDD9Bb6C3FdB5b3C870b2443D0284fa6', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'sushi-arb-magic-weth', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SushiSwap', + assets: ['MAGIC', 'ETH'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.sushi.com/add/0x82aF49447D8a07e3bd95BD0d56f35241523fBab1/0x539bdE0d7Dbd336b79148AA742883198BBF60342', + buyTokenUrl: + 'https://app.sushi.com/swap?inputCurrency=0x82aF49447D8a07e3bd95BD0d56f35241523fBab1&outputCurrency=0x539bdE0d7Dbd336b79148AA742883198BBF60342', + createdAt: 1639146591, + }, + { + id: 'sushi-arb-weth-gohm', + name: 'gOHM-ETH LP', + token: 'gOHM-ETH LP', + tokenDescription: 'Sushi', + tokenAddress: '0xaa5bD49f2162ffdC15634c87A77AC67bD51C6a6D', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSushigOHM-ETH', + earnedTokenAddress: '0xD295d690b9BF17bd217B94BC50C12729762C1862', + earnContractAddress: '0xD295d690b9BF17bd217B94BC50C12729762C1862', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'sushi-arb-weth-gohm', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SushiSwap', + assets: ['gOHM', 'ETH'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.sushi.com/add/0x82aF49447D8a07e3bd95BD0d56f35241523fBab1/0x8D9bA570D6cb60C7e3e0F31343Efe75AB8E65FB1', + buyTokenUrl: + 'https://app.sushi.com/swap?inputCurrency=0x82aF49447D8a07e3bd95BD0d56f35241523fBab1&outputCurrency=0x8D9bA570D6cb60C7e3e0F31343Efe75AB8E65FB1', + createdAt: 1639146342, + }, + { + id: 'spell-mim-crv', + logo: 'uncategorized/MIM2CRV.svg', + name: 'MIM/USDC/USDT', + token: 'MIM2CRV', + tokenDescription: 'Curve (MIM)', + tokenAddress: '0x30dF229cefa463e991e29D42DB0bae2e122B2AC7', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooAbrcdbrMIM-2CRV', + earnedTokenAddress: '0xDa2307A45D298e855415675bF388e2bd64351D5b', + earnContractAddress: '0xDa2307A45D298e855415675bF388e2bd64351D5b', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'curve-arb-mim', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'MIM', + assets: ['MIM', 'USDC', 'USDT'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + 'OVER_COLLAT_ALGO_STABLECOIN', + ], + stratType: 'StratMultiLP', + withdrawalFee: '0.01%', + addLiquidityUrl: 'https://arbitrum.curve.fi/factory/0/deposit', + createdAt: 1633276273, + }, + { + id: 'sushi-arb-spell-weth', + name: 'SPELL-ETH LP', + token: 'SPELL-ETH LP', + tokenDescription: 'Sushi', + tokenAddress: '0x8f93Eaae544e8f5EB077A1e09C1554067d9e2CA8', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSushiSPELL-WETH', + earnedTokenAddress: '0x149f3dDeB5FF9bE7342D07C35D6dA19Df3F790af', + earnContractAddress: '0x149f3dDeB5FF9bE7342D07C35D6dA19Df3F790af', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'sushi-arb-spell-weth', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SushiSwap', + assets: ['SPELL', 'ETH'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.sushi.com/add/0x3E6648C5a70A150A88bCE65F4aD4d506Fe15d2AF/0x82af49447d8a07e3bd95bd0d56f35241523fbab1', + buyTokenUrl: + 'https://app.sushi.com/swap?inputCurrency=0x3E6648C5a70A150A88bCE65F4aD4d506Fe15d2AF&outputCurrency=0x82af49447d8a07e3bd95bd0d56f35241523fbab1', + createdAt: 1632254179, + }, + { + id: 'sushi-arb-weth-mim', + name: 'MIM-ETH LP', + token: 'MIM-ETH LP', + tokenDescription: 'Sushi', + tokenAddress: '0xb6DD51D5425861C808Fd60827Ab6CFBfFE604959', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSushiMIM-WETH', + earnedTokenAddress: '0x80514CfB7cb438F1f997Ab62fFD1314c1a1c0f12', + earnContractAddress: '0x80514CfB7cb438F1f997Ab62fFD1314c1a1c0f12', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'sushi-arb-weth-mim', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SushiSwap', + assets: ['MIM', 'ETH'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + 'OVER_COLLAT_ALGO_STABLECOIN', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.sushi.com/add/0xFEa7a6a0B346362BF88A9e4A88416B77a57D6c2A/0x82af49447d8a07e3bd95bd0d56f35241523fbab1', + buyTokenUrl: + 'https://app.sushi.com/swap?inputCurrency=0xFEa7a6a0B346362BF88A9e4A88416B77a57D6c2A&outputCurrency=0x82af49447d8a07e3bd95bd0d56f35241523fbab1', + createdAt: 1632254301, + }, + { + id: 'sushi-arb-weth-link-eol', + name: 'LINK-ETH LP', + token: 'LINK-ETH LP', + tokenDescription: 'Sushi', + tokenAddress: '0x7050A8908E2a60899D8788015148241f0993a3FD', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSushiWETH-LINK', + earnedTokenAddress: '0xf785Ef43A082C85ABbe19CA888f91748AA604ac5', + earnContractAddress: '0xf785Ef43A082C85ABbe19CA888f91748AA604ac5', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'sushi-arb-weth-link', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'SushiSwap', + assets: ['LINK', 'ETH'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.sushi.com/add/0xf97f4df75117a78c1A5a0DBb814Af92458539FB4/0x82af49447d8a07e3bd95bd0d56f35241523fbab1', + buyTokenUrl: + 'https://app.sushi.com/swap?inputCurrency=0xf97f4df75117a78c1A5a0DBb814Af92458539FB4&outputCurrency=0x82af49447d8a07e3bd95bd0d56f35241523fbab1', + createdAt: 1632249714, + }, + { + id: 'sushi-arb-eth-usdc', + name: 'USDC-ETH LP', + token: 'USDC-ETH LP', + tokenDescription: 'Sushi', + tokenAddress: '0x905dfCD5649217c42684f23958568e533C711Aa3', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSushiWETH-USDC', + earnedTokenAddress: '0x07Db98358D58Ba9bE90cd0A18cd86AF807ac3B4E', + earnContractAddress: '0x07Db98358D58Ba9bE90cd0A18cd86AF807ac3B4E', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'sushi-arb-eth-usdc', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SushiSwap', + assets: ['USDC', 'ETH'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.sushi.com/add/0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8/0x82af49447d8a07e3bd95bd0d56f35241523fbab1', + buyTokenUrl: + 'https://app.sushi.com/swap?inputCurrency=0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8&outputCurrency=0x82af49447d8a07e3bd95bd0d56f35241523fbab1', + createdAt: 1632243592, + }, + { + id: 'curve-arb-tricrypto', + logo: 'uncategorized/ATRICRYPTO.png', + name: 'TriCrypto', + token: 'crv3crypto', + tokenDescription: 'Curve', + tokenAddress: '0x8e0B8c8BB9db49a46697F3a5Bb8A308e744821D2', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCurveTriCrypto', + earnedTokenAddress: '0xF26C10811D602e39580C9448944ddAe7b183fD95', + earnContractAddress: '0xF26C10811D602e39580C9448944ddAe7b183fD95', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'curve-arb-tricrypto', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Curve', + assets: ['USDT', 'WBTC', 'ETH'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratMultiLP', + withdrawalFee: '0.01%', + addLiquidityUrl: 'https://arbitrum.curve.fi/tricrypto/deposit', + createdAt: 1652662923, + }, + { + id: 'curve-arb-2pool', + logo: 'uncategorized/crv2pool.png', + name: 'USDC/USDT', + token: '2CRV', + tokenDescription: 'Curve', + tokenAddress: '0x7f90122BF0700F9E7e1F688fe926940E8839F353', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCurve2Pool', + earnedTokenAddress: '0xEc7c0205a6f426c2Cb1667d783B5B4fD2f875434', + earnContractAddress: '0xEc7c0205a6f426c2Cb1667d783B5B4fD2f875434', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'curve-arb-2pool', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Curve', + assets: ['USDT', 'USDC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratMultiLP', + withdrawalFee: '0.01%', + addLiquidityUrl: 'https://arbitrum.curve.fi/2pool/deposit', + createdAt: 1652662923, + }, + { + id: 'curve-arb-ren', + logo: 'single-assets/renBTC.svg', + name: 'WBTC/renBTC', + token: 'btcCRV', + tokenDescription: 'Curve', + tokenAddress: '0x3E01dD8a5E1fb3481F0F589056b428Fc308AF0Fb', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCurveRenBTC', + earnedTokenAddress: '0x14d07853560436aEe38BE12DD66d944B07D5E59F', + earnContractAddress: '0x14d07853560436aEe38BE12DD66d944B07D5E59F', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'curve-arb-ren', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Curve', + assets: ['WBTC', 'renBTC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratMultiLP', + withdrawalFee: '0.01%', + addLiquidityUrl: 'https://arbitrum.curve.fi/ren/deposit', + createdAt: 1652662923, + }, + { + id: 'sushi-arb-wbtc-weth', + name: 'WBTC-ETH LP', + token: 'WBTC-ETH LP', + tokenDescription: 'Sushi', + tokenAddress: '0x515e252b2b5c22b4b2b6Df66c2eBeeA871AA4d69', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSushiWBTC-WETH', + earnedTokenAddress: '0xfcDD5a02C611ba6Fe2802f885281500EC95805d7', + earnContractAddress: '0xfcDD5a02C611ba6Fe2802f885281500EC95805d7', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'sushi-arb-wbtc-weth', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SushiSwap', + assets: ['WBTC', 'ETH'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.sushi.com/add/0x2f2a2543b76a4166549f7aab2e75bef0aefc5b0f/0x82af49447d8a07e3bd95bd0d56f35241523fbab1', + buyTokenUrl: + 'https://app.sushi.com/swap?inputCurrency=0x2f2a2543b76a4166549f7aab2e75bef0aefc5b0f&outputCurrency=0x82af49447d8a07e3bd95bd0d56f35241523fbab1', + createdAt: 1632169397, + }, + { + id: 'sushi-arb-sushi-eth', + name: 'SUSHI-ETH LP', + token: 'SUSHI-ETH LP', + tokenDescription: 'Sushi', + tokenAddress: '0x3221022e37029923aCe4235D812273C5A42C322d', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSushiSUSHI-WETH', + earnedTokenAddress: '0xBa5041B1c06e8c9cFb5dDB4b82BdC52E41EA5FC5', + earnContractAddress: '0xBa5041B1c06e8c9cFb5dDB4b82BdC52E41EA5FC5', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'sushi-arb-sushi-eth', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SushiSwap', + assets: ['SUSHI', 'ETH'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.sushi.com/add/0xd4d42f0b6def4ce0383636770ef773390d85c61a/0x82af49447d8a07e3bd95bd0d56f35241523fbab1', + buyTokenUrl: + 'https://app.sushi.com/swap?inputCurrency=0xd4d42f0b6def4ce0383636770ef773390d85c61af&outputCurrency=0x82af49447d8a07e3bd95bd0d56f35241523fbab1', + createdAt: 1632173780, + }, + { + id: 'sushi-arb-weth-usdt', + name: 'USDT-ETH LP', + token: 'USDT-ETH LP', + tokenDescription: 'Sushi', + tokenAddress: '0xCB0E5bFa72bBb4d16AB5aA0c60601c438F04b4ad', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSushiUSDT-WETH', + earnedTokenAddress: '0xE99c8A590c98c7Ae9FB3B7ecbC115D2eBD533B50', + earnContractAddress: '0xE99c8A590c98c7Ae9FB3B7ecbC115D2eBD533B50', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'sushi-arb-weth-usdt', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SushiSwap', + assets: ['USDT', 'ETH'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.sushi.com/add/0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9/0x82af49447d8a07e3bd95bd0d56f35241523fbab1', + buyTokenUrl: + 'https://app.sushi.com/swap?inputCurrency=0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9&outputCurrency=0x82af49447d8a07e3bd95bd0d56f35241523fbab1', + createdAt: 1632173316, + }, +]; diff --git a/src/features/configure/vault/aurora_pools.js b/src/features/configure/vault/aurora_pools.js new file mode 100644 index 000000000..7e06eed9c --- /dev/null +++ b/src/features/configure/vault/aurora_pools.js @@ -0,0 +1,839 @@ +export const auroraPools = [ + { + id: 'aurora-bifi-maxi', + logo: 'single-assets/BIFI.png', + name: 'BIFI Maxi', + token: 'BIFI', + tokenDescription: 'Beefy', + tokenAddress: '0x218c3c3D49d0E7B37aff0D8bB079de36Ae61A4c0', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooAuroraBIFI', + earnedTokenAddress: '0xD25c56DAbcda719F1c67fE8fc0760f8B942aC95C', + earnContractAddress: '0xD25c56DAbcda719F1c67fE8fc0760f8B942aC95C', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'BIFI', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Beefy', + assets: ['BIFI'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'Maxi', + withdrawalFee: '0.05%', + buyTokenUrl: + 'https://www.trisolaris.io/#/swap?outputCurrency=0x218c3c3D49d0E7B37aff0D8bB079de36Ae61A4c0', + createdAt: 1644698869, + }, + { + id: 'tri-tri-usdt', + name: 'TRI-USDT LP', + token: 'TRI-USDT LP', + tokenDescription: 'Trisolaris', + tokenAddress: '0x61C9E05d1Cdb1b70856c7a2c53fA9c220830633c', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooTriTRI-USDT', + earnedTokenAddress: '0xCC82af7110807AfcF11ed59844addAca4F2eE051', + earnContractAddress: '0xCC82af7110807AfcF11ed59844addAca4F2eE051', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'tri-tri-usdt', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Trisolaris', + assets: ['TRI', 'USDT'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + buyTokenUrl: + 'https://www.trisolaris.io/#/swap?outputCurrency=0xFa94348467f64D5A457F75F8bc40495D33c65aBB', + addLiquidityUrl: + 'https://www.trisolaris.io/#/add/0xFa94348467f64D5A457F75F8bc40495D33c65aBB/0x4988a896b1227218e4A686fdE5EabdcAbd91571f', + createdAt: 1651846365, + }, + { + id: 'tri-aurora-near', + name: 'AURORA-NEAR LP', + token: 'AURORA-NEAR LP', + tokenDescription: 'Trisolaris', + tokenAddress: '0x1e0e812FBcd3EB75D8562AD6F310Ed94D258D008', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooTriAURORA-NEAR', + earnedTokenAddress: '0xA477cFaFEF8BEe2B306A717ba809bc97776c740C', + earnContractAddress: '0xA477cFaFEF8BEe2B306A717ba809bc97776c740C', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'tri-aurora-near', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Trisolaris', + assets: ['AURORA', 'NEAR'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + buyTokenUrl: + 'https://www.trisolaris.io/#/swap?outputCurrency=0x8BEc47865aDe3B172A928df8f990Bc7f2A3b9f79', + addLiquidityUrl: + 'https://www.trisolaris.io/#/add/0x8BEc47865aDe3B172A928df8f990Bc7f2A3b9f79/0xC42C30aC6Cc15faC9bD938618BcaA1a1FaE8501d', + createdAt: 1651702395, + }, + { + id: 'tri-bstn-near', + name: 'BSTN-NEAR LP', + token: 'BSTN-NEAR LP', + tokenDescription: 'Trisolaris', + tokenAddress: '0xBBf3D4281F10E537d5b13CA80bE22362310b2bf9', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooTriBSTN-NEAR', + earnedTokenAddress: '0x2E628dac6F8c15735192c3F1d88B8C76f09F9806', + earnContractAddress: '0x2E628dac6F8c15735192c3F1d88B8C76f09F9806', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'tri-bstn-near', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Trisolaris', + assets: ['BSTN', 'NEAR'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + buyTokenUrl: + 'https://www.trisolaris.io/#/swap?outputCurrency=0x9f1F933C660a1DC856F0E0Fe058435879c5CCEf0', + addLiquidityUrl: + 'https://www.trisolaris.io/#/add/0x9f1F933C660a1DC856F0E0Fe058435879c5CCEf0/0xC42C30aC6Cc15faC9bD938618BcaA1a1FaE8501d', + createdAt: 1650679529, + }, + { + id: 'tri-linear-near', + name: 'LiNEAR-NEAR LP', + token: 'LiNEAR-NEAR LP', + tokenDescription: 'Trisolaris', + tokenAddress: '0xbceA13f9125b0E3B66e979FedBCbf7A4AfBa6fd1', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooTriLINEAR-NEAR', + earnedTokenAddress: '0x40105e87D09cd292F3ec23482EB9E163FEf3b3Bc', + earnContractAddress: '0x40105e87D09cd292F3ec23482EB9E163FEf3b3Bc', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'tri-linear-near', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Trisolaris', + assets: ['LINEAR', 'NEAR'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + buyTokenUrl: + 'https://www.trisolaris.io/#/swap?outputCurrency=0x918dBe087040A41b786f0Da83190c293DAe24749', + addLiquidityUrl: + 'https://www.trisolaris.io/#/add/0x918dBe087040A41b786f0Da83190c293DAe24749/0xC42C30aC6Cc15faC9bD938618BcaA1a1FaE8501d', + createdAt: 1651151106, + }, + { + id: 'rose-mai-3pool', + logo: 'single-assets/MAI_Rose.png', + name: 'MAI/USDT/USDC/DAI', + token: 'MAI/USDT/USDC/DAI', + tokenDescription: 'Rose', + tokenAddress: '0xA7ae42224Bf48eCeFc5f838C230EE339E5fd8e62', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooRoseMAI-3POOL', + earnedTokenAddress: '0xE82cEB3e5C07d38006d82Cbf3072181E5868b670', + earnContractAddress: '0xE82cEB3e5C07d38006d82Cbf3072181E5868b670', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'rose-mai-3pool', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Rose', + assets: ['MAI', 'USDT', 'USDC', 'DAI'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_HIGH', + 'CONTRACTS_VERIFIED', + 'OVER_COLLAT_ALGO_STABLECOIN', + ], + stratType: 'StratLP', + addLiquidityUrl: 'https://app.rose.fi/#/farms/mai', + createdAt: 1650375700, + }, + { + id: 'rose-ust-3pool-eol', + logo: 'single-assets/UST_Rose.png', + name: 'UST/USDT/USDC/DAI', + token: 'UST/USDT/USDC/DAI', + tokenDescription: 'Rose', + tokenAddress: '0x94A7644E4D9CA0e685226254f88eAdc957D3c263', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooRoseUST-3POOL', + earnedTokenAddress: '0x92E586d7dB14483C103c2e0FE6A596F8b55DA752', + earnContractAddress: '0x92E586d7dB14483C103c2e0FE6A596F8b55DA752', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'rose-ust-3pool', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Rose', + assets: ['atUST', 'USDT', 'USDC', 'DAI'], + risks: ['COMPLEXITY_LOW', 'BATTLE_TESTED', 'MCAP_HIGH', 'CONTRACTS_VERIFIED', 'ALGO_STABLE'], + stratType: 'StratLP', + addLiquidityUrl: 'https://app.rose.fi/#/farms/ust', + createdAt: 1649955343, + }, + { + id: 'tri-ausdo-usdt', + name: 'aUSDO-USDT LP', + token: 'aUSDO-USDT LP', + tokenDescription: 'Trisolaris', + tokenAddress: '0x6277f94a69Df5df0Bc58b25917B9ECEFBf1b846A', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooTriaUSDO-USDT', + earnedTokenAddress: '0x476214C90f5b85E647eE706e75C3BDC3546AEEEd', + earnContractAddress: '0x476214C90f5b85E647eE706e75C3BDC3546AEEEd', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'tri-ausdo-usdt', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Trisolaris', + assets: ['aUSDO', 'USDT'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + buyTokenUrl: + 'https://www.trisolaris.io/#/swap?outputCurrency=0x293074789b247cab05357b08052468B5d7A23c5a', + addLiquidityUrl: + 'https://www.trisolaris.io/#/add/0x4988a896b1227218e4A686fdE5EabdcAbd91571f/0x293074789b247cab05357b08052468B5d7A23c5a', + createdAt: 1647626968, + }, + { + id: 'tri-stnear-near', + name: 'stNEAR-NEAR LP', + token: 'stNEAR-NEAR LP', + tokenDescription: 'Trisolaris', + tokenAddress: '0x47924Ae4968832984F4091EEC537dfF5c38948a4', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooTristNEAR-NEAR', + earnedTokenAddress: '0x513f6F732d7635e01Fc8DA16412a408f3596696E', + earnContractAddress: '0x513f6F732d7635e01Fc8DA16412a408f3596696E', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'tri-stnear-near', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Trisolaris', + assets: ['STNEAR', 'NEAR'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + buyTokenUrl: + 'https://www.trisolaris.io/#/swap?outputCurrency=0x07F9F7f963C5cD2BBFFd30CcfB964Be114332E30', + addLiquidityUrl: + 'https://www.trisolaris.io/#/add/0x07F9F7f963C5cD2BBFFd30CcfB964Be114332E30/0xC42C30aC6Cc15faC9bD938618BcaA1a1FaE8501d', + createdAt: 1645554735, + }, + { + id: 'tri-mecha-near-eol', + name: 'MECHA-NEAR LP', + token: 'MECHA-NEAR LP', + tokenDescription: 'Trisolaris', + tokenAddress: '0xd62f9ec4C4d323A0C111d5e78b77eA33A2AA862f', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooTriMECHA-NEAR', + earnedTokenAddress: '0xa08911355C916097ed99Bb5199ef721b74dA8135', + earnContractAddress: '0xa08911355C916097ed99Bb5199ef721b74dA8135', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'tri-mecha-near', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Trisolaris', + assets: ['MECHA', 'NEAR'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + buyTokenUrl: + 'https://www.trisolaris.io/#/swap?outputCurrency=0xa33C3B53694419824722C10D99ad7cB16Ea62754', + addLiquidityUrl: + 'https://www.trisolaris.io/#/add/0xC42C30aC6Cc15faC9bD938618BcaA1a1FaE8501d/0xa33C3B53694419824722C10D99ad7cB16Ea62754', + createdAt: 1644674242, + }, + { + id: 'tri-near-flx', + name: 'FLX-NEAR LP', + token: 'FLX-NEAR LP', + tokenDescription: 'Trisolaris', + tokenAddress: '0x48887cEEA1b8AD328d5254BeF774Be91B90FaA09', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooTriFLX-NEAR', + earnedTokenAddress: '0x356b3a363f80eded902f718C494d7Cd118a777bb', + earnContractAddress: '0x356b3a363f80eded902f718C494d7Cd118a777bb', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'tri-near-flx', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Trisolaris', + assets: ['FLX', 'NEAR'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + buyTokenUrl: + 'https://www.trisolaris.io/#/swap?outputCurrency=0xea62791aa682d455614eaA2A12Ba3d9A2fD197af', + addLiquidityUrl: + 'https://www.trisolaris.io/#/add/0xC42C30aC6Cc15faC9bD938618BcaA1a1FaE8501d/0xea62791aa682d455614eaA2A12Ba3d9A2fD197af', + createdAt: 1644674036, + }, + { + id: 'tri-avax-near-eol', + name: 'AVAX-NEAR LP', + token: 'AVAX-NEAR LP', + tokenDescription: 'Trisolaris', + tokenAddress: '0x6443532841a5279cb04420E61Cf855cBEb70dc8C', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooTriAVAX-NEAR', + earnedTokenAddress: '0x76913cBC80df343Bae78f66CDdC8D275020a12fB', + earnContractAddress: '0x76913cBC80df343Bae78f66CDdC8D275020a12fB', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'tri-avax-near', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Trisolaris', + assets: ['AVAX', 'NEAR'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_HIGH', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + buyTokenUrl: + 'https://www.trisolaris.io/#/swap?outputCurrency=0x80A16016cC4A2E6a2CACA8a4a498b1699fF0f844', + addLiquidityUrl: + 'https://www.trisolaris.io/#/add/0xC42C30aC6Cc15faC9bD938618BcaA1a1FaE8501d/0x80A16016cC4A2E6a2CACA8a4a498b1699fF0f844', + createdAt: 1644673733, + }, + { + id: 'solace-solace', + logo: 'single-assets/SOLACE.png', + name: 'SOLACE', + token: 'SOLACE', + tokenDescription: 'Solace', + tokenAddress: '0x501acE9c35E60f03A2af4d484f49F9B1EFde9f40', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSOLACE', + earnedTokenAddress: '0x6027e8CF9A136FC26c54B0c29A190BE52F8b6872', + earnContractAddress: '0x6027e8CF9A136FC26c54B0c29A190BE52F8b6872', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'SOLACE', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Other', + assets: ['SOLACE'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'SingleStake', + buyTokenUrl: + 'https://www.trisolaris.io/#/swap?outputCurrency=0x501acE9c35E60f03A2af4d484f49F9B1EFde9f40', + createdAt: 1644436457, + }, + { + id: 'tri-solace-near-eol', + name: 'SOLACE-NEAR LP', + token: 'SOLACE-NEAR LP', + tokenDescription: 'Trisolaris', + tokenAddress: '0xdDAdf88b007B95fEb42DDbd110034C9a8e9746F2', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooTriSOLACE-NEAR', + earnedTokenAddress: '0x6347C23cd6283E619728854D44FF852A462fBaAc', + earnContractAddress: '0x6347C23cd6283E619728854D44FF852A462fBaAc', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'tri-solace-near', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Trisolaris', + assets: ['SOLACE', 'NEAR'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + buyTokenUrl: + 'https://www.trisolaris.io/#/swap?outputCurrency=0x501acE9c35E60f03A2af4d484f49F9B1EFde9f40', + addLiquidityUrl: + 'https://www.trisolaris.io/#/add/0xC42C30aC6Cc15faC9bD938618BcaA1a1FaE8501d/0x501acE9c35E60f03A2af4d484f49F9B1EFde9f40', + createdAt: 1644438518, + }, + { + id: 'tri-atust-near-eol', + name: 'atUST-NEAR LP', + token: 'atUST-NEAR LP', + tokenDescription: 'Trisolaris', + tokenAddress: '0xa9eded3E339b9cd92bB6DEF5c5379d678131fF90', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooTriatUST-NEAR', + earnedTokenAddress: '0xd1706A28Bd40EDc85aa11e40eb40f119DDC0A087', + earnContractAddress: '0xd1706A28Bd40EDc85aa11e40eb40f119DDC0A087', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'tri-atust-near', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Trisolaris', + assets: ['UST', 'NEAR'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + 'ALGO_STABLE', + ], + stratType: 'StratLP', + buyTokenUrl: + 'https://www.trisolaris.io/#/swap?outputCurrency=0x5ce9F0B6AFb36135b5ddBF11705cEB65E634A9dC', + addLiquidityUrl: + 'https://www.trisolaris.io/#/add/0xC42C30aC6Cc15faC9bD938618BcaA1a1FaE8501d/0x5ce9F0B6AFb36135b5ddBF11705cEB65E634A9dC', + createdAt: 1644000794, + }, + { + id: 'tri-near-atluna-eol', + name: 'atLUNA-NEAR LP', + token: 'atLUNA-NEAR LP', + tokenDescription: 'Trisolaris', + tokenAddress: '0xdF8CbF89ad9b7dAFdd3e37acEc539eEcC8c47914', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooTriatLUNA-NEAR', + earnedTokenAddress: '0x068701701C8C2a11EC5B05a015EdD07d1cee6b9f', + earnContractAddress: '0x068701701C8C2a11EC5B05a015EdD07d1cee6b9f', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'tri-near-atluna', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Trisolaris', + assets: ['LUNA', 'NEAR'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + buyTokenUrl: + 'https://www.trisolaris.io/#/swap?outputCurrency=0xC4bdd27c33ec7daa6fcfd8532ddB524Bf4038096', + addLiquidityUrl: + 'https://www.trisolaris.io/#/add/0xC42C30aC6Cc15faC9bD938618BcaA1a1FaE8501d/0xC4bdd27c33ec7daa6fcfd8532ddB524Bf4038096', + createdAt: 1643993283, + }, + { + id: 'tri-aurora-tri', + name: 'AURORA-TRI LP', + token: 'AURORA-TRI LP', + tokenDescription: 'Trisolaris', + tokenAddress: '0xd1654a7713617d41A8C9530Fb9B948d00e162194', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooTriAURORA-TRI', + earnedTokenAddress: '0x198d1CfE0D663F52C8b854E6434022A52a27fA1b', + earnContractAddress: '0x198d1CfE0D663F52C8b854E6434022A52a27fA1b', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'tri-aurora-tri', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Trisolaris', + assets: ['AURORA', 'TRI'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + buyTokenUrl: + 'https://www.trisolaris.io/#/swap?outputCurrency=0xFa94348467f64D5A457F75F8bc40495D33c65aBB', + addLiquidityUrl: + 'https://www.trisolaris.io/#/add/0x8BEc47865aDe3B172A928df8f990Bc7f2A3b9f79/0xFa94348467f64D5A457F75F8bc40495D33c65aBB', + createdAt: 1643901440, + }, + { + id: 'tri-aurora-weth', + name: 'AURORA-ETH LP', + token: 'AURORA-ETH LP', + tokenDescription: 'Trisolaris', + tokenAddress: '0x5eeC60F348cB1D661E4A5122CF4638c7DB7A886e', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooTriAURORA-ETH', + earnedTokenAddress: '0xC9737c178d327b410068a1d0ae2D30ef8e428754', + earnContractAddress: '0xC9737c178d327b410068a1d0ae2D30ef8e428754', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'tri-aurora-weth', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Trisolaris', + assets: ['AURORA', 'ETH'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + buyTokenUrl: + 'https://www.trisolaris.io/#/swap?outputCurrency=0x8BEc47865aDe3B172A928df8f990Bc7f2A3b9f79', + addLiquidityUrl: + 'https://www.trisolaris.io/#/add/0x8BEc47865aDe3B172A928df8f990Bc7f2A3b9f79/0xC9BdeEd33CD01541e1eeD10f90519d2C06Fe3feB', + createdAt: 1643890949, + }, + { + id: 'trisolaris-near-tri', + name: 'NEAR-TRI LP', + token: 'NEAR-TRI LP', + tokenDescription: 'Trisolaris', + tokenAddress: '0x84b123875F0F36B966d0B6Ca14b31121bd9676AD', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooTriNEAR-TRI', + earnedTokenAddress: '0x43F6De3D9fB0D5EED93d7E7E14A8A526B98f8A58', + earnContractAddress: '0x43F6De3D9fB0D5EED93d7E7E14A8A526B98f8A58', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'trisolaris-near-tri', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Trisolaris', + assets: ['NEAR', 'TRI'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + buyTokenUrl: + 'https://www.trisolaris.io/#/swap?outputCurrency=0xFa94348467f64D5A457F75F8bc40495D33c65aBB', + addLiquidityUrl: + 'https://www.trisolaris.io/#/add/0xC42C30aC6Cc15faC9bD938618BcaA1a1FaE8501d/0xFa94348467f64D5A457F75F8bc40495D33c65aBB', + createdAt: 1643742934, + }, + { + id: 'trisolaris-near-wbtc', + name: 'NEAR-WBTC LP', + token: 'NEAR-WBTC LP', + tokenDescription: 'Trisolaris', + tokenAddress: '0xbc8A244e8fb683ec1Fd6f88F3cc6E565082174Eb', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooTriNEAR-WBTC', + earnedTokenAddress: '0x9E2dE72D197d446a149FA6fA8220a7d5fCc9B265', + earnContractAddress: '0x9E2dE72D197d446a149FA6fA8220a7d5fCc9B265', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'trisolaris-near-wbtc', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Trisolaris', + assets: ['NEAR', 'WBTC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_HIGH', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + buyTokenUrl: + 'https://www.trisolaris.io/#/swap?outputCurrency=0xF4eB217Ba2454613b15dBdea6e5f22276410e89e', + addLiquidityUrl: + 'https://www.trisolaris.io/#/add/0xC42C30aC6Cc15faC9bD938618BcaA1a1FaE8501d/0xF4eB217Ba2454613b15dBdea6e5f22276410e89e', + createdAt: 1643739785, + }, + { + id: 'trisolaris-usdt-usdc', + name: 'USDT-USDC LP', + token: 'USDT-USDC LP', + tokenDescription: 'Trisolaris', + tokenAddress: '0x2fe064B6c7D274082aa5d2624709bC9AE7D16C77', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooTriUSDT-USDC', + earnedTokenAddress: '0x1c9270ac5C42E51611d7b97b1004313D52c80293', + earnContractAddress: '0x1c9270ac5C42E51611d7b97b1004313D52c80293', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'trisolaris-usdt-usdc', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Trisolaris', + assets: ['USDC', 'USDT'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_HIGH', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + buyTokenUrl: + 'https://www.trisolaris.io/#/swap?outputCurrency=0xB12BFcA5A55806AaF64E99521918A4bf0fC40802', + addLiquidityUrl: + 'https://www.trisolaris.io/#/add/0x4988a896b1227218e4A686fdE5EabdcAbd91571f/0xB12BFcA5A55806AaF64E99521918A4bf0fC40802', + createdAt: 1643737307, + }, + { + id: 'trisolaris-usdt-near-eol', + name: 'NEAR-USDT LP', + token: 'NEAR-USDT LP', + tokenDescription: 'Trisolaris', + tokenAddress: '0x03B666f3488a7992b2385B12dF7f35156d7b29cD', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooTriNEAR-USDT', + earnedTokenAddress: '0x9E6Dcce0Fe2dcf0C961e71Cd480215754d6C2490', + earnContractAddress: '0x9E6Dcce0Fe2dcf0C961e71Cd480215754d6C2490', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'trisolaris-usdt-near', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Trisolaris', + assets: ['NEAR', 'USDT'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_HIGH', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + buyTokenUrl: + 'https://www.trisolaris.io/#/swap?outputCurrency=0x4988a896b1227218e4A686fdE5EabdcAbd91571f', + addLiquidityUrl: + 'https://www.trisolaris.io/#/add/0xC42C30aC6Cc15faC9bD938618BcaA1a1FaE8501d/0x4988a896b1227218e4A686fdE5EabdcAbd91571f', + createdAt: 1643740691, + }, + { + id: 'trisolaris-usdc-near-eol', + name: 'NEAR-USDC LP', + token: 'NEAR-USDC LP', + tokenDescription: 'Trisolaris', + tokenAddress: '0x20F8AeFB5697B77E0BB835A8518BE70775cdA1b0', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooTriNEAR-USDC', + earnedTokenAddress: '0x240233b447D841C84BDFAe17bDe759e8c227a753', + earnContractAddress: '0x240233b447D841C84BDFAe17bDe759e8c227a753', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'trisolaris-usdc-near', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Trisolaris', + assets: ['NEAR', 'USDC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_HIGH', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + buyTokenUrl: + 'https://www.trisolaris.io/#/swap?outputCurrency=0xB12BFcA5A55806AaF64E99521918A4bf0fC40802', + addLiquidityUrl: + 'https://www.trisolaris.io/#/add/0xC42C30aC6Cc15faC9bD938618BcaA1a1FaE8501d/0xB12BFcA5A55806AaF64E99521918A4bf0fC40802', + createdAt: 1643740953, + }, + { + id: 'trisolaris-near-weth', + name: 'NEAR-ETH LP', + token: 'NEAR-ETH LP', + tokenDescription: 'Trisolaris', + tokenAddress: '0x63da4DB6Ef4e7C62168aB03982399F9588fCd198', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooTriNEAR-ETH', + earnedTokenAddress: '0x939c13c8055fEAac5aDB70Bad2e8b465019bbC08', + earnContractAddress: '0x939c13c8055fEAac5aDB70Bad2e8b465019bbC08', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'trisolaris-near-weth', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Trisolaris', + assets: ['NEAR', 'ETH'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_HIGH', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + buyTokenUrl: + 'https://www.trisolaris.io/#/swap?outputCurrency=0xC42C30aC6Cc15faC9bD938618BcaA1a1FaE8501d', + addLiquidityUrl: + 'https://www.trisolaris.io/#/add/0xC42C30aC6Cc15faC9bD938618BcaA1a1FaE8501d/0xC9BdeEd33CD01541e1eeD10f90519d2C06Fe3feB', + createdAt: 1643741153, + }, +]; diff --git a/src/features/configure/vault/avalanche_pools.js b/src/features/configure/vault/avalanche_pools.js new file mode 100644 index 000000000..442517358 --- /dev/null +++ b/src/features/configure/vault/avalanche_pools.js @@ -0,0 +1,5844 @@ +export const avalanchePools = [ + { + id: 'avax-bifi-maxi', + logo: 'single-assets/BIFI.png', + name: 'BIFI Maxi', + token: 'BIFI', + tokenDescription: 'Beefy', + tokenAddress: '0xd6070ae98b8069de6B494332d1A1a81B6179D960', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooAvalancheBIFI', + earnedTokenAddress: '0xCeefB07Ad37ff165A0b03DC7C808fD2E2fC77683', + earnContractAddress: '0xCeefB07Ad37ff165A0b03DC7C808fD2E2fC77683', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'BIFI', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Beefy', + assets: ['BIFI'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'SingleStake', + withdrawalFee: '0.05%', + buyTokenUrl: + 'https://www.traderjoexyz.com/trade?outputCurrency=0xd6070ae98b8069de6b494332d1a1a81b6179d960', + createdAt: 1629307105, + }, + + { + id: 'joe-tus-wavax-eol', + name: 'TUS-AVAX LP', + token: 'TUS-AVAX JLP', + tokenDescription: 'TraderJoe', + tokenAddress: '0x565d20BD591b00EAD0C927e4b6D7DD8A33b0B319', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooJoeTUS-AVAX', + earnedTokenAddress: '0x60c48584CfAe8e7D5263f2433FFD994e4A8D7C28', + earnContractAddress: '0x60c48584CfAe8e7D5263f2433FFD994e4A8D7C28', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'joe-tus-wavax', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Trader Joe', + assets: ['TUS', 'AVAX'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://traderjoexyz.com/farm/0x565d20BD591b00EAD0C927e4b6D7DD8A33b0B319-0x188bED1968b795d5c9022F6a0bb5931Ac4c18F00#/', + buyTokenUrl: + 'https://traderjoexyz.com/trade?inputCurrency=AVAX&outputCurrency=0xf693248f96fe03422fea95ac0afbbbc4a8fdd172', + createdAt: 1653320562, + }, + + { + id: 'png-klo-wavax', + name: 'KLO-AVAX LP', + token: 'KLO-AVAX LP', + tokenDescription: 'Pangolin', + tokenAddress: '0x6745d7F9289d7d75B5121876B1b9D8DA775c9a3E', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPangolinKLO-AVAX', + earnedTokenAddress: '0x9C9C14f28F07eDe4d796aED2D7038EF6F23494A8', + earnContractAddress: '0x9C9C14f28F07eDe4d796aED2D7038EF6F23494A8', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'png-klo-wavax', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Pangolin', + assets: ['KLO', 'AVAX'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.pangolin.exchange/#/add/AVAX/0xb27c8941a7Df8958A1778c0259f76D1F8B711C35', + buyTokenUrl: + 'https://app.pangolin.exchange/#/swap?outputCurrency=0xb27c8941a7Df8958A1778c0259f76D1F8B711C35', + createdAt: 1653320561, + }, + + { + id: 'png-fitfi-wavax', + name: 'FITFI-AVAX LP', + token: 'FITFI-AVAX LP', + tokenDescription: 'Pangolin', + tokenAddress: '0x1bB665942381FB2E67c4dCCb04E6CfE7f130E93C', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPangolinFITFI-AVAX', + earnedTokenAddress: '0x2b1b82D0D3F79D0Ff0300263F215Ed2dCE0734D2', + earnContractAddress: '0x2b1b82D0D3F79D0Ff0300263F215Ed2dCE0734D2', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'png-fitfi-wavax', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Pangolin', + assets: ['FITFI', 'AVAX'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.pangolin.exchange/#/add/AVAX/0x714f020C54cc9D104B6F4f6998C63ce2a31D1888', + buyTokenUrl: + 'https://app.pangolin.exchange/#/swap?outputCurrency=0x714f020C54cc9D104B6F4f6998C63ce2a31D1888', + createdAt: 1651942440, + }, + { + id: 'mai-avax-mai-crv', + logo: 'uncategorized/MAI-av3CRV.svg', + name: 'MAI/DAI/USDC/USDT', + token: 'MAI-av3CRV', + tokenDescription: 'Curve (Mai)', + tokenAddress: '0xb0D2EB3C2cA3c6916FAb8DCbf9d9c165649231AE', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooMaiMAI-av3CRV', + earnedTokenAddress: '0xFeA7976733f47557860f4483f2147a3e99C76b58', + earnContractAddress: '0xFeA7976733f47557860f4483f2147a3e99C76b58', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'curve-avax-mai', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Other', + assets: ['MAI', 'DAIe', 'USDCe', 'USDTe'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + 'OVER_COLLAT_ALGO_STABLECOIN', + ], + stratType: 'StratMultiLP', + depositFee: '0.5%', + withdrawalFee: '0%', + addLiquidityUrl: 'https://avax.curve.fi/factory/7/deposit', + createdAt: 1651836389, + }, + { + id: 'mai-qi-wavax', + name: 'QI-AVAX LP', + token: 'QI-WAVAX JLP', + tokenDescription: 'Trader Joe (Mai)', + tokenAddress: '0x05366F13d5f655FFB2d2ABb7b2ba005b12eB8bdE', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooMaiQI-AVAX', + earnedTokenAddress: '0x0D48E4E02eA44003b44360B9045F5A562890B1c6', + earnContractAddress: '0x0D48E4E02eA44003b44360B9045F5A562890B1c6', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'mai-qi-wavax', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Other', + depositFee: '0.5%', + withdrawalFee: '0%', + assets: ['QI', 'AVAX'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://traderjoexyz.com/pool/AVAX/0xA56F9A54880afBc30CF29bB66d2D9ADCdcaEaDD6', + buyTokenUrl: + 'https://www.traderjoexyz.com/trade?outputCurrency=0xA56F9A54880afBc30CF29bB66d2D9ADCdcaEaDD6', + createdAt: 1651836388, + }, + { + id: 'aavev3-avax', + logo: 'single-assets/AVAX.svg', + name: 'AVAX', + token: 'AVAX', + tokenDescription: 'Aave', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooAaveAVAX', + earnedTokenAddress: '0x1B156C5c75E9dF4CAAb2a5cc5999aC58ff4F9090', + earnContractAddress: '0x1B156C5c75E9dF4CAAb2a5cc5999aC58ff4F9090', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'AVAX', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Aave', + assets: ['AVAX'], + withdrawalFee: '0.01%', + risks: [ + 'COMPLEXITY_MID', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'Lending', + buyTokenUrl: + 'https://www.traderjoexyz.com/trade?outputCurrency=0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7', + createdAt: 1651836387, + }, + { + id: 'aavev3-dai.e', + logo: 'single-assets/DAI.svg', + name: 'DAI.e', + token: 'DAI.e', + tokenDescription: 'Aave', + tokenAddress: '0xd586E7F844cEa2F87f50152665BCbc2C279D8d70', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooAaveDAI.e', + earnedTokenAddress: '0xAf9f33df60CA764307B17E62dde86e9F7090426c', + earnContractAddress: '0xAf9f33df60CA764307B17E62dde86e9F7090426c', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'DAI.e', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Aave', + assets: ['DAIe'], + risks: [ + 'COMPLEXITY_MID', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'Lending', + withdrawalFee: '0.01%', + buyTokenUrl: + 'https://www.traderjoexyz.com/trade?outputCurrency=0xd586E7F844cEa2F87f50152665BCbc2C279D8d70', + createdAt: 1651836386, + }, + { + id: 'aavev3-usdc', + logo: 'single-assets/USDC.svg', + name: 'USDC', + token: 'USDC', + tokenDescription: 'Aave', + tokenAddress: '0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E', + tokenDecimals: 6, + tokenDescriptionUrl: '#', + earnedToken: 'mooAaveUSDC', + earnedTokenAddress: '0x3C2131A02659343d68c211aAa686750bE37d88c4', + earnContractAddress: '0x3C2131A02659343d68c211aAa686750bE37d88c4', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'USDC', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Aave', + assets: ['USDC'], + risks: [ + 'COMPLEXITY_MID', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'Lending', + withdrawalFee: '0.01%', + buyTokenUrl: + 'https://www.traderjoexyz.com/trade?outputCurrency=0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E', + createdAt: 1651836385, + }, + { + id: 'aavev3-usdt', + logo: 'single-assets/USDT.svg', + name: 'USDT', + token: 'USDT', + tokenDescription: 'Aave', + tokenAddress: '0x9702230A8Ea53601f5cD2dc00fDBc13d4dF4A8c7', + tokenDecimals: 6, + tokenDescriptionUrl: '#', + earnedToken: 'mooAaveUSDT', + earnedTokenAddress: '0x813aB5B3FDc59B143C42284665864b24B794C324', + earnContractAddress: '0x813aB5B3FDc59B143C42284665864b24B794C324', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'USDT', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Aave', + assets: ['USDT'], + risks: [ + 'COMPLEXITY_MID', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'Lending', + withdrawalFee: '0.01%', + buyTokenUrl: + 'https://www.traderjoexyz.com/trade?outputCurrency=0x9702230A8Ea53601f5cD2dc00fDBc13d4dF4A8c7', + createdAt: 1651836384, + }, + { + id: 'aavev3-weth.e', + logo: 'single-assets/ETH.svg', + name: 'WETH.e', + token: 'WETH.e', + tokenDescription: 'Aave', + tokenAddress: '0x49D5c2BdFfac6CE2BFdB6640F4F80f226bc10bAB', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooAaveWETH.e', + earnedTokenAddress: '0xDc5e537764F5Ad0f51Bf52CCF0767083bb4565EC', + earnContractAddress: '0xDc5e537764F5Ad0f51Bf52CCF0767083bb4565EC', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'WETH.e', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Aave', + assets: ['WETHe'], + risks: [ + 'COMPLEXITY_MID', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'Lending', + withdrawalFee: '0.01%', + buyTokenUrl: + 'https://www.traderjoexyz.com/trade?outputCurrency=0x49D5c2BdFfac6CE2BFdB6640F4F80f226bc10bAB', + createdAt: 1651836383, + }, + { + id: 'aavev3-wbtc.e', + logo: 'single-assets/WBTC.svg', + name: 'WBTC.e', + token: 'WBTC.e', + tokenDescription: 'Aave', + tokenAddress: '0x50b7545627a5162F82A992c33b87aDc75187B218', + tokenDecimals: 8, + tokenDescriptionUrl: '#', + earnedToken: 'mooAaveWBTC.e', + earnedTokenAddress: '0xD0e4b0B711A5296a8D72EB8B2a9Cb0F3f7A4211d', + earnContractAddress: '0xD0e4b0B711A5296a8D72EB8B2a9Cb0F3f7A4211d', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'WBTC.e', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Aave', + assets: ['WBTCe'], + risks: [ + 'COMPLEXITY_MID', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'Lending', + withdrawalFee: '0.01%', + buyTokenUrl: + 'https://www.traderjoexyz.com/trade?outputCurrency=0x50b7545627a5162F82A992c33b87aDc75187B218', + createdAt: 1651836382, + }, + { + id: 'joe-dby-wavax-eol', + name: 'DBY-AVAX LP', + token: 'DBY-AVAX JLP', + tokenDescription: 'Trader Joe', + tokenAddress: '0x30556AcC64b7b8F37ae4CE8325dd279847F09926', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooJoeAVAX-DBY', + earnedTokenAddress: '0x3cD0bCffF160fF331a170832219E82355189528f', + earnContractAddress: '0x3cD0bCffF160fF331a170832219E82355189528f', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'joe-dby-wavax', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Trader Joe', + assets: ['DBY', 'AVAX'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://traderjoexyz.com/pool/0x5085434227aB73151fAd2DE546210Cbc8663dF96/AVAX', + buyTokenUrl: + 'https://traderjoexyz.com/trade?outputCurrency=0x5085434227aB73151fAd2DE546210Cbc8663dF96', + createdAt: 1651052876, + }, + { + id: 'joe-bpt-wavax-eol', + name: 'BPT-AVAX LP', + token: 'BPT-AVAX JLP', + tokenDescription: 'Trader Joe', + tokenAddress: '0x0b44F6F5a32De1b36CfCD5F68f181F6787fb3225', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooJoeAVAX-BPT', + earnedTokenAddress: '0x93AADd13324FD724afe13E9930f5A466A4590853', + earnContractAddress: '0x93AADd13324FD724afe13E9930f5A466A4590853', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'joe-bpt-wavax', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Trader Joe', + assets: ['BPT', 'AVAX'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://traderjoexyz.com/pool/0x1111111111182587795ef1098ac7da81a108c97a/AVAX', + buyTokenUrl: + 'https://traderjoexyz.com/trade?outputCurrency=0x1111111111182587795ef1098ac7da81a108c97a#/', + createdAt: 1650788892, + }, + { + id: 'png-axlatom-wavax', + name: 'ATOM-AVAX LP', + token: 'ATOM-AVAX LP', + tokenDescription: 'Pangolin', + tokenAddress: '0x8a998BCd8D04e36cF5D28984F9979B6404471E51', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPangolinAxlATOM-AVAX', + earnedTokenAddress: '0x3Adf681a9E050AecE8e12ad825eB64273552B29d', + earnContractAddress: '0x3Adf681a9E050AecE8e12ad825eB64273552B29d', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'png-axlatom-wavax', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Pangolin', + assets: ['axlATOM', 'AVAX'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.pangolin.exchange/#/add/0x80D18b1c9Ab0c9B5D6A6d5173575417457d00a12/0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7', + buyTokenUrl: + 'https://app.pangolin.exchange/#/swap?outputCurrency=0x80D18b1c9Ab0c9B5D6A6d5173575417457d00a12', + createdAt: 1650124579, + }, + { + id: 'png-png-ustw', + name: 'PNG-USTw LP', + token: 'PNG-USTw LP', + tokenDescription: 'Pangolin', + tokenAddress: '0x2a0f65C76008EcBC469b0850454E57310E770557', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'MooPangolinPNG-USTw', + earnedTokenAddress: '0xC43e5065c28Dcf85f9a5D31feAC658c6EB7F23D6', + earnContractAddress: '0xC43e5065c28Dcf85f9a5D31feAC658c6EB7F23D6', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'png-png-ustw', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Pangolin', + assets: ['PNG', 'USTw'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + 'ALGO_STABLE', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.pangolin.exchange/#/add/0x60781C2586D68229fde47564546784ab3fACA982/0xb599c3590F42f8F995ECfa0f85D2980B76862fc1', + buyTokenUrl: + 'https://app.pangolin.exchange/#/swap?inputCurrency=0x60781C2586D68229fde47564546784ab3fACA982&outputCurrency=0xb599c3590F42f8F995ECfa0f85D2980B76862fc1', + createdAt: 1650107726, + }, + { + id: 'joe-yeti-wavax', + name: 'YETI-AVAX LP', + token: 'YETI-AVAX JLP', + tokenDescription: 'Trader Joe', + tokenAddress: '0xbdc7EF37283BC67D50886c4afb64877E3e83f869', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooJoeYETI-AVAX', + earnedTokenAddress: '0xDb054F4978a485bC5D9ae144B487340B141E41db', + earnContractAddress: '0xDb054F4978a485bC5D9ae144B487340B141E41db', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'joe-yeti-wavax', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Trader Joe', + assets: ['YETI', 'AVAX'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_SMALL', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://traderjoexyz.com/pool/0x77777777777d4554c39223C354A05825b2E8Faa3/AVAX', + buyTokenUrl: + 'https://traderjoexyz.com/trade?outputCurrency=0x77777777777d4554c39223C354A05825b2E8Faa3#/', + createdAt: 1650288303, + }, + { + id: 'joe-usdt-wavax', + name: 'USDT-AVAX LP', + token: 'USDT-AVAX JLP', + tokenDescription: 'Trader Joe', + tokenAddress: '0xbb4646a764358ee93c2a9c4a147d5aDEd527ab73', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooJoeUSDt-AVAX', + earnedTokenAddress: '0xe7f4AB519b20A0F4dF71B9ad9147b9cd4f183349', + earnContractAddress: '0xe7f4AB519b20A0F4dF71B9ad9147b9cd4f183349', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'joe-usdt-wavax', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Trader Joe', + assets: ['USDT', 'AVAX'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://traderjoexyz.com/pool/0x9702230A8Ea53601f5cD2dc00fDBc13d4dF4A8c7/AVAX', + buyTokenUrl: + 'https://traderjoexyz.com/trade?outputCurrency=0x9702230A8Ea53601f5cD2dc00fDBc13d4dF4A8c7#/', + createdAt: 1649966386, + }, + { + id: 'curve-avax-f-3pool', + name: 'USTw/USDC/USDT', + token: '3pool-f', + tokenDescription: 'Curve', + tokenAddress: '0xD79138c49c49200a1Afc935171D1bDAd084FDc95', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCurveF3pool', + earnedTokenAddress: '0x7C5bBE72EF32D8eA8054D056Fb049482894bbEEc', + earnContractAddress: '0x7C5bBE72EF32D8eA8054D056Fb049482894bbEEc', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'curve-avax-f-3pool', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Curve', + assets: ['USTw', 'USDT', 'USDC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + 'ALGO_STABLE', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: 'https://avax.curve.fi/factory/55/deposit', + createdAt: 1649925210, + }, + + { + id: 'beefy-beJoe', + logo: 'single-assets/beJOE.png', + name: 'beJOE', + token: 'beJOE', + tokenDescription: 'Beefy', + tokenAddress: '0x1F2A8034f444dc55F963fb5925A9b6eb744EeE2c', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'moobeJOE', + earnedTokenAddress: '0xb300d08c9420faeEB23102Ea82787a95F4eD869E', + earnContractAddress: '0xb300d08c9420faeEB23102Ea82787a95F4eD869E', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'beJOE', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Beefy', + assets: ['beJOE'], + withdrawalFee: '0.1%', + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratSingle', + buyTokenUrl: + 'https://www.traderjoexyz.com/trade?outputCurrency=0x6e84a6216eA6dACC71eE8E6b0a5B7322EEbC0fDd', + createdAt: 1649422919, + }, + { + id: 'joe-ustw-wavax-eol', + name: 'USTw-AVAX LP', + token: 'USTw-AVAX JLP', + tokenDescription: 'Trader Joe', + tokenAddress: '0xeCD6D33555183Bc82264dbC8bebd77A1f02e421E', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooJoeAVAX-UST', + earnedTokenAddress: '0xE113C53D53f66A33cD1098263DE18bCe8Ed92DCE', + earnContractAddress: '0xE113C53D53f66A33cD1098263DE18bCe8Ed92DCE', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'joe-ustw-wavax', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Trader Joe', + assets: ['USTw', 'AVAX'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + 'ALGO_STABLE', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://traderjoexyz.com/pool/0xb599c3590F42f8F995ECfa0f85D2980B76862fc1/AVAX', + buyTokenUrl: + 'https://traderjoexyz.com/trade?outputCurrency=0xb599c3590F42f8F995ECfa0f85D2980B76862fc1#/', + createdAt: 1649323779, + }, + { + id: 'joe-lost-wavax', + name: 'LOST-AVAX LP', + token: 'LOST-AVAX LP', + tokenDescription: 'Trader Joe', + tokenAddress: '0x9C396cF96319C8EF2b662Af57DEA6EE374b9959F', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooJoeAVAX-LOST', + earnedTokenAddress: '0xB38cA58F325D293B143364591c00704c91DEcdaC', + earnContractAddress: '0xB38cA58F325D293B143364591c00704c91DEcdaC', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'joe-lost-wavax', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Trader Joe', + assets: ['LOST', 'AVAX'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://traderjoexyz.com/pool/0x449674B82F05d498E126Dd6615a1057A9c088f2C/AVAX', + buyTokenUrl: + 'https://traderjoexyz.com/trade?outputCurrency=0x449674B82F05d498E126Dd6615a1057A9c088f2C#/', + createdAt: 1649323990, + }, + { + id: 'png-wavax-lost', + name: 'LOST-AVAX LP', + token: 'LOST-AVAX LP', + tokenDescription: 'Pangolin', + tokenAddress: '0x8461681211B49c15e20B3Cfd4c63BE258878B7D9', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPangolinAVAX-LOST', + earnedTokenAddress: '0x02BE142346cbCAf2A1d8A8F7B4a5F2d929259270', + earnContractAddress: '0x02BE142346cbCAf2A1d8A8F7B4a5F2d929259270', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'png-wavax-lost', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Pangolin', + assets: ['LOST', 'AVAX'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.pangolin.exchange/#/add/AVAX/0x449674B82F05d498E126Dd6615a1057A9c088f2C', + buyTokenUrl: + 'https://app.pangolin.exchange/#/swap?outputCurrency=0x449674B82F05d498E126Dd6615a1057A9c088f2C', + createdAt: 1651186444, + }, + { + id: 'curve-avax-f-avaxl', + name: 'AVAXL/AVAX', + token: 'AVAXL/AVAX', + tokenDescription: 'Curve', + tokenAddress: '0x445109BcF194c538B73EA60C71bb773849bc9b79', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCurveAVAXL', + earnedTokenAddress: '0x9F4776F629E21A7A2EF12761846a7a98f64aFf61', + earnContractAddress: '0x9F4776F629E21A7A2EF12761846a7a98f64aFf61', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'curve-avax-f-avaxl', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Curve', + assets: ['AVAXL', 'AVAX'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_MICRO', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: 'https://avax.curve.fi/factory/33/deposit', + buyTokenUrl: 'https://app.topshelf.finance/#/mint', + createdAt: 1649341331, + }, + + { + id: 'joe-money-wavax', + name: 'MONEY-AVAX LP', + token: 'MONEY-AVAX JLP', + tokenDescription: 'Trader Joe', + tokenAddress: '0x66D12e1cb13EAbAB21f1Fb6628B1Ef33C6dED5a7', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooJoeMONEY-AVAX', + earnedTokenAddress: '0xC040E6221B7FE844681c733aDCf1c19F9984272A', + earnContractAddress: '0xC040E6221B7FE844681c733aDCf1c19F9984272A', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'joe-money-wavax', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Trader Joe', + assets: ['MONEY', 'AVAX'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_MICRO', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://traderjoexyz.com/pool/0x0f577433Bf59560Ef2a79c124E9Ff99fCa258948/AVAX#/', + buyTokenUrl: + 'https://traderjoexyz.com/trade?outputCurrency=0x0f577433Bf59560Ef2a79c124E9Ff99fCa258948', + createdAt: 1648847501, + }, + { + id: 'png-ustw-usdc', + name: 'USTw-USDC LP', + token: 'USTw-USDC LP', + tokenDescription: 'Pangolin', + tokenAddress: '0xE1f75E2E74BA938abD6C3BE18CCc5C7f71925C4B', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPangolinUSTw-USDC', + earnedTokenAddress: '0x02A0c97BE6D8f4F144AFE5f41C51b5cef192480C', + earnContractAddress: '0x02A0c97BE6D8f4F144AFE5f41C51b5cef192480C', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'png-ustw-usdc', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Pangolin', + assets: ['USTw', 'USDC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + 'ALGO_STABLE', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.pangolin.exchange/#/add/0xb599c3590F42f8F995ECfa0f85D2980B76862fc1/0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E', + buyTokenUrl: + 'https://app.pangolin.exchange/#/swap?inputCurrency=0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E&outputCurrency=0xb599c3590F42f8F995ECfa0f85D2980B76862fc1', + createdAt: 1648788544, + }, + { + id: 'png-wavax-ustw', + name: 'USTw-AVAX LP', + token: 'USTw-AVAX LP', + tokenDescription: 'Pangolin', + tokenAddress: '0x9D563afF8B0017868DbA57eB3E04298C157d0aF5', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPangolinUSTw-AVAX', + earnedTokenAddress: '0xe53a812EA0A03C2323428A04f5E8006e81083E5a', + earnContractAddress: '0xe53a812EA0A03C2323428A04f5E8006e81083E5a', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'png-wavax-ustw', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Pangolin', + assets: ['USTw', 'AVAX'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + 'ALGO_STABLE', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.pangolin.exchange/#/add/0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7/0xb599c3590F42f8F995ECfa0f85D2980B76862fc1', + buyTokenUrl: + 'https://app.pangolin.exchange/#/swap?outputCurrency=0xb599c3590F42f8F995ECfa0f85D2980B76862fc1', + createdAt: 1648788292, + }, + + { + id: 'stargate-avax-usdc', + logo: 'single-assets/USDC.svg', + name: 'USDC LP', + token: 'S*USDC', + tokenDescription: 'Stargate', + tokenAddress: '0x1205f31718499dBf1fCa446663B532Ef87481fe1', + tokenDecimals: 6, + tokenDescriptionUrl: '#', + earnedToken: 'mooStargateUSDC', + earnedTokenAddress: '0x79F26046D122d2F26B1D37237D5C056fB580447A', + earnContractAddress: '0x79F26046D122d2F26B1D37237D5C056fB580447A', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'saUSDC', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Stargate', + assets: ['saUSDC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'SingleStake', + addLiquidityUrl: 'https://stargate.finance/pool/USDC-AVAX/add', + buyTokenUrl: + 'https://traderjoexyz.com/trade?outputCurrency=0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E#/', + createdAt: 1648729105, + }, + { + id: 'stargate-avax-usdt', + logo: 'single-assets/USDT.svg', + name: 'USDT LP', + token: 'S*USDT', + tokenDescription: 'Stargate', + tokenAddress: '0x29e38769f23701A2e4A8Ef0492e19dA4604Be62c', + tokenDecimals: 6, + tokenDescriptionUrl: '#', + earnedToken: 'mooStargateUSDT', + earnedTokenAddress: '0xA27BF4d56870A37e37a687B8ab3740d8487Ee2C6', + earnContractAddress: '0xA27BF4d56870A37e37a687B8ab3740d8487Ee2C6', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'saUSDT', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Stargate', + assets: ['saUSDT'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'SingleStake', + addLiquidityUrl: 'https://stargate.finance/pool/USDT-AVAX/add', + buyTokenUrl: + 'https://traderjoexyz.com/trade?outputCurrency=0x9702230A8Ea53601f5cD2dc00fDBc13d4dF4A8c7#/', + createdAt: 1648730342, + }, + { + id: 'png-wavax-ncash', + name: 'NCASH-AVAX LP', + token: 'nCASH-AVAX LP', + tokenDescription: 'Pangolin', + tokenAddress: '0xb8F66A8B3A1640492e3d45A26256C8ef4b934fe6', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPangolinNCASH-AVAX', + earnedTokenAddress: '0x326d4521e4Cf78Fb2f8693b1ebc4D24ecE89de01', + earnContractAddress: '0x326d4521e4Cf78Fb2f8693b1ebc4D24ecE89de01', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'png-wavax-ncash', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Pangolin', + assets: ['NCASH', 'AVAX'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + ], + addLiquidityUrl: + 'https://app.pangolin.exchange/#/add/AVAX/0xc69eba65e87889f0805db717af06797055a0ba07', + buyTokenUrl: + 'https://app.pangolin.exchange/#/swap?outputCurrency=0xc69eba65e87889f0805db717af06797055a0ba07', + createdAt: 1648734327, + }, + { + id: 'curve-avax-atricrypto', + logo: 'uncategorized/ATRICRYPTO.png', + name: 'aTriCrypto', + token: 'crvUSDBTCETH', + tokenDescription: 'Curve', + tokenAddress: '0x1daB6560494B04473A0BE3E7D83CF3Fdf3a51828', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCurveTriCrypto', + earnedTokenAddress: '0xe1a8EeA58D63Ea64d00365531D266C2AD1f62FC4', + earnContractAddress: '0xe1a8EeA58D63Ea64d00365531D266C2AD1f62FC4', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'curve-avax-atricrypto', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Curve', + assets: ['DAIe', 'USDCe', 'USDTe', 'WBTCe', 'WETHe'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratMultiLP', + withdrawalFee: '0%', + addLiquidityUrl: 'https://avax.curve.fi/atricrypto/deposit', + createdAt: 1652662923, + }, + { + id: 'joe-ape-wavax', + name: 'APE-AVAX LP', + token: 'APE-AVAX JLP', + tokenDescription: 'Trader Joe', + tokenAddress: '0x11bBfA2Fa3b995ceA99D20DFA618fd32e252d8F2', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooJoeAVAX-APE', + earnedTokenAddress: '0x9C3D6E7956A7eF2ECF5987cF65ac5a5CEa87C889', + earnContractAddress: '0x9C3D6E7956A7eF2ECF5987cF65ac5a5CEa87C889', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'joe-ape-wavax', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Trader Joe', + assets: ['APE', 'AVAX'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MEDIUM', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://traderjoexyz.com/pool/0x0802d66f029c46E042b74d543fC43B6705ccb4ba/AVAX', + buyTokenUrl: + 'https://traderjoexyz.com/trade?outputCurrency=0x0802d66f029c46E042b74d543fC43B6705ccb4ba', + createdAt: 1648112467, + }, + { + id: 'joe-fly-wavax', + name: 'FLY-AVAX LP', + token: 'FLY-AVAX JLP', + tokenDescription: 'Trader Joe', + tokenAddress: '0x1371a6d8CBe2Ca66d0911f270e1cAA7C12A3045A', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooJoeAVAX-FLY', + earnedTokenAddress: '0xba8284Dc76fbEDd311f14937340E3bc174b4864c', + earnContractAddress: '0xba8284Dc76fbEDd311f14937340E3bc174b4864c', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'joe-fly-wavax', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Trader Joe', + assets: ['FLY', 'AVAX'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://traderjoexyz.com/pool/0x78Ea3fef1c1f07348199Bf44f45b803b9B0Dbe28/AVAX', + buyTokenUrl: + 'https://traderjoexyz.com/trade?outputCurrency=0x78Ea3fef1c1f07348199Bf44f45b803b9B0Dbe28', + createdAt: 1648112061, + }, + { + id: 'joe-deg-wavax', + name: 'DEG-AVAX LP', + token: 'DEG-AVAX JLP', + tokenDescription: 'Trader Joe', + tokenAddress: '0x465460F46969F2bf969432956491dEE95A6ba493', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooJoeDEG-AVAX', + earnedTokenAddress: '0xB1298261e5C5219B93181f8EA45dD5D50A8e2E56', + earnContractAddress: '0xB1298261e5C5219B93181f8EA45dD5D50A8e2E56', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'joe-deg-wavax', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Trader Joe', + assets: ['DEG', 'AVAX'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://traderjoexyz.com/pool/0x9f285507Ea5B4F33822CA7aBb5EC8953ce37A645/AVAX#/', + buyTokenUrl: + 'https://traderjoexyz.com/trade?outputCurrency=0x9f285507Ea5B4F33822CA7aBb5EC8953ce37A645', + createdAt: 1647256112, + }, + { + id: 'joe-joe', + logo: 'single-assets/JOE.png', + name: 'JOE', + token: 'JOE', + tokenDescription: 'Trader Joe (sJoe)', + tokenAddress: '0x6e84a6216eA6dACC71eE8E6b0a5B7322EEbC0fDd', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooJoe', + earnedTokenAddress: '0x282B11E65f0B49363D4505F91c7A44fBEe6bCc0b', + earnContractAddress: '0x282B11E65f0B49363D4505F91c7A44fBEe6bCc0b', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'JOE', + oraclePrice: 0, + depositsPaused: false, + withdrawalFee: '0.0%', + status: 'active', + platform: 'Trader Joe', + assets: ['JOE'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_MEDIUM', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + ], + stratType: 'SingleStake', + depositFee: '1%', + buyTokenUrl: + 'https://traderjoexyz.com/trade?outputCurrency=0x6e84a6216eA6dACC71eE8E6b0a5B7322EEbC0fDd', + createdAt: 1631011023, + }, + { + id: 'joe-wavax-usdc', + name: 'USDC-AVAX LP', + token: 'USDC-AVAX JLP', + tokenDescription: 'Trader Joe', + tokenAddress: '0xf4003F4efBE8691B60249E6afbD307aBE7758adb', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooJoeUSDC-AVAX', + earnedTokenAddress: '0x7E5bC7088aB3Da3e7fa1Aa7ceF1dC73F5B00681c', + earnContractAddress: '0x7E5bC7088aB3Da3e7fa1Aa7ceF1dC73F5B00681c', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'joe-wavax-usdc', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Trader Joe', + assets: ['USDC', 'AVAX'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://traderjoexyz.com/pool/AVAX/0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E', + buyTokenUrl: + 'https://traderjoexyz.com/trade?outputCurrency=0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E', + createdAt: 1646426309, + }, + { + id: 'joe-wavax-vtx', + name: 'VTX-AVAX LP', + token: 'VTX-AVAX JLP', + tokenDescription: 'Trader Joe', + tokenAddress: '0x9EF0C12b787F90F59cBBE0b611B82D30CAB92929', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooJoeVTX-AVAX', + earnedTokenAddress: '0x9710755f5E6Ea9bd149800ec1901982b93beEf25', + earnContractAddress: '0x9710755f5E6Ea9bd149800ec1901982b93beEf25', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'joe-wavax-vtx', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Trader Joe', + assets: ['VTX', 'AVAX'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://traderjoexyz.com/pool/AVAX/0x5817D4F0b62A59b17f75207DA1848C2cE75e7AF4', + buyTokenUrl: + 'https://traderjoexyz.com/trade?outputCurrency=0x5817D4F0b62A59b17f75207DA1848C2cE75e7AF4', + createdAt: 1646470439, + }, + { + id: 'joe-wavax-ecd', + name: 'ECD-AVAX LP', + token: 'ECD-AVAX JLP', + tokenDescription: 'Trader Joe', + tokenAddress: '0x218e6A0AD170460F93eA784FbcC92B57DF13316E', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooJoeAVAX-ECD', + earnedTokenAddress: '0x4C7cF6eE7AFa810028099C2D1d97c6AB33540412', + earnContractAddress: '0x4C7cF6eE7AFa810028099C2D1d97c6AB33540412', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'joe-wavax-ecd', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Trader Joe', + assets: ['ECD', 'AVAX'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://traderjoexyz.com/pool/AVAX/0xeb8343D5284CaEc921F035207ca94DB6BAaaCBcd', + buyTokenUrl: + 'https://traderjoexyz.com/trade?outputCurrency=0xeb8343D5284CaEc921F035207ca94DB6BAaaCBcd', + createdAt: 1646470439, + }, + { + id: 'joe-egg-wavax-eol', + name: 'EGG-AVAX JLP', + token: 'EGG-AVAX JLP', + tokenDescription: 'Trader Joe', + tokenAddress: '0x3052a75dfD7A9D9B0F81E510E01d3Fe80A9e7ec7', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooJoeEGG-AVAX', + earnedTokenAddress: '0x491E09Eb736c0c4CD85DF694A22D1C0dec8c4C25', + earnContractAddress: '0x491E09Eb736c0c4CD85DF694A22D1C0dec8c4C25', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'joe-egg-wavax', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Trader Joe', + assets: ['EGG', 'AVAX'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://traderjoexyz.com/pool/0x7761E2338B35bCEB6BdA6ce477EF012bde7aE611/AVAX#/', + buyTokenUrl: + 'https://traderjoexyz.com/trade?outputCurrency=0x7761e2338b35bceb6bda6ce477ef012bde7ae611', + createdAt: 1646787205, + }, + { + id: 'png-usdc.e-usdc', + name: 'USDC-USDC.e LP', + token: 'USDC-USDC.e LP', + tokenDescription: 'Pangolin', + tokenAddress: '0x8a9c36BC3CEd5ECce703A4dA8032218Dfe72fE86', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPangolinUSDC.e-USDC', + earnedTokenAddress: '0x99C719c26C64A371be84bAF0821fA89a1FEd459a', + earnContractAddress: '0x99C719c26C64A371be84bAF0821fA89a1FEd459a', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'png-usdc.e-usdc', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Pangolin', + assets: ['USDC', 'USDCe'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.pangolin.exchange/#/add/0xA7D7079b0FEaD91F3e65f86E8915Cb59c1a4C664/0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E', + buyTokenUrl: + 'https://app.pangolin.exchange/#/swap?inputCurrency=0xA7D7079b0FEaD91F3e65f86E8915Cb59c1a4C664&outputCurrency=0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E', + createdAt: 1646973680, + }, + { + id: 'png-wavax-spell', + name: 'SPELL-AVAX LP', + token: 'SPELL-AVAX LP', + tokenDescription: 'Pangolin', + tokenAddress: '0xD4CBC976E1a1A2bf6F4FeA86DEB3308d68638211', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPangolinSPELL-WAVAX', + earnedTokenAddress: '0x87a1525566A367F2a986ca15A09D8cA50f539C03', + earnContractAddress: '0x87a1525566A367F2a986ca15A09D8cA50f539C03', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'png-wavax-spell', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Pangolin', + assets: ['SPELL', 'AVAX'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MEDIUM', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + ], + addLiquidityUrl: + 'https://app.pangolin.exchange/#/add/AVAX/0xCE1bFFBD5374Dac86a2893119683F4911a2F7814', + buyTokenUrl: + 'https://app.pangolin.exchange/#/swap?outputCurrency=0xCE1bFFBD5374Dac86a2893119683F4911a2F7814', + createdAt: 1646976330, + }, + { + id: 'png-wavax-usdc', + name: 'USDC-AVAX LP', + token: 'USDC-AVAX LP', + tokenDescription: 'Pangolin', + tokenAddress: '0x0e0100Ab771E9288e0Aa97e11557E6654C3a9665', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPangolinUSDC-WAVAX', + earnedTokenAddress: '0xf3340EdF16563D52C7E7C576F2fCC8f3D52464aB', + earnContractAddress: '0xf3340EdF16563D52C7E7C576F2fCC8f3D52464aB', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'png-wavax-usdc', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Pangolin', + assets: ['USDC', 'AVAX'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + ], + addLiquidityUrl: + 'https://app.pangolin.exchange/#/add/AVAX/0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E', + buyTokenUrl: + 'https://app.pangolin.exchange/#/swap?outputCurrency=0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E', + createdAt: 1647003159, + }, + { + id: 'png-wavax-ime', + name: 'IME-AVAX LP', + token: 'IME-AVAX LP', + tokenDescription: 'Pangolin', + tokenAddress: '0xB6eE4A02F1fa523559B9Abb54C50dF3011911fe9', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPangolinIME-WAVAX', + earnedTokenAddress: '0xcDD3542A7A741409d5c6F8aD487ebf39964992ED', + earnContractAddress: '0xcDD3542A7A741409d5c6F8aD487ebf39964992ED', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'png-wavax-ime', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Pangolin', + assets: ['IME', 'AVAX'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_SMALL', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + ], + addLiquidityUrl: + 'https://app.pangolin.exchange/#/add/AVAX/0xF891214fdcF9cDaa5fdC42369eE4F27F226AdaD6', + buyTokenUrl: + 'https://app.pangolin.exchange/#/swap?outputCurrency=0xF891214fdcF9cDaa5fdC42369eE4F27F226AdaD6', + createdAt: 1647002201, + }, + { + id: 'joe-joe-usdc', + name: 'JOE-USDC LP', + token: 'JOE-USDC LP', + tokenDescription: 'Trader Joe', + tokenAddress: '0x3bc40d4307cD946157447CD55d70ee7495bA6140', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooJoeJOE-USDC', + earnedTokenAddress: '0x909C9EF8E634C2bc6719d960146Bb38F20f6a547', + earnContractAddress: '0x909C9EF8E634C2bc6719d960146Bb38F20f6a547', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'joe-joe-usdc', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Trader Joe', + assets: ['JOE', 'USDC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MEDIUM', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://traderjoexyz.com/pool/0x6e84a6216ea6dacc71ee8e6b0a5b7322eebc0fdd/0xb97ef9ef8734c71904d8002f8b6bc66dd9c48a6e', + buyTokenUrl: + 'https://traderjoexyz.com/trade?inputCurrency=0xb97ef9ef8734c71904d8002f8b6bc66dd9c48a6e&outputCurrency=0x6e84a6216ea6dacc71ee8e6b0a5b7322eebc0fdd', + createdAt: 1646825243, + }, + { + id: 'joe-wavax-fief-eol', + name: 'FIEF-AVAX LP', + token: 'FIEF-AVAX JLP', + tokenDescription: 'Trader Joe', + tokenAddress: '0x939D6eD8a0f7FC90436BA6842D7372250a03fA7c', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooJoeAVAX-FIEF', + earnedTokenAddress: '0x87267285Bd7990B05950703f7bA6b24dF88aa302', + earnContractAddress: '0x87267285Bd7990B05950703f7bA6b24dF88aa302', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'joe-wavax-fief', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Trader Joe', + assets: ['FIEF', 'AVAX'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://traderjoexyz.com/pool/0xeA068Fba19CE95f12d252aD8Cb2939225C4Ea02D/AVAX', + buyTokenUrl: + 'https://traderjoexyz.com/trade?outputCurrency=0xeA068Fba19CE95f12d252aD8Cb2939225C4Ea02D', + createdAt: 1646148122, + }, + { + id: 'ripae-pavax-wavax', + name: 'pAVAX-AVAX LP', + token: 'pAVAX-AVAX LP', + tokenDescription: 'TraderJoe (Ripae)', + tokenAddress: '0x1179E6AF2794fA9d39316951e868772F96230375', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooRipaepAVAX-AVAX', + earnedTokenAddress: '0xD78d5464690544F5D838dAEF0D7650fA03c64598', + earnContractAddress: '0xD78d5464690544F5D838dAEF0D7650fA03c64598', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'ripae-pavax-wavax', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Ripae', + assets: ['pAVAX', 'AVAX'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://traderjoexyz.com/pool/AVAX/0x6ca558bd3eaB53DA1B25aB97916dd14bf6CFEe4E', + buyTokenUrl: + 'https://traderjoexyz.com/trade?outputCurrency=0x6ca558bd3eaB53DA1B25aB97916dd14bf6CFEe4E', + createdAt: 1646045101, + }, + { + id: 'ripae-pae-wavax', + name: 'PAE-AVAX LP', + token: 'PAE-AVAX LP', + tokenDescription: 'TraderJoe (Ripae)', + tokenAddress: '0x6139361Ccd4f40abF3d5D22AA3b72A195010F9AB', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooRipaePAE-AVAX', + earnedTokenAddress: '0x2c0E2Ec5C2C84346497cc82F5afF72f8A29dA835', + earnContractAddress: '0x2c0E2Ec5C2C84346497cc82F5afF72f8A29dA835', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'ripae-pae-wavax', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Ripae', + assets: ['PAE', 'AVAX'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://traderjoexyz.com/pool/AVAX/0x9466Ab927611725B9AF76b9F31B2F879Ff14233d', + buyTokenUrl: + 'https://traderjoexyz.com/trade?outputCurrency=0x9466Ab927611725B9AF76b9F31B2F879Ff14233d', + createdAt: 1646045101, + }, + + { + id: 'png-acre-wavax', + name: 'ACRE-AVAX LP', + token: 'ACRE-AVAX LP', + tokenDescription: 'Pangolin', + tokenAddress: '0x64694FC8dFCA286bF1A15b0903FAC98217dC3AD7', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPangolinV2ACRE-AVAX', + earnedTokenAddress: '0xB6aE1f6Be8575a44D22af3cD2C5385CC9c293978', + earnContractAddress: '0xB6aE1f6Be8575a44D22af3cD2C5385CC9c293978', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'png-acre-wavax', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Pangolin', + assets: ['ACRE', 'AVAX'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.pangolin.exchange/#/add/AVAX/0x00EE200Df31b869a321B10400Da10b561F3ee60d', + buyTokenUrl: + 'https://app.pangolin.exchange/#/swap?outputCurrency=0x00EE200Df31b869a321B10400Da10b561F3ee60d', + createdAt: 1645887882, + }, + { + id: 'png-bribe-wavax-eol', + name: 'BRIBE-AVAX LP', + token: 'BRIBE-AVAX LP', + tokenDescription: 'Pangolin', + tokenAddress: '0x7472887De3B0aA65168a1Da22164C81DE5fd4044', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPangolinV2BRIBE-AVAX', + earnedTokenAddress: '0xbaCeC852971EB461DA6Ad8F5C2e37694dca56002', + earnContractAddress: '0xbaCeC852971EB461DA6Ad8F5C2e37694dca56002', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'png-bribe-wavax', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Pangolin', + assets: ['BRIBE', 'AVAX'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.pangolin.exchange/#/add/AVAX/ 0xCe2fbed816E320258161CeD52c2d0CEBcdFd8136', + buyTokenUrl: + 'https://app.pangolin.exchange/#/swap?outputCurrency=0xCe2fbed816E320258161CeD52c2d0CEBcdFd8136', + createdAt: 1645972427, + }, + { + id: 'png-tus-wavax', + name: 'TUS-AVAX LP', + token: 'TUS-AVAX LP', + tokenDescription: 'Pangolin', + tokenAddress: '0xbCEd3B6D759B9CA8Fc7706E46Aa81627b2e9EAE8', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPangolinV2TUS-AVAX', + earnedTokenAddress: '0xEd7208d44f5cC209DE534461a5D5b3cf60fDdeE5', + earnContractAddress: '0xEd7208d44f5cC209DE534461a5D5b3cf60fDdeE5', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'png-tus-wavax', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Pangolin', + assets: ['TUS', 'AVAX'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.pangolin.exchange/#/add/AVAX/0xf693248F96Fe03422FEa95aC0aFbBBc4a8FdD172', + buyTokenUrl: + 'https://app.pangolin.exchange/#/swap?outputCurrency=0xf693248F96Fe03422FEa95aC0aFbBBc4a8FdD172', + createdAt: 1645972427, + }, + { + id: 'png-fire-wavax-eol', + name: 'FIRE-AVAX LP', + token: 'FIRE-AVAX LP', + tokenDescription: 'Pangolin', + tokenAddress: '0x45324950c6ba08112EbF72754004a66a0a2b7721', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPangolinV2FIRE-AVAX', + earnedTokenAddress: '0xcd1f50DFfbC44F5eeFBA2ae6a19dE8196B51427a', + earnContractAddress: '0xcd1f50DFfbC44F5eeFBA2ae6a19dE8196B51427a', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'png-fire-wavax', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Pangolin', + assets: ['FIRE', 'AVAX'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.pangolin.exchange/#/add/AVAX/0xfcc6CE74f4cd7eDEF0C5429bB99d38A3608043a5', + buyTokenUrl: + 'https://app.pangolin.exchange/#/swap?outputCurrency=0xfcc6CE74f4cd7eDEF0C5429bB99d38A3608043a5', + createdAt: 1645197575, + }, + { + id: 'curve-avax-ren', + logo: 'single-assets/renBTC.png', + name: 'WBTC/renBTC', + token: 'btcCRV', + tokenDescription: 'Curve', + tokenAddress: '0xC2b1DF84112619D190193E48148000e3990Bf627', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCurveRen', + earnedTokenAddress: '0xD437ba91922f7e0066C780cC17f175708Fd7b736', + earnContractAddress: '0xD437ba91922f7e0066C780cC17f175708Fd7b736', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'curve-avax-ren', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Curve', + assets: ['WBTC', 'renBTC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: 'https://avax.curve.fi/ren/deposit', + createdAt: 1652662923, + }, + { + id: 'joe-wavax-savax', + name: 'sAVAX-AVAX LP', + token: 'sAVAX-AVAX JLP', + tokenDescription: 'Trader Joe', + tokenAddress: '0x4b946c91C2B1a7d7C40FB3C130CdfBaf8389094d', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooJoeAVAX-sAVAX', + earnedTokenAddress: '0x37a51D57958386E52f6d7D7d08ACb381abDA9157', + earnContractAddress: '0x37a51D57958386E52f6d7D7d08ACb381abDA9157', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'joe-wavax-savax', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Trader Joe', + assets: ['sAVAX', 'AVAX'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_MEDIUM', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://traderjoexyz.com/pool/0x2b2C81e08f1Af8835a78Bb2A90AE924ACE0eA4bE/AVAX', + buyTokenUrl: + 'https://traderjoexyz.com/trade?outputCurrency=0x2b2C81e08f1Af8835a78Bb2A90AE924ACE0eA4bE', + createdAt: 1645036500, + }, + { + id: 'png-luna-wavax', + name: 'LUNA-AVAX LP', + token: 'LUNA-AVAX LP', + tokenDescription: 'Pangolin', + tokenAddress: '0x40e747f27E6398b1f7C017c5ff5c31a2Ab69261c', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPangolinV2LUNA-AVAX', + earnedTokenAddress: '0x5508222678C5337e76D93A3005dC008056715655', + earnContractAddress: '0x5508222678C5337e76D93A3005dC008056715655', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'png-luna-wavax', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Pangolin', + assets: ['LUNA', 'AVAX'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.pangolin.exchange/#/add/AVAX/0x120AD3e5A7c796349e591F1570D9f7980F4eA9cb', + buyTokenUrl: + 'https://app.pangolin.exchange/#/swap?outputCurrency=0x120AD3e5A7c796349e591F1570D9f7980F4eA9cb', + createdAt: 1644484239, + }, + { + id: 'joe-wavax-domi', + name: 'DOMI-AVAX LP', + token: 'DOMI-AVAX JLP', + tokenDescription: 'Trader Joe', + tokenAddress: '0x5B9Faf0feA95df4D4cB894Ef920704daFf656f3E', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooJoeAVAX-DOMI', + earnedTokenAddress: '0x440F1249349B185748C9aA8dAB26F067A515A68F', + earnContractAddress: '0x440F1249349B185748C9aA8dAB26F067A515A68F', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'joe-wavax-domi', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Trader Joe', + assets: ['DOMI', 'AVAX'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://traderjoexyz.com/pool/0xFc6Da929c031162841370af240dEc19099861d3B/AVAX', + buyTokenUrl: + 'https://traderjoexyz.com/trade?outputCurrency=0xFc6Da929c031162841370af240dEc19099861d3B', + createdAt: 1644407428, + }, + { + id: 'joe-wavax-ime-eol', + name: 'IME-AVAX LP', + token: 'IME-AVAX JLP', + tokenDescription: 'Trader Joe', + tokenAddress: '0x5d95ae932D42E53Bb9DA4DE65E9b7263A4fA8564', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooJoeAvax-IME', + earnedTokenAddress: '0x6330c1eC0449c721F0DB17980344Abd6dC071Dfb', + earnContractAddress: '0x6330c1eC0449c721F0DB17980344Abd6dC071Dfb', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'joe-wavax-ime', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Trader Joe', + assets: ['IME', 'AVAX'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_SMALL', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://traderjoexyz.com/pool/AVAX/0xf891214fdcf9cdaa5fdc42369ee4f27f226adad6', + buyTokenUrl: + 'https://traderjoexyz.com/trade?outputCurrency=0xF891214fdcF9cDaa5fdC42369eE4F27F226AdaD6#/', + createdAt: 1643668967, + }, + { + id: 'joe-wavax-pefi2-eol', + name: 'PEFI-AVAX LP', + token: 'PEFI-AVAX JLP', + tokenDescription: 'Trader Joe', + tokenAddress: '0xb78c8238bD907c42BE45AeBdB4A8C8a5D7B49755', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooJoeAvax-PEFI', + earnedTokenAddress: '0x35A338091c2077f33BED09717EB31BA0f02Efb2f', + earnContractAddress: '0x35A338091c2077f33BED09717EB31BA0f02Efb2f', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'joe-wavax-pefi2', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Trader Joe', + assets: ['PEFI', 'AVAX'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_SMALL', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://traderjoexyz.com/pool/AVAX/0xe896cdeaac9615145c0ca09c8cd5c25bced6384c', + buyTokenUrl: + 'https://traderjoexyz.com/trade?outputCurrency=0xe896CDeaAC9615145c0cA09C8Cd5C25bced6384c', + createdAt: 1643975170, + }, + { + id: 'joe-link.e-usdc.e-eol', + name: 'Link.e-USDC.e LP', + token: 'Link.e-USDC.e JLP', + tokenDescription: 'Trader Joe', + tokenAddress: '0xb9f425bC9AF072a91c423e31e9eb7e04F226B39D', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooJoeLink.e-USDC.e', + earnedTokenAddress: '0x6537015Ea91516FdA74deB5E361d1FB4482D9525', + earnContractAddress: '0x6537015Ea91516FdA74deB5E361d1FB4482D9525', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'joe-link.e-usdc.e', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Trader Joe', + assets: ['USDCe', 'LINKe'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://traderjoexyz.com/pool/0x5947bb275c521040051d82396192181b413227a3/0xa7d7079b0fead91f3e65f86e8915cb59c1a4c664', + buyTokenUrl: + 'https://traderjoexyz.com/trade?outputCurrency=0x5947BB275c521040051D82396192181b413227A3', + createdAt: 1643975317, + }, + { + id: 'png-mim-usdc.e-eol', + name: 'MIM-USDC.e LP', + token: 'MIM-USDC.e LP', + tokenDescription: 'Pangolin', + tokenAddress: '0xE75eD6E50e3e2dc6b06FAf38b943560BD22e343B', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPangolinV2MIM-USDC.e', + earnedTokenAddress: '0x83E05C8a4AdEfA875ABe0f30a18bb6F9b54b807e', + earnContractAddress: '0x83E05C8a4AdEfA875ABe0f30a18bb6F9b54b807e', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'png-mim-usdc.e', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Pangolin', + assets: ['MIM', 'USDCe'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + 'OVER_COLLAT_ALGO_STABLECOIN', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.pangolin.exchange/#/add/0x130966628846BFd36ff31a822705796e8cb8C18D/0xA7D7079b0FEaD91F3e65f86E8915Cb59c1a4C664', + buyTokenUrl: + 'https://app.pangolin.exchange/#/swap?inputCurrency=0xA7D7079b0FEaD91F3e65f86E8915Cb59c1a4C664&outputCurrency=0x130966628846BFd36ff31a822705796e8cb8C18D', + createdAt: 1643465038, + }, + { + id: 'png-ust-wavax', + name: 'UST-AVAX LP', + token: 'UST-AVAX LP', + tokenDescription: 'Pangolin', + tokenAddress: '0xdeaBb6e80141F5E557EcBDD7e9580F37D7BBc371', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPangolinV2UST-AVAX', + earnedTokenAddress: '0xDf306fBdA58527729A8D5185aB8fEF96BFa94c7A', + earnContractAddress: '0xDf306fBdA58527729A8D5185aB8fEF96BFa94c7A', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'png-ust-wavax', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Pangolin', + assets: ['UST', 'AVAX'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + 'ALGO_STABLE', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.pangolin.exchange/#/add/AVAX/0x260Bbf5698121EB85e7a74f2E45E16Ce762EbE11', + buyTokenUrl: + 'https://app.pangolin.exchange/#/swap?outputCurrency=0x260Bbf5698121EB85e7a74f2E45E16Ce762EbE11', + createdAt: 1643836585, + }, + { + id: 'png-ust-usdc', + name: 'UST-USDC LP', + token: 'UST-USDC LP', + tokenDescription: 'Pangolin', + tokenAddress: '0x3c0ECf5F430bbE6B16A8911CB25d898Ef20805cF', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPangolinV2UST-USDC', + earnedTokenAddress: '0x6399A5E96CD627404b203Ea80517C3F8F9F78Fe6', + earnContractAddress: '0x6399A5E96CD627404b203Ea80517C3F8F9F78Fe6', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'png-ust-usdc', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Pangolin', + assets: ['UST', 'USDC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + 'ALGO_STABLE', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.pangolin.exchange/#/add/0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E/0x260Bbf5698121EB85e7a74f2E45E16Ce762EbE11', + buyTokenUrl: + 'https://app.pangolin.exchange/#/swap?inputCurrency=0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E&outputCurrency=0x260Bbf5698121EB85e7a74f2E45E16Ce762EbE11', + createdAt: 1643839674, + }, + { + id: 'grape-grape-mim', + name: 'GRAPE-MIM LP', + token: 'GRAPE-MIM LP', + tokenDescription: 'Trader Joe (Grape)', + tokenAddress: '0xb382247667fe8CA5327cA1Fa4835AE77A9907Bc8', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooGrapeGRAPE-MIM', + earnedTokenAddress: '0x9b03eF3896edea1cC1Ee19b8Fed35cA82843Aed4', + earnContractAddress: '0x9b03eF3896edea1cC1Ee19b8Fed35cA82843Aed4', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'grape-grape-mim', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Other', + assets: ['GRAPE', 'MIM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_MICRO', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + 'OVER_COLLAT_ALGO_STABLECOIN', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://traderjoexyz.com/pool/0x130966628846bfd36ff31a822705796e8cb8c18d/0x5541d83efad1f281571b343977648b75d95cdac2', + buyTokenUrl: + 'https://www.traderjoexyz.com/trade?outputCurrency=0x5541D83EFaD1f281571B343977648B75d95cdAC2', + createdAt: 1643717100, + }, + { + id: 'grape-wine-mim', + name: 'WINE-MIM LP', + token: 'WINE-MIM LP', + tokenDescription: 'Trader Joe (Grape)', + tokenAddress: '0x00cB5b42684DA62909665d8151fF80D1567722c3', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooGrapeWINE-MIM', + earnedTokenAddress: '0x0421AE152e3967361a54396486C970257c14E096', + earnContractAddress: '0x0421AE152e3967361a54396486C970257c14E096', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'grape-wine-mim', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Other', + assets: ['WINE', 'MIM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + 'OVER_COLLAT_ALGO_STABLECOIN', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://traderjoexyz.com/pool/0x130966628846bfd36ff31a822705796e8cb8c18d/0xC55036B5348CfB45a932481744645985010d3A44', + buyTokenUrl: + 'https://www.traderjoexyz.com/trade?outputCurrency=0xC55036B5348CfB45a932481744645985010d3A44', + createdAt: 1643718763, + }, + { + id: 'png-usdc.e-wavax', + name: 'USDC.e-AVAX LP', + token: 'USDC.e-AVAX LP', + tokenDescription: 'Pangolin', + tokenAddress: '0xbd918Ed441767fe7924e99F6a0E0B568ac1970D9', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPangolinV2USDC.e-AVAX', + earnedTokenAddress: '0x9B02209a331c072637C6eBd34cdCD6b6A16987a9', + earnContractAddress: '0x9B02209a331c072637C6eBd34cdCD6b6A16987a9', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'png-usdc.e-wavax', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Pangolin', + assets: ['USDCe', 'AVAX'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.pangolin.exchange/#/add/0xa7d7079b0fead91f3e65f86e8915cb59c1a4c664/0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7', + buyTokenUrl: + 'https://app.pangolin.exchange/#/swap?inputCurrency=0xa7d7079b0fead91f3e65f86e8915cb59c1a4c664&outputCurrency=0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7', + createdAt: 1643458455, + }, + { + id: 'png-png-usdc.e-eol', + name: 'PNG-USDC.e LP', + token: 'PNG-USDC.e LP', + tokenDescription: 'Pangolin', + tokenAddress: '0xC33Ac18900b2f63DFb60B554B1F53Cd5b474d4cd', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPangolinV2PNG-USDC.e', + earnedTokenAddress: '0x9829E51f6C1292563892dC65A4270b94E09B30C0', + earnContractAddress: '0x9829E51f6C1292563892dC65A4270b94E09B30C0', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'png-png-usdc.e', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Pangolin', + assets: ['PNG', 'USDCe'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.pangolin.exchange/#/add/0x60781c2586d68229fde47564546784ab3faca982/0xa7d7079b0fead91f3e65f86e8915cb59c1a4c664', + buyTokenUrl: + 'https://app.pangolin.exchange/#/swap?inputCurrency=0x60781c2586d68229fde47564546784ab3faca982&outputCurrency=0xa7d7079b0fead91f3e65f86e8915cb59c1a4c664', + createdAt: 1643469425, + }, + { + id: 'png-png-wavax-eol', + name: 'PNG-AVAX LP', + token: 'PNG-AVAX LP', + tokenDescription: 'Pangolin', + tokenAddress: '0xd7538cABBf8605BdE1f4901B47B8D42c61DE0367', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPangolinV2PNG-AVAX', + earnedTokenAddress: '0x180A73F4e0a84E4343019529429344cBEC21d946', + earnContractAddress: '0x180A73F4e0a84E4343019529429344cBEC21d946', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'png-png-wavax', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'tvl', + platform: 'Pangolin', + assets: ['PNG', 'AVAX'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.pangolin.exchange/#/add/0x60781c2586d68229fde47564546784ab3faca982/0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7', + buyTokenUrl: + 'https://app.pangolin.exchange/#/swap?inputCurrency=0x60781c2586d68229fde47564546784ab3faca982&outputCurrency=0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7', + createdAt: 1643465763, + }, + { + id: 'joe-wavax-xava', + name: 'XAVA-AVAX LP', + token: 'XAVA-AVAX JLP', + tokenDescription: 'Trader Joe', + tokenAddress: '0x72c3438cf1c915EcF5D9F17A6eD346B273d5bF71', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooJoeAVAX-XAVA', + earnedTokenAddress: '0x72A6F8E2510B9332Eaf744FEb1F7c19E3aCB2201', + earnContractAddress: '0x72A6F8E2510B9332Eaf744FEb1F7c19E3aCB2201', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'joe-wavax-xava', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Trader Joe', + assets: ['XAVA', 'AVAX'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_SMALL', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://traderjoexyz.com/pool/0xd1c3f94DE7e5B45fa4eDBBA472491a9f4B166FC4/AVAX', + buyTokenUrl: + 'https://www.traderjoexyz.com/trade?outputCurrency=0xd1c3f94DE7e5B45fa4eDBBA472491a9f4B166FC4', + createdAt: 1643391049, + }, + { + id: 'joe-wavax-cook-eol', + name: 'COOK-AVAX LP', + token: 'COOK-AVAX JLP', + tokenDescription: 'Trader Joe', + tokenAddress: '0x3fcD1d5450e63FA6af495A601E6EA1230f01c4E3', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooJoeAVAX-COOK', + earnedTokenAddress: '0x4E685C0d068cb0af88Ff662B89951Ad5B3727387', + earnContractAddress: '0x4E685C0d068cb0af88Ff662B89951Ad5B3727387', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'joe-wavax-cook', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'tvl', + platform: 'Trader Joe', + assets: ['COOK', 'AVAX'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://traderjoexyz.com/pool/0x637afeff75ca669fF92e4570B14D6399A658902f/AVAX', + buyTokenUrl: + 'https://www.traderjoexyz.com/trade?outputCurrency=0x637afeff75ca669fF92e4570B14D6399A658902f', + createdAt: 1643382032, + }, + { + id: 'joe-wavax-dcau', + name: 'DCAU-AVAX LP', + token: 'DCAU-AVAX JLP', + tokenDescription: 'Trader Joe', + tokenAddress: '0x81034A38a124A3290DC226798f34c6645B153a02', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooJoeAVAX-DCAU', + earnedTokenAddress: '0x2D48D94ABfaD5a95b5fCA0fAB9cD37dd722C84A4', + earnContractAddress: '0x2D48D94ABfaD5a95b5fCA0fAB9cD37dd722C84A4', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'joe-wavax-dcau', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Trader Joe', + assets: ['DCAU', 'AVAX'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://traderjoexyz.com/pool/0x100Cc3a819Dd3e8573fD2E46D1E66ee866068f30/AVAX', + buyTokenUrl: + 'https://www.traderjoexyz.com/trade?outputCurrency=0x100Cc3a819Dd3e8573fD2E46D1E66ee866068f30', + createdAt: 1643387033, + }, + { + id: 'joe-wavax-hec-eol', + name: 'HEC-AVAX LP', + token: 'HEC-AVAX JLP', + tokenDescription: 'Trader Joe', + tokenAddress: '0x4dC5291cdc7Ad03342994E35D0Ccc76De065A566', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooJoeAVAX-HEC', + earnedTokenAddress: '0xD8E92bcBf66a675b2Ac45f0BBbb0F285ba607AB7', + earnContractAddress: '0xD8E92bcBf66a675b2Ac45f0BBbb0F285ba607AB7', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'joe-wavax-hec', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Trader Joe', + assets: ['HEC', 'AVAX'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://traderjoexyz.com/pool/0xC7f4debC8072e23fe9259A5C0398326d8EfB7f5c/AVAX', + buyTokenUrl: + 'https://www.traderjoexyz.com/trade?outputCurrency=0xC7f4debC8072e23fe9259A5C0398326d8EfB7f5c', + createdAt: 1643388939, + }, + { + id: 'png-wavax-frax-eol', + name: 'FRAX-AVAX LP', + token: 'FRAX-AVAX LP', + tokenDescription: 'Pangolin', + tokenAddress: '0x0CE543c0f81ac9AAa665cCaAe5EeC70861a6b559', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPangolinV2AVAX-FRAX', + earnedTokenAddress: '0x405e20D81E659382e2bcaE6D6Cb6581203Fcd95D', + earnContractAddress: '0x405e20D81E659382e2bcaE6D6Cb6581203Fcd95D', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'png-wavax-frax', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'tvl', + platform: 'Pangolin', + assets: ['FRAX', 'AVAX'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_MEDIUM', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.pangolin.exchange/#/add/0xD24C2Ad096400B6FBcd2ad8B24E7acBc21A1da64/AVAX', + buyTokenUrl: + 'https://app.pangolin.exchange/#/swap?outputCurrency=0xD24C2Ad096400B6FBcd2ad8B24E7acBc21A1da64', + createdAt: 1643443063, + }, + { + id: 'png-link.e-wavax', + name: 'LINK.e-AVAX LP', + token: 'LINK.e-AVAX LP', + tokenDescription: 'Pangolin', + tokenAddress: '0x5875c368Cddd5FB9Bf2f410666ca5aad236DAbD4', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPangolinV2LINKe-AVAX', + earnedTokenAddress: '0xb2f030af9B6000912e13764018A8121751D86BE8', + earnContractAddress: '0xb2f030af9B6000912e13764018A8121751D86BE8', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'png-link.e-wavax', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Pangolin', + assets: ['LINKe', 'AVAX'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.pangolin.exchange/#/add/0x5947BB275c521040051D82396192181b413227A3/AVAX', + buyTokenUrl: + 'https://app.pangolin.exchange/#/swap?outputCurrency=0x5947BB275c521040051D82396192181b413227A3', + createdAt: 1643442618, + }, + { + id: 'png-jewel-wavax', + name: 'JEWEL-AVAX LP', + token: 'JEWEL-AVAX LP', + tokenDescription: 'Pangolin', + tokenAddress: '0x9AA76aE9f804E7a70bA3Fb8395D0042079238E9C', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPangolinV2JEWEL-AVAX', + earnedTokenAddress: '0x84Cb5FF7f5068AC02a7B0fd4772577c670A5aFC6', + earnContractAddress: '0x84Cb5FF7f5068AC02a7B0fd4772577c670A5aFC6', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'png-jewel-wavax', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Pangolin', + assets: ['JEWEL', 'AVAX'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_SMALL', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.pangolin.exchange/#/add/0x4f60a160D8C2DDdaAfe16FCC57566dB84D674BD6/AVAX', + buyTokenUrl: + 'https://app.pangolin.exchange/#/swap?outputCurrency=0x4f60a160D8C2DDdaAfe16FCC57566dB84D674BD6', + createdAt: 1643431788, + }, + { + id: 'joe-ust-wavax-eol', + name: 'UST-AVAX LP', + token: 'UST-AVAX JLP', + tokenDescription: 'Trader Joe', + tokenAddress: '0x7BF98BD74E19AD8eB5e14076140Ee0103F8F872B', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooJoeUST-AVAX', + earnedTokenAddress: '0xe6f6466E1cA56ab02eBb909C8228eD76534686D7', + earnContractAddress: '0xe6f6466E1cA56ab02eBb909C8228eD76534686D7', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'joe-ust-wavax', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Trader Joe', + assets: ['UST', 'AVAX'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + 'ALGO_STABLE', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://traderjoexyz.com/pool/0x260Bbf5698121EB85e7a74f2E45E16Ce762EbE11/AVAX', + buyTokenUrl: + 'https://www.traderjoexyz.com/trade?outputCurrency=0x260Bbf5698121EB85e7a74f2E45E16Ce762EbE11', + createdAt: 1643314337, + }, + { + id: 'joe-wavax-more', + name: 'MORE-AVAX LP', + token: 'MORE-AVAX JLP', + tokenDescription: 'Trader Joe', + tokenAddress: '0xb8361D0E3F3B0fc5e6071f3a3C3271223C49e3d9', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooJoeMORE-AVAX', + earnedTokenAddress: '0xA413a9a99F2681c89369Fe1e5F91d209C8bc7d53', + earnContractAddress: '0xA413a9a99F2681c89369Fe1e5F91d209C8bc7d53', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'joe-wavax-more', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Trader Joe', + assets: ['MORE', 'AVAX'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://traderjoexyz.com/pool/0xd9D90f882CDdD6063959A9d837B05Cb748718A05/AVAX', + buyTokenUrl: + 'https://www.traderjoexyz.com/trade?outputCurrency=0xd9D90f882CDdD6063959A9d837B05Cb748718A05', + createdAt: 1643314704, + }, + { + id: 'joe-gmx-wavax', + name: 'GMX-AVAX LP', + token: 'GMX-AVAX JLP', + tokenDescription: 'Trader Joe', + tokenAddress: '0x0c91a070f862666bBcce281346BE45766d874D98', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooJoeGMX-AVAX', + earnedTokenAddress: '0x682d9fB30cfe4Ced14a307F57AAbE9B27E05CC56', + earnContractAddress: '0x682d9fB30cfe4Ced14a307F57AAbE9B27E05CC56', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'joe-gmx-wavax', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Trader Joe', + assets: ['GMX', 'AVAX'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://traderjoexyz.com/pool/0x62edc0692BD897D2295872a9FFCac5425011c661/AVAX', + buyTokenUrl: + 'https://www.traderjoexyz.com/trade?outputCurrency=0x62edc0692BD897D2295872a9FFCac5425011c661', + createdAt: 1643314903, + }, + { + id: 'png-png', + logo: 'single-assets/PNG.png', + name: 'PNG', + token: 'PNG', + tokenDescription: 'Pangolin', + tokenAddress: '0x60781C2586D68229fde47564546784ab3fACA982', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPangolinV2PNG', + earnedTokenAddress: '0x808D5f0A62336917Da14fA9A10E9575B1040f71c', + earnContractAddress: '0x808D5f0A62336917Da14fA9A10E9575B1040f71c', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'PNG', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Pangolin', + assets: ['PNG'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_MICRO', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + ], + stratType: 'SingleStake', + buyTokenUrl: + 'https://app.pangolin.exchange/#/swap?inputCurrency=0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7&outputCurrency=0x60781C2586D68229fde47564546784ab3fACA982', + createdAt: 1642706787, + }, + { + id: 'joe-usdc.e-usdc', + name: 'USDC-USDC.e LP', + token: 'USDC-USDC.e JLP', + tokenDescription: 'Trader Joe', + tokenAddress: '0x2A8A315e82F85D1f0658C5D66A452Bbdd9356783', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooJoeUSDC.e-USDC', + earnedTokenAddress: '0x42ab5A790E99dF1b5d46f1C5C3e61d0Cd63D1f6E', + earnContractAddress: '0x42ab5A790E99dF1b5d46f1C5C3e61d0Cd63D1f6E', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'joe-usdc.e-usdc', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Trader Joe', + assets: ['USDC', 'USDCe'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://traderjoexyz.com/pool/0xA7D7079b0FEaD91F3e65f86E8915Cb59c1a4C664/0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E', + buyTokenUrl: + 'https://www.traderjoexyz.com/trade?outputCurrency=0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E', + createdAt: 1639756286, + }, + { + id: 'joe-usdt-usdt.e', + name: 'USDT-USDT.e LP', + token: 'USDt-USDT.e JLP', + tokenDescription: 'Trader Joe', + tokenAddress: '0x74B651Eff97871eA99fcc14423E611d85Eb0EA93', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooJoeUSDT-USDTe', + earnedTokenAddress: '0x258e9884c111E2e3e0273372521982bd57ef29Bd', + earnContractAddress: '0x258e9884c111E2e3e0273372521982bd57ef29Bd', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'joe-usdt-usdt.e', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Trader Joe', + assets: ['USDT', 'USDTe'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://traderjoexyz.com/pool/0x9702230a8ea53601f5cd2dc00fdbc13d4df4a8c7/0xc7198437980c041c805a1edcba50c1ce5db95118', + buyTokenUrl: + 'https://traderjoexyz.com/trade?outputCurrency=0x9702230a8ea53601f5cd2dc00fdbc13d4df4a8c7#/', + createdAt: 1643233920, + }, + { + id: 'joe-wavax-frax-eol', + name: 'FRAX-AVAX LP', + token: 'FRAX-AVAX JLP', + tokenDescription: 'Trader Joe', + tokenAddress: '0x862905a82382Db9405a40DCAa8Ee9e8F4af52C89', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooJoeAvax-FRAX', + earnedTokenAddress: '0xd2D0Cf1675961357AfC934856421D2C5ffd87b1e', + earnContractAddress: '0xd2D0Cf1675961357AfC934856421D2C5ffd87b1e', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'joe-wavax-frax', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Trader Joe', + assets: ['FRAX', 'AVAX'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://traderjoexyz.com/pool/AVAX/0xd24c2ad096400b6fbcd2ad8b24e7acbc21a1da64', + buyTokenUrl: + 'https://traderjoexyz.com/trade?outputCurrency=0xd24c2ad096400b6fbcd2ad8b24e7acbc21a1da64#/', + createdAt: 1643310908, + }, + { + id: 'joe-wavax-cly-eol', + name: 'CLY-AVAX LP', + token: 'CLY-AVAX JLP', + tokenDescription: 'Trader Joe', + tokenAddress: '0x0B2777b0c55AEaAeb56E86B6eEFa6cC2Cfa00e07', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooJoeAVAX-CLY', + earnedTokenAddress: '0x374DC1BaF7a05e2D47f8D169FB9c8c862A9082CA', + earnContractAddress: '0x374DC1BaF7a05e2D47f8D169FB9c8c862A9082CA', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'joe-wavax-cly', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Trader Joe', + assets: ['CLY', 'AVAX'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://traderjoexyz.com/pool/AVAX/0xec3492a2508DDf4FDc0cD76F31f340b30d1793e6', + buyTokenUrl: + 'https://www.traderjoexyz.com/trade?outputCurrency=0xec3492a2508DDf4FDc0cD76F31f340b30d1793e6', + createdAt: 1639753516, + }, + { + id: 'joe-ptp-wavax', + name: 'PTP-AVAX LP', + token: 'PTP-AVAX JLP', + tokenDescription: 'Trader Joe', + tokenAddress: '0xCDFD91eEa657cc2701117fe9711C9a4F61FEED23', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooJoePTP-AVAX', + earnedTokenAddress: '0xc7024B02a3C3893C482F5DD03193CFD1DBEC604f', + earnContractAddress: '0xc7024B02a3C3893C482F5DD03193CFD1DBEC604f', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'joe-ptp-wavax', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Trader Joe', + assets: ['PTP', 'AVAX'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://traderjoexyz.com/pool/AVAX/0x22d4002028f537599bE9f666d1c4Fa138522f9c8', + buyTokenUrl: + 'https://www.traderjoexyz.com/trade?outputCurrency=0x22d4002028f537599bE9f666d1c4Fa138522f9c8', + createdAt: 1639751352, + }, + { + id: 'joe-awool-wavax-eol', + name: 'aWOOL-AVAX LP', + token: 'aWOOL-AVAX JLP', + tokenDescription: 'Trader Joe', + tokenAddress: '0xf895E6588585912e60b0131fa173e986859f69D5', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooJoeaWOOL-AVAX', + earnedTokenAddress: '0xCefB5D22477394222F5C683E917Aa7c65847262C', + earnContractAddress: '0xCefB5D22477394222F5C683E917Aa7c65847262C', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'joe-awool-wavax', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Trader Joe', + assets: ['aWOOL', 'AVAX'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + retireReason: 'rewards', + addLiquidityUrl: + 'https://traderjoexyz.com/pool/AVAX/0x5eDE350E84223fb50775fD91a723F2ca71034cf7', + buyTokenUrl: + 'https://www.traderjoexyz.com/trade?outputCurrency=0x5eDE350E84223fb50775fD91a723F2ca71034cf7', + createdAt: 1639412305, + }, + { + id: 'joe-klo-wavax-eol', + name: 'KLO-AVAX LP', + token: 'KLO-AVAX JLP', + tokenDescription: 'Trader Joe', + tokenAddress: '0xb2fF0817ad078C92C3AfB82326592e06C92581B8', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooJoeKLO-AVAX', + earnedTokenAddress: '0x57c7128A8FbA6425F380AF712EFDCD7688acE332', + earnContractAddress: '0x57c7128A8FbA6425F380AF712EFDCD7688acE332', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'joe-klo-wavax', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Trader Joe', + assets: ['KLO', 'AVAX'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://traderjoexyz.com/pool/AVAX/0xb27c8941a7Df8958A1778c0259f76D1F8B711C35', + buyTokenUrl: + 'https://www.traderjoexyz.com/trade?outputCurrency=0xb27c8941a7Df8958A1778c0259f76D1F8B711C35', + createdAt: 1639411464, + }, + { + id: 'joe-craft-wavax-eol', + name: 'CRAFT-AVAX LP', + token: 'CRAFT-AVAX JLP', + tokenDescription: 'Trader Joe', + tokenAddress: '0x86D1b1Ab4812a104BC1Ea1FbD07809DE636E6C6b', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooJoeCRAFT-AVAX', + earnedTokenAddress: '0x5526851c271d8B59F6412e3244A7A6db3A13808f', + earnContractAddress: '0x5526851c271d8B59F6412e3244A7A6db3A13808f', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'joe-craft-wavax', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Trader Joe', + assets: ['CRAFT', 'AVAX'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://traderjoexyz.com/pool/AVAX/0x8aE8be25C23833e0A01Aa200403e826F611f9CD2', + buyTokenUrl: + 'https://www.traderjoexyz.com/trade?outputCurrency=0x8aE8be25C23833e0A01Aa200403e826F611f9CD2', + createdAt: 1639410461, + }, + { + id: 'joe-melt-wavax-eol', + name: 'MELT-AVAX LP', + token: 'MELT-AVAX JLP', + tokenDescription: 'Trader Joe', + tokenAddress: '0x2923a62b2531EC744ca0C1e61dfFab1Ad9369FeB', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooJoeMELT-AVAX', + earnedTokenAddress: '0x2ebAF60a6d6AE9ffe2C418470dF0D2444b996AE9', + earnContractAddress: '0x2ebAF60a6d6AE9ffe2C418470dF0D2444b996AE9', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'joe-melt-wavax', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'tvl', + platform: 'Trader Joe', + assets: ['MELT', 'AVAX'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://traderjoexyz.com/pool/AVAX/0x47EB6F7525C1aA999FBC9ee92715F5231eB1241D', + buyTokenUrl: + 'https://www.traderjoexyz.com/trade?outputCurrency=0x47EB6F7525C1aA999FBC9ee92715F5231eB1241D', + createdAt: 1639409390, + }, + { + id: 'joe-gohm-wavax', + name: 'gOHM-AVAX LP', + token: 'gOHM-AVAX JLP', + tokenDescription: 'Trader Joe', + tokenAddress: '0xB674f93952F02F2538214D4572Aa47F262e990Ff', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooJoegOHM-AVAX', + earnedTokenAddress: '0x40324434a0b53dd1ED167Ba30dcB6B4bd7a9536d', + earnContractAddress: '0x40324434a0b53dd1ED167Ba30dcB6B4bd7a9536d', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'joe-gohm-wavax', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Trader Joe', + assets: ['gOHM', 'AVAX'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://traderjoexyz.com/pool/AVAX/0x321E7092a180BB43555132ec53AaA65a5bF84251', + buyTokenUrl: + 'https://www.traderjoexyz.com/trade?outputCurrency=0x321E7092a180BB43555132ec53AaA65a5bF84251', + createdAt: 1638350965, + }, + { + id: 'synapse-nusdlp', + logo: 'uncategorized/nUSD-LP.png', + name: 'nUSD/DAI/USDC/USDT', + token: 'nUSD-LP', + tokenDescription: 'Synapse', + tokenAddress: '0xCA87BF3ec55372D9540437d7a86a7750B42C02f4', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSynapsenUSD-LP', + earnedTokenAddress: '0xa803058482F2681f347BB0da6f31F2DF94d72DEA', + earnContractAddress: '0xa803058482F2681f347BB0da6f31F2DF94d72DEA', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'synapse-nusdlp', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Synapse', + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'ALGO_STABLE', + 'MCAP_MICRO', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratMultiLP', + assets: ['nUSD', 'DAIe', 'USDCe', 'USDTe'], + withdrawalFee: '0.01%', + addLiquidityUrl: 'https://synapseprotocol.com/pools/avalanchenusd', + createdAt: 1637768693, + }, + { + id: 'blizz-avax-pause', + logo: 'single-assets/AVAX.svg', + name: 'AVAX', + token: 'AVAX', + tokenDescription: 'Blizz', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBlizzAVAX', + earnedTokenAddress: '0x99EeB92A4896a9F45E9390e2A05ceE5647BA0f95', + earnContractAddress: '0x99EeB92A4896a9F45E9390e2A05ceE5647BA0f95', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'AVAX', + oraclePrice: 0, + depositsPaused: true, + status: 'active', + platform: 'Blizz', + assets: ['AVAX'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'Lending', + withdrawalFee: '0.01%', + buyTokenUrl: + 'https://www.traderjoexyz.com/trade?outputCurrency=0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7', + createdAt: 1637579519, + }, + { + id: 'blizz-eth-pause', + logo: 'single-assets/ETH.svg', + name: 'WETH.e', + token: 'WETH.e', + tokenDescription: 'Blizz', + tokenAddress: '0x49D5c2BdFfac6CE2BFdB6640F4F80f226bc10bAB', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBlizzETH', + earnedTokenAddress: '0x6cBaEBC1333E72206FC326e810972D28f8250485', + earnContractAddress: '0x6cBaEBC1333E72206FC326e810972D28f8250485', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'WETH.e', + oraclePrice: 0, + depositsPaused: true, + status: 'active', + platform: 'Blizz', + assets: ['WETHe'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'Lending', + withdrawalFee: '0.01%', + buyTokenUrl: + 'https://www.traderjoexyz.com/trade?outputCurrency=0x49D5c2BdFfac6CE2BFdB6640F4F80f226bc10bAB', + createdAt: 1637587754, + }, + { + id: 'blizz-wbtc-pause', + logo: 'single-assets/WBTC.svg', + name: 'WBTC.e', + token: 'WBTC.e', + tokenDescription: 'Blizz', + tokenAddress: '0x50b7545627a5162F82A992c33b87aDc75187B218', + tokenDecimals: 8, + tokenDescriptionUrl: '#', + earnedToken: 'mooBlizzBTC', + earnedTokenAddress: '0x39F94cb5d9239858Ba8eeBD1174b8B13e34b240B', + earnContractAddress: '0x39F94cb5d9239858Ba8eeBD1174b8B13e34b240B', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'WBTC.e', + oraclePrice: 0, + depositsPaused: true, + status: 'active', + platform: 'Blizz', + assets: ['WBTCe'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'Lending', + withdrawalFee: '0.01%', + buyTokenUrl: + 'https://www.traderjoexyz.com/trade?outputCurrency=0x50b7545627a5162F82A992c33b87aDc75187B218', + createdAt: 1637589664, + }, + { + id: 'blizz-blzz-avax', + name: 'BLZZ-AVAX LP', + token: 'BLZZ-AVAX LP', + tokenDescription: 'Trader Joe (Blizz)', + tokenAddress: '0xac3F978714c613E768272c502a8912bC03DCf624', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBlizzBLZZ-AVAX', + earnedTokenAddress: '0xE06575Cfd4a631e8C0Cd9FBDd8d77AB04CFfA52C', + earnContractAddress: '0xE06575Cfd4a631e8C0Cd9FBDd8d77AB04CFfA52C', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'blizz-blzz-avax', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Blizz', + assets: ['BLZZ', 'AVAX'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://www.traderjoexyz.com/pool/AVAX/0x0f34919404a290e71fc6A510cB4a6aCb8D764b24', + buyTokenUrl: + 'https://traderjoexyz.com/trade?outputCurrency=0x0f34919404a290e71fc6A510cB4a6aCb8D764b24', + createdAt: 1636366466, + }, + { + id: 'joe-cra-wavax', + name: 'CRA-AVAX LP', + token: 'CRA-AVAX JLP', + tokenDescription: 'Trader Joe', + tokenAddress: '0x140CAc5f0e05cBEc857e65353839FddD0D8482C1', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooJoeCRA-AVAX', + earnedTokenAddress: '0x5dd766E859c4BB01eaBCaFc320dED1A5E8e4a147', + earnContractAddress: '0x5dd766E859c4BB01eaBCaFc320dED1A5E8e4a147', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'joe-cra-wavax', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Trader Joe', + assets: ['CRA', 'AVAX'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_SMALL', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://traderjoexyz.com/pool/AVAX/0xA32608e873F9DdEF944B24798db69d80Bbb4d1ed', + buyTokenUrl: + 'https://www.traderjoexyz.com/trade?outputCurrency=0xA32608e873F9DdEF944B24798db69d80Bbb4d1ed', + createdAt: 1637589059, + }, + { + id: 'joe-wavax-boo-eol', + name: 'BOO-AVAX LP', + token: 'BOO-AVAX JLP', + tokenDescription: 'Trader Joe', + tokenAddress: '0xebF50b8089a0c5E7c5de23F644fcD723818f65B3', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooJoeAVAX-BOO', + earnedTokenAddress: '0x714A52Cdee18cD074BaA87F1f9631B13d302E516', + earnContractAddress: '0x714A52Cdee18cD074BaA87F1f9631B13d302E516', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'joe-wavax-boo', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Trader Joe', + assets: ['BOO', 'AVAX'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MEDIUM', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://traderjoexyz.com/pool/AVAX/0xbD83010eB60F12112908774998F65761cf9f6f9a', + buyTokenUrl: + 'https://www.traderjoexyz.com/trade?outputCurrency=0xbD83010eB60F12112908774998F65761cf9f6f9a', + createdAt: 1637251694, + }, + { + id: 'spell-avax-mim-crv-eol', + logo: 'uncategorized/MIM2CRV.svg', + name: 'MIM/USDC/USDT', + token: 'MIM-3PoolV2', + tokenDescription: 'Curve (MIM)', + tokenAddress: '0xAEA2E71b631fA93683BCF256A8689dFa0e094fcD', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooAbrcdbrMIM-3PoolV2', + earnedTokenAddress: '0x275eF36E6097c68bE8765c238100BF061B38A922', + earnContractAddress: '0x275eF36E6097c68bE8765c238100BF061B38A922', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'curve-avax-mim', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'MIM', + assets: ['MIM', 'USDCe', 'USDTe'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + 'OVER_COLLAT_ALGO_STABLECOIN', + ], + stratType: 'StratMultiLP', + withdrawalFee: '0%', + addLiquidityUrl: 'https://avax.curve.fi/factory/4/deposit', + createdAt: 1637146468, + }, + { + id: 'bankerjoe-avax', + logo: 'single-assets/AVAX.svg', + name: 'AVAX', + token: 'AVAX', + tokenDescription: 'Banker Joe', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBankerJoeAVAX', + earnedTokenAddress: '0xfda2E1E9BE74F60738e935b06A5d9C32143B18D5', + earnContractAddress: '0xfda2E1E9BE74F60738e935b06A5d9C32143B18D5', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'AVAX', + oraclePrice: 0, + depositsPaused: true, + status: 'active', + platform: 'Banker Joe', + assets: ['AVAX'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'Lending', + withdrawalFee: '0.01%', + buyTokenUrl: + 'https://www.traderjoexyz.com/trade?outputCurrency=0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7', + createdAt: 1636471887, + }, + { + id: 'bankerjoe-weth.e', + logo: 'single-assets/ETH.svg', + name: 'WETH.e', + token: 'WETH.e', + tokenDescription: 'Banker Joe', + tokenAddress: '0x49D5c2BdFfac6CE2BFdB6640F4F80f226bc10bAB', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBankerJoeWETH.e', + earnedTokenAddress: '0x7E47541114db3addD074EB5aAD3A2318671FD91D', + earnContractAddress: '0x7E47541114db3addD074EB5aAD3A2318671FD91D', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'WETH.e', + oraclePrice: 0, + depositsPaused: true, + status: 'active', + platform: 'Banker Joe', + assets: ['WETHe'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'Lending', + withdrawalFee: '0.01%', + buyTokenUrl: + 'https://www.traderjoexyz.com/trade?outputCurrency=0x49D5c2BdFfac6CE2BFdB6640F4F80f226bc10bAB', + createdAt: 1636468072, + }, + { + id: 'bankerjoe-wbtc.e', + logo: 'single-assets/WBTC.svg', + name: 'WBTC.e', + token: 'WBTC.e', + tokenDescription: 'Banker Joe', + tokenAddress: '0x50b7545627a5162F82A992c33b87aDc75187B218', + tokenDecimals: 8, + tokenDescriptionUrl: '#', + earnedToken: 'mooBankerJoeWBTC.e', + earnedTokenAddress: '0x4C25854f6DA3b5848F7B5C71dcb8EEe20b292d3E', + earnContractAddress: '0x4C25854f6DA3b5848F7B5C71dcb8EEe20b292d3E', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'WBTC.e', + oraclePrice: 0, + depositsPaused: true, + status: 'active', + platform: 'Banker Joe', + assets: ['WBTCe'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'Lending', + withdrawalFee: '0.01%', + buyTokenUrl: + 'https://www.traderjoexyz.com/trade?outputCurrency=0x50b7545627a5162F82A992c33b87aDc75187B218', + createdAt: 1636462707, + }, + { + id: 'bankerjoe-usdc.e', + logo: 'single-assets/USDC.svg', + name: 'USDC.e', + token: 'USDC.e', + tokenDescription: 'Banker Joe', + tokenAddress: '0xA7D7079b0FEaD91F3e65f86E8915Cb59c1a4C664', + tokenDecimals: 6, + tokenDescriptionUrl: '#', + earnedToken: 'mooBankerJoeUSDC.e', + earnedTokenAddress: '0xEbdf71f56BB3ae1D145a4121d0DDCa5ABEA7a946', + earnContractAddress: '0xEbdf71f56BB3ae1D145a4121d0DDCa5ABEA7a946', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'USDC.e', + oraclePrice: 0, + depositsPaused: true, + status: 'active', + platform: 'Banker Joe', + assets: ['USDCe'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'Lending', + withdrawalFee: '0.01%', + buyTokenUrl: + 'https://www.traderjoexyz.com/trade?outputCurrency=0xA7D7079b0FEaD91F3e65f86E8915Cb59c1a4C664', + createdAt: 1636468925, + }, + { + id: 'bankerjoe-usdt.e', + logo: 'single-assets/USDT.svg', + name: 'USDT.e', + token: 'USDT.e', + tokenDescription: 'Banker Joe', + tokenAddress: '0xc7198437980c041c805A1EDcbA50c1Ce5db95118', + tokenDecimals: 6, + tokenDescriptionUrl: '#', + earnedToken: 'mooBankerJoeUSDT.e', + earnedTokenAddress: '0x87c4F0BB71C4Bb92809F33dBd807614475eA8a5a', + earnContractAddress: '0x87c4F0BB71C4Bb92809F33dBd807614475eA8a5a', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'USDT.e', + oraclePrice: 0, + depositsPaused: true, + status: 'active', + platform: 'Banker Joe', + assets: ['USDTe'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'Lending', + withdrawalFee: '0.01%', + buyTokenUrl: + 'https://www.traderjoexyz.com/trade?outputCurrency=0xc7198437980c041c805A1EDcbA50c1Ce5db95118', + createdAt: 1636470449, + }, + { + id: 'bankerjoe-link.e-eol', + logo: 'single-assets/LINK.png', + name: 'LINK.e', + token: 'LINK.e', + tokenDescription: 'Banker Joe', + tokenAddress: '0x5947BB275c521040051D82396192181b413227A3', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBankerJoeLINK.e', + earnedTokenAddress: '0x4112D114658c8B9a7598E4b588f75e80B2d9b1F4', + earnContractAddress: '0x4112D114658c8B9a7598E4b588f75e80B2d9b1F4', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'LINK.e', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'tvl', + platform: 'Banker Joe', + assets: ['LINKe'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'Lending', + withdrawalFee: '0.01%', + buyTokenUrl: + 'https://www.traderjoexyz.com/trade?outputCurrency=0x5947BB275c521040051D82396192181b413227A3', + createdAt: 1636458630, + }, + { + id: 'bankerjoe-mim-eol', + logo: 'single-assets/MIM.png', + name: 'MIM', + token: 'MIM', + tokenDescription: 'Banker Joe', + tokenAddress: '0x130966628846BFd36ff31a822705796e8cb8C18D', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBankerJoeMIM', + earnedTokenAddress: '0xfe27D61F8386370d6CfA63EA06470ED55F6DBFe7', + earnContractAddress: '0xfe27D61F8386370d6CfA63EA06470ED55F6DBFe7', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'MIM', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Banker Joe', + assets: ['MIM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + 'OVER_COLLAT_ALGO_STABLECOIN', + ], + stratType: 'Lending', + withdrawalFee: '0.01%', + buyTokenUrl: + 'https://www.traderjoexyz.com/trade?outputCurrency=0x130966628846BFd36ff31a822705796e8cb8C18D', + createdAt: 1636455936, + }, + { + id: 'joe-wavax-bifi-eol', + name: 'BIFI-AVAX LP', + token: 'BIFI-AVAX JLP', + tokenDescription: 'Trader Joe', + tokenAddress: '0x361221991B3B6282fF3a62Bc874d018bfAF1f8C8', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooJoeWAVAX-BIFI', + earnedTokenAddress: '0xb1e29194d90d67b8d1c4104FDf6DaF0F7d3344D5', + earnContractAddress: '0xb1e29194d90d67b8d1c4104FDf6DaF0F7d3344D5', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'joe-wavax-bifi', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Trader Joe', + assets: ['BIFI', 'AVAX'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://www.traderjoexyz.com/pool/AVAX/0xd6070ae98b8069de6b494332d1a1a81b6179d960', + buyTokenUrl: 'https://www.traderjoexyz.com/trade', + createdAt: 1632231693, + }, + { + id: 'curve-avax-av3crv', + logo: 'polygon/CURVE-3Pool.png', + name: 'DAI/USDC/USDT', + token: 'av3CRV', + tokenDescription: 'Curve', + tokenAddress: '0x1337BedC9D22ecbe766dF105c9623922A27963EC', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCurveAv3CRV', + earnedTokenAddress: '0x79A44dc13e5863Cf4AB36ab13e038A5F16861Abc', + earnContractAddress: '0x79A44dc13e5863Cf4AB36ab13e038A5F16861Abc', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'curve-avax-av3crv', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Curve', + assets: ['DAIe', 'USDCe', 'USDTe'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratMultiLP', + withdrawalFee: '0%', + addLiquidityUrl: 'https://avax.curve.fi/aave/deposit', + createdAt: 1652662923, + }, + { + id: 'joe-mai-wavax-v2-eol', + name: 'MAI-AVAX LP', + token: 'MAI-AVAX JLP', + tokenDescription: 'Trader Joe', + tokenAddress: '0x23dDca8de11eCcd8000263f008A92e10dC1f21e8', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooJoeMAI-AVAX', + earnedTokenAddress: '0x41e6612044AeDDeB19102304775cA39c204Ad030', + earnContractAddress: '0x41e6612044AeDDeB19102304775cA39c204Ad030', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'joe-mai-wavax-v2', + oraclePrice: 0, + depositsPaused: false, + status: 'eol', + platform: 'Trader Joe', + assets: ['MAI', 'AVAX'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MEDIUM', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + 'OVER_COLLAT_ALGO_STABLECOIN', + ], + stratType: 'StratLP', + retireReason: 'rewards', + addLiquidityUrl: + 'https://traderjoexyz.com/pool/AVAX/0x5c49b268c9841AFF1Cc3B0a418ff5c3442eE3F3b', + buyTokenUrl: 'https://www.traderjoexyz.com/trade', + createdAt: 1636310053, + }, + { + id: 'joe-ampl-wavax-eol', + name: 'AMPL-AVAX LP', + token: 'AMPL-AVAX JLP', + tokenDescription: 'Trader Joe', + tokenAddress: '0x230c4aD11510360aD0DB564a889C33559A959487', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooJoeAMPL-AVAX', + earnedTokenAddress: '0x936d1f2ECF2C911Efba16BCBB9F205184d827986', + earnContractAddress: '0x936d1f2ECF2C911Efba16BCBB9F205184d827986', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'joe-ampl-wavax', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Trader Joe', + assets: ['AMPL', 'AVAX'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MEDIUM', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://traderjoexyz.com/pool/AVAX/0x027dbcA046ca156De9622cD1e2D907d375e53aa7', + buyTokenUrl: 'https://www.traderjoexyz.com/trade', + createdAt: 1636308849, + retiredReason: 'tvl', + }, + { + id: 'sing-usdt.e-sing-eol', + name: 'SING-USDT.e LP', + token: 'SING-USDT.e LP', + tokenDescription: 'TraderJoe (Singular)', + tokenAddress: '0x42B33De8FAa08F9242F9E20d268FBd251DCEBd72', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSingUSDT.e-SING', + earnedTokenAddress: '0x865628e18e99Ab563405E1F329024C50f7093318', + earnContractAddress: '0x865628e18e99Ab563405E1F329024C50f7093318', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'sing-usdt.e-sing', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['SING', 'USDTe'], + addLiquidityUrl: + 'https://www.traderjoexyz.com/pool/0xc7198437980c041c805a1edcba50c1ce5db95118/0xf9a075c9647e91410bf6c402bdf166e1540f67f0', + buyTokenUrl: + 'https://www.traderjoexyz.com/trade?outputCurrency=0xf9a075c9647e91410bf6c402bdf166e1540f67f0', + createdAt: 1633701180, + retiredReason: 'tvl', + }, + { + id: 'aave-usdc.e-eol', + logo: 'single-assets/USDC.svg', + name: 'USDC.e', + token: 'USDC.e', + tokenDescription: 'Aave', + tokenAddress: '0xA7D7079b0FEaD91F3e65f86E8915Cb59c1a4C664', + tokenDecimals: 6, + tokenDescriptionUrl: '#', + earnedToken: 'mooAaveUSDC.e', + earnedTokenAddress: '0xD795d70ec3C7b990ffED7a725a18Be5A9579c3b9', + earnContractAddress: '0xD795d70ec3C7b990ffED7a725a18Be5A9579c3b9', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'USDC.e', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Aave', + assets: ['USDCe'], + risks: [ + 'COMPLEXITY_MID', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'Lending', + withdrawalFee: '0.01%', + retireReason: 'rewards', + buyTokenUrl: + 'https://www.traderjoexyz.com/trade?outputCurrency=0xA7D7079b0FEaD91F3e65f86E8915Cb59c1a4C664', + createdAt: 1633512435, + }, + { + id: 'aave-usdt.e-eol', + logo: 'single-assets/USDT.svg', + name: 'USDT.e', + token: 'USDT.e', + tokenDescription: 'Aave', + tokenAddress: '0xc7198437980c041c805A1EDcbA50c1Ce5db95118', + tokenDecimals: 6, + tokenDescriptionUrl: '#', + earnedToken: 'mooAaveUSDT.e', + earnedTokenAddress: '0xb6767518b205ea8B312d2EF4d992A2a08C2f2416', + earnContractAddress: '0xb6767518b205ea8B312d2EF4d992A2a08C2f2416', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'USDT.e', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Aave', + assets: ['USDTe'], + risks: [ + 'COMPLEXITY_MID', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'Lending', + withdrawalFee: '0.01%', + buyTokenUrl: + 'https://www.traderjoexyz.com/trade?outputCurrency=0xc7198437980c041c805A1EDcbA50c1Ce5db95118', + createdAt: 1633529509, + retiredReason: 'tvl', + }, + { + id: 'aave-aave.e-eol', + logo: 'single-assets/AAVE.svg', + name: 'AAVE.e', + token: 'AAVE.e', + tokenDescription: 'Aave', + tokenAddress: '0x63a72806098Bd3D9520cC43356dD78afe5D386D9', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooAaveAAVE.e', + earnedTokenAddress: '0x6944E87349dA351b441c4CFa4B7B749AD2DD2c81', + earnContractAddress: '0x6944E87349dA351b441c4CFa4B7B749AD2DD2c81', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'AAVE.e', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Aave', + assets: ['AAVEe'], + risks: [ + 'COMPLEXITY_MID', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'Lending', + withdrawalFee: '0.01%', + retireReason: 'rewards', + buyTokenUrl: + 'https://www.traderjoexyz.com/trade?outputCurrency=0x63a72806098Bd3D9520cC43356dD78afe5D386D9', + createdAt: 1633524150, + }, + { + id: 'joe-joe-usdc.e-eol', + name: 'JOE-USDC.e LP', + token: 'JOE-USDC.e JLP', + tokenDescription: 'Trader Joe', + tokenAddress: '0x67926d973cD8eE876aD210fAaf7DFfA99E414aCf', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooJoeJOE-USDC.e', + earnedTokenAddress: '0xea75ff4F580418A1430Bd3EBaF26B03C096D9489', + earnContractAddress: '0xea75ff4F580418A1430Bd3EBaF26B03C096D9489', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'joe-joe-usdc.e', + oraclePrice: 0, + depositsPaused: false, + status: 'eol', + platform: 'Trader Joe', + assets: ['JOE', 'USDCe'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MEDIUM', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + retireReason: 'rewards', + addLiquidityUrl: + 'https://www.traderjoexyz.com/pool/0x6e84a6216ea6dacc71ee8e6b0a5b7322eebc0fdd/0xa7d7079b0fead91f3e65f86e8915cb59c1a4c664', + buyTokenUrl: 'https://www.traderjoexyz.com/trade', + createdAt: 1632845828, + }, + { + id: 'joe-wavax-aave.e-eol', + name: 'AAVE.e-AVAX LP', + token: 'AAVE.e-AVAX JLP', + tokenDescription: 'Trader Joe', + tokenAddress: '0xc3e6D9f7a3A5E3e223356383C7C055Ee3F26A34F', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooJoeAVAX-AAVE.e', + earnedTokenAddress: '0xaF5D5a21E6d53b96daf37EC9fC9360c5b6B4AeBE', + earnContractAddress: '0xaF5D5a21E6d53b96daf37EC9fC9360c5b6B4AeBE', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'joe-wavax-aave.e', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Trader Joe', + assets: ['AAVEe', 'AVAX'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_MEDIUM', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://www.traderjoexyz.com/pool/0x63a72806098bd3d9520cc43356dd78afe5d386d9/AVAX', + buyTokenUrl: 'https://www.traderjoexyz.com/trade', + createdAt: 1632847091, + }, + { + id: 'joe-mai-wavax-eol', + name: 'miMatic-AVAX LP', + token: 'miMatic-AVAX JLP', + tokenDescription: 'Trader Joe', + tokenAddress: '0xD6d03fe131dB3dE3aF5E6326036BaC4C1Cf8C80d', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooJoeMiMatic-AVAX', + earnedTokenAddress: '0xe419f17821F10Ce741F67232406F6a8585d52005', + earnContractAddress: '0xe419f17821F10Ce741F67232406F6a8585d52005', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'joe-mai-wavax', + oraclePrice: 0, + depositsPaused: false, + status: 'eol', + platform: 'Trader Joe', + assets: ['miMatic', 'AVAX'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://www.traderjoexyz.com/pool/0x3b55e45fd6bd7d4724f5c47e0d1bcaedd059263e/AVAX', + buyTokenUrl: 'https://www.traderjoexyz.com/trade', + createdAt: 1632848062, + }, + { + id: 'joe-weth.e-usdc.e-eol', + name: 'WETH.e-USDC.e LP', + token: 'WETH.e-USDC.e JLP', + tokenDescription: 'Trader Joe', + tokenAddress: '0x199fb78019A08af2Cb6a078409D0C8233Eba8a0c', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooJoeWETH.e-USDC.e', + earnedTokenAddress: '0xA4D0b2100107479dd637526F9296D34D8CBdde13', + earnContractAddress: '0xA4D0b2100107479dd637526F9296D34D8CBdde13', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'joe-weth.e-usdc.e', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Trader Joe', + assets: ['WETHe', 'USDCe'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://www.traderjoexyz.com/pool/0x49d5c2bdffac6ce2bfdb6640f4f80f226bc10bab/0xa7d7079b0fead91f3e65f86e8915cb59c1a4c664', + buyTokenUrl: 'https://www.traderjoexyz.com/trade', + createdAt: 1632849037, + }, + { + id: 'joe-wbtc.e-usdc.e-eol', + name: 'WBTC.e-USDC.e LP', + token: 'WBTC.e-USDC.e JLP', + tokenDescription: 'Trader Joe', + tokenAddress: '0x62475f52aDd016A06B398aA3b2C2f2E540d36859', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooJoeWBTC.e-USDC.e', + earnedTokenAddress: '0x0D6f7D5Bf8406FAaa1eeB66756f684dBc6790350', + earnContractAddress: '0x0D6f7D5Bf8406FAaa1eeB66756f684dBc6790350', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'joe-wbtc.e-usdc.e', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Trader Joe', + assets: ['WBTCe', 'USDCe'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://www.traderjoexyz.com/pool/0x50b7545627a5162f82a992c33b87adc75187b218/0xa7d7079b0fead91f3e65f86e8915cb59c1a4c664', + buyTokenUrl: 'https://www.traderjoexyz.com/trade', + createdAt: 1632850669, + }, + { + id: 'joe-bnb-wavax', + name: 'BNB-AVAX LP', + token: 'BNB-AVAX JLP', + tokenDescription: 'Trader Joe', + tokenAddress: '0xeb8eB6300c53C3AddBb7382Ff6c6FbC4165B0742', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooJoeBNB-WAVAX', + earnedTokenAddress: '0x2b7066770EF90eb7faCFB6cbe6A975C91FA13151', + earnContractAddress: '0x2b7066770EF90eb7faCFB6cbe6A975C91FA13151', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'joe-bnb-wavax', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Trader Joe', + assets: ['BNB', 'AVAX'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://www.traderjoexyz.com/pool/0x264c1383ea520f73dd837f915ef3a732e204a493/AVAX', + buyTokenUrl: 'https://www.traderjoexyz.com/trade', + createdAt: 1632232139, + }, + { + id: 'joe-usdc.e-usdt.e-eol', + name: 'USDC.e-USDT.e LP', + token: 'USDC.e-USDT.e JLP', + tokenDescription: 'Trader Joe', + tokenAddress: '0x2E02539203256c83c7a9F6fA6f8608A32A2b1Ca2', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooJoeUSDC.e-USDT.e', + earnedTokenAddress: '0xE37CeD3b5FBeDb523a48eB4eA3c3e13b2092352a', + earnContractAddress: '0xE37CeD3b5FBeDb523a48eB4eA3c3e13b2092352a', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'joe-usdc.e-usdt.e', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Trader Joe', + assets: ['USDCe', 'USDTe'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + retireReason: 'rewards', + addLiquidityUrl: + 'https://www.traderjoexyz.com/pool/0xa7d7079b0fead91f3e65f86e8915cb59c1a4c664/0xc7198437980c041c805a1edcba50c1ce5db95118', + buyTokenUrl: 'https://www.traderjoexyz.com/trade', + createdAt: 1632154081, + }, + { + id: 'joe-usdt.e-dai.e-eol', + name: 'USDT.e-DAI.e LP', + token: 'USDT.e-DAI.e JLP', + tokenDescription: 'Trader Joe', + tokenAddress: '0xa6908C7E3Be8F4Cd2eB704B5cB73583eBF56Ee62', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooJoeUSDT.e-DAI.e', + earnedTokenAddress: '0x95D11A45B0B55F96D75f70d63EBf95a824cD836D', + earnContractAddress: '0x95D11A45B0B55F96D75f70d63EBf95a824cD836D', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'joe-usdt.e-dai.e', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Trader Joe', + assets: ['USDTe', 'DAIe'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + retireReason: 'rewards', + addLiquidityUrl: + 'https://www.traderjoexyz.com/pool/0xc7198437980c041c805a1edcba50c1ce5db95118/0xd586e7f844cea2f87f50152665bcbc2c279d8d70', + buyTokenUrl: 'https://www.traderjoexyz.com/trade', + createdAt: 1632133345, + }, + { + id: 'joe-wavax-usdt.e-eol', + name: 'USDT.e-AVAX LP', + token: 'USDT.e-AVAX JLP', + tokenDescription: 'Trader Joe', + tokenAddress: '0xeD8CBD9F0cE3C6986b22002F03c6475CEb7a6256', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooJoeWAVAX-USDT.e', + earnedTokenAddress: '0xc1e960785292E68a027FC88042e3ec1A5A064B3C', + earnContractAddress: '0xc1e960785292E68a027FC88042e3ec1A5A064B3C', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'joe-wavax-usdt.e', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Trader Joe', + assets: ['USDTe', 'AVAX'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://www.traderjoexyz.com/pool/AVAX/0xc7198437980c041c805a1edcba50c1ce5db95118', + buyTokenUrl: 'https://www.traderjoexyz.com/trade', + createdAt: 1632129313, + }, + { + id: 'joe-link.e-wavax', + name: 'LINK.e-AVAX LP', + token: 'LINK.e-AVAX JLP', + tokenDescription: 'Trader Joe', + tokenAddress: '0x6F3a0C89f611Ef5dC9d96650324ac633D02265D3', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooJoeLINK.e-WAVAX', + earnedTokenAddress: '0x7cB719CD18E171c3db4607536804f34A01AE506F', + earnContractAddress: '0x7cB719CD18E171c3db4607536804f34A01AE506F', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'joe-link.e-wavax', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Trader Joe', + assets: ['LINKe', 'AVAX'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://www.traderjoexyz.com/pool/0x5947bb275c521040051d82396192181b413227a3/AVAX', + buyTokenUrl: 'https://www.traderjoexyz.com/trade', + createdAt: 1632125698, + }, + { + id: 'joe-wavax-spell-eol', + name: 'SPELL-AVAX LP', + token: 'SPELL-AVAX JLP', + tokenDescription: 'Trader Joe', + tokenAddress: '0x62cf16BF2BC053E7102E2AC1DEE5029b94008d99', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooJoeSPELL-WAVAX', + earnedTokenAddress: '0x3E25CcCD4aC11d4F417b992285188714E80BAE8C', + earnContractAddress: '0x3E25CcCD4aC11d4F417b992285188714E80BAE8C', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'joe-wavax-spell', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Trader Joe', + assets: ['SPELL', 'AVAX'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MEDIUM', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://www.traderjoexyz.com/pool/0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7/0xCE1bFFBD5374Dac86a2893119683F4911a2F7814', + buyTokenUrl: 'https://www.traderjoexyz.com/trade', + createdAt: 1631896399, + }, + { + id: 'joe-frax-wavax-eol', + name: 'FRAX-AVAX LP', + token: 'FRAX-AVAX JLP', + tokenDescription: 'Trader Joe', + tokenAddress: '0x0d84595e8638dBc631076c51000B2d31120D8aa1', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooJoeFRAX-WAVAX', + earnedTokenAddress: '0xdAfD1803956c0eb7D85d475eb10D69Baa207C72d', + earnContractAddress: '0xdAfD1803956c0eb7D85d475eb10D69Baa207C72d', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'joe-frax-wavax', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Trader Joe', + assets: ['FRAX', 'AVAX'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_MEDIUM', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + retireReason: 'rewards', + addLiquidityUrl: + 'https://www.traderjoexyz.com/pool/0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7/0xDC42728B0eA910349ed3c6e1c9Dc06b5FB591f98', + buyTokenUrl: 'https://www.traderjoexyz.com/trade', + createdAt: 1631635903, + }, + { + id: 'joe-time-wavax-eol', + name: 'TIME-AVAX LP', + token: 'TIME-AVAX JLP', + tokenDescription: 'Trader Joe', + tokenAddress: '0xf64e1c5B6E17031f5504481Ac8145F4c3eab4917', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooJoeTIME-AVAX', + earnedTokenAddress: '0x4502e2F6802D48578f76920e5D56557459C04B7D', + earnContractAddress: '0x4502e2F6802D48578f76920e5D56557459C04B7D', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'joe-time-wavax', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Trader Joe', + assets: ['TIME', 'AVAX'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + retireReason: 'rewards', + addLiquidityUrl: + 'https://www.traderjoexyz.com/pool/0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7/0xb54f16fB19478766A268F172C9480f8da1a7c9C3', + buyTokenUrl: 'https://www.traderjoexyz.com/trade', + createdAt: 1631633988, + }, + { + id: 'pangolin-png-pause-eol', + logo: 'single-assets/PNG.png', + name: 'PNG', + token: 'PNG', + tokenDescription: 'Pangolin', + tokenAddress: '0x60781C2586D68229fde47564546784ab3fACA982', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPangolinPNG', + earnedTokenAddress: '0x670AF270FeE3BbC89e32DDd7B8ec43663A910793', + earnContractAddress: '0x670AF270FeE3BbC89e32DDd7B8ec43663A910793', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'PNG', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Pangolin', + assets: ['PNG'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_MICRO', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + ], + stratType: 'SingleStake', + withdrawalFee: '0%', + buyTokenUrl: + 'https://app.pangolin.exchange/#/swap?inputCurrency=0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7&outputCurrency=0x60781C2586D68229fde47564546784ab3fACA982', + createdAt: 1631361439, + }, + { + id: 'joe-mai-usdc.e-eol', + name: 'MAI-USDC.e LP', + token: 'MAI-USDC.e JLP', + tokenDescription: 'Trader Joe', + tokenAddress: '0x58f75d7745ec383491053947Cd2AE6Ee7fc8B8f8', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooJoeMAI-USDC.e', + earnedTokenAddress: '0xaa5a5AD8a27fEd7F791952705ce90134eac620dc', + earnContractAddress: '0xaa5a5AD8a27fEd7F791952705ce90134eac620dc', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'joe-mai-usdc.e', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Trader Joe', + assets: ['miMatic', 'USDCe'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_MICRO', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + retireReason: 'rewards', + addLiquidityUrl: + 'https://www.traderjoexyz.com/pool/0x3b55e45fd6bd7d4724f5c47e0d1bcaedd059263e/0xa7d7079b0fead91f3e65f86e8915cb59c1a4c664', + buyTokenUrl: 'https://www.traderjoexyz.com/trade', + createdAt: 1631305379, + }, + { + id: 'joe-joe-wavax', + name: 'JOE-AVAX LP', + token: 'JOE-AVAX JLP', + tokenDescription: 'Trader Joe', + tokenAddress: '0x454E67025631C065d3cFAD6d71E6892f74487a15', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooJoeJOE-AVAX', + earnedTokenAddress: '0x3D81A269E05e6057e4dF9E2D76E254E65a65Eb66', + earnContractAddress: '0x3D81A269E05e6057e4dF9E2D76E254E65a65Eb66', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'joe-joe-wavax', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Trader Joe', + assets: ['JOE', 'AVAX'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MEDIUM', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://www.traderjoexyz.com/pool/AVAX/0x6e84a6216eA6dACC71eE8E6b0a5B7322EEbC0fDd', + buyTokenUrl: 'https://www.traderjoexyz.com/trade', + createdAt: 1631119335, + }, + { + id: 'joe-joe-usdt.e-eol', + name: 'JOE-USDT.e LP', + token: 'JOE-USDT.e JLP', + tokenDescription: 'Trader Joe', + tokenAddress: '0x1643de2efB8e35374D796297a9f95f64C082a8ce', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooJoeJOE-USDT.e', + earnedTokenAddress: '0xD0B0B19f2DC29a17175A2afc47b29C6DDd74d3D4', + earnContractAddress: '0xD0B0B19f2DC29a17175A2afc47b29C6DDd74d3D4', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'joe-joe-usdt.e', + oraclePrice: 0, + depositsPaused: false, + status: 'eol', + platform: 'Trader Joe', + assets: ['JOE', 'USDTe'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MEDIUM', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + ], + retireReason: 'rewards', + stratType: 'StratLP', + addLiquidityUrl: + 'https://www.traderjoexyz.com/pool/AVAX/0x6e84a6216eA6dACC71eE8E6b0a5B7322EEbC0fDd', + buyTokenUrl: 'https://www.traderjoexyz.com/trade', + createdAt: 1631119603, + }, + { + id: 'joe-mim-wavax', + name: 'MIM-AVAX LP', + token: 'MIM-AVAX JLP', + tokenDescription: 'Trader Joe', + tokenAddress: '0x781655d802670bbA3c89aeBaaEa59D3182fD755D', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooJoeMIM-WAVAX', + earnedTokenAddress: '0xb387376366C479Ac1d97833c10cFe738CC786dd1', + earnContractAddress: '0xb387376366C479Ac1d97833c10cFe738CC786dd1', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'joe-mim-wavax', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Trader Joe', + assets: ['MIM', 'AVAX'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_MEDIUM', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + 'OVER_COLLAT_ALGO_STABLECOIN', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://www.traderjoexyz.com/pool/AVAX/0x130966628846BFd36ff31a822705796e8cb8C18D', + buyTokenUrl: 'https://www.traderjoexyz.com/trade', + createdAt: 1630670273, + }, + { + id: 'joe-qi-wavax-eol', + name: 'QI-AVAX LP', + token: 'QI-AVAX JLP', + tokenDescription: 'Trader Joe', + tokenAddress: '0x2774516897AC629aD3ED9dCac7e375Dda78412b9', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooJoeQI-WAVAX', + earnedTokenAddress: '0x1CA786F754D339797BBecE959799fBA063C22F44', + earnContractAddress: '0x1CA786F754D339797BBecE959799fBA063C22F44', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'joe-qi-wavax', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Trader Joe', + assets: ['aQI', 'AVAX'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_SMALL', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://www.traderjoexyz.com/pool/AVAX/0x8729438EB15e2C8B576fCc6AeCdA6A148776C0F5', + buyTokenUrl: 'https://www.traderjoexyz.com/trade', + createdAt: 1630670133, + }, + { + id: 'joe-syn-wavax-eol', + name: 'SYN-AVAX LP', + token: 'SYN-AVAX JLP', + tokenDescription: 'Trader Joe', + tokenAddress: '0x20ABdC20758990b6afc90dA2f2D30CD0aa3F73c6', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooJoeSYN-WAVAX', + earnedTokenAddress: '0x9b50B06B81f033ca86D70F0a44F30BD7E0155737', + earnContractAddress: '0x9b50B06B81f033ca86D70F0a44F30BD7E0155737', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'joe-syn-wavax', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Trader Joe', + assets: ['SYN', 'AVAX'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MEDIUM', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://www.traderjoexyz.com/pool/AVAX/0x1f1E7c893855525b303f99bDF5c3c05Be09ca251', + buyTokenUrl: 'https://www.traderjoexyz.com/trade', + createdAt: 1630670690, + }, + { + id: 'joe-wbtc.e-usdt.e-eol', + name: 'WBTC.e-USDT.e LP', + token: 'WBTC.e-USDT.e JLP', + tokenDescription: 'Trader Joe', + tokenAddress: '0xB8D5E8a9247db183847c7D79af9C67F6aeF759f7', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooJoeUSDT.e-WBTC.e', + earnedTokenAddress: '0x3f5E367AC9Fb78A21Dc83d96dc1477eDE1F6219D', + earnContractAddress: '0x3f5E367AC9Fb78A21Dc83d96dc1477eDE1F6219D', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'joe-wbtc.e-usdt.e', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Trader Joe', + assets: ['WBTCe', 'USDTe'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + retireReason: 'rewards', + addLiquidityUrl: + 'https://www.traderjoexyz.com/pool/0xc7198437980c041c805A1EDcbA50c1Ce5db95118/0x50b7545627a5162F82A992c33b87aDc75187B218', + buyTokenUrl: 'https://www.traderjoexyz.com/trade', + createdAt: 1630496447, + }, + { + id: 'joe-wbtc.e-wavax', + name: 'WBTC.e-AVAX LP', + token: 'WBTC.e-AVAX JLP', + tokenDescription: 'Trader Joe', + tokenAddress: '0xd5a37dC5C9A396A03dd1136Fc76A1a02B1c88Ffa', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooJoeWBTC.e-AVAX', + earnedTokenAddress: '0xf32E23EB10350e381aA8b775d381e27C50a9195f', + earnContractAddress: '0xf32E23EB10350e381aA8b775d381e27C50a9195f', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'joe-wbtc.e-wavax', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Trader Joe', + assets: ['WBTCe', 'AVAX'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://www.traderjoexyz.com/pool/AVAX/0x50b7545627a5162F82A992c33b87aDc75187B218', + buyTokenUrl: 'https://www.traderjoexyz.com/trade', + createdAt: 1630496650, + }, + { + id: 'joe-weth.e-wavax', + name: 'WETH.e-AVAX LP', + token: 'WETH.e-AVAX JLP', + tokenDescription: 'Trader Joe', + tokenAddress: '0xFE15c2695F1F920da45C30AAE47d11dE51007AF9', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooJoeWETH.e-AVAX', + earnedTokenAddress: '0x68866acc5C940938B373F55F7009f824c7662F5B', + earnContractAddress: '0x68866acc5C940938B373F55F7009f824c7662F5B', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'joe-weth.e-wavax', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Trader Joe', + assets: ['WETHe', 'AVAX'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://www.traderjoexyz.com/pool/AVAX/0x49D5c2BdFfac6CE2BFdB6640F4F80f226bc10bAB', + buyTokenUrl: 'https://www.traderjoexyz.com/trade', + createdAt: 1630496791, + }, + { + id: 'joe-usdc.e-dai.e-eol', + name: 'USDC.e-DAI.e LP', + token: 'USDC.e-DAI.e JLP', + tokenDescription: 'Trader Joe', + tokenAddress: '0x63ABE32d0Ee76C05a11838722A63e012008416E6', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooJoeUSDC.e-DAI.e', + earnedTokenAddress: '0x8EdD09d683bD30baCB0EF6040160997Afe7d36c0', + earnContractAddress: '0x8EdD09d683bD30baCB0EF6040160997Afe7d36c0', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'joe-usdc.e-dai.e', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Trader Joe', + assets: ['USDCe', 'DAIe'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + retireReason: 'rewards', + addLiquidityUrl: + 'https://www.traderjoexyz.com/pool/0xd586E7F844cEa2F87f50152665BCbc2C279D8d70/0xA7D7079b0FEaD91F3e65f86E8915Cb59c1a4C664', + buyTokenUrl: 'https://www.traderjoexyz.com/trade', + createdAt: 1630085264, + }, + { + id: 'joe-usdc.e-wavax-eol', + name: 'USDC.e-AVAX LP', + token: 'USDC.e-AVAX JLP', + tokenDescription: 'Trader Joe', + tokenAddress: '0xA389f9430876455C36478DeEa9769B7Ca4E3DDB1', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooJoeUSDC.e-AVAX', + earnedTokenAddress: '0xdD63306A9792Ecbd1cd6baED3f1b18BEA638aaCe', + earnContractAddress: '0xdD63306A9792Ecbd1cd6baED3f1b18BEA638aaCe', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'joe-usdc.e-wavax', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Trader Joe', + assets: ['USDCe', 'AVAX'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://www.traderjoexyz.com/pool/AVAX/0xA7D7079b0FEaD91F3e65f86E8915Cb59c1a4C664', + buyTokenUrl: 'https://www.traderjoexyz.com/trade', + createdAt: 1630085124, + }, + { + id: 'joe-wavax-dai.e-eol', + name: 'DAI.e-AVAX LP', + token: 'DAI.e-AVAX JLP', + tokenDescription: 'Trader Joe', + tokenAddress: '0x87Dee1cC9FFd464B79e058ba20387c1984aed86a', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooJoeDAI.e-AVAX', + earnedTokenAddress: '0x71d57De132b3a090BFF5027A1e88947Bed1a32ba', + earnContractAddress: '0x71d57De132b3a090BFF5027A1e88947Bed1a32ba', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'joe-wavax-dai.e', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Trader Joe', + assets: ['DAIe', 'AVAX'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + retireReason: 'rewards', + addLiquidityUrl: + 'https://www.traderjoexyz.com/pool/AVAX/0xd586e7f844cea2f87f50152665bcbc2c279d8d70', + buyTokenUrl: 'https://www.traderjoexyz.com/trade', + createdAt: 1630074200, + }, + { + id: 'pangolin-usdc.e-wavax-eol', + name: 'USDC.e-AVAX LP', + token: 'USDC.e-AVAX LP', + tokenDescription: 'Pangolin', + tokenAddress: '0xbd918Ed441767fe7924e99F6a0E0B568ac1970D9', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPangolinUSDC.e-AVAX', + earnedTokenAddress: '0x8eb23a3010795574eE3DD101843dC90bD63b5099', + earnContractAddress: '0x8eb23a3010795574eE3DD101843dC90bD63b5099', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'pangolin-usdc.e-wavax', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Pangolin', + assets: ['USDCe', 'AVAX'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.pangolin.exchange/#/add/AVAX/0xA7D7079b0FEaD91F3e65f86E8915Cb59c1a4C664', + buyTokenUrl: + 'https://app.pangolin.exchange/#/swap?inputCurrency=0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7&outputCurrency=0xA7D7079b0FEaD91F3e65f86E8915Cb59c1a4C664', + createdAt: 1630269626, + }, + { + id: 'olive-dai.e-usdt.e', + name: 'DAI.e-USDT.e LP', + token: 'DAI.e-USDT.e LP', + tokenDescription: 'OliveSwap', + tokenAddress: '0x4758441C1F5d067839776456033f6cd0EB9fb3d3', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooOliveDAIe-USDTe', + earnedTokenAddress: '0xabd4a1aDaC20ff42d9946EF5ec5FbF822Ccd5B74', + earnContractAddress: '0xabd4a1aDaC20ff42d9946EF5ec5FbF822Ccd5B74', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'olive-dai.e-usdt.e', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'OliveSwap', + assets: ['DAIe', 'USDTe'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://avax.olive.cash/add/0xd586E7F844cEa2F87f50152665BCbc2C279D8d70/0xc7198437980c041c805A1EDcbA50c1Ce5db95118', + buyTokenUrl: + 'https://avax.olive.cash/swap?inputCurrency=0xd586E7F844cEa2F87f50152665BCbc2C279D8d70&outputCurrency=0xc7198437980c041c805A1EDcbA50c1Ce5db95118', + createdAt: 1630057114, + }, + { + id: 'olive-busd.e-usdt.e', + name: 'BUSD.e-USDT.e LP', + token: 'BUSD.e-USDT.e LP', + tokenDescription: 'OliveSwap', + tokenAddress: '0x9e4562caC6b91f5154a42e6270F2Ea58A4149b3E', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooOliveBUSDe-USDTe', + earnedTokenAddress: '0x2913966e88490B5a65D67298801c0c51f377BB9C', + earnContractAddress: '0x2913966e88490B5a65D67298801c0c51f377BB9C', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'olive-busd.e-usdt.e', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'OliveSwap', + assets: ['BUSDe', 'USDTe'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://avax.olive.cash/add/0x19860CCB0A68fd4213aB9D8266F7bBf05A8dDe98/0xc7198437980c041c805A1EDcbA50c1Ce5db95118', + buyTokenUrl: + 'https://avax.olive.cash/swap?inputCurrency=0x19860CCB0A68fd4213aB9D8266F7bBf05A8dDe98&outputCurrency=0xc7198437980c041c805A1EDcbA50c1Ce5db95118', + createdAt: 1630054596, + }, + { + id: 'pangolin-png-qi-eol', + name: 'QI-PNG LP', + token: 'QI-PNG LP', + tokenDescription: 'Pangolin', + tokenAddress: '0x50E7e19281a80E3C24a07016eDB87EbA9fe8C6cA', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPangolinQI-PNG', + earnedTokenAddress: '0xB297EC6eb512d646f558F6514e85aa59cD583a1F', + earnContractAddress: '0xB297EC6eb512d646f558F6514e85aa59cD583a1F', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'pangolin-png-qi', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Pangolin', + assets: ['aQI', 'PNG'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.pangolin.exchange/#/add/0x60781C2586D68229fde47564546784ab3fACA982/0x8729438EB15e2C8B576fCc6AeCdA6A148776C0F5', + buyTokenUrl: + 'https://app.pangolin.exchange/#/swap?inputCurrency=0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7&outputCurrency=0x8729438EB15e2C8B576fCc6AeCdA6A148776C0F5', + createdAt: 1629466316, + }, + { + id: 'pangolin-qi-wavax-eol', + name: 'QI-AVAX LP', + token: 'QI-AVAX LP', + tokenDescription: 'Pangolin', + tokenAddress: '0xE530dC2095Ef5653205CF5ea79F8979a7028065c', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPangolinQI-AVAX', + earnedTokenAddress: '0x052B006A2CfB2523042b3041f15adC7fa5356312', + earnContractAddress: '0x052B006A2CfB2523042b3041f15adC7fa5356312', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'pangolin-qi-wavax', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Pangolin', + assets: ['aQI', 'AVAX'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MEDIUM', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.pangolin.exchange/#/add/AVAX/0x8729438EB15e2C8B576fCc6AeCdA6A148776C0F5', + buyTokenUrl: + 'https://app.pangolin.exchange/#/swap?inputCurrency=0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7&outputCurrency=0x8729438EB15e2C8B576fCc6AeCdA6A148776C0F5', + createdAt: 1629466194, + }, + { + id: 'pangolin-uni.e-wavax-eol', + name: 'UNI.e-AVAX LP', + token: 'UNI.e-AVAX LP', + tokenDescription: 'Pangolin', + tokenAddress: '0x99dD520748eB0355c69DAE2692E4615C8Ab031ce', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPangolinUNI.e-AVAX', + earnedTokenAddress: '0x48cc86214C58d7EaA78C100156c55DD45A676Ed1', + earnContractAddress: '0x48cc86214C58d7EaA78C100156c55DD45A676Ed1', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'pangolin-uni.e-wavax', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Pangolin', + assets: ['UNIe', 'AVAX'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.pangolin.exchange/#/add/AVAX/0x8eBAf22B6F053dFFeaf46f4Dd9eFA95D89ba8580', + buyTokenUrl: + 'https://app.pangolin.exchange/#/swap?inputCurrency=0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7&outputCurrency=0x8eBAf22B6F053dFFeaf46f4Dd9eFA95D89ba8580', + createdAt: 1629466081, + }, + { + id: 'pangolin-aave.e-wavax-eol', + name: 'AAVE.e-AVAX LP', + token: 'AAVE.e-AVAXLP', + tokenDescription: 'Pangolin', + tokenAddress: '0x5944f135e4F1E3fA2E5550d4B5170783868cc4fE', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPangolinAAVE.e-AVAX', + earnedTokenAddress: '0xd9fe7Ff89C5303E439a14a5155F7F48E34F28518', + earnContractAddress: '0xd9fe7Ff89C5303E439a14a5155F7F48E34F28518', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'pangolin-aave.e-wavax', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Pangolin', + assets: ['AAVEe', 'AVAX'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.pangolin.exchange/#/add/AVAX/0x63a72806098Bd3D9520cC43356dD78afe5D386D9', + buyTokenUrl: + 'https://app.pangolin.exchange/#/swap?inputCurrency=0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7&outputCurrency=0x63a72806098Bd3D9520cC43356dD78afe5D386D9', + createdAt: 1629465789, + }, + { + id: 'pangolin-wavax-xava-eol', + name: 'XAVA-AVAX LP', + token: 'XAVA-AVAX LP', + tokenDescription: 'Pangolin', + tokenAddress: '0x42152bDD72dE8d6767FE3B4E17a221D6985E8B25', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPangolinXAVA-AVAX', + earnedTokenAddress: '0xC556387AEA8B0E55f672edf15FEc3acbcF45dC17', + earnContractAddress: '0xC556387AEA8B0E55f672edf15FEc3acbcF45dC17', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'pangolin-wavax-xava', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Pangolin', + assets: ['XAVA', 'AVAX'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.pangolin.exchange/#/add/AVAX/0x5947BB275c521040051D82396192181b413227A3', + buyTokenUrl: + 'https://app.pangolin.exchange/#/swap?inputCurrency=0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7&outputCurrency=0x5947BB275c521040051D82396192181b413227A3', + createdAt: 1629305419, + }, + { + id: 'pangolin-png-usdt.e-eol', + name: 'USDT.e-PNG LP', + token: 'USDT.e-PNG LP', + tokenDescription: 'Pangolin', + tokenAddress: '0x1fFB6ffC629f5D820DCf578409c2d26A2998a140', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPangolinUSDT.e-PNG', + earnedTokenAddress: '0x97e860CE03ae3da20Ba9740b8dA90036EE891f81', + earnContractAddress: '0x97e860CE03ae3da20Ba9740b8dA90036EE891f81', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'pangolin-png-usdt.e', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Pangolin', + assets: ['USDTe', 'PNG'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.pangolin.exchange/#/add/0x60781c2586d68229fde47564546784ab3faca982/0xc7198437980c041c805a1edcba50c1ce5db95118', + buyTokenUrl: + 'https://app.pangolin.exchange/#/swap?inputCurrency=0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7&outputCurrency=0xc7198437980c041c805A1EDcbA50c1Ce5db95118', + createdAt: 1629306156, + }, + { + id: 'pangolin-weth.e-png-eol', + name: 'WETH.e-PNG LP', + token: 'WETH.e-PNG LP', + tokenDescription: 'Pangolin', + tokenAddress: '0xcf35400A595EFCF0Af591D3Aeb5a35cBCD120d54', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPangolinWETH.e-PNG', + earnedTokenAddress: '0xa66DfCBdAfbe4B4D62535f64f1C2Fb50FF42E4C6', + earnContractAddress: '0xa66DfCBdAfbe4B4D62535f64f1C2Fb50FF42E4C6', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'pangolin-weth.e-png', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Pangolin', + assets: ['WETHe', 'PNG'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.pangolin.exchange/#/add/AVAX/0xc7198437980c041c805A1EDcbA50c1Ce5db95118', + buyTokenUrl: + 'https://app.pangolin.exchange/#/swap?inputCurrency=0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7&outputCurrency=0xc7198437980c041c805A1EDcbA50c1Ce5db95118', + createdAt: 1629306038, + }, + { + id: 'pangolin-wavax-dai.e-eol', + name: 'DAI.e-AVAX LP', + token: 'DAI.e-AVAX LP', + tokenDescription: 'Pangolin', + tokenAddress: '0xbA09679Ab223C6bdaf44D45Ba2d7279959289AB0', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPangolinDAI.e-AVAX', + earnedTokenAddress: '0x97102bAdf07DA7af61594b686fe311d06930B76e', + earnContractAddress: '0x97102bAdf07DA7af61594b686fe311d06930B76e', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'pangolin-wavax-dai.e', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Pangolin', + assets: ['DAIe', 'AVAX'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.pangolin.exchange/#/add/AVAX/0xd586E7F844cEa2F87f50152665BCbc2C279D8d70', + buyTokenUrl: + 'https://app.pangolin.exchange/#/swap?inputCurrency=0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7&outputCurrency=0xd586E7F844cEa2F87f50152665BCbc2C279D8d70', + createdAt: 1629305758, + }, + { + id: 'pangolin-link.e-wavax-eol', + name: 'LINK.e-AVAX LP', + token: 'LINK.e-AVAX LP', + tokenDescription: 'Pangolin', + tokenAddress: '0x5875c368Cddd5FB9Bf2f410666ca5aad236DAbD4', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPangolinLINK.e-AVAX', + earnedTokenAddress: '0x2bAe08Cf46867b6c29d6bcA000Dc43dFCCAc73E3', + earnContractAddress: '0x2bAe08Cf46867b6c29d6bcA000Dc43dFCCAc73E3', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'pangolin-link.e-wavax', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Pangolin', + assets: ['LINKe', 'AVAX'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.pangolin.exchange/#/add/AVAX/0x5947BB275c521040051D82396192181b413227A3', + buyTokenUrl: + 'https://app.pangolin.exchange/#/swap?inputCurrency=0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7&outputCurrency=0x5947BB275c521040051D82396192181b413227A3', + createdAt: 1629305632, + }, + { + id: 'pangolin-weth.e-wavax-eol', + name: 'WETH.e-AVAX LP', + token: 'WETH.e-AVAX LP', + tokenDescription: 'Pangolin', + tokenAddress: '0x7c05d54fc5CB6e4Ad87c6f5db3b807C94bB89c52', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPangolinWETH.e-AVAX', + earnedTokenAddress: '0xc98fF20bB8cd7C68C483c7C66f36e3F69ad81B47', + earnContractAddress: '0xc98fF20bB8cd7C68C483c7C66f36e3F69ad81B47', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'pangolin-weth.e-wavax', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Pangolin', + assets: ['WETHe', 'AVAX'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.pangolin.exchange/#/add/AVAX/0xc7198437980c041c805A1EDcbA50c1Ce5db95118', + buyTokenUrl: + 'https://app.pangolin.exchange/#/swap?inputCurrency=0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7&outputCurrency=0xc7198437980c041c805A1EDcbA50c1Ce5db95118', + createdAt: 1629305055, + }, + { + id: 'pangolin-wavax-usdt.e-eol', + name: 'USDT.e-AVAX LP', + token: 'USDT.e-AVAX LP', + tokenDescription: 'Pangolin', + tokenAddress: '0xe28984e1EE8D431346D32BeC9Ec800Efb643eef4', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPangolinUSDT.e-AVAX', + earnedTokenAddress: '0xC24c73C256d527726a7a012e1360c78d0cc02eEA', + earnContractAddress: '0xC24c73C256d527726a7a012e1360c78d0cc02eEA', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'pangolin-wavax-usdt.e', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Pangolin', + assets: ['USDTe', 'AVAX'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.pangolin.exchange/#/add/AVAX/0xc7198437980c041c805A1EDcbA50c1Ce5db95118', + buyTokenUrl: + 'https://app.pangolin.exchange/#/swap?inputCurrency=0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7&outputCurrency=0xc7198437980c041c805A1EDcbA50c1Ce5db95118', + createdAt: 1629304913, + }, + { + id: 'pangolin-wbtc.e-wavax-eol', + name: 'WBTC.e-AVAX LP', + token: 'WBTC.e-AVAX LP', + tokenDescription: 'Pangolin', + tokenAddress: '0x5764b8D8039C6E32f1e5d8DE8Da05DdF974EF5D3', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPangolinWBTC.e-AVAX', + earnedTokenAddress: '0xBBBe0fA93c8ced0614351bAF74979aB1243cF9c8', + earnContractAddress: '0xBBBe0fA93c8ced0614351bAF74979aB1243cF9c8', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'pangolin-wbtc.e-wavax', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Pangolin', + assets: ['WBTCe', 'AVAX'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.pangolin.exchange/#/add/AVAX/0x50b7545627a5162F82A992c33b87aDc75187B218', + buyTokenUrl: + 'https://app.pangolin.exchange/#/swap?inputCurrency=0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7&outputCurrency=0x50b7545627a5162F82A992c33b87aDc75187B218', + createdAt: 1629297701, + }, + { + id: 'gondola-usdt-zusdt-eol', + logo: 'single-assets/USDT.svg', + name: 'zUSDT-USDT LP', + token: 'zUSDT-USDT LP', + tokenDescription: 'Gondola', + tokenAddress: '0xE586dB7Db75B87A3E84110a73b99960F5f106c6A', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooGondolaZUSDT-USDT', + earnedTokenAddress: '0xEbAE4810Fd13605957e7D90bd49d2fD8F8148923', + earnContractAddress: '0xEbAE4810Fd13605957e7D90bd49d2fD8F8148923', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'gondola-usdt-zusdt', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Other', + assets: ['zUSDT', 'USDT'], + addLiquidityUrl: 'https://app.gondola.finance/#/deposit/usdt', + buyTokenUrl: 'https://app.gondola.finance/#/swap/usdt', + createdAt: 1621080551, + }, + { + id: 'lyd-lyd-usdt-eol', + logo: 'usdt-pairs/LYD-USDT.png', + name: 'LYD-USDT LP', + token: 'LYD-USDT LP', + tokenDescription: 'Lydia', + tokenAddress: '0x752C59f22fAAA861108649F4596034796C69bC3f', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooLydiaLYD-USDT', + earnedTokenAddress: '0xc44d493B6219A7f5C286724b74c158CEBd7fB6f7', + earnContractAddress: '0xc44d493B6219A7f5C286724b74c158CEBd7fB6f7', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'lyd-lyd-usdt', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Lydia', + assets: ['LYD', 'USDT'], + addLiquidityUrl: + 'https://www.lydia.finance/#/add/0x4c9b4e1ac6f24cde3660d5e4ef1ebf77c710c084/0xde3a24028580884448a5397872046a019649b084', + buyTokenUrl: + 'https://exchange.lydia.finance/#/swap?inputCurrency=0x4c9b4e1ac6f24cde3660d5e4ef1ebf77c710c084&outputCurrency=0xde3a24028580884448a5397872046a019649b084', + createdAt: 1619706954, + }, + { + id: 'lyd-lyd-avax-eol', + logo: 'avax-pairs/LYD-AVAX.png', + name: 'LYD-AVAX LP', + token: 'LYD-AVAX LP', + tokenDescription: 'Lydia', + tokenAddress: '0xFba4EdaAd3248B03f1a3261ad06Ad846A8e50765', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooLydiaLYD-AVAX', + earnedTokenAddress: '0x994aB71F95A8de4dAaF6DE3D9862284693fB2bDf', + earnContractAddress: '0x994aB71F95A8de4dAaF6DE3D9862284693fB2bDf', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'lyd-lyd-avax', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'tvl', + platform: 'Lydia', + assets: ['LYD', 'AVAX'], + addLiquidityUrl: + 'https://www.lydia.finance/#/add/0x4c9b4e1ac6f24cde3660d5e4ef1ebf77c710c084/0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7', + buyTokenUrl: + 'https://exchange.lydia.finance/#/swap?inputCurrency=0x4c9b4e1ac6f24cde3660d5e4ef1ebf77c710c084&outputCurrency=0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7', + createdAt: 1619706922, + }, + { + id: 'olive-olive-avax-eol', + logo: 'avax-pairs/OLIVE-AVAX.png', + name: 'OLIVE-AVAX LP', + token: 'OLIVE-AVAX LP', + tokenDescription: 'OliveSwap', + tokenAddress: '0x57cc32Cd7F5a531953E9af25e1C9394093428082', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooOliveOLIVE-AVAX', + earnedTokenAddress: '0x9Bb9B11917e7bC3528B6048E9B01cD5E302bb27B', + earnContractAddress: '0x9Bb9B11917e7bC3528B6048E9B01cD5E302bb27B', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'olive-olive-avax', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'OliveSwap', + assets: ['OLIVE', 'AVAX'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: 'https://avax.olive.cash/add/AVAX/0x617724974218A18769020A70162165A539c07E8a', + buyTokenUrl: + 'https://avax.olive.cash/swap?inputCurrency=AVAX&outputCurrency=0x617724974218A18769020A70162165A539c07E8a', + createdAt: 1617865515, + retiredReason: 'tvl', + }, + { + id: 'olive-olive-usdt-eol', + logo: 'avax-pairs/OLIVE-USDT.png', + name: 'OLIVE-USDT LP', + token: 'OLIVE-USDT LP', + tokenDescription: 'OliveSwap', + tokenAddress: '0xF54a719215622f602FCA5BF5a6509734C3574a4c', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooOliveOLIVE-USDT', + earnedTokenAddress: '0xBdA8bC79705BC60226adCA2766e94Eb5512949a3', + earnContractAddress: '0xBdA8bC79705BC60226adCA2766e94Eb5512949a3', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'olive-olive-usdt', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'OliveSwap', + assets: ['OLIVE', 'USDT'], + addLiquidityUrl: + 'https://swap.olive.cash/#/add/0xde3A24028580884448a5397872046a019649b084/0x617724974218A18769020A70162165A539c07E8a', + buyTokenUrl: + 'https://swap.olive.cash/#/swap?outputCurrency=0x617724974218A18769020A70162165A539c07E8a', + createdAt: 1617867390, + }, + { + id: 'snob-3pool-eol', + logo: 'avax-pairs/SNOB3P.png', + name: 'USDT/BUSD/DAI', + token: 'Snob 3Pool', + tokenDescription: 'Snowball', + tokenAddress: '0xdE1A11C331a0E45B9BA8FeE04D4B51A745f1e4A4', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSnob3Pool', + earnedTokenAddress: '0x0a350c62f4b8C7dA93fBca469e53a182b5BBD044', + earnContractAddress: '0x0a350c62f4b8C7dA93fBca469e53a182b5BBD044', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'snob-3pool', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Other', + assets: ['USDT', 'BUSD', 'DAI'], + addLiquidityUrl: 'https://snowball.network/stablevault/', + createdAt: 1617723074, + }, + { + id: 'com-eth-avax-eol', + logo: 'avax-pairs/ETH-AVAX.png', + name: 'ETH-AVAX LP', + token: 'ETH-AVAX CLP', + tokenDescription: 'Complus', + tokenAddress: '0x0CA373D27CE17C4804D108afEee0A77EfEb33775', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooComplusETH-AVAX', + earnedTokenAddress: '0x0c89Ca08b6831e6b81f9f969F37A966a2C44d3d1', + earnContractAddress: '0x0c89Ca08b6831e6b81f9f969F37A966a2C44d3d1', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'com-eth-avax', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Other', + assets: ['ETH', 'AVAX'], + addLiquidityUrl: + 'https://avadex.complus.exchange/#/add/AVAX/0xf20d962a6c8f70c731bd838a3a388D7d48fA6e15', + buyTokenUrl: + 'https://avadex.complus.exchange/#/swap?inputCurrency=0xf20d962a6c8f70c731bd838a3a388D7d48fA6e15&outputCurrency=AVAX', + createdAt: 1616228400, + }, + { + id: 'com-png-avax-eol', + logo: 'avax-pairs/PNG-AVAX.png', + name: 'PNG-AVAX LP', + token: 'PNG-AVAX CLP', + tokenDescription: 'Complus', + tokenAddress: '0xEcee953e187d9e82D57bAedAaEF1e56E5283f5C3', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooComplusPNG-AVAX', + earnedTokenAddress: '0x7076a33b6525132fF77F0FeE2daB2a1e79688DA0', + earnContractAddress: '0x7076a33b6525132fF77F0FeE2daB2a1e79688DA0', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'com-png-avax', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['PNG', 'AVAX'], + addLiquidityUrl: + 'https://avadex.complus.exchange/#/add/AVAX/0x60781C2586D68229fde47564546784ab3fACA982', + buyTokenUrl: + 'https://avadex.complus.exchange/#/swap?inputCurrency=0x60781C2586D68229fde47564546784ab3fACA982&outputCurrency=AVAX', + createdAt: 1616228454, + }, + { + id: 'snob-snob-avax-eol', + logo: 'avax-pairs/SNOB-AVAX.svg', + name: 'SNOB-AVAX LP', + token: 'SNOB-AVAX LP', + tokenDescription: 'Pangolin', + tokenAddress: '0xa1C2c3B6b120cBd4Cec7D2371FFd4a931A134A32', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSnowballSNOB-AVAX', + earnedTokenAddress: '0x114c5f7f42fB75b7960aa3e4c327f53288360F58', + earnContractAddress: '0x114c5f7f42fB75b7960aa3e4c327f53288360F58', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'snob-snob-avax', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Other', + assets: ['SNOB', 'AVAX'], + addLiquidityUrl: + 'https://app.pangolin.exchange/#/add/AVAX/0xC38f41A296A4493Ff429F1238e030924A1542e50', + buyTokenUrl: + 'https://app.pangolin.exchange/#/swap?inputCurrency=0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7&outputCurrency=0xC38f41A296A4493Ff429F1238e030924A1542e50', + createdAt: 1616082970, + }, + { + id: 'com-com-avax-eol', + logo: 'avax-pairs/COM-AVAX.png', + name: 'COM-AVAX LP', + token: 'COM-AVAX LP', + tokenDescription: 'Complus', + tokenAddress: '0xF0ED25fD26E0b64C86c6c78b661F2ef283E9B6FF', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooComplusCOM-AVAX', + earnedTokenAddress: '0xA43d8f6Db69610C8260B953658553cabF01D77c6', + earnContractAddress: '0xA43d8f6Db69610C8260B953658553cabF01D77c6', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'com-com-avax', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['COM', 'AVAX'], + retireReason: 'tvl', + addLiquidityUrl: + 'https://avadex.complus.exchange/#/add/AVAX/0x3711c397B6c8F7173391361e27e67d72F252cAad', + buyTokenUrl: + 'https://avadex.complus.exchange/#/swap?inputCurrency=0x3711c397B6c8F7173391361e27e67d72F252cAad&outputCurrency=AVAX', + createdAt: 1616082096, + }, + { + id: 'png-sushi-avax-eol', + name: 'SUSHI-AVAX LP', + token: 'SUSHI-AVAX LP', + tokenDescription: 'Pangolin', + tokenAddress: '0xd8B262C0676E13100B33590F10564b46eeF652AD', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPangolinSUSHI-AVAX', + earnedTokenAddress: '0x3094Ab4Af54f5208B867125B5CCeCc94Bc17cbB6', + earnContractAddress: '0x3094Ab4Af54f5208B867125B5CCeCc94Bc17cbB6', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'png-sushi-avax', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Pangolin', + assets: ['SUSHI', 'AVAX'], + addLiquidityUrl: + 'https://app.pangolin.exchange/#/add/AVAX/0x39cf1BD5f15fb22eC3D9Ff86b0727aFc203427cc', + buyTokenUrl: + 'https://app.pangolin.exchange/#/swap?inputCurrency=0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7&outputCurrency=0x39cf1BD5f15fb22eC3D9Ff86b0727aFc203427cc', + createdAt: 1615919277, + }, + { + id: 'png-wbtc-avax-eol', + name: 'WBTC-AVAX LP', + token: 'WBTC-AVAX LP', + tokenDescription: 'Pangolin', + tokenAddress: '0x7a6131110B82dAcBb5872C7D352BfE071eA6A17C', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPangolinWBTC-AVAX', + earnedTokenAddress: '0xd5ab3Fac6200B0D8e8d76daED62793026118A78c', + earnContractAddress: '0xd5ab3Fac6200B0D8e8d76daED62793026118A78c', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'png-wbtc-avax', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Pangolin', + assets: ['WBTC', 'AVAX'], + addLiquidityUrl: + 'https://app.pangolin.exchange/#/add/AVAX/0x408D4cD0ADb7ceBd1F1A1C33A0Ba2098E1295bAB', + buyTokenUrl: + 'https://app.pangolin.exchange/#/swap?inputCurrency=0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7&outputCurrency=0x408D4cD0ADb7ceBd1F1A1C33A0Ba2098E1295bAB', + createdAt: 1615917865, + }, + { + id: 'png-link-avax-eol', + name: 'LINK-AVAX LP', + token: 'LINK-AVAX LP', + tokenDescription: 'Pangolin', + tokenAddress: '0xbbC7fFF833D27264AaC8806389E02F717A5506c9', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPangolinLINK-AVAX', + earnedTokenAddress: '0x6571052b2FB67DF6DD003ED6ed371098A030Eb0d', + earnContractAddress: '0x6571052b2FB67DF6DD003ED6ed371098A030Eb0d', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'png-link-avax', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Pangolin', + assets: ['LINK', 'AVAX'], + addLiquidityUrl: + 'https://app.pangolin.exchange/#/add/AVAX/0xB3fe5374F67D7a22886A0eE082b2E2f9d2651651', + buyTokenUrl: + 'https://app.pangolin.exchange/#/swap?inputCurrency=0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7&outputCurrency=0xB3fe5374F67D7a22886A0eE082b2E2f9d2651651', + createdAt: 1615919058, + }, + { + id: 'png-uni-avax-eol', + name: 'UNI-AVAX LP', + token: 'UNI-AVAX LP', + tokenDescription: 'Pangolin', + tokenAddress: '0x92dC558cB9f8d0473391283EaD77b79b416877cA', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPangolinUNI-AVAX', + earnedTokenAddress: '0x17657955D954bD7F7315C388D7099af7B0b851FA', + earnContractAddress: '0x17657955D954bD7F7315C388D7099af7B0b851FA', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'png-uni-avax', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Pangolin', + assets: ['UNI', 'AVAX'], + addLiquidityUrl: + 'https://app.pangolin.exchange/#/add/AVAX/0xf39f9671906d8630812f9d9863bBEf5D523c84Ab', + buyTokenUrl: + 'https://app.pangolin.exchange/#/swap?inputCurrency=0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7&outputCurrency=0xf39f9671906d8630812f9d9863bBEf5D523c84Ab', + createdAt: 1615919484, + }, + { + id: 'png-usdt-png-eol', + name: 'USDT-PNG LP', + token: 'USDT-PNG LP', + tokenDescription: 'Pangolin', + tokenAddress: '0xE8AcF438B10A2C09f80aEf3Ef2858F8E758C98F9', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPangolinUSDT-PNG', + earnedTokenAddress: '0x044e87f30bd9bD961c04028aC69155493E1b9eD0', + earnContractAddress: '0x044e87f30bd9bD961c04028aC69155493E1b9eD0', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'png-usdt-png', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Pangolin', + assets: ['USDT', 'PNG'], + addLiquidityUrl: + 'https://app.pangolin.exchange/#/add/0x60781C2586D68229fde47564546784ab3fACA982/0xde3A24028580884448a5397872046a019649b084', + buyTokenUrl: + 'https://app.pangolin.exchange/#/swap?inputCurrency=0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7&outputCurrency=0xde3A24028580884448a5397872046a019649b084', + createdAt: 1615919670, + }, + { + id: 'png-eth-avax-eol', + name: 'ETH-AVAX LP', + token: 'ETH-AVAX LP', + tokenDescription: 'Pangolin', + tokenAddress: '0x1aCf1583bEBdCA21C8025E172D8E8f2817343d65', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPangolinETH-AVAX', + earnedTokenAddress: '0xDA875A511860f2752B891677489d08CaEDac00EA', + earnContractAddress: '0xDA875A511860f2752B891677489d08CaEDac00EA', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'png-eth-avax', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Pangolin', + assets: ['ETH', 'AVAX'], + addLiquidityUrl: + 'https://app.pangolin.exchange/#/add/AVAX/0xf20d962a6c8f70c731bd838a3a388D7d48fA6e15', + buyTokenUrl: + 'https://app.pangolin.exchange/#/swap?inputCurrency=0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7&outputCurrency=0xf20d962a6c8f70c731bd838a3a388D7d48fA6e15', + createdAt: 1615742564, + }, + { + id: 'png-usdt-avax-eol', + name: 'USDT-AVAX LP', + token: 'USDT-AVAX LP', + tokenDescription: 'Pangolin', + tokenAddress: '0x9EE0a4E21bd333a6bb2ab298194320b8DaA26516', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPangolinUSDT-AVAX', + earnedTokenAddress: '0x7a670e849DB824364d1031DEAfB4cD603144F23D', + earnContractAddress: '0x7a670e849DB824364d1031DEAfB4cD603144F23D', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'png-usdt-avax', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Pangolin', + assets: ['USDT', 'AVAX'], + addLiquidityUrl: + 'https://app.pangolin.exchange/#/add/AVAX/0xde3A24028580884448a5397872046a019649b084', + buyTokenUrl: + 'https://app.pangolin.exchange/#/swap?inputCurrency=0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7&outputCurrency=0xde3A24028580884448a5397872046a019649b084', + createdAt: 1615742703, + }, + { + id: 'png-png-avax-eol', + name: 'PNG-AVAX LP', + token: 'PNG-AVAX LP', + tokenDescription: 'Pangolin', + tokenAddress: '0xd7538cABBf8605BdE1f4901B47B8D42c61DE0367', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPangolinPNG-AVAX', + earnedTokenAddress: '0x71b5852857b85D5096d4288AD6d293F217d8e162', + earnContractAddress: '0x71b5852857b85D5096d4288AD6d293F217d8e162', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'png-png-avax', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Pangolin', + assets: ['PNG', 'AVAX'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.pangolin.exchange/#/add/AVAX/0x60781C2586D68229fde47564546784ab3fACA982', + buyTokenUrl: + 'https://app.pangolin.exchange/#/swap?inputCurrency=0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7&outputCurrency=0x60781C2586D68229fde47564546784ab3fACA982', + createdAt: 1615742387, + }, +]; diff --git a/src/features/configure/vault/bsc_pools.js b/src/features/configure/vault/bsc_pools.js new file mode 100644 index 000000000..88070b194 --- /dev/null +++ b/src/features/configure/vault/bsc_pools.js @@ -0,0 +1,19400 @@ +export const bscPools = [ + { + id: 'bifi-maxi', + logo: 'single-assets/BIFI.png', + name: 'BIFI Maxi', + token: 'BIFI', + tokenDescription: 'Beefy', + tokenAddress: '0xCa3F508B8e4Dd382eE878A314789373D80A5190A', + tokenDecimals: 18, + earnedToken: 'mooBIFIV2', + earnedTokenAddress: '0x7828ff4ABA7aAb932D8407C78324B069D24284c9', + earnContractAddress: '0x7828ff4ABA7aAb932D8407C78324B069D24284c9', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'BIFI', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Beefy', + assets: ['BIFI'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'SingleStake', + withdrawalFee: '0%', + buyTokenUrl: 'https://app.1inch.io/#/56/swap/BNB/BIFI', + createdAt: 1648477070, + }, + { + id: 'baby-bnb-usdt', + name: 'BNB-USDT LP', + token: 'BNB-USDT LP', + tokenDescription: 'BabySwap', + tokenAddress: '0x04580ce6dEE076354e96fED53cb839DE9eFb5f3f', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBabyBNB-USDT', + earnedTokenAddress: '0xFC744521a921fEc005Fe5e91cca09878086E8526', + earnContractAddress: '0xFC744521a921fEc005Fe5e91cca09878086E8526', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'baby-bnb-usdt', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Other', + assets: ['BNB', 'USDT'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://exchange.babyswap.finance/#/add/0x55d398326f99059fF775485246999027B3197955/BNB', + buyTokenUrl: + 'https://exchange.babyswap.finance/#/swap?outputcurrency=0x55d398326f99059fF775485246999027B3197955&inputCurrency=BNB', + createdAt: 1653450803, + }, + { + id: 'ellipsis-usdd2pool', + name: 'USDD/BUSD', + token: 'usdd/2pool', + tokenDescription: 'Ellipsis (DotDot)', + tokenAddress: '0xB343F4cDE5e2049857898E800CD385247e21836D', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooEllipsisUSDD2Pool', + earnedTokenAddress: '0xEbBD4e6aC71AA562883051708eece0d03C668a5F', + earnContractAddress: '0xEbBD4e6aC71AA562883051708eece0d03C668a5F', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'ellipsis-usdd2pool', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Ellipsis', + assets: ['USDD', 'BUSD'], + withdrawalFee: '0%', + risks: [ + 'COMPLEXITY_LOW', + 'NEW_STRAT', + 'IL_NONE', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + 'ALGO_STABLE', + ], + stratType: 'StratMultiLP', + addLiquidityUrl: 'https://ellipsis.finance/pool/0x408A61e158D7BC0CD339BC76917b8Ea04739d473', + buyTokenUrl: 'https://ellipsis.finance/pool/0x408A61e158D7BC0CD339BC76917b8Ea04739d473', + createdAt: 1653037944, + }, + + { + id: 'banana-usdt-busd', + name: 'USDT-BUSD LP', + token: 'USDT-BUSD ALP', + tokenDescription: 'ApeSwap', + tokenAddress: '0x2e707261d086687470B515B320478Eb1C88D49bb', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooApeUSDT-BUSD', + earnedTokenAddress: '0x69C2AD8572c475bD4B703c5826eAe878c0ace869', + earnContractAddress: '0x69C2AD8572c475bD4B703c5826eAe878c0ace869', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'banana-usdt-busd', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'ApeSwap', + assets: ['USDT', 'BUSD'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://apeswap.finance/add/0x55d398326f99059fF775485246999027B3197955/0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56', + buyTokenUrl: + 'https://apeswap.finance/swap?outputCurrency=0x55d398326f99059fF775485246999027B3197955', + createdAt: 1652795668, + }, + + { + id: 'ellipsis-usdd', + name: 'USDD/BUSD/USDC/USDT', + token: 'usdd/3eps', + tokenDescription: 'Ellipsis (DotDot)', + tokenAddress: '0xB7d9b83c7Dc3C7Fab2d0159f8b3fA7C4fB081741', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooEllipsisUSDD', + earnedTokenAddress: '0x897380e900685E6b6619E2A1e519F9658F3e12C6', + earnContractAddress: '0x897380e900685E6b6619E2A1e519F9658F3e12C6', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'ellipsis-usdd', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Ellipsis', + assets: ['USDD', 'BUSD', 'USDT', 'USDC'], + withdrawalFee: '0%', + risks: [ + 'COMPLEXITY_LOW', + 'NEW_STRAT', + 'IL_NONE', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + 'ALGO_STABLE', + ], + stratType: 'StratMultiLP', + addLiquidityUrl: 'https://ellipsis.finance/pool/0xC2cF01F785C587645440ccD488B188945C9505e7', + buyTokenUrl: 'https://ellipsis.finance/pool/0xC2cF01F785C587645440ccD488B188945C9505e7', + createdAt: 1652702923, + }, + { + id: 'biswap-usdt-btcb', + name: 'BTCB-USDT LP', + token: 'BTCB-USDT BiLP', + tokenDescription: 'BiSwap', + tokenAddress: '0xa987f0b7098585c735cD943ee07544a84e923d1D', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBiSwapUSDT-BTCB', + earnedTokenAddress: '0xa4113209bD56f534A24CADc3E3778B5D4B806180', + earnContractAddress: '0xa4113209bD56f534A24CADc3E3778B5D4B806180', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'biswap-usdt-btcb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'BiSwap', + assets: ['BTCB', 'USDT'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://exchange.biswap.org/#/add/0x55d398326f99059fF775485246999027B3197955/0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c', + buyTokenUrl: + 'https://exchange.biswap.org/#/swap?inputCurrency=0x55d398326f99059fF775485246999027B3197955&outputCurrency=0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c', + createdAt: 1651747222, + }, + { + id: 'cakev2-gal-bnb', + name: 'GAL-BNB LP', + token: 'GAL-BNB LP', + tokenDescription: 'PancakeSwap', + tokenAddress: '0xbe6A4f74fdDc88853612C50D7404E059b37692D8', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2GAL-BNB', + earnedTokenAddress: '0xf48f9f754cB2A0F71A2b9A6E9e465E55B43245ab', + earnContractAddress: '0xf48f9f754cB2A0F71A2b9A6E9e465E55B43245ab', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-gal-bnb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'PancakeSwap', + assets: ['GAL', 'BNB'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0xe4Cc45Bb5DBDA06dB6183E8bf016569f40497Aa5', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0xe4Cc45Bb5DBDA06dB6183E8bf016569f40497Aa5', + createdAt: 1651839069, + }, + { + id: 'ripae-pbnb-bnb', + name: 'pBNB-BNB LP', + token: 'pBNB-BNB LP', + tokenDescription: 'BiSwap (Ripae)', + tokenAddress: '0xC7DC9343C90Be0Ea2af6776EFe5e19B2734F8D0d', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooRipaepBNB-BNB', + earnedTokenAddress: '0x8C6069624e746513Ac1B1d1434aABbEDA152f181', + earnContractAddress: '0x8C6069624e746513Ac1B1d1434aABbEDA152f181', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'ripae-pbnb-bnb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Ripae', + assets: ['pBNB', 'BNB'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://exchange.biswap.org/#/add/ETH/0xA2315cC5A1e4aE3D0a491ED4Fe45EBF8356fEaC7', + buyTokenUrl: + 'https://exchange.biswap.org/#/swap?outputCurrency=0xA2315cC5A1e4aE3D0a491ED4Fe45EBF8356fEaC7', + createdAt: 1651849086, + }, + + { + id: 'ripae-pae-bnb', + name: 'PAE-BNB LP', + token: 'PAE-BNB LP', + tokenDescription: 'BiSwap (Ripae)', + tokenAddress: '0x8eA4875469e8Fd7ad3790b4c7DEeF768ca1e806f', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooRipaePAE-BNB', + earnedTokenAddress: '0x1592550E083286C35282E53732FDE11800A187E1', + earnContractAddress: '0x1592550E083286C35282E53732FDE11800A187E1', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'ripae-pae-bnb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Ripae', + assets: ['PAE', 'BNB'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://exchange.biswap.org/#/add/ETH/0x6c7fc3Fd4a9f1Cfa2a69B83F92b9DA7EC26240A2', + buyTokenUrl: + 'https://exchange.biswap.org/#/swap?outputCurrency=0x6c7fc3Fd4a9f1Cfa2a69B83F92b9DA7EC26240A2', + createdAt: 1651849085, + }, + + { + id: 'biswap-btcb-wbnb', + name: 'BTCB-BNB LP', + token: 'BTCB-BNB BiLP', + tokenDescription: 'BiSwap', + tokenAddress: '0xC7e9d76ba11099AF3F330ff829c5F442d571e057', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBiSwapBTCB-BNB', + earnedTokenAddress: '0x9A10Cc2024744681fBce1F93Aeee3fd7863B1A12', + earnContractAddress: '0x9A10Cc2024744681fBce1F93Aeee3fd7863B1A12', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'biswap-btcb-wbnb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'BiSwap', + assets: ['BTCB', 'BNB'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://exchange.biswap.org/#/add/ETH/0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c', + buyTokenUrl: + 'https://exchange.biswap.org/#/swap?inputCurrency=ETH&outputCurrency=0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c', + createdAt: 1651748230, + }, + + { + id: 'biswap-wbnb-busd', + name: 'BUSD-BNB LP', + token: 'BUSD-BNB BiLP', + tokenDescription: 'BiSwap', + tokenAddress: '0xaCAac9311b0096E04Dfe96b6D87dec867d3883Dc', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBiSwapBUSD-BNB', + earnedTokenAddress: '0x92d46fFaB61914fEF6f0F2e83289f5F38B54ae7c', + earnContractAddress: '0x92d46fFaB61914fEF6f0F2e83289f5F38B54ae7c', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'biswap-wbnb-busd', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'BiSwap', + assets: ['BUSD', 'BNB'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://exchange.biswap.org/#/add/ETH/0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56', + buyTokenUrl: + 'https://exchange.biswap.org/#/swap?inputCurrency=ETH&outputCurrency=0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56', + createdAt: 1651748798, + }, + + { + id: 'biswap-eth-usdt', + name: 'ETH-USDT LP', + token: 'ETH-USDT BiLP', + tokenDescription: 'BiSwap', + tokenAddress: '0x63b30de1A998e9E64FD58A21F68D323B9BcD8F85', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBiSwapETH-USDT', + earnedTokenAddress: '0x2ea77B1d17C9e2a99a2C019abC8eA2f6A59A1044', + earnContractAddress: '0x2ea77B1d17C9e2a99a2C019abC8eA2f6A59A1044', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'biswap-eth-usdt', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'BiSwap', + assets: ['ETH', 'USDT'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://exchange.biswap.org/#/add/0x55d398326f99059fF775485246999027B3197955/0x2170Ed0880ac9A755fd29B2688956BD959F933F8', + buyTokenUrl: + 'https://exchange.biswap.org/#/swap?inputCurrency=0x55d398326f99059fF775485246999027B3197955&outputCurrency=0x2170Ed0880ac9A755fd29B2688956BD959F933F8', + createdAt: 1651749366, + }, + + { + id: 'biswap-eth-wbnb', + name: 'ETH-BNB LP', + token: 'ETH-BNB BiLP', + tokenDescription: 'BiSwap', + tokenAddress: '0x5bf6941f029424674bb93A43b79fc46bF4A67c21', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBiSwapETH-BNB', + earnedTokenAddress: '0x48E60f935B9dbd3d1530fb66d443a8A6d934F963', + earnContractAddress: '0x48E60f935B9dbd3d1530fb66d443a8A6d934F963', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'biswap-eth-wbnb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'BiSwap', + assets: ['ETH', 'BNB'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://exchange.biswap.org/#/add/ETH/0x2170Ed0880ac9A755fd29B2688956BD959F933F8', + buyTokenUrl: + 'https://exchange.biswap.org/#/swap?inputCurrency=ETH&outputCurrency=0x2170Ed0880ac9A755fd29B2688956BD959F933F8', + createdAt: 1651750026, + }, + + { + id: 'biswap-ust-busd-eol', + name: 'UST-BUSD LP', + token: 'UST-BUSD BiLP', + tokenDescription: 'BiSwap', + tokenAddress: '0x9E78183dD68cC81bc330CAF3eF84D354a58303B5', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBiSwapUST-BUSD', + earnedTokenAddress: '0x2e2Cc6eFCf8B6193A32a92B33747C081FE44bf1d', + earnContractAddress: '0x2e2Cc6eFCf8B6193A32a92B33747C081FE44bf1d', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'biswap-ust-busd', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'BiSwap', + assets: ['UST', 'BUSD'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + 'ALGO_STABLE', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://exchange.biswap.org/#/add/0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56/0x23396cF899Ca06c4472205fC903bDB4de249D6fC', + buyTokenUrl: + 'https://exchange.biswap.org/#/swap?inputCurrency=0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56&outputCurrency=0x23396cF899Ca06c4472205fC903bDB4de249D6fC', + createdAt: 1651750575, + }, + + { + id: 'biswap-cake-wbnb', + name: 'CAKE-BNB LP', + token: 'CAKE-BNB BiLP', + tokenDescription: 'BiSwap', + tokenAddress: '0x3d94d03eb9ea2D4726886aB8Ac9fc0F18355Fd13', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBiSwapCAKE-BNB', + earnedTokenAddress: '0x323818ba51C7ff001cC1DAAFb6143a9AB7f292A9', + earnContractAddress: '0x323818ba51C7ff001cC1DAAFb6143a9AB7f292A9', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'biswap-cake-wbnb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'BiSwap', + assets: ['CAKE', 'BNB'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://exchange.biswap.org/#/add/0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82/ETH', + buyTokenUrl: + 'https://exchange.biswap.org/#/swap?inputCurrency=ETH&outputCurrency=0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82', + createdAt: 1651751256, + }, + + { + id: 'biswap-usdt-busd', + name: 'USDT-BUSD LP', + token: 'USDT-BUSD BiLP', + tokenDescription: 'BiSwap', + tokenAddress: '0xDA8ceb724A06819c0A5cDb4304ea0cB27F8304cF', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBiSwapUSDT-BUSD', + earnedTokenAddress: '0x164fb78cAf2730eFD63380c2a645c32eBa1C52bc', + earnContractAddress: '0x164fb78cAf2730eFD63380c2a645c32eBa1C52bc', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'biswap-usdt-busd', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'BiSwap', + assets: ['USDT', 'BUSD'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://exchange.biswap.org/#/add/0x55d398326f99059fF775485246999027B3197955/0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56', + buyTokenUrl: + 'https://exchange.biswap.org/#/swap?inputCurrency=0x55d398326f99059fF775485246999027B3197955&outputCurrency=0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56', + createdAt: 1649932290, + }, + + { + id: 'cakev2-wbnb-abnbc', + name: 'aBNBc-BNB LP', + token: 'aBNBc-BNB LP', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x272c2CF847A49215A3A1D4bFf8760E503A06f880', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2aBNBc-BNB', + earnedTokenAddress: '0x4065e3b7623CA46c72960bD56F55eE89CaF5498c', + earnContractAddress: '0x4065e3b7623CA46c72960bD56F55eE89CaF5498c', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-wbnb-abnbc', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'PancakeSwap', + assets: ['aBNBc', 'BNB'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'MCAP_MICRO', + 'IL_NONE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0xE85aFCcDaFBE7F2B096f268e31ccE3da8dA2990A', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0xE85aFCcDaFBE7F2B096f268e31ccE3da8dA2990A', + createdAt: 1651001831, + }, + + { + id: 'cakev2-wbnb-ceek', + name: 'CEEK-BNB LP', + token: 'CEEK-BNB LP', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x046A9B3A9b743340eE2Bc4C6dDD35543E237C6c2', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2CEEK-BNB', + earnedTokenAddress: '0xbf3fEE15ae8e41F1A63B011aba9dC9d6a732DBB0', + earnContractAddress: '0xbf3fEE15ae8e41F1A63B011aba9dC9d6a732DBB0', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-wbnb-ceek', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'PancakeSwap', + assets: ['CEEK', 'BNB'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'MCAP_MICRO', + 'IL_HIGH', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0xe0F94Ac5462997D2BC57287Ac3a3aE4C31345D66', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0xe0F94Ac5462997D2BC57287Ac3a3aE4C31345D66', + createdAt: 1651000775, + }, + + { + id: 'cakev2-pex-wbnb', + name: 'PEX-BNB LP', + token: 'PEX-BNB LP', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x5ca96E8bDe0Bc587DaC9e02422Fd205b1102DAa4', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2PEX-BNB', + earnedTokenAddress: '0xe744dF11a036abC219e28Dd11ba4923784515125', + earnContractAddress: '0xe744dF11a036abC219e28Dd11ba4923784515125', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-pex-wbnb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'PancakeSwap', + assets: ['PEX', 'BNB'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'MCAP_MICRO', + 'IL_HIGH', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0x6a0b66710567b6beb81A71F7e9466450a91a384b', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x6a0b66710567b6beb81A71F7e9466450a91a384b', + createdAt: 1651001420, + }, + + { + id: 'cakev2-wbnb-froyo', + name: 'FROYO-BNB LP', + token: 'FROYO-BNB LP', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x1Ce76390Dd210B9C9ae28373FDf79714206ECb73', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2FROYO-BNB', + earnedTokenAddress: '0x873d2b4B57143FD6B99A99d63C50F46B96740E94', + earnContractAddress: '0x873d2b4B57143FD6B99A99d63C50F46B96740E94', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-wbnb-froyo', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'PancakeSwap', + assets: ['FROYO', 'BNB'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'MCAP_MICRO', + 'IL_HIGH', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0xe369fec23380f9F14ffD07a1DC4b7c1a9fdD81c9', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0xe369fec23380f9F14ffD07a1DC4b7c1a9fdD81c9', + createdAt: 1651001123, + }, + + { + id: 'cakev2-cake-froyo', + name: 'FROYO-CAKE LP', + token: 'FROYO-CAKE LP', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x1CCc3cC95c8148477Afd18a552f03835Be9D182a', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2FROYO-CAKE', + earnedTokenAddress: '0x768e36F0B40341758f5D06d4f96D54B01D335c90', + earnContractAddress: '0x768e36F0B40341758f5D06d4f96D54B01D335c90', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-cake-froyo', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'PancakeSwap', + assets: ['FROYO', 'CAKE'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'MCAP_MICRO', + 'IL_HIGH', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://pancakeswap.finance/add/0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82/0xe369fec23380f9F14ffD07a1DC4b7c1a9fdD81c9', + buyTokenUrl: + 'https://pancakeswap.finance/swap?inputCurrency=0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82&outputCurrency=0xe369fec23380f9F14ffD07a1DC4b7c1a9fdD81c9', + createdAt: 1651001735, + }, + + { + id: 'bomb-bshare-wbnb', + name: 'BSHARE-BNB LP', + token: 'BSHARE-BNB LP', + logo: 'bnb-pairs/BSHARE-BNB.png', + tokenDescription: 'PancakeSwap (Bomb)', + tokenAddress: '0x1303246855b5B5EbC71F049Fdb607494e97218f8', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBombBSHARE-BNB', + earnedTokenAddress: '0xd86D7D2D335954095E5ccc0d823B8ABc65Ac35B2', + earnContractAddress: '0xd86D7D2D335954095E5ccc0d823B8ABc65Ac35B2', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'bomb-bshare-wbnb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Bomb.Money', + assets: ['BSHARE', 'BNB'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0x531780FAcE85306877D7e1F05d713D1B50a37F7A', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x531780FAcE85306877D7e1F05d713D1B50a37F7A', + createdAt: 1651236072, + }, + + { + id: 'bomb-bomb-btcb', + name: 'BOMB-BTCB LP', + token: 'BOMB-BTCB LP', + tokenDescription: 'PancakeSwap (Bomb)', + tokenAddress: '0x84392649eb0bC1c1532F2180E58Bae4E1dAbd8D6', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBombBOMB-BTCB', + earnedTokenAddress: '0xD2FeCe7Ff1B791F8fE7f35424165abB8BD1671f2', + earnContractAddress: '0xD2FeCe7Ff1B791F8fE7f35424165abB8BD1671f2', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'bomb-bomb-btcb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Bomb.Money', + assets: ['BOMB', 'BTCB'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://pancakeswap.finance/add/0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c/0x522348779DCb2911539e76A1042aA922F9C47Ee3', + buyTokenUrl: + 'https://pancakeswap.finance/swap?inputCurrency=0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c&outputCurrency=0x522348779DCb2911539e76A1042aA922F9C47Ee3', + createdAt: 1651233272, + }, + + { + id: 'bomb-busm-busd', + name: 'BUSM-BUSD LP', + token: 'BUSM-BUSD LP', + tokenDescription: 'PancakeSwap (Bomb)', + tokenAddress: '0xEe46Bd06a8876c3cc86027dc7D2Df19af513cD12', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBombBUSM-BUSD', + earnedTokenAddress: '0xC43e5065c28Dcf85f9a5D31feAC658c6EB7F23D6', + earnContractAddress: '0xC43e5065c28Dcf85f9a5D31feAC658c6EB7F23D6', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'bomb-busm-busd', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Bomb.Money', + assets: ['BUSM', 'BUSD'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://pancakeswap.finance/add/0x6216B17f696B14701E17BCB24Ec14430261Be94A/0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56', + buyTokenUrl: + 'https://pancakeswap.finance/swap?inputCurrency=0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56&outputCurrency=0x6216B17f696B14701E17BCB24Ec14430261Be94A', + createdAt: 1651233170, + }, + + { + id: 'valas-valas-bnb', + name: 'VALAS-BNB LP', + token: 'VALAS-BNB LP', + tokenDescription: 'PancakeSwap (Valas)', + tokenAddress: '0x829F540957DFC652c4466a7F34de611E172e64E8', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooValasVALAS-BNB', + earnedTokenAddress: '0x020007Da76C0cA9F36e405478AAFFB67512F06a7', + earnContractAddress: '0x020007Da76C0cA9F36e405478AAFFB67512F06a7', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'valas-valas-bnb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Valas', + assets: ['VALAS', 'BNB'], + risks: ['COMPLEXITY_LOW', 'BATTLE_TESTED', 'IL_HIGH', 'MCAP_MICRO', 'CONTRACTS_VERIFIED'], + stratType: 'StratLP', + addLiquidityUrl: + 'https://pancakeswap.finance/add/0xb1ebdd56729940089ecc3ad0bbeeb12b6842ea6f/0xbb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0xb1ebdd56729940089ecc3ad0bbeeb12b6842ea6f', + createdAt: 1650115724, + }, + + { + id: 'valas-wbtc', + name: 'BTCB', + token: 'BTCB Valas', + logo: 'single-assets/BTCB.svg', + tokenDescription: 'Valas', + tokenAddress: '0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooValasBTCB', + earnedTokenAddress: '0x6bCD9493dFA06D07003aB6920DacE6D4F854E162', + earnContractAddress: '0x6bCD9493dFA06D07003aB6920DacE6D4F854E162', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'BTCB', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Valas', + assets: ['BTCB'], + withdrawalFee: '0.01%', + risks: [ + 'COMPLEXITY_MEDIUM', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_HIGH', + 'ADMIN_WITH_TIMELOCK', + 'CONTRACTS_VERIFIED', + ], + stratType: 'Lending', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c', + createdAt: 1650126214, + }, + + { + id: 'valas-eth', + name: 'ETH', + token: 'ETH Valas', + logo: 'single-assets/ETH.svg', + tokenDescription: 'Valas', + tokenAddress: '0x2170Ed0880ac9A755fd29B2688956BD959F933F8', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooValasETH', + earnedTokenAddress: '0x725E14C3106EBf4778e01eA974e492f909029aE8', + earnContractAddress: '0x725E14C3106EBf4778e01eA974e492f909029aE8', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'ETH', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Valas', + assets: ['ETH'], + withdrawalFee: '0.01%', + risks: [ + 'COMPLEXITY_MEDIUM', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_HIGH', + 'ADMIN_WITH_TIMELOCK', + 'CONTRACTS_VERIFIED', + ], + stratType: 'Lending', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x2170Ed0880ac9A755fd29B2688956BD959F933F8', + createdAt: 1650127009, + }, + + { + id: 'valas-busd', + name: 'BUSD', + token: 'BUSD Valas', + logo: 'single-assets/BUSD.svg', + tokenDescription: 'Valas', + tokenAddress: '0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooValasBUSD', + earnedTokenAddress: '0xB78b6A0137ad8745784D3B23c16abeA8F527ff54', + earnContractAddress: '0xB78b6A0137ad8745784D3B23c16abeA8F527ff54', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'BUSD', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Valas', + assets: ['BUSD'], + withdrawalFee: '0.01%', + risks: [ + 'COMPLEXITY_MEDIUM', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_HIGH', + 'ADMIN_WITH_TIMELOCK', + 'CONTRACTS_VERIFIED', + ], + stratType: 'Lending', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56', + createdAt: 1650127645, + }, + + { + id: 'valas-usdt', + name: 'USDT', + token: 'USDT Valas', + logo: 'single-assets/USDT.svg', + tokenDescription: 'Valas', + tokenAddress: '0x55d398326f99059fF775485246999027B3197955', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooValasUSDT', + earnedTokenAddress: '0x5cED4Dc963F607C82D2C2F22C2AB0a975adc4Bb9', + earnContractAddress: '0x5cED4Dc963F607C82D2C2F22C2AB0a975adc4Bb9', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'USDT', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Valas', + assets: ['USDT'], + withdrawalFee: '0.01%', + risks: [ + 'COMPLEXITY_MEDIUM', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_HIGH', + 'ADMIN_WITH_TIMELOCK', + 'CONTRACTS_VERIFIED', + ], + stratType: 'Lending', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x55d398326f99059fF775485246999027B3197955', + createdAt: 1650128131, + }, + + { + id: 'valas-usdc', + name: 'USDC', + token: 'USDC Valas', + logo: 'single-assets/USDC.svg', + tokenDescription: 'Valas', + tokenAddress: '0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooValasUSDC', + earnedTokenAddress: '0x517493d1Fb90aB0a3cE3a5084065B706e33e0fEA', + earnContractAddress: '0x517493d1Fb90aB0a3cE3a5084065B706e33e0fEA', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'USDC', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Valas', + assets: ['USDC'], + withdrawalFee: '0.01%', + risks: [ + 'COMPLEXITY_MEDIUM', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_HIGH', + 'ADMIN_WITH_TIMELOCK', + 'CONTRACTS_VERIFIED', + ], + stratType: 'Lending', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d', + createdAt: 1650308625, + }, + + { + id: 'valas-dai', + name: 'DAI', + token: 'DAI Valas', + logo: 'single-assets/DAI.svg', + tokenDescription: 'Valas', + tokenAddress: '0x1AF3F329e8BE154074D8769D1FFa4eE058B1DBc3', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooValasDAI', + earnedTokenAddress: '0xF66e8edf8A86b2b405fF23e73B72DAC01070c8B8', + earnContractAddress: '0xF66e8edf8A86b2b405fF23e73B72DAC01070c8B8', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'DAI', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Valas', + assets: ['DAI'], + withdrawalFee: '0.01%', + risks: [ + 'COMPLEXITY_MEDIUM', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_HIGH', + 'ADMIN_WITH_TIMELOCK', + 'CONTRACTS_VERIFIED', + 'OVER_COLLAT_ALGO_STABLECOIN', + ], + stratType: 'Lending', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x1AF3F329e8BE154074D8769D1FFa4eE058B1DBc3', + createdAt: 1650308955, + }, + + { + id: 'valas-tusd', + name: 'TUSD', + token: 'TUSD Valas', + logo: 'single-assets/TUSD.png', + tokenDescription: 'Valas', + tokenAddress: '0x14016E85a25aeb13065688cAFB43044C2ef86784', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooValasTUSD', + earnedTokenAddress: '0x9749b2D46f0caa661bD84D26264811DA968bC4Fc', + earnContractAddress: '0x9749b2D46f0caa661bD84D26264811DA968bC4Fc', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'TUSD', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Valas', + assets: ['TUSD'], + withdrawalFee: '0.01%', + risks: [ + 'COMPLEXITY_MEDIUM', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_HIGH', + 'ADMIN_WITH_TIMELOCK', + 'CONTRACTS_VERIFIED', + ], + stratType: 'Lending', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x14016E85a25aeb13065688cAFB43044C2ef86784', + createdAt: 1650309426, + }, + + { + id: 'biswap-bsw', + name: 'BSW', + token: 'BSW', + logo: 'single-assets/BSW.svg', + tokenDescription: 'BiSwap', + tokenAddress: '0x965F527D9159dCe6288a2219DB51fc6Eef120dD1', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBiSwapBSW', + earnedTokenAddress: '0x0BE6B4CAC0D586f474AA4e059CDc05Bc54f61B03', + earnContractAddress: '0x0BE6B4CAC0D586f474AA4e059CDc05Bc54f61B03', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'BSW', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'BiSwap', + assets: ['BSW'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'SingleStake', + withdrawalFee: '0%', + buyTokenUrl: + 'https://exchange.biswap.org/#/swap?outputCurrency=0x965f527d9159dce6288a2219db51fc6eef120dd1', + createdAt: 1649884692, + }, + { + id: 'biswap-bsw-wbnb', + name: 'BSW-BNB LP', + token: 'BSW-BNB BiLP', + tokenDescription: 'BiSwap', + tokenAddress: '0x46492B26639Df0cda9b2769429845cb991591E0A', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBiSwapBSW-BNB', + earnedTokenAddress: '0xd4548D0b71D4f925aaA2be59E10c6B9248d1EF70', + earnContractAddress: '0xd4548D0b71D4f925aaA2be59E10c6B9248d1EF70', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'biswap-bsw-wbnb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'BiSwap', + assets: ['BSW', 'BNB'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://exchange.biswap.org/#/add/ETH/0x965F527D9159dCe6288a2219DB51fc6Eef120dD1', + buyTokenUrl: + 'https://exchange.biswap.org/#/swap?outputCurrency=0x965F527D9159dCe6288a2219DB51fc6Eef120dD1', + createdAt: 1649884691, + }, + { + id: 'biswap-usdt-bsw', + name: 'BSW-USDT LP', + token: 'BSW-USDT BiLP', + tokenDescription: 'BiSwap', + tokenAddress: '0x2b30c317ceDFb554Ec525F85E79538D59970BEb0', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBiSwapUSDT-BSW', + earnedTokenAddress: '0x216EEE15D1e3fAAD34181f66dd0B665f556a638d', + earnContractAddress: '0x216EEE15D1e3fAAD34181f66dd0B665f556a638d', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'biswap-usdt-bsw', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'BiSwap', + assets: ['BSW', 'USDT'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://exchange.biswap.org/#/add/0x55d398326f99059fF775485246999027B3197955/0x965F527D9159dCe6288a2219DB51fc6Eef120dD1', + buyTokenUrl: + 'https://exchange.biswap.org/#/swap?inputCurrency=0x55d398326f99059fF775485246999027B3197955&outputCurrency=0x965f527d9159dce6288a2219db51fc6eef120dd1', + createdAt: 1649884690, + }, + { + id: 'biswap-eth-btcb', + name: 'BTCB-ETH LP', + token: 'BTCB-ETH BiLP', + tokenDescription: 'BiSwap', + tokenAddress: '0x6216E04cd40DB2c6FBEd64f1B5830A98D3A91740', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBiSwapETH-BTCB', + earnedTokenAddress: '0xEeB87e7bAbF17cA97F0Eb897F24Bf475e0A9Aef7', + earnContractAddress: '0xEeB87e7bAbF17cA97F0Eb897F24Bf475e0A9Aef7', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'biswap-eth-btcb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'BiSwap', + assets: ['BTCB', 'ETH'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://exchange.biswap.org/#/add/0x2170Ed0880ac9A755fd29B2688956BD959F933F8/0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c', + buyTokenUrl: + 'https://exchange.biswap.org/#/swap?inputCurrency=0x2170Ed0880ac9A755fd29B2688956BD959F933F8&outputCurrency=0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c', + createdAt: 1649884689, + }, + { + id: 'biswap-usdt-wbnb', + name: 'USDT-BNB LP', + token: 'USDT-BNB BiLP', + tokenDescription: 'BiSwap', + tokenAddress: '0x8840C6252e2e86e545deFb6da98B2a0E26d8C1BA', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBiSwapUSDT-BNB', + earnedTokenAddress: '0xe2AD2c5702f6c9073f85b00E4743066E1D1035f8', + earnContractAddress: '0xe2AD2c5702f6c9073f85b00E4743066E1D1035f8', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'biswap-usdt-wbnb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'BiSwap', + assets: ['USDT', 'BNB'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://exchange.biswap.org/#/add/0x55d398326f99059fF775485246999027B3197955/ETH', + buyTokenUrl: + 'https://exchange.biswap.org/#/swap?outputCurrency=0x55d398326f99059fF775485246999027B3197955', + createdAt: 1649884687, + }, + { + id: 'biswap-wbnb-bifi', + name: 'BIFI-BNB LP', + token: 'BIFI-BNB BiLP', + tokenDescription: 'BiSwap', + tokenAddress: '0xeb80530DbBdf489e7a20175Ceaa80d4253062DD4', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBiSwapBNB-BIFI', + earnedTokenAddress: '0xcb979E17c039001DAd363093CeFca7170f144816', + earnContractAddress: '0xcb979E17c039001DAd363093CeFca7170f144816', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'biswap-wbnb-bifi', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'BiSwap', + assets: ['BIFI', 'BNB'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://exchange.biswap.org/#/add/ETH/0xCa3F508B8e4Dd382eE878A314789373D80A5190A', + buyTokenUrl: + 'https://exchange.biswap.org/#/swap?outputCurrency=0xCa3F508B8e4Dd382eE878A314789373D80A5190A', + createdAt: 1649884686, + }, + { + id: 'emp-emp-eth', + name: 'EMP-ETH LP', + token: 'EMP-ETH LP', + tokenDescription: 'PancakeSwap (EMP)', + tokenAddress: '0x84821bb588f049913Dc579Dc511E5e31EB22d5E4', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooEmpEMP-ETH', + earnedTokenAddress: '0xC78d2624745775c8Da178CF8AEc0e7B734c344a0', + earnContractAddress: '0xC78d2624745775c8Da178CF8AEc0e7B734c344a0', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'emp-emp-eth', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'EMP.Money', + assets: ['EMP', 'ETH'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://pancakeswap.finance/add/0x3b248CEfA87F836a4e6f6d6c9b42991b88Dc1d58/0x2170Ed0880ac9A755fd29B2688956BD959F933F8', + buyTokenUrl: + 'https://pancakeswap.finance/swap?inputCurrency=0x2170Ed0880ac9A755fd29B2688956BD959F933F8&outputCurrency=0x3b248CEfA87F836a4e6f6d6c9b42991b88Dc1d58', + createdAt: 1648825484, + }, + { + id: 'emp-eshare-wbnb', + name: 'ESHARE-BNB LP', + token: 'ESHARE-BNB LP', + tokenDescription: 'PancakeSwap (EMP)', + tokenAddress: '0x1747AF98EBF0B22d500014c7dd52985d736337d2', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooEmpESHARE-BNB', + earnedTokenAddress: '0x39E5C480bc28b77D8B5960Abc248A21C0cF4bE30', + earnContractAddress: '0x39E5C480bc28b77D8B5960Abc248A21C0cF4bE30', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'emp-eshare-wbnb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'EMP.Money', + assets: ['ESHARE', 'BNB'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://pancakeswap.finance/add/0xDB20F6A8665432CE895D724b417f77EcAC956550/0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0xDB20F6A8665432CE895D724b417f77EcAC956550', + createdAt: 1648773315, + }, + { + id: 'bifi-maxi-eol', + logo: 'single-assets/BIFI.png', + name: 'BIFI Maxi Old', + token: 'BIFI', + tokenDescription: 'Beefy', + tokenAddress: '0xCa3F508B8e4Dd382eE878A314789373D80A5190A', + tokenDecimals: 18, + earnedToken: 'mooBIFI', + earnedTokenAddress: '0xf7069e41C57EcC5F122093811d8c75bdB5f7c14e', + earnContractAddress: '0xf7069e41C57EcC5F122093811d8c75bdB5f7c14e', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'BIFI', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Beefy', + assets: ['BIFI'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'SingleStake', + withdrawalFee: '0.05%', + buyTokenUrl: 'https://app.1inch.io/#/56/swap/BNB/BIFI', + createdAt: 1606511757, + retireReason: 'upgrade', + }, + { + id: 'stargate-bsc-busd', + name: 'BUSD LP', + token: 'S*BUSD', + logo: 'single-assets/BUSD.svg', + tokenDescription: 'Stargate', + tokenAddress: '0x98a5737749490856b401DB5Dc27F522fC314A4e1', + tokenDecimals: 6, + tokenDescriptionUrl: '#', + earnedToken: 'mooStargateBUSD', + earnedTokenAddress: '0x220711F15D09bdDFD1f0ba0dfC905074Ea204C4E', + earnContractAddress: '0x220711F15D09bdDFD1f0ba0dfC905074Ea204C4E', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'sbBUSD', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Stargate', + assets: ['sbBUSD'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'SingleStake', + withdrawalFee: '0%', + addLiquidityUrl: 'https://stargate.finance/pool/BUSD-BSC', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56', + createdAt: 1648672017, + }, + { + id: 'stargate-bsc-usdt', + name: 'USDT LP', + token: 'S*USDT', + logo: 'single-assets/USDT.svg', + tokenDescription: 'Stargate', + tokenAddress: '0x9aA83081AA06AF7208Dcc7A4cB72C94d057D2cda', + tokenDecimals: 6, + tokenDescriptionUrl: '#', + earnedToken: 'mooStargateUSDT', + earnedTokenAddress: '0x0383E88A19E5c387FeBafbF51E5bA642d2ad8bE0', + earnContractAddress: '0x0383E88A19E5c387FeBafbF51E5bA642d2ad8bE0', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'sbUSDT', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Stargate', + assets: ['sbUSDT'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'SingleStake', + withdrawalFee: '0%', + addLiquidityUrl: 'https://stargate.finance/pool/USDT-BSC', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x55d398326f99059fF775485246999027B3197955', + createdAt: 1648675805, + }, + { + id: 'banana-ape-wbnb', + name: 'APE-BNB LP', + token: 'APE-BNB ALP', + tokenDescription: 'ApeSwap', + tokenAddress: '0x8B3EBE3422aabEA9920ca820fE43679e3e2E78D3', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooApeAPE-BNB', + earnedTokenAddress: '0x4fdaF14fBAf0569Ea35050843bDa9288F7198602', + earnContractAddress: '0x4fdaF14fBAf0569Ea35050843bDa9288F7198602', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'banana-ape-wbnb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'ApeSwap', + assets: ['APE', 'BNB'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://apeswap.finance/add/0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c/0x0b079B33B6e72311c6BE245F9f660CC385029fc3', + buyTokenUrl: + 'https://apeswap.finance/swap?outputCurrency=0x0b079B33B6e72311c6BE245F9f660CC385029fc3', + createdAt: 1648050845, + }, + { + id: 'cakev2-cake-duet', + name: 'DUET-CAKE LP', + token: 'DUET-CAKE LP', + tokenDescription: 'PancakeSwap', + tokenAddress: '0xbDF0aA1D1985Caa357A6aC6661D838DA8691c569', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2DUET-CAKE', + earnedTokenAddress: '0xD811C6D89D5e18569A2AA78647B27A0B471c7360', + earnContractAddress: '0xD811C6D89D5e18569A2AA78647B27A0B471c7360', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-cake-duet', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'PancakeSwap', + assets: ['DUET', 'CAKE'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'MCAP_MICRO', + 'IL_HIGH', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://pancakeswap.finance/add/0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82/0x95EE03e1e2C5c4877f9A298F1C0D6c98698FAB7B', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x95EE03e1e2C5c4877f9A298F1C0D6c98698FAB7B', + createdAt: 1647893595, + }, + { + id: 'cakev2-era-wbnb', + name: 'ERA-BNB LP', + token: 'ERA-BNB LP', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x53a63ac301D6410915385294527f947aFf616599', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2ERA-BNB', + earnedTokenAddress: '0xbaAcbb2A18Db15D185AE5fAdc53bEe21Ed626a5e', + earnContractAddress: '0xbaAcbb2A18Db15D185AE5fAdc53bEe21Ed626a5e', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-era-wbnb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'PancakeSwap', + assets: ['ERA', 'BNB'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'MCAP_MICRO', + 'IL_HIGH', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://pancakeswap.finance/add/0x6f9F0c4ad9Af7EbD61Ac5A1D4e0F2227F7B0E5f9/BNB', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x6f9F0c4ad9Af7EbD61Ac5A1D4e0F2227F7B0E5f9', + createdAt: 1647893669, + }, + { + id: 'cakev2-bsw-wbnb', + name: 'BSW-BNB LP', + token: 'BSW-BNB LP', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x8CA3fF14A52b080C54A6d1a405eecA02959d39fE', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2BSW-BNB', + earnedTokenAddress: '0x3f13FdC46d03888bE3451FF830EE6503014BecEf', + earnContractAddress: '0x3f13FdC46d03888bE3451FF830EE6503014BecEf', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-bsw-wbnb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'PancakeSwap', + assets: ['BSW', 'BNB'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'MCAP_MICRO', + 'IL_LOW', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://pancakeswap.finance/add/0x965F527D9159dCe6288a2219DB51fc6Eef120dD1/BNB', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x965F527D9159dCe6288a2219DB51fc6Eef120dD1', + createdAt: 1621957523, + }, + { + id: 'cakev2-gmt-usdc', + name: 'GMT-USDC LP', + token: 'GMT-USDC LP', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x007EC643C7Cc33a70C083fC305c283dd009C8b94', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2GMT-USDC', + earnedTokenAddress: '0xCc2ba0401799857e4e14bFEF6572f46fD5D0Ac23', + earnContractAddress: '0xCc2ba0401799857e4e14bFEF6572f46fD5D0Ac23', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-gmt-usdc', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'PancakeSwap', + assets: ['GMT', 'USDC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'MCAP_MICRO', + 'IL_HIGH', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://pancakeswap.finance/add/0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d/0x3019BF2a2eF8040C242C9a4c5c4BD4C81678b2A1', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x3019BF2a2eF8040C242C9a4c5c4BD4C81678b2A1', + createdAt: 1647719886, + }, + { + id: 'cakev2-raca-busd', + name: 'RACA-BUSD LP', + token: 'RACA-BUSD LP', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x8e744Ec2795c8B836689d1b4EBE1489204357dAC', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2RACA-BUSD', + earnedTokenAddress: '0xF390114CBB24D1E258e87F274A7b840f11cb0Ac4', + earnContractAddress: '0xF390114CBB24D1E258e87F274A7b840f11cb0Ac4', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-raca-busd', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'PancakeSwap', + assets: ['RACA', 'BUSD'], + risks: ['COMPLEXITY_LOW', 'BATTLE_TESTED', 'MCAP_MEDIUM', 'AUDIT', 'CONTRACTS_VERIFIED'], + stratType: 'StratLP', + addLiquidityUrl: + 'https://pancakeswap.finance/add/0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56/0x12BB890508c125661E03b09EC06E404bc9289040', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x12BB890508c125661E03b09EC06E404bc9289040', + createdAt: 1645891282, + }, + { + id: 'baby-avax-usdt', + name: 'AVAX-USDT LP', + token: 'AVAX-USDT LP', + tokenDescription: 'BabySwap', + tokenAddress: '0x74c4DA0DAca1A9e52Faec732d96BC7dEA9FB3ac1', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBabyAVAX-USDT', + earnedTokenAddress: '0xC5BB189E9fb1Fb0Ce81a6F5B16Db4B6D30bC6dAB', + earnContractAddress: '0xC5BB189E9fb1Fb0Ce81a6F5B16Db4B6D30bC6dAB', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'baby-avax-usdt', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Other', + assets: ['AVAX', 'USDT'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://exchange.babyswap.finance/#/add/0x1CE0c2827e2eF14D5C4f29a091d735A204794041/0x55d398326f99059fF775485246999027B3197955', + buyTokenUrl: + 'https://exchange.babyswap.finance/#/swap?outputcurrency=0x55d398326f99059fF775485246999027B3197955&inputCurrency=0x1CE0c2827e2eF14D5C4f29a091d735A204794041', + createdAt: 1644816966, + }, + { + id: 'charge-static-busd-eol', + name: 'Static-BUSD LP', + token: 'Static-BUSD LP', + tokenDescription: 'Pancake (Charge)', + tokenAddress: '0x69758726b04e527238B261ab00236AFE9F34929D', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooChargeSTATIC-BUSD', + earnedTokenAddress: '0xaAe97E1B198406D691d75B5aA60Ac0b4e4b0E5CD', + earnContractAddress: '0xaAe97E1B198406D691d75B5aA60Ac0b4e4b0E5CD', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'charge-static-busd', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Other', + assets: ['STATIC', 'BUSD'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://pancakeswap.finance/add/0x7dEb9906BD1d77B410a56E5C23c36340Bd60C983/0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x7dEb9906BD1d77B410a56E5C23c36340Bd60C983', + createdAt: 1638426684, + }, + { + id: 'charge-charge-busd', + name: 'Charge-BUSD LP', + token: 'Charge-BUSD LP', + tokenDescription: 'Pancake (Charge)', + tokenAddress: '0xB73b4eeb4c4912C1d1869219A22660eB478B57eA', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooChargeCHARGE-BUSD', + earnedTokenAddress: '0xDf988851e4CbA99565A9949706ff75Fd7f3b1b7A', + earnContractAddress: '0xDf988851e4CbA99565A9949706ff75Fd7f3b1b7A', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'charge-charge-busd', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Other', + assets: ['CHARGE', 'BUSD'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://pancakeswap.finance/add/0x1C6bc8e962427dEb4106aE06A7fA2d715687395c/0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x1C6bc8e962427dEb4106aE06A7fA2d715687395c', + createdAt: 1638425869, + }, + { + id: 'baby-ftm-usdt', + name: 'FTM-USDT LP', + token: 'FTM-USDT LP', + tokenDescription: 'BabySwap', + tokenAddress: '0xc85471a1bC8ae143b29fcDe6539507FBED075b15', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBabyFTM-USDT', + earnedTokenAddress: '0x45b37a28d6eFb45C257Fc15d9F08AA7D32568eE7', + earnContractAddress: '0x45b37a28d6eFb45C257Fc15d9F08AA7D32568eE7', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'baby-ftm-usdt', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Other', + assets: ['FTM', 'USDT'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://exchange.babyswap.finance/#/add/0x55d398326f99059fF775485246999027B3197955/0xAD29AbB318791D579433D831ed122aFeAf29dcfe', + buyTokenUrl: + 'https://exchange.babyswap.finance/#/swap?inputCurrency=0x55d398326f99059fF775485246999027B3197955&outputCurrency=0xAD29AbB318791D579433D831ed122aFeAf29dcfe', + createdAt: 1643664184, + }, + { + id: 'banana-sushi-eth', + name: 'SUSHI-ETH LP', + token: 'SUSHI-ETH ALP', + tokenDescription: 'ApeSwap', + tokenAddress: '0x044F2b275A344D4edfc3d98e1cb7c02B30e6484e', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooApeSUSHI-ETH', + earnedTokenAddress: '0x42376cd79F916Fdae6225Dd647f154D055165d83', + earnContractAddress: '0x42376cd79F916Fdae6225Dd647f154D055165d83', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'banana-sushi-eth', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'ApeSwap', + assets: ['SUSHI', 'ETH'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://dex.apeswap.finance/#/add/0x947950bcc74888a40ffa2593c5798f11fc9124c4/0x2170ed0880ac9a755fd29b2688956bd959f933f8', + buyTokenUrl: + 'https://dex.apeswap.finance/#/swap?inputCurrency=0x2170ed0880ac9a755fd29b2688956bd959f933f8&outputCurrency=0x947950bcc74888a40ffa2593c5798f11fc9124c4', + createdAt: 1643427366, + }, + { + id: 'cakev2-cake-bnb', + name: 'CAKE-BNB LP', + token: 'CAKE-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x0eD7e52944161450477ee417DE9Cd3a859b14fD0', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2CAKE-BNB', + earnedTokenAddress: '0xb26642B6690E4c4c9A6dAd6115ac149c700C7dfE', + earnContractAddress: '0xb26642B6690E4c4c9A6dAd6115ac149c700C7dfE', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-cake-bnb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'PancakeSwap', + assets: ['CAKE', 'BNB'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://pancakeswap.finance/add/0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82/BNB', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x5B6DcF557E2aBE2323c48445E8CC948910d8c2c9', + createdAt: 1619385194, + }, + { + id: 'cakev2-ertha-wbnb-eol', + name: 'ERTHA-BNB LP', + token: 'ERTHA-BNB LP', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x70531B39E2Bb4d8dA59E2Ce41a98eBA2990F8497', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2ERTHA-BNB', + earnedTokenAddress: '0x74aAA646a7ccCCE0e58a6C3137266a227F12b6F9', + earnContractAddress: '0x74aAA646a7ccCCE0e58a6C3137266a227F12b6F9', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-ertha-wbnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'PancakeSwap', + assets: ['ERTHA', 'BNB'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://pancakeswap.finance/add/0x62823659d09F9F9D2222058878f89437425eB261/BNB', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x62823659d09F9F9D2222058878f89437425eB261', + createdAt: 1643275444, + }, + { + id: 'cakev2-fuse-wbnb-eol', + name: 'FUSE-BNB LP', + token: 'FUSE-BNB LP', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x6483F166b9E4310A165a55FEa04F867499aded06', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2FUSE-BNB', + earnedTokenAddress: '0x834DdeE66c381811ce0233B4669ddC3b97fd08cd', + earnContractAddress: '0x834DdeE66c381811ce0233B4669ddC3b97fd08cd', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-fuse-wbnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'PancakeSwap', + assets: ['FUSE', 'BNB'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://pancakeswap.finance/add/0x5857c96DaE9cF8511B08Cb07f85753C472D36Ea3/BNB', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x5857c96DaE9cF8511B08Cb07f85753C472D36Ea3', + createdAt: 1642793949, + }, + { + id: 'baby-aot-usdt-eol', + name: 'A.O.T-USDT LP', + token: 'AOT-USDT LP', + tokenDescription: 'BabySwap', + tokenAddress: '0x0866Bbea720FBFE4B22e39B8fd318982Bf6DD448', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBabyAOT-USDT', + earnedTokenAddress: '0xC9215F674876da17A671f22C2083E200eD78D0C8', + earnContractAddress: '0xC9215F674876da17A671f22C2083E200eD78D0C8', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'baby-aot-usdt', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Other', + assets: ['AOT', 'USDT'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://exchange.babyswap.finance/#/add/0x9589014F7a8547B89A6331eEEe32b7fBd5852af9/0x55d398326f99059fF775485246999027B3197955', + buyTokenUrl: + 'https://exchange.babyswap.finance/#/swap?outputCurrency=0x9589014F7a8547B89A6331eEEe32b7fBd5852af9', + createdAt: 1641217338, + }, + { + id: 'mdex-lac-busd-eol', + name: 'LAC-BUSD LP', + token: 'LAC-BUSD LP', + tokenDescription: 'Mdex', + tokenAddress: '0xa269E050DD2262E7BdC8A481D76880A562dD1d5E', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooMdexLAC-BUSD', + earnedTokenAddress: '0xa0a2609800F5FfA4b9FaF8286fD44070BeD6931C', + earnContractAddress: '0xa0a2609800F5FfA4b9FaF8286fD44070BeD6931C', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'mdex-lac-busd', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Mdex', + assets: ['LAC', 'BUSD'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + buyTokenUrl: + 'https://bsc.mdex.me/#/swap?inputCurrency=0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56&outputCurrency=0xe6f079E74000a0AFc517c1EFf9624d866d163B75', + addLiquidityUrl: + 'https://bsc.mdex.me/#/add/0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56/0xe6f079E74000a0AFc517c1EFf9624d866d163B75', + createdAt: 1642253102, + }, + { + id: 'dibs-dibs-bnb', + name: 'DIBS-BNB', + token: 'DIBS-BNB LP', + tokenDescription: 'Pancake (Dibs)', + tokenAddress: '0x9bEBe118018d0De55b00787B5eeABB9EDa8A9e0A', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooDibsDIBS-BNB', + earnedTokenAddress: '0xd3bcD18c24F42a9928651BE0b7fF6C9Ab56B3B4a', + earnContractAddress: '0xd3bcD18c24F42a9928651BE0b7fF6C9Ab56B3B4a', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'dibs-dibs-bnb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Other', + assets: ['DIBS', 'BNB'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0xFd81Ef21EA7CF1dC00e9c6Dd261B4F3BE0341d5c', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0xFd81Ef21EA7CF1dC00e9c6Dd261B4F3BE0341d5c', + createdAt: 1641804594, + }, + { + id: 'dibs-dshare-bnb', + name: 'DSHARE-BNB', + token: 'DSHARE-BNB LP', + tokenDescription: 'Pancake (Dibs)', + tokenAddress: '0x5998AF8868e5e4Fbd7c60dA221b76b201e441612', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooDibsDSHARE-BNB', + earnedTokenAddress: '0xFf494b7CB341311f86dA21A49C5fF176637aA85e', + earnContractAddress: '0xFf494b7CB341311f86dA21A49C5fF176637aA85e', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'dibs-dshare-bnb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Other', + assets: ['DSHARE', 'BNB'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0x26d3163b165BE95137CEe97241E716b2791a7572', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x26d3163b165BE95137CEe97241E716b2791a7572', + createdAt: 1641805104, + }, + { + id: 'banana-nfty-wbnb', + name: 'NFTY-BNB LP', + token: 'NFTY-BNB BLP', + tokenDescription: 'ApeSwap', + tokenAddress: '0x884BE30e2c95b9cFed614aD2B5Edf40AF2A144ad', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooApeNFTY-BNB', + earnedTokenAddress: '0x69476255A2703Df58C0F6Bb60D1c5deC9a8406C1', + earnContractAddress: '0x69476255A2703Df58C0F6Bb60D1c5deC9a8406C1', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'banana-nfty-wbnb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'ApeSwap', + assets: ['NFTY', 'BNB'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://dex.apeswap.finance/#/add/ETH/0x5774B2fc3e91aF89f89141EacF76545e74265982', + buyTokenUrl: + 'https://dex.apeswap.finance/#/swap?outputCurrency=0x5774B2fc3e91aF89f89141EacF76545e74265982', + createdAt: 1633961805, + }, + { + id: 'cakev2-insur-wbnb-eol', + name: 'INSUR-BNB LP', + token: 'INSUR-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0xD01bf29EdCA0285A004a25e325A449ba56e5926E', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2INSUR-BNB', + earnedTokenAddress: '0x4E6AB04823B5eFEEF3c51C6AbeE0F4B8306f7AcF', + earnContractAddress: '0x4E6AB04823B5eFEEF3c51C6AbeE0F4B8306f7AcF', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-insur-wbnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'PancakeSwap', + assets: ['INSUR', 'BNB'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0x3192CCDdf1CDcE4Ff055EbC80f3F0231b86A7E30', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x3192CCDdf1CDcE4Ff055EbC80f3F0231b86A7E30', + createdAt: 1641572289, + }, + { + id: 'cakev2-wbnb-gm-eol', + name: 'GM-BNB LP', + token: 'GM-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x1C640a98a0c62120B0AD23C15FfF8dC1a2Fb9C4D', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2GM-BNB', + earnedTokenAddress: '0xb7aD14a25163D763B7d339d97F29f2Cc59B83C8e', + earnContractAddress: '0xb7aD14a25163D763B7d339d97F29f2Cc59B83C8e', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-wbnb-gm', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'tvl', + platform: 'PancakeSwap', + assets: ['GM', 'BNB'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_SMALL', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0xe2604C9561D490624AA35e156e65e590eB749519', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0xe2604C9561D490624AA35e156e65e590eB749519', + createdAt: 1641572043, + }, + { + id: 'cakev2-woop-wbnb-eol', + name: 'WOOP-BNB LP', + token: 'WOOP-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x2AE94A6C768D59f5DDc25bd7f12C7cBE1D51dc04', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2WOOP-BNB', + earnedTokenAddress: '0x7F4D5dB01f640e73dfc4205244cC5799948e426e', + earnContractAddress: '0x7F4D5dB01f640e73dfc4205244cC5799948e426e', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-woop-wbnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'tvl', + platform: 'PancakeSwap', + assets: ['WOOP', 'BNB'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_SMALL', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0x8b303d5BbfBbf46F1a4d9741E491e06986894e18', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x8b303d5BbfBbf46F1a4d9741E491e06986894e18', + createdAt: 1641571866, + }, + { + id: 'cakev2-high-busd', + name: 'HIGH-BUSD LP', + token: 'HIGH-BUSD LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0xe98ac95A1dB2fCaaa9c7D4ba7ecfCE4877ca2bEa', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2HIGH-BUSD', + earnedTokenAddress: '0x39699485b9a96B6f6aD6f8b4c06F5AF8e71cDeb8', + earnContractAddress: '0x39699485b9a96B6f6aD6f8b4c06F5AF8e71cDeb8', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-high-busd', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'PancakeSwap', + assets: ['HIGH', 'BUSD'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_SMALL', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://pancakeswap.finance/add/0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56/0x5f4Bde007Dc06b867f86EBFE4802e34A1fFEEd63', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x5f4Bde007Dc06b867f86EBFE4802e34A1fFEEd63', + createdAt: 1641571686, + }, + { + id: 'cakev2-ccar-wbnb-eol', + name: 'CCAR-BNB LP', + token: 'CCAR-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x845d301C864d48027DB73ec4394e6DDBE52Cbc39', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2CCAR-BNB', + earnedTokenAddress: '0x964EF09C33BA7Acc0B53e522A6d4664a993B4Fce', + earnContractAddress: '0x964EF09C33BA7Acc0B53e522A6d4664a993B4Fce', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-ccar-wbnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'PancakeSwap', + assets: ['CCAR', 'BNB'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_SMALL', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0x50332bdca94673F33401776365b66CC4e81aC81d', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x50332bdca94673F33401776365b66CC4e81aC81d', + createdAt: 1641571293, + }, + { + id: 'cakev2-wbnb-dpt-eol', + name: 'DPT-BNB LP', + token: 'DPT-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x141e9558f66Cc21c93628400cCa7d830c15c2c24', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2DPT-BNB', + earnedTokenAddress: '0x9BDE33da0c9D029bEf653Fa0C374d886b894b072', + earnContractAddress: '0x9BDE33da0c9D029bEf653Fa0C374d886b894b072', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-wbnb-dpt', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'tvl', + platform: 'PancakeSwap', + assets: ['DPT', 'BNB'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_SMALL', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0xE69cAef10A488D7AF31Da46c89154d025546e990', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0xE69cAef10A488D7AF31Da46c89154d025546e990', + createdAt: 1641571143, + }, + { + id: 'cakev2-thg-wbnb', + name: 'THG-BNB LP', + token: 'THG-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x486697ae24469cB1122F537924Aa46E705B142Aa', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2THG-BNB', + earnedTokenAddress: '0xaDcED4C0c7fBd616946dCED244DB4Cb01F1Fa750', + earnContractAddress: '0xaDcED4C0c7fBd616946dCED244DB4Cb01F1Fa750', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-thg-wbnb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'PancakeSwap', + assets: ['THG', 'BNB'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_SMALL', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0x9fD87aEfe02441B123c3c32466cD9dB4c578618f', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x9fD87aEfe02441B123c3c32466cD9dB4c578618f', + createdAt: 1641570951, + }, + { + id: 'baby-usdt-milk', + name: 'MILK-USDT LP', + token: 'MILK-USDT LP', + tokenDescription: 'BabySwap', + tokenAddress: '0xDB6c248902AD2722A5E01E9689824c28bd0A5f75', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBabyUSDT-MILK', + earnedTokenAddress: '0xBBEfaf1f7585EDc59180fDdc5bAf46b8A5D7A206', + earnContractAddress: '0xBBEfaf1f7585EDc59180fDdc5bAf46b8A5D7A206', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'baby-usdt-milk', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Other', + assets: ['MILK', 'USDT'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://exchange.babyswap.finance/#/add/0x55d398326f99059fF775485246999027B3197955/0xBf37f781473f3b50E82C668352984865eac9853f', + buyTokenUrl: + 'https://exchange.babyswap.finance/#/swap?outputCurrency=0xBf37f781473f3b50E82C668352984865eac9853f', + createdAt: 1640097622, + }, + { + id: 'ellipsis-renbtc-eol', + logo: 'uncategorized/epsRENBTC.png', + name: 'renBTC/BTCB', + token: 'renBTC-BTCB EPS LP', + tokenDescription: 'Ellipsis', + tokenAddress: '0x2a435Ecb3fcC0E316492Dc1cdd62d0F189be5640', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'MooEllipsisRenBTC', + earnedTokenAddress: '0x24AE9e5424575690aCab61a384B6A76d69F4f89c', + earnContractAddress: '0x24AE9e5424575690aCab61a384B6A76d69F4f89c', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'ellipsis-renbtc', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Ellipsis', + assets: ['renBTC', 'BTCB'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: 'https://ellipsis.finance/pool/btceps', + createdAt: 1618661786, + }, + { + id: 'banana-banana-busd', + logo: 'degens/banana-busd.svg', + name: 'BANANA-BUSD LP', + token: 'BANANA-BUSD LP', + tokenDescription: 'ApeSwap', + tokenAddress: '0x7Bd46f6Da97312AC2DBD1749f82E202764C0B914', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooApeBANANA-BUSD', + earnedTokenAddress: '0x651b496bCe2C184282a2B9AeF3f8BaDBAC36Dd7f', + earnContractAddress: '0x651b496bCe2C184282a2B9AeF3f8BaDBAC36Dd7f', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'banana-banana-busd', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'ApeSwap', + assets: ['BANANA', 'BUSD'], + addLiquidityUrl: + 'https://dex.apeswap.finance/#/add/0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56/0x603c7f932ED1fc6575303D8Fb018fDCBb0f39a95', + buyTokenUrl: + 'https://dex.apeswap.finance/#/swap?inputCurrency=0x603c7f932ed1fc6575303d8fb018fdcbb0f39a95&outputCurrency=0xe9e7cea3dedca5984780bafc599bd69add087d56', + createdAt: 1614766209, + }, + { + id: 'banana-crush-wbnb-eol', + name: 'CRUSH-BNB LP', + token: 'CRUSH-BNB BLP', + tokenDescription: 'ApeSwap', + tokenAddress: '0x8A10489f1255fb63217Be4cc96B8F4CD4D42a469', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooApeCRUSH-BNB', + earnedTokenAddress: '0x566b68521968569aC04873c4CCFfa45C8d653463', + earnContractAddress: '0x566b68521968569aC04873c4CCFfa45C8d653463', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'banana-crush-wbnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'ApeSwap', + assets: ['CRUSH', 'BNB'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://dex.apeswap.finance/#/add/ETH/0x0Ef0626736c2d484A792508e99949736D0AF807e', + buyTokenUrl: + 'https://dex.apeswap.finance/#/swap?outputCurrency=0x0Ef0626736c2d484A792508e99949736D0AF807e', + createdAt: 1639735318, + }, + { + id: 'banana-bnb-stars', + name: 'STARS-BNB LP', + token: 'STARS-BNB LP', + tokenDescription: 'ApeSwap', + tokenAddress: '0xBc8a4caD743d87e8754Fd5F704C62E378802CBfF', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooApeBNB-STARS', + earnedTokenAddress: '0xd6Cf54a0545675AdB0aa5175b9461Cd3d6a61f8e', + earnContractAddress: '0xd6Cf54a0545675AdB0aa5175b9461Cd3d6a61f8e', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'banana-bnb-stars', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'ApeSwap', + assets: ['STARS', 'BNB'], + addLiquidityUrl: + 'https://dex.apeswap.finance/#/add/0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c/0xbD83010eB60F12112908774998F65761cf9f6f9a', + buyTokenUrl: + 'https://dex.apeswap.finance/#/swap?inputCurrency=0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c&outputCurrency=0xbD83010eB60F12112908774998F65761cf9f6f9a', + createdAt: 1627616650, + }, + { + id: 'bison-bison-bnb-eol', + name: 'BISON-BNB LP', + token: 'BISON-BNB ALP', + tokenDescription: 'ApeSwap (BiShares)', + tokenAddress: '0xEC1214Ee197304c17EB9e427E246a4Fd37BA718E', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBisonBISON-BNB', + earnedTokenAddress: '0x813EBFD51604E0066bFA4E0Bf6d2324eA8CebE60', + earnContractAddress: '0x813EBFD51604E0066bFA4E0Bf6d2324eA8CebE60', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'bison-bison-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Other', + assets: ['BISON', 'BNB'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://dex.apeswap.finance/#/add/ETH/0x19A6Da6e382b85F827088092a3DBe864d9cCba73', + buyTokenUrl: + 'https://dex.apeswap.finance/#/swap?outputCurrency=0x19A6Da6e382b85F827088092a3DBe864d9cCba73', + createdAt: 1637682462, + }, + { + id: 'cakev2-nabox-busd-eol', + name: 'NABOX-BUSD LP', + token: 'NABOX-BUSD LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x29b4abb0f8734EA672a0e82FA47998F710B6A07a', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2NABOX-BUSD', + earnedTokenAddress: '0x9D03b1115c6B2e4a7A29bA45c0Cb463965b77F20', + earnContractAddress: '0x9D03b1115c6B2e4a7A29bA45c0Cb463965b77F20', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-nabox-busd', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'PancakeSwap', + assets: ['NABOX', 'BUSD'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_SMALL', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://pancakeswap.finance/add/0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56/0x755f34709E369D37C6Fa52808aE84A32007d1155', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x755f34709E369D37C6Fa52808aE84A32007d1155', + createdAt: 1638803417, + }, + { + id: 'cakev2-santos-wbnb-eol', + name: 'SANTOS-BNB LP', + token: 'SANTOS-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x06043B346450BbCfdE066ebc39fdc264FdFFeD74', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2SANTOS-BNB', + earnedTokenAddress: '0x710A1A9d868a566E3624e1522B531402e144DcaB', + earnContractAddress: '0x710A1A9d868a566E3624e1522B531402e144DcaB', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-santos-wbnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'tvl', + platform: 'PancakeSwap', + assets: ['SANTOS', 'BNB'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_SMALL', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0xA64455a4553C9034236734FadDAddbb64aCE4Cc7', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0xA64455a4553C9034236734FadDAddbb64aCE4Cc7', + createdAt: 1638803879, + }, + { + id: 'cakev2-quidd-wbnb-eol', + name: 'QUIDD-BNB LP', + token: 'QUIDD-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0xD6d206F59cC5a3BfA4Cc10bc8Ba140ac37Ad1C89', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2QUIDD-BNB', + earnedTokenAddress: '0x2Fc49fDA984333e618b4980eB97086Eb37D7C333', + earnContractAddress: '0x2Fc49fDA984333e618b4980eB97086Eb37D7C333', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-quidd-wbnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'PancakeSwap', + assets: ['QUIDD', 'BNB'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_SMALL', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0x7961Ade0a767c0E5B67Dd1a1F78ba44F727642Ed', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x7961Ade0a767c0E5B67Dd1a1F78ba44F727642Ed', + createdAt: 1638804800, + }, + { + id: 'cakev2-zoo-wbnb-eol', + name: 'Zoo-BNB LP', + token: 'Zoo-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x85e5889Fc3Ed01B4e8B56bbc717D7643294d2c31', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2Zoo-BNB', + earnedTokenAddress: '0x8661D810CBc40156Cb4d01923d5af110876ED24B', + earnContractAddress: '0x8661D810CBc40156Cb4d01923d5af110876ED24B', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-zoo-wbnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'PancakeSwap', + assets: ['bZoo', 'BNB'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_SMALL', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0x1D229B958D5DDFca92146585a8711aECbE56F095', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x1D229B958D5DDFca92146585a8711aECbE56F095', + createdAt: 1638807261, + }, + { + id: 'banana-wbnb-ceek', + name: 'CEEK-BNB LP', + token: 'CEEK-BNB BLP', + tokenDescription: 'ApeSwap', + tokenAddress: '0x119D6Ebe840966c9Cf4fF6603E76208d30BA2179', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooApeCEEK-BNB', + earnedTokenAddress: '0xd244fD01Ca42415b5B3f9dCe164C762eB28d6eA4', + earnContractAddress: '0xd244fD01Ca42415b5B3f9dCe164C762eB28d6eA4', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'banana-wbnb-ceek', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'ApeSwap', + assets: ['CEEK', 'BNB'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://dex.apeswap.finance/#/add/ETH/0xe0F94Ac5462997D2BC57287Ac3a3aE4C31345D66', + buyTokenUrl: + 'https://dex.apeswap.finance/#/swap?outputCurrency=0xe0F94Ac5462997D2BC57287Ac3a3aE4C31345D66', + createdAt: 1634289884, + }, + { + id: 'belt-beltbtc', + logo: 'single-assets/BTCB.svg', + name: 'beltBTC', + token: 'beltBTC', + tokenDescription: 'Belt', + tokenAddress: '0x51bd63F240fB13870550423D208452cA87c44444', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBeltBTC', + earnedTokenAddress: '0xD411121C948Cff739857513E1ADF25ED448623f8', + earnContractAddress: '0xD411121C948Cff739857513E1ADF25ED448623f8', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'belt-beltbtc', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Belt', + assets: ['BTCB'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'SingleStake', + withdrawalFee: '0.01%', + addLiquidityUrl: 'https://belt.fi/', + createdAt: 1619606003, + }, + { + id: 'banana-bananav2', + logo: 'degens/BANANA.svg', + name: 'BANANA', + token: 'BANANA', + tokenDescription: 'ApeSwap', + tokenAddress: '0x603c7f932ED1fc6575303D8Fb018fDCBb0f39a95', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBanana', + earnedTokenAddress: '0xED4ea41Daf652964789b16e3Ff76eC07d99d2340', + earnContractAddress: '0xED4ea41Daf652964789b16e3Ff76eC07d99d2340', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'BANANA', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'ApeSwap', + assets: ['BANANA'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'SingleStake', + withdrawalFee: '0%', + buyTokenUrl: + 'https://dex.apeswap.finance/#/swap?inputCurrency=0x603c7f932ED1fc6575303D8Fb018fDCBb0f39a95&outputCurrency=0xbb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c', + createdAt: 1628853807, + }, + { + id: 'banana-banana-bnb', + logo: 'degens/banana-bnb.svg', + name: 'BANANA-BNB LP', + token: 'BANANA-BNB LP', + tokenDescription: 'ApeSwap', + tokenAddress: '0xF65C1C0478eFDe3c19b49EcBE7ACc57BB6B1D713', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooApeBANANA-BNB', + earnedTokenAddress: '0x15396D3BD9338A14AE90613Fc2b85c5F7b5621CF', + earnContractAddress: '0x15396D3BD9338A14AE90613Fc2b85c5F7b5621CF', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'banana-banana-bnb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'ApeSwap', + assets: ['BANANA', 'BNB'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://dex.apeswap.finance/#/add/ETH/0x603c7f932ED1fc6575303D8Fb018fDCBb0f39a95', + buyTokenUrl: + 'https://dex.apeswap.finance/#/swap?inputCurrency=0x603c7f932ED1fc6575303D8Fb018fDCBb0f39a95&outputCurrency=0xbb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c', + createdAt: 1614764749, + }, + { + id: 'alpaca-ibalpaca-eol', + logo: 'single-assets/ALPACA.png', + name: 'ibALPACA', + token: 'ibALPACA', + tokenDescription: 'Alpaca', + tokenAddress: '0xf1bE8ecC990cBcb90e166b71E368299f0116d421', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooIbAlpaca', + earnedTokenAddress: '0x6EB4F8975b15F34AdccFDE830087Fc8FdB006C36', + earnContractAddress: '0x6EB4F8975b15F34AdccFDE830087Fc8FdB006C36', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'alpaca-ibalpaca', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Other', + assets: ['ALPACA'], + withdrawalFee: '0%', + addLiquidityUrl: 'https://app.alpacafinance.org/lend/ALPACA/deposit', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x8F0528cE5eF7B51152A59745bEfDD91D97091d2F', + createdAt: 1628765745, + }, + { + id: '1inch-1inch-eol', + logo: 'single-assets/INCH.png', + name: '1INCH', + token: '1INCH', + tokenDescription: '1Inch', + tokenAddress: '0x111111111117dC0aa78b770fA6A738034120C302', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'moo1INCH1INCH', + earnedTokenAddress: '0xBa53AF4C2f1649F82e8070FB306DDBF2771A1950', + earnContractAddress: '0xBa53AF4C2f1649F82e8070FB306DDBF2771A1950', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: '1INCH', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['1INCH'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'SingleStake', + retireReason: 'rewards', + buyTokenUrl: + 'https://1inch.exchange/#/r/0xF4cb25a1FF50E319c267b3E51CBeC2699FB2A43B/BNB/1INCH/?network=56', + createdAt: 1616916127, + }, + { + id: 'banana-oasis-wbnb', + name: 'OASIS-BNB LP', + token: 'OASIS-BNB BLP', + tokenDescription: 'ApeSwap', + tokenAddress: '0xeF2b0B3e0077106249946c42CDf3F6a29942d44A', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooApeOASIS-BNB', + earnedTokenAddress: '0xb69fE74aeD526BBEe0fc47db72Ced2BDBF9747CF', + earnContractAddress: '0xb69fE74aeD526BBEe0fc47db72Ced2BDBF9747CF', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'banana-oasis-wbnb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'ApeSwap', + assets: ['OASIS', 'BNB'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://dex.apeswap.finance/#/add/ETH/0xb19289b436b2F7A92891ac391D8f52580d3087e4', + buyTokenUrl: + 'https://dex.apeswap.finance/#/swap?outputCurrency=0xb19289b436b2F7A92891ac391D8f52580d3087e4', + createdAt: 1637137660, + }, + { + id: 'bison-bison-eol', + logo: 'single-assets/BISON.png', + name: 'BISON', + token: 'BISON', + tokenDescription: 'BiShares', + tokenAddress: '0x19A6Da6e382b85F827088092a3DBe864d9cCba73', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBison', + earnedTokenAddress: '0x7886484722747F66B53A27b2854eF4e6Cdd80881', + earnContractAddress: '0x7886484722747F66B53A27b2854eF4e6Cdd80881', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'BISON', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Other', + assets: ['BISON'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'SingleStake', + withdrawalFee: '0%', + buyTokenUrl: + 'https://dex.apeswap.finance/#/swap?outputCurrency=0x19A6Da6e382b85F827088092a3DBe864d9cCba73', + createdAt: 1637917799, + }, + { + id: 'blockmine-nugget-goldcoin-eol', + name: 'NUGGET-GOLDCOIN LP', + token: 'NUGGET-GOLDCOIN ALP', + tokenDescription: 'ApeSwap (BlockMine)', + tokenAddress: '0x50EF5ccB4E34b751B25e9F449Dc58C248554c465', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooMineNUGGET-GOLDCOIN', + earnedTokenAddress: '0xd3FC1C726E1FaF21bADc029382FD10EC6c9Bc9A8', + earnContractAddress: '0xd3FC1C726E1FaF21bADc029382FD10EC6c9Bc9A8', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'blockmine-nugget-goldcoin', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['NUGGET', 'GOLDCOIN'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'NO_AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://dex.apeswap.finance/#/add/0xE0B58022487131eC9913C1F3AcFD8F74FC6A6C7E/0xF2f02f60fD1a376270e777Aa2a4667329E3984eD', + buyTokenUrl: + 'https://dex.apeswap.finance/#/swap?inputCurrency=0xE0B58022487131eC9913C1F3AcFD8F74FC6A6C7E&outputCurrency=0xF2f02f60fD1a376270e777Aa2a4667329E3984eD', + createdAt: 1637847086, + retiredReason: 'tvl', + }, + { + id: 'cakev2-qi-wbnb-eol', + name: 'QI-BNB LP', + token: 'QI-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0xf924E642f05ACC57fc3b14990c2B1a137683b201', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2QI-BNB', + earnedTokenAddress: '0xcc3D722E518fF86b113Fa6aa4434fBAA0449a0e1', + earnContractAddress: '0xcc3D722E518fF86b113Fa6aa4434fBAA0449a0e1', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-qi-wbnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'PancakeSwap', + assets: ['bQI', 'BNB'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_SMALL', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0x8729438EB15e2C8B576fCc6AeCdA6A148776C0F5', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x8729438EB15e2C8B576fCc6AeCdA6A148776C0F5', + createdAt: 1637506051, + }, + { + id: 'cakev2-kart-wbnb-eol', + name: 'KART-BNB LP', + token: 'KART-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x0927C49A18eAc4512112e7a226275e2c36f2C3Db', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2KART-BNB', + earnedTokenAddress: '0xC21Da6237db8e5870dEfde290aE62D07b58E16C5', + earnContractAddress: '0xC21Da6237db8e5870dEfde290aE62D07b58E16C5', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-kart-wbnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['KART', 'BNB'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0x8BDd8DBcBDf0C066cA5f3286d33673aA7A553C10', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x8BDd8DBcBDf0C066cA5f3286d33673aA7A553C10', + createdAt: 1637507602, + retiredReason: 'tvl', + }, + { + id: 'cakev2-porto-wbnb-eol', + name: 'PORTO-BNB LP', + token: 'PORTO-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x0A292e96ABb35297786a38fDD67Dc4f82689E670', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2EPORTO-BNB', + earnedTokenAddress: '0x9aA837B6786245eD223E9424ac03C71A82105144', + earnContractAddress: '0x9aA837B6786245eD223E9424ac03C71A82105144', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-porto-wbnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'tvl', + platform: 'PancakeSwap', + assets: ['PORTO', 'BNB'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0x49f2145d6366099e13B10FbF80646C0F377eE7f6', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x49f2145d6366099e13B10FbF80646C0F377eE7f6', + createdAt: 1637506484, + }, + { + id: 'cakev2-wbnb-eternal-eol', + name: 'ETERNAL-BNB LP', + token: 'ETERNAL-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0xbd26e08411483C4BEBba80939FA5a775beE22338', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2ETERNAL-BNB', + earnedTokenAddress: '0x9509E50AB2bC9ff6081B5E45C57f3bf015E06b7C', + earnContractAddress: '0x9509E50AB2bC9ff6081B5E45C57f3bf015E06b7C', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-wbnb-eternal', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'PancakeSwap', + assets: ['ETERNAL', 'BNB'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0xD44FD09d74cd13838F137B590497595d6b3FEeA4', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0xD44FD09d74cd13838F137B590497595d6b3FEeA4', + createdAt: 1637503683, + }, + { + id: 'cakev2-xwg-usdc', + name: 'XWG-USDC LP', + token: 'XWG-USDC LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x936928146a21AfCcd30DfA84824A780572B1630B', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2XWG-USDC', + earnedTokenAddress: '0xe350a5908643076819Dcac25ed38102F8755D224', + earnContractAddress: '0xe350a5908643076819Dcac25ed38102F8755D224', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-xwg-usdc', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'PancakeSwap', + assets: ['XWG', 'USDC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://pancakeswap.finance/add/0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d/0x6b23C89196DeB721e6Fd9726E6C76E4810a464bc', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x6b23C89196DeB721e6Fd9726E6C76E4810a464bc', + createdAt: 1637503217, + }, + { + id: 'banana-frax-busd', + name: 'FRAX-BUSD LP', + token: 'FRAX-BUSD BLP', + tokenDescription: 'ApeSwap', + tokenAddress: '0x5292600758A090490D34367d4864ed6291D254fe', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooApeFRAX-BUSD', + earnedTokenAddress: '0xfa9Dac01A3648e05Ef801DD4d2c6506499204B15', + earnContractAddress: '0xfa9Dac01A3648e05Ef801DD4d2c6506499204B15', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'banana-frax-busd', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'ApeSwap', + assets: ['FRAX', 'BUSD'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_HIGH', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://dex.apeswap.finance/#/add/0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56/0x90C97F71E18723b0Cf0dfa30ee176Ab653E89F40', + buyTokenUrl: + 'https://dex.apeswap.finance/#/swap?inputCurrency=0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56&outputCurrency=0x90C97F71E18723b0Cf0dfa30ee176Ab653E89F40', + createdAt: 1637257193, + }, + { + id: 'banana-wbnb-fxs', + name: 'FXS-BNB LP', + token: 'FXS-BNB BLP', + tokenDescription: 'ApeSwap', + tokenAddress: '0x8210D92a8951d50de3D46AC0ee39cb5E2C14e18A', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooApeBNB-FXS', + earnedTokenAddress: '0x7Cc3C893968FA2ddB515D19a81CaCEF280d573CA', + earnContractAddress: '0x7Cc3C893968FA2ddB515D19a81CaCEF280d573CA', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'banana-wbnb-fxs', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'ApeSwap', + assets: ['FXS', 'BNB'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://dex.apeswap.finance/#/add/ETH/0xe48A3d7d0Bc88d552f730B62c006bC925eadB9eE', + buyTokenUrl: + 'https://dex.apeswap.finance/#/swap?outputCurrency=0xe48A3d7d0Bc88d552f730B62c006bC925eadB9eE', + createdAt: 1637170658, + }, + { + id: 'betu-betu', + logo: 'single-assets/BETU.png', + name: 'BETU', + token: 'BETU', + tokenDescription: 'BETU', + tokenAddress: '0x0df1B3F30865C5b324797F8dB9d339514caC4e94', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBetu', + earnedTokenAddress: '0x22b3d90BDdC3Ad5F2948bE3914255C64Ebc8c9b3', + earnContractAddress: '0x22b3d90BDdC3Ad5F2948bE3914255C64Ebc8c9b3', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'BETU', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Other', + assets: ['BETU'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'SingleStake', + withdrawalFee: '0%', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x0df1B3F30865C5b324797F8dB9d339514caC4e94', + createdAt: 1637068928, + }, + { + id: 'cakev2-dar-wbnb', + name: 'DAR-BNB LP', + token: 'DAR-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x062f88E2B4896e823ac78Ac314468c29eEC4186d', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2DAR-BNB', + earnedTokenAddress: '0x9f3371AA6F7b48485Cb9eb3D6A79ea9298565410', + earnContractAddress: '0x9f3371AA6F7b48485Cb9eb3D6A79ea9298565410', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-dar-wbnb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'PancakeSwap', + assets: ['DAR', 'BNB'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0x23CE9e926048273eF83be0A3A8Ba9Cb6D45cd978', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x23CE9e926048273eF83be0A3A8Ba9Cb6D45cd978', + createdAt: 1636769590, + }, + { + id: 'nfty-nfty', + logo: 'single-assets/NFTY.png', + name: 'NFTY', + token: 'NFTY', + tokenDescription: 'NFTY', + tokenAddress: '0x5774B2fc3e91aF89f89141EacF76545e74265982', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooNfty', + earnedTokenAddress: '0x55669f1c00D55F55bA1E736A23cEE54877D922Be', + earnContractAddress: '0x55669f1c00D55F55bA1E736A23cEE54877D922Be', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'NFTY', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Other', + assets: ['NFTY'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'SingleStake', + buyTokenUrl: + 'https://dex.apeswap.finance/#/swap?outputCurrency=0x5774B2fc3e91aF89f89141EacF76545e74265982', + createdAt: 1636533443, + }, + { + id: 'banana-exp-wbnb-eol', + name: 'EXP-BNB LP', + token: 'EXP-BNB BLP', + tokenDescription: 'ApeSwap', + tokenAddress: '0xe93855Cb88fAa221e648c157670a28f0c2449A60', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooApeEXP-BNB', + earnedTokenAddress: '0x5B5ADf5cA7a7149194182a86fDA329019c57524b', + earnContractAddress: '0x5B5ADf5cA7a7149194182a86fDA329019c57524b', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'banana-exp-wbnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'ApeSwap', + assets: ['EXP', 'BNB'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + retireReason: 'rewards', + addLiquidityUrl: + 'https://dex.apeswap.finance/#/add/ETH/0x639d4C62F58a4048AD0F69B8CE675dB1A3e8e00e', + buyTokenUrl: + 'https://dex.apeswap.finance/#/swap?outputCurrency=0x639d4C62F58a4048AD0F69B8CE675dB1A3e8e00e', + createdAt: 1636020665, + }, + { + id: 'cakev2-lazio-wbnb', + name: 'LAZIO-BNB LP', + token: 'LAZIO-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x11c0b2BB4fbB430825d07507A9E24e4c32f7704D', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2LAZIO-BNB', + earnedTokenAddress: '0x3CB18Ba59dD2eB47D4594D1a80a07a721e8a9B2A', + earnContractAddress: '0x3CB18Ba59dD2eB47D4594D1a80a07a721e8a9B2A', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-lazio-wbnb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'PancakeSwap', + assets: ['LAZIO', 'BNB'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0x77d547256A2cD95F32F67aE0313E450Ac200648d', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x77d547256A2cD95F32F67aE0313E450Ac200648d', + createdAt: 1635781837, + }, + { + id: 'cakev2-dkt-wbnb-eol', + name: 'DKT-BNB LP', + token: 'DKT-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x365c3F921b2915a480308D0b1C04aEF7B99c2876', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2DKT-BNB', + earnedTokenAddress: '0x16E60cF196653847325936FD1978435a12D580E3', + earnContractAddress: '0x16E60cF196653847325936FD1978435a12D580E3', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-dkt-wbnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['DKT', 'BNB'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0x7Ceb519718A80Dd78a8545AD8e7f401dE4f2faA7', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x7Ceb519718A80Dd78a8545AD8e7f401dE4f2faA7', + createdAt: 1635781676, + retiredReason: 'tvl', + }, + { + id: 'cakev2-rusd-busd', + name: 'rUSD-BUSD LP', + token: 'rUSD-BUSD LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x59FaC9e98479fc9979aE2a0C7422Af50bCBB9B26', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2rUSD-BUSD', + earnedTokenAddress: '0xf49ea5eF72CE090f390e888a5B73971E2E274C61', + earnContractAddress: '0xf49ea5eF72CE090f390e888a5B73971E2E274C61', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-rusd-busd', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'PancakeSwap', + assets: ['rUSD', 'BUSD'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://pancakeswap.finance/add/0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56/0x07663837218A003e66310a01596af4bf4e44623D', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x07663837218A003e66310a01596af4bf4e44623D', + createdAt: 1629635688, + }, + { + id: 'cakev2-bmon-wbnb-eol', + name: 'BMON-BNB LP', + token: 'BMON-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x3C2b7B578Dd2175A1c3524Aa0D515106282Bf108', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2BMON-WBNB', + earnedTokenAddress: '0xb6f1f0797F975FE72a19AfF84e216ea9BDf1C6Ca', + earnContractAddress: '0xb6f1f0797F975FE72a19AfF84e216ea9BDf1C6Ca', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-bmon-wbnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'PancakeSwap', + assets: ['BMON', 'BNB'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://pancakeswap.finance/add/0x08ba0619b1e7A582E0BCe5BBE9843322C954C340/0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c', + buyTokenUrl: + 'https://pancakeswap.finance/swap?inputCurrency=0x08ba0619b1e7A582E0BCe5BBE9843322C954C340&outputCurrency=0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c', + createdAt: 1628027029, + }, + { + id: 'belt-beltbnb', + logo: 'single-assets/BNB.png', + name: 'beltBNB', + token: 'beltBNB', + tokenDescription: 'Belt', + tokenAddress: '0xa8Bb71facdd46445644C277F9499Dd22f6F0A30C', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBeltBNB', + earnedTokenAddress: '0xC34Ae91312A3c3F9420691922040a5DEe1698E52', + earnContractAddress: '0xC34Ae91312A3c3F9420691922040a5DEe1698E52', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'belt-beltbnb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Belt', + assets: ['BNB'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'SingleStake', + withdrawalFee: '0.01%', + addLiquidityUrl: 'https://belt.fi/', + createdAt: 1619542263, + }, + { + id: 'belt-belteth', + logo: 'single-assets/ETH.svg', + name: 'beltETH', + token: 'beltETH', + tokenDescription: 'Belt', + tokenAddress: '0xAA20E8Cb61299df2357561C2AC2e1172bC68bc25', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBeltETH', + earnedTokenAddress: '0xf2064C230b285AA6Cf45c6267DA86a8E3505D0AA', + earnContractAddress: '0xf2064C230b285AA6Cf45c6267DA86a8E3505D0AA', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'belt-belteth', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Belt', + assets: ['ETH'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'SingleStake', + withdrawalFee: '0.01%', + addLiquidityUrl: 'https://belt.fi/', + createdAt: 1619606249, + }, + { + id: 'banana-bifi-bnb', + logo: 'degens/BIFI-BNB-banana.svg', + name: 'BIFI-BNB LP', + token: 'BIFI-BNB BLP', + tokenDescription: 'ApeSwap', + tokenAddress: '0xDDd3f9d5Bd347c55D18752c0C2075698EC657750', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooApeBIFI-BNB', + earnedTokenAddress: '0x6ebA4A31c46937B42E66f44a0A1165a08495a38F', + earnContractAddress: '0x6ebA4A31c46937B42E66f44a0A1165a08495a38F', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'banana-bifi-bnb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'ApeSwap', + assets: ['BIFI', 'BNB'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://dex.apeswap.finance/#/add/ETH/0xCa3F508B8e4Dd382eE878A314789373D80A5190A', + createdAt: 1618286775, + }, + { + id: 'wsg-wsg', + logo: 'single-assets/WSG.svg', + name: 'WSG', + token: 'WSG', + tokenDescription: 'WSG', + tokenAddress: '0xA58950F05FeA2277d2608748412bf9F802eA4901', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooWSG', + earnedTokenAddress: '0xf6581Be77F4933FDcf92C9E0D49e7f85e5360705', + earnContractAddress: '0xf6581Be77F4933FDcf92C9E0D49e7f85e5360705', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'WSG', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Other', + assets: ['WSG'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'SingleStake', + withdrawalFee: '0%', + buyTokenUrl: + 'https://pancakeswap.finance/swap?inputCurrency=0xA58950F05FeA2277d2608748412bf9F802eA4901&outputCurrency=0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c', + createdAt: 1635156908, + }, + { + id: 'wsg-wsg-bnb', + name: 'WSG-BNB LP', + token: 'WSG-BNB LP', + tokenDescription: 'PancakeSwap (WSG)', + tokenAddress: '0x37Ff7D4459ad96E0B01275E5efffe091f33c2CAD', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooWsgWSG-WBNB', + earnedTokenAddress: '0xc408b3f112deE85eeA36bCdf8A65c2C6DD86966a', + earnContractAddress: '0xc408b3f112deE85eeA36bCdf8A65c2C6DD86966a', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'wsg-wsg-bnb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Other', + assets: ['WSG', 'BNB'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://pancakeswap.finance/add/0xA58950F05FeA2277d2608748412bf9F802eA4901/0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c', + buyTokenUrl: + 'https://pancakeswap.finance/swap?inputCurrency=0xA58950F05FeA2277d2608748412bf9F802eA4901&outputCurrency=0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c', + createdAt: 1635156130, + }, + { + id: 'mdex-bsc-bifi-usdt', + logo: 'usdt-pairs/BIFI-USDT.png', + name: 'BIFI-USDT LP', + token: 'BIFI-USDT LP', + tokenDescription: 'Mdex', + tokenAddress: '0xDA4e9Ad1Db5546Ac5cF9BCDb6a0285b97b39f747', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooMdexBIFI-USDT', + earnedTokenAddress: '0x78dB17F440A223464B15046A25A273De510A14Ce', + earnContractAddress: '0x78dB17F440A223464B15046A25A273De510A14Ce', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'mdex-bsc-bifi-usdt', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Mdex', + assets: ['BIFI', 'USDT'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + buyTokenUrl: + 'https://bsc.mdex.com/#/swap?inputCurrency=0x55d398326f99059fF775485246999027B3197955&outputCurrency=0xCa3F508B8e4Dd382eE878A314789373D80A5190A', + addLiquidityUrl: + 'https://bsc.mdex.com/#/add/0xCa3F508B8e4Dd382eE878A314789373D80A5190A/0x55d398326f99059fF775485246999027B3197955', + createdAt: 1620907472, + }, + { + id: 'banana-tusd-busd-eol', + name: 'TUSD-BUSD LP', + token: 'TUSD-BUSD BLP', + tokenDescription: 'ApeSwap', + tokenAddress: '0xeDbA62A5d133Fa340e4ef1D58D72F6e773554318', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooApeTUSD-BUSD', + earnedTokenAddress: '0xB40a5A891CCadCA136cb8cdC9BAa72B3eF9C593a', + earnContractAddress: '0xB40a5A891CCadCA136cb8cdC9BAa72B3eF9C593a', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'banana-tusd-busd', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'ApeSwap', + assets: ['TUSD', 'BUSD'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://dex.apeswap.finance/#/add/0x14016E85a25aeb13065688cAFB43044C2ef86784/0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56', + buyTokenUrl: + 'https://dex.apeswap.finance/#/swap?inputCurrency=0x14016E85a25aeb13065688cAFB43044C2ef86784&outputCurrency=0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56', + createdAt: 1635073833, + }, + { + id: 'banana-fil-wbnb', + name: 'FIL-BNB LP', + token: 'FIL-BNB BLP', + tokenDescription: 'ApeSwap', + tokenAddress: '0xcAEC8648dbaC41b6504A8E408892931796D67d87', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooApeFIL-BNB', + earnedTokenAddress: '0xC9412193f775BadBCEfabE7F0350c83d4F66fEeb', + earnContractAddress: '0xC9412193f775BadBCEfabE7F0350c83d4F66fEeb', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'banana-fil-wbnb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'ApeSwap', + assets: ['FIL', 'BNB'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://dex.apeswap.finance/#/add/ETH/0x0D8Ce2A99Bb6e3B7Db580eD848240e4a0F9aE153', + buyTokenUrl: + 'https://dex.apeswap.finance/#/swap?outputCurrency=0x0D8Ce2A99Bb6e3B7Db580eD848240e4a0F9aE153', + createdAt: 1635072623, + }, + { + id: 'banana-wbnb-dep', + name: 'DEP-BNB LP', + token: 'DEP-BNB BLP', + tokenDescription: 'ApeSwap', + tokenAddress: '0x6518709dC42F70Dbf89934cA382F1d9dB26370e8', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooApeDEP-BNB', + earnedTokenAddress: '0x62BA2D4A572664036c35f0D76cEe81cC8b77199b', + earnContractAddress: '0x62BA2D4A572664036c35f0D76cEe81cC8b77199b', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'banana-wbnb-dep', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'ApeSwap', + assets: ['DEP', 'BNB'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://dex.apeswap.finance/#/add/ETH/0xcaF5191fc480F43e4DF80106c7695ECA56E48B18', + buyTokenUrl: + 'https://dex.apeswap.finance/#/swap?outputCurrency=0xcaF5191fc480F43e4DF80106c7695ECA56E48B18', + createdAt: 1634545736, + }, + { + id: 'wex-wusd-dep-eol', + name: 'DEP-WUSD WLP', + token: 'DEP-WUSD WLP', + tokenDescription: 'WaultFinance', + tokenAddress: '0xb03b009117F8cbBD5A9381b621724E7921F53d73', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooWaultDEP-WUSD', + earnedTokenAddress: '0xE1A80C5f37D25421511991a10986d9E82D000200', + earnContractAddress: '0xE1A80C5f37D25421511991a10986d9E82D000200', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'wex-wusd-dep', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Other', + assets: ['DEP', 'WUSD'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://swap.wault.finance/bsc/#/add/0x3fF997eAeA488A082fb7Efc8e6B9951990D0c3aB/0xcaF5191fc480F43e4DF80106c7695ECA56E48B18', + buyTokenUrl: + 'https://swap.wault.finance/bsc/#/swap?outputCurrency=0xcaF5191fc480F43e4DF80106c7695ECA56E48B18', + createdAt: 1634568642, + }, + { + id: 'cakev2-rpg-busd-eol', + name: 'RPG-BUSD LP', + token: 'RPG-BUSD LP', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x55cdb14855220b239Cf857A03849D96736b9103f', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeRPG-BUSD', + earnedTokenAddress: '0x330B1FD9cD7a8600f5527E7F662dE9994F20FB1b', + earnContractAddress: '0x330B1FD9cD7a8600f5527E7F662dE9994F20FB1b', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-rpg-busd', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'PancakeSwap', + assets: ['RPG', 'BUSD'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://pancakeswap.finance/add/0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56/0xc2098a8938119A52B1F7661893c0153A6CB116d5', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0xc2098a8938119A52B1F7661893c0153A6CB116d5', + createdAt: 1634513749, + }, + { + id: 'cakev2-mcb-wbnb-eol', + name: 'MCB-BNB LP', + token: 'MCB-BNB LP', + tokenDescription: 'PancakeSwap', + tokenAddress: '0xE4077A90f8600d9599440cC6d9057785f43a6Ac9', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeMCB-BNB', + earnedTokenAddress: '0x2b0E71D3e8c0714b748F8e8865bCa9928eaaB75A', + earnContractAddress: '0x2b0E71D3e8c0714b748F8e8865bCa9928eaaB75A', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-mcb-wbnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'PancakeSwap', + assets: ['MCB', 'BNB'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0x5fE80d2CD054645b9419657d3d10d26391780A7B', + buyTokenUrl: + 'https://pancakeswap.finance/swap?inputCurrency=0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56&outputCurrency=0x5fE80d2CD054645b9419657d3d10d26391780A7B', + createdAt: 1634513560, + }, + { + id: 'baby-baby', + logo: 'single-assets/BABY.svg', + name: 'BABY', + token: 'BABY', + tokenDescription: 'BabySwap', + tokenAddress: '0x53E562b9B7E5E94b81f10e96Ee70Ad06df3D2657', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBaby', + earnedTokenAddress: '0x87F9A89B51dA28CE8653A700d362CDa9b9bA7d88', + earnContractAddress: '0x87F9A89B51dA28CE8653A700d362CDa9b9bA7d88', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'BABY', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Other', + assets: ['BABY'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'SingleStake', + withdrawalFee: '0%', + buyTokenUrl: + 'https://exchange.babyswap.finance/#/swap?outputCurrency=0x53E562b9B7E5E94b81f10e96Ee70Ad06df3D2657', + createdAt: 1634030320, + }, + { + id: 'baby-baby-usdt', + name: 'BABY-USDT LP', + token: 'BABY-USDT LP', + tokenDescription: 'BabySwap', + tokenAddress: '0xE730C7B7470447AD4886c763247012DfD233bAfF', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBabyBABY-USDT', + earnedTokenAddress: '0xbFF84AC91c3d4123e5D5aAF32996c05A90c7CDAB', + earnContractAddress: '0xbFF84AC91c3d4123e5D5aAF32996c05A90c7CDAB', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'baby-baby-usdt', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Other', + assets: ['BABY', 'USDT'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://exchange.babyswap.finance/#/add/0x53E562b9B7E5E94b81f10e96Ee70Ad06df3D2657/0x55d398326f99059fF775485246999027B3197955', + buyTokenUrl: + 'https://exchange.babyswap.finance/#/swap?outputCurrency=0x53E562b9B7E5E94b81f10e96Ee70Ad06df3D2657', + createdAt: 1634029618, + }, + { + id: 'baby-baby-bnb', + name: 'BABY-BNB LP', + token: 'BABY-BNB LP', + tokenDescription: 'BabySwap', + tokenAddress: '0x36aE10A4d16311959b607eE98Bc4a8A653A33b1F', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBabyBABY-BNB', + earnedTokenAddress: '0x5968bCf6fA9d697bc7EbbD925BdaD0b487fB02bC', + earnContractAddress: '0x5968bCf6fA9d697bc7EbbD925BdaD0b487fB02bC', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'baby-baby-bnb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Other', + assets: ['BABY', 'BNB'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://exchange.babyswap.finance/#/add/BNB/0x53E562b9B7E5E94b81f10e96Ee70Ad06df3D2657', + buyTokenUrl: + 'https://exchange.babyswap.finance/#/swap?outputCurrency=0x53E562b9B7E5E94b81f10e96Ee70Ad06df3D2657', + createdAt: 1634029066, + }, + { + id: 'cakev2-wbnb-beta', + name: 'BETA-BNB LP', + token: 'BETA-BNB LP', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x88a02D94F437799f06f8c256ff07Aa397E6D0016', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeBETA-BNB', + earnedTokenAddress: '0x53BD8254BFe7D3615E6879D877522309DA7dD130', + earnContractAddress: '0x53BD8254BFe7D3615E6879D877522309DA7dD130', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-wbnb-beta', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'PancakeSwap', + assets: ['BETA', 'BNB'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0xBe1a001FE942f96Eea22bA08783140B9Dcc09D28', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0xBe1a001FE942f96Eea22bA08783140B9Dcc09D28', + createdAt: 1633872463, + }, + { + id: 'sing-sing-busd-eol', + name: 'SING-BUSD LP', + token: 'SING-BUSD LP', + tokenDescription: 'ApeSwap (Singular)', + tokenAddress: '0xdDdc245c62a0AA875893Ab53b52455aCdCd7f526', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSingSING-BUSD', + earnedTokenAddress: '0x70E397fE8C402F2993EB2AC54C522f5AE9F33eDb', + earnContractAddress: '0x70E397fE8C402F2993EB2AC54C522f5AE9F33eDb', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'sing-sing-busd', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['SING', 'BUSD'], + addLiquidityUrl: + 'https://app.apeswap.finance/add/0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56/0x23894C0ce2d79B79Ea33A4D02e67ae843Ef6e563', + buyTokenUrl: + 'https://app.apeswap.finance/swap?inputCurrency=0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56&outputCurrency=0x23894C0ce2d79B79Ea33A4D02e67ae843Ef6e563', + createdAt: 1633685032, + retiredReason: 'tvl', + }, + { + id: 'cafev2-brew-bnb-eol', + name: 'BREW-BNB LP', + token: 'BREW-BNB LP2', + tokenDescription: 'CafeSwap', + tokenAddress: '0x4D1f8F8E579096097809D439d6707f2F5870652A', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCafeSwapBREW-BNB', + earnedTokenAddress: '0x6D23D73B219B73560E871021D1E1AC382793727a', + earnContractAddress: '0x6D23D73B219B73560E871021D1E1AC382793727a', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cafev2-brew-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['BREW', 'BNB'], + addLiquidityUrl: + 'https://dex.cafeswap.finance/#/add/ETH/0x790Be81C3cA0e53974bE2688cDb954732C9862e1', + buyTokenUrl: + 'https://dex.cafeswap.finance/#/swap?outputCurrency=0x790Be81C3cA0e53974bE2688cDb954732C9862e1', + createdAt: 1633690726, + retiredReason: 'tvl', + }, + { + id: 'cafev2-brew-busd-eol', + name: 'BREW-BUSD LP', + token: 'BREW-BUSD LP2', + tokenDescription: 'CafeSwap', + tokenAddress: '0xfd2A5F04368a18D3bD4204d7dEb250b1710Bbc15', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCafeSwapBREW-BUSD', + earnedTokenAddress: '0xa7f299F51143e91a411805a4648434092788a111', + earnContractAddress: '0xa7f299F51143e91a411805a4648434092788a111', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cafev2-brew-busd', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['BREW', 'BUSD'], + addLiquidityUrl: + 'https://dex.cafeswap.finance/#/add/0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56/0x790Be81C3cA0e53974bE2688cDb954732C9862e1', + buyTokenUrl: + 'https://dex.cafeswap.finance/#/swap?outputCurrency=0x790Be81C3cA0e53974bE2688cDb954732C9862e1', + createdAt: 1633691257, + retiredReason: 'tvl', + }, + { + id: 'cakev2-nft-wbnb-eol', + name: 'NFT-BNB LP', + token: 'NFT-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x0ecc84c9629317a494f12Bc56aA2522475bF32e8', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2NFT-BNB', + earnedTokenAddress: '0xC7847f03d87C046630482c9b8e557B89ae0672Cc', + earnContractAddress: '0xC7847f03d87C046630482c9b8e557B89ae0672Cc', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-nft-wbnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['NFT', 'BNB'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0x1fC9004eC7E5722891f5f38baE7678efCB11d34D', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x1fC9004eC7E5722891f5f38baE7678efCB11d34D', + createdAt: 1632668528, + retiredReason: 'tvl', + }, + { + id: 'banana-ong-bnb-eol', + name: 'ONG-BNB ALP', + token: 'ONG-BNB ALP', + tokenDescription: 'ApeSwap', + tokenAddress: '0xe569fDBE1EA6B7e49c3fB3AD7Fe3758CA701e90f', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooApeONG-BNB', + earnedTokenAddress: '0xfea0827048B45818C53E3D0aCeC46A0041F095EA', + earnContractAddress: '0xfea0827048B45818C53E3D0aCeC46A0041F095EA', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'banana-ong-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'ApeSwap', + assets: ['ONG', 'BNB'], + addLiquidityUrl: + 'https://app.apeswap.finance/add/ETH/0x308bfaeAaC8BDab6e9Fc5Ead8EdCb5f95b0599d9', + buyTokenUrl: + 'https://app.apeswap.finance/swap?outputCurrency=0x308bfaeAaC8BDab6e9Fc5Ead8EdCb5f95b0599d9', + createdAt: 1632595236, + retiredReason: 'tvl', + }, + { + id: 'pacoca-pacoca-bnb', + name: 'PACOCA-BNB LP', + token: 'PACOCA-BNB LP', + tokenDescription: 'Pacoca (ApeSwap)', + tokenAddress: '0x0fee6E1E55fA772fAE71E6734a7F9E8622900D75', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPacocaPACOCA-BNB', + earnedTokenAddress: '0x8d64F5EcabbAf5e73a4c2dA9b9f15AA89cD13e87', + earnContractAddress: '0x8d64F5EcabbAf5e73a4c2dA9b9f15AA89cD13e87', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'pacoca-pacoca-bnb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Other', + assets: ['PACOCA', 'BNB'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.apeswap.finance/add/0x55671114d774ee99d653d6c12460c780a67f1d18/0xbb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c', + buyTokenUrl: 'https://pacoca.io/exchange', + createdAt: 1632480278, + }, + { + id: 'pacoca-pacoca', + logo: 'single-assets/PACOCA.svg', + name: 'PACOCA', + token: 'PACOCA', + tokenDescription: 'Pacoca', + tokenAddress: '0x55671114d774ee99D653D6C12460c780a67f1D18', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPacoca', + earnedTokenAddress: '0x21403739A1Dc0e3ceC70CBD5ceaE78fF25F102a4', + earnContractAddress: '0x21403739A1Dc0e3ceC70CBD5ceaE78fF25F102a4', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'PACOCA', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Other', + assets: ['PACOCA'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'SingleStake', + withdrawalFee: '0%', + buyTokenUrl: 'https://pacoca.io/exchange', + createdAt: 1632479930, + }, + { + id: 'annex-ann-busd-eol', + name: 'ANN-BUSD LP', + token: 'ANN-BUSD LP', + tokenDescription: 'Annex', + tokenAddress: '0xD4c4960a18A3eD79Ce1E9Ce6D2C50d2937d5f2f8', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooAnnexANN-BUSD', + earnedTokenAddress: '0x6D56c98Df063EF0CB7431AAf87BA6c2f2Fe24611', + earnContractAddress: '0x6D56c98Df063EF0CB7431AAf87BA6c2f2Fe24611', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'annex-ann-busd', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['ANN', 'BUSD'], + retireReason: 'rewards', + addLiquidityUrl: + 'https://app.annex.finance/trade/liquidity/add/0x98936Bde1CF1BFf1e7a8012Cee5e2583851f2067/0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56', + buyTokenUrl: + 'https://app.annex.finance/trade/swap?inputCurrency=0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56&outputCurrency=0x98936Bde1CF1BFf1e7a8012Cee5e2583851f2067&exactAmount=1000', + createdAt: 1632300410, + }, + { + id: 'annex-ann-eol', + logo: 'single-assets/ANN.png', + name: 'ANN', + token: 'ANN', + tokenDescription: 'Annex', + tokenAddress: '0x98936Bde1CF1BFf1e7a8012Cee5e2583851f2067', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooAnnexAnn', + earnedTokenAddress: '0xB3e80cf1e9A0478F917Ec81f6B223C495CA20a27', + earnContractAddress: '0xB3e80cf1e9A0478F917Ec81f6B223C495CA20a27', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'ANN', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['ANN'], + retireReason: 'rewards', + buyTokenUrl: + 'https://app.annex.finance/trade/swap?inputCurrency=0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56&outputCurrency=0x98936Bde1CF1BFf1e7a8012Cee5e2583851f2067&exactAmount=1000', + createdAt: 1632300632, + }, + { + id: 'belt-4belt', + logo: 'uncategorized/BELT-VENUSBLP.png', + name: 'BUSD/USDT/USDC/DAI', + token: '4BELT LP', + tokenDescription: 'Belt', + tokenAddress: '0x9cb73F20164e399958261c289Eb5F9846f4D1404', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBelt4Belt', + earnedTokenAddress: '0xc1fcf50ccaCd1583BD9d3b41657056878C94e592', + earnContractAddress: '0xc1fcf50ccaCd1583BD9d3b41657056878C94e592', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'belt-4belt', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Belt', + assets: ['USDT', 'BUSD', 'USDC', 'DAI', '4BELT'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + 'OVER_COLLAT_ALGO_STABLECOIN', + ], + stratType: 'StratMultiLP', + withdrawalFee: '0.01%', + addLiquidityUrl: 'https://belt.fi/', + createdAt: 1619502882, + }, + { + id: 'pearzap-pear-bnb-eol', + name: 'PEAR-BNB LP', + token: 'PEAR-BNB LP', + tokenDescription: 'ApeSwap (PearZap)', + tokenAddress: '0x36649058bCcF2B8855EEd1Ce44adb734028c6F8D', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPearZapPEAR-BNB', + earnedTokenAddress: '0xa2728d080650d3828e525881Dfd296481b273ab8', + earnContractAddress: '0xa2728d080650d3828e525881Dfd296481b273ab8', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'pearzap-pear-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['PEAR', 'BNB'], + retireReason: 'rewards', + addLiquidityUrl: + 'https://app.apeswap.finance/add/ETH/0xdf7C18ED59EA738070E665Ac3F5c258dcc2FBad8', + buyTokenUrl: + 'https://app.apeswap.finance/swap?outputCurrency=0xdf7C18ED59EA738070E665Ac3F5c258dcc2FBad8', + createdAt: 1631698093, + }, + { + id: 'pearzap-pear-busd-eol', + name: 'PEAR-BUSD LP', + token: 'PEAR-BUSD LP', + tokenDescription: 'ApeSwap (PearZap)', + tokenAddress: '0x67Ce6Cac27E8BE8B8cdb5088806aAB13A12a5353', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPearZapPEAR-BUSD', + earnedTokenAddress: '0xa94f3a0cEA66F7141DC4a2039E65205c68Db83ab', + earnContractAddress: '0xa94f3a0cEA66F7141DC4a2039E65205c68Db83ab', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'pearzap-pear-busd', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['PEAR', 'BUSD'], + retireReason: 'rewards', + addLiquidityUrl: + 'https://app.apeswap.finance/add/0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56/0xdf7C18ED59EA738070E665Ac3F5c258dcc2FBad8', + buyTokenUrl: + 'https://app.apeswap.finance/swap?outputCurrency=0xdf7C18ED59EA738070E665Ac3F5c258dcc2FBad8', + createdAt: 1631698681, + }, + { + id: 'czf-czf-bnb', + name: 'CZF-BNB LP', + token: 'CZF-BNB LP2', + tokenDescription: 'PancakeSwap (CZodiac)', + tokenAddress: '0xeF8e8CfADC0b634b6d0065080a69F139159a17dE', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCZFCZF-BNB', + earnedTokenAddress: '0x98CADFb805fAc92eF70e3Ed900c76a487cDb26a1', + earnContractAddress: '0x98CADFb805fAc92eF70e3Ed900c76a487cDb26a1', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'czf-czf-bnb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Other', + assets: ['CZF', 'BNB'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c/0x7c1608C004F20c3520f70b924E2BfeF092dA0043', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x7c1608C004F20c3520f70b924E2BfeF092dA0043', + createdAt: 1631694805, + }, + { + id: 'czf-czf-busd-eol', + name: 'CZF-BUSD LP', + token: 'CZF-BUSD LP2', + tokenDescription: 'PancakeSwap (CZodiac)', + tokenAddress: '0xAAC96d00C566571bafdfa3B8440Bdc3cDB223Ad0', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCZFCZF-BUSD', + earnedTokenAddress: '0x3c7f71a03B61EE15658f22f7fa8bd103811297f3', + earnContractAddress: '0x3c7f71a03B61EE15658f22f7fa8bd103811297f3', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'czf-czf-busd', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['CZF', 'BUSD'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56/0x7c1608C004F20c3520f70b924E2BfeF092dA0043', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x7c1608C004F20c3520f70b924E2BfeF092dA0043', + createdAt: 1631691818, + retiredReason: 'tvl', + }, + { + id: 'long-long-wbnb-eol', + name: 'LONG-BNB LP', + token: 'LONG-BNB LP2', + tokenDescription: 'PancakeSwap (Longdrink)', + tokenAddress: '0x5ab4dc6Ec350e546103F6891299b467293c36c3e', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooLongLONG-BNB', + earnedTokenAddress: '0xeF20Daca8d81652774c8b9830b7865CF782CefF5', + earnContractAddress: '0xeF20Daca8d81652774c8b9830b7865CF782CefF5', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'long-long-wbnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['LONG', 'BNB'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c/0x5317fA16f8603bE9C461DeF5D5A1Bf28DfE42d55', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x5317fA16f8603bE9C461DeF5D5A1Bf28DfE42d55', + createdAt: 1631531985, + retiredReason: 'tvl', + }, + { + id: 'cakev2-dvi-wbnb-eol', + name: 'DVI-BNB LP', + token: 'DVI-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x89EBF9cD99864f6E51bd7a578965922029cAB977', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2DVI-WBNB', + earnedTokenAddress: '0x9D193d68249131A94EA0EA6d88db4171ad2C42b7', + earnContractAddress: '0x9D193d68249131A94EA0EA6d88db4171ad2C42b7', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-dvi-wbnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['DVI', 'BNB'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/0x758FB037A375F17c7e195CC634D77dA4F554255B/0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c', + buyTokenUrl: + 'https://pancakeswap.finance/swap?inputCurrency=0x758FB037A375F17c7e195CC634D77dA4F554255B&outputCurrency=0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c', + createdAt: 1625611527, + }, + { + id: 'cakev2-mcrn-wbnb-eol', + name: 'MCRN-BNB LP', + token: 'MCRN-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0xe8D5d81dac092Ae61d097f84EFE230759BF2e522', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2MCRN-WBNB', + earnedTokenAddress: '0x3da80295D96dcA4bc24c865F4548D23da4a44AE2', + earnContractAddress: '0x3da80295D96dcA4bc24c865F4548D23da4a44AE2', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-mcrn-wbnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'PancakeSwap', + assets: ['MCRN', 'BNB'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/0xacb2d47827C9813AE26De80965845D80935afd0B/0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c', + buyTokenUrl: + 'https://pancakeswap.finance/swap?inputCurrency=0xacb2d47827C9813AE26De80965845D80935afd0B&outputCurrency=0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c', + createdAt: 1628027293, + }, + { + id: 'banana-pots-bnb', + name: 'POTS-BNB ALP', + token: 'POTS-BNB ALP', + tokenDescription: 'ApeSwap', + tokenAddress: '0xaa3FCBA2cf7c5f8c8f785A7180F5063144fE53c6', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooApePOTS-BNB', + earnedTokenAddress: '0xbFa24f7C2376c28407504Fb8512797dD8D316aBf', + earnContractAddress: '0xbFa24f7C2376c28407504Fb8512797dD8D316aBf', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'banana-pots-bnb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + platform: 'ApeSwap', + assets: ['POTS', 'BNB'], + addLiquidityUrl: + 'https://app.apeswap.finance/add/ETH/0x3Fcca8648651E5b974DD6d3e50F61567779772A8', + buyTokenUrl: + 'https://app.apeswap.finance/swap?outputCurrency=0x3Fcca8648651E5b974DD6d3e50F61567779772A8', + createdAt: 1628065858, + }, + { + id: 'cakev2-pots-busd-eol', + name: 'POTS-BUSD LP', + token: 'POTS-BUSD LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0xF90BAA331Cfd40F094476E752Bf272892170d399', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2POTS-BUSD', + earnedTokenAddress: '0x3106d9B3d5e04ff5D575212140FAb1Cf17C8933F', + earnContractAddress: '0x3106d9B3d5e04ff5D575212140FAb1Cf17C8933F', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-pots-busd', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'PancakeSwap', + assets: ['POTS', 'BUSD'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://pancakeswap.finance/add/0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56/0x3Fcca8648651E5b974DD6d3e50F61567779772A8', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x3Fcca8648651E5b974DD6d3e50F61567779772A8', + createdAt: 1628533257, + }, + { + id: 'cakev2-tlos-wbnb-eol', + name: 'TLOS-BNB LP', + token: 'TLOS-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x3eDb06e2d182d133864fe7C0f9B4C204bBf61D4E', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2TLOS-BNB', + earnedTokenAddress: '0x985a438C320ab799E87F660A214c6052673A077A', + earnContractAddress: '0x985a438C320ab799E87F660A214c6052673A077A', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-tlos-wbnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'PancakeSwap', + assets: ['TLOS', 'BNB'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0xb6C53431608E626AC81a9776ac3e999c5556717c', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0xb6C53431608E626AC81a9776ac3e999c5556717c', + createdAt: 1631196240, + }, + { + id: 'honeyfarm-moon-bnb-eol', + name: 'MOON-BNB LP', + token: 'MOON-BNB LP', + tokenDescription: 'PancakeSwap (HoneyFarm)', + tokenAddress: '0x643D3f1C1fA1A7D5D6BDE50Bd3FDD1Cdd8A85692', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooHoneyFarmMOON-BNB', + earnedTokenAddress: '0x6DA3C7518c86D4d6b1cD42E79990c08BCbAD509f', + earnContractAddress: '0x6DA3C7518c86D4d6b1cD42E79990c08BCbAD509f', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'honeyfarm-moon-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['MOON', 'BNB'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0xE8c93310af068aa50bd7bF0ebFa459Df2a02ceba', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0xE8c93310af068aa50bd7bF0ebFa459Df2a02ceba', + createdAt: 1631186662, + }, + { + id: 'honeyfarm-moon-busd-eol', + name: 'MOON-BUSD LP', + token: 'MOON-BUSD LP', + tokenDescription: 'PancakeSwap (HoneyFarm)', + tokenAddress: '0x1536d05Bebb05173a19c44aA1ec0a009544AaFC4', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooHoneyFarmMOON-BUSD', + earnedTokenAddress: '0xF8Ee4Bf5deEC42E31cb6bD1a9B2E63aDE0E633CC', + earnContractAddress: '0xF8Ee4Bf5deEC42E31cb6bD1a9B2E63aDE0E633CC', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'honeyfarm-moon-busd', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['MOON', 'BUSD'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/0xe9e7cea3dedca5984780bafc599bd69add087d56/0xE8c93310af068aa50bd7bF0ebFa459Df2a02ceba', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0xE8c93310af068aa50bd7bF0ebFa459Df2a02ceba', + createdAt: 1631187072, + }, + { + id: 'mdex-usdt-btcb', + name: 'USDT-BTCB LP', + token: 'USDT-BTCB LP', + tokenDescription: 'Mdex', + tokenAddress: '0xda28Eb7ABa389C1Ea226A420bCE04Cb565Aafb85', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooMdexUSDT-BTCB', + earnedTokenAddress: '0x397967AE34c9e91c11e3DCb72e566c598e929754', + earnContractAddress: '0x397967AE34c9e91c11e3DCb72e566c598e929754', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'mdex-usdt-btcb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Mdex', + assets: ['USDT', 'BTCB'], + addLiquidityUrl: + 'https://exchange.pancakeswap.finance/#/add/0x55d398326f99059fF775485246999027B3197955/0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c', + buyTokenUrl: + 'https://exchange.pancakeswap.finance/#/swap?inputCurrency=0x55d398326f99059fF775485246999027B3197955&outputCurrency=0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c', + createdAt: 1630682566, + }, + { + id: 'mdex-bsc-rabbit-busd-eol', + name: 'RABBIT-BUSD LP', + token: 'RABBIT-BUSD LP', + tokenDescription: 'Mdex', + tokenAddress: '0x0025D20D85788C2cAE2FEB9C298bdaFc93bF08Ce', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooMdexRABBIT-BUSD', + earnedTokenAddress: '0xF191Ff7Ce1BdBaA9149f63eF857b877Dc60f1a56', + earnContractAddress: '0xF191Ff7Ce1BdBaA9149f63eF857b877Dc60f1a56', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'mdex-rabbit-busd', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Mdex', + assets: ['RABBIT', 'BUSD'], + retireReason: 'tvl', + addLiquidityUrl: + 'https://exchange.pancakeswap.finance/#/add/0x95a1199EBA84ac5f19546519e287d43D2F0E1b41/0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56', + buyTokenUrl: + 'https://exchange.pancakeswap.finance/#/swap?inputCurrency=0x95a1199EBA84ac5f19546519e287d43D2F0E1b41&outputCurrency=0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56', + createdAt: 1630681248, + }, + { + id: 'cakev2-bscdefi-wbnb-eol', + name: 'BSCDEFI-BNB LP', + token: 'BSCDEFI-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x5B0A3b98C2f01741A11E57A9d0595B254E62F9F2', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2BSCDEFI-BNB', + earnedTokenAddress: '0x109272Cc6b89465AdEc21bFB98864b7640CE8A17', + earnContractAddress: '0x109272Cc6b89465AdEc21bFB98864b7640CE8A17', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-bscdefi-wbnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['BSCDEFI', 'BNB'], + retireReason: 'rewards', + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0x40E46dE174dfB776BB89E04dF1C47d8a66855EB3', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x40E46dE174dfB776BB89E04dF1C47d8a66855EB3', + createdAt: 1630671144, + }, + { + id: 'cakev2-bp-wbnb', + name: 'BP-BNB LP', + token: 'BP-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x2bF2dEB40639201C9A94c9e33b4852D9AEa5fd2D', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2BP-BNB', + earnedTokenAddress: '0x6709b27eDeD9c594C4490c98ba8efb3EEb0DE9f4', + earnContractAddress: '0x6709b27eDeD9c594C4490c98ba8efb3EEb0DE9f4', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-bp-wbnb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'PancakeSwap', + assets: ['BP', 'BNB'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0xACB8f52DC63BB752a51186D1c55868ADbFfEe9C1', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0xACB8f52DC63BB752a51186D1c55868ADbFfEe9C1', + createdAt: 1629636078, + }, + { + id: 'cakev2-qbt-wbnb-eol', + name: 'QBT-BNB LP', + token: 'QBT-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x67EFeF66A55c4562144B9AcfCFbc62F9E4269b3e', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2QBT-WBNB', + earnedTokenAddress: '0x6Ab5c71b96dAC5E832fa9B8386D983a53D46ae2F', + earnContractAddress: '0x6Ab5c71b96dAC5E832fa9B8386D983a53D46ae2F', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-qbt-wbnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['QBT', 'BNB'], + retireReason: 'rewards', + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0x17B7163cf1Dbd286E262ddc68b553D899B93f526', + buyTokenUrl: + 'https://pancakeswap.finance/swap?inputCurrency=BNB&outputCurrency=0x17B7163cf1Dbd286E262ddc68b553D899B93f526', + createdAt: 1630452711, + }, + { + id: 'auro-auro-busd-eol', + name: 'AURO-BUSD LP', + token: 'AURO-BUSD LP', + tokenDescription: 'Viralata', + tokenAddress: '0xBD28311f4AAF9bdCFB02554c8eD26e5dBe13884E', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooViralataAURO-BUSD', + earnedTokenAddress: '0x02503B56D6c0861170E49d2E24cD6409660275BE', + earnContractAddress: '0x02503B56D6c0861170E49d2E24cD6409660275BE', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'auro-auro-busd', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['AURO', 'BUSD'], + addLiquidityUrl: + 'https://app.viralata.finance/exchange/add/0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56/0x8d9A79314c4e09A7c53C124195cAeB8B89F4879D', + buyTokenUrl: + 'https://app.viralata.finance/exchange/swap?inputCurrency=0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56&outputCurrency=0x8d9A79314c4e09A7c53C124195cAeB8B89F4879D', + createdAt: 1630068753, + retiredReason: 'tvl', + }, + { + id: 'auro-auro-bnb-eol', + name: 'AURO-BNB LP', + token: 'AURO-BNB LP', + tokenDescription: 'Viralata', + tokenAddress: '0x202be643545e361b58bb8A2D8413cea0403C9eFa', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooViralataAURO-BNB', + earnedTokenAddress: '0x7cBab71cB057b2167976546b6874ce0f0d09F7FA', + earnContractAddress: '0x7cBab71cB057b2167976546b6874ce0f0d09F7FA', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'auro-auro-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['AURO', 'BNB'], + addLiquidityUrl: + 'https://app.viralata.finance/exchange/add/ETH/0x8d9A79314c4e09A7c53C124195cAeB8B89F4879D', + buyTokenUrl: + 'https://app.viralata.finance/exchange/swap?inputCurrency=0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56&outputCurrency=0x8d9A79314c4e09A7c53C124195cAeB8B89F4879D', + createdAt: 1630069109, + retiredReason: 'tvl', + }, + { + id: 'elk-elk-bnb-eol', + name: 'ELK-BNB ELP', + token: 'ELK-BNB ELP', + tokenDescription: 'ElkFinance', + tokenAddress: '0x6aDB3c5a9673ffFe6502e3bdEC465AdC91Ab3C01', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooElkELK-BNB', + earnedTokenAddress: '0x69B2f487B2eDD9E272211f7CD8f57C1cddE0764E', + earnContractAddress: '0x69B2f487B2eDD9E272211f7CD8f57C1cddE0764E', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'elk-elk-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['ELK', 'BNB'], + retireReason: 'rewards', + addLiquidityUrl: 'https://app.elk.finance/#/add/BNB/0xE1C110E1B1b4A1deD0cAf3E42BfBdbB7b5d7cE1C', + buyTokenUrl: + 'https://app.elk.finance/#/swap?outputCurrency=0xE1C110E1B1b4A1deD0cAf3E42BfBdbB7b5d7cE1C', + createdAt: 1630229724, + }, + { + id: 'elk-elk-dai-eol', + name: 'ELK-DAI ELP', + token: 'ELK-DAI ELP', + tokenDescription: 'ElkFinance', + tokenAddress: '0xFDB340B7902B5DC6A0F3434246767BFfA841b9c1', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooElkELK-DAI', + earnedTokenAddress: '0x41a6CdA789316B2Fa5D824EF27E4223872E4cB34', + earnContractAddress: '0x41a6CdA789316B2Fa5D824EF27E4223872E4cB34', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'elk-elk-dai', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['ELK', 'DAI'], + retireReason: 'rewards', + addLiquidityUrl: + 'https://app.elk.finance/#/add/0x1AF3F329e8BE154074D8769D1FFa4eE058B1DBc3/0xE1C110E1B1b4A1deD0cAf3E42BfBdbB7b5d7cE1C', + buyTokenUrl: + 'https://app.elk.finance/#/swap?outputCurrency=0xE1C110E1B1b4A1deD0cAf3E42BfBdbB7b5d7cE1C', + createdAt: 1630241116, + }, + { + id: 'wex-wusd-wex-eol', + name: 'WUSD-WEX WLP', + token: 'WUSD-WEX WLP', + tokenDescription: 'WaultFinance', + tokenAddress: '0xE5821F993A6578033c0bA38bc2B0F7bCF74F5Dc3', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooWaultWUSD-WEX', + earnedTokenAddress: '0xa5Ba15875afA08e2C86F67AE2958B560A50a3823', + earnContractAddress: '0xa5Ba15875afA08e2C86F67AE2958B560A50a3823', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'wex-wusd-wex', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Other', + assets: ['WUSD', 'WEX'], + addLiquidityUrl: + 'https://swap.wault.finance/bsc/#/add/0x3fF997eAeA488A082fb7Efc8e6B9951990D0c3aB/0xa9c41A46a6B3531d28d5c32F6633dd2fF05dFB90', + buyTokenUrl: + 'https://swap.wault.finance/bsc/#/swap?inputCurrency=0x3fF997eAeA488A082fb7Efc8e6B9951990D0c3aB&outputCurrency=0xa9c41A46a6B3531d28d5c32F6633dd2fF05dFB90', + createdAt: 1630087549, + }, + { + id: 'cakev2-naos-wbnb-eol', + name: 'NAOS-BNB LP', + token: 'NAOS-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0xCAA662aD41a662b81be2AEa5D59EC0697628665F', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2NAOS-BNB', + earnedTokenAddress: '0x1D13dF9D7012914f45B8BAD8A2a9b1E9886B2173', + earnContractAddress: '0x1D13dF9D7012914f45B8BAD8A2a9b1E9886B2173', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-naos-wbnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['NAOS', 'BNB'], + retireReason: 'rewards', + addLiquidityUrl: + 'https://pancakeswap.finance/add/0x758d08864fB6cCE3062667225ca10b8F00496cc2/BNB', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x758d08864fB6cCE3062667225ca10b8F00496cc2', + createdAt: 1630063783, + }, + { + id: 'cakev2-pha-busd-eol', + name: 'PHA-BUSD LP', + token: 'PHA-BUSD LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x4ddd56e2f34338839BB5953515833950eA680aFb', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2PHA-BUSD', + earnedTokenAddress: '0xb911A102D2db3216c800456930EA4B19beD78C6C', + earnContractAddress: '0xb911A102D2db3216c800456930EA4B19beD78C6C', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-pha-busd', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['PHA', 'BUSD'], + retireReason: 'rewards', + addLiquidityUrl: + 'https://pancakeswap.finance/add/0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56/0x0112e557d400474717056C4e6D40eDD846F38351', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x0112e557d400474717056C4e6D40eDD846F38351', + createdAt: 1630064017, + }, + { + id: 'omnifarm-usdo-busd-ot-eol', + name: 'BUSD-USDO OCP LP', + token: 'BUSD-USDO OCP LP', + tokenDescription: 'Omnifarm (Omnitrade)', + tokenAddress: '0x1597b1a1E4F387724FbF90D3F7Ff8c883f8e8dE1', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooOmnifarmOmnitradeBUSD-USDO', + earnedTokenAddress: '0x73f9F03A7f639a1AC874445153c09f16cED9316b', + earnContractAddress: '0x73f9F03A7f639a1AC874445153c09f16cED9316b', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'omnifarm-usdo-busd-ot', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Other', + assets: ['USDO', 'BUSD'], + addLiquidityUrl: 'https://omnitrade.ocp.finance/#/pools', + buyTokenUrl: 'https://omnitrade.ocp.finance/#/', + createdAt: 1630278952, + }, + { + id: 'omnifarm-usdo-busd-eol', + name: 'USDO-BUSD LP', + token: 'USDO-BUSD LP2', + tokenDescription: 'Omnifarm (PancakeSwap)', + tokenAddress: '0x2220EcdD9ff26DfD2605D2b489E55B2056159853', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooOmnifarmUSDO-BUSD', + earnedTokenAddress: '0x76adF521dBFA9822937eCB1C15ed60f95B519FF8', + earnContractAddress: '0x76adF521dBFA9822937eCB1C15ed60f95B519FF8', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'omnifarm-usdo-busd', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Other', + assets: ['USDO', 'BUSD'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56/0x5801D0e1C7D977D78E4890880B8E579eb4943276', + buyTokenUrl: + 'https://pancakeswap.finance/swap?inputCurrency=0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56&outputCurrency=0x5801D0e1C7D977D78E4890880B8E579eb4943276', + createdAt: 1629968065, + }, + { + id: 'omnifarm-usdo-wbnb-eol', + name: 'USDO-BNB LP', + token: 'USDO-BNB LP2', + tokenDescription: 'Omnifarm (PancakeSwap)', + tokenAddress: '0x8518D5906A6C72b0157d55caFf239dc43c19AbF6', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooOmnifarmUSDO-WBNB', + earnedTokenAddress: '0x95b7Ac779Dc476fa4Fe62B8c97F7f71913DFfB76', + earnContractAddress: '0x95b7Ac779Dc476fa4Fe62B8c97F7f71913DFfB76', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'omnifarm-usdo-wbnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Other', + assets: ['USDO', 'BNB'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0x5801D0e1C7D977D78E4890880B8E579eb4943276', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x5801D0e1C7D977D78E4890880B8E579eb4943276', + createdAt: 1629960094, + }, + { + id: 'omnifarm-usdo-bdp-eol', + name: 'USDO-BDP LP', + token: 'USDO-BDP LP2', + tokenDescription: 'Omnifarm (PancakeSwap)', + tokenAddress: '0xc5Ca9F1bb9a88Bac08368e7085984dB113daEc49', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooOmnifarmUSDO-BDP', + earnedTokenAddress: '0x4D2a4dE1Add1931633188E1351d7cBfc2b8C377C', + earnContractAddress: '0x4D2a4dE1Add1931633188E1351d7cBfc2b8C377C', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'omnifarm-usdo-bdp', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Other', + assets: ['BDP', 'USDO'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/0x685b63CFE0179b3EFb70A01dCb1D648549AA192d/0x5801D0e1C7D977D78E4890880B8E579eb4943276', + buyTokenUrl: + 'https://pancakeswap.finance/swap?inputCurrency=0x685b63CFE0179b3EFb70A01dCb1D648549AA192d&outputCurrency=0x5801D0e1C7D977D78E4890880B8E579eb4943276', + createdAt: 1629968965, + }, + { + id: 'omnifarm-usdo-popen-eol', + name: 'USDO-pOPEN LP', + token: 'USDO-pOPEN LP2', + tokenDescription: 'Omnifarm (PancakeSwap)', + tokenAddress: '0x07558dD9c7d478C67163760b5F80D19E6f5A1D5F', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooOmnifarmUSDO-pOPEN', + earnedTokenAddress: '0xF09EB81f36E3e9De1339300d692f272Cc889A152', + earnContractAddress: '0xF09EB81f36E3e9De1339300d692f272Cc889A152', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'omnifarm-usdo-popen', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['pOPEN', 'USDO'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/0xaBaE871B7E3b67aEeC6B46AE9FE1A91660AadAC5/0x5801D0e1C7D977D78E4890880B8E579eb4943276', + buyTokenUrl: + 'https://pancakeswap.finance/swap?inputCurrency=0xaBaE871B7E3b67aEeC6B46AE9FE1A91660AadAC5&outputCurrency=0x5801D0e1C7D977D78E4890880B8E579eb4943276', + createdAt: 1629971041, + retiredReason: 'tvl', + }, + { + id: 'omnifarm-usdo-anymtlx-eol', + name: 'USDO-anyMTLX LP', + token: 'USDO-anyMTLX LP2', + tokenDescription: 'Omnifarm (PancakeSwap)', + tokenAddress: '0xa4c50baC074769449e46C889920A5aFd8E6ED9e0', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooOmnifarmUSDO-anyMTLX', + earnedTokenAddress: '0xDeD7c3dED606b3a97B206C2a2d9f724Eb43Aa738', + earnContractAddress: '0xDeD7c3dED606b3a97B206C2a2d9f724Eb43Aa738', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'omnifarm-usdo-anymtlx', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['anyMTLX', 'USDO'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/0x5921DEE8556c4593EeFCFad3CA5e2f618606483b/0x5801D0e1C7D977D78E4890880B8E579eb4943276', + buyTokenUrl: + 'https://pancakeswap.finance/swap?inputCurrency=0x5921DEE8556c4593EeFCFad3CA5e2f618606483b&outputCurrency=0x5801D0e1C7D977D78E4890880B8E579eb4943276', + createdAt: 1629973021, + retiredReason: 'tvl', + }, + { + id: 'omnifarm-fet-usdo-eol', + name: 'USDO-FET LP', + token: 'USDO-FET LP2', + tokenDescription: 'Omnifarm (PancakeSwap)', + tokenAddress: '0x184d310749D4E86635b146F6F6E75900A22AF733', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooOmnifarmUSDO-FET', + earnedTokenAddress: '0x88194Ca4c2372892C8E6eEaC7B33F713EECCd604', + earnContractAddress: '0x88194Ca4c2372892C8E6eEaC7B33F713EECCd604', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'omnifarm-fet-usdo', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Other', + assets: ['FET', 'USDO'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/0x031b41e504677879370e9dbcf937283a8691fa7f/0x5801d0e1c7d977d78e4890880b8e579eb4943276', + buyTokenUrl: + 'https://pancakeswap.finance/swap?inputCurrency=0x031b41e504677879370e9DBcF937283A8691Fa7f&outputCurrency=0x5801D0e1C7D977D78E4890880B8E579eb4943276', + createdAt: 1629974875, + }, + { + id: 'omnifarm-ocp-usdo-eol', + name: 'OCP-USDO LP', + token: 'OCP-USDO LP2', + tokenDescription: 'Omnifarm (PancakeSwap)', + tokenAddress: '0xe595fF226bF6e30479ef8D7fa3DA4086194DB42f', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooOmnifarmOCP-USDO', + earnedTokenAddress: '0xCB214C265e8Bc37B6d7df1601cB7dA35EC8F89c6', + earnContractAddress: '0xCB214C265e8Bc37B6d7df1601cB7dA35EC8F89c6', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'omnifarm-ocp-usdo', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['OCP', 'USDO'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/0x3C70260eEe0a2bFc4b375feB810325801f289fBd/0x5801d0e1c7d977d78e4890880b8e579eb4943276', + buyTokenUrl: + 'https://pancakeswap.finance/swap?inputCurrency=0x3C70260eEe0a2bFc4b375feB810325801f289fBd&outputCurrency=0x5801D0e1C7D977D78E4890880B8E579eb4943276', + createdAt: 1629976449, + retiredReason: 'tvl', + }, + { + id: 'tosdisbsc-dis-wbnb-eol', + name: 'DIS-BNB LP', + token: 'DIS-BNB LP2', + tokenDescription: 'TosDis (PancakeSwap)', + tokenAddress: '0x67F18f3784fEd30652eB724CB1C174A72FEB450B', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooTosDisDIS-BNB', + earnedTokenAddress: '0x7FdC26B1381A53dBB6B65984857c55746f60d156', + earnContractAddress: '0x7FdC26B1381A53dBB6B65984857c55746f60d156', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'tosdisbsc-dis-wbnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Other', + assets: ['DIS', 'BNB'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0x57efFdE2759b68d86C544e88F7977e3314144859', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x57efFdE2759b68d86C544e88F7977e3314144859', + createdAt: 1629835777, + }, + { + id: 'banana-ont-bnb', + logo: 'bnb-pairs/ONT-BNB.svg', + name: 'ONT-BNB LP', + token: 'ONT-BNB LP', + tokenDescription: 'ApeSwap', + tokenAddress: '0x924D3f2F94618e8Ee837d4C2b8d703F0de12a57e', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooApeONT-BNB', + earnedTokenAddress: '0xf8ED3D2E36eA4eA13eA4cCcaD5c72ac55B64e651', + earnContractAddress: '0xf8ED3D2E36eA4eA13eA4cCcaD5c72ac55B64e651', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'banana-ont-bnb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'ApeSwap', + assets: ['ONT', 'BNB'], + addLiquidityUrl: + 'https://dex.apeswap.finance/#/add/0xbb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c/0xfd7b3a77848f1c2d67e05e54d78d174a0c850335', + buyTokenUrl: + 'https://dex.apeswap.finance/#/swap?inputCurrency=0xbb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c&outputCurrency=0xfd7b3a77848f1c2d67e05e54d78d174a0c850335', + createdAt: 1619632017, + }, + { + id: 'wex-bnb-ont-eol', + name: 'ONT-BNB WLP', + token: 'ONT-BNB WLP', + tokenDescription: 'WaultFinance', + tokenAddress: '0x37d7317149a4B5Cf5B6b81B04A23DeD16f4e4d1e', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooWaultBNB-ONT', + earnedTokenAddress: '0x9b188c2C76a01bb290A17FadB65BD400Dc3F53F0', + earnContractAddress: '0x9b188c2C76a01bb290A17FadB65BD400Dc3F53F0', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'wex-bnb-ont', + oraclePrice: 0, + depositsPaused: true, + retireReason: 'rewards', + status: 'eol', + platform: 'Other', + assets: ['ONT', 'BNB'], + addLiquidityUrl: + 'https://swap.wault.finance/bsc/#/add/BNB/0xFd7B3A77848f1C2D67E05E54d78d174a0C850335', + buyTokenUrl: + 'https://swap.wault.finance/bsc/#/swap?outputCurrency=0xFd7B3A77848f1C2D67E05E54d78d174a0C850335', + createdAt: 1627400931, + }, + { + id: 'cake-cakev2-eol', + logo: 'single-assets/CAKE.svg', + name: 'CAKE', + token: 'CAKE', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82', + tokenDecimals: 18, + earnedToken: 'mooCakeV2', + earnedTokenAddress: '0x97e5d50Fe0632A95b9cf1853E744E02f7D816677', + earnContractAddress: '0x97e5d50Fe0632A95b9cf1853E744E02f7D816677', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'Cake', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'PancakeSwap', + assets: ['CAKE'], + withdrawalFee: '0%', + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82', + createdAt: 1623414597, + }, + { + id: 'yel-yel', + logo: 'single-assets/YEL.svg', + name: 'YEL', + token: 'YEL', + tokenDescription: 'YEL', + tokenAddress: '0xD3b71117E6C1558c1553305b44988cd944e97300', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooYel', + earnedTokenAddress: '0xC5C11A531e60378c605383dd54ad1e4C598aD93A', + earnContractAddress: '0xC5C11A531e60378c605383dd54ad1e4C598aD93A', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'YEL', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Other', + assets: ['YEL'], + withdrawalFee: '0%', + buyTokenUrl: + 'https://app.apeswap.finance/swap?outputCurrency=0xD3b71117E6C1558c1553305b44988cd944e97300', + createdAt: 1629797899, + }, + { + id: 'yel-yel-wbnb', + name: 'YEL-BNB ALP', + token: 'YEL-BNB ALP', + tokenDescription: 'YEL (ApeSwap)', + tokenAddress: '0xa5AC78A856345AB1FC8a4550208F42ca34B54e56', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooYelYEL-BNB', + earnedTokenAddress: '0xE2f9EC1898F8C759cD1FeeC9c035CAD8071a5d4B', + earnContractAddress: '0xE2f9EC1898F8C759cD1FeeC9c035CAD8071a5d4B', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'yel-yel-wbnb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Other', + assets: ['YEL', 'BNB'], + addLiquidityUrl: + 'https://app.apeswap.finance/add/ETH/0xD3b71117E6C1558c1553305b44988cd944e97300', + buyTokenUrl: + 'https://app.apeswap.finance/swap?outputCurrency=0xD3b71117E6C1558c1553305b44988cd944e97300', + createdAt: 1629802727, + }, + { + id: 'banana-bhc-bnb-eol', + name: 'BHC-BNB LP', + token: 'BHC-BNB ALP', + tokenDescription: 'ApeSwap', + tokenAddress: '0x59B2A38F67e312D312121614d1Daa7ad8c5773fC', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooApeBHC-BNB', + earnedTokenAddress: '0x6023C372e5feeD42664986094914f08bBBa49f36', + earnContractAddress: '0x6023C372e5feeD42664986094914f08bBBa49f36', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'banana-bhc-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'ApeSwap', + assets: ['BHC', 'BNB'], + addLiquidityUrl: + 'https://dex.apeswap.finance/#/add/ETH/0x6fd7c98458a943f469E1Cf4eA85B173f5Cd342F4', + buyTokenUrl: + 'https://dex.apeswap.finance/#/swap?outputCurrency=0x6fd7c98458a943f469E1Cf4eA85B173f5Cd342F4', + createdAt: 1629458274, + }, + { + id: 'banana-caps-bnb-eol', + name: 'CAPS-BNB LP', + token: 'CAPS-BNB ALP', + tokenDescription: 'ApeSwap', + tokenAddress: '0x6Dfbf17ac70CE03388B1f88cb3C97AD79120e7b1', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooApeCAPS-BNB', + earnedTokenAddress: '0x9FF87464352156C7C9D700A40307121479A26754', + earnContractAddress: '0x9FF87464352156C7C9D700A40307121479A26754', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'banana-caps-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'ApeSwap', + assets: ['CAPS', 'BNB'], + addLiquidityUrl: + 'https://dex.apeswap.finance/#/add/ETH/0xFfBa7529AC181c2Ee1844548e6D7061c9A597dF4', + buyTokenUrl: + 'https://dex.apeswap.finance/#/swap?outputCurrency=0xFfBa7529AC181c2Ee1844548e6D7061c9A597dF4', + createdAt: 1629370054, + }, + { + id: 'honeyfarm-bear-bnb-eol', + name: 'BEAR-BNB LP', + token: 'BEAR-BNB LP', + tokenDescription: 'PancakeSwap (HoneyFarm)', + tokenAddress: '0xC5E96F03414DA6E7eA6D2F051D23964C0B80739F', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooHoneyFarmBEAR-BNB', + earnedTokenAddress: '0x49787E72B7dC4C0f5D705A3A86Fc7fc5DBC7e959', + earnContractAddress: '0x49787E72B7dC4C0f5D705A3A86Fc7fc5DBC7e959', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'honeyfarm-bear-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['BEAR', 'BNB'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0xc3EAE9b061Aa0e1B9BD3436080Dc57D2d63FEdc1', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0xc3EAE9b061Aa0e1B9BD3436080Dc57D2d63FEdc1', + createdAt: 1629121148, + }, + { + id: 'honeyfarm-bear-busd-eol', + name: 'BEAR-BUSD LP', + token: 'BEAR-BUSD LP', + tokenDescription: 'PancakeSwap (HoneyFarm)', + tokenAddress: '0x9DD10B5d23A05bBAC9E9Ae0C7ca9890791eABb25', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooHoneyFarmBEAR-BUSD', + earnedTokenAddress: '0x04C549551F536ceB015e79F2B242024800eeC206', + earnContractAddress: '0x04C549551F536ceB015e79F2B242024800eeC206', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'honeyfarm-bear-busd', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['BEAR', 'BUSD'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/0xe9e7cea3dedca5984780bafc599bd69add087d56/0xc3EAE9b061Aa0e1B9BD3436080Dc57D2d63FEdc1', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0xc3EAE9b061Aa0e1B9BD3436080Dc57D2d63FEdc1', + createdAt: 1629120594, + }, + { + id: 'honeyfarm-honey-bnb-eol2', + name: 'HONEY-BNB LP', + token: 'HONEY-BNB LP', + tokenDescription: 'PancakeSwap (HoneyFarm)', + tokenAddress: '0x27418bf2E38E613560D2281dB6590f3f6D446259', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooHoneyFarmHONEY-BNB', + earnedTokenAddress: '0xA78B4895a1a5d8Dd960C436fe3798f6242C585EF', + earnContractAddress: '0xA78B4895a1a5d8Dd960C436fe3798f6242C585EF', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'honeyfarm-honey-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['HONEY', 'BNB'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0xFa363022816aBf82f18a9C2809dCd2BB393F6AC5', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0xFa363022816aBf82f18a9C2809dCd2BB393F6AC5', + createdAt: 1629120042, + }, + { + id: 'honeyfarm-honey-busd-eol2', + name: 'HONEY-BUSD LP', + token: 'HONEY-BUSD LP', + tokenDescription: 'PancakeSwap (HoneyFarm)', + tokenAddress: '0x2961aa26a1Cb3068E580099045cc79a5b7B9634c', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooHoneyFarmHONEY-BUSD', + earnedTokenAddress: '0x1F40e7Cb04Ec64Ef82568E49Db60858188641Bb1', + earnContractAddress: '0x1F40e7Cb04Ec64Ef82568E49Db60858188641Bb1', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'honeyfarm-honey-busd', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['HONEY', 'BUSD'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/0xe9e7cea3dedca5984780bafc599bd69add087d56/0xFa363022816aBf82f18a9C2809dCd2BB393F6AC5', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0xFa363022816aBf82f18a9C2809dCd2BB393F6AC5', + createdAt: 1629119706, + }, + { + id: 'banana-hotcross-busd-eol', + name: 'HOTCROSS-BUSD LP', + token: 'HOTCROSS-BUSD LP', + tokenDescription: 'ApeSwap', + tokenAddress: '0x3B9Aa711D1D90A4f8639f66C227881729a3317F2', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBananaHOTCROSS-BUSD', + earnedTokenAddress: '0xF3a599fe4E0f7ce7f5dDA19B1b54FDf82cdA7520', + earnContractAddress: '0xF3a599fe4E0f7ce7f5dDA19B1b54FDf82cdA7520', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'banana-hotcross-busd', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'tvl', + platform: 'ApeSwap', + assets: ['HOTCROSS', 'BUSD'], + addLiquidityUrl: + 'https://app.apeswap.finance/add/0x4FA7163E153419E0E1064e418dd7A99314Ed27b6/0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56', + buyTokenUrl: + 'https://dex.apeswap.finance/#/swap?inputCurrency=0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56c&outputCurrency=0x4FA7163E153419E0E1064e418dd7A99314Ed27b6', + createdAt: 1629125037, + }, + { + id: 'banana-eth-bnb', + name: 'ETH-BNB LP', + token: 'ETH-BNB ALP', + tokenDescription: 'ApeSwap', + tokenAddress: '0xA0C3Ef24414ED9C9B456740128d8E63D016A9e11', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooApeETH-BNB', + earnedTokenAddress: '0xc259D613510A70A92DcDd43F8ecED2F2143758cE', + earnContractAddress: '0xc259D613510A70A92DcDd43F8ecED2F2143758cE', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'banana-eth-bnb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'ApeSwap', + assets: ['ETH', 'BNB'], + addLiquidityUrl: + 'https://dex.apeswap.finance/#/add/ETH/0x2170Ed0880ac9A755fd29B2688956BD959F933F8', + buyTokenUrl: + 'https://dex.apeswap.finance/#/swap?outputCurrency=0x2170Ed0880ac9A755fd29B2688956BD959F933F8', + createdAt: 1629037614, + }, + { + id: 'banana-busd-bnb', + name: 'BUSD-BNB LP', + token: 'BUSD-BNB ALP', + tokenDescription: 'ApeSwap', + tokenAddress: '0x51e6D27FA57373d8d4C256231241053a70Cb1d93', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooApeBUSD-BNB', + earnedTokenAddress: '0x6Dfc38DB4c92A1CBd9e4196F6c7741178B0fC2cd', + earnContractAddress: '0x6Dfc38DB4c92A1CBd9e4196F6c7741178B0fC2cd', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'banana-busd-bnb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'ApeSwap', + assets: ['BUSD', 'BNB'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://dex.apeswap.finance/#/add/ETH/0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56', + buyTokenUrl: + 'https://dex.apeswap.finance/#/swap?outputCurrency=0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56', + createdAt: 1629037860, + }, + { + id: 'banana-sxp-bnb', + name: 'SXP-BNB LP', + token: 'SXP-BNB ALP', + tokenDescription: 'ApeSwap', + tokenAddress: '0xF726b3e81FA7166B9C2cFd7eB7fe8CcBcb6B1355', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooApeSXP-BNB', + earnedTokenAddress: '0xd7738105fd1990DFcaD848EF69eF88700a88507C', + earnContractAddress: '0xd7738105fd1990DFcaD848EF69eF88700a88507C', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'banana-sxp-bnb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'ApeSwap', + assets: ['SXP', 'BNB'], + addLiquidityUrl: + 'https://dex.apeswap.finance/#/add/ETH/0x47BEAd2563dCBf3bF2c9407fEa4dC236fAbA485A', + buyTokenUrl: + 'https://dex.apeswap.finance/#/swap?outputCurrency=0x47BEAd2563dCBf3bF2c9407fEa4dC236fAbA485A', + createdAt: 1629038022, + }, + { + id: 'banana-bake-bnb-eol', + name: 'BAKE-BNB LP', + token: 'BAKE-BNB ALP', + tokenDescription: 'ApeSwap', + tokenAddress: '0xc1C7a1D33B34019F82808F64bA07e77512a13d1A', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooApeBAKE-BNB', + earnedTokenAddress: '0x4cE3d66dc02f72bFBF1785709ede69cBc1b6E86F', + earnContractAddress: '0x4cE3d66dc02f72bFBF1785709ede69cBc1b6E86F', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'banana-bake-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'ApeSwap', + assets: ['BAKE', 'BNB'], + addLiquidityUrl: + 'https://dex.apeswap.finance/#/add/ETH/0xE02dF9e3e622DeBdD69fb838bB799E3F168902c5', + buyTokenUrl: + 'https://dex.apeswap.finance/#/swap?outputCurrency=0xE02dF9e3e622DeBdD69fb838bB799E3F168902c5', + createdAt: 1629038163, + }, + { + id: 'wex-wusd-busd-eol', + name: 'WUSD-BUSD WLP', + token: 'WUSD-BUSD WLP', + tokenDescription: 'WaultFinance', + tokenAddress: '0x6102D8A7C963F78D46a35a6218B0DB4845d1612F', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooWaultWUSD-BUSD', + earnedTokenAddress: '0x3D1BF2D911a0068B5733E84228AA6eB9b908671f', + earnContractAddress: '0x3D1BF2D911a0068B5733E84228AA6eB9b908671f', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'wex-wusd-busd', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Other', + assets: ['WUSD', 'BUSD'], + addLiquidityUrl: + 'https://swap.wault.finance/bsc/#/add/0xe9e7cea3dedca5984780bafc599bd69add087d56/0x3fF997eAeA488A082fb7Efc8e6B9951990D0c3aB', + buyTokenUrl: + 'https://swap.wault.finance/bsc/#/swap?inputCurrency=0xe9e7cea3dedca5984780bafc599bd69add087d56&outputCurrency=0x3fF997eAeA488A082fb7Efc8e6B9951990D0c3aB', + createdAt: 1628010235, + }, + { + id: 'banana-cake-bnb', + name: 'CAKE-BNB LP', + token: 'CAKE-BNB ALP', + tokenDescription: 'ApeSwap', + tokenAddress: '0x60593Abea55e9Ea9d31c1b6473191cD2475a720D', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooApeCAKE-BNB', + earnedTokenAddress: '0x2337AEc28Bd34639277E321C67571623940A5b1D', + earnContractAddress: '0x2337AEc28Bd34639277E321C67571623940A5b1D', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'banana-cake-bnb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'ApeSwap', + assets: ['CAKE', 'BNB'], + addLiquidityUrl: + 'https://dex.apeswap.finance/#/add/ETH/0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82', + buyTokenUrl: + 'https://dex.apeswap.finance/#/swap?outputCurrency=0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82', + createdAt: 1628871779, + }, + { + id: 'banana-btcb-bnb', + name: 'BTCB-BNB LP', + token: 'BTCB-BNB ALP', + tokenDescription: 'ApeSwap', + tokenAddress: '0x1E1aFE9D9c5f290d8F6996dDB190bd111908A43D', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooApeBTCB-BNB', + earnedTokenAddress: '0x5B5da11711C1CaA47550137c481ee1516c136D4a', + earnContractAddress: '0x5B5da11711C1CaA47550137c481ee1516c136D4a', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'banana-btcb-bnb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'ApeSwap', + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + assets: ['BTCB', 'BNB'], + addLiquidityUrl: + 'https://dex.apeswap.finance/#/add/ETH/0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c', + buyTokenUrl: + 'https://dex.apeswap.finance/#/swap?outputCurrency=0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c', + createdAt: 1628871569, + }, + { + id: 'banana-banana-eol', + logo: 'degens/BANANA.svg', + name: 'BANANA', + token: 'BANANA', + tokenDescription: 'ApeSwap', + tokenAddress: '0x603c7f932ED1fc6575303D8Fb018fDCBb0f39a95', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooApeBANANA', + earnedTokenAddress: '0xD307e7CC6a302046b7D91D83aa4B8324cFB7a786', + earnContractAddress: '0xD307e7CC6a302046b7D91D83aa4B8324cFB7a786', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'BANANA', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'ApeSwap', + assets: ['BANANA'], + buyTokenUrl: + 'https://dex.apeswap.finance/#/swap?inputCurrency=0x603c7f932ED1fc6575303D8Fb018fDCBb0f39a95&outputCurrency=0xbb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c', + createdAt: 1615196201, + }, + { + id: 'banana-guard-bnb-eol', + logo: 'degens/BANANA-GUARD-BNB.svg', + name: 'GUARD-BNB LP', + token: 'GUARD-BNB LP', + tokenDescription: 'ApeSwap', + tokenAddress: '0xDd2B5E024942F9a83255F41144db5648b71f01c4', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBananaGUARD-BNB', + earnedTokenAddress: '0xB65381D73d96348D38C683f34998c0352F9c4EFF', + earnContractAddress: '0xB65381D73d96348D38C683f34998c0352F9c4EFF', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'banana-guard-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'ApeSwap', + assets: ['GUARD', 'BNB'], + addLiquidityUrl: + 'https://dex.apeswap.finance/#/add/0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c/0xF606bd19b1E61574ED625d9ea96C841D4E247A32', + buyTokenUrl: + 'https://dex.apeswap.finance/#/swap?inputCurrency=0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c&outputCurrency=0xF606bd19b1E61574ED625d9ea96C841D4E247A32', + createdAt: 1628110811, + }, + { + id: 'banana-land-bnb-eol', + name: 'LAND-BNB ALP', + token: 'LAND-BNB ALP', + tokenDescription: 'ApeSwap', + tokenAddress: '0xB15f34082Baa4E3515A49E05D4d1D40cE933da0b', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooApeLAND-BNB', + earnedTokenAddress: '0x7f7d3734903341464a685809405ff3b5463FF379', + earnContractAddress: '0x7f7d3734903341464a685809405ff3b5463FF379', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'banana-land-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'tvl', + platform: 'ApeSwap', + assets: ['LAND', 'BNB'], + addLiquidityUrl: + 'https://app.apeswap.finance/add/ETH/0x9D986A3f147212327Dd658F712d5264a73a1fdB0', + buyTokenUrl: + 'https://app.apeswap.finance/swap?outputCurrency=0x9D986A3f147212327Dd658F712d5264a73a1fdB0', + createdAt: 1628412370, + }, + { + id: 'honeyfarm-honey-busd-eol', + name: 'HONEY-BUSD LP', + token: 'HONEY-BUSD LP', + tokenDescription: 'PancakeSwap (HoneyFarm)', + tokenAddress: '0x2961aa26a1Cb3068E580099045cc79a5b7B9634c', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooHoneyFarmHONEY-BUSDeol', + earnedTokenAddress: '0x703Ab45f572db0f961520787f34F0E8bf7C2208B', + earnContractAddress: '0x703Ab45f572db0f961520787f34F0E8bf7C2208B', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'honeyfarm-honey-busd', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['HONEY', 'BUSD'], + withdrawalFee: '0%', + addLiquidityUrl: + 'https://pancakeswap.finance/add/0xe9e7cea3dedca5984780bafc599bd69add087d56/0xFa363022816aBf82f18a9C2809dCd2BB393F6AC5', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0xFa363022816aBf82f18a9C2809dCd2BB393F6AC5', + createdAt: 1628251203, + }, + { + id: 'honeyfarm-honey-bnb-eol', + name: 'HONEY-BNB LP', + token: 'HONEY-BNB LP', + tokenDescription: 'PancakeSwap (HoneyFarm)', + tokenAddress: '0x27418bf2E38E613560D2281dB6590f3f6D446259', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooHoneyFarmHONEY-BNBeol', + earnedTokenAddress: '0xE0e445357e86464C8DB8B4302e35852B3F92ac5d', + earnContractAddress: '0xE0e445357e86464C8DB8B4302e35852B3F92ac5d', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'honeyfarm-honey-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['HONEY', 'BNB'], + withdrawalFee: '0%', + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0xFa363022816aBf82f18a9C2809dCd2BB393F6AC5', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0xFa363022816aBf82f18a9C2809dCd2BB393F6AC5', + createdAt: 1628251164, + }, + { + id: 'banana-cyt-bnb', + name: 'CYT-BNB ALP', + token: 'CYT-BNB ALP', + tokenDescription: 'ApeSwap', + tokenAddress: '0x5a55Fce6F6aCB2B1b20514964301Db4f37028C81', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooApeCYT-BNB', + earnedTokenAddress: '0x673F5c29811107407744080F7403A4ABC43B646f', + earnContractAddress: '0x673F5c29811107407744080F7403A4ABC43B646f', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'banana-cyt-bnb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'ApeSwap', + assets: ['CYT', 'BNB'], + addLiquidityUrl: + 'https://app.apeswap.finance/add/ETH/0xd9025e25Bb6cF39f8c926A704039D2DD51088063', + buyTokenUrl: + 'https://app.apeswap.finance/swap?outputCurrency=0xd9025e25Bb6cF39f8c926A704039D2DD51088063', + createdAt: 1628432658, + }, + { + id: 'cakev2-btt-busd-eol', + name: 'BTT-BUSD LP', + token: 'BTT-BUSD LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0xdcfbB12DED3FEa12D2A078Bc6324131cD14bF835', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2BTT-BUSD', + earnedTokenAddress: '0x0f10758Bf5A088471FbDeCbfd3051E4FAC927d1f', + earnContractAddress: '0x0f10758Bf5A088471FbDeCbfd3051E4FAC927d1f', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-btt-busd', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'tvl', + platform: 'PancakeSwap', + assets: ['BTT', 'BUSD'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MEDIUM', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://pancakeswap.finance/add/0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56/0x8595f9da7b868b1822194faed312235e43007b49', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x8595f9da7b868b1822194faed312235e43007b49', + createdAt: 1628160572, + }, + { + id: 'cakev2-trx-busd', + name: 'TRX-BUSD LP', + token: 'TRX-BUSD LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0xb5D108578Be3750209d1b3A8f45FFee8C5a75146', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2TRX-BUSD', + earnedTokenAddress: '0x5689Bdbc6BF06d5aF997a399F5abE858E60ae0fF', + earnContractAddress: '0x5689Bdbc6BF06d5aF997a399F5abE858E60ae0fF', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-trx-busd', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'PancakeSwap', + assets: ['TRX', 'BUSD'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://pancakeswap.finance/add/0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56/0x85eac5ac2f758618dfa09bdbe0cf174e7d574d5b', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x85eac5ac2f758618dfa09bdbe0cf174e7d574d5b', + createdAt: 1628160485, + }, + { + id: 'cakev2-win-busd', + name: 'WIN-BUSD LP', + token: 'WIN-BUSD LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x6a445cEB72c8B1751755386c3990055ff92e14A0', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2WIN-BUSD', + earnedTokenAddress: '0x5E21De9266820e00039Ccc4211eE135114944b5b', + earnContractAddress: '0x5E21De9266820e00039Ccc4211eE135114944b5b', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-win-busd', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'PancakeSwap', + assets: ['WIN', 'BUSD'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56/0xaef0d72a118ce24fee3cd1d43d383897d05b4e99', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0xaef0d72a118ce24fee3cd1d43d383897d05b4e99', + createdAt: 1628160374, + }, + { + id: 'cakev2-revv-bnb-eol', + name: 'REVV-BNB LP', + token: 'REVV-BNB LP', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x1Cc18962B919ef90085a8b21f8dDC95824Fbad9E', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2REVV-BNB', + earnedTokenAddress: '0xe0F782FFAeC27DC2377b8b656B828820dDB7BEd4', + earnContractAddress: '0xe0F782FFAeC27DC2377b8b656B828820dDB7BEd4', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-revv-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['REVV', 'BNB'], + withdrawalFee: '0%', + retireReason: 'rewards', + removeLiquidityUrl: + 'https://pancakeswap.finance/remove/0x833F307aC507D47309fD8CDD1F835BeF8D702a93/0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c', + buyTokenUrl: + 'https://pancakeswap.finance/swap?inputCurrency=0x833F307aC507D47309fD8CDD1F835BeF8D702a93&outputCurrency=0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c', + createdAt: 1627923279, + }, + { + id: 'cakev2-wsg-wbnb-eol', + name: 'WSG-BNB LP', + token: 'WSG-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x37Ff7D4459ad96E0B01275E5efffe091f33c2CAD', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2WSG-WBNB', + earnedTokenAddress: '0x57Fd8B7c7f7520281a472f54275C47CfE7E28716', + earnContractAddress: '0x57Fd8B7c7f7520281a472f54275C47CfE7E28716', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-wsg-wbnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'PancakeSwap', + assets: ['WSG', 'BNB'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/0xA58950F05FeA2277d2608748412bf9F802eA4901/0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c', + buyTokenUrl: + 'https://pancakeswap.finance/swap?inputCurrency=0xA58950F05FeA2277d2608748412bf9F802eA4901&outputCurrency=0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c', + createdAt: 1628027137, + }, + { + id: 'banana-bnb-sista-eol', + name: 'SISTA-BNB LP', + token: 'SISTA-BNB LP', + tokenDescription: 'ApeSwap', + tokenAddress: '0x45546310FDA2fbDB7Ee26EA0A5b6F82D075254bC', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBananaSISTA-BNB', + earnedTokenAddress: '0x7ba299C3681aFEE3d91f7d0685451A7c1C45Cd00', + earnContractAddress: '0x7ba299C3681aFEE3d91f7d0685451A7c1C45Cd00', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'banana-bnb-sista', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'ApeSwap', + assets: ['SISTA', 'BNB'], + addLiquidityUrl: + 'https://dex.apeswap.finance/#/add/0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c/0xCA6d25C10dad43ae8Be0bc2af4D3CD1114583C08', + buyTokenUrl: + 'https://dex.apeswap.finance/#/swap?inputCurrency=0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c&outputCurrency=0xCA6d25C10dad43ae8Be0bc2af4D3CD1114583C08', + createdAt: 1627915331, + retiredReason: 'tvl', + }, + { + id: 'wex-bnb-dep-eol', + logo: 'bnb-pairs/DEP-BNB.png', + name: 'DEP-BNB WLP', + token: 'DEP-BNB WLP', + tokenDescription: 'WaultFinance', + tokenAddress: '0x45cfEC682817f62fCD11816ed41900E160E17F2d', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooWaultBNB-DEP', + earnedTokenAddress: '0xAf36873ecC5C8BC18173a16a862CD53f117Bf0f7', + earnContractAddress: '0xAf36873ecC5C8BC18173a16a862CD53f117Bf0f7', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'wex-bnb-dep', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Other', + assets: ['DEP', 'BNB'], + addLiquidityUrl: + 'https://swap.wault.finance/bsc/#/add/BNB/0xcaF5191fc480F43e4DF80106c7695ECA56E48B18', + buyTokenUrl: + 'https://swap.wault.finance/bsc/#/swap?outputCurrency=0xcaF5191fc480F43e4DF80106c7695ECA56E48B18', + createdAt: 1627665592, + }, + { + id: 'jetswap-btcb-bnb', + name: 'BTCB-BNB LP', + token: 'BTCB-BNB LP', + tokenDescription: 'JetSwap', + tokenAddress: '0xc3C16CaE0cf35615b8716a9A8BB0b1257CdbCA53', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooJetswapBTCB-BNB', + earnedTokenAddress: '0x1301Bfedaec0592e7915012A0f1AE2aCBaFbA4c3', + earnContractAddress: '0x1301Bfedaec0592e7915012A0f1AE2aCBaFbA4c3', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'jetswap-btcb-bnb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'JetSwap', + assets: ['BTCB', 'BNB'], + addLiquidityUrl: + 'https://exchange.jetswap.finance/#/add/0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c/0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c', + buyTokenUrl: + 'https://exchange.jetswap.finance/#/swap?inputCurrency=0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c&outputCurrency=0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c', + createdAt: 1627911930, + }, + { + id: 'pera-pera-bnb-eol', + name: 'PERA-BNB LP', + token: 'PERA-BNB LP', + tokenDescription: 'PancakeSwap (Pera)', + tokenAddress: '0x59eA11cfe863A6D680F4D14Bb24343e852ABBbbb', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPeraPERA-BNB', + earnedTokenAddress: '0xE48888E2d11307c467AB364FeaD6d8C214210D2B', + earnContractAddress: '0xE48888E2d11307c467AB364FeaD6d8C214210D2B', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'pera-pera-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Other', + assets: ['PERA', 'BNB'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0xb9D8592E16A9c1a3AE6021CDDb324EaC1Cbc70d6', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0xb9D8592E16A9c1a3AE6021CDDb324EaC1Cbc70d6', + createdAt: 1627490578, + }, + { + id: 'banana-tape-bnb-eol', + name: 'TAPE-BNB LP', + token: 'TAPE-BNB LP', + tokenDescription: 'ApeSwap', + tokenAddress: '0x756d4406169273d99aAc8366cf5eAf7865d6a9b9', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooApeTAPE-BNB', + earnedTokenAddress: '0x8444E699466BeaE79436c782aC7Fe6308E92dDcF', + earnContractAddress: '0x8444E699466BeaE79436c782aC7Fe6308E92dDcF', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'banana-tape-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'ApeSwap', + assets: ['TAPE', 'BNB'], + addLiquidityUrl: + 'https://dex.apeswap.finance/#/add/ETH/0xF63400ee0420ce5b1Ebdee0C942D7dE1C734a41f', + buyTokenUrl: + 'https://dex.apeswap.finance/#/swap?outputCurrency=0xF63400ee0420ce5b1Ebdee0C942D7dE1C734a41f', + createdAt: 1627650183, + }, + { + id: 'banana-axs-bnb', + name: 'AXS-BNB LP', + token: 'AXS-BNB ALP', + tokenDescription: 'ApeSwap', + tokenAddress: '0x8b85A4228400fa9b2fB5bD47dB8f05b7f8Bb7F5c', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooApeAXS-BNB', + earnedTokenAddress: '0x69DDD966e3FAaB30c09D7A2C40609Ea859F4107E', + earnContractAddress: '0x69DDD966e3FAaB30c09D7A2C40609Ea859F4107E', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'banana-axs-bnb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'ApeSwap', + assets: ['AXS', 'BNB'], + addLiquidityUrl: + 'https://dex.apeswap.finance/#/add/ETH/0x715D400F88C167884bbCc41C5FeA407ed4D2f8A0', + buyTokenUrl: + 'https://dex.apeswap.finance/#/swap?outputCurrency=0x715D400F88C167884bbCc41C5FeA407ed4D2f8A0', + createdAt: 1627574550, + }, + { + id: 'cakev2-if-busd-eol', + name: 'IF-BUSD LP', + token: 'IF-BUSD LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x7b4682D2B3f8670b125aF6AEA8d7eD2Daa43Bdc1', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2IF-BUSD', + earnedTokenAddress: '0x448dCDE29b236eF0e72C1f896b8Ed5674789E809', + earnContractAddress: '0x448dCDE29b236eF0e72C1f896b8Ed5674789E809', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-if-busd', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['IF', 'BUSD'], + withdrawalFee: '0%', + retireReason: 'rewards', + removeLiquidityUrl: + 'https://pancakeswap.finance/remove/0xB0e1fc65C1a741b4662B813eB787d369b8614Af1/0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56', + buyTokenUrl: + 'https://pancakeswap.finance/swap?inputCurrency=0xB0e1fc65C1a741b4662B813eB787d369b8614Af1&outputCurrency=0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56', + createdAt: 1627539012, + }, + { + id: 'cakev2-skill-wbnb-eol', + name: 'SKILL-BNB LP', + token: 'SKILL-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0xC19dfd34D3ba5816dF9CBDaa02D32A9F8dc6F6fC', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2SKILL-WBNB', + earnedTokenAddress: '0x4FA0345d6f683dfb90f8935c2fEeBBe03085bdDD', + earnContractAddress: '0x4FA0345d6f683dfb90f8935c2fEeBBe03085bdDD', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-skill-wbnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['SKILL', 'BNB'], + withdrawalFee: '0%', + retireReason: 'rewards', + removeLiquidityUrl: + 'https://pancakeswap.finance/remove/0x154A9F9cbd3449AD22FDaE23044319D6eF2a1Fab/0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c', + buyTokenUrl: + 'https://pancakeswap.finance/swap?inputCurrency=0x154A9F9cbd3449AD22FDaE23044319D6eF2a1Fab&outputCurrency=0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c', + createdAt: 1627627366, + }, + { + id: 'farmhero-pancake-hero-wbnb-eol', + name: 'HERO-BNB LP', + token: 'HERO-BNB LP', + tokenDescription: 'FarmHero (Pancakeswap)', + tokenAddress: '0x35BC504e05fa91f17552A9c3a6A2E7E9651A0622', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooFarmHeroPancakeHERO-WBNB', + earnedTokenAddress: '0x1D8Ed2D5d2f5C0e8d9919532C2D47D97ae3447ad', + earnContractAddress: '0x1D8Ed2D5d2f5C0e8d9919532C2D47D97ae3447ad', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'farmhero-pancake-hero-wbnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['HERO', 'BNB'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/0x9B26e16377ad29A6CCC01770bcfB56DE3A36d8b2/0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c', + buyTokenUrl: + 'https://pancakeswap.finance/swap?inputCurrency=0x9B26e16377ad29A6CCC01770bcfB56DE3A36d8b2&outputCurrency=0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c', + createdAt: 1627448553, + retiredReason: 'tvl', + }, + { + id: 'farmhero-pancake-hero-busd-eol', + name: 'HERO-BUSD LP', + token: 'HERO-BUSD LP', + tokenDescription: 'FarmHero (Pancakeswap)', + tokenAddress: '0x4BcaA3bd33fF733a581dF027aAd1EBDbDDb55CC2', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooFarmHeroPancakeHERO-BUSD', + earnedTokenAddress: '0x8D37dB34d1f69CD2591ba9EFFCFda568eCe4b16B', + earnContractAddress: '0x8D37dB34d1f69CD2591ba9EFFCFda568eCe4b16B', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'farmhero-pancake-hero-busd', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['HERO', 'BUSD'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/0x9B26e16377ad29A6CCC01770bcfB56DE3A36d8b2/0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56', + buyTokenUrl: + 'https://pancakeswap.finance/swap?inputCurrency=0x9B26e16377ad29A6CCC01770bcfB56DE3A36d8b2&outputCurrency=0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56', + createdAt: 1627448941, + retiredReason: 'tvl', + }, + { + id: 'cakev2-sps-wbnb-eol', + name: 'SPS-BNB LP', + token: 'SPS-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0xFdFde3aF740A22648B9dD66D05698e5095940850', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2SPS-WBNB', + earnedTokenAddress: '0x8fBc0609Ca09De7CA68E9E36bEf5b51bA60b8Ff8', + earnContractAddress: '0x8fBc0609Ca09De7CA68E9E36bEf5b51bA60b8Ff8', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-sps-wbnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'tvl', + platform: 'PancakeSwap', + assets: ['SPS', 'BNB'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/0x1633b7157e7638C4d6593436111Bf125Ee74703F/0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c', + buyTokenUrl: + 'https://pancakeswap.finance/swap?inputCurrency=0x1633b7157e7638C4d6593436111Bf125Ee74703F&outputCurrency=0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c', + createdAt: 1627425423, + }, + { + id: 'cakev2-c98-wbnb', + logo: 'bnb-pairs/C98-BNB.svg', + name: 'C98-BNB LP', + token: 'C98-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x92247860A03F48d5c6425c7CA35CDcFCB1013AA1', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2C98-WBNB', + earnedTokenAddress: '0x13071d48A5FDe2735102657e15D1132F92eE8C83', + earnContractAddress: '0x13071d48A5FDe2735102657e15D1132F92eE8C83', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-c98-wbnb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'PancakeSwap', + assets: ['C98', 'BNB'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/0xaEC945e04baF28b135Fa7c640f624f8D90F1C3a6/0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c', + buyTokenUrl: + 'https://pancakeswap.finance/swap?inputCurrency=0xaEC945e04baF28b135Fa7c640f624f8D90F1C3a6&outputCurrency=0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c', + createdAt: 1627056633, + }, + { + id: 'mdex-bsc-mdx', + logo: 'single-assets/MDX.png', + name: 'MDX', + token: 'MDX', + tokenDescription: 'Mdex', + tokenAddress: '0x9C65AB58d8d978DB963e63f2bfB7121627e3a739', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooMdexMDX', + earnedTokenAddress: '0xc34C7923B73eB68E363AaEB2b7fbBeC11Cf90884', + earnContractAddress: '0xc34C7923B73eB68E363AaEB2b7fbBeC11Cf90884', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'MDX', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Mdex', + assets: ['MDX'], + withdrawalFee: '0%', + buyTokenUrl: + 'https://bsc.mdex.com/#/swap?inputCurrency=WBNB&outputCurrency=0x9c65ab58d8d978db963e63f2bfb7121627e3a739', + createdAt: 1621519770, + }, + { + id: 'wex-tusd-usdt-eol', + logo: 'usdt-pairs/TUSD-USDT.png', + name: 'TUSD-USDT WLP', + token: 'TUSD-USDT WLP', + tokenDescription: 'WaultFinance', + tokenAddress: '0xBE66b44015734D881ACcfBa478d957885612A902', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooWaultTUSD-USDT', + earnedTokenAddress: '0x54be68B8330D49e454DF63A9F74Baa62B90fB768', + earnContractAddress: '0x54be68B8330D49e454DF63A9F74Baa62B90fB768', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'wex-tusd-usdt', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Other', + assets: ['TUSD', 'USDT'], + addLiquidityUrl: + 'https://swap.wault.finance/bsc/#/add/0x55d398326f99059fF775485246999027B3197955/0x14016E85a25aeb13065688cAFB43044C2ef86784', + buyTokenUrl: + 'https://swap.wault.finance/bsc/#/swap?inputCurrency=0x55d398326f99059fF775485246999027B3197955&outputCurrency=0x14016E85a25aeb13065688cAFB43044C2ef86784', + createdAt: 1627238978, + }, + { + id: 'cakev2-axs-wbnb', + name: 'AXS-BNB LP', + token: 'AXS-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0xC2d00De94795e60FB76Bc37d899170996cBdA436', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2AXS-WBNB', + earnedTokenAddress: '0x97579c19A91c9e174D1DF4782739A2ec0971c0D8', + earnContractAddress: '0x97579c19A91c9e174D1DF4782739A2ec0971c0D8', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-axs-wbnb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'PancakeSwap', + assets: ['AXS', 'BNB'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/0x715D400F88C167884bbCc41C5FeA407ed4D2f8A0/0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c', + buyTokenUrl: + 'https://pancakeswap.finance/swap?inputCurrency=0x715D400F88C167884bbCc41C5FeA407ed4D2f8A0&outputCurrency=0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c', + createdAt: 1626948737, + }, + { + id: 'ellipsis-usdn-eol', + logo: 'uncategorized/epsUSDN.png', + name: 'BUSD/USDT/USDC/USDN', + token: 'usdn3EPS', + tokenDescription: 'Ellipsis', + tokenAddress: '0x8339156534e2d7354Eed097A6FB4A5820d8d0d27', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooEllipsisUSDN', + earnedTokenAddress: '0x1DB9162039F834F02f095395B334d514f894b696', + earnContractAddress: '0x1DB9162039F834F02f095395B334d514f894b696', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'ellipsis-usdn', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Ellipsis', + assets: ['USDN', 'USDC', 'USDT', 'BUSD'], + addLiquidityUrl: 'https://ellipsis.finance/pool', + createdAt: 1626784750, + retiredReason: 'tvl', + }, + { + id: 'fruit-fruit-cake-eol', + name: 'FRUIT-CAKE LP', + token: 'FRUIT-CAKE LP', + tokenDescription: 'ApeSwap (Fruit)', + tokenAddress: '0x16F77B8f15Ec2c98069e0E34FDa78E3d57Ca501B', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooFruitFRUIT-CAKE', + earnedTokenAddress: '0xe7D4C514621C2687391cee9e3a150a738EbF2C92', + earnContractAddress: '0xe7D4C514621C2687391cee9e3a150a738EbF2C92', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'fruit-fruit-cake', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['FRUIT', 'CAKE'], + retireReason: 'tvl', + addLiquidityUrl: + 'https://dex.apeswap.finance/#/add/0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82/0x4ECfb95896660aa7F54003e967E7b283441a2b0A', + buyTokenUrl: + 'https://dex.apeswap.finance/#/swap?outputCurrency=0x4ECfb95896660aa7F54003e967E7b283441a2b0A', + createdAt: 1626774100, + }, + { + id: 'fruit-fruit-xvs-eol', + name: 'FRUIT-XVS LP', + token: 'FRUIT-XVS LP', + tokenDescription: 'ApeSwap (Fruit)', + tokenAddress: '0xcD727738F97cE36462b846CE52aBd2D4f5fea75a', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooFruitFRUIT-XVS', + earnedTokenAddress: '0x76BB40099580dD8987Fd9B860272B7EA387155a8', + earnContractAddress: '0x76BB40099580dD8987Fd9B860272B7EA387155a8', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'fruit-fruit-xvs', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['FRUIT', 'XVS'], + retireReason: 'tvl', + addLiquidityUrl: + 'https://dex.apeswap.finance/#/add/0xcf6bb5389c92bdda8a3747ddb454cb7a64626c63/0x4ECfb95896660aa7F54003e967E7b283441a2b0A', + buyTokenUrl: + 'https://dex.apeswap.finance/#/swap?outputCurrency=0x4ECfb95896660aa7F54003e967E7b283441a2b0A', + createdAt: 1626774505, + }, + { + id: 'banana-fruit-bnb-eol', + name: 'FRUIT-BNB LP', + token: 'FRUIT-BNB LP', + tokenDescription: 'ApeSwap', + tokenAddress: '0x0bE55fd1Fdc7134Ff8412e8BAaC63CBb691B1d64', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooApeFRUIT-BNB', + earnedTokenAddress: '0xf33352769cF8A1fC840FC573A9B4Bf92e398311f', + earnContractAddress: '0xf33352769cF8A1fC840FC573A9B4Bf92e398311f', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'banana-fruit-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'ApeSwap', + assets: ['FRUIT', 'BNB'], + retireReason: 'rewards', + addLiquidityUrl: + 'https://dex.apeswap.finance/#/add/ETH/0x4ECfb95896660aa7F54003e967E7b283441a2b0A', + buyTokenUrl: + 'https://dex.apeswap.finance/#/swap?outputCurrency=0x4ECfb95896660aa7F54003e967E7b283441a2b0A', + createdAt: 1626697848, + }, + { + id: 'stablequant-quant-busd-eol', + logo: 'degens/quant-busd.png', + name: 'QUANT-BUSD LP', + token: 'QUANT-BUSD LP', + tokenDescription: 'PancakeSwap (QUANT)', + tokenAddress: '0x8828B94d62d43d8415968666D221Bf3C0fcaf58f', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooStableQuantQUANT-BUSD', + earnedTokenAddress: '0xa4918a9B3CE89c3A179Ea873A45a901a4535eC65', + earnContractAddress: '0xa4918a9B3CE89c3A179Ea873A45a901a4535eC65', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'stablequant-quant-busd', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['QUANT', 'BUSD'], + retireReason: 'tvl', + addLiquidityUrl: + 'https://pancakeswap.finance/add/0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56/0xBCA627FEd3b6E8F414C745E12B2b89371497779D', + buyTokenUrl: + 'https://pancakeswap.finance/swap?inputCurrency=0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56&outputCurrency=0xBCA627FEd3b6E8F414C745E12B2b89371497779D', + createdAt: 1627849743, + }, + { + id: 'rabbit-carrot-busd', + name: 'CARROT-BUSD LP', + token: 'CARROT-BUSD LP', + tokenDescription: 'Mdex (RabbitFinance)', + tokenAddress: '0xFa3De14B75832dF680D6cae6C2555d7ff5F80C00', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooRabbitCARROT-BUSD', + earnedTokenAddress: '0xAfa633818a93D456F4f17225F307cA9B0DB9927F', + earnContractAddress: '0xAfa633818a93D456F4f17225F307cA9B0DB9927F', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'rabbit-carrot-busd', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Other', + assets: ['CARROT', 'BUSD'], + addLiquidityUrl: + 'https://bsc.mdex.me/#/add/0xe9e7cea3dedca5984780bafc599bd69add087d56/0xA5043373edC09f3f7d87Fe35CA933e0a7B59D005', + buyTokenUrl: + 'https://bsc.mdex.me/#/swap?outputCurrency=0xA5043373edC09f3f7d87Fe35CA933e0a7B59D005', + createdAt: 1626436039, + }, + { + id: 'kingdefi-krown-bnb-eol', + name: 'KRW-BNB LP', + token: 'KRW-BNB LP', + tokenDescription: 'PancakeSwap (KingDefi)', + tokenAddress: '0x23DCDDfa33c3b79192f4D9c39de0b2a98B5c0390', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooKingDefiKROWN-BNB', + earnedTokenAddress: '0x7436E25d56b22646122448BbFD05F732984B4f19', + earnContractAddress: '0x7436E25d56b22646122448BbFD05F732984B4f19', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'kingdefi-krown-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'tvl', + platform: 'Other', + assets: ['KRW', 'BNB'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0x1446f3CEdf4d86a9399E49f7937766E6De2A3AAB', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x1446f3cedf4d86a9399e49f7937766e6de2a3aab', + createdAt: 1626276700, + }, + { + id: 'kingdefi-krown-eol', + logo: 'single-assets/KRW.png', + name: 'KRW', + token: 'KRW', + tokenDescription: 'KingDefi', + tokenAddress: '0x1446f3CEdf4d86a9399E49f7937766E6De2A3AAB', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooKingDefiKROWN', + earnedTokenAddress: '0xEb4804389A843676686715785C8Df27EA6E43F9b', + earnContractAddress: '0xEb4804389A843676686715785C8Df27EA6E43F9b', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'KRW', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Other', + assets: ['KRW'], + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x1446f3cedf4d86a9399e49f7937766e6de2a3aab', + createdAt: 1626280033, + }, + { + id: 'ooe-ooe-bnb', + name: 'OOE-BNB LP', + token: 'OOE-BNB LP', + tokenDescription: 'OpenOcean', + tokenAddress: '0xa0B80538Fe40660921cE9327879bD1156726D13D', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooOoeOOE-BNB', + earnedTokenAddress: '0xfA9f791Ff43128bbEB8B89Ee452Ba31eEFDd52f0', + earnContractAddress: '0xfA9f791Ff43128bbEB8B89Ee452Ba31eEFDd52f0', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'ooe-ooe-bnb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Other', + assets: ['OOE', 'BNB'], + addLiquidityUrl: + 'https://openocean.finance/pools/?t=1631247635777#/add/BNB/0x9029FdFAe9A03135846381c7cE16595C3554e10A', + buyTokenUrl: 'https://openocean.finance/classic', + createdAt: 1626108849, + }, + { + id: 'ooe-ooe-busd', + name: 'OOE-BUSD LP', + token: 'OOE-BUSD LP', + tokenDescription: 'OpenOcean', + tokenAddress: '0x70F591e38AD52A1F99C1e055759F1F31Bcf3732e', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooOoeOOE-BUSD', + earnedTokenAddress: '0xC7981CD58062B6C2c782418ddb235d06A3AB80a9', + earnContractAddress: '0xC7981CD58062B6C2c782418ddb235d06A3AB80a9', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'ooe-ooe-busd', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Other', + assets: ['OOE', 'BUSD'], + addLiquidityUrl: + 'https://openocean.finance/pools/?t=1631247635777#/add/0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56/0x9029FdFAe9A03135846381c7cE16595C3554e10A', + buyTokenUrl: 'https://openocean.finance/classic', + createdAt: 1626107634, + }, + { + id: 'banana-yfi-bnb', + name: 'YFI-BNB LP', + token: 'YFI-BNB ApeLP', + tokenDescription: 'ApeSwap', + tokenAddress: '0xA3421Bd2B3B1578FF43Ab95C10f667e5A3bbCeF7', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooApeYFI-BNB', + earnedTokenAddress: '0x4A1f31E1014087B9F9e023147Cf319fF1534B209', + earnContractAddress: '0x4A1f31E1014087B9F9e023147Cf319fF1534B209', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'banana-yfi-bnb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'ApeSwap', + assets: ['YFI', 'BNB'], + addLiquidityUrl: + 'https://dex.apeswap.finance/#/add/ETH/0x88f1A5ae2A3BF98AEAF342D26B30a79438c9142e', + buyTokenUrl: + 'https://dex.apeswap.finance/#/swap?outputCurrency=0x88f1A5ae2A3BF98AEAF342D26B30a79438c9142e', + createdAt: 1626024399, + }, + { + id: 'wex-wex-btcb-eol', + name: 'WEX-BTCB WLP', + token: 'WEX-BTCB WLP', + tokenDescription: 'WaultFinance', + tokenAddress: '0xB621C33747D508CC16E83214823D644713DCA02e', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooWaultWEX-BTCB', + earnedTokenAddress: '0xe4D876d745aA10f6a8EEd066E1aeA379C5c6852D', + earnContractAddress: '0xe4D876d745aA10f6a8EEd066E1aeA379C5c6852D', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'wex-wex-btcb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Other', + assets: ['WEX', 'BTCB'], + addLiquidityUrl: + 'https://swap.wault.finance/bsc/#/add/0xa9c41a46a6b3531d28d5c32f6633dd2ff05dfb90/0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c', + buyTokenUrl: + 'https://swap.wault.finance/bsc/#/swap?inputCurrency=0xa9c41a46a6b3531d28d5c32f6633dd2ff05dfb90&outputCurrency=0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c', + createdAt: 1625847079, + }, + { + id: 'cakev2-chess-usdc', + name: 'CHESS-USDC LP', + token: 'CHESS-USDC LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x1472976E0B97F5B2fC93f1FFF14e2b5C4447b64F', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2CHESS-USDC', + earnedTokenAddress: '0x44B59f89cD4EAbCb08d6cD97B8998A96400E8c6F', + earnContractAddress: '0x44B59f89cD4EAbCb08d6cD97B8998A96400E8c6F', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-chess-usdc', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'PancakeSwap', + assets: ['CHESS', 'USDC'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/0x20de22029ab63cf9A7Cf5fEB2b737Ca1eE4c82A6/0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d', + buyTokenUrl: + 'https://pancakeswap.finance/swap?inputCurrency=0x20de22029ab63cf9A7Cf5fEB2b737Ca1eE4c82A6&outputCurrency=0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d', + createdAt: 1626076601, + }, + { + id: 'cakev2-mask-wbnb-eol', + name: 'MASK-BNB LP', + token: 'MASK-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x46c6bA71af7648cD7f67D0AD4d16f75bE251ed12', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2MASK-WBNB', + earnedTokenAddress: '0x7C86bF8e0Db2D327EF1b0D616C5617E9733CdDf6', + earnContractAddress: '0x7C86bF8e0Db2D327EF1b0D616C5617E9733CdDf6', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-mask-wbnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'PancakeSwap', + assets: ['MASK', 'BNB'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/0x2eD9a5C8C13b93955103B9a7C167B67Ef4d568a3/0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c', + buyTokenUrl: + 'https://pancakeswap.finance/swap?inputCurrency=0x2eD9a5C8C13b93955103B9a7C167B67Ef4d568a3&outputCurrency=0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c', + createdAt: 1625695424, + }, + { + id: 'ellipsis-pbtc-eol', + logo: 'uncategorized/epsPBTC.png', + name: 'pBTC/renBTC/BTCB', + token: 'pbtcEPS', + tokenDescription: 'Ellipsis', + tokenAddress: '0xA2520F3596449105bfe899f3D573C4353917EAf8', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooEllipsisPBTC', + earnedTokenAddress: '0x8Fa781Fe4995cB9F7de6BD46042A7034c920824B', + earnContractAddress: '0x8Fa781Fe4995cB9F7de6BD46042A7034c920824B', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'ellipsis-pbtc', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Ellipsis', + assets: ['pBTC', 'renBTC', 'BTCB'], + retireReason: 'exploit', + addLiquidityUrl: 'https://ellipsis.finance/pool', + createdAt: 1625591426, + }, + { + id: 'banana-sfp-bnb', + logo: 'degens/BANANA-SFP-BNB.svg', + name: 'SFP-BNB LP', + token: 'SFP-BNB ApeLP', + tokenDescription: 'ApeSwap', + tokenAddress: '0x6411A2240c8cD1dd48718eEE1ae4a10E71123Fd3', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooApeSFP-BNB', + earnedTokenAddress: '0x57aB8a1F94FED0EE20431C6687211aaf2B7e73E5', + earnContractAddress: '0x57aB8a1F94FED0EE20431C6687211aaf2B7e73E5', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'banana-sfp-bnb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'ApeSwap', + assets: ['SFP', 'BNB'], + addLiquidityUrl: + 'https://dex.apeswap.finance/#/add/ETH/0xD41FDb03Ba84762dD66a0af1a6C8540FF1ba5dfb', + buyTokenUrl: + 'https://dex.apeswap.finance/#/swap?outputCurrency=0xD41FDb03Ba84762dD66a0af1a6C8540FF1ba5dfb', + createdAt: 1625587277, + }, + { + id: 'banana-eps-bnb-eol', + logo: 'degens/BANANA-EPS-BNB.svg', + name: 'EPS-BNB LP', + token: 'EPS-BNB ApeLP', + tokenDescription: 'ApeSwap', + tokenAddress: '0x97c4C531e739E870d958940E8688017894084003', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooApeEPS-BNB', + earnedTokenAddress: '0xd9CDe586500163d8D48866949cB18F46Ffe07995', + earnContractAddress: '0xd9CDe586500163d8D48866949cB18F46Ffe07995', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'banana-eps-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'ApeSwap', + assets: ['EPS', 'BNB'], + addLiquidityUrl: + 'https://dex.apeswap.finance/#/add/ETH/0xA7f552078dcC247C2684336020c03648500C6d9F', + buyTokenUrl: + 'https://dex.apeswap.finance/#/swap?outputCurrency=0xA7f552078dcC247C2684336020c03648500C6d9F', + createdAt: 1625587502, + }, + { + id: 'banana-xvs-bnb', + logo: 'degens/BANANA-XVS-BNB.svg', + name: 'XVS-BNB LP', + token: 'XVS-BNB ApeLP', + tokenDescription: 'ApeSwap', + tokenAddress: '0x9e199da6f87E09a290724EbA866eEdae2e971A0b', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooApeXVS-BNB', + earnedTokenAddress: '0xaC541bC3434f72AA18d124E5dcb13014aa66eBa7', + earnContractAddress: '0xaC541bC3434f72AA18d124E5dcb13014aa66eBa7', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'banana-xvs-bnb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'ApeSwap', + assets: ['XVS', 'BNB'], + addLiquidityUrl: + 'https://dex.apeswap.finance/#/add/ETH/0xcF6BB5389c92Bdda8a3747Ddb454cB7a64626C63', + buyTokenUrl: + 'https://dex.apeswap.finance/#/swap?outputCurrency=0xcF6BB5389c92Bdda8a3747Ddb454cB7a64626C63', + createdAt: 1625587685, + }, + { + id: 'banana-twt-bnb', + logo: 'degens/BANANA-TWT-BNB.svg', + name: 'TWT-BNB LP', + token: 'TWT-BNB ApeLP', + tokenDescription: 'ApeSwap', + tokenAddress: '0x4c48D692e3de076C7b844B956b28cdd1DD5C0945', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooApeTWT-BNB', + earnedTokenAddress: '0x2EA33e6312010C502E0D3DbDC635C3aF2776C44b', + earnContractAddress: '0x2EA33e6312010C502E0D3DbDC635C3aF2776C44b', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'banana-twt-bnb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'ApeSwap', + assets: ['TWT', 'BNB'], + addLiquidityUrl: + 'https://dex.apeswap.finance/#/add/ETH/0x4B0F1812e5Df2A09796481Ff14017e6005508003', + buyTokenUrl: + 'https://dex.apeswap.finance/#/swap?outputCurrency=0x4090e535f2e251f5f88518998b18b54d26b3b07c', + createdAt: 1625587895, + }, + { + id: 'cakev2-titan-busd-eol', + name: 'TITAN-BUSD LP', + token: 'TITAN-BUSD LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x9392a1f471d9Aa14c0B8EB28bD7a3F4A814727bE', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2TITAN-BUSD', + earnedTokenAddress: '0xab25e8a555ec105BF7835349139808B1d1A979c8', + earnContractAddress: '0xab25e8a555ec105BF7835349139808B1d1A979c8', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-titan-busd', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['TITAN', 'BUSD'], + withdrawalFee: '0%', + retireReason: 'rewards', + removeLiquidityUrl: + 'https://pancakeswap.finance/remove/0xe898EDc43920F357A93083F1d4460437dE6dAeC2/0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56', + buyTokenUrl: + 'https://pancakeswap.finance/swap?inputCurrency=0xe898EDc43920F357A93083F1d4460437dE6dAeC2&outputCurrency=0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56', + createdAt: 1625829534, + }, + { + id: 'cakev2-one-wbnb', + name: 'ONE-BNB LP', + token: 'ONE-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x9D2296e2Fe3CdBf2EB3e3e2CA8811BaFA42eeDFF', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2ONE-WBNB', + earnedTokenAddress: '0xd1fa26820d7c549979790595F5ad9f5D8D16f55f', + earnContractAddress: '0xd1fa26820d7c549979790595F5ad9f5D8D16f55f', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-one-wbnb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'PancakeSwap', + assets: ['ONE', 'BNB'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/0x03fF0ff224f904be3118461335064bB48Df47938/0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c', + buyTokenUrl: + 'https://pancakeswap.finance/swap?inputCurrency=0x03fF0ff224f904be3118461335064bB48Df47938&outputCurrency=0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c', + createdAt: 1625827584, + }, + { + id: 'wex-watch-bnb-eol', + name: 'WATCH-BNB WLP', + token: 'WATCH-BNB WLP', + tokenDescription: 'WaultFinance', + tokenAddress: '0xd10382b532B75bCf58fa5bd5Af2470Bd29031337', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooWaultWATCH-BNB', + earnedTokenAddress: '0xcaB54b92D6Bb43B7d8f6aE3C69C4D032882e7Eac', + earnContractAddress: '0xcaB54b92D6Bb43B7d8f6aE3C69C4D032882e7Eac', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'wex-watch-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['WATCH', 'BNB'], + withdrawalFee: '0%', + retireReason: 'rewards', + removeLiquidityUrl: + 'https://swap.wault.finance/bsc/#/remove/BNB/0x7A9f28EB62C791422Aa23CeAE1dA9C847cBeC9b0', + buyTokenUrl: + 'https://swap.wault.finance/bsc/#/swap?outputCurrency=0x7A9f28EB62C791422Aa23CeAE1dA9C847cBeC9b0', + createdAt: 1624974847, + }, + { + id: 'cakev2-form-busd-eol', + name: 'FORM-BUSD LP', + token: 'FORM-BUSD LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x3E19C18Fe3458A6065D8F0844cB7Eae52C9DAE07', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2FORM-BUSD', + earnedTokenAddress: '0xc093298526c7F477dd9D6Fc49455e5b7a19737df', + earnContractAddress: '0xc093298526c7F477dd9D6Fc49455e5b7a19737df', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-form-busd', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['FORM', 'BUSD'], + retireReason: 'rewards', + addLiquidityUrl: + 'https://pancakeswap.finance/add/0x25A528af62e56512A19ce8c3cAB427807c28CC19/0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56', + buyTokenUrl: + 'https://pancakeswap.finance/swap?inputCurrency=0x25A528af62e56512A19ce8c3cAB427807c28CC19&outputCurrency=0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56', + createdAt: 1625632018, + }, + { + id: 'cakev2-busd-orbs-eol', + name: 'BUSD-ORBS LP', + token: 'BUSD-ORBS LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0xB87b857670A44356f2b70337E0F218713D2378e8', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2BUSD-ORBS', + earnedTokenAddress: '0x37f9560A30C7A603dcAec4EFdcDBc3FfC9E55DF1', + earnContractAddress: '0x37f9560A30C7A603dcAec4EFdcDBc3FfC9E55DF1', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-busd-orbs', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['BUSD', 'ORBS'], + retireReason: 'rewards', + addLiquidityUrl: + 'https://pancakeswap.finance/add/0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56/0xeBd49b26169e1b52c04cFd19FCf289405dF55F80', + buyTokenUrl: + 'https://pancakeswap.finance/swap?inputCurrency=0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56&outputCurrency=0xeBd49b26169e1b52c04cFd19FCf289405dF55F80', + createdAt: 1625604344, + }, + { + id: 'cakev2-bscpad-wbnb', + name: 'BSCPAD-BNB LP', + token: 'BSCPAD-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0xba01662E978DE7d67F8FfC937726215eb8995d17', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2BSCPAD-WBNB', + earnedTokenAddress: '0xf2204ADf10864f29d9D52bDAc43880C0CA6C1C2a', + earnContractAddress: '0xf2204ADf10864f29d9D52bDAc43880C0CA6C1C2a', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-bscpad-wbnb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'PancakeSwap', + assets: ['BSCPAD', 'BNB'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/0x5A3010d4d8D3B5fB49f8B6E57FB9E48063f16700/0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c', + buyTokenUrl: + 'https://pancakeswap.finance/swap?inputCurrency=0x5A3010d4d8D3B5fB49f8B6E57FB9E48063f16700&outputCurrency=0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c', + createdAt: 1625523432, + }, + { + id: 'cakev2-adx-busd-eol', + name: 'ADX-BUSD LP', + token: 'ADX-BUSD LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x0648ff5de80Adf54aAc07EcE2490f50a418Dde23', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2ADX-BUSD', + earnedTokenAddress: '0x36134fa942FEbCF2C7052804f6c2697828D47e51', + earnContractAddress: '0x36134fa942FEbCF2C7052804f6c2697828D47e51', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-adx-busd', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['ADX', 'BUSD'], + retireReason: 'rewards', + addLiquidityUrl: + 'https://pancakeswap.finance/add/0x6bfF4Fb161347ad7de4A625AE5aa3A1CA7077819/0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56', + buyTokenUrl: + 'https://pancakeswap.finance/swap?inputCurrency=0x6bfF4Fb161347ad7de4A625AE5aa3A1CA7077819&outputCurrency=0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56', + createdAt: 1625089092, + }, + { + id: 'cakev2-usdt-usdc', + name: 'USDT-USDC LP', + token: 'USDT-USDC LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0xEc6557348085Aa57C72514D67070dC863C0a5A8c', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2USDT-USDC', + earnedTokenAddress: '0x094259b4A2Bb8fb65e55cD3744ff832a84cdCF37', + earnContractAddress: '0x094259b4A2Bb8fb65e55cD3744ff832a84cdCF37', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-usdt-usdc', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'PancakeSwap', + assets: ['USDT', 'USDC'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/0x55d398326f99059fF775485246999027B3197955/0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d', + buyTokenUrl: + 'https://pancakeswap.finance/swap?inputCurrency=0x55d398326f99059fF775485246999027B3197955&outputCurrency=0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d', + createdAt: 1624921866, + }, + { + id: 'cakev2-cake-usdt', + name: 'CAKE-USDT LP', + token: 'CAKE-USDT LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0xA39Af17CE4a8eb807E076805Da1e2B8EA7D0755b', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2CAKE-USDT', + earnedTokenAddress: '0x969b3fb717C432735088e9e7A7F261F37fb2e526', + earnContractAddress: '0x969b3fb717C432735088e9e7A7F261F37fb2e526', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-cake-usdt', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'PancakeSwap', + assets: ['CAKE', 'USDT'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82/0x55d398326f99059fF775485246999027B3197955', + buyTokenUrl: + 'https://pancakeswap.finance/swap?inputCurrency=0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82&outputCurrency=0x55d398326f99059fF775485246999027B3197955', + createdAt: 1624921366, + }, + { + id: 'merlin-merlin-eol', + logo: 'single-assets/MERL.svg', + name: 'MERL', + token: 'MERL', + tokenDescription: 'Merlin', + tokenAddress: '0xDA360309C59CB8C434b28A91b823344a96444278', + tokenDecimals: 18, + earnedToken: 'mooMerlinMERL', + earnedTokenAddress: '0x6261d793BdAe82842461A72B746bc18a5B7D2Bc4', + earnContractAddress: '0x6261d793BdAe82842461A72B746bc18a5B7D2Bc4', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'MERL', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['MERL'], + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0xDA360309C59CB8C434b28A91b823344a96444278', + createdAt: 1623845585, + }, + { + id: 'cakev2-rabbit-wbnb-eol', + name: 'RABBIT-BNB LP', + token: 'RABBIT-BNB LP', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x04b56A5B3f45CFeaFbfDCFc999c14be5434f2146', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2RABBIT-WBNB', + earnedTokenAddress: '0x034B9C71B18ad97dD6731419D9C830EA97aB41d9', + earnContractAddress: '0x034B9C71B18ad97dD6731419D9C830EA97aB41d9', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-rabbit-wbnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['RABBIT', 'BNB'], + withdrawalFee: '0%', + retireReason: 'rewards', + removeLiquidityUrl: + 'https://pancakeswap.finance/remove/BNB/0x95a1199EBA84ac5f19546519e287d43D2F0E1b41', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x95a1199EBA84ac5f19546519e287d43D2F0E1b41', + createdAt: 1624570674, + }, + { + id: 'cakev2-htb-bnb-eol', + name: 'HTB-BNB LP', + token: 'HTB-BNB LP', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x2a995d355D5df641e878C0F366685741Fd18D004', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2HTB-BNB', + earnedTokenAddress: '0x71dE1F33Cda6a1E7eAA3e939566c911B90aA2f05', + earnContractAddress: '0x71dE1F33Cda6a1E7eAA3e939566c911B90aA2f05', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-htb-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['HTB', 'BNB'], + retireReason: 'rewards', + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0x4e840AADD28DA189B9906674B4Afcb77C128d9ea', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x4e840AADD28DA189B9906674B4Afcb77C128d9ea', + createdAt: 1624290799, + }, + { + id: 'cakev2-wex-wbnb-eol', + name: 'WEX-BNB LP', + token: 'WEX-BNB LP', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x547A355E70cd1F8CAF531B950905aF751dBEF5E6', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2WEX-WBNB', + earnedTokenAddress: '0xC7822D2152B2aa54FbF316C4dADFD2D899F47AD1', + earnContractAddress: '0xC7822D2152B2aa54FbF316C4dADFD2D899F47AD1', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-wex-wbnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['WEX', 'BNB'], + withdrawalFee: '0%', + retireReason: 'rewards', + removeLiquidityUrl: + 'https://pancakeswap.finance/remove/BNB/0xa9c41A46a6B3531d28d5c32F6633dd2fF05dFB90', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0xa9c41A46a6B3531d28d5c32F6633dd2fF05dFB90', + createdAt: 1624565664, + }, + { + id: 'cakev2-waultx-wbnb-eol', + name: 'WAULTx-BNB LP', + token: 'WAULTx-BNB LP', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x3e4370204f598205998143F07ebCC486E441b456', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2WAULTx-WBNB', + earnedTokenAddress: '0x4e1B2951CC4C36D0997B7e2B67Ff957a2D53c17c', + earnContractAddress: '0x4e1B2951CC4C36D0997B7e2B67Ff957a2D53c17c', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-waultx-wbnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['WAULTx', 'BNB'], + retireReason: 'rewards', + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0xB64E638E60D154B43f660a6BF8fD8a3b249a6a21', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0xB64E638E60D154B43f660a6BF8fD8a3b249a6a21', + createdAt: 1624565511, + }, + { + id: 'cakev2-woo-bnb', + name: 'WOO-BNB LP', + token: 'WOO-BNB LP', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x89eE0491CE55d2f7472A97602a95426216167189', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2WOO-BNB', + earnedTokenAddress: '0x3a9CE43546c2D67e18d0699f8B5e9B75292e1806', + earnContractAddress: '0x3a9CE43546c2D67e18d0699f8B5e9B75292e1806', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-woo-bnb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'PancakeSwap', + assets: ['WOO', 'BNB'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0x4691937a7508860F876c9c0a2a617E7d9E945D4B', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x4691937a7508860F876c9c0a2a617E7d9E945D4B', + createdAt: 1624290817, + }, + { + id: 'ica-zbtc-eol', + logo: 'single-assets/ZBTC.svg', + name: 'ZBTC', + token: 'ZBTC', + tokenDescription: 'Icarus', + tokenAddress: '0xD0dff49De3E314FDFD3f93c5EEee7D5d2F5515cD', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooIcarusZBTC', + earnedTokenAddress: '0xd98625cc5d60afBce022a70eEAFa9811F47d6d63', + earnContractAddress: '0xd98625cc5d60afBce022a70eEAFa9811F47d6d63', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'ZBTC', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['ZBTC'], + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0xD0dff49De3E314FDFD3f93c5EEee7D5d2F5515cD', + createdAt: 1624093024, + retiredReason: 'tvl', + }, + { + id: 'ica-zeth-eol', + logo: 'single-assets/ZETH.svg', + name: 'ZETH', + token: 'ZETH', + tokenDescription: 'Icarus', + tokenAddress: '0xdbEb98858f5d4Dca13EA0272B2b786E9415d3992', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooIcarusZETH', + earnedTokenAddress: '0xE1e15BaF9Adb643269b97baDB7fB5fEE4aDC0705', + earnContractAddress: '0xE1e15BaF9Adb643269b97baDB7fB5fEE4aDC0705', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'ZETH', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['ZETH'], + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0xdbEb98858f5d4Dca13EA0272B2b786E9415d3992', + createdAt: 1624022921, + retiredReason: 'tvl', + }, + { + id: 'cakev2-boring-bn-eol', + name: 'BORING-BNB LP', + token: 'BORING-BNB LP', + tokenDescription: 'PancakeSwap', + tokenAddress: '0xDfA808Da5CFB9ABA5Fb3748FF85888F79174F378', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2BORING-BNB', + earnedTokenAddress: '0x4E59eD7b9A88720c7635E26970982bE77ED9cA9B', + earnContractAddress: '0x4E59eD7b9A88720c7635E26970982bE77ED9cA9B', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-boring-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'PancakeSwap', + assets: ['BORING', 'BNB'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0xffEecbf8D7267757c2dc3d13D730E97E15BfdF7F', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0xffEecbf8D7267757c2dc3d13D730E97E15BfdF7F', + createdAt: 1623960439, + }, + { + id: 'cakev2-marsh-bnb-eol', + name: 'MARSH-BNB LP', + token: 'MARSH-BNB LP', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x222F93187f15F354D41Ff6a7703eF7e18cdD5103', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2MARSH-BNB', + earnedTokenAddress: '0x0d7Cc12D33Fc60C59308201f277a88e7Ff8Df681', + earnContractAddress: '0x0d7Cc12D33Fc60C59308201f277a88e7Ff8Df681', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-marsh-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['MARSH', 'BNB'], + retireReason: 'rewards', + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0x2FA5dAF6Fe0708fBD63b1A7D1592577284f52256', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x2FA5dAF6Fe0708fBD63b1A7D1592577284f52256', + createdAt: 1623960469, + }, + { + id: 'cakev2-hai-bnb-eol', + name: 'HAI-BNB LP', + token: 'HAI-BNB LP', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x289841bFb694767bCb56fBc7B741aB4B4D97D490', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2HAI-BNB', + earnedTokenAddress: '0x36591BB1f679e5deE9f454A7909CDaC84cc6828e', + earnContractAddress: '0x36591BB1f679e5deE9f454A7909CDaC84cc6828e', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-hai-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['HAI', 'BNB'], + retireReason: 'rewards', + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0xaA9E582e5751d703F85912903bacADdFed26484C', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0xaA9E582e5751d703F85912903bacADdFed26484C', + createdAt: 1623960421, + }, + { + id: 'cakev2-o3-busd-eol', + name: 'O3-BUSD LP', + token: 'O3-BUSD LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x7759283571Da8c0928786A96AE601944E10461Ff', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2O3-BUSD', + earnedTokenAddress: '0xfF36953Cc5B159FE31FBf5E68a3B4BD6010cdeed', + earnContractAddress: '0xfF36953Cc5B159FE31FBf5E68a3B4BD6010cdeed', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-o3-busd', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'PancakeSwap', + assets: ['O3', 'BUSD'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/0xEe9801669C6138E84bD50dEB500827b776777d28/0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56', + buyTokenUrl: + 'https://pancakeswap.finance/swap?inputCurrency=0xEe9801669C6138E84bD50dEB500827b776777d28&outputCurrency=0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56', + createdAt: 1623960608, + }, + { + id: 'wex-eth-beth-eol', + logo: 'eth-pairs/BETH-ETH.svg', + name: 'ETH-BETH WLP', + token: 'ETH-BETH WLP', + tokenDescription: 'WaultFinance', + tokenAddress: '0x11040f3c467993556B19813d4A18b684598Ba4BD', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooWaultETH-BETH', + earnedTokenAddress: '0x71f20694f66432f08A0D0B71a07A7CBDeA40971E', + earnContractAddress: '0x71f20694f66432f08A0D0B71a07A7CBDeA40971E', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'wex-eth-beth', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Other', + assets: ['ETH', 'BETH'], + addLiquidityUrl: + 'https://swap.wault.finance/bsc/#/add/0x2170Ed0880ac9A755fd29B2688956BD959F933F8/0x250632378E573c6Be1AC2f97Fcdf00515d0Aa91B', + buyTokenUrl: + 'https://swap.wault.finance/bsc/#/swap?inputCurrency=0x2170Ed0880ac9A755fd29B2688956BD959F933F8&outputCurrency=0x250632378E573c6Be1AC2f97Fcdf00515d0Aa91B', + createdAt: 1623755000, + }, + { + id: 'iron-steel-iron', + logo: 'degens/IRON.png', + name: 'STEEL-IRON LP', + token: 'STEEL-IRON LP', + tokenDescription: 'PancakeSwap (Iron)', + tokenAddress: '0x453a688c33696c42a73230B0b3AC1e4676D32aA6', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooIronSTEEL-IRON', + earnedTokenAddress: '0x1384Ed18E881C0CC9027DC04ab88bFBF641c6106', + earnContractAddress: '0x1384Ed18E881C0CC9027DC04ab88bFBF641c6106', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'iron-steel-iron', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['STEEL', 'IRON'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/0x7b65B489fE53fCE1F6548Db886C08aD73111DDd8/0x9001eE054F1692feF3A48330cB543b6FEc6287eb', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x9001eE054F1692feF3A48330cB543b6FEc6287eb', + createdAt: 1620995742, + }, + { + id: 'iron-steel', + logo: 'single-assets/STEEL.png', + name: 'STEEL', + token: 'STEEL', + tokenDescription: 'Iron Finance', + tokenAddress: '0x9001eE054F1692feF3A48330cB543b6FEc6287eb', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooIronSTEEL', + earnedTokenAddress: '0xb20D8dA939089ebCaCd8C8b0b5c868Fb2d349733', + earnContractAddress: '0xb20D8dA939089ebCaCd8C8b0b5c868Fb2d349733', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'STEEL', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['STEEL'], + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x9001eE054F1692feF3A48330cB543b6FEc6287eb', + createdAt: 1623689407, + }, + { + id: 'memefarmv2-ape-bnb-eol', + logo: 'degens/ape-bnb.png', + name: 'APE-BNB LP', + token: 'APE-BNB LP2', + tokenDescription: 'PancakeSwap (MemeFarm)', + tokenAddress: '0x08a2749863D8353dcEe9869131192784E783F48a', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooMemefarmV2APE-BNB', + earnedTokenAddress: '0x1eda2b152742A9965e4692eDA509802755303373', + earnContractAddress: '0x1eda2b152742A9965e4692eDA509802755303373', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'memefarmv2-ape-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['APE', 'BNB'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0xa9eA4b786ee5b7A733c035564Bfd9341A4c9FC1e', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0xa9eA4b786ee5b7A733c035564Bfd9341A4c9FC1e', + createdAt: 1623756710, + }, + { + id: 'cakev2-ampl-bsc-mp-busd-eol', + logo: 'cake-pairs/ampl-bsc-mp-busd.svg', + name: 'AMPL-BSC-mp-BUSD LP', + token: 'AMPL-BSC-mp-BUSD LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x6E98Beb694Ff1CDb1eE130eDD2b21b0298683d58', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2AMPL-BSC-MP-BUSD', + earnedTokenAddress: '0x6F327421a2B4c96C3E6e7e9588423F02A5A0165B', + earnContractAddress: '0x6F327421a2B4c96C3E6e7e9588423F02A5A0165B', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-ampl-bsc-mp-busd', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['AMPL-BSC-mp', 'BUSD'], + retireReason: 'rewards', + addLiquidityUrl: + 'https://pancakeswap.finance/add/0xDB021b1B247fe2F1fa57e0A87C748Cc1E321F07F/0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56', + buyTokenUrl: + 'https://pancakeswap.finance/swap?inputCurrency=0xDB021b1B247fe2F1fa57e0A87C748Cc1E321F07F&outputCurrency=0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56', + createdAt: 1623667082, + }, + { + id: 'wex-eth-bnb-eol', + logo: 'eth-pairs/ETH-BNB.png', + name: 'ETH-BNB WLP', + token: 'ETH-BNB WLP', + tokenDescription: 'WaultFinance', + tokenAddress: '0x04253aB3ff54D2E03b717BF6810a0a2Fd228365a', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooWaultETH-BNB', + earnedTokenAddress: '0x8B238319E06009F5A8d89BC4667727f9624E52E1', + earnContractAddress: '0x8B238319E06009F5A8d89BC4667727f9624E52E1', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'wex-eth-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Other', + assets: ['ETH', 'BNB'], + addLiquidityUrl: + 'https://swap.wault.finance/bsc/#/add/0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c/0x2170ed0880ac9a755fd29b2688956bd959f933f8', + buyTokenUrl: + 'https://swap.wault.finance/bsc/#/swap?inputCurrency=0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c&outputCurrency=0x2170ed0880ac9a755fd29b2688956bd959f933f8', + createdAt: 1623254324, + }, + { + id: 'wex-usdt-alpaca-eol', + logo: 'usdt-pairs/ALPACA-USDT.png', + name: 'USDT-ALPACA WLP', + token: 'USDT-ALPACA WLP', + tokenDescription: 'WaultFinance', + tokenAddress: '0xCb1b3C77606c61C9C2eCA86f554f5806343757AD', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooWaultUSDT-ALPACA', + earnedTokenAddress: '0x68f967F903Fb99D6e00d825ebaE482bE031584dA', + earnContractAddress: '0x68f967F903Fb99D6e00d825ebaE482bE031584dA', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'wex-usdt-alpaca', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Other', + assets: ['USDT', 'ALPACA'], + addLiquidityUrl: + 'https://swap.wault.finance/bsc/#/add/0x55d398326f99059ff775485246999027b3197955/0x8f0528ce5ef7b51152a59745befdd91d97091d2f', + buyTokenUrl: + 'https://swap.wault.finance/bsc/#/swap?inputCurrency=0x55d398326f99059ff775485246999027b3197955&outputCurrency=0x8f0528ce5ef7b51152a59745befdd91d97091d2f', + createdAt: 1623252458, + }, + { + id: 'wex-usdt-matic-eol', + logo: 'usdt-pairs/MATIC-USDT.png', + name: 'USDT-MATIC WLP', + token: 'USDT-MATIC WLP', + tokenDescription: 'WaultFinance', + tokenAddress: '0x4aeA71115DAB37e79C0005a042d6c3985255f3CB', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooWaultUSDT-MATIC', + earnedTokenAddress: '0x6Bc93525A78c151c6392b93A3f1E2DB7313fc2c7', + earnContractAddress: '0x6Bc93525A78c151c6392b93A3f1E2DB7313fc2c7', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'wex-usdt-matic', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Other', + assets: ['USDT', 'MATIC'], + addLiquidityUrl: + 'https://swap.wault.finance/bsc/#/add/0x55d398326f99059ff775485246999027b3197955/0xcc42724c6683b7e57334c4e856f4c9965ed682bd', + buyTokenUrl: + 'https://swap.wault.finance/bsc/#/swap?inputCurrency=0x55d398326f99059ff775485246999027b3197955&outputCurrency=0xcc42724c6683b7e57334c4e856f4c9965ed682bd', + createdAt: 1623252284, + }, + { + id: 'wex-ada-busd-eol', + logo: 'busd-pairs/ADA-BUSD.png', + name: 'ADA-BUSD WLP', + token: 'ADA-BUSD WLP', + tokenDescription: 'WaultFinance', + tokenAddress: '0xB24a49d02380fCDFbc320c25B0dCa997d2ed435D', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooWaultADA-BUSD', + earnedTokenAddress: '0x847bA37DeE3d8757cB2493e14715ba079afe6865', + earnContractAddress: '0x847bA37DeE3d8757cB2493e14715ba079afe6865', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'wex-ada-busd', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Other', + assets: ['ADA', 'BUSD'], + addLiquidityUrl: + 'https://swap.wault.finance/bsc/#/add/0xe9e7cea3dedca5984780bafc599bd69add087d56/0x3ee2200efb3400fabb9aacf31297cbdd1d435d47', + buyTokenUrl: + 'https://swap.wault.finance/bsc/#/swap?inputCurrency=0xe9e7cea3dedca5984780bafc599bd69add087d56&outputCurrency=0x3ee2200efb3400fabb9aacf31297cbdd1d435d47', + createdAt: 1623451205, + }, + { + id: 'wex-xrp-busd-eol', + logo: 'busd-pairs/XRP-BUSD.png', + name: 'XRP-BUSD WLP', + token: 'XRP-BUSD WLP', + tokenDescription: 'WaultFinance', + tokenAddress: '0x0e3ccA3D602eBEA46CF349B991Ee0d857A096d3D', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooWaultXRP-BUSD', + earnedTokenAddress: '0x3b82B5740505908E181c9449E23f89Dc9F19B7a4', + earnContractAddress: '0x3b82B5740505908E181c9449E23f89Dc9F19B7a4', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'wex-xrp-busd', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['XRP', 'BUSD'], + withdrawalFee: '0%', + retireReason: 'rewards', + removeLiquidityUrl: + 'https://swap.wault.finance/bsc/#/remove/0xe9e7cea3dedca5984780bafc599bd69add087d56/0x1d2f0da169ceb9fc7b3144628db156f3f6c60dbe', + buyTokenUrl: + 'https://swap.wault.finance/bsc/#/swap?inputCurrency=0xe9e7cea3dedca5984780bafc599bd69add087d56&outputCurrency=0x1d2f0da169ceb9fc7b3144628db156f3f6c60dbe', + createdAt: 1623449312, + }, + { + id: 'wex-alpaca-bnb-eol', + logo: 'bnb-pairs/ALPACA-BNB.png', + name: 'ALPACA-BNB WLP', + token: 'ALPACA-BNB WLP', + tokenDescription: 'WaultFinance', + tokenAddress: '0xC70fE75DAE1d69245F315Cec8BF4aebe41893807', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooWaultALPACA-BNB', + earnedTokenAddress: '0xD2111F59eaE79B7066D2B5970D6755d2e3bEa358', + earnContractAddress: '0xD2111F59eaE79B7066D2B5970D6755d2e3bEa358', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'wex-alpaca-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Other', + assets: ['ALPACA', 'BNB'], + addLiquidityUrl: + 'https://swap.wault.finance/bsc/#/add/BNB/0x8f0528ce5ef7b51152a59745befdd91d97091d2f', + buyTokenUrl: + 'https://swap.wault.finance/bsc/#/swap?outputCurrency=0x8f0528ce5ef7b51152a59745befdd91d97091d2f', + createdAt: 1623240769, + }, + { + id: 'wex-usdt-wex-eol', + logo: 'usdt-pairs/WEX-USDT.png', + name: 'USDT-WEX WLP', + token: 'USDT-WEX WLP', + tokenDescription: 'WaultFinance', + tokenAddress: '0x50e8D9Aa83eBDe9608074eC1faaDfD2E792D9B81', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooWaultUSDT-WEX', + earnedTokenAddress: '0xdC048A42a6a57483EDC40C549b58d3A5fE5E5218', + earnContractAddress: '0xdC048A42a6a57483EDC40C549b58d3A5fE5E5218', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'wex-usdt-wex', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Other', + assets: ['USDT', 'WEX'], + addLiquidityUrl: + 'https://swap.wault.finance/bsc/#/add/0x55d398326f99059ff775485246999027b3197955/0xa9c41a46a6b3531d28d5c32f6633dd2ff05dfb90', + buyTokenUrl: + 'https://swap.wault.finance/bsc/#/swap?inputCurrency=0x55d398326f99059ff775485246999027b3197955&outputCurrency=0xa9c41a46a6b3531d28d5c32f6633dd2ff05dfb90', + createdAt: 1623240504, + }, + { + id: 'wex-wex-bnb-eol', + logo: 'bnb-pairs/WEX-BNB.png', + name: 'WEX-BNB WLP', + token: 'WEX-BNB WLP', + tokenDescription: 'WaultFinance', + tokenAddress: '0xb4814f1ca673dBE9a2637C5dd4e94A4a0ED834C6', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooWaultWEX-BNB', + earnedTokenAddress: '0x8988EE959828A41872734D1408d7dC612f085872', + earnContractAddress: '0x8988EE959828A41872734D1408d7dC612f085872', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'wex-wex-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Other', + assets: ['WEX', 'BNB'], + addLiquidityUrl: + 'https://swap.wault.finance/bsc/#/add/0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c/0xa9c41a46a6b3531d28d5c32f6633dd2ff05dfb90', + buyTokenUrl: + 'https://swap.wault.finance/bsc/#/swap?inputCurrency=0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c&outputCurrency=0xa9c41a46a6b3531d28d5c32f6633dd2ff05dfb90', + createdAt: 1623254549, + }, + { + id: 'cakev2-btcb-eth', + logo: 'cake-pairs/btcb-eth.svg', + name: 'BTCB-ETH LP', + token: 'BTCB-ETH LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0xD171B26E4484402de70e3Ea256bE5A2630d7e88D', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2BTCB-ETH', + earnedTokenAddress: '0xEf43E54Bb4221106953951238FC301a1f8939490', + earnContractAddress: '0xEf43E54Bb4221106953951238FC301a1f8939490', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-btcb-eth', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'PancakeSwap', + assets: ['ETH', 'BTCB'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/0x2170Ed0880ac9A755fd29B2688956BD959F933F8/0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c', + buyTokenUrl: + 'https://pancakeswap.finance/swap?inputCurrency=0x2170Ed0880ac9A755fd29B2688956BD959F933F8&outputCurrency=0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c', + createdAt: 1623360754, + }, + { + id: 'cakev2-eth-usdc', + logo: 'cake-pairs/eth-usdc.svg', + name: 'ETH-USDC LP', + token: 'ETH-USDC LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0xEa26B78255Df2bBC31C1eBf60010D78670185bD0', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2ETH-USDC', + earnedTokenAddress: '0x26107644A6dbC38385F4B7263d9bA96D829eC090', + earnContractAddress: '0x26107644A6dbC38385F4B7263d9bA96D829eC090', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-eth-usdc', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'PancakeSwap', + assets: ['ETH', 'USDC'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/0x2170Ed0880ac9A755fd29B2688956BD959F933F8/0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d', + buyTokenUrl: + 'https://pancakeswap.finance/swap?inputCurrency=0x2170Ed0880ac9A755fd29B2688956BD959F933F8&outputCurrency=0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d', + createdAt: 1623366577, + }, + { + id: 'banana-typh-bnb-eol', + logo: 'bnb-pairs/typh-bnb.svg', + name: 'TYPH-BNB LP', + token: 'TYPH-BNB ApeLP', + tokenDescription: 'ApeSwap', + tokenAddress: '0xFEaf192c2662E5700bDa860c58d2686d9cc12Ec8', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooApeTYPH-BNB', + earnedTokenAddress: '0xdAfE6095F8e2509CfF05E489eE971dB0EdED8d6f', + earnContractAddress: '0xdAfE6095F8e2509CfF05E489eE971dB0EdED8d6f', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'banana-typh-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'ApeSwap', + assets: ['TYPH', 'BNB'], + addLiquidityUrl: + 'https://dex.apeswap.finance/#/add/ETH/0x4090e535f2e251f5f88518998b18b54d26b3b07c', + buyTokenUrl: + 'https://dex.apeswap.finance/#/swap?outputCurrency=0x4090e535f2e251f5f88518998b18b54d26b3b07c', + createdAt: 1623306007, + }, + { + id: 'tenfi-tenfi-bnb', + logo: 'single-assets/TENFI.png', + name: 'TENFI-BNB LP', + token: 'TENFI-BNB LP', + tokenDescription: 'PancakeSwap (Ten)', + tokenAddress: '0x09F39f9B7d6395155396Fed7347620dD54Da1dc6', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooTenTEN-BNB', + earnedTokenAddress: '0x0Ce6FeC7521b7d054b5B0a5F43D49120f9d6CFbc', + earnContractAddress: '0x0Ce6FeC7521b7d054b5B0a5F43D49120f9d6CFbc', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'tenfi-tenfi-bnb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Other', + assets: ['TENFI', 'BNB'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0xd15c444f1199ae72795eba15e8c1db44e47abf62', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0xd15c444f1199ae72795eba15e8c1db44e47abf62', + createdAt: 1623240043, + }, + { + id: 'tenfi-tenfi-busd', + logo: 'single-assets/TENFI.png', + name: 'TENFI-BUSD LP', + token: 'TENFI-BUSD LP', + tokenDescription: 'PancakeSwap (Ten)', + tokenAddress: '0xac6EE351e2E9108f03c7F5c49296505B8F336Be3', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooTenTEN-BUSD', + earnedTokenAddress: '0x00F204F524a433f45a6278c2C0E10F5292b3C5B9', + earnContractAddress: '0x00F204F524a433f45a6278c2C0E10F5292b3C5B9', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'tenfi-tenfi-busd', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Other', + assets: ['TENFI', 'BUSD'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56/0xd15c444f1199ae72795eba15e8c1db44e47abf62', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0xd15c444f1199ae72795eba15e8c1db44e47abf62', + createdAt: 1623240420, + }, + { + id: 'cakev2-mbox-bnb-eol', + logo: 'bnb-pairs/MBOX-BNB.svg', + name: 'MBOX-BNB LP', + token: 'MBOX-BNB LP', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x8FA59693458289914dB0097F5F366d771B7a7C3F', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2MBOX-BNB', + earnedTokenAddress: '0x2Dd2a81d1B44723f6106f621d0D64848fbdbCc77', + earnContractAddress: '0x2Dd2a81d1B44723f6106f621d0D64848fbdbCc77', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-mbox-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['MBOX', 'BNB'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0x3203c9e46ca618c8c1ce5dc67e7e9d75f5da2377', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x3203c9e46ca618c8c1ce5dc67e7e9d75f5da2377', + createdAt: 1623165437, + retiredReason: 'tvl', + }, + { + id: 'banana-celr-bnb', + logo: 'bnb-pairs/CELR-BNB.svg', + name: 'CELR-BNB LP', + token: 'CELR-BNB LP', + tokenDescription: 'ApeSwap', + tokenAddress: '0xB7F42e58Cf2364ac994F93f7afF3b158CFA3dC76', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooApeCELR-BNB', + earnedTokenAddress: '0x04E56F75EDD898BEe4A136bDBAb2b47Be59109c8', + earnContractAddress: '0x04E56F75EDD898BEe4A136bDBAb2b47Be59109c8', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'banana-celr-bnb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'ApeSwap', + assets: ['CELR', 'BNB'], + addLiquidityUrl: + 'https://dex.apeswap.finance/#/add/ETH/0x1f9f6a696C6Fd109cD3956F45dC709d2b3902163', + buyTokenUrl: + 'https://dex.apeswap.finance/#/swap?outputCurrency=0x1f9f6a696C6Fd109cD3956F45dC709d2b3902163', + createdAt: 1623097537, + }, + { + id: 'banana-shib-bnb', + logo: 'bnb-pairs/SHIB-BNB.svg', + name: 'SHIB-BNB LP', + token: 'SHIB-BNB LP', + tokenDescription: 'ApeSwap', + tokenAddress: '0xC0AFB6078981629F7eAe4f2ae93b6DBEA9D7a7e9', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooApeSHIB-BNB', + earnedTokenAddress: '0x25699A5Bdcb524e3030a89c2f5088a076DC562bC', + earnContractAddress: '0x25699A5Bdcb524e3030a89c2f5088a076DC562bC', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'banana-shib-bnb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'ApeSwap', + assets: ['SHIB', 'BNB'], + addLiquidityUrl: + 'https://dex.apeswap.finance/#/add/ETH/0x2859e4544C4bB03966803b044A93563Bd2D0DD4D', + buyTokenUrl: + 'https://dex.apeswap.finance/#/swap?outputCurrency=0x2859e4544C4bB03966803b044A93563Bd2D0DD4D', + createdAt: 1623096325, + }, + { + id: 'cakev2-ata-bnb-eol', + logo: 'bnb-pairs/ATA-BNB.svg', + name: 'ATA-BNB LP', + token: 'ATA-BNB LP', + tokenDescription: 'PancakeSwap', + tokenAddress: '0xeF7767677867552CFA699148b96a03358A9be779', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2ATA-BNB', + earnedTokenAddress: '0x76746cDb7C1DDA92c6211D5Cc4bC03859c5Ee8a1', + earnContractAddress: '0x76746cDb7C1DDA92c6211D5Cc4bC03859c5Ee8a1', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-ata-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['ATA', 'BNB'], + retireReason: 'rewards', + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0xa2120b9e674d3fc3875f415a7df52e382f141225', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0xa2120b9e674d3fc3875f415a7df52e382f141225', + createdAt: 1623064219, + }, + { + id: 'panther-panther-busd-eol', + logo: 'degens/panther-busd.png', + name: 'PANTHER-BUSD LP', + token: 'PANTHER-BUSD LP', + tokenDescription: 'PantherSwap', + tokenAddress: '0x9287F5Ad55D7eE8EAE90B865718EB9A7cF3fb71A', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPantherPANTHER-BUSD', + earnedTokenAddress: '0x3f8664Bc085aCceb2bC311C0F56bAA44F9C17204', + earnContractAddress: '0x3f8664Bc085aCceb2bC311C0F56bAA44F9C17204', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'panther-panther-busd', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Other', + assets: ['PANTHER', 'BUSD'], + addLiquidityUrl: + 'https://dex.pantherswap.com/#/add/0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56/0x1f546aD641B56b86fD9dCEAc473d1C7a357276B7', + buyTokenUrl: + 'https://dex.pantherswap.com/#/swap?outputCurrency=0x1f546ad641b56b86fd9dceac473d1c7a357276b7', + createdAt: 1622797586, + }, + { + id: 'panther-panther-bnb-eol', + logo: 'degens/panther-bnb.png', + name: 'PANTHER-BNB LP', + token: 'PANTHER-BNB LP', + tokenDescription: 'PantherSwap', + tokenAddress: '0xC24AD5197DaeFD97DF28C70AcbDF17d9fF92a49B', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPantherPANTHER-BNB', + earnedTokenAddress: '0xF2E57C6156aE3bFD107AE6187D53dd621D508D02', + earnContractAddress: '0xF2E57C6156aE3bFD107AE6187D53dd621D508D02', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'panther-panther-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Other', + assets: ['PANTHER', 'BNB'], + addLiquidityUrl: + 'https://dex.pantherswap.com/#/add/ETH/0x1f546aD641B56b86fD9dCEAc473d1C7a357276B7', + buyTokenUrl: + 'https://dex.pantherswap.com/#/swap?outputCurrency=0x1f546ad641b56b86fd9dceac473d1c7a357276b7', + createdAt: 1622799050, + }, + { + id: 'garuda-garuda-bnb', + logo: 'degens/garuda-bnb.png', + name: 'GARUDA-BNB LP', + token: 'GARUDA-BNB LP', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x1AB609b5d930c64Be12A05D040A9822b0Da84A8F', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooGarudaGARUDA-BNB', + earnedTokenAddress: '0xeC16330D826459C8497Cb7B5e44f8Aa88f28470B', + earnContractAddress: '0xeC16330D826459C8497Cb7B5e44f8Aa88f28470B', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'garuda-garuda-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['GARUDA', 'BNB'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0x854086dC841e1bfae50Cb615bF41f55BF432a90b', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x854086dC841e1bfae50Cb615bF41f55BF432a90b', + createdAt: 1620992847, + }, + { + id: 'cakev2-mtrg-busd-eol', + logo: 'busd-pairs/MTRG-BUSD.svg', + name: 'MTRG-BUSD LP', + token: 'MTRG-BUSD LP', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x4dcA4D427511bC327639b222DA18FA5e334F686F', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2MTRG-BUSD', + earnedTokenAddress: '0xD1A43172f05D0D9a3DD1B9c861332378FdaDB88c', + earnContractAddress: '0xD1A43172f05D0D9a3DD1B9c861332378FdaDB88c', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-mtrg-busd', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'PancakeSwap', + assets: ['MTRG', 'BUSD'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/0xBd2949F67DcdC549c6Ebe98696449Fa79D988A9F/0xe9e7cea3dedca5984780bafc599bd69add087d56', + buyTokenUrl: + 'https://pancakeswap.finance/swap?inputCurrency=0xe9e7cea3dedca5984780bafc599bd69add087d56&outputCurrency=0xBd2949F67DcdC549c6Ebe98696449Fa79D988A9F', + createdAt: 1622808356, + }, + { + id: 'cakev2-qkc-busd-eol', + logo: 'busd-pairs/QKC-BUSD.svg', + name: 'QKC-BUSD LP', + token: 'QKC-BUSD LP', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x8853E3309a31583eA438F7704681F46F0D4D909b', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2QKC-BUSD', + earnedTokenAddress: '0xE61b206339EA172824fBF334cADFe2A6b0dEbAeD', + earnContractAddress: '0xE61b206339EA172824fBF334cADFe2A6b0dEbAeD', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-qkc-busd', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['QKC', 'BUSD'], + retireReason: 'rewards', + addLiquidityUrl: + 'https://pancakeswap.finance/add/0xa1434f1fc3f437fa33f7a781e041961c0205b5da/0xe9e7cea3dedca5984780bafc599bd69add087d56', + buyTokenUrl: + 'https://pancakeswap.finance/swap?inputCurrency=0xe9e7cea3dedca5984780bafc599bd69add087d56&outputCurrency=0xa1434f1fc3f437fa33f7a781e041961c0205b5da', + createdAt: 1622808107, + }, + { + id: 'cakev2-mx-busd-eol', + logo: 'busd-pairs/MX-BUSD.svg', + name: 'MX-BUSD LP', + token: 'MX-BUSD LP', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x41F049D990D38305504631C9835f6F856Bf1BA67', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2MX-BUSD', + earnedTokenAddress: '0x7e7CEbCC006c74a406138BF94CA3815CE04461e0', + earnContractAddress: '0x7e7CEbCC006c74a406138BF94CA3815CE04461e0', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-mx-busd', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['MX', 'BUSD'], + retireReason: 'rewards', + addLiquidityUrl: + 'https://pancakeswap.finance/add/0x9f882567a62a5560d147d64871776eea72df41d3/0xe9e7cea3dedca5984780bafc599bd69add087d56', + buyTokenUrl: + 'https://pancakeswap.finance/swap?inputCurrency=0xe9e7cea3dedca5984780bafc599bd69add087d56&outputCurrency=0x9f882567a62a5560d147d64871776eea72df41d3', + createdAt: 1622801174, + }, + { + id: 'cakev2-ktn-bnb-eol', + logo: 'bnb-pairs/KTN-BNB.svg', + name: 'KTN-BNB LP', + token: 'KTN-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x48028De4A9b0d3D91180333d796021ec7757bA1B', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2KTN-BNB', + earnedTokenAddress: '0xBD322911Bd9E944743CDb88Cb5f9da33B5CD55BE', + earnContractAddress: '0xBD322911Bd9E944743CDb88Cb5f9da33B5CD55BE', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-ktn-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'PancakeSwap', + assets: ['KTN', 'BNB'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0xDAe6c2A48BFAA66b43815c5548b10800919c993E', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0xDAe6c2A48BFAA66b43815c5548b10800919c993E', + createdAt: 1622633223, + }, + { + id: 'ellipsis-eps-eol', + logo: 'single-assets/EPS.png', + name: 'EPS', + token: 'EPS', + tokenDescription: 'Ellipsis', + tokenAddress: '0xA7f552078dcC247C2684336020c03648500C6d9F', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooEllipsisEPS', + earnedTokenAddress: '0x0CDAf84f90F0BBFF225A82D7165967Fff93A7bea', + earnContractAddress: '0x0CDAf84f90F0BBFF225A82D7165967Fff93A7bea', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'EPS', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Ellipsis', + assets: ['EPS'], + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0xA7f552078dcC247C2684336020c03648500C6d9F', + createdAt: 1622492691, + retiredReason: 'tvl', + }, + { + id: 'dopple-dop-lp', + logo: 'uncategorized/DOPPLE-DOP-LP.svg', + name: 'BUSD/USDT/USDC/DAI', + token: 'BUSD/USDT/USDC/DAI', + tokenDescription: 'Dopple', + tokenAddress: '0x9116F04092828390799514Bac9986529d70c3791', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooDoppleDopLP', + earnedTokenAddress: '0x8464365600d6A1b86A7f7c80DCD63AFa861069dB', + earnContractAddress: '0x8464365600d6A1b86A7f7c80DCD63AFa861069dB', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'dopple-dop-lp', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + assets: ['BUSD', 'USDT', 'USDC', 'DAI'], + platform: 'Other', + withdrawalFee: '0%', + addLiquidityUrl: 'https://dopple.finance/Deposit/dop-lps', + createdAt: 1621853505, + }, + { + id: 'cakev2-tusd-busd-eol', + logo: 'busd-pairs/TUSD-BUSD.svg', + name: 'TUSD-BUSD LP', + token: 'TUSD-BUSD LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x2E28b9B74D6d99D4697e913b82B41ef1CAC51c6C', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2TUSD-BUSD', + earnedTokenAddress: '0x62Cce60Bca43926e062ca2A4e2DcdAbEA5D2EAD2', + earnContractAddress: '0x62Cce60Bca43926e062ca2A4e2DcdAbEA5D2EAD2', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-tusd-busd', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['TUSD', 'BUSD'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/0xe9e7cea3dedca5984780bafc599bd69add087d56/0x14016e85a25aeb13065688cafb43044c2ef86784', + buyTokenUrl: + 'https://pancakeswap.finance/swap?inputCurrency=0xe9e7cea3dedca5984780bafc599bd69add087d56&outputCurrency=0x14016e85a25aeb13065688cafb43044c2ef86784', + createdAt: 1622579735, + retiredReason: 'tvl', + }, + { + id: 'mdex-bsc-bnb-usdt-eol', + logo: 'usdt-pairs/BNB-USDT.png', + name: 'BNB-USDT LP', + token: 'BNB-USDT LP', + tokenDescription: 'Mdex', + tokenAddress: '0x09CB618bf5eF305FadfD2C8fc0C26EeCf8c6D5fd', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooMdexBNB-USDT', + earnedTokenAddress: '0x7638db36fc21E030D5F8158B27181c3b27418bE2', + earnContractAddress: '0x7638db36fc21E030D5F8158B27181c3b27418bE2', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'mdex-bsc-bnb-usdt', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Mdex', + assets: ['BNB', 'USDT'], + buyTokenUrl: + 'https://bsc.mdex.com/#/swap?outputCurrency=0x55d398326f99059fF775485246999027B3197955', + addLiquidityUrl: 'https://bsc.mdex.com/#/add/BNB/0x55d398326f99059fF775485246999027B3197955', + createdAt: 1622469917, + retiredReason: 'tvl', + }, + { + id: 'mdex-bsc-fil-usdt-eol', + logo: 'usdt-pairs/FIL-USDT.png', + name: 'FIL-USDT LP', + token: 'FIL-USDT LP', + tokenDescription: 'Mdex', + tokenAddress: '0xCAABda10a3ac99Fc15f5B636Aa18E6B4Fd8db16D', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooMdexFIL-USDT', + earnedTokenAddress: '0xE4E5795596E153e8f39D35Ff8559ae4D7bd03622', + earnContractAddress: '0xE4E5795596E153e8f39D35Ff8559ae4D7bd03622', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'mdex-bsc-fil-usdt', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'tvl', + platform: 'Mdex', + assets: ['FIL', 'USDT'], + buyTokenUrl: + 'https://bsc.mdex.com/#/swap?inputCurrency=0x55d398326f99059ff775485246999027b3197955&outputCurrency=0x0d8ce2a99bb6e3b7db580ed848240e4a0f9ae153', + addLiquidityUrl: + 'https://bsc.mdex.com/#/add/0x0d8ce2a99bb6e3b7db580ed848240e4a0f9ae153/0x55d398326f99059fF775485246999027B3197955', + createdAt: 1622290867, + }, + { + id: 'cakev2-vrt-bnb-eol', + logo: 'bnb-pairs/VRT-BNB.svg', + name: 'VRT-BNB LP', + token: 'VRT-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0xEf5212aDa83EC2cc105C409DF10b8806D20E3b35', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2VRT-BNB', + earnedTokenAddress: '0xA8cC688E9B387b0cBe41D0CcF55875CE2318695A', + earnContractAddress: '0xA8cC688E9B387b0cBe41D0CcF55875CE2318695A', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-vrt-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['VRT', 'BNB'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0x5f84ce30dc3cf7909101c69086c50de191895883', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x5f84ce30dc3cf7909101c69086c50de191895883', + createdAt: 1622289628, + }, + { + id: 'cakev2-ez-bnb-eol', + logo: 'bnb-pairs/EZ-BNB.svg', + name: 'EZ-BNB LP', + token: 'EZ-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x51BF99bBae59b67E5cE2fA9c17b683384773F8b3', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2EZ-BNB', + earnedTokenAddress: '0x3Ee4b86Bf6BbceBf46695C0F3703F87Ff18a776b', + earnContractAddress: '0x3Ee4b86Bf6BbceBf46695C0F3703F87Ff18a776b', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-ez-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['EZ', 'BNB'], + retireReason: 'rewards', + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0x5512014efa6cd57764fa743756f7a6ce3358cc83', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x5512014efa6cd57764fa743756f7a6ce3358cc83', + createdAt: 1622289457, + }, + { + id: 'cakev2-kalm-bnb-eol', + logo: 'bnb-pairs/KALM-BNB.svg', + name: 'KALM-BNB LP', + token: 'KALM-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0xc74f7243766269DeC5b85b0eF4aF186e909c1b06', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2KALM-BNB', + earnedTokenAddress: '0x487D8014F8803757e0542e127854DEBd213A39e5', + earnContractAddress: '0x487D8014F8803757e0542e127854DEBd213A39e5', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-kalm-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['KALM', 'BNB'], + withdrawalFee: '0%', + retireReason: 'rewards', + removeLiquidityUrl: + 'https://pancakeswap.finance/remove/BNB/0x4ba0057f784858a48fe351445c672ff2a3d43515', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x4ba0057f784858a48fe351445c672ff2a3d43515', + createdAt: 1622289670, + }, + { + id: 'jetswap-wings-eol', + logo: 'degens/WINGS.svg', + name: 'WINGS', + token: 'WINGS', + tokenDescription: 'JetSwap', + tokenAddress: '0x0487b824c8261462F88940f97053E65bDb498446', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooJetswapWINGS', + earnedTokenAddress: '0x5e784882E8D2ac69777713f0e71100741b8aC2F6', + earnContractAddress: '0x5e784882E8D2ac69777713f0e71100741b8aC2F6', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'WINGS', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'JetSwap', + assets: ['WINGS'], + buyTokenUrl: + 'https://exchange.jetswap.finance/#/swap?outputCurrency=0x0487b824c8261462f88940f97053e65bdb498446', + createdAt: 1621591563, + retiredReason: 'tvl', + }, + { + id: 'dopple-ust-lp', + logo: 'uncategorized/DOPPLE-UST-LP.png', + name: 'UST/BUSD/USDT', + token: 'UST/BUSD/USDT', + tokenDescription: 'Dopple', + tokenAddress: '0x7Edcdc8cD062948CE9A9bc38c477E6aa244dD545', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooDoppleUstLP', + earnedTokenAddress: '0x4Af8ED7c9f5D0C672F71a82c827FC3A02485791F', + earnContractAddress: '0x4Af8ED7c9f5D0C672F71a82c827FC3A02485791F', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'dopple-ust-lp', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + assets: ['BUSD', 'USDT', 'UST'], + platform: 'Other', + withdrawalFee: '0%', + addLiquidityUrl: 'https://dopple.finance/Deposit/ust-pools-lps', + createdAt: 1622189304, + }, + { + id: 'cakev2-bifi-bnb', + logo: 'bnb-pairs/BIFI-BNB.svg', + name: 'BIFI-BNB LP', + token: 'BIFI-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x3f1A9f3D9aaD8bD339eD4853F345d2eF89fbfE0c', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2BIFI-BNB', + earnedTokenAddress: '0x59960d624600aE1669584Bb504a5f4F2e90EbF46', + earnContractAddress: '0x59960d624600aE1669584Bb504a5f4F2e90EbF46', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-bifi-bnb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'PancakeSwap', + assets: ['BIFI', 'BNB'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0xCa3F508B8e4Dd382eE878A314789373D80A5190A', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0xCa3F508B8e4Dd382eE878A314789373D80A5190A', + createdAt: 1619335376, + }, + { + id: 'banana-sushi-bnb', + logo: 'degens/BANANA-SUSHI-BNB.svg', + name: 'SUSHI-BNB LP', + token: 'SUSHI-BNB LP', + tokenDescription: 'ApeSwap', + tokenAddress: '0x1D0C3044eBf055986c52D38b19B5369374E6Bc6A', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooApeSUSHI-BNB', + earnedTokenAddress: '0x0DC52004341103FF00C65b9c1370c2c2d125CBc5', + earnContractAddress: '0x0DC52004341103FF00C65b9c1370c2c2d125CBc5', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'banana-sushi-bnb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'ApeSwap', + assets: ['SUSHI', 'BNB'], + addLiquidityUrl: + 'https://dex.apeswap.finance/#/add/ETH/0x947950bcc74888a40ffa2593c5798f11fc9124c4', + buyTokenUrl: + 'https://dex.apeswap.finance/#/swap?outputCurrency=0x947950bcc74888a40ffa2593c5798f11fc9124c4', + createdAt: 1622138632, + }, + { + id: 'banana-dot-bnb', + logo: 'degens/BANANA-DOT-BNB.svg', + name: 'DOT-BNB LP', + token: 'DOT-BNB LP', + tokenDescription: 'ApeSwap', + tokenAddress: '0x21CBb561c5d7D70e9E6Cc42136CB22F07552aEef', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooApeDOT-BNB', + earnedTokenAddress: '0x036D059Dbf58CB624CfdFDaAbCa6D3f80c2f8b3C', + earnContractAddress: '0x036D059Dbf58CB624CfdFDaAbCa6D3f80c2f8b3C', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'banana-dot-bnb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'ApeSwap', + assets: ['DOT', 'BNB'], + addLiquidityUrl: + 'https://dex.apeswap.finance/#/add/ETH/0x7083609fce4d1d8dc0c979aab8c869ea2c873402', + buyTokenUrl: + 'https://dex.apeswap.finance/#/swap?outputCurrency=0x7083609fce4d1d8dc0c979aab8c869ea2c873402', + createdAt: 1622137330, + }, + { + id: 'banana-xrp-bnb', + logo: 'degens/BANANA-XRP-BNB.svg', + name: 'XRP-BNB LP', + token: 'XRP-BNB LP', + tokenDescription: 'ApeSwap', + tokenAddress: '0x6f0f18f5fcC1466ec41c8106689e10BeFE68D1c0', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooApeXRP-BNB', + earnedTokenAddress: '0xb8624845cfaC1B65Da120bD25d0C1a921f8B178d', + earnContractAddress: '0xb8624845cfaC1B65Da120bD25d0C1a921f8B178d', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'banana-xrp-bnb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'ApeSwap', + assets: ['XRP', 'BNB'], + addLiquidityUrl: + 'https://dex.apeswap.finance/#/add/ETH/0x1d2f0da169ceb9fc7b3144628db156f3f6c60dbe', + buyTokenUrl: + 'https://dex.apeswap.finance/#/swap?outputCurrency=0x1d2f0da169ceb9fc7b3144628db156f3f6c60dbe', + createdAt: 1622134868, + }, + { + id: 'banana-snx-bnb', + logo: 'bnb-pairs/SNX-BNB.svg', + name: 'SNX-BNB LP', + token: 'SNX-BNB LP', + tokenDescription: 'ApeSwap', + tokenAddress: '0x8b1F1F28a8CcbaA8a8Bc1582921ECe97Ce99d9e1', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooApeSNX-BNB', + earnedTokenAddress: '0x0e4FCD49Bd0A50D31f321509C8B2e7f21Fb87D26', + earnContractAddress: '0x0e4FCD49Bd0A50D31f321509C8B2e7f21Fb87D26', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'banana-snx-bnb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'ApeSwap', + assets: ['SNX', 'BNB'], + addLiquidityUrl: + 'https://dex.apeswap.finance/#/add/0x9Ac983826058b8a9C7Aa1C9171441191232E8404/0xbb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c', + buyTokenUrl: + 'https://dex.apeswap.finance/#/swap?outputCurrency=0x9Ac983826058b8a9C7Aa1C9171441191232E8404', + createdAt: 1622126575, + }, + { + id: 'banana-blz-bnb-eol', + logo: 'bnb-pairs/BLZ-BNB.svg', + name: 'BLZ-BNB LP', + token: 'BLZ-BNB LP', + tokenDescription: 'ApeSwap', + tokenAddress: '0x015f807d0186f7e62810D0C597A23CB19Ff57E4d', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooApeBLZ-BNB', + earnedTokenAddress: '0x6081601e62F51d9e956aa704B506E4c202E0E016', + earnContractAddress: '0x6081601e62F51d9e956aa704B506E4c202E0E016', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'banana-blz-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'ApeSwap', + assets: ['BLZ', 'BNB'], + addLiquidityUrl: + 'https://dex.apeswap.finance/#/add/0x935a544bf5816e3a7c13db2efe3009ffda0acda2/0xbb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c', + buyTokenUrl: + 'https://dex.apeswap.finance/#/swap?outputCurrency=0x935a544bf5816e3a7c13db2efe3009ffda0acda2', + createdAt: 1622133953, + }, + { + id: 'banana-ltc-bnb', + logo: 'degens/banana-ltc-bnb.svg', + name: 'LTC-BNB LP', + token: 'LTC-BNB LP', + tokenDescription: 'ApeSwap', + tokenAddress: '0x0F12362c017Fe5101c7bBa09390f1CB729f5B318', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooApeLTC-BNB', + earnedTokenAddress: '0xB25e82640c062365B973E9eB55EEF77C47E81296', + earnContractAddress: '0xB25e82640c062365B973E9eB55EEF77C47E81296', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'banana-ltc-bnb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'ApeSwap', + assets: ['LTC', 'BNB'], + addLiquidityUrl: + 'https://dex.apeswap.finance/#/add/ETH/0x4338665cbb7b2485a8855a139b75d5e34ab0db94', + buyTokenUrl: + 'https://dex.apeswap.finance/#/swap?outputCurrency=0x4338665cbb7b2485a8855a139b75d5e34ab0db94', + createdAt: 1621941740, + }, + { + id: 'cakev2-cake-busd', + name: 'CAKE-BUSD LP', + token: 'CAKE-BUSD LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x804678fa97d91B974ec2af3c843270886528a9E6', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2CAKE-BUSD', + earnedTokenAddress: '0x1542885D6EeD4EE3AC1a110d3f159003a0774101', + earnContractAddress: '0x1542885D6EeD4EE3AC1a110d3f159003a0774101', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-cake-busd', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'PancakeSwap', + assets: ['CAKE', 'BUSD'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82/0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56', + buyTokenUrl: + 'https://pancakeswap.finance/swap?inputCurrency=0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82&outputCurrency=0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56', + createdAt: 1621860750, + }, + { + id: 'cakev2-chr-busd', + logo: 'cake-pairs/chr-busd.svg', + name: 'CHR-BUSD LP', + token: 'CHR-BUSD LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x6045931E511EF7e53A4A817F971e0CA28c758809', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2CHR-BUSD', + earnedTokenAddress: '0x324888479Bfe3903cB405959Bc9Cd644000e495A', + earnContractAddress: '0x324888479Bfe3903cB405959Bc9Cd644000e495A', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-chr-busd', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'PancakeSwap', + assets: ['CHR', 'BUSD'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56/0xf9CeC8d50f6c8ad3Fb6dcCEC577e05aA32B224FE', + buyTokenUrl: + 'https://pancakeswap.finance/swap?inputCurrency=0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56&outputCurrency=0xf9CeC8d50f6c8ad3Fb6dcCEC577e05aA32B224FE', + createdAt: 1621996349, + }, + { + id: 'cakev2-deri-busd-eol', + logo: 'cake-pairs/deri-busd.svg', + name: 'DERI-BUSD LP', + token: 'DERI-BUSD LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0xDc7188AC11e124B1fA650b73BA88Bf615Ef15256', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2DERI-BUSD', + earnedTokenAddress: '0x6D02b2d38902689aF2c18eafb8B8c84161c6341b', + earnContractAddress: '0x6D02b2d38902689aF2c18eafb8B8c84161c6341b', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-deri-busd', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['DERI', 'BUSD'], + retireReason: 'rewards', + addLiquidityUrl: + 'https://pancakeswap.finance/add/0xe60eaf5A997DFAe83739e035b005A33AfdCc6df5/0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56', + buyTokenUrl: + 'https://pancakeswap.finance/swap?inputCurrency=0xe60eaf5A997DFAe83739e035b005A33AfdCc6df5&outputCurrency=0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56', + createdAt: 1621991325, + }, + { + id: 'hps-hps', + logo: 'single-assets/HPS.png', + name: 'HPS', + token: 'HPS', + tokenDescription: 'BillionHappiness', + tokenAddress: '0xeDa21B525Ac789EaB1a08ef2404dd8505FfB973D', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBillionHPS', + earnedTokenAddress: '0xAC8E64BE515fAe8c6026fb22954d4D1375938Bb5', + earnContractAddress: '0xAC8E64BE515fAe8c6026fb22954d4D1375938Bb5', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'HPS', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['HPS'], + buyTokenUrl: + 'https://julswap.com/#/swap?inputCurrency=BNB&outputCurrency=0xeDa21B525Ac789EaB1a08ef2404dd8505FfB973D', + createdAt: 1617016075, + }, + { + id: 'dopple-dolly-lp', + logo: 'uncategorized/DOPPLE-DOLLY-LP.svg', + name: 'DOLLY/BUSD/USDT', + token: 'DOLLY/BUSD/USDT', + tokenDescription: 'Dopple', + tokenAddress: '0xAA5509Ce0ecEA324bff504A46Fc61EB75Cb68B0c', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooDoppleDollyLP', + earnedTokenAddress: '0xCcb7A9E2e4F08407065f51d32C365304fbF2FD01', + earnContractAddress: '0xCcb7A9E2e4F08407065f51d32C365304fbF2FD01', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'dopple-dolly-lp', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + assets: ['DOLLY', 'USDT', 'BUSD'], + platform: 'Other', + withdrawalFee: '0%', + addLiquidityUrl: 'https://dopple.finance/Deposit/dolly-lps', + createdAt: 1621851120, + }, + { + id: 'cakev2-xend-bnb-eol', + logo: 'bnb-pairs/XEND-BNB.svg', + name: 'XEND-BNB LP', + token: 'XEND-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0xcECfC2789af72ed151589a96a59f3A1ABC65c3b5', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2XEND-BNB', + earnedTokenAddress: '0x6F3ED82fbE292055D509D0200f02d8F9fE62E5D3', + earnContractAddress: '0x6F3ED82fbE292055D509D0200f02d8F9fE62E5D3', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-xend-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['XEND', 'BNB'], + retireReason: 'rewards', + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0x4a080377f83D669D7bB83B3184a8A5E61B500608', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x4a080377f83D669D7bB83B3184a8A5E61B500608', + createdAt: 1621868570, + }, + { + id: 'cakev2-cyc-bnb-eol', + logo: 'bnb-pairs/CYC-BNB.svg', + name: 'CYC-BNB LP', + token: 'CYC-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0xECf30FbecfA642012f54212a3bE92eEF1e48eDaC', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2CYC-BNB', + earnedTokenAddress: '0xe4e94eAD9D926443C02c11E6453D31f8810D5186', + earnContractAddress: '0xe4e94eAD9D926443C02c11E6453D31f8810D5186', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-cyc-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['CYC', 'BNB'], + retireReason: 'rewards', + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0x810EE35443639348aDbbC467b33310d2AB43c168', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x810EE35443639348aDbbC467b33310d2AB43c168', + createdAt: 1621868549, + }, + { + id: 'banana-near-bnb', + logo: 'bnb-pairs/NEAR-BNB.svg', + name: 'NEAR-BNB LP', + token: 'NEAR-BNB ALP', + tokenDescription: 'ApeSwap', + tokenAddress: '0xB75724635A6cDa850f08b578F23a568CeDba099D', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooApeNEAR-BNB', + earnedTokenAddress: '0x37E7A54830877Ec8c163aAD72A4aa7B0dA2Ad6cb', + earnContractAddress: '0x37E7A54830877Ec8c163aAD72A4aa7B0dA2Ad6cb', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'banana-near-bnb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'ApeSwap', + assets: ['NEAR', 'BNB'], + addLiquidityUrl: + 'https://dex.apeswap.finance/#/add/0x1fa4a73a3f0133f0025378af00236f3abdee5d63/0xbb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c', + buyTokenUrl: + 'https://dex.apeswap.finance/#/swap?outputCurrency=0x1fa4a73a3f0133f0025378af00236f3abdee5d63', + createdAt: 1621868213, + }, + { + id: 'banana-coti-bnb', + logo: 'bnb-pairs/COTI-BNB.svg', + name: 'COTI-BNB LP', + token: 'COTI-BNB ALP', + tokenDescription: 'ApeSwap', + tokenAddress: '0xaCfDCF0486ADC2421aAc3FFc0923b9c56FAEBC47', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooApeCOTI-BNB', + earnedTokenAddress: '0x0dd3afc66F1250eC402E703CA093EE17537478CB', + earnContractAddress: '0x0dd3afc66F1250eC402E703CA093EE17537478CB', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'banana-coti-bnb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'ApeSwap', + assets: ['COTI', 'BNB'], + addLiquidityUrl: + 'https://dex.apeswap.finance/#/add/0xAdBAF88B39D37Dc68775eD1541F1bf83A5A45feB/0xbb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c', + buyTokenUrl: + 'https://dex.apeswap.finance/#/swap?outputCurrency=0xAdBAF88B39D37Dc68775eD1541F1bf83A5A45feB', + createdAt: 1621868192, + }, + { + id: 'banana-etc-bnb-eol', + logo: 'bnb-pairs/ETC-BNB.svg', + name: 'ETC-BNB LP', + token: 'ETC-BNB ALP', + tokenDescription: 'ApeSwap', + tokenAddress: '0xDd6C7A955C72B3FFD546d8dadBf7669528d8F785', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooApeETC-BNB', + earnedTokenAddress: '0x3D64f2950412a7eed6B59704D18B07B3C22411F5', + earnContractAddress: '0x3D64f2950412a7eed6B59704D18B07B3C22411F5', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'banana-etc-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'ApeSwap', + assets: ['ETC', 'BNB'], + addLiquidityUrl: + 'https://dex.apeswap.finance/#/add/0x3d6545b08693daE087E957cb1180ee38B9e3c25E/0xbb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c', + buyTokenUrl: + 'https://dex.apeswap.finance/#/swap?outputCurrency=0x3d6545b08693daE087E957cb1180ee38B9e3c25E', + createdAt: 1621868168, + }, + { + id: 'banana-zec-bnb', + logo: 'bnb-pairs/ZEC-BNB.svg', + name: 'ZEC-BNB LP', + token: 'ZEC-BNB ALP', + tokenDescription: 'ApeSwap', + tokenAddress: '0x2B2C771e44aF4C6f858598308e05FB89b23f11cE', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooApeZEC-BNB', + earnedTokenAddress: '0xCe3870506C57bd6A891aDc8d35D51557A5B55769', + earnContractAddress: '0xCe3870506C57bd6A891aDc8d35D51557A5B55769', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'banana-zec-bnb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'ApeSwap', + assets: ['ZEC', 'BNB'], + addLiquidityUrl: + 'https://dex.apeswap.finance/#/add/0x1Ba42e5193dfA8B03D15dd1B86a3113bbBEF8Eeb/0xbb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c', + buyTokenUrl: + 'https://dex.apeswap.finance/#/swap?outputCurrency=0x1Ba42e5193dfA8B03D15dd1B86a3113bbBEF8Eeb', + createdAt: 1621868153, + }, + { + id: 'garuda-garuda-usdc', + logo: 'degens/garuda-usdc.png', + name: 'GARUDA-USDC LP', + token: 'GARUDA-USDC LP', + tokenDescription: 'PancakeSwap (Garuda)', + tokenAddress: '0xeD90DEEc60a9b03844aDE0e4b086BAdA0aCC5B8D', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooGarudaGARUDA-USDC', + earnedTokenAddress: '0xE783464c205Ddf7240D5A86C62AD31DdfEdFCfde', + earnContractAddress: '0xE783464c205Ddf7240D5A86C62AD31DdfEdFCfde', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'garuda-garuda-usdc', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['GARUDA', 'USDC'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/0x854086dC841e1bfae50Cb615bF41f55BF432a90b/0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x854086dC841e1bfae50Cb615bF41f55BF432a90b', + createdAt: 1621839042, + }, + { + id: 'jetswap-wings-bnb', + logo: 'degens/WINGS-BNB.svg', + name: 'WINGS-BNB LP', + token: 'WINGS-BNB LP', + tokenDescription: 'JetSwap', + tokenAddress: '0x1CD0fe829d83Fb49c8831Ae860d19c6062adA6e9', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooJetswapWINGS-BNB', + earnedTokenAddress: '0x2dEF6c368248d665082Db40a7Dc9F772CAD1DE75', + earnContractAddress: '0x2dEF6c368248d665082Db40a7Dc9F772CAD1DE75', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'jetswap-wings-bnb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'JetSwap', + assets: ['WINGS', 'BNB'], + addLiquidityUrl: + 'https://exchange.jetswap.finance/#/add/BNB/0x0487b824c8261462f88940f97053e65bdb498446', + buyTokenUrl: + 'https://exchange.jetswap.finance/#/swap?outputCurrency=0x0487b824c8261462f88940f97053e65bdb498446', + createdAt: 1621578983, + }, + { + id: 'jetswap-wings-busd-eol', + logo: 'degens/WINGS-BUSD.svg', + name: 'WINGS-BUSD LP', + token: 'WINGS-BUSD LP', + tokenDescription: 'JetSwap', + tokenAddress: '0xFBa740304f3fc39d0e79703a5D7788E13f877DC0', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooJetswapWINGS-BUSD', + earnedTokenAddress: '0xE16f790B414C235Ada8cBC419C5C1Ae61ff49A84', + earnContractAddress: '0xE16f790B414C235Ada8cBC419C5C1Ae61ff49A84', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'jetswap-wings-busd', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'JetSwap', + assets: ['WINGS', 'BUSD'], + addLiquidityUrl: + 'https://exchange.jetswap.finance/#/add/0xe9e7cea3dedca5984780bafc599bd69add087d56/0x0487b824c8261462f88940f97053e65bdb498446', + buyTokenUrl: + 'https://exchange.jetswap.finance/#/swap?outputCurrency=0x0487b824c8261462f88940f97053e65bdb498446', + createdAt: 1621582618, + retiredReason: 'tvl', + }, + { + id: 'jetswap-busd-bnb', + logo: 'degens/WINGS-BNB-BUSD.svg', + name: 'BUSD-BNB LP', + token: 'BUSD-BNB JLP', + tokenDescription: 'JetSwap', + tokenAddress: '0xc53eE6446101F2128f887b8c75083E74dca3e973', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooJetswapBUSD-BNB', + earnedTokenAddress: '0xDb207D797cA68112f5AA2677ee01301cF91c3c6E', + earnContractAddress: '0xDb207D797cA68112f5AA2677ee01301cF91c3c6E', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'jetswap-busd-bnb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'JetSwap', + assets: ['BUSD', 'BNB'], + addLiquidityUrl: + 'https://exchange.jetswap.finance/#/add/BNB/0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56', + createdAt: 1621583380, + }, + { + id: 'grand-grand-eol', + logo: 'degens/grand.png', + name: 'GRAND', + token: 'GRAND', + tokenDescription: 'Grand', + tokenAddress: '0xeE814F5B2bF700D2e843Dc56835D28d095161dd9', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooGrandGRAND', + earnedTokenAddress: '0x547c889C676fe449018A3987866cFC674518b700', + earnContractAddress: '0x547c889C676fe449018A3987866cFC674518b700', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'GRAND', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['GRAND'], + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0xeE814F5B2bF700D2e843Dc56835D28d095161dd9', + createdAt: 1621599740, + }, + { + id: 'grand-grand-bnb-eol', + logo: 'degens/grand-bnb.png', + name: 'GRAND-BNB LP', + token: 'GRAND-BNB LP', + tokenDescription: 'PancakeSwap (Grand)', + tokenAddress: '0x7BA02AFCB8112648D27772f0d73c759C6963a666', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooGrandGRAND-BNB', + earnedTokenAddress: '0x40dA18484963Fb672c3D2FE4942ddF363265b410', + earnContractAddress: '0x40dA18484963Fb672c3D2FE4942ddF363265b410', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'grand-grand-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['GRAND', 'BNB'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0xeE814F5B2bF700D2e843Dc56835D28d095161dd9', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0xeE814F5B2bF700D2e843Dc56835D28d095161dd9', + createdAt: 1621596545, + }, + { + id: 'dumpling-sdump-bnb-eol', + logo: 'degens/sdump-bnb.png', + name: 'SDUMP-BNB LP', + token: 'SDUMP-BNB LP', + tokenDescription: 'PancakeSwap (Dumpling)', + tokenAddress: '0x8B3C67ca3dA1B389A1252AF79F284d2FaAD07358', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooDumplingSDUMP-BNB', + earnedTokenAddress: '0x0396F46444D9256753E36408FC89D829d1f12A09', + earnContractAddress: '0x0396F46444D9256753E36408FC89D829d1f12A09', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'dumpling-sdump-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['SDUMP', 'BNB'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0x13F6751ba11337BC67aBBdAd638a56194ee133B8', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x13F6751ba11337BC67aBBdAd638a56194ee133B8', + createdAt: 1621586017, + }, + { + id: 'dumpling-sdump-busd-eol', + logo: 'degens/sdump-bnb.png', + name: 'SDUMP-BUSD LP', + token: 'SDUMP-BUSD LP', + tokenDescription: 'PancakeSwap (Dumpling)', + tokenAddress: '0x8B19Bb58DbdA8B5303aBc96Bb418E9bF4100F34b', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooDumplingSDUMP-BUSD', + earnedTokenAddress: '0xAF142b8678917C57703604fD4A4de2600f9e7551', + earnContractAddress: '0xAF142b8678917C57703604fD4A4de2600f9e7551', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'dumpling-sdump-busd', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['SDUMP', 'BUSD'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/0xe9e7cea3dedca5984780bafc599bd69add087d56/0x13F6751ba11337BC67aBBdAd638a56194ee133B8', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x13F6751ba11337BC67aBBdAd638a56194ee133B8', + createdAt: 1621586353, + }, + { + id: 'satis-xsat-busd-eol', + logo: 'degens/SAT-BUSD.png', + name: 'xSAT-BUSD LP', + token: 'xSAT-BUSD LP', + tokenDescription: 'PancakeSwap (Satis)', + tokenAddress: '0x3357387B7341c341Ffac18ada7cF2C242BC82b84', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSatisXSAT-BUSD', + earnedTokenAddress: '0x538c84e85e71F775Df1A896927008ecE3e14f47e', + earnContractAddress: '0x538c84e85e71F775Df1A896927008ecE3e14f47e', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'satis-xsat-busd', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['SAT', 'BUSD'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56/0x8fda94079913CB921D065Ed9c004Afb43e1f900e', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x8fda94079913CB921D065Ed9c004Afb43e1f900e', + createdAt: 1621510653, + }, + { + id: 'satis-xsat-bnb-eol', + logo: 'degens/SAT-BNB.png', + name: 'xSAT-BNB LP', + token: 'xSAT-BNB LP', + tokenDescription: 'PancakeSwap (Satis)', + tokenAddress: '0x15a24f7850bCe4818617c1efA2D24132E65809dc', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSatisXSAT-BNB', + earnedTokenAddress: '0x0F2A749bD7C64BC7E4f9cAE7C54eAEFD72E27193', + earnContractAddress: '0x0F2A749bD7C64BC7E4f9cAE7C54eAEFD72E27193', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'satis-xsat-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['SAT', 'BNB'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0x8fda94079913CB921D065Ed9c004Afb43e1f900e', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x8fda94079913CB921D065Ed9c004Afb43e1f900e', + createdAt: 1621511403, + }, + { + id: 'iron-dnd', + logo: 'degens/DND.png', + name: 'DND', + token: 'DND', + tokenDescription: 'Iron Finance', + tokenAddress: '0x34EA3F7162E6f6Ed16bD171267eC180fD5c848da', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooIronDND', + earnedTokenAddress: '0xc2B68b16ABA7444D07258CACA55cD3fD3a3C5268', + earnContractAddress: '0xc2B68b16ABA7444D07258CACA55cD3fD3a3C5268', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'DND', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['DND'], + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x34EA3F7162E6f6Ed16bD171267eC180fD5c848da', + createdAt: 1621422974, + }, + { + id: 'iron-dnd-bnb', + logo: 'degens/DND.png', + name: 'DND-BNB LP', + token: 'DND-BNB LP2', + tokenDescription: 'PancakeSwap (Iron)', + tokenAddress: '0xAcC75DaDB2Df216528F6Cb5E545e1284Ca258B1C', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooIronDND-BNB', + earnedTokenAddress: '0x0a4f69E053EE16fA127De5EA5d23EAd075e429D3', + earnContractAddress: '0x0a4f69E053EE16fA127De5EA5d23EAd075e429D3', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'iron-dnd-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['DND', 'BNB'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0x34EA3F7162E6f6Ed16bD171267eC180fD5c848da', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x34EA3F7162E6f6Ed16bD171267eC180fD5c848da', + createdAt: 1621421804, + }, + { + id: 'cakev2-hotcross-bnb', + logo: 'cake-pairs/hotcross-bnb.svg', + name: 'HOTCROSS-BNB LP', + token: 'HOTCROSS-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0xF23BAD605E94dE0e3B60c9718a43A94A5aF43915', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2HOTCROSS-BNB', + earnedTokenAddress: '0xfA4f79Cf4Eb504eD42fd77a931057815c1E41EC0', + earnContractAddress: '0xfA4f79Cf4Eb504eD42fd77a931057815c1E41EC0', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-hotcross-bnb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'PancakeSwap', + assets: ['HOTCROSS', 'BNB'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0x4FA7163E153419E0E1064e418dd7A99314Ed27b6', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x4FA7163E153419E0E1064e418dd7A99314Ed27b6', + createdAt: 1621554511, + }, + { + id: 'cakev2-rfox-bnb-eol', + logo: 'cake-pairs/rfox-bnb.svg', + name: 'RFOX-BNB LP', + token: 'RFOX-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x8E04b3972b5C25766c681dFD30a8A1cBf6dcc8c1', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2RFOX-BNB', + earnedTokenAddress: '0x070Dcc132461571676eF5e3F64b0D730136C0898', + earnContractAddress: '0x070Dcc132461571676eF5e3F64b0D730136C0898', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-rfox-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['RFOX', 'BNB'], + withdrawalFee: '0%', + retireReason: 'rewards', + removeLiquidityUrl: + 'https://pancakeswap.finance/remove/BNB/0x0a3a21356793b49154fd3bbe91cbc2a16c0457f5', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x0a3a21356793b49154fd3bbe91cbc2a16c0457f5', + createdAt: 1621562741, + }, + { + id: 'cakev2-wmass-busd-eol', + logo: 'busd-pairs/WMASS-BUSD.svg', + name: 'WMASS-BUSD LP', + token: 'WMASS-BUSD LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0xeC95ff6281c3aD8E27372fA6675EB337640b8E5E', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2WMASS-BUSD', + earnedTokenAddress: '0x84D4B046c060730b0A2fd65703F20c4A61EaAff7', + earnContractAddress: '0x84D4B046c060730b0A2fd65703F20c4A61EaAff7', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-wmass-busd', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['WMASS', 'BUSD'], + retireReason: 'rewards', + addLiquidityUrl: + 'https://pancakeswap.finance/add/0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56/0x7e396bfc8a2f84748701167c2d622f041a1d7a17', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x7e396bfc8a2f84748701167c2d622f041a1d7a17', + createdAt: 1621416130, + }, + { + id: 'cakev2-ubxt-busd-eol', + logo: 'busd-pairs/UBXT-BUSD.svg', + name: 'UBXT-BUSD LP', + token: 'UBXT-BUSD LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x8D3FF27D2aD6a9556B7C4F82F4d602D20114bC90', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2UBXT-BUSD', + earnedTokenAddress: '0x173BCBDd7E5f8AadC1e9dEC2f030c9567230b253', + earnContractAddress: '0x173BCBDd7E5f8AadC1e9dEC2f030c9567230b253', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-ubxt-busd', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['UBXT', 'BUSD'], + retireReason: 'rewards', + addLiquidityUrl: + 'https://pancakeswap.finance/add/0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56/0xbbeb90cfb6fafa1f69aa130b7341089abeef5811', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0xbbeb90cfb6fafa1f69aa130b7341089abeef5811', + createdAt: 1621416163, + }, + { + id: 'cakev2-btr-busd-eol', + logo: 'busd-pairs/BTR-BUSD.svg', + name: 'BTR-BUSD LP', + token: 'BTR-BUSD LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0xBC7AC609Fa730239190A70952e64eE1DFC2530AC', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2BTR-BUSD', + earnedTokenAddress: '0x6051785dBEA79BDF2e0B278a5cb4741Fe1a2Fd12', + earnContractAddress: '0x6051785dBEA79BDF2e0B278a5cb4741Fe1a2Fd12', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-btr-busd', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'PancakeSwap', + assets: ['BTR', 'BUSD'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56/0x5a16e8ce8ca316407c6e6307095dc9540a8d62b3', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x5a16e8ce8ca316407c6e6307095dc9540a8d62b3', + createdAt: 1621416199, + }, + { + id: 'cakev2-pmon-busd-eol', + logo: 'busd-pairs/PMON-BUSD.svg', + name: 'PMON-BUSD LP', + token: 'PMON-BUSD LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0xcdb0016d97FD0E7EC2C3B78aA4786Cbd8e19C14C', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2PMON-BUSD', + earnedTokenAddress: '0x82eaf01Bc5947d23Ca140221F2cd3f27250DF5Ac', + earnContractAddress: '0x82eaf01Bc5947d23Ca140221F2cd3f27250DF5Ac', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-pmon-busd', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'PancakeSwap', + assets: ['PMON', 'BUSD'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56/0x1796ae0b0fa4862485106a0de9b654efe301d0b2', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x1796ae0b0fa4862485106a0de9b654efe301d0b2', + createdAt: 1621416238, + }, + { + id: 'cakev2-one-busd-eol', + logo: 'busd-pairs/ONE-BUSD.svg', + name: 'ONE-BUSD LP', + token: 'ONE-BUSD LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x4d057F769D930eaFD597B49d6Fb2e1009A73a702', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2ONE-BUSD', + earnedTokenAddress: '0x94A901E76140e27dD72Ba9a22988419e95324826', + earnContractAddress: '0x94A901E76140e27dD72Ba9a22988419e95324826', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-one-busd', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['BigONE', 'BUSD'], + retireReason: 'rewards', + addLiquidityUrl: + 'https://pancakeswap.finance/add/0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56/0x04baf95fd4c52fd09a56d840baee0ab8d7357bf0', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x04baf95fd4c52fd09a56d840baee0ab8d7357bf0', + createdAt: 1621416271, + }, + { + id: 'cakev2-oin-busd-eol', + logo: 'busd-pairs/OIN-BUSD.svg', + name: 'OIN-BUSD LP', + token: 'OIN-BUSD LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x6a00E41561ac36A78dbA1D09091b0F00C4E53724', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2OIN-BUSD', + earnedTokenAddress: '0x50bFd46216afcCA24890Ebd6eC67a0Cb92ce9aED', + earnContractAddress: '0x50bFd46216afcCA24890Ebd6eC67a0Cb92ce9aED', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-oin-busd', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['OIN', 'BUSD'], + retireReason: 'rewards', + addLiquidityUrl: + 'https://pancakeswap.finance/add/0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56/0x658e64ffcf40d240a43d52ca9342140316ae44fa', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x658e64ffcf40d240a43d52ca9342140316ae44fa', + createdAt: 1621416307, + }, + { + id: 'cakev2-tdoge-bnb-eol', + logo: 'bnb-pairs/TDOGE-BNB.svg', + name: 'tDOGE-BNB LP', + token: 'tDOGE-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x2030845Ce7d4224523fd2F03Ca20Afe4aAD1D890', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2TDOGE-BNB', + earnedTokenAddress: '0x6AF821Aaf981D54aD37d58bFbA7fD2E2c41b623d', + earnContractAddress: '0x6AF821Aaf981D54aD37d58bFbA7fD2E2c41b623d', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-tdoge-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['tDOGE', 'BNB'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0xe550a593d09fbc8dcd557b5c88cea6946a8b404a', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0xe550a593d09fbc8dcd557b5c88cea6946a8b404a', + createdAt: 1621416442, + }, + { + id: 'cakev2-fine-bnb-eol', + logo: 'bnb-pairs/FINE-BNB.svg', + name: 'FINE-BNB LP', + token: 'FINE-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0xC309a6d2F1537922E06f15aA2eb21CaA1b2eEDb6', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2FINE-BNB', + earnedTokenAddress: '0xDCbf0c895d641FB67FB993456b6E99E478c7B087', + earnContractAddress: '0xDCbf0c895d641FB67FB993456b6E99E478c7B087', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-fine-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['FINE', 'BNB'], + withdrawalFee: '0%', + retireReason: 'rewards', + removeLiquidityUrl: + 'https://pancakeswap.finance/remove/BNB/0x4e6415a5727ea08aae4580057187923aec331227', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x4e6415a5727ea08aae4580057187923aec331227', + createdAt: 1621416478, + }, + { + id: 'cakev2-doge-bnb', + logo: 'bnb-pairs/DOGE-BNB-PCS.svg', + name: 'DOGE-BNB LP', + token: 'DOGE-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0xac109C8025F272414fd9e2faA805a583708A017f', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2DOGE-BNB', + earnedTokenAddress: '0x3b3bc8AE6dcAcCeaaC3C19E196ebD3341Cfe9c4e', + earnContractAddress: '0x3b3bc8AE6dcAcCeaaC3C19E196ebD3341Cfe9c4e', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-doge-bnb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'PancakeSwap', + assets: ['DOGE', 'BNB'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0xba2ae424d960c26247dd6c32edc70b295c744c43', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0xba2ae424d960c26247dd6c32edc70b295c744c43', + createdAt: 1621416514, + }, + { + id: 'cakev2-hyfi-bnb-eol', + logo: 'bnb-pairs/HYFI-BNB.svg', + name: 'HYFI-BNB LP', + token: 'HYFI-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x0716725d78081A9E0E1Ff81516f5415b399e274D', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2HYFI-BNB', + earnedTokenAddress: '0xfe9bB1AFF4D1A2928F0aFEcaBF7d96479ece7eF4', + earnContractAddress: '0xfe9bB1AFF4D1A2928F0aFEcaBF7d96479ece7eF4', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-hyfi-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['HYFI', 'BNB'], + retireReason: 'rewards', + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0x9a319b959e33369C5eaA494a770117eE3e585318', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x9a319b959e33369C5eaA494a770117eE3e585318', + createdAt: 1621416553, + }, + { + id: 'banana-avax-bnb', + logo: 'bnb-pairs/AVAX-BNB.svg', + name: 'AVAX-BNB LP', + token: 'AVAX-BNB ALP', + tokenDescription: 'ApeSwap', + tokenAddress: '0x40aFc7CBd0Dc2bE5860F0035b717d20Afb4827b2', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooApeAVAX-BNB', + earnedTokenAddress: '0x97697d89e490196eE7dbF6660424B80D276ae7d9', + earnContractAddress: '0x97697d89e490196eE7dbF6660424B80D276ae7d9', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'banana-avax-bnb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'ApeSwap', + assets: ['AVAX', 'BNB'], + addLiquidityUrl: + 'https://dex.apeswap.finance/#/add/ETH/0x1ce0c2827e2ef14d5c4f29a091d735a204794041', + buyTokenUrl: + 'https://dex.apeswap.finance/#/swap?outputCurrency=0x1ce0c2827e2ef14d5c4f29a091d735a204794041', + createdAt: 1621357766, + }, + { + id: 'garuda-garuda-usdt', + logo: 'degens/garuda-usdt.png', + name: 'GARUDA-USDT LP', + token: 'GARUDA-USDT LP', + tokenDescription: 'PancakeSwap (Garuda)', + tokenAddress: '0x7F6369476756B06D2b70BD77917fbc35A7801EFD', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooGarudaGARUDA-USDT', + earnedTokenAddress: '0x1e8Cf92A803781b4ecB9102031fc5506A476E2A4', + earnContractAddress: '0x1e8Cf92A803781b4ecB9102031fc5506A476E2A4', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'garuda-garuda-usdt', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['GARUDA', 'USDT'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/0x854086dC841e1bfae50Cb615bF41f55BF432a90b/0x55d398326f99059fF775485246999027B3197955', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x854086dC841e1bfae50Cb615bF41f55BF432a90b', + createdAt: 1621163837, + }, + { + id: 'banana-ftm-bnb', + logo: 'bnb-pairs/FTM-BNB.svg', + name: 'FTM-BNB LP', + token: 'FTM-BNB ALP', + tokenDescription: 'ApeSwap', + tokenAddress: '0x47A0B7bA18Bb80E4888ca2576c2d34BE290772a6', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooApeFTM-BNB', + earnedTokenAddress: '0xb61fa9e4548f0D3E1405cfbA7a12de8fF11C0E4B', + earnContractAddress: '0xb61fa9e4548f0D3E1405cfbA7a12de8fF11C0E4B', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'banana-ftm-bnb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'ApeSwap', + assets: ['FTM', 'BNB'], + addLiquidityUrl: + 'https://dex.apeswap.finance/#/add/ETH/0xad29abb318791d579433d831ed122afeaf29dcfe', + buyTokenUrl: + 'https://dex.apeswap.finance/#/swap?outputCurrency=0xad29abb318791d579433d831ed122afeaf29dcfe', + createdAt: 1621084510, + }, + { + id: 'banana-comp-bnb', + logo: 'bnb-pairs/COMP-BNB.svg', + name: 'COMP-BNB LP', + token: 'COMP-BNB ALP', + tokenDescription: 'ApeSwap', + tokenAddress: '0xb4c0c621B2eDfE6C22585ebAC56b0e634907B8A7', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooApeCOMP-BNB', + earnedTokenAddress: '0x117298872069E8e3BcB5E02727852f9Ca94930Cb', + earnContractAddress: '0x117298872069E8e3BcB5E02727852f9Ca94930Cb', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'banana-comp-bnb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'ApeSwap', + assets: ['COMP', 'BNB'], + addLiquidityUrl: + 'https://dex.apeswap.finance/#/add/ETH/0x52ce071bd9b1c4b00a0b92d298c512478cad67e8', + buyTokenUrl: + 'https://dex.apeswap.finance/#/swap?outputCurrency=0x52ce071bd9b1c4b00a0b92d298c512478cad67e8', + createdAt: 1621075587, + }, + { + id: 'banana-aave-bnb', + logo: 'bnb-pairs/AAVE-BNB.svg', + name: 'AAVE-BNB LP', + token: 'AAVE-BNB ALP', + tokenDescription: 'ApeSwap', + tokenAddress: '0xf13e007e181A8F57eD3a4D4CcE0A9ff9E7241CEf', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooApeAAVE-BNB', + earnedTokenAddress: '0x2EF1B47174d9f9bC6e9a37E863928C0E6100324d', + earnContractAddress: '0x2EF1B47174d9f9bC6e9a37E863928C0E6100324d', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'banana-aave-bnb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'ApeSwap', + assets: ['AAVE', 'BNB'], + addLiquidityUrl: + 'https://dex.apeswap.finance/#/add/ETH/0xfb6115445bff7b52feb98650c87f44907e58f802', + buyTokenUrl: + 'https://dex.apeswap.finance/#/swap?outputCurrency=0xfb6115445bff7b52feb98650c87f44907e58f802', + createdAt: 1621073733, + }, + { + id: 'banana-link-bnb', + logo: 'degens/LINK-BNB.svg', + name: 'LINK-BNB LP', + token: 'LINK-BNB ALP', + tokenDescription: 'ApeSwap', + tokenAddress: '0x092ADA3818DB7FBb8e0A2124Ff218C5125C1CcE6', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooApeLINK-BNB', + earnedTokenAddress: '0xfb04ba534ED800d9bFFce22B5F86eDaA4fc76D50', + earnContractAddress: '0xfb04ba534ED800d9bFFce22B5F86eDaA4fc76D50', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'banana-link-bnb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'ApeSwap', + assets: ['LINK', 'BNB'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + addLiquidityUrl: + 'https://dex.apeswap.finance/#/add/ETH/0xf8a0bf9cf54bb92f17374d9e9a321e6a111a51bd', + buyTokenUrl: + 'https://dex.apeswap.finance/#/swap?outputCurrency=0xf8a0bf9cf54bb92f17374d9e9a321e6a111a51bd', + createdAt: 1621068362, + }, + { + id: 'banana-ada-bnb', + logo: 'degens/ADA-BNB.svg', + name: 'ADA-BNB LP', + token: 'ADA-BNB ALP', + tokenDescription: 'ApeSwap', + tokenAddress: '0x40d4543887E4170A1A40Cd8dB15A6b297c812Cb1', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooApeADA-BNB', + earnedTokenAddress: '0xb8E6a5EDbC8ae71f74Fd02f65E95Ba0a8733c5a1', + earnContractAddress: '0xb8E6a5EDbC8ae71f74Fd02f65E95Ba0a8733c5a1', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'banana-ada-bnb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'ApeSwap', + assets: ['ADA', 'BNB'], + addLiquidityUrl: + 'https://dex.apeswap.finance/#/add/ETH/0x3EE2200Efb3400fAbB9AacF31297cBdD1d435D47', + buyTokenUrl: + 'https://dex.apeswap.finance/#/swap?outputCurrency=0x3EE2200Efb3400fAbB9AacF31297cBdD1d435D47', + createdAt: 1621017761, + }, + { + id: 'iron-iron-busd', + logo: 'degens/IRON.png', + name: 'IRON-BUSD LP', + token: 'IRON-BUSD LP', + tokenDescription: 'PancakeSwap (Iron)', + tokenAddress: '0x26e49b5aE7e9b6c8C7C9b8506DA6b3b321c7431c', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooIronIRON-BUSD', + earnedTokenAddress: '0x4b1dF138339627416a8b991a75769919F65cCD8d', + earnContractAddress: '0x4b1dF138339627416a8b991a75769919F65cCD8d', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'iron-iron-busd', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['BUSD', 'IRON'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/0x7b65B489fE53fCE1F6548Db886C08aD73111DDd8/0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x7b65B489fE53fCE1F6548Db886C08aD73111DDd8', + createdAt: 1620995315, + }, + { + id: 'iron-steel-bnb', + logo: 'degens/STEEL.png', + name: 'STEEL-BNB LP', + token: 'STEEL-BNB LP', + tokenDescription: 'PancakeSwap (Iron)', + tokenAddress: '0xcB7aA7F125DD9c237f6Df8f6D149DbBE779692E5', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooIronSTEEL-BNB', + earnedTokenAddress: '0xCB01313B8Cf1d2742D0bc7209B2E5d1D0d172b36', + earnContractAddress: '0xCB01313B8Cf1d2742D0bc7209B2E5d1D0d172b36', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'iron-steel-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['STEEL', 'BNB'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/0x9001eE054F1692feF3A48330cB543b6FEc6287eb/BNB', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x9001eE054F1692feF3A48330cB543b6FEc6287eb', + createdAt: 1620995657, + }, + { + id: 'bhc-bhc-eol', + logo: 'single-assets/BHC.png', + name: 'BHC', + token: 'BHC', + tokenDescription: 'BillionHappiness', + tokenAddress: '0x6fd7c98458a943f469E1Cf4eA85B173f5Cd342F4', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBHC', + earnedTokenAddress: '0x56E899E56F6B8635B4A01b724db23674a64A7231', + earnContractAddress: '0x56E899E56F6B8635B4A01b724db23674a64A7231', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'BHC', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['BHC'], + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x6fd7c98458a943f469E1Cf4eA85B173f5Cd342F4', + createdAt: 1611121393, + }, + { + id: 'banana-matic-bnb', + logo: 'bnb-pairs/MATIC-BNB.svg', + name: 'MATIC-BNB LP', + token: 'MATIC-BNB ALP', + tokenDescription: 'ApeSwap', + tokenAddress: '0x29A4A3D77c010CE100A45831BF7e798f0f0B325D', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooApeMATIC-BNB', + earnedTokenAddress: '0xB9dA6EdEeF7e3db24265EcFBeBF4e06B7c7A455f', + earnContractAddress: '0xB9dA6EdEeF7e3db24265EcFBeBF4e06B7c7A455f', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'banana-matic-bnb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'ApeSwap', + assets: ['MATIC', 'BNB'], + addLiquidityUrl: + 'https://dex.apeswap.finance/#/add/ETH/0xcc42724c6683b7e57334c4e856f4c9965ed682bd', + buyTokenUrl: + 'https://dex.apeswap.finance/#/swap?outputCurrency=0xcc42724c6683b7e57334c4e856f4c9965ed682bd', + createdAt: 1620832822, + }, + { + id: 'bunny-bunny-v2-eol', + logo: 'single-assets/BUNNY.png', + name: 'BUNNY', + token: 'BUNNY', + tokenDescription: 'Pancakebunny', + tokenAddress: '0xC9849E6fdB743d08fAeE3E34dd2D1bc69EA11a51', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBunnyV2', + earnedTokenAddress: '0x2288dC6e2D2FaBd94a0ab63DD558AE149Bbc9eD9', + earnContractAddress: '0x2288dC6e2D2FaBd94a0ab63DD558AE149Bbc9eD9', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'BUNNY', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Other', + assets: ['BUNNY'], + buyTokenUrl: 'https://app.1inch.io/#/56/swap/BNB/BUNNY', + createdAt: 1620828423, + }, + { + id: 'tofy-tofy-eol', + logo: 'degens/tofy.png', + name: 'TOFY', + token: 'TOFY', + tokenDescription: 'Marshmallow', + tokenAddress: '0xE1F2d89a6c79b4242F300f880e490A70083E9A1c', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooTofyTOFY', + earnedTokenAddress: '0xE9F13aBE42A29BA302E7d57171f57430A2a2f8d0', + earnContractAddress: '0xE9F13aBE42A29BA302E7d57171f57430A2a2f8d0', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'TOFY', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['TOFY'], + retireReason: 'rewards', + buyTokenUrl: + 'https://exchange.marshmallowdefi.com/#/swap?outputCurrency=0xE1F2d89a6c79b4242F300f880e490A70083E9A1c', + createdAt: 1620827357, + }, + { + id: 'tofy-tofy-mash-eol', + logo: 'degens/tofy-mash.png', + name: 'TOFY-MASH LP', + token: 'TOFY-MASH LP', + tokenDescription: 'Marshmallow', + tokenAddress: '0xc36e93F6D92be42E2eAFB009dF74a0eBFeD5c0C2', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooTofyTOFY-MASH', + earnedTokenAddress: '0xceCa548809FBb923974609EF3a2013134815741A', + earnContractAddress: '0xceCa548809FBb923974609EF3a2013134815741A', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'tofy-tofy-mash', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['TOFY', 'MASH'], + addLiquidityUrl: + 'https://exchange.marshmallowdefi.com/#/add/ETH/0xE1F2d89a6c79b4242F300f880e490A70083E9A1c', + buyTokenUrl: + 'https://exchange.marshmallowdefi.com/#/swap?outputCurrency=0xE1F2d89a6c79b4242F300f880e490A70083E9A1c', + createdAt: 1620825118, + }, + { + id: 'tofy-tofy-bnb-eol', + logo: 'degens/tofy-bnb.png', + name: 'TOFY-BNB LP', + token: 'TOFY-BNB LP', + tokenDescription: 'Marshmallow', + tokenAddress: '0x753f40F5CdeB085AD4540Dd02a1c0c712EaF51F6', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooTofyTOFY-BNB', + earnedTokenAddress: '0x67C079A0bd936270981A8399f5d38c39f00941F4', + earnContractAddress: '0x67C079A0bd936270981A8399f5d38c39f00941F4', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'tofy-tofy-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['TOFY', 'BNB'], + addLiquidityUrl: + 'https://exchange.marshmallowdefi.com/#/add/ETH/0xE1F2d89a6c79b4242F300f880e490A70083E9A1c', + buyTokenUrl: + 'https://exchange.marshmallowdefi.com/#/swap?outputCurrency=0xE1F2d89a6c79b4242F300f880e490A70083E9A1c', + createdAt: 1620824133, + }, + { + id: 'goal-goal-busd-eol', + logo: 'degens/GOAL-BUSD.png', + name: 'GOAL-BUSD LP', + token: 'GOAL-BUSD LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0xE4305690e9B765bb7B85a48BBe6b16b82e12A3cC', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooGoalGOAL-BUSD', + earnedTokenAddress: '0xF18784Ba03fA5017E1ae4D82c4a3e00F5E8fF16f', + earnContractAddress: '0xF18784Ba03fA5017E1ae4D82c4a3e00F5E8fF16f', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'goal-goal-busd', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['GOAL', 'BUSD'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/0xE5b57E6e1b945B91FEE368aC108d2ebCcA78Aa8F/0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0xE5b57E6e1b945B91FEE368aC108d2ebCcA78Aa8F', + createdAt: 1620725403, + retiredReason: 'tvl', + }, + { + id: 'cakev2-kun-busd-eol', + logo: 'busd-pairs/KUN-BUSD.svg', + name: 'KUN-BUSD LP', + token: 'KUN-BUSD LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0xeA61020E5a128D2BEC67d48F7CFbe3408dB7E391', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2KUN-BUSD', + earnedTokenAddress: '0x52823D1A0F3745D9481557eDF3ACff04857D28B6', + earnContractAddress: '0x52823D1A0F3745D9481557eDF3ACff04857D28B6', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-kun-busd', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['KUN', 'BUSD'], + retireReason: 'rewards', + addLiquidityUrl: + 'https://pancakeswap.finance/add/0x1a2fb0af670d0234c2857fad35b789f8cb725584/0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x1a2fb0af670d0234c2857fad35b789f8cb725584', + createdAt: 1620722886, + }, + { + id: 'cakev2-mcoin-ust-eol', + logo: 'ust-pairs/MCOIN-UST.svg', + name: 'mCOIN-UST LP', + token: 'mCOIN-UST LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0xBCf01a42f6BC42F3Cfe81B05519565044d65D22a', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2MCOIN-UST', + earnedTokenAddress: '0xF803F277D5aAe38ac5CBfe8BA7B2e265983cc2a6', + earnContractAddress: '0xF803F277D5aAe38ac5CBfe8BA7B2e265983cc2a6', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-mcoin-ust', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'PancakeSwap', + assets: ['mCOIN', 'UST'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/0x49022089e78a8D46Ec87A3AF86a1Db6c189aFA6f/0x23396cF899Ca06c4472205fC903bDB4de249D6fC', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x49022089e78a8D46Ec87A3AF86a1Db6c189aFA6f', + createdAt: 1620623730, + }, + { + id: 'banana-watch-bnb', + logo: 'bnb-pairs/WATCH-BNB-APE.svg', + name: 'WATCH-BNB LP', + token: 'WATCH-BNB ALP', + tokenDescription: 'ApeSwap', + tokenAddress: '0xa00A91fBB39051e2a6368424A93895c3f1F2290b', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooApeWATCH-BNB', + earnedTokenAddress: '0xc795E63738d6207dFE4450D280013aCFdb1Cc526', + earnContractAddress: '0xc795E63738d6207dFE4450D280013aCFdb1Cc526', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'banana-watch-bnb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'ApeSwap', + assets: ['WATCH', 'BNB'], + addLiquidityUrl: + 'https://dex.apeswap.finance/#/add/ETH/0x7A9f28EB62C791422Aa23CeAE1dA9C847cBeC9b0', + buyTokenUrl: + 'https://dex.apeswap.finance/#/swap?outputCurrency=0x7A9f28EB62C791422Aa23CeAE1dA9C847cBeC9b0', + createdAt: 1620550835, + }, + { + id: 'jetfuel-fts-bnb-eol', + logo: 'bnb-pairs/FTS-BNB.svg', + name: 'FTS-BNB LP', + token: 'FTS-BNB LP', + tokenDescription: 'PancakeSwap', + tokenAddress: '0xc69f2139a6Ce6912703AC10e5e74ee26Af1b4a7e', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooJetfuelFTS-BNB', + earnedTokenAddress: '0xcE7cC761217CEaBE2eC7dD56a13Ff0056c36Aa79', + earnContractAddress: '0xcE7cC761217CEaBE2eC7dD56a13Ff0056c36Aa79', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'jetfuel-fts-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['FTS', 'BNB'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0x4437743ac02957068995c48e08465e0ee1769fbe', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x4437743ac02957068995c48e08465e0ee1769fbe', + createdAt: 1620547906, + }, + { + id: 'banana-bxbtc-bnb-eol', + logo: 'bnb-pairs/BXBTC-BNB.svg', + name: 'BXBTC-BNB LP', + token: 'BXBTC-BNB LP', + tokenDescription: 'ApeSwap', + tokenAddress: '0xc2feF4BEC915315beF9f6E8a06b2516E64D29D06', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooApeBXBTC-BNB', + earnedTokenAddress: '0x8D112FcdF377A2C4cb41b60AAe32199F939a866C', + earnContractAddress: '0x8D112FcdF377A2C4cb41b60AAe32199F939a866C', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'banana-bxbtc-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'ApeSwap', + assets: ['BXBTC', 'BNB'], + addLiquidityUrl: + 'https://dex.apeswap.finance/#/add/ETH/0xab111D5948470Ba73d98D66BBdf2798FBE093546', + buyTokenUrl: + 'https://dex.apeswap.finance/#/swap?outputCurrency=0xab111D5948470Ba73d98D66BBdf2798FBE093546', + createdAt: 1620370116, + }, + { + id: 'cakev2-btt-bnb', + logo: 'bnb-pairs/BTT-BNB.svg', + name: 'BTT-BNB LP', + token: 'BTT-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x946696344e7d4346b223e1Cf77035a76690d6A73', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2BTT-BNB', + earnedTokenAddress: '0x561860359244877A6dE987165a5A89Ef288C178D', + earnContractAddress: '0x561860359244877A6dE987165a5A89Ef288C178D', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-btt-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['BTT', 'BNB'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0x8595f9da7b868b1822194faed312235e43007b49', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x8595f9da7b868b1822194faed312235e43007b49', + createdAt: 1620373799, + }, + { + id: 'cakev2-trx-bnb', + logo: 'bnb-pairs/TRX-BNB.svg', + name: 'TRX-BNB LP', + token: 'TRX-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x3cd338c3BB249B6b3C55799F85a589FEbBBFf9Dd', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2TRX-BNB', + earnedTokenAddress: '0xa60D572AAfC217a76F73475644716cA63a4E7528', + earnContractAddress: '0xa60D572AAfC217a76F73475644716cA63a4E7528', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-trx-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['TRX', 'BNB'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0x85eac5ac2f758618dfa09bdbe0cf174e7d574d5b', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x85eac5ac2f758618dfa09bdbe0cf174e7d574d5b', + createdAt: 1620373832, + }, + { + id: 'cakev2-win-bnb', + logo: 'bnb-pairs/WIN-BNB.svg', + name: 'WIN-BNB LP', + token: 'WIN-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x894bd57afD8EFc93D9171cb585d11d0977557425', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2WIN-BNB', + earnedTokenAddress: '0x76Fcc8e2566ff7b60D11A9d5D76de12eC16cbf15', + earnContractAddress: '0x76Fcc8e2566ff7b60D11A9d5D76de12eC16cbf15', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-win-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['WIN', 'BNB'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0xaef0d72a118ce24fee3cd1d43d383897d05b4e99', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0xaef0d72a118ce24fee3cd1d43d383897d05b4e99', + createdAt: 1620373868, + }, + { + id: 'banana-naut-bnb-eol', + logo: 'bnb-pairs/NAUT-BNB.svg', + name: 'NAUT-BNB LP', + token: 'NAUT-BNB LP', + tokenDescription: 'ApeSwap', + tokenAddress: '0x288EA5437c7aaD045a393cee2F41E548df24d1C8', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooApeNAUT-BNB', + earnedTokenAddress: '0x9f670c6CdB8A6133016eC7C8552Dd42624FaC53F', + earnContractAddress: '0x9f670c6CdB8A6133016eC7C8552Dd42624FaC53F', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'banana-naut-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'tvl', + platform: 'ApeSwap', + assets: ['NAUT', 'BNB'], + addLiquidityUrl: + 'https://dex.apeswap.finance/#/add/ETH/0x05B339B0A346bF01f851ddE47a5d485c34FE220c', + buyTokenUrl: + 'https://dex.apeswap.finance/#/swap?outputCurrency=0x05b339b0a346bf01f851dde47a5d485c34fe220c', + createdAt: 1620370071, + }, + { + id: 'cakev2-pnt-pbtc-eol', + logo: 'uncategorized/PNT-PBTC.svg', + name: 'PNT-pBTC LP', + token: 'PNT-pBTC LP', + tokenDescription: 'PancakeSwap', + tokenAddress: '0xDAA89d335926628367b47852989bb22EE62CA5DE', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2PNT-PBTC', + earnedTokenAddress: '0xd6d2e8c9f9a276811A8994Bf7610807f4116115f', + earnContractAddress: '0xd6d2e8c9f9a276811A8994Bf7610807f4116115f', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-pnt-pbtc', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'PancakeSwap', + assets: ['PNT', 'pBTC'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/0xeD28A457A5A76596ac48d87C0f577020F6Ea1c4C/0xdaacB0Ab6Fb34d24E8a67BfA14BF4D95D4C7aF92', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0xeD28A457A5A76596ac48d87C0f577020F6Ea1c4C', + createdAt: 1620292758, + }, + { + id: 'ica-ica-btcb-eol', + logo: 'single-assets/ICA.svg', + name: 'ICA-BTCB LP', + token: 'ICA-BTCB LP', + tokenDescription: 'PancakeSwap (Icarus)', + tokenAddress: '0xA2e5A7Bf668ECb74186e0E4BFBA8a0C58BCc760d', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooIcarusICA-BTCB', + earnedTokenAddress: '0xbf29b8AdaE718A3A372ba90040A9acBD8A5794f4', + earnContractAddress: '0xbf29b8AdaE718A3A372ba90040A9acBD8A5794f4', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'ica-ica-btcb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['ICA', 'BTCB'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c/0x95111f630aC215Eb74599ED42C67E2c2790d69e2', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x95111f630ac215eb74599ed42c67e2c2790d69e2', + createdAt: 1620204194, + }, + { + id: 'ica-ica-eth-eol', + logo: 'single-assets/ICA.svg', + name: 'ICA-ETH LP', + token: 'ICA-ETH LP', + tokenDescription: 'PancakeSwap (Icarus)', + tokenAddress: '0x2cb2C54795b6714dA829FfA580B9692A261F8Bdd', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooIcarusICA-ETH', + earnedTokenAddress: '0x389e5F8e23e88cA2D971a69b2AAADE264A9DE5Fb', + earnContractAddress: '0x389e5F8e23e88cA2D971a69b2AAADE264A9DE5Fb', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'ica-ica-eth', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['ICA', 'ETH'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/0x2170Ed0880ac9A755fd29B2688956BD959F933F8/0x95111f630aC215Eb74599ED42C67E2c2790d69e2', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x95111f630ac215eb74599ed42c67e2c2790d69e2', + createdAt: 1620203510, + }, + { + id: 'zefiv2-zefi-bnb-eol', + logo: 'degens/ZEFI-BNB.svg', + name: 'ZEFI-BNB LP', + token: 'ZEFI-BNB LP2', + tokenDescription: 'PancakeSwap (ZCore)', + tokenAddress: '0x7C020B60fBDeB668834BE0367CfBA395CaAE5dFc', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooZefiV2ZEFI-BNB', + earnedTokenAddress: '0xB62eE36A03ab043Eb5b57E1eE88dEFbe9959d4C3', + earnContractAddress: '0xB62eE36A03ab043Eb5b57E1eE88dEFbe9959d4C3', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'zefiv2-zefi-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['ZEFI', 'BNB'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0x0288D3E353fE2299F11eA2c2e1696b4A648eCC07', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x0288D3E353fE2299F11eA2c2e1696b4A648eCC07', + createdAt: 1620143785, + retiredReason: 'tvl', + }, + { + id: 'zefiv2-zefi-busd-eol', + logo: 'degens/ZEFI-BUSD.svg', + name: 'ZEFI-BUSD LP', + token: 'ZEFI-BUSD LP2', + tokenDescription: 'PancakeSwap (ZCore)', + tokenAddress: '0x09B0123e36A2b0A5b95474455E437e8861a6C61E', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooZefiV2ZEFI-BUSD', + earnedTokenAddress: '0x6b57697eb320F40d5F386547DB3d468111fF0B92', + earnContractAddress: '0x6b57697eb320F40d5F386547DB3d468111fF0B92', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'zefiv2-zefi-busd', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['ZEFI', 'BUSD'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56/0x0288D3E353fE2299F11eA2c2e1696b4A648eCC07', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x0288D3E353fE2299F11eA2c2e1696b4A648eCC07', + createdAt: 1620143500, + retiredReason: 'tvl', + }, + { + id: 'satis-sat-bnb-eol', + logo: 'degens/SAT-BNB.png', + name: 'SAT-BNB LP', + token: 'SAT-BNB LP', + tokenDescription: 'PancakeSwap (Satis)', + tokenAddress: '0x0AB22917fA941edCa92A5b7E030C59fbC7D9019a', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSatisSAT-BNB', + earnedTokenAddress: '0x81a00F9789041E8CE270fCdd98dB65D8504C990B', + earnContractAddress: '0x81a00F9789041E8CE270fCdd98dB65D8504C990B', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'satis-sat-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['SAT', 'BNB'], + removeLiquidityUrl: + 'https://pancakeswap.finance/remove/BNB/0xA1928c0D8F83C0bFB7ebE51B412b1FD29A277893', + createdAt: 1620046260, + }, + { + id: 'satis-sat-busd-eol', + logo: 'degens/SAT-BUSD.png', + name: 'SAT-BUSD LP', + token: 'SAT-BUSD LP', + tokenDescription: 'PancakeSwap (Satis)', + tokenAddress: '0x020DB9ff8648AcFc9C590eafb8f6bcd8f254D248', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSatisSAT-BUSD', + earnedTokenAddress: '0xF2ce03745790fCE2F707157B008f981caA7c00b2', + earnContractAddress: '0xF2ce03745790fCE2F707157B008f981caA7c00b2', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'satis-sat-busd', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['SAT', 'BUSD'], + removeLiquidityUrl: + 'https://pancakeswap.finance/remove/0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56/0xA1928c0D8F83C0bFB7ebE51B412b1FD29A277893', + createdAt: 1620045924, + }, + { + id: 'banana-busd-usdc', + logo: 'busd-pairs/BUSD-USDC.svg', + name: 'BUSD-USDC LP', + token: 'BUSD-USDC LP', + tokenDescription: 'ApeSwap', + tokenAddress: '0xC087C78AbaC4A0E900a327444193dBF9BA69058E', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooApeBUSD-USDC', + earnedTokenAddress: '0xc6631af32c5Bd444626274C9FD1dc8A759534222', + earnContractAddress: '0xc6631af32c5Bd444626274C9FD1dc8A759534222', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'banana-busd-usdc', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'ApeSwap', + assets: ['BUSD', 'USDC'], + addLiquidityUrl: + 'https://dex.apeswap.finance/#/add/0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d/0xe9e7cea3dedca5984780bafc599bd69add087d56', + buyTokenUrl: + 'https://dex.apeswap.finance/#/swap?inputCurrency=0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d&outputCurrency=0xe9e7cea3dedca5984780bafc599bd69add087d56', + createdAt: 1620059978, + }, + { + id: 'banana-doge-bnb', + logo: 'bnb-pairs/DOGE-BNB.svg', + name: 'DOGE-BNB LP', + token: 'DOGE-BNB LP', + tokenDescription: 'ApeSwap', + tokenAddress: '0xfd1ef328A17A8e8Eeaf7e4Ea1ed8a108E1F2d096', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooApeDOGE-BNB', + earnedTokenAddress: '0x6c978fe7E78c52a4c40107f081bA92b5d3daEfBF', + earnContractAddress: '0x6c978fe7E78c52a4c40107f081bA92b5d3daEfBF', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'banana-doge-bnb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'ApeSwap', + assets: ['DOGE', 'BNB'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://dex.apeswap.finance/#/add/ETH/0xbA2aE424d960c26247Dd6c32edC70B295c744C43', + buyTokenUrl: + 'https://dex.apeswap.finance/#/swap?outputCurrency=0xbA2aE424d960c26247Dd6c32edC70B295c744C43', + createdAt: 1619783884, + }, + { + id: 'cakev2-btcb-busd', + logo: 'busd-pairs/BTCB-BUSD.svg', + name: 'BTCB-BUSD LP', + token: 'BTCB-BUSD LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0xF45cd219aEF8618A92BAa7aD848364a158a24F33', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2BTCB-BUSD', + earnedTokenAddress: '0x40D21bCd71B0Be8864ff3Dd62373CFFA4E151d6F', + earnContractAddress: '0x40D21bCd71B0Be8864ff3Dd62373CFFA4E151d6F', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-btcb-busd', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'PancakeSwap', + assets: ['BTCB', 'BUSD'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/0x7130d2a12b9bcbfae4f2634d864a1ee1ce3ead9c/0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56', + createdAt: 1619713472, + }, + { + id: 'banana-keyfi-bnb-eol', + logo: 'bnb-pairs/KEYFI-BNB.svg', + name: 'KEYFI-BNB LP', + token: 'KEYFI-BNB LP', + tokenDescription: 'ApeSwap', + tokenAddress: '0x7A8ACAEAfC4Fa051De4EAbff8D1abdD0388aE08a', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooApeKEYFI-BNB', + earnedTokenAddress: '0x4A62e870EdF51EdAe9Cc9a4BF5D17919c7759AF3', + earnContractAddress: '0x4A62e870EdF51EdAe9Cc9a4BF5D17919c7759AF3', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'banana-keyfi-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'ApeSwap', + assets: ['KEYFI', 'BNB'], + retireReason: 'rewards', + addLiquidityUrl: + 'https://dex.apeswap.finance/#/add/0x4b6000f9163de2e3f0a01ec37e06e1469dbbce9d/0xbb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c', + buyTokenUrl: + 'https://dex.apeswap.finance/#/swap?inputCurrency=0x4b6000f9163de2e3f0a01ec37e06e1469dbbce9d&outputCurrency=0xbb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c', + createdAt: 1619632061, + }, + { + id: 'cakev2-lmt-bnb-eol', + logo: 'bnb-pairs/LMT-BNB.svg', + name: 'LMT-BNB LP', + token: 'LMT-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x8271d7eAfeEb8F24d7C9fE1AccE2AE20611972E5', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2LMT-BNB', + earnedTokenAddress: '0x6261443B70d045f02B20Cc33e0faB096718563DF', + earnContractAddress: '0x6261443B70d045f02B20Cc33e0faB096718563DF', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-lmt-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['LMT', 'BNB'], + retireReason: 'rewards', + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0x9617857e191354dbea0b714d78bc59e57c411087', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x9617857e191354dbea0b714d78bc59e57c411087', + createdAt: 1619596631, + }, + { + id: 'swampv2-cake-bnb-eol', + name: 'CAKE-BNB LP', + token: 'CAKE-BNB LP2', + tokenDescription: 'PancakeSwap (Swamp)', + tokenAddress: '0x0eD7e52944161450477ee417DE9Cd3a859b14fD0', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSwampV2CAKE-BNB', + earnedTokenAddress: '0xe503B4c52a9220E20fe5Cf499D551977A6A12796', + earnContractAddress: '0xe503B4c52a9220E20fe5Cf499D551977A6A12796', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-cake-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['CAKE', 'BNB'], + depositFee: '<0.1%', + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x0e09fabb73bd3ade0a17ecc321fd13a19e81ce82', + createdAt: 1619446464, + }, + { + id: 'beltv2-belt-bnb', + logo: 'bnb-pairs/BELT-BNB-BELT.png', + name: 'BELT-BNB LP', + token: 'BELT-BNB LP2', + tokenDescription: 'PancakeSwap (Belt)', + tokenAddress: '0xF3Bc6FC080ffCC30d93dF48BFA2aA14b869554bb', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBeltV2BeltBNB', + earnedTokenAddress: '0x190DD361Ee7EDB1801d66e9E957C5CDF1e7Be75b', + earnContractAddress: '0x190DD361Ee7EDB1801d66e9E957C5CDF1e7Be75b', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-belt-bnb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Belt', + assets: ['BELT', 'BNB'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0xE0e514c71282b6f4e823703a39374Cf58dc3eA4f', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0xE0e514c71282b6f4e823703a39374Cf58dc3eA4f', + createdAt: 1619499140, + }, + { + id: 'cakev2-dfd-busd-eol', + logo: 'busd-pairs/DFD-BUSD.svg', + name: 'DFD-BUSD LP', + token: 'DFD-BUSD LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x029D66f9C0469450B7b4834B8dDC6a1118CeC3e1', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2DFD-BUSD', + earnedTokenAddress: '0xd80d646A28d60494A22Df83AA6b629df4F52DAeb', + earnContractAddress: '0xd80d646A28d60494A22Df83AA6b629df4F52DAeb', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-dfd-busd', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'PancakeSwap', + assets: ['DFD', 'BUSD'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56/0x9899a98b222fcb2f3dbee7df45d943093a4ff9ff', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x9899a98b222fcb2f3dbee7df45d943093a4ff9ff', + createdAt: 1619513456, + }, + { + id: 'cakev2-alpaca-busd', + logo: 'busd-pairs/ALPACA-BUSD.svg', + name: 'ALPACA-BUSD LP', + token: 'ALPACA-BUSD LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x7752e1FA9F3a2e860856458517008558DEb989e3', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2ALPACA-BUSD', + earnedTokenAddress: '0x8d89BF6A2CbEAD5577399EAc9e76222b4c41eD69', + earnContractAddress: '0x8d89BF6A2CbEAD5577399EAc9e76222b4c41eD69', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-alpaca-busd', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'PancakeSwap', + assets: ['ALPACA', 'BUSD'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56/0x8f0528ce5ef7b51152a59745befdd91d97091d2f', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x8f0528ce5ef7b51152a59745befdd91d97091d2f', + createdAt: 1619497427, + }, + { + id: 'swampv2-swamp-bnb-eol', + logo: 'bnb-pairs/SWAMP-BNB.svg', + name: 'SWAMP-BNB LP', + token: 'SWAMP-BNB LP2', + tokenDescription: 'PancakeSwap (Swamp)', + tokenAddress: '0x59Fe1dcdCD8918fe7B4e76E21f27599d5a1eAADb', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSwampV2SWAMP-BNB', + earnedTokenAddress: '0xe77Ec021543985E914C54F81938039FF58e5B0b1', + earnContractAddress: '0xe77Ec021543985E914C54F81938039FF58e5B0b1', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'swampv2-swamp-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['SWAMP', 'BNB'], + depositFee: '<0.1%', + addLiquidityUrl: 'https://pancakeswap.finance/add/0xc5A49b4CBe004b6FD55B30Ba1dE6AC360FF9765d', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0xc5A49b4CBe004b6FD55B30Ba1dE6AC360FF9765d', + createdAt: 1619446410, + retiredReason: 'tvl', + }, + { + id: 'swampv2-swamp-busd-eol', + logo: 'busd-pairs/SWAMP-BUSD.svg', + name: 'SWAMP-BUSD LP', + token: 'SWAMP-BUSD LP2', + tokenDescription: 'PancakeSwap (Swamp)', + tokenAddress: '0x90946d2f9fB68ecc40ad8Bc0C1cB15D6cCbC4022', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSwampV2SWAMP-BUSD', + earnedTokenAddress: '0xF5898cB211fAE8538253F08930e6b350cEe16444', + earnContractAddress: '0xF5898cB211fAE8538253F08930e6b350cEe16444', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'swampv2-swamp-busd', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['SWAMP', 'BUSD'], + depositFee: '<0.1%', + addLiquidityUrl: + 'https://pancakeswap.finance/add/0xc5A49b4CBe004b6FD55B30Ba1dE6AC360FF9765d/0xe9e7cea3dedca5984780bafc599bd69add087d56', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0xc5A49b4CBe004b6FD55B30Ba1dE6AC360FF9765d', + createdAt: 1619446431, + retiredReason: 'tvl', + }, + { + id: 'cakev2-bunny-bnb-eol', + logo: 'bnb-pairs/BUNNY-BNB.svg', + name: 'BUNNY-BNB LP', + token: 'BUNNY-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x5aFEf8567414F29f0f927A0F2787b188624c10E2', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2BUNNY-BNB', + earnedTokenAddress: '0x5b1c50a1B0FfFB762b0431D6b0E1309a48Ac95a9', + earnContractAddress: '0x5b1c50a1B0FfFB762b0431D6b0E1309a48Ac95a9', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-bunny-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['BUNNY', 'BNB'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0xc9849e6fdb743d08faee3e34dd2d1bc69ea11a51', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0xc9849e6fdb743d08faee3e34dd2d1bc69ea11a51', + createdAt: 1619437257, + retiredReason: 'tvl', + }, + { + id: 'cakev2-eos-bnb-eol', + logo: 'bnb-pairs/EOS-BNB.svg', + name: 'EOS-BNB LP', + token: 'EOS-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0xB6e34b5C65Eda51bb1BD4ea5F79d385Fb94b9504', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2EOS-BNB', + earnedTokenAddress: '0x23ca638D912C98870bCd03CB3a7D4084072f4474', + earnContractAddress: '0x23ca638D912C98870bCd03CB3a7D4084072f4474', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-eos-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'PancakeSwap', + assets: ['EOS', 'BNB'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0x56b6fB708fC5732DEC1Afc8D8556423A2EDcCbD6', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x56b6fB708fC5732DEC1Afc8D8556423A2EDcCbD6', + createdAt: 1619423558, + }, + { + id: 'cakev2-xrp-bnb', + logo: 'bnb-pairs/XRP-BNB.svg', + name: 'XRP-BNB LP', + token: 'XRP-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x03F18135c44C64ebFdCBad8297fe5bDafdBbdd86', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2XRP-BNB', + earnedTokenAddress: '0x1a39846045288d55f48Bc6AB2b77A03d93aB5e05', + earnContractAddress: '0x1a39846045288d55f48Bc6AB2b77A03d93aB5e05', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-xrp-bnb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'PancakeSwap', + assets: ['XRP', 'BNB'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0x1D2F0da169ceB9fC7B3144628dB156f3F6c60dBE', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x1D2F0da169ceB9fC7B3144628dB156f3F6c60dBE', + createdAt: 1619423603, + }, + { + id: 'cakev2-uni-bnb', + logo: 'bnb-pairs/UNI-BNB.svg', + name: 'UNI-BNB LP', + token: 'UNI-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x014608E87AF97a054C9a49f81E1473076D51d9a3', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2UNI-BNB', + earnedTokenAddress: '0xb3127Fe584E0A522857D1dAfb8ef0b8CE7E9A9c2', + earnContractAddress: '0xb3127Fe584E0A522857D1dAfb8ef0b8CE7E9A9c2', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-uni-bnb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'PancakeSwap', + assets: ['UNI', 'BNB'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0xBf5140A22578168FD562DCcF235E5D43A02ce9B1', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0xBf5140A22578168FD562DCcF235E5D43A02ce9B1', + createdAt: 1619423639, + }, + { + id: 'cakev2-sxp-bnb', + logo: 'bnb-pairs/SXP-BNB.svg', + name: 'SXP-BNB LP', + token: 'SXP-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0xD8E2F8b6Db204c405543953Ef6359912FE3A88d6', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2SXP-BNB', + earnedTokenAddress: '0x4d92dfd7975910d63D0bfBc2A02b4BFad6E1FFC4', + earnContractAddress: '0x4d92dfd7975910d63D0bfBc2A02b4BFad6E1FFC4', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-sxp-bnb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'PancakeSwap', + assets: ['SXP', 'BNB'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0x47BEAd2563dCBf3bF2c9407fEa4dC236fAbA485A', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x47BEAd2563dCBf3bF2c9407fEa4dC236fAbA485A', + createdAt: 1619423687, + }, + { + id: 'cakev2-blk-bnb-eol', + logo: 'bnb-pairs/BLK-BNB.svg', + name: 'BLK-BNB LP', + token: 'BLK-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x356Dd24BfF8e23BdE0430f00ad0C290E33438bD7', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2BLK-BNB', + earnedTokenAddress: '0x9Cfd2F621546575721d1f59D0075D31ed6F8b5d7', + earnContractAddress: '0x9Cfd2F621546575721d1f59D0075D31ed6F8b5d7', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-blk-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['BLK', 'BNB'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0x63870A18B6e42b01Ef1Ad8A2302ef50B7132054F', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x63870A18B6e42b01Ef1Ad8A2302ef50B7132054F', + createdAt: 1619423720, + }, + { + id: 'cakev2-jgn-bnb-eol', + logo: 'bnb-pairs/JGN-BNB.svg', + name: 'JGN-BNB LP', + token: 'JGN-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x7275278C94b5e20708380561C4Af98F38dDC6374', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2JGN-BNB', + earnedTokenAddress: '0x211A8D59Cc44d86e30F5b5F298253B0EB4F9bc13', + earnContractAddress: '0x211A8D59Cc44d86e30F5b5F298253B0EB4F9bc13', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-jgn-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['JGN', 'BNB'], + retireReason: 'rewards', + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0xC13B7a43223BB9Bf4B69BD68Ab20ca1B79d81C75', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0xC13B7a43223BB9Bf4B69BD68Ab20ca1B79d81C75', + createdAt: 1619419712, + }, + { + id: 'cakev2-eps-bnb', + logo: 'bnb-pairs/EPS-BNB.svg', + name: 'EPS-BNB LP', + token: 'EPS-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0xddE420cbB3794ebD8FFC3Ac69F9c78e5d1411870', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2EPS-BNB', + earnedTokenAddress: '0xDdfE5F59C735977d33f36f9B8D06E6A212CB9094', + earnContractAddress: '0xDdfE5F59C735977d33f36f9B8D06E6A212CB9094', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-eps-bnb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'PancakeSwap', + assets: ['EPS', 'BNB'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0xA7f552078dcC247C2684336020c03648500C6d9F', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0xA7f552078dcC247C2684336020c03648500C6d9F', + createdAt: 1619419751, + }, + { + id: 'cakev2-nrv-bnb-eol', + logo: 'bnb-pairs/NRV-BNB.svg', + name: 'NRV-BNB LP', + token: 'NRV-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0xE482249Cd295C0d1e9D2baAEE71e66de21024C68', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2NRV-BNB', + earnedTokenAddress: '0xD059034677f2E57489beF03f942CE6ffAccBEdD2', + earnContractAddress: '0xD059034677f2E57489beF03f942CE6ffAccBEdD2', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-nrv-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['NRV', 'BNB'], + retireReason: 'rewards', + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0x42F6f551ae042cBe50C739158b4f0CAC0Edb9096', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x42F6f551ae042cBe50C739158b4f0CAC0Edb9096', + createdAt: 1619419784, + }, + { + id: 'cakev2-bfi-bnb', + logo: 'bnb-pairs/BFI-BNB.svg', + name: 'BFI-BNB LP', + token: 'BFI-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x153Ad7d25B0b810497483d0cEE8AF42Fc533FeC8', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2BFI-BNB', + earnedTokenAddress: '0x2a6163c0C608e8C2F90E94ae0D4A0df9ABc4A818', + earnContractAddress: '0x2a6163c0C608e8C2F90E94ae0D4A0df9ABc4A818', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-bfi-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['BFI', 'BNB'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0x81859801b01764D4f0Fa5E64729f5a6C3b91435b', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x81859801b01764D4f0Fa5E64729f5a6C3b91435b', + createdAt: 1619419856, + }, + { + id: 'cakev2-bdo-bnb-eol', + logo: 'bnb-pairs/BDO-BNB.svg', + name: 'BDO-BNB LP', + token: 'BDO-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x4288706624e3dD839b069216eB03B8B9819C10d2', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2BDO-BNB', + earnedTokenAddress: '0x0dc321E38BfF5693e6c003Ab71eD85693919B04e', + earnContractAddress: '0x0dc321E38BfF5693e6c003Ab71eD85693919B04e', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-bdo-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['BDO', 'BNB'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0x190b589cf9fb8ddeabbfeae36a813ffb2a702454', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x190b589cf9fb8ddeabbfeae36a813ffb2a702454', + createdAt: 1619419892, + }, + { + id: 'cakev2-for-busd-eol', + logo: 'busd-pairs/FOR-BUSD.svg', + name: 'FOR-BUSD LP', + token: 'FOR-BUSD LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0xE60B4e87645093A42fa9dcC5d0C8Df6E67f1f9d2', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2FOR-BUSD', + earnedTokenAddress: '0x010ef61eb2240154C8779201be0914a8AaDcA828', + earnContractAddress: '0x010ef61eb2240154C8779201be0914a8AaDcA828', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-for-busd', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'PancakeSwap', + assets: ['FOR', 'BUSD'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/0x658A109C5900BC6d2357c87549B651670E5b0539/0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x658A109C5900BC6d2357c87549B651670E5b0539', + createdAt: 1619418449, + }, + { + id: 'cakev2-vai-busd-eol', + logo: 'busd-pairs/VAI-BUSD.svg', + name: 'VAI-BUSD LP', + token: 'VAI-BUSD LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x133ee93FE93320e1182923E1a640912eDE17C90C', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2VAI-BUSD', + earnedTokenAddress: '0xf5eA38B6b9644224dA1aECbC1219e8543c0689b2', + earnContractAddress: '0xf5eA38B6b9644224dA1aECbC1219e8543c0689b2', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-vai-busd', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['VAI', 'BUSD'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/0x4bd17003473389a42daf6a0a729f6fdb328bbbd7/0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56', + buyTokenUrl: + 'https://pancakeswap.finance/swap?inputCurrency=0x4bd17003473389a42daf6a0a729f6fdb328bbbd7&outputCurrency=0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56', + createdAt: 1619418482, + retiredReason: 'tvl', + }, + { + id: 'cakev2-usdt-busd', + logo: 'busd-pairs/USDT-BUSD.svg', + name: 'USDT-BUSD LP', + token: 'USDT-BUSD LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x7EFaEf62fDdCCa950418312c6C91Aef321375A00', + tokenDecimals: 18, + earnedToken: 'mooCakeV2USDT-BUSD', + earnedTokenAddress: '0x4c66ef364F54FCdD540ad29E075bc23cFe9F9FF6', + earnContractAddress: '0x4c66ef364F54FCdD540ad29E075bc23cFe9F9FF6', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-usdt-busd', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'PancakeSwap', + assets: ['USDT', 'BUSD'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56/0x55d398326f99059ff775485246999027b3197955', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x55d398326f99059ff775485246999027b3197955', + createdAt: 1619426388, + }, + { + id: 'cakev2-alpha-bnb', + logo: 'bnb-pairs/ALPHA-BNB.svg', + name: 'ALPHA-BNB LP', + token: 'ALPHA-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0xACF47CBEaab5c8A6Ee99263cfE43995f89fB3206', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2ALPHA-BNB', + earnedTokenAddress: '0xfcA433b1c071737F92B76234984aBA10D04De57E', + earnContractAddress: '0xfcA433b1c071737F92B76234984aBA10D04De57E', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-alpha-bnb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'PancakeSwap', + assets: ['ALPHA', 'BNB'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0xa1faa113cbe53436df28ff0aee54275c13b40975', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0xa1faa113cbe53436df28ff0aee54275c13b40975', + createdAt: 1619415302, + }, + { + id: 'cakev2-inj-bnb', + logo: 'bnb-pairs/INJ-BNB.svg', + name: 'INJ-BNB LP', + token: 'INJ-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x1BdCebcA3b93af70b58C41272AEa2231754B23ca', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2INJ-BNB', + earnedTokenAddress: '0xb0602F26Fb2b7F8bca2d9aDB3FC3EF8619502097', + earnContractAddress: '0xb0602F26Fb2b7F8bca2d9aDB3FC3EF8619502097', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-inj-bnb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'PancakeSwap', + assets: ['INJ', 'BNB'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0xa2B726B1145A4773F68593CF171187d8EBe4d495', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0xa2B726B1145A4773F68593CF171187d8EBe4d495', + createdAt: 1619415335, + }, + { + id: 'cakev2-twt-bnb', + logo: 'bnb-pairs/TWT-BNB.svg', + name: 'TWT-BNB LP', + token: 'TWT-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x3DcB1787a95D2ea0Eb7d00887704EeBF0D79bb13', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2TWT-BNB', + earnedTokenAddress: '0x9151B2E9ad4B4222d67b8467BBcf1f37597b9E7B', + earnContractAddress: '0x9151B2E9ad4B4222d67b8467BBcf1f37597b9E7B', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-twt-bnb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'PancakeSwap', + assets: ['TWT', 'BNB'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0x4b0f1812e5df2a09796481ff14017e6005508003', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x4b0f1812e5df2a09796481ff14017e6005508003', + createdAt: 1619415368, + }, + { + id: 'cakev2-xvs-bnb', + logo: 'bnb-pairs/XVS-BNB.svg', + name: 'XVS-BNB LP', + token: 'XVS-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x7EB5D86FD78f3852a3e0e064f2842d45a3dB6EA2', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2XVS-BNB', + earnedTokenAddress: '0xa2f05EA4Af928BA34d66E6f69343a6703744Caba', + earnContractAddress: '0xa2f05EA4Af928BA34d66E6f69343a6703744Caba', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-xvs-bnb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'PancakeSwap', + assets: ['XVS', 'BNB'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0xcf6bb5389c92bdda8a3747ddb454cb7a64626c63', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0xcf6bb5389c92bdda8a3747ddb454cb7a64626c63', + createdAt: 1619415401, + }, + { + id: 'cakev2-reef-bnb-eol', + logo: 'bnb-pairs/REEF-BNB.svg', + name: 'REEF-BNB LP', + token: 'REEF-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0xd63b5CecB1f40d626307B92706Df357709D05827', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2REEF-BNB', + earnedTokenAddress: '0x8ec78a292e5E1Bce2ed917eD8b02cf9E93a78CdE', + earnContractAddress: '0x8ec78a292e5E1Bce2ed917eD8b02cf9E93a78CdE', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-reef-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['REEF', 'BNB'], + retireReason: 'rewards', + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0xf21768ccbc73ea5b6fd3c687208a7c2def2d966e', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0xf21768ccbc73ea5b6fd3c687208a7c2def2d966e', + createdAt: 1619415119, + }, + { + id: 'cakev2-band-bnb-eol', + logo: 'bnb-pairs/BAND-BNB.svg', + name: 'BAND-BNB LP', + token: 'BAND-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x168B273278F3A8d302De5E879aA30690B7E6c28f', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2BAND-BNB', + earnedTokenAddress: '0x9e6E0D9c43dDaC58710BeE30B01a5117f8Ba69bC', + earnContractAddress: '0x9e6E0D9c43dDaC58710BeE30B01a5117f8Ba69bC', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-band-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['BAND', 'BNB'], + retireReason: 'rewards', + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0xad6caeb32cd2c308980a548bd0bc5aa4306c6c18', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0xad6caeb32cd2c308980a548bd0bc5aa4306c6c18', + createdAt: 1619415218, + }, + { + id: 'cakev2-atom-bnb-eol', + logo: 'bnb-pairs/ATOM-BNB.svg', + name: 'ATOM-BNB LP', + token: 'ATOM-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x468b2DC8DC75990eE3E9dc0648965Ad6294E7914', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2ATOM-BNB', + earnedTokenAddress: '0x8815d484A3bf89b7e996f846ddAb6DAE1C4BEA3A', + earnContractAddress: '0x8815d484A3bf89b7e996f846ddAb6DAE1C4BEA3A', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-atom-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['ATOM', 'BNB'], + retireReason: 'rewards', + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0x0eb3a705fc54725037cc9e008bdede697f62f335', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x0eb3a705fc54725037cc9e008bdede697f62f335', + createdAt: 1619415266, + }, + { + id: 'cakev2-hget-bnb-eol', + logo: 'bnb-pairs/HGET-BNB.svg', + name: 'HGET-BNB LP', + token: 'HGET-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0xF74ee1e10e097dc326a2ad004F9Cc95CB71088d3', + tokenDecimals: 18, + earnedToken: 'mooCakeV2HGET-BNB', + earnedTokenAddress: '0xdA7439450510FB56052681eb1A3FBb9C9880f80d', + earnContractAddress: '0xdA7439450510FB56052681eb1A3FBb9C9880f80d', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-hget-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'PancakeSwap', + assets: ['HGET', 'BNB'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0xc7d8d35eba58a0935ff2d5a33df105dd9f071731', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0xc7d8d35eba58a0935ff2d5a33df105dd9f071731', + createdAt: 1619388632, + }, + { + id: 'cakev2-cgg-bnb-eol', + logo: 'bnb-pairs/CGG-BNB.svg', + name: 'CGG-BNB LP', + token: 'CGG-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x0604471c532F9fEBAD3E37190B667f44BD0894b3', + tokenDecimals: 18, + earnedToken: 'mooCakeV2CGG-BNB', + earnedTokenAddress: '0x7697B2F43E73bC3292c82d1087BB7c6aEC931fED', + earnContractAddress: '0x7697B2F43E73bC3292c82d1087BB7c6aEC931fED', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-cgg-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'PancakeSwap', + assets: ['CGG', 'BNB'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0x1613957159e9b0ac6c80e824f7eea748a32a0ae2', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x1613957159e9b0ac6c80e824f7eea748a32a0ae2', + createdAt: 1619388224, + }, + { + id: 'cakev2-xed-bnb-eol', + logo: 'bnb-pairs/XED-BNB.svg', + name: 'XED-BNB LP', + token: 'XED-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0xa7A0b605343dF36B748FF4B5f7578b3F2D0651CE', + tokenDecimals: 18, + earnedToken: 'mooCakeV2XED-BNB', + earnedTokenAddress: '0xDAa93B916ca2A3608B912F8514c38678d7f9E568', + earnContractAddress: '0xDAa93B916ca2A3608B912F8514c38678d7f9E568', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-xed-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'PancakeSwap', + assets: ['XED', 'BNB'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0x5621b5a3f4a8008c4ccdd1b942b121c8b1944f1f', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x5621b5a3f4a8008c4ccdd1b942b121c8b1944f1f', + createdAt: 1619388191, + }, + { + id: 'cakev2-link-bnb', + logo: 'bnb-pairs/LINK-BNB.svg', + name: 'LINK-BNB LP', + token: 'LINK-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x824eb9faDFb377394430d2744fa7C42916DE3eCe', + tokenDecimals: 18, + earnedToken: 'mooCakeV2LINK-BNB', + earnedTokenAddress: '0xaB5EA0Fee3AEdE95D9747f41109f0b9F3b8f07E7', + earnContractAddress: '0xaB5EA0Fee3AEdE95D9747f41109f0b9F3b8f07E7', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-link-bnb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'PancakeSwap', + assets: ['LINK', 'BNB'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0xf8a0bf9cf54bb92f17374d9e9a321e6a111a51bd', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0xf8a0bf9cf54bb92f17374d9e9a321e6a111a51bd', + createdAt: 1619388074, + }, + { + id: 'cakev2-usdt-bnb', + logo: 'bnb-pairs/USDT-BNB.svg', + name: 'USDT-BNB LP', + token: 'USDT-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x16b9a82891338f9bA80E2D6970FddA79D1eb0daE', + tokenDecimals: 18, + earnedToken: 'mooCakeV2USDT-BNB', + earnedTokenAddress: '0x8d98855595E7971abE44bAdf1574fd126B286de4', + earnContractAddress: '0x8d98855595E7971abE44bAdf1574fd126B286de4', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-usdt-bnb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'PancakeSwap', + assets: ['USDT', 'BNB'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0x55d398326f99059ff775485246999027b3197955', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x55d398326f99059ff775485246999027b3197955', + createdAt: 1619388089, + }, + { + id: 'cakev2-busd-bnb', + logo: 'bnb-pairs/BUSD-BNB.svg', + name: 'BUSD-BNB LP', + token: 'BUSD-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x58F876857a02D6762E0101bb5C46A8c1ED44Dc16', + tokenDecimals: 18, + earnedToken: 'mooCakeV2BNB-BUSD', + earnedTokenAddress: '0xAd61143796D90FD5A61d89D63a546C7dB0a70475', + earnContractAddress: '0xAd61143796D90FD5A61d89D63a546C7dB0a70475', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-busd-bnb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'PancakeSwap', + assets: ['BUSD', 'BNB'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56', + buyTokenUrl: + 'https://pancakeswap.finance/swap?inputCurrency=0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56', + createdAt: 1619388116, + }, + { + id: 'cakev2-eth-bnb', + logo: 'bnb-pairs/ETH-BNB.svg', + name: 'ETH-BNB LP', + token: 'ETH-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x74E4716E431f45807DCF19f284c7aA99F18a4fbc', + tokenDecimals: 18, + earnedToken: 'mooCakeV2ETH-BNB', + earnedTokenAddress: '0x0eb78598851D08218d54fCe965ee2bf29C288fac', + earnContractAddress: '0x0eb78598851D08218d54fCe965ee2bf29C288fac', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-eth-bnb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'PancakeSwap', + assets: ['ETH', 'BNB'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0x2170ed0880ac9a755fd29b2688956bd959f933f8', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x2170ed0880ac9a755fd29b2688956bd959f933f8', + createdAt: 1619388146, + }, + { + id: 'cakev2-btcb-bnb', + logo: 'bnb-pairs/BTCB-BNB.svg', + name: 'BTCB-BNB LP', + token: 'BTCB-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x61EB789d75A95CAa3fF50ed7E47b96c132fEc082', + tokenDecimals: 18, + earnedToken: 'mooCakeV2BNB-BTCB', + earnedTokenAddress: '0xafE4f29578FbfE7Be32B836CBEb81daB6574cC70', + earnContractAddress: '0xafE4f29578FbfE7Be32B836CBEb81daB6574cC70', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-btcb-bnb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'PancakeSwap', + assets: ['BTCB', 'BNB'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0x7130d2a12b9bcbfae4f2634d864a1ee1ce3ead9c', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x7130d2a12b9bcbfae4f2634d864a1ee1ce3ead9c', + createdAt: 1619388167, + }, + { + id: 'cakev2-hakka-busd-eol', + logo: 'busd-pairs/HAKKA-BUSD.svg', + name: 'HAKKA-BUSD LP', + token: 'HAKKA-BUSD LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x2C624C9Ecf16Cb81aB85cC2C0B0c5e12A09AFDa6', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2HAKKA-BUSD', + earnedTokenAddress: '0xF79BF908d0e6d8E7054375CD80dD33424B1980bf', + earnContractAddress: '0xF79BF908d0e6d8E7054375CD80dD33424B1980bf', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-hakka-busd', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'PancakeSwap', + assets: ['HAKKA', 'BUSD'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/0xe9e7cea3dedca5984780bafc599bd69add087d56/0x1d1eb8e8293222e1a29d2c0e4ce6c0acfd89aaac', + buyTokenUrl: + 'https://pancakeswap.finance/swap?inputCurrency=0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56&outputCurrency=0x1d1eb8e8293222e1a29d2c0e4ce6c0acfd89aaac', + createdAt: 1619369612, + }, + { + id: 'cakev2-hoo-busd-eol', + logo: 'busd-pairs/HOO-BUSD.svg', + name: 'HOO-BUSD LP', + token: 'HOO-BUSD LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x3e42C1f7239231E3752B507764445dd8e6A570d5', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2HOO-BUSD', + earnedTokenAddress: '0x36eE7e0AA45eb94bb0B0FC9B9f5bdc66819761A5', + earnContractAddress: '0x36eE7e0AA45eb94bb0B0FC9B9f5bdc66819761A5', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-hoo-busd', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'PancakeSwap', + assets: ['HOO', 'BUSD'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56/0xE1d1F66215998786110Ba0102ef558b22224C016', + buyTokenUrl: + 'https://pancakeswap.finance/swap?inputCurrency=0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56&outputCurrency=0xE1d1F66215998786110Ba0102ef558b22224C016', + createdAt: 1619369504, + }, + { + id: 'cakev2-txl-busd', + logo: 'busd-pairs/TXL-BUSD.svg', + name: 'TXL-BUSD LP', + token: 'TXL-BUSD LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x1434BB50196A0C7eA825940b1DFd8aAd25d79817', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2TXL-BUSD', + earnedTokenAddress: '0x9Bc299505Ce14FBa3bA3F1357CF3AA48ea01A2b9', + earnContractAddress: '0x9Bc299505Ce14FBa3bA3F1357CF3AA48ea01A2b9', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-txl-busd', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['TXL', 'BUSD'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/0xe9e7cea3dedca5984780bafc599bd69add087d56/0x1ffd0b47127fdd4097e54521c9e2c7f0d66aafc5', + buyTokenUrl: + 'https://pancakeswap.finance/swap?inputCurrency=0x1ffd0b47127fdd4097e54521c9e2c7f0d66aafc5&outputCurrency=0xe9e7cea3dedca5984780bafc599bd69add087d56', + createdAt: 1619369534, + }, + { + id: 'cakev2-ust-busd', + logo: 'busd-pairs/UST-BUSD.svg', + name: 'UST-BUSD LP', + token: 'UST-BUSD LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x05faf555522Fa3F93959F86B41A3808666093210', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2UST-BUSD', + earnedTokenAddress: '0x76c8b991F99a77B270D5f6529855f3612891e70f', + earnContractAddress: '0x76c8b991F99a77B270D5f6529855f3612891e70f', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-ust-busd', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'PancakeSwap', + assets: ['UST', 'BUSD'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + 'ALGO_STABLE', + ], + addLiquidityUrl: + 'https://pancakeswap.finance/add/0x23396cF899Ca06c4472205fC903bDB4de249D6fC/0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56', + buyTokenUrl: + 'https://pancakeswap.finance/swap?inputCurrency=0x23396cF899Ca06c4472205fC903bDB4de249D6fC&outputCurrency=0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56', + createdAt: 1619369585, + }, + { + id: 'cakev2-mnflx-ust-eol', + logo: 'ust-pairs/MNFLX-UST.svg', + name: 'MNFLX-UST LP', + token: 'MNFLX-UST LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x91417426C3FEaA3Ca795921eB9FdD9715ad92537', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2mNFLX-UST', + earnedTokenAddress: '0xE2409314Df4708230999F4bE4dE4Ac3cF3d0B08c', + earnContractAddress: '0xE2409314Df4708230999F4bE4dE4Ac3cF3d0B08c', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-mnflx-ust', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['MNFLX', 'UST'], + removeLiquidityUrl: + 'https://pancakeswap.finance/remove/0x23396cf899ca06c4472205fc903bdb4de249d6fc/0xa04F060077D90Fe2647B61e4dA4aD1F97d6649dc', + createdAt: 1619393616, + }, + { + id: 'cakev2-mir-ust-eol', + logo: 'ust-pairs/MIR-UST.svg', + name: 'MIR-UST LP', + token: 'MIR-UST LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x89666d026696660e93Bf6edf57B71A68615768B7', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2MIR-UST', + earnedTokenAddress: '0x268e83D800c22ED8F00C4a8eFb9c3d44Ad61CB2e', + earnContractAddress: '0x268e83D800c22ED8F00C4a8eFb9c3d44Ad61CB2e', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-mir-ust', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'PancakeSwap', + assets: ['MIR', 'UST'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/0x23396cF899Ca06c4472205fC903bDB4de249D6fC/0x5B6DcF557E2aBE2323c48445E8CC948910d8c2c9', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x5B6DcF557E2aBE2323c48445E8CC948910d8c2c9', + createdAt: 1619367089, + }, + { + id: 'cakev2-tbtc-btcb-eol', + logo: 'uncategorized/TBTC-BTCB.svg', + name: 'tBTC-BTCB LP', + token: 'tBTC-BTCB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x8046fa66753928F35f7Db23ae0188ee6743C2FBA', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2tBTC-BTCB', + earnedTokenAddress: '0xf03B5870bb8EFdcabAd45f2283D64A7fbCdb2B0E', + earnContractAddress: '0xf03B5870bb8EFdcabAd45f2283D64A7fbCdb2B0E', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-tbtc-btcb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['tBTC', 'BTCB'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/0x7130d2a12b9bcbfae4f2634d864a1ee1ce3ead9c/0x2cD1075682b0FCCaADd0Ca629e138E64015Ba11c', + buyTokenUrl: + 'https://pancakeswap.finance/swap?inputCurrency=0x2cD1075682b0FCCaADd0Ca629e138E64015Ba11c&outputCurrency=0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9', + createdAt: 1619361616, + }, + { + id: 'cakev2-bbadger-btcb-eol', + logo: 'uncategorized/BADGER-BTCB.svg', + name: 'bBADGER-BTCB LP', + token: 'bBADGER-BTCB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x5A58609dA96469E9dEf3fE344bC39B00d18eb9A5', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2bBADGER-BTCB', + earnedTokenAddress: '0xC4fAB5E28C9f71D59B9d08BCA51FBe283bf4542F', + earnContractAddress: '0xC4fAB5E28C9f71D59B9d08BCA51FBe283bf4542F', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-bbadger-btcb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'PancakeSwap', + assets: ['bBADGER', 'BTCB'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/0x7130d2a12b9bcbfae4f2634d864a1ee1ce3ead9c/0x1f7216fdb338247512ec99715587bb97bbf96eae', + buyTokenUrl: + 'https://pancakeswap.finance/swap?inputCurrency=0x1f7216fdb338247512ec99715587bb97bbf96eae&outputCurrency=0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9', + createdAt: 1619361721, + }, + { + id: 'cakev2-bdigg-btcb', + logo: 'uncategorized/BDIGG-BTCB.svg', + name: 'bDIGG-BTCB LP', + token: 'bDIGG-BTCB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x81d776C90c89B8d51E9497D58338933127e2fA80', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2bDIGG-BTCB', + earnedTokenAddress: '0xE32e76e79E94f4C9091F9a4120A72888d0DFf3C6', + earnContractAddress: '0xE32e76e79E94f4C9091F9a4120A72888d0DFf3C6', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-bdigg-btcb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['bDIGG', 'BTCB'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/0x5986D5c77c65e5801a5cAa4fAE80089f870A71dA/0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c', + buyTokenUrl: + 'https://pancakeswap.finance/swap?inputCurrency=0x1f7216fdb338247512ec99715587bb97bbf96eae&outputCurrency=0x5986d5c77c65e5801a5caa4fae80089f870a71da', + createdAt: 1619361670, + }, + { + id: 'cakev2-ramp-busd', + logo: 'busd-pairs/RAMP-BUSD.svg', + name: 'RAMP-BUSD LP', + token: 'RAMP-BUSD LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0xE834bf723f5bDff34a5D1129F3c31Ea4787Bc76a', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2RAMP-BUSD', + earnedTokenAddress: '0x37b67318d7746faD405AC139847b96718D37b8C4', + earnContractAddress: '0x37b67318d7746faD405AC139847b96718D37b8C4', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-ramp-busd', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'PancakeSwap', + assets: ['RAMP', 'BUSD'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/0xe9e7cea3dedca5984780bafc599bd69add087d56/0x8519ea49c997f50ceffa444d240fb655e89248aa', + buyTokenUrl: + 'https://pancakeswap.finance/swap?inputCurrency=0x8519ea49c997f50ceffa444d240fb655e89248aa&outputCurrency=0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56', + createdAt: 1619356981, + }, + { + id: 'cakev2-dexe-busd-eol', + logo: 'busd-pairs/DEXE-BUSD.svg', + name: 'DEXE-BUSD LP', + token: 'DEXE-BUSD LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x3578B1f9BCE98D2F4D293b422d8850fdf48B1f21', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2DEXE-BUSD', + earnedTokenAddress: '0x257d62DB67418735f7239c6F27f4d7b426067205', + earnContractAddress: '0x257d62DB67418735f7239c6F27f4d7b426067205', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-dexe-busd', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['DEXE', 'BUSD'], + retireReason: 'rewards', + addLiquidityUrl: + 'https://pancakeswap.finance/add/0xe9e7cea3dedca5984780bafc599bd69add087d56/0x039cb485212f996a9dbb85a9a75d898f94d38da6', + buyTokenUrl: + 'https://pancakeswap.finance/swap?inputCurrency=0x039cb485212f996a9dbb85a9a75d898f94d38da6&outputCurrency=0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56', + createdAt: 1619356942, + }, + { + id: 'cakev2-tpt-busd-eol', + logo: 'busd-pairs/TPT-BUSD.svg', + name: 'TPT-BUSD LP', + token: 'TPT-BUSD LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x6D0c831254221ba121fB53fb44Df289A6558867d', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2TPT-BUSD', + earnedTokenAddress: '0xd6D3FEACC85E5708e6344548a3415A5f484889c5', + earnContractAddress: '0xd6D3FEACC85E5708e6344548a3415A5f484889c5', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-tpt-busd', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'PancakeSwap', + assets: ['TPT', 'BUSD'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/0xe9e7cea3dedca5984780bafc599bd69add087d56/0xeca41281c24451168a37211f0bc2b8645af45092', + buyTokenUrl: + 'https://pancakeswap.finance/swap?inputCurrency=0xeca41281c24451168a37211f0bc2b8645af45092&outputCurrency=0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56', + createdAt: 1619356909, + }, + { + id: 'cakev2-xmark-busd-eol', + logo: 'busd-pairs/XMARK-BUSD.svg', + name: 'XMARK-BUSD LP', + token: 'XMARK-BUSD LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0xAa40f1AC20AAFcFEE8595Da606D78C503C7e70A3', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2XMARK-BUSD', + earnedTokenAddress: '0xEEB6F2857746a50554a58E00D55b4E54657aba83', + earnContractAddress: '0xEEB6F2857746a50554a58E00D55b4E54657aba83', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-xmark-busd', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'PancakeSwap', + assets: ['XMARK', 'BUSD'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/0xe9e7cea3dedca5984780bafc599bd69add087d56/0x26a5dfab467d4f58fb266648cae769503cec9580', + buyTokenUrl: + 'https://pancakeswap.finance/swap?inputCurrency=0x26a5dfab467d4f58fb266648cae769503cec9580&outputCurrency=0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56', + createdAt: 1619356876, + }, + { + id: 'cakev2-iotx-busd', + logo: 'busd-pairs/IOTX-BUSD.svg', + name: 'IOTX-BUSD LP', + token: 'IOTX-BUSD LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0xc13aA76AAc067c86aE38028019F414D731b3D86A', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2IOTX-BUSD', + earnedTokenAddress: '0x07fFC2258c99e6667235fEAa90De35A0a50CFBFd', + earnContractAddress: '0x07fFC2258c99e6667235fEAa90De35A0a50CFBFd', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-iotx-busd', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'PancakeSwap', + assets: ['IOTX', 'BUSD'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/0xe9e7cea3dedca5984780bafc599bd69add087d56/0x9678e42cebeb63f23197d726b29b1cb20d0064e5', + buyTokenUrl: + 'https://pancakeswap.finance/swap?inputCurrency=0x9678e42cebeb63f23197d726b29b1cb20d0064e5&outputCurrency=0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56', + createdAt: 1619356846, + }, + { + id: 'cakev2-lina-busd-eol', + logo: 'busd-pairs/LINA-BUSD.svg', + name: 'LINA-BUSD LP', + token: 'LINA-BUSD LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0xC5768c5371568Cf1114cddD52CAeD163A42626Ed', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2LINA-BUSD', + earnedTokenAddress: '0x40d29c06EFB7Da61008fB65CB113786f076058a4', + earnContractAddress: '0x40d29c06EFB7Da61008fB65CB113786f076058a4', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-lina-busd', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'tvl', + platform: 'PancakeSwap', + assets: ['LINA', 'BUSD'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/0xe9e7cea3dedca5984780bafc599bd69add087d56/0x762539b45a1dcce3d36d080f74d1aed37844b878', + buyTokenUrl: + 'https://pancakeswap.finance/swap?inputCurrency=0x762539b45a1dcce3d36d080f74d1aed37844b878&outputCurrency=0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56', + createdAt: 1619356816, + }, + { + id: 'cakev2-usdc-busd', + logo: 'busd-pairs/USDC-BUSD.svg', + name: 'USDC-BUSD LP', + token: 'USDC-BUSD LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x2354ef4DF11afacb85a5C7f98B624072ECcddbB1', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2USDC-BUSD', + earnedTokenAddress: '0x9260c62866f36638964551A8f480C3aAAa4693fd', + earnContractAddress: '0x9260c62866f36638964551A8f480C3aAAa4693fd', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-usdc-busd', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'PancakeSwap', + assets: ['USDC', 'BUSD'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + addLiquidityUrl: + 'https://pancakeswap.finance/add/0xe9e7cea3dedca5984780bafc599bd69add087d56/0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d&outputCurrency=0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56', + createdAt: 1619356783, + }, + { + id: 'cakev2-dai-busd', + logo: 'busd-pairs/DAI-BUSD.svg', + name: 'DAI-BUSD LP', + token: 'DAI-BUSD LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x66FDB2eCCfB58cF098eaa419e5EfDe841368e489', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2DAI-BUSD', + earnedTokenAddress: '0x6eb020663898c72F8E25958F5f7bcDC732279201', + earnContractAddress: '0x6eb020663898c72F8E25958F5f7bcDC732279201', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-dai-busd', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'PancakeSwap', + assets: ['DAI', 'BUSD'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/0xe9e7cea3dedca5984780bafc599bd69add087d56/0x1af3f329e8be154074d8769d1ffa4ee058b1dbc3', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x1af3f329e8be154074d8769d1ffa4ee058b1dbc3&outputCurrency=0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56', + createdAt: 1619354488, + }, + { + id: 'cakev2-sushi-eth-eol', + logo: 'uncategorized/SUSHI-ETH.svg', + name: 'SUSHI-ETH LP', + token: 'SUSHI-ETH LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x16aFc4F2Ad82986bbE2a4525601F8199AB9c832D', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2SUSHI-ETH', + earnedTokenAddress: '0x517b331B00dF201B660FfE74874Ed491D8047879', + earnContractAddress: '0x517b331B00dF201B660FfE74874Ed491D8047879', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-sushi-eth', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['SUSHI', 'ETH'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/0x2170ed0880ac9a755fd29b2688956bd959f933f8/0x947950bcc74888a40ffa2593c5798f11fc9124c4', + buyTokenUrl: + 'https://pancakeswap.finance/swap?inputCurrency=0x2170ed0880ac9a755fd29b2688956bd959f933f8&outputCurrency=0x947950bcc74888a40ffa2593c5798f11fc9124c4', + createdAt: 1619350804, + retiredReason: 'tvl', + }, + { + id: 'cakev2-dego-bnb-eol', + logo: 'bnb-pairs/DEGO-BNB.svg', + name: 'DEGO-BNB LP', + token: 'DEGO-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0xF1Ec67fA1881796BFf63Db3E1A301cE9cb787Fad', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2DEGO-BNB', + earnedTokenAddress: '0x98a8Fd9cA5B556dc387820CAC39f0584E4f87E51', + earnContractAddress: '0x98a8Fd9cA5B556dc387820CAC39f0584E4f87E51', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-dego-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['DEGO', 'BNB'], + retireReason: 'rewards', + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0x3FdA9383A84C05eC8f7630Fe10AdF1fAC13241CC', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x3FdA9383A84C05eC8f7630Fe10AdF1fAC13241CC', + createdAt: 1619335502, + }, + { + id: 'cakev2-gum-bnb-eol', + logo: 'bnb-pairs/GUM-BNB.svg', + name: 'GUM-BNB LP', + token: 'GUM-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x28Ea5894D4DBbE90bB58eE3BAB2869387d711c87', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2GUM-BNB', + earnedTokenAddress: '0x04dc8B92192183a1e9186Df0CC27024Dfc83a7f1', + earnContractAddress: '0x04dc8B92192183a1e9186Df0CC27024Dfc83a7f1', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-gum-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['GUM', 'BNB'], + retireReason: 'rewards', + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0xc53708664b99DF348dd27C3Ac0759d2DA9c40462', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0xc53708664b99DF348dd27C3Ac0759d2DA9c40462', + createdAt: 1619335460, + }, + { + id: 'cakev2-pbtc-bnb-eol', + logo: 'bnb-pairs/PBTC-BNB.svg', + name: 'pBTC-BNB LP', + token: 'pBTC-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x0362ba706DFE8ED12Ec1470aB171d8Dcb1C72B8D', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2PBTC-BNB', + earnedTokenAddress: '0x2D8653881D8216AF7E5de31D5321FC21f45845FE', + earnContractAddress: '0x2D8653881D8216AF7E5de31D5321FC21f45845FE', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-pbtc-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['pBTC', 'BNB'], + retireReason: 'rewards', + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0xeD28A457A5A76596ac48d87C0f577020F6Ea1c4C', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0xeD28A457A5A76596ac48d87C0f577020F6Ea1c4C', + createdAt: 1619335412, + }, + { + id: 'cakev2-belt-bnb-eol', + logo: 'bnb-pairs/BELT-BNB.svg', + name: 'BELT-BNB LP', + token: 'BELT-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0xF3Bc6FC080ffCC30d93dF48BFA2aA14b869554bb', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2BELT-BNB', + earnedTokenAddress: '0x3F0f1a8E2DCe5dA86Cad9b5914D8018c021E08b1', + earnContractAddress: '0x3F0f1a8E2DCe5dA86Cad9b5914D8018c021E08b1', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-belt-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['BELT', 'BNB'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0xE0e514c71282b6f4e823703a39374Cf58dc3eA4f', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0xE0e514c71282b6f4e823703a39374Cf58dc3eA4f', + createdAt: 1619335340, + retiredReason: 'tvl', + }, + { + id: 'cakev2-bel-bnb-eol', + logo: 'bnb-pairs/BEL-BNB.svg', + name: 'BEL-BNB LP', + token: 'BEL-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x69DEE989c30b5fFe40867f5FC14F00E4bCE7B681', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2BEL-BNB', + earnedTokenAddress: '0xE5FF1e597AF772BE9c6d95B9Be2193FC6b917539', + earnContractAddress: '0xE5FF1e597AF772BE9c6d95B9Be2193FC6b917539', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-bel-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['BEL', 'BNB'], + retireReason: 'rewards', + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0x8443f091997f06a61670b735ed92734f5628692f', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x8443f091997f06a61670b735ed92734f5628692f', + createdAt: 1619335307, + }, + { + id: 'cakev2-bmxx-bnb-eol', + logo: 'bnb-pairs/BMXX-BNB.svg', + name: 'BMXX-BNB LP', + token: 'BMXX-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0xc20A92a1424b29b78DFaF92FD35D4cf8A06419B4', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2BMXX-BNB', + earnedTokenAddress: '0xC83cB476c772622196a56A3B51F625ac48Ff9746', + earnContractAddress: '0xC83cB476c772622196a56A3B51F625ac48Ff9746', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-bmxx-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['BMXX', 'BNB'], + retireReason: 'rewards', + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0x4131b87f74415190425ccd873048c708f8005823', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x4131b87f74415190425ccd873048c708f8005823', + createdAt: 1619335277, + }, + { + id: 'cakev2-swgb-bnb-eol', + logo: 'bnb-pairs/SWGB-BNB.svg', + name: 'SWGB-BNB LP', + token: 'SWGB-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x856f9AD94cA8680B899214Bb1EB3d235a3C33Afe', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2SWGB-BNB', + earnedTokenAddress: '0x891ac86d46c97b7cf330ba4f5a905930Ac331858', + earnContractAddress: '0x891ac86d46c97b7cf330ba4f5a905930Ac331858', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-swgb-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['SWGB', 'BNB'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0xe40255c5d7fa7ceec5120408c78c787cecb4cfdb', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0xe40255c5d7fa7ceec5120408c78c787cecb4cfdb', + createdAt: 1619331241, + }, + { + id: 'cakev2-lit-bnb-eol', + logo: 'bnb-pairs/LIT-BNB.svg', + name: 'LIT-BNB LP', + token: 'LIT-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x1F37d4226d23d09044B8005c127C0517BD7e94fD', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2LIT-BNB', + earnedTokenAddress: '0x2257EFfa0Be8A43cDED6E339991844Dd6277f8e6', + earnContractAddress: '0x2257EFfa0Be8A43cDED6E339991844Dd6277f8e6', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-lit-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['LIT', 'BNB'], + retireReason: 'rewards', + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0xb59490aB09A0f526Cc7305822aC65f2Ab12f9723', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0xb59490aB09A0f526Cc7305822aC65f2Ab12f9723', + createdAt: 1619331169, + }, + { + id: 'cakev2-ditto-bnb', + logo: 'bnb-pairs/DITTO-BNB.svg', + name: 'DITTO-BNB LP', + token: 'DITTO-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x8645148dE4E339964bA480AE3478653b5bc6E211', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2DITTO-BNB', + earnedTokenAddress: '0x19D62B080Df4dfb9ca2c8Aa56721d06860EcD533', + earnContractAddress: '0x19D62B080Df4dfb9ca2c8Aa56721d06860EcD533', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-ditto-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['DITTO', 'BNB'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0x233d91a0713155003fc4dce0afa871b508b3b715', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x233d91a0713155003fc4dce0afa871b508b3b715', + createdAt: 1619331040, + }, + { + id: 'cakev2-sfp-bnb', + logo: 'bnb-pairs/SFP-BNB.svg', + name: 'SFP-BNB LP', + token: 'SFP-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x942b294e59a8c47a0F7F20DF105B082710F7C305', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2SFP-BNB', + earnedTokenAddress: '0xb5b88135d363A99bF4664C4a1A51dF4ec3cC154A', + earnContractAddress: '0xb5b88135d363A99bF4664C4a1A51dF4ec3cC154A', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-sfp-bnb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'PancakeSwap', + assets: ['SFP', 'BNB'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0xd41fdb03ba84762dd66a0af1a6c8540ff1ba5dfb', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0xd41fdb03ba84762dd66a0af1a6c8540ff1ba5dfb', + createdAt: 1619330965, + }, + { + id: 'cakev2-wsote-bn-eolb', + logo: 'bnb-pairs/WSOTE-BNB.svg', + name: 'WSOTE-BNB LP', + token: 'WSOTE-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x7653D2c31440f04d2c6520D482dC5DbD7650f70a', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakev2WSOTE-BNB', + earnedTokenAddress: '0x51a159496328F5cCec192748F135eC57E326A10B', + earnContractAddress: '0x51a159496328F5cCec192748F135eC57E326A10B', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-wsote-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['WSOTE', 'BNB'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0x541e619858737031a1244a5d0cd47e5ef480342c', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x541e619858737031a1244a5d0cd47e5ef480342c', + createdAt: 1619285608, + }, + { + id: 'cakev2-front-bnb-eol', + logo: 'bnb-pairs/FRONT-BNB.svg', + name: 'FRONT-BNB LP', + token: 'FRONT-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0xC6b668548aA4A56792e8002A920d3159728121D5', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakev2FRONT-BNB', + earnedTokenAddress: '0x5C2C814107E6c0C664951bd6CF209A26eB10a98A', + earnContractAddress: '0x5C2C814107E6c0C664951bd6CF209A26eB10a98A', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-front-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['FRONT', 'BNB'], + retireReason: 'rewards', + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0x928e55dab735aa8260af3cedada18b5f70c72f1b', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x928e55dab735aa8260af3cedada18b5f70c72f1b', + createdAt: 1619285563, + }, + { + id: 'cakev2-btcst-bnb', + logo: 'bnb-pairs/BTCST-BNB.svg', + name: 'BTCST-BNB LP', + token: 'BTCST-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0xB2678C414ebC63c9CC6d1a0fC45f43E249B50fdE', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakev2BTCST-BNB', + earnedTokenAddress: '0x7ffb0415df0f77a6536aE228622e077D0D5D3de8', + earnContractAddress: '0x7ffb0415df0f77a6536aE228622e077D0D5D3de8', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-btcst-bnb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'PancakeSwap', + assets: ['BTCST', 'BNB'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0x78650b139471520656b9e7aa7a5e9276814a38e9', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x78650b139471520656b9e7aa7a5e9276814a38e9', + createdAt: 1619285464, + }, + { + id: 'cakev2-ltc-bnb', + logo: 'bnb-pairs/LTC-BNB.svg', + name: 'LTC-BNB LP', + token: 'LTC-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x71b01eBdDD797c8E9E0b003ea2f4FD207fBF46cC', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakev2LTC-BNB', + earnedTokenAddress: '0x5B240BB418bEcFffb6d66CdcA9dc55eCE79B3CC3', + earnContractAddress: '0x5B240BB418bEcFffb6d66CdcA9dc55eCE79B3CC3', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-ltc-bnb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'PancakeSwap', + assets: ['LTC', 'BNB'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0x4338665cbb7b2485a8855a139b75d5e34ab0db94', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x4338665cbb7b2485a8855a139b75d5e34ab0db94', + createdAt: 1619283393, + }, + { + id: 'cakev2-ada-bnb', + logo: 'bnb-pairs/ADA-BNB.svg', + name: 'ADA-BNB LP', + token: 'ADA-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x28415ff2C35b65B9E5c7de82126b4015ab9d031F', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakev2ADA-BNB', + earnedTokenAddress: '0xAb09FBFcCcc033248fC8790aaF9F2450a856e177', + earnContractAddress: '0xAb09FBFcCcc033248fC8790aaF9F2450a856e177', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-ada-bnb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'PancakeSwap', + assets: ['ADA', 'BNB'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0x4338665cbb7b2485a8855a139b75d5e34ab0db94', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x4338665cbb7b2485a8855a139b75d5e34ab0db94', + createdAt: 1619281824, + }, + { + id: 'cakev2-dot-bnb', + logo: 'bnb-pairs/DOT-BNB.svg', + name: 'DOT-BNB LP', + token: 'DOT-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0xDd5bAd8f8b360d76d12FdA230F8BAF42fe0022CF', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakev2DOT-BNB', + earnedTokenAddress: '0x18B12Ec521f31EaFF5BE813c3E136C75B3B1191E', + earnContractAddress: '0x18B12Ec521f31EaFF5BE813c3E136C75B3B1191E', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-dot-bnb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'PancakeSwap', + assets: ['DOT', 'BNB'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0x7083609fce4d1d8dc0c979aab8c869ea2c873402', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x7083609fce4d1d8dc0c979aab8c869ea2c873402', + createdAt: 1619283333, + }, + { + id: 'cakev2-zil-bnb-eol', + logo: 'bnb-pairs/ZIL-BNB.svg', + name: 'ZIL-BNB LP', + token: 'ZIL-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x6A97867a4b7Eb7646ffB1F359ad582e9903aa1C2', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2ZIL-BNB', + earnedTokenAddress: '0x96DbE2a8B2a98E4aF2ecf444f95c5A8d853d69a3', + earnContractAddress: '0x96DbE2a8B2a98E4aF2ecf444f95c5A8d853d69a3', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-zil-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['ZIL', 'BNB'], + retireReason: 'rewards', + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0xb86abcb37c3a4b64f74f59301aff131a1becc787', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0xb86abcb37c3a4b64f74f59301aff131a1becc787', + createdAt: 1619302521, + }, + { + id: 'cakev2-lto-bnb-eol', + logo: 'bnb-pairs/LTO-BNB.svg', + name: 'LTO-BNB LP', + token: 'LTO-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0xa5Bb44c6F5fD9B836E5a654c8AbbCCc96A15deE5', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2LTO-BNB', + earnedTokenAddress: '0xFc7423790DcEcf83a93f9D370eA589518c91cC24', + earnContractAddress: '0xFc7423790DcEcf83a93f9D370eA589518c91cC24', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-lto-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'PancakeSwap', + assets: ['LTO', 'BNB'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0x857b222fc79e1cbbf8ca5f78cb133d1b7cf34bbd', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x857b222fc79e1cbbf8ca5f78cb133d1b7cf34bbd', + createdAt: 1619302554, + }, + { + id: 'cakev2-trade-bnb', + logo: 'bnb-pairs/TRADE-BNB.svg', + name: 'TRADE-BNB LP', + token: 'TRADE-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x8F6baf368E7A4f6e2C9c995f22702d5e654A0237', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2TRADE-BNB', + earnedTokenAddress: '0x770fFB3872dfE4B872491e7517f58f9dcC55aE07', + earnContractAddress: '0x770fFB3872dfE4B872491e7517f58f9dcC55aE07', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-trade-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['TRADE', 'BNB'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0x7af173f350d916358af3e218bdf2178494beb748', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x7af173f350d916358af3e218bdf2178494beb748', + createdAt: 1619302611, + }, + { + id: 'cakev2-dusk-bnb-eol', + logo: 'bnb-pairs/DUSK-BNB.svg', + name: 'DUSK-BNB LP', + token: 'DUSK-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x678EDb8B268e73dB57b7694c163e1dc296b6e219', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2DUSK-BNB', + earnedTokenAddress: '0x6346eF9D3d9fF022E18152e3E13E263A660bFDC5', + earnContractAddress: '0x6346eF9D3d9fF022E18152e3E13E263A660bFDC5', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-dusk-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'PancakeSwap', + assets: ['DUSK', 'BNB'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c/0xb2bd0749dbe21f623d9baba856d3b0f0e1bfec9c', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0xb2bd0749dbe21f623d9baba856d3b0f0e1bfec9c', + createdAt: 1619302641, + }, + { + id: 'cakev2-cos-bnb-eol', + logo: 'bnb-pairs/COS-BNB.svg', + name: 'COS-BNB LP', + token: 'COS-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0xe98585bBb2dc81854fF100A3d9D7B0F53E0dafEd', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2COS-BNB', + earnedTokenAddress: '0xA648630bD3C5a5FAC65Cd60BD61964f16bc00e88', + earnContractAddress: '0xA648630bD3C5a5FAC65Cd60BD61964f16bc00e88', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-cos-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'PancakeSwap', + assets: ['COS', 'BNB'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c/0x96Dd399F9c3AFda1F194182F71600F1B65946501', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x96Dd399F9c3AFda1F194182F71600F1B65946501', + createdAt: 1619302668, + }, + { + id: 'cakev2-watch-bnb-eol', + logo: 'bnb-pairs/WATCH-BNB.svg', + name: 'WATCH-BNB LP', + token: 'WATCH-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x13321AcfF4A27f3d2bcA64b8bEaC6e5FdAAAf12C', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2WATCH-BNB', + earnedTokenAddress: '0x4925Ebaa523b2C2F66F980C7b8bb68207622bc3F', + earnContractAddress: '0x4925Ebaa523b2C2F66F980C7b8bb68207622bc3F', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-watch-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'PancakeSwap', + assets: ['WATCH', 'BNB'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0x7A9f28EB62C791422Aa23CeAE1dA9C847cBeC9b0', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x7A9f28EB62C791422Aa23CeAE1dA9C847cBeC9b0', + createdAt: 1619302698, + }, + { + id: 'cakev2-bry-bnb', + logo: 'bnb-pairs/BRY-BNB.svg', + name: 'BRY-BNB LP', + token: 'BRY-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x21dD71aB78EDE3033c976948f769D506E4F489eE', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakev2BRY-BNB', + earnedTokenAddress: '0xca2E81FAb1740C533A860935787ea5dB4bF65423', + earnContractAddress: '0xca2E81FAb1740C533A860935787ea5dB4bF65423', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-bry-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['BRY', 'BNB'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0xf859Bf77cBe8699013d6Dbc7C2b926Aaf307F830', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0xf859Bf77cBe8699013d6Dbc7C2b926Aaf307F830', + createdAt: 1619302716, + }, + { + id: 'cakev2-zee-bnb-eol', + logo: 'bnb-pairs/ZEE-BNB.svg', + name: 'ZEE-BNB LP', + token: 'ZEE-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x8e799cB0737525CeB8A6C6Ad07f748535fF6377B', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2ZEE-BNB', + earnedTokenAddress: '0xfeBBCb71C2ff834960289314B629941300c621B2', + earnContractAddress: '0xfeBBCb71C2ff834960289314B629941300c621B2', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-zee-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'PancakeSwap', + assets: ['ZEE', 'BNB'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0x44754455564474a89358b2c2265883df993b12f0', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x44754455564474a89358b2c2265883df993b12f0', + createdAt: 1619302740, + }, + { + id: 'cakev2-dodo-bnb-eol', + logo: 'bnb-pairs/DODO-BNB.svg', + name: 'DODO-BNB LP', + token: 'DODO-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0xA9986Fcbdb23c2E8B11AB40102990a08f8E58f06', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2DODO-BNB', + earnedTokenAddress: '0x5F92E5845661b31bB899d4121b5a20d6b87Fa2Ca', + earnContractAddress: '0x5F92E5845661b31bB899d4121b5a20d6b87Fa2Ca', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-dodo-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'PancakeSwap', + assets: ['DODO', 'BNB'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0x67ee3cb086f8a16f34bee3ca72fad36f7db929e2', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x67ee3cb086f8a16f34bee3ca72fad36f7db929e2', + createdAt: 1619302767, + }, + { + id: 'cakev2-swingby-bnb-eol', + logo: 'bnb-pairs/SWINGBY-BNB.svg', + name: 'SWINGBY-BNB LP', + token: 'SWINGBY-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x4Fd6D315bEf387fAD2322fbc64368fC443F0886D', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2SWINGBY-BNB', + earnedTokenAddress: '0x0Bc697E03fc1B5aF446E7ceD159195BC2f9E1b20', + earnContractAddress: '0x0Bc697E03fc1B5aF446E7ceD159195BC2f9E1b20', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-swingby-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'PancakeSwap', + assets: ['SWINGBY', 'BNB'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0x71de20e0c4616e7fcbfdd3f875d568492cbe4739', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x71de20e0c4616e7fcbfdd3f875d568492cbe4739', + createdAt: 1619302800, + }, + { + id: 'cakev2-apys-bnb-eol', + logo: 'bnb-pairs/APYS-BNB.svg', + name: 'APYS-BNB LP', + token: 'APYS-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x510b29a93ebf098f3fC24A16541aAA0114D07056', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2APYS-BNB', + earnedTokenAddress: '0x526c4f570e535B221C86557b8483A0F441b69259', + earnContractAddress: '0x526c4f570e535B221C86557b8483A0F441b69259', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-apys-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'PancakeSwap', + assets: ['APYS', 'BNB'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0x37dfACfaeDA801437Ff648A1559d73f4C40aAcb7', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x37dfACfaeDA801437Ff648A1559d73f4C40aAcb7', + createdAt: 1619285232, + }, + { + id: 'cakev2-oddz-bnb-eol', + logo: 'bnb-pairs/ODDZ-BNB.svg', + name: 'ODDZ-BNB LP', + token: 'ODDZ-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x3c2c77353E2F6AC1578807b6b2336Bf3a3CbB014', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2ODDZ-BNB', + earnedTokenAddress: '0x19dA11FC81cDe70F55e673C8eec41129DAA94A20', + earnContractAddress: '0x19dA11FC81cDe70F55e673C8eec41129DAA94A20', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-oddz-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['ODDZ', 'BNB'], + retireReason: 'rewards', + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0xCD40F2670CF58720b694968698A5514e924F742d', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0xCD40F2670CF58720b694968698A5514e924F742d', + createdAt: 1619285286, + }, + { + id: 'cakev2-bondly-bnb-eol', + logo: 'bnb-pairs/BONDLY-BNB.svg', + name: 'BONDLY-BNB LP', + token: 'BONDLY-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0xb8b4383B49d451BBeA63BC4421466E1086da6f18', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2BONDLY-BNB', + earnedTokenAddress: '0xC452538b578226933fc5F23d6436D486964736d3', + earnContractAddress: '0xC452538b578226933fc5F23d6436D486964736d3', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-bondly-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['BONDLY', 'BNB'], + retireReason: 'rewards', + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0x96058f8C3e16576D9BD68766f3836d9A33158f89', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x96058f8C3e16576D9BD68766f3836d9A33158f89', + createdAt: 1619285319, + }, + { + id: 'cakev2-itam-bnb-eol', + logo: 'bnb-pairs/ITAM-BNB.svg', + name: 'ITAM-BNB LP', + token: 'ITAM-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0xd02DA76c813b9cd4516eD50442923E625f90228f', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2ITAM-BNB', + earnedTokenAddress: '0x34753f36d69d00e2112Eb99B3F7f0FE76cC35090', + earnContractAddress: '0x34753f36d69d00e2112Eb99B3F7f0FE76cC35090', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-itam-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'PancakeSwap', + assets: ['ITAM', 'BNB'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0x04C747b40Be4D535fC83D09939fb0f626F32800B', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x04C747b40Be4D535fC83D09939fb0f626F32800B', + createdAt: 1619285343, + }, + { + id: 'cakev2-arpa-bnb=eol', + logo: 'bnb-pairs/ARPA-BNB.svg', + name: 'ARPA-BNB LP', + token: 'ARPA-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x9730c791743300E9f984C9264395ce705A55Da7c', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2ARPA-BNB', + earnedTokenAddress: '0x2b25fc2e80C3f4A7983306fFC72d95a553f59C9d', + earnContractAddress: '0x2b25fc2e80C3f4A7983306fFC72d95a553f59C9d', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-arpa-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'PancakeSwap', + assets: ['ARPA', 'BNB'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0x6F769E65c14Ebd1f68817F5f1DcDb61Cfa2D6f7e', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x6F769E65c14Ebd1f68817F5f1DcDb61Cfa2D6f7e', + createdAt: 1619285371, + }, + { + id: 'cakev2-dft-bnb-eol', + logo: 'bnb-pairs/DFT-BNB.svg', + name: 'DFT-BNB LP', + token: 'DFT-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x24d3B0eD4C444A4f6882d527cBF67aDc8c026582', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2DFT-BNB', + earnedTokenAddress: '0xa5529E47C3086D93bB59aB99ca2B20d0Ee2EFcAe', + earnContractAddress: '0xa5529E47C3086D93bB59aB99ca2B20d0Ee2EFcAe', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-dft-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'PancakeSwap', + assets: ['DFT', 'BNB'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0x42712dF5009c20fee340B245b510c0395896cF6e', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x42712df5009c20fee340b245b510c0395896cf6e', + createdAt: 1619285395, + }, + { + id: 'cakev2-swth-bnb', + logo: 'bnb-pairs/SWTH-BNB.svg', + name: 'SWTH-BNB LP', + token: 'SWTH-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x123D475E13aA54A43a7421d94CAa4459dA021c77', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2SWTH-BNB', + earnedTokenAddress: '0xE7703725e3B294Ef0691577461Ec957AD0e1fF81', + earnContractAddress: '0xE7703725e3B294Ef0691577461Ec957AD0e1fF81', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-swth-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['SWTH', 'BNB'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0x250b211EE44459dAd5Cd3bCa803dD6a7EcB5d46C', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x250b211EE44459dAd5Cd3bCa803dD6a7EcB5d46C', + createdAt: 1619285425, + }, + { + id: 'cakev2-lien-bnb-eol', + logo: 'bnb-pairs/LIEN-BNB.svg', + name: 'LIEN-BNB LP', + token: 'LIEN-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0xa4963B38b271c0D714593063497Fc786Fa4029Ce', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2LIEN-BNB', + earnedTokenAddress: '0x19069ED39D3E0ad756eE9DF2200B42A83D1266e4', + earnContractAddress: '0x19069ED39D3E0ad756eE9DF2200B42A83D1266e4', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-lien-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'PancakeSwap', + assets: ['LIEN', 'BNB'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0x5d684adaf3fcfe9cfb5cede3abf02f0cdd1012e3', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x5d684adaf3fcfe9cfb5cede3abf02f0cdd1012e3', + createdAt: 1619285461, + }, + { + id: 'cakev2-broobee-bnb', + logo: 'bnb-pairs/bROOBEE-BNB.svg', + name: 'bROOBEE-BNB LP', + token: 'bROOBEE-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x950FD020F8E4B8C57285EC7020b7a204348dadFa', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2bROOBEE-BNB', + earnedTokenAddress: '0x9292dE516411Fe2eEcB9441F9FFcf2bfdDFb0956', + earnContractAddress: '0x9292dE516411Fe2eEcB9441F9FFcf2bfdDFb0956', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-broobee-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['bROOBEE', 'BNB'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0xE64F5Cb844946C1F102Bd25bBD87a5aB4aE89Fbe', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0xE64F5Cb844946C1F102Bd25bBD87a5aB4aE89Fbe', + createdAt: 1619280195, + }, + { + id: 'cakev2-tko-bnb', + logo: 'bnb-pairs/TKO-BNB.svg', + name: 'TKO-BNB LP', + token: 'TKO-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0xFFd4B200d3C77A0B691B5562D804b3bd54294e6e', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2TKO-BNB', + earnedTokenAddress: '0xEEdDe64Af1dF1b1d023e326FD914AD5491B5c0eD', + earnContractAddress: '0xEEdDe64Af1dF1b1d023e326FD914AD5491B5c0eD', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-tko-bnb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'PancakeSwap', + assets: ['TKO', 'BNB'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0x9f589e3eabe42ebC94A44727b3f3531C0c877809', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x9f589e3eabe42ebC94A44727b3f3531C0c877809', + createdAt: 1619280234, + }, + { + id: 'cakev2-tlm-bnb', + logo: 'bnb-pairs/TLM-BNB.svg', + name: 'TLM-BNB LP', + token: 'TLM-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0xE6b421a4408c82381b226Ab5B6F8C4b639044359', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2TLM-BNB', + earnedTokenAddress: '0x185647c55633A5706aAA3278132537565c925078', + earnContractAddress: '0x185647c55633A5706aAA3278132537565c925078', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-tlm-bnb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'PancakeSwap', + assets: ['TLM', 'BNB'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0x2222227E22102Fe3322098e4CBfE18cFebD57c95', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x2222227E22102Fe3322098e4CBfE18cFebD57c95', + createdAt: 1619280249, + }, + { + id: 'cakev2-perl-bnb=eol', + logo: 'bnb-pairs/PERL-BNB.svg', + name: 'PERL-BNB LP', + token: 'PERL-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x61010e6CbA3b56ba47E9dFd56Da682daCFe76131', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2PERL-BNB', + earnedTokenAddress: '0x2dc8683F752305659ff7F97A7CB4291B1c0Df37b', + earnContractAddress: '0x2dc8683F752305659ff7F97A7CB4291B1c0Df37b', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-perl-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'PancakeSwap', + assets: ['PERL', 'BNB'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0x0F9E4D49f25de22c2202aF916B681FBB3790497B', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x0F9E4D49f25de22c2202aF916B681FBB3790497B', + createdAt: 1619280270, + }, + { + id: 'cakev2-alpa-bnb-eol', + logo: 'bnb-pairs/ALPA-BNB.svg', + name: 'ALPA-BNB LP', + token: 'ALPA-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x4cC442220BE1cE560C1f2573f8CA8f460B3E4172', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2ALPA-BNB', + earnedTokenAddress: '0x29714444254C94061215cB36C610dEED43925F71', + earnContractAddress: '0x29714444254C94061215cB36C610dEED43925F71', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-alpa-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'PancakeSwap', + assets: ['ALPA', 'BNB'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0xc5E6689C9c8B02be7C49912Ef19e79cF24977f03', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0xc5E6689C9c8B02be7C49912Ef19e79cF24977f03', + createdAt: 1619280303, + }, + { + id: 'cakev2-hzn-bnb-eol', + logo: 'bnb-pairs/HZN-BNB.svg', + name: 'HZN-BNB LP', + token: 'HZN-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0xDc9a574b9B341D4a98cE29005b614e1E27430E74', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2HZN-BNB', + earnedTokenAddress: '0xeae012C26290f668E29b276247E1A48f60379792', + earnContractAddress: '0xeae012C26290f668E29b276247E1A48f60379792', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-hzn-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'PancakeSwap', + assets: ['HZN', 'BNB'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0xC0eFf7749b125444953ef89682201Fb8c6A917CD', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0xC0eFf7749b125444953ef89682201Fb8c6A917CD', + createdAt: 1619280342, + }, + { + id: 'cakev2-suter-bnb-eol', + logo: 'bnb-pairs/SUTER-BNB.svg', + name: 'SUTER-BNB LP', + token: 'SUTER-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x2d5DB889392Bc3c8B023A8631ca230A033eEA1B8', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2SUTER-BNB', + earnedTokenAddress: '0x10Db0024045cDECc16b8D6581458afa4B47c0c05', + earnContractAddress: '0x10Db0024045cDECc16b8D6581458afa4B47c0c05', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-suter-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'PancakeSwap', + assets: ['SUTER', 'BNB'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0x4cfbbdfbd5bf0814472ff35c72717bd095ada055', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x4cfbbdfbd5bf0814472ff35c72717bd095ada055', + createdAt: 1619280372, + }, + { + id: 'cakev2-ten-bnb-eol', + logo: 'bnb-pairs/TEN-BNB.svg', + name: 'TEN-BNB LP', + token: 'TEN-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x1B415C3ec8095AfBF9d78882b3a6263c4ad141B5', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakev2TEN-BNB', + earnedTokenAddress: '0xbE1F363921e4e83E308e6741B5470E38ed3cf6be', + earnContractAddress: '0xbE1F363921e4e83E308e6741B5470E38ed3cf6be', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-ten-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['TEN', 'BNB'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0xdff8cb622790b7f92686c722b02cab55592f152c', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0xdff8cb622790b7f92686c722b02cab55592f152c', + createdAt: 1619279428, + }, + { + id: 'cakev2-bscx-bnb-eol', + logo: 'bnb-pairs/BSCX-BNB.svg', + name: 'BSCX-BNB LP', + token: 'BSCX-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x47C42b0A056A9C6e9C65b9Ef79020Af518e767A5', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakev2BSCX-BNB', + earnedTokenAddress: '0x3f8C3120f57b9552e33097B83dFDdAB1539bAd47', + earnContractAddress: '0x3f8C3120f57b9552e33097B83dFDdAB1539bAd47', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-bscx-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'PancakeSwap', + assets: ['BSCX', 'BNB'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0x5ac52ee5b2a633895292ff6d8a89bb9190451587', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x5ac52ee5b2a633895292ff6d8a89bb9190451587', + createdAt: 1619279524, + }, + { + id: 'cakev2-ctk-bnb-eol', + logo: 'bnb-pairs/CTK-BNB.svg', + name: 'CTK-BNB LP', + token: 'CTK-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x460b4193Ec4C1a17372Aa5FDcd44c520ba658646', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakev2CTK-BNB', + earnedTokenAddress: '0xecdc77241C58ff04fB0Bc259EA4B6d67edD43920', + earnContractAddress: '0xecdc77241C58ff04fB0Bc259EA4B6d67edD43920', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-ctk-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'PancakeSwap', + assets: ['CTK', 'BNB'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0xA8c2B8eec3d368C0253ad3dae65a5F2BBB89c929', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0xA8c2B8eec3d368C0253ad3dae65a5F2BBB89c929', + createdAt: 1619273466, + }, + { + id: 'bunny-bunny-eol', + logo: 'single-assets/BUNNY.png', + name: 'BUNNY', + token: 'BUNNY', + tokenDescription: 'Pancakebunny', + tokenAddress: '0xC9849E6fdB743d08fAeE3E34dd2D1bc69EA11a51', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBUNNY', + earnedTokenAddress: '0x7f56672fCB5D1d1760511803A0a54c4d1e911dFD', + earnContractAddress: '0x7f56672fCB5D1d1760511803A0a54c4d1e911dFD', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'BUNNY', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + refund: true, + platform: 'Other', + refundContractAddress: '0xeD073c1BeC09Bb1963469910340BD8d0B2CC0413', + assets: ['BUNNY'], + buyTokenUrl: 'https://app.1inch.io/#/56/swap/BNB/BUNNY', + createdAt: 1618937612, + }, + { + id: 'auto-eth-v2-eol', + logo: 'single-assets/ETH.svg', + name: 'ETH', + token: 'ETH', + tokenDescription: 'Venus (Autofarm)', + tokenAddress: '0x2170Ed0880ac9A755fd29B2688956BD959F933F8', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooAutoETHv2', + earnedTokenAddress: '0x0F47eaae1EC5fD11067455210c494a7828024524', + earnContractAddress: '0x0F47eaae1EC5fD11067455210c494a7828024524', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'ETH', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['ETH'], + createdAt: 1618165676, + }, + { + id: 'belt-venus-blp-eol', + logo: 'uncategorized/BELT-VENUSBLP.png', + name: 'BUSD/USDT/USDC/DAI', + token: 'VENUS BLP', + tokenDescription: 'Belt', + tokenAddress: '0x86aFa7ff694Ab8C985b79733745662760e454169', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBeltVenusBLP', + earnedTokenAddress: '0xb35Dc0b5eFd7c75590a9da55BE46d968c5804e24', + earnContractAddress: '0xb35Dc0b5eFd7c75590a9da55BE46d968c5804e24', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'belt-venus-blp', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Belt', + assets: ['USDT', 'BUSD', 'USDC', 'DAI', 'VENUS BLP'], + addLiquidityUrl: 'https://belt.fi/', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0xe9e7cea3dedca5984780bafc599bd69add087d56', + createdAt: 1615471190, + }, + { + id: 'mdex-bsc-mdx-bnb', + logo: 'bnb-pairs/MDX-BNB.png', + name: 'MDX-BNB LP', + token: 'MDX-BNB LP', + tokenDescription: 'Mdex', + tokenAddress: '0xAf9Aa53146C5752BF6068A84B970E9fBB22a87bc', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooMdexMDX-BNB', + earnedTokenAddress: '0x31e2d52A04FEb223109506E4c6f195C0cF16b98A', + earnContractAddress: '0x31e2d52A04FEb223109506E4c6f195C0cF16b98A', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'mdex-bsc-mdx-bnb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Mdex', + assets: ['MDX', 'BNB'], + addLiquidityUrl: 'https://bsc.mdex.com/#/add/BNB/0x9C65AB58d8d978DB963e63f2bfB7121627e3a739', + buyTokenUrl: + 'https://bsc.mdex.com/#/swap?outputCurrency=0x9c65ab58d8d978db963e63f2bfb7121627e3a739', + createdAt: 1618044556, + }, + { + id: 'auto-btc-v2-eol', + logo: 'single-assets/BTCB.svg', + name: 'BTCB', + token: 'BTCB', + tokenDescription: 'Venus (Autofarm)', + tokenAddress: '0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooAutoBTCBv2', + earnedTokenAddress: '0x0845813938515FE56730c124Ab8CA2DF58B01463', + earnContractAddress: '0x0845813938515FE56730c124Ab8CA2DF58B01463', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'BTCB', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['BTCB'], + createdAt: 1618165622, + }, + { + id: 'cake-broobee-bnb-eol', + logo: 'bnb-pairs/bROOBEE-BNB.svg', + name: 'bROOBEE-BNB LP', + token: 'bROOBEE-BNB LP', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x9e6f9f3382f9edC683203b528222c554c92382C2', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPancakebROOBEE-BNB', + earnedTokenAddress: '0xa5F6387fB58AC5268F130bFc2d0A5e53343fB798', + earnContractAddress: '0xa5F6387fB58AC5268F130bFc2d0A5e53343fB798', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cake-broobee-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['bROOBEE', 'BNB'], + removeLiquidityUrl: + 'https://v1exchange.pancakeswap.finance/#/remove/BNB/0xE64F5Cb844946C1F102Bd25bBD87a5aB4aE89Fbe', + createdAt: 1618841436, + }, + { + id: 'banana-ada-eth', + logo: 'eth-pairs/ADA-ETH.svg', + name: 'ADA-ETH LP', + token: 'ADA-ETH LP', + tokenDescription: 'ApeSwap', + tokenAddress: '0x61FE209E404166a53Cc627d0ae30A65606315dA7', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooApeADA-ETH', + earnedTokenAddress: '0xd6D138fb65c2a68E728D70EfbAA54c794B73B6A0', + earnContractAddress: '0xd6D138fb65c2a68E728D70EfbAA54c794B73B6A0', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'banana-ada-eth', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'ApeSwap', + assets: ['ADA', 'ETH'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + addLiquidityUrl: + 'https://dex.apeswap.finance/#/add/0x3EE2200Efb3400fAbB9AacF31297cBdD1d435D47/0x2170Ed0880ac9A755fd29B2688956BD959F933F8', + buyTokenUrl: + 'https://dex.apeswap.finance/#/swap?inputCurrency=0x2170ed0880ac9a755fd29b2688956bd959f933f8&outputCurrency=0x3ee2200efb3400fabb9aacf31297cbdd1d435d47', + createdAt: 1618840515, + }, + { + id: 'banana-iota-bnb', + logo: 'bnb-pairs/IOTA-BNB.svg', + name: 'IOTA-BNB LP', + token: 'IOTA-BNB LP', + tokenDescription: 'ApeSwap', + tokenAddress: '0x0D70924695B6Ae496F0A74A36bf79d47307dD519', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooApeIOTA-BNB', + earnedTokenAddress: '0x5705Ca9E59485E77240a32AAd50a64bB72996e02', + earnContractAddress: '0x5705Ca9E59485E77240a32AAd50a64bB72996e02', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'banana-iota-bnb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'ApeSwap', + assets: ['IOTA', 'BNB'], + addLiquidityUrl: + 'https://dex.apeswap.finance/#/add/ETH/0xd944f1D1e9d5f9Bb90b62f9D45e447D989580782', + buyTokenUrl: + 'https://dex.apeswap.finance/#/swap?inputCurrency=0xbb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c&outputCurrency=0xd944f1D1e9d5f9Bb90b62f9D45e447D989580782', + createdAt: 1618840641, + }, + { + id: 'banana-bat-bnb', + logo: 'bnb-pairs/BAT-BNB.svg', + name: 'BAT-BNB LP', + token: 'BAT-BNB LP', + tokenDescription: 'ApeSwap', + tokenAddress: '0x6e425B4fc4Efd070Dc0deF1654a17946C7e6b3C4', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooApeBAT-BNB', + earnedTokenAddress: '0xec10AaC4A445d28Eebd50F908cfc69816C8E9d7d', + earnContractAddress: '0xec10AaC4A445d28Eebd50F908cfc69816C8E9d7d', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'banana-bat-bnb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'ApeSwap', + assets: ['BAT', 'BNB'], + addLiquidityUrl: + 'https://dex.apeswap.finance/#/add/ETH/0x101d82428437127bF1608F699CD651e6Abf9766E', + buyTokenUrl: + 'https://dex.apeswap.finance/#/swap?inputCurrency=0xbb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c&outputCurrency=0x101d82428437127bF1608F699CD651e6Abf9766E', + createdAt: 1618840593, + }, + { + id: 'ellipsis-fusdt-3eps-eol', + logo: 'uncategorized/epsFUSDT.png', + name: 'fUSDT/BUSD/USDT/USDC', + token: 'EPS fUSDT', + tokenDescription: 'Ellipsis', + tokenAddress: '0x373410A99B64B089DFE16F1088526D399252dacE', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'MooEllipsisFUSDT', + earnedTokenAddress: '0x8D3B7a0b20d490cbDACC2c555c05b7132B856e4b', + earnContractAddress: '0x8D3B7a0b20d490cbDACC2c555c05b7132B856e4b', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'ellipsis-fusdt-3eps', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Ellipsis', + assets: ['fUSDT', 'USDT', 'BUSD', 'USDC'], + addLiquidityUrl: 'https://ellipsis.finance/pool', + createdAt: 1618658840, + }, + { + id: 'cake-apys-bnb-eol', + logo: 'bnb-pairs/APYS-BNB.svg', + name: 'APYS-BNB LP', + token: 'APYS-BNB LP', + tokenDescription: 'PancakeSwap', + tokenAddress: '0xE5783Cc9dFb3E7e474B81B07369a008e80F1cEdb', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPancakeAPYS-BNB', + earnedTokenAddress: '0xc3991d99a73eD1Fd9d28cd4623DD72732745963b', + earnContractAddress: '0xc3991d99a73eD1Fd9d28cd4623DD72732745963b', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cake-apys-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['APYS', 'BNB'], + removeLiquidityUrl: + 'https://v1exchange.pancakeswap.finance/#/remove/BNB/0x37dfACfaeDA801437Ff648A1559d73f4C40aAcb7', + createdAt: 1618230406, + }, + { + id: 'auto-eth-beth', + logo: 'eth-pairs/BETH-ETH.svg', + name: 'BETH-ETH LP', + token: 'BETH-ETH Mdex LP', + tokenDescription: 'Mdex', + tokenAddress: '0x3fe3DeE31cC404Aa4C8de6A6a3cbBcb60358FcB0', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooAutoMdexBETH-ETH', + earnedTokenAddress: '0xad777a366D5aD4A728A03C2CC61a3c3Ea8935BBB', + earnContractAddress: '0xad777a366D5aD4A728A03C2CC61a3c3Ea8935BBB', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'auto-eth-beth', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Mdex', + assets: ['BETH', 'ETH'], + depositFee: '<0.1%', + addLiquidityUrl: + 'https://bsc.mdex.com/#/add/0x250632378E573c6Be1AC2f97Fcdf00515d0Aa91B/0x2170Ed0880ac9A755fd29B2688956BD959F933F8', + buyTokenUrl: + 'https://bsc.mdex.com/#/swap?inputCurrency=0x2170ed0880ac9a755fd29b2688956bd959f933f8&outputCurrency=0x250632378e573c6be1ac2f97fcdf00515d0aa91b', + createdAt: 1618409090, + }, + { + id: 'auto-eth-usdt', + logo: 'usdt-pairs/ETH-USDT.svg', + name: 'ETH-USDT LP', + token: 'ETH-USDT Mdex LP', + tokenDescription: 'Mdex', + tokenAddress: '0x0FB881c078434b1C0E4d0B64d8c64d12078b7Ce2', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooAutoMdexETH-USDT', + earnedTokenAddress: '0x68c39886eA459b4a59758F1e94c3d20C93d47133', + earnContractAddress: '0x68c39886eA459b4a59758F1e94c3d20C93d47133', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'auto-eth-usdt', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Mdex', + assets: ['ETH', 'USDT'], + depositFee: '<0.1%', + addLiquidityUrl: + 'https://bsc.mdex.com/#/add/0x55d398326f99059fF775485246999027B3197955/0x2170Ed0880ac9A755fd29B2688956BD959F933F8', + buyTokenUrl: + 'https://bsc.mdex.com/#/swap?inputCurrency=0x2170ed0880ac9a755fd29b2688956bd959f933f8&outputCurrency=0x55d398326f99059ff775485246999027b3197955', + createdAt: 1618408691, + }, + { + id: 'auto-btcb-usdt', + logo: 'usdt-pairs/BTCB-USDT.svg', + name: 'BTCB-USDT LP', + token: 'BTCB-USDT Mdex LP', + tokenDescription: 'Mdex', + tokenAddress: '0xda28Eb7ABa389C1Ea226A420bCE04Cb565Aafb85', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooAutoMdexBTCB-USDT', + earnedTokenAddress: '0xE5e79043eC57b12F2d15d4a230ED9C7d732Ed93A', + earnContractAddress: '0xE5e79043eC57b12F2d15d4a230ED9C7d732Ed93A', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'auto-btcb-usdt', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Mdex', + assets: ['BTCB', 'USDT'], + depositFee: '<0.1%', + addLiquidityUrl: + 'https://bsc.mdex.com/#/add/0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c/0x55d398326f99059fF775485246999027B3197955', + buyTokenUrl: + 'https://bsc.mdex.com/#/swap?inputCurrency=0x55d398326f99059ff775485246999027b3197955&outputCurrency=0x7130d2a12b9bcbfae4f2634d864a1ee1ce3ead9c', + createdAt: 1618408661, + }, + { + id: 'auto-btcb-eth', + logo: 'eth-pairs/BTCB-ETH.svg', + name: 'BTCB-ETH LP', + token: 'BTCB-ETH Mdex LP', + tokenDescription: 'Mdex', + tokenAddress: '0x577d005912C49B1679B4c21E334FdB650E92C077', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooAutoMdexBTCB-ETH', + earnedTokenAddress: '0x31e77776b924Cd5f0E624771C9B3d2bD6B9c919E', + earnContractAddress: '0x31e77776b924Cd5f0E624771C9B3d2bD6B9c919E', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'auto-btcb-eth', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Mdex', + assets: ['BTCB', 'ETH'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + depositFee: '<0.1%', + addLiquidityUrl: + 'https://bsc.mdex.com/#/add/0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c/0x2170Ed0880ac9A755fd29B2688956BD959F933F8', + buyTokenUrl: + 'https://bsc.mdex.com/#/swap?inputCurrency=0x2170ed0880ac9a755fd29b2688956bd959f933f8&outputCurrency=0x7130d2a12b9bcbfae4f2634d864a1ee1ce3ead9c', + createdAt: 1618409054, + }, + { + id: 'auto-usdt-busd', + logo: 'busd-pairs/USDT-BUSD.png', + name: 'USDT-BUSD LP', + token: 'USDT-BUSD Mdex LP', + tokenDescription: 'Mdex', + tokenAddress: '0x62c1dEC1fF328DCdC157Ae0068Bb21aF3967aCd9', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooAutoMdexUSDT-BUSD', + earnedTokenAddress: '0x17720F863DA01Bc9e266e4eE872E3c98fA1FeAA8', + earnContractAddress: '0x17720F863DA01Bc9e266e4eE872E3c98fA1FeAA8', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'auto-busd-usdt', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Mdex', + assets: ['USDT', 'BUSD'], + depositFee: '<0.1%', + addLiquidityUrl: + 'https://bsc.mdex.com/#/add/0x55d398326f99059fF775485246999027B3197955/0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56', + buyTokenUrl: + 'https://bsc.mdex.com/#/swap?inputCurrency=0x55d398326f99059ff775485246999027b3197955&outputCurrency=0xe9e7cea3dedca5984780bafc599bd69add087d56', + createdAt: 1618407251, + }, + { + id: 'mash-mash-busd-eol', + logo: 'degens/mash-busd.png', + name: 'MASH-BUSD LP', + token: 'MASH-BUSD LP', + tokenDescription: 'Marshmallow', + tokenAddress: '0x87C182EDB12f74d561519AB586205fE6CD75363a', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooMashMASH-BUSD', + earnedTokenAddress: '0x8D6130b05c59bf8dCCde1921D40979750f5685E7', + earnContractAddress: '0x8D6130b05c59bf8dCCde1921D40979750f5685E7', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'mash-mash-busd', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['MASH', 'BUSD'], + addLiquidityUrl: + 'https://exchange.marshmallowdefi.com/#/add/0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56/0x787732f27D18495494cea3792ed7946BbCFF8db2', + buyTokenUrl: + 'https://exchange.marshmallowdefi.com/#/swap?outputCurrency=0x787732f27D18495494cea3792ed7946BbCFF8db2', + createdAt: 1618484416, + }, + { + id: 'mash-mash-bnb-eol', + logo: 'degens/mash-bnb.png', + name: 'MASH-BNB LP', + token: 'MASH-BNB LP', + tokenDescription: 'Marshmallow', + tokenAddress: '0x7621886AC71e985DBea4f3f563BBB5a7865876A8', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooMashMASH-BNB', + earnedTokenAddress: '0x45e13311ee99f040bF9a1207eb864Aae5AEa9119', + earnContractAddress: '0x45e13311ee99f040bF9a1207eb864Aae5AEa9119', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'mash-mash-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['MASH', 'BNB'], + addLiquidityUrl: + 'https://exchange.marshmallowdefi.com/#/add/ETH/0x787732f27D18495494cea3792ed7946BbCFF8db2', + buyTokenUrl: + 'https://exchange.marshmallowdefi.com/#/swap?outputCurrency=0x787732f27D18495494cea3792ed7946BbCFF8db2', + createdAt: 1618484353, + }, + { + id: 'mash-mash-eol', + logo: 'degens/mash.png', + name: 'MASH', + token: 'MASH', + tokenDescription: 'Marshmallow', + tokenAddress: '0x787732f27D18495494cea3792ed7946BbCFF8db2', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooMashMASH', + earnedTokenAddress: '0xE76381E4fd8C4492C2e61000D123AE2Ca3BDa41C', + earnContractAddress: '0xE76381E4fd8C4492C2e61000D123AE2Ca3BDa41C', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'MASH', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['MASH'], + buyTokenUrl: + 'https://exchange.marshmallowdefi.com/#/swap?outputCurrency=0x787732f27D18495494cea3792ed7946BbCFF8db2', + createdAt: 1618484152, + }, + { + id: 'mdex-bsc-mdx-busd', + logo: 'busd-pairs/MDX-BUSD.png', + name: 'MDX-BUSD LP', + token: 'MDX-BUSD LP', + tokenDescription: 'Mdex', + tokenAddress: '0x223740a259E461aBeE12D84A9FFF5Da69Ff071dD', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooMdexMDX-BUSD', + earnedTokenAddress: '0x38507dAEe5F1E6c397d1767B5202931f12feef74', + earnContractAddress: '0x38507dAEe5F1E6c397d1767B5202931f12feef74', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'mdex-bsc-mdx-busd', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Mdex', + assets: ['MDX', 'BUSD'], + addLiquidityUrl: + 'https://bsc.mdex.com/#/add/0x9C65AB58d8d978DB963e63f2bfB7121627e3a739/0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56', + buyTokenUrl: + 'https://bsc.mdex.com/#/swap?outputCurrency=0x9c65ab58d8d978db963e63f2bfb7121627e3a739', + createdAt: 1618318138, + }, + { + id: 'palm-palm-eol', + logo: 'degens/PALM.png', + name: 'PALM', + token: 'PALM', + tokenDescription: 'YieldBay', + tokenAddress: '0x9768E5b2d8e761905BC81Dfc554f9437A46CdCC6', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPalmPALM', + earnedTokenAddress: '0xFAE7E8b7AB3bd583dEa936E829F1132909A6C6cD', + earnContractAddress: '0xFAE7E8b7AB3bd583dEa936E829F1132909A6C6cD', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'PALM', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['PALM'], + buyTokenUrl: + 'https://exchange.yieldbay.finance/#/swap?outputCurrency=0x9768e5b2d8e761905bc81dfc554f9437a46cdcc6', + createdAt: 1618319620, + }, + { + id: 'cake-hoo-busd-eol', + logo: 'busd-pairs/HOO-BUSD.svg', + name: 'HOO-BUSD LP', + token: 'HOO-BUSD LP', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x3C9E55EdBD937ae0aD8C084a1A8302110612A371', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPancakeHOO-BUSD', + earnedTokenAddress: '0x9C21d39c1e790A966c81EBf5Db4FE5e8C564d1bF', + earnContractAddress: '0x9C21d39c1e790A966c81EBf5Db4FE5e8C564d1bF', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cake-hoo-busd', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['HOO', 'BUSD'], + removeLiquidityUrl: + 'https://v1exchange.pancakeswap.finance/#/remove/0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56/0xE1d1F66215998786110Ba0102ef558b22224C016', + createdAt: 1618231003, + }, + { + id: 'cake-itam-bnb-eol', + logo: 'bnb-pairs/ITAM-BNB.svg', + name: 'ITAM-BNB LP', + token: 'ITAM-BNB LP', + tokenDescription: 'PancakeSwap', + tokenAddress: '0xCdC53345192D0e31eEAD03D7E9e008Ee659FAEbE', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPancakeITAM-BNB', + earnedTokenAddress: '0x4dD62Fc76fD57175151777e845dfe9E981b87aE7', + earnContractAddress: '0x4dD62Fc76fD57175151777e845dfe9E981b87aE7', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cake-itam-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['ITAM', 'BNB'], + removeLiquidityUrl: + 'https://v1exchange.pancakeswap.finance/#/remove/BNB/0x04C747b40Be4D535fC83D09939fb0f626F32800B', + createdAt: 1618230328, + }, + { + id: 'mdex-xvs-eol', + logo: 'single-assets/XVS.png', + name: 'XVS', + token: 'XVS', + tokenDescription: 'Mdex', + tokenAddress: '0xcF6BB5389c92Bdda8a3747Ddb454cB7a64626C63', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooMdexXVS', + earnedTokenAddress: '0x93aBCe226ac5082aD8702681354C48E739eEFDd5', + earnContractAddress: '0x93aBCe226ac5082aD8702681354C48E739eEFDd5', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'XVS', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Mdex', + assets: ['XVS'], + createdAt: 1618228732, + }, + { + id: 'mdex-uni-eol', + logo: 'single-assets/UNI.png', + name: 'UNI', + token: 'UNI', + tokenDescription: 'Mdex', + tokenAddress: '0xBf5140A22578168FD562DCcF235E5D43A02ce9B1', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooMdexUNI', + earnedTokenAddress: '0xC57869A0bDeF07bf4E9Ffdd598Ffc235248987d4', + earnContractAddress: '0xC57869A0bDeF07bf4E9Ffdd598Ffc235248987d4', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'UNI', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Mdex', + assets: ['UNI'], + createdAt: 1618228807, + }, + { + id: 'auto-sxp-v2-eol', + logo: 'single-assets/SXP.svg', + name: 'SXP', + token: 'SXP', + tokenDescription: 'Venus (Autofarm)', + tokenAddress: '0x47BEAd2563dCBf3bF2c9407fEa4dC236fAbA485A', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooAutoSXPv2', + earnedTokenAddress: '0xbB7Ed513e421ad454191790199E4731757545793', + earnContractAddress: '0xbB7Ed513e421ad454191790199E4731757545793', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'SXP', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['SXP'], + createdAt: 1618231753, + }, + { + id: 'auto-wbnb-v2-eol', + logo: 'single-assets/WBNB.svg', + name: 'WBNB', + token: 'WBNB', + tokenDescription: 'Venus (Autofarm)', + tokenAddress: '0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooAutoWbnbFixed', + earnedTokenAddress: '0x5B06aA1ebd2e15bC6001076355E5B4C39Cbc83F3', + earnContractAddress: '0x5B06aA1ebd2e15bC6001076355E5B4C39Cbc83F3', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'WBNB', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['BNB'], + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c', + createdAt: 1613479169, + }, + { + id: 'auto-busd-v2-eol', + logo: 'single-assets/BUSD.svg', + name: 'BUSD', + token: 'BUSD', + tokenDescription: 'Venus (Autofarm)', + tokenAddress: '0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooAutoBUSDv2', + earnedTokenAddress: '0x4533B96E7737D2158a0DFf9a3a2A97f4419ef646', + earnContractAddress: '0x4533B96E7737D2158a0DFf9a3a2A97f4419ef646', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'BUSD', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['BUSD'], + createdAt: 1618076971, + }, + { + id: 'auto-usdt-v2-eol', + logo: 'single-assets/USDT.svg', + name: 'USDT', + token: 'USDT', + tokenDescription: 'Venus (Autofarm)', + tokenAddress: '0x55d398326f99059fF775485246999027B3197955', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooAutoUSDTv2', + earnedTokenAddress: '0xb0C71ae9a71bbf03BE6F33A29a71C485472f5a1F', + earnContractAddress: '0xb0C71ae9a71bbf03BE6F33A29a71C485472f5a1F', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'USDT', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['USDT'], + createdAt: 1618165532, + }, + { + id: 'auto-usdc-v2-eol', + logo: 'single-assets/USDC.svg', + name: 'USDC', + token: 'USDC', + tokenDescription: 'Venus (Autofarm)', + tokenAddress: '0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooAutoUSDCv2', + earnedTokenAddress: '0x5d931BBcD7010935103AC1FDb8B43625A7CB67A4', + earnContractAddress: '0x5d931BBcD7010935103AC1FDb8B43625A7CB67A4', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'USDC', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['USDC'], + createdAt: 1618165574, + }, + { + id: 'blizzard-xblzd-bnb-eol', + logo: 'degens/BLZD-BNB.png', + name: 'xBLZD-BNB LP', + token: 'xBLZD-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0xD9002B7E7d63A71F04a16840DA028e1cd534889D', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBlizzardxBLZD-BNBV2', + earnedTokenAddress: '0x415b51780f4B056C5b1b3CB5fab9366e00859175', + earnContractAddress: '0x415b51780f4B056C5b1b3CB5fab9366e00859175', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'blizzard-xblzd-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['xBLZD', 'BNB'], + retireReason: 'rewards', + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0x9a946c3Cb16c08334b69aE249690C236Ebd5583E', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x9a946c3Cb16c08334b69aE249690C236Ebd5583E', + createdAt: 1619315443, + }, + { + id: 'blizzard-xblzd-busd-eol', + logo: 'degens/BLZD-BUSD.png', + name: 'xBLZD-BUSD LP', + token: 'xBLZD-BUSD LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0xeDCd99aD43C6911D37780158370ec1913Ee9e7D3', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBlizzardxBLZD-BUSDV2', + earnedTokenAddress: '0x17436A6D0ACb7f31D62C7484E5C77eC9A6122837', + earnContractAddress: '0x17436A6D0ACb7f31D62C7484E5C77eC9A6122837', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'blizzard-xblzd-busd', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['xBLZD', 'BUSD'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56/0x9a946c3Cb16c08334b69aE249690C236Ebd5583E', + buyTokenUrl: + 'https://pancakeswap.finance/swap?inputCurrency=0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56&outputCurrency=0x9a946c3Cb16c08334b69aE249690C236Ebd5583E', + createdAt: 1619315041, + }, + { + id: 'blizzard-xblzd-bnb-old-eol', + logo: 'degens/BLZD-BNB.png', + name: 'xBLZD-BNB LP', + token: 'xBLZD-BNB LP', + tokenDescription: 'PancakeSwap', + tokenAddress: '0xfC207DB720851f52545229E406068b205E02B952', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBlizzardxBLZD-BNB', + earnedTokenAddress: '0xF7E3273930D8ffdb967BD5B4afe67aa195DF7347', + earnContractAddress: '0xF7E3273930D8ffdb967BD5B4afe67aa195DF7347', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'blizzard-xblzd-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Other', + assets: ['xBLZD', 'BNB'], + removeLiquidityUrl: + 'https://v1exchange.pancakeswap.finance/#/remove/BNB/0x9a946c3Cb16c08334b69aE249690C236Ebd5583E', + createdAt: 1617944295, + }, + { + id: 'blizzard-xblzd-busd-old-eol', + logo: 'degens/BLZD-BUSD.png', + name: 'xBLZD-BUSD LP', + token: 'xBLZD-BUSD LP', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x33e75f29D52a8BcfBC54a79ED6eF9482b2c035a2', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBlizzardxBLZD-BUSD', + earnedTokenAddress: '0xE4012400f60ffae2584F9D9Ee61Ca65B31A24c7F', + earnContractAddress: '0xE4012400f60ffae2584F9D9Ee61Ca65B31A24c7F', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'blizzard-xblzd-busd', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['xBLZD', 'BUSD'], + removeLiquidityUrl: + 'https://v1exchange.pancakeswap.finance/#/remove/0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56/0x9a946c3Cb16c08334b69aE249690C236Ebd5583E', + createdAt: 1617945243, + }, + { + id: 'blizzard-xblzd-eol2', + logo: 'degens/BLZD.png', + name: 'xBLZDv2', + token: 'xBLZDv2', + tokenDescription: 'Blizzard', + tokenAddress: '0x9a946c3Cb16c08334b69aE249690C236Ebd5583E', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBlizzardxBLZDv2', + earnedTokenAddress: '0x47a27220Db5458DB4b238fefCBb8178232cBFa5D', + earnContractAddress: '0x47a27220Db5458DB4b238fefCBb8178232cBFa5D', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'xBLZD', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Other', + assets: ['xBLZD'], + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x9a946c3Cb16c08334b69aE249690C236Ebd5583E', + createdAt: 1633444720, + }, + { + id: 'blizzard-xblzd-eol', + logo: 'degens/BLZD.png', + name: 'xBLZD', + token: 'xBLZD', + tokenDescription: 'Blizzard', + tokenAddress: '0x9a946c3Cb16c08334b69aE249690C236Ebd5583E', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBlizzardxBLZD', + earnedTokenAddress: '0xf69bA3131029173Ca97aa43400B10689f5C23f59', + earnContractAddress: '0xf69bA3131029173Ca97aa43400B10689f5C23f59', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'xBLZD', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'upgrade', + platform: 'Other', + assets: ['xBLZD'], + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x9a946c3Cb16c08334b69aE249690C236Ebd5583E', + createdAt: 1617945456, + }, + { + id: 'blizzard-blzd-bnb-eol', + logo: 'degens/BLZD-BNB.png', + name: 'BLZD-BNB LP', + token: 'BLZD-BNB LP', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x27A5a5c1fF96447F2a0c4baDcF26E7c65C040E3C', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBlizzardBLZD-BNB', + earnedTokenAddress: '0x57e6f78a7e644b8532d8c4f3A354c921709Aa897', + earnContractAddress: '0x57e6f78a7e644b8532d8c4f3A354c921709Aa897', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'blizzard-blzd-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['BLZD', 'BNB'], + removeLiquidityUrl: + 'https://v1exchange.pancakeswap.finance/#/remove/BNB/0x57067A6BD75c0E95a6A5f158455926e43E79BeB0', + createdAt: 1616212921, + }, + { + id: 'blizzard-blzd-busd-eol', + logo: 'degens/BLZD-BUSD.png', + name: 'BLZD-BUSD LP', + token: 'BLZD-BUSD LP', + tokenDescription: 'PancakeSwap', + tokenAddress: '0xE9C53B5Ab0C9cDBd72A03151a628863C28c55A6A', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBlizzardBLZD-BUSD', + earnedTokenAddress: '0x1EdfEc6849C54Ee9187539516C6a67ADAcBf9704', + earnContractAddress: '0x1EdfEc6849C54Ee9187539516C6a67ADAcBf9704', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'blizzard-blzd-busd', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['BLZD', 'BUSD'], + removeLiquidityUrl: + 'https://v1exchange.pancakeswap.finance/#/remove/0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56/0x57067A6BD75c0E95a6A5f158455926e43E79BeB0', + createdAt: 1616215411, + }, + { + id: 'blizzard-blzd', + logo: 'degens/BLZD.png', + name: 'BLZD', + token: 'BLZD', + tokenDescription: 'Blizzard', + tokenAddress: '0x57067A6BD75c0E95a6A5f158455926e43E79BeB0', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBlizzardBLZD', + earnedTokenAddress: '0x580b899D8d856DFe3da7895466F779F1A509D2Fd', + earnContractAddress: '0x580b899D8d856DFe3da7895466F779F1A509D2Fd', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'BLZD', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['BLZD'], + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x57067A6BD75c0E95a6A5f158455926e43E79BeB0', + createdAt: 1616302984, + }, + { + id: 'auto-cake-bnb-eol', + name: 'CAKE-BNB LP', + token: 'CAKE-BNB LP', + tokenDescription: 'PancakeSwap (Autofarm)', + tokenAddress: '0xA527a61703D82139F8a06Bc30097cC9CAA2df5A6', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooAutoCAKE-BNB', + earnedTokenAddress: '0x5DA77c7DBF6dBa1155CF343db06a7D79aaaad9Ee', + earnContractAddress: '0x5DA77c7DBF6dBa1155CF343db06a7D79aaaad9Ee', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'auto-cake-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['CAKE', 'BNB'], + removeLiquidityUrl: + 'https://v1exchange.pancakeswap.finance/#/remove/BNB/0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82', + createdAt: 1615208558, + }, + { + id: 'mdex-bsc-eth-usdt', + logo: 'uncategorized/ETH-USDT.png', + name: 'ETH-USDT LP', + token: 'ETH-USDT LP', + tokenDescription: 'Mdex', + tokenAddress: '0x0FB881c078434b1C0E4d0B64d8c64d12078b7Ce2', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooMdexETH-USDT', + earnedTokenAddress: '0x2C74A61556AfF02Be19B3d7a746ba75A38210fd3', + earnContractAddress: '0x2C74A61556AfF02Be19B3d7a746ba75A38210fd3', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'mdex-bsc-eth-usdt', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Mdex', + assets: ['ETH', 'USDT'], + addLiquidityUrl: + 'https://bsc.mdex.com/#/add/0x2170Ed0880ac9A755fd29B2688956BD959F933F8/0x55d398326f99059fF775485246999027B3197955', + createdAt: 1618043842, + }, + { + id: 'auto-auto-bnb-eol', + logo: 'bnb-pairs/AUTO-BNB.png', + name: 'AUTO-BNB LP', + token: 'AUTO-BNB LP', + tokenDescription: 'PancakeSwap (Autofarm)', + tokenAddress: '0x4d0228EBEB39f6d2f29bA528e2d15Fc9121Ead56', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooAutoAUTO-BNB', + earnedTokenAddress: '0x6Cb6D451e7E7ca5d5F73715D6B5dfc55EfbC1f82', + earnContractAddress: '0x6Cb6D451e7E7ca5d5F73715D6B5dfc55EfbC1f82', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'auto-auto-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['AUTO', 'BNB'], + retireReason: 'rewards', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0xa184088a740c695E156F91f5cC086a06bb78b827', + createdAt: 1615294122, + }, + { + id: 'typh-typh-bnb', + logo: 'bnb-pairs/TYPH-BNB.png', + name: 'TYPH-BNB LP', + token: 'TYPH-BNB LP', + tokenDescription: 'PancakeSwap (Typhoon)', + tokenAddress: '0xc9299FE3656d2d1BE9F5f05D046c33b88BB762cA', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooTyphTYPH-BNB', + earnedTokenAddress: '0xFC5C3411d4415E4fDff8f842F1Ae109350e61249', + earnContractAddress: '0xFC5C3411d4415E4fDff8f842F1Ae109350e61249', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'typh-typh-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['TYPH', 'BNB'], + removeLiquidityUrl: + 'https://v1exchange.pancakeswap.finance/#/remove/BNB/0x4090e535f2e251f5f88518998b18b54d26b3b07c', + createdAt: 1617962171, + }, + { + id: 'biti-biti-bnb', + logo: 'bnb-pairs/BITI-BNB.png', + name: 'BITI-BNB LP', + token: 'BITI-BNB LP', + tokenDescription: 'PancakeSwap (Biti)', + tokenAddress: '0xBE105c43Fe09E0BF1697f079ed09E1A2d956e602', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBitiBITI-BNB', + earnedTokenAddress: '0x554a710F4b5A354C991da0F19CC4D14E94493da1', + earnContractAddress: '0x554a710F4b5A354C991da0F19CC4D14E94493da1', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'biti-biti-bnb', + oraclePrice: 0, + depositsPaused: false, + status: 'eol', + platform: 'Other', + assets: ['BITI', 'BNB'], + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0xA25Dab5B75aC0E0738E58E49734295baD43d73F1', + createdAt: 1617884368, + }, + { + id: 'palm-palm-busd-eol', + logo: 'degens/palm-busd.png', + name: 'PALM-BUSD LP', + token: 'PALM-BUSD LP', + tokenDescription: 'YieldBay', + tokenAddress: '0x02600c49c53147ad6F090Ee3805D5705074c289d', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPalmPALM-BUSD', + earnedTokenAddress: '0x017443Dfc7A70A9d4D5cbCb966E95222955A6a7d', + earnContractAddress: '0x017443Dfc7A70A9d4D5cbCb966E95222955A6a7d', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'palm-palm-busd', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['PALM', 'BUSD'], + addLiquidityUrl: + 'https://exchange.yieldbay.finance/#/add/0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56/0x9768E5b2d8e761905BC81Dfc554f9437A46CdCC6', + buyTokenUrl: + 'https://exchange.yieldbay.finance/#/swap?outputCurrency=0x9768e5b2d8e761905bc81dfc554f9437a46cdcc6', + createdAt: 1617798298, + }, + { + id: 'palm-palm-bnb-eol', + logo: 'degens/palm-bnb.png', + name: 'PALM-BNB LP', + token: 'PALM-BNB LP', + tokenDescription: 'YieldBay', + tokenAddress: '0x6Fc4c985559233D0b69410316911E5C6e096cCB6', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPalmPALM-BNB', + earnedTokenAddress: '0xA85D1879E78C1875479635fda2daD25C9743dc39', + earnContractAddress: '0xA85D1879E78C1875479635fda2daD25C9743dc39', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'palm-palm-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['PALM', 'BNB'], + addLiquidityUrl: + 'https://exchange.yieldbay.finance/#/add/ETH/0x9768E5b2d8e761905BC81Dfc554f9437A46CdCC6', + buyTokenUrl: + 'https://exchange.yieldbay.finance/#/swap?outputCurrency=0x9768e5b2d8e761905bc81dfc554f9437a46cdcc6', + createdAt: 1617798247, + }, + { + id: 'swamp-cake-eol', + logo: 'single-assets/CAKE.svg', + name: 'CAKE', + token: 'CAKE', + tokenDescription: 'PancakeSwap (Swamp)', + tokenAddress: '0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSwampyCAKE', + earnedTokenAddress: '0x4d1A2b3119895d887b87509693338b86730bCE06', + earnContractAddress: '0x4d1A2b3119895d887b87509693338b86730bCE06', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'Cake', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['CAKE'], + depositFee: '<0.1%', + withdrawalFee: '0%', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82', + createdAt: 1617806173, + }, + { + id: 'swamp-swamp-eol', + logo: 'single-assets/SWAMP.svg', + name: 'SWAMP', + token: 'SWAMP', + tokenDescription: 'Swamp', + tokenAddress: '0xc5A49b4CBe004b6FD55B30Ba1dE6AC360FF9765d', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSwampySWAMP', + earnedTokenAddress: '0x06C9e0b65ff4e02940c5b0f50b27D799622b2b39', + earnContractAddress: '0x06C9e0b65ff4e02940c5b0f50b27D799622b2b39', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'SWAMP', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'tvl', + platform: 'Other', + assets: ['SWAMP'], + depositFee: '<0.1%', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0xc5A49b4CBe004b6FD55B30Ba1dE6AC360FF9765d', + createdAt: 1617811436, + }, + { + id: 'auto-cake-eol', + logo: 'single-assets/CAKE.svg', + name: 'CAKE', + token: 'CAKE', + tokenDescription: 'PancakeSwap (Autofarm)', + tokenAddress: '0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooAutoCakeFixed', + earnedTokenAddress: '0xe0B473c0dD6D7Fea5B395c3Ce7ffd4FEF0ab4373', + earnContractAddress: '0xe0B473c0dD6D7Fea5B395c3Ce7ffd4FEF0ab4373', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'Cake', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['CAKE'], + depositFee: '<0.1%', + withdrawalFee: '0%', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x0e09fabb73bd3ade0a17ecc321fd13a19e81ce82', + createdAt: 1613144057, + }, + { + id: 'swamp-cake-bnb-eol', + name: 'CAKE-BNB LP', + token: 'CAKE-BNB LP', + tokenDescription: 'PancakeSwap (Swamp)', + tokenAddress: '0xA527a61703D82139F8a06Bc30097cC9CAA2df5A6', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSwampyCAKE-BNB', + earnedTokenAddress: '0xe75E9Cc79c2d1dAa00f30991FBB413C8d4a86537', + earnContractAddress: '0xe75E9Cc79c2d1dAa00f30991FBB413C8d4a86537', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cake-cake-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['CAKE', 'BNB'], + removeLiquidityUrl: + 'https://v1exchange.pancakeswap.finance/#/remove/BNB/0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82', + createdAt: 1617721572, + }, + { + id: 'bingo-bgo-busd', + logo: 'degens/BGO.png', + name: 'BGO-BUSD LP', + token: 'BGO-BUSD LP', + tokenDescription: 'PancakeSwap (Bingo)', + tokenAddress: '0x9cBEcBA2a5789759f7EdE9D3Af0F76e34f070d06', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBingoBGO-BUSD', + earnedTokenAddress: '0xa61B7B10B2694E1c283b41be3E55A31a29187290', + earnContractAddress: '0xa61B7B10B2694E1c283b41be3E55A31a29187290', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'bingo-bgo-busd', + oraclePrice: 0, + depositsPaused: false, + status: 'eol', + platform: 'Other', + assets: ['BGO', 'BUSD'], + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x579a6277a6c2c63a5b25006f63bce5dc8d9c25e7', + createdAt: 1617626328, + }, + { + id: 'bingo-sbgo-busd', + logo: 'degens/SBGO.png', + name: 'sBGO-BUSD LP', + token: 'sBGO-BUSD LP', + tokenDescription: 'PancakeSwap (Bingo)', + tokenAddress: '0xAc774129e8a09a6a4baF30f6120b006B667C70D3', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBingoSBGO-BUSD', + earnedTokenAddress: '0x7d65a619e696cE8e7020C6Af3Aa9f75542BD6a11', + earnContractAddress: '0x7d65a619e696cE8e7020C6Af3Aa9f75542BD6a11', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'bingo-sbgo-busd', + oraclePrice: 0, + depositsPaused: false, + status: 'eol', + platform: 'Other', + assets: ['sBGO', 'BUSD'], + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x53f39324fbb209693332b87aa94d5519a1a49ab0', + createdAt: 1617627249, + }, + { + id: 'ellipsis-3eps-eol', + logo: 'uncategorized/eps3.png', + name: 'BUSD/USDT/USDC', + token: 'EPS 3Pool', + tokenDescription: 'Ellipsis', + tokenAddress: '0xaF4dE8E872131AE328Ce21D909C74705d3Aaf452', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooEllipsis3Pool', + earnedTokenAddress: '0xE563c046147b4dF98bfCD3d00Dc54511F0c3b752', + earnContractAddress: '0xE563c046147b4dF98bfCD3d00Dc54511F0c3b752', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'ellipsis-3eps', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Ellipsis', + assets: ['USDT', 'BUSD', 'USDC', '3EPS'], + addLiquidityUrl: 'https://ellipsis.finance/pool', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0xe9e7cea3dedca5984780bafc599bd69add087d56', + createdAt: 1616851506, + }, + { + id: 'tndr-tndr-busd-eol', + logo: 'degens/tndr-busd.png', + name: 'TNDR-BUSD LP', + token: 'TNDR-BUSD LP', + tokenDescription: 'ThunderSwap', + tokenAddress: '0x3d63B28ea380d6948b4A8d65E30Cb4ECe478abbA', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooTndrTNDR-BUSD', + earnedTokenAddress: '0x94Df3D9d2B7594AAa9D633e88bcF8195BA07819A', + earnContractAddress: '0x94Df3D9d2B7594AAa9D633e88bcF8195BA07819A', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'tndr-tndr-busd', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['TNDR', 'BUSD'], + addLiquidityUrl: + 'https://exchange.thunderswap.finance/#/add/0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56/0x7Cc46141AB1057b1928de5Ad5Ee78Bb37eFC4868', + buyTokenUrl: + 'https://exchange.thunderswap.finance/#/swap?outputCurrency=0x7Cc46141AB1057b1928de5Ad5Ee78Bb37eFC4868', + createdAt: 1617361475, + }, + { + id: 'tndr-tndr-bnb-eol', + logo: 'degens/tndr-bnb.png', + name: 'TNDR-BNB LP', + token: 'TNDR-BNB LP', + tokenDescription: 'ThunderSwap', + tokenAddress: '0xE3652C5F32B0EbCa4A7752269837d110fbdCfC06', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooTndrTNDR-BNB', + earnedTokenAddress: '0x8BdBc15aE5EbcaA00a27221D5A45469733F147F6', + earnContractAddress: '0x8BdBc15aE5EbcaA00a27221D5A45469733F147F6', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'tndr-tndr-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['TNDR', 'BNB'], + addLiquidityUrl: + 'https://exchange.thunderswap.finance/#/add/ETH/0x7Cc46141AB1057b1928de5Ad5Ee78Bb37eFC4868', + buyTokenUrl: + 'https://exchange.thunderswap.finance/#/swap?outputCurrency=0x7Cc46141AB1057b1928de5Ad5Ee78Bb37eFC4868', + createdAt: 1617362536, + }, + { + id: 'swamp-swamp-bnb', + logo: 'bnb-pairs/SWAMP-BNB.svg', + name: 'SWAMP-BNB LP', + token: 'SWAMP-BNB LP', + tokenDescription: 'PancakeSwap', + tokenAddress: '0xa823C74dE2343E922ab24520f29D08390B4e894D', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSwampySWAMP-BNB', + earnedTokenAddress: '0xb500cd497dD53e8ee889c2553B9Ea82326f21bA9', + earnContractAddress: '0xb500cd497dD53e8ee889c2553B9Ea82326f21bA9', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'swamp-swamp-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['SWAMP', 'BNB'], + removeLiquidityUrl: + 'https://v1exchange.pancakeswap.finance/#/remove/0xc5A49b4CBe004b6FD55B30Ba1dE6AC360FF9765d/BNB', + createdAt: 1617298796, + }, + { + id: 'swamp-swamp-busd', + logo: 'busd-pairs/SWAMP-BUSD.svg', + name: 'SWAMP-BUSD LP', + token: 'SWAMP-BUSD LP', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x9B06C33807a9Dee35DC676C401E6B8D93aB2a2F4', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSwampySWAMP-BUSD', + earnedTokenAddress: '0x4a759386cacb60A714275F97AbA9b555d91001c9', + earnContractAddress: '0x4a759386cacb60A714275F97AbA9b555d91001c9', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'swamp-swamp-busd', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['SWAMP', 'BUSD'], + removeLiquidityUrl: + 'https://v1exchange.pancakeswap.finance/#/remove/0xc5A49b4CBe004b6FD55B30Ba1dE6AC360FF9765d/0xe9e7cea3dedca5984780bafc599bd69add087d56', + createdAt: 1617299657, + }, + { + id: 'swirl-swirl-bnb', + logo: 'bnb-pairs/SWIRL-BNB.png', + name: 'SWIRL-BNB LP', + token: 'SWIRL-BNB LP', + tokenDescription: 'PancakeSwap (Swirl)', + tokenAddress: '0x135AeDCFb35b0b5dCf61Db7891a21253452Eb970', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSwirlSWIRL-BNB', + earnedTokenAddress: '0x2BE1cB6bc19E4592Beab28DcCfB993E4ad7A43aF', + earnContractAddress: '0x2BE1cB6bc19E4592Beab28DcCfB993E4ad7A43aF', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'swirl-swirl-bnb', + oraclePrice: 0, + depositsPaused: false, + status: 'eol', + platform: 'Other', + assets: ['SWIRL', 'BNB'], + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x52d86850bc8207b520340B7E39cDaF22561b9E56', + createdAt: 1617190565, + }, + { + id: 'cake-dft-bnb', + logo: 'bnb-pairs/DFT-BNB.svg', + name: 'DFT-BNB LP', + token: 'DFT-BNB LP', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x8FbCbD7e30b1733965a8980bf7Ae2ca1c0C456cc', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPancakeDFT-BNB', + earnedTokenAddress: '0x1f945e77280653549aA1D36f24620A06Bc64e712', + earnContractAddress: '0x1f945e77280653549aA1D36f24620A06Bc64e712', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cake-dft-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['DFT', 'BNB'], + removeLiquidityUrl: + 'https://v1exchange.pancakeswap.finance/#/remove/BNB/0x42712dF5009c20fee340B245b510c0395896cF6e', + createdAt: 1617112149, + }, + { + id: 'cake-swth-bnb', + logo: 'bnb-pairs/SWTH-BNB.svg', + name: 'SWTH-BNB LP', + token: 'SWTH-BNB LP', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x8c5cFfad6cddb96Ee33DA685D0d50a37e030E115', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPancakeSWTH-BNB', + earnedTokenAddress: '0x2A3166a20a88B04282C17de6cCE1eEd032314f96', + earnContractAddress: '0x2A3166a20a88B04282C17de6cCE1eEd032314f96', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cake-swth-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['SWTH', 'BNB'], + removeLiquidityUrl: + 'https://v1exchange.pancakeswap.finance/#/remove/BNB/0x250b211EE44459dAd5Cd3bCa803dD6a7EcB5d46C', + createdAt: 1617112197, + }, + { + id: 'zefi-zefi-bnb', + logo: 'degens/ZEFI-BNB.svg', + name: 'ZEFI-BNB LP', + token: 'ZEFI-BNB LP', + tokenDescription: 'PancakeSwap (ZCore)', + tokenAddress: '0x0E6027880A04677BAE5E4225000078eE92904bf6', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooZefiZEFI-BNB', + earnedTokenAddress: '0xc9f7337E2c638C48dd7dcF506535e8fEb0c3c786', + earnContractAddress: '0xc9f7337E2c638C48dd7dcF506535e8fEb0c3c786', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'zefi-zefi-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['ZEFI', 'BNB'], + removeLiquidityUrl: + 'https://v1exchange.pancakeswap.finance/#/remove/BNB/0x0288D3E353fE2299F11eA2c2e1696b4A648eCC07', + createdAt: 1617105351, + }, + { + id: 'zefi-zefi-busd', + logo: 'degens/ZEFI-BUSD.svg', + name: 'ZEFI-BUSD LP', + token: 'ZEFI-BUSD LP', + tokenDescription: 'PancakeSwap (ZCore)', + tokenAddress: '0x24B87c29e907D6329ED8fD6d7B2ecb074089093E', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooZefiZEFI-BUSD', + earnedTokenAddress: '0x8152cd7b2EA135022a5E0baF625CB655302F2E7b', + earnContractAddress: '0x8152cd7b2EA135022a5E0baF625CB655302F2E7b', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'zefi-zefi-busd', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['ZEFI', 'BUSD'], + removeLiquidityUrl: + 'https://v1exchange.pancakeswap.finance/#/remove/0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56/0x0288D3E353fE2299F11eA2c2e1696b4A648eCC07', + createdAt: 1617105291, + }, + { + id: 'hps-hps-bnb-eol', + logo: 'single-assets/HPS.png', + name: 'HPS-BNB LP', + token: 'HPS-BNB LP', + tokenDescription: 'JulSwap (BillionHappiness)', + tokenAddress: '0xcaC3b7DE7D5c44E8E1048241C7dE29a61b5C3E7d', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBillionHPS-BNB', + earnedTokenAddress: '0x17cB1Ddb71ca34958e54f8152f0913C25bC50DF6', + earnContractAddress: '0x17cB1Ddb71ca34958e54f8152f0913C25bC50DF6', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'hps-hps-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['HPS', 'BNB'], + withdrawalFee: '0%', + retireReason: 'rewards', + removeLiquidityUrl: + 'https://julswap.com/#/remove/BNB/0xeDa21B525Ac789EaB1a08ef2404dd8505FfB973D', + buyTokenUrl: + 'https://julswap.com/#/swap?inputCurrency=BNB&outputCurrency=0xeDa21B525Ac789EaB1a08ef2404dd8505FfB973D', + createdAt: 1617017395, + }, + { + id: 'ellipsis-eps-bnb-eol', + logo: 'uncategorized/epsBNB.png', + name: 'EPS-BNB LP', + token: 'EPS-BNB LP', + tokenDescription: 'Ellipsis', + tokenAddress: '0xf9045866e7b372DeF1EFf3712CE55FAc1A98dAF0', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooEllipsisEPS-BNB', + earnedTokenAddress: '0xD467af8C117AcaF7B2725a6d35Dc5A471A683055', + earnContractAddress: '0xD467af8C117AcaF7B2725a6d35Dc5A471A683055', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'ellipsis-eps-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Ellipsis', + assets: ['EPS', 'BNB'], + addLiquidityUrl: + 'https://pancake.ellipsis.finance/#/add/BNB/0xA7f552078dcC247C2684336020c03648500C6d9F', + buyTokenUrl: + 'https://pancake.ellipsis.finance/#/swap?outputCurrency=0xA7f552078dcC247C2684336020c03648500C6d9F', + createdAt: 1616828768, + }, + { + id: 'alpaca-salpaca-eol', + logo: 'single-assets/sALPACA.svg', + name: 'sALPACA', + token: 'sALPACA', + tokenDescription: 'Alpaca', + tokenAddress: '0x6F695Bd5FFD25149176629f8491A5099426Ce7a7', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooAlpacaSALPACA', + earnedTokenAddress: '0xCd1C6adca69071F61EfE5aaa0BB63cA3419D5088', + earnContractAddress: '0xCd1C6adca69071F61EfE5aaa0BB63cA3419D5088', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'ALPACA', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['sALPACA'], + buyTokenUrl: + 'https://pancakeswap.finance/swap?inputCurrency=0x8f0528ce5ef7b51152a59745befdd91d97091d2f&outputCurrency=0x6F695Bd5FFD25149176629f8491A5099426Ce7a7', + createdAt: 1616706283, + }, + { + id: 'naut-naut-bnb', + logo: 'degens/NAUT.png', + name: 'NAUT-BNB LP', + token: 'NAUT-BNB LP', + tokenDescription: 'ApeSwap', + tokenAddress: '0x288EA5437c7aaD045a393cee2F41E548df24d1C8', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooNautNAUT-BNB', + earnedTokenAddress: '0x693402b80b073b872589433e6fa1b08665E12025', + earnContractAddress: '0x693402b80b073b872589433e6fa1b08665E12025', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'naut-naut-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'ApeSwap', + assets: ['NAUT', 'BNB'], + removeLiquidityUrl: + 'https://dex.apeswap.finance/#/remove/ETH/0x05B339B0A346bF01f851ddE47a5d485c34FE220c', + createdAt: 1616763592, + }, + { + id: 'cake-lto-bnb', + logo: 'bnb-pairs/LTO-BNB.svg', + name: 'LTO-BNB LP', + token: 'LTO-BNB LP', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x85644FcD00C401E1A0a0a10d2aE6Bbe04A73e4ab', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPancakeLTO-BNB', + earnedTokenAddress: '0x37A36B817f372A9F1bDb2Ee59bA1D2c599B2AE77', + earnContractAddress: '0x37A36B817f372A9F1bDb2Ee59bA1D2c599B2AE77', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cake-lto-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['LTO', 'BNB'], + removeLiquidityUrl: + 'https://v1exchange.pancakeswap.finance/#/remove/BNB/0x857b222fc79e1cbbf8ca5f78cb133d1b7cf34bbd', + createdAt: 1616695017, + }, + { + id: 'cake-trade-bnb', + logo: 'bnb-pairs/TRADE-BNB.svg', + name: 'TRADE-BNB LP', + token: 'TRADE-BNB LP', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x2562f94E90dE6D9eb4fB6B3b8Eab56b15Aa4FC72', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPancakeTRADE-BNB', + earnedTokenAddress: '0x3F3601229F6fE7D9f3FA8554f0C3Ca4CaE8043B4', + earnContractAddress: '0x3F3601229F6fE7D9f3FA8554f0C3Ca4CaE8043B4', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cake-trade-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['TRADE', 'BNB'], + removeLiquidityUrl: + 'https://v1exchange.pancakeswap.finance/#/remove/BNB/0x7af173f350d916358af3e218bdf2178494beb748', + createdAt: 1616694954, + }, + { + id: 'alpaca-alpaca-bnb', + logo: 'bnb-pairs/ALPACA-BNB.png', + name: 'ALPACA-BNB LP', + token: 'ALPACA-BNB LP', + tokenDescription: 'Alpaca', + tokenAddress: '0xF3CE6Aac24980E6B657926dfC79502Ae414d3083', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooAlpacaALPACA-BNB', + earnedTokenAddress: '0xB4CF4b0d79AF3A5627D5595483e0df9620B7d236', + earnContractAddress: '0xB4CF4b0d79AF3A5627D5595483e0df9620B7d236', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'alpaca-alpaca-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['ALPACA', 'BNB'], + removeLiquidityUrl: + 'https://v1exchange.pancakeswap.finance/#/remove/BNB/0x8F0528cE5eF7B51152A59745bEfDD91D97091d2F', + createdAt: 1616621126, + }, + { + id: 'space-space-bnb-eol', + logo: 'degens/SPACE-BNB.png', + name: 'SPACE-BNB LP', + token: 'SPACE-BNB LP', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x78D9a0c50F6484291b4122f61888Bb9EE71879Ff', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPancakeSPACE-BNB', + earnedTokenAddress: '0xbC943C4C00E837e65Cf76BcD8Df8C365FB44Dd6f', + earnContractAddress: '0xbC943C4C00E837e65Cf76BcD8Df8C365FB44Dd6f', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'space-space-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['SPACE', 'BNB'], + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x0abd3E3502c15ec252f90F64341cbA74a24fba06', + createdAt: 1616599212, + retiredReason: 'tvl', + }, + { + id: 'space-space-busd-eol', + logo: 'degens/SPACE-BUSD.png', + name: 'SPACE-BUSD LP', + token: 'SPACE-BUSD LP', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x6B936c5C1FD7De08E03684b0588A87DBD8ce6b63', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPancakeSPACE-BUSD', + earnedTokenAddress: '0xd71A3edcdAe126a30960df40CB5247d87980Bf08', + earnContractAddress: '0xd71A3edcdAe126a30960df40CB5247d87980Bf08', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'space-space-busd', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'PancakeSwap', + assets: ['SPACE', 'BUSD'], + buyTokenUrl: + 'https://pancakeswap.finance/swap?inputCurrency=0x0abd3E3502c15ec252f90F64341cbA74a24fba06&outputCurrency=0xe9e7cea3dedca5984780bafc599bd69add087d56', + createdAt: 1616599971, + }, + { + id: 'cake-bdigg-btcb', + logo: 'uncategorized/BDIGG-BTCB.svg', + name: 'bDIGG-BTCB LP', + token: 'bDIGG-BTCB LP', + tokenDescription: 'PancakeSwap', + tokenAddress: '0xE1E33459505bB3763843a426F7Fd9933418184ae', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPancakeBDIGG-BNB', + earnedTokenAddress: '0x2c1a0950aC426f920f260C9647BCD3AFD0482f4e', + earnContractAddress: '0x2c1a0950aC426f920f260C9647BCD3AFD0482f4e', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cake-bdigg-btcb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['bDIGG', 'BTCB'], + removeLiquidityUrl: + 'https://v1exchange.pancakeswap.finance/#/remove/0x5986D5c77c65e5801a5cAa4fAE80089f870A71dA/0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c', + createdAt: 1616516966, + }, + { + id: 'pumpy-pmp-bnb', + logo: 'single-assets/PMP.svg', + name: 'PMP-BNB LP', + token: 'PMP-BNB LP', + tokenDescription: 'PancakeSwap (Pumpy)', + tokenAddress: '0x18CCA70DDa1699148cB37941d75ccF4847BEa188', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPumpyPMP-BNB', + earnedTokenAddress: '0xE929d65cBf543cC3cA6b18Fe7872fccC6abBf480', + earnContractAddress: '0xE929d65cBf543cC3cA6b18Fe7872fccC6abBf480', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'pumpy-pmp-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['PMP', 'BNB'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0x8d4FBB3AC63bf33851dCE80D63613Df1A515BC00', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x8d4FBB3AC63bf33851dCE80D63613Df1A515BC00', + createdAt: 1616413974, + }, + { + id: 'cake-bifi-bnb', + logo: 'bnb-pairs/BIFI-BNB.svg', + name: 'BIFI-BNB LP', + token: 'BIFI-BNB LP', + tokenDescription: 'PancakeSwap', + tokenAddress: '0xd132D2C24F29EE8ABb64a66559d1b7aa627Bd7fD', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPancakeBIFI-BNB', + earnedTokenAddress: '0x3B5332A476AbCdb80Cde6645e9e5563435e97772', + earnContractAddress: '0x3B5332A476AbCdb80Cde6645e9e5563435e97772', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cake-bifi-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['BIFI', 'BNB'], + removeLiquidityUrl: + 'https://v1exchange.pancakeswap.finance/#/remove/BNB/0xCa3F508B8e4Dd382eE878A314789373D80A5190A', + createdAt: 1615960933, + }, + { + id: 'jul-twt-bnb', + logo: 'bnb-pairs/JTWT-BNB.svg', + name: 'TWT-BNB LP', + token: 'TWT-BNB SLP', + tokenDescription: 'JulSwap', + tokenAddress: '0x14aAC5bA46418d625db4f506988E3Ee5a0963887', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooJulTWT-BNB', + earnedTokenAddress: '0x7091E04422d1D9Be48C211cf2F818a7E88EFd736', + earnContractAddress: '0x7091E04422d1D9Be48C211cf2F818a7E88EFd736', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'jul-twt-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['TWT', 'BNB'], + removeLiquidityUrl: + 'https://julswap.com/#/remove/BNB/0x4B0F1812e5Df2A09796481Ff14017e6005508003', + createdAt: 1616264123, + }, + { + id: 'venus-eth-eol', + logo: 'single-assets/ETH.svg', + name: 'ETH', + token: 'ETH', + tokenDescription: 'Venus', + tokenAddress: '0x2170Ed0880ac9A755fd29B2688956BD959F933F8', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooVenusETH', + earnedTokenAddress: '0xA9936272065e6DDAc9D2453C9a2712B581e9aE1B', + earnContractAddress: '0xA9936272065e6DDAc9D2453C9a2712B581e9aE1B', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'ETH', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Venus', + assets: ['ETH'], + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x2170ed0880ac9a755fd29b2688956bd959f933f8', + createdAt: 1608173110, + }, + { + id: 'com-com-bnb-eol', + logo: 'bnb-pairs/COM-BNB.png', + name: 'COM-BNB LP', + token: 'COM-BNB LP', + tokenDescription: 'Complus', + tokenAddress: '0x7FEAb71e859843D56358069B1374E266F7c0a75f', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooComplusCOM-BNB', + earnedTokenAddress: '0x0DA3EB14c8d07a87A366D029d7f2341Ac0eca775', + earnContractAddress: '0x0DA3EB14c8d07a87A366D029d7f2341Ac0eca775', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'com-com-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['COM', 'BNB'], + retireReason: 'tvl', + addLiquidityUrl: + 'https://bscdex.complus.exchange/#/add/BNB/0x7fa892544D49598460B821De4D99E8c28b1Decaa', + buyTokenUrl: + 'https://bscdex.complus.exchange/#/swap?outputCurrency=0x7fa892544d49598460b821de4d99e8c28b1decaa&outputCurrency=BNB', + createdAt: 1616170726, + }, + { + id: 'cake-dusk-bnb', + logo: 'bnb-pairs/DUSK-BNB.svg', + name: 'DUSK-BNB LP', + token: 'DUSK-BNB LP', + tokenDescription: 'PancakeSwap', + tokenAddress: '0xB7918560273FD56e50E9c215CC0DFE8D764C36C5', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPancakeDUSK-BNB', + earnedTokenAddress: '0x4BeE93b29e1b3fd90bb3e6EdE9539Fe92E9836Cd', + earnContractAddress: '0x4BeE93b29e1b3fd90bb3e6EdE9539Fe92E9836Cd', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cake-dusk-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['DUSK', 'BNB'], + removeLiquidityUrl: + 'https://v1exchange.pancakeswap.finance/#/remove/0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c/0xb2bd0749dbe21f623d9baba856d3b0f0e1bfec9c', + createdAt: 1616070863, + }, + { + id: 'squirrel-nuts-bnb-eol', + logo: 'single-assets/NUTS.png', + name: 'NUTS-BNB LP', + token: 'NUTS-BNB LP', + tokenDescription: 'PancakeSwap (Squirrel)', + tokenAddress: '0x034C9E6B08c09a6144e0D0E52161338fB105e656', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSquirrelNUTS-BNB', + earnedTokenAddress: '0xB1C9A27394dBa451Bfc4a5dce8Fc829f8a3E9278', + earnContractAddress: '0xB1C9A27394dBa451Bfc4a5dce8Fc829f8a3E9278', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'squirrel-nuts-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['NUTS', 'BNB'], + removeLiquidityUrl: + 'https://v1exchange.pancakeswap.finance/#/remove/BNB/0x8893D5fA71389673C5c4b9b3cb4EE1ba71207556', + createdAt: 1615984690, + }, + { + id: 'squirrel-nuts-eol', + logo: 'single-assets/NUTS.png', + name: 'NUTS', + token: 'NUTS', + tokenDescription: 'Squirrel', + tokenAddress: '0x8893D5fA71389673C5c4b9b3cb4EE1ba71207556', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSquirrelNUTS', + earnedTokenAddress: '0x2D40beB0122aBcAD0E6b49934d47adac6Dddd97B', + earnContractAddress: '0x2D40beB0122aBcAD0E6b49934d47adac6Dddd97B', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'NUTS', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + retireReason: 'rewards', + assets: ['NUTS'], + withdrawalFee: '0%', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x8893D5fA71389673C5c4b9b3cb4EE1ba71207556', + createdAt: 1615985963, + }, + { + id: 'bakery-bat-bake-eol', + logo: 'uncategorized/BAT-BAKE.svg', + name: 'BAT-BAKE LP', + token: 'BAT-BAKE LP', + tokenDescription: 'Bakery', + tokenAddress: '0x675Ec26cF1c99A5cD227658f5d0e2fAcbbf3Dcf7', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBakeryBAT-BAKE', + earnedTokenAddress: '0x92E586d7dB14483C103c2e0FE6A596F8b55DA752', + earnContractAddress: '0x92E586d7dB14483C103c2e0FE6A596F8b55DA752', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'bakery-bat-bake', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Other', + assets: ['BAT', 'BAKE'], + addLiquidityUrl: + 'https://www.bakeryswap.org/#/add/0x101d82428437127bf1608f699cd651e6abf9766e/0xe02df9e3e622debdd69fb838bb799e3f168902c5', + buyTokenUrl: + 'https://www.bakeryswap.org/#/swap?inputCurrency=0x101d82428437127bf1608f699cd651e6abf9766e&outputCurrency=0xe02df9e3e622debdd69fb838bb799e3f168902c5', + createdAt: 1615901040, + }, + { + id: 'memefarm-mfrm-bnb', + logo: 'degens/mfrm-bnb.png', + name: 'MFRM-BNB LP', + token: 'MFRM-BNB LP', + tokenDescription: 'PancakeSwap (MemeFarm)', + tokenAddress: '0x9E6463BB3b6ff6A768290A4eFC452dC92F2CfA2A', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooMemefarmMFRM-BNB', + earnedTokenAddress: '0x94d75413A29287Dde5766E5595dc61e668965170', + earnContractAddress: '0x94d75413A29287Dde5766E5595dc61e668965170', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'memefarm-mfrm-bnb', + oraclePrice: 0, + depositsPaused: false, + status: 'eol', + platform: 'Other', + assets: ['MFRM', 'BNB'], + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x206340f3361404910F45cA0893980EF3f9b418ea', + createdAt: 1615791800, + }, + { + id: 'slime-slime-busd', + logo: 'degens/slime-busd.png', + name: 'SLME-BUSD LP', + token: 'SLME-BUSD LP', + tokenDescription: 'SlimeFinance', + tokenAddress: '0xfbd0B87f4132E5A14aA85C21476738C0C13Fd06c', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSlimeSLIME-BUSD', + earnedTokenAddress: '0xd7987DB14509FACb9CC44c0b82CC86c188f5cEEF', + earnContractAddress: '0xd7987DB14509FACb9CC44c0b82CC86c188f5cEEF', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'slime-slime-busd', + oraclePrice: 0, + depositsPaused: false, + status: 'eol', + platform: 'Other', + assets: ['SLME', 'BUSD'], + addLiquidityUrl: + 'https://slime.finance/swap-slimeeees#/add/0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56/0x4fCfA6cC8914ab455B5b33Df916d90BFe70b6AB1', + buyTokenUrl: + 'https://pancakeswap.finance/swap?inputCurrency=0x4fCfA6cC8914ab455B5b33Df916d90BFe70b6AB1&outputCurrency=0xe9e7cea3dedca5984780bafc599bd69add087d56', + createdAt: 1615637983, + }, + { + id: 'slime-slime-bnb', + logo: 'degens/slime-bnb.png', + name: 'SLME-BNB LP', + token: 'SLME-BNB LP', + tokenDescription: 'SlimeFinance', + tokenAddress: '0xcb645714520080EF4E65De3254d61356262F0818', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSlimeSLIME-BNB', + earnedTokenAddress: '0x62d7eC40A1a3f0AB5D1fCC0D8bd3dCb015aFe6a3', + earnContractAddress: '0x62d7eC40A1a3f0AB5D1fCC0D8bd3dCb015aFe6a3', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'slime-slime-bnb', + oraclePrice: 0, + depositsPaused: false, + status: 'eol', + platform: 'Other', + assets: ['SLME', 'BNB'], + addLiquidityUrl: + 'https://slime.finance/swap-slimeeees#/add/BNB/0x4fCfA6cC8914ab455B5b33Df916d90BFe70b6AB1', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x4fCfA6cC8914ab455B5b33Df916d90BFe70b6AB1', + createdAt: 1615636861, + }, + { + id: 'cakev2-alice-bnb', + logo: 'bnb-pairs/ALICE-BNB.svg', + name: 'ALICE-BNB LP', + token: 'ALICE-BNB LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0xcAD7019D6d84a3294b0494aEF02e73BD0f2572Eb', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2ALICE-BNB', + earnedTokenAddress: '0x0c65883778f16770F4d43f5524708e18BC62881b', + earnContractAddress: '0x0c65883778f16770F4d43f5524708e18BC62881b', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-alice-bnb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'PancakeSwap', + assets: ['ALICE', 'BNB'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0xAC51066d7bEC65Dc4589368da368b212745d63E8', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0xAC51066d7bEC65Dc4589368da368b212745d63E8', + createdAt: 1619303271, + }, + { + id: 'cake-alice-bnb', + logo: 'bnb-pairs/ALICE-BNB.svg', + name: 'ALICE-BNB LP', + token: 'ALICE-BNB LP', + tokenDescription: 'PancakeSwap', + tokenAddress: '0xe022baa3E5E87658f789c9132B10d7425Fd3a389', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPancakeALICE-BNB', + earnedTokenAddress: '0x0C098a54FeE7EC15a59587E69cD340BBd9d22077', + earnContractAddress: '0x0C098a54FeE7EC15a59587E69cD340BBd9d22077', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cake-alice-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['ALICE', 'BNB'], + removeLiquidityUrl: + 'https://v1exchange.pancakeswap.finance/#/remove/BNB/0xAC51066d7bEC65Dc4589368da368b212745d63E8', + createdAt: 1615785029, + }, + { + id: 'auto-beth-eth', + logo: 'uncategorized/BETH-ETH.svg', + name: 'BETH-ETH LP', + token: 'BETH-ETH LP', + tokenDescription: 'PancakeSwap (Autofarm)', + tokenAddress: '0x99d865Ed50D2C32c1493896810FA386c1Ce81D91', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooAutoBETH-ETH', + earnedTokenAddress: '0xF3C1EB01E40c47fd32D0397e56569809aae0e9c7', + earnContractAddress: '0xF3C1EB01E40c47fd32D0397e56569809aae0e9c7', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'auto-beth-eth', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['BETH', 'ETH'], + removeLiquidityUrl: + 'https://v1exchange.pancakeswap.finance/#/remove/0x2170Ed0880ac9A755fd29B2688956BD959F933F8/0x250632378E573c6Be1AC2f97Fcdf00515d0Aa91B', + createdAt: 1615029624, + }, + { + id: 'belt-belt-bnb', + logo: 'bnb-pairs/BELT-BNB-BELT.png', + name: 'BELT-BNB LP', + token: 'BELT-BNB LP', + tokenDescription: 'PancakeSwap (Belt)', + tokenAddress: '0x83B92D283cd279fF2e057BD86a95BdEfffED6faa', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBeltBeltBNB', + earnedTokenAddress: '0xfc01F7a17eEb5DABc97312E13954444b00217621', + earnContractAddress: '0xfc01F7a17eEb5DABc97312E13954444b00217621', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cake-belt-bnb', + oraclePrice: 0, + depositsPaused: false, + status: 'eol', + platform: 'Belt', + assets: ['BELT', 'BNB'], + removeLiquidityUrl: + 'https://v1exchange.pancakeswap.finance/#/remove/BNB/0xE0e514c71282b6f4e823703a39374Cf58dc3eA4f', + createdAt: 1615485635, + }, + { + id: 'cake-belt-bnb', + logo: 'bnb-pairs/BELT-BNB.svg', + name: 'BELT-BNB LP', + token: 'BELT-BNB LP', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x83B92D283cd279fF2e057BD86a95BdEfffED6faa', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPancakeBELT-BNB', + earnedTokenAddress: '0xee43C2D11Bc6DF95dcECd9be05ae648863D6f9dC', + earnContractAddress: '0xee43C2D11Bc6DF95dcECd9be05ae648863D6f9dC', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cake-belt-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['BELT', 'BNB'], + removeLiquidityUrl: + 'https://v1exchange.pancakeswap.finance/#/remove/BNB/0xE0e514c71282b6f4e823703a39374Cf58dc3eA4f', + createdAt: 1615370547, + }, + { + id: 'auto-busd-bnb', + logo: 'bnb-pairs/BUSD-BNB.svg', + name: 'BUSD-BNB LP', + token: 'BUSD-BNB LP', + tokenDescription: 'PancakeSwap (Autofarm)', + tokenAddress: '0x1B96B92314C44b159149f7E0303511fB2Fc4774f', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooAutoBUSD-BNB', + earnedTokenAddress: '0xb01e3C7789858beD3b142c8f2499F21Ab3ea3f0f', + earnContractAddress: '0xb01e3C7789858beD3b142c8f2499F21Ab3ea3f0f', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'auto-busd-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['BUSD', 'BNB'], + removeLiquidityUrl: + 'https://v1exchange.pancakeswap.finance/#/remove/BNB/0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56', + createdAt: 1615208693, + }, + { + id: 'auto-btc-bnb', + logo: 'bnb-pairs/BTCB-BNB.svg', + name: 'BTC-BNB LP', + token: 'BTC-BNB LP', + tokenDescription: 'PancakeSwap (Autofarm)', + tokenAddress: '0x7561EEe90e24F3b348E1087A005F78B4c8453524', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooAutoBTC-BNB', + earnedTokenAddress: '0xcf2D6e0030e24F01e4750cAE376E2126e728E0c2', + earnContractAddress: '0xcf2D6e0030e24F01e4750cAE376E2126e728E0c2', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'auto-btc-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['BTCB', 'BNB'], + removeLiquidityUrl: + 'https://v1exchange.pancakeswap.finance/#/remove/0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c/BNB', + createdAt: 1615208756, + }, + { + id: 'venus-btcb-eol', + logo: 'single-assets/BTCB.svg', + name: 'BTCB', + token: 'BTCB', + tokenDescription: 'Venus', + tokenAddress: '0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooVenusBTCB', + earnedTokenAddress: '0x7255Ae13BA4484eD33fB48c4b833000dC12888B4', + earnContractAddress: '0x7255Ae13BA4484eD33fB48c4b833000dC12888B4', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'BTCB', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Venus', + assets: ['BTCB'], + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c', + createdAt: 1608173080, + }, + { + id: 'cake-dexe-busd', + logo: 'busd-pairs/DEXE-BUSD.svg', + name: 'DEXE-BUSD LP', + token: 'DEXE-BUSD LP', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x69AB367BC1BEA1D2c0fB4dBaEc6b7197951Da56C', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPancakeDEXE-BUSD', + earnedTokenAddress: '0xfEDB3855761B9e356671Fb1eC95593e99b153EfD', + earnContractAddress: '0xfEDB3855761B9e356671Fb1eC95593e99b153EfD', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cake-dexe-busd', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['DEXE', 'BUSD'], + removeLiquidityUrl: + 'https://v1exchange.pancakeswap.finance/#/remove/0xe9e7cea3dedca5984780bafc599bd69add087d56/0x039cb485212f996a9dbb85a9a75d898f94d38da6', + createdAt: 1615195112, + }, + { + id: 'jul-bifi-bnb-eol', + logo: 'bnb-pairs/BIFI-BNB.png', + name: 'BIFI-BNB LP', + token: 'BIFI-BNB SLP', + tokenDescription: 'JulSwap', + tokenAddress: '0xd3665568474cC090aB6B243333c2A1A3f13a9C7F', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooJulBIFI-BNB', + earnedTokenAddress: '0x6a3fF116a10349BB40B22FD7687871d5D560d715', + earnContractAddress: '0x6a3fF116a10349BB40B22FD7687871d5D560d715', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'jul-bifi-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['BIFI', 'BNB'], + addLiquidityUrl: 'https://julswap.com/#/add/BNB/0xCa3F508B8e4Dd382eE878A314789373D80A5190A', + buyTokenUrl: + 'https://julswap.com/#/swap?inputCurrency=BNB&outputCurrency=0xca3f508b8e4dd382ee878a314789373d80a5190a', + createdAt: 1614785554, + }, + { + id: 'jul-juld-bnb-eol', + logo: 'bnb-pairs/JULD-BNB.svg', + name: 'JulD-BNB LP', + token: 'JulD-BNB SLP', + tokenDescription: 'JulSwap', + tokenAddress: '0x0c8f9a56544CC988f1873A038de2f3e4C6fE6f27', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooJulJulD-BNB', + earnedTokenAddress: '0xcB8c4416cD10836ff7A35F4b2AfD5BE0257Cc9DB', + earnContractAddress: '0xcB8c4416cD10836ff7A35F4b2AfD5BE0257Cc9DB', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'jul-juld-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['JulD', 'BNB'], + addLiquidityUrl: 'https://julswap.com/#/add/0x5a41f637c3f7553dba6ddc2d3ca92641096577ea/BNB', + buyTokenUrl: + 'https://julswap.com/#/swap?inputCurrency=BNB&outputCurrency=0x5a41f637c3f7553dba6ddc2d3ca92641096577ea', + createdAt: 1614954499, + }, + { + id: 'venus-ada-eol', + logo: 'single-assets/ADA.svg', + name: 'ADA', + token: 'ADA', + tokenDescription: 'Venus', + tokenAddress: '0x3EE2200Efb3400fAbB9AacF31297cBdD1d435D47', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooVenusADA', + earnedTokenAddress: '0x53c0CE2EBdA0c2A39327bE0B58a3c28A8Dcde420', + earnContractAddress: '0x53c0CE2EBdA0c2A39327bE0B58a3c28A8Dcde420', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'ADA', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Venus', + assets: ['ADA'], + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x3ee2200efb3400fabb9aacf31297cbdd1d435d47', + createdAt: 1614710200, + }, + { + id: 'cake-bel-bnb', + logo: 'bnb-pairs/BEL-BNB.svg', + name: 'BEL-BNB LP', + token: 'BEL-BNB LP', + tokenDescription: 'PancakeSwap', + tokenAddress: '0xAB97952a2806D5c92b7046c7aB13a72A87e0097b', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPancakeBEL-BNB', + earnedTokenAddress: '0x7C001B962029C0a59b148293838dc780d7E5d24C', + earnContractAddress: '0x7C001B962029C0a59b148293838dc780d7E5d24C', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cake-bel-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['BEL', 'BNB'], + removeLiquidityUrl: + 'https://v1exchange.pancakeswap.finance/#/remove/BNB/0x8443f091997f06a61670b735ed92734f5628692f', + createdAt: 1615043247, + }, + { + id: 'cake-tpt-busd', + logo: 'busd-pairs/TPT-BUSD.svg', + name: 'TPT-BUSD LP', + token: 'TPT-BUSD LP', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x4db28767D1527bA545CA5bbdA1C96a94ED6ff242', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPancakeTPT-BUSD', + earnedTokenAddress: '0x6b4971b8dAfc3c426EdE7E629394f31B0BdF3c16', + earnContractAddress: '0x6b4971b8dAfc3c426EdE7E629394f31B0BdF3c16', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cake-tpt-busd', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['TPT', 'BUSD'], + removeLiquidityUrl: + 'https://v1exchange.pancakeswap.finance/#/remove/0xe9e7cea3dedca5984780bafc599bd69add087d56/0xeca41281c24451168a37211f0bc2b8645af45092', + createdAt: 1615043163, + }, + { + id: 'cake-watch-bnb', + logo: 'bnb-pairs/WATCH-BNB.svg', + name: 'WATCH-BNB LP', + token: 'WATCH-BNB LP', + tokenDescription: 'PancakeSwap', + tokenAddress: '0xdC6C130299E53ACD2CC2D291fa10552CA2198a6b', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPancakeWATCH-BNB', + earnedTokenAddress: '0x31b4d6D89531BB32307737C441a8cD7d82224B91', + earnContractAddress: '0x31b4d6D89531BB32307737C441a8cD7d82224B91', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cake-watch-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['WATCH', 'BNB'], + removeLiquidityUrl: + 'https://v1exchange.pancakeswap.finance/#/remove/BNB/0x7A9f28EB62C791422Aa23CeAE1dA9C847cBeC9b0', + createdAt: 1614862041, + }, + { + id: 'cake-xmark-busd', + logo: 'busd-pairs/XMARK-BUSD.svg', + name: 'XMARK-BUSD LP', + token: 'XMARK-BUSD LP', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x292Ca56ED5b3330A19037f835Af4A9c0098EA6Fa', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPancakeXMARK-BUSD', + earnedTokenAddress: '0x9De53755e913913dEcA7360a19C0634F2214FB6d', + earnContractAddress: '0x9De53755e913913dEcA7360a19C0634F2214FB6d', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cake-xmark-busd', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['XMARK', 'BUSD'], + removeLiquidityUrl: + 'https://v1exchange.pancakeswap.finance/#/remove/0xe9e7cea3dedca5984780bafc599bd69add087d56/0x26a5dfab467d4f58fb266648cae769503cec9580', + createdAt: 1614906937, + }, + { + id: 'soup-soup-bnb-eol', + logo: 'degens/SOUP-BNB.svg', + name: 'SOUP-BNB LP', + token: 'SOUP-BNB LP', + tokenDescription: 'PancakeSwap (Soup)', + tokenAddress: '0x284A5D8712C351Ca28417d131003120808dcE48B', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSoupSoup-BNB', + earnedTokenAddress: '0xDB89f01094c6e882d06aBC724aEBc7d15036fe14', + earnContractAddress: '0xDB89f01094c6e882d06aBC724aEBc7d15036fe14', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'soup-soup-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['SOUP', 'BNB'], + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x94F559aE621F1c810F31a6a620Ad7376776fe09E', + createdAt: 1614849256, + }, + { + id: 'soup-soups-bnb-eol', + logo: 'degens/SOUPS-BNB.svg', + name: 'SOUPS-BNB LP', + token: 'SOUPS-BNB LP', + tokenDescription: 'PancakeSwap (Soup)', + tokenAddress: '0x6304Ae062c6bDf3D24Ac86374C7019A025443247', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSoupSoups-BNB', + earnedTokenAddress: '0xe698edcC279f68c2c37f5c122a26faBd5f6D98A3', + earnContractAddress: '0xe698edcC279f68c2c37f5c122a26faBd5f6D98A3', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'soup-soups-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['SOUPS', 'BNB'], + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x69f27e70e820197a6e495219d9ac34c8c6da7eee', + createdAt: 1614853224, + }, + { + id: 'cake-bmxx-bnb', + logo: 'bnb-pairs/BMXX-BNB.svg', + name: 'BMXX-BNB LP', + token: 'BMXX-BNB LP', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x4D5aA94Ce6BbB1BC4eb73207a5a5d4D052cFcD67', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPancakeBMXX-BNB', + earnedTokenAddress: '0xE7DCEFacf1c9c523c1ccCc3Fc1Ae3EB654a4e805', + earnContractAddress: '0xE7DCEFacf1c9c523c1ccCc3Fc1Ae3EB654a4e805', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cake-bmxx-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['BMXX', 'BNB'], + removeLiquidityUrl: + 'https://v1exchange.pancakeswap.finance/#/remove/BNB/0x4131b87f74415190425ccd873048c708f8005823', + createdAt: 1614694792, + }, + { + id: '1inch-1inch-bnb-eol', + logo: 'single-assets/INCH.png', + name: '1INCH-BNB LP', + token: '1INCH-BNB LP', + tokenDescription: '1Inch', + tokenAddress: '0xdaF66c0B7e8E2FC76B15B07AD25eE58E04a66796', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'moo1INCH1INCH-BNB', + earnedTokenAddress: '0x2139E4CaDA8438a41F4009ff07D09Db29A62De04', + earnContractAddress: '0x2139E4CaDA8438a41F4009ff07D09Db29A62De04', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: '1inch-1inch-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['1INCH', 'BNB'], + addLiquidityUrl: + 'https://1inch.exchange/#/dao/pools?network=56&token0=0x0000000000000000000000000000000000000000&token1=0x111111111117dc0aa78b770fa6a738034120c302', + buyTokenUrl: + 'https://1inch.exchange/#/r/0xF4cb25a1FF50E319c267b3E51CBeC2699FB2A43B/BNB/1INCH/?network=56', + createdAt: 1614690289, + }, + { + id: 'cake-iotx-busd', + logo: 'busd-pairs/IOTX-BUSD.svg', + name: 'IOTX-BUSD LP', + token: 'IOTX-BUSD LP', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x36B8B28D37f93372188F2aa2507b68A5CD8b2664', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPancakeIOTX-BUSD', + earnedTokenAddress: '0x8a27f380626CAc25DF8D3Ea50Ed1fd7Db882e653', + earnContractAddress: '0x8a27f380626CAc25DF8D3Ea50Ed1fd7Db882e653', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cake-iotx-busd', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['IOTX', 'BUSD'], + removeLiquidityUrl: + 'https://v1exchange.pancakeswap.finance/#/remove/0xe9e7cea3dedca5984780bafc599bd69add087d56/0x9678e42cebeb63f23197d726b29b1cb20d0064e5', + createdAt: 1614727665, + }, + { + id: 'cake-lina-busd', + logo: 'busd-pairs/LINA-BUSD.svg', + name: 'LINA-BUSD LP', + token: 'LINA-BUSD LP', + tokenDescription: 'PancakeSwap', + tokenAddress: '0xeB325a8ea1c5abf40c7ceAf645596c1F943d0948', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPancakeLINA-BUSD', + earnedTokenAddress: '0x310DF4c1DD93337A165AeF8e3d45A770CaaDe3b6', + earnContractAddress: '0x310DF4c1DD93337A165AeF8e3d45A770CaaDe3b6', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cake-lina-busd', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['LINA', 'BUSD'], + removeLiquidityUrl: + 'https://v1exchange.pancakeswap.finance/#/remove/0xe9e7cea3dedca5984780bafc599bd69add087d56/0x762539b45a1dcce3d36d080f74d1aed37844b878', + createdAt: 1614727590, + }, + { + id: 'cake-dai-busd', + logo: 'busd-pairs/DAI-BUSD.svg', + name: 'DAI-BUSD LP', + token: 'DAI-BUSD LP', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x3aB77e40340AB084c3e23Be8e5A6f7afed9D41DC', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPancakeDAI-BUSD', + earnedTokenAddress: '0xE372825C7b436244Cd5fA79cAa16e4Cc3091D4B0', + earnContractAddress: '0xE372825C7b436244Cd5fA79cAa16e4Cc3091D4B0', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cake-dai-busd', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['DAI', 'BUSD'], + removeLiquidityUrl: + 'https://v1exchange.pancakeswap.finance/#/remove/0xe9e7cea3dedca5984780bafc599bd69add087d56/0x1af3f329e8be154074d8769d1ffa4ee058b1dbc3', + createdAt: 1614726127, + }, + { + id: 'sponge-steam-bnb-eol', + logo: 'bnb-pairs/STEAM-BNB.svg', + name: 'STEAM-BNB LP', + token: 'STEAM-BNB LP', + tokenDescription: 'Sponge', + tokenAddress: '0x5e797B329e6B82b62442477D976a56864AE4396e', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSpongeSTEAM-BNB', + earnedTokenAddress: '0x04D0bE0169694ca083996899a14752c82A953D22', + earnContractAddress: '0x04D0bE0169694ca083996899a14752c82A953D22', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'sponge-steam-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['STEAM', 'BNB'], + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x072e3d0d4f14dd82a16b0a33678c6104e9009ed9', + createdAt: 1614451674, + }, + { + id: 'salt-salt-busd-eol', + logo: 'degens/salt-busd.png', + name: 'SALT-BUSD LP', + token: 'SALT-BUSD LP', + tokenDescription: 'SaltSwap', + tokenAddress: '0x6596f770786915556C47E301cC8290aa14288d99', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSaltSalt-BUSD', + earnedTokenAddress: '0x62ad4253FB38265Da05eb389ac547F1B2c09a689', + earnContractAddress: '0x62ad4253FB38265Da05eb389ac547F1B2c09a689', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'salt-salt-busd', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['SALT', 'BUSD'], + addLiquidityUrl: + 'https://exchange.saltswap.finance/#/add/0xe9e7cea3dedca5984780bafc599bd69add087d56/0x2849b1ae7e04a3d9bc288673a92477cf63f28af4', + buyTokenUrl: + 'https://exchange.saltswap.finance/#/swap?inputCurrency=0xcc2E12a9b5b75360c6FBf23B584c275D52cDdb0&outputCurrency=0x2849b1ae7e04a3d9bc288673a92477cf63f28af4', + createdAt: 1614669316, + retiredReason: 'tvl', + }, + { + id: 'salt-salt-bnb-eol', + logo: 'degens/salt-bnb.png', + name: 'SALT-BNB LP', + token: 'SALT-BNB LP', + tokenDescription: 'SaltSwap', + tokenAddress: '0x6284B49544c8900B4612f8450DCE8D484E5c2631', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSaltSalt-BNB', + earnedTokenAddress: '0x57e07d6958fd38AA2f46699744e322d3fB3db60f', + earnContractAddress: '0x57e07d6958fd38AA2f46699744e322d3fB3db60f', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'salt-salt-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['SALT', 'BNB'], + addLiquidityUrl: + 'https://exchange.saltswap.finance/#/add/BNB/0x2849b1ae7e04a3d9bc288673a92477cf63f28af4', + buyTokenUrl: + 'https://exchange.saltswap.finance/#/swap?inputCurrency=ETH&outputCurrency=0x2849b1ae7e04a3d9bc288673a92477cf63f28af4', + createdAt: 1614674680, + retiredReason: 'tvl', + }, + { + id: 'cake-sushi-eth', + logo: 'uncategorized/SUSHI-ETH.svg', + name: 'SUSHI-ETH LP', + token: 'SUSHI-ETH LP', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x17580340F3dAEDAE871a8C21D15911742ec79e0F', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPancakeSUSHI-ETH', + earnedTokenAddress: '0x07622B8cF9130934643522E7c9D621707EF1d34F', + earnContractAddress: '0x07622B8cF9130934643522E7c9D621707EF1d34F', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cake-sushi-eth', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['SUSHI', 'ETH'], + removeLiquidityUrl: + 'https://v1exchange.pancakeswap.finance/#/remove/0x2170ed0880ac9a755fd29b2688956bd959f933f8/0x947950bcc74888a40ffa2593c5798f11fc9124c4', + createdAt: 1614355685, + }, + { + id: 'crow-crow-busd', + logo: 'crow/crow.png', + name: 'CROW-BUSD LP', + token: 'CROW-BUSD LP', + tokenDescription: 'PancakeSwap (Crow)', + tokenAddress: '0xEC3B97802FB4883FdB7bf70f0924Bf5EE0520cDE', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCrowCROW-BUSD', + earnedTokenAddress: '0x39C803716F67D6d4b190E633a961bF3503b8444E', + earnContractAddress: '0x39C803716F67D6d4b190E633a961bF3503b8444E', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'crow-crow-busd', + oraclePrice: 0, + depositsPaused: false, + status: 'eol', + platform: 'Other', + assets: ['CROW', 'BUSD'], + buyTokenUrl: + 'https://pancakeswap.finance/swap?inputCurrency=0xcc2E12a9b5b75360c6FBf23B584c275D52cDdb0&outputCurrency=0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56', + createdAt: 1614530571, + }, + { + id: 'crow-crow-bnb', + logo: 'crow/crow.png', + name: 'CROW-BNB LP', + token: 'CROW-BNB LP', + tokenDescription: 'PancakeSwap (Crow)', + tokenAddress: '0x74d2a66650bbd8027Fd1F4A3454a16D75A05cc14', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCrowCROW-BNB', + earnedTokenAddress: '0xbD701BC24485Ebfd3680285fB152509637Ab8ad4', + earnContractAddress: '0xbD701BC24485Ebfd3680285fB152509637Ab8ad4', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'crow-crow-bnb', + oraclePrice: 0, + depositsPaused: false, + status: 'eol', + platform: 'Other', + assets: ['CROW', 'BNB'], + buyTokenUrl: + 'https://pancakeswap.finance/swap?inputCurrency=BNB&outputCurrency=0xcc2E12a9b5b75360c6FBf23B584c275D52cDdb0E', + createdAt: 1614529623, + }, + { + id: 'ramen-ramen-bnb-eol', + logo: 'degens/ramen-bnb.svg', + name: 'RAMEN-BNB LP', + token: 'RAMEN-BNB LP', + tokenDescription: 'RamenSwap', + tokenAddress: '0x82f504D655ec6dbA8d5eBbd0036a908A719A295f', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooRamenRamen-BNB', + earnedTokenAddress: '0x42b41189e9B371B7952b77aE791FE25E78D22681', + earnContractAddress: '0x42b41189e9B371B7952b77aE791FE25E78D22681', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'ramen-ramen-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'tvl', + platform: 'Other', + assets: ['RAMEN', 'BNB'], + addLiquidityUrl: + 'https://exchange.ramenswap.finance/#/add/ETH/0x4F47A0d15c1E53F3d94c069C7D16977c29F9CB6B', + buyTokenUrl: + 'https://exchange.ramenswap.finance/#/swap?outputCurrency=0x4F47A0d15c1E53F3d94c069C7D16977c29F9CB6B', + createdAt: 1614171311, + }, + { + id: 'ramen-ramen-busd-eol', + logo: 'degens/ramen-busd.svg', + name: 'RAMEN-BUSD LP', + token: 'RAMEN-BUSD LP', + tokenDescription: 'RamenSwap', + tokenAddress: '0x04F81B56B6947Cd0fD35fbea570fc09d1b946C56', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooRamenRamen-BUSD', + earnedTokenAddress: '0x605d96De6068f08489392a35E9DBE90201574bbC', + earnContractAddress: '0x605d96De6068f08489392a35E9DBE90201574bbC', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'ramen-ramen-busd', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['RAMEN', 'BUSD'], + addLiquidityUrl: + 'https://exchange.ramenswap.finance/#/add/0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56/0x4F47A0d15c1E53F3d94c069C7D16977c29F9CB6B', + buyTokenUrl: + 'https://exchange.ramenswap.finance/#/swap?inputCurrency=0x4F47A0d15c1E53F3d94c069C7D16977c29F9CB6B&outputCurrency=0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56', + createdAt: 1614173476, + retiredReason: 'tvl', + }, + { + id: 'cafe-brew-busd', + logo: 'degens/brew-busd.svg', + name: 'BREW-BUSD LP', + token: 'BREW-BUSD LP', + tokenDescription: 'CafeSwap', + tokenAddress: '0x1FD9Af4999De0d61c2a6CBD3d4892b675a082999', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCafeBREW-BUSD', + earnedTokenAddress: '0x10120B5550214ab9451B9B00e4f78e82C02D6482', + earnContractAddress: '0x10120B5550214ab9451B9B00e4f78e82C02D6482', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cafe-brew-busd', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['BREW', 'BUSD'], + removeLiquidityUrl: + 'https://exchange.cafeswap.finance/#/remove/0x790Be81C3cA0e53974bE2688cDb954732C9862e1/0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56', + createdAt: 1614063926, + }, + { + id: 'cafe-bifi-bnb', + logo: 'degens/BIFI-BNB.svg', + name: 'BIFI-BNB LP', + token: 'BIFI-BNB LP', + tokenDescription: 'CafeSwap', + tokenAddress: '0xd132D2C24F29EE8ABb64a66559d1b7aa627Bd7fD', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCafeBIFI-BNB', + earnedTokenAddress: '0x8afc0f9BdC5DcA9f0408Df03A03520bFa98A15aF', + earnContractAddress: '0x8afc0f9BdC5DcA9f0408Df03A03520bFa98A15aF', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cafe-bifi-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['BIFI', 'BNB'], + removeLiquidityUrl: + 'https://exchange.cafeswap.finance/#/remove/0xCa3F508B8e4Dd382eE878A314789373D80A5190A/0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c', + createdAt: 1614452547, + }, + { + id: 'cake-bry-bnb', + logo: 'bnb-pairs/BRY-BNB.svg', + name: 'BRY-BNB LP', + token: 'BRY-BNB LP', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x5E3CD27F36932Bc0314aC4e2510585798C34a2fC', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPancakeBRYBNB', + earnedTokenAddress: '0x578C066b5c7289f8Ba7c4DB43c110F19D7c51E03', + earnContractAddress: '0x578C066b5c7289f8Ba7c4DB43c110F19D7c51E03', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cake-bry-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['BRY', 'BNB'], + removeLiquidityUrl: + 'https://v1exchange.pancakeswap.finance/#/remove/BNB/0xf859Bf77cBe8699013d6Dbc7C2b926Aaf307F830', + createdAt: 1613506147, + }, + { + id: 'cake-zee-bnb', + logo: 'bnb-pairs/ZEE-BNB.svg', + name: 'ZEE-BNB LP', + token: 'ZEE-BNB LP', + tokenDescription: 'PancakeSwap', + tokenAddress: '0xB5Ab3996808c7e489DCDc0f1Af2AB212ae0059aF', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPancakeZEEBNB', + earnedTokenAddress: '0x29C4C22eC7dF7e936Cb3e6C4A7E5eAE751C7d86B', + earnContractAddress: '0x29C4C22eC7dF7e936Cb3e6C4A7E5eAE751C7d86B', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cake-zee-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['ZEE', 'BNB'], + removeLiquidityUrl: + 'https://v1exchange.pancakeswap.finance/#/remove/BNB/0x44754455564474a89358b2c2265883df993b12f0', + createdAt: 1613499567, + }, + { + id: 'cake-dodo-bnb', + logo: 'bnb-pairs/DODO-BNB.svg', + name: 'DODO-BNB LP', + token: 'DODO-BNB LP', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x9e642d174B14fAEa31D842Dc83037c42b53236E6', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPancakeDODO-BNB', + earnedTokenAddress: '0x00AeC34489A7ADE91A0507B6b9dBb0a50938B7c0', + earnContractAddress: '0x00AeC34489A7ADE91A0507B6b9dBb0a50938B7c0', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cake-dodo-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['DODO', 'BNB'], + removeLiquidityUrl: + 'https://v1exchange.pancakeswap.finance/#/remove/BNB/0x67ee3cb086f8a16f34bee3ca72fad36f7db929e2', + createdAt: 1614195621, + }, + { + id: 'cake-swingby-bnb', + logo: 'bnb-pairs/SWINGBY-BNB.svg', + name: 'SWINGBY-BNB LP', + token: 'SWINGBY-BNB LP', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x4576C456AF93a37a096235e5d83f812AC9aeD027', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPancakeSWINGBY-BNB', + earnedTokenAddress: '0xc1C1eB984218B9570beA53C0Dad14283a6E9E81C', + earnContractAddress: '0xc1C1eB984218B9570beA53C0Dad14283a6E9E81C', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cake-swingby-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['SWINGBY', 'BNB'], + removeLiquidityUrl: + 'https://v1exchange.pancakeswap.finance/#/remove/BNB/0x71de20e0c4616e7fcbfdd3f875d568492cbe4739', + createdAt: 1614193328, + }, + { + id: 'kebab-usdt-busd', + logo: 'kebab/USDT-BUSD.png', + name: 'USDT-BUSD LP', + token: 'USDT-BUSD LP', + tokenDescription: 'Kebab', + tokenAddress: '0xc15fa3E22c912A276550F3E5FE3b0Deb87B55aCd', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooKebabUSDT-BUSD', + earnedTokenAddress: '0x9dc7d9c4488223c0Ad50F0AE742D80AE1abEc859', + earnContractAddress: '0x9dc7d9c4488223c0Ad50F0AE742D80AE1abEc859', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'kebab-usdt-busd', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Kebab', + assets: ['USDT', 'BUSD'], + addLiquidityUrl: + 'https://swap.kebabfinance.com/#/add/0x55d398326f99059ff775485246999027b3197955/0xe9e7cea3dedca5984780bafc599bd69add087d56', + buyTokenUrl: + 'https://swap.kebabfinance.com/#/swap?inputCurrency=0x55d398326f99059ff775485246999027b3197955&outputCurrency=0xe9e7cea3dedca5984780bafc599bd69add087d56', + createdAt: 1614374598, + }, + { + id: 'kebab-eth-btcb', + logo: 'kebab/ETH-BTCB.png', + name: 'ETH-BTCB LP', + token: 'ETH-BTCB LP', + tokenDescription: 'Kebab', + tokenAddress: '0x7380E10F5C5f9DFF4857de3cf9c39Bb16F4C6dcf', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooKebabETH-BTCB', + earnedTokenAddress: '0x70CBc8B3a74A857056a6acE7e994229A24D4ab94', + earnContractAddress: '0x70CBc8B3a74A857056a6acE7e994229A24D4ab94', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'kebab-eth-btcb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Kebab', + assets: ['ETH', 'BTCB'], + addLiquidityUrl: + 'https://swap.kebabfinance.com/#/add/0x7130d2a12b9bcbfae4f2634d864a1ee1ce3ead9c/0x2170ed0880ac9a755fd29b2688956bd959f933f8', + buyTokenUrl: + 'https://swap.kebabfinance.com/#/swap?inputCurrency=0x7130d2a12b9bcbfae4f2634d864a1ee1ce3ead9c&outputCurrency=0x2170ed0880ac9a755fd29b2688956bd959f933f8', + createdAt: 1614171440, + }, + { + id: 'monster-msc-busd', + logo: 'single-assets/MSC.png', + name: 'MSC-BUSD LP', + token: 'MSC-BUSD LP', + tokenDescription: 'PancakeSwap (Monster)', + tokenAddress: '0xbCbF0C95C94798fFEF0e71A087a7E98F29D5C0Ee', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooMonsterMSC-BUSD', + earnedTokenAddress: '0x1d9a453FCe2AC7b92FBe7b33BdC40F6e7aE14F47', + earnContractAddress: '0x1d9a453FCe2AC7b92FBe7b33BdC40F6e7aE14F47', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'monster-msc-busd', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['MSC', 'BUSD'], + buyTokenUrl: + 'https://pancakeswap.finance/swap?inputCurrency=0x8C784C49097Dcc637b93232e15810D53871992BF&outputCurrency=0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56', + createdAt: 1612353483, + }, + { + id: 'monster-msc-bnb', + logo: 'single-assets/MSC.png', + name: 'MSC-BNB LP', + token: 'MSC-BNB LP', + tokenDescription: 'PancakeSwap (Monster)', + tokenAddress: '0x981DB69F2F2F96e0f08D6519BEFDa0B927C22190', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooMonsterMSC-BNB', + earnedTokenAddress: '0x0F88Ce20f8af6D4c51b635BFBd8DFa03f2a36ACa', + earnContractAddress: '0x0F88Ce20f8af6D4c51b635BFBd8DFa03f2a36ACa', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'monster-msc-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['MSC', 'BNB'], + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x8C784C49097Dcc637b93232e15810D53871992BF', + createdAt: 1613998911, + }, + { + id: 'cake-bts-busd-eol', + logo: 'single-assets/BTS.png', + name: 'BTS-BUSD LP', + token: 'BTS-BUSD LP', + tokenDescription: 'PancakeSwap (Bolt)', + tokenAddress: '0xE86493D416EEB7800F08787de759d179B61dB921', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBoltDollarBTS-BUSD', + earnedTokenAddress: '0x6b40106ebEDaA719B14cfbA606b89954EaeeaE9D', + earnContractAddress: '0x6b40106ebEDaA719B14cfbA606b89954EaeeaE9D', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cake-bts-busd', + oraclePrice: 0, + depositsPaused: true, + retireReason: 'rewards', + status: 'eol', + platform: 'Other', + assets: ['BTS', 'BUSD'], + buyTokenUrl: + 'https://pancakeswap.finance/swap?inputCurrency=0xc2e1acef50ae55661855e8dcb72adb182a3cc259&outputCurrency=0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56', + createdAt: 1613435149, + }, + { + id: 'cake-btd-busd-eol', + logo: 'single-assets/BTD.png', + name: 'BTD-BUSD LP', + token: 'BTD-BUSD LP', + tokenDescription: 'PancakeSwap (Bolt)', + tokenAddress: '0xebaaA639a55ecBEbAC4D7D43A5A6D7C5c1216A09', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBoltDollarBTD-BUSD', + earnedTokenAddress: '0x0D3837E00C47353e68680C39e6DA6B5b08fE6897', + earnContractAddress: '0x0D3837E00C47353e68680C39e6DA6B5b08fE6897', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cake-btd-busd', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['BTD', 'BUSD'], + retireReason: 'tvl', + buyTokenUrl: + 'https://pancakeswap.finance/swap?inputCurrency=0xD1102332a213E21faF78B69C03572031F3552c33&outputCurrency=0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56', + createdAt: 1613429530, + }, + { + id: 'auto-btc-eol', + logo: 'single-assets/BTCB.svg', + name: 'BTCB', + token: 'BTCB', + tokenDescription: 'Venus (Autofarm)', + tokenAddress: '0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooAutoBtc', + earnedTokenAddress: '0xFf750EE63F1E428De1D6C8D9d92676b5FC8376A8', + earnContractAddress: '0xFf750EE63F1E428De1D6C8D9d92676b5FC8376A8', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'BTCB', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['BTCB'], + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x7130d2a12b9bcbfae4f2634d864a1ee1ce3ead9c', + createdAt: 1613659177, + }, + { + id: 'auto-eth-eol', + logo: 'single-assets/ETH.svg', + name: 'ETH', + token: 'ETH', + tokenDescription: 'Venus (Autofarm)', + tokenAddress: '0x2170Ed0880ac9A755fd29B2688956BD959F933F8', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooAutoEth', + earnedTokenAddress: '0x0a406FCBEA86aC57ACcc812E8F1B509acE5E054c', + earnContractAddress: '0x0a406FCBEA86aC57ACcc812E8F1B509acE5E054c', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'ETH', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['ETH'], + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x2170ed0880ac9a755fd29b2688956bd959f933f8', + createdAt: 1613659231, + }, + { + id: 'auto-busd-eol', + logo: 'single-assets/BUSD.svg', + name: 'BUSD', + token: 'BUSD', + tokenDescription: 'Venus (Autofarm)', + tokenAddress: '0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooAutoBusdFixed', + earnedTokenAddress: '0x559C88946e1958812dCfD8edd4f89B0C7d811F74', + earnContractAddress: '0x559C88946e1958812dCfD8edd4f89B0C7d811F74', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'BUSD', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['BUSD'], + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0xe9e7cea3dedca5984780bafc599bd69add087d56', + createdAt: 1613659056, + }, + { + id: 'auto-usdt-eol', + logo: 'single-assets/USDT.svg', + name: 'USDT', + token: 'USDT', + tokenDescription: 'Venus (Autofarm)', + tokenAddress: '0x55d398326f99059fF775485246999027B3197955', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooAutoUsdt', + earnedTokenAddress: '0x58327471A57EE89Aa4b91753fF9E09f7291236C7', + earnContractAddress: '0x58327471A57EE89Aa4b91753fF9E09f7291236C7', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'USDT', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['USDT'], + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x55d398326f99059ff775485246999027b3197955', + createdAt: 1613659295, + }, + { + id: 'kebab-kebab-btc-eol', + logo: 'kebab/KEBAB-BTCB.png', + name: 'KEBAB-BTCB LP', + token: 'KEBAB-BTCB LP', + tokenDescription: 'Kebab', + tokenAddress: '0x45D8D5d9bD425Efc26e3259848BCFEfA16F927F0', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooKebabKEBAB-BTCB', + earnedTokenAddress: '0x02a77B01BE5BB6a73b70E2b5615694F71a2c4F41', + earnContractAddress: '0x02a77B01BE5BB6a73b70E2b5615694F71a2c4F41', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'kebab-kebab-btc', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Kebab', + assets: ['KEBAB', 'BTCB'], + addLiquidityUrl: + 'https://swap.kebabfinance.com/#/add/0x7979f6c54eba05e18ded44c4f986f49a5de551c2/0x7130d2a12b9bcbfae4f2634d864a1ee1ce3ead9c', + buyTokenUrl: + 'https://swap.kebabfinance.com/#/swap?inputCurrency=0x7130d2a12b9bcbfae4f2634d864a1ee1ce3ead9c&outputCurrency=0x7979f6c54eba05e18ded44c4f986f49a5de551c2', + createdAt: 1613582986, + retiredReason: 'tvl', + }, + { + id: 'cake-swgb-bnb', + logo: 'bnb-pairs/SWGB-BNB.svg', + name: 'SWGB-BNB LP', + token: 'SWGB-BNB LP', + tokenDescription: 'PancakeSwap', + tokenAddress: '0xC1800c29CF91954357cd0bf3f0accAADa3D0109c', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPancakeSWGB-BNB', + earnedTokenAddress: '0xed324b068e31c6fB7C7921e79E54d95B1Ca9d759', + earnContractAddress: '0xed324b068e31c6fB7C7921e79E54d95B1Ca9d759', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cake-swgb-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['SWGB', 'BNB'], + removeLiquidityUrl: + 'https://v1exchange.pancakeswap.finance/#/remove/BNB/0xe40255c5d7fa7ceec5120408c78c787cecb4cfdb', + createdAt: 1613228660, + }, + { + id: 'cake-lit-bnb', + logo: 'bnb-pairs/LIT-BNB.svg', + name: 'LIT-BNB LP', + token: 'LIT-BNB LP', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x60bB03D1010b99CEAdD0dd209b64bC8bd83da161', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPancakeLIT-BNB', + earnedTokenAddress: '0x747f66e2Ab1b887a2207e15ADb7f9dAB79D9EAcf', + earnContractAddress: '0x747f66e2Ab1b887a2207e15ADb7f9dAB79D9EAcf', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cake-lit-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['LIT', 'BNB'], + removeLiquidityUrl: + 'https://v1exchange.pancakeswap.finance/#/remove/BNB/0xb59490aB09A0f526Cc7305822aC65f2Ab12f9723', + createdAt: 1613228585, + }, + { + id: 'kebab-bifi-busd', + logo: 'busd-pairs/BIFI-BUSD.png', + name: 'BIFI-BUSD LP', + token: 'BIFI-BUSD LP', + tokenDescription: 'Kebab', + tokenAddress: '0xd3F004E303114423f122c78AFDeD4AcfE97675B1', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooKebabBIFI-BUSD', + earnedTokenAddress: '0x9c1630eA66310fA03D756FBd92B68a1f08c487b6', + earnContractAddress: '0x9c1630eA66310fA03D756FBd92B68a1f08c487b6', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'kebab-bifi-busd', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Kebab', + assets: ['BIFI', 'BUSD'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://swap.kebabfinance.com/#/add/0xCa3F508B8e4Dd382eE878A314789373D80A5190A/0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56', + buyTokenUrl: + 'https://swap.kebabfinance.com/#/swap?inputCurrency=0xCa3F508B8e4Dd382eE878A314789373D80A5190A', + createdAt: 1613176028, + }, + { + id: 'cake-ditto-bnb', + logo: 'bnb-pairs/DITTO-BNB.svg', + name: 'DITTO-BNB LP', + token: 'DITTO-BNB LP', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x470BC451810B312BBb1256f96B0895D95eA659B1', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPancakeDITTO-BNB', + earnedTokenAddress: '0x8FF55869e05492c127cEEc6A400D7e3803fC44E1', + earnContractAddress: '0x8FF55869e05492c127cEEc6A400D7e3803fC44E1', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cake-ditto-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['DITTO', 'BNB'], + removeLiquidityUrl: + 'https://v1exchange.pancakeswap.finance/#/remove/BNB/0x233d91a0713155003fc4dce0afa871b508b3b715', + createdAt: 1612978544, + }, + { + id: 'auto-cake-old-eol', + logo: 'single-assets/SMART.png', + name: 'CAKE', + token: 'CAKE', + tokenDescription: 'Venus (Autofarm)', + tokenAddress: '0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooAutoCake', + earnedTokenAddress: '0x895CF1E805cBd86355caC101aE9B252c806Dc59b', + earnContractAddress: '0x895CF1E805cBd86355caC101aE9B252c806Dc59b', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'Cake', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['CAKE'], + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x0e09fabb73bd3ade0a17ecc321fd13a19e81ce82', + createdAt: 1613055503, + }, + { + id: 'auto-busd-old-eol', + logo: 'single-assets/BUSD.svg', + name: 'BUSD', + token: 'BUSD', + tokenDescription: 'Venus (Autofarm)', + tokenAddress: '0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooAutoBusd', + earnedTokenAddress: '0xBd198f5132631e597518529268000A0199f07492', + earnContractAddress: '0xBd198f5132631e597518529268000A0199f07492', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'BUSD', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['BUSD'], + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0xe9e7cea3dedca5984780bafc599bd69add087d56', + createdAt: 1613055197, + }, + { + id: 'sponge-sponge-bnb-eol', + logo: 'bnb-pairs/SPG-BNB.svg', + name: 'SPG-BNB LP', + token: 'SPG-BNB LP', + tokenDescription: 'Sponge', + tokenAddress: '0xBB74572F3C00B4d18fAbeADb7d5984D7b3AE05d1', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSpongeSPG-BNB', + earnedTokenAddress: '0x1B3564F698988804b5D05a2C10B1d71bE051662F', + earnContractAddress: '0x1B3564F698988804b5D05a2C10B1d71bE051662F', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'sponge-sponge-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['SPG', 'BNB'], + addLiquidityUrl: + 'https://swap.sponge.finance/#/add/BNB/0x3aabcf53a1930a42e18d938c019e83ebee50a849', + buyTokenUrl: + 'https://swap.sponge.finance/#/swap?outputCurrency=0x3aabcf53a1930a42e18d938c019e83ebee50a849', + createdAt: 1612829714, + }, + { + id: 'sponge-soak-bnb-eol', + logo: 'bnb-pairs/SOAK-BNB.svg', + name: 'SOAK-BNB LP', + token: 'SOAK-BNB LP', + tokenDescription: 'Sponge', + tokenAddress: '0xc8FCBA816eF9B0c5bc03d9178CfCc7EF785B4f2f', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSpongeSOAK-BNB', + earnedTokenAddress: '0xE035Dce0E345Cbd46F3c0dCBf602f96c5F741813', + earnContractAddress: '0xE035Dce0E345Cbd46F3c0dCBf602f96c5F741813', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'sponge-soak-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['SOAK', 'BNB'], + addLiquidityUrl: + 'https://swap.sponge.finance/#/add/BNB/0x849233ff1aea15d80ef658b2871664c9ca994063', + buyTokenUrl: + 'https://swap.sponge.finance/#/swap?outputCurrency=0x849233ff1aea15d80ef658b2871664c9ca994063', + createdAt: 1612829132, + }, + { + id: 'cake-sfp-bnb', + logo: 'bnb-pairs/SFP-BNB.svg', + name: 'SFP-BNB LP', + token: 'SFP-BNB LP', + tokenDescription: 'PancakeSwap', + tokenAddress: '0xcBe2cF3bd012e9C1ADE2Ee4d41DB3DaC763e78F3', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPancakeSFP-BNB', + earnedTokenAddress: '0xCa38d57755f29c9ad17AbB1A6ae059DdAD913A0e', + earnContractAddress: '0xCa38d57755f29c9ad17AbB1A6ae059DdAD913A0e', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cake-sfp-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['SFP', 'BNB'], + removeLiquidityUrl: + 'https://v1exchange.pancakeswap.finance/#/remove/BNB/0xd41fdb03ba84762dd66a0af1a6c8540ff1ba5dfb', + createdAt: 1612804452, + }, + { + id: 'nyacash-nyas-usdt', + logo: 'single-assets/NYAS.png', + name: 'NYAS-USDT NYAN-LP', + token: 'NYAS-USDT NYAN-LP', + tokenDescription: 'Nyanswop', + tokenAddress: '0xd3179b44548f3309622B4F966503C1143e8840Ca', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooNyacashNYAS-BNB', + earnedTokenAddress: '0x5ee82A50D1C7a1B599a5d4DA2f54AdB0d7a497a6', + earnContractAddress: '0x5ee82A50D1C7a1B599a5d4DA2f54AdB0d7a497a6', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'nyanswop-nyas-usdt', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['NYAS', 'USDT'], + createdAt: 1612710035, + }, + { + id: 'monster-mss-busd', + logo: 'single-assets/MSS.png', + name: 'MSS-BUSD LP', + token: 'MSS-BUSD LP', + tokenDescription: 'PancakeSwap (Monster)', + tokenAddress: '0x73601076A92E0D1bD81737B38B150D6842aa1aA1', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooMonsterMSS-BUSD', + earnedTokenAddress: '0x3B6C7bC3BE5C60c875cF415A97e6539cC28ECa32', + earnContractAddress: '0x3B6C7bC3BE5C60c875cF415A97e6539cC28ECa32', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'monster-mss-busd', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['MSS', 'BUSD'], + buyTokenUrl: + 'https://pancakeswap.finance/swap?inputCurrency=0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56&outputCurrency=0xacabd3f9b8f76ffd2724604185fa5afa5df25ac6', + createdAt: 1612354467, + }, + { + id: 'jul-juld', + logo: 'single-assets/JULD.png', + name: 'JULD', + token: 'JULD', + tokenDescription: 'JulSwap', + tokenAddress: '0x5A41F637C3f7553dBa6dDC2D3cA92641096577ea', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooJulJULD', + earnedTokenAddress: '0x90d8AB2731f937f9ec98d0bbe6D4CBD4D95473db', + earnContractAddress: '0x90d8AB2731f937f9ec98d0bbe6D4CBD4D95473db', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'JULD', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['JulD'], + buyTokenUrl: + 'https://julswap.com/#/swap?inputCurrency=BNB&outputCurrency=0x5a41f637c3f7553dba6ddc2d3ca92641096577ea', + createdAt: 1612545332, + }, + { + id: 'cake-bdo-bnb', + logo: 'single-assets/BDO.png', + name: 'BDO-BNB LP', + token: 'BDO-BNB LP', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x74690f829fec83ea424ee1F1654041b2491A7bE9', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPancakeBDO-BNB', + earnedTokenAddress: '0x48Cb3540CB0BB4C6dDF638209e0631Ec85c1a477', + earnContractAddress: '0x48Cb3540CB0BB4C6dDF638209e0631Ec85c1a477', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cake-bdo-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['BDO', 'BNB'], + removeLiquidityUrl: + 'https://v1exchange.pancakeswap.finance/#/remove/BNB/0x190b589cf9fb8ddeabbfeae36a813ffb2a702454', + createdAt: 1612278503, + }, + { + id: 'kebab-kebab-eol', + logo: 'single-assets/KEBAB.png', + name: 'KEBAB', + token: 'KEBAB', + tokenDescription: 'Kebab', + tokenAddress: '0x7979F6C54ebA05E18Ded44C4F986F49a5De551c2', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooKebab', + earnedTokenAddress: '0xE2231D4ca4921Cb35680bac714C9d40C8d217494', + earnContractAddress: '0xE2231D4ca4921Cb35680bac714C9d40C8d217494', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'KEBAB', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Kebab', + assets: ['KEBAB'], + buyTokenUrl: + 'https://swap.kebabfinance.com/#/swap?outputCurrency=0x7979f6c54eba05e18ded44c4f986f49a5de551c2', + createdAt: 1611760317, + retiredReason: 'tvl', + }, + { + id: 'kebab-kebab-busd-eol', + logo: 'busd-pairs/KEBAB-BUSD.png', + name: 'KEBAB-BUSD LP', + token: 'KEBAB-BUSD LP', + tokenDescription: 'Kebab', + tokenAddress: '0xD51bee2E0A3886289F6D229b6f30c0C2b34fC0Ec', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooKebabKEBAB-BUSD', + earnedTokenAddress: '0xF0A7626eCcBee00aF144BB1f77CD187AF85BBf41', + earnContractAddress: '0xF0A7626eCcBee00aF144BB1f77CD187AF85BBf41', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'kebab-kebab-busd', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Kebab', + assets: ['KEBAB', 'BUSD'], + addLiquidityUrl: + 'https://swap.kebabfinance.com/#/add/0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56/0x7979f6c54eba05e18ded44c4f986f49a5de551c2', + buyTokenUrl: + 'https://swap.kebabfinance.com/#/swap?inputCurrency=0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56&outputCurrency=0x7979f6c54eba05e18ded44c4f986f49a5de551c2', + createdAt: 1611764741, + retiredReason: 'tvl', + }, + { + id: 'kebab-kebab-bnb-eol', + logo: 'bnb-pairs/KEBAB-BNB.png', + name: 'KEBAB-BNB LP', + token: 'KEBAB-BNB LP', + tokenDescription: 'Kebab', + tokenAddress: '0x25fd42D82d5c238ee7AA277261AA6CA5BDFE5CD4', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooKebabKEBAB-BNB', + earnedTokenAddress: '0x2Eb92E2882030B8e153370d208462D4dDf7041d2', + earnContractAddress: '0x2Eb92E2882030B8e153370d208462D4dDf7041d2', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'kebab-kebab-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Kebab', + assets: ['KEBAB', 'BNB'], + addLiquidityUrl: + 'https://swap.kebabfinance.com/#/add/BNB/0x7979f6c54eba05e18ded44c4f986f49a5de551c2', + buyTokenUrl: + 'https://swap.kebabfinance.com/#/swap?outputCurrency=0x7979f6c54eba05e18ded44c4f986f49a5de551c2', + createdAt: 1611765218, + retiredReason: 'tvl', + }, + { + id: 'cake-egld-bnb', + logo: 'bnb-pairs/EGLD-BNB.svg', + name: 'EGLD-BNB LP', + token: 'EGLD-BNB LP', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x3Ef4952C7a9AfbE374EA02d1Bf5eD5a0015b7716', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPancakeEGLD-BNB', + earnedTokenAddress: '0x3d0bd3C73eF66C8b487A49f50410173C44261285', + earnContractAddress: '0x3d0bd3C73eF66C8b487A49f50410173C44261285', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cake-egld-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['EGLD', 'BNB'], + removeLiquidityUrl: + 'https://v1exchange.pancakeswap.finance/#/remove/BNB/0xbf7c81fff98bbe61b40ed186e4afd6ddd01337fe', + createdAt: 1611761568, + }, + { + id: 'cake-mgoogl-ust', + logo: 'ust-pairs/MGOOGL-UST.svg', + name: 'MGOOGL-UST LP', + token: 'MGOOGL-UST LP', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x852A68181f789AE6d1Da3dF101740a59A071004f', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPancakeMGOOGL-UST', + earnedTokenAddress: '0xfBa61aC24B46c5B7298De02FBa8F577C1c5005e9', + earnContractAddress: '0xfBa61aC24B46c5B7298De02FBa8F577C1c5005e9', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cake-mgoogl-ust', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['MGOOGL', 'UST'], + removeLiquidityUrl: + 'https://v1exchange.pancakeswap.finance/#/remove/0x23396cf899ca06c4472205fc903bdb4de249d6fc/0x62D71B23bF15218C7d2D7E48DBbD9e9c650B173f', + createdAt: 1611697697, + }, + { + id: 'cake-mtsla-ust', + logo: 'ust-pairs/MTSLA-UST.svg', + name: 'MTSLA-UST LP', + token: 'MTSLA-UST LP', + tokenDescription: 'PancakeSwap', + tokenAddress: '0xD5664D2d15cdffD597515f1c0D945c6c1D3Bf85B', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPancakeMTSLA-UST', + earnedTokenAddress: '0x42BeB2855aa620C5c9dD073FA888c43c8a65c34f', + earnContractAddress: '0x42BeB2855aa620C5c9dD073FA888c43c8a65c34f', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cake-mtsla-ust', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['MTSLA', 'UST'], + removeLiquidityUrl: + 'https://v1exchange.pancakeswap.finance/#/remove/0x23396cf899ca06c4472205fc903bdb4de249d6fc/0xF215A127A196e3988C09d052e16BcFD365Cd7AA3', + createdAt: 1611699959, + }, + { + id: 'cake-wsote-bnb', + logo: 'bnb-pairs/WSOTE-BNB.svg', + name: 'WSOTE-BNB LP', + token: 'WSOTE-BNB LP', + tokenDescription: 'PancakeSwap', + tokenAddress: '0xFfb9E2d5ce4378F1a89b29bf53F80804CC078102', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPancakeWSOTE-BNB', + earnedTokenAddress: '0x5B6c3432B724Ce198B93769970f1dF36Ac5552F8', + earnContractAddress: '0x5B6c3432B724Ce198B93769970f1dF36Ac5552F8', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cake-wsote-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['WSOTE', 'BNB'], + removeLiquidityUrl: + 'https://v1exchange.pancakeswap.finance/#/remove/BNB/0x541e619858737031a1244a5d0cd47e5ef480342c', + createdAt: 1611327477, + }, + { + id: 'cake-front-bnb', + logo: 'bnb-pairs/FRONT-BNB.svg', + name: 'FRONT-BNB LP', + token: 'FRONT-BNB LP', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x36b7D2e5C7877392Fb17f9219efaD56F3D794700', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPancakeFRONT-BNB', + earnedTokenAddress: '0x1Ae7E76e2Eb74070774bbd9EAC75585452f24C23', + earnContractAddress: '0x1Ae7E76e2Eb74070774bbd9EAC75585452f24C23', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cake-front-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['FRONT', 'BNB'], + removeLiquidityUrl: + 'https://v1exchange.pancakeswap.finance/#/remove/BNB/0x928e55dab735aa8260af3cedada18b5f70c72f1b', + createdAt: 1611326706, + }, + { + id: 'cake-btcst-bnb', + logo: 'bnb-pairs/BTCST-BNB.svg', + name: 'BTCST-BNB LP', + token: 'BTCST-BNB LP', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x91589786D36fEe5B27A5539CfE638a5fc9834665', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPancakeBTCST-BNB', + earnedTokenAddress: '0xfC083Cb104b48924AB44C69537b1450B2e78eBD6', + earnContractAddress: '0xfC083Cb104b48924AB44C69537b1450B2e78eBD6', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cake-btcst-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['BTCST', 'BNB'], + removeLiquidityUrl: + 'https://v1exchange.pancakeswap.finance/#/remove/BNB/0x78650b139471520656b9e7aa7a5e9276814a38e9', + createdAt: 1611325875, + }, + { + id: 'thugs-drugs-btri', + logo: 'single-assets/DRUGS.png', + name: 'DRUGS BTRI', + token: 'DRUGS', + tokenDescription: 'Traphouse', + tokenAddress: '0x339550404Ca4d831D12B1b2e4768869997390010', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooDrugsBTRI', + earnedTokenAddress: '0xFAE4a35305a1dcED8303029ac05e51386f667ED8', + earnContractAddress: '0xFAE4a35305a1dcED8303029ac05e51386f667ED8', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'DRUGS', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['DRUGS'], + createdAt: 1611000233, + }, + { + id: 'cake-ada-bnb', + logo: 'bnb-pairs/ADA-BNB.svg', + name: 'ADA-BNB LP', + token: 'ADA-BNB LP', + tokenDescription: 'PancakeSwap', + tokenAddress: '0xBA51D1AB95756ca4eaB8737eCD450cd8F05384cF', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPancakeADA-BNB', + earnedTokenAddress: '0x1d23ecC0645B07791b7D99349e253ECEbe43f614', + earnContractAddress: '0x1d23ecC0645B07791b7D99349e253ECEbe43f614', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cake-ada-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['ADA', 'BNB'], + removeLiquidityUrl: + 'https://v1exchange.pancakeswap.finance/#/remove/BNB/0x3ee2200efb3400fabb9aacf31297cbdd1d435d47', + createdAt: 1610894177, + }, + { + id: 'bakery-bake-busd-eol', + logo: 'busd-pairs/BAKE-BUSD.png', + name: 'BAKE-BUSD BLP', + token: 'BAKE-BUSD BLP', + tokenDescription: 'Bakery', + tokenAddress: '0x6E218EA042BeF40a8baF706b00d0f0A7b4fCE50a', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBakeryBAKE-BUSD', + earnedTokenAddress: '0x23293B8A7c65aF396Bda8Ff75E02c62f6db8f202', + earnContractAddress: '0x23293B8A7c65aF396Bda8Ff75E02c62f6db8f202', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'bakery-bake-busd', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + retireReason: 'rewards', + assets: ['BAKE', 'BUSD'], + addLiquidityUrl: + 'https://www.bakeryswap.org/#/add/0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56/0xE02dF9e3e622DeBdD69fb838bB799E3F168902c5', + buyTokenUrl: + 'https://www.bakeryswap.org/#/swap?inputCurrency=0xE02dF9e3e622DeBdD69fb838bB799E3F168902c5&outputCurrency=0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56', + createdAt: 1607060614, + }, + { + id: 'jetfuel-vapor-bnb-eol', + logo: 'bnb-pairs/VAPOR-BNB.png', + name: 'VAPOR-BNB LP', + token: 'VAPOR-BNB LP', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x01ffd4B8dE49442ab3EF755cC6bb57deEB6B871a', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooJfVAPOR-BNB', + earnedTokenAddress: '0x00EcbB8f9853dbC621b39ab205a148A26eAC3B11', + earnContractAddress: '0x00EcbB8f9853dbC621b39ab205a148A26eAC3B11', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'jetfuel-vapor-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['VAPOR', 'BNB'], + removeLiquidityUrl: + 'https://v1exchange.pancakeswap.finance/#/remove/BNB/0x86ac8a05cc4eed2bea32d271de50e2a3d129b6b6', + createdAt: 1610780683, + }, + { + id: 'cake-bdo-bnb-sbdo', + logo: 'single-assets/SBDO.png', + name: 'BDO-BNB LP (SBDO)', + token: 'BDO-BNB LP (SBDO)', + tokenDescription: 'PancakeSwap (bDollar)', + tokenAddress: '0x74690f829fec83ea424ee1F1654041b2491A7bE9', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBdollarBDO-BNB-SBDO', + earnedTokenAddress: '0x9355af5ABD030E8BC2Dc63a38F1C956F1e150308', + earnContractAddress: '0x9355af5ABD030E8BC2Dc63a38F1C956F1e150308', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cake-bdo-bnb-sbdo', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['BDO', 'BNB'], + addLiquidityUrl: + 'https://pancakeswap.finance/add/BNB/0x190b589cf9fb8ddeabbfeae36a813ffb2a702454', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x190b589cf9fb8ddeabbfeae36a813ffb2a702454', + createdAt: 1610714437, + }, + { + id: 'cake-bdo-bnb-old', + logo: 'single-assets/BDO.png', + name: 'BDO-BNB LP', + token: 'BDO-BNB LP', + tokenDescription: 'PancakeSwap (bDollar)', + tokenAddress: '0x74690f829fec83ea424ee1F1654041b2491A7bE9', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBdollarBDO-BNB', + earnedTokenAddress: '0x2B19461954cCBa9e1b60bD0bC6453FeaC8aa1a17', + earnContractAddress: '0x2B19461954cCBa9e1b60bD0bC6453FeaC8aa1a17', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cake-bdo-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['BDO', 'BNB'], + removeLiquidityUrl: + 'https://v1exchange.pancakeswap.finance/#/remove/BNB/0x190b589cf9fb8ddeabbfeae36a813ffb2a702454', + createdAt: 1610247300, + }, + { + id: 'cake-sbdo-busd', + logo: 'single-assets/SBDO.png', + name: 'SBDO-BUSD LP', + token: 'SBDO-BUSD LP', + tokenDescription: 'PancakeSwap (bDollar)', + tokenAddress: '0xA0718093baa3E7AAE054eED71F303A4ebc1C076f', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBdollarSBDO-BUSD', + earnedTokenAddress: '0x9327029cf20B78e445397dAf0c4e9c19a931D62e', + earnContractAddress: '0x9327029cf20B78e445397dAf0c4e9c19a931D62e', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cake-sbdo-busd', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['SBDO', 'BUSD'], + buyTokenUrl: + 'https://pancakeswap.finance/swap?inputCurrency=0xe9e7cea3dedca5984780bafc599bd69add087d56&outputCurrency=0x0d9319565be7f53cefe84ad201be3f40feae2740', + createdAt: 1610326965, + }, + { + id: 'cake-bdo-busd', + logo: 'single-assets/SBDO.png', + name: 'BDO-BUSD LP', + token: 'BDO-BUSD LP', + tokenDescription: 'PancakeSwap (bDollar)', + tokenAddress: '0xc5b0d73A7c0E4eaF66baBf7eE16A2096447f7aD6', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBdollarBDO-BUSD', + earnedTokenAddress: '0x0fA31301EaA9633b3e4F7dF22F7543115759cf5a', + earnContractAddress: '0x0fA31301EaA9633b3e4F7dF22F7543115759cf5a', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cake-bdo-busd', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['BDO', 'BUSD'], + buyTokenUrl: + 'https://pancakeswap.finance/swap?inputCurrency=0x190b589cf9Fb8DDEabBFeae36a813FFb2A702454&outputCurrency=0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56', + createdAt: 1610325933, + }, + { + id: 'venus-beth-eol', + logo: 'single-assets/BETH.png', + name: 'BETH', + token: 'BETH', + tokenDescription: 'Venus', + tokenAddress: '0x250632378E573c6Be1AC2f97Fcdf00515d0Aa91B', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooVenusBETH', + earnedTokenAddress: '0xB38D32336538559Ce6680952B0Be4917ed015c39', + earnContractAddress: '0xB38D32336538559Ce6680952B0Be4917ed015c39', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'BETH', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Venus', + assets: ['BETH'], + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x250632378e573c6be1ac2f97fcdf00515d0aa91b', + createdAt: 1610341717, + }, + { + id: 'venus-dai-eol', + logo: 'single-assets/DAI.svg', + name: 'DAI', + token: 'DAI', + tokenDescription: 'Venus', + tokenAddress: '0x1AF3F329e8BE154074D8769D1FFa4eE058B1DBc3', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooVenusDAI', + earnedTokenAddress: '0x813aDbc7b9a9822FA37510F52aD14bDBc45aA306', + earnContractAddress: '0x813aDbc7b9a9822FA37510F52aD14bDBc45aA306', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'DAI', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Venus', + assets: ['DAI'], + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x1af3f329e8be154074d8769d1ffa4ee058b1dbc3', + createdAt: 1610286156, + }, + { + id: 'venus-fil-eol', + logo: 'single-assets/FIL.svg', + name: 'FIL', + token: 'FIL', + tokenDescription: 'Venus', + tokenAddress: '0x0D8Ce2A99Bb6e3B7Db580eD848240e4a0F9aE153', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooVenusFIL', + earnedTokenAddress: '0x8B80E58328aEF3796D70D29F65d516d29ACD944d', + earnContractAddress: '0x8B80E58328aEF3796D70D29F65d516d29ACD944d', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'FIL', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Venus', + assets: ['FIL'], + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x0d8ce2a99bb6e3b7db580ed848240e4a0f9ae153', + createdAt: 1610288694, + }, + { + id: 'cake-balbt-bnb', + logo: 'bnb-pairs/BALBT-BNB.svg', + name: 'bALBT-BNB LP', + token: 'bALBT-BNB LP', + tokenDescription: 'PancakeSwap', + tokenAddress: '0xbe14f3a89A4F7f279Af9d99554cf12E8C29dB921', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPancakebALBT-BNB', + earnedTokenAddress: '0xc2c792807A32fB9F9f985749Ef90673D8e1Bad44', + earnContractAddress: '0xc2c792807A32fB9F9f985749Ef90673D8e1Bad44', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cake-balbt-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['bALBT', 'BNB'], + removeLiquidityUrl: + 'https://v1exchange.pancakeswap.finance/#/remove/BNB/0x72faa679e1008ad8382959ff48e392042a8b06f7', + createdAt: 1610267196, + }, + { + id: 'bakery-btc-bnb-eol', + logo: 'bnb-pairs/BTC-BNB.png', + name: 'BTC-BNB BLP', + token: 'BTC-BNB BLP', + tokenDescription: 'Bakery', + tokenAddress: '0x58521373474810915b02FE968D1BCBe35Fc61E09', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBakeryBTC-BNB', + earnedTokenAddress: '0xeD4ea30c755676C07d3e0e0f74Ff84C0193B4551', + earnContractAddress: '0xeD4ea30c755676C07d3e0e0f74Ff84C0193B4551', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'bakery-btc-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Other', + assets: ['BTCB', 'BNB'], + addLiquidityUrl: + 'https://www.bakeryswap.org/#/add/ETH/0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c', + buyTokenUrl: + 'https://www.bakeryswap.org/#/swap?outputCurrency=0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c', + createdAt: 1610102461, + }, + { + id: 'street-bhc-bnb', + logo: 'bnb-pairs/BHC-BNB.png', + name: 'BHC-BNB TLP', + token: 'BHC-BNB TLP', + tokenDescription: 'Traphouse', + tokenAddress: '0xd46E7f33f8788f87D6017074dC4e4d781D3df91E', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooStreetBHC-BNB', + earnedTokenAddress: '0x7EED74dacB305C03A8f624282d6AEF15f1CD3777', + earnContractAddress: '0x7EED74dacB305C03A8f624282d6AEF15f1CD3777', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'street-bhc-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['BHC', 'BNB'], + createdAt: 1609772742, + }, + { + id: 'cake-reef-bnb', + logo: 'bnb-pairs/REEF-BNB.svg', + name: 'REEF-BNB LP', + token: 'REEF-BNB LP', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x58B58cab6C5cF158f63A2390b817710826d116D0', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPancakeREEF-BNB', + earnedTokenAddress: '0x6E0F2e199FC10B3F354C6825fCbC24a5de96B4bF', + earnContractAddress: '0x6E0F2e199FC10B3F354C6825fCbC24a5de96B4bF', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cake-reef-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['REEF', 'BNB'], + removeLiquidityUrl: + 'https://v1exchange.pancakeswap.finance/#/remove/BNB/0xf21768ccbc73ea5b6fd3c687208a7c2def2d966e', + createdAt: 1609774230, + }, + { + id: 'cake-nar-cake', + logo: 'cake-pairs/NAR-CAKE.svg', + name: 'NAR-CAKE LP', + token: 'NAR-CAKE LP', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x745C4fD226E169d6da959283275A8E0EcDd7F312', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPancakeNAR-CAKE', + earnedTokenAddress: '0xFaa95d27A91eb2305bD1B4b12a9cE564874eE349', + earnContractAddress: '0xFaa95d27A91eb2305bD1B4b12a9cE564874eE349', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cake-nar-cake', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['NAR', 'CAKE'], + removeLiquidityUrl: + 'https://v1exchange.pancakeswap.finance/#/remove/0xa1303e6199b319a891b79685f0537d289af1fc83/0x0e09fabb73bd3ade0a17ecc321fd13a19e81ce82', + createdAt: 1609783441, + }, + { + id: 'cake-nya-cake', + logo: 'cake-pairs/NYA-CAKE.svg', + name: 'NYA-CAKE LP', + token: 'NYA-CAKE LP', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x2730bf486d658838464A4ef077880998D944252d', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPancakeNYA-CAKE', + earnedTokenAddress: '0x5f640a217026FeFD0C4F1E581b44794c3d5F4638', + earnContractAddress: '0x5f640a217026FeFD0C4F1E581b44794c3d5F4638', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cake-nya-cake', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['NYA', 'CAKE'], + createdAt: 1609783522, + }, + { + id: 'thugs-drugs-drugs', + logo: 'single-assets/DRUGS.png', + name: 'DRUGS v2', + token: 'DRUGS v2', + tokenDescription: 'Traphouse', + tokenAddress: '0x339550404Ca4d831D12B1b2e4768869997390010', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooDrugsGunsV2', + earnedTokenAddress: '0x8AE31751A226B0C5357a377E53B6DB12bDF5e64d', + earnContractAddress: '0x8AE31751A226B0C5357a377E53B6DB12bDF5e64d', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'DRUGS', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['DRUGS'], + createdAt: 1606183056, + }, + { + id: 'thugs-drugs-bhc', + logo: 'single-assets/DRUGS.png', + name: 'DRUGS BHC', + token: 'DRUGS', + tokenDescription: 'Traphouse', + tokenAddress: '0x339550404Ca4d831D12B1b2e4768869997390010', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooDrugsBHC', + earnedTokenAddress: '0xE7408598DB157Cd4A24Bc26B579910AF36a72fad', + earnContractAddress: '0xE7408598DB157Cd4A24Bc26B579910AF36a72fad', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'DRUGS', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['DRUGS'], + createdAt: 1609374384, + }, + { + id: 'thugs-drugs-jgn', + logo: 'single-assets/DRUGS.png', + name: 'DRUGS JGN', + token: 'DRUGS', + tokenDescription: 'Traphouse', + tokenAddress: '0x339550404Ca4d831D12B1b2e4768869997390010', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooDrugsJGN', + earnedTokenAddress: '0x40e39743dBcb30c7Fc4152F57F29Cd22D9fc7932', + earnContractAddress: '0x40e39743dBcb30c7Fc4152F57F29Cd22D9fc7932', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'DRUGS', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['DRUGS'], + createdAt: 1609373877, + }, + { + id: 'jetfuel-fuel-bnb-ss-eol', + logo: 'bnb-pairs/FUEL-BNB.png', + name: 'FUEL-BNB TLP', + token: 'FUEL-BNB TLP', + tokenDescription: 'Traphouse', + tokenAddress: '0xd26092c6ce6FB359302A9453dc0c7f312794Ef7E', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooJfFUEL-BNB-SS', + earnedTokenAddress: '0xda643fBC5faA4FB3a95c62dBF729fE2B0Ff4F577', + earnContractAddress: '0xda643fBC5faA4FB3a95c62dBF729fE2B0Ff4F577', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'jetfuel-fuel-bnb-ss', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['FUEL', 'BNB'], + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x2090c8295769791ab7a3cf1cc6e0aa19f35e441a', + createdAt: 1609126521, + }, + { + id: 'jetfuel-fuel-bnb-pcs-eol', + logo: 'bnb-pairs/FUEL-BNB.png', + name: 'FUEL-BNB LP', + token: 'FUEL-BNB LP', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x3763A3263CEaca5e7Cc1Bc22A43920bAd9f743Cd', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooJfFUEL-BNB-PCS', + earnedTokenAddress: '0x9d3Aa54172D49659Ee9948d1b7D602989d39Ffa6', + earnContractAddress: '0x9d3Aa54172D49659Ee9948d1b7D602989d39Ffa6', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'jetfuel-fuel-bnb-pcs', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['FUEL', 'BNB'], + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x2090c8295769791ab7A3CF1CC6e0AA19F35e441A', + createdAt: 1609125132, + }, + { + id: 'jetfuel-bhc-bnb-eol', + logo: 'bnb-pairs/BHC-BNB.png', + name: 'BHC-BNB LP', + token: 'BHC-BNB LP', + tokenDescription: 'Traphouse', + tokenAddress: '0xd46E7f33f8788f87D6017074dC4e4d781D3df91E', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooJfBHC-BNB', + earnedTokenAddress: '0xfb62a8d9d162632C5AaD94f6bf353a19AeCd2855', + earnContractAddress: '0xfb62a8d9d162632C5AaD94f6bf353a19AeCd2855', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'jetfuel-bhc-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['BHC', 'BNB'], + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x6fd7c98458a943f469e1cf4ea85b173f5cd342f4', + createdAt: 1609126605, + }, + { + id: 'jetfuel-eth-bnb-eol', + logo: 'bnb-pairs/ETH-BNB.svg', + name: 'ETH-BNB LP', + token: 'ETH-BNB LP', + tokenDescription: 'PancakeSwap (Fuel)', + tokenAddress: '0x70D8929d04b60Af4fb9B58713eBcf18765aDE422', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooJfETH-BNB', + earnedTokenAddress: '0x25Fb99cf1DCe844cD823bD1e8FB0c1DCc85dAD0E', + earnContractAddress: '0x25Fb99cf1DCe844cD823bD1e8FB0c1DCc85dAD0E', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'jetfuel-eth-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['ETH', 'BNB'], + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x2170ed0880ac9a755fd29b2688956bd959f933f8', + createdAt: 1609126638, + }, + { + id: 'jetfuel-cake-bnb-eol', + logo: 'bnb-pairs/CAKE-BNB.svg', + name: 'CAKE-BNB LP', + token: 'CAKE-BNB LP', + tokenDescription: 'PancakeSwap (Fuel)', + tokenAddress: '0xA527a61703D82139F8a06Bc30097cC9CAA2df5A6', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooJfCAKE-BNB', + earnedTokenAddress: '0xC0766D0F482c7174274bE653dcB0B80c0436dFCc', + earnContractAddress: '0xC0766D0F482c7174274bE653dcB0B80c0436dFCc', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'jetfuel-cake-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['CAKE', 'BNB'], + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82', + createdAt: 1609126665, + }, + { + id: 'jetfuel-uni-bnb-eol', + logo: 'bnb-pairs/UNI-BNB.svg', + name: 'UNI-BNB LP', + token: 'UNI-BNB LP', + tokenDescription: 'PancakeSwap (Fuel)', + tokenAddress: '0x4269e7F43A63CEA1aD7707Be565a94a9189967E9', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooJfUNI-BNB', + earnedTokenAddress: '0xD96c8527d20acfa7D5D2054Bfb375fd0cB428322', + earnContractAddress: '0xD96c8527d20acfa7D5D2054Bfb375fd0cB428322', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'jetfuel-uni-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['UNI', 'BNB'], + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0xbf5140a22578168fd562dccf235e5d43a02ce9b1', + createdAt: 1609126695, + }, + { + id: 'jetfuel-busd-bnb-eol', + logo: 'bnb-pairs/BUSD-BNB.svg', + name: 'BUSD-BNB LP', + token: 'BUSD-BNB LP', + tokenDescription: 'PancakeSwap (Fuel)', + tokenAddress: '0x1B96B92314C44b159149f7E0303511fB2Fc4774f', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooJfBUSD-BNB', + earnedTokenAddress: '0x8af2D7289A093CF1019D9e20554F6c7aD5791A94', + earnContractAddress: '0x8af2D7289A093CF1019D9e20554F6c7aD5791A94', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'jetfuel-busd-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['BUSD', 'BNB'], + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56', + createdAt: 1609126755, + }, + { + id: 'cake-smart-eol', + logo: 'single-assets/CAKE.svg', + name: 'CAKE SMART', + token: 'CAKE', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82', + tokenDecimals: 18, + tokenDescriptionUrl: 'https://docs.beefy.finance/beefyfinance/products/pancake-swap#cake-smart', + earnedToken: 'mooCakeSmart', + earnedTokenAddress: '0xB0BDBB9E507dBF55f4aC1ef6ADa3E216202e06FD', + earnContractAddress: '0xB0BDBB9E507dBF55f4aC1ef6ADa3E216202e06FD', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'Cake', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['CAKE'], + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82', + createdAt: 1605728520, + }, + { + id: 'venus-dot-eol', + logo: 'single-assets/DOT.png', + name: 'DOT', + token: 'DOT', + tokenDescription: 'Venus', + tokenAddress: '0x7083609fCE4d1d8Dc0C979AAb8c869Ea2C873402', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooVenusDOT', + earnedTokenAddress: '0x2211191ff72505ED54Aa6aD3F6Fcc72c87CAb338', + earnContractAddress: '0x2211191ff72505ED54Aa6aD3F6Fcc72c87CAb338', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'DOT', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Venus', + assets: ['DOT'], + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x7083609fCE4d1d8Dc0C979AAb8c869Ea2C873402', + createdAt: 1609009921, + }, + { + id: 'venus-link-eol', + logo: 'single-assets/LINK.png', + name: 'LINK', + token: 'LINK', + tokenDescription: 'Venus', + tokenAddress: '0xF8A0BF9cF54Bb92F17374d9e9A321E6a111a51bD', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooVenusLINK', + earnedTokenAddress: '0x8da7167860EDfc2bFfd790f217AB5e398803Bbc8', + earnContractAddress: '0x8da7167860EDfc2bFfd790f217AB5e398803Bbc8', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'LINK', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Venus', + assets: ['LINK'], + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0xF8A0BF9cF54Bb92F17374d9e9A321E6a111a51bD', + createdAt: 1609009968, + }, + { + id: 'cake-atom-bnb', + logo: 'bnb-pairs/ATOM-BNB.svg', + name: 'ATOM-BNB LP', + token: 'ATOM-BNB LP', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x2333c77FC0B2875c11409cdCD3C75D42D402E834', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPancakeATOM-BNB', + earnedTokenAddress: '0x4884cD2C9F11Dc9e8f90d177576c46fdbd1b7641', + earnContractAddress: '0x4884cD2C9F11Dc9e8f90d177576c46fdbd1b7641', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cake-atom-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['ATOM', 'BNB'], + removeLiquidityUrl: + 'https://v1exchange.pancakeswap.finance/#/remove/BNB/0x0eb3a705fc54725037cc9e008bdede697f62f335', + createdAt: 1608605486, + }, + { + id: 'cake-vai-busd', + logo: 'busd-pairs/VAI-BUSD.svg', + name: 'VAI-BUSD LP', + token: 'VAI-BUSD LP', + tokenDescription: 'PancakeSwap', + tokenAddress: '0xfF17ff314925Dff772b71AbdFF2782bC913B3575', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPancakeVAI-BUSD', + earnedTokenAddress: '0xa40488536B1BAeECA9D2277Fde28394D3c04aD73', + earnContractAddress: '0xa40488536B1BAeECA9D2277Fde28394D3c04aD73', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cake-vai-busd', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['VAI', 'BUSD'], + removeLiquidityUrl: + 'https://v1exchange.pancakeswap.finance/#/remove/0x4bd17003473389a42daf6a0a729f6fdb328bbbd7/0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56', + createdAt: 1608596246, + }, + { + id: 'cake-broobee-cake', + logo: 'cake-pairs/BROOBEE-CAKE.svg', + name: 'BROOBEE-CAKE LP', + token: 'BROOBEE-CAKE LP', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x970858016C963b780E06f7DCfdEf8e809919BcE8', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPancakeBROOBEE-CAKE', + earnedTokenAddress: '0x4CcF7dC91389396801ec1f4A5E6cC675549f39E6', + earnContractAddress: '0x4CcF7dC91389396801ec1f4A5E6cC675549f39E6', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cake-broobee-cake', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['bROOBEE', 'CAKE'], + removeLiquidityUrl: + 'https://v1exchange.pancakeswap.finance/#/remove/0xe64f5cb844946c1f102bd25bbd87a5ab4ae89fbe/0x0e09fabb73bd3ade0a17ecc321fd13a19e81ce82', + createdAt: 1608596300, + }, + { + id: 'venus-bnb', + logo: 'single-assets/BNB.png', + name: 'BNB', + token: 'BNB', + tokenDescription: 'Venus', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooVenusBNB', + earnedTokenAddress: '0x6BE4741AB0aD233e4315a10bc783a7B923386b71', + earnContractAddress: '0x6BE4741AB0aD233e4315a10bc783a7B923386b71', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'WBNB', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Venus', + assets: ['BNB'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'Lending', + withdrawalFee: '0.05%', + createdAt: 1608060201, + }, + { + id: 'venus-wbnb', + logo: 'single-assets/WBNB.svg', + name: 'WBNB', + token: 'WBNB', + tokenDescription: 'Venus', + tokenAddress: '0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooVenusBNB', + earnedTokenAddress: '0x6BE4741AB0aD233e4315a10bc783a7B923386b71', + earnContractAddress: '0x6BE4741AB0aD233e4315a10bc783a7B923386b71', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'WBNB', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Venus', + assets: ['BNB'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + withdrawalFee: '0.05%', + stratType: 'Lending', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c', + createdAt: 1608060201, + }, + { + id: 'venus-sxp-eol', + logo: 'single-assets/SXP.svg', + name: 'SXP', + token: 'SXP', + tokenDescription: 'Venus', + tokenAddress: '0x47BEAd2563dCBf3bF2c9407fEa4dC236fAbA485A', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooVenusSXP', + earnedTokenAddress: '0x9aaD247bAc2AFc3027256aD0Cc09A27551069bd6', + earnContractAddress: '0x9aaD247bAc2AFc3027256aD0Cc09A27551069bd6', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'SXP', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Venus', + assets: ['SXP'], + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x47BEAd2563dCBf3bF2c9407fEa4dC236fAbA485A', + createdAt: 1608172975, + }, + { + id: 'venus-usdc-eol', + logo: 'single-assets/USDC.svg', + name: 'USDC', + token: 'USDC', + tokenDescription: 'Venus', + tokenAddress: '0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooVenusUSDC', + earnedTokenAddress: '0x07D478b679C6c7F4222388856f53F8dca7E7b378', + earnContractAddress: '0x07D478b679C6c7F4222388856f53F8dca7E7b378', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'USDC', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Venus', + assets: ['USDC'], + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d', + createdAt: 1608173020, + }, + { + id: 'venus-usdt-eol', + logo: 'single-assets/USDT.svg', + name: 'USDT', + token: 'USDT', + tokenDescription: 'Venus', + tokenAddress: '0x55d398326f99059fF775485246999027B3197955', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooVenusUSDT', + earnedTokenAddress: '0x1997D7cF0A63A374A853ca9d5b1dAcCFeCa5cEb8', + earnContractAddress: '0x1997D7cF0A63A374A853ca9d5b1dAcCFeCa5cEb8', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'USDT', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Venus', + assets: ['USDT'], + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x55d398326f99059fF775485246999027B3197955', + createdAt: 1608173053, + }, + { + id: 'venus-busd-eol', + logo: 'single-assets/BUSD.svg', + name: 'BUSD', + token: 'BUSD', + tokenDescription: 'Venus', + tokenAddress: '0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooVenusBUSD', + earnedTokenAddress: '0x2d3d152b3b94c0E0B217AC5bc1115E3D8b8018F9', + earnContractAddress: '0x2d3d152b3b94c0E0B217AC5bc1115E3D8b8018F9', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'BUSD', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Venus', + assets: ['BUSD'], + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56', + createdAt: 1608170851, + }, + { + id: 'venus-ltc-eol', + logo: 'single-assets/LTC.svg', + name: 'LTC', + token: 'LTC', + tokenDescription: 'Venus', + tokenAddress: '0x4338665CBB7B2485A8855A139b75D5e34AB0DB94', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooVenusLTC', + earnedTokenAddress: '0xd61420f20e945d0B617fEdA5971f692A3DCE711c', + earnContractAddress: '0xd61420f20e945d0B617fEdA5971f692A3DCE711c', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'LTC', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Venus', + assets: ['LTC'], + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x4338665CBB7B2485A8855A139b75D5e34AB0DB94', + createdAt: 1608174331, + }, + { + id: 'venus-xrp-eol', + logo: 'single-assets/XRP.svg', + name: 'XRP', + token: 'XRP', + tokenDescription: 'Venus', + tokenAddress: '0x1D2F0da169ceB9fC7B3144628dB156f3F6c60dBE', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooVenusXRP', + earnedTokenAddress: '0x3eb560209B438d4e23833aFf6751fcf0B810F60b', + earnContractAddress: '0x3eb560209B438d4e23833aFf6751fcf0B810F60b', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'XRP', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Venus', + assets: ['XRP'], + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x1D2F0da169ceB9fC7B3144628dB156f3F6c60dBE', + createdAt: 1608173173, + }, + { + id: 'cake-twt-bnb', + logo: 'bnb-pairs/TWT-BNB.svg', + name: 'TWT-BNB LP', + token: 'TWT-BNB LP', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x610e7a287c27dfFcaC0F0a94f547Cc1B770cF483', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPancakeTWT-BNB', + earnedTokenAddress: '0x3b2c93f9455786e74C68648EaaB09B20ce557537', + earnContractAddress: '0x3b2c93f9455786e74C68648EaaB09B20ce557537', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cake-twt-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['TWT', 'BNB'], + removeLiquidityUrl: + 'https://v1exchange.pancakeswap.finance/#/remove/BNB/0x4b0f1812e5df2a09796481ff14017e6005508003', + createdAt: 1607382402, + }, + { + id: 'cake-xvs-bnb', + logo: 'bnb-pairs/XVS-BNB.svg', + name: 'XVS-BNB LP', + token: 'XVS-BNB LP', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x41182c32F854dd97bA0e0B1816022e0aCB2fc0bb', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPancakeXVS-BNB', + earnedTokenAddress: '0xbB63c8858b64a856d79A80575Df60867622E4782', + earnContractAddress: '0xbB63c8858b64a856d79A80575Df60867622E4782', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cake-xvs-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['XVS', 'BNB'], + removeLiquidityUrl: + 'https://v1exchange.pancakeswap.finance/#/remove/BNB/0xcf6bb5389c92bdda8a3747ddb454cb7a64626c63', + createdAt: 1607382459, + }, + { + id: 'narwhal-gold-bnb-eol', + logo: 'bnb-pairs/GOLD-BNB.png', + name: 'GOLD-BNB NLP', + token: 'GOLD-BNB NLP', + tokenDescription: 'Narwhal', + tokenAddress: '0x903903A2aa2A222360D8f3c4A7205b933Da60e95', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooNarwhalGOLD-BNB', + earnedTokenAddress: '0x179701FD814F17838605c1990EDA96C1EbeC984e', + earnContractAddress: '0x179701FD814F17838605c1990EDA96C1EbeC984e', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'narwhal-gold-bnb', + oraclePrice: 0, + depositsPaused: true, + retireReason: 'rewards', + status: 'eol', + platform: 'Other', + assets: ['GOLD', 'BNB'], + addLiquidityUrl: + 'https://narwhalswap.org/#/page/add/0x8f4087cb09e0f378f4278a314c94a636665de24b/BNB', + buyTokenUrl: + 'https://narwhalswap.org/#/page/swap?outputCurrency=0x8f4087cb09e0f378f4278a314c94a636665de24b&outputCurrency=BNB', + createdAt: 1607445097, + }, + { + id: 'bakery-bake-eol', + logo: 'single-assets/BAKE.png', + name: 'BAKE', + token: 'BAKE', + tokenDescription: 'Bakery', + tokenAddress: '0xE02dF9e3e622DeBdD69fb838bB799E3F168902c5', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBakeryBAKE', + earnedTokenAddress: '0xaC112E7744C129ae54E65F5D2cb4eA472E08eA0B', + earnContractAddress: '0xaC112E7744C129ae54E65F5D2cb4eA472E08eA0B', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'BAKE', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Other', + assets: ['BAKE'], + buyTokenUrl: + 'https://bakeryswap.org/#/swap?outputCurrency=0xE02dF9e3e622DeBdD69fb838bB799E3F168902c5', + createdAt: 1607060332, + }, + { + id: 'bakery-bake-bnb-eol', + logo: 'bnb-pairs/BAKE-BNB.png', + name: 'BAKE-BNB BLP', + token: 'BAKE-BNB BLP', + tokenDescription: 'Bakery', + tokenAddress: '0xc2Eed0F5a0dc28cfa895084bC0a9B8B8279aE492', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBakeryBAKE-BNB', + earnedTokenAddress: '0x3e1B60EB79b17d41F8E268936d853A43BEA24259', + earnContractAddress: '0x3e1B60EB79b17d41F8E268936d853A43BEA24259', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'bakery-bake-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Other', + assets: ['BAKE', 'BNB'], + addLiquidityUrl: + 'https://www.bakeryswap.org/#/add/ETH/0xE02dF9e3e622DeBdD69fb838bB799E3F168902c5', + buyTokenUrl: + 'https://bakeryswap.org/#/swap?outputCurrency=0x072e3d0d4f14dd82a16b0a33678c6104e9009ed9', + createdAt: 1607060527, + }, + { + id: 'street-bifi-bnb', + logo: 'bnb-pairs/BIFI-BNB.png', + name: 'BIFI-BNB TLP', + token: 'BIFI-BNB TLP', + tokenDescription: 'Traphouse', + tokenAddress: '0x223B53b64AA5F87D2De194a15701Fc0bC7474A31', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooStreetBIFI-BNB', + earnedTokenAddress: '0x29C36e5fcB1dC4a3D4B46C00F82b2cee39c5540e', + earnContractAddress: '0x29C36e5fcB1dC4a3D4B46C00F82b2cee39c5540e', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'street-bifi-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['BIFI', 'BNB'], + removeLiquidityUrl: + 'https://v1exchange.pancakeswap.finance/#/remove/0xCa3F508B8e4Dd382eE878A314789373D80A5190A/BNB', + createdAt: 1606423596, + }, + { + id: 'street-drugs-bnb', + logo: 'bnb-pairs/DRUGS-BNB.png', + name: 'DRUGS-BNB LP v2', + token: 'DRUGS-BNB TLP', + tokenDescription: 'Traphouse', + tokenAddress: '0x421DF185Ff87bc5f19bd5a90102A51452b70c4A4', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooStreetDRUGS-BNBV2', + earnedTokenAddress: '0x9D729179E429153a6aca26389e6a9b625431C79B', + earnContractAddress: '0x9D729179E429153a6aca26389e6a9b625431C79B', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'street-drugs-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['DRUGS', 'BNB'], + createdAt: 1606169751, + }, + { + id: 'street-thugs-bnb', + logo: 'bnb-pairs/THUGS-BNB.png', + name: 'THUGS-BNB LP v2', + token: 'THUGS-BNB TLP', + tokenDescription: 'Traphouse', + tokenAddress: '0x9354caB0F1083135439B23aA6c364329e578F39a', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooStreetTHUGS-BNBV2', + earnedTokenAddress: '0xe789711992020575e07381fdb3dFDc251Ec4d027', + earnContractAddress: '0xe789711992020575e07381fdb3dFDc251Ec4d027', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'street-thugs-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['THUGS', 'BNB'], + createdAt: 1606173714, + }, + { + id: 'street-cred-bnb', + logo: 'bnb-pairs/CRED-BNB.png', + name: 'CRED-BNB LP', + token: 'CRED-BNB TLP', + tokenDescription: 'Traphouse', + tokenAddress: '0x9CBE4F200b474a1C33bfFe7c6e531e1D47ECab46', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooStreetCRED-BNB', + earnedTokenAddress: '0x0adc208151e6b7AE1D884b64fDA662d10B4F6174', + earnContractAddress: '0x0adc208151e6b7AE1D884b64fDA662d10B4F6174', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'street-cred-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['CRED', 'BNB'], + createdAt: 1606173765, + }, + { + id: 'street-busd-bnb', + logo: 'bnb-pairs/BUSD-BNB.svg', + name: 'BUSD-BNB LP v2', + token: 'BUSD-BNB TLP', + tokenDescription: 'Traphouse', + tokenAddress: '0xf2e4E3F9B58b3eDaC88Ad11D689a23f3119a782D', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooStreetBUSD-BNBV2', + earnedTokenAddress: '0x2091b25f02275a4D791075f83c904Fa5Fb96B5A7', + earnContractAddress: '0x2091b25f02275a4D791075f83c904Fa5Fb96B5A7', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'street-busd-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['BUSD', 'BNB'], + createdAt: 1606173867, + }, + { + id: 'street-panacakelp-thugs-bnb', + logo: 'bnb-pairs/THUGS-BNB.png', + name: 'THUGS-BNB Pancake LP v2', + token: 'THUGS-BNB Pancake LP', + tokenDescription: 'Traphouse', + tokenAddress: '0x40257481f09dB2211a3274B34554Bbb00B0a7Fb1', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooStreetPancakeLP-THUGS-BNBV2', + earnedTokenAddress: '0x7A99078ba8960871233377C7aE6B5d2A61229A43', + earnContractAddress: '0x7A99078ba8960871233377C7aE6B5d2A61229A43', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'street-panacakelp-thugs-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['THUGS', 'BNB'], + createdAt: 1606192225, + }, + { + id: 'street-dai-bnb', + logo: 'bnb-pairs/DAI-BNB.svg', + name: 'DAI-BNB LP', + token: 'DAI-BNB LP', + tokenDescription: 'Traphouse', + tokenAddress: '0xed8Ecb790Be568461d85Cf82C386E51124E46a52', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooStreetDAI-BNB', + earnedTokenAddress: '0x3CAd2fF669865359b80a2d948A10e1810f7486D7', + earnContractAddress: '0x3CAd2fF669865359b80a2d948A10e1810f7486D7', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'street-dai-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['DAI', 'BNB'], + createdAt: 1606174227, + }, + { + id: 'street-bliq-bnb', + logo: 'bnb-pairs/BLIQ-BNB.png', + name: 'BLIQ-BNB LP', + token: 'BLIQ-BNB LP', + tokenDescription: 'Traphouse', + tokenAddress: '0xe835ed82C7d9d018f8F5173EECfBb56f29f38570', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooStreetBLIQ-BNB', + earnedTokenAddress: '0x84d95337c83B84688DFE678117e1539786f8c4Cb', + earnContractAddress: '0x84d95337c83B84688DFE678117e1539786f8c4Cb', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'street-bliq-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['BLIQ', 'BNB'], + createdAt: 1606174413, + }, + { + id: 'street-drugs-bnb-v1', + logo: 'bnb-pairs/DRUGS-BNB.png', + name: 'DRUGS-BNB LP v1', + token: 'DRUGS-BNB LP v1', + tokenDescription: 'Please migrate to v2', + tokenAddress: '0x5BcE5d58682f15541EFc72d8f56C7d6221d541f1', + tokenDecimals: 18, + tokenDescriptionUrl: + 'https://docs.beefy.finance/beefyfinance/products/thugs#farming-drugs-with-drugs-bnb-lp', + earnedToken: 'mooStreetDRUGS-BNB', + earnedTokenAddress: '0xa4aB709f5eB75f3213734fC227D9e27352d1DB6c', + earnContractAddress: '0xa4aB709f5eB75f3213734fC227D9e27352d1DB6c', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'street-drugs-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['DRUGS', 'BNB'], + createdAt: 1605660664, + }, + { + id: 'cake-cake-eol', + logo: 'single-assets/CAKE.svg', + name: 'CAKE', + token: 'CAKE', + tokenDescription: 'Please use Smart Cake', + tokenAddress: '0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82', + tokenDecimals: 18, + tokenDescriptionUrl: + 'https://docs.beefy.finance/beefyfinance/products/pancake-swap#farming-cake-with-cake', + earnedToken: 'mooCake', + earnedTokenAddress: '0xc713ca7cb8edfE238ea652D772d41dde47A9a62d', + earnContractAddress: '0xc713ca7cb8edfE238ea652D772d41dde47A9a62d', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'Cake', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['CAKE'], + createdAt: 1604704611, + }, + { + id: 'cake-twt', + logo: 'single-assets/cakeTWT.png', + name: 'CAKE TWT v2', + token: 'CAKE', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82', + tokenDecimals: 18, + tokenDescriptionUrl: + 'https://docs.beefy.finance/beefyfinance/products/pancake-swap#farming-twt-with-cake', + earnedToken: 'mooCakeTWTV2', + earnedTokenAddress: '0x260879777DB293541DbC9a27c3C2fAD9c9bb48D3', + earnContractAddress: '0x260879777DB293541DbC9a27c3C2fAD9c9bb48D3', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'Cake', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['CAKE'], + createdAt: 1605108145, + }, + { + id: 'cake-hard', + logo: 'single-assets/cakeHARD.png', + name: 'CAKE HARD', + token: 'CAKE', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82', + tokenDecimals: 18, + tokenDescriptionUrl: + 'https://docs.beefy.finance/beefyfinance/products/pancake-swap#farming-hard-with-cake', + earnedToken: 'mooCakeHARD', + earnedTokenAddress: '0x4B4e5F2CeEdfF00D2DD13874714C1Ef6Ea1Cd8a7', + earnContractAddress: '0x4B4e5F2CeEdfF00D2DD13874714C1Ef6Ea1Cd8a7', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'Cake', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['CAKE'], + createdAt: 1605043021, + }, + { + id: 'cake-cake-bnb-eol', + logo: 'bnb-pairs/CAKE-BNB.svg', + name: 'CAKE-BNB LP', + token: 'CAKE-BNB LP', + tokenDescription: 'PancakeSwap', + tokenAddress: '0xA527a61703D82139F8a06Bc30097cC9CAA2df5A6', + tokenDecimals: 18, + tokenDescriptionUrl: + 'https://docs.beefy.finance/beefyfinance/products/pancake-swap#farming-cake-with-cake-bnb-lp', + earnedToken: 'mooPancakeCAKE-BNB', + earnedTokenAddress: '0x502AB55Cf22f38c4fd8663dEE041A96B72264c53', + earnContractAddress: '0x502AB55Cf22f38c4fd8663dEE041A96B72264c53', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cake-cake-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['CAKE', 'BNB'], + removeLiquidityUrl: + 'https://v1exchange.pancakeswap.finance/#/remove/BNB/0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82', + createdAt: 1604768244, + }, + { + id: 'cake-busd-bnb', + logo: 'bnb-pairs/BUSD-BNB.svg', + name: 'BUSD-BNB LP', + token: 'BUSD-BNB LP', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x1B96B92314C44b159149f7E0303511fB2Fc4774f', + tokenDecimals: 18, + tokenDescriptionUrl: + 'https://docs.beefy.finance/beefyfinance/products/pancake-swap#farming-cake-with-busd-bnb-lp', + earnedToken: 'mooPancakeBNB-BUSD', + earnedTokenAddress: '0x0c36Bee5cF5E5b1BE5371574cEBF9A5f01DE5Fc4', + earnContractAddress: '0x0c36Bee5cF5E5b1BE5371574cEBF9A5f01DE5Fc4', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cake-busd-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['BUSD', 'BNB'], + removeLiquidityUrl: + 'https://v1exchange.pancakeswap.finance/#/remove/BNB/0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56', + createdAt: 1604768346, + }, + { + id: 'cake-usdt-busd', + logo: 'busd-pairs/USDT-BUSD.svg', + name: 'USDT-BUSD LP', + token: 'USDT-BUSD LP', + tokenDescription: 'PancakeSwap', + tokenAddress: '0xc15fa3E22c912A276550F3E5FE3b0Deb87B55aCd', + tokenDecimals: 18, + tokenDescriptionUrl: + 'https://docs.beefy.finance/beefyfinance/products/pancake-swap#farming-cake-with-usdt-busd-lp', + earnedToken: 'mooPancakeUSDT-BUSD', + earnedTokenAddress: '0x348039C69B5fD7b333CE0a17E8361E501D2e3fa8', + earnContractAddress: '0x348039C69B5fD7b333CE0a17E8361E501D2e3fa8', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cake-usdt-busd', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'PancakeSwap', + assets: ['USDT', 'BUSD'], + removeLiquidityUrl: + 'https://v1exchange.pancakeswap.finance/#/remove/0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56/0x55d398326f99059ff775485246999027b3197955', + createdAt: 1604768436, + }, + { + id: 'fortube-fil', + logo: 'single-assets/FIL.svg', + name: 'FIL', + token: 'FIL', + tokenDescription: 'ForTube', + tokenAddress: '0x0D8Ce2A99Bb6e3B7Db580eD848240e4a0F9aE153', + tokenDecimals: 18, + tokenDescriptionUrl: 'https://filecoin.io/', + earnedToken: 'mooForFIL', + earnedTokenAddress: '0x5Bea18aBa4825bbE6450c280fBE8c22B1489cDd4', + earnContractAddress: '0x5Bea18aBa4825bbE6450c280fBE8c22B1489cDd4', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'FIL', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['FIL'], + createdAt: 1604003351, + }, + { + id: 'fortube-busd', + logo: 'single-assets/BUSD.svg', + name: 'BUSD', + token: 'BUSD', + tokenDescription: 'ForTube', + tokenAddress: '0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56', + tokenDecimals: 18, + tokenDescriptionUrl: 'https://www.paxos.com/busd/', + earnedToken: 'mooBUSD', + earnedTokenAddress: '0xD6fca61Edb1cD0259320A6E0899E8aD1044BBCda', + earnContractAddress: '0xD6fca61Edb1cD0259320A6E0899E8aD1044BBCda', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'BUSD', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['BUSD'], + createdAt: 1602194737, + }, + { + id: 'fortube-dot', + logo: 'single-assets/DOT.png', + name: 'DOT', + token: 'DOT', + tokenDescription: 'ForTube', + tokenAddress: '0x7083609fCE4d1d8Dc0C979AAb8c869Ea2C873402', + tokenDecimals: 18, + tokenDescriptionUrl: 'https://polkadot.network/', + earnedToken: 'mooDOT', + earnedTokenAddress: '0x63a2CEF28904956552714ddb226ceE96c3F0C9EF', + earnContractAddress: '0x63a2CEF28904956552714ddb226ceE96c3F0C9EF', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'DOT', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['DOT'], + createdAt: 1602195523, + }, + { + id: 'fortube-usdt', + logo: 'single-assets/USDT.svg', + name: 'USDT', + token: 'USDT', + tokenDescription: 'ForTube', + tokenAddress: '0x55d398326f99059fF775485246999027B3197955', + tokenDecimals: 18, + tokenDescriptionUrl: 'https://tether.to', + earnedToken: 'mooUSDT', + earnedTokenAddress: '0xc16187F3eb15aEE949e7d784906d53fd7E364B26', + earnContractAddress: '0xc16187F3eb15aEE949e7d784906d53fd7E364B26', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'USDT', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['USDT'], + createdAt: 1602195418, + }, + { + id: 'fortube-btcb', + logo: 'single-assets/BTCB.svg', + name: 'BTCB', + token: 'BTCB', + tokenDescription: 'ForTube', + tokenAddress: '0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c', + tokenDecimals: 18, + tokenDescriptionUrl: 'https://coinmarketcap.com/currencies/bitcoin-bep2/', + earnedToken: 'mooBTCB', + earnedTokenAddress: '0x6F0Df0858542fC4A1c7f82c14fAA490d7763592F', + earnContractAddress: '0x6F0Df0858542fC4A1c7f82c14fAA490d7763592F', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'BTCB', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['BTCB'], + createdAt: 1602195640, + }, + { + id: 'fry-burger-v2', + logo: 'single-assets/BURGER.png', + name: 'BURGER v2', + token: 'BURGER', + tokenDescription: 'Retired Vault', + tokenAddress: '0xAe9269f27437f0fcBC232d39Ec814844a51d6b8f', + tokenDecimals: 18, + tokenDescriptionUrl: + 'https://docs.beefy.finance/beefyfinance/products/fryworld#farming-fries-with-burgers', + earnedToken: 'mooFryBURGERv2', + earnedTokenAddress: '0x2fd5f579e2cF9e3cb8127BBAd1B52c25750b1aCE', + earnContractAddress: '0x2fd5f579e2cF9e3cb8127BBAd1B52c25750b1aCE', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'BURGER', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['BURGER'], + createdAt: 1603391564, + }, + { + id: 'cake-syrup-twt', + logo: 'single-assets/cakeTWT.png', + name: 'CAKE TWT v1', + token: 'CAKE', + tokenDescription: 'Refunds available', + tokenAddress: '0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82', + tokenDecimals: 18, + tokenDescriptionUrl: + 'https://docs.beefy.finance/beefyfinance/products/pancake-swap#farming-twt-with-cake', + earnedToken: 'mooCakeTWT', + earnedTokenAddress: '0x214e640c638fbe68Fb24e11BfBd8Cd7d6cb8E37b', + earnContractAddress: '0x214e640c638fbe68Fb24e11BfBd8Cd7d6cb8E37b', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'Cake', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + refund: true, + refundContractAddress: '0x2fd5caAB20191dcd4423F588e254CC298C7F66A1', + platform: 'PancakeSwap', + assets: ['CAKE'], + createdAt: 1603823935, + }, + { + id: 'fry-burger-v1', + logo: 'single-assets/BURGER.png', + name: 'BURGER v1', + token: 'BURGER', + tokenDescription: 'Please migrate to v2', + tokenAddress: '0xAe9269f27437f0fcBC232d39Ec814844a51d6b8f', + tokenDecimals: 18, + tokenDescriptionUrl: 'https://fry.world/', + earnedToken: 'mooFryBURGER', + earnedTokenAddress: '0x78d60Da18c09bdE41397010198F454021Ec810Ad', + earnContractAddress: '0x78d60Da18c09bdE41397010198F454021Ec810Ad', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'BURGER', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['BURGER'], + createdAt: 1602803649, + }, + { + id: 'beltv2-4belt', + logo: 'uncategorized/BELT-VENUSBLP.png', + name: 'BUSD/USDT/USDC/DAI', + token: '4BELT LP', + tokenDescription: 'Belt', + tokenAddress: '0x9cb73F20164e399958261c289Eb5F9846f4D1404', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'moo4BeltV2', + earnedTokenAddress: '0x1bBBf8910E5A074c7B62D891Dbab9f4af82C14D4', + earnContractAddress: '0x1bBBf8910E5A074c7B62D891Dbab9f4af82C14D4', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'belt-4belt', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Belt', + assets: ['USDT', 'BUSD', 'USDC', 'DAI', '4BELT'], + withdrawalFee: '0%', + addLiquidityUrl: 'https://belt.fi/', + createdAt: 1632312203, + }, + { + id: 'cakev2-idia-busd-eol', + name: 'IDIA-BUSD LP', + token: 'IDIA-BUSD LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0x71E6de81381eFE0Aa98f56b3B43eB3727D640715', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2IDIA-BUSD', + earnedTokenAddress: '0x9D91E206639FF4A3Aac5C9112D874BC1be2A098b', + earnContractAddress: '0x9D91E206639FF4A3Aac5C9112D874BC1be2A098b', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-idia-busd', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'tvl', + platform: 'PancakeSwap', + assets: ['IDIA', 'BUSD'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_SMALL', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://pancakeswap.finance/add/0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56/0x0b15Ddf19D47E6a86A56148fb4aFFFc6929BcB89', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x0b15Ddf19D47E6a86A56148fb4aFFFc6929BcB89', + createdAt: 1640215127, + }, + { + id: 'cakev2-xcv-busd-eol', + name: 'XCV-BUSD LP', + token: 'XCV-BUSD LP2', + tokenDescription: 'PancakeSwap', + tokenAddress: '0xD39F05AB936Aa201235005c47B83268f2d9833f8', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCakeV2XCV-BUSD', + earnedTokenAddress: '0x4E9aAC9a233b7E15F2730274D9fFAaD264b45190', + earnContractAddress: '0x4E9aAC9a233b7E15F2730274D9fFAaD264b45190', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cakev2-xcv-busd', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'tvl', + platform: 'PancakeSwap', + assets: ['XCV', 'BUSD'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://pancakeswap.finance/add/0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56/0x4be63a9b26EE89b9a3a13fd0aA1D0b2427C135f8', + buyTokenUrl: + 'https://pancakeswap.finance/swap?outputCurrency=0x4be63a9b26EE89b9a3a13fd0aA1D0b2427C135f8', + createdAt: 1640795451, + }, +]; diff --git a/src/features/configure/vault/celo_pools.js b/src/features/configure/vault/celo_pools.js new file mode 100644 index 000000000..c2791b168 --- /dev/null +++ b/src/features/configure/vault/celo_pools.js @@ -0,0 +1,440 @@ +export const celoPools = [ + { + id: 'celo-bifi-maxi', + logo: 'single-assets/BIFI.png', + name: 'BIFI Maxi', + token: 'BIFI', + tokenDescription: 'Beefy', + tokenAddress: '0x639A647fbe20b6c8ac19E48E2de44ea792c62c5C', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCeloBIFI', + earnedTokenAddress: '0xf68C61E3c2f9C48E53391E1FCd2db1f19998151b', + earnContractAddress: '0xf68C61E3c2f9C48E53391E1FCd2db1f19998151b', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'BIFI', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Beefy', + assets: ['BIFI'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'Maxi', + withdrawalFee: '0.05%', + buyTokenUrl: + 'https://app.sushi.com/swap?inputCurrency=ETH&outputCurrency=0x639A647fbe20b6c8ac19E48E2de44ea792c62c5C', + createdAt: 1636753207, + }, + { + id: 'sushi-celo-celo-mobi-eol', + name: 'CELO-MOBI LP', + token: 'CELO-MOBI LPv2', + tokenDescription: 'Sushi', + tokenAddress: '0x8ecDed81A2AbF3b7e724978060739edBeb01b24F', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSushiCELO-MOBI', + earnedTokenAddress: '0xecCb80E860561Ca9Ffb183A557F32CC90B05d3c3', + earnContractAddress: '0xecCb80E860561Ca9Ffb183A557F32CC90B05d3c3', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'sushi-celo-celo-mobi', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'SushiSwap', + withdrawalFee: '0%', + assets: ['CELO', 'MOBI'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.sushi.com/add/0x471EcE3750Da237f93B8E339c536989b8978a438/0x73a210637f6F6B7005512677Ba6B3C96bb4AA44B', + buyTokenUrl: + 'https://app.sushi.com/swap?inputCurrency=0x471EcE3750Da237f93B8E339c536989b8978a438&outputCurrency=0x73a210637f6F6B7005512677Ba6B3C96bb4AA44B', + createdAt: 1641132389, + }, + { + id: 'sushi-celo-weth-usdt', + name: 'USDT-WETH LP', + token: 'USDT-WETH LPv2', + tokenDescription: 'Sushi', + tokenAddress: '0xC77398cfb7B0F7ab42baFC02ABc20A69CE8cEf7f', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSushiWETH-USDT', + earnedTokenAddress: '0x37A8b016EF27fBCF73F73Fb9Dc1C09C47A5d7E48', + earnContractAddress: '0x37A8b016EF27fBCF73F73Fb9Dc1C09C47A5d7E48', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'sushi-celo-weth-usdt', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SushiSwap', + withdrawalFee: '0%', + assets: ['USDT', 'WETH'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.sushi.com/add/0x122013fd7dF1C6F636a5bb8f03108E876548b455/0x88eeC49252c8cbc039DCdB394c0c2BA2f1637EA0', + buyTokenUrl: + 'https://app.sushi.com/swap?inputCurrency=0x122013fd7dF1C6F636a5bb8f03108E876548b455a&outputCurrency=0x88eeC49252c8cbc039DCdB394c0c2BA2f1637EA0', + createdAt: 1641132354, + }, + { + id: 'sushi-celo-weth-daiv2', + name: 'DAI-WETH LP', + token: 'DAI-WETH LPv2', + tokenDescription: 'Sushi', + tokenAddress: '0xCCd9d850eF40f19566cd8df950765E9A1a0B9Ef2', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSushiWETH-DAIv2', + earnedTokenAddress: '0xbA79aC22fA300961A89547955d1363d7896B497d', + earnContractAddress: '0xbA79aC22fA300961A89547955d1363d7896B497d', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'sushi-celo-weth-daiv2', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SushiSwap', + withdrawalFee: '0%', + assets: ['DAI', 'WETH'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + 'OVER_COLLAT_ALGO_STABLECOIN', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.sushi.com/add/0x122013fd7dF1C6F636a5bb8f03108E876548b455/0xE4fE50cdD716522A56204352f00AA110F731932d', + buyTokenUrl: + 'https://app.sushi.com/swap?inputCurrency=0x122013fd7dF1C6F636a5bb8f03108E876548b455a&outputCurrency=0xE4fE50cdD716522A56204352f00AA110F731932d', + createdAt: 1641132429, + }, + { + id: 'sushi-celo-cusd-usdc', + name: 'cUSD-USDC LP', + token: 'cUSD-USDC LPv2', + tokenDescription: 'Sushi', + tokenAddress: '0xA364EdE5590B46E618527d7535506743D978bBF2', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSushicUSD-USDC', + earnedTokenAddress: '0xc8Acba0068B0F80F5176B6e14b9c7D1aF9B0F9A2', + earnContractAddress: '0xc8Acba0068B0F80F5176B6e14b9c7D1aF9B0F9A2', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'sushi-celo-cusd-usdc', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SushiSwap', + withdrawalFee: '0%', + assets: ['cUSD', 'USDC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.sushi.com/add/0x765DE816845861e75A25fCA122bb6898B8B1282a/0xef4229c8c3250C675F21BCefa42f58EfbfF6002a', + buyTokenUrl: + 'https://app.sushi.com/swap?inputCurrency=0x765DE816845861e75A25fCA122bb6898B8B1282a&outputCurrency=0xef4229c8c3250C675F21BCefa42f58EfbfF6002a', + createdAt: 1641129424, + }, + { + id: 'sushi-celo-wethv2-celo', + name: 'CELO-WETH LP', + token: 'CELO-WETH LPv2', + tokenDescription: 'Sushi', + tokenAddress: '0x517f717f0AE11efc2AF8943071B66d77DfaFc9fC', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSushiCELO-WETHv2', + earnedTokenAddress: '0x5261780fc6e0AE1FfCe37682044371932c2e8E97', + earnContractAddress: '0x5261780fc6e0AE1FfCe37682044371932c2e8E97', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'sushi-celo-wethv2-celo', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SushiSwap', + withdrawalFee: '0%', + assets: ['CELO', 'WETH'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.sushi.com/add/0x471EcE3750Da237f93B8E339c536989b8978a438/0x122013fd7dF1C6F636a5bb8f03108E876548b455', + buyTokenUrl: + 'https://app.sushi.com/swap?inputCurrency=0x471EcE3750Da237f93B8E339c536989b8978a438&outputCurrency=0x122013fd7dF1C6F636a5bb8f03108E876548b455', + createdAt: 1641132564, + }, + { + id: 'sushi-celo-wethv2-cusd', + name: 'cUSD-WETH LP', + token: 'cUSD-WETH LPv2', + tokenDescription: 'Sushi', + tokenAddress: '0x93887e0fA9F6C375b2765a6fE885593F16f077f9', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSushicUSD-WETHv2', + earnedTokenAddress: '0x8F2894459026CaE358C4613eD6779e515f1F514e', + earnContractAddress: '0x8F2894459026CaE358C4613eD6779e515f1F514e', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'sushi-celo-wethv2-cusd', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SushiSwap', + withdrawalFee: '0%', + assets: ['cUSD', 'WETH'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.sushi.com/add/0x765DE816845861e75A25fCA122bb6898B8B1282a/0x122013fd7dF1C6F636a5bb8f03108E876548b455', + buyTokenUrl: + 'https://app.sushi.com/swap?inputCurrency=0x765DE816845861e75A25fCA122bb6898B8B1282a&outputCurrency=0x122013fd7dF1C6F636a5bb8f03108E876548b455', + createdAt: 1641132539, + }, + { + id: 'sushi-celo-cusd-ceurv2', + name: 'cUSD-cEUR LP', + token: 'cUSD-cEUR LPv2', + tokenDescription: 'Sushi', + tokenAddress: '0x0b655E7D966CB27998af94AA5719ab7BFe07D3b3', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSushicUSD-cEURv2', + earnedTokenAddress: '0x6ad6c1f5c2Fb80e1240D7B8242496B3A4e021c68', + earnContractAddress: '0x6ad6c1f5c2Fb80e1240D7B8242496B3A4e021c68', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'sushi-celo-cusd-ceurv2', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SushiSwap', + withdrawalFee: '0%', + assets: ['cUSD', 'cEUR'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.sushi.com/add/0x765DE816845861e75A25fCA122bb6898B8B1282a/0xD8763CBa276a3738E6DE85b4b3bF5FDed6D6cA73', + buyTokenUrl: + 'https://app.sushi.com/swap?inputCurrency=0x765DE816845861e75A25fCA122bb6898B8B1282a&outputCurrency=0xD8763CBa276a3738E6DE85b4b3bF5FDed6D6cA73', + createdAt: 1641132464, + }, + { + id: 'sushi-celo-celo-weth-eol', + name: 'CELO-WETH LP', + token: 'CELO-WETH LP', + tokenDescription: 'Sushi', + tokenAddress: '0x38F3c44552a3F6E4D21C8c328cE4904DA766D12f', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSushiCELO-WETH', + earnedTokenAddress: '0x8a198BCbF313A5565c64A7Ed61FaA413eB4E0931', + earnContractAddress: '0x8a198BCbF313A5565c64A7Ed61FaA413eB4E0931', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'sushi-celo-celo-weth', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'SushiSwap', + withdrawalFee: '0%', + assets: ['CELO', 'WETH'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.sushi.com/add/0x471EcE3750Da237f93B8E339c536989b8978a438/0xE919F65739c26a42616b7b8eedC6b5524d1e3aC4', + buyTokenUrl: + 'https://app.sushi.com/swap?inputCurrency=0x471EcE3750Da237f93B8E339c536989b8978a438&outputCurrency=0xE919F65739c26a42616b7b8eedC6b5524d1e3aC4', + createdAt: 1635168273, + }, + { + id: 'sushi-celo-cusd-dai-eol', + name: 'cUSD-DAI LP', + token: 'cUSD-DAI LP', + tokenDescription: 'Sushi', + tokenAddress: '0x850197dd5A4865324291d7B5745622A8cd732BCb', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSushicUSD-DAI', + earnedTokenAddress: '0x7f6fE34C51d5352A0CF375C0Fbe03bD19eCD8460', + earnContractAddress: '0x7f6fE34C51d5352A0CF375C0Fbe03bD19eCD8460', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'sushi-celo-cusd-dai', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'SushiSwap', + withdrawalFee: '0%', + assets: ['cUSD', 'DAI'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + 'OVER_COLLAT_ALGO_STABLECOIN', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.sushi.com/add/0x765DE816845861e75A25fCA122bb6898B8B1282a/0xE4fE50cdD716522A56204352f00AA110F731932d', + buyTokenUrl: + 'https://app.sushi.com/swap?inputCurrency=0x471EcE3750Da237f93B8E339c536989b8978a438&outputCurrency=0xE4fE50cdD716522A56204352f00AA110F731932d', + createdAt: 1635168343, + }, + { + id: 'sushi-celo-ceur-weth-eol', + name: 'cEUR-WETH LP', + token: 'cEUR-WETH LP', + tokenDescription: 'Sushi', + tokenAddress: '0xfED4f77af916B62CB073aD7AD2b2C1794c939023', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSushicEUR-WETH', + earnedTokenAddress: '0xa5aaE3a55cA356C62b5425AA4bFC212542B17777', + earnContractAddress: '0xa5aaE3a55cA356C62b5425AA4bFC212542B17777', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'sushi-celo-ceur-weth', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'SushiSwap', + withdrawalFee: '0%', + assets: ['cEUR', 'WETH'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.sushi.com/add/0xD8763CBa276a3738E6DE85b4b3bF5FDed6D6cA73/0xE919F65739c26a42616b7b8eedC6b5524d1e3aC4', + buyTokenUrl: + 'https://app.sushi.com/swap?inputCurrency=0xD8763CBa276a3738E6DE85b4b3bF5FDed6D6cA73&outputCurrency=0xE919F65739c26a42616b7b8eedC6b5524d1e3aC4', + createdAt: 1635168398, + }, + { + id: 'sushi-celo-cusd-ceur-eol', + name: 'cUSD-cEUR LP', + token: 'cUSD-cEUR LP', + tokenDescription: 'Sushi', + tokenAddress: '0x0b655E7D966CB27998af94AA5719ab7BFe07D3b3', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSushicUSD-cEUR', + earnedTokenAddress: '0xA338D34c5de06B88197609956a2dEAAfF7Af46c8', + earnContractAddress: '0xA338D34c5de06B88197609956a2dEAAfF7Af46c8', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'sushi-celo-cusd-ceur', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'SushiSwap', + withdrawalFee: '0%', + assets: ['cUSD', 'cEUR'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.sushi.com/add/0x765DE816845861e75A25fCA122bb6898B8B1282a/0xD8763CBa276a3738E6DE85b4b3bF5FDed6D6cA73', + buyTokenUrl: + 'https://app.sushi.com/swap?inputCurrency=0x765DE816845861e75A25fCA122bb6898B8B1282a&outputCurrency=0xD8763CBa276a3738E6DE85b4b3bF5FDed6D6cA73', + createdAt: 1635168488, + }, +]; diff --git a/src/features/configure/vault/cronos_pools.js b/src/features/configure/vault/cronos_pools.js new file mode 100644 index 000000000..7af3223ef --- /dev/null +++ b/src/features/configure/vault/cronos_pools.js @@ -0,0 +1,1449 @@ +export const cronosPools = [ + { + id: 'cronos-bifi-maxi', + logo: 'single-assets/BIFI.png', + name: 'BIFI Maxi', + token: 'BIFI', + tokenDescription: 'Beefy', + tokenAddress: '0xe6801928061CDbE32AC5AD0634427E140EFd05F9', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCronosBIFI', + earnedTokenAddress: '0xBa5041B1c06e8c9cFb5dDB4b82BdC52E41EA5FC5', + earnContractAddress: '0xBa5041B1c06e8c9cFb5dDB4b82BdC52E41EA5FC5', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'BIFI', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Beefy', + assets: ['BIFI'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'SingleStake', + withdrawalFee: '0%', + buyTokenUrl: + 'https://vvs.finance/swap?inputCurrency=0x5c7f8a570d578ed84e63fdfa7b1ee72deae1ae23&outputCurrency=0xe6801928061cdbe32ac5ad0634427e140efd05f9', + createdAt: 1637778656, + }, + { + id: 'vvs-vvs-versa', + name: 'VVS-VERSA', + token: 'VVS-VERSA LP', + tokenDescription: 'VVS', + tokenAddress: '0xD7F3d8035cd7BD5aD5E43Fa4E1d4DcA12e133FdD', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooVvsVVS-VERSA', + earnedTokenAddress: '0x87C8feb9CCc28f2A35C6Db0C5E492fC13D604fF5', + earnContractAddress: '0x87C8feb9CCc28f2A35C6Db0C5E492fC13D604fF5', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'vvs-vvs-versa', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'VVS', + assets: ['VVS', 'VERSA'], + withdrawalFee: '0.0%', + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + buyTokenUrl: + 'https://vvs.finance/swap?inputCurrency=0x2D03bECE6747ADC00E1a131BBA1469C15fD11e03&outputCurrency=0x00D7699b71290094CcB1a5884cD835bD65a78c17', + addLiquidityUrl: + 'https://vvs.finance/add/0x2D03bECE6747ADC00E1a131BBA1469C15fD11e03/0x00D7699b71290094CcB1a5884cD835bD65a78c17', + createdAt: 1650020388, + }, + { + id: 'vvs-vvs-tonic', + name: 'VVS-TONIC', + token: 'VVS-TONIC LP', + tokenDescription: 'VVS', + tokenAddress: '0xA922530960A1F94828A7E132EC1BA95717ED1eab', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooVvsVVS-TONIC', + earnedTokenAddress: '0xf3A68b859c361B9F516127674F648A37ad115942', + earnContractAddress: '0xf3A68b859c361B9F516127674F648A37ad115942', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'vvs-vvs-tonic', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'VVS', + assets: ['VVS', 'TONIC'], + withdrawalFee: '0.0%', + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + buyTokenUrl: + 'https://vvs.finance/swap?inputCurrency=0x2D03bECE6747ADC00E1a131BBA1469C15fD11e03&outputCurrency=0xDD73dEa10ABC2Bff99c60882EC5b2B81Bb1Dc5B2', + addLiquidityUrl: + 'https://vvs.finance/add/0x2D03bECE6747ADC00E1a131BBA1469C15fD11e03/0xDD73dEa10ABC2Bff99c60882EC5b2B81Bb1Dc5B2', + createdAt: 1649959970, + }, + { + id: 'vvs-ali-cro', + name: 'ALI-CRO', + token: 'ALI-CRO LP', + tokenDescription: 'VVS', + tokenAddress: '0x78082d9Dee5FDD53dF3b16292077Ee2F6D31F7DE', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooVvsCRO-ALI', + earnedTokenAddress: '0xA314Eaab5cF91dc994965634fCa614797DE97986', + earnContractAddress: '0xA314Eaab5cF91dc994965634fCa614797DE97986', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'vvs-ali-cro', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + withdrawalFee: '0.0%', + platform: 'VVS', + assets: ['ALI', 'CRO'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_SMALL', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + buyTokenUrl: + 'https://vvs.finance/swap?outputCurrency=0x45C135C1CDCE8d25A3B729A28659561385C52671', + addLiquidityUrl: 'https://vvs.finance/add/CRO/0x45C135C1CDCE8d25A3B729A28659561385C52671', + createdAt: 1649324095, + }, + { + id: 'vvs-vvs-cro', + name: 'VVS-CRO', + token: 'VVS-CRO LP', + tokenDescription: 'VVS', + tokenAddress: '0xbf62c67eA509E86F07c8c69d0286C0636C50270b', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooVvsVVS-CRO', + earnedTokenAddress: '0x2fbB1caF6271A14b13F3432f3aB2D6aF102560fA', + earnContractAddress: '0x2fbB1caF6271A14b13F3432f3aB2D6aF102560fA', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'vvs-vvs-cro', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'VVS', + assets: ['VVS', 'CRO'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_SMALL', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + buyTokenUrl: + 'https://vvs.finance/swap?outputCurrency=0x2D03bECE6747ADC00E1a131BBA1469C15fD11e03', + addLiquidityUrl: 'https://vvs.finance/add/CRO/0x2D03bECE6747ADC00E1a131BBA1469C15fD11e03', + createdAt: 1637045228, + }, + { + id: 'dark-dark-cro', + name: 'DARK-CRO', + token: 'DARK-CRO LP', + tokenDescription: 'MMF (DarkCrypto)', + tokenAddress: '0xA4AA24B8e855052071Df60E174219e6c8FEe45a3', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooDarkDARK-CRO', + earnedTokenAddress: '0x393170e58e2cD0E65Ef4F2b995Fbce1D6B112DFf', + earnContractAddress: '0x393170e58e2cD0E65Ef4F2b995Fbce1D6B112DFf', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'dark-dark-cro', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Other', + assets: ['DARK', 'CRO'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + buyTokenUrl: + 'https://mm.finance/swap?outputCurrency=0x83b2AC8642aE46FC2823Bc959fFEB3c1742c48B5', + addLiquidityUrl: 'https://mm.finance/add/CRO/0x83b2AC8642aE46FC2823Bc959fFEB3c1742c48B5', + createdAt: 1644921724, + }, + { + id: 'dark-sky-cro', + name: 'SKY-CRO', + token: 'SKY-CRO LP', + tokenDescription: 'MMF (DarkCrypto)', + tokenAddress: '0xaA0845EE17e4f1D4F3A8c22cB1e8102baCf56a77', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooDarkSKY-CRO', + earnedTokenAddress: '0xf79dDeC4E4f1c8578BA0DE006574db5cE71889bB', + earnContractAddress: '0xf79dDeC4E4f1c8578BA0DE006574db5cE71889bB', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'dark-sky-cro', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Other', + assets: ['SKY', 'CRO'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + buyTokenUrl: + 'https://mm.finance/swap?outputCurrency=0x9D3BBb0e988D9Fb2d55d07Fe471Be2266AD9c81c', + addLiquidityUrl: 'https://mm.finance/add/CRO/0x9D3BBb0e988D9Fb2d55d07Fe471Be2266AD9c81c', + createdAt: 1644921724, + }, + { + id: 'vvs-tonic-cro', + name: 'TONIC-CRO', + token: 'TONIC-CRO LP', + tokenDescription: 'VVS', + tokenAddress: '0x4B377121d968Bf7a62D51B96523d59506e7c2BF0', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooVvsTONIC-CRO', + earnedTokenAddress: '0xF498483a3603DcA611eb5142f06632037217cEF9', + earnContractAddress: '0xF498483a3603DcA611eb5142f06632037217cEF9', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'vvs-tonic-cro', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'VVS', + assets: ['TONIC', 'CRO'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + buyTokenUrl: + 'https://vvs.finance/swap?outputCurrency=0xDD73dEa10ABC2Bff99c60882EC5b2B81Bb1Dc5B2', + addLiquidityUrl: 'https://vvs.finance/add/CRO/0xDD73dEa10ABC2Bff99c60882EC5b2B81Bb1Dc5B2', + createdAt: 1641552219, + }, + { + id: 'vvs-cro-btc', + name: 'CRO-BTC', + token: 'CRO-BTC LP', + tokenDescription: 'VVS', + tokenAddress: '0x8F09fFf247B8fDB80461E5Cf5E82dD1aE2EBd6d7', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooVvsCRO-BTC', + earnedTokenAddress: '0x25DE69dA4469A96974FaE79d0C41366A63317FDC', + earnContractAddress: '0x25DE69dA4469A96974FaE79d0C41366A63317FDC', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'vvs-cro-btc', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'VVS', + assets: ['CRO', 'WBTC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + buyTokenUrl: + 'https://vvs.finance/swap?outputCurrency=0x062E66477Faf219F25D27dCED647BF57C3107d52', + addLiquidityUrl: 'https://vvs.finance/add/CRO/0x062E66477Faf219F25D27dCED647BF57C3107d52', + createdAt: 1637045082, + }, + { + id: 'vvs-tonic-usdc-eol', + name: 'TONIC-USDC', + token: 'TONIC-USDC LP', + tokenDescription: 'VVS', + tokenAddress: '0x2f12D47Fe49B907d7a5Df8159C1CE665187F15c4', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooVvsTONIC-USDC', + earnedTokenAddress: '0x15c0a37ee6fDA217f0f10dC88df02e7A52e377CA', + earnContractAddress: '0x15c0a37ee6fDA217f0f10dC88df02e7A52e377CA', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'vvs-tonic-usdc', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'VVS', + assets: ['TONIC', 'USDC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + buyTokenUrl: + 'https://vvs.finance/swap?outputCurrency=0xDD73dEa10ABC2Bff99c60882EC5b2B81Bb1Dc5B2', + addLiquidityUrl: + 'https://vvs.finance/add/0xc21223249CA28397B4B6541dfFaEcC539BfF0c59/0xDD73dEa10ABC2Bff99c60882EC5b2B81Bb1Dc5B2', + createdAt: 1640161565, + }, + { + id: 'liq-liq-cro', + name: 'LIQ-CRO', + token: 'LIQ-CRO LP', + tokenDescription: 'CronaSwap (Liquidus)', + tokenAddress: '0x3295007761C290741B6b363b86dF9ba3467F0754', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooLiquidusLIQ-CRO', + earnedTokenAddress: '0x9E75f8298e458B76382870982788988A0799195b', + earnContractAddress: '0x9E75f8298e458B76382870982788988A0799195b', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'liq-liq-cro', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Liquidus', + assets: ['LIQ', 'CRO'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + buyTokenUrl: + 'https://app.cronaswap.org/swap?outputCurrency=0xABd380327Fe66724FFDa91A87c772FB8D00bE488', + addLiquidityUrl: 'https://app.cronaswap.org/add/CRO/0xABd380327Fe66724FFDa91A87c772FB8D00bE488', + createdAt: 1640159132, + }, + { + id: 'vvs-cro-atom', + name: 'ATOM-CRO', + token: 'ATOM-CRO LP', + tokenDescription: 'VVS', + tokenAddress: '0x9e5bd780dff875Dd85848a65549791445AE25De0', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooVvsCRO-ATOM', + earnedTokenAddress: '0x36ca23aa859dd66486619ae7150C842F035a5c51', + earnContractAddress: '0x36ca23aa859dd66486619ae7150C842F035a5c51', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'vvs-cro-atom', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'VVS', + assets: ['ATOM', 'CRO'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + buyTokenUrl: + 'https://vvs.finance/swap?outputCurrency=0xB888d8Dd1733d72681b30c00ee76BDE93ae7aa93', + addLiquidityUrl: 'https://vvs.finance/add/CRO/0xB888d8Dd1733d72681b30c00ee76BDE93ae7aa93', + createdAt: 1639730963, + }, + { + id: 'vvs-cro-doge', + name: 'DOGE-CRO', + token: 'DOGE-CRO LP', + tokenDescription: 'VVS', + tokenAddress: '0x2A560f2312CB56327AD5D65a03F1bfEC10b62075', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooVvsCRO-DOGE', + earnedTokenAddress: '0x56E899E56F6B8635B4A01b724db23674a64A7231', + earnContractAddress: '0x56E899E56F6B8635B4A01b724db23674a64A7231', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'vvs-cro-doge', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'VVS', + assets: ['DOGE', 'CRO'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + buyTokenUrl: + 'https://vvs.finance/swap?outputCurrency=0x1a8E39ae59e5556B56b76fCBA98d22c9ae557396', + addLiquidityUrl: 'https://vvs.finance/add/CRO/0x1a8E39ae59e5556B56b76fCBA98d22c9ae557396', + createdAt: 1639476244, + }, + { + id: 'crona-wbtc-eth', + name: 'WBTC-ETH', + token: 'WBTC-ETH CLP', + tokenDescription: 'CronaSwap', + tokenAddress: '0x285a569EDD6210a0410883d2E29471A6B0c7790d', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCronaWBTC-ETH', + earnedTokenAddress: '0xE138F2c7D4262b3f4009a8c254872bB6d57A39d0', + earnContractAddress: '0xE138F2c7D4262b3f4009a8c254872bB6d57A39d0', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'crona-wbtc-eth', + oraclePrice: 0, + depositsPaused: true, + status: 'active', + platform: 'CronaSwap', + assets: ['WBTC', 'ETH'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + buyTokenUrl: + 'https://app.cronaswap.org/swap?outputCurrency=0x062E66477Faf219F25D27dCED647BF57C3107d52', + addLiquidityUrl: + 'https://app.cronaswap.org/add/0x062E66477Faf219F25D27dCED647BF57C3107d52/0xe44Fd7fCb2b1581822D0c862B68222998a0c299a', + createdAt: 1639425411, + }, + { + id: 'crona-usdc-eth', + name: 'ETH-USDC', + token: 'ETH-USDC CLP', + tokenDescription: 'CronaSwap', + tokenAddress: '0x5cc953f278bf6908B2632c65D6a202D6fd1370f9', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCronaUSDC-ETH', + earnedTokenAddress: '0xB28785D75bcC71e84A1300B488F0DB0b4277C81b', + earnContractAddress: '0xB28785D75bcC71e84A1300B488F0DB0b4277C81b', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'crona-usdc-eth', + oraclePrice: 0, + depositsPaused: true, + status: 'active', + platform: 'CronaSwap', + assets: ['ETH', 'USDC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + buyTokenUrl: + 'https://app.cronaswap.org/swap?outputCurrency=0xe44Fd7fCb2b1581822D0c862B68222998a0c299a', + addLiquidityUrl: + 'https://app.cronaswap.org/add/0xc21223249CA28397B4B6541dfFaEcC539BfF0c59/0xe44Fd7fCb2b1581822D0c862B68222998a0c299a', + createdAt: 1639129150, + }, + { + id: 'crona-wbtc-usdc-eol', + name: 'WBTC-USDC', + token: 'WBTC-USDC CLP', + tokenDescription: 'CronaSwap', + tokenAddress: '0xea7fc6A39B0d0344e1662E6ABF2FEcD19Bf3D029', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCronaWBTC-USDC', + earnedTokenAddress: '0xa0c108B0f66B8c9390F250e6519F53BDa468358F', + earnContractAddress: '0xa0c108B0f66B8c9390F250e6519F53BDa468358F', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'crona-wbtc-usdc', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'tvl', + platform: 'CronaSwap', + assets: ['WBTC', 'USDC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + buyTokenUrl: + 'https://app.cronaswap.org/swap?outputCurrency=0x062E66477Faf219F25D27dCED647BF57C3107d52', + addLiquidityUrl: + 'https://app.cronaswap.org/add/0x062E66477Faf219F25D27dCED647BF57C3107d52/0xc21223249CA28397B4B6541dfFaEcC539BfF0c59', + createdAt: 1639127958, + }, + { + id: 'vvs-cro-bifi-eol', + name: 'BIFI-CRO', + token: 'BIFI-CRO LP', + tokenDescription: 'VVS', + tokenAddress: '0x1803E360393A472beC6E1A688BDF7048d3076b1A', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooVvsCRO-BIFI', + earnedTokenAddress: '0xc1Ef52C61f3981EB615B4f7d2365c2Ec75abc5a4', + earnContractAddress: '0xc1Ef52C61f3981EB615B4f7d2365c2Ec75abc5a4', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'vvs-cro-bifi', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'VVS', + assets: ['BIFI', 'CRO'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + buyTokenUrl: + 'https://vvs.finance/swap?outputCurrency=0xe6801928061CDbE32AC5AD0634427E140EFd05F9', + addLiquidityUrl: 'https://vvs.finance/add/CRO/0xe6801928061CDbE32AC5AD0634427E140EFd05F9', + createdAt: 1638782855, + }, + { + id: 'vvs-cro-dai', + name: 'CRO-DAI', + token: 'CRO-DAI LP', + tokenDescription: 'VVS', + tokenAddress: '0x3Eb9FF92e19b73235A393000C176c8bb150F1B20', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooVvsCRO-DAI', + earnedTokenAddress: '0x3979ed0a99C63A8be8E031cfF0226A07421D524B', + earnContractAddress: '0x3979ed0a99C63A8be8E031cfF0226A07421D524B', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'vvs-cro-dai', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'VVS', + assets: ['CRO', 'DAI'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + 'OVER_COLLAT_ALGO_STABLECOIN', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + buyTokenUrl: + 'https://vvs.finance/swap?outputCurrency=0xF2001B145b43032AAF5Ee2884e456CCd805F677D', + addLiquidityUrl: 'https://vvs.finance/add/CRO/0xF2001B145b43032AAF5Ee2884e456CCd805F677D', + createdAt: 1638173103, + }, + { + id: 'crona-crona-usdc', + name: 'CRONA-USDC', + token: 'CRONA-USDC CLP', + tokenDescription: 'CronaSwap', + tokenAddress: '0x482E0eEb877091cfca439D131321bDE23ddf9bB5', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCronaCRONA-USDC', + earnedTokenAddress: '0x91B712FAb398Fa1f16Bc0B43D41bB3EEC0d73045', + earnContractAddress: '0x91B712FAb398Fa1f16Bc0B43D41bB3EEC0d73045', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'crona-crona-usdc', + oraclePrice: 0, + depositsPaused: true, + status: 'active', + platform: 'CronaSwap', + assets: ['CRONA', 'USDC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + buyTokenUrl: + 'https://app.cronaswap.org/swap?outputCurrency=0xadbd1231fb360047525BEdF962581F3eee7b49fe', + addLiquidityUrl: + 'https://app.cronaswap.org/add/0xadbd1231fb360047525BEdF962581F3eee7b49fe/0xc21223249CA28397B4B6541dfFaEcC539BfF0c59', + createdAt: 1638062854, + }, + { + id: 'crona-usdt-crona', + name: 'CRONA-USDT', + token: 'CRONA-USDT CLP', + tokenDescription: 'CronaSwap', + tokenAddress: '0x0427F9C304b0028f67A5fD61ffdD613186c1894B', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCronaUSDT-CRONA', + earnedTokenAddress: '0xedEb044BC7Ce11Dfa436CFA8Be43e6eB0d601814', + earnContractAddress: '0xedEb044BC7Ce11Dfa436CFA8Be43e6eB0d601814', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'crona-usdt-crona', + oraclePrice: 0, + depositsPaused: true, + status: 'active', + platform: 'CronaSwap', + assets: ['CRONA', 'USDT'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + buyTokenUrl: + 'https://app.cronaswap.org/swap?outputCurrency=0x66e428c3f67a68878562e79A0234c1F83c208770', + addLiquidityUrl: + 'https://app.cronaswap.org/add/0xadbd1231fb360047525BEdF962581F3eee7b49fe/0x66e428c3f67a68878562e79A0234c1F83c208770', + createdAt: 1638063529, + }, + { + id: 'crona-usdc-dai', + name: 'USDC-DAI', + token: 'USDC-DAI CLP', + tokenDescription: 'CronaSwap', + tokenAddress: '0xaEbaFDbe975DB0bfbF4e95a6493CB93d02cc86aE', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCronaUSDC-DAI', + earnedTokenAddress: '0x0DEc64E574D1C5bc15bbFc88E6D35B8c829c1396', + earnContractAddress: '0x0DEc64E574D1C5bc15bbFc88E6D35B8c829c1396', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'crona-usdc-dai', + oraclePrice: 0, + depositsPaused: true, + status: 'active', + platform: 'CronaSwap', + assets: ['USDC', 'DAI'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + 'OVER_COLLAT_ALGO_STABLECOIN', + ], + stratType: 'StratLP', + buyTokenUrl: + 'https://app.cronaswap.org/swap?outputCurrency=0xF2001B145b43032AAF5Ee2884e456CCd805F677D', + addLiquidityUrl: + 'https://app.cronaswap.org/add/0xc21223249CA28397B4B6541dfFaEcC539BfF0c59/0xF2001B145b43032AAF5Ee2884e456CCd805F677D', + createdAt: 1638064120, + }, + { + id: 'crona-busd-bnb-eol', + name: 'BNB-BUSD', + token: 'BNB-BUSD CLP', + tokenDescription: 'CronaSwap', + tokenAddress: '0xe8B18116040acf83D6e1f873375adF61103AB45c', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCronaBUSD-BNB', + earnedTokenAddress: '0xc4903232e027b61C587D110cB2DBd0079F9f5eB8', + earnContractAddress: '0xc4903232e027b61C587D110cB2DBd0079F9f5eB8', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'crona-busd-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retiredReason: 'tvl', + platform: 'CronaSwap', + assets: ['BNB', 'BUSD'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + buyTokenUrl: + 'https://app.cronaswap.org/swap?outputCurrency=0xfA9343C3897324496A05fC75abeD6bAC29f8A40f', + addLiquidityUrl: + 'https://app.cronaswap.org/add/0x6aB6d61428fde76768D7b45D8BFeec19c6eF91A8/0xfA9343C3897324496A05fC75abeD6bAC29f8A40f', + createdAt: 1638061783, + }, + { + id: 'vvs-cro-usdt', + name: 'CRO-USDT', + token: 'CRO-USDT LP', + tokenDescription: 'VVS', + tokenAddress: '0x3d2180DB9E1B909f35C398BC39EF36108C0FC8c3', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooVvsCRO-USDT', + earnedTokenAddress: '0x3bDA6f10af7911F40C761eE7B1607ECe9ee99Aa4', + earnContractAddress: '0x3bDA6f10af7911F40C761eE7B1607ECe9ee99Aa4', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'vvs-cro-usdt', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'VVS', + assets: ['CRO', 'USDT'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + buyTokenUrl: + 'https://vvs.finance/swap?outputCurrency=0x66e428c3f67a68878562e79A0234c1F83c208770', + addLiquidityUrl: 'https://vvs.finance/add/CRO/0x66e428c3f67a68878562e79A0234c1F83c208770', + createdAt: 1637834160, + }, + { + id: 'vvs-cro-usdc', + name: 'CRO-USDC', + token: 'CRO-USDC LP', + tokenDescription: 'VVS', + tokenAddress: '0xe61Db569E231B3f5530168Aa2C9D50246525b6d6', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooVvsCRO-USDC', + earnedTokenAddress: '0x6bBdC5cacB4e72884432E3d63745cc8e7A4392Ca', + earnContractAddress: '0x6bBdC5cacB4e72884432E3d63745cc8e7A4392Ca', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'vvs-cro-usdc', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'VVS', + assets: ['CRO', 'USDC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + buyTokenUrl: + 'https://vvs.finance/swap?outputCurrency=0xc21223249CA28397B4B6541dfFaEcC539BfF0c59', + addLiquidityUrl: 'https://vvs.finance/add/CRO/0xc21223249CA28397B4B6541dfFaEcC539BfF0c59', + createdAt: 1637656647, + }, + { + id: 'vvs-cro-shib', + name: 'SHIB-CRO', + token: 'SHIB-CRO LP', + tokenDescription: 'VVS', + tokenAddress: '0xc9eA98736dbC94FAA91AbF9F4aD1eb41e7fb40f4', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooVvsCRO-SHIB', + earnedTokenAddress: '0x65BF4169Df9De114c7222cf23cCF012305e58bd0', + earnContractAddress: '0x65BF4169Df9De114c7222cf23cCF012305e58bd0', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'vvs-cro-shib', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'VVS', + assets: ['SHIB', 'CRO'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + buyTokenUrl: + 'https://vvs.finance/swap?outputCurrency=0xbED48612BC69fA1CaB67052b42a95FB30C1bcFee', + addLiquidityUrl: 'https://vvs.finance/add/CRO/0xbED48612BC69fA1CaB67052b42a95FB30C1bcFee', + createdAt: 1637576058, + }, + { + id: 'vvs-vvs-usdt', + name: 'VVS-USDT', + token: 'VVS-USDT LP', + tokenDescription: 'VVS', + tokenAddress: '0x280aCAD550B2d3Ba63C8cbff51b503Ea41a1c61B', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooVvsVVS-USDT', + earnedTokenAddress: '0x2425d707a5C63ff5De83eB78f63e06c3f6eEaA1c', + earnContractAddress: '0x2425d707a5C63ff5De83eB78f63e06c3f6eEaA1c', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'vvs-vvs-usdt', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'VVS', + assets: ['VVS', 'USDT'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + buyTokenUrl: + 'https://vvs.finance/swap?outputCurrency=0x66e428c3f67a68878562e79A0234c1F83c208770', + addLiquidityUrl: + 'https://vvs.finance/add/0x2D03bECE6747ADC00E1a131BBA1469C15fD11e03/0x66e428c3f67a68878562e79A0234c1F83c208770', + createdAt: 1637322635, + }, + { + id: 'vvs-usdt-usdc', + name: 'USDT-USDC', + token: 'USDT-USDC LP', + tokenDescription: 'VVS', + tokenAddress: '0x39cC0E14795A8e6e9D02A21091b81FE0d61D82f9', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooVvsUSDT-USDC', + earnedTokenAddress: '0xB38D32336538559Ce6680952B0Be4917ed015c39', + earnContractAddress: '0xB38D32336538559Ce6680952B0Be4917ed015c39', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'vvs-usdt-usdc', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'VVS', + assets: ['USDT', 'USDC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + buyTokenUrl: + 'https://vvs.finance/swap?outputCurrency=0x66e428c3f67a68878562e79A0234c1F83c208770', + addLiquidityUrl: + 'https://vvs.finance/add/0xc21223249CA28397B4B6541dfFaEcC539BfF0c59/0x66e428c3f67a68878562e79A0234c1F83c208770', + createdAt: 1637151567, + }, + { + id: 'vvs-vvs', + logo: 'single-assets/VVS.svg', + name: 'VVS', + token: 'VVS', + tokenDescription: 'VVS', + tokenAddress: '0x2D03bECE6747ADC00E1a131BBA1469C15fD11e03', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooVvs', + earnedTokenAddress: '0xb29cCE04365400409d476e95410547275D1F86Cf', + earnContractAddress: '0xb29cCE04365400409d476e95410547275D1F86Cf', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'VVS', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'VVS', + assets: ['VVS'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_SMALL', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'SingleStake', + withdrawalFee: '0%', + buyTokenUrl: + 'https://vvs.finance/swap?outputCurrency=0x2D03bECE6747ADC00E1a131BBA1469C15fD11e03', + createdAt: 1637054454, + }, + { + id: 'vvs-vvs-usdc', + name: 'VVS-USDC', + token: 'VVS-USDC LP', + tokenDescription: 'VVS', + tokenAddress: '0x814920D1b8007207db6cB5a2dD92bF0b082BDBa1', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooVvsVVS-USDC', + earnedTokenAddress: '0x78757cdC2124A34aC5382602a95B4776D6111549', + earnContractAddress: '0x78757cdC2124A34aC5382602a95B4776D6111549', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'vvs-vvs-usdc', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'VVS', + assets: ['VVS', 'USDC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_SMALL', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + buyTokenUrl: + 'https://vvs.finance/swap?outputCurrency=0x2D03bECE6747ADC00E1a131BBA1469C15fD11e03', + addLiquidityUrl: + 'https://vvs.finance/add/0xc21223249CA28397B4B6541dfFaEcC539BfF0c59/0x2D03bECE6747ADC00E1a131BBA1469C15fD11e03', + createdAt: 1637045279, + }, + { + id: 'vvs-cro-eth', + name: 'CRO-ETH', + token: 'CRO-ETH LP', + tokenDescription: 'VVS', + tokenAddress: '0xA111C17f8B8303280d3EB01BBcd61000AA7F39F9', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooVvsCRO-ETH', + earnedTokenAddress: '0xB5F0fF997BEc850b11792ed07b2B5AbDEa869B84', + earnContractAddress: '0xB5F0fF997BEc850b11792ed07b2B5AbDEa869B84', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'vvs-cro-eth', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'VVS', + assets: ['CRO', 'ETH'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + buyTokenUrl: + 'https://vvs.finance/swap?outputCurrency=0xe44Fd7fCb2b1581822D0c862B68222998a0c299a', + addLiquidityUrl: 'https://vvs.finance/add/CRO/0xe44Fd7fCb2b1581822D0c862B68222998a0c299a', + createdAt: 1637043985, + }, + { + id: 'crona-crona', + logo: 'single-assets/CRONA.svg', + name: 'CRONA', + token: 'CRONA', + tokenDescription: 'CronaSwap', + tokenAddress: '0xadbd1231fb360047525BEdF962581F3eee7b49fe', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCrona', + earnedTokenAddress: '0x0a2289a7eE8A1f2A6B0E2320f47D8d0ff143f436', + earnContractAddress: '0x0a2289a7eE8A1f2A6B0E2320f47D8d0ff143f436', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'CRONA', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'CronaSwap', + assets: ['CRONA'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'SingleStake', + withdrawalFee: '0%', + buyTokenUrl: + 'https://app.cronaswap.org/swap?outputCurrency=0xadbd1231fb360047525BEdF962581F3eee7b49fe', + createdAt: 1637166889, + }, + { + id: 'crona-cro-crona', + name: 'CRONA-CRO', + token: 'CRONA-CRO LP', + tokenDescription: 'CronaSwap', + tokenAddress: '0xeD75347fFBe08d5cce4858C70Df4dB4Bbe8532a0', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCronaCRO-CRONA', + earnedTokenAddress: '0x8a3030e494a9c0FF12F46D0ce3F1a610dCe9B2eD', + earnContractAddress: '0x8a3030e494a9c0FF12F46D0ce3F1a610dCe9B2eD', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'crona-cro-crona', + oraclePrice: 0, + depositsPaused: true, + status: 'active', + platform: 'CronaSwap', + assets: ['CRONA', 'CRO'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + buyTokenUrl: + 'https://app.cronaswap.org/swap?outputCurrency=0xadbd1231fb360047525BEdF962581F3eee7b49fe', + addLiquidityUrl: 'https://app.cronaswap.org/add/CRO/0xadbd1231fb360047525BEdF962581F3eee7b49fe', + createdAt: 1637138260, + }, + { + id: 'crona-cro-usdc', + name: 'USDC-CRO', + token: 'USDC-CRO LP', + tokenDescription: 'CronaSwap', + tokenAddress: '0x0625A68D25d304aed698c806267a4e369e8Eb12a', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCronaCRO-USDC', + earnedTokenAddress: '0x8920E4d28Cd2DF033a18803d2081662b3b30B40b', + earnContractAddress: '0x8920E4d28Cd2DF033a18803d2081662b3b30B40b', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'crona-cro-usdc', + oraclePrice: 0, + depositsPaused: true, + status: 'active', + platform: 'CronaSwap', + assets: ['USDC', 'CRO'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + buyTokenUrl: + 'https://app.cronaswap.org/swap?outputCurrency=0xc21223249CA28397B4B6541dfFaEcC539BfF0c59', + addLiquidityUrl: 'https://app.cronaswap.org/add/CRO/0xc21223249CA28397B4B6541dfFaEcC539BfF0c59', + createdAt: 1637146470, + }, + { + id: 'crona-cro-usdt', + name: 'USDT-CRO', + token: 'USDT-CRO LP', + tokenDescription: 'CronaSwap', + tokenAddress: '0x19Dd1683e8c5F6Cc338C1438f2D25EBb4e0b0b08', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCronaCRO-USDT', + earnedTokenAddress: '0xdc036Ab31d2f105E15c1896f88D13B7bcF3e9292', + earnContractAddress: '0xdc036Ab31d2f105E15c1896f88D13B7bcF3e9292', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'crona-cro-usdt', + oraclePrice: 0, + depositsPaused: true, + status: 'active', + platform: 'CronaSwap', + assets: ['USDT', 'CRO'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + buyTokenUrl: + 'https://app.cronaswap.org/swap?outputCurrency=0xc21223249CA28397B4B6541dfFaEcC539BfF0c59', + addLiquidityUrl: 'https://app.cronaswap.org/add/CRO/0xc21223249CA28397B4B6541dfFaEcC539BfF0c59', + createdAt: 1637147878, + }, + { + id: 'crona-cro-eth-eol', + name: 'ETH-CRO', + token: 'ETH-CRO LP', + tokenDescription: 'CronaSwap', + tokenAddress: '0x8232aA9C3EFf79cd845FcDa109B461849Bf1Be83', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCronaCRO-ETH', + earnedTokenAddress: '0x40324434a0b53dd1ED167Ba30dcB6B4bd7a9536d', + earnContractAddress: '0x40324434a0b53dd1ED167Ba30dcB6B4bd7a9536d', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'crona-cro-eth', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'CronaSwap', + assets: ['ETH', 'CRO'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + buyTokenUrl: + 'https://app.cronaswap.org/swap?outputCurrency=0xe44Fd7fCb2b1581822D0c862B68222998a0c299a', + addLiquidityUrl: 'https://app.cronaswap.org/add/CRO/0xe44Fd7fCb2b1581822D0c862B68222998a0c299a', + createdAt: 1637149838, + }, + { + id: 'crona-wbtc-cro-eol', + name: 'WBTC-CRO', + token: 'WBTC-CRO LP', + tokenDescription: 'CronaSwap', + tokenAddress: '0xb4684F52867dC0dDe6F931fBf6eA66Ce94666860', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCronaWBTC-CRO', + earnedTokenAddress: '0xc7024B02a3C3893C482F5DD03193CFD1DBEC604f', + earnContractAddress: '0xc7024B02a3C3893C482F5DD03193CFD1DBEC604f', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'crona-wbtc-cro', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retiredReason: 'tvl', + platform: 'CronaSwap', + assets: ['WBTC', 'CRO'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + buyTokenUrl: + 'https://app.cronaswap.org/swap?outputCurrency=0x062E66477Faf219F25D27dCED647BF57C3107d52', + addLiquidityUrl: 'https://app.cronaswap.org/add/CRO/0x062E66477Faf219F25D27dCED647BF57C3107d52', + createdAt: 1637150470, + }, + { + id: 'crona-cro-dai-eol', + name: 'DAI-CRO', + token: 'DAI-CRO LP', + tokenDescription: 'CronaSwap', + tokenAddress: '0xDA2FC0fE4B03deFf09Fd8CFb92d14e7ebC1F9690', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCronaCRO-DAI', + earnedTokenAddress: '0x38002A6456D995AAc598bf59049151631D37689F', + earnContractAddress: '0x38002A6456D995AAc598bf59049151631D37689F', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'crona-cro-dai', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'CronaSwap', + assets: ['DAI', 'CRO'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + 'OVER_COLLAT_ALGO_STABLECOIN', + ], + stratType: 'StratLP', + buyTokenUrl: + 'https://app.cronaswap.org/swap?outputCurrency=0xF2001B145b43032AAF5Ee2884e456CCd805F677D', + addLiquidityUrl: 'https://app.cronaswap.org/add/CRO/0xF2001B145b43032AAF5Ee2884e456CCd805F677D', + createdAt: 1637152288, + }, + { + id: 'crona-usdt-busd', + name: 'BUSD-USDT', + token: 'BUSD-USDT LP', + tokenDescription: 'CronaSwap', + tokenAddress: '0x503d56B2f535784B7f2bcD6581F7e1b46DC0e60c', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCronaUSDT-BUSD', + earnedTokenAddress: '0x26be7875EE1738d8ae77ae6Bf1603beA11D525E2', + earnContractAddress: '0x26be7875EE1738d8ae77ae6Bf1603beA11D525E2', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'crona-usdt-busd', + oraclePrice: 0, + depositsPaused: true, + status: 'active', + platform: 'CronaSwap', + assets: ['BUSD', 'USDT'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + buyTokenUrl: + 'https://app.cronaswap.org/swap?inputCurrency=0x66e428c3f67a68878562e79A0234c1F83c208770&outputCurrency=0x6aB6d61428fde76768D7b45D8BFeec19c6eF91A8', + addLiquidityUrl: + 'https://app.cronaswap.org/add/0x66e428c3f67a68878562e79A0234c1F83c208770/0x6aB6d61428fde76768D7b45D8BFeec19c6eF91A8', + createdAt: 1637153704, + }, + { + id: 'crona-usdt-matic-eol', + name: 'MATIC-USDT', + token: 'MATIC-USDT LP', + tokenDescription: 'CronaSwap', + tokenAddress: '0x394080F7c770771B6EE4f4649bC477F0676ceA5C', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCronaUSDT-MATIC', + earnedTokenAddress: '0xbFBF98294243ff91e6B8dDcAD5eeB107e3677481', + earnContractAddress: '0xbFBF98294243ff91e6B8dDcAD5eeB107e3677481', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'crona-usdt-matic', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'CronaSwap', + assets: ['MATIC', 'USDT'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + buyTokenUrl: + 'https://app.cronaswap.org/swap?inputCurrency=0x66e428c3f67a68878562e79A0234c1F83c208770&outputCurrency=0xc9BAA8cfdDe8E328787E29b4B078abf2DaDc2055', + addLiquidityUrl: + 'https://app.cronaswap.org/add/0x66e428c3f67a68878562e79A0234c1F83c208770/0xc9BAA8cfdDe8E328787E29b4B078abf2DaDc2055', + createdAt: 1637155684, + }, + { + id: 'crona-usdt-ftm-eol', + name: 'FTM-USDT', + token: 'FTM-USDT LP', + tokenDescription: 'CronaSwap', + tokenAddress: '0xDee7A79bb414FFB248EF4d4c5560AdC91F547F41', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCronaUSDT-FTM', + earnedTokenAddress: '0xc07E03eE5E7c61F7EeCB5FF6FaBE2eA307433bD7', + earnContractAddress: '0xc07E03eE5E7c61F7EeCB5FF6FaBE2eA307433bD7', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'crona-usdt-ftm', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'CronaSwap', + assets: ['FTM', 'USDT'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + buyTokenUrl: + 'https://app.cronaswap.org/swap?inputCurrency=0x66e428c3f67a68878562e79A0234c1F83c208770&outputCurrency=0xB44a9B6905aF7c801311e8F4E76932ee959c663C', + addLiquidityUrl: + 'https://app.cronaswap.org/add/0x66e428c3f67a68878562e79A0234c1F83c208770/0xB44a9B6905aF7c801311e8F4E76932ee959c663C', + createdAt: 1637162500, + }, + { + id: 'crona-usdt-usdc', + name: 'USDC-USDT', + token: 'USDC-USDT LP', + tokenDescription: 'CronaSwap', + tokenAddress: '0x968fE4C06fdD503E278d89d5dFe29935A111476C', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCronaUSDT-USDC', + earnedTokenAddress: '0x3586DaCe267C48436ED12BFdF665C2E63DEeb199', + earnContractAddress: '0x3586DaCe267C48436ED12BFdF665C2E63DEeb199', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'crona-usdt-usdc', + oraclePrice: 0, + depositsPaused: true, + status: 'active', + platform: 'CronaSwap', + assets: ['USDC', 'USDT'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + buyTokenUrl: + 'https://app.cronaswap.org/swap?inputCurrency=0x66e428c3f67a68878562e79A0234c1F83c208770&outputCurrency=0xc21223249CA28397B4B6541dfFaEcC539BfF0c59', + addLiquidityUrl: + 'https://app.cronaswap.org/add/0x66e428c3f67a68878562e79A0234c1F83c208770/0xc21223249CA28397B4B6541dfFaEcC539BfF0c59', + createdAt: 1637164857, + }, +]; diff --git a/src/features/configure/vault/emerald_pools.js b/src/features/configure/vault/emerald_pools.js new file mode 100644 index 000000000..20ccae069 --- /dev/null +++ b/src/features/configure/vault/emerald_pools.js @@ -0,0 +1,356 @@ +export const emeraldPools = [ + { + id: 'valley-usdt-vs-pause', + name: 'VS-evoUSDT LP', + token: 'USDT-VS VSLP', + tokenDescription: 'ValleySwap', + tokenAddress: '0x9a91Bc3Ed7d0d6422C7599CcdD8C2200bfD4A8eA', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooValleyUSDT-VS', + earnedTokenAddress: '0x92Ac3C4D9DACb5D0C1b580FaC5402a237A170f7b', + earnContractAddress: '0x92Ac3C4D9DACb5D0C1b580FaC5402a237A170f7b', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'valley-usdt-vs', + oraclePrice: 0, + depositsPaused: true, + status: 'active', + platform: 'ValleySwap', + assets: ['VS', 'evoUSDT'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://dex.valleyswap.com/#/add/0x6Cb9750a92643382e020eA9a170AbB83Df05F30B/0xBC033203796CC2C8C543a5aAe93a9a643320433D', + buyTokenUrl: + 'https://dex.valleyswap.com/#/swap?outputCurrency=0xBC033203796CC2C8C543a5aAe93a9a643320433D', + createdAt: 1653356245, + }, + { + id: 'valley-usdt-usdc-pause', + name: 'evoUSDC-evoUSDT LP', + token: 'USDT-USDC VSLP', + tokenDescription: 'ValleySwap', + tokenAddress: '0x6755347199f6a2864936Cd467a1A2b03fBdeB9f9', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooValleyUSDT-USDC', + earnedTokenAddress: '0xa7D151e2bCd83750e2596e794248cc400F018a23', + earnContractAddress: '0xa7D151e2bCd83750e2596e794248cc400F018a23', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'valley-usdt-usdc', + oraclePrice: 0, + depositsPaused: true, + status: 'active', + platform: 'ValleySwap', + assets: ['evoUSDC', 'evoUSDT'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://dex.valleyswap.com/#/add/0x6Cb9750a92643382e020eA9a170AbB83Df05F30B/0x94fbfFe5698DB6f54d6Ca524DbE673a7729014Be', + buyTokenUrl: + 'https://dex.valleyswap.com/#/swap?outputCurrency=0x94fbfFe5698DB6f54d6Ca524DbE673a7729014Be', + createdAt: 1653001065, + }, + { + id: 'valley-btc-usdt-pause', + name: 'evoBTC-evoUSDT LP', + token: 'BTC-USDT VSLP', + tokenDescription: 'ValleySwap', + tokenAddress: '0x061b31c4af2E1338224CB46A15Fec86f509fcA00', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooValleyBTC-USDT', + earnedTokenAddress: '0x74d6b1D419556d8A3E3038A9c8096DA0cA4beF24', + earnContractAddress: '0x74d6b1D419556d8A3E3038A9c8096DA0cA4beF24', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'valley-btc-usdt', + oraclePrice: 0, + depositsPaused: true, + status: 'active', + platform: 'ValleySwap', + assets: ['evoBTC', 'evoUSDT'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://dex.valleyswap.com/#/add/0x010CDf0Db2737f9407F8CFcb4dCaECA4dE54c815/0x6Cb9750a92643382e020eA9a170AbB83Df05F30B', + buyTokenUrl: + 'https://dex.valleyswap.com/#/swap?outputCurrency=0x010CDf0Db2737f9407F8CFcb4dCaECA4dE54c815', + createdAt: 1653071210, + }, + { + id: 'valley-usdt-eth-pause', + name: 'evoETH-evoUSDT LP', + token: 'USDT-ETH VSLP', + tokenDescription: 'ValleySwap', + tokenAddress: '0x9de37Ccf7d908D91d29931417374cC76bAc72e73', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooValleyUSDT-ETH', + earnedTokenAddress: '0x3cf4fe3f469b0710E8a42e44B64c85DFc300f22A', + earnContractAddress: '0x3cf4fe3f469b0710E8a42e44B64c85DFc300f22A', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'valley-usdt-eth', + oraclePrice: 0, + depositsPaused: true, + status: 'active', + platform: 'ValleySwap', + assets: ['evoETH', 'evoUSDT'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://dex.valleyswap.com/#/add/0x6Cb9750a92643382e020eA9a170AbB83Df05F30B/0xE9b38eD157429483EbF87Cf6C002cecA5fd66783', + buyTokenUrl: + 'https://dex.valleyswap.com/#/swap?outputCurrency=0xE9b38eD157429483EbF87Cf6C002cecA5fd66783', + createdAt: 1653007121, + }, + { + id: 'yuzu-ceusdc-usdt', + name: 'ceUSDC-USDT LP', + token: 'ceUSDC-USDT LP', + tokenDescription: 'YuzuSwap', + tokenAddress: '0x49c56e261744BB7e39359D42E139812Cb5A259c3', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooYuzuceUSDC-USDT', + earnedTokenAddress: '0xb42441990ffb06f155Bb5b52577Fb137Bcb1eb5F', + earnContractAddress: '0xb42441990ffb06f155Bb5b52577Fb137Bcb1eb5F', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'yuzu-ceusdc-usdt', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'YuzuSwap', + assets: ['ceUSDC', 'USDT'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_HIGH', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://app.yuzu-swap.com/#/add/0x81ECac0D6Be0550A00FF064a4f9dd2400585FE9c/0xdC19A122e268128B5eE20366299fc7b5b199C8e3', + buyTokenUrl: 'https://app.yuzu-swap.com/#/swap', + createdAt: 1653320563, + }, + { + id: 'yuzu-ceusdc-yuzu', + name: 'ceUSDC-YUZU LP', + token: 'ceUSDC-YUZU LP', + tokenDescription: 'YuzuSwap', + tokenAddress: '0x63217aC1600Fb337a3B7A70533dc71870E6b68cc', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooYuzuceUSDC-YUZU', + earnedTokenAddress: '0xD5824cED886cA03B8914589146161F2474B75a24', + earnContractAddress: '0xD5824cED886cA03B8914589146161F2474B75a24', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'yuzu-ceusdc-yuzu', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'YuzuSwap', + assets: ['ceUSDC', 'YUZU'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://app.yuzu-swap.com/#/add/0x81ECac0D6Be0550A00FF064a4f9dd2400585FE9c/0xf02b3e437304892105992512539F769423a515Cb', + buyTokenUrl: 'https://app.yuzu-swap.com/#/swap', + createdAt: 1652382925, + }, + { + id: 'yuzu-wrose-weth', + name: 'WETH-ROSE LP', + token: 'WETH-ROSE LP', + tokenDescription: 'YuzuSwap', + tokenAddress: '0x28c9D3e689B5d3629aFC2D69ef6a2799578574e0', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooYuzuROSE-WETH', + earnedTokenAddress: '0x80514CfB7cb438F1f997Ab62fFD1314c1a1c0f12', + earnContractAddress: '0x80514CfB7cb438F1f997Ab62fFD1314c1a1c0f12', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'yuzu-wrose-weth', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'YuzuSwap', + assets: ['WETH', 'ROSE'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://app.yuzu-swap.com/#/add/0x3223f17957Ba502cbe71401D55A0DB26E5F7c68F/0x21C718C22D52d0F3a789b752D4c2fD5908a8A733', + buyTokenUrl: 'https://app.yuzu-swap.com/#/swap', + createdAt: 1652382924, + }, + { + id: 'yuzu-usdt-yuzu', + name: 'USDT-YUZU LP', + token: 'USDT-YUZU LP', + tokenDescription: 'YuzuSwap', + tokenAddress: '0xD2076c230FE52572344Dd7394fb50d8280c390D1', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooYuzuUSDT-YUZU', + earnedTokenAddress: '0x685aaba90132C70220765Ac8c729EE7D935d7810', + earnContractAddress: '0x685aaba90132C70220765Ac8c729EE7D935d7810', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'yuzu-usdt-yuzu', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'YuzuSwap', + assets: ['USDT', 'YUZU'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://app.yuzu-swap.com/#/add/0xdC19A122e268128B5eE20366299fc7b5b199C8e3/0xf02b3e437304892105992512539F769423a515Cb', + buyTokenUrl: 'https://app.yuzu-swap.com/#/swap', + createdAt: 1652382923, + }, + { + id: 'yuzu-wrose-yuzu', + name: 'YUZU-ROSE LP', + token: 'YUZU-ROSE LP', + tokenDescription: 'YuzuSwap', + tokenAddress: '0x941494A56164eA04d79f9867ddDB0Dd754A625cC', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooYuzuYUZU-ROSE', + earnedTokenAddress: '0xcD5B6833d4A30c43F1c30bDC4D8DC5c7aCB50972', + earnContractAddress: '0xcD5B6833d4A30c43F1c30bDC4D8DC5c7aCB50972', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'yuzu-wrose-yuzu', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'YuzuSwap', + assets: ['YUZU', 'ROSE'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://app.yuzu-swap.com/#/add/0x21C718C22D52d0F3a789b752D4c2fD5908a8A733/0xf02b3e437304892105992512539F769423a515Cb', + buyTokenUrl: 'https://app.yuzu-swap.com/#/swap', + createdAt: 1652382922, + }, + { + id: 'yuzu-wrose-usdt', + name: 'USDT-ROSE LP', + token: 'USDT-ROSE LP', + tokenDescription: 'YuzuSwap', + tokenAddress: '0xfb9BD52Abe613A5C4A20e9fC09462A2EC5F2d1B2', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooYuzuUSDT-ROSE', + earnedTokenAddress: '0x9712b6aff7d2dB96097565EB8b2183b75e839130', + earnContractAddress: '0x9712b6aff7d2dB96097565EB8b2183b75e839130', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'yuzu-wrose-usdt', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'YuzuSwap', + assets: ['USDT', 'ROSE'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://app.yuzu-swap.com/#/add/0x21C718C22D52d0F3a789b752D4c2fD5908a8A733/0xdC19A122e268128B5eE20366299fc7b5b199C8e3', + buyTokenUrl: 'https://app.yuzu-swap.com/#/swap', + createdAt: 1652382921, + }, +]; diff --git a/src/features/configure/vault/fantom_pools.js b/src/features/configure/vault/fantom_pools.js new file mode 100644 index 000000000..f71d0033e --- /dev/null +++ b/src/features/configure/vault/fantom_pools.js @@ -0,0 +1,9298 @@ +export const fantomPools = [ + { + id: 'fantom-bifi-maxi', + logo: 'single-assets/BIFI.png', + name: 'BIFI Maxi', + token: 'BIFI', + tokenDescription: 'Beefy', + tokenAddress: '0xd6070ae98b8069de6B494332d1A1a81B6179D960', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooFantomBIFI', + earnedTokenAddress: '0xbF07093ccd6adFC3dEB259C557b61E94c1F66945', + earnContractAddress: '0xbF07093ccd6adFC3dEB259C557b61E94c1F66945', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'BIFI', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Beefy', + assets: ['BIFI'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'Maxi', + withdrawalFee: '0.05%', + buyTokenUrl: + 'https://spooky.fi/#/swap?outputCurrency=0xd6070ae98b8069de6B494332d1A1a81B6179D960', + createdAt: 1622574935, + }, + { + id: 'beefy-beFTM', + logo: 'single-assets/beFTM.svg', + name: 'beFTM', + token: 'beFTM', + tokenDescription: 'Beefy', + tokenAddress: '0x7381eD41F6dE418DdE5e84B55590422a57917886', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'moobeFTM', + earnedTokenAddress: '0x185647c55633A5706aAA3278132537565c925078', + earnContractAddress: '0x185647c55633A5706aAA3278132537565c925078', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'beFTM', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Beefy', + assets: ['beFTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'SingleStake', + withdrawalFee: '0.01%', + mintTokenUrl: 'https://beta.beefy.finance/#/fantom/vault/beefy-beFTM', + buyTokenUrl: + 'https://spooky.fi/#/swap?outputCurrency=0x7381eD41F6dE418DdE5e84B55590422a57917886', + createdAt: 1646162527, + }, + { + id: 'curve-ftm-geist', + logo: 'uncategorized/3CRV.png', + name: 'fUSDT/DAI/USDC', + token: 'g3CRV', + tokenDescription: 'Curve', + tokenAddress: '0xD02a30d33153877BC20e5721ee53DeDEE0422B2F', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCurveG3CRV', + earnedTokenAddress: '0xf710D90A1Bd702dAEa619eEbbe876e7085c2A1df', + earnContractAddress: '0xf710D90A1Bd702dAEa619eEbbe876e7085c2A1df', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'curve-ftm-geist', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Curve', + assets: ['fUSDT', 'USDC', 'DAI'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + 'OVER_COLLAT_ALGO_STABLECOIN', + ], + stratType: 'StratMultiLP', + withdrawalFee: '0%', + addLiquidityUrl: 'https://ftm.curve.fi/geist/deposit', + createdAt: 1653563943, + }, + { + id: 'tomb-ftm-dai', + name: 'DAI-FTM LP', + token: 'DAI-FTM TLP', + tokenDescription: 'TombSwap', + tokenAddress: '0xB89486a030075B42d589008Da7877dd783Af968F', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooTombFTM-DAI', + earnedTokenAddress: '0x51Ff746981ed53fc9e6B8651D0ccCA02DAC96F11', + earnContractAddress: '0x51Ff746981ed53fc9e6B8651D0ccCA02DAC96F11', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'tomb-ftm-dai', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Tomb', + assets: ['DAI', 'FTM'], + risks: ['COMPLEXITY_LOW', 'BATTLE_TESTED', 'IL_HIGH', 'MCAP_MEDIUM', 'CONTRACTS_VERIFIED'], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: 'https://swap.tomb.com/#/add/ETH/0x8D11eC38a3EB5E956B052f67Da8Bdc9bef8Abf3E', + buyTokenUrl: + 'https://swap.tomb.com/#/swap?inputCurrency=ETH&outputCurrency=0x8D11eC38a3EB5E956B052f67Da8Bdc9bef8Abf3E', + createdAt: 1654074996, + }, + { + id: 'tomb-ftm-eth', + name: 'ETH-FTM LP', + token: 'ETH-FTM TLP', + tokenDescription: 'TombSwap', + tokenAddress: '0x8E49C8fBF6128356019D8A7d34E9b92f03bc2803', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooTombFTM-ETH', + earnedTokenAddress: '0xB41a14B5AA644BE3A78a54d7f12c405cF004C758', + earnContractAddress: '0xB41a14B5AA644BE3A78a54d7f12c405cF004C758', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'tomb-ftm-eth', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Tomb', + assets: ['ETH', 'FTM'], + risks: ['COMPLEXITY_LOW', 'BATTLE_TESTED', 'IL_HIGH', 'MCAP_MEDIUM', 'CONTRACTS_VERIFIED'], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: 'https://swap.tomb.com/#/add/ETH/0x74b23882a30290451A17c44f4F05243b6b58C76d', + buyTokenUrl: + 'https://swap.tomb.com/#/swap?inputCurrency=ETH&outputCurrency=0x74b23882a30290451A17c44f4F05243b6b58C76d', + createdAt: 1654075223, + }, + { + id: 'tomb-ftm-fusdt', + name: 'fUSDT-FTM LP', + token: 'fUSDT-FTM TLP', + tokenDescription: 'TombSwap', + tokenAddress: '0x681d32C8b374c2Dd83064775dBB48EA97db2c506', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooTombFTM-fUSDT', + earnedTokenAddress: '0x0d367827F705E893C0e1ab0DfC800104b186579e', + earnContractAddress: '0x0d367827F705E893C0e1ab0DfC800104b186579e', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'tomb-ftm-fusdt', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Tomb', + assets: ['fUSDT', 'FTM'], + risks: ['COMPLEXITY_LOW', 'BATTLE_TESTED', 'IL_HIGH', 'MCAP_MICRO', 'CONTRACTS_VERIFIED'], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: 'https://swap.tomb.com/#/add/ETH/0x049d68029688eAbF473097a2fC38ef61633A3C7A', + buyTokenUrl: + 'https://swap.tomb.com/#/swap?inputCurrency=ETH&outputCurrency=0x049d68029688eAbF473097a2fC38ef61633A3C7A', + createdAt: 1654075348, + }, + { + id: 'tomb-ftm-btc', + name: 'BTC-FTM LP', + token: 'BTC-FTM TLP', + tokenDescription: 'TombSwap', + tokenAddress: '0x5063C79e377332FB98CB6C8DB414d752DC7C478E', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooTombFTM-BTC', + earnedTokenAddress: '0xAdB792870c3F761301Ff23BC9Fb7fEABd451c212', + earnContractAddress: '0xAdB792870c3F761301Ff23BC9Fb7fEABd451c212', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'tomb-ftm-btc', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Tomb', + assets: ['BTC', 'FTM'], + risks: ['COMPLEXITY_LOW', 'BATTLE_TESTED', 'IL_HIGH', 'MCAP_MEDIUM', 'CONTRACTS_VERIFIED'], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: 'https://swap.tomb.com/#/add/ETH/0x321162Cd933E2Be498Cd2267a90534A804051b11', + buyTokenUrl: + 'https://swap.tomb.com/#/swap?inputCurrency=ETH&outputCurrency=0x321162Cd933E2Be498Cd2267a90534A804051b11', + createdAt: 1654075440, + }, + { + id: 'tomb-ftm-mim', + name: 'MIM-FTM LP', + token: 'FTM-MIM TLP', + tokenDescription: 'TombSwap', + tokenAddress: '0xa7c86Fc1B87830b8aBFA623571405E03560a8326', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooTombFTM-MIM', + earnedTokenAddress: '0x5Bd971AB8c4dC2bAC0Db6d5dDD9ab1BD8FaC1067', + earnContractAddress: '0x5Bd971AB8c4dC2bAC0Db6d5dDD9ab1BD8FaC1067', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'tomb-ftm-mim', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Tomb', + assets: ['FTM', 'MIM'], + risks: ['COMPLEXITY_LOW', 'BATTLE_TESTED', 'IL_HIGH', 'MCAP_MEDIUM', 'CONTRACTS_VERIFIED'], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: 'https://swap.tomb.com/#/add/ETH/0x82f0B8B456c1A451378467398982d4834b6829c1', + buyTokenUrl: + 'https://swap.tomb.com/#/swap?inputCurrency=ETH&outputCurrency=0x82f0B8B456c1A451378467398982d4834b6829c1', + createdAt: 1654075665, + }, + { + id: 'tomb-btc-eth', + name: 'BTC-ETH LP', + token: 'BTC-ETH TLP', + tokenDescription: 'TombSwap', + tokenAddress: '0x3f468804d133894a73b54cfc07D5886E5195255f', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooTombBTC-ETH', + earnedTokenAddress: '0xd23486489e3fB6F461107B7422c625c2c3B77fEf', + earnContractAddress: '0xd23486489e3fB6F461107B7422c625c2c3B77fEf', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'tomb-btc-eth', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Tomb', + assets: ['BTC', 'ETH'], + risks: ['COMPLEXITY_LOW', 'BATTLE_TESTED', 'IL_LOW', 'MCAP_LARGE', 'CONTRACTS_VERIFIED'], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://swap.tomb.com/#/add/0x321162Cd933E2Be498Cd2267a90534A804051b11/0x74b23882a30290451A17c44f4F05243b6b58C76d', + buyTokenUrl: + 'https://swap.tomb.com/#/swap?inputCurrency=0x321162Cd933E2Be498Cd2267a90534A804051b11&outputCurrency=0x74b23882a30290451A17c44f4F05243b6b58C76d', + createdAt: 1654075781, + }, + { + id: 'tomb-treeb-usdc', + name: 'TREEB-USDC LP', + token: 'TREEB-USDC TLP', + tokenDescription: 'TombSwap', + tokenAddress: '0x37fb87347BCAd93B12Fd4E43BCf07620d6387A92', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooTombTREEB-USDC', + earnedTokenAddress: '0xE0c2D6349C7C108c2AD14E7e7cCd53E15264D143', + earnContractAddress: '0xE0c2D6349C7C108c2AD14E7e7cCd53E15264D143', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'tomb-treeb-usdc', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Tomb', + assets: ['TREEB', 'USDC'], + risks: ['COMPLEXITY_LOW', 'BATTLE_TESTED', 'IL_HIGH', 'MCAP_MICRO', 'CONTRACTS_VERIFIED'], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://swap.tomb.com/#/add/0x04068DA6C83AFCFA0e13ba15A6696662335D5B75/0xc60D7067dfBc6f2caf30523a064f416A5Af52963', + buyTokenUrl: + 'https://swap.tomb.com/#/swap?inputCurrency=0x04068DA6C83AFCFA0e13ba15A6696662335D5B75&outputCurrency=0xc60D7067dfBc6f2caf30523a064f416A5Af52963', + createdAt: 1653831633, + }, + { + id: 'tomb-fusd-usdc', + name: 'FUSD-USDC LP', + token: 'FUSD-USDC TLP', + tokenDescription: 'TombSwap', + tokenAddress: '0x38fF5377A42D0A45C829de45801481869087d22C', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooTombFUSD-USDC', + earnedTokenAddress: '0xF9Ec7e648a50806Ec3Cd21415bebAB3c942Ee01b', + earnContractAddress: '0xF9Ec7e648a50806Ec3Cd21415bebAB3c942Ee01b', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'tomb-fusd-usdc', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Tomb', + assets: ['FUSD', 'USDC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'CONTRACTS_VERIFIED', + 'ALGO_STABLE', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://swap.tomb.com/#/add/0x04068DA6C83AFCFA0e13ba15A6696662335D5B75/0xAd84341756Bf337f5a0164515b1f6F993D194E1f', + buyTokenUrl: + 'https://swap.tomb.com/#/swap?inputCurrency=0x04068DA6C83AFCFA0e13ba15A6696662335D5B75&outputCurrency=0xAd84341756Bf337f5a0164515b1f6F993D194E1f', + createdAt: 1653470845, + }, + { + id: 'tomb-tomb-treeb', + name: 'TOMB-TREEB LP', + token: 'TOMB-TREEB TLP', + tokenDescription: 'TombSwap', + tokenAddress: '0x801D17c21D0808Bc00D46E2f081214c9d82F4FbF', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooTombTOMB-TREEB', + earnedTokenAddress: '0x6b9de11ACf846d961E0b7AF3B0B5066DDBED5eA1', + earnContractAddress: '0x6b9de11ACf846d961E0b7AF3B0B5066DDBED5eA1', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'tomb-tomb-treeb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Tomb', + assets: ['TOMB', 'TREEB'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'CONTRACTS_VERIFIED', + 'ALGO_STABLE', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://swap.tomb.com/#/add/0x6c021Ae822BEa943b2E66552bDe1D2696a53fbB7/0xc60D7067dfBc6f2caf30523a064f416A5Af52963', + buyTokenUrl: + 'https://swap.tomb.com/#/swap?inputCurrency=0x6c021Ae822BEa943b2E66552bDe1D2696a53fbB7&outputCurrency=0xc60D7067dfBc6f2caf30523a064f416A5Af52963', + createdAt: 1653470692, + }, + { + id: 'tomb-tomb-zoo', + name: 'TOMB-ZOO LP', + token: 'TOMB-ZOO TLP', + tokenDescription: 'TombSwap', + tokenAddress: '0x67019E7B4A233cc2E875e5c713042333d879aaCE', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooTombTOMB-ZOO', + earnedTokenAddress: '0x1A12C7F1413E261E21b48DB105D0f3bd904ceD58', + earnContractAddress: '0x1A12C7F1413E261E21b48DB105D0f3bd904ceD58', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'tomb-tomb-zoo', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Tomb', + assets: ['TOMB', 'ZOO'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'CONTRACTS_VERIFIED', + 'ALGO_STABLE', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://swap.tomb.com/#/add/0x6c021Ae822BEa943b2E66552bDe1D2696a53fbB7/0x09e145A1D53c0045F41aEEf25D8ff982ae74dD56', + buyTokenUrl: + 'https://swap.tomb.com/#/swap?inputCurrency=0x6c021Ae822BEa943b2E66552bDe1D2696a53fbB7&outputCurrency=0x09e145A1D53c0045F41aEEf25D8ff982ae74dD56', + createdAt: 1653470478, + }, + { + id: 'tomb-tomb-scream', + name: 'TOMB-SCREAM LP', + token: 'TOMB-SCREAM TLP', + tokenDescription: 'TombSwap', + tokenAddress: '0x99680A9a70EdB9B2C2a7d2B293226d3a033074F8', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooTombTOMB-SCREAM', + earnedTokenAddress: '0xdeFc374Cb3F9E00a65241C89F9f0eed0B399BF6c', + earnContractAddress: '0xdeFc374Cb3F9E00a65241C89F9f0eed0B399BF6c', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'tomb-tomb-scream', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Tomb', + assets: ['TOMB', 'SCREAM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'CONTRACTS_VERIFIED', + 'ALGO_STABLE', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://swap.tomb.com/#/add/0x6c021Ae822BEa943b2E66552bDe1D2696a53fbB7/0xe0654C8e6fd4D733349ac7E09f6f23DA256bF475', + buyTokenUrl: + 'https://swap.tomb.com/#/swap?inputCurrency=0x6c021Ae822BEa943b2E66552bDe1D2696a53fbB7&outputCurrency=0xe0654C8e6fd4D733349ac7E09f6f23DA256bF475', + createdAt: 1653470613, + }, + { + id: 'spirit-wftm-midas', + name: 'MIDAS-FTM LP', + token: 'MIDAS-FTM SLP', + tokenDescription: 'SpiritSwap', + tokenAddress: '0xede32b76302CB71cc0467C4B42DAbFfa6b091Dd1', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSpiritWFTM-MIDAS', + earnedTokenAddress: '0x826B9d7Aaa2C597ec06efE4f0753C4D7A57b5eBF', + earnContractAddress: '0x826B9d7Aaa2C597ec06efE4f0753C4D7A57b5eBF', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'spirit-wftm-midas', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SpiritSwap', + assets: ['MIDAS', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://swap.spiritswap.finance/#/add/FTM/0xb37528DA6b4D378305d000a66Ad91bd88E626761', + buyTokenUrl: 'https://swap.spiritswap.finance/#/exchange/swap/FTM/MIDAS', + createdAt: 1653405420, + }, + { + id: 'hector-tor-crv', + logo: 'fantom/TOR-2CRV.svg', + name: 'TOR/DAI/USDC', + token: 'TOR-2CRV', + tokenDescription: 'Curve (Hector)', + tokenAddress: '0x24699312CB27C26Cfc669459D670559E5E44EE60', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooHectorTOR-2CRV', + earnedTokenAddress: '0x8B92DE822b121761a3caF894627a09a9f87864C0', + earnContractAddress: '0x8B92DE822b121761a3caF894627a09a9f87864C0', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'hector-tor-crv', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Hector', + assets: ['TOR', 'DAI', 'USDC'], + risks: [ + 'COMPLEXITY_LOW', + 'NEW_STRAT', + 'MCAP_MICRO', + 'AUDIT', + 'IL_NONE', + 'CONTRACTS_VERIFIED', + 'ALGO_STABLE', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: 'https://app.hector.finance/#/farming', + buyTokenUrl: 'https://app.hector.finance/#/dex', + createdAt: 1650149559, + }, + { + id: 'boo-wftm-tor', + name: 'TOR-FTM LP', + token: 'TOR-FTM LP', + tokenDescription: 'SpookySwap', + tokenAddress: '0x41d88635029c4402BF9914782aE55c412f8F2142', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSpookyTOR-FTM', + earnedTokenAddress: '0xf723aE5478B1F03cA88C204F1ae5498d3576B78F', + earnContractAddress: '0xf723aE5478B1F03cA88C204F1ae5498d3576B78F', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'boo-wftm-tor', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SpookySwap', + assets: ['TOR', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + 'ALGO_STABLE', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: 'https://spooky.fi/#/add/FTM/0x74E23dF9110Aa9eA0b6ff2fAEE01e740CA1c642e', + buyTokenUrl: + 'https://spooky.fi/#/swap?outputCurrency=0x74E23dF9110Aa9eA0b6ff2fAEE01e740CA1c642e', + createdAt: 1651814013, + }, + { + id: 'based-based-usdc', + name: 'BASED-USDC LP', + token: 'BASED-USDC TLP', + tokenDescription: 'TombSwap (Based)', + tokenAddress: '0x7c849a7E2cb08f09cf37482cc0A04ecB5891844a', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBasedBASED-USDC', + earnedTokenAddress: '0x4cb0dd253ae27Ff7231372424bC988c711a61783', + earnContractAddress: '0x4cb0dd253ae27Ff7231372424bC988c711a61783', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'based-based-usdc', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Tomb', + assets: ['BASED', 'USDC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'CONTRACTS_VERIFIED', + 'ALGO_STABLE', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://swap.tomb.com/#/add/0x04068DA6C83AFCFA0e13ba15A6696662335D5B75/0x8D7d3409881b51466B483B11Ea1B8A03cdEd89ae', + buyTokenUrl: + 'https://swap.tomb.com/#/swap?inputCurrency=0x04068DA6C83AFCFA0e13ba15A6696662335D5B75&outputCurrency=0x8D7d3409881b51466B483B11Ea1B8A03cdEd89ae', + createdAt: 1653896828, + }, + { + id: 'tomb-usdc-wftm', + name: 'FTM-USDC LP', + token: 'FTM-USDC LP', + tokenDescription: 'TombSwap', + tokenAddress: '0x8C853ce1561A2c2cD2E857670e3cCd04BA4cB27b', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooTombFTM-USDC', + earnedTokenAddress: '0x1f69E7B04458cf99B962c26aeCAe87F963F9513F', + earnContractAddress: '0x1f69E7B04458cf99B962c26aeCAe87F963F9513F', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'tomb-usdc-wftm', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Tomb', + assets: ['FTM', 'USDC'], + risks: ['COMPLEXITY_LOW', 'BATTLE_TESTED', 'IL_HIGH', 'MCAP_LARGE', 'CONTRACTS_VERIFIED'], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://swap.tomb.com/#/add/0x04068DA6C83AFCFA0e13ba15A6696662335D5B75/0x21be370D5312f44cB42ce377BC9b8a0cEF1A4C83', + buyTokenUrl: + 'https://swap.tomb.com/#/swap?inputCurrency=0x21be370D5312f44cB42ce377BC9b8a0cEF1A4C83&outputCurrency=0x04068DA6C83AFCFA0e13ba15A6696662335D5B75', + createdAt: 1653010779, + }, + { + id: 'tomb-usdc-tshare', + name: 'TSHARE-USDC LP', + token: 'TSHARE-USDC LP', + tokenDescription: 'TombSwap', + tokenAddress: '0xDEc1259188E6c5273AcD1e84d5B4b58897CA013e', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooTombTSHARE-USDC', + earnedTokenAddress: '0xE1b37d6667c2cA297ce675618ec457C25cfbC174', + earnContractAddress: '0xE1b37d6667c2cA297ce675618ec457C25cfbC174', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'tomb-usdc-tshare', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Tomb', + assets: ['TSHARE', 'USDC'], + risks: ['COMPLEXITY_LOW', 'BATTLE_TESTED', 'IL_HIGH', 'MCAP_SMALL', 'CONTRACTS_VERIFIED'], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://swap.tomb.com/#/add/0x04068DA6C83AFCFA0e13ba15A6696662335D5B75/0x4cdF39285D7Ca8eB3f090fDA0C069ba5F4145B37', + buyTokenUrl: + 'https://swap.tomb.com/#/swap?inputCurrency=0x04068DA6C83AFCFA0e13ba15A6696662335D5B75&outputCurrency=0x4cdF39285D7Ca8eB3f090fDA0C069ba5F4145B37', + createdAt: 1653012955, + }, + { + id: 'tomb-usdc-tomb', + name: 'TOMB-USDC LP', + token: 'TOMB-USDC LP', + tokenDescription: 'TombSwap', + tokenAddress: '0xAA9BE68D990d5e56870B2E0544f96ffb0B1dA8F7', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooTombTOMB-USDC', + earnedTokenAddress: '0x3220A0005015f089d583b94aA4B103e6e28E3aE2', + earnContractAddress: '0x3220A0005015f089d583b94aA4B103e6e28E3aE2', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'tomb-usdc-tomb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Tomb', + assets: ['TOMB', 'USDC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'CONTRACTS_VERIFIED', + 'ALGO_STABLE', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://swap.tomb.com/#/add/0x04068DA6C83AFCFA0e13ba15A6696662335D5B75/0x6c021Ae822BEa943b2E66552bDe1D2696a53fbB7', + buyTokenUrl: + 'https://swap.tomb.com/#/swap?inputCurrency=0x04068DA6C83AFCFA0e13ba15A6696662335D5B75&outputCurrency=0x6c021Ae822BEa943b2E66552bDe1D2696a53fbB7', + createdAt: 1653013367, + }, + { + id: 'tomb-usdc-fusdt', + name: 'fUSDT-USDC LP', + token: 'fUSDT-USDC LP', + tokenDescription: 'TombSwap', + tokenAddress: '0x3486011E2E18ccf4558c4C84d5cbBcCFdbF16c03', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooTombFUSDT-USDC', + earnedTokenAddress: '0x95EA2284111960c748edF4795cb3530e5E423b8c', + earnContractAddress: '0x95EA2284111960c748edF4795cb3530e5E423b8c', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'tomb-usdc-fusdt', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Tomb', + assets: ['fUSDT', 'USDC'], + risks: ['COMPLEXITY_LOW', 'BATTLE_TESTED', 'IL_NONE', 'MCAP_LARGE', 'CONTRACTS_VERIFIED'], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://swap.tomb.com/#/add/0x04068DA6C83AFCFA0e13ba15A6696662335D5B75/0x049d68029688eAbF473097a2fC38ef61633A3C7A', + buyTokenUrl: + 'https://swap.tomb.com/#/swap?inputCurrency=0x04068DA6C83AFCFA0e13ba15A6696662335D5B75&outputCurrency=0x049d68029688eAbF473097a2fC38ef61633A3C7A', + createdAt: 1653065311, + }, + { + id: 'tomb-usdc-mim', + name: 'MIM-USDC LP', + token: 'MIM-USDC LP', + tokenDescription: 'TombSwap', + tokenAddress: '0xd840aF68b35469eC3478c9b0CBCDdc6dc80Dd98C', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooTombMIM-USDC', + earnedTokenAddress: '0xaf5C14D2CE23B5de3c9d7e6F0C4178D35Ffc07D6', + earnContractAddress: '0xaf5C14D2CE23B5de3c9d7e6F0C4178D35Ffc07D6', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'tomb-usdc-mim', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Tomb', + assets: ['MIM', 'USDC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_MEDIUM', + 'CONTRACTS_VERIFIED', + 'OVER_COLLAT_ALGO_STABLECOIN', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://swap.tomb.com/#/add/0x04068DA6C83AFCFA0e13ba15A6696662335D5B75/0x82f0B8B456c1A451378467398982d4834b6829c1', + buyTokenUrl: + 'https://swap.tomb.com/#/swap?inputCurrency=0x04068DA6C83AFCFA0e13ba15A6696662335D5B75&outputCurrency=0x82f0B8B456c1A451378467398982d4834b6829c1', + createdAt: 1653013511, + }, + { + id: 'tomb-usdc-mai', + name: 'MAI-USDC LP', + token: 'MAI-USDC LP', + tokenDescription: 'TombSwap', + tokenAddress: '0xEdf6595E2ae78a4e5C8725D7eD2A28AD974f1B8e', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooTombMAI-USDC', + earnedTokenAddress: '0x76b8b4601A4c30dea22eAAdcc85f87D27052a2BB', + earnContractAddress: '0x76b8b4601A4c30dea22eAAdcc85f87D27052a2BB', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'tomb-usdc-mai', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Tomb', + assets: ['MAI', 'USDC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_MEDIUM', + 'CONTRACTS_VERIFIED', + 'OVER_COLLAT_ALGO_STABLECOIN', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://swap.tomb.com/#/add/0x04068DA6C83AFCFA0e13ba15A6696662335D5B75/0xfB98B335551a418cD0737375a2ea0ded62Ea213b', + buyTokenUrl: + 'https://swap.tomb.com/#/swap?inputCurrency=0x04068DA6C83AFCFA0e13ba15A6696662335D5B75&outputCurrency=0xfB98B335551a418cD0737375a2ea0ded62Ea213b', + createdAt: 1653013565, + }, + { + id: 'tomb-tshare-weth', + name: 'TSHARE-ETH LP', + token: 'TSHARE-ETH LP', + tokenDescription: 'TombSwap', + tokenAddress: '0xd702D7495b010936EBc53a1efeE42D97996Ca5Ee', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooTombTSHARE-ETH', + earnedTokenAddress: '0x14e57712195D05D1AF02cdCE7d41fa6244C6Eb13', + earnContractAddress: '0x14e57712195D05D1AF02cdCE7d41fa6244C6Eb13', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'tomb-tshare-weth', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Tomb', + assets: ['TSHARE', 'ETH'], + risks: ['COMPLEXITY_LOW', 'BATTLE_TESTED', 'IL_HIGH', 'MCAP_SMALL', 'CONTRACTS_VERIFIED'], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://swap.tomb.com/#/add/0x4cdF39285D7Ca8eB3f090fDA0C069ba5F4145B37/0x74b23882a30290451A17c44f4F05243b6b58C76d', + buyTokenUrl: + 'https://swap.tomb.com/#/swap?inputCurrency=0x4cdF39285D7Ca8eB3f090fDA0C069ba5F4145B37&outputCurrency=0x74b23882a30290451A17c44f4F05243b6b58C76d', + createdAt: 1653013670, + }, + { + id: 'curve-ftm-f-4pool', + name: 'UST/FRAX/fUSDT/USDC', + token: '4POOL-f', + tokenDescription: 'Curve', + tokenAddress: '0x9dc516a18775d492c9f061211C8a3FDCd476558d', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCurve4pool', + earnedTokenAddress: '0xf49bB8D23BB48f237CFDfa4Bb67F4B73ccf28A38', + earnContractAddress: '0xf49bB8D23BB48f237CFDfa4Bb67F4B73ccf28A38', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'curve-ftm-f-4pool', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Curve', + assets: ['UST', 'FRAX', 'fUSDT', 'USDC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + 'ALGO_STABLE', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: 'https://ftm.curve.fi/factory/84/deposit', + createdAt: 1651152132, + }, + { + id: 'spirit-sftmx-ftm', + name: 'sFTMx-FTM LP', + token: 'sFTMx-FTM SLP', + tokenDescription: 'SpiritSwap', + tokenAddress: '0x72133BBff5072616E165237e69b3F4c87C1a94e8', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSpiritsFTMx-FTM', + earnedTokenAddress: '0x8Cfc4d6772E5353CE3fB92421e535022a112306D', + earnContractAddress: '0x8Cfc4d6772E5353CE3fB92421e535022a112306D', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'spirit-sftmx-ftm', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SpiritSwap', + assets: ['sFTMx', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://swap.spiritswap.finance/#/add/FTM/0xd7028092c830b5C8FcE061Af2E593413EbbC1fc1', + buyTokenUrl: + 'https://swap.spiritswap.finance/#/exchange/swap/FTM/0xd7028092c830b5C8FcE061Af2E593413EbbC1fc1', + createdAt: 1651141906, + }, + { + id: 'tomb-btc-tshare', + name: 'TSHARE-BTC LP', + token: 'TSHARE-BTC LP', + tokenDescription: 'TombSwap', + tokenAddress: '0xa1f4a9ee0d06115376dFf357D34C3F5eb4107398', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooTombBTC-TSHARE', + earnedTokenAddress: '0x366Eb1dC4fDf8273f93a58d0B7EaeD5e4A85f2ed', + earnContractAddress: '0x366Eb1dC4fDf8273f93a58d0B7EaeD5e4A85f2ed', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'tomb-btc-tshare', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Tomb', + assets: ['TSHARE', 'WBTC'], + risks: ['COMPLEXITY_LOW', 'BATTLE_TESTED', 'IL_HIGH', 'MCAP_MICRO', 'CONTRACTS_VERIFIED'], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://swap.tomb.com/#/add/0x321162Cd933E2Be498Cd2267a90534A804051b11/0x4cdF39285D7Ca8eB3f090fDA0C069ba5F4145B37', + buyTokenUrl: + 'https://swap.tomb.com/#/swap?inputCurrency=0x321162Cd933E2Be498Cd2267a90534A804051b11&outputCurrency=0x4cdF39285D7Ca8eB3f090fDA0C069ba5F4145B37', + createdAt: 1651725562, + }, + { + id: 'spirit-orkan-ftm', + name: 'ORKAN-FTM LP', + token: 'ORKAN-FTM SLP', + tokenDescription: 'SpiritSwap', + tokenAddress: '0x5A6880d3e9d715BEf5848c9749cea5F23a982A75', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSpiritORKAN-FTM', + earnedTokenAddress: '0x878b9c15B7856081D7Bcb3240D9a15fEC7718439', + earnContractAddress: '0x878b9c15B7856081D7Bcb3240D9a15fEC7718439', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'spirit-orkan-ftm', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SpiritSwap', + assets: ['ORKAN', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://swap.spiritswap.finance/#/add/FTM/0xfB66e49e303A186a4c57414Ceeed651a7a78161a', + buyTokenUrl: + 'https://swap.spiritswap.finance/#/exchange/swap/FTM/0xfB66e49e303A186a4c57414Ceeed651a7a78161a', + createdAt: 1651077919, + }, + { + id: 'beets-daiabolical-balance', + name: 'A Dai-abolical Balance', + token: 'A Dai-abolical Balance', + tokenDescription: 'Beethoven X', + tokenAddress: '0xD5E946b5619fFf054c40D38c976f1d06C1e2fA82', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBeetDaiabolicalBalance', + earnedTokenAddress: '0x971423A9A45A1A2DeB0bEe48C92d3859D793e73B', + earnContractAddress: '0x971423A9A45A1A2DeB0bEe48C92d3859D793e73B', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'beets-daiabolical-balance', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Beethoven X', + assets: ['USDB', 'DAI'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + 'OVER_COLLAT_ALGO_STABLECOIN', + ], + stratType: 'StratMultiLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://beets.fi/#/pool/0xd5e946b5619fff054c40d38c976f1d06c1e2fa820002000000000000000003ac', + createdAt: 1651660702, + }, + { + id: 'boo-usdc-dei', + name: 'DEI-USDC LP', + token: 'DEI-USDC LP', + tokenDescription: 'SpookySwap', + tokenAddress: '0xD343b8361Ce32A9e570C1fC8D4244d32848df88B', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBooUSDC-DEI', + earnedTokenAddress: '0xb57FF04862BA9fa1f76436cB68b92A6366Da4669', + earnContractAddress: '0xb57FF04862BA9fa1f76436cB68b92A6366Da4669', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'boo-usdc-dei', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SpookySwap', + assets: ['DEI', 'USDC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_SMALL', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://spooky.fi/#/add/0xDE12c7959E1a72bbe8a5f7A1dc8f8EeF9Ab011B3/0x04068DA6C83AFCFA0e13ba15A6696662335D5B75', + buyTokenUrl: + 'https://spooky.fi/#/swap?outputCurrency=0xDE12c7959E1a72bbe8a5f7A1dc8f8EeF9Ab011B3', + createdAt: 1649955002, + }, + { + id: 'boo-wftm-sftmx', + name: 'sFTMx-FTM LP', + token: 'sFTMx-FTM LP', + tokenDescription: 'SpookySwap', + tokenAddress: '0xE67980fc955FECfDA8A92BbbFBCc9f0C4bE60A9A', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBooFTM-sFTMx', + earnedTokenAddress: '0x30E3154ce70660590FC8bBc1929Ce9236e66C50E', + earnContractAddress: '0x30E3154ce70660590FC8bBc1929Ce9236e66C50E', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'boo-wftm-sftmx', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SpookySwap', + assets: ['sFTMx', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://spooky.fi/#/add/0x21be370D5312f44cB42ce377BC9b8a0cEF1A4C83/0xd7028092c830b5C8FcE061Af2E593413EbbC1fc1', + buyTokenUrl: + 'https://spooky.fi/#/swap?outputCurrency=0xd7028092c830b5C8FcE061Af2E593413EbbC1fc1', + createdAt: 1650967301, + }, + { + id: 'boo-wftm-deus', + name: 'DEUS-FTM LP', + token: 'DEUS-FTM LP', + tokenDescription: 'SpookySwap', + tokenAddress: '0xaF918eF5b9f33231764A5557881E6D3e5277d456', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBooFTM-DEUS', + earnedTokenAddress: '0x6FC7AF3d1dF970Cd699E82941a71BC3Df03Ee986', + earnContractAddress: '0x6FC7AF3d1dF970Cd699E82941a71BC3Df03Ee986', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'boo-wftm-deus', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SpookySwap', + assets: ['DEUS', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: 'https://spooky.fi/#/add/0xDE5ed76E7c05eC5e4572CfC88d1ACEA165109E44/FTM', + buyTokenUrl: + 'https://spooky.fi/#/swap?outputCurrency=0xDE5ed76E7c05eC5e4572CfC88d1ACEA165109E44', + createdAt: 1649955001, + }, + { + id: 'beets-two-gods-one-pool', + name: 'Two Gods One Pool', + token: 'Two Gods One Pool', + tokenDescription: 'Beethoven X', + tokenAddress: '0x0e8e7307E43301CF28c5d21d5fD3EF0876217D41', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBeetTwoGodsOnePool', + earnedTokenAddress: '0x9E8d0a070Ae90dB67B369cE54d2e81D0A3D8F1f3', + earnContractAddress: '0x9E8d0a070Ae90dB67B369cE54d2e81D0A3D8F1f3', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'beets-two-gods-one-pool', + oraclePrice: 0, + depositsPaused: true, + status: 'active', + platform: 'Beethoven X', + assets: ['DEUS', 'DEI'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratMultiLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://beets.fi/#/pool/0x0e8e7307e43301cf28c5d21d5fd3ef0876217d410002000000000000000003f1', + createdAt: 1649878298, + }, + { + id: 'beets-clair-de-lune-eol', + logo: 'fantom/Clair de Lune.png', + name: 'Clair de Lune', + token: 'Clair de Lune', + tokenDescription: 'Beethoven X', + tokenAddress: '0x2fbb1EF03C02F9Bb2bD6f8C8c24F8dE347979d9e', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBeetClairDeLune', + earnedTokenAddress: '0xC1F06A159b53F326f9F16cfa37C76AEF643d9c40', + earnContractAddress: '0xC1F06A159b53F326f9F16cfa37C76AEF643d9c40', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'beets-clair-de-lune', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Beethoven X', + assets: ['FTM', 'LUNAw', 'USTw'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + 'ALGO_STABLE', + ], + stratType: 'StratMultiLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://beets.fi/#/pool/0x2fbb1ef03c02f9bb2bd6f8c8c24f8de347979d9e00010000000000000000039a', + createdAt: 1649509772, + }, + { + id: 'boo-wftm-luna-eol', + name: 'LUNA-FTM LP', + token: 'LUNA-FTM LP', + tokenDescription: 'SpookySwap', + tokenAddress: '0xD8934C58dE27e7B6342924B185dA0B3AB009F959', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBooFTM-LUNA', + earnedTokenAddress: '0xD677C20678b8C106D04D497fAF7F327Af7B74625', + earnContractAddress: '0xD677C20678b8C106D04D497fAF7F327Af7B74625', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'boo-wftm-luna', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'SpookySwap', + assets: ['LUNA', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: 'https://spooky.fi/#/add/FTM/0x593AE1d34c8BD7587C11D539E4F42BFf242c82Af', + buyTokenUrl: + 'https://spooky.fi/#/swap?outputCurrency=0x593AE1d34c8BD7587C11D539E4F42BFf242c82Af', + createdAt: 1649436436, + }, + { + id: 'boo-wftm-ust-eol', + name: 'UST-FTM LP', + token: 'UST-FTM LP', + tokenDescription: 'SpookySwap', + tokenAddress: '0x656b3264695690322ACBad95F994b51C5a8C8eDF', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBooFTM-UST', + earnedTokenAddress: '0x808841CB5f23aDa8AF52Ed4b5cBCb8F0FD89868D', + earnContractAddress: '0x808841CB5f23aDa8AF52Ed4b5cBCb8F0FD89868D', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'boo-wftm-ust', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'SpookySwap', + assets: ['USTw', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + 'ALGO_STABLE', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: 'https://spooky.fi/#/add/FTM/0x846e4D51d7E2043C1a87E0Ab7490B93FB940357b', + buyTokenUrl: + 'https://spooky.fi/#/swap?outputCurrency=0x846e4D51d7E2043C1a87E0Ab7490B93FB940357b', + createdAt: 1649492747, + }, + { + id: 'curve-ftm-f-usdl', + name: 'USDL/fUSDT/DAI/USDC', + token: 'USDL-3CRV-f', + tokenDescription: 'Curve', + tokenAddress: '0x6EF78ad4a40E9A6c81B9229de3eCc33ce591bC34', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCurveUSDL', + earnedTokenAddress: '0xc751C7114204eff5Ce50E6DDa0F03f8aF15996e2', + earnContractAddress: '0xc751C7114204eff5Ce50E6DDa0F03f8aF15996e2', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'curve-ftm-f-usdl', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Curve', + assets: ['USDL', 'fUSDT', 'DAI', 'USDC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + 'OVER_COLLAT_ALGO_STABLECOIN', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: 'https://ftm.curve.fi/factory/41/deposit', + buyTokenUrl: 'https://app.topshelf.finance/#/mint', + createdAt: 1649341331, + }, + { + id: 'beets-ust-ust-eol', + name: 'UST (Axelar) - UST (Wormhole) LP', + token: 'UST (Axelar) - UST (Wormhole) LP', + tokenDescription: 'Beethoven X', + tokenAddress: '0x66Bcb58cF9754f421c268990B280e4462E10aac8', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'MooBeetUST-UST', + earnedTokenAddress: '0x4867E7A3bB6163150Bcd3ed26cDca3EA026E6dF7', + earnContractAddress: '0x4867E7A3bB6163150Bcd3ed26cDca3EA026E6dF7', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'beets-ust-ust', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Beethoven X', + assets: ['USTw', 'USTaxl'], + risks: [ + 'COMPLEXITY_LOW', + 'NEW_STRAT', + 'IL_NONE', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + 'ALGO_STABLE', + ], + stratType: 'StableLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://beets.fi/#/pool/0x66bcb58cf9754f421c268990b280e4462e10aac8000200000000000000000339', + createdAt: 1649404952, + }, + { + id: 'curve-ftm-f-ftml', + name: 'FTML/FTM', + token: 'FTM/FTML-f', + tokenDescription: 'Curve', + tokenAddress: '0x8B63F036F5a34226065bC0a7B0aE5bb5eBA1fF3D', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCurveF-FTML', + earnedTokenAddress: '0xaD3aD0D7140529eD329D7c9b4D876e1fBd7B2330', + earnContractAddress: '0xaD3aD0D7140529eD329D7c9b4D876e1fBd7B2330', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'curve-ftm-f-ftml', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Curve', + assets: ['FTML', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: 'https://ftm.curve.fi/factory/42/deposit', + buyTokenUrl: 'https://app.topshelf.finance/#/mint', + createdAt: 1649341331, + }, + { + id: 'beefy-binspirit', + logo: 'single-assets/binSPIRIT.svg', + name: 'binSPIRIT', + token: 'binSPIRIT', + tokenDescription: 'Beefy', + tokenAddress: '0x44e314190D9E4cE6d4C0903459204F8E21ff940A', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBinSPIRIT', + earnedTokenAddress: '0x7345a537A975d9Ca588eE631BEFdDfEF34fD5e8f', + earnContractAddress: '0x7345a537A975d9Ca588eE631BEFdDfEF34fD5e8f', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'binSPIRIT', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Beefy', + assets: ['binSPIRIT'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'SingleStake', + withdrawalFee: '0%', + mintTokenUrl: 'https://beta.beefy.finance/#/fantom/vault/beefy-binspirit', + buyTokenUrl: 'https://swap.spiritswap.finance/#/exchange/swap/SPIRIT/binSPIRIT', + createdAt: 1643754413, + }, + { + id: 'tomb-tshare-mai', + name: 'TSHARE-MAI LP', + token: 'TSHARE-MAI LP', + tokenDescription: 'TombSwap', + tokenAddress: '0x67B2fAF48C1710fF1d2a9AC429b726B8F63eE83C', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooTombTSHARE-MAI', + earnedTokenAddress: '0x4afB1384f6641278D9BB22C6e33c1B526Cee2A40', + earnContractAddress: '0x4afB1384f6641278D9BB22C6e33c1B526Cee2A40', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'tomb-tshare-mai', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Tomb', + assets: ['TSHARE', 'MAI'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'CONTRACTS_VERIFIED', + 'OVER_COLLAT_ALGO_STABLECOIN', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://swap.tomb.com/#/add/0x4cdF39285D7Ca8eB3f090fDA0C069ba5F4145B37/0xfB98B335551a418cD0737375a2ea0ded62Ea213b', + buyTokenUrl: + 'https://swap.tomb.com/#/swap?inputCurrency=0xfB98B335551a418cD0737375a2ea0ded62Ea213b&outputCurrency=0x4cdF39285D7Ca8eB3f090fDA0C069ba5F4145B37', + createdAt: 1648564274, + }, + { + id: 'stargate-fantom-usdc', + name: 'USDC LP', + token: 'S*USDC', + logo: 'single-assets/USDC.svg', + tokenDescription: 'Stargate', + tokenAddress: '0x12edeA9cd262006cC3C4E77c90d2CD2DD4b1eb97', + tokenDecimals: 6, + tokenDescriptionUrl: '#', + earnedToken: 'mooStargateUSDC', + earnedTokenAddress: '0x07EC069DC86D5ca2eB3c705C7030525A62e6E78C', + earnContractAddress: '0x07EC069DC86D5ca2eB3c705C7030525A62e6E78C', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'sfUSDC', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Stargate', + assets: ['sfUSDC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'SingleStake', + withdrawalFee: '0%', + addLiquidityUrl: 'https://stargate.finance/pool/USDC-FTM', + buyTokenUrl: + 'https://spooky.fi/#/swap?outputCurrency=0x04068DA6C83AFCFA0e13ba15A6696662335D5B75', + createdAt: 1648657158, + }, + { + id: 'boo-wftm-beftm', + name: 'beFTM-FTM LP', + token: 'beFTM-FTM LP', + tokenDescription: 'SpookySwap', + tokenAddress: '0xB5512e3fA8304d33Cdae4a40C21F1d3f70Eba45a', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBooFTM-BeFTM', + earnedTokenAddress: '0xdC72257947bb8C154Ffaf94D9E7C60ed54fEd380', + earnContractAddress: '0xdC72257947bb8C154Ffaf94D9E7C60ed54fEd380', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'boo-wftm-beftm', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SpookySwap', + assets: ['beFTM', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: 'https://spooky.fi/#/add/0x7381eD41F6dE418DdE5e84B55590422a57917886/FTM', + buyTokenUrl: + 'https://spooky.fi/#/swap?outputCurrency=0x7381eD41F6dE418DdE5e84B55590422a57917886', + createdAt: 1648777474, + }, + { + id: 'tomb-tomb-wftm', + name: 'TOMB-FTM LP', + token: 'TOMB-FTM TLP', + tokenDescription: 'TombSwap', + tokenAddress: '0xfca12A13ac324C09e9F43B5e5cfC9262f3Ab3223', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooTombTOMB-WFTM', + earnedTokenAddress: '0x429590a528A86a0da0ACa9Aa7CD087BAdc790Af8', + earnContractAddress: '0x429590a528A86a0da0ACa9Aa7CD087BAdc790Af8', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'tomb-tomb-wftm', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Tomb', + assets: ['TOMB', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_MEDIUM', + 'ALGO-STABLE', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: 'https://swap.tomb.com/#/add/0x6c021Ae822BEa943b2E66552bDe1D2696a53fbB7/ETH', + buyTokenUrl: + 'https://swap.tomb.com/#/swap?inputCurrency=ETH&outputCurrency=0x6c021Ae822BEa943b2E66552bDe1D2696a53fbB7', + createdAt: 1648676349, + }, + { + id: 'based-based-bshare', + name: 'BASED-BSHARE LP', + token: 'BASED-BSHARE LP', + tokenDescription: 'SpookySwap (Based)', + tokenAddress: '0x5748b5Dd1f59342f85d170c48C427959c2f9f262', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBasedBASED-BSHARE', + earnedTokenAddress: '0x3a7ec503CD55A153bC3A3Ec5a2ee340136C005Ff', + earnContractAddress: '0x3a7ec503CD55A153bC3A3Ec5a2ee340136C005Ff', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'based-based-bshare', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Other', + assets: ['BASED', 'BSHARE'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'ALGO-STABLE', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + depositFee: '0.2%', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://spooky.fi/#/add/0x8D7d3409881b51466B483B11Ea1B8A03cdEd89ae/0x49C290Ff692149A4E16611c694fdED42C954ab7a', + buyTokenUrl: + 'https://spooky.fi/#/swap?inputCurrency=0x8D7d3409881b51466B483B11Ea1B8A03cdEd89ae&outputCurrency=0x49C290Ff692149A4E16611c694fdED42C954ab7a', + createdAt: 1648136284, + }, + { + id: 'beets-god-between-stables-eol', + name: 'One God Between Two Stables', + token: 'One God Between Two Stables', + tokenDescription: 'Beethoven X', + tokenAddress: '0x8B858Eaf095A7337dE6f9bC212993338773cA34e', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBeetGodBetweenTwoStables', + earnedTokenAddress: '0xCbc3A0ae73ba667d69f9023c2d11276E016a9C09', + earnContractAddress: '0xCbc3A0ae73ba667d69f9023c2d11276E016a9C09', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'beets-god-between-stables', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Beethoven X', + assets: ['DEI', 'USDC'], + risks: ['COMPLEXITY_LOW', 'NEW_STRAT', 'IL_NONE', 'MCAP_MICRO', 'AUDIT', 'CONTRACTS_VERIFIED'], + stratType: 'StratMultiLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://beets.fi/#/pool/0x8b858eaf095a7337de6f9bc212993338773ca34e00020000000000000000023c', + createdAt: 1648130947, + }, + { + id: 'beets-exploding-shrapnel-eol', + name: 'Exploding Shrapnel', + token: 'Exploding Shrapnel', + tokenDescription: 'Beethoven X', + tokenAddress: '0x2Ba4953C75860e70Cd70f15a2D5Fe07DE832Bcd1', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBeetExplodingShrapnel', + earnedTokenAddress: '0xE480703dD6959D997359B675B7b2C008f8778e5a', + earnContractAddress: '0xE480703dD6959D997359B675B7b2C008f8778e5a', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'beets-exploding-shrapnel', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Beethoven X', + assets: ['FTM', 'SHRAP'], + risks: ['COMPLEXITY_LOW', 'NEW_STRAT', 'IL_HIGH', 'MCAP_MICRO', 'AUDIT', 'CONTRACTS_VERIFIED'], + stratType: 'StratMultiLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://beets.fi/#/pool/0x2ba4953c75860e70cd70f15a2d5fe07de832bcd1000200000000000000000210', + createdAt: 1647978282, + }, + { + id: 'boo-wftm-ape', + name: 'APE-FTM LP', + token: 'APE-FTM LP', + tokenDescription: 'SpookySwap', + tokenAddress: '0xC9FB686f14bDA7e2653cF8F605Dc8551B6a53FD3', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBooFTM-APE', + earnedTokenAddress: '0xe2A269BE12bCfBc3EA33eafe53e9B068848017f6', + earnContractAddress: '0xe2A269BE12bCfBc3EA33eafe53e9B068848017f6', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'boo-wftm-ape', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SpookySwap', + assets: ['APE', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: 'https://spooky.fi/#/add/FTM/0x2d72A97a31Dc920dB03330780d30074626e39C8A', + buyTokenUrl: + 'https://spooky.fi/#/swap?outputCurrency=0x2d72A97a31Dc920dB03330780d30074626e39C8A', + createdAt: 1648237084, + }, + { + id: 'boo-usdc-boo', + name: 'BOO-USDC LP', + token: 'BOO-USDC LP', + tokenDescription: 'SpookySwap', + tokenAddress: '0xf8Cb2980120469d79958151daa45Eb937c6E1eD6', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBooUSDC-BOO', + earnedTokenAddress: '0xce6A6b6935A1aB3aF7Be53fbc8A149791b418278', + earnContractAddress: '0xce6A6b6935A1aB3aF7Be53fbc8A149791b418278', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'boo-usdc-boo', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SpookySwap', + assets: ['BOO', 'USDC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://spooky.fi/#/add/0x04068DA6C83AFCFA0e13ba15A6696662335D5B75/0x841FAD6EAe12c286d1Fd18d1d525DFfA75C7EFFE', + buyTokenUrl: + 'https://spooky.fi/#/swap?inputCurrency=0x04068DA6C83AFCFA0e13ba15A6696662335D5B75&outputCurrency=0x841FAD6EAe12c286d1Fd18d1d525DFfA75C7EFFE', + createdAt: 1648237004, + }, + { + id: 'based-tomb-based', + name: 'BASED-TOMB LP', + token: 'BASED-TOMB TLP', + tokenDescription: 'TombSwap (Based)', + tokenAddress: '0x172BFaA8991A54ABD0b3EE3d4F8CBDab7046FF79', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooTombBASED-TOMB', + earnedTokenAddress: '0x39E5C480bc28b77D8B5960Abc248A21C0cF4bE30', + earnContractAddress: '0x39E5C480bc28b77D8B5960Abc248A21C0cF4bE30', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'based-tomb-based', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Other', + assets: ['BASED', 'TOMB'], + risks: [ + 'COMPLEXITY_LOW', + 'ALGO_STABLE', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_MICRO', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + depositFee: '0.2%', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://swap.tomb.com/#/add/0x6c021Ae822BEa943b2E66552bDe1D2696a53fbB7/0x8D7d3409881b51466B483B11Ea1B8A03cdEd89ae', + buyTokenUrl: + 'https://swap.tomb.com/#/swap?inputCurrency=0x6c021Ae822BEa943b2E66552bDe1D2696a53fbB7&outputCurrency=0x8D7d3409881b51466B483B11Ea1B8A03cdEd89ae', + createdAt: 1648299488, + }, + { + id: 'wigo-wigo', + logo: 'single-assets/WIGO.svg', + name: 'WIGO', + token: 'WIGO', + tokenDescription: 'WigoSwap', + tokenAddress: '0xE992bEAb6659BFF447893641A378FbbF031C5bD6', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooWigoWIGO', + earnedTokenAddress: '0xE14Cf6e87f3777f6F1D09D3076D15027cC0f4cb1', + earnContractAddress: '0xE14Cf6e87f3777f6F1D09D3076D15027cC0f4cb1', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'WIGO', + oraclePrice: 0, + depositsPaused: false, + platform: 'WigoSwap', + assets: ['WIGO'], + status: 'active', + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'SingleStake', + withdrawalFee: '0%', + buyTokenUrl: + 'https://wigoswap.io/swap?outputCurrency=0xE992bEAb6659BFF447893641A378FbbF031C5bD6', + createdAt: 1648108327, + }, + { + id: 'spirit-ust-ftm', + name: 'UST-FTM LP', + token: 'UST-FTM SLP', + tokenDescription: 'SpiritSwap', + tokenAddress: '0xFA84CED3DC4bFFAF93d21B9E3A4750F5C2A42886', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSpiritUST-FTM', + earnedTokenAddress: '0x92F44893D5f22bDc8540CEb83B0b3E3112951bEe', + earnContractAddress: '0x92F44893D5f22bDc8540CEb83B0b3E3112951bEe', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'spirit-ust-ftm', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SpiritSwap', + assets: ['USTw', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + 'ALGO_STABLE', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://swap.spiritswap.finance/#/add/FTM/0x846e4D51d7E2043C1a87E0Ab7490B93FB940357b', + buyTokenUrl: 'https://swap.spiritswap.finance/#/exchange/swap/FTM/UST', + createdAt: 1647533765, + }, + { + id: 'based-based-mai', + name: 'BASED-MAI LP', + token: 'BASED-MAI LP', + tokenDescription: 'TombSwap (Based)', + tokenAddress: '0x7B5B3751550be4FF87aC6bda89533F7A0c9825B3', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBasedBASED-MAI', + earnedTokenAddress: '0x5Ddb9a342672ecEe80a028CE40500F16ba1Bca44', + earnContractAddress: '0x5Ddb9a342672ecEe80a028CE40500F16ba1Bca44', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'based-based-mai', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Other', + assets: ['BASED', 'MAI'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'ALGO_STABLE', + 'IL_HIGH', + 'MCAP_MICRO', + 'CONTRACTS_VERIFIED', + 'OVER_COLLAT_ALGO_STABLECOIN', + ], + stratType: 'StratLP', + depositFee: '0.2%', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://swap.tomb.com/#/add/0xfB98B335551a418cD0737375a2ea0ded62Ea213b/0x8D7d3409881b51466B483B11Ea1B8A03cdEd89ae', + buyTokenUrl: + 'https://swap.tomb.com/#/swap?inputCurrency=0xfB98B335551a418cD0737375a2ea0ded62Ea213b&outputCurrency=0x8D7d3409881b51466B483B11Ea1B8A03cdEd89ae', + createdAt: 1647380053, + }, + { + id: 'tomb-tomb-mai', + name: 'TOMB-MAI LP', + token: 'TOMB-MAI LP', + tokenDescription: 'TombSwap', + tokenAddress: '0x45f4682B560d4e3B8FF1F1b3A38FDBe775C7177b', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooTombTOMB-MAI', + earnedTokenAddress: '0xb2be5Cd33DBFf412Bce9587E44b5647a4BdA6a66', + earnContractAddress: '0xb2be5Cd33DBFf412Bce9587E44b5647a4BdA6a66', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'tomb-tomb-mai', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Tomb', + assets: ['TOMB', 'MAI'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_SMALL', + 'CONTRACTS_VERIFIED', + 'OVER_COLLAT_ALGO_STABLECOIN', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://swap.tomb.com/#/add/0x6c021Ae822BEa943b2E66552bDe1D2696a53fbB7/0xfB98B335551a418cD0737375a2ea0ded62Ea213b', + buyTokenUrl: + 'https://swap.tomb.com/#/swap?inputCurrency=0xfB98B335551a418cD0737375a2ea0ded62Ea213b&outputCurrency=0x6c021Ae822BEa943b2E66552bDe1D2696a53fbB7', + createdAt: 1647007175, + }, + { + id: 'spirit-hnd-ftm', + name: 'HND-FTM LP', + token: 'HND-FTM SLP', + tokenDescription: 'SpiritSwap', + tokenAddress: '0x03dE4A4897941712BeBE5362729181257dC9E8B6', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSpiritHND-FTM', + earnedTokenAddress: '0x8E1fE6FeA7aC27526643c3FCFd7DA50047FCE7Cb', + earnContractAddress: '0x8E1fE6FeA7aC27526643c3FCFd7DA50047FCE7Cb', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'spirit-hnd-ftm', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SpiritSwap', + assets: ['HND', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_SMALL', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://swap.spiritswap.finance/#/add/FTM/0x10010078a54396F62c96dF8532dc2B4847d47ED3', + buyTokenUrl: 'https://swap.spiritswap.finance/#/exchange/swap/FTM/HND', + createdAt: 1646913142, + }, + { + id: 'beets-cre8r-f-major-eol', + name: 'Cre8r in F Major', + token: 'Cre8r in F Major', + tokenDescription: 'Beethoven X', + tokenAddress: '0xbb4607beDE4610e80d35C15692eFcB7807A2d0A6', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBeetCre8rFMajor', + earnedTokenAddress: '0x9FA6bC4fCd487ED9CF5216A03AeCF6F1A82ABc76', + earnContractAddress: '0x9FA6bC4fCd487ED9CF5216A03AeCF6F1A82ABc76', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'beets-cre8r-f-major', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Beethoven X', + assets: ['CRE8R', 'FTM'], + risks: ['COMPLEXITY_LOW', 'NEW_STRAT', 'IL_HIGH', 'MCAP_MICRO', 'AUDIT', 'CONTRACTS_VERIFIED'], + stratType: 'StratMultiLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://beets.fi/#/pool/0xbb4607bede4610e80d35c15692efcb7807a2d0a6000200000000000000000140', + createdAt: 1646301115, + }, + { + id: 'spirit-ftm-treeb', + name: 'TREEB-FTM LP', + token: 'TREEB-FTM SLP', + tokenDescription: 'SpiritSwap', + tokenAddress: '0x2cEfF1982591c8B0a73b36D2A6C2A6964Da0E869', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSpiritFTM-TREEB', + earnedTokenAddress: '0x1c85Ea06184603e43fb0386ba44589eAe3d06980', + earnContractAddress: '0x1c85Ea06184603e43fb0386ba44589eAe3d06980', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'spirit-ftm-treeb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SpiritSwap', + assets: ['TREEB', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://swap.spiritswap.finance/#/add/FTM/0xc60D7067dfBc6f2caf30523a064f416A5Af52963', + buyTokenUrl: 'https://swap.spiritswap.finance/#/exchange/swap/FTM/TREEB', + createdAt: 1646304431, + }, + { + id: 'spirit-ftm-beftm', + name: 'beFTM-FTM LP', + token: 'beFTM-FTM SLP', + tokenDescription: 'SpiritSwap', + tokenAddress: '0xE3D4C22d0543E050a8b3F713899854Ed792fc1bD', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSpiritBeFTM-FTM', + earnedTokenAddress: '0x4ED766aF5B30a4695F7b247AE1bB0f6B34bC6378', + earnContractAddress: '0x4ED766aF5B30a4695F7b247AE1bB0f6B34bC6378', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'spirit-ftm-beftm', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SpiritSwap', + assets: ['beFTM', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://swap.spiritswap.finance/#/add/FTM/0x7381ed41f6de418dde5e84b55590422a57917886', + buyTokenUrl: 'https://swap.spiritswap.finance/#/exchange/swap/FTM/beFTM', + createdAt: 1646866226, + }, + { + id: 'beets-beefy-tale', + name: 'Beefy Tale Of Two Fantom Sisters', + token: 'Beefy Tale Of Two Fantom Sisters', + tokenDescription: 'Beethoven X', + tokenAddress: '0x3bd4c3d1f6F40d77B2e9d0007D6f76E4F183A46d', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBeetBeefyTale', + earnedTokenAddress: '0x12c9aa044D4474b1abE3Fa4875c9ADbDc05Ef898', + earnContractAddress: '0x12c9aa044D4474b1abE3Fa4875c9ADbDc05Ef898', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'beets-beefy-tale', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Beethoven X', + assets: ['beFTM', 'FTM'], + risks: ['COMPLEXITY_LOW', 'IL_LOW', 'MCAP_MICRO', 'AUDIT', 'CONTRACTS_VERIFIED'], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://beets.fi/#/pool/0x3bd4c3d1f6f40d77b2e9d0007d6f76e4f183a46d0002000000000000000002d7', + createdAt: 1646864556, + }, + { + id: 'spirit-binspirit-spirit', + name: 'binSPIRIT-SPIRIT LP', + token: 'binSPIRIT-SPIRIT SLP', + tokenDescription: 'SpiritSwap', + tokenAddress: '0xD4F6574fD9ba1e218673971f92Ad0f73abe31dEE', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSpiritBinSPIRIT-SPIRIT', + earnedTokenAddress: '0x794cEaD3c864B5390254ffca7ecd6a9aE868661a', + earnContractAddress: '0x794cEaD3c864B5390254ffca7ecd6a9aE868661a', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'spirit-binspirit-spirit', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SpiritSwap', + assets: ['binSPIRIT', 'SPIRIT'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://swap.spiritswap.finance/#/add/0x44e314190D9E4cE6d4C0903459204F8E21ff940A/0x5Cc61A78F164885776AA610fb0FE1257df78E59B', + buyTokenUrl: 'https://swap.spiritswap.finance/#/exchange/swap/SPIRIT/binSPIRIT', + createdAt: 1643907163, + }, + { + id: 'based-based-tomb', + name: 'BASED-TOMB LP', + token: 'BASED-TOMB LP', + tokenDescription: 'SpookySwap (Based)', + tokenAddress: '0xaB2ddCBB346327bBDF97120b0dD5eE172a9c8f9E', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBasedBASED-TOMB', + earnedTokenAddress: '0xEb27F60f652fF53cBf3EfF0c7033B380148b6CB9', + earnContractAddress: '0xEb27F60f652fF53cBf3EfF0c7033B380148b6CB9', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'based-based-tomb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Other', + assets: ['BASED', 'TOMB'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'ALGO-STABLE', + 'IL_LOW', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://spooky.fi/#/add/0x6c021Ae822BEa943b2E66552bDe1D2696a53fbB7/0x8D7d3409881b51466B483B11Ea1B8A03cdEd89ae', + buyTokenUrl: + 'https://spooky.fi/#/swap?outputCurrency=0x8D7d3409881b51466B483B11Ea1B8A03cdEd89ae', + createdAt: 1646398565, + }, + { + id: 'based-bshare-ftm', + name: 'BSHARE-FTM LP', + token: 'BSHARE-FTM LP', + tokenDescription: 'SpookySwap (Based)', + tokenAddress: '0x6F607443DC307DCBe570D0ecFf79d65838630B56', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBasedBSHARE-FTM', + earnedTokenAddress: '0x44B35db29db8c5277bF842c67b4d36D42323514C', + earnContractAddress: '0x44B35db29db8c5277bF842c67b4d36D42323514C', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'based-bshare-ftm', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Other', + assets: ['BSHARE', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: 'https://spooky.fi/#/add/FTM/0x49C290Ff692149A4E16611c694fdED42C954ab7a', + buyTokenUrl: + 'https://spooky.fi/#/swap?outputCurrency=0x49C290Ff692149A4E16611c694fdED42C954ab7a', + createdAt: 1646398565, + }, + { + id: 'spirit-ftm-atlas', + name: 'ATLAS-FTM LP', + token: 'ATLAS-FTM SLP', + tokenDescription: 'SpiritSwap', + tokenAddress: '0xFFcF183126dF14EC4E59409bAb431885ccEEb1C2', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSpiritFTM-ATLAS', + earnedTokenAddress: '0x75de621246281c8b2B0E09459Af95D56b5fD7536', + earnContractAddress: '0x75de621246281c8b2B0E09459Af95D56b5fD7536', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'spirit-ftm-atlas', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SpiritSwap', + assets: ['ATLAS', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://swap.spiritswap.finance/#/add/FTM/0x92df3eaBf7c1c2A6b3D5793f6d53778eA78c48b2', + buyTokenUrl: 'https://swap.spiritswap.finance/#/exchange/swap/FTM/ATLAS', + createdAt: 1646304431, + }, + { + id: 'spirit-ftm-bifi', + name: 'BIFI-FTM LP', + token: 'BIFI-FTM SLP', + tokenDescription: 'SpiritSwap', + tokenAddress: '0xc28cf9aeBfe1A07A27B3A4d722C841310e504Fe3', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSpiritFTM-BIFI', + earnedTokenAddress: '0x83A002075ceCBB9772160383a32D953630CDc6F1', + earnContractAddress: '0x83A002075ceCBB9772160383a32D953630CDc6F1', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'spirit-ftm-bifi', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SpiritSwap', + assets: ['BIFI', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://swap.spiritswap.finance/#/add/FTM/0xd6070ae98b8069de6B494332d1A1a81B6179D960', + buyTokenUrl: 'https://swap.spiritswap.finance/#/exchange/swap/FTM/BIFI', + createdAt: 1646229229, + }, + { + id: 'beets-statera-duet-eol', + name: 'Statera Maxi Duet', + token: 'Statera Maxi Duet', + tokenDescription: 'Beethoven X', + tokenAddress: '0x5Bb2DeE206C2bCc5768B9B2865eA971Bd9c0fF19', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBeetFreshStateraMaxiDuet', + earnedTokenAddress: '0xc92DFA1FCAEBfDF6Ac60508Ad22B968B1B71E6Ac', + earnContractAddress: '0xc92DFA1FCAEBfDF6Ac60508Ad22B968B1B71E6Ac', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'beets-statera-duet', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Beethoven X', + assets: ['WSTA', 'BEETS'], + risks: ['COMPLEXITY_LOW', 'NEW_STRAT', 'IL_HIGH', 'MCAP_SMALL', 'AUDIT', 'CONTRACTS_VERIFIED'], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://beets.fi/#/pool/0x5bb2dee206c2bcc5768b9b2865ea971bd9c0ff19000200000000000000000219', + createdAt: 1646154004, + }, + { + id: 'wigo-wigo-ftm', + name: 'WIGO-FTM LP', + token: 'WIGO-FTM WLP', + tokenDescription: 'WigoSwap', + tokenAddress: '0xB66E5c89EbA830B31B3dDcc468dD50b3256737c5', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooWigoFTM-WIGO', + earnedTokenAddress: '0x44D955415414321C26B3F87A49688545b11DbA09', + earnContractAddress: '0x44D955415414321C26B3F87A49688545b11DbA09', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'wigo-wigo-ftm', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'WigoSwap', + assets: ['WIGO', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: 'https://wigoswap.io/add/FTM/0xE992bEAb6659BFF447893641A378FbbF031C5bD6', + buyTokenUrl: + 'https://wigoswap.io/swap?outputCurrency=0xE992bEAb6659BFF447893641A378FbbF031C5bD6', + createdAt: 1645955122, + }, + { + id: 'wigo-usdc-wigo', + name: 'WIGO-USDC LP', + token: 'WIGO-USDC WLP', + tokenDescription: 'WigoSwap', + tokenAddress: '0x96bDF4d9fb8dB9FcD1E0CA146faBD891f2F1A96d', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooWigoWIGO-USDC', + earnedTokenAddress: '0x6f991190577eE0FF85C0730A185746af3aFAe799', + earnContractAddress: '0x6f991190577eE0FF85C0730A185746af3aFAe799', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'wigo-usdc-wigo', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'WigoSwap', + assets: ['WIGO', 'USDC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://wigoswap.io/add/0x04068DA6C83AFCFA0e13ba15A6696662335D5B75/0xE992bEAb6659BFF447893641A378FbbF031C5bD6', + buyTokenUrl: + 'https://wigoswap.io/swap?inputCurrency=0x04068DA6C83AFCFA0e13ba15A6696662335D5B75&outputCurrency=0xE992bEAb6659BFF447893641A378FbbF031C5bD6', + createdAt: 1645947800, + }, + { + id: 'wigo-solid-wigo-eol', + name: 'SOLID-WIGO LP', + token: 'SOLID-WIGO WLP', + tokenDescription: 'WigoSwap', + tokenAddress: '0x86BF67e8B743b25586b7eD88243Efc2f1d09edB3', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooWigoSOLID-WIGO', + earnedTokenAddress: '0xfCF7F94E6c2E8e8e65Ed58920E65040d24f7DFB8', + earnContractAddress: '0xfCF7F94E6c2E8e8e65Ed58920E65040d24f7DFB8', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'wigo-solid-wigo', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'WigoSwap', + assets: ['SOLID', 'WIGO'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://wigoswap.io/add/0xE992bEAb6659BFF447893641A378FbbF031C5bD6/0x888EF71766ca594DED1F0FA3AE64eD2941740A20', + buyTokenUrl: + 'https://wigoswap.io/swap?inputCurrency=0xE992bEAb6659BFF447893641A378FbbF031C5bD6&outputCurrency=0x888EF71766ca594DED1F0FA3AE64eD2941740A20', + createdAt: 1646001502, + }, + { + id: 'wigo-tomb-ftm-eol', + logo: 'fantom/TOMB-FTM.png', + name: 'TOMB-FTM LP', + token: 'TOMB-FTM WLP', + tokenDescription: 'WigoSwap', + tokenAddress: '0x2198FEC7Aa15e533AAdc2350566be2a0150FFE9E', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooWigoFTM-TOMB', + earnedTokenAddress: '0x51eBBbFF762119b2200910fDD97607575E27EdeD', + earnContractAddress: '0x51eBBbFF762119b2200910fDD97607575E27EdeD', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'wigo-tomb-ftm', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'WigoSwap', + assets: ['TOMB', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: 'https://wigoswap.io/add/FTM/0x6c021Ae822BEa943b2E66552bDe1D2696a53fbB7', + buyTokenUrl: + 'https://wigoswap.io/swap?outputCurrency=0x6c021Ae822BEa943b2E66552bDe1D2696a53fbB7', + createdAt: 1645155345, + }, + { + id: 'wigo-beets-ftm-eol', + name: 'BEETS-FTM LP', + token: 'BEETS-FTM WLP', + tokenDescription: 'WigoSwap', + tokenAddress: '0x89385E754af37d9f5AD3D5D9186169c910B958bC', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooWigoFTM-BEETS', + earnedTokenAddress: '0xf11c4f5F04f90C95a302D84cB6162429d007cf20', + earnContractAddress: '0xf11c4f5F04f90C95a302D84cB6162429d007cf20', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'wigo-beets-ftm', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'WigoSwap', + assets: ['BEETS', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: 'https://wigoswap.io/add/FTM/0xF24Bcf4d1e507740041C9cFd2DddB29585aDCe1e', + buyTokenUrl: + 'https://wigoswap.io/swap?outputCurrency=0xF24Bcf4d1e507740041C9cFd2DddB29585aDCe1e', + createdAt: 1645161816, + }, + { + id: 'wigo-geist-ftm-eol', + name: 'GEIST-FTM LP', + token: 'GEIST-FTM WLP', + tokenDescription: 'WigoSwap', + tokenAddress: '0xC585346Cd04633e44AF7fB0c2cEf9bc2C6b38A87', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooWigoFTM-GEIST', + earnedTokenAddress: '0xC2003a3604A2eB576ACe7cF842EC08AfE0a18e0A', + earnContractAddress: '0xC2003a3604A2eB576ACe7cF842EC08AfE0a18e0A', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'wigo-geist-ftm', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'WigoSwap', + assets: ['GEIST', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: 'https://wigoswap.io/add/FTM/0xd8321AA83Fb0a4ECd6348D4577431310A6E0814d', + buyTokenUrl: + 'https://wigoswap.io/swap?outputCurrency=0xd8321AA83Fb0a4ECd6348D4577431310A6E0814d', + createdAt: 1645165726, + }, + { + id: 'wigo-treeb-ftm', + name: 'TREEB-FTM LP', + token: 'TREEB-FTM WLP', + tokenDescription: 'WigoSwap', + tokenAddress: '0x467c4f18CEDCC768F22233c8b047E990e440B470', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooWigoFTM-TREEB', + earnedTokenAddress: '0x4e186298855aD9743D00152ff5E2F761b2962Ff9', + earnContractAddress: '0x4e186298855aD9743D00152ff5E2F761b2962Ff9', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'wigo-treeb-ftm', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'WigoSwap', + assets: ['TREEB', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: 'https://wigoswap.io/add/FTM/0xc60D7067dfBc6f2caf30523a064f416A5Af52963', + buyTokenUrl: + 'https://wigoswap.io/swap?outputCurrency=0xc60D7067dfBc6f2caf30523a064f416A5Af52963', + createdAt: 1645165612, + }, + { + id: 'wigo-crv-ftm', + name: 'CRV-FTM LP', + token: 'CRV-FTM WLP', + tokenDescription: 'WigoSwap', + tokenAddress: '0xEDa9715BE52e8819f5C5a2305813A851e568dAFf', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooWigoCRV-FTM', + earnedTokenAddress: '0x0c7cf8118eafea41bBBECe3e2d91dCdF6cafD5F9', + earnContractAddress: '0x0c7cf8118eafea41bBBECe3e2d91dCdF6cafD5F9', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'wigo-crv-ftm', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'WigoSwap', + assets: ['CRV', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: 'https://wigoswap.io/add/FTM/0x1E4F97b9f9F913c46F1632781732927B9019C68b', + buyTokenUrl: + 'https://wigoswap.io/swap?&outputCurrency=0x1E4F97b9f9F913c46F1632781732927B9019C68b', + createdAt: 1645947800, + }, + { + id: 'wigo-dai-ftm', + name: 'DAI-FTM LP', + token: 'DAI-FTM WLP', + tokenDescription: 'WigoSwap', + tokenAddress: '0x280F2F0cC01B2fd1b10d830b5deAf2343a78D3D5', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooWigoFTM-DAI', + earnedTokenAddress: '0xe65DE6b412aB7d221E0C87fe61EE893490E8E6B3', + earnContractAddress: '0xe65DE6b412aB7d221E0C87fe61EE893490E8E6B3', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'wigo-dai-ftm', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'WigoSwap', + assets: ['DAI', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + 'OVER_COLLAT_ALGO_STABLECOIN', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: 'https://wigoswap.io/add/FTM/0x8D11eC38a3EB5E956B052f67Da8Bdc9bef8Abf3E', + buyTokenUrl: + 'https://wigoswap.io/swap?outputCurrency=0x8D11eC38a3EB5E956B052f67Da8Bdc9bef8Abf3E', + createdAt: 1645166063, + }, + { + id: 'wigo-usdc-ftm', + name: 'USDC-FTM LP', + token: 'USDC-FTM WLP', + tokenDescription: 'WigoSwap', + tokenAddress: '0xaC97153e7ce86fB3e61681b969698AF7C22b4B12', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooWigoUSDC-FTM', + earnedTokenAddress: '0x70c6AF9Dff8C19B3db576E5E199B22A883874f05', + earnContractAddress: '0x70c6AF9Dff8C19B3db576E5E199B22A883874f05', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'wigo-usdc-ftm', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'WigoSwap', + assets: ['USDC', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: 'https://wigoswap.io/add/FTM/0x04068DA6C83AFCFA0e13ba15A6696662335D5B75', + buyTokenUrl: + 'https://wigoswap.io/swap?&outputCurrency=0x04068DA6C83AFCFA0e13ba15A6696662335D5B75', + createdAt: 1645947800, + }, + { + id: 'wigo-fusdt-ftm-eol', + name: 'fUSDT-FTM LP', + token: 'fUSDT-FTM WLP', + tokenDescription: 'WigoSwap', + tokenAddress: '0x970DDee1709e28cE89EAB51692b56373E00077A9', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooWigofUSDT-FTM', + earnedTokenAddress: '0x455C1A3052D57b55C97eFAdf0e09f9A5d59912b8', + earnContractAddress: '0x455C1A3052D57b55C97eFAdf0e09f9A5d59912b8', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'wigo-fusdt-ftm', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'WigoSwap', + assets: ['fUSDT', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: 'https://wigoswap.io/add/FTM/0x049d68029688eAbF473097a2fC38ef61633A3C7A', + buyTokenUrl: + 'https://wigoswap.io/swap?&outputCurrency=0x049d68029688eAbF473097a2fC38ef61633A3C7A', + createdAt: 1645947800, + }, + { + id: 'wigo-eth-ftm', + name: 'ETH-FTM LP', + token: 'ETH-FTM WLP', + tokenDescription: 'WigoSwap', + tokenAddress: '0x9B82CF433bEa2671Ea024A5c7066DE0c3292AdE6', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooWigoETH-FTM', + earnedTokenAddress: '0xDb852f7398f9Bdbf868ed4Dda2eb3B055e219B3c', + earnContractAddress: '0xDb852f7398f9Bdbf868ed4Dda2eb3B055e219B3c', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'wigo-eth-ftm', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'WigoSwap', + assets: ['ETH', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: 'https://wigoswap.io/add/FTM/0x74b23882a30290451A17c44f4F05243b6b58C76d', + buyTokenUrl: + 'https://wigoswap.io/swap?&outputCurrency=0x74b23882a30290451A17c44f4F05243b6b58C76d', + createdAt: 1645947800, + }, + { + id: 'wigo-eth-btc', + name: 'ETH-BTC LP', + token: 'ETH-BTC WLP', + tokenDescription: 'WigoSwap', + tokenAddress: '0xE3e5F47399864Ca63cDFBb22A207AFc398EFD660', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooWigoETH-BTC', + earnedTokenAddress: '0xED5c4150F867b278866bbAD33e947287cc5a2Ef1', + earnContractAddress: '0xED5c4150F867b278866bbAD33e947287cc5a2Ef1', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'wigo-eth-btc', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'WigoSwap', + assets: ['ETH', 'WBTC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://wigoswap.io/add/0x321162Cd933E2Be498Cd2267a90534A804051b11/0x74b23882a30290451A17c44f4F05243b6b58C76d', + buyTokenUrl: + 'https://wigoswap.io/swap?inputCurrency=0x321162Cd933E2Be498Cd2267a90534A804051b11&outputCurrency=0x74b23882a30290451A17c44f4F05243b6b58C76d', + createdAt: 1645947800, + }, + { + id: 'wigo-usdc-dai', + name: 'USDC-DAI LP', + token: 'USDC-DAI WLP', + tokenDescription: 'WigoSwap', + tokenAddress: '0xFDc67A84C3Aa2430c024B7d35B3c09872791d722', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooWigoUSDC-DAI', + earnedTokenAddress: '0x7fe35CeFe2E30A3fD2dA9eBDaf4d237fDDD97e18', + earnContractAddress: '0x7fe35CeFe2E30A3fD2dA9eBDaf4d237fDDD97e18', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'wigo-usdc-dai', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'WigoSwap', + assets: ['USDC', 'DAI'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + 'OVER_COLLAT_ALGO_STABLECOIN', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://wigoswap.io/add/0x04068DA6C83AFCFA0e13ba15A6696662335D5B75/0x8D11eC38a3EB5E956B052f67Da8Bdc9bef8Abf3E', + buyTokenUrl: + 'https://wigoswap.io/swap?inputCurrency=0x04068DA6C83AFCFA0e13ba15A6696662335D5B75&outputCurrency=0x8D11eC38a3EB5E956B052f67Da8Bdc9bef8Abf3E', + createdAt: 1645161865, + }, + { + id: 'wigo-usdc-fusdt', + name: 'USDC-fUSDT LP', + token: 'USDC-fUSDT WLP', + tokenDescription: 'WigoSwap', + tokenAddress: '0x219eF2d8DaD28a72dA297E79ed6a990F65307a4C', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooWigoUSDC-fUSDT', + earnedTokenAddress: '0xc5b437d5207233C1c651aCea4f11842BECdf1E37', + earnContractAddress: '0xc5b437d5207233C1c651aCea4f11842BECdf1E37', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'wigo-usdc-fusdt', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'WigoSwap', + assets: ['USDC', 'fUSDT'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://wigoswap.io/add/0x04068DA6C83AFCFA0e13ba15A6696662335D5B75/0x049d68029688eAbF473097a2fC38ef61633A3C7A', + buyTokenUrl: + 'https://wigoswap.io/swap?inputCurrency=0x04068DA6C83AFCFA0e13ba15A6696662335D5B75&outputCurrency=0x049d68029688eAbF473097a2fC38ef61633A3C7A', + createdAt: 1645166692, + }, + { + id: 'wigo-usdc-frax', + name: 'FRAX-USDC LP', + token: 'FRAX-USDC WLP', + tokenDescription: 'WigoSwap', + tokenAddress: '0x3518B99C445d1f35E041f8D2893bbc113e392ea4', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooWigoFRAX-USDC', + earnedTokenAddress: '0xdB58dF435192Ea66FFC273Ab83C6de81299c6A67', + earnContractAddress: '0xdB58dF435192Ea66FFC273Ab83C6de81299c6A67', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'wigo-usdc-frax', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'WigoSwap', + assets: ['FRAX', 'USDC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://wigoswap.io/add/0x04068DA6C83AFCFA0e13ba15A6696662335D5B75/0xdc301622e621166BD8E82f2cA0A26c13Ad0BE355', + buyTokenUrl: + 'https://wigoswap.io/swap?inputCurrency=0x04068DA6C83AFCFA0e13ba15A6696662335D5B75&outputCurrency=0xdc301622e621166BD8E82f2cA0A26c13Ad0BE355', + createdAt: 1645947800, + }, + { + id: 'boo-kae-wftm', + name: 'KAE-FTM LP', + token: 'KAE-FTM LP', + tokenDescription: 'SpookySwap', + tokenAddress: '0xE6C2DB69dCDA38A8f56feAfC0229E6f039E5d5E2', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBooFTM-KAE', + earnedTokenAddress: '0x8D4022a63634a785955a5Da01ab639a469430585', + earnContractAddress: '0x8D4022a63634a785955a5Da01ab639a469430585', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'boo-kae-wftm', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SpookySwap', + assets: ['KAE', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: 'https://spooky.fi/#/add/FTM/0x65Def5029A0e7591e46B38742bFEdd1Fb7b24436', + buyTokenUrl: + 'https://spooky.fi/#/swap?outputCurrency=0x65Def5029A0e7591e46B38742bFEdd1Fb7b24436', + createdAt: 1645886552, + }, + { + id: 'beets-beardhemian-brushsody-eol', + logo: 'fantom/Beardhemian Brushsody.png', + name: 'Beardhemian Brushsody', + token: 'Beardhemian Brushsody', + tokenDescription: 'Beethoven X', + tokenAddress: '0x8FdD16a23aEBe95B928f1863760618E9EC29e72D', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBeetBeardhemianBrushsody', + earnedTokenAddress: '0x4737a4d9112347937a9b03f449678Ba01A0AcEae', + earnContractAddress: '0x4737a4d9112347937a9b03f449678Ba01A0AcEae', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'beets-beardhemian-brushsody', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'tvl', + platform: 'Beethoven X', + assets: ['BRUSH', 'USDC', 'FTM'], + risks: ['COMPLEXITY_LOW', 'NEW_STRAT', 'IL_HIGH', 'MCAP_MICRO', 'AUDIT', 'CONTRACTS_VERIFIED'], + stratType: 'StratMultiLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://beets.fi/#/pool/0x8fdd16a23aebe95b928f1863760618e9ec29e72d000100000000000000000166', + createdAt: 1644853476, + }, + { + id: 'boo-ftm-multi', + name: 'MULTI-FTM LP', + token: 'MULTI-FTM LP', + tokenDescription: 'SpookySwap', + tokenAddress: '0x297C8990134bf1eE08aE5D8805042fbac8781201', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBooFTM-MULTI', + earnedTokenAddress: '0x22f72e86A9CA2CDD3Cdc94012E9901D93E3d90F8', + earnContractAddress: '0x22f72e86A9CA2CDD3Cdc94012E9901D93E3d90F8', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'boo-ftm-multi', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SpookySwap', + assets: ['MULTI', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: 'https://spooky.fi/#/add/FTM/0x9fb9a33956351cf4fa040f65a13b835a3c8764e3', + buyTokenUrl: + 'https://spooky.fi/#/swap?outputCurrency=0x9fb9a33956351cf4fa040f65a13b835a3c8764e3', + createdAt: 1645049415, + }, + { + id: 'spirit-usdc-dei', + name: 'DEI-USDC LP', + token: 'DEI-USDC SLP', + tokenDescription: 'SpiritSwap', + tokenAddress: '0x8eFD36aA4Afa9F4E157bec759F1744A7FeBaEA0e', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSpiritUSDC-DEI', + earnedTokenAddress: '0x01CC6C3262E24e0d7f45c968e84A8b2ddC12b9cF', + earnContractAddress: '0x01CC6C3262E24e0d7f45c968e84A8b2ddC12b9cF', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'spirit-usdc-dei', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SpiritSwap', + assets: ['DEI', 'USDC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'ALGO_STABLE', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://swap.spiritswap.finance/#/add/USDC/0xDE12c7959E1a72bbe8a5f7A1dc8f8EeF9Ab011B3', + buyTokenUrl: + 'https://swap.spiritswap.finance/#/exchange/swap/USDC/0xDE12c7959E1a72bbe8a5f7A1dc8f8EeF9Ab011B3', + createdAt: 1645034296, + }, + { + id: 'spirit-ftm-deus', + name: 'DEUS-FTM LP', + token: 'DEUS-FTM SLP', + tokenDescription: 'SpiritSwap', + tokenAddress: '0x2599Eba5fD1e49F294C76D034557948034d6C96E', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSpiritFTM-DEUS', + earnedTokenAddress: '0x4194cbcF85A1B3f419741432Ae455f28d51Ee7EF', + earnContractAddress: '0x4194cbcF85A1B3f419741432Ae455f28d51Ee7EF', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'spirit-ftm-deus', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SpiritSwap', + assets: ['DEUS', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://swap.spiritswap.finance/#/add/FTM/0xDE5ed76E7c05eC5e4572CfC88d1ACEA165109E44', + buyTokenUrl: + 'https://swap.spiritswap.finance/#/exchange/swap/FTM/0xDE5ed76E7c05eC5e4572CfC88d1ACEA165109E44', + createdAt: 1645034296, + }, + { + id: 'spirit-ftm-cre8r', + name: 'CRE8R-FTM LP', + token: 'CRE8R-FTM SLP', + tokenDescription: 'SpiritSwap', + tokenAddress: '0x459e7c947E04d73687e786E4A48815005dFBd49A', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSpiritFTM-CRE8R', + earnedTokenAddress: '0x503FF2102D51ec816C693017d26E31df666Cadf0', + earnContractAddress: '0x503FF2102D51ec816C693017d26E31df666Cadf0', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'spirit-ftm-cre8r', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SpiritSwap', + assets: ['CRE8R', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://swap.spiritswap.finance/#/add/FTM/0x2aD402655243203fcfa7dCB62F8A08cc2BA88ae0', + buyTokenUrl: + 'https://swap.spiritswap.finance/#/exchange/swap/FTM/0x2aD402655243203fcfa7dCB62F8A08cc2BA88ae0', + createdAt: 1645034296, + }, + { + id: 'beets-treeb-me-bro-eol', + name: 'Treeb Me Bro', + token: 'Treeb Me Bro', + tokenDescription: 'Beethoven X', + tokenAddress: '0xA1C5698A042638b6220e336Ed9cFAFb499560c20', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBeetTreebMeBro', + earnedTokenAddress: '0xD8E92bcBf66a675b2Ac45f0BBbb0F285ba607AB7', + earnContractAddress: '0xD8E92bcBf66a675b2Ac45f0BBbb0F285ba607AB7', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'beets-treeb-me-bro', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Beethoven X', + assets: ['TREEB', 'USDC'], + risks: ['COMPLEXITY_LOW', 'NEW_STRAT', 'IL_HIGH', 'MCAP_MICRO', 'AUDIT', 'CONTRACTS_VERIFIED'], + stratType: 'StratMultiLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://beets.fi/#/pool/0xa1c5698a042638b6220e336ed9cfafb499560c200002000000000000000001b6', + createdAt: 1644853476, + }, + { + id: 'ripae-pftm-ftm', + name: 'pFTM-FTM LP', + token: 'pFTM-FTM LP', + tokenDescription: 'SpookySwap (Ripae)', + tokenAddress: '0x9ce8e9b090e8AF873e793e0b78C484076F8CEECE', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooRipaePFTM-FTM', + earnedTokenAddress: '0xb97C963834319e1E07d4F241F1F42f6a41CAEB85', + earnContractAddress: '0xb97C963834319e1E07d4F241F1F42f6a41CAEB85', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'ripae-pftm-ftm', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Ripae', + assets: ['pFTM', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: 'https://spooky.fi/#/add/FTM/0x112dF7E3b4B7Ab424F07319D4E92F41e6608c48B', + buyTokenUrl: + 'https://spooky.fi/#/swap?outputCurrency=0x112dF7E3b4B7Ab424F07319D4E92F41e6608c48B', + createdAt: 1644485111, + }, + { + id: 'ripae-pae-ftm', + name: 'PAE-FTM LP', + token: 'PAE-FTM LP', + tokenDescription: 'SpookySwap (Ripae)', + tokenAddress: '0x2DC234DbfC085DdbC36a6EACC061D7333Cd397b0', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooRipaePAE-FTM', + earnedTokenAddress: '0x1f01078af0b8a4e7E2BA6211Bda7e92F89393284', + earnContractAddress: '0x1f01078af0b8a4e7E2BA6211Bda7e92F89393284', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'ripae-pae-ftm', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Ripae', + assets: ['PAE', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: 'https://spooky.fi/#/add/FTM/0x8a41f13a4FaE75ca88B1ee726ee9D52B148b0498', + buyTokenUrl: + 'https://spooky.fi/#/swap?outputCurrency=0x8a41f13a4FaE75ca88B1ee726ee9D52B148b0498', + createdAt: 1644485584, + }, + { + id: 'boo-mst-wftm-eol', + name: 'MST-FTM LP', + token: 'MST-FTM LP', + tokenDescription: 'SpookySwap', + tokenAddress: '0x1a88E447c7468B28de490b25a076A4fFc0C68b16', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBooMST-WFTM', + earnedTokenAddress: '0xf112252fB4b7c2cEA1A78659e8Da91C6Ef8fB35F', + earnContractAddress: '0xf112252fB4b7c2cEA1A78659e8Da91C6Ef8fB35F', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'boo-mst-wftm', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'tvl', + platform: 'SpookySwap', + assets: ['MST', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + buyTokenUrl: + 'https://spooky.fi/#/swap?outputCurrency=0x152888854378201e173490956085c711f1DeD565', + addLiquidityUrl: 'https://spooky.fi/#/add/FTM/0x152888854378201e173490956085c711f1DeD565', + createdAt: 1644813183, + }, + { + id: 'sushi-yfi-eth-eol', + name: 'YFI-ETH LP', + token: 'YFI-ETH SuLP', + tokenDescription: 'Sushi', + tokenAddress: '0xe3eD4237532E6095749a6C984bFCb449C2b86122', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSushiYFI-ETH', + earnedTokenAddress: '0x38d58bd9E6DCA0bA4B6512db7f98aB37C2b7cEbA', + earnContractAddress: '0x38d58bd9E6DCA0bA4B6512db7f98aB37C2b7cEbA', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'sushi-yfi-eth', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'SushiSwap', + withdrawalFee: '0%', + assets: ['YFI', 'ETH'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.sushi.com/add/0x29b0Da86e484E1C0029B56e817912d778aC0EC69/0x74b23882a30290451A17c44f4F05243b6b58C76d', + buyTokenUrl: + 'https://app.sushi.com/swap?inputCurrency=0x74b23882a30290451A17c44f4F05243b6b58C76d&outputCurrency=0x29b0Da86e484E1C0029B56e817912d778aC0EC69', + createdAt: 1644347692, + }, + { + id: 'spirit-ftm-dai-eol', + name: 'DAI-FTM LP', + token: 'DAI-FTM SLP', + tokenDescription: 'SpiritSwap', + tokenAddress: '0xdbc490b47508D31c9EC44aFB6e132AD01C61A02c', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSpiritFTM-DAI', + earnedTokenAddress: '0x95a38faee2B13FE450BeF051b01672d65422e4e8', + earnContractAddress: '0x95a38faee2B13FE450BeF051b01672d65422e4e8', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'spirit-ftm-dai', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'tvl', + platform: 'SpiritSwap', + assets: ['DAI', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + 'OVER_COLLAT_ALGO_STABLECOIN', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://swap.spiritswap.finance/#/add/FTM/0x8D11eC38a3EB5E956B052f67Da8Bdc9bef8Abf3E', + buyTokenUrl: + 'https://swap.spiritswap.finance/#/exchange/swap/FTM/0x8D11eC38a3EB5E956B052f67Da8Bdc9bef8Abf3E', + createdAt: 1644340948, + }, + { + id: 'spirit-ftm-wshec', + name: 'wsHEC-FTM LP', + token: 'wsHEC-FTM SLP', + tokenDescription: 'SpiritSwap', + tokenAddress: '0xE1fd274Ef08D50C3ecdaEe90c322b6c2342AE5DE', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSpiritFTM-wsHEC', + earnedTokenAddress: '0xBDC6830635BF9098b5c1d783c57a3C143826b38F', + earnContractAddress: '0xBDC6830635BF9098b5c1d783c57a3C143826b38F', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'spirit-ftm-wshec', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SpiritSwap', + assets: ['wsHEC', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://swap.spiritswap.finance/#/add/FTM/0x94CcF60f700146BeA8eF7832820800E2dFa92EdA', + buyTokenUrl: + 'https://swap.spiritswap.finance/#/exchange/swap/FTM/0x94CcF60f700146BeA8eF7832820800E2dFa92EdA', + createdAt: 1644337415, + }, + { + id: 'spirit-ftm-multi-eol', + name: 'MULTI-FTM LP', + token: 'MULTI-FTM SLP', + tokenDescription: 'SpiritSwap', + tokenAddress: '0x15aFDbDb27767d58A58459ae159814b6bBe6f506', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSpiritFTM-MULTI', + earnedTokenAddress: '0x35564A47e75bfAF2ad912dfaB0E84066880a3B92', + earnContractAddress: '0x35564A47e75bfAF2ad912dfaB0E84066880a3B92', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'spirit-ftm-multi', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'tvl', + platform: 'SpiritSwap', + assets: ['MULTI', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://swap.spiritswap.finance/#/add/FTM/0x9Fb9a33956351cf4fa040f65A13b835A3C8764E3', + buyTokenUrl: + 'https://swap.spiritswap.finance/#/exchange/swap/FTM/0x9Fb9a33956351cf4fa040f65A13b835A3C8764E3', + createdAt: 1644338119, + }, + { + id: 'sushi-wftm-link-eol', + name: 'LINK-FTM LP', + token: 'LINK-FTM SuLP', + tokenDescription: 'Sushi', + tokenAddress: '0x1Ca86e57103564F47fFCea7259a6ce8Cc1301549', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSushiWFTM-LINK', + earnedTokenAddress: '0x912d3e6c4d3CE89Ac85e3FbB22631D5E85D5158a', + earnContractAddress: '0x912d3e6c4d3CE89Ac85e3FbB22631D5E85D5158a', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'sushi-wftm-link', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'SushiSwap', + withdrawalFee: '0%', + assets: ['FTM', 'LINK'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.sushi.com/add/0x21be370D5312f44cB42ce377BC9b8a0cEF1A4C83/0xb3654dc3D10Ea7645f8319668E8F54d2574FBdC8', + buyTokenUrl: + 'https://app.sushi.com/swap?inputCurrency=0x21be370d5312f44cb42ce377bc9b8a0cef1a4c83&outputCurrency=0xb3654dc3d10ea7645f8319668e8f54d2574fbdc8', + createdAt: 1643801084, + }, + { + id: 'spirit-ftm-spell-eol', + name: 'SPELL-FTM LP', + token: 'SPELL-FTM SLP', + tokenDescription: 'SpiritSwap', + tokenAddress: '0x19d4092635740699B6E4735701742740e235165A', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSpiritFTM-SPELL', + earnedTokenAddress: '0x321e12265BB425fAAe662f0cE5b12667F6A1C38A', + earnContractAddress: '0x321e12265BB425fAAe662f0cE5b12667F6A1C38A', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'spirit-ftm-spell', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'tvl', + platform: 'SpiritSwap', + assets: ['SPELL', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_SMALL', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://swap.spiritswap.finance/#/add/FTM/0x468003B688943977e6130F4F68F23aad939a1040', + buyTokenUrl: + 'https://swap.spiritswap.finance/#/exchange/swap/FTM/0x468003B688943977e6130F4F68F23aad939a1040', + createdAt: 1644170237, + }, + { + id: 'spirit-ftm-jewel', + name: 'JEWEL-FTM LP', + token: 'JEWEL-FTM SLP', + tokenDescription: 'SpiritSwap', + tokenAddress: '0x782b3e90d85b72fDD3A15dE534fD0DC9D5Ae46E7', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSpiritFTM-JEWEL', + earnedTokenAddress: '0x2D68D7759B61CE73C03F3b48fa15b23d2b5475EE', + earnContractAddress: '0x2D68D7759B61CE73C03F3b48fa15b23d2b5475EE', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'spirit-ftm-jewel', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SpiritSwap', + assets: ['JEWEL', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://swap.spiritswap.finance/#/add/FTM/0xD97F9674E2597e7a252de4875985f4385B9608fB', + buyTokenUrl: + 'https://swap.spiritswap.finance/#/exchange/swap/FTM/0xD97F9674E2597e7a252de4875985f4385B9608fB', + createdAt: 1644171366, + }, + { + id: 'spirit-ftm-pills-eol', + name: 'PILLS-FTM LP', + token: 'PILLS-FTM SLP', + tokenDescription: 'SpiritSwap', + tokenAddress: '0x9C775D3D66167685B2A3F4567B548567D2875350', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSpiritFTM-PILLS', + earnedTokenAddress: '0xB9aA08Bf789cDe3312F453B23c94b40be1F87613', + earnContractAddress: '0xB9aA08Bf789cDe3312F453B23c94b40be1F87613', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'spirit-ftm-pills', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'tvl', + platform: 'SpiritSwap', + assets: ['PILLS', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://swap.spiritswap.finance/#/add/FTM/0xB66b5D38E183De42F21e92aBcAF3c712dd5d6286', + buyTokenUrl: + 'https://swap.spiritswap.finance/#/exchange/swap/FTM/0xB66b5D38E183De42F21e92aBcAF3c712dd5d6286', + createdAt: 1644248016, + }, + { + id: 'spirit-ftm-eth-eol', + name: 'ETH-FTM LP', + token: 'ETH-FTM SLP', + tokenDescription: 'SpiritSwap', + tokenAddress: '0x613BF4E46b4817015c01c6Bb31C7ae9edAadc26e', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSpiritFTM-ETH', + earnedTokenAddress: '0x12b5A9154d079d9bD3Fe5BF923Bc9CFa36439d18', + earnContractAddress: '0x12b5A9154d079d9bD3Fe5BF923Bc9CFa36439d18', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'spirit-ftm-eth', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'tvl', + platform: 'SpiritSwap', + assets: ['ETH', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://swap.spiritswap.finance/#/add/FTM/0x74b23882a30290451A17c44f4F05243b6b58C76d', + buyTokenUrl: + 'https://swap.spiritswap.finance/#/exchange/swap/FTM/0x74b23882a30290451A17c44f4F05243b6b58C76d', + createdAt: 1644248760, + }, + { + id: 'boo-usdc-fs-eol', + name: 'FS-USDC LP', + token: 'FS-USDC LP', + tokenDescription: 'SpookySwap', + tokenAddress: '0x395215AaE81C5D266dCa89Ce82b5940f7F5C193e', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBooUSDC-FS', + earnedTokenAddress: '0x7Bf927826a587050a908320027C8a62cd0c54B04', + earnContractAddress: '0x7Bf927826a587050a908320027C8a62cd0c54B04', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'boo-usdc-fs', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'tvl', + platform: 'SpookySwap', + assets: ['FS', 'USDC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + buyTokenUrl: + 'https://spooky.fi/#/swap?inputCurrency=0x04068DA6C83AFCFA0e13ba15A6696662335D5B75&outputCurrency=0xC758295Cd1A564cdb020a78a681a838CF8e0627D', + addLiquidityUrl: + 'https://spooky.fi/#/add/0x04068DA6C83AFCFA0e13ba15A6696662335D5B75/0xC758295Cd1A564cdb020a78a681a838CF8e0627D', + createdAt: 1644274576, + }, + { + id: 'boo-font-ftm-eol', + name: 'FONT-FTM LP', + token: 'FONT-FTM LP', + tokenDescription: 'SpookySwap', + tokenAddress: '0x1C8D76074619BCA749b521343Ce16bb96d9F3614', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBooFONT-FTM', + earnedTokenAddress: '0x90aa5be46B99eA5fF9aEa1C8115cB13caca20d04', + earnContractAddress: '0x90aa5be46B99eA5fF9aEa1C8115cB13caca20d04', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'boo-font-ftm', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'SpookySwap', + assets: ['FONT', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: 'https://spooky.fi/#/add/FTM/0xbbc4a8d076f4b1888fec42581b6fc58d242cf2d5', + buyTokenUrl: + 'https://spooky.fi/#/swap?outputCurrency=0xbbc4A8d076F4B1888fec42581B6fc58d242CF2D5', + createdAt: 1644614666, + }, + { + id: 'spirit-ftm-frax', + name: 'FRAX-FTM LP', + token: 'FRAX-FTM SLP', + tokenDescription: 'SpiritSwap', + tokenAddress: '0x7ed0cdDB9BB6c6dfEa6fB63E117c8305479B8D7D', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSpiritFTM-FRAX', + earnedTokenAddress: '0x0EB510C4Af8AD8A7E658Dee5F4DA36AaF9B1A146', + earnContractAddress: '0x0EB510C4Af8AD8A7E658Dee5F4DA36AaF9B1A146', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'spirit-ftm-frax', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SpiritSwap', + assets: ['FRAX', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://swap.spiritswap.finance/#/add/FTM/0xdc301622e621166BD8E82f2cA0A26c13Ad0BE355', + buyTokenUrl: + 'https://swap.spiritswap.finance/#/exchange/swap/FTM/0xdc301622e621166BD8E82f2cA0A26c13Ad0BE355', + createdAt: 1644000284, + }, + { + id: 'spirit-ftm-mai', + name: 'MAI-FTM LP', + token: 'MAI-FTM SLP', + tokenDescription: 'SpiritSwap', + tokenAddress: '0x51Eb93ECfEFFbB2f6fE6106c4491B5a0B944E8bd', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSpiritFTM-MAI', + earnedTokenAddress: '0x256eB6bddadF04750C71b1d9701c64F011Aaa559', + earnContractAddress: '0x256eB6bddadF04750C71b1d9701c64F011Aaa559', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'spirit-ftm-mai', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SpiritSwap', + assets: ['MAI', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_SMALL', + 'AUDIT', + 'CONTRACTS_VERIFIED', + 'OVER_COLLAT_ALGO_STABLECOIN', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://swap.spiritswap.finance/#/add/FTM/0xfB98B335551a418cD0737375a2ea0ded62Ea213b', + buyTokenUrl: + 'https://swap.spiritswap.finance/#/exchange/swap/FTM/0xfB98B335551a418cD0737375a2ea0ded62Ea213b', + createdAt: 1644003891, + }, + { + id: 'spirit-ftm-gohm', + name: 'gOHM-FTM LP', + token: 'gOHM-FTM SLP', + tokenDescription: 'SpiritSwap', + tokenAddress: '0xae9BBa22E87866e48ccAcFf0689AFaa41eB94995', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSpiritFTM-gOHM', + earnedTokenAddress: '0xa031e6F2Acf9fE197C4A22c3fC584bFD4932F476', + earnContractAddress: '0xa031e6F2Acf9fE197C4A22c3fC584bFD4932F476', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'spirit-ftm-gohm', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SpiritSwap', + assets: ['gOHM', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://swap.spiritswap.finance/#/add/FTM/0x91fa20244Fb509e8289CA630E5db3E9166233FDc', + buyTokenUrl: + 'https://swap.spiritswap.finance/#/exchange/swap/FTM/0x91fa20244Fb509e8289CA630E5db3E9166233FDc', + createdAt: 1644011850, + }, + { + id: '2omb-2omb-2share-eol', + name: '2OMB-2SHARE LP', + token: '2OMB-2SHARE LP', + tokenDescription: 'SpookySwap (2omb)', + tokenAddress: '0xd9B5f00d183df52D717046521152303129F088DD', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'moo2omb2OMB-2SHARE', + earnedTokenAddress: '0x0c6B9982B5B18f6D77E55fC754DB6182ae2D847f', + earnContractAddress: '0x0c6B9982B5B18f6D77E55fC754DB6182ae2D847f', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: '2omb-2omb-2share', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Other', + assets: ['2OMB', '2SHARES'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://spooky.fi/#/add/0x7a6e4E3CC2ac9924605DCa4bA31d1831c84b44aE/0xc54A1684fD1bef1f077a336E6be4Bd9a3096a6Ca', + buyTokenUrl: + 'https://spooky.fi/#/swap?inputCurrency=0x7a6e4E3CC2ac9924605DCa4bA31d1831c84b44aE&outputCurrency=0xc54A1684fD1bef1f077a336E6be4Bd9a3096a6Ca', + createdAt: 1644007618, + }, + { + id: 'spirit-ftm-spirit', + name: 'SPIRIT-FTM LP', + token: 'SPIRIT-FTM SLP', + tokenDescription: 'SpiritSwap', + tokenAddress: '0x30748322B6E34545DBe0788C421886AEB5297789', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSpiritFTM-SPIRIT', + earnedTokenAddress: '0x415ADafbfBbe183E10c059dEbf283C5428cb6628', + earnContractAddress: '0x415ADafbfBbe183E10c059dEbf283C5428cb6628', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'spirit-ftm-spirit', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SpiritSwap', + assets: ['SPIRIT', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_SMALL', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://swap.spiritswap.finance/#/add/FTM/0x5Cc61A78F164885776AA610fb0FE1257df78E59B', + buyTokenUrl: + 'https://swap.spiritswap.finance/#/exchange/swap/0x5Cc61A78F164885776AA610fb0FE1257df78E59B', + createdAt: 1643747530, + }, + { + id: 'beets-demeters-degree-eol', + name: 'Demeters Degree', + token: 'Demeters Degree', + tokenDescription: 'Beethoven X', + tokenAddress: '0xf7bF0f161d3240488807FFa23894452246049916', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBeetDemetersDegree', + earnedTokenAddress: '0x283277751369c6012D9C4384e1779b2a8672F1d7', + earnContractAddress: '0x283277751369c6012D9C4384e1779b2a8672F1d7', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'beets-demeters-degree', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Beethoven X', + assets: ['gOHM', 'FTM'], + risks: ['COMPLEXITY_LOW', 'NEW_STRAT', 'IL_HIGH', 'MCAP_SMALL', 'AUDIT', 'CONTRACTS_VERIFIED'], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://beets.fi/#/pool/0xf7bf0f161d3240488807ffa23894452246049916000200000000000000000198', + createdAt: 1643849905, + }, + { + id: '0xdao-xscream-eol', + logo: 'single-assets/xSCREAM.png', + name: 'xSCREAM', + token: 'xSCREAM', + tokenDescription: '0xDAO', + tokenAddress: '0xe3D17C7e840ec140a7A51ACA351a482231760824', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooOXDxSCREAM', + earnedTokenAddress: '0x7926eA7aba64AF38297b832DEc713804f99039fD', + earnContractAddress: '0x7926eA7aba64AF38297b832DEc713804f99039fD', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'xSCREAM', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Other', + assets: ['xSCREAM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_MICRO', + 'NO_AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'SingleStake', + withdrawalFee: '0%', + addLiquidityUrl: 'https://scream.sh/stake', + buyTokenUrl: + 'https://spooky.fi/#/swap?outputCurrency=0xe0654C8e6fd4D733349ac7E09f6f23DA256bF475', + createdAt: 1643612827, + }, + { + id: '0xdao-xboo-eol', + logo: 'single-assets/xBOO.png', + name: 'xBOO', + token: 'xBOO', + tokenDescription: '0xDAO', + tokenAddress: '0xa48d959AE2E88f1dAA7D5F611E01908106dE7598', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooOXDxBOO', + earnedTokenAddress: '0xE95f98631895bB9657e37906ea4c61b272BddeB0', + earnContractAddress: '0xE95f98631895bB9657e37906ea4c61b272BddeB0', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'xBOO', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Other', + assets: ['xBOO'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_SMALL', + 'NO_AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'SingleStake', + withdrawalFee: '0%', + addLiquidityUrl: 'https://spooky.fi/#/pools', + buyTokenUrl: + 'https://spooky.fi/#/swap?outputCurrency=0x841FAD6EAe12c286d1Fd18d1d525DFfA75C7EFFE', + createdAt: 1643099828, + }, + { + id: 'scream-ftm', + logo: 'single-assets/FTM.png', + name: 'FTM', + token: 'FTM', + tokenDescription: 'Scream', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooScreamFTM', + earnedTokenAddress: '0x49c68eDb7aeBd968F197121453e41b8704AcdE0C', + earnContractAddress: '0x49c68eDb7aeBd968F197121453e41b8704AcdE0C', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'WFTM', + oraclePrice: 0, + depositsPaused: true, + status: 'active', + platform: 'Scream', + assets: ['FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'Lending', + withdrawalFee: '0%', + buyTokenUrl: 'https://spooky.fi/#/swap?outputCurrency=FTM', + createdAt: 1628734094, + }, + { + id: '0xdao-oxd-eol', + logo: 'single-assets/OXD.png', + name: 'OXD', + token: 'OXD', + tokenDescription: '0xDAO', + tokenAddress: '0xc165d941481e68696f43EE6E99BFB2B23E0E3114', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooOXD', + earnedTokenAddress: '0x59a7e9F6B369aA88A7EABfbc43D3EF72DEf4bd81', + earnContractAddress: '0x59a7e9F6B369aA88A7EABfbc43D3EF72DEf4bd81', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'OXD', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Other', + assets: ['OXD'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_MICRO', + 'NO_AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'SingleStake', + withdrawalFee: '0%', + buyTokenUrl: + 'https://spooky.fi/#/swap?outputCurrency=0xc165d941481e68696f43EE6E99BFB2B23E0E3114', + createdAt: 1643104856, + }, + { + id: 'sushi-usdc-wftm', + name: 'USDC-FTM LP', + token: 'USDC-FTM SuLP', + tokenDescription: 'Sushi', + tokenAddress: '0xA48869049e36f8Bfe0Cc5cf655632626988c0140', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSushiUSDC-FTM', + earnedTokenAddress: '0xb870e4755C737D2753D7298D0e70344077905Ed5', + earnContractAddress: '0xb870e4755C737D2753D7298D0e70344077905Ed5', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'sushi-usdc-wftm', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SushiSwap', + withdrawalFee: '0%', + assets: ['USDC', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.sushi.com/add/0x04068DA6C83AFCFA0e13ba15A6696662335D5B75/0x21be370D5312f44cB42ce377BC9b8a0cEF1A4C83', + buyTokenUrl: + 'https://app.sushi.com/swap?inputCurrency=0x21be370D5312f44cB42ce377BC9b8a0cEF1A4C83&outputCurrency=0x04068DA6C83AFCFA0e13ba15A6696662335D5B75', + createdAt: 1642944703, + }, + { + id: 'sushi-wftm-eth', + name: 'ETH-FTM LP', + token: 'ETH-FTM SuLP', + tokenDescription: 'Sushi', + tokenAddress: '0x3d0BD54c48C2C433ea6fed609Cc3d5Fb7A77622B', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSushiETH-FTM', + earnedTokenAddress: '0xd6D138fb65c2a68E728D70EfbAA54c794B73B6A0', + earnContractAddress: '0xd6D138fb65c2a68E728D70EfbAA54c794B73B6A0', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'sushi-wftm-eth', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SushiSwap', + withdrawalFee: '0%', + assets: ['ETH', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.sushi.com/add/0x74b23882a30290451A17c44f4F05243b6b58C76d/0x21be370D5312f44cB42ce377BC9b8a0cEF1A4C83', + buyTokenUrl: + 'https://app.sushi.com/swap?inputCurrency=0x21be370D5312f44cB42ce377BC9b8a0cEF1A4C83&outputCurrency=0x74b23882a30290451A17c44f4F05243b6b58C76d', + createdAt: 1642945488, + }, + { + id: 'sushi-fusdt-wftm', + name: 'fUSDT-FTM LP', + token: 'fUSDT-FTM SuLP', + tokenDescription: 'Sushi', + tokenAddress: '0xd019dd7C760c6431797d6ed170bFFb8FAee11F99', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSushifUSDT-FTM', + earnedTokenAddress: '0xBfC2C7323739A616f555d4410e4a4bF4Dad89e93', + earnContractAddress: '0xBfC2C7323739A616f555d4410e4a4bF4Dad89e93', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'sushi-fusdt-wftm', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SushiSwap', + withdrawalFee: '0%', + assets: ['fUSDT', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.sushi.com/add/0x049d68029688eAbF473097a2fC38ef61633A3C7A/0x21be370D5312f44cB42ce377BC9b8a0cEF1A4C83', + buyTokenUrl: + 'https://app.sushi.com/swap?inputCurrency=0x049d68029688eAbF473097a2fC38ef61633A3C7A&outputCurrency=0x74b23882a30290451A17c44f4F05243b6b58C76d', + createdAt: 1642946143, + }, + { + id: 'sushi-eth-dai', + name: 'ETH-DAI LP', + token: 'ETH-DAI SuLP', + tokenDescription: 'Sushi', + tokenAddress: '0x71C8BceEcE3dAf9E27741D2Cc1F03170f862555f', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSushiETH-DAI', + earnedTokenAddress: '0x5Ed95BbE1743370f42657e7D8f8E02b4055145EF', + earnContractAddress: '0x5Ed95BbE1743370f42657e7D8f8E02b4055145EF', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'sushi-eth-dai', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SushiSwap', + withdrawalFee: '0%', + assets: ['ETH', 'DAI'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + 'OVER_COLLAT_ALGO_STABLECOIN', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.sushi.com/add/0x74b23882a30290451A17c44f4F05243b6b58C76d/0x8D11eC38a3EB5E956B052f67Da8Bdc9bef8Abf3E', + buyTokenUrl: + 'https://app.sushi.com/swap?inputCurrency=0x74b23882a30290451A17c44f4F05243b6b58C76d&outputCurrency=0x8D11eC38a3EB5E956B052f67Da8Bdc9bef8Abf3E', + createdAt: 1642946550, + }, + { + id: 'sushi-usdc-mim', + name: 'MIM-USDC LP', + token: 'MIM-USDC SuLP', + tokenDescription: 'Sushi', + tokenAddress: '0xFFdc0531288dc91C1F49Db03A90Ed84725E9eDa7', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSushiMIM-USDC', + earnedTokenAddress: '0x8f4F3cF7ECbfbD68DEC61F5F022f5a6655F5E3e0', + earnContractAddress: '0x8f4F3cF7ECbfbD68DEC61F5F022f5a6655F5E3e0', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'sushi-usdc-mim', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SushiSwap', + withdrawalFee: '0%', + assets: ['MIM', 'USDC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + 'OVER_COLLAT_ALGO_STABLECOIN', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.sushi.com/add/0x04068DA6C83AFCFA0e13ba15A6696662335D5B75/0x82f0B8B456c1A451378467398982d4834b6829c1', + buyTokenUrl: + 'https://app.sushi.com/swap?inputCurrency=0x04068DA6C83AFCFA0e13ba15A6696662335D5B75&outputCurrency=0x82f0B8B456c1A451378467398982d4834b6829c1', + createdAt: 1642946810, + }, + { + id: 'sushi-btc-eth', + name: 'ETH-BTC LP', + token: 'ETH-BTC SuLP', + tokenDescription: 'Sushi', + tokenAddress: '0x33e29a9eBdD370a8D50656e822aBFD3A910dA1b6', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSushiETH-BTC', + earnedTokenAddress: '0x4B541D2D395Cb943111A2a7CA6186f9C2901BAFA', + earnContractAddress: '0x4B541D2D395Cb943111A2a7CA6186f9C2901BAFA', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'sushi-btc-eth', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SushiSwap', + withdrawalFee: '0.01%', + assets: ['ETH', 'WBTC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.sushi.com/add/0x321162Cd933E2Be498Cd2267a90534A804051b11/0x74b23882a30290451A17c44f4F05243b6b58C76d', + buyTokenUrl: + 'https://app.sushi.com/swap?inputCurrency=0x321162Cd933E2Be498Cd2267a90534A804051b11&outputCurrency=0x74b23882a30290451A17c44f4F05243b6b58C76d', + createdAt: 1642947064, + }, + { + id: 'sushi-wftm-sushi', + name: 'SUSHI-FTM LP', + token: 'SUSHI-FTM SuLP', + tokenDescription: 'Sushi', + tokenAddress: '0x49D2e0DC99C7358D7A9A8633Bf6df111D0EE7F65', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSushiSUSHI-FTM', + earnedTokenAddress: '0x5D060698F179E7D2233480A44d6D3979e4Ae9e7f', + earnContractAddress: '0x5D060698F179E7D2233480A44d6D3979e4Ae9e7f', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'sushi-wftm-sushi', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SushiSwap', + withdrawalFee: '0%', + assets: ['SUSHI', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.sushi.com/add/0x21be370D5312f44cB42ce377BC9b8a0cEF1A4C83/0xae75A438b2E0cB8Bb01Ec1E1e376De11D44477CC', + buyTokenUrl: + 'https://app.sushi.com/swap?inputCurrency=0x21be370D5312f44cB42ce377BC9b8a0cEF1A4C83&outputCurrency=0xae75A438b2E0cB8Bb01Ec1E1e376De11D44477CC', + createdAt: 1642948006, + }, + { + id: '0xdao-wftm-eol', + logo: 'single-assets/FTM.png', + name: 'FTM', + token: 'FTM', + tokenDescription: '0xDAO', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooOXDFTM', + earnedTokenAddress: '0x3D6AA308a59311D57456c2E968AdC1Dd3628869a', + earnContractAddress: '0x3D6AA308a59311D57456c2E968AdC1Dd3628869a', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'WFTM', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Other', + assets: ['FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'NO_AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'SingleStake', + withdrawalFee: '0%', + buyTokenUrl: 'https://spooky.fi/#/swap?outputCurrency=FTM', + createdAt: 1642887314, + }, + { + id: '0xdao-usdc-eol', + logo: 'single-assets/USDC.svg', + name: 'USDC', + token: 'USDC', + tokenDescription: '0xDAO', + tokenAddress: '0x04068DA6C83AFCFA0e13ba15A6696662335D5B75', + tokenDecimals: 6, + tokenDescriptionUrl: '#', + earnedToken: 'mooOXDUSDC', + earnedTokenAddress: '0xc27bF3Bbafee07a8d91048a6bF665286461F07c2', + earnContractAddress: '0xc27bF3Bbafee07a8d91048a6bF665286461F07c2', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'USDC', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Other', + assets: ['USDC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'NO_AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'SingleStake', + withdrawalFee: '0%', + buyTokenUrl: + 'https://spooky.fi/#/swap?outputCurrency=0x04068DA6C83AFCFA0e13ba15A6696662335D5B75', + createdAt: 1642877204, + }, + { + id: '0xdao-dai-eol', + logo: 'single-assets/DAI.svg', + name: 'DAI', + token: 'DAI', + tokenDescription: '0xDAO', + tokenAddress: '0x8D11eC38a3EB5E956B052f67Da8Bdc9bef8Abf3E', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooOXDDAI', + earnedTokenAddress: '0x80274861F0EB0a3dad0688040DBEA74b850C6b8c', + earnContractAddress: '0x80274861F0EB0a3dad0688040DBEA74b850C6b8c', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'DAI', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Other', + assets: ['DAI'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'NO_AUDIT', + 'CONTRACTS_VERIFIED', + 'OVER_COLLAT_ALGO_STABLECOIN', + ], + stratType: 'SingleStake', + withdrawalFee: '0%', + buyTokenUrl: + 'https://spooky.fi/#/swap?outputCurrency=0x8D11eC38a3EB5E956B052f67Da8Bdc9bef8Abf3E', + createdAt: 1642877428, + }, + { + id: '0xdao-mim-eol', + logo: 'single-assets/MIM.png', + name: 'MIM', + token: 'MIM', + tokenDescription: '0xDAO', + tokenAddress: '0x82f0B8B456c1A451378467398982d4834b6829c1', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooOXDMIM', + earnedTokenAddress: '0x06a435AB175554c26840b96E88dE161C2e1901E4', + earnContractAddress: '0x06a435AB175554c26840b96E88dE161C2e1901E4', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'MIM', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Other', + assets: ['MIM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'NO_AUDIT', + 'CONTRACTS_VERIFIED', + 'OVER_COLLAT_ALGO_STABLECOIN', + ], + stratType: 'SingleStake', + withdrawalFee: '0%', + buyTokenUrl: + 'https://spooky.fi/#/swap?outputCurrency=0x82f0B8B456c1A451378467398982d4834b6829c1', + createdAt: 1642880855, + }, + { + id: '0xdao-tomb-eol', + logo: 'single-assets/TOMB.png', + name: 'TOMB', + token: 'TOMB', + tokenDescription: '0xDAO', + tokenAddress: '0x6c021Ae822BEa943b2E66552bDe1D2696a53fbB7', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooOXDTOMB', + earnedTokenAddress: '0xF76e11b2e67169D2b835E7DE8755b37747A45D6D', + earnContractAddress: '0xF76e11b2e67169D2b835E7DE8755b37747A45D6D', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'TOMB', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Other', + assets: ['TOMB'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'NO_AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'SingleStake', + withdrawalFee: '0%', + buyTokenUrl: + 'https://spooky.fi/#/swap?outputCurrency=0x6c021Ae822BEa943b2E66552bDe1D2696a53fbB7', + createdAt: 1642865861, + }, + { + id: '0xdao-wbtc-eol', + logo: 'single-assets/WBTC.svg', + name: 'WBTC', + token: 'WBTC', + tokenDescription: '0xDAO', + tokenAddress: '0x321162Cd933E2Be498Cd2267a90534A804051b11', + tokenDecimals: 8, + tokenDescriptionUrl: '#', + earnedToken: 'mooOXDBTC', + earnedTokenAddress: '0xa8dCAEd8C1eb9c37653Ac7f9060e90BdA0256553', + earnContractAddress: '0xa8dCAEd8C1eb9c37653Ac7f9060e90BdA0256553', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'WBTC', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Other', + assets: ['WBTC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'NO_AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'SingleStake', + withdrawalFee: '0.01%', + buyTokenUrl: + 'https://spooky.fi/#/swap?outputCurrency=0x321162Cd933E2Be498Cd2267a90534A804051b11', + createdAt: 1642875469, + }, + { + id: '0xdao-weth-eol', + logo: 'single-assets/ETH.svg', + name: 'ETH', + token: 'ETH', + tokenDescription: '0xDAO', + tokenAddress: '0x74b23882a30290451A17c44f4F05243b6b58C76d', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooOXDETH', + earnedTokenAddress: '0x3C9e374DE5F1763279e22df3194C87544fdEB7E1', + earnContractAddress: '0x3C9e374DE5F1763279e22df3194C87544fdEB7E1', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'ETH', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Other', + assets: ['ETH'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'NO_AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'SingleStake', + withdrawalFee: '0%', + buyTokenUrl: + 'https://spooky.fi/#/swap?outputCurrency=0x74b23882a30290451A17c44f4F05243b6b58C76d', + createdAt: 1642860948, + }, + { + id: 'oxd-oxd-usdc-eol', + name: 'OXD-USDC LP', + token: 'OXD-USDC LP', + tokenDescription: 'SpookySwap (0xDAO)', + tokenAddress: '0xD5fa400a24EB2EA55BC5Bd29c989E70fbC626FfF', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooOXDOXD-USDC', + earnedTokenAddress: '0x350f0E29d67Bc6745D28b17554CFB5F53bBe90ac', + earnContractAddress: '0x350f0E29d67Bc6745D28b17554CFB5F53bBe90ac', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'oxd-oxd-usdc', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Other', + assets: ['OXD', 'USDC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'NO_AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://spooky.fi/#/add/0xc165d941481e68696f43EE6E99BFB2B23E0E3114/0x04068DA6C83AFCFA0e13ba15A6696662335D5B75', + buyTokenUrl: + 'https://spooky.fi/#/swap?inputCurrency=0x04068DA6C83AFCFA0e13ba15A6696662335D5B75&outputCurrency=0xc165d941481e68696f43EE6E99BFB2B23E0E3114', + createdAt: 1642811156, + }, + { + id: 'beets-spooky-tempered-clavier-eol', + logo: 'fantom/The Spooky-Tempered Clavier.png', + name: 'The Spooky-Tempered Clavier', + token: 'The Spooky-Tempered Clavier', + tokenDescription: 'Beethoven X', + tokenAddress: '0xfA901cAdCAf38cd533E8B1f693D090Fc7005658e', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBeetTemperedClavier', + earnedTokenAddress: '0xFd393C038DeaaF14D3186d6DA638D2dd6bFeD90B', + earnContractAddress: '0xFd393C038DeaaF14D3186d6DA638D2dd6bFeD90B', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'beets-spooky-tempered-clavier', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Beethoven X', + assets: ['BOO', 'USDC', 'FTM'], + risks: ['COMPLEXITY_LOW', 'NEW_STRAT', 'IL_HIGH', 'MCAP_LARGE', 'AUDIT', 'CONTRACTS_VERIFIED'], + stratType: 'StratMultiLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://beets.fi/#/pool/0xfa901cadcaf38cd533e8b1f693d090fc7005658e000100000000000000000165', + createdAt: 1642690961, + }, + { + id: 'boo-btc-eth', + name: 'WBTC-ETH LP', + token: 'WBTC-ETH LP', + tokenDescription: 'SpookySwap', + tokenAddress: '0xEc454EdA10accdD66209C57aF8C12924556F3aBD', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBooBTC-ETH', + earnedTokenAddress: '0x1313b9C550bbDF55Fc06f63a41D8BDC719d056A6', + earnContractAddress: '0x1313b9C550bbDF55Fc06f63a41D8BDC719d056A6', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'boo-btc-eth', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SpookySwap', + assets: ['WBTC', 'ETH'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0.01%', + addLiquidityUrl: + 'https://spooky.fi/#/add/0x74b23882a30290451A17c44f4F05243b6b58C76d/0x321162Cd933E2Be498Cd2267a90534A804051b11', + buyTokenUrl: + 'https://spooky.fi/#/swap?inputCurrency=0x74b23882a30290451A17c44f4F05243b6b58C76d&outputCurrency=0x321162Cd933E2Be498Cd2267a90534A804051b11', + createdAt: 1642672280, + }, + { + id: 'boo-wftm-beets', + name: 'BEETS-FTM LP', + token: 'BEETS-FTM LP', + tokenDescription: 'SpookySwap', + tokenAddress: '0x648a7452DA25B4fB4BDB79bADf374a8f8a5ea2b5', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBooFTM-BEETS', + earnedTokenAddress: '0xBdd229d2bcf8f31Fa90FD04c314078dAF4e2A0A4', + earnContractAddress: '0xBdd229d2bcf8f31Fa90FD04c314078dAF4e2A0A4', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'boo-wftm-beets', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SpookySwap', + assets: ['BEETS', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: 'https://spooky.fi/#/add/FTM/0xF24Bcf4d1e507740041C9cFd2DddB29585aDCe1e', + buyTokenUrl: + 'https://spooky.fi/#/swap?outputCurrency=0xF24Bcf4d1e507740041C9cFd2DddB29585aDCe1e', + createdAt: 1642634017, + }, + { + id: 'spirit-fusdt-usdc', + name: 'fUSDT-USDC LP', + token: 'fUSDT-USDC SLP', + tokenDescription: 'SpiritSwap', + tokenAddress: '0xe7F86CEf8FEf60ce5050899D1F8e465C00D04a79', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSpiritUSDC-fUSDT', + earnedTokenAddress: '0xFbfa12b10626151fB7735aBe4af5277104b480ee', + earnContractAddress: '0xFbfa12b10626151fB7735aBe4af5277104b480ee', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'spirit-fusdt-usdc', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SpiritSwap', + assets: ['fUSDT', 'USDC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://swap.spiritswap.finance/#/add/0x04068DA6C83AFCFA0e13ba15A6696662335D5B75/0x049d68029688eAbF473097a2fC38ef61633A3C7A', + buyTokenUrl: + 'https://swap.spiritswap.finance/#/exchange/swap/0x049d68029688eAbF473097a2fC38ef61633A3C7A', + createdAt: 1642557662, + }, + { + id: 'spirit-frax-usdc', + name: 'FRAX-USDC LP', + token: 'FRAX-USDC SLP', + tokenDescription: 'SpiritSwap', + tokenAddress: '0x1478AEC7896e40aE5fB858C77D389F0B3e6CbC5d', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSpiritUSDC-FRAX', + earnedTokenAddress: '0x11d4D27364952b972AC74Fb6676DbbFa67fDa72F', + earnContractAddress: '0x11d4D27364952b972AC74Fb6676DbbFa67fDa72F', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'spirit-frax-usdc', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SpiritSwap', + assets: ['FRAX', 'USDC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'ALGO_STABLE', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://swap.spiritswap.finance/#/add/0x04068DA6C83AFCFA0e13ba15A6696662335D5B75/0xdc301622e621166BD8E82f2cA0A26c13Ad0BE355', + buyTokenUrl: + 'https://swap.spiritswap.finance/#/exchange/swap/0xdc301622e621166BD8E82f2cA0A26c13Ad0BE355', + createdAt: 1642560206, + }, + { + id: 'spirit-mim-usdc', + name: 'MIM-USDC LP', + token: 'MIM-USDC SLP', + tokenDescription: 'SpiritSwap', + tokenAddress: '0xc19C7615237f770179ed93d89126478c60742664', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSpiritUSDC-MIM', + earnedTokenAddress: '0x3aA3341433E8efE228F75777213787f1a51Ab09d', + earnContractAddress: '0x3aA3341433E8efE228F75777213787f1a51Ab09d', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'spirit-mim-usdc', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SpiritSwap', + assets: ['MIM', 'USDC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + 'OVER_COLLAT_ALGO_STABLECOIN', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://swap.spiritswap.finance/#/add/0x04068DA6C83AFCFA0e13ba15A6696662335D5B75/0x82f0B8B456c1A451378467398982d4834b6829c1', + buyTokenUrl: + 'https://swap.spiritswap.finance/#/exchange/swap/0x82f0B8B456c1A451378467398982d4834b6829c1', + createdAt: 1642560383, + }, + { + id: '2omb-2omb-ftm-eol', + name: '2OMB-FTM LP', + token: '2OMB-FTM LP', + tokenDescription: 'SpookySwap (2omb)', + tokenAddress: '0xbdC7DFb7B88183e87f003ca6B5a2F81202343478', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'moo2omb2OMB-FTM', + earnedTokenAddress: '0xf3A72885cB383543AEE60f44Ca51C760f0bC3b9b', + earnContractAddress: '0xf3A72885cB383543AEE60f44Ca51C760f0bC3b9b', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: '2omb-2omb-ftm', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Other', + assets: ['2OMB', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: 'https://spooky.fi/#/add/FTM/0x7a6e4E3CC2ac9924605DCa4bA31d1831c84b44aE', + buyTokenUrl: + 'https://spooky.fi/#/swap?outputCurrency=0x7a6e4E3CC2ac9924605DCa4bA31d1831c84b44aE', + createdAt: 1642150805, + }, + { + id: '2omb-2share-ftm-eol', + name: '2SHARES-FTM LP', + token: '2SHARES-FTM LP', + tokenDescription: 'SpookySwap (2omb)', + tokenAddress: '0x6398ACBBAB2561553a9e458Ab67dCFbD58944e52', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'moo2omb2SHARE-FTM', + earnedTokenAddress: '0x03668Bd5dc63B1e15c39619b599091A4f68cAFB3', + earnContractAddress: '0x03668Bd5dc63B1e15c39619b599091A4f68cAFB3', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: '2omb-2share-ftm', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Other', + assets: ['2SHARES', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: 'https://spooky.fi/#/add/FTM/0xc54A1684fD1bef1f077a336E6be4Bd9a3096a6Ca', + buyTokenUrl: + 'https://spooky.fi/#/swap?outputCurrency=0xc54A1684fD1bef1f077a336E6be4Bd9a3096a6Ca', + createdAt: 1642152342, + }, + { + id: 'boo-wftm-brush', + name: 'BRUSH-FTM LP', + token: 'BRUSH-FTM LP', + tokenDescription: 'SpookySwap', + tokenAddress: '0x4EE115137ac73A3e5F99598564905465C101b11F', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBooFTM-BRUSH', + earnedTokenAddress: '0xC62Bec8168404CcDE75Db95F5cED342C1AD770a5', + earnContractAddress: '0xC62Bec8168404CcDE75Db95F5cED342C1AD770a5', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'boo-wftm-brush', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SpookySwap', + assets: ['BRUSH', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: 'https://spooky.fi/#/add/FTM/0x85dec8c4B2680793661bCA91a8F129607571863d', + buyTokenUrl: + 'https://spooky.fi/#/swap?outputCurrency=0x85dec8c4B2680793661bCA91a8F129607571863d', + createdAt: 1642291662, + }, + { + id: 'boo-kek-ftm-eol', + name: 'KEK-FTM LP', + token: 'KEK-FTM LP', + tokenDescription: 'SpookySwap', + tokenAddress: '0xf3582dbAEbb4287B462f00d308911621a960A5FD', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBooFTM-KEK', + earnedTokenAddress: '0xB29929fC5bdD3769d94543D17E4C49fC555E9228', + earnContractAddress: '0xB29929fC5bdD3769d94543D17E4C49fC555E9228', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'boo-kek-ftm', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'tvl', + platform: 'SpookySwap', + assets: ['KEK', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: 'https://spooky.fi/#/add/FTM/0x627524d78B4fC840C887ffeC90563c7A42b671fD', + buyTokenUrl: + 'https://spooky.fi/#/swap?outputCurrency=0x627524d78B4fC840C887ffeC90563c7A42b671fD', + createdAt: 1642139577, + }, + { + id: 'boo-inv-wftm-eol', + name: 'INV-FTM LP', + token: 'INV-FTM LP', + tokenDescription: 'SpookySwap', + tokenAddress: '0x9380485d65Fb628Ccd87Ddec4854F5306554d9d9', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBooINV-FTM', + earnedTokenAddress: '0xFE0FC1710d9d723eA0876315437bD140fc952a2c', + earnContractAddress: '0xFE0FC1710d9d723eA0876315437bD140fc952a2c', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'boo-inv-wftm', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'tvl', + platform: 'SpookySwap', + assets: ['INV', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: 'https://spooky.fi/#/add/FTM/0xb84527D59b6Ecb96F433029ECc890D4492C5dCe1', + buyTokenUrl: + 'https://spooky.fi/#/swap?outputCurrency=0xb84527D59b6Ecb96F433029ECc890D4492C5dCe1', + createdAt: 1642097531, + }, + { + id: 'beets-steady-beets-2', + name: 'Steady Beets 2', + token: 'Steady Beets 2', + tokenDescription: 'Beethoven X', + tokenAddress: '0xeCAa1cBd28459d34B766F9195413Cb20122Fb942', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBeetSteadyBeets2', + earnedTokenAddress: '0xF08134f99EcBfdf7543BF56873324F697bA2a858', + earnContractAddress: '0xF08134f99EcBfdf7543BF56873324F697bA2a858', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'beets-steady-beets-2', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Beethoven X', + assets: ['USDC', 'DAI'], + risks: [ + 'COMPLEXITY_LOW', + 'NEW_STRAT', + 'IL_NONE', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + 'OVER_COLLAT_ALGO_STABLECOIN', + ], + stratType: 'StratMultiLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://beets.fi/#/pool/0xecaa1cbd28459d34b766f9195413cb20122fb942000200000000000000000120', + createdAt: 1641982117, + }, + { + id: 'beets-two-became-one', + logo: 'fantom/When Two Became One.png', + name: 'When Two Became One (Hundred)', + token: 'When Two Became One (Hundred)', + tokenDescription: 'Beethoven X', + tokenAddress: '0xD57Cda2caEBb9B64BB88905C4dE0F0Da217a77d7', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBeetTwoBecameOne', + earnedTokenAddress: '0xe48d1b1074e1B51c970674DB05669d3C50269108', + earnContractAddress: '0xe48d1b1074e1B51c970674DB05669d3C50269108', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'beets-two-became-one', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Beethoven X', + assets: ['USDC', 'HND', 'FTM'], + risks: ['COMPLEXITY_LOW', 'NEW_STRAT', 'IL_HIGH', 'MCAP_MICRO', 'AUDIT', 'CONTRACTS_VERIFIED'], + stratType: 'StratMultiLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://beets.fi/#/pool/0xd57cda2caebb9b64bb88905c4de0f0da217a77d7000100000000000000000073', + createdAt: 1641410484, + }, + { + id: 'beets-dante-symphony', + logo: 'fantom/Dante Symphony.png', + name: 'Dante Symphony', + token: 'Dante Symphony', + tokenDescription: 'Beethoven X', + tokenAddress: '0xc042EF6cA08576BdFb57d3055A7654344fd153E4', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBeetDanteSymphony', + earnedTokenAddress: '0xDc1b4e4Ff41bC392f1BBCdcE699d5aB3E3de9E66', + earnContractAddress: '0xDc1b4e4Ff41bC392f1BBCdcE699d5aB3E3de9E66', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'beets-dante-symphony', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Beethoven X', + assets: ['FTM', 'WBTC', 'ETH', 'WSTA', 'BEETS'], + risks: ['COMPLEXITY_LOW', 'NEW_STRAT', 'IL_HIGH', 'MCAP_MICRO', 'AUDIT', 'CONTRACTS_VERIFIED'], + stratType: 'StratMultiLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://app.beets.fi/#/pool/0xc042ef6ca08576bdfb57d3055a7654344fd153e400010000000000000000003a', + createdAt: 1641988564, + }, + { + id: 'beets-ode-to-joy-eol', + name: 'Ode To Joy', + token: 'Ode To Joy', + tokenDescription: 'Beethoven X', + tokenAddress: '0x5dD0D5D6c13E9302271Be0DfAde2b9Fd708E5dDB', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBeetOdeToJoy', + earnedTokenAddress: '0x5C4d01b3d77C50278684b8b275874E2232706FE2', + earnContractAddress: '0x5C4d01b3d77C50278684b8b275874E2232706FE2', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'beets-ode-to-joy', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Beethoven X', + assets: ['WBTC', 'ETH'], + risks: ['COMPLEXITY_LOW', 'NEW_STRAT', 'IL_HIGH', 'MCAP_LARGE', 'AUDIT', 'CONTRACTS_VERIFIED'], + stratType: 'StratMultiLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://app.beets.fi/#/pool/0x5dd0d5d6c13e9302271be0dfade2b9fd708e5ddb0002000000000000000000e7', + createdAt: 1641989971, + }, + { + id: 'beets-wagmi-index-eol', + logo: 'fantom/WAGMI Index.png', + name: 'WAGMI Index', + token: 'WAGMI Index', + tokenDescription: 'Beethoven X', + tokenAddress: '0x713ee620a7702b79eA5413096A90702244FE4532', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBeetWAGMIIndex', + earnedTokenAddress: '0xf845a4bf053020AA9826b130248E921Ad0eb1037', + earnContractAddress: '0xf845a4bf053020AA9826b130248E921Ad0eb1037', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'beets-wagmi-index', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Beethoven X', + assets: ['FTM', 'SPELL', 'MIM', 'SUSHI', 'wMEMO', 'ICE'], + risks: [ + 'COMPLEXITY_LOW', + 'NEW_STRAT', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + 'OVER_COLLAT_ALGO_STABLECOIN', + ], + stratType: 'StratMultiLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://app.beets.fi/#/pool/0x713ee620a7702b79ea5413096a90702244fe4532000100000000000000000105', + createdAt: 1641992405, + }, + { + id: 'boo-hnd-wftm-eol', + name: 'HND-FTM LP', + token: 'HND-FTM LP', + tokenDescription: 'SpookySwap', + tokenAddress: '0x16b6DeEE778bbcF427e40FfA3c14c4840Be10e6a', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBooHND-FTM', + earnedTokenAddress: '0x68c39886eA459b4a59758F1e94c3d20C93d47133', + earnContractAddress: '0x68c39886eA459b4a59758F1e94c3d20C93d47133', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'boo-hnd-wftm', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'SpookySwap', + assets: ['HND', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_SMALL', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: 'https://spooky.fi/#/add/FTM/0x10010078a54396F62c96dF8532dc2B4847d47ED3', + buyTokenUrl: + 'https://spooky.fi/#/swap?outputCurrency=0x10010078a54396F62c96dF8532dc2B4847d47ED3', + createdAt: 1641572631, + }, + { + id: 'spartacadabra-lambda-crv-eol', + logo: 'single-assets/LAMBDA.svg', + name: 'LAMBDA/DAI/USDC', + token: 'LAMBDA-2CRV', + tokenDescription: 'Curve (Spartacadabra)', + tokenAddress: '0x075C1D1d7E9E1aF077B0b6117C6eA06CD0a260b5', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSpartacdbrLAMBDA-2CRV', + earnedTokenAddress: '0x453054B9C2CD3dF1c57E0866241f460B78eE3ebB', + earnContractAddress: '0x453054B9C2CD3dF1c57E0866241f460B78eE3ebB', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'curve-ftm-lambda', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'tvl', + platform: 'Spartacadabra', + assets: ['LAMBDA', 'DAI', 'USDC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + 'OVER_COLLAT_ALGO_STABLECOIN', + ], + stratType: 'StratMultiLP', + withdrawalFee: '0.01%', + addLiquidityUrl: 'https://ftm.curve.fi/factory/35/deposit', + createdAt: 1641548990, + }, + { + id: 'spartacadabra-charm-usdc-eol', + name: 'CHARM-USDC', + token: 'CHARM-USDC LP', + tokenDescription: 'SpookySwap (Spartacadabra)', + tokenAddress: '0xaCf56C6aadDc1408A11AbAb3140b90b57Fc6Aaf7', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSpartacdbrCHARM-USDC', + earnedTokenAddress: '0x47BE147d28089b94a360051986fe5C18a80EFF32', + earnContractAddress: '0x47BE147d28089b94a360051986fe5C18a80EFF32', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'spartacadabra-charm-usdc', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'tvl', + platform: 'Spartacadabra', + assets: ['CHARM', 'USDC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0.1%', + addLiquidityUrl: + 'https://spooky.fi/#/add/0x04068da6c83afcfa0e13ba15a6696662335d5b75/0x248cb87dda803028dfead98101c9465a2fbda0d4', + buyTokenUrl: + 'https://spooky.fi/#/swap?outputCurrency=0x248cb87dda803028dfead98101c9465a2fbda0d4', + createdAt: 1641550679, + }, + { + id: 'beets-guqin-qi-2', + logo: 'fantom/Guqin Qi 2.png', + name: 'Guqin Qi 2', + token: 'Guqin Qi 2', + tokenDescription: 'Beethoven X', + tokenAddress: '0x2C580C6F08044D6dfACA8976a66C8fAddDBD9901', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBeetGuqinQi2', + earnedTokenAddress: '0x1711b008DA67a18B3a5171B906Dae7812BEb147b', + earnContractAddress: '0x1711b008DA67a18B3a5171B906Dae7812BEb147b', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'beets-guqin-qi-2', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Beethoven X', + assets: ['USDC', 'DAI', 'MAI'], + risks: [ + 'COMPLEXITY_LOW', + 'NEW_STRAT', + 'IL_NONE', + 'MCAP_SMALL', + 'AUDIT', + 'CONTRACTS_VERIFIED', + 'OVER_COLLAT_ALGO_STABLECOIN', + ], + stratType: 'StratMultiLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://app.beets.fi/#/pool/0x2c580c6f08044d6dfaca8976a66c8fadddbd9901000000000000000000000038', + createdAt: 1635363222, + }, + { + id: 'boo-wftm-matic', + name: 'MATIC-FTM LP', + token: 'MATIC-FTM LP', + tokenDescription: 'SpookySwap', + tokenAddress: '0x7051C6F0C1F1437498505521a3bD949654923fE1', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBooFTM-MATIC', + earnedTokenAddress: '0x6709B167f862e2AeD920C2D98BC89E976DbD0615', + earnContractAddress: '0x6709B167f862e2AeD920C2D98BC89E976DbD0615', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'boo-wftm-matic', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SpookySwap', + assets: ['MATIC', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: 'https://spooky.fi/#/add/FTM/0x40DF1Ae6074C35047BFF66675488Aa2f9f6384F3', + buyTokenUrl: + 'https://spooky.fi/#/swap?outputCurrency=0x40DF1Ae6074C35047BFF66675488Aa2f9f6384F3', + createdAt: 1640973310, + }, + { + id: 'popsicle-ice-ftm', + name: 'ICE-FTM', + token: 'ICE-FTM SLP', + tokenDescription: 'SushiSwap (Popsicle)', + tokenAddress: '0x84311ECC54D7553378c067282940b0fdfb913675', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPopsicleICE-FTM', + earnedTokenAddress: '0xD419254D5b682AA68B6aa13b755789Bc9459c9b7', + earnContractAddress: '0xD419254D5b682AA68B6aa13b755789Bc9459c9b7', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'popsicle-ice-ftm', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Other', + assets: ['ICE', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: 'https://app.sushi.com/add/ETH/0xf16e81dce15B08F326220742020379B855B87DF9', + buyTokenUrl: + 'https://app.sushi.com/swap?inputCurrency=ETH&outputCurrency=0xf16e81dce15B08F326220742020379B855B87DF9', + createdAt: 1640767060, + }, + { + id: 'beets-variation-theme-eol', + logo: 'fantom/Variation Theme USDC.png', + name: 'Variations On A Theme By USD Circle', + token: 'Variations On A Theme By USD Circle', + tokenDescription: 'Beethoven X', + tokenAddress: '0x8Bb1839393359895836688165f7c5878f8C81C5e', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBeetVariationUSDC', + earnedTokenAddress: '0xa25eC518E66D41195FB988b068D212d9a61aabc9', + earnContractAddress: '0xa25eC518E66D41195FB988b068D212d9a61aabc9', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'beets-variation-theme', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Beethoven X', + assets: ['USDC', 'asUSDC'], + risks: ['COMPLEXITY_LOW', 'NEW_STRAT', 'IL_NONE', 'MCAP_LARGE', 'AUDIT', 'CONTRACTS_VERIFIED'], + stratType: 'StratMultiLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://app.beets.fi/#/pool/0x8bb1839393359895836688165f7c5878f8c81c5e0002000000000000000000e1', + createdAt: 1640629158, + }, + { + id: 'scream-spell', + logo: 'single-assets/SPELL.png', + name: 'SPELL', + token: 'SPELL', + tokenDescription: 'Scream', + tokenAddress: '0x468003B688943977e6130F4F68F23aad939a1040', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooScreamSPELL', + earnedTokenAddress: '0x5EB148A571B0B3D8b8eB46053545E7DF833898Dc', + earnContractAddress: '0x5EB148A571B0B3D8b8eB46053545E7DF833898Dc', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'SPELL', + oraclePrice: 0, + depositsPaused: true, + status: 'active', + platform: 'Scream', + assets: ['SPELL'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'Lending', + withdrawalFee: '0%', + showWarning: false, + warning: 'liquidity', + buyTokenUrl: + 'https://spooky.fi/#/swap?outputCurrency=0x468003B688943977e6130F4F68F23aad939a1040', + createdAt: 1640646636, + }, + { + id: 'spirit-dai-usdc', + name: 'DAI-USDC LP', + token: 'DAI-USDC SLP', + tokenDescription: 'SpiritSwap', + tokenAddress: '0x9606D683d03f012DDa296eF0ae9261207C4A5847', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSpiritUSDC-DAI', + earnedTokenAddress: '0x5d2EF803D6e255eF4D1c66762CBc8845051B54dB', + earnContractAddress: '0x5d2EF803D6e255eF4D1c66762CBc8845051B54dB', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'spirit-dai-usdc', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SpiritSwap', + assets: ['DAI', 'USDC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + 'OVER_COLLAT_ALGO_STABLECOIN', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://swap.spiritswap.finance/#/add/0x04068DA6C83AFCFA0e13ba15A6696662335D5B75/0x8D11eC38a3EB5E956B052f67Da8Bdc9bef8Abf3E', + buyTokenUrl: + 'https://swap.spiritswap.finance/#/exchange/swap/0x8D11eC38a3EB5E956B052f67Da8Bdc9bef8Abf3E', + createdAt: 1640070468, + }, + { + id: 'spirit-yfi-ftm-eol', + name: 'YFI-FTM LP', + token: 'YFI-FTM SLP', + tokenDescription: 'SpiritSwap', + tokenAddress: '0x4fc38a2735C7da1d71ccAbf6DeC235a7DA4Ec52C', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSpiritWFTM-YFI', + earnedTokenAddress: '0xDe0f8aBF5077AD155dC99F5693AceE20C2689ba8', + earnContractAddress: '0xDe0f8aBF5077AD155dC99F5693AceE20C2689ba8', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'spirit-yfi-ftm', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'SpiritSwap', + assets: ['YFI', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + retireReason: 'tvl', + addLiquidityUrl: + 'https://swap.spiritswap.finance/#/add/FTM/0x29b0Da86e484E1C0029B56e817912d778aC0EC69', + buyTokenUrl: + 'https://swap.spiritswap.finance/#/exchange/swap/0x29b0Da86e484E1C0029B56e817912d778aC0EC69', + createdAt: 1640392035, + }, + { + id: 'geist-mim', + logo: 'single-assets/MIM.png', + name: 'MIM', + token: 'MIM', + tokenDescription: 'Geist', + tokenAddress: '0x82f0B8B456c1A451378467398982d4834b6829c1', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooGeistMIM', + earnedTokenAddress: '0xE7E08D82853dcf1057B2f8BCeF781d904602B6a0', + earnContractAddress: '0xE7E08D82853dcf1057B2f8BCeF781d904602B6a0', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'MIM', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Geist', + assets: ['MIM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'NO_AUDIT', + 'CONTRACTS_VERIFIED', + 'OVER_COLLAT_ALGO_STABLECOIN', + ], + stratType: 'Lending', + withdrawalFee: '0.01%', + buyTokenUrl: + 'https://spooky.fi/#/swap?outputCurrency=0x82f0B8B456c1A451378467398982d4834b6829c1', + createdAt: 1640092257, + }, + { + id: 'beets-battle-bands-eol', + logo: 'fantom/Battle Bands.png', + name: 'Battle Of The Bands', + token: 'Battle Of The Bands', + tokenDescription: 'Beethoven X', + tokenAddress: '0x9af1F0e9aC9C844A4a4439d446c1437807183075', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBeetBattleBands', + earnedTokenAddress: '0x0139C853539bF1EDf221cf9d665F282C2701335a', + earnContractAddress: '0x0139C853539bF1EDf221cf9d665F282C2701335a', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'beets-battle-bands', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Beethoven X', + assets: ['FTM', 'MATIC', 'SOL', 'AVAX', 'LUNA', 'BNB'], + risks: ['COMPLEXITY_LOW', 'NEW_STRAT', 'IL_LOW', 'MCAP_LARGE', 'AUDIT', 'CONTRACTS_VERIFIED'], + stratType: 'StratMultiLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://app.beets.fi/#/pool/0x9af1f0e9ac9c844a4a4439d446c14378071830750001000000000000000000da', + createdAt: 1640018890, + }, + { + id: 'geist-crv', + logo: 'single-assets/CRV.png', + name: 'CRV', + token: 'CRV', + tokenDescription: 'Geist', + tokenAddress: '0x1E4F97b9f9F913c46F1632781732927B9019C68b', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooGeistCRV', + earnedTokenAddress: '0xedEb044BC7Ce11Dfa436CFA8Be43e6eB0d601814', + earnContractAddress: '0xedEb044BC7Ce11Dfa436CFA8Be43e6eB0d601814', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'CRV', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Geist', + assets: ['CRV'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'NO_AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'Lending', + withdrawalFee: '0.01%', + buyTokenUrl: + 'https://spooky.fi/#/swap?outputCurrency=0x1E4F97b9f9F913c46F1632781732927B9019C68b', + createdAt: 1639737670, + }, + { + id: 'boo-wftm-avax', + name: 'AVAX-FTM LP', + token: 'AVAX-FTM LP', + tokenDescription: 'SpookySwap', + tokenAddress: '0x5DF809e410d9CC577f0d01b4E623C567C7aD56c1', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBooAVAX-FTM', + earnedTokenAddress: '0x6e08721cE0eB1a6776E7965beb5441267D1742c7', + earnContractAddress: '0x6e08721cE0eB1a6776E7965beb5441267D1742c7', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'boo-wftm-avax', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SpookySwap', + assets: ['AVAX', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: 'https://spooky.fi/#/add/FTM/0x511D35c52a3C244E7b8bd92c0C297755FbD89212', + buyTokenUrl: + 'https://spooky.fi/#/swap?outputCurrency=0x511D35c52a3C244E7b8bd92c0C297755FbD89212', + createdAt: 1639923705, + }, + { + id: 'boo-wftm-woo', + name: 'WOO-FTM LP', + token: 'WOO-FTM LP', + tokenDescription: 'SpookySwap', + tokenAddress: '0xa7010b3ba9efb1AF9Fa8a30efe74C16A93891775', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBooWOO-FTM', + earnedTokenAddress: '0xddb3F5F56AeA6B8cE12e2f603Fac6b8f0D99b78a', + earnContractAddress: '0xddb3F5F56AeA6B8cE12e2f603Fac6b8f0D99b78a', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'boo-wftm-woo', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SpookySwap', + assets: ['WOO', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: 'https://spooky.fi/#/add/FTM/0x6626c47c00F1D87902fc13EECfaC3ed06D5E8D8a', + buyTokenUrl: + 'https://spooky.fi/#/swap?outputCurrency=0x6626c47c00F1D87902fc13EECfaC3ed06D5E8D8a', + createdAt: 1639923811, + }, + { + id: 'boo-wftm-ooe', + name: 'OOE-FTM LP', + token: 'OOE-FTM LP', + tokenDescription: 'SpookySwap', + tokenAddress: '0x0F941ac6b81E27afdB883244b5C537dCBa8A6fCe', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBooOOE-FTM', + earnedTokenAddress: '0x3AE6dA5958d3448B0eD34f615606c891cA56dC8F', + earnContractAddress: '0x3AE6dA5958d3448B0eD34f615606c891cA56dC8F', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'boo-wftm-ooe', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SpookySwap', + assets: ['OOE', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: 'https://spooky.fi/#/add/FTM/0x9d8F97A3C2f9f397B6D46Cbe2d39CC1D8Cf19010', + buyTokenUrl: + 'https://spooky.fi/#/swap?outputCurrency=0x9d8F97A3C2f9f397B6D46Cbe2d39CC1D8Cf19010', + createdAt: 1639423285, + }, + { + id: 'boo-wftm-wshec', + name: 'wsHEC-FTM LP', + token: 'wsHEC-FTM LP', + tokenDescription: 'SpookySwap', + tokenAddress: '0x0BfE6f893a6bc443B575Ddf361A30f39aa03e59c', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBoowsHEC-FTM', + earnedTokenAddress: '0x52c35741e7DFEC24FBf8436187dffC44376264Fb', + earnContractAddress: '0x52c35741e7DFEC24FBf8436187dffC44376264Fb', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'boo-wftm-wshec', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SpookySwap', + assets: ['wsHEC', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: 'https://spooky.fi/#/add/FTM/0x94CcF60f700146BeA8eF7832820800E2dFa92EdA', + buyTokenUrl: + 'https://spooky.fi/#/swap?outputCurrency=0x94CcF60f700146BeA8eF7832820800E2dFa92EdA', + createdAt: 1639423158, + }, + { + id: 'boo-wftm-wsspa-eol', + name: 'wsSPA-FTM LP', + token: 'wsSPA-FTM LP', + tokenDescription: 'SpookySwap', + tokenAddress: '0x011732f65e2f28C50F528e32420A2F69937b9e68', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBoowsSPA-FTM', + earnedTokenAddress: '0x2649b0D997FC267154a542540aa90C09CBC7C480', + earnContractAddress: '0x2649b0D997FC267154a542540aa90C09CBC7C480', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'boo-wftm-wsspa', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'tvl', + platform: 'SpookySwap', + assets: ['wsSPA', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: 'https://spooky.fi/#/add/FTM/0x89346B51A54263cF2e92dA79B1863759eFa68692', + buyTokenUrl: + 'https://spooky.fi/#/swap?outputCurrency=0x89346B51A54263cF2e92dA79B1863759eFa68692', + createdAt: 1639423010, + }, + { + id: 'boo-wftm-yoshi', + name: 'YOSHI-FTM LP', + token: 'YOSHI-FTM LP', + tokenDescription: 'SpookySwap', + tokenAddress: '0x6bB685358BC3991D9279562710F3a44B7e5F2D9b', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBooYOSHI-FTM', + earnedTokenAddress: '0x0edf387CDe7f901186834D073c09a7c1D1651000', + earnContractAddress: '0x0edf387CDe7f901186834D073c09a7c1D1651000', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'boo-wftm-yoshi', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SpookySwap', + assets: ['YOSHI', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: 'https://spooky.fi/#/add/FTM/0x3dc57B391262e3aAe37a08D91241f9bA9d58b570', + buyTokenUrl: + 'https://spooky.fi/#/swap?outputCurrency=0x3dc57B391262e3aAe37a08D91241f9bA9d58b570', + createdAt: 1639422895, + }, + { + id: 'beets-double-dollar-fugue-eol', + logo: 'fantom/double-dollar-fugue.png', + name: 'Double Dollar Fugue', + token: 'Double Dollar Fugue', + tokenDescription: 'Beethoven X', + tokenAddress: '0xF3f0970BCA8ce7E9672d17a301b54D1485D93807', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBeetDoubleDollarFugue', + earnedTokenAddress: '0x3246893C1F8c1Bf928121094ea4558c7B93Bdc9A', + earnContractAddress: '0x3246893C1F8c1Bf928121094ea4558c7B93Bdc9A', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'beets-double-dollar-fugue', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Beethoven X', + assets: ['USDC', 'MIM', 'UST'], + risks: [ + 'COMPLEXITY_LOW', + 'NEW_STRAT', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + 'ALGO_STABLE', + 'OVER_COLLAT_ALGO_STABLECOIN', + ], + stratType: 'StratMultiLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://app.beets.fi/#/pool/0xf3f0970bca8ce7e9672d17a301b54d1485d938070000000000000000000000c8', + createdAt: 1638539115, + }, + { + id: 'beets-solana-sonata', + logo: 'fantom/solana-sonata.png', + name: 'Solana Sonata', + token: 'Solana Sonata', + tokenDescription: 'Beethoven X', + tokenAddress: '0x41870439b607A29293D48f7c9da10e6714217624', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBeetSolanaSonata', + earnedTokenAddress: '0x58511De7Dc12230096Feb1AAB420872Df0371A45', + earnContractAddress: '0x58511De7Dc12230096Feb1AAB420872Df0371A45', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'beets-solana-sonata', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Beethoven X', + assets: ['USDC', 'FTM', 'SOL'], + risks: ['COMPLEXITY_LOW', 'NEW_STRAT', 'IL_LOW', 'MCAP_LARGE', 'AUDIT', 'CONTRACTS_VERIFIED'], + stratType: 'StratMultiLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://app.beets.fi/#/pool/0x41870439b607a29293d48f7c9da10e67142176240001000000000000000000a4', + createdAt: 1638210632, + }, + { + id: 'scream-tusd', + logo: 'single-assets/TUSD.png', + name: 'TUSD', + token: 'TUSD', + tokenDescription: 'Scream', + tokenAddress: '0x9879aBDea01a879644185341F7aF7d8343556B7a', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooScreamTUSD', + earnedTokenAddress: '0x42ECfA11Db08FB3Bb0AAf722857be56FA8E57Dc0', + earnContractAddress: '0x42ECfA11Db08FB3Bb0AAf722857be56FA8E57Dc0', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'TUSD', + oraclePrice: 0, + depositsPaused: true, + status: 'active', + platform: 'Scream', + assets: ['TUSD'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'Lending', + withdrawalFee: '0%', + showWarning: false, + warning: 'liquidity', + buyTokenUrl: + 'https://spooky.fi/#/swap?outputCurrency=0x9879aBDea01a879644185341F7aF7d8343556B7a', + createdAt: 1637875008, + }, + { + id: 'beets-phantom-dai-opera-eol', + name: 'Phantom Dai Opera', + token: 'Phantom Dai Opera', + tokenDescription: 'Beethoven X', + tokenAddress: '0x63386eF152E1Ddef96c065636D6cC0165Ff33291', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBeetsDaiOpera', + earnedTokenAddress: '0x876A3E8AFD0548930Ed9fb9741787c27986a613C', + earnContractAddress: '0x876A3E8AFD0548930Ed9fb9741787c27986a613C', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'beets-phantom-dai-opera', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Beethoven X', + assets: ['FTM', 'DAI'], + risks: [ + 'COMPLEXITY_LOW', + 'NEW_STRAT', + 'IL_LOW', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + 'OVER_COLLAT_ALGO_STABLECOIN', + ], + stratType: 'StratMultiLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://app.beets.fi/#/pool/0x63386ef152e1ddef96c065636d6cc0165ff332910002000000000000000000a1', + createdAt: 1637704300, + }, + { + id: 'boo-usdc-tusd', + name: 'TUSD-USDC LP', + token: 'TUSD-USDC LP', + tokenDescription: 'SpookySwap', + tokenAddress: '0x12692B3bf8dd9Aa1d2E721d1a79efD0C244d7d96', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBooUSDC-TUSD', + earnedTokenAddress: '0x6F0169e452211Ee0146812C1cc111FB228480d42', + earnContractAddress: '0x6F0169e452211Ee0146812C1cc111FB228480d42', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'boo-usdc-tusd', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SpookySwap', + assets: ['TUSD', 'USDC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://spooky.fi/#/add/0x04068DA6C83AFCFA0e13ba15A6696662335D5B75/0x9879aBDea01a879644185341F7aF7d8343556B7a', + buyTokenUrl: + 'https://spooky.fi/#/swap?inputCurrency=0x04068DA6C83AFCFA0e13ba15A6696662335D5B75&outputCurrency=0x9879aBDea01a879644185341F7aF7d8343556B7a', + createdAt: 1637658328, + }, + { + id: 'boo-wftm-joe', + name: 'JOE-FTM LP', + token: 'JOE-FTM LP', + tokenDescription: 'SpookySwap', + tokenAddress: '0xd518737Ff601c2A7C67F55EbbEb0a4e3fF5C0C35', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBooWFTM-JOE', + earnedTokenAddress: '0xD75805Ec0234AD335228e5E9f341d91f0F44010D', + earnContractAddress: '0xD75805Ec0234AD335228e5E9f341d91f0F44010D', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'boo-wftm-joe', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SpookySwap', + assets: ['JOE', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: 'https://spooky.fi/#/add/FTM/0x9F47F313ACFd4bdC52F4373b493EaE7d5aC5b765', + buyTokenUrl: + 'https://spooky.fi/#/swap?outputCurrency=0x9F47F313ACFd4bdC52F4373b493EaE7d5aC5b765', + createdAt: 1637587170, + }, + { + id: 'spirit-spell-sspell-eol', + name: 'sSPELL-SPELL', + token: 'sSPELL-SPELL LP', + tokenDescription: 'SpiritSwap', + tokenAddress: '0x4f41D03631Ea4dC14016CcF90690d6D22b24C12D', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSpiritsSPELL-SPELL', + earnedTokenAddress: '0xC90c00Dd1E53D56Ca4a0FdcA7940C33C0fcf02e5', + earnContractAddress: '0xC90c00Dd1E53D56Ca4a0FdcA7940C33C0fcf02e5', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'spirit-spell-sspell', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'SpiritSwap', + assets: ['sSPELL', 'SPELL'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://swap.spiritswap.finance/#/add/0x468003B688943977e6130F4F68F23aad939a1040/0xbB29D2A58d880Af8AA5859e30470134dEAf84F2B', + buyTokenUrl: + 'https://swap.spiritswap.finance/#/exchange/swap/0xbB29D2A58d880Af8AA5859e30470134dEAf84F2B', + createdAt: 1637179993, + }, + { + id: 'beets-baron-von-binance', + logo: 'fantom/baron-von-binance.png', + name: 'Baron von Binance', + token: 'Baron von Binance', + tokenDescription: 'Beethoven X', + tokenAddress: '0x5E65474c8400d0BB76eDBBE066B2D2E7b0b6e7fb', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBeetBaronVonBinance', + earnedTokenAddress: '0x255C2c11C36bf269bB12a9B40e131869dD9aab5D', + earnContractAddress: '0x255C2c11C36bf269bB12a9B40e131869dD9aab5D', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'beets-baron-von-binance', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Beethoven X', + assets: ['USDC', 'FTM', 'BNB'], + risks: ['COMPLEXITY_LOW', 'NEW_STRAT', 'IL_HIGH', 'MCAP_LARGE', 'AUDIT', 'CONTRACTS_VERIFIED'], + stratType: 'StratMultiLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://app.beethovenx.io/#/pool/0x5e65474c8400d0bb76edbbe066b2d2e7b0b6e7fb00010000000000000000007c', + createdAt: 1637221810, + }, + { + id: 'boo-usdc-mai', + name: 'USDC-MAI', + token: 'USDC-MAI LP', + tokenDescription: 'SpookySwap', + tokenAddress: '0x4dE9f0ED95de2461B6dB1660f908348c42893b1A', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBooUSDC-MAI', + earnedTokenAddress: '0x278E3E675F673dB344EF14a4Dc2F12218967a313', + earnContractAddress: '0x278E3E675F673dB344EF14a4Dc2F12218967a313', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'boo-usdc-mai', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SpookySwap', + assets: ['USDC', 'MAI'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + 'OVER_COLLAT_ALGO_STABLECOIN', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + buyTokenUrl: + 'https://spooky.fi/#/swap?inputCurrency=0x04068DA6C83AFCFA0e13ba15A6696662335D5B75&outputCurrency=0xfB98B335551a418cD0737375a2ea0ded62Ea213b', + addLiquidityUrl: + 'https://spooky.fi/#/add/0x04068DA6C83AFCFA0e13ba15A6696662335D5B75/0xfB98B335551a418cD0737375a2ea0ded62Ea213b', + createdAt: 1636758731, + }, + { + id: 'geist-ftm', + logo: 'single-assets/FTM.png', + name: 'FTM', + token: 'FTM', + tokenDescription: 'Geist', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooGeistFTM', + earnedTokenAddress: '0xbf1340159c1b69Ae98Ff08BE5fC77cdc084dDc73', + earnContractAddress: '0xbf1340159c1b69Ae98Ff08BE5fC77cdc084dDc73', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'FTM', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Geist', + assets: ['FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'NO_AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'Lending', + withdrawalFee: '0.01%', + buyTokenUrl: 'https://spooky.fi/#/swap?outputCurrency=FTM', + createdAt: 1636115081, + }, + { + id: 'geist-wbtc', + logo: 'single-assets/WBTC.svg', + name: 'WBTC', + token: 'WBTC', + tokenDescription: 'Geist', + tokenAddress: '0x321162Cd933E2Be498Cd2267a90534A804051b11', + tokenDecimals: 8, + tokenDescriptionUrl: '#', + earnedToken: 'mooGeistWBTC', + earnedTokenAddress: '0x7489bFD512BEDd6b16318fa7c33F1Bc7075C372d', + earnContractAddress: '0x7489bFD512BEDd6b16318fa7c33F1Bc7075C372d', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'WBTC', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Geist', + assets: ['WBTC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'NO_AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'Lending', + withdrawalFee: '0.01%', + buyTokenUrl: + 'https://spooky.fi/#/swap?outputCurrency=0x321162Cd933E2Be498Cd2267a90534A804051b11', + createdAt: 1636111832, + }, + { + id: 'geist-eth', + logo: 'single-assets/ETH.svg', + name: 'ETH', + token: 'ETH', + tokenDescription: 'Geist', + tokenAddress: '0x74b23882a30290451A17c44f4F05243b6b58C76d', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooGeistETH', + earnedTokenAddress: '0x7bdD39339bE40adC54199aB4b5Fb6B2A89D40d4c', + earnContractAddress: '0x7bdD39339bE40adC54199aB4b5Fb6B2A89D40d4c', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'ETH', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Geist', + assets: ['ETH'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'NO_AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'Lending', + withdrawalFee: '0.01%', + buyTokenUrl: + 'https://spooky.fi/#/swap?outputCurrency=0x74b23882a30290451A17c44f4F05243b6b58C76d', + createdAt: 1636106243, + }, + { + id: 'geist-fusdt-eol', + logo: 'single-assets/USDT.svg', + name: 'fUSDT', + token: 'fUSDT', + tokenDescription: 'Geist', + tokenAddress: '0x049d68029688eAbF473097a2fC38ef61633A3C7A', + tokenDecimals: 6, + tokenDescriptionUrl: '#', + earnedToken: 'mooGeistfUSDT', + earnedTokenAddress: '0xe9B01CB6c9379a491108119713b7D62C38DB9C97', + earnContractAddress: '0xe9B01CB6c9379a491108119713b7D62C38DB9C97', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'fUSDT', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'tvl', + platform: 'Geist', + assets: ['fUSDT'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'NO_AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'Lending', + withdrawalFee: '0.01%', + buyTokenUrl: + 'https://spooky.fi/#/swap?outputCurrency=0x049d68029688eAbF473097a2fC38ef61633A3C7A', + createdAt: 1636108542, + }, + { + id: 'geist-usdc', + logo: 'single-assets/USDC.svg', + name: 'USDC', + token: 'USDC', + tokenDescription: 'Geist', + tokenAddress: '0x04068DA6C83AFCFA0e13ba15A6696662335D5B75', + tokenDecimals: 6, + tokenDescriptionUrl: '#', + earnedToken: 'mooGeistUSDC', + earnedTokenAddress: '0x4Fa9263B35DC20bfa2eDEE24ee26113b40C4D3bB', + earnContractAddress: '0x4Fa9263B35DC20bfa2eDEE24ee26113b40C4D3bB', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'USDC', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Geist', + assets: ['USDC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'NO_AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'Lending', + withdrawalFee: '0.01%', + buyTokenUrl: + 'https://spooky.fi/#/swap?outputCurrency=0x04068DA6C83AFCFA0e13ba15A6696662335D5B75', + createdAt: 1636126692, + }, + { + id: 'geist-dai-eol', + logo: 'single-assets/DAI.svg', + name: 'DAI', + token: 'DAI', + tokenDescription: 'Geist', + tokenAddress: '0x8D11eC38a3EB5E956B052f67Da8Bdc9bef8Abf3E', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooGeistDAI', + earnedTokenAddress: '0x315d6030e908835b1dfE3393213Cab70bfB30Ace', + earnContractAddress: '0x315d6030e908835b1dfE3393213Cab70bfB30Ace', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'DAI', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Geist', + assets: ['DAI'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'NO_AUDIT', + 'CONTRACTS_VERIFIED', + 'OVER_COLLAT_ALGO_STABLECOIN', + ], + stratType: 'Lending', + withdrawalFee: '0.01%', + buyTokenUrl: + 'https://spooky.fi/#/swap?outputCurrency=0x8D11eC38a3EB5E956B052f67Da8Bdc9bef8Abf3E', + createdAt: 1636100990, + retireReason: 'tvl', + }, + { + id: 'beets-song-ice-fire', + logo: 'fantom/Song Of Ice And Fire.png', + name: 'Song Of Ice And Fire', + token: 'Song Of Ice And Fire', + tokenDescription: 'Beethoven X', + tokenAddress: '0x2BeA17EdE5D83ad19ae112B8592AadaA2B015De7', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBeetSongIceFire', + earnedTokenAddress: '0x0F12a6B93e00915Fac52070D42914Af678a29202', + earnContractAddress: '0x0F12a6B93e00915Fac52070D42914Af678a29202', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'beets-song-ice-fire', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Beethoven X', + assets: ['FTM', 'SPELL', 'MIM', 'ICE'], + risks: [ + 'COMPLEXITY_LOW', + 'NEW_STRAT', + 'IL_HIGH', + 'MCAP_MIRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + 'OVER_COLLAT_ALGO_STABLECOIN', + ], + stratType: 'StratMultiLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://app.beets.fi/#/pool/0x2bea17ede5d83ad19ae112b8592aadaa2b015de7000100000000000000000069', + createdAt: 1636020955, + }, + { + id: 'beets-tubular-bells', + logo: 'fantom/Tubular Bells.png', + name: 'Tubular Bells', + token: 'Tubular Bells', + tokenDescription: 'Beethoven X', + tokenAddress: '0x65Bf2d53BD1d7050d22873f6B9Bb59edb0cA0b20', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBeetTubularBells', + earnedTokenAddress: '0xF1Ba839207ec41a5526358b2c1a170423caBc712', + earnContractAddress: '0xF1Ba839207ec41a5526358b2c1a170423caBc712', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'beets-tubular-bells', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Beethoven X', + assets: ['USDC', 'CRV', 'FTM', 'LINK'], + risks: ['COMPLEXITY_LOW', 'NEW_STRAT', 'IL_HIGH', 'MCAP_MEDIUM', 'AUDIT', 'CONTRACTS_VERIFIED'], + stratType: 'StratMultiLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://app.beets.fi/#/pool/0x65bf2d53bd1d7050d22873f6b9bb59edb0ca0b2000010000000000000000006e', + createdAt: 1636019838, + }, + { + id: 'beets-late-quartet', + logo: 'fantom/Late Quartet.png', + name: 'Late Quartet', + token: 'Late Quartet', + tokenDescription: 'Beethoven X', + tokenAddress: '0xf3A602d30dcB723A74a0198313a7551FEacA7DAc', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBeetLateQuartet', + earnedTokenAddress: '0x7fed554476B64B41CBD9d3FA1C38cD781eE701b6', + earnContractAddress: '0x7fed554476B64B41CBD9d3FA1C38cD781eE701b6', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'beets-late-quartet', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Beethoven X', + assets: ['USDC', 'FTM', 'WBTC', 'ETH'], + risks: ['COMPLEXITY_LOW', 'NEW_STRAT', 'IL_HIGH', 'MCAP_LARGE', 'AUDIT', 'CONTRACTS_VERIFIED'], + stratType: 'StratMultiLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://app.beets.fi/#/pool/0xf3a602d30dcb723a74a0198313a7551feaca7dac00010000000000000000005f', + createdAt: 1635702186, + }, + { + id: 'boo-wftm-dola-eol', + name: 'DOLA-FTM', + token: 'DOLA-FTM LP', + tokenDescription: 'SpookySwap', + tokenAddress: '0x49EC56Cc2adAf19C1688d3131304Dbc3Df5e1cCd', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBooFTM-DOLA', + earnedTokenAddress: '0x7993CB93891C108F16182600394BeeCfCB911d1f', + earnContractAddress: '0x7993CB93891C108F16182600394BeeCfCB911d1f', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'boo-wftm-dola', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'SpookySwap', + assets: ['DOLA', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + buyTokenUrl: + 'https://spooky.fi/#/swap?outputCurrency=0x3129662808bEC728a27Ab6a6b9AFd3cBacA8A43c', + addLiquidityUrl: 'https://spooky.fi/#/add/FTM/0x3129662808bEC728a27Ab6a6b9AFd3cBacA8A43c', + createdAt: 1635415386, + }, + { + id: 'scream-dola', + logo: 'single-assets/DOLA.png', + name: 'DOLA', + token: 'DOLA', + tokenDescription: 'Scream', + tokenAddress: '0x3129662808bEC728a27Ab6a6b9AFd3cBacA8A43c', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooScreamDOLA', + earnedTokenAddress: '0x897a1B6F3a2C3D2CB3137888F310Ecdc752bfcFB', + earnContractAddress: '0x897a1B6F3a2C3D2CB3137888F310Ecdc752bfcFB', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'DOLA', + oraclePrice: 0, + depositsPaused: true, + status: 'active', + platform: 'Scream', + assets: ['DOLA'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'Lending', + withdrawalFee: '0%', + buyTokenUrl: + 'https://spooky.fi/#/swap?outputCurrency=0x3129662808bEC728a27Ab6a6b9AFd3cBacA8A43c', + createdAt: 1635454839, + }, + { + id: 'beets-fantom-conservatory', + logo: 'fantom/Fantom Conservatory.png', + name: 'Fantom Conservatory Of Music', + token: 'Fantom Conservatory Of Music', + tokenDescription: 'Beethoven X', + tokenAddress: '0xfC092F85125907fFcb0f9012e6e40B3f37c4De60', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBeetFantomConservatory', + earnedTokenAddress: '0x41a3Bb418F6e7Dc9522b1F72473125410ae40a21', + earnContractAddress: '0x41a3Bb418F6e7Dc9522b1F72473125410ae40a21', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'beets-fantom-conservatory', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Beethoven X', + assets: ['FTM', 'SPIRIT', 'BOO', 'TAROT', 'ANY', 'SCREAM', 'BEETS'], + risks: ['COMPLEXITY_LOW', 'NEW_STRAT', 'IL_HIGH', 'MCAP_MICRO', 'AUDIT', 'CONTRACTS_VERIFIED'], + stratType: 'StratMultiLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://app.beets.fi/#/pool/0xfc092f85125907ffcb0f9012e6e40b3f37c4de60000100000000000000000044', + createdAt: 1635369288, + }, + { + id: 'summit-summit-eol', + logo: 'single-assets/SUMMIT.png', + name: 'SUMMIT', + token: 'SUMMIT', + tokenDescription: 'SummitDefi', + tokenAddress: '0x8F9bCCB6Dd999148Da1808aC290F2274b13D7994', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSummit', + earnedTokenAddress: '0x8E923758B7A959Db4110DbE78f637c4b7a6a9007', + earnContractAddress: '0x8E923758B7A959Db4110DbE78f637c4b7a6a9007', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'SUMMIT', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Other', + assets: ['SUMMIT'], + risks: ['COMPLEXITY_LOW', 'NEW_STRAT', 'IL_NONE', 'MCAP_MICRO', 'AUDIT', 'CONTRACTS_VERIFIED'], + stratType: 'SingleStake', + withdrawalFee: '0%', + buyTokenUrl: + 'https://spooky.fi/#/swap?outputCurrency=0x8F9bCCB6Dd999148Da1808aC290F2274b13D7994', + createdAt: 1635336610, + }, + { + id: 'summit-summit-ftm-eol', + name: 'SUMMIT-FTM LP', + token: 'SUMMIT-FTM LP', + tokenDescription: 'SpookySwap (SummitDefi)', + tokenAddress: '0x06300c5e8e55cC40Bf3A0383F69aCf18f1d32EC1', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSummitSUMMIT-FTM', + earnedTokenAddress: '0x277Da1Fa86B7a82d4060db81bFABd194C17B48F5', + earnContractAddress: '0x277Da1Fa86B7a82d4060db81bFABd194C17B48F5', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'summit-summit-ftm', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Other', + assets: ['SUMMIT', 'FTM'], + risks: ['COMPLEXITY_LOW', 'NEW_STRAT', 'IL_HIGH', 'MCAP_MICRO', 'AUDIT', 'CONTRACTS_VERIFIED'], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: 'https://spooky.fi/#/add/FTM/0x8F9bCCB6Dd999148Da1808aC290F2274b13D7994', + buyTokenUrl: + 'https://spooky.fi/#/swap?outputCurrency=0x8F9bCCB6Dd999148Da1808aC290F2274b13D7994', + createdAt: 1635338766, + }, + { + id: 'beets-sound-of-moosic', + logo: 'fantom/Sound of Moosic.png', + name: 'Sound Of Moosic', + token: 'Sound Of Moosic', + tokenDescription: 'Beethoven X', + tokenAddress: '0x2975035545008935152FdF48ca13406cc5D4e475', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBeetSoundOfMoosic', + earnedTokenAddress: '0x79D6DbC8C45cBb76ED8442A52ae53a98082f485e', + earnContractAddress: '0x79D6DbC8C45cBb76ED8442A52ae53a98082f485e', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'beets-sound-of-moosic', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Beethoven X', + assets: ['FTM', 'mooBIFI', 'BIFI', 'BEETS'], + risks: ['COMPLEXITY_LOW', 'NEW_STRAT', 'IL_HIGH', 'MCAP_MICRO', 'AUDIT', 'CONTRACTS_VERIFIED'], + stratType: 'StratMultiLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://app.beethovenx.io/#/pool/0x2975035545008935152fdf48ca13406cc5d4e47500010000000000000000002a', + createdAt: 1634922183, + }, + { + id: 'pearzap-fpear-ftm-eol', + name: 'PEAR-FTM LP', + token: 'PEAR-FTM LP', + tokenDescription: 'SpiritSwap (PearZap)', + tokenAddress: '0x30549e1139C57f994872679ae5Ac2dF2c1063D0A', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPearZapPEAR-FTM', + earnedTokenAddress: '0xe4817511e44481D6A4203E6711513259ad9d2622', + earnContractAddress: '0xe4817511e44481D6A4203E6711513259ad9d2622', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'pearzap-fpear-ftm', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['PEAR', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + retireReason: 'rewards', + addLiquidityUrl: + 'https://swap.spiritswap.finance/#/add/FTM/0x7C10108d4B7f4bd659ee57A53b30dF928244b354', + buyTokenUrl: + 'https://swap.spiritswap.finance/#/exchange/swap/0x7c10108d4b7f4bd659ee57a53b30df928244b354', + createdAt: 1634884703, + }, + { + id: 'pearzap-fpear-usdc-eol', + name: 'PEAR-USDC LP', + token: 'PEAR-USDC LP', + tokenDescription: 'SpiritSwap (PearZap)', + tokenAddress: '0xeD58D2f291512eB773e2174D2A16946dC140C7f4', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPearZapPEAR-USDC', + earnedTokenAddress: '0x4F6F9173d12Bd1cB998Cf31CE5198f708dC92d7a', + earnContractAddress: '0x4F6F9173d12Bd1cB998Cf31CE5198f708dC92d7a', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'pearzap-fpear-usdc', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['PEAR', 'USDC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + retireReason: 'rewards', + addLiquidityUrl: + 'https://swap.spiritswap.finance/#/add/0x04068DA6C83AFCFA0e13ba15A6696662335D5B75/0x7C10108d4B7f4bd659ee57A53b30dF928244b354', + buyTokenUrl: + 'https://swap.spiritswap.finance/#/exchange/swap/0x7c10108d4b7f4bd659ee57a53b30df928244b354', + createdAt: 1634885192, + }, + { + id: 'beets-ftm-sonata-eol', + logo: 'fantom/Fantom Sonata.png', + name: 'FTM Sonata', + token: 'FTM Sonata', + tokenDescription: 'Beethoven X', + tokenAddress: '0xf0e2c47d4C9FBBbc2F2E19ACdaA3c773A3ECD221', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBeetFTMSonata', + earnedTokenAddress: '0xDFd0073bec17FAeE9fFA26bfeB2B84022D991a4B', + earnContractAddress: '0xDFd0073bec17FAeE9fFA26bfeB2B84022D991a4B', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'beets-ftm-sonata', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Beethoven X', + assets: ['USDC', 'CRV', 'FTM', 'SPIRIT', 'BOO', 'LINK', 'SCREAM'], + risks: ['COMPLEXITY_LOW', 'NEW_STRAT', 'IL_HIGH', 'MCAP_MICRO', 'AUDIT', 'CONTRACTS_VERIFIED'], + stratType: 'StratMultiLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://app.beethovenx.io/#/pool/0xf0e2c47d4c9fbbbc2f2e19acdaa3c773a3ecd22100010000000000000000000a', + createdAt: 1634917292, + }, + { + id: 'beets-dance-of-degens-eol', + logo: 'fantom/Dance of The Degens.png', + name: 'Dance Of The Degens', + token: 'Dance Of The Degens', + tokenDescription: 'Beethoven X', + tokenAddress: '0x72C0eB973Dc95e2d185563f58fC26626CC2e8034', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBeetDanceOfDegens', + earnedTokenAddress: '0x607D1Af2eFbcC0dDeD151f3A49d4Cc13BC528fAC', + earnContractAddress: '0x607D1Af2eFbcC0dDeD151f3A49d4Cc13BC528fAC', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'beets-dance-of-degens', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Beethoven X', + assets: ['FTM', 'SPELL', 'SPIRIT', 'BOO', 'TAROT', 'ANY', 'SCREAM', 'ICE'], + risks: ['COMPLEXITY_LOW', 'NEW_STRAT', 'IL_HIGH', 'MCAP_MICRO', 'AUDIT', 'CONTRACTS_VERIFIED'], + stratType: 'StratMultiLP', + withdrawalFee: '0%', + retireReason: 'upgrade', + addLiquidityUrl: + 'https://app.beethovenx.io/#/pool/0x72c0eb973dc95e2d185563f58fc26626cc2e8034000100000000000000000011', + createdAt: 1634920235, + }, + { + id: 'beets-magic-touch-daniele-eol', + logo: 'fantom/The Magic Touch By Daniele.png', + name: 'The Magic Touch By Daniele', + token: 'The Magic Touch By Daniele', + tokenDescription: 'Beethoven X', + tokenAddress: '0x6d12D3fE16dD83115254a32B273B05Ac5444C349', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBeetMagicTouchDaniele', + earnedTokenAddress: '0x1e6552B7cC3A6C59C6E9d7896884939Ea09f8316', + earnContractAddress: '0x1e6552B7cC3A6C59C6E9d7896884939Ea09f8316', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'beets-magic-touch-daniele', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Beethoven X', + assets: ['FTM', 'SPELL', 'MIM', 'wMEMO', 'ICE'], + risks: [ + 'COMPLEXITY_LOW', + 'NEW_STRAT', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + 'OVER_COLLAT_ALGO_STABLECOIN', + ], + stratType: 'StratMultiLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://app.beethovenx.io/#/pool/0x6d12d3fe16dd83115254a32b273b05ac5444c349000100000000000000000029', + createdAt: 1634921587, + }, + { + id: 'beets-classic-trio-eol', + logo: 'fantom/The Classic Trio.png', + name: 'Classic Trio', + token: 'Classic Trio', + tokenDescription: 'Beethoven X', + tokenAddress: '0x6FDC8415B654B0F60475944A0b9421Dc36ee1363', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBeetClassicTrio', + earnedTokenAddress: '0xcA88c38886ba5CE215921A829DF529D66B9B0992', + earnContractAddress: '0xcA88c38886ba5CE215921A829DF529D66B9B0992', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'beets-classic-trio', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Beethoven X', + assets: ['USDC', 'WBTC', 'ETH'], + risks: ['COMPLEXITY_LOW', 'NEW_STRAT', 'IL_LOW', 'MCAP_LARGE', 'AUDIT', 'CONTRACTS_VERIFIED'], + stratType: 'StratMultiLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://app.beethovenx.io/#/pool/0x6fdc8415b654b0f60475944a0b9421dc36ee1363000100000000000000000000', + createdAt: 1634908480, + }, + { + id: 'beets-e-major', + name: 'E Major', + token: 'E Major', + tokenDescription: 'Beethoven X', + tokenAddress: '0xA07De66AeF84e2c01D88a48D57D1463377Ee602b', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBeetEMajor', + earnedTokenAddress: '0xF83073C105bc0f8bF16Cc6b84766ba91B76CF0E1', + earnContractAddress: '0xF83073C105bc0f8bF16Cc6b84766ba91B76CF0E1', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'beets-e-major', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Beethoven X', + assets: ['USDC', 'ETH'], + risks: ['COMPLEXITY_LOW', 'NEW_STRAT', 'IL_LOW', 'MCAP_LARGE', 'AUDIT', 'CONTRACTS_VERIFIED'], + stratType: 'StratMultiLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://app.beethovenx.io/#/pool/0xa07de66aef84e2c01d88a48d57d1463377ee602b000200000000000000000002', + createdAt: 1634911153, + }, + { + id: 'beets-b-major', + name: 'B Major', + token: 'B Major', + tokenDescription: 'Beethoven X', + tokenAddress: '0x22B30B00e6796Daf710fBE5cAFBFc9Cdd1377f2A', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBeetBMajor', + earnedTokenAddress: '0x3b4e2ff44c601BD78F7db588496C6637A3Afa1f4', + earnContractAddress: '0x3b4e2ff44c601BD78F7db588496C6637A3Afa1f4', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'beets-b-major', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Beethoven X', + assets: ['USDC', 'WBTC'], + risks: ['COMPLEXITY_LOW', 'NEW_STRAT', 'IL_LOW', 'MCAP_LARGE', 'AUDIT', 'CONTRACTS_VERIFIED'], + stratType: 'StratMultiLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://app.beethovenx.io/#/pool/0x22b30b00e6796daf710fbe5cafbfc9cdd1377f2a000200000000000000000001', + createdAt: 1634914810, + }, + { + id: 'beets-ziggy-mim', + logo: 'fantom/Ziggy Stardust & Magic Internet Money.png', + name: 'Ziggy Stardust & Magic Internet Money', + token: 'Ziggy Stardust & Magic Internet Money', + tokenDescription: 'Beethoven X', + tokenAddress: '0xD163415BD34EF06f57C58D2AEd5A5478AfB464cC', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBeetZiggyMIM', + earnedTokenAddress: '0x4C25854f6DA3b5848F7B5C71dcb8EEe20b292d3E', + earnContractAddress: '0x4C25854f6DA3b5848F7B5C71dcb8EEe20b292d3E', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'beets-ziggy-mim', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Beethoven X', + assets: ['USDC', 'fUSDT', 'MIM'], + risks: [ + 'COMPLEXITY_LOW', + 'NEW_STRAT', + 'IL_NONE', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + 'OVER_COLLAT_ALGO_STABLECOIN', + ], + stratType: 'StratMultiLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://app.beethovenx.io/#/pool/0xd163415bd34ef06f57c58d2aed5a5478afb464cc00000000000000000000000e', + createdAt: 1634916171, + }, + { + id: 'beets-fidelio-duetto', + name: 'Fidelio Duetto', + token: 'Fidelio Duetto', + tokenDescription: 'Beethoven X', + tokenAddress: '0xcdE5a11a4ACB4eE4c805352Cec57E236bdBC3837', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBeetFidelioDuetto', + earnedTokenAddress: '0xAe0AB718971bb2BAd88AE6Bdc4D0eA63F3CD53Ee', + earnContractAddress: '0xAe0AB718971bb2BAd88AE6Bdc4D0eA63F3CD53Ee', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'beets-fidelio-duetto', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Beethoven X', + assets: ['FTM', 'BEETS'], + risks: ['COMPLEXITY_LOW', 'NEW_STRAT', 'IL_HIGH', 'MCAP_MICRO', 'AUDIT', 'CONTRACTS_VERIFIED'], + stratType: 'StratMultiLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://app.beethovenx.io/#/pool/0xcde5a11a4acb4ee4c805352cec57e236bdbc3837000200000000000000000019', + createdAt: 1634809776, + }, + { + id: 'beets-symphony-nr-10-eol', + name: 'Symphony Nr 10. Opus 138', + token: 'Symphony Nr 10. Opus 138', + tokenDescription: 'Beethoven X', + tokenAddress: '0x03c6B3f09D2504606936b1A4DeCeFaD204687890', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBeetSymphonyNr10', + earnedTokenAddress: '0x3bfd79fF14a4B1BA024DEc0A778Edc3fe53B237a', + earnContractAddress: '0x3bfd79fF14a4B1BA024DEc0A778Edc3fe53B237a', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'beets-symphony-nr-10', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Beethoven X', + assets: ['USDC', 'BEETS'], + risks: ['COMPLEXITY_LOW', 'NEW_STRAT', 'IL_HIGH', 'MCAP_MICRO', 'AUDIT', 'CONTRACTS_VERIFIED'], + stratType: 'StratMultiLP', + withdrawalFee: '0%', + retireReason: 'rewards', + addLiquidityUrl: + 'https://app.beethovenx.io/#/pool/0x03c6b3f09d2504606936b1a4decefad204687890000200000000000000000015', + createdAt: 1634812249, + }, + { + id: 'beets-grand-orchestra', + logo: 'fantom/The Grand Orchestra.png', + name: 'The Grand Orchestra', + token: 'The Grand Orchestra', + tokenDescription: 'Beethoven X', + tokenAddress: '0xd47D2791d3B46f9452709Fa41855a045304D6f9d', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBeetGrandOrchestra', + earnedTokenAddress: '0x0ab24Bfc2503bB536ad667c00685BBB70fA90433', + earnContractAddress: '0x0ab24Bfc2503bB536ad667c00685BBB70fA90433', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'beets-grand-orchestra', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Beethoven X', + assets: ['FTM', 'WBTC', 'ETH'], + risks: ['COMPLEXITY_LOW', 'NEW_STRAT', 'IL_LOW', 'MCAP_LARGE', 'AUDIT', 'CONTRACTS_VERIFIED'], + stratType: 'StratMultiLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://app.beethovenx.io/#/pool/0xd47d2791d3b46f9452709fa41855a045304d6f9d000100000000000000000004', + createdAt: 1634740557, + }, + { + id: 'beets-fantom-of-opera', + name: 'Fantom of the Opera', + token: 'Fantom of the Opera', + tokenDescription: 'Beethoven X', + tokenAddress: '0xcdF68a4d525Ba2E90Fe959c74330430A5a6b8226', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBeetFantomOfTheOpera', + earnedTokenAddress: '0xB40c339e2b0a8513152F68082D3c87314E03776D', + earnContractAddress: '0xB40c339e2b0a8513152F68082D3c87314E03776D', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'beets-fantom-of-opera', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Beethoven X', + assets: ['USDC', 'FTM'], + risks: ['COMPLEXITY_LOW', 'NEW_STRAT', 'IL_LOW', 'MCAP_LARGE', 'AUDIT', 'CONTRACTS_VERIFIED'], + stratType: 'StratMultiLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://app.beethovenx.io/#/pool/0xcdf68a4d525ba2e90fe959c74330430a5a6b8226000200000000000000000008', + createdAt: 1634805280, + }, + { + id: 'beets-steady-beets-eol', + name: 'Steady Beets', + token: 'Steady Beets', + tokenDescription: 'Beethoven X', + tokenAddress: '0xd41bF724b6e31311Db582c5388Af6B316e812Fe4', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBeetSteadyBeets', + earnedTokenAddress: '0x6BE9170485a3DA49DA422002cb02161a123A1422', + earnContractAddress: '0x6BE9170485a3DA49DA422002cb02161a123A1422', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'beets-steady-beets', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Beethoven X', + assets: ['USDC', 'DAI'], + risks: [ + 'COMPLEXITY_LOW', + 'NEW_STRAT', + 'IL_NONE', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + 'OVER_COLLAT_ALGO_STABLECOIN', + ], + stratType: 'StratMultiLP', + withdrawalFee: '0%', + retireReason: 'rewards', + addLiquidityUrl: + 'https://app.beethovenx.io/#/pool/0xd41bf724b6e31311db582c5388af6b316e812fe4000200000000000000000003', + createdAt: 1634807049, + }, + { + id: 'scream-frax', + logo: 'single-assets/FRAX.svg', + name: 'FRAX', + token: 'FRAX', + tokenDescription: 'Scream', + tokenAddress: '0xdc301622e621166BD8E82f2cA0A26c13Ad0BE355', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooScreamFRAX', + earnedTokenAddress: '0xb8EddAA94BB8AbF8A5BB90c217D53960242e104D', + earnContractAddress: '0xb8EddAA94BB8AbF8A5BB90c217D53960242e104D', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'FRAX', + oraclePrice: 0, + depositsPaused: true, + status: 'active', + platform: 'Scream', + assets: ['FRAX'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'ALGO_STABLE', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'Lending', + withdrawalFee: '0%', + buyTokenUrl: 'https://app.frax.finance/crosschain', + createdAt: 1634500757, + }, + { + id: 'scream-mim', + logo: 'single-assets/MIM.png', + name: 'MIM', + token: 'MIM', + tokenDescription: 'Scream', + tokenAddress: '0x82f0B8B456c1A451378467398982d4834b6829c1', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooScreamMIM', + earnedTokenAddress: '0x074A2a6d0fdbf6860033E57eBD37Aeb88c3931b4', + earnContractAddress: '0x074A2a6d0fdbf6860033E57eBD37Aeb88c3931b4', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'MIM', + oraclePrice: 0, + depositsPaused: true, + status: 'active', + platform: 'Scream', + assets: ['MIM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_MEDIUM', + 'NO_AUDIT', + 'CONTRACTS_VERIFIED', + 'OVER_COLLAT_ALGO_STABLECOIN', + ], + stratType: 'Lending', + withdrawalFee: '0%', + buyTokenUrl: + 'https://spooky.fi/#/swap?outputCurrency=0x82f0B8B456c1A451378467398982d4834b6829c1', + createdAt: 1634453638, + }, + { + id: 'spirit-wmemo-mim', + name: 'wMEMO-MIM LP', + token: 'wMEMO-MIM SLP', + tokenDescription: 'SpiritSwap', + tokenAddress: '0xC9B98e4A4e306DFc24bc5b5F66e271e19Fd74c5A', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSpiritMIM-wMEMO', + earnedTokenAddress: '0xC84bA97eF76d45281C2DBBb486d266C45CFbf5B7', + earnContractAddress: '0xC84bA97eF76d45281C2DBBb486d266C45CFbf5B7', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'spirit-wmemo-mim', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SpiritSwap', + assets: ['wMEMO', 'MIM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + 'OVER_COLLAT_ALGO_STABLECOIN', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://swap.spiritswap.finance/#/add/0x82f0B8B456c1A451378467398982d4834b6829c1/0xDDc0385169797937066bBd8EF409b5B3c0dFEB52', + buyTokenUrl: + 'https://swap.spiritswap.finance/#/exchange/swap/0xDDc0385169797937066bBd8EF409b5B3c0dFEB52', + createdAt: 1634312717, + }, + { + id: 'spell-ftm-mim-crv', + logo: 'uncategorized/MIM2CRV.svg', + name: 'MIM/USDC/fUSDT', + token: 'MIM2CRV', + tokenDescription: 'Curve (MIM)', + tokenAddress: '0x2dd7C9371965472E5A5fD28fbE165007c61439E1', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooAbrcdbrMIM-2CRV', + earnedTokenAddress: '0x837BEe8567297dd628fb82FFBA193A57A9F6B655', + earnContractAddress: '0x837BEe8567297dd628fb82FFBA193A57A9F6B655', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'curve-ftm-mim', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'MIM', + assets: ['MIM', 'USDC', 'fUSDT'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + 'OVER_COLLAT_ALGO_STABLECOIN', + ], + stratType: 'StratMultiLP', + withdrawalFee: '0.01%', + addLiquidityUrl: 'https://ftm.curve.fi/factory/1/deposit', + createdAt: 1633879958, + }, + { + id: 'geist-geist-ftm', + name: 'GEIST-FTM LP', + token: 'GEIST-FTM LP', + tokenDescription: 'SpookySwap (Geist)', + tokenAddress: '0x668AE94D0870230AC007a01B471D02b2c94DDcB9', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooGeistGEIST-WFTM', + earnedTokenAddress: '0xfd30cEAD8E54568fe535747929775e95Fdb6d3f7', + earnContractAddress: '0xfd30cEAD8E54568fe535747929775e95Fdb6d3f7', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'geist-geist-ftm', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Geist', + assets: ['GEIST', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_SMALL', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: 'https://spooky.fi/#/add/FTM/0xd8321AA83Fb0a4ECd6348D4577431310A6E0814d', + buyTokenUrl: + 'https://spooky.fi/#/swap?outputCurrency=0xd8321AA83Fb0a4ECd6348D4577431310A6E0814d', + createdAt: 1633607188, + }, + { + id: 'boo-wftm-spell', + name: 'SPELL-FTM LP', + token: 'SPELL-FTM LP', + tokenDescription: 'SpookySwap', + tokenAddress: '0x78f82c16992932EfDd18d93f889141CcF326DBc2', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBooWFTM-SPELL', + earnedTokenAddress: '0xB3aA62165C1Aa9472C9B16dFAB74681F61D28508', + earnContractAddress: '0xB3aA62165C1Aa9472C9B16dFAB74681F61D28508', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'boo-wftm-spell', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SpookySwap', + assets: ['SPELL', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: 'https://spooky.fi/#/add/FTM/0x468003B688943977e6130F4F68F23aad939a1040', + buyTokenUrl: + 'https://spooky.fi/#/swap?outputCurrency=0x468003B688943977e6130F4F68F23aad939a1040', + createdAt: 1634118092, + }, + { + id: 'spirit-link-ftm-eol', + name: 'LINK-FTM LP', + token: 'LINK-FTM SLP', + tokenDescription: 'SpiritSwap', + tokenAddress: '0xd061c6586670792331E14a80f3b3Bb267189C681', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSpiritLINK-WFTM', + earnedTokenAddress: '0x8e4C1AD24d3e275d298b091DB11C8C2CBF9c9688', + earnContractAddress: '0x8e4C1AD24d3e275d298b091DB11C8C2CBF9c9688', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'spirit-link-ftm', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'tvl', + platform: 'SpiritSwap', + assets: ['LINK', 'FTM'], + withdrawalFee: '0%', + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://swap.spiritswap.finance/#/add/FTM/0xb3654dc3d10ea7645f8319668e8f54d2574fbdc8', + buyTokenUrl: + 'https://swap.spiritswap.finance/#/exchange/swap/0xb3654dc3D10Ea7645f8319668E8F54d2574FBdC8', + createdAt: 1633336526, + }, + { + id: 'spirit-any-ftm-eol', + name: 'ANY-FTM LP', + token: 'ANY-FTM SLP', + tokenDescription: 'SpiritSwap', + tokenAddress: '0x26D583028989378Cc1b7CBC023f4Ae049d5e5899', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSpiritANY-WFTM', + earnedTokenAddress: '0xf1aE82B29Fe8813E326E760dfce60BbED1F93D1a', + earnContractAddress: '0xf1aE82B29Fe8813E326E760dfce60BbED1F93D1a', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'spirit-any-ftm', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'SpiritSwap', + assets: ['ANY', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + retireReason: 'rewards', + addLiquidityUrl: + 'https://swap.spiritswap.finance/#/add/FTM/0xdDcb3fFD12750B45d32E084887fdf1aABAb34239', + buyTokenUrl: + 'https://swap.spiritswap.finance/#/exchange/swap/0xdDcb3fFD12750B45d32E084887fdf1aABAb34239', + createdAt: 1633336796, + }, + { + id: 'curve-ftm-tricrypto', + logo: 'uncategorized/ATRICRYPTO.png', + name: 'TriCrypto', + token: 'crv3crypto', + tokenDescription: 'Curve', + tokenAddress: '0x58e57cA18B7A47112b877E31929798Cd3D703b0f', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCurveTriCrypto', + earnedTokenAddress: '0xeeE5EA8949F622090CFc16d141305d5120DF8dA4', + earnContractAddress: '0xeeE5EA8949F622090CFc16d141305d5120DF8dA4', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'curve-ftm-tricrypto', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Curve', + assets: ['fUSDT', 'WBTC', 'ETH'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratMultiLP', + withdrawalFee: '0%', + addLiquidityUrl: 'https://ftm.curve.fi/tricrypto/deposit', + createdAt: 1652662923, + }, + { + id: 'sing-ftm-usdc-sing-eol', + name: 'SING-USDC LP', + token: 'SING-USDC', + tokenDescription: 'SpookySwap (Singular)', + tokenAddress: '0x49710DFc04f11704003d0C9beeb953822F62fBaf', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSingUSDC-SING', + earnedTokenAddress: '0x92fCB57f1751e45F6aEcC4b477Bb2255511db2b0', + earnContractAddress: '0x92fCB57f1751e45F6aEcC4b477Bb2255511db2b0', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'sing-ftm-usdc-sing', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['SING', 'USDC'], + risks: ['COMPLEXITY_LOW', 'NEW_STRAT', 'IL_HIGH', 'MCAP_MICRO', 'AUDIT', 'CONTRACTS_VERIFIED'], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: 'https://spooky.fi/#/add/FTM/0x53D831e1db0947c74e8a52618f662209ec5dE0cE', + buyTokenUrl: + 'https://spooky.fi/#/swap?outputCurrency=0x53D831e1db0947c74e8a52618f662209ec5dE0cE', + createdAt: 1634116608, + retireReason: 'tvl', + }, + { + id: 'spirit-ftm-usdc', + name: 'USDC-FTM LP', + token: 'USDC-FTM SLP', + tokenDescription: 'SpiritSwap', + tokenAddress: '0xe7E90f5a767406efF87Fdad7EB07ef407922EC1D', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSpiritUSDC-WFTM', + earnedTokenAddress: '0xA4e2EE5a7fF51224c27C98098D8DB5C770bAAdbE', + earnContractAddress: '0xA4e2EE5a7fF51224c27C98098D8DB5C770bAAdbE', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'spirit-ftm-usdc', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SpiritSwap', + assets: ['USDC', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://swap.spiritswap.finance/#/add/FTM/0x04068DA6C83AFCFA0e13ba15A6696662335D5B75', + buyTokenUrl: + 'https://swap.spiritswap.finance/#/exchange/swap/0x04068DA6C83AFCFA0e13ba15A6696662335D5B75', + createdAt: 1633180384, + }, + { + id: 'spirit-fusdt-ftm-eol', + name: 'fUSDT-FTM LP', + token: 'fUSDT-FTM SLP', + tokenDescription: 'SpiritSwap', + tokenAddress: '0xd14Dd3c56D9bc306322d4cEa0E1C49e9dDf045D4', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSpiritfUSDT-WFTM', + earnedTokenAddress: '0xD8dd2EA228968F7f043474Db610A20aF887866c7', + earnContractAddress: '0xD8dd2EA228968F7f043474Db610A20aF887866c7', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'spirit-fusdt-ftm', + oraclePrice: 0, + depositsPaused: false, + status: 'eol', + platform: 'SpiritSwap', + assets: ['fUSDT', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + retireReason: 'rewards', + addLiquidityUrl: + 'https://swap.spiritswap.finance/#/add/FTM/0x049d68029688eAbF473097a2fC38ef61633A3C7A', + buyTokenUrl: + 'https://swap.spiritswap.finance/#/exchange/swap/0x049d68029688eAbF473097a2fC38ef61633A3C7A', + createdAt: 1633182001, + }, + { + id: 'spirit-ftm-mim-eol', + name: 'MIM-FTM LP', + token: 'MIM-FTM SLP', + tokenDescription: 'SpiritSwap', + tokenAddress: '0xB32b31DfAfbD53E310390F641C7119b5B9Ea0488', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSpiritWFTM-MIM', + earnedTokenAddress: '0x10940BD183E39A21e9E19bF2d6551a84191B1582', + earnContractAddress: '0x10940BD183E39A21e9E19bF2d6551a84191B1582', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'spirit-ftm-mim', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'SpiritSwap', + assets: ['MIM', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + 'OVER_COLLAT_ALGO_STABLECOIN', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://swap.spiritswap.finance/#/add/FTM/0x82f0b8b456c1a451378467398982d4834b6829c1', + buyTokenUrl: + 'https://swap.spiritswap.finance/#/exchange/swap/0x82f0B8B456c1A451378467398982d4834b6829c1', + createdAt: 1633184876, + }, + { + id: 'spirit-crv-ftm', + name: 'CRV-FTM LP', + token: 'CRV-FTM SLP', + tokenDescription: 'SpiritSwap', + tokenAddress: '0x374C8ACb146407Ef0AE8F82BaAFcF8f4EC1708CF', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSpiritCRV-WFTM', + earnedTokenAddress: '0xAbab1D681bCF375d1bE78e9F57207F6dd015B4BC', + earnContractAddress: '0xAbab1D681bCF375d1bE78e9F57207F6dd015B4BC', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'spirit-crv-ftm', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SpiritSwap', + assets: ['CRV', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://swap.spiritswap.finance/#/add/FTM/0x1E4F97b9f9F913c46F1632781732927B9019C68b', + buyTokenUrl: + 'https://swap.spiritswap.finance/#/exchange/swap/0x1E4F97b9f9F913c46F1632781732927B9019C68b', + createdAt: 1633199608, + }, + { + id: 'spirit-zoo-ftm-eol', + name: 'ZOO-FTM LP', + token: 'ZOO-FTM SLP', + tokenDescription: 'SpiritSwap', + tokenAddress: '0xDF18DD2631f02D930071DF7d6FF89bbc3718C62F', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSpiritZOO-WFTM', + earnedTokenAddress: '0x9F0d2c24BB2F4b6024F9A266Aa95536481D78ABe', + earnContractAddress: '0x9F0d2c24BB2F4b6024F9A266Aa95536481D78ABe', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'spirit-zoo-ftm', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'tvl', + platform: 'SpiritSwap', + assets: ['ZOO', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://swap.spiritswap.finance/#/add/FTM/0x09e145A1D53c0045F41aEEf25D8ff982ae74dD56', + buyTokenUrl: + 'https://swap.spiritswap.finance/#/exchange/swap/0x09e145A1D53c0045F41aEEf25D8ff982ae74dD56', + createdAt: 1633206054, + }, + { + id: 'spirit-ftm-ice-eol', + name: 'ICE-FTM LP', + token: 'ICE-FTM STLP', + tokenDescription: 'SpiritSwap', + tokenAddress: '0x936D23C83c2469f6a14B9f5bEaec13879598A5aC', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSpiritWFTM-ICE', + earnedTokenAddress: '0x7579F5105f73ddC5bb1e969d3CE275f1Ea3e5E08', + earnContractAddress: '0x7579F5105f73ddC5bb1e969d3CE275f1Ea3e5E08', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'spirit-ftm-ice', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'SpiritSwap', + assets: ['ICE', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://swap.spiritswap.finance/#/add/FTM/0xf16e81dce15B08F326220742020379B855B87DF9', + buyTokenUrl: + 'https://swap.spiritswap.finance/#/exchange/swap/0xf16e81dce15B08F326220742020379B855B87DF9', + createdAt: 1633205561, + }, + { + id: 'jetswap-fantom-eth-btc-eol', + name: 'ETH-WBTC LP', + token: 'ETH-WBTC LP', + tokenDescription: 'JetSwap', + tokenAddress: '0x04C25d06eD3984AAE14CA705d3CaF97Fb7238799', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooJetSwapETH-BTC', + earnedTokenAddress: '0x3f812916E5C050305D8b4744f0254DE3e195d5E5', + earnContractAddress: '0x3f812916E5C050305D8b4744f0254DE3e195d5E5', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'jetswap-fantom-eth-btc', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'JetSwap', + assets: ['ETH', 'WBTC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://fantom-exchange.jetswap.finance/#/add/0x74b23882a30290451A17c44f4F05243b6b58C76d/0x321162Cd933E2Be498Cd2267a90534A804051b11', + createdAt: 1632980637, + retireReason: 'tvl', + }, + { + id: 'jetswap-fantom-eth-usdc-eol', + name: 'ETH-USDC LP', + token: 'ETH-USDC LP', + tokenDescription: 'JetSwap', + tokenAddress: '0xD21A2c9032D09B7174dB93736b834D2a7eaDab15', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooJetSwapETH-USDC', + earnedTokenAddress: '0x34D94202E8B006A7FAA46ebED7844B3A738f4E09', + earnContractAddress: '0x34D94202E8B006A7FAA46ebED7844B3A738f4E09', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'jetswap-fantom-eth-usdc', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'tvl', + platform: 'JetSwap', + assets: ['ETH', 'USDC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://fantom-exchange.jetswap.finance/#/add/0x04068da6c83afcfa0e13ba15a6696662335d5b75/0x74b23882a30290451A17c44f4F05243b6b58C76d', + createdAt: 1632980829, + }, + { + id: 'jetswap-fantom-btc-usdc', + name: 'WBTC-USDC LP', + token: 'WBTC-USDC LP', + tokenDescription: 'JetSwap', + tokenAddress: '0x6B5340dFcd7D509Ea931cC4E69462797DbBc0197', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooJetSwapBTC-USDC', + earnedTokenAddress: '0x8A5e335F6df7d73B7a6c33E0DA3FEE7a36cc0Da4', + earnContractAddress: '0x8A5e335F6df7d73B7a6c33E0DA3FEE7a36cc0Da4', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'jetswap-fantom-btc-usdc', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'JetSwap', + assets: ['WBTC', 'USDC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://fantom-exchange.jetswap.finance/#/add/0x04068DA6C83AFCFA0e13ba15A6696662335D5B75/0x321162Cd933E2Be498Cd2267a90534A804051b11', + createdAt: 1632980917, + }, + { + id: 'jetswap-fantom-fwings-ftm-eol', + name: 'fWINGS-FTM LP', + token: 'fWINGS-FTM LP', + tokenDescription: 'JetSwap', + tokenAddress: '0x1047f356D7cB29D5939724c69E4eE61e820aFAC6', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooJetSwapWINGS-FTM', + earnedTokenAddress: '0xAe3F0C61F3Dc48767ccCeF3aD50b29437BE4b1a4', + earnContractAddress: '0xAe3F0C61F3Dc48767ccCeF3aD50b29437BE4b1a4', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'jetswap-fantom-fwings-ftm', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'JetSwap', + assets: ['fWINGS', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://fantom-exchange.jetswap.finance/#/add/FANTOM/0x3D8f1ACCEe8e263F837138829B6C4517473d0688', + buyTokenUrl: + 'https://fantom-exchange.jetswap.finance/#/swap?outputCurrency=0x3D8f1ACCEe8e263F837138829B6C4517473d0688', + createdAt: 1632906330, + retireReason: 'tvl', + }, + { + id: 'jetswap-fantom-fwings-usdc-eol', + name: 'fWINGS-USDC LP', + token: 'fWINGS-USDC LP', + tokenDescription: 'JetSwap', + tokenAddress: '0x89fF795017AE21A8696d371F685Cd02FC219F56F', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooJetSwapWINGS-USDC', + earnedTokenAddress: '0x9E75f8298e458B76382870982788988A0799195b', + earnContractAddress: '0x9E75f8298e458B76382870982788988A0799195b', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'jetswap-fantom-fwings-usdc', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'JetSwap', + assets: ['fWINGS', 'USDC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://fantom-exchange.jetswap.finance/#/add/0x04068da6c83afcfa0e13ba15a6696662335d5b75/0x3D8f1ACCEe8e263F837138829B6C4517473d0688', + buyTokenUrl: + 'https://fantom-exchange.jetswap.finance/#/swap?outputCurrency=0x3D8f1ACCEe8e263F837138829B6C4517473d0688', + createdAt: 1632906651, + retireReason: 'tvl', + }, + { + id: 'jetswap-fantom-fwings-eol', + logo: 'single-assets/fWINGS.svg', + name: 'fWINGS', + token: 'fWINGS', + tokenDescription: 'JetSwap', + tokenAddress: '0x3D8f1ACCEe8e263F837138829B6C4517473d0688', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooJetSwapWINGS', + earnedTokenAddress: '0x15c0a37ee6fDA217f0f10dC88df02e7A52e377CA', + earnContractAddress: '0x15c0a37ee6fDA217f0f10dC88df02e7A52e377CA', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'fWINGS', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'JetSwap', + assets: ['fWINGS'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'SingleStake', + withdrawalFee: '0%', + buyTokenUrl: + 'https://fantom-exchange.jetswap.finance/#/swap?outputCurrency=0x3D8f1ACCEe8e263F837138829B6C4517473d0688', + createdAt: 1632911389, + retireReason: 'tvl', + }, + { + id: 'tomb-tshare-ftm-eol', + logo: 'fantom/TSHARE-FTM.png', + name: 'TSHARE-FTM LP', + token: 'TSHARE-FTM LP', + tokenDescription: 'SpookySwap (Tomb)', + tokenAddress: '0x4733bc45eF91cF7CcEcaeeDb794727075fB209F2', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooTombTSHARE-FTM', + earnedTokenAddress: '0xae94e96bF81b3a43027918b138B71a771D381150', + earnContractAddress: '0xae94e96bF81b3a43027918b138B71a771D381150', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'tomb-tshare-ftm', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Tomb', + assets: ['TSHARE', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: 'https://spooky.fi/#/add/FTM/0x4cdF39285D7Ca8eB3f090fDA0C069ba5F4145B37', + buyTokenUrl: + 'https://spooky.fi/#/swap?outputCurrency=0x4cdF39285D7Ca8eB3f090fDA0C069ba5F4145B37', + createdAt: 1623662472, + }, + { + id: 'tomb-tomb-ftm', + logo: 'fantom/TOMB-FTM.png', + name: 'TOMB-FTM LP', + token: 'TOMB-FTM LP', + tokenDescription: 'SpookySwap (Tomb)', + tokenAddress: '0x2A651563C9d3Af67aE0388a5c8F89b867038089e', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooTombTOMB-FTM', + earnedTokenAddress: '0x27c77411074ba90cA35e6f92A79dAd577c05A746', + earnContractAddress: '0x27c77411074ba90cA35e6f92A79dAd577c05A746', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'tomb-tomb-ftm', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Tomb', + assets: ['TOMB', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: 'https://spooky.fi/#/add/FTM/0x6c021Ae822BEa943b2E66552bDe1D2696a53fbB7', + buyTokenUrl: + 'https://spooky.fi/#/swap?outputCurrency=0x6c021Ae822BEa943b2E66552bDe1D2696a53fbB7', + createdAt: 1623659891, + }, + { + id: 'spirit-ftm-just-eol', + name: 'JUST-FTM LP', + token: 'JUST-FTM SLP', + tokenDescription: 'SpiritSwap', + tokenAddress: '0x0133660D0578Bf9D085033Ea753a27F5Aa2b9de1', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSpiritWFTM-JUST', + earnedTokenAddress: '0xE6Db1E69b7A806ADe620b94F68da115bf25E13Ca', + earnContractAddress: '0xE6Db1E69b7A806ADe620b94F68da115bf25E13Ca', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'spirit-ftm-just', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'SpiritSwap', + assets: ['JUST', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + retireReason: 'tvl', + addLiquidityUrl: + 'https://swap.spiritswap.finance/#/add/FTM/0x37C045bE4641328DFEB625f1Dde610D061613497', + buyTokenUrl: + 'https://swap.spiritswap.finance/#/exchange/swap/0x37C045bE4641328DFEB625f1Dde610D061613497', + createdAt: 1633342210, + }, + { + id: 'spirit-ftm-sushi-eol', + name: 'SUSHI-FTM LP', + token: 'SUSHI-FTM SLP', + tokenDescription: 'SpiritSwap', + tokenAddress: '0x9Fe4c0CE5F533e96C2b72d852f190961AD5a7bB3', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSpiritWFTM-SUSHI', + earnedTokenAddress: '0xb61a911DCc9490623b3d1F9f9246Ce9E45889018', + earnContractAddress: '0xb61a911DCc9490623b3d1F9f9246Ce9E45889018', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'spirit-ftm-sushi', + oraclePrice: 0, + depositsPaused: false, + status: 'eol', + platform: 'SpiritSwap', + assets: ['SUSHI', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + retireReason: 'rewards', + addLiquidityUrl: + 'https://swap.spiritswap.finance/#/add/FTM/0xae75A438b2E0cB8Bb01Ec1E1e376De11D44477CC', + buyTokenUrl: + 'https://swap.spiritswap.finance/#/exchange/swap/0xae75A438b2E0cB8Bb01Ec1E1e376De11D44477CC', + createdAt: 1633336047, + }, + { + id: 'spirit-fusdt-spell-eol', + name: 'SPELL-fUSDT LP', + token: 'SPELL-fUSDT SLP', + tokenDescription: 'SpiritSwap', + tokenAddress: '0x31c0385DDE956f95D43Dac80Bd74FEE149961f4c', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSpiritfUSDT-SPELL', + earnedTokenAddress: '0x01760EA1e63aA89b5E567ED616E104220B4E2e9B', + earnContractAddress: '0x01760EA1e63aA89b5E567ED616E104220B4E2e9B', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'spirit-fusdt-spell', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'SpiritSwap', + assets: ['SPELL', 'fUSDT'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://swap.spiritswap.finance/#/add/0x468003B688943977e6130F4F68F23aad939a1040/0x049d68029688eAbF473097a2fC38ef61633A3C7A', + buyTokenUrl: + 'https://swap.spiritswap.finance/#/exchange/swap/0x468003B688943977e6130F4F68F23aad939a1040', + createdAt: 1633342959, + }, + { + id: 'boo-wftm-shade-eol', + name: 'SHADE-FTM LP', + token: 'SHADE-FTM LP', + tokenDescription: 'SpookySwap', + tokenAddress: '0x20aa395F3bcc4dc44a94215D129650533B3da0b3', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBooSHADE-FTM', + earnedTokenAddress: '0xc178cDdDc277D5aFac90EEc3F833EF3a11Fbc9df', + earnContractAddress: '0xc178cDdDc277D5aFac90EEc3F833EF3a11Fbc9df', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'boo-wftm-shade', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'SpookySwap', + assets: ['SHADE', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + retireReason: 'rewards', + addLiquidityUrl: 'https://spooky.fi/#/add/FTM/0x3A3841f5fa9f2c283EA567d5Aeea3Af022dD2262', + buyTokenUrl: + 'https://spooky.fi/#/swap?outputCurrency=0x3A3841f5fa9f2c283EA567d5Aeea3Af022dD2262', + createdAt: 1631898051, + }, + { + id: 'boo-wftm-treeb', + name: 'TREEB-FTM LP', + token: 'TREEB-FTM LP', + tokenDescription: 'SpookySwap', + tokenAddress: '0xe8b72a866b8D59F5c13D2ADEF96E40A3EF5b3152', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBooTREEB-FTM', + earnedTokenAddress: '0x6C4593D4f91c790404cCEe5007E929d2b7bF45bD', + earnContractAddress: '0x6C4593D4f91c790404cCEe5007E929d2b7bF45bD', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'boo-wftm-treeb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SpookySwap', + assets: ['TREEB', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: 'https://spooky.fi/#/add/FTM/0xc60D7067dfBc6f2caf30523a064f416A5Af52963', + buyTokenUrl: + 'https://spooky.fi/#/swap?outputCurrency=0xc60D7067dfBc6f2caf30523a064f416A5Af52963', + createdAt: 1631897760, + }, + { + id: 'scream-crv', + logo: 'single-assets/CRV.png', + name: 'CRV', + token: 'CRV', + tokenDescription: 'Scream', + tokenAddress: '0x1E4F97b9f9F913c46F1632781732927B9019C68b', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooScreamCRV', + earnedTokenAddress: '0xE8883Cd90A2D6F2877E130120965D61918d7CE44', + earnContractAddress: '0xE8883Cd90A2D6F2877E130120965D61918d7CE44', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'CRV', + oraclePrice: 0, + depositsPaused: true, + status: 'active', + platform: 'Scream', + assets: ['CRV'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'Lending', + withdrawalFee: '0%', + buyTokenUrl: + 'https://spooky.fi/#/swap?outputCurrency=0x1E4F97b9f9F913c46F1632781732927B9019C68b', + createdAt: 1631727659, + }, + { + id: 'scream-link', + logo: 'single-assets/LINK.png', + name: 'LINK', + token: 'LINK', + tokenDescription: 'Scream', + tokenAddress: '0xb3654dc3D10Ea7645f8319668E8F54d2574FBdC8', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooScreamLINK', + earnedTokenAddress: '0x6DfE2AAEA9dAadADf0865B661b53040E842640f8', + earnContractAddress: '0x6DfE2AAEA9dAadADf0865B661b53040E842640f8', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'LINK', + oraclePrice: 0, + depositsPaused: true, + status: 'active', + platform: 'Scream', + assets: ['LINK'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'Lending', + withdrawalFee: '0%', + buyTokenUrl: + 'https://spooky.fi/#/swap?outputCurrency=0xb3654dc3D10Ea7645f8319668E8F54d2574FBdC8', + createdAt: 1631726729, + }, + { + id: 'boo-boo', + logo: 'single-assets/BOO.png', + name: 'BOO', + token: 'BOO', + tokenDescription: 'SpookySwap', + tokenAddress: '0x841FAD6EAe12c286d1Fd18d1d525DFfA75C7EFFE', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBooBOO', + earnedTokenAddress: '0x15DD4398721733D8273FD4Ed9ac5eadC6c018866', + earnContractAddress: '0x15DD4398721733D8273FD4Ed9ac5eadC6c018866', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'BOO', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SpookySwap', + assets: ['BOO'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'SingleStake', + withdrawalFee: '0%', + buyTokenUrl: + 'https://spooky.fi/#/swap?outputCurrency=0x841FAD6EAe12c286d1Fd18d1d525DFfA75C7EFFE', + createdAt: 1620998574, + }, + { + id: 'stakesteak-fusd-usdc-eol', + name: 'fUSD-USDC sAMM LP', + token: 'fUSD-USDC sAMM LP', + tokenDescription: 'StakeSteak', + tokenAddress: '0xa0828eE559110b041DEdbf10Ae0cf42274251de1', + tokenDecimals: 6, + tokenDescriptionUrl: '#', + earnedToken: 'mooStakesteakFUSD-USDC', + earnedTokenAddress: '0x94A654bA3b4052a94EB795E9ff0e9209B0A54dB3', + earnContractAddress: '0x94A654bA3b4052a94EB795E9ff0e9209B0A54dB3', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'stakesteak-fusd-usdc', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['fUSD', 'USDC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_SMALL', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + depositFee: '0.5%', + withdrawalFee: '0%', + addLiquidityUrl: 'https://stakesteak.app/', + retireReason: 'tvl', + buyTokenUrl: + 'https://spooky.fi/#/swap?inputCurrency=0x04068DA6C83AFCFA0e13ba15A6696662335D5B75&outputCurrency=0xAd84341756Bf337f5a0164515b1f6F993D194E1f', + createdAt: 1631357355, + }, + { + id: 'boo-steak-wftm-eol', + name: 'STEAK-FTM LP', + token: 'STEAK-FTM LP', + tokenDescription: 'SpookySwap', + tokenAddress: '0xD10CC1b46D806D6ac803AF367Da489dEA5EE76FA', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBooSTEAK-WFTM', + earnedTokenAddress: '0x3497a17b4680Ef47Ff5B41B00DD4068CAa356A91', + earnContractAddress: '0x3497a17b4680Ef47Ff5B41B00DD4068CAa356A91', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'boo-steak-wftm', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'SpookySwap', + assets: ['STEAK', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + retireReason: 'rewards', + addLiquidityUrl: 'https://spooky.fi/#/add/FTM/0x05848B832E872d9eDd84AC5718D58f21fD9c9649', + buyTokenUrl: + 'https://spooky.fi/#/swap?outputCurrency=0x05848B832E872d9eDd84AC5718D58f21fD9c9649', + createdAt: 1631055499, + }, + { + id: 'boo-wftm-foo-eol', + name: 'FOO-FTM LP', + token: 'FOO-FTM LP', + tokenDescription: 'SpookySwap', + tokenAddress: '0x157f913Ed0961a8D0d06a258019840919111D9B9', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBooWFTM-FOO', + earnedTokenAddress: '0x4F4e8c1055d0b58F17593A0086608fc6949e5684', + earnContractAddress: '0x4F4e8c1055d0b58F17593A0086608fc6949e5684', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'boo-wftm-foo', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'tvl', + platform: 'SpookySwap', + assets: ['FOO', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: 'https://spooky.fi/#/add/FTM/0xFbc3c04845162F067A0B6F8934383E63899c3524', + buyTokenUrl: + 'https://spooky.fi/#/swap?outputCurrency=0xFbc3c04845162F067A0B6F8934383E63899c3524', + createdAt: 1631054248, + }, + { + id: 'boo-ftm-scream-eol', + name: 'SCREAM-FTM LP', + token: 'SCREAM-FTM LP', + tokenDescription: 'SpookySwap', + tokenAddress: '0x30872e4fc4edbFD7a352bFC2463eb4fAe9C09086', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBooFTM-SCREAM', + earnedTokenAddress: '0xcA68685C99dB20ffFa999Af52178077d6f0A3E73', + earnContractAddress: '0xcA68685C99dB20ffFa999Af52178077d6f0A3E73', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'boo-ftm-scream', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'SpookySwap', + assets: ['SCREAM', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: 'https://spooky.fi/#/add/FTM/0xe0654C8e6fd4D733349ac7E09f6f23DA256bF475', + buyTokenUrl: + 'https://spooky.fi/#/swap?outputCurrency=0xe0654C8e6fd4D733349ac7E09f6f23DA256bF475', + createdAt: 1630352068, + retireReason: 'tvl', + }, + { + id: 'boo-zoo-ftm-eol', + name: 'ZOO-FTM LP', + token: 'ZOO-FTM LP', + tokenDescription: 'SpookySwap', + tokenAddress: '0x3Cceb477Fcb6cDE90180983642486E68148D7b27', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBooZOO-FTM', + earnedTokenAddress: '0xe87d98ce222435455706529c8Ff8E12973792acb', + earnContractAddress: '0xe87d98ce222435455706529c8Ff8E12973792acb', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'boo-zoo-ftm', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'SpookySwap', + assets: ['ZOO', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + retireReason: 'rewards', + addLiquidityUrl: 'https://spooky.fi/#/add/FTM/0x09e145A1D53c0045F41aEEf25D8ff982ae74dD56', + buyTokenUrl: + 'https://spooky.fi/#/swap?outputCurrency=0x09e145A1D53c0045F41aEEf25D8ff982ae74dD56', + createdAt: 1630243343, + }, + { + id: 'steakhouse-scream-ftm', + name: 'SCREAM-FTM LP', + token: 'SCREAM-FTM LP', + tokenDescription: 'SteakHouse', + tokenAddress: '0x30872e4fc4edbFD7a352bFC2463eb4fAe9C09086', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSteakHouseSCREAM-FTM', + earnedTokenAddress: '0xF782E675B93d22FD810Dca4149D29Ab32e5B2972', + earnContractAddress: '0xF782E675B93d22FD810Dca4149D29Ab32e5B2972', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'steakhouse-scream-ftm', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + assets: ['SCREAM', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + depositFee: '0.5%', + withdrawalFee: '0%', + platform: 'Other', + addLiquidityUrl: 'https://spooky.fi/#/add/FTM/0xe0654C8e6fd4D733349ac7E09f6f23DA256bF475', + buyTokenUrl: + 'https://spooky.fi/#/swap?outputCurrency=0xe0654C8e6fd4D733349ac7E09f6f23DA256bF475', + createdAt: 1628881379, + }, + { + id: 'scream-usdc', + logo: 'single-assets/USDC.svg', + name: 'USDC', + token: 'USDC', + tokenDescription: 'Scream', + tokenAddress: '0x04068DA6C83AFCFA0e13ba15A6696662335D5B75', + tokenDecimals: 6, + tokenDescriptionUrl: '#', + earnedToken: 'mooScreamUSDC', + earnedTokenAddress: '0x2438009ba14A93e82ab43c66838e57bE27A55Aa1', + earnContractAddress: '0x2438009ba14A93e82ab43c66838e57bE27A55Aa1', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'USDC', + oraclePrice: 0, + depositsPaused: true, + status: 'active', + platform: 'Scream', + assets: ['USDC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'Lending', + withdrawalFee: '0%', + buyTokenUrl: + 'https://spooky.fi/#/swap?outputCurrency=0x04068DA6C83AFCFA0e13ba15A6696662335D5B75', + createdAt: 1628627757, + }, + { + id: 'scream-wbtc', + logo: 'single-assets/WBTC.svg', + name: 'WBTC', + token: 'WBTC', + tokenDescription: 'Scream', + tokenAddress: '0x321162Cd933E2Be498Cd2267a90534A804051b11', + tokenDecimals: 8, + tokenDescriptionUrl: '#', + earnedToken: 'mooScreamWBTC', + earnedTokenAddress: '0x97927aBfE1aBBE5429cBe79260B290222fC9fbba', + earnContractAddress: '0x97927aBfE1aBBE5429cBe79260B290222fC9fbba', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'WBTC', + oraclePrice: 0, + depositsPaused: true, + status: 'active', + platform: 'Scream', + assets: ['WBTC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'Lending', + withdrawalFee: '0.01%', + buyTokenUrl: + 'https://spooky.fi/#/swap?outputCurrency=0x321162Cd933E2Be498Cd2267a90534A804051b11', + createdAt: 1628739572, + }, + { + id: 'scream-dai', + logo: 'single-assets/DAI.svg', + name: 'DAI', + token: 'DAI', + tokenDescription: 'Scream', + tokenAddress: '0x8D11eC38a3EB5E956B052f67Da8Bdc9bef8Abf3E', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooScreamDAI', + earnedTokenAddress: '0x920786cff2A6f601975874Bb24C63f0115Df7dc8', + earnContractAddress: '0x920786cff2A6f601975874Bb24C63f0115Df7dc8', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'DAI', + oraclePrice: 0, + depositsPaused: true, + status: 'active', + platform: 'Scream', + assets: ['DAI'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + 'OVER_COLLAT_ALGO_STABLECOIN', + ], + stratType: 'Lending', + withdrawalFee: '0%', + buyTokenUrl: + 'https://spooky.fi/#/swap?outputCurrency=0x8D11eC38a3EB5E956B052f67Da8Bdc9bef8Abf3E', + createdAt: 1628739318, + }, + { + id: 'scream-eth', + logo: 'single-assets/ETH.svg', + name: 'ETH', + token: 'ETH', + tokenDescription: 'Scream', + tokenAddress: '0x74b23882a30290451A17c44f4F05243b6b58C76d', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooScreamETH', + earnedTokenAddress: '0x0a03D2C1cFcA48075992d810cc69Bd9FE026384a', + earnContractAddress: '0x0a03D2C1cFcA48075992d810cc69Bd9FE026384a', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'ETH', + oraclePrice: 0, + depositsPaused: true, + status: 'active', + platform: 'Scream', + assets: ['ETH'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'Lending', + withdrawalFee: '0%', + buyTokenUrl: + 'https://spooky.fi/#/swap?outputCurrency=0x74b23882a30290451A17c44f4F05243b6b58C76d', + createdAt: 1628739417, + }, + { + id: 'scream-fusdt', + logo: 'single-assets/USDT.svg', + name: 'fUSDT', + token: 'fUSDT', + tokenDescription: 'Scream', + tokenAddress: '0x049d68029688eAbF473097a2fC38ef61633A3C7A', + tokenDecimals: 6, + tokenDescriptionUrl: '#', + earnedToken: 'mooScreamfUSDT', + earnedTokenAddress: '0xb09cf345294aDD1066543B22FD7384185F7C6fCA', + earnContractAddress: '0xb09cf345294aDD1066543B22FD7384185F7C6fCA', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'USDT', + oraclePrice: 0, + depositsPaused: true, + status: 'active', + platform: 'Scream', + assets: ['fUSDT'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'Lending', + withdrawalFee: '0%', + buyTokenUrl: + 'https://spooky.fi/#/swap?outputCurrency=0x049d68029688eAbF473097a2fC38ef61633A3C7A', + createdAt: 1628739191, + }, + { + id: 'boo-yfi-eth', + name: 'YFI-ETH LP', + token: 'YFI-ETH LP', + tokenDescription: 'SpookySwap', + tokenAddress: '0x0845c0bFe75691B1e21b24351aAc581a7FB6b7Df', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBooYFI-ETH', + earnedTokenAddress: '0x93EA5929f636f71F343122Ce396340f8E0BC3A70', + earnContractAddress: '0x93EA5929f636f71F343122Ce396340f8E0BC3A70', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'boo-yfi-eth', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SpookySwap', + assets: ['YFI', 'ETH'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://spooky.fi/#/add/0x29b0Da86e484E1C0029B56e817912d778aC0EC69/0x74b23882a30290451A17c44f4F05243b6b58C76d', + buyTokenUrl: + 'https://spooky.fi/#/swap?inputCurrency=0x29b0Da86e484E1C0029B56e817912d778aC0EC69&outputCurrency=0x74b23882a30290451A17c44f4F05243b6b58C76d', + createdAt: 1628168514, + }, + { + id: 'curve-ftm-2pool', + logo: 'uncategorized/crv2pool.png', + name: 'DAI/USDC', + token: '2poolCRV', + tokenDescription: 'Curve', + tokenAddress: '0x27E611FD27b276ACbd5Ffd632E5eAEBEC9761E40', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCurve2Pool', + earnedTokenAddress: '0x7715d9458683288024B9e20D1319DC162361B06c', + earnContractAddress: '0x7715d9458683288024B9e20D1319DC162361B06c', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'curve-ftm-2pool', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Curve', + assets: ['USDC', 'DAI'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + 'OVER_COLLAT_ALGO_STABLECOIN', + ], + stratType: 'StratLP', + withdrawalFee: '0.01%', + addLiquidityUrl: 'https://ftm.curve.fi/2pool/deposit', + createdAt: 1626957477, + }, + { + id: 'curve-ftm-fusdt-eol', + logo: 'single-assets/USDT.svg', + name: 'fUSDT/DAI/USDC', + token: 'fusdtCRV', + tokenDescription: 'Curve', + tokenAddress: '0x92D5ebF3593a92888C25C0AbEF126583d4b5312E', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCurveFUSDT', + earnedTokenAddress: '0xBdA8bC79705BC60226adCA2766e94Eb5512949a3', + earnContractAddress: '0xBdA8bC79705BC60226adCA2766e94Eb5512949a3', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'curve-ftm-fusdt', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Curve', + assets: ['fUSDT', 'USDC', 'DAI'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + 'OVER_COLLAT_ALGO_STABLECOIN', + ], + stratType: 'StratMultiLP', + withdrawalFee: '0.01%', + retireReason: 'rewards', + addLiquidityUrl: 'https://ftm.curve.fi/fusdt/deposit', + createdAt: 1626963081, + }, + { + id: 'curve-ftm-ren', + logo: 'single-assets/renBTC.png', + name: 'WBTC/renBTC', + token: 'btcCRV', + tokenDescription: 'Curve', + tokenAddress: '0x5B5CFE992AdAC0C9D48E05854B2d91C73a003858', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCurveRenBTC', + earnedTokenAddress: '0xda3c57A81aCe16b2cC34e8872e886575f8ccf672', + earnContractAddress: '0xda3c57A81aCe16b2cC34e8872e886575f8ccf672', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'curve-ftm-ren', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Curve', + assets: ['WBTC', 'renBTC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: 'https://ftm.curve.fi/ren/deposit', + createdAt: 1652662923, + }, + { + id: 'boo-mim-ftm', + name: 'MIM-FTM LP', + token: 'MIM-FTM LP', + tokenDescription: 'SpookySwap', + tokenAddress: '0x6f86e65b255c9111109d2D2325ca2dFc82456efc', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBooMIM-FTM', + earnedTokenAddress: '0x6676C93eb0F2daEfD3b9d03De2E3b18F888cF942', + earnContractAddress: '0x6676C93eb0F2daEfD3b9d03De2E3b18F888cF942', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'boo-mim-ftm', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SpookySwap', + assets: ['MIM', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + 'OVER_COLLAT_ALGO_STABLECOIN', + ], + stratType: 'StratLP', + addLiquidityUrl: 'https://spooky.fi/#/add/FTM/0x82f0B8B456c1A451378467398982d4834b6829c1', + buyTokenUrl: + 'https://spooky.fi/#/swap?outputCurrency=0x82f0B8B456c1A451378467398982d4834b6829c1', + createdAt: 1625679284, + }, + { + id: 'boo-boo-ftm', + name: 'BOO-FTM LP', + token: 'BOO-FTM LP', + tokenDescription: 'SpookySwap', + tokenAddress: '0xEc7178F4C41f346b2721907F5cF7628E388A7a58', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBooBoo-FTM', + earnedTokenAddress: '0xEe3a7c885Fd3cc5358FF583F2DAB3b8bC473316f', + earnContractAddress: '0xEe3a7c885Fd3cc5358FF583F2DAB3b8bC473316f', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'boo-boo-ftm', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SpookySwap', + assets: ['BOO', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: 'https://spooky.fi/#/add/FTM/0x841FAD6EAe12c286d1Fd18d1d525DFfA75C7EFFE', + buyTokenUrl: + 'https://spooky.fi/#/swap?outputCurrency=0x841FAD6EAe12c286d1Fd18d1d525DFfA75C7EFFE', + createdAt: 1620386574, + }, + { + id: 'boo-bifi-ftm', + name: 'BIFI-FTM LP', + token: 'BIFI-FTM LP', + tokenDescription: 'SpookySwap', + tokenAddress: '0x1656728af3a14e1319F030Dc147fAbf6f627059e', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBooBIFI-FTM', + earnedTokenAddress: '0xe8188B9701E6DB1Fe24c75783474D22e5957BBEF', + earnContractAddress: '0xe8188B9701E6DB1Fe24c75783474D22e5957BBEF', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'boo-bifi-ftm', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SpookySwap', + assets: ['BIFI', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_SMALL', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: 'https://spooky.fi/#/add/FTM/0xd6070ae98b8069de6B494332d1A1a81B6179D960', + buyTokenUrl: + 'https://spooky.fi/#/swap?outputCurrency=0xd6070ae98b8069de6B494332d1A1a81B6179D960', + createdAt: 1622569266, + }, + { + id: 'boo-ftm-ice', + name: 'ICE-FTM LP', + token: 'ICE-FTM LP', + tokenDescription: 'SpookySwap', + tokenAddress: '0x623EE4a7F290d11C11315994dB70FB148b13021d', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBooFTM-ICE', + earnedTokenAddress: '0x33E0Feb374C9B7fC3Ac392140BdE3036263D8e5e', + earnContractAddress: '0x33E0Feb374C9B7fC3Ac392140BdE3036263D8e5e', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'boo-ftm-ice', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SpookySwap', + assets: ['ICE', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: 'https://spooky.fi/#/add/FTM/0xf16e81dce15B08F326220742020379B855B87DF9', + buyTokenUrl: + 'https://spooky.fi/#/swap?outputCurrency=0xf16e81dce15B08F326220742020379B855B87DF9', + createdAt: 1622445591, + }, + { + id: 'boo-ftm-sushi', + name: 'SUSHI-FTM LP', + token: 'SUSHI-FTM LP', + tokenDescription: 'SpookySwap', + tokenAddress: '0xf84E313B36E86315af7a06ff26C8b20e9EB443C3', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBooFTM-SUSHI', + earnedTokenAddress: '0xb8c90D7C60Cf88915BCc4F388F207D5F7fDaA9b4', + earnContractAddress: '0xb8c90D7C60Cf88915BCc4F388F207D5F7fDaA9b4', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'boo-ftm-sushi', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SpookySwap', + assets: ['SUSHI', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: 'https://spooky.fi/#/add/FTM/0xae75A438b2E0cB8Bb01Ec1E1e376De11D44477CC', + buyTokenUrl: + 'https://spooky.fi/#/swap?outputCurrency=0xae75A438b2E0cB8Bb01Ec1E1e376De11D44477CC', + createdAt: 1622446524, + }, + { + id: 'boo-ftm-usdc', + name: 'USDC-FTM LP', + token: 'USDC-FTM LP', + tokenDescription: 'SpookySwap', + tokenAddress: '0x2b4C76d0dc16BE1C31D4C1DC53bF9B45987Fc75c', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBooFTM-USDC', + earnedTokenAddress: '0x41D44B276904561Ac51855159516FD4cB2c90968', + earnContractAddress: '0x41D44B276904561Ac51855159516FD4cB2c90968', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'boo-ftm-usdc', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SpookySwap', + assets: ['USDC', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: 'https://spooky.fi/#/add/FTM/0x04068DA6C83AFCFA0e13ba15A6696662335D5B75', + buyTokenUrl: + 'https://spooky.fi/#/swap?outputCurrency=0x04068DA6C83AFCFA0e13ba15A6696662335D5B75', + createdAt: 1620386549, + }, + { + id: 'boo-any-ftm', + name: 'ANY-FTM LP', + token: 'ANY-FTM LP', + tokenDescription: 'SpookySwap', + tokenAddress: '0x5c021D9cfaD40aaFC57786b409A9ce571de375b4', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBooANY-FTM', + earnedTokenAddress: '0xEE40C6Decc15dCeCE7a836e5CD5Ff94523D32265', + earnContractAddress: '0xEE40C6Decc15dCeCE7a836e5CD5Ff94523D32265', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'boo-any-ftm', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SpookySwap', + assets: ['ANY', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: 'https://spooky.fi/#/add/FTM/0xdDcb3fFD12750B45d32E084887fdf1aABAb34239', + buyTokenUrl: + 'https://spooky.fi/#/swap?outputCurrency=0xdDcb3fFD12750B45d32E084887fdf1aABAb34239', + createdAt: 1622123539, + }, + { + id: 'boo-dai-ftm', + name: 'DAI-FTM LP', + token: 'DAI-FTM LP', + tokenDescription: 'SpookySwap', + tokenAddress: '0xe120ffBDA0d14f3Bb6d6053E90E63c572A66a428', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBooDAI-FTM', + earnedTokenAddress: '0x8316b990De26eB530B7B1bb0d87f5b0a304637cd', + earnContractAddress: '0x8316b990De26eB530B7B1bb0d87f5b0a304637cd', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'boo-dai-ftm', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SpookySwap', + assets: ['DAI', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + 'OVER_COLLAT_ALGO_STABLECOIN', + ], + stratType: 'StratLP', + addLiquidityUrl: 'https://spooky.fi/#/add/FTM/0x8D11eC38a3EB5E956B052f67Da8Bdc9bef8Abf3E', + buyTokenUrl: + 'https://spooky.fi/#/swap?outputCurrency=0x8D11eC38a3EB5E956B052f67Da8Bdc9bef8Abf3E', + createdAt: 1622123567, + }, + { + id: 'ester-est-ftm-eol', + name: 'EST-FTM LP', + token: 'EST-FTM LP', + tokenDescription: 'SpiritSwap', + tokenAddress: '0x0c9043cb1B994C8e4a8024e2F037Ea50b7025a82', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooEsterEST-FTM', + earnedTokenAddress: '0x59247cfe6FC768A8C3F95601008B75A94F4939Bd', + earnContractAddress: '0x59247cfe6FC768A8C3F95601008B75A94F4939Bd', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'ester-est-ftm', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'tvl', + platform: 'Other', + assets: ['EST', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://swap.spiritswap.finance/#/add/FTM/0x181F3F22C9a751E2ce673498A03E1FDFC0ebBFB6', + buyTokenUrl: + 'https://swap.spiritswap.finance/#/exchange/swap/0x181F3F22C9a751E2ce673498A03E1FDFC0ebBFB6', + createdAt: 1621505384, + }, + { + id: 'ester-est-eol', + logo: 'single-assets/EST.png', + name: 'EST', + token: 'EST', + tokenDescription: 'Ester', + tokenAddress: '0x181F3F22C9a751E2ce673498A03E1FDFC0ebBFB6', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooEsterEST', + earnedTokenAddress: '0x7076a33b6525132fF77F0FeE2daB2a1e79688DA0', + earnContractAddress: '0x7076a33b6525132fF77F0FeE2daB2a1e79688DA0', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'EST', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['EST'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'SingleStake', + buyTokenUrl: + 'https://swap.spiritswap.finance/#/exchange/swap/0x181F3F22C9a751E2ce673498A03E1FDFC0ebBFB6', + createdAt: 1621508945, + retireReason: 'tvl', + }, + { + id: 'boo-woofy-ftm-eol', + name: 'WOOFY-FTM LP', + token: 'WOOFY-FTM LP', + tokenDescription: 'SpookySwap', + tokenAddress: '0xfD0aB56B83130ce8f2b7A4f4d4532dEe495c0794', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBooWOOFY-FTM', + earnedTokenAddress: '0x7CE2332fAF6328986C75e3A8fCc1CB79621aeB1F', + earnContractAddress: '0x7CE2332fAF6328986C75e3A8fCc1CB79621aeB1F', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'boo-woofy-ftm', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'SpookySwap', + assets: ['WOOFY', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + retireReason: 'rewards', + addLiquidityUrl: 'https://spooky.fi/#/add/FTM/0xD0660cD418a64a1d44E9214ad8e459324D8157f1', + buyTokenUrl: + 'https://spooky.fi/#/swap?outputCurrency=0xD0660cD418a64a1d44E9214ad8e459324D8157f1', + createdAt: 1621266087, + }, + { + id: 'boo-bnb-ftm', + name: 'BNB-FTM LP', + token: 'BNB-FTM LP', + tokenDescription: 'SpookySwap', + tokenAddress: '0x956DE13EA0FA5b577E4097Be837BF4aC80005820', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBooBNB-FTM', + earnedTokenAddress: '0xC5b2a6aB801E74F098aCC8Bb62B786b47319c4D9', + earnContractAddress: '0xC5b2a6aB801E74F098aCC8Bb62B786b47319c4D9', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'boo-bnb-ftm', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SpookySwap', + assets: ['BNB', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: 'https://spooky.fi/#/add/FTM/0xD67de0e0a0Fd7b15dC8348Bb9BE742F3c5850454', + buyTokenUrl: + 'https://spooky.fi/#/swap?outputCurrency=0xD67de0e0a0Fd7b15dC8348Bb9BE742F3c5850454', + createdAt: 1620919260, + }, + { + id: 'froyo-3pool-eol', + logo: 'fantom/FROYO-3Pool.png', + name: 'USDT/DAI/USDC', + token: 'FROYO 3Pool', + tokenDescription: 'Froyo', + tokenAddress: '0x4f85Bbf3B0265DCEd4Ec72ebD0358ccCf190F1B3', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooFroyo3Pool', + earnedTokenAddress: '0xb18398ad9735fea37C97dcba50C0Bb947Dc0eeBD', + earnContractAddress: '0xb18398ad9735fea37C97dcba50C0Bb947Dc0eeBD', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'froyo-3pool', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['USDT', 'DAI', 'USDC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + 'OVER_COLLAT_ALGO_STABLECOIN', + ], + stratType: 'StratMultiLP', + addLiquidityUrl: 'https://frozenyogurt.finance/pool', + createdAt: 1620633860, + retireReason: 'tvl', + }, + { + id: 'froyo-froyo-ftm-eol', + name: 'FROYO-FTM LP', + token: 'FROYO-FTM LP', + tokenDescription: 'SushiSwap', + tokenAddress: '0xBE0AF661BC9794E05fAb18C08C2C99811A0F45D2', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooFroyoFROYO-FTM', + earnedTokenAddress: '0xeD4ea30c755676C07d3e0e0f74Ff84C0193B4551', + earnContractAddress: '0xeD4ea30c755676C07d3e0e0f74Ff84C0193B4551', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'froyo-froyo-ftm', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['FROYO', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: 'https://app.sushi.com/add/ETH/0xA92d41Ab8eFeE617d80a829CD9F5683c5F793ADA', + buyTokenUrl: + 'https://app.sushi.com/swap?outputCurrency=0xA92d41Ab8eFeE617d80a829CD9F5683c5F793ADA', + createdAt: 1620626525, + retireReason: 'tvl', + }, + { + id: 'boo-link-ftm', + name: 'LINK-FTM LP', + token: 'LINK-FTM LP', + tokenDescription: 'SpookySwap', + tokenAddress: '0x89d9bC2F2d091CfBFc31e333D6Dc555dDBc2fd29', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBooLINK-FTM', + earnedTokenAddress: '0x711969A90C9EDD815A5C2b441FC80d067EC5E969', + earnContractAddress: '0x711969A90C9EDD815A5C2b441FC80d067EC5E969', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'boo-link-ftm', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SpookySwap', + assets: ['LINK', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: 'https://spooky.fi/#/add/FTM/0xb3654dc3D10Ea7645f8319668E8F54d2574FBdC8', + buyTokenUrl: + 'https://spooky.fi/#/swap?outputCurrency=0xb3654dc3D10Ea7645f8319668E8F54d2574FBdC8', + createdAt: 1620500758, + }, + { + id: 'boo-cover-ftm-eol', + name: 'COVER-FTM LP', + token: 'COVER-FTM LP', + tokenDescription: 'SpookySwap', + tokenAddress: '0x5DC7848bF215F1D99F2AF3d2Bf78fcdf238EE34b', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBooCOVER-FTM', + earnedTokenAddress: '0xF5Bf6b3624eb10Ee855FEC1C5a4af81D90996b6c', + earnContractAddress: '0xF5Bf6b3624eb10Ee855FEC1C5a4af81D90996b6c', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'boo-cover-ftm', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'SpookySwap', + assets: ['COVER', 'FTM'], + addLiquidityUrl: 'https://spooky.fi/#/add/FTM/0xB01E8419d842beebf1b70A7b5f7142abbaf7159D', + buyTokenUrl: + 'https://spooky.fi/#/swap?outputCurrency=0xB01E8419d842beebf1b70A7b5f7142abbaf7159D', + createdAt: 1620500733, + }, + { + id: 'boo-snx-ftm-eol', + name: 'SNX-FTM LP', + token: 'SNX-FTM LP', + tokenDescription: 'SpookySwap', + tokenAddress: '0x06d173628bE105fE81F1C82c9979bA79eBCAfCB7', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBooSNX-FTM', + earnedTokenAddress: '0x74907ad4E79b1Ce415caB26FEf526ae017598cEe', + earnContractAddress: '0x74907ad4E79b1Ce415caB26FEf526ae017598cEe', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'boo-snx-ftm', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'SpookySwap', + assets: ['SNX', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + retireReason: 'rewards', + addLiquidityUrl: 'https://spooky.fi/#/add/FTM/0x56ee926bD8c72B2d5fa1aF4d9E4Cbb515a1E3Adc', + buyTokenUrl: + 'https://spooky.fi/#/swap?outputCurrency=0x56ee926bD8c72B2d5fa1aF4d9E4Cbb515a1E3Adc', + createdAt: 1620500694, + }, + { + id: 'boo-usdt-ftm', + name: 'fUSDT-FTM LP', + token: 'fUSDT-FTM LP', + tokenDescription: 'SpookySwap', + tokenAddress: '0x5965E53aa80a0bcF1CD6dbDd72e6A9b2AA047410', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBooUSDT-FTM', + earnedTokenAddress: '0x5d89017d2465115007AbA00da1E6446dF2C19f34', + earnContractAddress: '0x5d89017d2465115007AbA00da1E6446dF2C19f34', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'boo-usdt-ftm', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SpookySwap', + assets: ['fUSDT', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: 'https://spooky.fi/#/add/FTM/0x049d68029688eAbF473097a2fC38ef61633A3C7A', + buyTokenUrl: + 'https://spooky.fi/#/swap?outputCurrency=0x049d68029688eAbF473097a2fC38ef61633A3C7A', + createdAt: 1620500483, + }, + { + id: 'boo-btc-ftm', + name: 'WBTC-FTM LP', + token: 'WBTC-FTM LP', + tokenDescription: 'SpookySwap', + tokenAddress: '0xFdb9Ab8B9513Ad9E419Cf19530feE49d412C3Ee3', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBooBTC-FTM', + earnedTokenAddress: '0xA3e3Af161943CfB3941B631676134bb048739727', + earnContractAddress: '0xA3e3Af161943CfB3941B631676134bb048739727', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'boo-btc-ftm', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SpookySwap', + assets: ['WBTC', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: 'https://spooky.fi/#/add/FTM/0x321162Cd933E2Be498Cd2267a90534A804051b11', + buyTokenUrl: + 'https://spooky.fi/#/swap?outputCurrency=0x321162Cd933E2Be498Cd2267a90534A804051b11', + createdAt: 1620500455, + }, + { + id: 'boo-eth-ftm', + name: 'ETH-FTM LP', + token: 'ETH-FTM LP', + tokenDescription: 'SpookySwap', + tokenAddress: '0xf0702249F4D3A25cD3DED7859a165693685Ab577', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBooETH-FTM', + earnedTokenAddress: '0x2a30C5e0d577108F694d2A96179cd73611Ee069b', + earnContractAddress: '0x2a30C5e0d577108F694d2A96179cd73611Ee069b', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'boo-eth-ftm', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SpookySwap', + assets: ['ETH', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: 'https://spooky.fi/#/add/FTM/0x74b23882a30290451A17c44f4F05243b6b58C76d', + buyTokenUrl: + 'https://spooky.fi/#/swap?outputCurrency=0x74b23882a30290451A17c44f4F05243b6b58C76d', + createdAt: 1620386666, + }, + { + id: 'boo-aave-ftm-eol', + name: 'AAVE-FTM LP', + token: 'AAVE-FTM LP', + tokenDescription: 'SpookySwap', + tokenAddress: '0xeBF374bB21D83Cf010cC7363918776aDF6FF2BF6', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBooAAVE-FTM', + earnedTokenAddress: '0xDa4bb93Bac7CC00F6c6e2193d115Cf45099b31a0', + earnContractAddress: '0xDa4bb93Bac7CC00F6c6e2193d115Cf45099b31a0', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'boo-aave-ftm', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'SpookySwap', + assets: ['AAVE', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: 'https://spooky.fi/#/add/FTM/0x6a07A792ab2965C72a5B8088d3a069A7aC3a993B', + buyTokenUrl: + 'https://spooky.fi/#/swap?outputCurrency=0x6a07A792ab2965C72a5B8088d3a069A7aC3a993B', + createdAt: 1620386633, + }, + { + id: 'boo-crv-ftm', + name: 'CRV-FTM LP', + token: 'CRV-FTM LP', + tokenDescription: 'SpookySwap', + tokenAddress: '0xB471Ac6eF617e952b84C6a9fF5de65A9da96C93B', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBooCRV-FTM', + earnedTokenAddress: '0xdf68Bf80D427A5827Ff2c06A9c70D407e17DC041', + earnContractAddress: '0xdf68Bf80D427A5827Ff2c06A9c70D407e17DC041', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'boo-crv-ftm', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SpookySwap', + assets: ['CRV', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: 'https://spooky.fi/#/add/FTM/0x1E4F97b9f9F913c46F1632781732927B9019C68b', + buyTokenUrl: + 'https://spooky.fi/#/swap?outputCurrency=0x1E4F97b9f9F913c46F1632781732927B9019C68b', + createdAt: 1620386607, + }, +]; diff --git a/src/features/configure/vault/fuse_pools.js b/src/features/configure/vault/fuse_pools.js new file mode 100644 index 000000000..d3ae0cd47 --- /dev/null +++ b/src/features/configure/vault/fuse_pools.js @@ -0,0 +1,1012 @@ +export const fusePools = [ + { + id: 'fuse-bifi-maxi', + logo: 'single-assets/BIFI.png', + name: 'BIFI Maxi', + token: 'BIFI', + tokenDescription: 'Beefy', + tokenAddress: '0x2bF9b864cdc97b08B6D79ad4663e71B8aB65c45c', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooFuseBIFI', + earnedTokenAddress: '0x79149B500f0d796aA7f85e0170d16C7e79BAd3C5', + earnContractAddress: '0x79149B500f0d796aA7f85e0170d16C7e79BAd3C5', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'BIFI', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Beefy', + assets: ['BIFI'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'Maxi', + withdrawalFee: '0%', + buyTokenUrl: + 'https://app.fuse.fi/#/swap?inputCurrency=FUSE&outputCurrency=0x2bF9b864cdc97b08B6D79ad4663e71B8aB65c45c', + createdAt: 1644690600, + }, + { + id: 'voltage-wfuse-elon-eol', + name: 'ELON-FUSE LP', + token: 'ELON-FUSE LP', + tokenDescription: 'Voltage', + tokenAddress: '0xe418c323fA450e7e18c4dB304bEFC7ffF92D2Cc1', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooVoltageFUSE-ELON', + earnedTokenAddress: '0xa7224e31367069637A8C2cc0aa10B7A90D9343C1', + earnContractAddress: '0xa7224e31367069637A8C2cc0aa10B7A90D9343C1', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'voltage-wfuse-elon', + oraclePrice: 0, + withdrawalFee: '0%', + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Voltage', + assets: ['ELON', 'FUSE'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app-v1.voltage.finance/#/add/fuse/0x5DD8015cec49F4dB01fd228F688BF30337d3e0A9', + buyTokenUrl: + 'https://app.fuse.fi/#/swap?outputCurrency=0x5DD8015cec49F4dB01fd228F688BF30337d3e0A9', + createdAt: 1644603605, + }, + { + id: 'voltagev2-xvolt', + name: 'xVOLT', + token: 'xVOLT', + logo: 'single-assets/xVOLT.svg', + tokenDescription: 'Voltage', + tokenAddress: '0x97a6e78c9208c21afaDa67e7E61d7ad27688eFd1', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooVoltagexVOLT', + earnedTokenAddress: '0x49E9d6f4BbD8c51d92f163837fffdb611d705392', + earnContractAddress: '0x49E9d6f4BbD8c51d92f163837fffdb611d705392', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'xVOLT', + oraclePrice: 0, + withdrawalFee: '0%', + depositsPaused: false, + status: 'active', + platform: 'Voltage', + assets: ['xVOLT'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'SingleStake', + addLiquidityUrl: 'https://app.voltage.finance/#/stake', + buyTokenUrl: + 'https://app.voltage.finance/index.html#/swap?outputCurrency=0x34Ef2Cc892a88415e9f02b91BfA9c91fC0bE6bD4', + createdAt: 1649322250, + }, + { + id: 'sushi-fuse-usdc-usdt', + name: 'USDC-USDT LP', + token: 'USDC-USDT LP', + tokenDescription: 'SushiSwap', + tokenAddress: '0x00E485d833099679eD7D121CE46a9557ea8aDa1e', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSushiUSDC-USDT', + earnedTokenAddress: '0x4D3988B5dc8267fB5FE6dB87681aDA8AC6732113', + earnContractAddress: '0x4D3988B5dc8267fB5FE6dB87681aDA8AC6732113', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'sushi-fuse-usdc-usdt', + oraclePrice: 0, + withdrawalFee: '0%', + depositsPaused: false, + status: 'active', + platform: 'SushiSwap', + assets: ['USDC', 'USDT'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.sushi.com/add/0x620fd5fa44BE6af63715Ef4E65DDFA0387aD13F5/0xFaDbBF8Ce7D5b7041bE672561bbA99f79c532e10', + buyTokenUrl: + 'https://app.sushi.com/swap?inputCurrency=0x620fd5fa44BE6af63715Ef4E65DDFA0387aD13F5&outputCurrency=0xFaDbBF8Ce7D5b7041bE672561bbA99f79c532e10', + createdAt: 1649176980, + }, + { + id: 'voltagev2-wfuse-ageur', + name: 'agEUR-FUSE LP', + token: 'agEUR-FUSE LP', + tokenDescription: 'Voltage', + tokenAddress: '0xeeD7A28eEd4E768fCD46dE3642AB73488De77e11', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooVoltageagEUR-FUSE', + earnedTokenAddress: '0xfD410441D8727401B9047d9E1cF8b8260Ac10526', + earnContractAddress: '0xfD410441D8727401B9047d9E1cF8b8260Ac10526', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'voltagev2-wfuse-ageur', + oraclePrice: 0, + withdrawalFee: '0%', + depositsPaused: false, + status: 'active', + platform: 'Voltage', + assets: ['agEUR', 'FUSE'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.voltage.finance/index.html#/add/fuse/0xeFAeeE334F0Fd1712f9a8cc375f427D9Cdd40d73/', + buyTokenUrl: + 'https://app.voltage.finance/index.html#/swap?outputCurrency=0xeFAeeE334F0Fd1712f9a8cc375f427D9Cdd40d73', + createdAt: 1649336945, + }, + { + id: 'voltagev2-fusd-bnb', + name: 'fUSD-BNB LP', + token: 'fUSD-BNB LP', + tokenDescription: 'Voltage', + tokenAddress: '0x0dF48369504825C16D3FC6a74842aEf3c91E90E6', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooVoltagefUSD-BNB', + earnedTokenAddress: '0x511Aa76E55D9DD024C799ea05149809147eF14dD', + earnContractAddress: '0x511Aa76E55D9DD024C799ea05149809147eF14dD', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'voltagev2-fusd-bnb', + oraclePrice: 0, + withdrawalFee: '0%', + depositsPaused: false, + status: 'active', + platform: 'Voltage', + assets: ['fUSD', 'BNB'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.voltage.finance/index.html#/add/0x249BE57637D8B013Ad64785404b24aeBaE9B098B/0x6acb34b1Df86E254b544189Ec32Cf737e2482058', + buyTokenUrl: + 'https://app.voltage.finance/index.html#/swap?inputCurrency=0x249BE57637D8B013Ad64785404b24aeBaE9B098B&outputCurrency=0x6acb34b1Df86E254b544189Ec32Cf737e2482058', + createdAt: 1647451620, + }, + { + id: 'voltagev2-wbtc-weth', + name: 'WBTC-WETH LP', + token: 'WBTC-WETH LP', + tokenDescription: 'Voltage', + tokenAddress: '0x97F4F45F0172F2E20Ab284A61C8adcf5E4d04228', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooVoltageWBTC-WETH ', + earnedTokenAddress: '0x6EA8ad7228eBcA6C686096269d60bb1C72D13fa8', + earnContractAddress: '0x6EA8ad7228eBcA6C686096269d60bb1C72D13fa8', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'voltagev2-wbtc-weth', + oraclePrice: 0, + withdrawalFee: '0%', + depositsPaused: false, + status: 'active', + platform: 'Voltage', + assets: ['WBTC', 'WETH'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.voltage.finance/index.html#/add/0x33284f95ccb7B948d9D352e1439561CF83d8d00d/0xa722c13135930332Eb3d749B2F0906559D2C5b99', + buyTokenUrl: + 'https://app.voltage.finance/index.html#/swap?inputCurrency=0x33284f95ccb7B948d9D352e1439561CF83d8d00d&outputCurrency=0xa722c13135930332Eb3d749B2F0906559D2C5b99', + createdAt: 1647451320, + }, + { + id: 'voltagev2-wfuse-weth', + name: 'WETH-FUSE LP', + token: 'WETH-FUSE LP', + tokenDescription: 'Voltage', + tokenAddress: '0x7Fe1A61E4FE983D275cb5669072A9d1dee9Bd45C', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooVoltageWFUSE-ETH', + earnedTokenAddress: '0xDb852f7398f9Bdbf868ed4Dda2eb3B055e219B3c', + earnContractAddress: '0xDb852f7398f9Bdbf868ed4Dda2eb3B055e219B3c', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'voltagev2-wfuse-weth', + oraclePrice: 0, + withdrawalFee: '0%', + depositsPaused: false, + status: 'active', + platform: 'Voltage', + assets: ['WETH', 'FUSE'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_SMALL', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.voltage.finance/index.html#/add/fuse/0xa722c13135930332Eb3d749B2F0906559D2C5b99', + buyTokenUrl: + 'https://app.voltage.finance/index.html#/swap?outputCurrency=0xa722c13135930332Eb3d749B2F0906559D2C5b99', + createdAt: 1647458875, + }, + { + id: 'voltagev2-wfuse-busd', + name: 'BUSD-FUSE LP', + token: 'BUSD-FUSE LP', + tokenDescription: 'Voltage', + tokenAddress: '0x91520Fc2942Fd52949514f159aA4927b8850178d', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooVoltageWFUSE-BUSD', + earnedTokenAddress: '0x3438aE2A02305f790Cbb00B44A176a6D33B90876', + earnContractAddress: '0x3438aE2A02305f790Cbb00B44A176a6D33B90876', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'voltagev2-wfuse-busd', + oraclePrice: 0, + withdrawalFee: '0%', + depositsPaused: false, + status: 'active', + platform: 'Voltage', + assets: ['BUSD', 'FUSE'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_SMALL', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.voltage.finance/index.html#/add/fuse/0x6a5F6A8121592BeCd6747a38d67451B310F7f156', + buyTokenUrl: + 'https://app.voltage.finance/index.html#/swap?outputCurrency=0x6a5F6A8121592BeCd6747a38d67451B310F7f156', + createdAt: 1647505250, + }, + { + id: 'voltagev2-wfuse-usdc', + name: 'USDC-FUSE LP', + token: 'USDC-FUSE FLP', + tokenDescription: 'Voltage', + tokenAddress: '0xc79983b0754ac688Bf54939aDd59BDF75916fDA2', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooVoltageWFUSE-USDC', + earnedTokenAddress: '0x641Ec255eD35C7bf520745b6E40E6f3d989D0ff2', + earnContractAddress: '0x641Ec255eD35C7bf520745b6E40E6f3d989D0ff2', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'voltagev2-wfuse-usdc', + oraclePrice: 0, + withdrawalFee: '0%', + depositsPaused: false, + status: 'active', + platform: 'Voltage', + assets: ['USDC', 'FUSE'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_SMALL', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.voltage.finance/index.html#/add/fuse/0x620fd5fa44BE6af63715Ef4E65DDFA0387aD13F5', + buyTokenUrl: + 'https://app.voltage.finance/index.html#/swap?outputCurrency=0x620fd5fa44BE6af63715Ef4E65DDFA0387aD13F5', + createdAt: 1647505440, + }, + { + id: 'voltagev2-wfuse-fusd', + name: 'fUSD-FUSE LP', + token: 'fUSD-FUSE LP', + tokenDescription: 'Voltage', + tokenAddress: '0x933a10d094592EB3F2a26bCb366472eba8868A66', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooVoltageWFUSE-fUSD', + earnedTokenAddress: '0x20624135bDde2e871d2e0A7A57D83B423501f691', + earnContractAddress: '0x20624135bDde2e871d2e0A7A57D83B423501f691', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'voltagev2-wfuse-fusd', + oraclePrice: 0, + withdrawalFee: '0%', + depositsPaused: false, + status: 'active', + platform: 'Voltage', + assets: ['fUSD', 'FUSE'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.voltage.finance/index.html#/add/fuse/0x249BE57637D8B013Ad64785404b24aeBaE9B098B', + buyTokenUrl: + 'https://app.voltage.finance/index.html#/swap?outputCurrency=0x249BE57637D8B013Ad64785404b24aeBaE9B098B', + createdAt: 1647505595, + }, + { + id: 'voltagev2-wfuse-volt', + name: 'VOLT-FUSE LP', + token: 'VOLT-FUSE LP', + tokenDescription: 'Voltage', + tokenAddress: '0xA670b12F8485aa379e99cF097017785b6acA5968', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooVoltageWFUSE-VOLT', + earnedTokenAddress: '0xa7F1E6C6D0E1470E13329bDa65b91E6235b4cC51', + earnContractAddress: '0xa7F1E6C6D0E1470E13329bDa65b91E6235b4cC51', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'voltagev2-wfuse-volt', + oraclePrice: 0, + withdrawalFee: '0%', + depositsPaused: false, + status: 'active', + platform: 'Voltage', + assets: ['VOLT', 'FUSE'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.voltage.finance/index.html#/add/fuse/0x34Ef2Cc892a88415e9f02b91BfA9c91fC0bE6bD4', + buyTokenUrl: + 'https://app.voltage.finance/index.html#/swap?outputCurrency=0x34Ef2Cc892a88415e9f02b91BfA9c91fC0bE6bD4', + createdAt: 1647365195, + }, + { + id: 'voltagev2-fusd-volt', + name: 'fUSD-VOLT LP', + token: 'fUSD-VOLT LP', + tokenDescription: 'Voltage', + tokenAddress: '0x4E6b54f8dee787B16D8CdBA4f759342b19239C2c', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooVoltagefUSD-VOLT', + earnedTokenAddress: '0x1592550E083286C35282E53732FDE11800A187E1', + earnContractAddress: '0x1592550E083286C35282E53732FDE11800A187E1', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'voltagev2-fusd-volt', + oraclePrice: 0, + withdrawalFee: '0%', + depositsPaused: false, + status: 'active', + platform: 'Voltage', + assets: ['fUSD', 'VOLT'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.voltage.finance/index.html#/add/0x34Ef2Cc892a88415e9f02b91BfA9c91fC0bE6bD4/0x249BE57637D8B013Ad64785404b24aeBaE9B098B', + buyTokenUrl: + 'https://app.voltage.finance/index.html#/swap?inputCurrency=0x34Ef2Cc892a88415e9f02b91BfA9c91fC0bE6bD4&outputCurrency=0x249BE57637D8B013Ad64785404b24aeBaE9B098B', + createdAt: 1647505730, + }, + { + id: 'voltagev2-wfuse-atust-eol', + name: 'atUST-FUSE LP', + token: 'atUST-FUSE LP', + tokenDescription: 'Voltage', + tokenAddress: '0xd729609735222F203fCe2e0Ed940ac749eaD839a', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooVoltageWFUSE-atUST', + earnedTokenAddress: '0x775965D328FD46b51595E7d711c6B563CD4eFCF4', + earnContractAddress: '0x775965D328FD46b51595E7d711c6B563CD4eFCF4', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'voltagev2-wfuse-atust', + oraclePrice: 0, + withdrawalFee: '0%', + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Voltage', + assets: ['UST', 'FUSE'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_SMALL', + 'AUDIT', + 'CONTRACTS_VERIFIED', + 'ALGO_STABLE', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.voltage.finance/index.html#/add/fuse/0x0D58a44be3dCA0aB449965dcc2c46932547Fea2f', + buyTokenUrl: + 'https://app.voltage.finance/index.html#/swap?outputCurrency=0x0D58a44be3dCA0aB449965dcc2c46932547Fea2f', + createdAt: 1647365195, + }, + { + id: 'voltagev2-volt-bnb', + name: 'VOLT-BNB LP', + token: 'VOLT-BNB LP', + tokenDescription: 'Voltage', + tokenAddress: '0x4Eb876bd1e8e4cd4594557890D52EE327BF1B7b2', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooVoltageVOLT-BNB', + earnedTokenAddress: '0xbF56396EBc9F2Ad01e80a00642A4b80D0dcea27A', + earnContractAddress: '0xbF56396EBc9F2Ad01e80a00642A4b80D0dcea27A', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'voltagev2-volt-bnb', + oraclePrice: 0, + withdrawalFee: '0%', + depositsPaused: false, + status: 'active', + platform: 'Voltage', + assets: ['VOLT', 'BNB'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.voltage.finance/index.html#/add/0x34Ef2Cc892a88415e9f02b91BfA9c91fC0bE6bD4/0x6acb34b1Df86E254b544189Ec32Cf737e2482058', + buyTokenUrl: + 'https://app.voltage.finance/index.html#/swap?inputCurrency=0x34Ef2Cc892a88415e9f02b91BfA9c91fC0bE6bD4&outputCurrency=0x6acb34b1Df86E254b544189Ec32Cf737e2482058', + createdAt: 1647180880, + }, + { + id: 'voltagev2-wfuse-gdollar', + name: 'G$-FUSE LP', + token: 'G$-FUSE LP', + tokenDescription: 'Voltage', + tokenAddress: '0xa02ed9Fe9e3351FE2cd1F588B23973C1542dCbCC', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooVoltageWFUSE-G$', + earnedTokenAddress: '0x70c6AF9Dff8C19B3db576E5E199B22A883874f05', + earnContractAddress: '0x70c6AF9Dff8C19B3db576E5E199B22A883874f05', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'voltagev2-wfuse-gdollar', + oraclePrice: 0, + withdrawalFee: '0%', + depositsPaused: false, + status: 'active', + platform: 'Voltage', + assets: ['G', 'FUSE'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.voltage.finance/index.html#/add/fuse/0x495d133B938596C9984d462F007B676bDc57eCEC', + buyTokenUrl: + 'https://app.voltage.finance/index.html#/swap?outputCurrency=0x495d133B938596C9984d462F007B676bDc57eCEC', + createdAt: 1647365540, + }, + { + id: 'voltage-wfuse-usdc-eol', + name: 'USDC-FUSE LP', + token: 'USDC-FUSE LP', + tokenDescription: 'Voltage', + tokenAddress: '0x9f17b1895633E855b8b1C1D0Ade9B3B72EB0590C', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooFuseFiUSDC-FUSE', + earnedTokenAddress: '0x98d3913474fccEDeB63077237914be00202fB007', + earnContractAddress: '0x98d3913474fccEDeB63077237914be00202fB007', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'voltage-wfuse-usdc', + oraclePrice: 0, + withdrawalFee: '0%', + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Voltage', + assets: ['USDC', 'FUSE'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: 'https://app.fuse.fi/#/add/FUSE/0x620fd5fa44be6af63715ef4e65ddfa0387ad13f5', + buyTokenUrl: + 'https://app.fuse.fi/#/swap?inputCurrency=FUSE&outputCurrency=0x620fd5fa44be6af63715ef4e65ddfa0387ad13f5', + createdAt: 1641409265, + }, + { + id: 'voltage-wfuse-ust-eol', + name: 'UST-FUSE LP', + token: 'UST-FUSE LP', + tokenDescription: 'Voltage', + tokenAddress: '0x53B1B8Fb8bE9aA94076e6B29fb9D08bd9ced2D30', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooVoltageFUSE-UST', + earnedTokenAddress: '0x99b36431E236267D4e8998383fFF6747950311c0', + earnContractAddress: '0x99b36431E236267D4e8998383fFF6747950311c0', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'voltage-wfuse-ust', + oraclePrice: 0, + withdrawalFee: '0%', + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Voltage', + assets: ['UST', 'FUSE'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_SMALL', + 'AUDIT', + 'CONTRACTS_VERIFIED', + 'ALGO_STABLE', + ], + stratType: 'StratLP', + addLiquidityUrl: 'https://app.fuse.fi/#/add/FUSE/0x0D58a44be3dCA0aB449965dcc2c46932547Fea2f', + buyTokenUrl: + 'https://app.fuse.fi/#/swap?inputCurrency=FUSE&outputCurrency=0x0D58a44be3dCA0aB449965dcc2c46932547Fea2f', + createdAt: 1643810650, + }, + // { + // id: 'sushi-sushi-weth', + // name: 'SUSHI-WETH LP', + // token: 'SUSHI-WETH LP', + // tokenDescription: 'SushiSwap', + // tokenAddress: '0xF9C63E6e21d65ba3Cb6B95790F559E8Da1B38764', + // tokenDecimals: 18, + // tokenDescriptionUrl: '#', + // earnedToken: 'mooSushiSUSHI-WETH', + // earnedTokenAddress: '0x202D9EA0AeAC4B30f9f4aABd084Fb8C1DE316840', + // earnContractAddress: '0x202D9EA0AeAC4B30f9f4aABd084Fb8C1DE316840', + // pricePerFullShare: 1, + // tvl: 0, + // oracle: 'lps', + // oracleId: 'sushi-sushi-weth', + // oraclePrice: 0, + // withdrawalFee: '0%', + // depositsPaused: true, + // status: 'active', + // platform: 'SushiSwap', + // assets: ['SUSHI', 'WETH'], + // risks: [ + // 'COMPLEXITY_LOW', + // 'BATTLE_TESTED', + // 'IL_LOW', + // 'MCAP_MEDIUM', + // 'AUDIT', + // 'CONTRACTS_VERIFIED', + // ], + // stratType: 'StratLP', + // addLiquidityUrl: + // 'https://app.sushi.com/add/0x90708b20ccc1eb95a4fa7c8b18fd2c22a0ff9e78/0xa722c13135930332Eb3d749B2F0906559D2C5b99', + // buyTokenUrl: + // 'https://app.sushi.com/swap?inputCurrency=0x90708b20ccc1eb95a4fa7c8b18fd2c22a0ff9e78&outputCurrency=0xa722c13135930332Eb3d749B2F0906559D2C5b99', + // }, + { + id: 'sushi-wfuse-usdc', + name: 'FUSE-USDC LP', + token: 'FUSE-USDC LP', + tokenDescription: 'SushiSwap', + tokenAddress: '0xba9CA720e314F42E17E80991c1d0AFfE47387108', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSushiFUSE-USDC', + earnedTokenAddress: '0x87FFA2E1D232d5B98fd4366C311b568c022aE650', + earnContractAddress: '0x87FFA2E1D232d5B98fd4366C311b568c022aE650', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'sushi-wfuse-usdc', + oraclePrice: 0, + withdrawalFee: '0%', + depositsPaused: false, + status: 'active', + platform: 'SushiSwap', + assets: ['FUSE', 'USDC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.sushi.com/add/0x0BE9e53fd7EDaC9F859882AfdDa116645287C629/0x620fd5fa44BE6af63715Ef4E65DDFA0387aD13F5', + buyTokenUrl: + 'https://app.sushi.com/swap?inputCurrency=0x0BE9e53fd7EDaC9F859882AfdDa116645287C629&outputCurrency=0x620fd5fa44BE6af63715Ef4E65DDFA0387aD13F5', + createdAt: 1643485320, + }, + { + id: 'sushi-wfuse-weth', + name: 'WETH-FUSE LP', + token: 'WETH-FUSE SLP', + tokenDescription: 'SushiSwap', + tokenAddress: '0x90c3bA00d2F7F15Cd9FDE087538be3A2865E7E2F', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSushiFUSE-WETH', + earnedTokenAddress: '0xd4E241053314254e62050aDC84B271F9d2164a16', + earnContractAddress: '0xd4E241053314254e62050aDC84B271F9d2164a16', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'sushi-wfuse-weth', + oraclePrice: 0, + withdrawalFee: '0%', + depositsPaused: false, + status: 'active', + platform: 'SushiSwap', + assets: ['WETH', 'FUSE'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.sushi.com/add/0x0BE9e53fd7EDaC9F859882AfdDa116645287C629/0xa722c13135930332Eb3d749B2F0906559D2C5b99', + buyTokenUrl: + 'https://app.sushi.com/swap?inputCurrency=0x0BE9e53fd7EDaC9F859882AfdDa116645287C629&outputCurrency=0xa722c13135930332Eb3d749B2F0906559D2C5b99', + createdAt: 1643414500, + }, + { + id: 'fuse-fuse', + logo: 'single-assets/FUSE.svg', + name: 'FUSE', + token: 'FUSE', + tokenDescription: 'Beefy Delegator', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooFuse', + earnedTokenAddress: '0x2C43DBef81ABa6b95799FD2aEc738Cd721ba77f3', + earnContractAddress: '0x2C43DBef81ABa6b95799FD2aEc738Cd721ba77f3', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'WFUSE', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Fuse', + assets: ['WFUSE'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'SingleStake', + withdrawalFee: '0%', + buyTokenUrl: + 'https://app.fuse.fi/#/swap?inputCurrency=FUSE&outputCurrency=0xa722c13135930332Eb3d749B2F0906559D2C5b99', + createdAt: 1641908745, + }, + { + id: 'voltage-wfuse-weth-eol', + name: 'WETH-FUSE LP', + token: 'WETH-FUSE FLP', + tokenDescription: 'Voltage', + tokenAddress: '0x75e24462108E49B71278c93b49B35A5837c0547C', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooFuseFiWETH-FUSE', + earnedTokenAddress: '0x7c7B7FbccA5699175003ecbe1B41E79F40385469', + earnContractAddress: '0x7c7B7FbccA5699175003ecbe1B41E79F40385469', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'voltage-wfuse-weth', + oraclePrice: 0, + withdrawalFee: '0%', + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Voltage', + assets: ['WETH', 'FUSE'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: 'https://app.fuse.fi/#/add/FUSE/0xa722c13135930332Eb3d749B2F0906559D2C5b99', + buyTokenUrl: + 'https://app.fuse.fi/#/swap?inputCurrency=FUSE&outputCurrency=0xa722c13135930332Eb3d749B2F0906559D2C5b99', + createdAt: 1641410065, + }, + { + id: 'voltage-wfuse-g$-eol', + name: 'G$-FUSE LP', + token: 'G$-FUSE FLP', + tokenDescription: 'Voltage', + tokenAddress: '0x8d441C2Ff54C015A1BE22ad88e5D42EFBEC6C7EF', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooFuseFiG$-FUSE', + earnedTokenAddress: '0xa5aaE3a55cA356C62b5425AA4bFC212542B17777', + earnContractAddress: '0xa5aaE3a55cA356C62b5425AA4bFC212542B17777', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'voltage-wfuse-g$', + oraclePrice: 0, + withdrawalFee: '0%', + depositsPaused: true, + status: 'eol', + platform: 'Voltage', + retireReason: 'rewards', + assets: ['G', 'FUSE'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: 'https://app.fuse.fi/#/add/FUSE/0x495d133B938596C9984d462F007B676bDc57eCEC', + buyTokenUrl: + 'https://app.fuse.fi/#/swap?inputCurrency=FUSE&outputCurrency=0x495d133B938596C9984d462F007B676bDc57eCEC', + createdAt: 1641411120, + }, + { + id: 'voltage-fusd-bnb-eol', + name: 'fUSD-BNB LP', + token: 'fUSD-BNB FLP', + tokenDescription: 'Voltage', + tokenAddress: '0x123e18262642a090b209A9CdD5bC5DFA03d734D1', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooFuseFifUSD-BNB', + earnedTokenAddress: '0x3dE0279f183f9C9eFCD19C60c1f83288B50dB659', + earnContractAddress: '0x3dE0279f183f9C9eFCD19C60c1f83288B50dB659', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'voltage-fusd-bnb', + oraclePrice: 0, + withdrawalFee: '0%', + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Voltage', + assets: ['fUSD', 'BNB'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.fuse.fi/#/add/0x6acb34b1Df86E254b544189Ec32Cf737e2482058/0x249BE57637D8B013Ad64785404b24aeBaE9B098B', + buyTokenUrl: + 'https://app.fuse.fi/#/swap?inputCurrency=0x6acb34b1Df86E254b544189Ec32Cf737e2482058&outputCurrency=0x249BE57637D8B013Ad64785404b24aeBaE9B098B', + createdAt: 1641410790, + }, + { + id: 'voltage-wfuse-busd-eol', + name: 'BUSD-FUSE LP', + token: 'BUSD-FUSE FLP', + tokenDescription: 'Voltage', + tokenAddress: '0x2e7DeDEfC1b40eb2C935A5d07ACDb8F8a9B2A91D', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooFuseFiBUSD-FUSE', + earnedTokenAddress: '0xF9eBb381dC153D0966B2BaEe776de2F400405755', + earnContractAddress: '0xF9eBb381dC153D0966B2BaEe776de2F400405755', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'voltage-wfuse-busd', + oraclePrice: 0, + withdrawalFee: '0%', + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Voltage', + assets: ['BUSD', 'FUSE'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: 'https://app.fuse.fi/#/add/FUSE/0x6a5F6A8121592BeCd6747a38d67451B310F7f156', + buyTokenUrl: + 'https://app.fuse.fi/#/swap?inputCurrency=FUSE&outputCurrency=0x6a5F6A8121592BeCd6747a38d67451B310F7f156', + createdAt: 1641410975, + }, + { + id: 'voltage-wfuse-fusd-eol', + name: 'fUSD-FUSE LP', + token: 'fUSD-FUSE FLP', + tokenDescription: 'Voltage', + tokenAddress: '0xcDd8964BA8963929867CAfFCf5942De4F085bFB7', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooFuseFifUSD-FUSE', + earnedTokenAddress: '0x9712b6aff7d2dB96097565EB8b2183b75e839130', + earnContractAddress: '0x9712b6aff7d2dB96097565EB8b2183b75e839130', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'voltage-wfuse-fusd', + oraclePrice: 0, + withdrawalFee: '0%', + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Voltage', + assets: ['fUSD', 'FUSE'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: 'https://app.fuse.fi/#/add/FUSE/0x249BE57637D8B013Ad64785404b24aeBaE9B098B', + buyTokenUrl: + 'https://app.fuse.fi/#/swap?inputCurrency=FUSE&outputCurrency=0x249BE57637D8B013Ad64785404b24aeBaE9B098B', + createdAt: 1641410460, + }, + { + id: 'voltage-wbtc-weth-eol', + name: 'WETH-WBTC LP', + token: 'WETH-WBTC LP', + tokenDescription: 'Voltage', + tokenAddress: '0x79FB917292f841Ab64941C04aCDf5F9059aa24E7', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooFuseFiWETH-WBTC', + earnedTokenAddress: '0x8d81807F19b97FA86EecaB32F1376645FBB4d2F9', + earnContractAddress: '0x8d81807F19b97FA86EecaB32F1376645FBB4d2F9', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'voltage-wbtc-weth', + oraclePrice: 0, + withdrawalFee: '0.01%', + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Voltage', + assets: ['WETH', 'WBTC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.fuse.fi/#/add/0x33284f95ccb7B948d9D352e1439561CF83d8d00d/0xa722c13135930332Eb3d749B2F0906559D2C5b99', + buyTokenUrl: + 'https://app.fuse.fi/#/swap?inputCurrency=0x33284f95ccb7B948d9D352e1439561CF83d8d00d&outputCurrency=0xa722c13135930332Eb3d749B2F0906559D2C5b99', + createdAt: 1641410240, + }, +]; diff --git a/src/features/configure/vault/harmony_pools.js b/src/features/configure/vault/harmony_pools.js new file mode 100644 index 000000000..08303f1ae --- /dev/null +++ b/src/features/configure/vault/harmony_pools.js @@ -0,0 +1,776 @@ +export const harmonyPools = [ + { + id: 'one-bifi-maxi', + logo: 'single-assets/BIFI.png', + name: 'BIFI Maxi', + token: 'BIFI', + tokenDescription: 'Beefy', + tokenAddress: '0x6aB6d61428fde76768D7b45D8BFeec19c6eF91A8', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooOneBIFI', + earnedTokenAddress: '0x6207536011918F1A0D8a53Bc426f4Fd54df2E5a8', + earnContractAddress: '0x6207536011918F1A0D8a53Bc426f4Fd54df2E5a8', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'BIFI', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Beefy', + assets: ['BIFI'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + withdrawalFee: '0%', + buyTokenUrl: + 'https://app.sushi.com/swap?inputCurrency=ETH&outputCurrency=0x6ab6d61428fde76768d7b45d8bfeec19c6ef91a8', + createdAt: 1636644198, + }, + { + id: 'sushi-one-bifi-wone-eol', + name: 'BIFI-ONE LP', + token: 'BIFI-ONE LP', + tokenDescription: 'Sushi', + tokenAddress: '0x27f3b2Df4a81382202E87EE40429e0212ecc7d3F', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSushiBIFI-ONE', + earnedTokenAddress: '0x06A1f520555222758eaE4dA0573351FdaD1e7843', + earnContractAddress: '0x06A1f520555222758eaE4dA0573351FdaD1e7843', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'sushi-one-bifi-wone', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'SushiSwap', + assets: ['BIFI', 'ONE'], + callFee: 0.25, + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: 'https://app.sushi.com/add/ETH/0x6aB6d61428fde76768D7b45D8BFeec19c6eF91A8', + buyTokenUrl: + 'https://app.sushi.com/swap?inputCurrency=&outputCurrency=0x6aB6d61428fde76768D7b45D8BFeec19c6eF91A8', + createdAt: 1641218645, + }, + { + id: 'sushi-one-wone-1btc', + name: '1BTC-ONE LP', + token: '1BTC-ONE LP', + tokenDescription: 'Sushi', + tokenAddress: '0x4F3d9ac088CDF31b1831db3AaF5803aB35c200c4', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSushi1BTC-ONE', + earnedTokenAddress: '0x942aa6324E5D0C102d3Ad6607495ac5e798a991a', + earnContractAddress: '0x942aa6324E5D0C102d3Ad6607495ac5e798a991a', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'sushi-one-wone-1btc', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SushiSwap', + assets: ['BTC', 'ONE'], + callFee: 0.25, + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0.01%', + addLiquidityUrl: 'https://app.sushi.com/add/ETH/0xdc54046c0451f9269FEe1840aeC808D36015697d', + buyTokenUrl: + 'https://app.sushi.com/swap?inputCurrency=&outputCurrency=0xdc54046c0451f9269FEe1840aeC808D36015697d', + createdAt: 1641218490, + }, + { + id: 'curve-harmony-tricrypto', + logo: 'uncategorized/ATRICRYPTO.png', + name: 'TriCrypto', + token: 'crvUSDBTCETH', + tokenDescription: 'Curve', + tokenAddress: '0x99E8eD28B97c7F1878776eD94fFC77CABFB9B726', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCurveTriCrypto', + earnedTokenAddress: '0xAFEe37A5FaAf9cDb9E0528bb60E457b570b5520E', + earnContractAddress: '0xAFEe37A5FaAf9cDb9E0528bb60E457b570b5520E', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'curve-harmony-tricrypto', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Curve', + assets: ['DAI', 'USDC', 'USDT', 'WBTC', 'ETH'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + 'OVER_COLLAT_ALGO_STABLECOIN', + ], + stratType: 'StratMultiLP', + withdrawalFee: '0.01%', + addLiquidityUrl: 'https://harmony.curve.fi/tricrypto/deposit', + createdAt: 1638254407, + }, + { + id: 'curve-harmony-3pool', + logo: 'polygon/CURVE-3Pool.png', + name: 'DAI/USDC/USDT', + token: '3CRV', + tokenDescription: 'Curve', + tokenAddress: '0xC5cfaDA84E902aD92DD40194f0883ad49639b023', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCurve3CRV', + earnedTokenAddress: '0x44e67bCDf95aE53b60ab20929626274640998FDB', + earnContractAddress: '0x44e67bCDf95aE53b60ab20929626274640998FDB', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'curve-harmony-3pool', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Curve', + assets: ['DAI', 'USDC', 'USDT'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + 'OVER_COLLAT_ALGO_STABLECOIN', + ], + stratType: 'StratMultiLP', + withdrawalFee: '0.01%', + addLiquidityUrl: 'https://harmony.curve.fi/3pool/deposit', + createdAt: 1638252423, + }, + { + id: 'sushi-one-1ygg-1eth-eol', + name: '1YGG-1ETH LP', + token: '1YGG-1ETH LP', + tokenDescription: 'Sushi', + tokenAddress: '0x40112850EFd90e9e17b56de35d86BdFf9f4d07Fd', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSushiYGG-ETH', + earnedTokenAddress: '0x69F683aa79ab78B95A9823Ace8b9771Ad18fFC71', + earnContractAddress: '0x69F683aa79ab78B95A9823Ace8b9771Ad18fFC71', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'sushi-one-1ygg-1eth', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'SushiSwap', + assets: ['YGG', 'ETH'], + callFee: 0.25, + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://app.sushi.com/add/0x6983D1E6DEf3690C4d616b13597A09e6193EA013/0x63cf309500d8be0B9fDB8F1fb66C821236c0438c', + buyTokenUrl: + 'https://app.sushi.com/swap?inputCurrency=0x6983D1E6DEf3690C4d616b13597A09e6193EA013&outputCurrency=0x63cf309500d8be0B9fDB8F1fb66C821236c0438c', + createdAt: 1631279238, + }, + { + id: 'sushi-one-1eth-1aave', + name: '1AAVE-1ETH LP', + token: '1AAVE-1ETH LP', + tokenDescription: 'Sushi', + tokenAddress: '0x913De0F91169680c32C8F27212361272Ef4FDfd9', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSushiAAVE-ETH', + earnedTokenAddress: '0xeD55397CF8e01c21Fe51F2ca8D43137f0950cb42', + earnContractAddress: '0xeD55397CF8e01c21Fe51F2ca8D43137f0950cb42', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'sushi-one-1eth-1aave', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SushiSwap', + assets: ['AAVE', 'ETH'], + callFee: 0.25, + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://app.sushi.com/add/0x6983D1E6DEf3690C4d616b13597A09e6193EA013/0xcF323Aad9E522B93F11c352CaA519Ad0E14eB40F', + buyTokenUrl: + 'https://app.sushi.com/swap?inputCurrency=0x6983D1E6DEf3690C4d616b13597A09e6193EA013&outputCurrency=0x63cf309500d8be0B9fDB8F1fb66C821236c0438c', + createdAt: 1631279357, + }, + { + id: 'sushi-one-1axs-1eth-eol', + name: '1AXS-1ETH LP', + token: '1AXS-1ETH LP', + tokenDescription: 'Sushi', + tokenAddress: '0xbB680Ba75F7e3e404923D04D484af5ce96b4A4bF', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSushiAXS-ETH', + earnedTokenAddress: '0xFf47dfa664dA42bBF3adA2179A81Cc82b0d549d7', + earnContractAddress: '0xFf47dfa664dA42bBF3adA2179A81Cc82b0d549d7', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'sushi-one-1axs-1eth', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'SushiSwap', + assets: ['AXS', 'ETH'], + callFee: 0.25, + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://app.sushi.com/add/0x6983D1E6DEf3690C4d616b13597A09e6193EA013/0x14A7B318fED66FfDcc80C1517C172c13852865De', + buyTokenUrl: + 'https://app.sushi.com/swap?inputCurrency=0x6983D1E6DEf3690C4d616b13597A09e6193EA013&outputCurrency=0x14A7B318fED66FfDcc80C1517C172c13852865De', + createdAt: 1631279474, + }, + { + id: 'sushi-one-1eth-1dai-eol', + name: '1DAI-1ETH LP', + token: '1DAI-1ETH LP', + tokenDescription: 'Sushi', + tokenAddress: '0xc5B8129B411EF5f5BE22e74De6fE86C3b69e641d', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSushiDAI-ETH', + earnedTokenAddress: '0x9f2B43337Fa1AD1b591e82981Efaa784dbCF26Cb', + earnContractAddress: '0x9f2B43337Fa1AD1b591e82981Efaa784dbCF26Cb', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'sushi-one-1eth-1dai', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'SushiSwap', + assets: ['DAI', 'ETH'], + callFee: 0.25, + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + 'OVER_COLLAT_ALGO_STABLECOIN', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://app.sushi.com/add/0x6983D1E6DEf3690C4d616b13597A09e6193EA013/0xEf977d2f931C1978Db5F6747666fa1eACB0d0339', + buyTokenUrl: + 'https://app.sushi.com/swap?inputCurrency=0x6983D1E6DEf3690C4d616b13597A09e6193EA013&outputCurrency=0xEf977d2f931C1978Db5F6747666fa1eACB0d0339', + createdAt: 1631282246, + retiredReason: 'tvl', + }, + { + id: 'sushi-one-1usdt-1eth-eol', + name: '1USDT-1ETH LP', + token: '1USDT-1ETH LP', + tokenDescription: 'Sushi', + tokenAddress: '0x02f4d0021E3cb8736108E11C8DF02FbBd6EEEDBf', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSushiUSDT-ETH', + earnedTokenAddress: '0xB5961dF7CcA854353e4BCCC3E4c241d07DBcE9d2', + earnContractAddress: '0xB5961dF7CcA854353e4BCCC3E4c241d07DBcE9d2', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'sushi-one-1usdt-1eth', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'SushiSwap', + assets: ['USDT', 'ETH'], + callFee: 0.25, + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://app.sushi.com/add/0x6983D1E6DEf3690C4d616b13597A09e6193EA013/0x3C2B8Be99c50593081EAA2A724F0B8285F5aba8f', + buyTokenUrl: + 'https://app.sushi.com/swap?inputCurrency=0x6983D1E6DEf3690C4d616b13597A09e6193EA013&outputCurrency=0x3C2B8Be99c50593081EAA2A724F0B8285F5aba8f', + createdAt: 1631282425, + retiredReason: 'tvl', + }, + { + id: 'sushi-one-1eth-1frax', + name: '1FRAX-1ETH LP', + token: '1FRAX-1ETH LP', + tokenDescription: 'Sushi', + tokenAddress: '0xa46BBA980512E328E344Ce12BB969563f3429F05', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSushiFRAX-ETH', + earnedTokenAddress: '0xF0d26842c3935A618e6980C53fDa3A2D10A02eb7', + earnContractAddress: '0xF0d26842c3935A618e6980C53fDa3A2D10A02eb7', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'sushi-one-1eth-1frax', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SushiSwap', + assets: ['FRAX', 'ETH'], + callFee: 0.25, + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://app.sushi.com/add/0x6983D1E6DEf3690C4d616b13597A09e6193EA013/0xeB6C08ccB4421b6088e581ce04fcFBed15893aC3', + buyTokenUrl: + 'https://app.sushi.com/swap?inputCurrency=0x6983D1E6DEf3690C4d616b13597A09e6193EA013&outputCurrency=0xeB6C08ccB4421b6088e581ce04fcFBed15893aC3', + createdAt: 1631282533, + }, + { + id: 'sushi-one-ust-1eth-eol', + name: 'UST-1ETH LP', + token: 'UST-1ETH LP', + tokenDescription: 'Sushi', + tokenAddress: '0x9293DFDd719eE2163f2e158E66Ef75722Ed712B4', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSushiUST-ETH', + earnedTokenAddress: '0x026cd63Bf3Fc511449f0229BD4a6323dD2F27b5a', + earnContractAddress: '0x026cd63Bf3Fc511449f0229BD4a6323dD2F27b5a', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'sushi-one-ust-1eth', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'SushiSwap', + assets: ['UST', 'ETH'], + callFee: 0.25, + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + 'ALGO_STABLE', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://app.sushi.com/add/0x6983D1E6DEf3690C4d616b13597A09e6193EA013/0x224e64ec1BDce3870a6a6c777eDd450454068FEC', + buyTokenUrl: + 'https://app.sushi.com/swap?inputCurrency=0x6983D1E6DEf3690C4d616b13597A09e6193EA013&outputCurrency=0x224e64ec1BDce3870a6a6c777eDd450454068FEC', + createdAt: 1631282733, + }, + { + id: 'sushi-one-1wbtc-1eth', + name: '1WBTC-1ETH LP', + token: '1WBTC-1ETH LP', + tokenDescription: 'Sushi', + tokenAddress: '0x39bE7c95276954a6f7070F9BAa38db2123691Ed0', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSushiWBTC-ETH', + earnedTokenAddress: '0x8B1Ca7f3F0838dCd23DA8CFe223eA313739193cb', + earnContractAddress: '0x8B1Ca7f3F0838dCd23DA8CFe223eA313739193cb', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'sushi-one-1wbtc-1eth', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SushiSwap', + assets: ['WBTC', 'ETH'], + callFee: 0.25, + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '.01%', + addLiquidityUrl: + 'https://app.sushi.com/add/0x6983D1E6DEf3690C4d616b13597A09e6193EA013/0x3095c7557bCb296ccc6e363DE01b760bA031F2d9', + buyTokenUrl: + 'https://app.sushi.com/swap?inputCurrency=0x6983D1E6DEf3690C4d616b13597A09e6193EA013&outputCurrency=0x3095c7557bCb296ccc6e363DE01b760bA031F2d9', + createdAt: 1631283021, + }, + { + id: 'sushi-one-1usdt-1usdc', + name: '1USDT-1USDC LP', + token: '1USDT-1USDC LP', + tokenDescription: 'Sushi', + tokenAddress: '0x0c51171b913Db10ade3fd625548E69C9C63aFb96', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSushiUSDT-USDC', + earnedTokenAddress: '0x3ECD8Ec6BD954261397E77FD5792482Adaf2a387', + earnContractAddress: '0x3ECD8Ec6BD954261397E77FD5792482Adaf2a387', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'sushi-one-1usdt-1usdc', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SushiSwap', + assets: ['USDT', 'USDC'], + callFee: 0.25, + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://app.sushi.com/add/0x985458E523dB3d53125813eD68c274899e9DfAb4/0x3C2B8Be99c50593081EAA2A724F0B8285F5aba8f', + buyTokenUrl: + 'https://app.sushi.com/swap?inputCurrency=0x985458E523dB3d53125813eD68c274899e9DfAb4&outputCurrency=0x3C2B8Be99c50593081EAA2A724F0B8285F5aba8f', + createdAt: 1631283436, + }, + { + id: 'sushi-one-1usdt-wone', + name: '1USDT-ONE LP', + token: '1USDT-ONE LP', + tokenDescription: 'Sushi', + tokenAddress: '0x2c7862b408bb3DBFF277110FFdE1B4EAa45C692a', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSushiUSDT-ONE', + earnedTokenAddress: '0x800A8fe2BE01cef25B5950cca56B954312049924', + earnContractAddress: '0x800A8fe2BE01cef25B5950cca56B954312049924', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'sushi-one-1usdt-wone', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SushiSwap', + assets: ['USDT', 'ONE'], + callFee: 0.25, + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: 'https://app.sushi.com/add/ETH/0x3C2B8Be99c50593081EAA2A724F0B8285F5aba8f', + buyTokenUrl: + 'https://app.sushi.com/swap?inputCurrency=&outputCurrency=0x3C2B8Be99c50593081EAA2A724F0B8285F5aba8f', + createdAt: 1631283673, + }, + { + id: 'sushi-one-sushi-one-eol', + name: 'SUSHI-ONE LP', + token: 'SUSHI-ONE LP', + tokenDescription: 'Sushi', + tokenAddress: '0x468dc50884962D6F81733aC0c23c04611aC219F9', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSushiSUSHI-ONE', + earnedTokenAddress: '0xed2E740a34dDF272F54547d56147c5CE4ba75BD0', + earnContractAddress: '0xed2E740a34dDF272F54547d56147c5CE4ba75BD0', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'sushi-one-sushi-one', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'SushiSwap', + assets: ['SUSHI', 'ONE'], + callFee: 0.25, + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: 'https://app.sushi.com/add/ETH/0xBEC775Cb42AbFa4288dE81F387a9b1A3c4Bc552A', + buyTokenUrl: + 'https://app.sushi.com/swap?inputCurrency=&outputCurrency=0xBEC775Cb42AbFa4288dE81F387a9b1A3c4Bc552A', + createdAt: 1631197145, + retiredReason: 'tvl', + }, + { + id: 'sushi-one-busd-one', + name: 'BUSD-ONE LP', + token: 'BUSD-ONE LP', + tokenDescription: 'Sushi', + tokenAddress: '0x8c36Ede15c5E4B0E1f9764351a7A7A0037c5e103', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSushiBUSD-ONE', + earnedTokenAddress: '0x7c7B7FbccA5699175003ecbe1B41E79F40385469', + earnContractAddress: '0x7c7B7FbccA5699175003ecbe1B41E79F40385469', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'sushi-one-busd-one', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SushiSwap', + assets: ['BUSD', 'ONE'], + withdrawalFee: '0%', + callFee: 0.25, + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: 'https://app.sushi.com/add/ETH/0xe176ebe47d621b984a73036b9da5d834411ef734', + buyTokenUrl: + 'https://app.sushi.com/swap?inputCurrency=&outputCurrency=0xe176ebe47d621b984a73036b9da5d834411ef734', + createdAt: 1631201665, + }, + { + id: 'sushi-one-bscbusd-busd-eol', + name: 'BUSD-bscBUSD LP', + token: 'BUSD-bscBUSD LP', + tokenDescription: 'Sushi', + tokenAddress: '0xDA64F9053A971531a75071A729A6432FB65ed60D', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSushiBUSD-bscBUSD', + earnedTokenAddress: '0xc34b9c9DBB39Be0Ef850170127A7b4283484f804', + earnContractAddress: '0xc34b9c9DBB39Be0Ef850170127A7b4283484f804', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'sushi-one-bscbusd-busd', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'SushiSwap', + assets: ['BUSD', 'bscBUSD'], + callFee: 0.25, + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://app.sushi.com/add/0xe176ebe47d621b984a73036b9da5d834411ef734/0x0ab43550a6915f9f67d0c454c2e90385e6497eaa', + buyTokenUrl: + 'https://app.sushi.com/swap?inputCurrency=0xe176ebe47d621b984a73036b9da5d834411ef734&outputCurrency=0x0ab43550a6915f9f67d0c454c2e90385e6497eaa', + createdAt: 1631204933, + }, + { + id: 'sushi-one-eth-one', + name: '1ETH-ONE LP', + token: '1ETH-ONE LP', + tokenDescription: 'Sushi', + tokenAddress: '0xeb049F1eD546F8efC3AD57f6c7D22F081CcC7375', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSushiETH-ONE', + earnedTokenAddress: '0xF439B695bB28c9E9865170C1b3e98F5EB4cE9b48', + earnContractAddress: '0xF439B695bB28c9E9865170C1b3e98F5EB4cE9b48', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'sushi-one-eth-one', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SushiSwap', + assets: ['ETH', 'ONE'], + callFee: 0.25, + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: 'https://app.sushi.com/add/ETH/0x6983d1e6def3690c4d616b13597a09e6193ea013', + buyTokenUrl: + 'https://app.sushi.com/swap?inputCurrency=&outputCurrency=0x6983d1e6def3690c4d616b13597a09e6193ea013', + createdAt: 1631205117, + }, + { + id: 'sushi-one-btc-one', + name: '1WBTC-ONE LP', + token: '1WBTC-ONE LP', + tokenDescription: 'Sushi', + tokenAddress: '0xc3670b927eF42eed252e483e2446352C238D9905', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSushiBTC-ONE', + earnedTokenAddress: '0xcBd801AAdd138560b15DBFE0D173ea4774E20b40', + earnContractAddress: '0xcBd801AAdd138560b15DBFE0D173ea4774E20b40', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'sushi-one-btc-one', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SushiSwap', + assets: ['WBTC', 'ONE'], + callFee: 0.25, + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '.01%', + addLiquidityUrl: 'https://app.sushi.com/add/ETH/0x3095c7557bcb296ccc6e363de01b760ba031f2d9', + buyTokenUrl: + 'https://app.sushi.com/swap?inputCurrency=&outputCurrency=0x3095c7557bcb296ccc6e363de01b760ba031f2d9', + createdAt: 1631205541, + }, + { + id: 'sushi-one-usdc-one', + name: '1USDC-ONE LP', + token: '1USDC-ONE LP', + tokenDescription: 'Sushi', + tokenAddress: '0xBf255d8c30DbaB84eA42110EA7DC870F01c0013A', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSushiUSDC-ONE', + earnedTokenAddress: '0xB6Fb58eea08b5539f371A744bb9Ef86283F1B3c2', + earnContractAddress: '0xB6Fb58eea08b5539f371A744bb9Ef86283F1B3c2', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'sushi-one-usdc-one', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SushiSwap', + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + assets: ['USDC', 'ONE'], + callFee: 0.25, + withdrawalFee: '0%', + addLiquidityUrl: 'https://app.sushi.com/add/ETH/0x985458e523db3d53125813ed68c274899e9dfab4', + buyTokenUrl: + 'https://app.sushi.com/swap?inputCurrency=&outputCurrency=0x985458e523db3d53125813ed68c274899e9dfab4', + createdAt: 1631205683, + }, +]; diff --git a/src/features/configure/vault/heco_pools.js b/src/features/configure/vault/heco_pools.js new file mode 100644 index 000000000..f516de8e6 --- /dev/null +++ b/src/features/configure/vault/heco_pools.js @@ -0,0 +1,939 @@ +export const hecoPools = [ + { + id: 'heco-bifi-maxi', + logo: 'single-assets/BIFI.png', + name: 'BIFI Maxi', + token: 'BIFI', + tokenDescription: 'Beefy', + tokenAddress: '0x765277EebeCA2e31912C9946eAe1021199B39C61', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooHecoBIFI', + earnedTokenAddress: '0x688724Fb44cD7eabF209Ca2B225880033e9563d2', + earnContractAddress: '0x688724Fb44cD7eabF209Ca2B225880033e9563d2', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'BIFI', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Beefy', + assets: ['BIFI'], + withdrawalFee: '0.05%', + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'Maxi', + buyTokenUrl: + 'https://ht.mdex.com/#/swap?inputCurrency=0xa71edc38d189767582c38a3145b5873052c3e47a&outputCurrency=0x765277eebeca2e31912c9946eae1021199b39c61', + createdAt: 1621533345, + }, + { + id: 'lendhub-btc-eol', + logo: 'single-assets/HBTC.png', + name: 'HBTC', + token: 'HBTC', + tokenDescription: 'Lendhub', + tokenAddress: '0x66a79D23E58475D2738179Ca52cd0b41d73f0BEa', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooLendhubBTC', + earnedTokenAddress: '0xd7C6E2425be8aEE964793C6A192f8cb953fe49cA', + earnContractAddress: '0xd7C6E2425be8aEE964793C6A192f8cb953fe49cA', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'BTC', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'tvl', + platform: 'Lendhub', + assets: ['BTC'], + buyTokenUrl: + 'https://ht.mdex.com/#/swap?inputCurrency=0x5545153ccfca01fbd7dd11c0b23ba694d9509a6f&outputCurrency=0x66a79D23E58475D2738179Ca52cd0b41d73f0BEa', + createdAt: 1623264559, + }, + { + id: 'lendhub-dot-eol', + logo: 'single-assets/DOT.png', + name: 'HDOT', + token: 'HDOT', + tokenDescription: 'Lendhub', + tokenAddress: '0xA2c49cEe16a5E5bDEFDe931107dc1fae9f7773E3', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooLendhubDOT', + earnedTokenAddress: '0x1658C01F9C4D76c80E65Fa6eD4D1f3099F6cDf00', + earnContractAddress: '0x1658C01F9C4D76c80E65Fa6eD4D1f3099F6cDf00', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'DOT', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'tvl', + platform: 'Lendhub', + assets: ['DOT'], + buyTokenUrl: + 'https://ht.mdex.com/#/swap?inputCurrency=0x5545153ccfca01fbd7dd11c0b23ba694d9509a6f&outputCurrency=0xA2c49cEe16a5E5bDEFDe931107dc1fae9f7773E3', + createdAt: 1623268468, + }, + { + id: 'lendhub-eth', + logo: 'single-assets/ETH.svg', + name: 'ETH', + token: 'ETH', + tokenDescription: 'Lendhub', + tokenAddress: '0x64FF637fB478863B7468bc97D30a5bF3A428a1fD', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooLendhubETH', + earnedTokenAddress: '0x9be8485ff97257Aea98A3a9FcfFfD9799F76DeeE', + earnContractAddress: '0x9be8485ff97257Aea98A3a9FcfFfD9799F76DeeE', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'ETH', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Lendhub', + assets: ['ETH'], + buyTokenUrl: + 'https://ht.mdex.com/#/swap?inputCurrency=0x5545153ccfca01fbd7dd11c0b23ba694d9509a6f&outputCurrency=0x64FF637fB478863B7468bc97D30a5bF3A428a1fD', + createdAt: 1623026489, + }, + { + id: 'lendhub-lhb-wht-eol', + logo: 'heco/LHB-WHT.png', + name: 'LHB-WHT LP', + token: 'LHB-WHT LP', + tokenDescription: 'Lendhub', + tokenAddress: '0x8c31344A6cdadEA60715d06b55790F21d967d8D2', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooLendhubLHB-WHT', + earnedTokenAddress: '0x11AE409Debb169097F984E6BFf2e4c2b6e2F2CAB', + earnContractAddress: '0x11AE409Debb169097F984E6BFf2e4c2b6e2F2CAB', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'lendhub-lhb-wht', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'tvl', + platform: 'Lendhub', + assets: ['LHB', 'WHT'], + buyTokenUrl: + 'https://ht.mdex.com/#/swap?inputCurrency=0x5545153CCFcA01fbd7Dd11C0b23ba694D9509A6F&outputCurrency=0x8F67854497218043E1f72908FFE38D0Ed7F24721', + addLiquidityUrl: + 'https://ht.mdex.com/#/add/0x5545153CCFcA01fbd7Dd11C0b23ba694D9509A6F/0x8F67854497218043E1f72908FFE38D0Ed7F24721', + createdAt: 1623091167, + }, + { + id: 'lendhub-lhb-usdt-eol', + logo: 'usdt-pairs/LHB-USDT.png', + name: 'LHB-USDT LP', + token: 'LHB-USDT LP', + tokenDescription: 'Lendhub', + tokenAddress: '0x023f375a51Af8645D7446ba5942BAeDc53B0582D', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooLendhubLHB-USDT', + earnedTokenAddress: '0x19164Be31A34E94F1Bb25D8AD6042af950B89D2B', + earnContractAddress: '0x19164Be31A34E94F1Bb25D8AD6042af950B89D2B', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'lendhub-lhb-usdt', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'tvl', + platform: 'Lendhub', + assets: ['LHB', 'USDT'], + buyTokenUrl: + 'https://ht.mdex.com/#/swap?inputCurrency=0xa71EdC38d189767582C38A3145b5873052c3e47a&outputCurrency=0x8F67854497218043E1f72908FFE38D0Ed7F24721', + addLiquidityUrl: + 'https://ht.mdex.com/#/add/0xa71edc38d189767582c38a3145b5873052c3e47a/0x8F67854497218043E1f72908FFE38D0Ed7F24721', + createdAt: 1623094053, + }, + { + id: 'mdex-mdx-eol', + logo: 'single-assets/MDX.png', + name: 'MDX', + token: 'MDX', + tokenDescription: 'Mdex', + tokenAddress: '0x25D2e80cB6B86881Fd7e07dd263Fb79f4AbE033c', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooMdexMDX', + earnedTokenAddress: '0xfABDB29A8C1AE335bC65A7505311F8A48223eFaA', + earnContractAddress: '0xfABDB29A8C1AE335bC65A7505311F8A48223eFaA', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'MDX', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'tvl', + platform: 'Mdex', + assets: ['MDX'], + buyTokenUrl: + 'https://ht.mdex.com/#/swap?inputCurrency=0x5545153ccfca01fbd7dd11c0b23ba694d9509a6f&outputCurrency=0x25d2e80cb6b86881fd7e07dd263fb79f4abe033c', + createdAt: 1621521896, + }, + { + id: 'mdex-shib-usdt', + logo: 'usdt-pairs/SHIB-USDT.png', + name: 'SHIB-USDT LP', + token: 'SHIB-USDT LP', + tokenDescription: 'Mdex', + tokenAddress: '0x1c85dD9E5FeE4c40786bd6278255D977946A364b', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooMdexSHIB-USDT', + earnedTokenAddress: '0x951120891258A9F2A6F3c5764E6eb21a948Ab99C', + earnContractAddress: '0x951120891258A9F2A6F3c5764E6eb21a948Ab99C', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'mdex-shib-usdt', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Mdex', + assets: ['SHIB', 'USDT'], + buyTokenUrl: + 'https://ht.mdex.com/#/swap?inputCurrency=0xa71EdC38d189767582C38A3145b5873052c3e47a&outputCurrency=0xc38072aa3f8e049de541223a9c9772132bb48634', + addLiquidityUrl: + 'https://ht.mdex.com/#/add/0xa71edc38d189767582c38a3145b5873052c3e47a/0xc38072aa3f8e049de541223a9c9772132bb48634', + createdAt: 1621263723, + }, + { + id: 'mdex-bifi-usdt', + logo: 'usdt-pairs/BIFI-USDT.png', + name: 'BIFI-USDT LP', + token: 'BIFI-USDT LP', + tokenDescription: 'Mdex', + tokenAddress: '0xe6F7b06ad8B93A21f78E4aCD59f2dac169eA704B', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooMdexBIFI-USDT', + earnedTokenAddress: '0xD34A51815892368fE96D9730376b2CEdE99F83D8', + earnContractAddress: '0xD34A51815892368fE96D9730376b2CEdE99F83D8', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'mdex-bifi-usdt', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Mdex', + assets: ['BIFI', 'USDT'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + buyTokenUrl: + 'https://ht.mdex.com/#/swap?inputCurrency=0xa71EdC38d189767582C38A3145b5873052c3e47a&outputCurrency=0x765277EebeCA2e31912C9946eAe1021199B39C61', + addLiquidityUrl: + 'https://ht.mdex.com/#/add/0x765277EebeCA2e31912C9946eAe1021199B39C61/0xa71EdC38d189767582C38A3145b5873052c3e47a', + createdAt: 1620908761, + }, + { + id: 'hfi-hfi-ht-eol', + logo: 'heco/HFI-HT.png', + name: 'HFI-HT LP', + token: 'HFI-HT LP', + tokenDescription: 'HFI', + tokenAddress: '0x0bcCa165E0b6BD92C01c582A822Dc2c87eac4BEC', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooHFIHFI-HT', + earnedTokenAddress: '0xe8188B9701E6DB1Fe24c75783474D22e5957BBEF', + earnContractAddress: '0xe8188B9701E6DB1Fe24c75783474D22e5957BBEF', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'hfi-hfi-ht', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['HFI', 'WHT'], + withdrawalFee: '0%', + retireReason: 'rewards', + buyTokenUrl: + 'https://ht.mdex.com/#/swap?inputCurrency=0x5545153ccfca01fbd7dd11c0b23ba694d9509a6f&outputCurrency=0x98fc3b60ed4a504f588342a53746405e355f9347', + removeLiquidityUrl: + 'https://ht.mdex.com/#/remove/0x5545153ccfca01fbd7dd11c0b23ba694d9509a6f/0x98fc3b60ed4a504f588342a53746405e355f9347', + createdAt: 1619629872, + }, + { + id: 'hfi-hfi-husd-eol', + logo: 'heco/HFI-HUSD.png', + name: 'HFI-HUSD LP', + token: 'HFI-HUSD LP', + tokenDescription: 'HFI', + tokenAddress: '0x8e5A5186c282252c1298c9e3fFB3F944416108f7', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooHFIHFI-HUSD', + earnedTokenAddress: '0xD5ff0aCA943C918EEE069b1E80Ee0D9d016b2F98', + earnContractAddress: '0xD5ff0aCA943C918EEE069b1E80Ee0D9d016b2F98', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'hfi-hfi-husd', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['HFI', 'HUSD'], + withdrawalFee: '0%', + buyTokenUrl: + 'https://ht.mdex.com/#/swap?inputCurrency=0x0298c2b32eae4da002a15f36fdf7615bea3da047&outputCurrency=0x98fc3b60ed4a504f588342a53746405e355f9347', + removeLiquidityUrl: + 'https://ht.mdex.com/#/remove/0x0298c2b32eae4da002a15f36fdf7615bea3da047/0x98fc3b60ed4a504f588342a53746405e355f9347', + createdAt: 1619629896, + }, + { + id: 'lava-lava-eol', + logo: 'heco/LAVA.png', + name: 'LAVA', + token: 'LAVA', + tokenDescription: 'Lavaswap', + tokenAddress: '0x56f95662E71f30b333b456439248c6dE589082a4', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooLavaLAVA', + earnedTokenAddress: '0xCd22A841e82fdd42FCFFF44ED689fDf6f6ECDEF9', + earnContractAddress: '0xCd22A841e82fdd42FCFFF44ED689fDf6f6ECDEF9', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'LAVA', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['LAVA'], + buyTokenUrl: + 'https://exchange.lavaswap.com/#/swap?inputCurrency=0x5545153ccfca01fbd7dd11c0b23ba694d9509a6f&outputCurrency=0x56f95662e71f30b333b456439248c6de589082a4', + createdAt: 1618596495, + }, + { + id: 'lava-lava-usdt-eol', + logo: 'heco/LAVA-USDT.svg', + name: 'LAVA-USDT LP', + token: 'LAVA-USDT LP', + tokenDescription: 'Lavaswap', + tokenAddress: '0x3f15F2075Aa11bE4757Aa522d133c0DbC7E878Ce', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooLavaLAVA-USDT', + earnedTokenAddress: '0xc44d493B6219A7f5C286724b74c158CEBd7fB6f7', + earnContractAddress: '0xc44d493B6219A7f5C286724b74c158CEBd7fB6f7', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'lava-lava-usdt', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['LAVA', 'USDT'], + buyTokenUrl: + 'https://exchange.lavaswap.com/#/swap?inputCurrency=0x56f95662e71f30b333b456439248c6de589082a4&outputCurrency=0xa71edc38d189767582c38a3145b5873052c3e47a', + addLiquidityUrl: + 'https://exchange.lavaswap.com/#/add/0xa71EdC38d189767582C38A3145b5873052c3e47a/0x56f95662E71f30b333b456439248c6dE589082a4', + createdAt: 1618426130, + }, + { + id: 'lava-lava-wht-eol', + logo: 'heco/LAVA-HT.svg', + name: 'LAVA-WHT LP', + token: 'LAVA-WHT LP', + tokenDescription: 'Lavaswap', + tokenAddress: '0xcA65940b931272833307245c0D56aD86087e80a4', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooLavaLAVA-WHT', + earnedTokenAddress: '0xD35ca4abBA932D6d94A3eEe73CaD1F6684cB95Ae', + earnContractAddress: '0xD35ca4abBA932D6d94A3eEe73CaD1F6684cB95Ae', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'lava-lava-wht', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['LAVA', 'WHT'], + buyTokenUrl: + 'https://exchange.lavaswap.com/#/swap?inputCurrency=0x5545153ccfca01fbd7dd11c0b23ba694d9509a6f&outputCurrency=0x56f95662e71f30b333b456439248c6de589082a4', + addLiquidityUrl: + 'https://exchange.lavaswap.com/#/add/ETH/0x56f95662E71f30b333b456439248c6dE589082a4', + createdAt: 1618425515, + }, + { + id: 'mdex-hbtc-wht-eol', + logo: 'heco/HBTC-WHT.svg', + name: 'HBTC-WHT LP', + token: 'HBTC-WHT LP', + tokenDescription: 'Mdex', + tokenAddress: '0xBFff969A85e355eE0851b019Dba1e87C7780F40d', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooMdexHBTC-WHT', + earnedTokenAddress: '0xFDafEA4529d609901E6E6CC65b3e2C1C822e223d', + earnContractAddress: '0xFDafEA4529d609901E6E6CC65b3e2C1C822e223d', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'mdex-hbtc-wht', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'tvl', + platform: 'Mdex', + assets: ['HBTC', 'WHT'], + buyTokenUrl: + 'https://ht.mdex.com/#/swap?inputCurrency=HT&outputCurrency=0x66a79d23e58475d2738179ca52cd0b41d73f0bea', + addLiquidityUrl: 'https://ht.mdex.com/#/add/HT/0x66a79d23e58475d2738179ca52cd0b41d73f0bea', + createdAt: 1615232582, + }, + { + id: 'mdex-eth-wht-eol', + logo: 'heco/ETH-WHT.svg', + name: 'ETH-WHT LP', + token: 'ETH-WHT LP', + tokenDescription: 'Mdex', + tokenAddress: '0x53E458aD1CFEB9582736db6BdE9aF89948e3bc3d', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooMdexETH-WHT', + earnedTokenAddress: '0x07AD2C13a0D735FA4F8788DC0B6355AaaB2f3407', + earnContractAddress: '0x07AD2C13a0D735FA4F8788DC0B6355AaaB2f3407', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'mdex-eth-wht', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'tvl', + platform: 'Mdex', + assets: ['ETH', 'WHT'], + buyTokenUrl: + 'https://ht.mdex.com/#/swap?inputCurrency=HT&outputCurrency=0x64FF637fB478863B7468bc97D30a5bF3A428a1fD', + addLiquidityUrl: 'https://ht.mdex.com/#/add/HT/0x64FF637fB478863B7468bc97D30a5bF3A428a1fD', + createdAt: 1615232741, + }, + { + id: 'mdex-husd-usdt', + logo: 'heco/HUSD-USDT.svg', + name: 'HUSD-USDT LP', + token: 'HUSD-USDT LP', + tokenDescription: 'Mdex', + tokenAddress: '0xdff86B408284dff30A7CAD7688fEdB465734501C', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooMdexHUSD-USDT', + earnedTokenAddress: '0xe6CcE165Aa3e52B2cC55F17b1dBC6A8fe5D66610', + earnContractAddress: '0xe6CcE165Aa3e52B2cC55F17b1dBC6A8fe5D66610', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'mdex-husd-usdt', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Mdex', + assets: ['HUSD', 'USDT'], + buyTokenUrl: + 'https://ht.mdex.com/#/swap?inputCurrency=0xa71EdC38d189767582C38A3145b5873052c3e47a&outputCurrency=0x0298c2b32eaE4da002a15f36fdf7615BEa3DA047', + addLiquidityUrl: + 'https://ht.mdex.com/#/add/0xa71EdC38d189767582C38A3145b5873052c3e47a/0x0298c2b32eaE4da002a15f36fdf7615BEa3DA047', + createdAt: 1613760775, + }, + { + id: 'mdex-hltc-usdt-eol', + logo: 'heco/HLTC-USDT.svg', + name: 'HLTC-USDT LP', + token: 'HTLC-USDT LP', + tokenDescription: 'Mdex', + tokenAddress: '0x060B4bfcE16D15A943ec83C56C87940613e162eB', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooMdexHLTC-USDT', + earnedTokenAddress: '0x41D44B276904561Ac51855159516FD4cB2c90968', + earnContractAddress: '0x41D44B276904561Ac51855159516FD4cB2c90968', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'mdex-hltc-usdt', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'tvl', + platform: 'Mdex', + assets: ['HLTC', 'USDT'], + buyTokenUrl: + 'https://ht.mdex.com/#/swap?inputCurrency=0xa71EdC38d189767582C38A3145b5873052c3e47a&outputCurrency=0xecb56cf772B5c9A6907FB7d32387Da2fCbfB63b4', + addLiquidityUrl: + 'https://ht.mdex.com/#/add/0xa71EdC38d189767582C38A3145b5873052c3e47a/0xecb56cf772B5c9A6907FB7d32387Da2fCbfB63b4', + createdAt: 1613761516, + }, + { + id: 'mdex-hbch-usdt-eol', + logo: 'heco/HBCH-USDT.svg', + name: 'HBCH-USDT LP', + token: 'HBCH-USDT LP', + tokenDescription: 'Mdex', + tokenAddress: '0x1f0eC8e0096e145f2bf2Cb4950Ed7b52d1cbd35f', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooMdexHBCH-USDT', + earnedTokenAddress: '0xdf68Bf80D427A5827Ff2c06A9c70D407e17DC041', + earnContractAddress: '0xdf68Bf80D427A5827Ff2c06A9c70D407e17DC041', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'mdex-hbch-usdt', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'tvl', + platform: 'Mdex', + assets: ['HBCH', 'USDT'], + buyTokenUrl: + 'https://ht.mdex.com/#/swap?inputCurrency=0xa71EdC38d189767582C38A3145b5873052c3e47a&outputCurrency=0xeF3CEBD77E0C52cb6f60875d9306397B5Caca375', + addLiquidityUrl: + 'https://ht.mdex.com/#/add/0xa71EdC38d189767582C38A3145b5873052c3e47a/0xeF3CEBD77E0C52cb6f60875d9306397B5Caca375', + createdAt: 1613761969, + }, + { + id: 'mdex-hdot-usdt', + logo: 'heco/HDOT-USDT.svg', + name: 'HDOT-USDT LP', + token: 'HDOT-USDT LP', + tokenDescription: 'Mdex', + tokenAddress: '0x5484ab0DF3E51187f83F7f6b1a13f7a7Ee98C368', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooMdexHDOT-USDT', + earnedTokenAddress: '0x2a30C5e0d577108F694d2A96179cd73611Ee069b', + earnContractAddress: '0x2a30C5e0d577108F694d2A96179cd73611Ee069b', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'mdex-hdot-usdt', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Mdex', + assets: ['HDOT', 'USDT'], + buyTokenUrl: + 'https://ht.mdex.com/#/swap?inputCurrency=0xa71EdC38d189767582C38A3145b5873052c3e47a&outputCurrency=0xA2c49cEe16a5E5bDEFDe931107dc1fae9f7773E3', + addLiquidityUrl: + 'https://ht.mdex.com/#/add/0xa71EdC38d189767582C38A3145b5873052c3e47a/0xA2c49cEe16a5E5bDEFDe931107dc1fae9f7773E3', + createdAt: 1613764948, + }, + { + id: 'mdex-hfil-usdt', + logo: 'heco/HFIL-USDT.svg', + name: 'HFIL-USDT LP', + token: 'HFIL-USDT LP', + tokenDescription: 'Mdex', + tokenAddress: '0x600072aF0470d9Ed1D83885D03d17368943fF22A', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooMdexHFIL-USDT', + earnedTokenAddress: '0x1433c4a55449c8B96cf5Ac0cF395cBd8dc8e5f60', + earnContractAddress: '0x1433c4a55449c8B96cf5Ac0cF395cBd8dc8e5f60', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'mdex-hfil-usdt', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Mdex', + assets: ['HFIL', 'USDT'], + buyTokenUrl: + 'https://ht.mdex.com/#/swap?inputCurrency=0xa71EdC38d189767582C38A3145b5873052c3e47a&outputCurrency=0xae3a768f9aB104c69A7CD6041fE16fFa235d1810', + addLiquidityUrl: + 'https://ht.mdex.com/#/add/0xa71EdC38d189767582C38A3145b5873052c3e47a/0xae3a768f9aB104c69A7CD6041fE16fFa235d1810', + createdAt: 1613862749, + }, + { + id: 'mdex-hpt-usdt', + logo: 'heco/HPT-USDT.svg', + name: 'HPT-USDT LP', + token: 'HPT-USDT LP', + tokenDescription: 'Mdex', + tokenAddress: '0xdE5b574925EE475c41b99a7591EC43E92dCD2fc1', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooMdexHPT-USDT', + earnedTokenAddress: '0x7a670e849DB824364d1031DEAfB4cD603144F23D', + earnContractAddress: '0x7a670e849DB824364d1031DEAfB4cD603144F23D', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'mdex-hpt-usdt', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Mdex', + assets: ['HPT', 'USDT'], + buyTokenUrl: + 'https://ht.mdex.com/#/swap?inputCurrency=0xa71EdC38d189767582C38A3145b5873052c3e47a&outputCurrency=0xE499Ef4616993730CEd0f31FA2703B92B50bB536', + addLiquidityUrl: + 'https://ht.mdex.com/#/add/0xa71EdC38d189767582C38A3145b5873052c3e47a/0xE499Ef4616993730CEd0f31FA2703B92B50bB536', + createdAt: 1615224365, + }, + { + id: 'mdex-lhb-usdt-eol', + logo: 'heco/LHB-USDT.svg', + name: 'LHB-USDT LP', + token: 'LHB-USDT LP', + tokenDescription: 'Mdex', + tokenAddress: '0x023f375a51Af8645D7446ba5942BAeDc53B0582D', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooMdexLHB-USDT', + earnedTokenAddress: '0x945b2379E29F503a78dBcaB2feEFFE74a6c31E2b', + earnContractAddress: '0x945b2379E29F503a78dBcaB2feEFFE74a6c31E2b', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'mdex-lhb-usdt', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'tvl', + platform: 'Mdex', + assets: ['LHB', 'USDT'], + buyTokenUrl: + 'https://ht.mdex.com/#/swap?inputCurrency=0xa71EdC38d189767582C38A3145b5873052c3e47a&outputCurrency=0x8F67854497218043E1f72908FFE38D0Ed7F24721', + addLiquidityUrl: + 'https://ht.mdex.com/#/add/0xa71EdC38d189767582C38A3145b5873052c3e47a/0x8F67854497218043E1f72908FFE38D0Ed7F24721', + createdAt: 1615224428, + }, + { + id: 'mdex-aave-usdt', + logo: 'heco/AAVE-USDT.svg', + name: 'AAVE-USDT LP', + token: 'AAVE-USDT LP', + tokenDescription: 'Mdex', + tokenAddress: '0xfAfeAafeFc5F92F22415506e78D9AB1E33C03257', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooMdexAAVE-USDT', + earnedTokenAddress: '0x6169551074826724CAcd8Deb452BF133403c2036', + earnContractAddress: '0x6169551074826724CAcd8Deb452BF133403c2036', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'mdex-aave-usdt', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Mdex', + assets: ['AAVE', 'USDT'], + buyTokenUrl: + 'https://ht.mdex.com/#/swap?inputCurrency=0xa71EdC38d189767582C38A3145b5873052c3e47a&outputCurrency=0x202b4936fE1a82A4965220860aE46d7d3939Bb25', + addLiquidityUrl: + 'https://ht.mdex.com/#/add/0xa71EdC38d189767582C38A3145b5873052c3e47a/0x202b4936fE1a82A4965220860aE46d7d3939Bb25', + createdAt: 1615224473, + }, + { + id: 'mdex-snx-usdt', + logo: 'heco/SNX-USDT.svg', + name: 'SNX-USDT LP', + token: 'SNX-USDT LP', + tokenDescription: 'Mdex', + tokenAddress: '0xc7A4C808a29fc8Cd3A8a6848f7F18bED9924C692', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooMdexSNX-USDT', + earnedTokenAddress: '0x8B1Ca7f3F0838dCd23DA8CFe223eA313739193cb', + earnContractAddress: '0x8B1Ca7f3F0838dCd23DA8CFe223eA313739193cb', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'mdex-snx-usdt', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Mdex', + assets: ['SNX', 'USDT'], + buyTokenUrl: + 'https://ht.mdex.com/#/swap?inputCurrency=0xa71EdC38d189767582C38A3145b5873052c3e47a&outputCurrency=0x777850281719d5a96C29812ab72f822E0e09F3Da', + addLiquidityUrl: + 'https://ht.mdex.com/#/add/0xa71EdC38d189767582C38A3145b5873052c3e47a/0x777850281719d5a96C29812ab72f822E0e09F3Da', + createdAt: 1615224533, + }, + { + id: 'mdex-link-usdt', + logo: 'heco/LINK-USDT.svg', + name: 'LINK-USDT LP', + token: 'LINK-USDT LP', + tokenDescription: 'Mdex', + tokenAddress: '0x52a342015BAa2496A90A9bB6069D7692564132e6', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooMdexLINK-USDT', + earnedTokenAddress: '0x044e87f30bd9bD961c04028aC69155493E1b9eD0', + earnContractAddress: '0x044e87f30bd9bD961c04028aC69155493E1b9eD0', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'mdex-link-usdt', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Mdex', + assets: ['LINK', 'USDT'], + buyTokenUrl: + 'https://ht.mdex.com/#/swap?inputCurrency=0xa71EdC38d189767582C38A3145b5873052c3e47a&outputCurrency=0x9e004545c59D359F6B7BFB06a26390b087717b42', + addLiquidityUrl: + 'https://ht.mdex.com/#/add/0xa71EdC38d189767582C38A3145b5873052c3e47a/0x9e004545c59D359F6B7BFB06a26390b087717b42', + createdAt: 1615231544, + }, + { + id: 'mdex-bal-usdt', + logo: 'heco/BAL-USDT.svg', + name: 'BAL-USDT LP', + token: 'BAL-USDT LP', + tokenDescription: 'Mdex', + tokenAddress: '0xB6A77CDD31771A4F439622aA36b20cb53C19868C', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooMdexBAL-USDT', + earnedTokenAddress: '0x666c0b9D37A20235C232081C1C6B2edc70ecC7F3', + earnContractAddress: '0x666c0b9D37A20235C232081C1C6B2edc70ecC7F3', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'mdex-bal-usdt', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Mdex', + assets: ['BAL', 'USDT'], + buyTokenUrl: + 'https://ht.mdex.com/#/swap?inputCurrency=0xa71EdC38d189767582C38A3145b5873052c3e47a&outputCurrency=0x045De15Ca76e76426E8Fc7cba8392A3138078D0F', + addLiquidityUrl: + 'https://ht.mdex.com/#/add/0xa71EdC38d189767582C38A3145b5873052c3e47a/0x045De15Ca76e76426E8Fc7cba8392A3138078D0F', + createdAt: 1615231487, + }, + { + id: 'mdex-yfi-usdt', + logo: 'heco/YFI-USDT.svg', + name: 'YFI-USDT LP', + token: 'YFI-USDT LP', + tokenDescription: 'Mdex', + tokenAddress: '0x64Af3564C6D6BEc5883358c560211EcD0f8d1AC7', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooMdexYFI-USDT', + earnedTokenAddress: '0xbF7421bd2f79643a671b70d1DDE57D452C110CF8', + earnContractAddress: '0xbF7421bd2f79643a671b70d1DDE57D452C110CF8', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'mdex-yfi-usdt', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Mdex', + assets: ['YFI', 'USDT'], + buyTokenUrl: + 'https://ht.mdex.com/#/swap?inputCurrency=0xa71EdC38d189767582C38A3145b5873052c3e47a&outputCurrency=0xB4F019bEAc758AbBEe2F906033AAa2f0F6Dacb35', + addLiquidityUrl: + 'https://ht.mdex.com/#/add/0xa71EdC38d189767582C38A3145b5873052c3e47a/0xB4F019bEAc758AbBEe2F906033AAa2f0F6Dacb35', + createdAt: 1615235309, + }, + { + id: 'mdex-uni-usdt-eol', + logo: 'heco/UNI-USDT.svg', + name: 'UNI-USDT LP', + token: 'UNI-USDT LP', + tokenDescription: 'Mdex', + tokenAddress: '0x84455d880af684eb29997B82832dd71EF29c1354', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooMdexUNI-USDT', + earnedTokenAddress: '0xC422261EdC5dB679CAd9BC403e886351De540e77', + earnContractAddress: '0xC422261EdC5dB679CAd9BC403e886351De540e77', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'mdex-uni-usdt', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'tvl', + platform: 'Mdex', + assets: ['UNI', 'USDT'], + buyTokenUrl: + 'https://ht.mdex.com/#/swap?inputCurrency=0xa71EdC38d189767582C38A3145b5873052c3e47a&outputCurrency=0x22C54cE8321A4015740eE1109D9cBc25815C46E6', + addLiquidityUrl: + 'https://ht.mdex.com/#/add/0xa71EdC38d189767582C38A3145b5873052c3e47a/0x22C54cE8321A4015740eE1109D9cBc25815C46E6', + createdAt: 1615227080, + }, + { + id: 'mdex-mdx-usdt', + logo: 'heco/MDX-USDT.png', + name: 'MDX-USDT LP', + token: 'MDX-USDT LP', + tokenDescription: 'Mdex', + tokenAddress: '0x615E6285c5944540fd8bd921c9c8c56739Fd1E13', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooMdexMDX-USDT', + earnedTokenAddress: '0x5c2197149ce7CAb038aB09C45087a09070E32C73', + earnContractAddress: '0x5c2197149ce7CAb038aB09C45087a09070E32C73', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'mdex-mdx-usdt', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Mdex', + assets: ['MDX', 'USDT'], + buyTokenUrl: + 'https://ht.mdex.com/#/swap?inputCurrency=0xa71EdC38d189767582C38A3145b5873052c3e47a&outputCurrency=0x25D2e80cB6B86881Fd7e07dd263Fb79f4AbE033c', + addLiquidityUrl: + 'https://ht.mdex.com/#/add/0xa71EdC38d189767582C38A3145b5873052c3e47a/0x25D2e80cB6B86881Fd7e07dd263Fb79f4AbE033c', + createdAt: 1613412985, + }, + { + id: 'mdex-mdx-wht', + logo: 'heco/MDX-WHT.png', + name: 'MDX-WHT LP', + token: 'MDX-WHT LP', + tokenDescription: 'Mdex', + tokenAddress: '0x6Dd2993B50b365c707718b0807fC4e344c072eC2', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooMdexMDX-WHT', + earnedTokenAddress: '0xd93A86BbF40454A7BCD339614fB46C67bE31B908', + earnContractAddress: '0xd93A86BbF40454A7BCD339614fB46C67bE31B908', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'mdex-mdx-wht', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Mdex', + assets: ['MDX', 'WHT'], + buyTokenUrl: + 'https://ht.mdex.com/#/swap?inputCurrency=HT&outputCurrency=0x25D2e80cB6B86881Fd7e07dd263Fb79f4AbE033c', + addLiquidityUrl: 'https://ht.mdex.com/#/add/HT/0x25D2e80cB6B86881Fd7e07dd263Fb79f4AbE033c', + createdAt: 1613413144, + }, + { + id: 'mdex-wht-usdt', + logo: 'heco/WHT-USDT.png', + name: 'WHT-USDT LP', + token: 'WHT-USDT LP', + tokenDescription: 'Mdex', + tokenAddress: '0x499B6E03749B4bAF95F9E70EeD5355b138EA6C31', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooMdexWHT-USDT', + earnedTokenAddress: '0x2f536faCbC780B9ccA02545d2aA71021d7308c5E', + earnContractAddress: '0x2f536faCbC780B9ccA02545d2aA71021d7308c5E', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'mdex-wht-usdt', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Mdex', + assets: ['WHT', 'USDT'], + buyTokenUrl: + 'https://ht.mdex.com/#/swap?inputCurrency=HT&outputCurrency=0xa71EdC38d189767582C38A3145b5873052c3e47a', + addLiquidityUrl: 'https://ht.mdex.com/#/add/HT/0xa71EdC38d189767582C38A3145b5873052c3e47a', + createdAt: 1613413342, + }, + { + id: 'mdex-hbtc-usdt-eol', + logo: 'heco/HBTC-USDT.png', + name: 'HBTC-USDT LP', + token: 'HBTC-USDT LP', + tokenDescription: 'Mdex', + tokenAddress: '0xFBe7b74623e4be82279027a286fa3A5b5280F77c', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooMdexHBTC-USDT', + earnedTokenAddress: '0x1Ff05E1Fb13931eBE19363441bF10f8c5dCc963E', + earnContractAddress: '0x1Ff05E1Fb13931eBE19363441bF10f8c5dCc963E', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'mdex-hbtc-usdt', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'tvl', + platform: 'Mdex', + assets: ['HBTC', 'USDT'], + buyTokenUrl: + 'https://ht.mdex.com/#/swap?inputCurrency=0xa71EdC38d189767582C38A3145b5873052c3e47a&outputCurrency=0x66a79D23E58475D2738179Ca52cd0b41d73f0BEa', + addLiquidityUrl: + 'https://ht.mdex.com/#/add/0xa71EdC38d189767582C38A3145b5873052c3e47a/0x66a79D23E58475D2738179Ca52cd0b41d73f0BEa', + createdAt: 1613413669, + }, + { + id: 'mdex-eth-usdt-eol', + logo: 'heco/ETH-USDT.png', + name: 'ETH-USDT LP', + token: 'ETH-USDT LP', + tokenDescription: 'Mdex', + tokenAddress: '0x78C90d3f8A64474982417cDB490E840c01E516D4', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooMdexETH-USDT', + earnedTokenAddress: '0x56Fb7dA3025f76d2128Ef1b0D2EEA47Dd45e7C2a', + earnContractAddress: '0x56Fb7dA3025f76d2128Ef1b0D2EEA47Dd45e7C2a', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'mdex-eth-usdt', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'tvl', + platform: 'Mdex', + assets: ['ETH', 'USDT'], + buyTokenUrl: + 'https://ht.mdex.com/#/swap?inputCurrency=0xa71EdC38d189767582C38A3145b5873052c3e47a&outputCurrency=0x64FF637fB478863B7468bc97D30a5bF3A428a1fD', + addLiquidityUrl: + 'https://ht.mdex.com/#/add/0xa71EdC38d189767582C38A3145b5873052c3e47a/0x64FF637fB478863B7468bc97D30a5bF3A428a1fD', + createdAt: 1613413705, + }, +]; diff --git a/src/features/configure/vault/metis_pools.js b/src/features/configure/vault/metis_pools.js new file mode 100644 index 000000000..a81f12c93 --- /dev/null +++ b/src/features/configure/vault/metis_pools.js @@ -0,0 +1,845 @@ +export const metisPools = [ + { + id: 'metis-bifi-maxi', + logo: 'single-assets/BIFI.png', + name: 'BIFI Maxi', + token: 'BIFI', + tokenDescription: 'Beefy', + tokenAddress: '0xe6801928061CDbE32AC5AD0634427E140EFd05F9', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooMetisBIFI', + earnedTokenAddress: '0xEA01ca0423acb8476E1D3Bae572021c2aA9bd410', + earnContractAddress: '0xEA01ca0423acb8476E1D3Bae572021c2aA9bd410', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'BIFI', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Beefy', + assets: ['BIFI'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'Maxi', + withdrawalFee: '0.05%', + buyTokenUrl: + 'https://netswap.io/#/swap?outputCurrency=0xe6801928061cdbe32ac5ad0634427e140efd05f9', + createdAt: 1642600646, + }, + { + id: 'tethys-rftm-metis', + name: 'rFTM-METIS LP', + token: 'rFTM-METIS LP', + tokenDescription: 'Tethys', + tokenAddress: '0x74Ca39F7aB9B685B8eA8c4ab19E7Ab6b474Dd22D', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooTethysFTM-METIS', + earnedTokenAddress: '0x55Dd65993cB918cdA55eA02FCc6D417A364833d9', + earnContractAddress: '0x55Dd65993cB918cdA55eA02FCc6D417A364833d9', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'tethys-rftm-metis', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Tethys', + assets: ['FTM', 'METIS'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_HIGH', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://tethys.finance/pool/add?inputCurrency=METIS&outputCurrency=0xa9109271abcf0C4106Ab7366B4eDB34405947eED', + buyTokenUrl: + 'https://tethys.finance/swap?inputCurrency=METIS&outputCurrency=0xa9109271abcf0C4106Ab7366B4eDB34405947eED', + createdAt: 1647625639, + }, + { + id: 'tethys-metis-ravax', + name: 'rAVAX-METIS LP', + token: 'rAVAX-METIS TLP', + tokenDescription: 'Tethys', + tokenAddress: '0x3Ca47677e7D8796e6470307Ad15c1fBFd43f0D6F', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooTethysAVAX-METIS', + earnedTokenAddress: '0x45703CED1880604745Cfc8A98E727F70fFB08674', + earnContractAddress: '0x45703CED1880604745Cfc8A98E727F70fFB08674', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'tethys-metis-ravax', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Tethys', + assets: ['AVAX', 'METIS'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_HIGH', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://tethys.finance/pool/add?inputCurrency=METIS&outputCurrency=0xE253E0CeA0CDD43d9628567d097052B33F98D611', + buyTokenUrl: + 'https://tethys.finance/swap?inputCurrency=METIS&outputCurrency=0xE253E0CeA0CDD43d9628567d097052B33F98D611', + createdAt: 1647625860, + }, + { + id: 'tethys-dai-metis', + name: 'DAI-METIS LP', + token: 'DAI-METIS LP', + tokenDescription: 'Tethys', + tokenAddress: '0xCc15d8f93be780aD78fD1A016fB0F15F2543b5Dc', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooTethysDAI-METIS', + earnedTokenAddress: '0xfE118360BEAc5c2ac9dA77D2366b8738bBFeb2d9', + earnContractAddress: '0xfE118360BEAc5c2ac9dA77D2366b8738bBFeb2d9', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'tethys-dai-metis', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Tethys', + assets: ['DAI', 'METIS'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_HIGH', + 'AUDIT', + 'CONTRACTS_VERIFIED', + 'OVER_COLLAT_ALGO_STABLECOIN', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://tethys.finance/pool/add?inputCurrency=METIS&outputCurrency=0x4651B38e7ec14BB3db731369BFE5B08F2466Bd0A', + buyTokenUrl: + 'https://tethys.finance/swap?inputCurrency=METIS&outputCurrency=0x4651B38e7ec14BB3db731369BFE5B08F2466Bd0A', + createdAt: 1647626163, + }, + { + id: 'netswap-byte-m.usdc', + name: 'BYTE-m.USDC LP', + token: 'BYTE-m.USDC LP', + tokenDescription: 'Netswap', + tokenAddress: '0x3Ab6be89ED5A0d4FDD412c246F5e6DdD250Dd45c', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooNetswapBYTE-m.USDC', + earnedTokenAddress: '0xbFF1EF9e84121f7CaEd2416b1c1B8aE81715F96a', + earnContractAddress: '0xbFF1EF9e84121f7CaEd2416b1c1B8aE81715F96a', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'netswap-byte-m.usdc', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Netswap', + assets: ['BYTE', 'mUSDC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_LOW', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://netswap.io/#/add/0x721532bC0dA5ffaeB0a6A45fB24271E8098629A7/0xEA32A96608495e54156Ae48931A7c20f0dcc1a21', + buyTokenUrl: + 'https://netswap.io/#/swap?inputCurrency=0x721532bC0dA5ffaeB0a6A45fB24271E8098629A7&outputCurrency=0xEA32A96608495e54156Ae48931A7c20f0dcc1a21', + createdAt: 1647532435, + }, + { + id: 'netswap-wbtc-metis', + name: 'WBTC-METIS', + token: 'WBTC-METIS LP', + tokenDescription: 'Netswap', + tokenAddress: '0xE0cc462fe369146BAef2306EC6B4BF26704eE84e', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooNetswapWBTC-METIS', + earnedTokenAddress: '0x4e9E8A5Ce321cE0a380c1CEab388c673180AF657', + earnContractAddress: '0x4e9E8A5Ce321cE0a380c1CEab388c673180AF657', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'netswap-wbtc-metis', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Netswap', + assets: ['WBTC', 'METIS'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: 'https://netswap.io/#/add/METIS/0xa5B55ab1dAF0F8e1EFc0eB1931a957fd89B918f4', + buyTokenUrl: + 'https://netswap.io/#/swap?inputCurrency=METIS&outputCurrency=0xa5B55ab1dAF0F8e1EFc0eB1931a957fd89B918f4', + createdAt: 1645533903, + }, + { + id: 'netswap-wbtc-m.usdt', + name: 'WBTC-m.USDT', + token: 'WBTC-m.USDT LP', + tokenDescription: 'Netswap', + tokenAddress: '0xAd9b903451dfdc3D79d2021289F9d864fd8c8119', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooNetswapWBTC-m.USDT', + earnedTokenAddress: '0x23343d47111AbC4b1699fED61276c06Ff8a0D081', + earnContractAddress: '0x23343d47111AbC4b1699fED61276c06Ff8a0D081', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'netswap-wbtc-m.usdt', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Netswap', + assets: ['WBTC', 'mUSDT'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://netswap.io/#/add/0xa5B55ab1dAF0F8e1EFc0eB1931a957fd89B918f4/0xbB06DCA3AE6887fAbF931640f67cab3e3a16F4dC', + buyTokenUrl: + 'https://netswap.io/#/swap?inputCurrency=0xbB06DCA3AE6887fAbF931640f67cab3e3a16F4dC&outputCurrency=0xa5B55ab1dAF0F8e1EFc0eB1931a957fd89B918f4', + createdAt: 1645536038, + }, + { + id: 'tethys-wbtc-metis', + name: 'WBTC-METIS', + token: 'WBTC-METIS TLP', + tokenDescription: 'Tethys', + tokenAddress: '0xA0081C6D591c53Ae651bD71B8d90C83C1F1106C2', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooTethysWBTC-METIS', + earnedTokenAddress: '0x0FB94775d16e14627678391D24E4576fdA05E3ed', + earnContractAddress: '0x0FB94775d16e14627678391D24E4576fdA05E3ed', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'tethys-wbtc-metis', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Tethys', + assets: ['WBTC', 'METIS'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://tethys.finance/pool/add?inputCurrency=METIS&outputCurrency=0xa5B55ab1dAF0F8e1EFc0eB1931a957fd89B918f4', + buyTokenUrl: + 'https://tethys.finance/swap?inputCurrency=METIS&outputCurrency=0xa5B55ab1dAF0F8e1EFc0eB1931a957fd89B918f4', + createdAt: 1645526396, + }, + { + id: 'tethys-m.usdc-m.usdt', + name: 'm.USDC-m.USDT LP', + token: 'm.USDC-m.USDT TLP', + tokenDescription: 'Tethys', + tokenAddress: '0x6c4768d4b3acD4a3fF01F179FaffDaEbe084D12D', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooTethysm.USDC - m.USDT', + earnedTokenAddress: '0xc674cf138415244041d512Edf1c7943D99dD229F', + earnContractAddress: '0xc674cf138415244041d512Edf1c7943D99dD229F', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'tethys-m.usdc-m.usdt', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Tethys', + assets: ['mUSDC', 'mUSDT'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LOW', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://tethys.finance/pool/add?inputCurrency=0xEA32A96608495e54156Ae48931A7c20f0dcc1a21&outputCurrency=0xbB06DCA3AE6887fAbF931640f67cab3e3a16F4dC', + buyTokenUrl: + 'https://tethys.finance/swap?inputCurrency=METIS&outputCurrency=0x6c4768d4b3acD4a3fF01F179FaffDaEbe084D12D', + createdAt: 1644871173, + }, + { + id: 'tethys-tethys-metis', + name: 'TETHYS-METIS LP', + token: 'TETHYS-METIS TLP', + tokenDescription: 'Tethys', + tokenAddress: '0xc9b290FF37fA53272e9D71A0B13a444010aF4497', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooTethysTETHYS-METIS', + earnedTokenAddress: '0xC8ca2254bCBA3aD8511Faff54e0b9941D0424502', + earnContractAddress: '0xC8ca2254bCBA3aD8511Faff54e0b9941D0424502', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'tethys-tethys-metis', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Tethys', + assets: ['TETHYS', 'METIS'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_LOW', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://tethys.finance/pool/add?inputCurrency=METIS&outputCurrency=0x69fdb77064ec5c84FA2F21072973eB28441F43F3', + buyTokenUrl: + 'https://tethys.finance/swap?inputCurrency=METIS&outputCurrency=0x69fdb77064ec5c84FA2F21072973eB28441F43F3', + createdAt: 1642623428, + }, + { + id: 'tethys-m.usdt-metis', + name: 'm.USDT-METIS LP', + token: 'm.USDT-METIS TLP', + tokenDescription: 'Tethys', + tokenAddress: '0x8121113eB9952086deC3113690Af0538BB5506fd', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooTethysm.USDT-METIS', + earnedTokenAddress: '0x462066c67A729572668B6CF79151c0ed67734D91', + earnContractAddress: '0x462066c67A729572668B6CF79151c0ed67734D91', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'tethys-m.usdt-metis', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Tethys', + assets: ['mUSDT', 'METIS'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://tethys.finance/pool/add?inputCurrency=METIS&outputCurrency=0xbB06DCA3AE6887fAbF931640f67cab3e3a16F4dC', + buyTokenUrl: + 'https://tethys.finance/swap?inputCurrency=METIS&outputCurrency=0xbB06DCA3AE6887fAbF931640f67cab3e3a16F4dC', + createdAt: 1642623639, + }, + { + id: 'tethys-metis-m.usdc', + name: 'm.USDC-METIS LP', + token: 'm.USDC-METIS TLP', + tokenDescription: 'Tethys', + tokenAddress: '0xDd7dF3522a49e6e1127bf1A1d3bAEa3bc100583B', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooTethysm.USDC-METIS', + earnedTokenAddress: '0x2d04969ED7D1b186797C44dF5F5634Eb9C89aF6b', + earnContractAddress: '0x2d04969ED7D1b186797C44dF5F5634Eb9C89aF6b', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'tethys-metis-m.usdc', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Tethys', + assets: ['mUSDC', 'METIS'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://tethys.finance/pool/add?inputCurrency=METIS&outputCurrency=0xEA32A96608495e54156Ae48931A7c20f0dcc1a21', + buyTokenUrl: + 'https://tethys.finance/swap?inputCurrency=METIS&outputCurrency=0xEA32A96608495e54156Ae48931A7c20f0dcc1a21', + createdAt: 1642623846, + }, + { + id: 'tethys-weth-metis', + name: 'WETH-METIS LP', + token: 'WETH-METIS TLP', + tokenDescription: 'Tethys', + tokenAddress: '0xEE5adB5b0DfC51029Aca5Ad4Bc684Ad676b307F7', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooTethysWETH-METIS', + earnedTokenAddress: '0xbb8155672A297dE54E6E87d0755F03bd60B7f166', + earnContractAddress: '0xbb8155672A297dE54E6E87d0755F03bd60B7f166', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'tethys-weth-metis', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Tethys', + assets: ['WETH', 'METIS'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://tethys.finance/pool/add?inputCurrency=METIS&outputCurrency=0x420000000000000000000000000000000000000A', + buyTokenUrl: + 'https://tethys.finance/swap?inputCurrency=METIS&outputCurrency=0x420000000000000000000000000000000000000A', + createdAt: 1642624056, + }, + { + id: 'netswap-nett-m.usdt', + name: 'm.USDT-NETT LP', + token: 'm.USDT-NETT LP', + tokenDescription: 'Netswap', + tokenAddress: '0x7D02ab940d7dD2B771e59633bBC1ed6EC2b99Af1', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooNetswapm.USDT-NETT', + earnedTokenAddress: '0x29C4C22eC7dF7e936Cb3e6C4A7E5eAE751C7d86B', + earnContractAddress: '0x29C4C22eC7dF7e936Cb3e6C4A7E5eAE751C7d86B', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'netswap-nett-m.usdt', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Netswap', + assets: ['mUSDT', 'NETT'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_LOW', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://netswap.io/#/add/0x90fe084f877c65e1b577c7b2ea64b8d8dd1ab278/0xbb06dca3ae6887fabf931640f67cab3e3a16f4dc', + buyTokenUrl: + 'https://netswap.io/#/swap?inputCurrency=0x90fe084f877c65e1b577c7b2ea64b8d8dd1ab278&outputCurrency=0xbb06dca3ae6887fabf931640f67cab3e3a16f4dc', + createdAt: 1642356425, + }, + { + id: 'netswap-nett-metis', + name: 'METIS-NETT LP', + token: 'METIS-NETT LP', + tokenDescription: 'Netswap', + tokenAddress: '0x60312d4EbBF3617d3D33841906b5868A86931Cbd', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooNetswapMETIS-NETT', + earnedTokenAddress: '0xC96b496F78d1a45D9cec6d628a75614ed230D6D4', + earnContractAddress: '0xC96b496F78d1a45D9cec6d628a75614ed230D6D4', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'netswap-nett-metis', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Netswap', + assets: ['METIS', 'NETT'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://netswap.io/#/add/0x90fe084f877c65e1b577c7b2ea64b8d8dd1ab278/0xDeadDeAddeAddEAddeadDEaDDEAdDeaDDeAD0000', + buyTokenUrl: + 'https://netswap.io/#/swap?inputCurrency=0x90fe084f877c65e1b577c7b2ea64b8d8dd1ab278&outputCurrency=0xDeadDeAddeAddEAddeadDEaDDEAdDeaDDeAD0000', + createdAt: 1642362780, + }, + { + id: 'netswap-nett-m.usdc', + name: 'm.USDC-NETT LP', + token: 'm.USDC-NETT LP', + tokenDescription: 'Netswap', + tokenAddress: '0x0724d37522585E87d27C802728E824862Dc72861', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooNetswapmUSDC-NETT', + earnedTokenAddress: '0x89E6F4dba7337F123D9915ADF2B61B8d8c2bCA31', + earnContractAddress: '0x89E6F4dba7337F123D9915ADF2B61B8d8c2bCA31', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'netswap-nett-m.usdc', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Netswap', + assets: ['mUSDC', 'NETT'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_LOW', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://netswap.io/#/add/0x90fe084f877c65e1b577c7b2ea64b8d8dd1ab278/0xEA32A96608495e54156Ae48931A7c20f0dcc1a21', + buyTokenUrl: + 'https://netswap.io/#/swap?inputCurrency=0x90fe084f877c65e1b577c7b2ea64b8d8dd1ab278&outputCurrency=0xEA32A96608495e54156Ae48931A7c20f0dcc1a21', + createdAt: 1642363788, + }, + { + id: 'netswap-bnb-nett-eol', + name: 'BNB-NETT LP', + token: 'BNB-NETT LP', + tokenDescription: 'Netswap', + tokenAddress: '0x3bF77b9192579826f260Bc48F2214Dfba840fcE5', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooNetswapBNB-NETT', + earnedTokenAddress: '0x92EB8b4A8fF3df4A610BC59D1e704550dBB978DE', + earnContractAddress: '0x92EB8b4A8fF3df4A610BC59D1e704550dBB978DE', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'netswap-bnb-nett', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Netswap', + assets: ['BNB', 'NETT'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_LOW', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://netswap.io/#/add/0x90fe084f877c65e1b577c7b2ea64b8d8dd1ab278/0x2692BE44A6E38B698731fDDf417d060f0d20A0cB', + buyTokenUrl: + 'https://netswap.io/#/swap?inputCurrency=0x90fe084f877c65e1b577c7b2ea64b8d8dd1ab278&outputCurrency=0x2692BE44A6E38B698731fDDf417d060f0d20A0cB', + createdAt: 1642364144, + }, + { + id: 'netswap-weth-nett', + name: 'WETH-NETT LP', + token: 'WETH-NETT LP', + tokenDescription: 'Netswap', + tokenAddress: '0xC8aE82A0ab6AdA2062B812827E1556c0fa448dd0', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooNetswapWETH-NETT', + earnedTokenAddress: '0x3DD36E64784FDAEe7BD202c78322a0d8EB1BB32b', + earnContractAddress: '0x3DD36E64784FDAEe7BD202c78322a0d8EB1BB32b', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'netswap-weth-nett', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Netswap', + assets: ['WETH', 'NETT'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_LOW', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://netswap.io/#/add/0x90fe084f877c65e1b577c7b2ea64b8d8dd1ab278/0x420000000000000000000000000000000000000A', + buyTokenUrl: + 'https://netswap.io/#/swap?inputCurrency=0x90fe084f877c65e1b577c7b2ea64b8d8dd1ab278&outputCurrency=0x420000000000000000000000000000000000000A', + createdAt: 1642363913, + }, + { + id: 'netswap-weth-metis', + name: 'WETH-METIS LP', + token: 'WETH-METIS LP', + tokenDescription: 'Netswap', + tokenAddress: '0x59051B5F5172b69E66869048Dc69D35dB0B3610d', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooNetswapWETH-METIS', + earnedTokenAddress: '0xB84486eA8B34C65cD3bf3DeeB6990AA0a27a2EaF', + earnContractAddress: '0xB84486eA8B34C65cD3bf3DeeB6990AA0a27a2EaF', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'netswap-weth-metis', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Netswap', + assets: ['WETH', 'METIS'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_HIGH', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://netswap.io/#/add/0xDeadDeAddeAddEAddeadDEaDDEAdDeaDDeAD0000/0x420000000000000000000000000000000000000A', + buyTokenUrl: + 'https://netswap.io/#/swap?inputCurrency=0xDeadDeAddeAddEAddeadDEaDDEAdDeaDDeAD0000&outputCurrency=0x420000000000000000000000000000000000000A', + createdAt: 1642364450, + }, + { + id: 'netswap-m.usdt-metis-eol', + name: 'm.USDT-METIS LP', + token: 'm.USDT-METIS LP', + tokenDescription: 'Netswap', + tokenAddress: '0x3D60aFEcf67e6ba950b499137A72478B2CA7c5A1', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooNetswapm.USDT-METIS', + earnedTokenAddress: '0x085bf6f912A42D0d8Ed53D4998b07F9A535315f0', + earnContractAddress: '0x085bf6f912A42D0d8Ed53D4998b07F9A535315f0', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'netswap-m.usdt-metis', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Netswap', + assets: ['mUSDT', 'METIS'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_HIGH', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://netswap.io/#/add/0xDeadDeAddeAddEAddeadDEaDDEAdDeaDDeAD0000/0xbB06DCA3AE6887fAbF931640f67cab3e3a16F4dC', + buyTokenUrl: + 'https://netswap.io/#/swap?inputCurrency=0xDeadDeAddeAddEAddeadDEaDDEAdDeaDDeAD0000&outputCurrency=0xbB06DCA3AE6887fAbF931640f67cab3e3a16F4dC', + createdAt: 1642365041, + }, + { + id: 'netswap-metis-m.usdc', + name: 'm.USDC-METIS LP', + token: 'm.USDC-METIS LP', + tokenDescription: 'Netswap', + tokenAddress: '0x5Ae3ee7fBB3Cb28C17e7ADc3a6Ae605ae2465091', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooNetswapm.USDC-METIS', + earnedTokenAddress: '0xD602655aAF104106E880221b124A20891f769dE1', + earnContractAddress: '0xD602655aAF104106E880221b124A20891f769dE1', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'netswap-metis-m.usdc', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Netswap', + assets: ['mUSDC', 'METIS'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_HIGH', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://netswap.io/#/add/0xDeadDeAddeAddEAddeadDEaDDEAdDeaDDeAD0000/0xEA32A96608495e54156Ae48931A7c20f0dcc1a21', + buyTokenUrl: + 'https://netswap.io/#/swap?inputCurrency=0xDeadDeAddeAddEAddeadDEaDDEAdDeaDDeAD0000&outputCurrency=0xEA32A96608495e54156Ae48931A7c20f0dcc1a21', + createdAt: 1642365277, + }, + { + id: 'netswap-weth-m.usdt-eol', + name: 'm.USDT-WETH LP', + token: 'm.USDT-WETH LP', + tokenDescription: 'Netswap', + tokenAddress: '0x4Db4CE7f5b43A6B455D3c3057b63A083b09b8376', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooNetswapm.USDT-WETH', + earnedTokenAddress: '0xdcabA5d3907283a470Ad171eA6b722bCD6540c78', + earnContractAddress: '0xdcabA5d3907283a470Ad171eA6b722bCD6540c78', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'netswap-weth-m.usdt', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Netswap', + assets: ['mUSDT', 'WETH'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_HIGH', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://netswap.io/#/add/0x420000000000000000000000000000000000000A/0xbB06DCA3AE6887fAbF931640f67cab3e3a16F4dC', + buyTokenUrl: + 'https://netswap.io/#/swap?inputCurrency=0x420000000000000000000000000000000000000A&outputCurrency=0xbB06DCA3AE6887fAbF931640f67cab3e3a16F4dC', + createdAt: 1642365495, + }, + { + id: 'netswap-weth-m.usdc', + name: 'm.USDC-WETH LP', + token: 'm.USDC-WETH LP', + tokenDescription: 'Netswap', + tokenAddress: '0xF5988809ac97C65121e2c34f5D49558e3D12C253', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooNetswapm.USDC-WETH', + earnedTokenAddress: '0x85f287c860f02bAc3aE5023eFb547b6B7Aa4D9eD', + earnContractAddress: '0x85f287c860f02bAc3aE5023eFb547b6B7Aa4D9eD', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'netswap-weth-m.usdc', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Netswap', + assets: ['mUSDC', 'WETH'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_HIGH', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://netswap.io/#/add/0x420000000000000000000000000000000000000A/0xEA32A96608495e54156Ae48931A7c20f0dcc1a21', + buyTokenUrl: + 'https://netswap.io/#/swap?inputCurrency=0x420000000000000000000000000000000000000A&outputCurrency=0xEA32A96608495e54156Ae48931A7c20f0dcc1a21', + createdAt: 1642365777, + }, + { + id: 'netswap-m.usdt-m.usdc', + name: 'm.USDC-m.USDT LP', + token: 'm.USDC-m.USDT LP', + tokenDescription: 'Netswap', + tokenAddress: '0x1caD5f8f5D4C0AD49646B2565CC0cA725E4280EA', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooNetswapm.USDC-m.USDT', + earnedTokenAddress: '0x2dC73D17Ae01De6D49aab45668601591FF283dee', + earnContractAddress: '0x2dC73D17Ae01De6D49aab45668601591FF283dee', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'netswap-m.usdt-m.usdc', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Netswap', + assets: ['mUSDC', 'mUSDT'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_HIGH', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://netswap.io/#/add/0xbB06DCA3AE6887fAbF931640f67cab3e3a16F4dC/0xEA32A96608495e54156Ae48931A7c20f0dcc1a21', + buyTokenUrl: + 'https://netswap.io/#/swap?inputCurrency=0xbB06DCA3AE6887fAbF931640f67cab3e3a16F4dC&outputCurrency=0xEA32A96608495e54156Ae48931A7c20f0dcc1a21', + createdAt: 1642365937, + }, +]; diff --git a/src/features/configure/vault/moonbeam_pools.js b/src/features/configure/vault/moonbeam_pools.js new file mode 100644 index 000000000..65518c00c --- /dev/null +++ b/src/features/configure/vault/moonbeam_pools.js @@ -0,0 +1,1319 @@ +export const moonbeamPools = [ + { + id: 'moonbeam-bifi-maxi', + logo: 'single-assets/BIFI.png', + name: 'BIFI Maxi', + token: 'BIFI', + tokenDescription: 'Beefy', + tokenAddress: '0x595c8481c48894771CE8FaDE54ac6Bf59093F9E8', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooMoonbeamBIFI', + earnedTokenAddress: '0xd1bAb603eee03fA99A378d90d5d83186fEB81aA9', + earnContractAddress: '0xd1bAb603eee03fA99A378d90d5d83186fEB81aA9', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'BIFI', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Beefy', + assets: ['BIFI'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'Maxi', + withdrawalFee: '0%', + buyTokenUrl: + 'https://app.beamswap.io/exchange/swap?inputCurrency=0xacc15dc74880c9944775448304b263d191c6077f&outputCurrency=0x595c8481c48894771CE8FaDE54ac6Bf59093F9E8', + createdAt: 1644700692, + }, + { + id: 'stellaswap-dualETH', + name: 'ETH.mad-ETH.any LP', + token: 'ETH.mad-ETH.any LP', + tokenDescription: 'Stellaswap', + tokenAddress: '0xa3eE3a0a36Dc915fDc93062e4B386DF37d00217E', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooStellaswapDualETH', + earnedTokenAddress: '0xdd856F58E8B01579ef5DbE78f597615D66c320EE', + earnContractAddress: '0xdd856F58E8B01579ef5DbE78f597615D66c320EE', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'stellaswap-dualETH', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Stellaswap', + assets: ['ETHs', 'ETH'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://app.stellaswap.com/exchange/pool/stable/add/0xb86271571c90ad4E0C9776228437340b42623402', + createdAt: 1653747480, + }, + + { + id: 'stellaswap-weth-wglmr', + name: 'ETH.mad-GLMR LP', + token: 'ETH.mad-GLMR LP', + tokenDescription: 'Stellaswap', + tokenAddress: '0x9d19EDBFd29D2e01537624B25806493dA0d73bBE', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooStellaswapETHmad-GLMR', + earnedTokenAddress: '0xA2809e408875B892803d62Ed07c9fa79364be555', + earnContractAddress: '0xA2809e408875B892803d62Ed07c9fa79364be555', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'stellaswap-weth-wglmr', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Stellaswap', + assets: ['GLMR', 'ETHs'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_HIGH', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://app.stellaswap.com/exchange/add/0xAcc15dC74880C9944775448304B263D191c6077F/0x30D2a9F5FDf90ACe8c17952cbb4eE48a55D916A7', + createdAt: 1653485280, + }, + + { + id: 'stellaswap-usdcmad-wglmr', + name: 'USDC.mad-GLMR LP', + token: 'USDC.mad-GLMR LP', + tokenDescription: 'Stellaswap', + tokenAddress: '0x9bFcf685e641206115dadc0C9ab17181e1d4975c', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooStellaswapUSDCmad-GLMR', + earnedTokenAddress: '0xD03855Caad39992Eb04D730eafb7b0D8b789C4cB', + earnContractAddress: '0xD03855Caad39992Eb04D730eafb7b0D8b789C4cB', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'stellaswap-usdcmad-wglmr', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Stellaswap', + assets: ['GLMR', 'USDCs'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_HIGH', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://app.stellaswap.com/exchange/add/0xAcc15dC74880C9944775448304B263D191c6077F/0x8f552a71EFE5eeFc207Bf75485b356A0b3f01eC9', + createdAt: 1653477432, + }, + + { + id: 'stellaswap-stella-usdc', + name: 'STELLA-USDC LP', + token: 'STELLA-USDC LP', + tokenDescription: 'Stellaswap', + tokenAddress: '0x81e11a9374033d11Cc7e7485A7192AE37D0795D6', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooStellaswapSTELLA-USDC', + earnedTokenAddress: '0xfb47EC2f215D579cc4Cb0B19ec21AD58749518ad', + earnContractAddress: '0xfb47EC2f215D579cc4Cb0B19ec21AD58749518ad', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'stellaswap-stella-usdc', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Stellaswap', + assets: ['STELLA', 'USDC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_HIGH', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://app.stellaswap.com/exchange/add/0x0E358838ce72d5e61E0018a2ffaC4bEC5F4c88d2/0x818ec0A7Fe18Ff94269904fCED6AE3DaE6d6dC0b', + buyTokenUrl: 'https://app.stellaswap.com/exchange/swap', + createdAt: 1647359160, + }, + { + id: 'stellaswap-stella-wglmr', + name: 'STELLA-GLMR LP', + token: 'STELLA-GLMR LP', + tokenDescription: 'Stellaswap', + tokenAddress: '0x7F5Ac0FC127bcf1eAf54E3cd01b00300a0861a62', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooStellaswapSTELLA-GLMR', + earnedTokenAddress: '0x515989A9Add6Bb3Ab78b59a2AE30E398E740886F', + earnContractAddress: '0x515989A9Add6Bb3Ab78b59a2AE30E398E740886F', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'stellaswap-stella-wglmr', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Stellaswap', + assets: ['STELLA', 'GLMR'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_HIGH', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://app.stellaswap.com/exchange/add/0x0E358838ce72d5e61E0018a2ffaC4bEC5F4c88d2/ETH', + buyTokenUrl: 'https://app.stellaswap.com/exchange/swap', + createdAt: 1647351540, + }, + { + id: 'stella-xstella', + logo: 'single-assets/STELLA.png', + name: 'STELLA', + token: 'STELLA', + tokenDescription: 'Stellaswap', + tokenAddress: '0x0E358838ce72d5e61E0018a2ffaC4bEC5F4c88d2', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooStella', + earnedTokenAddress: '0x981505ca00b78f15d2c22D6B41f1c0ea96a56f3a', + earnContractAddress: '0x981505ca00b78f15d2c22D6B41f1c0ea96a56f3a', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'STELLA', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Stellaswap', + assets: ['STELLA'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'SingleStake', + withdrawalFee: '0%', + buyTokenUrl: + 'https://app.beamswap.io/exchange/swap?inputCurrency=0xacc15dc74880c9944775448304b263d191c6077f&outputCurrency=0x0E358838ce72d5e61E0018a2ffaC4bEC5F4c88d2', + createdAt: 1651693314, + }, + { + id: 'stellaswap-wglmr-xcdot', + name: 'xcDOT-GLMR LP', + token: 'xcDOT-GLMR LP', + tokenDescription: 'Stellaswap', + tokenAddress: '0xa927E1e1E044CA1D9fe1854585003477331fE2Af', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooStellaxcDOT-GLMR', + earnedTokenAddress: '0xAECd33b7b048960A78CacF59F8da658E1FF0eD64', + earnContractAddress: '0xAECd33b7b048960A78CacF59F8da658E1FF0eD64', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'stellaswap-wglmr-xcdot', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Stellaswap', + assets: ['xcDOT', 'GLMR'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_HIGH', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratMultiLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://app.stellaswap.com/exchange/add/ETH/0xFfFFfFff1FcaCBd218EDc0EbA20Fc2308C778080', + buyTokenUrl: 'https://app.stellaswap.com/exchange/swap', + createdAt: 1651689624, + }, + { + id: 'stellaswap-atom-wglmr', + name: 'ATOM-GLMR LP', + token: 'ATOM-GLMR LP', + tokenDescription: 'Stellaswap', + tokenAddress: '0xf4C10263f2A4B1f75b8a5FD5328fb61605321639', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooStellaswapATOM-GLMR', + earnedTokenAddress: '0x3f08725D67046Ac3d736272127B2F3adff396B1e', + earnContractAddress: '0x3f08725D67046Ac3d736272127B2F3adff396B1e', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'stellaswap-atom-wglmr', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Stellaswap', + assets: ['ATOM', 'GLMR'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_HIGH', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://app.stellaswap.com/exchange/add/ETH/0x27292cf0016E5dF1d8b37306B2A98588aCbD6fCA', + buyTokenUrl: 'https://app.stellaswap.com/exchange/swap', + createdAt: 1649857662, + }, + { + id: 'stellaswap-atom-usdc', + name: 'ATOM-USDC LP', + token: 'ATOM-USDC LP', + tokenDescription: 'Stellaswap', + tokenAddress: '0x051FcF8986B30860a1341e0031e5622Bd18d8A85', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooStellaswapATOM-USDC', + earnedTokenAddress: '0x0F944e797fd83a1533dD44031C858ee388655cd6', + earnContractAddress: '0x0F944e797fd83a1533dD44031C858ee388655cd6', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'stellaswap-atom-usdc', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Stellaswap', + assets: ['ATOM', 'USDC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_HIGH', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://app.stellaswap.com/exchange/add/0x818ec0A7Fe18Ff94269904fCED6AE3DaE6d6dC0b/0x27292cf0016E5dF1d8b37306B2A98588aCbD6fCA', + buyTokenUrl: 'https://app.stellaswap.com/exchange/swap', + createdAt: 1649857842, + }, + { + id: 'stellaswap-usdc-ftm', + name: 'USDC-FTM LP', + token: 'USDC-FTM LP', + tokenDescription: 'Stellaswap', + tokenAddress: '0x077Fc7B4455050249D7F5511ED588a665E03e6C5', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooStellaswapUSDC-FTM', + earnedTokenAddress: '0x622d8A33d67464596b6612BB2d396a8d7870B536', + earnContractAddress: '0x622d8A33d67464596b6612BB2d396a8d7870B536', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'stellaswap-usdc-ftm', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Stellaswap', + assets: ['USDC', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_HIGH', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://app.stellaswap.com/exchange/add/0x818ec0A7Fe18Ff94269904fCED6AE3DaE6d6dC0b/0xC19281F22A075E0F10351cd5D6Ea9f0AC63d4327', + buyTokenUrl: 'https://app.stellaswap.com/exchange/swap', + createdAt: 1648745802, + }, + { + id: 'stellaswap-wglmr-ftm', + name: 'GLMR-FTM LP', + token: 'GLMR-FTM LP', + tokenDescription: 'Stellaswap', + tokenAddress: '0x2Afab635EA2DC4B498EF1C00E63b7a7dBa9c93C6', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooStellaswapGLMR-FTM', + earnedTokenAddress: '0xbCF6b67A5Cd2642503b92c6367F9F0C592ACA744', + earnContractAddress: '0xbCF6b67A5Cd2642503b92c6367F9F0C592ACA744', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'stellaswap-wglmr-ftm', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Stellaswap', + assets: ['GLMR', 'FTM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_HIGH', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://app.stellaswap.com/exchange/add/0xC19281F22A075E0F10351cd5D6Ea9f0AC63d4327/ETH', + buyTokenUrl: 'https://app.stellaswap.com/exchange/swap', + createdAt: 1648745970, + }, + { + id: 'stellaswap-avax-wglmr', + name: 'AVAX-GLMR LP', + token: 'AVAX-GLMR LP', + tokenDescription: 'Stellaswap', + tokenAddress: '0x2F412C140080039eaF9dE01c95e84cFb1c8D98aD', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooStellaswapAVAX-GLMR', + earnedTokenAddress: '0x016A2b0AA20F595f3d692529d74bF107E394B69f', + earnContractAddress: '0x016A2b0AA20F595f3d692529d74bF107E394B69f', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'stellaswap-avax-wglmr', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Stellaswap', + assets: ['AVAX', 'GLMR'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_HIGH', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://app.stellaswap.com/exchange/add/0x4792C1EcB969B036eb51330c63bD27899A13D84e/ETH', + buyTokenUrl: 'https://app.stellaswap.com/exchange/swap', + createdAt: 1648746066, + }, + { + id: 'stellaswap-matic-wglmr', + name: 'MATIC-GLMR LP', + token: 'MATIC-GLMR LP', + tokenDescription: 'Stellaswap', + tokenAddress: '0x6775ff3828a19EB5926C0C4D572183cA15Aa4C08', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooStellaswapMATIC-GLMR', + earnedTokenAddress: '0xcA010C39E70Dc625Ec4f10a9f5d7d28d3EAD2703', + earnContractAddress: '0xcA010C39E70Dc625Ec4f10a9f5d7d28d3EAD2703', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'stellaswap-matic-wglmr', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Stellaswap', + assets: ['MATIC', 'GLMR'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_HIGH', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://app.stellaswap.com/exchange/add/0x3405A1bd46B85c5C029483FbECf2F3E611026e45/ETH', + buyTokenUrl: 'https://app.stellaswap.com/exchange/swap', + createdAt: 1648746150, + }, + { + id: 'stellaswap-luna-wglmr-eol', + name: 'LUNA-GLMR LP', + token: 'LUNA-GLMR LP', + tokenDescription: 'Stellaswap', + tokenAddress: '0xE2BFE2F1437f249B15B7111011219995ecc43155', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooStellaswapLUNA-GLMR', + earnedTokenAddress: '0x253f0C0b847d516B49F8481df318d3DEcB048FC5', + earnContractAddress: '0x253f0C0b847d516B49F8481df318d3DEcB048FC5', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'stellaswap-luna-wglmr', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Stellaswap', + assets: ['LUNA', 'GLMR'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_HIGH', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://app.stellaswap.com/exchange/add/0x31DAB3430f3081dfF3Ccd80F17AD98583437B213/ETH', + buyTokenUrl: 'https://app.stellaswap.com/exchange/swap', + createdAt: 1648746234, + }, + { + id: 'stellaswap-axlust-wglmr-eol', + name: 'UST-GLMR LP', + token: 'UST-GLMR LP', + tokenDescription: 'Stellaswap', + tokenAddress: '0xb6835036C9A2A96D3BfB8DBE1722971fEb456a83', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooStellaswapUST-GLMR', + earnedTokenAddress: '0xb0b90AD6588F3B072Bc4B3E7237189E6AC6808A7', + earnContractAddress: '0xb0b90AD6588F3B072Bc4B3E7237189E6AC6808A7', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'stellaswap-axlust-wglmr', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Stellaswap', + assets: ['UST', 'GLMR'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_HIGH', + 'AUDIT', + 'CONTRACTS_VERIFIED', + 'ALGO_STABLE', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://app.stellaswap.com/exchange/add/0x085416975fe14C2A731a97eC38B9bF8135231F62/ETH', + buyTokenUrl: 'https://app.stellaswap.com/exchange/swap', + createdAt: 1647958278, + }, + { + id: 'stellaswap-dai-usdc', + name: 'DAI-USDC LP', + token: 'DAI-USDC LP', + tokenDescription: 'Stellaswap', + tokenAddress: '0x5Ced2f8DD70dc25cbA10ad18c7543Ad9ad5AEeDD', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooStellaswapDAI-USDC', + earnedTokenAddress: '0x0b68f9585E24c8D271eFCf60ebd35c1a94A5F91f', + earnContractAddress: '0x0b68f9585E24c8D271eFCf60ebd35c1a94A5F91f', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'stellaswap-dai-usdc', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Stellaswap', + assets: ['DAI', 'USDC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_HIGH', + 'AUDIT', + 'CONTRACTS_VERIFIED', + 'OVER_COLLAT_ALGO_STABLECOIN', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://app.stellaswap.com/exchange/add/0x765277EebeCA2e31912C9946eAe1021199B39C61/0x818ec0A7Fe18Ff94269904fCED6AE3DaE6d6dC0b', + buyTokenUrl: 'https://app.stellaswap.com/exchange/swap', + createdAt: 1647958428, + }, + { + id: 'stellaswap-usdc-eth', + name: 'USDC-ETH LP', + token: 'USDC-ETH LP', + tokenDescription: 'Stellaswap', + tokenAddress: '0x0Aa48bF937ee8F41f1a52D225EF5A6F6961e39FA', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooStellaswapUSDC-ETH', + earnedTokenAddress: '0x44f04CA4B29c5F5471345dcaBAB6e40320374bf4', + earnContractAddress: '0x44f04CA4B29c5F5471345dcaBAB6e40320374bf4', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'stellaswap-usdc-eth', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Stellaswap', + assets: ['USDC', 'ETH'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_HIGH', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://app.stellaswap.com/exchange/add/0x818ec0A7Fe18Ff94269904fCED6AE3DaE6d6dC0b/0xfA9343C3897324496A05fC75abeD6bAC29f8A40f', + buyTokenUrl: 'https://app.stellaswap.com/exchange/swap', + createdAt: 1647958674, + }, + { + id: 'stellaswap-wglmr-eth', + name: 'GLMR-ETH LP', + token: 'GLMR-ETH LP', + tokenDescription: 'Stellaswap', + tokenAddress: '0x49a1cC58dCf28D0139dAEa9c18A3ca23108E78B3', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooStellaswapGLMR-ETH', + earnedTokenAddress: '0x3871E20e08ae59bDa4b42A1a6C27403bEedDa042', + earnContractAddress: '0x3871E20e08ae59bDa4b42A1a6C27403bEedDa042', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'stellaswap-wglmr-eth', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Stellaswap', + assets: ['GLMR', 'ETH'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_HIGH', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://app.stellaswap.com/exchange/add/ETH/0xfA9343C3897324496A05fC75abeD6bAC29f8A40f', + buyTokenUrl: 'https://app.stellaswap.com/exchange/swap', + createdAt: 1647958770, + }, + { + id: 'stellaswap-usdc-wglmr', + name: 'USDC-GLMR LP', + token: 'USDC-GLMR LP', + tokenDescription: 'Stellaswap', + tokenAddress: '0x555B74dAFC4Ef3A5A1640041e3244460Dc7610d1', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooStellaswapUSDC-GLMR', + earnedTokenAddress: '0x28C88367CC1E52A397dE5e1Ec3c4F163083ee607', + earnContractAddress: '0x28C88367CC1E52A397dE5e1Ec3c4F163083ee607', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'stellaswap-usdc-wglmr', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Stellaswap', + assets: ['USDC', 'GLMR'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_HIGH', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://app.stellaswap.com/exchange/add/0x818ec0A7Fe18Ff94269904fCED6AE3DaE6d6dC0b/ETH', + buyTokenUrl: 'https://app.stellaswap.com/exchange/swap', + createdAt: 1647355452, + }, + { + id: 'stellaswap-usdc-usdt', + name: 'USDC-USDT LP', + token: 'USDC-USDT LP', + tokenDescription: 'Stellaswap', + tokenAddress: '0x8BC3CceeF43392B315dDD92ba30b435F79b66b9e', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooStellaswapUSDC-USDT', + earnedTokenAddress: '0x1a93dB99B91c944CBC01093DE7F13779ca2c6ED6', + earnContractAddress: '0x1a93dB99B91c944CBC01093DE7F13779ca2c6ED6', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'stellaswap-usdc-usdt', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Stellaswap', + assets: ['USDC', 'USDT'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_HIGH', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://app.stellaswap.com/exchange/add/0x818ec0A7Fe18Ff94269904fCED6AE3DaE6d6dC0b/0xeFAeeE334F0Fd1712f9a8cc375f427D9Cdd40d73', + buyTokenUrl: 'https://app.stellaswap.com/exchange/swap', + createdAt: 1647522606, + }, + { + id: 'stellaswap-usdc-bnb', + name: 'USDC-BNB LP', + token: 'USDC-BNB LP', + tokenDescription: 'Stellaswap', + tokenAddress: '0xAc2657ba28768FE5F09052f07A9B7ea867A4608f', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooStellaswapUSDC-BNB', + earnedTokenAddress: '0xA2e36EB5FecF7A567996214D6f1C9973dF59d93d', + earnContractAddress: '0xA2e36EB5FecF7A567996214D6f1C9973dF59d93d', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'stellaswap-usdc-bnb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Stellaswap', + assets: ['USDC', 'BNB'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_HIGH', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://app.stellaswap.com/exchange/add/0x818ec0A7Fe18Ff94269904fCED6AE3DaE6d6dC0b/0xc9BAA8cfdDe8E328787E29b4B078abf2DaDc2055', + buyTokenUrl: 'https://app.stellaswap.com/exchange/swap', + createdAt: 1647524406, + }, + { + id: 'stellaswap-busd-wglmr', + name: 'BUSD-GLMR LP', + token: 'BUSD-GLMR LP', + tokenDescription: 'Stellaswap', + tokenAddress: '0x367c36dAE9ba198A4FEe295c22bC98cB72f77Fe1', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooStellaswapBUSD-GLMR', + earnedTokenAddress: '0x3543c002c913Bc90e69C689b945f8D2A042f1dA0', + earnContractAddress: '0x3543c002c913Bc90e69C689b945f8D2A042f1dA0', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'stellaswap-busd-wglmr', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Stellaswap', + assets: ['BUSD', 'GLMR'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_HIGH', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://app.stellaswap.com/exchange/add/0xA649325Aa7C5093d12D6F98EB4378deAe68CE23F/0xAcc15dC74880C9944775448304B263D191c6077F', + buyTokenUrl: 'https://app.stellaswap.com/exchange/swap', + createdAt: 1647525054, + }, + { + id: 'stellaswap-ape-wglmr-eol', + name: 'APE-GLMR LP', + token: 'APE-GLMR LP', + tokenDescription: 'Stellaswap', + tokenAddress: '0x55Db71E6bEaB323290f6571C428C171e15CDBAD2', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooStellaswapAPE-GLMR', + earnedTokenAddress: '0x77089478c41b6a8B29dDD6E3cb2F475475A228A5', + earnContractAddress: '0x77089478c41b6a8B29dDD6E3cb2F475475A228A5', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'stellaswap-ape-wglmr', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Stellaswap', + assets: ['APE', 'GLMR'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_HIGH', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://app.stellaswap.com/exchange/add/0x3D632d9e1a60a0880Dd45E61f279D919b5748377/ETH', + buyTokenUrl: 'https://app.stellaswap.com/exchange/swap', + createdAt: 1648601028, + }, + { + id: 'solarflare-ust-wglmr-eol', + name: 'UST-GLMR LP', + token: 'UST-GLMR SLP', + tokenDescription: 'Solarflare', + tokenAddress: '0xa2844004Ce6336007f09D6Bf959B5602ABbf19fb', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSolarflareUST-GLMR', + earnedTokenAddress: '0x9D55cAEE108aBdd4C47E42088C97ecA43510E969', + earnContractAddress: '0x9D55cAEE108aBdd4C47E42088C97ecA43510E969', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'solarflare-ust-wglmr', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Solarflare', + assets: ['UST', 'GLMR'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_HIGH', + 'AUDIT', + 'CONTRACTS_VERIFIED', + 'ALGO_STABLE', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://app.solarflare.io/exchange/add/0x085416975fe14C2A731a97eC38B9bF8135231F62/0xAcc15dC74880C9944775448304B263D191c6077F', + buyTokenUrl: + 'https://app.solarflare.io/exchange/swap?inputCurrency=0x085416975fe14C2A731a97eC38B9bF8135231F62&outputCurrency=0xAcc15dC74880C9944775448304B263D191c6077F', + createdAt: 1647958278, + }, + { + id: 'solarflare-luna-flare-eol', + name: 'LUNA-FLARE LP', + token: 'LUNA-FLARE SLP', + tokenDescription: 'Solarflare', + tokenAddress: '0xAc69fa960b5fcc90559BF39284C00946e7d8Eb78', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSolarflareLUNA-FLARE', + earnedTokenAddress: '0x9584e368355D4634f1bdD7b0e7B08fFEa38ED0b0', + earnContractAddress: '0x9584e368355D4634f1bdD7b0e7B08fFEa38ED0b0', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'solarflare-luna-flare', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Solarflare', + assets: ['LUNA', 'FLARE'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://app.solarflare.io/exchange/add/0xE3e43888fa7803cDC7BEA478aB327cF1A0dc11a7/0x31DAB3430f3081dfF3Ccd80F17AD98583437B213', + buyTokenUrl: + 'https://app.solarflare.io/exchange/swap?inputCurrency=0x31DAB3430f3081dfF3Ccd80F17AD98583437B213&outputCurrency=0xE3e43888fa7803cDC7BEA478aB327cF1A0dc11a7', + createdAt: 1646426436, + }, + { + id: 'solarflare-wglmr-flare', + name: 'FLARE-GLMR LP', + token: 'FLARE-GLMR SLP', + tokenDescription: 'Solarflare', + tokenAddress: '0x26A2abD79583155EA5d34443b62399879D42748A', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSolarflareFLARE-GLMR', + earnedTokenAddress: '0x37A8b016EF27fBCF73F73Fb9Dc1C09C47A5d7E48', + earnContractAddress: '0x37A8b016EF27fBCF73F73Fb9Dc1C09C47A5d7E48', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'solarflare-wglmr-flare', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Solarflare', + assets: ['FLARE', 'GLMR'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://app.solarflare.io/exchange/add/0xE3e43888fa7803cDC7BEA478aB327cF1A0dc11a7/0xAcc15dC74880C9944775448304B263D191c6077F', + buyTokenUrl: + 'https://app.solarflare.io/exchange/swap?inputCurrency=0xAcc15dC74880C9944775448304B263D191c6077F&outputCurrency=0xE3e43888fa7803cDC7BEA478aB327cF1A0dc11a7', + createdAt: 1646421834, + }, + { + id: 'solarflare-usdc-wglmr', + name: 'USDC-GLMR LP', + token: 'USDC-GLMR SLP', + tokenDescription: 'Solarflare', + tokenAddress: '0xAb89eD43D10c7CE0f4D6F21616556AeCb71b9c5f', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSolarflareUSDC-GLMR', + earnedTokenAddress: '0xf26607237355D7c6183ea66EC908729E9c6eEB6b', + earnContractAddress: '0xf26607237355D7c6183ea66EC908729E9c6eEB6b', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'solarflare-usdc-wglmr', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Solarflare', + assets: ['USDCs', 'GLMR'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://app.solarflare.io/exchange/add/0x595c8481c48894771CE8FaDE54ac6Bf59093F9E8/0xAcc15dC74880C9944775448304B263D191c6077F', + buyTokenUrl: + 'https://app.solarflare.io/exchange/swap?inputCurrency=0xAcc15dC74880C9944775448304B263D191c6077F&outputCurrency=0x595c8481c48894771CE8FaDE54ac6Bf59093F9E8', + createdAt: 1646424684, + }, + { + id: 'beamswap-bifi-wglmr', + name: 'BIFI-GLMR LP', + token: 'BIFI-GLMR TLP', + tokenDescription: 'Beamswap', + tokenAddress: '0x321e45B7134b5Ed52129027F1743c8E71DA0A339', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBeamBIFI-GLMR', + earnedTokenAddress: '0x2Ba77eE40995d8FedD5212E4776aE5eBfFde7a47', + earnContractAddress: '0x2Ba77eE40995d8FedD5212E4776aE5eBfFde7a47', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'beamswap-bifi-wglmr', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Beamswap', + assets: ['BIFI', 'GLMR'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://app.beamswap.io/exchange/add/0x595c8481c48894771CE8FaDE54ac6Bf59093F9E8/0xacc15dc74880c9944775448304b263d191c6077f3', + buyTokenUrl: + 'https://app.beamswap.io/exchange/swap?inputCurrency=0x595c8481c48894771CE8FaDE54ac6Bf59093F9E8&outputCurrency=0xacc15dc74880c9944775448304b263d191c6077f', + createdAt: 1644704004, + }, + { + id: 'beamswap-usdc-ftm', + name: 'FTM-USDC LP', + token: 'FTM-USDC TLP', + tokenDescription: 'Beamswap', + tokenAddress: '0xA135de8E019447DA28f15eb480AEa0a242af5335', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBeamFTM-USDC', + earnedTokenAddress: '0x05CC7F3AaD0Cecbf926D2F4A534F55C19035718e', + earnContractAddress: '0x05CC7F3AaD0Cecbf926D2F4A534F55C19035718e', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'beamswap-usdc-ftm', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Beamswap', + assets: ['FTM', 'USDC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_HIGH', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://app.beamswap.io/exchange/add/0x818ec0a7fe18ff94269904fced6ae3dae6d6dc0b/0xC19281F22A075E0F10351cd5D6Ea9f0AC63d4327', + buyTokenUrl: + 'https://app.beamswap.io/exchange/swap?inputCurrency=0x818ec0a7fe18ff94269904fced6ae3dae6d6dc0b&outputCurrency=0xC19281F22A075E0F10351cd5D6Ea9f0AC63d4327', + createdAt: 1644703824, + }, + { + id: 'beamswap-usdc-wglmr', + name: 'USDC-GLMR LP', + token: 'USDC-GLMR TLP', + tokenDescription: 'Beamswap', + tokenAddress: '0xb929914B89584b4081C7966AC6287636F7EfD053', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBeamUSDC-GLMR', + earnedTokenAddress: '0xC96b496F78d1a45D9cec6d628a75614ed230D6D4', + earnContractAddress: '0xC96b496F78d1a45D9cec6d628a75614ed230D6D4', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'beamswap-usdc-wglmr', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Beamswap', + assets: ['USDC', 'GLMR'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://app.beamswap.io/exchange/add/0x818ec0a7fe18ff94269904fced6ae3dae6d6dc0b/0xacc15dc74880c9944775448304b263d191c6077f3', + buyTokenUrl: + 'https://app.beamswap.io/exchange/swap?inputCurrency=0x818ec0a7fe18ff94269904fced6ae3dae6d6dc0b&outputCurrency=0xacc15dc74880c9944775448304b263d191c6077f', + createdAt: 1644598122, + }, + { + id: 'beamswap-dai-usdc', + name: 'USDC-DAI LP', + token: 'USDC-DAI TLP', + tokenDescription: 'Beamswap', + tokenAddress: '0x7EF9491774a81f6dB7Bb759Fe2F645c334dCf5b1', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBeamUSDC-DAI', + earnedTokenAddress: '0x149f3dDeB5FF9bE7342D07C35D6dA19Df3F790af', + earnContractAddress: '0x149f3dDeB5FF9bE7342D07C35D6dA19Df3F790af', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'beamswap-dai-usdc', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Beamswap', + assets: ['USDC', 'DAI'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_HIGH', + 'AUDIT', + 'CONTRACTS_VERIFIED', + 'OVER_COLLAT_ALGO_STABLECOIN', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://app.beamswap.io/exchange/add/0x818ec0a7fe18ff94269904fced6ae3dae6d6dc0b/0x765277EebeCA2e31912C9946eAe1021199B39C61', + buyTokenUrl: + 'https://app.beamswap.io/exchange/swap?inputCurrency=0x818ec0a7fe18ff94269904fced6ae3dae6d6dc0b&outputCurrency=0x765277EebeCA2e31912C9946eAe1021199B39C61', + createdAt: 1644598824, + }, + { + id: 'beamswap-wglmr-glint', + name: 'GLINT-GLMR LP', + token: 'GLINT-GLMR TLP', + tokenDescription: 'Beamswap', + tokenAddress: '0x99588867e817023162F4d4829995299054a5fC57', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBeamGLINT-GLMR', + earnedTokenAddress: '0x011A0aDc7663334f73Aa6da3db9c9951d0CbB8CF', + earnContractAddress: '0x011A0aDc7663334f73Aa6da3db9c9951d0CbB8CF', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'beamswap-wglmr-glint', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Beamswap', + assets: ['GLINT', 'GLMR'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://app.beamswap.io/exchange/add/0x818ec0a7fe18ff94269904fced6ae3dae6d6dc0b/0x765277EebeCA2e31912C9946eAe1021199B39C61', + buyTokenUrl: + 'https://app.beamswap.io/exchange/swap?inputCurrency=0x818ec0a7fe18ff94269904fced6ae3dae6d6dc0b&outputCurrency=0x765277EebeCA2e31912C9946eAe1021199B39C61', + createdAt: 1644599100, + }, + { + id: 'beamswap-busd-bnb', + name: 'BUSD-BNB LP', + token: 'BUSD-BNB TLP', + tokenDescription: 'Beamswap', + tokenAddress: '0x34A1F4AB3548A92C6B32cd778Eed310FcD9A340D', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBeamBUSD-BNB', + earnedTokenAddress: '0x452bE05439d83D3A6A510F11a4Ba1F1909d1cA6d', + earnContractAddress: '0x452bE05439d83D3A6A510F11a4Ba1F1909d1cA6d', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'beamswap-busd-bnb', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Beamswap', + assets: ['BUSD', 'BNB'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_HIGH', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://app.beamswap.io/exchange/add/0xc9BAA8cfdDe8E328787E29b4B078abf2DaDc2055/0xA649325Aa7C5093d12D6F98EB4378deAe68CE23F', + buyTokenUrl: + 'https://app.beamswap.io/exchange/swap?inputCurrency=0xc9BAA8cfdDe8E328787E29b4B078abf2DaDc2055&outputCurrency=0xA649325Aa7C5093d12D6F98EB4378deAe68CE23F', + createdAt: 1644599646, + }, + { + id: 'beamswap-usdc-busd', + name: 'USDC-BUSD LP', + token: 'USDC-BUSD TLP', + tokenDescription: 'Beamswap', + tokenAddress: '0xa0799832FB2b9F18Acf44B92FbbEDCfD6442DD5e', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBeamUSDC-BUSD', + earnedTokenAddress: '0x3DD36E64784FDAEe7BD202c78322a0d8EB1BB32b', + earnContractAddress: '0x3DD36E64784FDAEe7BD202c78322a0d8EB1BB32b', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'beamswap-usdc-busd', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Beamswap', + assets: ['USDC', 'BUSD'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_HIGH', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://app.beamswap.io/exchange/add/0xA649325Aa7C5093d12D6F98EB4378deAe68CE23F/0x818ec0A7Fe18Ff94269904fCED6AE3DaE6d6dC0b', + buyTokenUrl: + 'https://app.beamswap.io/exchange/swap?inputCurrency=0xA649325Aa7C5093d12D6F98EB4378deAe68CE23F&outputCurrency=0x818ec0A7Fe18Ff94269904fCED6AE3DaE6d6dC0b', + createdAt: 1644599298, + }, + { + id: 'beamswap-usdc-eth', + name: 'USDC-ETH LP', + token: 'USDC-ETH TLP', + tokenDescription: 'Beamswap', + tokenAddress: '0x6BA3071760d46040FB4dc7B627C9f68efAca3000', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBeamUSDC-ETH', + earnedTokenAddress: '0x93E0573029Bd4452d2D4BAF7725ecf8e5B0b5Dd7', + earnContractAddress: '0x93E0573029Bd4452d2D4BAF7725ecf8e5B0b5Dd7', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'beamswap-usdc-eth', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Beamswap', + assets: ['USDC', 'ETH'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_HIGH', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://app.beamswap.io/exchange/add/0xfA9343C3897324496A05fC75abeD6bAC29f8A40f/0x818ec0A7Fe18Ff94269904fCED6AE3DaE6d6dC0b', + buyTokenUrl: + 'https://app.beamswap.io/exchange/swap?inputCurrency=0xfA9343C3897324496A05fC75abeD6bAC29f8A40f&outputCurrency=0x818ec0A7Fe18Ff94269904fCED6AE3DaE6d6dC0b', + createdAt: 1644599832, + }, + { + id: 'beamswap-usdc-usdt', + name: 'USDC-USDT LP', + token: 'USDC-USDT TLP', + tokenDescription: 'Beamswap', + tokenAddress: '0xA35B2c07Cb123EA5E1B9c7530d0812e7e03eC3c1', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBeamUSDC-USDT', + earnedTokenAddress: '0x830806F4d629a2aC60a93F594D86dD9684D0c65D', + earnContractAddress: '0x830806F4d629a2aC60a93F594D86dD9684D0c65D', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'beamswap-usdc-usdt', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Beamswap', + assets: ['USDC', 'USDT'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_HIGH', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://app.beamswap.io/exchange/add/0xeFAeeE334F0Fd1712f9a8cc375f427D9Cdd40d73/0x818ec0A7Fe18Ff94269904fCED6AE3DaE6d6dC0b', + buyTokenUrl: + 'https://app.beamswap.io/exchange/swap?inputCurrency=0xeFAeeE334F0Fd1712f9a8cc375f427D9Cdd40d73&outputCurrency=0x818ec0A7Fe18Ff94269904fCED6AE3DaE6d6dC0b', + createdAt: 1644600000, + }, +]; diff --git a/src/features/configure/vault/moonriver_pools.js b/src/features/configure/vault/moonriver_pools.js new file mode 100644 index 000000000..9efbf4f2c --- /dev/null +++ b/src/features/configure/vault/moonriver_pools.js @@ -0,0 +1,2096 @@ +export const moonriverPools = [ + { + id: 'movr-bifi-maxi', + logo: 'single-assets/BIFI.png', + name: 'BIFI Maxi', + token: 'BIFI', + tokenDescription: 'Beefy', + tokenAddress: '0x173fd7434B8B50dF08e3298f173487ebDB35FD14', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooMoonriverBIFI', + earnedTokenAddress: '0xc9a509dA14525Ad3710e9448a0839EE2e90E48B1', + earnContractAddress: '0xc9a509dA14525Ad3710e9448a0839EE2e90E48B1', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'BIFI', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Beefy', + assets: ['BIFI'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + withdrawalFee: '0%', + buyTokenUrl: + 'https://app.sushi.com/swap?inputCurrency=ETH&outputCurrency=0x173fd7434B8B50dF08e3298f173487ebDB35FD14', + createdAt: 1636638042, + }, + { + id: 'solarbeam-frax-3pool', + logo: 'uncategorized/frax-3pool.png', + name: 'FRAX/USDC/BUSD/USDT', + token: 'FRAX-3pool', + tokenDescription: 'SolarBeam', + tokenAddress: '0x884609A4D86BBA8477112E36e27f7A4ACecB3575', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSolarFRAX-3pool', + earnedTokenAddress: '0xE7123285680632E9d17a254Ec7adf405559c1CbC', + earnContractAddress: '0xE7123285680632E9d17a254Ec7adf405559c1CbC', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'solarbeam-frax-3pool', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SolarBeam', + assets: ['FRAX', 'USDC', 'BUSD', 'USDT'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratMultiLP', + withdrawalFee: '0%', + buyTokenUrl: 'https://app.solarbeam.io/exchange/swap', + addLiquidityUrl: 'https://app.solarbeam.io/exchange/stable-pool/add/frax-3pool', + createdAt: 1651221200, + }, + { + id: 'solarbeam-xcksm-stksm', + name: 'xcKSM-stKSM', + token: 'xcKSM-stKSM', + tokenDescription: 'SolarBeam', + tokenAddress: '0x493147C85Fe43F7B056087a6023dF32980Bcb2D1', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSolarxcKSM-stKSM', + earnedTokenAddress: '0x8cA1De404d12A9C5Be365ac555F4355F7fC0772B', + earnContractAddress: '0x8cA1De404d12A9C5Be365ac555F4355F7fC0772B', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'solarbeam-xcksm-stksm', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SolarBeam', + assets: ['xcKSM', 'stKSM'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratMultiLP', + withdrawalFee: '0%', + buyTokenUrl: + 'https://app.solarbeam.io/exchange/swap?outputCurrency=0xFfFFfFff1FcaCBd218EDc0EbA20Fc2308C778080', + addLiquidityUrl: 'https://app.solarbeam.io/exchange/stable-pool/add/stksm', + createdAt: 1651221199, + }, + { + id: 'solarbeam-wmovr-xcksm', + name: 'xcKSM-MOVR', + token: 'xcKSM-MOVR LP', + tokenDescription: 'SolarBeam', + tokenAddress: '0xea3d1E9e69ADDFA1ee5BBb89778Decd862F1F7C5', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSolarxcKSM-MOVR', + earnedTokenAddress: '0xd5f5D054a4F90Aa9faa71065b505c40e5166cd4F', + earnContractAddress: '0xd5f5D054a4F90Aa9faa71065b505c40e5166cd4F', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'solarbeam-wmovr-xcksm', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SolarBeam', + assets: ['xcKSM', 'MOVR'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + buyTokenUrl: + 'https://app.solarbeam.io/exchange/swap?outputCurrency=0xFfFFfFff1FcaCBd218EDc0EbA20Fc2308C778080', + addLiquidityUrl: + 'https://app.solarbeam.io/exchange/add/ETH/0xFfFFfFff1FcaCBd218EDc0EbA20Fc2308C778080', + createdAt: 1651221198, + }, + { + id: 'solarbeam-3pool', + logo: 'uncategorized/solar-3pool.png', + name: 'USDC/BUSD/USDT', + token: '3pool', + tokenDescription: 'SolarBeam', + tokenAddress: '0xfb29918d393AaAa7dD118B51A8b7fCf862F5f336', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSolar3pool', + earnedTokenAddress: '0x82435D82A2ba87516827312Fc9F8BCF72CFAB602', + earnContractAddress: '0x82435D82A2ba87516827312Fc9F8BCF72CFAB602', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'solarbeam-3pool', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SolarBeam', + assets: ['USDC', 'BUSD', 'USDT'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratMultiLP', + withdrawalFee: '0%', + buyTokenUrl: 'https://app.solarbeam.io/exchange/swap', + addLiquidityUrl: 'https://app.solarbeam.io/exchange/stable-pool/add/3pool', + createdAt: 1651221197, + }, + { + id: 'finn-usdc.m-usdc', + name: 'USDC.m-USDC LP', + token: 'USDC.m-USDC LP', + tokenDescription: 'Huckleberry', + tokenAddress: '0xc1E370A8a2285468F95d1bf281C5179071675c3C', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooFinnUSDC.m-USDC', + earnedTokenAddress: '0xC8ca2254bCBA3aD8511Faff54e0b9941D0424502', + earnContractAddress: '0xC8ca2254bCBA3aD8511Faff54e0b9941D0424502', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'finn-usdc.m-usdc', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Huckleberry', + assets: ['USDC', 'USDCm'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + buyTokenUrl: 'https://www.huckleberry.finance/#/swap', + addLiquidityUrl: + 'https://www.huckleberry.finance/#/add/0xE3F5a90F9cb311505cd691a46596599aA1A0AD7D/0x748134b5F553F2bcBD78c6826De99a70274bDEb3', + createdAt: 1645031166, + }, + { + id: 'finn-finn-xcrmrk-eol', + name: 'xcRMRK-FINN LP', + token: 'xcRMRK-FINN LP', + tokenDescription: 'Huckleberry', + tokenAddress: '0xd9e98aD7AE9E5612b90cd0bdcD82df4FA5b943b8', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooFinnxcRMRK-FINN', + earnedTokenAddress: '0xCde724B9Ab2BcB8c1684883405b657fFb48ce182', + earnContractAddress: '0xCde724B9Ab2BcB8c1684883405b657fFb48ce182', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'finn-finn-xcrmrk', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'tvl', + platform: 'Huckleberry', + assets: ['xcRMRK', 'FINN'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + buyTokenUrl: 'https://www.huckleberry.finance/#/swap', + addLiquidityUrl: + 'https://www.huckleberry.finance/#/add/0x9A92B5EBf1F6F6f7d93696FCD44e5Cf75035A756/0xffffffFF893264794d9d57E1E0E21E0042aF5A0A', + createdAt: 1643391756, + }, + { + id: 'finn-finn-xcksm-eol', + name: 'xcKSM-FINN LP', + token: 'xcKSM-FINN LP', + tokenDescription: 'Huckleberry', + tokenAddress: '0x14BE4d09c5A8237403b83A8A410bAcE16E8667DC', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooFinnxcKSM-FINN', + earnedTokenAddress: '0x5768c64CeFFCc776a9B0AA81dF4cB10b290E1c42', + earnContractAddress: '0x5768c64CeFFCc776a9B0AA81dF4cB10b290E1c42', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'finn-finn-xcksm', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'tvl', + platform: 'Huckleberry', + assets: ['xcKSM', 'FINN'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + buyTokenUrl: 'https://www.huckleberry.finance/#/swap', + addLiquidityUrl: + 'https://www.huckleberry.finance/#/add/0x9A92B5EBf1F6F6f7d93696FCD44e5Cf75035A756/0xFfFFfFff1FcaCBd218EDc0EbA20Fc2308C778080', + createdAt: 1643391960, + }, + { + id: 'finn-usdc.m-wmovr-eol', + name: 'USDC.m-MOVR LP', + token: 'USDC.m-MOVR LP', + tokenDescription: 'Huckleberry', + tokenAddress: '0x7128C61Da34c27eAD5419B8EB50c71CE0B15CD50', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooFinnUSDC.m-MOVR', + earnedTokenAddress: '0x2C43DBef81ABa6b95799FD2aEc738Cd721ba77f3', + earnContractAddress: '0x2C43DBef81ABa6b95799FD2aEc738Cd721ba77f3', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'finn-usdc.m-wmovr', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'tvl', + platform: 'Huckleberry', + assets: ['USDC', 'MOVR'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + buyTokenUrl: 'https://www.huckleberry.finance/#/swap', + addLiquidityUrl: + 'https://www.huckleberry.finance/#/add/MOVR/0x748134b5F553F2bcBD78c6826De99a70274bDEb3', + createdAt: 1643392728, + }, + { + id: 'sushi-mr-mim-wmovr-eol', + name: 'MIM-WMOVR', + token: 'MIM-WMOVR SLP', + tokenDescription: 'Sushi', + tokenAddress: '0x6dC6D33331e9d5DeEf449C8CAb9e34D687BEA80E', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSushiMIM-WMOVR', + earnedTokenAddress: '0x9f3371AA6F7b48485Cb9eb3D6A79ea9298565410', + earnContractAddress: '0x9f3371AA6F7b48485Cb9eb3D6A79ea9298565410', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'sushi-mr-mim-wmovr', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'SushiSwap', + assets: ['MIM', 'WMOVR_SUSHI'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + 'OVER_COLLAT_ALGO_STABLECOIN', + ], + addLiquidityUrl: + 'https://app.sushi.com/add/0x0caE51e1032e8461f4806e26332c030E34De3aDb/0xf50225a84382c74CbdeA10b0c176f71fc3DE0C4d', + buyTokenUrl: + 'https://app.sushi.com/swap?outputCurrency=0xf50225a84382c74CbdeA10b0c176f71fc3DE0C4d', + createdAt: 1639683150, + retireReason: 'tvl', + }, + { + id: 'sushi-mr-frax-usdc', + name: 'FRAX-USDC', + token: 'FRAX-USDC SLP', + tokenDescription: 'Sushi', + tokenAddress: '0x310C4d18640aF4878567c4A31cB9cBde7Cd234A3', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSushiFRAX-USDC', + earnedTokenAddress: '0x27d99A6B13cC4f5F55f3Fb9Bd6F7a02F9EFCD820', + earnContractAddress: '0x27d99A6B13cC4f5F55f3Fb9Bd6F7a02F9EFCD820', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'sushi-mr-frax-usdc', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SushiSwap', + assets: ['FRAX', 'USDC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + addLiquidityUrl: + 'https://app.sushi.com/add/0x1A93B23281CC1CDE4C4741353F3064709A16197d/0xE3F5a90F9cb311505cd691a46596599aA1A0AD7D', + buyTokenUrl: + 'https://app.sushi.com/swap?outputCurrency=0xE3F5a90F9cb311505cd691a46596599aA1A0AD7D', + createdAt: 1639688184, + }, + { + id: 'sushi-mr-eth-wmovr', + name: 'ETH-WMOVR', + token: 'ETH-WMOVR SLP', + tokenDescription: 'Sushi', + tokenAddress: '0xD4Ce5671b842573EDA99164971AFaA034245f4D8', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSushiETH-WMOVR', + earnedTokenAddress: '0x65bb8496DDfE7470516C0Ed014C0eDc7C7973676', + earnContractAddress: '0x65bb8496DDfE7470516C0Ed014C0eDc7C7973676', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'sushi-mr-eth-wmovr', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SushiSwap', + assets: ['ETH', 'WMOVR_SUSHI'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + addLiquidityUrl: + 'https://app.sushi.com/add/0x639a647fbe20b6c8ac19e48e2de44ea792c62c5c/0xf50225a84382c74CbdeA10b0c176f71fc3DE0C4d', + buyTokenUrl: + 'https://app.sushi.com/swap?outputCurrency=0xf50225a84382c74CbdeA10b0c176f71fc3DE0C4d', + createdAt: 1639689876, + }, + { + id: 'sushi-mr-usdt-usdc', + name: 'USDT-USDC', + token: 'USDT-USDC SLP', + tokenDescription: 'Sushi', + tokenAddress: '0x930B0464411DE2296E3FD3eeE30ab989F635645E', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSushiUSDT-USDC', + earnedTokenAddress: '0x1f1FAfB086C6e1e900f18fccbeD5BA727d09F193', + earnContractAddress: '0x1f1FAfB086C6e1e900f18fccbeD5BA727d09F193', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'sushi-mr-usdt-usdc', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SushiSwap', + assets: ['USDT', 'USDC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + addLiquidityUrl: + 'https://app.sushi.com/add/0xB44a9B6905aF7c801311e8F4E76932ee959c663C/0xE3F5a90F9cb311505cd691a46596599aA1A0AD7D', + buyTokenUrl: + 'https://app.sushi.com/swap?outputCurrency=0xE3F5a90F9cb311505cd691a46596599aA1A0AD7D', + createdAt: 1639690914, + }, + { + id: 'sushi-mr-eth-bnb-eol', + name: 'ETH-BNB.bsc', + token: 'ETH-BNB.bsc SLP', + tokenDescription: 'Sushi', + tokenAddress: '0x69B4FbD8c8Cf74720A62A5e92e2528c3f895cE10', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSushiETH-BNB', + earnedTokenAddress: '0x391db851d684b1D1D8b034d678Db4C5701AFfe2e', + earnContractAddress: '0x391db851d684b1D1D8b034d678Db4C5701AFfe2e', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'sushi-mr-eth-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'SushiSwap', + assets: ['ETH', 'BNBbsc'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + addLiquidityUrl: + 'https://app.sushi.com/add/0x639A647fbe20b6c8ac19E48E2de44ea792c62c5C/0x868892CCcEdbfF0B028F3b3595205Ea91b99376B', + buyTokenUrl: + 'https://app.sushi.com/swap?outputCurrency=0x868892CCcEdbfF0B028F3b3595205Ea91b99376B', + createdAt: 1640141208, + retireReason: 'tvl', + }, + { + id: 'sushi-mr-eth-dai-eol', + name: 'ETH-DAI', + token: 'ETH-DAI SLP', + tokenDescription: 'Sushi', + tokenAddress: '0xC6Ca9C83c07A7a3A5461c817eA5210723508A9fD', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSushiETH-DAI', + earnedTokenAddress: '0x817336ccfa4B221342Ef6E3dCFA3523c8BFf76D6', + earnContractAddress: '0x817336ccfa4B221342Ef6E3dCFA3523c8BFf76D6', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'sushi-mr-eth-dai', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'SushiSwap', + assets: ['ETH', 'DAI'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + 'OVER_COLLAT_ALGO_STABLECOIN', + ], + addLiquidityUrl: + 'https://app.sushi.com/add/0x639A647fbe20b6c8ac19E48E2de44ea792c62c5C/0x80A16016cC4A2E6a2CACA8a4a498b1699fF0f844', + buyTokenUrl: + 'https://app.sushi.com/swap?outputCurrency=0x80A16016cC4A2E6a2CACA8a4a498b1699fF0f844', + createdAt: 1640143548, + retireReason: 'tvl', + }, + { + id: 'solarbeam-mim-wmovr-eol', + name: 'MIM-MOVR', + token: 'MIM-MOVR LP', + tokenDescription: 'SolarBeam', + tokenAddress: '0x9432B25fBD8a37e5A1300e36a96BD14E1E6f5c90', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSolarMIM-MOVR', + earnedTokenAddress: '0x9af278BC0A7861F95d93913390945c2127eb80a6', + earnContractAddress: '0x9af278BC0A7861F95d93913390945c2127eb80a6', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'solarbeam-mim-wmovr', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'SolarBeam', + assets: ['MIM', 'MOVR'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + 'OVER_COLLAT_ALGO_STABLECOIN', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + buyTokenUrl: + 'https://app.solarbeam.io/exchange/swap?inputCurrency=0x98878B06940aE243284CA214f92Bb71a2b032B8A&outputCurrency=0x0caE51e1032e8461f4806e26332c030E34De3aDb', + addLiquidityUrl: + 'https://app.solarbeam.io/exchange/add/ETH/0x0caE51e1032e8461f4806e26332c030E34De3aDb', + createdAt: 1639473600, + }, + { + id: 'solarbeam-frax-rome-eol', + name: 'ROME-FRAX', + token: 'ROME-FRAX LP', + tokenDescription: 'SolarBeam', + tokenAddress: '0x069C2065100b4D3D982383f7Ef3EcD1b95C05894', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSolarFRAX-ROME', + earnedTokenAddress: '0x4A619d9DE52e669A09996C6e107409da53b794d1', + earnContractAddress: '0x4A619d9DE52e669A09996C6e107409da53b794d1', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'solarbeam-frax-rome', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'SolarBeam', + assets: ['ROME', 'FRAX'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + buyTokenUrl: + 'https://app.solarbeam.io/exchange/swap?inputCurrency=0x1A93B23281CC1CDE4C4741353F3064709A16197d&outputCurrency=0x4a436073552044D5f2f49B176853ad3Ad473d9d6', + addLiquidityUrl: + 'https://app.solarbeam.io/exchange/add/0x1A93B23281CC1CDE4C4741353F3064709A16197d/0x4a436073552044D5f2f49B176853ad3Ad473d9d6', + createdAt: 1639145934, + retireReason: 'tvl', + }, + { + id: 'solarbeam-wmovr-mai-eol', + name: 'MAI-MOVR', + token: 'MAI-MOVR LP', + tokenDescription: 'SolarBeam', + tokenAddress: '0xcD450B46dbED11C4F1cf159457B28ed7e2Ed7fBB', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSolarMOVR-MAI', + earnedTokenAddress: '0x3c67955C1D0Dd4FFC5b52a4003769b36582f9AbF', + earnContractAddress: '0x3c67955C1D0Dd4FFC5b52a4003769b36582f9AbF', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'solarbeam-wmovr-mai', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'SolarBeam', + assets: ['MAI', 'MOVR'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LOW', + 'AUDIT', + 'CONTRACTS_VERIFIED', + 'OVER_COLLAT_ALGO_STABLECOIN', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + buyTokenUrl: + 'https://app.solarbeam.io/exchange/swap?inputCurrency=0x98878B06940aE243284CA214f92Bb71a2b032B8A&outputCurrency=0xFb2019DfD635a03cfFF624D210AEe6AF2B00fC2C', + addLiquidityUrl: + 'https://app.solarbeam.io/exchange/add/ETH/0xFb2019DfD635a03cfFF624D210AEe6AF2B00fC2C', + createdAt: 1639152684, + }, + { + id: 'solarbeam-frax-wmovr-2-eol', + name: 'FRAX-MOVR', + token: 'FRAX-MOVR LP', + tokenDescription: 'SolarBeam', + tokenAddress: '0x2cc54b4A3878e36E1C754871438113C1117a3ad7', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSolarFRAX-WMOVR', + earnedTokenAddress: '0xf8e9774AE3cc7aE3eE11161cC1313252A0784E18', + earnContractAddress: '0xf8e9774AE3cc7aE3eE11161cC1313252A0784E18', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'solarbeam-frax-wmovr-2', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'SolarBeam', + assets: ['FRAX', 'MOVR'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + buyTokenUrl: + 'https://app.solarbeam.io/exchange/swap?inputCurrency=ETH&outputCurrency=0x1A93B23281CC1CDE4C4741353F3064709A16197d', + addLiquidityUrl: + 'https://app.solarbeam.io/exchange/add/ETH/0x1A93B23281CC1CDE4C4741353F3064709A16197d', + createdAt: 1637358282, + }, + { + id: 'finn-wmovr-finn', + name: 'FINN-MOVR', + token: 'FINN-MOVR LP', + tokenDescription: 'Huckleberry', + tokenAddress: '0xbBe2f34367972Cb37ae8dea849aE168834440685', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooFinnMOVR-FINN', + earnedTokenAddress: '0xFaA15A1B4DAB85d35e912f88127b9986638a1265', + earnContractAddress: '0xFaA15A1B4DAB85d35e912f88127b9986638a1265', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'finn-wmovr-finn', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Huckleberry', + assets: ['FINN', 'MOVR'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + buyTokenUrl: 'https://www.huckleberry.finance/#/swap', + addLiquidityUrl: + 'https://www.huckleberry.finance/#/add/MOVR/0x9A92B5EBf1F6F6f7d93696FCD44e5Cf75035A756', + createdAt: 1637696994, + }, + { + id: 'finn-finn-eol', + logo: 'single-assets/FINN.png', + name: 'FINN', + token: 'FINN', + tokenDescription: 'Huckleberry', + tokenAddress: '0x9A92B5EBf1F6F6f7d93696FCD44e5Cf75035A756', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooFinn', + earnedTokenAddress: '0xe173782e5Cc62f1C3277749EEa9c5Daf182d7C66', + earnContractAddress: '0xe173782e5Cc62f1C3277749EEa9c5Daf182d7C66', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'FINN', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'noReason', + platform: 'Huckleberry', + assets: ['FINN'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'SingleStake', + withdrawalFee: '0%', + buyTokenUrl: 'https://www.huckleberry.finance/#/swap', + createdAt: 1638057114, + }, + { + id: 'finn-wmovr-usdt', + name: 'MOVR-USDT', + token: 'MOVR-USDT FLP', + tokenDescription: 'Huckleberry', + tokenAddress: '0x037f019B6d98A61AF80c0da5ecFdc23612B0C134', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooFinnMOVR-USDT', + earnedTokenAddress: '0xa6cF91E75c43798218867775513D112E00a63B45', + earnContractAddress: '0xa6cF91E75c43798218867775513D112E00a63B45', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'finn-wmovr-usdt', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Huckleberry', + assets: ['MOVR', 'USDT'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + buyTokenUrl: 'https://www.huckleberry.finance/#/swap', + addLiquidityUrl: + 'https://www.huckleberry.finance/#/add/MOVR/0xE936CAA7f6d9F5C9e907111FCAf7c351c184CDA7', + createdAt: 1637927226, + }, + { + id: 'finn-eth-wmovr', + name: 'ETH-MOVR', + token: 'ETH-MOVR FLP', + tokenDescription: 'Huckleberry', + tokenAddress: '0xBaf9eB00574C42Cf678778790b04705B435B65F8', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooFinnETH-MOVR', + earnedTokenAddress: '0x9FE2921Fe00E48B88bdE16102627E750924b96bb', + earnContractAddress: '0x9FE2921Fe00E48B88bdE16102627E750924b96bb', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'finn-eth-wmovr', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Huckleberry', + assets: ['ETH', 'MOVR'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + buyTokenUrl: 'https://www.huckleberry.finance/#/swap', + addLiquidityUrl: + 'https://www.huckleberry.finance/#/add/MOVR/0x576fDe3f61B7c97e381c94e7A03DBc2e08Af1111', + createdAt: 1637925168, + }, + { + id: 'finn-wbtc-wmovr-eol', + name: 'WBTC-MOVR', + token: 'WBTC-MOVR FLP', + tokenDescription: 'Huckleberry', + tokenAddress: '0x3fAF6e9Bf107199dB347B146F80A68CBD0B598B2', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooFinnWBTC-MOVR', + earnedTokenAddress: '0x570e14018E6ad396fF39FF5e3Be8970d6be99cAC', + earnContractAddress: '0x570e14018E6ad396fF39FF5e3Be8970d6be99cAC', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'finn-wbtc-wmovr', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Huckleberry', + assets: ['WBTC', 'MOVR'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + buyTokenUrl: 'https://www.huckleberry.finance/#/swap', + addLiquidityUrl: + 'https://www.huckleberry.finance/#/add/MOVR/0x78F811A431D248c1EDcF6d95ec8551879B2897C3', + createdAt: 1638046680, + retireReason: 'tvl', + }, + { + id: 'finn-usdc-usdt', + name: 'USDC-USDT', + token: 'USDC-USDT FLP', + tokenDescription: 'Huckleberry', + tokenAddress: '0xce634Ae7191aB885Fb4ce8d1ed58f80EA988D52a', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooFinnUSDC-USDT', + earnedTokenAddress: '0x0a2289a7eE8A1f2A6B0E2320f47D8d0ff143f436', + earnContractAddress: '0x0a2289a7eE8A1f2A6B0E2320f47D8d0ff143f436', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'finn-usdc-usdt', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Huckleberry', + assets: ['USDC', 'USDT'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + buyTokenUrl: 'https://www.huckleberry.finance/#/swap', + addLiquidityUrl: + 'https://www.huckleberry.finance/#/add/0x748134b5F553F2bcBD78c6826De99a70274bDEb3/0xE936CAA7f6d9F5C9e907111FCAf7c351c184CDA7', + createdAt: 1637927952, + }, + { + id: 'finn-wan-wmovr-eol', + name: 'WAN-MOVR', + token: 'WAN-MOVR LP', + tokenDescription: 'Huckleberry', + tokenAddress: '0x0Df4cD5fD2f69E54A3E6d13e5cad54f1eB995E8c', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooFinnWAN-MOVR', + earnedTokenAddress: '0xAfCcf43F6A3D99F20A1788ae141b6F8FbE8d5E4B', + earnContractAddress: '0xAfCcf43F6A3D99F20A1788ae141b6F8FbE8d5E4B', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'finn-wan-wmovr', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Huckleberry', + assets: ['WAN', 'MOVR'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_SMALL', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + buyTokenUrl: 'https://www.huckleberry.finance/#/swap', + addLiquidityUrl: + 'https://www.huckleberry.finance/#/add/MOVR/0x41562ae242d194247389152aCAa7a9397136b09F', + createdAt: 1637920962, + retireReason: 'tvl', + }, + { + id: 'finn-eth-finn-eol', + name: 'ETH-FINN', + token: 'ETH-FINN FLP', + tokenDescription: 'Huckleberry', + tokenAddress: '0x03bF745884513869AFE685af099e8c738F3697E3', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooFinnETH-FINN', + earnedTokenAddress: '0x7e95e7b74AF3d966baBD44aa6229fA4a3F0Ad286', + earnContractAddress: '0x7e95e7b74AF3d966baBD44aa6229fA4a3F0Ad286', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'finn-eth-finn', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Huckleberry', + assets: ['ETH', 'FINN'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + buyTokenUrl: 'https://www.huckleberry.finance/#/swap', + addLiquidityUrl: + 'https://www.huckleberry.finance/#/add/0x576fDe3f61B7c97e381c94e7A03DBc2e08Af1111/0x9A92B5EBf1F6F6f7d93696FCD44e5Cf75035A756', + createdAt: 1638051900, + }, + { + id: 'finn-wbtc-finn-eol', + name: 'WBTC-FINN', + token: 'WBTC-FINN FLP', + tokenDescription: 'Huckleberry', + tokenAddress: '0x0A1Af960473e170773a33012bf2C291e6f7e3E2C', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooFinnWBTC-FINN', + earnedTokenAddress: '0x8A9Ad76449781BeF39ae4dA70944fbbADdEB6852', + earnContractAddress: '0x8A9Ad76449781BeF39ae4dA70944fbbADdEB6852', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'finn-wbtc-finn', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Huckleberry', + assets: ['WBTC', 'FINN'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + buyTokenUrl: 'https://www.huckleberry.finance/#/swap', + addLiquidityUrl: + 'https://www.huckleberry.finance/#/add/0x78F811A431D248c1EDcF6d95ec8551879B2897C3/0x9A92B5EBf1F6F6f7d93696FCD44e5Cf75035A756', + createdAt: 1638050898, + }, + { + id: 'finn-finn-usdt-eol', + name: 'FINN-USDT', + token: 'FINN-USDT LP', + tokenDescription: 'Huckleberry', + tokenAddress: '0xBE1C572E40150EaCf046ceFB4A4552FbB13E68f8', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooFinnFINN-USDT', + earnedTokenAddress: '0x48bF3a071098a09C7D00379b4DBC69Ab6Da83a36', + earnContractAddress: '0x48bF3a071098a09C7D00379b4DBC69Ab6Da83a36', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'finn-finn-usdt', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Huckleberry', + assets: ['FINN', 'USDT'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + buyTokenUrl: 'https://www.huckleberry.finance/#/swap', + addLiquidityUrl: + 'https://www.huckleberry.finance/#/add/0xE936CAA7f6d9F5C9e907111FCAf7c351c184CDA7/0x9A92B5EBf1F6F6f7d93696FCD44e5Cf75035A756', + createdAt: 1638049728, + retireReason: 'tvl', + }, + { + id: 'finn-finn-avax-eol', + name: 'AVAX-FINN', + token: 'AVAX-FINN LP', + tokenDescription: 'Huckleberry', + tokenAddress: '0x10300C5FD4Af0F81fC8DA3f48e44dbccd189f253', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooFinnFINN-AVAX', + earnedTokenAddress: '0xD01dfb76F241A91547CA3AF0ece41547549e7393', + earnContractAddress: '0xD01dfb76F241A91547CA3AF0ece41547549e7393', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'finn-finn-avax', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Huckleberry', + assets: ['AVAX', 'FINN'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + buyTokenUrl: 'https://www.huckleberry.finance/#/swap', + addLiquidityUrl: + 'https://www.huckleberry.finance/#/add/0xc005A7A1502c9DE16CCDaBA7CDA0cee4Ac304993/0x9A92B5EBf1F6F6f7d93696FCD44e5Cf75035A756', + createdAt: 1638048906, + retireReason: 'tvl', + }, + { + id: 'finn-finn-ftm-eol', + name: 'FTM-FINN', + token: 'FTM-FINN FLP', + tokenDescription: 'Huckleberry', + tokenAddress: '0x135C0c09517AF7445a4B27976d3549B996483f4e', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooFinnFINN-FTM', + earnedTokenAddress: '0x79F0283A7078a9068C4cAE1644963f90679A1707', + earnContractAddress: '0x79F0283A7078a9068C4cAE1644963f90679A1707', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'finn-finn-ftm', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Huckleberry', + assets: ['FTM', 'FINN'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + buyTokenUrl: 'https://www.huckleberry.finance/#/swap', + addLiquidityUrl: + 'https://www.huckleberry.finance/#/add/0xd924f195C6012C301f42290cf0fdE385A66039DE/0x9A92B5EBf1F6F6f7d93696FCD44e5Cf75035A756', + createdAt: 1638053964, + retireReason: 'tvl', + }, + { + id: 'finn-finn-bnb-eol', + name: 'BNB-FINN', + token: 'BNB-FINN FLP', + tokenDescription: 'Huckleberry', + tokenAddress: '0x3F7db2e5Ca0Fe2372a9Bc762C9984213B937c248', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooFinnFINN-BNB', + earnedTokenAddress: '0xc59038F4102905b343AAD042DDA4Cc30DB3FBDdE', + earnContractAddress: '0xc59038F4102905b343AAD042DDA4Cc30DB3FBDdE', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'finn-finn-bnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Huckleberry', + assets: ['BNB', 'FINN'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + buyTokenUrl: 'https://www.huckleberry.finance/#/swap', + addLiquidityUrl: + 'https://www.huckleberry.finance/#/add/0xf47002E6151E06554b8f16E9Cc704edD3fC078b8/0x9A92B5EBf1F6F6f7d93696FCD44e5Cf75035A756', + createdAt: 1638055338, + retireReason: 'tvl', + }, + { + id: 'finn-finn-xrp-eol', + name: 'XRP-FINN', + token: 'XRP-FINN LP', + tokenDescription: 'Huckleberry', + tokenAddress: '0x7491D6e5aC2785Fc9c873922F9B424fCA7720519', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooFinnFINN-XRP', + earnedTokenAddress: '0xb5e6F0914c6e3e2bf7eAD50163715D5bFF23F578', + earnContractAddress: '0xb5e6F0914c6e3e2bf7eAD50163715D5bFF23F578', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'finn-finn-xrp', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Huckleberry', + assets: ['XRP', 'FINN'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + buyTokenUrl: 'https://www.huckleberry.finance/#/swap', + addLiquidityUrl: + 'https://www.huckleberry.finance/#/add/0x9D5bc9B873AeD984e2B6A64d4792249D68BbA2Fe/0x9A92B5EBf1F6F6f7d93696FCD44e5Cf75035A756', + createdAt: 1638048018, + retireReason: 'tvl', + }, + { + id: 'finn-wan-finn-eol', + name: 'WAN-FINN', + token: 'WAN-FINN FLP', + tokenDescription: 'Huckleberry', + tokenAddress: '0xF3d89313F508f877f086b7FFA8BeA6926b886B5f', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooFinnWAN-FINN', + earnedTokenAddress: '0x3d91f38Abb9abEdd87099faF48eb2B3230f4f259', + earnContractAddress: '0x3d91f38Abb9abEdd87099faF48eb2B3230f4f259', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'finn-wan-finn', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Huckleberry', + assets: ['WAN', 'FINN'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + buyTokenUrl: 'https://www.huckleberry.finance/#/swap', + addLiquidityUrl: + 'https://www.huckleberry.finance/#/add/0x41562ae242d194247389152aCAa7a9397136b09F/0x9A92B5EBf1F6F6f7d93696FCD44e5Cf75035A756', + createdAt: 1638052494, + }, + { + id: 'finn-finn-doge-eol', + name: 'DOGE-FINN', + token: 'DOGE-FINN FLP', + tokenDescription: 'Huckleberry', + tokenAddress: '0xB4939f65f27cac1e220D8A86E0274860aDa9d825', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooFinnFINN-DOGE', + earnedTokenAddress: '0x16508967D3F7693DD1D023Dbd442Bdb2304f8289', + earnContractAddress: '0x16508967D3F7693DD1D023Dbd442Bdb2304f8289', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'finn-finn-doge', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Huckleberry', + assets: ['DOGE', 'FINN'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + buyTokenUrl: 'https://www.huckleberry.finance/#/swap', + addLiquidityUrl: + 'https://www.huckleberry.finance/#/add/0xb668Cd490a4421F993f93be2819A922DBbB32804/0x9A92B5EBf1F6F6f7d93696FCD44e5Cf75035A756', + createdAt: 1638053202, + }, + { + id: 'finn-usdc-finn-eol', + name: 'FINN-USDC', + token: 'FINN-USDC LP', + tokenDescription: 'Huckleberry', + tokenAddress: '0xb04492345b0618acFf27AC27CeC4244fBdd30208', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooFinnUSDC-FINN', + earnedTokenAddress: '0xcCa4B9dEbfE7EA2221A8238499D66Ee5f3623122', + earnContractAddress: '0xcCa4B9dEbfE7EA2221A8238499D66Ee5f3623122', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'finn-usdc-finn', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'tvl', + platform: 'Huckleberry', + assets: ['FINN', 'USDC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + buyTokenUrl: 'https://www.huckleberry.finance/#/swap', + addLiquidityUrl: + 'https://www.huckleberry.finance/#/add/0x748134b5F553F2bcBD78c6826De99a70274bDEb3/0x9A92B5EBf1F6F6f7d93696FCD44e5Cf75035A756', + createdAt: 1637698536, + }, + { + id: 'finn-dot-finn-eol', + name: 'FINN-DOT', + token: 'FINN-DOT LP', + tokenDescription: 'Huckleberry', + tokenAddress: '0xF09211fb5eD5019b072774cfD7Db0c9f4ccd5Be0', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooFinnDOT-FINN', + earnedTokenAddress: '0xC8C86F0A4879A0479554c7599dDe3ef51614996E', + earnContractAddress: '0xC8C86F0A4879A0479554c7599dDe3ef51614996E', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'finn-dot-finn', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Huckleberry', + assets: ['FINN', 'DOT'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + buyTokenUrl: 'https://www.huckleberry.finance/#/swap', + addLiquidityUrl: + 'https://www.huckleberry.finance/#/add/0x15B9CA9659F5dfF2b7d35a98dd0790a3CBb3D445/0x9A92B5EBf1F6F6f7d93696FCD44e5Cf75035A756', + createdAt: 1637699676, + }, + { + id: 'solarbeam-wbtc-wmovr', + name: 'WBTC-MOVR', + token: 'WBTC-MOVR LP', + tokenDescription: 'SolarBeam', + tokenAddress: '0x32E33B774372c700da12F2D0F7A834045F5651B2', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSolarWBTC-MOVR', + earnedTokenAddress: '0x0FB94775d16e14627678391D24E4576fdA05E3ed', + earnContractAddress: '0x0FB94775d16e14627678391D24E4576fdA05E3ed', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'solarbeam-wbtc-wmovr', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SolarBeam', + assets: ['WBTC', 'MOVR'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + buyTokenUrl: + 'https://app.solarbeam.io/exchange/swap?inputCurrency=ETH&outputCurrency=0x6aB6d61428fde76768D7b45D8BFeec19c6eF91A8', + addLiquidityUrl: + 'https://app.solarbeam.io/exchange/add/ETH/0x6aB6d61428fde76768D7b45D8BFeec19c6eF91A8', + createdAt: 1637354148, + }, + { + id: 'solarbeam-eth-wmovr', + name: 'ETH-MOVR', + token: 'ETH-MOVR LP', + tokenDescription: 'SolarBeam', + tokenAddress: '0x0d171b55fC8d3BDDF17E376FdB2d90485f900888', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSolarETH-MOVR', + earnedTokenAddress: '0xD25c56DAbcda719F1c67fE8fc0760f8B942aC95C', + earnContractAddress: '0xD25c56DAbcda719F1c67fE8fc0760f8B942aC95C', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'solarbeam-eth-wmovr', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SolarBeam', + assets: ['ETH', 'MOVR'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + buyTokenUrl: + 'https://app.solarbeam.io/exchange/swap?inputCurrency=ETH&outputCurrency=0x639A647fbe20b6c8ac19E48E2de44ea792c62c5C', + addLiquidityUrl: + 'https://app.solarbeam.io/exchange/add/ETH/0x639A647fbe20b6c8ac19E48E2de44ea792c62c5C', + createdAt: 1637355312, + }, + { + id: 'solarbeam-bnb-wmovr-eol', + name: 'BNB-MOVR', + token: 'BNB-MOVR LP', + tokenDescription: 'SolarBeam', + tokenAddress: '0xBe2aBe58eDAae96B4303F194d2fAD5233BaD3d87', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSolarBNB-MOVR', + earnedTokenAddress: '0x76cb930dceb002838E1210bCEC279005883648Ba', + earnContractAddress: '0x76cb930dceb002838E1210bCEC279005883648Ba', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'solarbeam-bnb-wmovr', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'SolarBeam', + assets: ['BNB', 'MOVR'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + buyTokenUrl: + 'https://app.solarbeam.io/exchange/swap?inputCurrency=ETH&outputCurrency=0x2bF9b864cdc97b08B6D79ad4663e71B8aB65c45c', + addLiquidityUrl: + 'https://app.solarbeam.io/exchange/add/ETH/0x2bF9b864cdc97b08B6D79ad4663e71B8aB65c45c', + createdAt: 1637701380, + }, + { + id: 'solarbeam-solar-eol', + logo: 'single-assets/SOLAR.png', + name: 'SOLAR', + token: 'SOLAR', + tokenDescription: 'SolarBeam', + tokenAddress: '0x6bD193Ee6D2104F14F94E2cA6efefae561A4334B', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSolarSOLAR', + earnedTokenAddress: '0xE3fCfF08de3fc40a7fb3674533FDb7a64027BF00', + earnContractAddress: '0xE3fCfF08de3fc40a7fb3674533FDb7a64027BF00', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'SOLAR', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'SolarBeam', + assets: ['SOLAR'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'SingleStake', + withdrawalFee: '0%', + buyTokenUrl: + 'https://app.solarbeam.io/exchange/swap?inputCurrency=ETH&outputCurrency=0x6bD193Ee6D2104F14F94E2cA6efefae561A4334B', + createdAt: 1635942222, + }, + { + id: 'solarbeam-solar-wmovr', + name: 'SOLAR-MOVR', + token: 'SOLAR-MOVR LP', + tokenDescription: 'SolarBeam', + tokenAddress: '0x7eDA899b3522683636746a2f3a7814e6fFca75e1', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSolarSOLAR-MOVR', + earnedTokenAddress: '0x1b6Bc65dBd597220DD0e8d3D8f976F0D18DfffB6', + earnContractAddress: '0x1b6Bc65dBd597220DD0e8d3D8f976F0D18DfffB6', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'solarbeam-solar-wmovr', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SolarBeam', + assets: ['SOLAR', 'MOVR'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + buyTokenUrl: + 'https://app.solarbeam.io/exchange/swap?inputCurrency=ETH&outputCurrency=0x6bD193Ee6D2104F14F94E2cA6efefae561A4334B', + addLiquidityUrl: + 'https://app.solarbeam.io/exchange/add/ETH/0x6bD193Ee6D2104F14F94E2cA6efefae561A4334B', + createdAt: 1635785910, + }, + { + id: 'solarbeam-solar-usdc-eol', + name: 'SOLAR-USDC', + token: 'SOLAR-USDC LP', + tokenDescription: 'SolarBeam', + tokenAddress: '0xdb66BE1005f5Fe1d2f486E75cE3C50B52535F886', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSolarSOLAR-USDC', + earnedTokenAddress: '0x2e8409eE2a8635f5EABd3a86E248252291285c40', + earnContractAddress: '0x2e8409eE2a8635f5EABd3a86E248252291285c40', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'solarbeam-solar-usdc', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'SolarBeam', + assets: ['SOLAR', 'USDC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + buyTokenUrl: + 'https://app.solarbeam.io/exchange/swap?inputCurrency=0xE3F5a90F9cb311505cd691a46596599aA1A0AD7D&outputCurrency=0x6bD193Ee6D2104F14F94E2cA6efefae561A4334B', + addLiquidityUrl: + 'https://app.solarbeam.io/exchange/add/0xE3F5a90F9cb311505cd691a46596599aA1A0AD7D/0x6bD193Ee6D2104F14F94E2cA6efefae561A4334B', + createdAt: 1635791490, + }, + { + id: 'solarbeam-wmovr-usdc', + name: 'MOVR-USDC', + token: 'MOVR-USDC LP', + tokenDescription: 'SolarBeam', + tokenAddress: '0xe537f70a8b62204832B8Ba91940B77d3f79AEb81', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSolarMOVR-USDC', + earnedTokenAddress: '0x78Dc4b7C7A89812fb337dD8C3B0ccB3e04E02D7C', + earnContractAddress: '0x78Dc4b7C7A89812fb337dD8C3B0ccB3e04E02D7C', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'solarbeam-wmovr-usdc', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SolarBeam', + assets: ['MOVR', 'USDC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + buyTokenUrl: + 'https://app.solarbeam.io/exchange/swap?inputCurrency=ETH&outputCurrency=0xE3F5a90F9cb311505cd691a46596599aA1A0AD7D', + addLiquidityUrl: + 'https://app.solarbeam.io/exchange/add/ETH/0xE3F5a90F9cb311505cd691a46596599aA1A0AD7D', + createdAt: 1635789990, + }, + { + id: 'solarbeam-dai-usdc-eol', + name: 'DAI-USDC', + token: 'DAI-USDC LP', + tokenDescription: 'SolarBeam', + tokenAddress: '0xFE1b71BDAEE495dCA331D28F5779E87bd32FbE53', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSolarDAI-USDC', + earnedTokenAddress: '0x93583e1F4cdbA714FA4F8ddAD1d3b85C2CE1A213', + earnContractAddress: '0x93583e1F4cdbA714FA4F8ddAD1d3b85C2CE1A213', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'solarbeam-dai-usdc', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'SolarBeam', + assets: ['DAI', 'USDC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_HIGH', + 'AUDIT', + 'CONTRACTS_VERIFIED', + 'OVER_COLLAT_ALGO_STABLECOIN', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + buyTokenUrl: + 'https://app.solarbeam.io/exchange/swap?inputCurrency=0x80A16016cC4A2E6a2CACA8a4a498b1699fF0f844&outputCurrency=0xE3F5a90F9cb311505cd691a46596599aA1A0AD7D', + addLiquidityUrl: + 'https://app.solarbeam.io/exchange/add/0xE3F5a90F9cb311505cd691a46596599aA1A0AD7D/0x80A16016cC4A2E6a2CACA8a4a498b1699fF0f844', + createdAt: 1635792936, + }, + { + id: 'solarbeam-busd-usdc-eol', + name: 'BUSD-USDC', + token: 'BUSD-USDC LP', + tokenDescription: 'SolarBeam', + tokenAddress: '0x384704557F73fBFAE6e9297FD1E6075FC340dbe5', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSolarBUSD-USDC', + earnedTokenAddress: '0x9d8469591F428e8a0bDD0B59bC267C35759Ee4a2', + earnContractAddress: '0x9d8469591F428e8a0bDD0B59bC267C35759Ee4a2', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'solarbeam-busd-usdc', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'SolarBeam', + assets: ['BUSD', 'USDC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_HIGH', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + buyTokenUrl: + 'https://app.solarbeam.io/exchange/swap?inputCurrency=0xE3F5a90F9cb311505cd691a46596599aA1A0AD7D&outputCurrency=0x5D9ab5522c64E1F6ef5e3627ECCc093f56167818', + addLiquidityUrl: + 'https://app.solarbeam.io/exchange/add/0xE3F5a90F9cb311505cd691a46596599aA1A0AD7D/0x5D9ab5522c64E1F6ef5e3627ECCc093f56167818', + createdAt: 1635794010, + }, + { + id: 'solarbeam-eth-usdc-eol', + name: 'ETH-USDC', + token: 'ETH-USDC LP', + tokenDescription: 'SolarBeam', + tokenAddress: '0xA0D8DFB2CC9dFe6905eDd5B71c56BA92AD09A3dC', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSolarETH-USDC', + earnedTokenAddress: '0x932009984bd2a7dA8C6396694E811Da5C0952d05', + earnContractAddress: '0x932009984bd2a7dA8C6396694E811Da5C0952d05', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'solarbeam-eth-usdc', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'SolarBeam', + assets: ['ETH', 'USDC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_HIGH', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + buyTokenUrl: + 'https://app.solarbeam.io/exchange/swap?inputCurrency=0xE3F5a90F9cb311505cd691a46596599aA1A0AD7D&outputCurrency=0x639A647fbe20b6c8ac19E48E2de44ea792c62c5C', + addLiquidityUrl: + 'https://app.solarbeam.io/exchange/add/0xE3F5a90F9cb311505cd691a46596599aA1A0AD7D/0x639A647fbe20b6c8ac19E48E2de44ea792c62c5C', + createdAt: 1635794634, + }, + { + id: 'solarbeam-bnb-busd-eol', + name: 'BNB-BUSD', + token: 'BNB-BUSD LP', + tokenDescription: 'SolarBeam', + tokenAddress: '0xfb1d0D6141Fc3305C63f189E39Cc2f2F7E58f4c2', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSolarBNB-BUSD', + earnedTokenAddress: '0xD70e9E716DBaaCf4d292D89AB24126af8546cCEC', + earnContractAddress: '0xD70e9E716DBaaCf4d292D89AB24126af8546cCEC', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'solarbeam-bnb-busd', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'SolarBeam', + assets: ['BNB', 'BUSD'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_HIGH', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + retireReason: 'tvl', + buyTokenUrl: + 'https://app.solarbeam.io/exchange/swap?inputCurrency=0x2bF9b864cdc97b08B6D79ad4663e71B8aB65c45c&outputCurrency=0x5D9ab5522c64E1F6ef5e3627ECCc093f56167818', + addLiquidityUrl: + 'https://app.solarbeam.io/exchange/add/0x2bF9b864cdc97b08B6D79ad4663e71B8aB65c45c/0x5D9ab5522c64E1F6ef5e3627ECCc093f56167818', + createdAt: 1635799506, + }, + { + id: 'solarbeam-wbtc-usdc-eol', + name: 'WBTC-USDC', + token: 'WBTC-USDC LP', + tokenDescription: 'SolarBeam', + tokenAddress: '0x83d7a3fc841038E8c8F46e6192BBcCA8b19Ee4e7', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSolarWBTC-USDC', + earnedTokenAddress: '0xd91F3A412F52F9E7ccF6987A3De75978721752E6', + earnContractAddress: '0xd91F3A412F52F9E7ccF6987A3De75978721752E6', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'solarbeam-wbtc-usdc', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'SolarBeam', + assets: ['WBTC', 'USDC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_HIGH', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + buyTokenUrl: + 'https://app.solarbeam.io/exchange/swap?inputCurrency=0x6aB6d61428fde76768D7b45D8BFeec19c6eF91A8&outputCurrency=0xE3F5a90F9cb311505cd691a46596599aA1A0AD7D', + addLiquidityUrl: + 'https://app.solarbeam.io/exchange/add/0x6aB6d61428fde76768D7b45D8BFeec19c6eF91A8/0xE3F5a90F9cb311505cd691a46596599aA1A0AD7D', + createdAt: 1635800359, + }, + { + id: 'solarbeam-usdt-usdc-eol', + name: 'USDT-USDC', + token: 'USDT-USDC LP', + tokenDescription: 'SolarBeam', + tokenAddress: '0x2a44696DDc050f14429bd8a4A05c750C6582bF3b', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSolarUSDT-USDC', + earnedTokenAddress: '0xe4626Cb852c50608630a9216bBf0735308f76388', + earnContractAddress: '0xe4626Cb852c50608630a9216bBf0735308f76388', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'solarbeam-usdt-usdc', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'SolarBeam', + assets: ['USDT', 'USDC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_HIGH', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + buyTokenUrl: + 'https://app.solarbeam.io/exchange/swap?inputCurrency=0xB44a9B6905aF7c801311e8F4E76932ee959c663C&outputCurrency=0xE3F5a90F9cb311505cd691a46596599aA1A0AD7D', + addLiquidityUrl: + 'https://app.solarbeam.io/exchange/add/0xB44a9B6905aF7c801311e8F4E76932ee959c663C/0xE3F5a90F9cb311505cd691a46596599aA1A0AD7D', + createdAt: 1635801486, + }, + { + id: 'solarbeam-mim-usdc-eol', + name: 'MIM-USDC', + token: 'MIM-USDC LP', + tokenDescription: 'SolarBeam', + tokenAddress: '0x9051fB701d6D880800e397e5B5d46FdDfAdc7056', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSolarMIM-USDC', + earnedTokenAddress: '0xd21b58f3DDCbE92A108F33e980FEe1Afd1221578', + earnContractAddress: '0xd21b58f3DDCbE92A108F33e980FEe1Afd1221578', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'solarbeam-mim-usdc', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'SolarBeam', + assets: ['MIM', 'USDC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + 'OVER_COLLAT_ALGO_STABLECOIN', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + buyTokenUrl: + 'https://app.solarbeam.io/exchange/swap?inputCurrency=0xE3F5a90F9cb311505cd691a46596599aA1A0AD7D&outputCurrency=0x0caE51e1032e8461f4806e26332c030E34De3aDb', + addLiquidityUrl: + 'https://app.solarbeam.io/exchange/add/0xE3F5a90F9cb311505cd691a46596599aA1A0AD7D/0x0caE51e1032e8461f4806e26332c030E34De3aDb', + createdAt: 1635807474, + }, + { + id: 'solarbeam-matic-wmovr-eol', + name: 'MATIC-MOVR', + token: 'MATIC-MOVR LP', + tokenDescription: 'SolarBeam', + tokenAddress: '0x29633cc367AbD9b16d327Adaf6c3538b6e97f6C0', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSolarMATIC-MOVR', + earnedTokenAddress: '0x99aeb31CB30DCfB85d50Adc708a740A0cfAceb94', + earnContractAddress: '0x99aeb31CB30DCfB85d50Adc708a740A0cfAceb94', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'solarbeam-matic-wmovr', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'SolarBeam', + assets: ['MATIC', 'MOVR'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + buyTokenUrl: + 'https://app.solarbeam.io/exchange/swap?inputCurrency=ETH&outputCurrency=0x682F81e57EAa716504090C3ECBa8595fB54561D8', + addLiquidityUrl: + 'https://app.solarbeam.io/exchange/add/ETH/0x682F81e57EAa716504090C3ECBa8595fB54561D8', + createdAt: 1635802614, + retireReason: 'tvl', + }, + { + id: 'solarbeam-avax-wmovr-eol', + name: 'AVAX-MOVR', + token: 'AVAX-MOVR LP', + tokenDescription: 'SolarBeam', + tokenAddress: '0xb9a61ac826196AbC69A3C66ad77c563D6C5bdD7b', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSolarAVAX-MOVR', + earnedTokenAddress: '0xA956903a735cCe4d0f4b5E4f5cfDCE8EE9cc2ed7', + earnContractAddress: '0xA956903a735cCe4d0f4b5E4f5cfDCE8EE9cc2ed7', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'solarbeam-avax-wmovr', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'SolarBeam', + assets: ['AVAX', 'MOVR'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + retireReason: 'tvl', + buyTokenUrl: + 'https://app.solarbeam.io/exchange/swap?inputCurrency=ETH&outputCurrency=0x14a0243C333A5b238143068dC3A7323Ba4C30ECB', + addLiquidityUrl: + 'https://app.solarbeam.io/exchange/add/ETH/0x14a0243C333A5b238143068dC3A7323Ba4C30ECB', + createdAt: 1635803316, + }, + { + id: 'solarbeam-wmovr-ftm-eol', + name: 'FTM-MOVR', + token: 'FTM-MOVR LP', + tokenDescription: 'SolarBeam', + tokenAddress: '0x1eebed8F28A6865a76D91189FD6FC45F4F774d67', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSolarMOVR-FTM', + earnedTokenAddress: '0xf1093cEE4F759BFAaA8f276A6678D771D2B395d2', + earnContractAddress: '0xf1093cEE4F759BFAaA8f276A6678D771D2B395d2', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'solarbeam-wmovr-ftm', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'SolarBeam', + assets: ['FTM', 'MOVR'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + buyTokenUrl: + 'https://app.solarbeam.io/exchange/swap?inputCurrency=ETH&outputCurrency=0xaD12daB5959f30b9fF3c2d6709f53C335dC39908', + addLiquidityUrl: + 'https://app.solarbeam.io/exchange/add/ETH/0xaD12daB5959f30b9fF3c2d6709f53C335dC39908', + createdAt: 1635806046, + }, + { + id: 'solarbeam-wmovr-rib-eol', + name: 'RIB-MOVR', + token: 'RIB-MOVR LP', + tokenDescription: 'SolarBeam', + tokenAddress: '0x0acDB54E610dAbC82b8FA454b21AD425ae460DF9', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSolarMOVR-RIB', + earnedTokenAddress: '0x4405BbABe3Ce09BBb4cd13Cd51748AeDeBbA84a2', + earnContractAddress: '0x4405BbABe3Ce09BBb4cd13Cd51748AeDeBbA84a2', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'solarbeam-wmovr-rib', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'SolarBeam', + assets: ['RIB', 'MOVR'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + buyTokenUrl: + 'https://app.solarbeam.io/exchange/swap?inputCurrency=ETH&outputCurrency=0xbD90A6125a84E5C512129D622a75CDDE176aDE5E', + addLiquidityUrl: + 'https://app.solarbeam.io/exchange/add/ETH/0xbD90A6125a84E5C512129D622a75CDDE176aDE5E', + createdAt: 1635789006, + retireReason: 'tvl', + }, + { + id: 'solarbeam-wmovr-relay-eol', + name: 'RELAY-MOVR', + token: 'RELAY-MOVR LP', + tokenDescription: 'SolarBeam', + tokenAddress: '0x9e0d90ebB44c22303Ee3d331c0e4a19667012433', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSolarMOVR-RELAY', + earnedTokenAddress: '0xE09C534adE063222BDDC1EB5DD86bBF4bf194F90', + earnContractAddress: '0xE09C534adE063222BDDC1EB5DD86bBF4bf194F90', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'solarbeam-wmovr-relay', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'SolarBeam', + assets: ['RELAY', 'MOVR'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + buyTokenUrl: + 'https://app.solarbeam.io/exchange/swap?inputCurrency=ETH&outputCurrency=0xAd7F1844696652ddA7959a49063BfFccafafEfe7', + addLiquidityUrl: + 'https://app.solarbeam.io/exchange/add/ETH/0xAd7F1844696652ddA7959a49063BfFccafafEfe7', + createdAt: 1635803946, + retireReason: 'tvl', + }, + { + id: 'solarbeam-pets-wmovr-eol', + name: 'PETS-MOVR', + token: 'PETS-MOVR LP', + tokenDescription: 'SolarBeam', + tokenAddress: '0x9f9a7a3f8F56AFB1a2059daE1E978165816cea44', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSolarPETS-MOVR', + earnedTokenAddress: '0x004fd8d1667D4eE60945d97f91dAb1bbc32A099A', + earnContractAddress: '0x004fd8d1667D4eE60945d97f91dAb1bbc32A099A', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'solarbeam-pets-wmovr', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'SolarBeam', + assets: ['PETS', 'MOVR'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + buyTokenUrl: + 'https://app.solarbeam.io/exchange/swap?inputCurrency=ETH&outputCurrency=0x1e0F2A75Be02c025Bd84177765F89200c04337Da', + addLiquidityUrl: + 'https://app.solarbeam.io/exchange/add/ETH/0x1e0F2A75Be02c025Bd84177765F89200c04337Da', + createdAt: 1635808950, + retireReason: 'tvl', + }, + { + id: 'solarbeam-solar-rib-eol', + name: 'RIB-SOLAR', + token: 'RIB-SOLAR LP', + tokenDescription: 'SolarBeam', + tokenAddress: '0xf9b7495b833804e4d894fC5f7B39c10016e0a911', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSolarSOLAR-RIB', + earnedTokenAddress: '0x52EAcFcfd5Fa6E42DBaA70a477aA7eb67e6a1B9f', + earnContractAddress: '0x52EAcFcfd5Fa6E42DBaA70a477aA7eb67e6a1B9f', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'solarbeam-solar-rib', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'SolarBeam', + assets: ['RIB', 'SOLAR'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + retireReason: 'rewards', + buyTokenUrl: + 'https://app.solarbeam.io/exchange/swap?inputCurrency=0x6bD193Ee6D2104F14F94E2cA6efefae561A4334B&outputCurrency=0xbD90A6125a84E5C512129D622a75CDDE176aDE5E', + addLiquidityUrl: + 'https://app.solarbeam.io/exchange/add/0xbD90A6125a84E5C512129D622a75CDDE176aDE5E/0x6bD193Ee6D2104F14F94E2cA6efefae561A4334B', + createdAt: 1635787854, + }, +]; diff --git a/src/features/configure/vault/polygon_pools.js b/src/features/configure/vault/polygon_pools.js new file mode 100644 index 000000000..6a07c1f5a --- /dev/null +++ b/src/features/configure/vault/polygon_pools.js @@ -0,0 +1,8837 @@ +export const polygonPools = [ + { + id: 'polygon-bifi-maxi', + logo: 'single-assets/BIFI.png', + name: 'BIFI Maxi', + token: 'BIFI', + tokenDescription: 'Beefy', + tokenAddress: '0xFbdd194376de19a88118e84E279b977f165d01b8', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPolygonBIFI', + earnedTokenAddress: '0xfEcf784F48125ccb7d8855cdda7C5ED6b5024Cb3', + earnContractAddress: '0xfEcf784F48125ccb7d8855cdda7C5ED6b5024Cb3', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'BIFI', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Beefy', + assets: ['BIFI'], + withdrawalFee: '0.05%', + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'Maxi', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?inputCurrency=0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619&outputCurrency=0xfbdd194376de19a88118e84e279b977f165d01b8', + createdAt: 1621450869, + }, + { + id: 'ripae-pmatic-matic', + name: 'pMATIC-MATIC LP', + token: 'pMATIC-MATIC LP', + tokenDescription: 'QuickSwap (Ripae)', + tokenAddress: '0x05eFa0Ed56DDdB4E950E3F5a54e349A137d4edC9', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooRipaepMATIC-MATIC', + earnedTokenAddress: '0xdb15F201529778b5e2dfa52D41615cd1AB24c765', + earnContractAddress: '0xdb15F201529778b5e2dfa52D41615cd1AB24c765', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'ripae-pmatic-matic', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Ripae', + assets: ['pMATIC', 'MATIC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/ETH/0xA0dF47432d9d88bcc040E9ee66dDC7E17A882715', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?outputCurrency=0xA0dF47432d9d88bcc040E9ee66dDC7E17A882715', + createdAt: 1654063152, + }, + { + id: 'ripae-pae-matic', + name: 'PAE-MATIC LP', + token: 'PAE-MATIC LP', + tokenDescription: 'QuickSwap (Ripae)', + tokenAddress: '0x07D53b147eF96FAD1896D1156755A9Da7E06098E', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooRipaePAE-MATIC', + earnedTokenAddress: '0x9F4316c10D5c3f148F072F6fa7E81413b7Da11a7', + earnContractAddress: '0x9F4316c10D5c3f148F072F6fa7E81413b7Da11a7', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'ripae-pae-matic', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Ripae', + assets: ['PAE', 'MATIC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/ETH/0x8063037ea50E4a066bF1430EA1E3e609CD5cEf6B', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?outputCurrency=0x8063037ea50E4a066bF1430EA1E3e609CD5cEf6B', + createdAt: 1654061880, + }, + { + id: 'quick-wbtc-cxbtc', + name: 'WBTC-cxBTC LP', + token: 'WBTC-cxBTC QLP', + tokenDescription: 'QuickSwap', + tokenAddress: '0x384B41bD57D4Eb3ceC5eD8063C4b15A6071CEE29', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooQuickBTC-cxBTC', + earnedTokenAddress: '0xFcC42a103d620125b580a0B76fD8a58cc1b6b06A', + earnContractAddress: '0xFcC42a103d620125b580a0B76fD8a58cc1b6b06A', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'quick-wbtc-cxbtc', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'QuickSwap', + assets: ['WBTC', 'cxBTC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0x1BFD67037B42Cf73acF2047067bd4F2C47D9BfD6/0xD30DC92b8ec0fa8de625768d208f51A93C10aFF2', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?outputCurrency=0xD30DC92b8ec0fa8de625768d208f51A93C10aFF2', + createdAt: 1653558101, + }, + + { + id: 'quick-weth-tel', + name: 'ETH-TEL LP', + token: 'ETH-TEL LP', + tokenDescription: 'QuickSwap', + tokenAddress: '0xFc2fC983a411C4B1E238f7Eb949308CF0218C750', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooQuickETH-TEL', + earnedTokenAddress: '0x5c26afCd15Fb65Ec27f99F47474A1D5b03673b49', + earnContractAddress: '0x5c26afCd15Fb65Ec27f99F47474A1D5b03673b49', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'quick-weth-tel', + depositsPaused: false, + status: 'active', + platform: 'QuickSwap', + assets: ['ETH', 'TEL'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'MCAP_SMALL', + 'IL_HIGH', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?outputCurrency=0xdF7837DE1F2Fa4631D716CF2502f8b230F1dcc32', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619/0xdF7837DE1F2Fa4631D716CF2502f8b230F1dcc32', + createdAt: 1653558100, + }, + + { + id: 'quick-usdc-tel', + name: 'USDC-TEL LP', + token: 'USDC-TEL LP', + tokenDescription: 'QuickSwap', + tokenAddress: '0xa5cABfC725DFa129f618D527E93702d10412f039', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooQuickUSDC-TEL', + earnedTokenAddress: '0x9456B29cb8E40962DbCbe7b2474Ae2028D8c4651', + earnContractAddress: '0x9456B29cb8E40962DbCbe7b2474Ae2028D8c4651', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'quick-usdc-tel', + depositsPaused: false, + status: 'active', + platform: 'QuickSwap', + assets: ['USDC', 'TEL'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'MCAP_SMALL', + 'IL_HIGH', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?outputCurrency=0xdF7837DE1F2Fa4631D716CF2502f8b230F1dcc32', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174/0xdF7837DE1F2Fa4631D716CF2502f8b230F1dcc32', + createdAt: 1653558999, + }, + { + id: 'jarvis-2nzd', + logo: 'single-assets/2NZD.svg', + name: 'jNZD-NZDS LP', + token: 'jNZD-NZDS LP', + tokenDescription: 'Curve (Jarvis)', + tokenAddress: '0x976A750168801F58E8AEdbCfF9328138D544cc09', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooJarvis2nzd', + earnedTokenAddress: '0x6720C2b7fd7dE1CAD3242dd3E8a86d033D4ed3f9', + earnContractAddress: '0x6720C2b7fd7dE1CAD3242dd3E8a86d033D4ed3f9', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'jarvis-2nzd', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Jarvis', + assets: ['jNZD', 'NZDS'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_MICRO', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratMultiLP', + withdrawalFee: '0%', + addLiquidityUrl: 'https://polygon.curve.fi/factory/228/deposit', + createdAt: 1653327832, + }, + { + id: 'jarvis-2jpy2', + logo: 'single-assets/2JPY.svg', + name: 'jJPY-JPYC LP', + token: 'jJPY-JPYC LP', + tokenDescription: 'Curve (Jarvis)', + tokenAddress: '0xaA91CDD7abb47F821Cf07a2d38Cc8668DEAf1bdc', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooJarvis2jpy2', + earnedTokenAddress: '0x122E09FdD2FF73C8CEa51D432c45A474BAa1518a', + earnContractAddress: '0x122E09FdD2FF73C8CEa51D432c45A474BAa1518a', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'jarvis-2jpy2', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Jarvis', + assets: ['jJPY', 'JPYC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_MICRO', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratMultiLP', + withdrawalFee: '0%', + addLiquidityUrl: 'https://polygon.curve.fi/factory/255/deposit', + createdAt: 1653321475, + }, + { + id: 'jarvis-2eur', + name: 'agEUR-jEUR LP', + token: 'agEUR-jEUR LP', + tokenDescription: 'Curve (Jarvis)', + tokenAddress: '0x2fFbCE9099cBed86984286A54e5932414aF4B717', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooJarvis2eur', + earnedTokenAddress: '0x5F1b5714f30bAaC4Cb1ee95E1d0cF6d5694c2204', + earnContractAddress: '0x5F1b5714f30bAaC4Cb1ee95E1d0cF6d5694c2204', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'jarvis-2eur', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Jarvis', + assets: ['agEUR', 'jEUR'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_MICRO', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratMultiLP', + withdrawalFee: '0%', + addLiquidityUrl: 'https://polygon.curve.fi/factory/209/deposit', + createdAt: 1653230127, + }, + { + id: 'quick-eth-newquick', + name: 'newQUICK-ETH LP', + token: 'newQUICK-ETH QLP', + tokenDescription: 'QuickSwap', + tokenAddress: '0x60e70705b52a4A5bDc1d8614426bA5016a68aB38', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooQuickETH-newQUICK', + earnedTokenAddress: '0xDBD762Fa3BeE775B6bc2f71135254cD1608c2204', + earnContractAddress: '0xDBD762Fa3BeE775B6bc2f71135254cD1608c2204', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'quick-eth-newquick', + depositsPaused: false, + status: 'active', + platform: 'QuickSwap', + assets: ['newQUICK', 'ETH'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'MCAP_MICRO', + 'IL_HIGH', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?outputCurrency=0xB5C064F955D8e7F38fE0460C556a72987494eE17', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0xB5C064F955D8e7F38fE0460C556a72987494eE17/0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619', + createdAt: 1652347933, + }, + { + id: 'quick-usdc-newquick', + name: 'newQUICK-USDC LP', + token: 'newQUICK-USDC QLP', + tokenDescription: 'QuickSwap', + tokenAddress: '0x747375305B825c49FB97eE0AC09d19Ec9Ef94BD2', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooQuickUSDC-newQUICK', + earnedTokenAddress: '0x1D0Bc9771D989C9621ED6E271cA5f91C5F894016', + earnContractAddress: '0x1D0Bc9771D989C9621ED6E271cA5f91C5F894016', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'quick-usdc-newquick', + depositsPaused: false, + status: 'active', + platform: 'QuickSwap', + assets: ['newQUICK', 'USDC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'MCAP_MICRO', + 'IL_HIGH', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?outputCurrency=0xB5C064F955D8e7F38fE0460C556a72987494eE17', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0xB5C064F955D8e7F38fE0460C556a72987494eE17/0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174', + createdAt: 1652347932, + }, + { + id: 'quick-newquick', + logo: 'single-assets/newQUICK.svg', + name: 'newQUICK', + token: 'newQUICK', + tokenDescription: 'QuickSwap', + tokenAddress: '0xB5C064F955D8e7F38fE0460C556a72987494eE17', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooQuickQUICK', + earnedTokenAddress: '0x1A723371f9dc30653dafd826B60d9335bf867E35', + earnContractAddress: '0x1A723371f9dc30653dafd826B60d9335bf867E35', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'newQUICK', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'QuickSwap', + assets: ['newQUICK'], + risks: [ + 'COMPLEXITY_HIGH', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_MICRO', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'SingleStake', + withdrawalFee: '0%', + buyTokenUrl: 'https://beta.quickswap.exchange/#/convert', + createdAt: 1652179476, + }, + { + id: 'quick-wmatic-maticx', + name: 'MaticX-MATIC LP', + token: 'MaticX-MATIC LP', + tokenDescription: 'QuickSwap', + tokenAddress: '0xb0e69f24982791dd49e316313fD3A791020B8bF7', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooQuickMaticX-MATIC', + earnedTokenAddress: '0xa448e9833095ad50693B025c275F48b271aDe882', + earnContractAddress: '0xa448e9833095ad50693B025c275F48b271aDe882', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'quick-wmatic-maticx', + depositsPaused: false, + status: 'active', + platform: 'QuickSwap', + assets: ['MaticX', 'MATIC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'MCAP_MICRO', + 'IL_NONE', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratMultiLP', + withdrawalFee: '0%', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?outputCurrency=0xfa68FB4628DFF1028CFEc22b4162FCcd0d45efb6', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0xfa68FB4628DFF1028CFEc22b4162FCcd0d45efb6/ETH', + createdAt: 1651088631, + }, + { + id: 'beefy-beqi', + logo: 'single-assets/beQI.png', + name: 'beQI', + token: 'beQI', + tokenDescription: 'Beefy', + tokenAddress: '0x97bfa4b212A153E15dCafb799e733bc7d1b70E72', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'moobeQI', + earnedTokenAddress: '0xDBFf95e99FccC8fbd90648B9E42C0F152518b9B8', + earnContractAddress: '0xDBFf95e99FccC8fbd90648B9E42C0F152518b9B8', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'beQI', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Beefy', + assets: ['beQI'], + withdrawalFee: '0%', + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LOW', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratSingle', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?inputCurrency=0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270&outputCurrency=0x580A84C73811E1839F75d86d75d88cCa0c241fF4', + createdAt: 1650557677, + }, + { + id: 'sushi-jrt-eth-eol', + name: 'JRT-ETH SLP', + token: 'JRT-ETH SLP', + tokenDescription: 'SushiSwap', + tokenAddress: '0xa769c6786C3717945438d4C4feb8494a1a6Ca443', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSushiJRT-ETH', + earnedTokenAddress: '0xfdE69969f4527343D78F9C9AC797ded29098B215', + earnContractAddress: '0xfdE69969f4527343D78F9C9AC797ded29098B215', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'sushi-jrt-eth', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'SushiSwap', + assets: ['JRT', 'ETH'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://app.sushi.com/add/0x7ceb23fd6bc0add59e62ac25578270cff1b9f619/0x596ebe76e2db4470966ea395b0d063ac6197a8c5', + buyTokenUrl: + 'https://app.sushi.com/swap?inputCurrency=0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619&outputCurrency=0x596ebe76e2db4470966ea395b0d063ac6197a8c5', + createdAt: 1634625658, + }, + { + id: 'quick-stmatic-matic', + name: 'stMATIC-MATIC LP', + token: 'stMATIC-MATIC LP', + tokenDescription: 'QuickSwap', + tokenAddress: '0x65752C54D9102BDFD69d351E1838A1Be83C924C6', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooQuickSwapstMATIC-MATIC', + earnedTokenAddress: '0x8829ADf1a9a7facE44c8FAb3Bc454f93F330E492', + earnContractAddress: '0x8829ADf1a9a7facE44c8FAb3Bc454f93F330E492', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'quick-stmatic-matic', + depositsPaused: false, + status: 'active', + platform: 'QuickSwap', + assets: ['stMATIC', 'MATIC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'MCAP_LARGE', + 'IL_NONE', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratMultiLP', + withdrawalFee: '0%', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?outputCurrency=0x3A58a54C066FdC0f2D55FC9C89F0415C92eBf3C4', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0x3A58a54C066FdC0f2D55FC9C89F0415C92eBf3C4/ETH', + createdAt: 1650004194, + }, + { + id: 'quick-matic-near-eol', + name: 'NEAR-MATIC LP', + token: 'MATIC-NEAR LP', + tokenDescription: 'QuickSwap', + tokenAddress: '0x35140e275bBABcfD1Ca4177c0F2e82Ca00e22974', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooQuickSwapMATIC-NEAR', + earnedTokenAddress: '0x399b1Be0f15530D72C3649c6dEf8ca59532C9f7B', + earnContractAddress: '0x399b1Be0f15530D72C3649c6dEf8ca59532C9f7B', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'quick-matic-near', + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'QuickSwap', + assets: ['NEAR', 'MATIC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'MCAP_LARGE', + 'IL_LOW', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratMultiLP', + withdrawalFee: '0%', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?outputCurrency=0x72bd80445b0db58ebe3E8dB056529D4C5FAF6F2f', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0x72bd80445b0db58ebe3E8dB056529D4C5FAF6F2f/ETH', + createdAt: 1650024276, + }, + { + id: 'quick-wone-matic-eol', + name: 'ONE-MATIC LP', + token: 'ONE-MATIC LP', + tokenDescription: 'QuickSwap', + tokenAddress: '0x28c5367D8A4E85F8d7B41A0CA2579e66A58FCcb6', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooQuickSwapWONE-MATIC', + earnedTokenAddress: '0x499746428D8062AA9e762DeB83d419110FB5E3AF', + earnContractAddress: '0x499746428D8062AA9e762DeB83d419110FB5E3AF', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'quick-wone-matic', + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'QuickSwap', + assets: ['ONE', 'MATIC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'MCAP_MEDIUM', + 'IL_LOW', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratMultiLP', + withdrawalFee: '0%', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?outputCurrency=0x80c0CBDB8d0B190238795d376f0bD57fd40525F2', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0x80c0CBDB8d0B190238795d376f0bD57fd40525F2/ETH', + createdAt: 1650028184, + }, + { + id: 'quick-wmetis-matic-eol', + name: 'METIS-MATIC LP', + token: 'METIS-MATIC LP', + tokenDescription: 'QuickSwap', + tokenAddress: '0xBd13D74A9b4cFf99FEAefA916E357056689dF91f', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooQuickSwapWMETIS-MATIC', + earnedTokenAddress: '0x7141424d50A9AB5CEDE7c979C6128Ce069A8bE1c', + earnContractAddress: '0x7141424d50A9AB5CEDE7c979C6128Ce069A8bE1c', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'quick-wmetis-matic', + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'QuickSwap', + assets: ['METIS', 'MATIC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'MCAP_MEDIUM', + 'IL_LOW', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratMultiLP', + withdrawalFee: '0%', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?outputCurrency=0xA863246658DEA34111C3C1DceDb2cfd5d6067334', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0xA863246658DEA34111C3C1DceDb2cfd5d6067334/ETH', + createdAt: 1650029492, + }, + { + id: 'quick-wmatic-cel', + name: 'CEL-MATIC LP', + token: 'CEL-MATIC LP', + tokenDescription: 'QuickSwap', + tokenAddress: '0x7D341B151DbFBFe97714f3EdEc98E26f2DD0e532', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooQuickSwapCEL-MATIC', + earnedTokenAddress: '0xe032ad802585f79c004E8A4c225a645058F37583', + earnContractAddress: '0xe032ad802585f79c004E8A4c225a645058F37583', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'quick-wmatic-cel', + depositsPaused: false, + status: 'active', + platform: 'QuickSwap', + assets: ['CEL', 'MATIC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'MCAP_MICRO', + 'IL_HIGH', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?outputCurrency=0xD85d1e945766Fea5Eda9103F918Bd915FbCa63E6', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270/0xD85d1e945766Fea5Eda9103F918Bd915FbCa63E6', + createdAt: 1649961634, + }, + { + id: 'quick-ixt-usdt', + name: 'IXT-USDT LP', + token: 'IXT-USDT LP', + tokenDescription: 'QuickSwap', + tokenAddress: '0x304e57c752E854E9A233Ae82fcC42F7568b81180', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooQuickSwapIXT-USDT', + earnedTokenAddress: '0xfa6C93288250c67Ca620Efb096e9D23C8ECc587D', + earnContractAddress: '0xfa6C93288250c67Ca620Efb096e9D23C8ECc587D', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'quick-ixt-usdt', + depositsPaused: false, + status: 'active', + platform: 'QuickSwap', + assets: ['IXT', 'USDT'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'MCAP_MICRO', + 'IL_HIGH', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?inputCurrency=0xc2132D05D31c914a87C6611C10748AEb04B58e8F&outputCurrency=0xE06Bd4F5aAc8D0aA337D13eC88dB6defC6eAEefE', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0xE06Bd4F5aAc8D0aA337D13eC88dB6defC6eAEefE/0xc2132D05D31c914a87C6611C10748AEb04B58e8F', + createdAt: 1649257590, + }, + { + id: 'jarvis-2sgd', + logo: 'single-assets/2SGD.png', + name: 'jSGD-XSGD LP', + token: '2sgd', + tokenDescription: 'Curve (Jarvis)', + tokenAddress: '0xeF75E9C7097842AcC5D0869E1dB4e5fDdf4BFDDA', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooJarvis2sgd', + earnedTokenAddress: '0x18DAdac6d0AAF37BaAAC811F6338427B46815a81', + earnContractAddress: '0x18DAdac6d0AAF37BaAAC811F6338427B46815a81', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'jarvis-2sgd', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Jarvis', + assets: ['jSGD', 'XSGD'], + risks: ['COMPLEXITY_LOW', 'BATTLE_TESTED', 'IL_NONE', 'MCAP_MICRO'], + stratType: 'StratMultiLP', + withdrawalFee: '0%', + addLiquidityUrl: 'https://polygon.curve.fi/factory/22/deposit', + createdAt: 1653327757, + }, + { + id: 'quick-eth-fuse-eol', + name: 'FUSE-ETH LP', + token: 'FUSE-ETH LP', + tokenDescription: 'QuickSwap', + tokenAddress: '0x9Ab6E8197cfD366F920b54cb069cE6273898CB0B', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooQuickSwapFUSE-ETH', + earnedTokenAddress: '0xba61Ae734e5348e83A75599Bc5a64CB6aAdC0247', + earnContractAddress: '0xba61Ae734e5348e83A75599Bc5a64CB6aAdC0247', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'quick-eth-fuse', + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'QuickSwap', + assets: ['FUSE', 'ETH'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'MCAP_MICRO', + 'IL_HIGH', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?inputCurrency=0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619&outputCurrency=0xF915fDDa4c882731C0456a4214548Cd13A822886', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619/0xF915fDDa4c882731C0456a4214548Cd13A822886', + createdAt: 1647440992, + }, + { + id: 'quick-usdc-orbs', + name: 'ORBS-USDC LP', + token: 'ORBS-USDC LP', + tokenDescription: 'QuickSwap', + tokenAddress: '0xB2b6D423e535b57aaD06E9866803B95fB66152EA', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooQuickSwapORBS-USDC', + earnedTokenAddress: '0x333F81C94e388002aAc75ccF23Ab4865B52D7a10', + earnContractAddress: '0x333F81C94e388002aAc75ccF23Ab4865B52D7a10', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'quick-usdc-orbs', + depositsPaused: false, + status: 'active', + platform: 'QuickSwap', + assets: ['ORBS', 'USDC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'MCAP_MICRO', + 'IL_HIGH', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?inputCurrency=0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174&outputCurrency=0x614389EaAE0A6821DC49062D56BDA3d9d45Fa2ff', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174/0x614389EaAE0A6821DC49062D56BDA3d9d45Fa2ff', + createdAt: 1647302895, + }, + { + id: 'quick-eth-cxeth', + name: 'ETH-cxETH LP', + token: 'ETH-cxETH QLP', + tokenDescription: 'QuickSwap', + tokenAddress: '0xda7cd765DF426fCA6FB5E1438c78581E4e66bFe7', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooQuickETH-cxETH', + earnedTokenAddress: '0x5027da71EA7679775C3870A508cB1CdEFDbECa25', + earnContractAddress: '0x5027da71EA7679775C3870A508cB1CdEFDbECa25', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'quick-eth-cxeth', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'QuickSwap', + assets: ['ETH', 'cxETH'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619/0xfe4546feFe124F30788c4Cc1BB9AA6907A7987F9', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?inputCurrency=0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619&outputCurrency=0xfe4546fefe124f30788c4cc1bb9aa6907a7987f9', + createdAt: 1645899124, + }, + { + id: 'quick-cxada-cxeth', + name: 'cxADA-cxETH LP', + token: 'cxADA-cxETH QLP', + tokenDescription: 'QuickSwap', + tokenAddress: '0xfeC2385b26a4446A7813d16263348FdE7E99FEe4', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooQuickcxADA-cxETH', + earnedTokenAddress: '0xFe4519d295089aC689a6EC6779De4740c06D4707', + earnContractAddress: '0xFe4519d295089aC689a6EC6779De4740c06D4707', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'quick-cxada-cxeth', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'QuickSwap', + assets: ['cxADA', 'cxETH'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0x64875Aaa68d1d5521666C67d692Ee0B926b08b2F/0xfe4546feFe124F30788c4Cc1BB9AA6907A7987F9', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?inputCurrency=0x64875aaa68d1d5521666c67d692ee0b926b08b2f&outputCurrency=0xfe4546fefe124f30788c4cc1bb9aa6907a7987f9', + createdAt: 1645967761, + }, + { + id: 'quick-cxdoge-cxeth', + name: 'cxDOGE-cxETH LP', + token: 'cxDOGE-cxETH QLP', + tokenDescription: 'QuickSwap', + tokenAddress: '0x96A523d3576b9b1DfEE49AA73723F64A5b553720', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooQuickcxDOGE-cxETH', + earnedTokenAddress: '0x87F322dD9c327B4F91A7D620EE6ED7FA883Af62f', + earnContractAddress: '0x87F322dD9c327B4F91A7D620EE6ED7FA883Af62f', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'quick-cxdoge-cxeth', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'QuickSwap', + assets: ['cxDOGE', 'cxETH'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0x9Bd9aD490dD3a52f096D229af4483b94D63BE618/0xfe4546feFe124F30788c4Cc1BB9AA6907A7987F9', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?inputCurrency=0x9bd9ad490dd3a52f096d229af4483b94d63be618&outputCurrency=0xfe4546fefe124f30788c4cc1bb9aa6907a7987f9', + createdAt: 1645982670, + }, + { + id: 'quick-kiro-matic', + name: 'KIRO-MATIC LP', + token: 'KIRO-MATIC LP', + tokenDescription: 'QuickSwap', + tokenAddress: '0x3f245C6f18442Bd6198d964C567a01BD4202e290', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooQuickSwapKIRO-MATIC', + earnedTokenAddress: '0x0A9e464D6939D37a78d7B2a32e8B8F75f15c3C25', + earnContractAddress: '0x0A9e464D6939D37a78d7B2a32e8B8F75f15c3C25', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'quick-kiro-matic', + depositsPaused: false, + status: 'active', + platform: 'QuickSwap', + assets: ['KIRO', 'MATIC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'MCAP_LOW', + 'IL_HIGH', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratMultiLP', + withdrawalFee: '0%', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?outputCurrency=0xB382C1cfA622795a534e5bd56Fac93d59BAc8B0D', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0xB382C1cfA622795a534e5bd56Fac93d59BAc8B0D/ETH', + createdAt: 1642000487, + }, + { + id: 'quick-genesis-quick-eol', + name: 'GENESIS-QUICK LP', + token: 'GENESIS-QUICK LP', + tokenDescription: 'QuickSwap', + tokenAddress: '0xF0696be85fa54F7a8C9F20AA98aA4409CD5C9D1B', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooQuickSwapGENESIS-QUICK', + earnedTokenAddress: '0x775965D328FD46b51595E7d711c6B563CD4eFCF4', + earnContractAddress: '0x775965D328FD46b51595E7d711c6B563CD4eFCF4', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'quick-genesis-quick', + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'QuickSwap', + assets: ['GENESIS', 'QUICK'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'MCAP_MICRO', + 'IL_HIGH', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?inputCurrency=0x831753DD7087CaC61aB5644b308642cc1c33Dc13&outputCurrency=0x51869836681BcE74a514625c856aFb697a013797', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0x831753DD7087CaC61aB5644b308642cc1c33Dc13/0x51869836681BcE74a514625c856aFb697a013797', + createdAt: 1645091761, + }, + { + id: 'quick-bico-eth', + name: 'BICO-ETH LP', + token: 'BICO-ETH LP', + tokenDescription: 'QuickSwap', + tokenAddress: '0x7E02A82a9F2b96eE2836c5C64c44e0aB13020f4b', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooQuickSwapBICO-ETH', + earnedTokenAddress: '0xEaa2Ce6351d803456235809D82357ED8D23E8502', + earnContractAddress: '0xEaa2Ce6351d803456235809D82357ED8D23E8502', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'quick-bico-eth', + depositsPaused: false, + status: 'active', + platform: 'QuickSwap', + assets: ['BICO', 'ETH'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'MCAP_MICRO', + 'IL_HIGH', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?inputCurrency=0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619&outputCurrency=0x91c89A94567980f0e9723b487b0beD586eE96aa7', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619/0x91c89A94567980f0e9723b487b0beD586eE96aa7', + createdAt: 1645091761, + }, + { + id: 'quick-fodl-matic-eol', + name: 'FODL-MATIC LP', + token: 'FODL-MATIC LP', + tokenDescription: 'QuickSwap', + tokenAddress: '0x2Fc4DFCEe8C331D54341f5668a6d9BCdd86F8e2f', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooQuickSwapFODL-MATIC', + earnedTokenAddress: '0x2434826b2cA0BeEDc9287Fb592d94328F525eA0D', + earnContractAddress: '0x2434826b2cA0BeEDc9287Fb592d94328F525eA0D', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'quick-fodl-matic', + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'QuickSwap', + assets: ['FODL', 'MATIC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'MCAP_MICRO', + 'IL_HIGH', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?inputCurrency=ETH&outputCurrency=0x5314bA045a459f63906Aa7C76d9F337DcB7d6995', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/ETH/0x5314bA045a459f63906Aa7C76d9F337DcB7d6995', + createdAt: 1644238771, + }, + { + id: 'quick-quick-tel-eol', + name: 'QUICK-TEL LP', + token: 'QUICK-TEL LP', + tokenDescription: 'QuickSwap', + tokenAddress: '0xE88e24F49338f974B528AcE10350Ac4576c5c8A1', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooQuickSwapQUICK-TEL', + earnedTokenAddress: '0x14dC157f8BeF165B557599744c40b605F29cB1A0', + earnContractAddress: '0x14dC157f8BeF165B557599744c40b605F29cB1A0', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'quick-quick-tel', + depositsPaused: true, + status: 'eol', + retireReason: 'tvl', + platform: 'QuickSwap', + assets: ['QUICK', 'TEL'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'MCAP_SMALL', + 'IL_HIGH', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?inputCurrency=0x831753DD7087CaC61aB5644b308642cc1c33Dc13&outputCurrency=0xdF7837DE1F2Fa4631D716CF2502f8b230F1dcc32', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0x831753DD7087CaC61aB5644b308642cc1c33Dc13/0xdF7837DE1F2Fa4631D716CF2502f8b230F1dcc32', + createdAt: 1644239255, + }, + { + id: 'quick-bnb-usdc-eol', + name: 'BNB-USDC LP', + token: 'BNB-USDC LP', + tokenDescription: 'QuickSwap', + tokenAddress: '0x40A5Df3E37152d4DaF279e0450289Af76472b02e', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooQuickSwapBNB-USDC', + earnedTokenAddress: '0xbfd1a5525C47c229B9c0D82ca4B6567F9f74a3cC', + earnContractAddress: '0xbfd1a5525C47c229B9c0D82ca4B6567F9f74a3cC', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'quick-bnb-usdc', + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'QuickSwap', + assets: ['BNB', 'USDC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'MCAP_LARGE', + 'IL_HIGH', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?inputCurrency=0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174&outputCurrency=0x5c4b7CCBF908E64F32e12c6650ec0C96d717f03F', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174/0x5c4b7CCBF908E64F32e12c6650ec0C96d717f03F', + createdAt: 1644238131, + }, + { + id: 'quick-book-matic-eol', + name: 'BOOK-MATIC LP', + token: 'BOOK-MATIC LP', + tokenDescription: 'QuickSwap', + tokenAddress: '0xE6672538c35508b011b82C986B8822ECF26b1cbC', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooQuickSwapBOOK-MATIC', + earnedTokenAddress: '0x4E685C0d068cb0af88Ff662B89951Ad5B3727387', + earnContractAddress: '0x4E685C0d068cb0af88Ff662B89951Ad5B3727387', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'quick-book-matic', + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'QuickSwap', + assets: ['BOOK', 'MATIC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'MCAP_MICRO', + 'IL_HIGH', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?inputCurrency=ETH&outputCurrency=0x8192759Bf7f247cC92F74E39B3A4225516624fC1', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/ETH/0x8192759Bf7f247cC92F74E39B3A4225516624fC1', + createdAt: 1644238407, + }, + { + id: 'sushi-eth-mana', + name: 'ETH-MANA LP', + token: 'ETH-MANA LP', + tokenDescription: 'SushiSwap', + tokenAddress: '0xc48AE82ca34C63887b975F20ABA91a38f2a900B8', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSushiETH-MANA', + earnedTokenAddress: '0x18a20abeba0086ac0c564B2bA3a7BaF18568667D', + earnContractAddress: '0x18a20abeba0086ac0c564B2bA3a7BaF18568667D', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'sushi-eth-mana', + depositsPaused: false, + status: 'active', + platform: 'SushiSwap', + assets: ['ETH', 'MANA'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'MCAP_MEDIUM', + 'IL_HIGH', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + buyTokenUrl: + 'https://app.sushi.com/swap?outputCurrency=0x7ceb23fd6bc0add59e62ac25578270cff1b9f619&inputCurrency=0xa1c57f48f0deb89f569dfbe6e2b7f46d33606fd4', + addLiquidityUrl: + 'https://app.sushi.com/add/0x7ceb23fd6bc0add59e62ac25578270cff1b9f619/0xa1c57f48f0deb89f569dfbe6e2b7f46d33606fd4', + createdAt: 1643755752, + }, + { + id: 'quick-sand-matic-eol', + name: 'SAND-MATIC LP', + token: 'SAND-MATIC LP', + tokenDescription: 'QuickSwap', + tokenAddress: '0x369582d2010B6eD950B571F4101e3bB9b554876F', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooQuickSwapSAND-MATIC', + earnedTokenAddress: '0x6d212Dd38aD0811d30AABf08fB78018133F8417E', + earnContractAddress: '0x6d212Dd38aD0811d30AABf08fB78018133F8417E', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'quick-sand-matic', + depositsPaused: true, + status: 'eol', + platform: 'QuickSwap', + retireReason: 'rewards', + assets: ['SAND', 'MATIC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'MCAP_LARGE', + 'IL_HIGH', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?outputCurrency=0xBbba073C31bF03b8ACf7c28EF0738DeCF3695683&inputCurrency=ETH', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0xBbba073C31bF03b8ACf7c28EF0738DeCF3695683/ETH', + createdAt: 1643011650, + }, + { + id: 'popsicle-ice-eth', + name: 'ICE-ETH LP', + token: 'ICE-ETH SLP', + tokenDescription: 'SushiSwap (Popsicle)', + tokenAddress: '0x941eb28e750C441AEF465a89E43DDfec2561830b', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPopsicleICE-WETH', + earnedTokenAddress: '0x2109361Ed6759296A70A3f025fBce9744E5BC406', + earnContractAddress: '0x2109361Ed6759296A70A3f025fBce9744E5BC406', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'popsicle-ice-eth', + depositsPaused: false, + status: 'active', + platform: 'Popsicle', + assets: ['ICE', 'ETH'], + risks: [ + 'COMPLEXITY_LOW', + 'MCAP_MICRO', + 'BATTLE_TESTED', + 'IL_HIGH', + 'PLATFORM_ESTABLISHED', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + buyTokenUrl: + 'https://app.sushi.com/swap?outputCurrency=0x4e1581f01046eFDd7a1a2CDB0F82cdd7F71F2E59', + addLiquidityUrl: + 'https://app.sushi.com/add/0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619/0x4e1581f01046eFDd7a1a2CDB0F82cdd7F71F2E59', + createdAt: 1642630360, + }, + { + id: 'jarvis-2cad', + logo: 'single-assets/2CAD.svg', + name: 'jCAD-CADC LP', + token: '2cad', + tokenDescription: 'Curve (Jarvis)', + tokenAddress: '0xA69b0D5c0C401BBA2d5162138613B5E38584F63F', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooJarvis2Cad', + earnedTokenAddress: '0xcf9Dd1de1D02158B3d422779bd5184032674A6D1', + earnContractAddress: '0xcf9Dd1de1D02158B3d422779bd5184032674A6D1', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'jarvis-2cad', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Jarvis', + assets: ['jCAD', 'CADC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_MICRO', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratMultiLP', + withdrawalFee: '0%', + addLiquidityUrl: 'https://polygon.curve.fi/factory/23/deposit', + createdAt: 1653323113, + }, + { + id: 'quick-ustw-matic-eol', + name: 'USTw-MATIC LP', + token: 'USTw-MATIC LP', + tokenDescription: 'QuickSwap', + tokenAddress: '0x9b7e966fe005d616b5560E4BaA7cFA8747d6cBb9', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooQuickUST-MATIC', + earnedTokenAddress: '0x21280954C4F99747757076A0cC56ba594037075d', + earnContractAddress: '0x21280954C4F99747757076A0cC56ba594037075d', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'quick-ustw-matic', + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'QuickSwap', + assets: ['USTw', 'MATIC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MEDIUM', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + 'ALGO_STABLE', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0xE6469Ba6D2fD6130788E0eA9C0a0515900563b59/0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?outputCurrency=0xE6469Ba6D2fD6130788E0eA9C0a0515900563b59&inputCurrency=0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270', + createdAt: 1641937774, + }, + { + id: 'quick-psp-matic-eol', + name: 'PSP-MATIC LP', + token: 'PSP-MATIC LP', + tokenDescription: 'QuickSwap', + tokenAddress: '0x7AfC060acCA7ec6985d982dD85cC62B111CAc7a7', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooQuickSwapPSP-MATIC', + earnedTokenAddress: '0x051aBa342824Ba03519694774B4e9297618Fa818', + earnContractAddress: '0x051aBa342824Ba03519694774B4e9297618Fa818', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'quick-psp-matic', + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'QuickSwap', + assets: ['PSP', 'MATIC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'MCAP_MICRO', + 'IL_HIGH', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratMultiLP', + withdrawalFee: '0%', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?inputCurrency=0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270&outputCurrency=0x42d61D766B85431666B39B89C43011f24451bFf6', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0x42d61D766B85431666B39B89C43011f24451bFf6/ETH', + createdAt: 1641848936, + }, + { + id: 'quick-gns-dai-eol', + name: 'GNS-DAI LP', + token: 'GNS-DAI LP', + tokenDescription: 'QuickSwap', + tokenAddress: '0x6E53cB6942e518376E9e763554dB1A45DDCd25c4', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooQuickGNS-DAI', + earnedTokenAddress: '0x5E55f1f68c3a708C1A47a6FCFd6D0ADaEf7380d7', + earnContractAddress: '0x5E55f1f68c3a708C1A47a6FCFd6D0ADaEf7380d7', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'quick-gns-dai', + depositsPaused: true, + status: 'eol', + retireReason: 'tvl', + platform: 'QuickSwap', + assets: ['GNS', 'DAI'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'MCAP_MICRO', + 'IL_HIGH', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + 'OVER_COLLAT_ALGO_STABLECOIN', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?inputCurrency=0x8f3cf7ad23cd3cadbd9735aff958023239c6a063&outputCurrency=0xE5417Af564e4bFDA1c483642db72007871397896', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0xE5417Af564e4bFDA1c483642db72007871397896/0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063', + createdAt: 1641761360, + }, + { + id: 'jarvis-2jpy-eol', + logo: 'single-assets/2JPY.svg', + name: 'jJPY-JPYC', + token: '2jpy', + tokenDescription: 'Curve (Jarvis)', + tokenAddress: '0xE8dCeA7Fb2Baf7a9F4d9af608F06d78a687F8d9A', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooJarvis2jpy', + earnedTokenAddress: '0x94F64bb5046Ee377bFBb664736547B7f78e5AE06', + earnContractAddress: '0x94F64bb5046Ee377bFBb664736547B7f78e5AE06', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'jarvis-2jpy', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['jJPY', 'JPYC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_MICRO', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratMultiLP', + withdrawalFee: '0%', + retireReason: 'rewards', + addLiquidityUrl: 'https://polygon.curve.fi/factory/85/deposit', + createdAt: 1641144218, + }, + { + id: 'jarvis-5eur-eol', + name: 'agEUR-4EUR', + token: 'ag5eur', + tokenDescription: 'Curve (Jarvis)', + tokenAddress: '0x81212149b983602474fcD0943E202f38b38d7484', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooJarvisag5eur', + earnedTokenAddress: '0xf3Eac1e5A81A732b002691E1f96cE5A43BfBb929', + earnContractAddress: '0xf3Eac1e5A81A732b002691E1f96cE5A43BfBb929', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'jarvis-5eur', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Other', + assets: ['agEUR', '4EUR'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_MICRO', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratMultiLP', + withdrawalFee: '0%', + addLiquidityUrl: 'https://polygon.curve.fi/factory/72/deposit', + createdAt: 1640691348, + }, + { + id: 'quick-tomb-mimatic-eol', + name: 'TOMB-MAI LP', + token: 'TOMB-MAI LP', + tokenDescription: 'QuickSwap', + tokenAddress: '0xbDBE9c09fFC1dE53AD9FA3732eC1cD37Da7Ba52F', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooQuickTOMB-MAI', + earnedTokenAddress: '0x0b568c995aCDb8a78570220F104c256f9075A4b6', + earnContractAddress: '0x0b568c995aCDb8a78570220F104c256f9075A4b6', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'quick-tomb-mimatic', + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'QuickSwap', + assets: ['TOMB', 'MAI'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_LOW', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + 'OVER_COLLAT_ALGO_STABLECOIN', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0xa3Fa99A148fA48D14Ed51d610c367C61876997F1/0x0e98C977B943f06075b2D795794238fBfB9b9a34', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?outputCurrency=0xa3Fa99A148fA48D14Ed51d610c367C61876997F1&inputCurrency=0x0e98C977B943f06075b2D795794238fBfB9b9a34', + createdAt: 1640281502, + }, + { + id: 'quick-hbar[0x]-mimatic-eol', + name: 'HBAR-MAI LP', + token: 'HBAR-MAI LP', + tokenDescription: 'QuickSwap', + tokenAddress: '0x71952D09Aa093aCCCAe0c1d5612D7FE26F20517f', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooQuickHBAR-MAI', + earnedTokenAddress: '0x1b90eC99d3B99086691EC3CBEf1F1407E2753e38', + earnContractAddress: '0x1b90eC99d3B99086691EC3CBEf1F1407E2753e38', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'quick-hbar[0x]-mimatic', + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'QuickSwap', + assets: ['HBAR', 'MAI'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MEDIUM', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + 'OVER_COLLAT_ALGO_STABLECOIN', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0xa3Fa99A148fA48D14Ed51d610c367C61876997F1/0x1646C835d70F76D9030DF6BaAeec8f65c250353d', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?outputCurrency=0xa3Fa99A148fA48D14Ed51d610c367C61876997F1&inputCurrency=0x1646C835d70F76D9030DF6BaAeec8f65c250353d', + createdAt: 1640281632, + }, + { + id: 'quick-mimatic-clam-eol', + name: 'CLAM-MAI LP', + token: 'CLAM-MAI LP', + tokenDescription: 'QuickSwap', + tokenAddress: '0x1581802317f32A2665005109444233ca6E3e2D68', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooQuickCLAM-MAI', + earnedTokenAddress: '0xa2A2A464E4c59cA64F9FC85DF96b3C604EAf2d66', + earnContractAddress: '0xa2A2A464E4c59cA64F9FC85DF96b3C604EAf2d66', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'quick-mimatic-clam', + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'QuickSwap', + assets: ['CLAM', 'MAI'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + 'OVER_COLLAT_ALGO_STABLECOIN', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0xa3Fa99A148fA48D14Ed51d610c367C61876997F1/0xC250e9987A032ACAC293d838726C511E6E1C029d', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?outputCurrency=0xa3Fa99A148fA48D14Ed51d610c367C61876997F1&inputCurrency=0xC250e9987A032ACAC293d838726C511E6E1C029d', + createdAt: 1640281264, + }, + { + id: 'sushi-bct-klima-eol', + name: 'BCT-KLIMA SLP', + token: 'BCT-KLIMA SLP', + tokenDescription: 'SushiSwap', + tokenAddress: '0x9803c7aE526049210a1725F7487AF26fE2c24614', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSushiBCT-KLIMA', + earnedTokenAddress: '0x19AfD39F0f8A2deeD37Ed74F6a126b68432D4bc7', + earnContractAddress: '0x19AfD39F0f8A2deeD37Ed74F6a126b68432D4bc7', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'sushi-bct-klima', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'tvl', + platform: 'SushiSwap', + assets: ['BCT', 'KLIMA'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://app.sushi.com/add/0x4e78011Ce80ee02d2c3e649Fb657E45898257815/0x2F800Db0fdb5223b3C3f354886d907A671414A7F', + buyTokenUrl: + 'https://app.sushi.com/#/swap?inputCurrency=0x4e78011Ce80ee02d2c3e649Fb657E45898257815&outputCurrency=0x2F800Db0fdb5223b3C3f354886d907A671414A7F', + createdAt: 1640136296, + }, + { + id: 'sushi-usdc-bct', + name: 'BCT-USDC SLP', + token: 'BCT-USDC SLP', + tokenDescription: 'SushiSwap', + tokenAddress: '0x1E67124681b402064CD0ABE8ed1B5c79D2e02f64', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSushiUSDC-BCT', + earnedTokenAddress: '0x90A7289A3aAb4b070A2646DCa757025Ee84cF580', + earnContractAddress: '0x90A7289A3aAb4b070A2646DCa757025Ee84cF580', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'sushi-usdc-bct', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SushiSwap', + assets: ['BCT', 'USDC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_MICRO', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://app.sushi.com/add/0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174/0x2F800Db0fdb5223b3C3f354886d907A671414A7F', + buyTokenUrl: + 'https://app.sushi.com/#/swap?inputCurrency=0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174&outputCurrency=0x2F800Db0fdb5223b3C3f354886d907A671414A7F', + createdAt: 1640137462, + }, + { + id: 'sushi-eth-gohm', + name: 'gOHM-ETH SLP', + token: 'gOHM-ETH SLP', + tokenDescription: 'SushiSwap', + tokenAddress: '0x1549E0E8127D380080aab448b82d280433CE4030', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSushiETH-gOHM', + earnedTokenAddress: '0xf49cB3B72d170407AeD7ED5B34d6e7bbE58Ac917', + earnContractAddress: '0xf49cB3B72d170407AeD7ED5B34d6e7bbE58Ac917', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'sushi-eth-gohm', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SushiSwap', + assets: ['gOHM', 'ETH'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://app.sushi.com/add/0x1a3acf6D19267E2d3e7f898f42803e90C9219062/0x45c32fA6DF82ead1e2EF74d17b76547EDdFaFF89', + buyTokenUrl: + 'https://app.sushi.com/#/swap?inputCurrency=0x45c32fA6DF82ead1e2EF74d17b76547EDdFaFF89&outputCurrency=0x1a3acf6D19267E2d3e7f898f42803e90C9219062', + createdAt: 1639747398, + }, + { + id: 'sushi-eth2x-eth', + name: 'ETH2x-ETH SLP', + token: 'ETH2x-ETH SLP', + tokenDescription: 'SushiSwap', + tokenAddress: '0xadd053A09F95E565B25d8b9B84D0fcFaa962465E', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSushiETH2x-ETH', + earnedTokenAddress: '0x6E1D1Eb4581E4C612240Ec603a243ce9AE3265E4', + earnContractAddress: '0x6E1D1Eb4581E4C612240Ec603a243ce9AE3265E4', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'sushi-eth2x-eth', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SushiSwap', + assets: ['ETH2x', 'ETH'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_SMALL', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://app.sushi.com/add/0x3Ad707dA309f3845cd602059901E39C4dcd66473/0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619', + buyTokenUrl: + 'https://app.sushi.com/#/swap?inputCurrency=0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619&outputCurrency=0x3Ad707dA309f3845cd602059901E39C4dcd66473', + createdAt: 1639689694, + }, + { + id: 'sushi-fxs-frax', + name: 'FXS-FRAX SLP', + token: 'FXS-FRAX SLP', + tokenDescription: 'SushiSwap', + tokenAddress: '0xDf45B5B68d9dC84173DD963c763AeA8CAD3E24A6', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSushiFXS-FRAX', + earnedTokenAddress: '0xe62a0a25a0eCE622f795d5f1Be0F374485B64bf8', + earnContractAddress: '0xe62a0a25a0eCE622f795d5f1Be0F374485B64bf8', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'sushi-fxs-frax', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SushiSwap', + assets: ['FXS', 'FRAX'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_SMALL', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://app.sushi.com/add/0x1a3acf6D19267E2d3e7f898f42803e90C9219062/0x45c32fA6DF82ead1e2EF74d17b76547EDdFaFF89', + buyTokenUrl: + 'https://app.sushi.com/#/swap?inputCurrency=0x45c32fA6DF82ead1e2EF74d17b76547EDdFaFF89&outputCurrency=0x1a3acf6D19267E2d3e7f898f42803e90C9219062', + createdAt: 1639691972, + }, + { + id: 'jarvis-4eur', + logo: 'single-assets/4EUR.png', + name: 'jEUR/PAR/EURS/EURt', + token: 'crv4eur', + tokenDescription: 'Curve (Jarvis)', + tokenAddress: '0xAd326c253A84e9805559b73A08724e11E49ca651', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooJarvis4eur', + earnedTokenAddress: '0x80dAd30b61b6110aB4112e440988DA2d9aa85329', + earnContractAddress: '0x80dAd30b61b6110aB4112e440988DA2d9aa85329', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'jarvis-4eur', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Jarvis', + assets: ['jEUR', 'PAR', 'EURS', 'EURt'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_MICRO', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratMultiLP', + withdrawalFee: '0%', + addLiquidityUrl: 'https://polygon.curve.fi/factory/37/deposit', + createdAt: 1653328330, + }, + { + id: 'curve-poly-eurt', + logo: 'single-assets/EURt.png', + name: 'EURt/DAI/USDC/USDT', + token: 'crvEURT', + tokenDescription: 'Curve', + tokenAddress: '0x600743B1d8A96438bD46836fD34977a00293f6Aa', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCurveEURt', + earnedTokenAddress: '0x108c7a293162Adff86DA216AB5F91e56723125dc', + earnContractAddress: '0x108c7a293162Adff86DA216AB5F91e56723125dc', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'curve-poly-eurt', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Curve', + assets: ['EURt', 'DAI', 'USDC', 'USDT'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + 'OVER_COLLAT_ALGO_STABLECOIN', + ], + stratType: 'StratMultiLP', + withdrawalFee: '0%', + addLiquidityUrl: 'https://polygon.curve.fi/eurtusd/deposit', + createdAt: 1652662923, + }, + { + id: 'kyber-usdc-jeur-eol', + name: 'jEUR-USDC LP', + token: 'jEUR-USDC LP', + tokenDescription: 'Kyber (Jarvis)', + tokenAddress: '0xa1219DBE76eEcBf7571Fed6b020Dd9154396B70e', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooKyberUSDC-jEUR', + earnedTokenAddress: '0x4A041eD4dda1cf460D557E1bdCBf0b29c02A1b3c', + earnContractAddress: '0x4A041eD4dda1cf460D557E1bdCBf0b29c02A1b3c', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'kyber-usdc-jeur', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Kyber', + assets: ['jEUR', 'USDC'], + withdrawalFee: '0%', + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_MICRO', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://dmm.exchange/#/add/0x2791bca1f2de4661ed88a30c99a7a9449aa84174/0x4e3decbb3645551b8a19f0ea1678079fcb33fb4c/0xa1219dbe76eecbf7571fed6b020dd9154396b70e', + buyTokenUrl: + 'https://dmm.exchange/#/swap?inputCurrency=0x2791bca1f2de4661ed88a30c99a7a9449aa84174&outputCurrency=0x4e3decbb3645551b8a19f0ea1678079fcb33fb4c', + createdAt: 1633957002, + }, + { + id: 'curve-am3crv', + logo: 'polygon/CURVE-3Pool.png', + name: 'DAI/USDC/USDT', + token: 'am3CRV', + tokenDescription: 'Curve', + tokenAddress: '0xE7a24EF0C5e95Ffb0f6684b813A78F2a3AD7D171', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCurveAm3CRV', + earnedTokenAddress: '0xAA7C2879DaF8034722A0977f13c343aF0883E92e', + earnContractAddress: '0xAA7C2879DaF8034722A0977f13c343aF0883E92e', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'curve-am3crv', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Curve', + assets: ['DAI', 'USDC', 'USDT'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + 'OVER_COLLAT_ALGO_STABLECOIN', + ], + stratType: 'StratMultiLP', + withdrawalFee: '0%', + addLiquidityUrl: 'https://polygon.curve.fi/aave/deposit', + createdAt: 1652662923, + }, + { + id: 'quick-matic-wcro-eol', + name: 'WCRO-MATIC LP', + token: 'WCRO-MATIC LP', + tokenDescription: 'QuickSwap', + tokenAddress: '0xfD168748dD07a32A401E800240aEC8EC6EFc706f', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooQuickWCRO-MATIC', + earnedTokenAddress: '0x6EfBc871323148d9Fc34226594e90d9Ce2de3da3', + earnContractAddress: '0x6EfBc871323148d9Fc34226594e90d9Ce2de3da3', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'quick-matic-wcro', + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'QuickSwap', + assets: ['WCRO', 'MATIC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270/0xf2D8124b8F9267DaD61351c7aD252362880C6638', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?outputCurrency=0xf2D8124b8F9267DaD61351c7aD252362880C6638&inputCurrency=0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270', + createdAt: 1638099468, + }, + { + id: 'quick-matic-mana-eol', + name: 'MANA-MATIC LP', + token: 'MANA-MATIC LP', + tokenDescription: 'QuickSwap', + tokenAddress: '0x6b0Ce31eAD9b14c2281D80A5DDE903AB0855313A', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooQuickMANA-MATIC', + earnedTokenAddress: '0x5e03C75a8728a8E0FF0326baADC95433009424d6', + earnContractAddress: '0x5e03C75a8728a8E0FF0326baADC95433009424d6', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'quick-matic-mana', + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'QuickSwap', + assets: ['MANA', 'MATIC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270/0xA1c57f48F0Deb89f569dFbE6E2B7f46D33606fD4', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?outputCurrency=0xA1c57f48F0Deb89f569dFbE6E2B7f46D33606fD4&inputCurrency=0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270', + createdAt: 1638101634, + }, + { + id: 'quick-shib-matic-eol', + name: 'SHIB-MATIC LP', + token: 'SHIB-MATIC LP', + tokenDescription: 'QuickSwap', + tokenAddress: '0x5FB641De2663e8a94C9dea0a539817850d996e99', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooQuickSHIB-MATIC', + earnedTokenAddress: '0x72B5Cf05770C9a6A99FB8652825884ee36a4BfdA', + earnContractAddress: '0x72B5Cf05770C9a6A99FB8652825884ee36a4BfdA', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'quick-shib-matic', + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'QuickSwap', + assets: ['SHIB', 'MATIC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270/0x6f8a06447Ff6FcF75d803135a7de15CE88C1d4ec', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?outputCurrency=0x6f8a06447Ff6FcF75d803135a7de15CE88C1d4ec&inputCurrency=0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270', + createdAt: 1635166901, + }, + { + id: 'quick-dpi-eth-eol', + name: 'DPI-ETH LP', + token: 'DPI-ETH LP', + tokenDescription: 'QuickSwap', + tokenAddress: '0x9F77Ef7175032867d26E75D2fA267A6299E3fb57', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooQuickDPI-ETH', + earnedTokenAddress: '0x1a83915207c9028a9f71e7D9Acf41eD2beB6f42D', + earnContractAddress: '0x1a83915207c9028a9f71e7D9Acf41eD2beB6f42D', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'quick-dpi-eth', + depositsPaused: true, + status: 'eol', + platform: 'QuickSwap', + assets: ['DPI', 'ETH'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + retireReason: 'rewards', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0x7ceb23fd6bc0add59e62ac25578270cff1b9f619/0x85955046DF4668e1DD369D2DE9f3AEB98DD2A369', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?outputCurrency=0x7ceb23fd6bc0add59e62ac25578270cff1b9f619&inputCurrency=0x85955046DF4668e1DD369D2DE9f3AEB98DD2A369', + createdAt: 1635166761, + }, + { + id: 'quick-ftm-matic-eol', + name: 'FTM-MATIC LP', + token: 'FTM-MATIC LP', + tokenDescription: 'QuickSwap', + tokenAddress: '0xD2B61a42d3790533fEDC2829951a65120624034a', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooQuickFTM-MATIC', + earnedTokenAddress: '0x48e58c7E8d2063ae7ADe8a0829E00780155232eC', + earnContractAddress: '0x48e58c7E8d2063ae7ADe8a0829E00780155232eC', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'quick-ftm-matic', + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'QuickSwap', + assets: ['FTM', 'MATIC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270/0xB85517b87BF64942adf3A0B9E4c71E4Bc5Caa4e5', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?outputCurrency=0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270&inputCurrency=0xB85517b87BF64942adf3A0B9E4c71E4Bc5Caa4e5', + createdAt: 1635166165, + }, + { + id: 'quick-quick', + logo: 'single-assets/QUICK.png', + name: 'QUICK', + token: 'QUICK', + tokenDescription: 'QuickSwap (DragonLair)', + tokenAddress: '0x831753DD7087CaC61aB5644b308642cc1c33Dc13', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooQuick', + earnedTokenAddress: '0x659418cc3cf755F5367a51aDb586a7F770Da6d29', + earnContractAddress: '0x659418cc3cf755F5367a51aDb586a7F770Da6d29', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'QUICK', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'QuickSwap', + assets: ['QUICK'], + risks: [ + 'COMPLEXITY_HIGH', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'SingleStake', + withdrawalFee: '0%', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?outputCurrency=0x831753DD7087CaC61aB5644b308642cc1c33Dc13', + createdAt: 1630505284, + }, + { + id: 'sushi-usdc-bifi', + name: 'BIFI-USDC SLP', + token: 'BIFI-USDC SLP', + tokenDescription: 'SushiSwap', + tokenAddress: '0x180237bd326d5245D0898336F54b3c8012c5c62f', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSushiUSDC-BIFI', + earnedTokenAddress: '0x03F69AAF4c8512f533Da46cC9eFd49C4969e3CB8', + earnContractAddress: '0x03F69AAF4c8512f533Da46cC9eFd49C4969e3CB8', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'sushi-usdc-bifi', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SushiSwap', + assets: ['USDC', 'BIFI'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.sushi.com/add/0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174/0xFbdd194376de19a88118e84E279b977f165d01b8', + buyTokenUrl: + 'https://app.sushi.com/#/swap?inputCurrency=0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174&outputCurrency=0xFbdd194376de19a88118e84E279b977f165d01b8', + createdAt: 1623949163, + }, + { + id: 'ape-wmatic-crystl-eol', + name: 'CRYSTL-WMATIC LP', + token: 'CRYSTL-WMATIC LP', + tokenDescription: 'ApeSwap', + tokenAddress: '0xB8e54c9Ea1616beEBe11505a419DD8dF1000E02a', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooApeSwapWMATIC-CRYSTL', + earnedTokenAddress: '0x5Da31E310bb83e89BF85A4100A98C7b33530395c', + earnContractAddress: '0x5Da31E310bb83e89BF85A4100A98C7b33530395c', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'ape-wmatic-crystl', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'ApeSwap', + assets: ['CRYSTL', 'MATIC'], + withdrawalFee: '0%', + addLiquidityUrl: + 'https://app.apeswap.finance/add/ETH/0x76bF0C28e604CC3fE9967c83b3C3F31c213cfE64', + buyTokenUrl: 'https://app.apeswap.finance/swap', + createdAt: 1634055850, + retireReason: 'tvl', + }, + { + id: 'kyber-usdc-jgbp-eol', + name: 'jGBP-USDC LP', + token: 'jGBP-USDC LP', + tokenDescription: 'Kyber (Jarvis)', + tokenAddress: '0xbb2d00675B775E0F8acd590e08DA081B2a36D3a6', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooKyberUSDC-jGBP', + earnedTokenAddress: '0xF10c108670b137Ae78C5705C84A6D00a9DD005a2', + earnContractAddress: '0xF10c108670b137Ae78C5705C84A6D00a9DD005a2', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'kyber-usdc-jgbp', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Kyber', + assets: ['jGBP', 'USDC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + withdrawalFee: '0%', + addLiquidityUrl: + 'https://dmm.exchange/#/add/0x2791bca1f2de4661ed88a30c99a7a9449aa84174/0x767058f11800fba6a682e73a6e79ec5eb74fac8c/0xbb2d00675b775e0f8acd590e08da081b2a36d3a6', + buyTokenUrl: + 'https://dmm.exchange/#/swap?inputCurrency=0x2791bca1f2de4661ed88a30c99a7a9449aa84174&outputCurrency=0x767058f11800fba6a682e73a6e79ec5eb74fac8c', + createdAt: 1634040443, + }, + { + id: 'kyber-usdc-jchf-eol', + name: 'jCHF-USDC LP', + token: 'jCHF-USDC LP', + tokenDescription: 'Kyber (Jarvis)', + tokenAddress: '0x439E6A13a5ce7FdCA2CC03bF31Fb631b3f5EF157', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooKyberUSDC-jCHF', + earnedTokenAddress: '0x2e78D4Cc7e1dF9845B60A28980b28B3E9fc82fd1', + earnContractAddress: '0x2e78D4Cc7e1dF9845B60A28980b28B3E9fc82fd1', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'kyber-usdc-jchf', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Kyber', + assets: ['jCHF', 'USDC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + withdrawalFee: '0%', + addLiquidityUrl: + 'https://dmm.exchange/#/add/0x2791bca1f2de4661ed88a30c99a7a9449aa84174/0xbd1463f02f61676d53fd183c2b19282bff93d099/0x439e6a13a5ce7fdca2cc03bf31fb631b3f5ef157', + buyTokenUrl: + 'https://dmm.exchange/#/swap?inputCurrency=0x2791bca1f2de4661ed88a30c99a7a9449aa84174&outputCurrency=0xbd1463f02f61676d53fd183c2b19282bff93d099', + createdAt: 1634042173, + }, + { + id: 'curve-poly-ren', + logo: 'single-assets/renBTC.png', + name: 'WBTC/renBTC', + token: 'btcCRV', + tokenDescription: 'Curve', + tokenAddress: '0xf8a57c1d3b9629b77b6726a042ca48990A84Fb49', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCurveRen', + earnedTokenAddress: '0x8c9d3Bc4425773BD2F00C4a2aC105c5Ad73c8141', + earnContractAddress: '0x8c9d3Bc4425773BD2F00C4a2aC105c5Ad73c8141', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'curve-poly-ren', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Curve', + assets: ['WBTC', 'renBTC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: 'https://polygon.curve.fi/ren/deposit', + createdAt: 1652662923, + }, + { + id: 'polysage-usdc-sage-eol', + name: 'SAGE-USDC LP', + token: 'SAGE-USDC LP', + tokenDescription: 'Quickswap (PolySage)', + tokenAddress: '0x62F089467e22de4bc1FB5EE605eDe7e782b76B29', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPolysageQuickUSDC-SAGE', + earnedTokenAddress: '0x614A3f93dE94fA900BB88Ab2b23B3856518505Fa', + earnContractAddress: '0x614A3f93dE94fA900BB88Ab2b23B3856518505Fa', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'polysage-usdc-sage', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['SAGE', 'USDC'], + retireReason: 'rewards', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174/0x2ed945Dc703D85c80225d95ABDe41cdeE14e1992', + buyTokenUrl: 'https://quickswap.exchange/#/swap', + createdAt: 1633808799, + }, + { + id: 'polysage-wmatic-sage-eol', + name: 'SAGE-MATIC LP', + token: 'SAGE-MATIC LP', + tokenDescription: 'Quickswap (PolySage)', + tokenAddress: '0x70c096187F8a9ac03E34a0e7ed41bCd516878158', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPolysageQuickWMATIC-SAGE', + earnedTokenAddress: '0xC8e3dee8d07C06568D62fcDBBD1bFA8c7fb9ae17', + earnContractAddress: '0xC8e3dee8d07C06568D62fcDBBD1bFA8c7fb9ae17', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'polysage-wmatic-sage', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['SAGE', 'MATIC'], + retireReason: 'rewards', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270/0x2ed945Dc703D85c80225d95ABDe41cdeE14e1992', + buyTokenUrl: 'https://quickswap.exchange/#/swap', + createdAt: 1633808533, + }, + { + id: 'cafe-pbrew-matic-eol', + name: 'pBREW-MATIC LP', + token: 'pBREW-MATIC LP', + tokenDescription: 'CafeSwap', + tokenAddress: '0x4f03233c742Ea20e73b46d5E33242b7770274ab8', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCafeSwapBREW-MATIC', + earnedTokenAddress: '0x700504eaBA64Cd92080059a3C93b6baa73a4Ec38', + earnContractAddress: '0x700504eaBA64Cd92080059a3C93b6baa73a4Ec38', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cafe-pbrew-matic', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['pBREW', 'MATIC'], + addLiquidityUrl: + 'https://polygondex.cafeswap.finance/#/add/ETH/0xb5106a3277718ecad2f20ab6b86ce0fee7a21f09', + buyTokenUrl: + 'https://polygondex.cafeswap.finance/#/swap?outputCurrency=0xb5106a3277718ecad2f20ab6b86ce0fee7a21f09', + createdAt: 1633695157, + retireReason: 'tvl', + }, + { + id: 'cafe-pbrew-usdc-eol', + name: 'pBREW-USDC LP', + token: 'pBREW-USDC LP', + tokenDescription: 'CafeSwap', + tokenAddress: '0x723e866989Cacc8EFC346e1DCf5a9D73572bCFc8', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCafeSwapBREW-USDC', + earnedTokenAddress: '0xd7C196571068EC51b86F378eF19387E6f3885748', + earnContractAddress: '0xd7C196571068EC51b86F378eF19387E6f3885748', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cafe-pbrew-usdc', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['pBREW', 'USDC'], + addLiquidityUrl: + 'https://polygondex.cafeswap.finance/#/add/0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174/0xb5106a3277718ecad2f20ab6b86ce0fee7a21f09', + buyTokenUrl: + 'https://polygondex.cafeswap.finance/#/swap?outputCurrency=0xb5106a3277718ecad2f20ab6b86ce0fee7a21f09', + createdAt: 1633695451, + retireReason: 'tvl', + }, + { + id: 'sing-usdc-sing-eol', + name: 'SING-USDC LP', + token: 'SING-USDC ALP', + tokenDescription: 'ApeSwap (Singular)', + tokenAddress: '0x6046eB198AbC5Ea4f17027bC00a2aeE0420E84EE', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSingUSDC-SING', + earnedTokenAddress: '0xadfff816820B0f5C7255373DAca83489367bEB43', + earnContractAddress: '0xadfff816820B0f5C7255373DAca83489367bEB43', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'sing-usdc-sing', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['SING', 'USDC'], + addLiquidityUrl: + 'https://app.apeswap.finance/add/0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174/0xCB898b0eFb084Df14dd8E018dA37B4d0f06aB26D', + buyTokenUrl: + 'https://app.apeswap.finance/#/swap?outputCurrency=0xCB898b0eFb084Df14dd8E018dA37B4d0f06aB26D', + createdAt: 1633615462, + retireReason: 'tvl', + }, + { + id: 'ape-banana-matic', + name: 'BANANA-MATIC ALP', + token: 'BANANA-MATIC ALP', + tokenDescription: 'ApeSwap', + tokenAddress: '0x034293F21F1cCE5908BC605CE5850dF2b1059aC0', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooApeSwapBANANA-MATIC', + earnedTokenAddress: '0xADA7F98fb2594E76914EB593e74B348A498Ea5Bd', + earnContractAddress: '0xADA7F98fb2594E76914EB593e74B348A498Ea5Bd', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'ape-banana-matic', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'ApeSwap', + assets: ['BANANA', 'MATIC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_SMALL', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.apeswap.finance/add/ETH/0x5d47bAbA0d66083C52009271faF3F50DCc01023C', + buyTokenUrl: + 'https://app.apeswap.finance/#/swap?outputCurrency=0x5d47bAbA0d66083C52009271faF3F50DCc01023C', + createdAt: 1624340191, + }, + { + id: 'curve-poly-atricrypto3', + logo: 'uncategorized/ATRICRYPTO.png', + name: 'aTriCrypto3', + token: 'crvUSDBTCETH3', + tokenDescription: 'Curve', + tokenAddress: '0xdAD97F7713Ae9437fa9249920eC8507e5FbB23d3', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCurveATriCrypto3', + earnedTokenAddress: '0x5A0801BAd20B6c62d86C566ca90688A6b9ea1d3f', + earnContractAddress: '0x5A0801BAd20B6c62d86C566ca90688A6b9ea1d3f', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'curve-poly-atricrypto3', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Curve', + assets: ['DAI', 'USDC', 'USDT', 'WBTC', 'ETH'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + 'OVER_COLLAT_ALGO_STABLECOIN', + ], + stratType: 'StratMultiLP', + withdrawalFee: '0%', + addLiquidityUrl: 'https://polygon.curve.fi/atricrypto3/deposit', + createdAt: 1652662923, + }, + { + id: 'sushi-wmatic-ghst-eol', + name: 'GHST-MATIC SLP', + token: 'GHST-MATIC SLP', + tokenDescription: 'SushiSwap', + tokenAddress: '0xf69e93771F11AECd8E554aA165C3Fe7fd811530c', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSushiWMATIC-GHST', + earnedTokenAddress: '0x756866Bd84A2441664e80367977357b1F9b5F3D3', + earnContractAddress: '0x756866Bd84A2441664e80367977357b1F9b5F3D3', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'sushi-wmatic-ghst', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'tvl', + platform: 'SushiSwap', + assets: ['GHST', 'MATIC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.sushi.com/add/0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270/0x385eeac5cb85a38a9a07a70c73e0a3271cfb54a7', + buyTokenUrl: + 'https://app.sushi.com/swap?inputCurrency=0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619&outputCurrency=0x385eeac5cb85a38a9a07a70c73e0a3271cfb54a7', + createdAt: 1632922881, + }, + { + id: 'polywise-usdc-wise-eol', + name: 'WISE-USDC LP', + token: 'WISE-USDC LP', + tokenDescription: 'QuickSwap (Polywise)', + tokenAddress: '0x2F9209Ef6fA6C002bf6fC99124336e24F88B62D0', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPolywiseUSDC-WISE', + earnedTokenAddress: '0x15D0841956242105aE614763E3fbDc60112E23a9', + earnContractAddress: '0x15D0841956242105aE614763E3fbDc60112E23a9', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'polywise-usdc-wise', + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['polyWISE', 'USDC'], + retireReason: 'rewards', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0x4c19DdeebAF84cA3A255730295AD9d824D4Ff51f/0x2791bca1f2de4661ed88a30c99a7a9449aa84174', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?inputCurrency=0x4c19DdeebAF84cA3A255730295AD9d824D4Ff51f&outputCurrency=0x2791bca1f2de4661ed88a30c99a7a9449aa84174', + createdAt: 1632516813, + }, + { + id: 'polywise-wmatic-wise-eol', + name: 'WISE-MATIC LP', + token: 'WISE-MATIC LP', + tokenDescription: 'QuickSwap (Polywise)', + tokenAddress: '0x89d97d96fA57A83e285a5D1709Fc5345C8e92d94', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPolywiseWMATIC-WISE', + earnedTokenAddress: '0x9CE8a8F957f8f9Dfa787B130200dA749913Ed967', + earnContractAddress: '0x9CE8a8F957f8f9Dfa787B130200dA749913Ed967', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'polywise-wmatic-wise', + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['polyWISE', 'MATIC'], + withdrawalFee: '0.0%', + retireReason: 'rewards', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0x4c19DdeebAF84cA3A255730295AD9d824D4Ff51f/0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?inputCurrency=0x4c19DdeebAF84cA3A255730295AD9d824D4Ff51f&outputCurrency=0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270', + createdAt: 1632511554, + }, + { + id: 'polyalpha-alpha-matic-eol', + name: 'ALPHA-MATIC LP', + token: 'ALPHA-MATIC LP', + tokenDescription: 'QuickSwap (PolyAlpha)', + tokenAddress: '0x79b368B3Aa34fF2044F7869024b5367A284D3b0E', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPolyAlphaALPHA-MATIC', + earnedTokenAddress: '0xa1E625D1e3b44468EB2a35d39d95f724c70ecd41', + earnContractAddress: '0xa1E625D1e3b44468EB2a35d39d95f724c70ecd41', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'polyalpha-alpha-matic', + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['ALPHA', 'MATIC'], + addLiquidityUrl: + 'https://quickswap.exchange/#/add/ETH/0x0B048D6e01a6b9002C291060bF2179938fd8264c', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?outputCurrency=0x0B048D6e01a6b9002C291060bF2179938fd8264c', + createdAt: 1632219035, + }, + { + id: 'polyalpha-alpha-usdc-eol', + name: 'ALPHA-USDC LP', + token: 'ALPHA-USDC LP', + tokenDescription: 'QuickSwap (JetSwap)', + tokenAddress: '0x944a8B12D898E878F92cfC18eee5E6f3f7e2E70d', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPolyAlphaALPHA-USDC', + earnedTokenAddress: '0xF274B7aDddC8DA615a8bACf6434816cD58B5b05D', + earnContractAddress: '0xF274B7aDddC8DA615a8bACf6434816cD58B5b05D', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'polyalpha-alpha-usdc', + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['ALPHA', 'USDC'], + addLiquidityUrl: + 'https://polygon-exchange.jetswap.finance/#/add/0x2791bca1f2de4661ed88a30c99a7a9449aa84174/0x0B048D6e01a6b9002C291060bF2179938fd8264c', + buyTokenUrl: + 'https://polygon-exchange.jetswap.finance/#/swap?outputCurrency=0x0B048D6e01a6b9002C291060bF2179938fd8264c', + createdAt: 1632219357, + }, + { + id: 'sandman-delirium-matic-eol', + name: 'DELIRIUM-MATIC LP', + token: 'DELIRIUM-MATIC LP', + tokenDescription: 'QuickSwap (Sandman)', + tokenAddress: '0x6E01a7E55987Bc195b54FBbdaAf40e57544b23C3', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSandmanDELIRIUM-MATIC', + earnedTokenAddress: '0x5675d63494EDDa594727033864F1bca375736191', + earnContractAddress: '0x5675d63494EDDa594727033864F1bca375736191', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'sandman-delirium-matic', + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['DELIRIUM', 'MATIC'], + addLiquidityUrl: + 'https://quickswap.exchange/#/add/ETH/0x238779aFfE6FFD475cB7e84582FcA7789F310Dc8', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?outputCurrency=0x238779aFfE6FFD475cB7e84582FcA7789F310Dc8', + createdAt: 1632157998, + }, + { + id: 'sandman-delirium-usdc-eol', + name: 'DELIRIUM-USDC LP', + token: 'DELIRIUM-USDC LP', + tokenDescription: 'QuickSwap (Sandman)', + tokenAddress: '0x2F051dB1634eEa2081590860ab8E756D452f2239', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSandmanDELIRIUM-USDC', + earnedTokenAddress: '0xF082954596D3deB61D80dF135663C0fbDe4F7C37', + earnContractAddress: '0xF082954596D3deB61D80dF135663C0fbDe4F7C37', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'sandman-delirium-usdc', + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['DELIRIUM', 'USDC'], + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174/0x238779aFfE6FFD475cB7e84582FcA7789F310Dc8', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?outputCurrency=0x238779aFfE6FFD475cB7e84582FcA7789F310Dc8', + createdAt: 1632157642, + }, + { + id: 'mai-qi-matic', + name: 'QI-MATIC LP', + token: 'QI-MATIC QLP', + tokenDescription: 'QuickSwap (Mai)', + tokenAddress: '0x9A8b2601760814019B7E6eE0052E25f1C623D1E6', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooMaiQI-MATIC', + earnedTokenAddress: '0x944A5C12cD4399ABC6883fF1ba40A14c23B2Fd37', + earnContractAddress: '0x944A5C12cD4399ABC6883fF1ba40A14c23B2Fd37', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'mai-qi-matic', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Mai', + assets: ['QI', 'MATIC'], + depositFee: '0.5%', + withdrawalFee: '0.0%', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0x580A84C73811E1839F75d86d75d88cCa0c241fF4/0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?inputCurrency=0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270&outputCurrency=0x580A84C73811E1839F75d86d75d88cCa0c241fF4', + createdAt: 1631621928, + }, + { + id: 'quick-qi-eth-eol', + name: 'QI-ETH LP', + token: 'QI-ETH LP', + tokenDescription: 'QuickSwap', + tokenAddress: '0x8C1b40Ea78081B70F661C3286c74E71b4602C9C0', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooQuickQI-ETH', + earnedTokenAddress: '0x8c864B1FD2BbB20F614661ddD992eFaeEeF0b2Ac', + earnContractAddress: '0x8c864B1FD2BbB20F614661ddD992eFaeEeF0b2Ac', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'quick-qi-eth', + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'QuickSwap', + assets: ['QI', 'ETH'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0x580A84C73811E1839F75d86d75d88cCa0c241fF4/0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?outputCurrency=0x580A84C73811E1839F75d86d75d88cCa0c241fF4', + createdAt: 1631186885, + }, + { + id: 'quick-mai-usdt', + name: 'MAI-USDT LP', + token: 'MAI-USDT LP', + tokenDescription: 'QuickSwap', + tokenAddress: '0xE89faE1B4AdA2c869f05a0C96C87022DaDC7709a', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooQuickMAI-USDT', + earnedTokenAddress: '0xe5844a9Af7748492dAba745506bfB2b91f19be62', + earnContractAddress: '0xe5844a9Af7748492dAba745506bfB2b91f19be62', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'quick-mai-usdt', + depositsPaused: false, + status: 'active', + platform: 'QuickSwap', + assets: ['MAI', 'USDT'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'MCAP_MICRO', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + 'OVER_COLLAT_ALGO_STABLECOIN', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0xc2132D05D31c914a87C6611C10748AEb04B58e8F/0xa3Fa99A148fA48D14Ed51d610c367C61876997F1', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?outputCurrency=0xa3Fa99A148fA48D14Ed51d610c367C61876997F1', + createdAt: 1631184021, + }, + { + id: 'quick-dai-mai', + name: 'MAI-DAI LP', + token: 'MAI-DAI LP', + tokenDescription: 'QuickSwap', + tokenAddress: '0x74214F5d8AA71b8dc921D8A963a1Ba3605050781', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooQuickMAI-DAI', + earnedTokenAddress: '0x64fbCDfd1335AfdC8f81383919483c593399c738', + earnContractAddress: '0x64fbCDfd1335AfdC8f81383919483c593399c738', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'quick-dai-mai', + depositsPaused: false, + status: 'active', + platform: 'QuickSwap', + assets: ['MAI', 'DAI'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'MCAP_MICRO', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + 'OVER_COLLAT_ALGO_STABLECOIN', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063/0xa3Fa99A148fA48D14Ed51d610c367C61876997F1', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?outputCurrency=0xa3Fa99A148fA48D14Ed51d610c367C61876997F1', + createdAt: 1631181877, + }, + { + id: 'quick-mai-matic-eol', + name: 'MAI-MATIC LP', + token: 'MAI-MATIC LP', + tokenDescription: 'QuickSwap', + tokenAddress: '0x7805B64e2d99412d3b8F10Dfe8fc55217C5cc954', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooQuickMAI-MATIC', + earnedTokenAddress: '0xD6eB31D849eE79B5F5fA1b7c470cDDFa515965cD', + earnContractAddress: '0xD6eB31D849eE79B5F5fA1b7c470cDDFa515965cD', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'quick-mai-matic', + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'QuickSwap', + assets: ['MAI', 'MATIC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'MCAP_MICRO', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + 'OVER_COLLAT_ALGO_STABLECOIN', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270/0xa3Fa99A148fA48D14Ed51d610c367C61876997F1', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?outputCurrency=0xa3Fa99A148fA48D14Ed51d610c367C61876997F1', + createdAt: 1630874617, + }, + { + id: 'quick-usdt-matic', + name: 'USDT-MATIC LP', + token: 'USDT-MATIC LP', + tokenDescription: 'Quickswap', + tokenAddress: '0x604229c960e5CACF2aaEAc8Be68Ac07BA9dF81c3', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooQuickUSDT-MATIC', + earnedTokenAddress: '0x7c0E28652523e36f0dF89C5A895cF59D493cb04c', + earnContractAddress: '0x7c0E28652523e36f0dF89C5A895cF59D493cb04c', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'quick-usdt-matic', + depositsPaused: false, + status: 'active', + platform: 'QuickSwap', + assets: ['USDT', 'MATIC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270/0xc2132D05D31c914a87C6611C10748AEb04B58e8F', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?outputCurrency=0xc2132D05D31c914a87C6611C10748AEb04B58e8F', + createdAt: 1630873083, + }, + { + id: 'wexpoly-usdc-wusd-eol', + name: 'USDC-WUSD LP', + token: 'USDC-WUSD WLP', + tokenDescription: 'WaultFinance', + tokenAddress: '0x7B93196CD4861f345509c2da31058CA4B1c30D63', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooWexPolyUSDC-WUSD', + earnedTokenAddress: '0x955EAC48a81D8a8A312884A022D806015E901CDE', + earnContractAddress: '0x955EAC48a81D8a8A312884A022D806015E901CDE', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'wexpoly-usdc-wusd', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Other', + assets: ['USDC', 'WUSD'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'ALGO_STABLE', + 'MCAP_MICRO', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://swap.wault.finance/polygon/#/add/0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174/0xb8ab048D6744a276b2772dC81e406a4b769A5c3D', + buyTokenUrl: + 'https://swap.wault.finance/polygon/#/swap?inputCurrency=0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174&outputCurrency=0xb8ab048D6744a276b2772dC81e406a4b769A5c3D', + createdAt: 1630750371, + }, + { + id: 'ape-watch-matic', + name: 'WATCH-MATIC LP', + token: 'WATCH-MATIC LP', + tokenDescription: 'ApeSwap', + tokenAddress: '0xf67DE5Cf1fB01DC4df842a846Df2a7Ec07c41b93', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooApeWATCH-MATIC', + earnedTokenAddress: '0xb2A56dFdbC890c102Dcd5e30afcfB43cD3343762', + earnContractAddress: '0xb2A56dFdbC890c102Dcd5e30afcfB43cD3343762', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'ape-watch-matic', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'ApeSwap', + assets: ['WATCH', 'MATIC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.apeswap.finance/add/0x09211dc67f9fe98fb7bbb91be0ef05f4a12fa2b2/ETH', + buyTokenUrl: + 'https://app.apeswap.finance/swap?outputCurrency=0x09211Dc67f9fe98Fb7bBB91Be0ef05f4a12FA2b2', + createdAt: 1630476350, + }, + { + id: 'wexpoly-usdc-wex-eol', + name: 'USDC-WEXpoly LP', + token: 'USDC-WEXpoly WLP', + tokenDescription: 'WaultFinance', + tokenAddress: '0x5DE6a3CcA10d3F788EEdbD4923e31D4658bf6f9a', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooWexPolyUSDC-WexPoly', + earnedTokenAddress: '0xc58475e5385b056D29ab455F40634450a613e789', + earnContractAddress: '0xc58475e5385b056D29ab455F40634450a613e789', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'wexpoly-usdc-wex', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Other', + assets: ['WEXpoly', 'USDC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://swap.wault.finance/polygon/#/add/0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174/0x4c4BF319237D98a30A929A96112EfFa8DA3510EB', + buyTokenUrl: + 'https://swap.wault.finance/polygon/#/swap?inputCurrency=0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174&outputCurrency=0x4c4BF319237D98a30A929A96112EfFa8DA3510EB', + createdAt: 1630426679, + }, + { + id: 'sushi-axs-eth-eol', + name: 'AXS-ETH SLP', + token: 'AXS-ETH SLP', + tokenDescription: 'SushiSwap', + tokenAddress: '0x7BA331A8b360F4c31E6014aBdd6852F92Fb21557', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSushiAXS-ETH', + earnedTokenAddress: '0x3404361876897A92579DcEBd9eDC94A1662dC4aF', + earnContractAddress: '0x3404361876897A92579DcEBd9eDC94A1662dC4aF', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'sushi-axs-eth', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'SushiSwap', + assets: ['AXS', 'ETH'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.sushi.com/add/0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619/0x61BDD9C7d4dF4Bf47A4508c0c8245505F2Af5b7b', + buyTokenUrl: + 'https://app.sushi.com/swap?inputCurrency=0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619&outputCurrency=0x61BDD9C7d4dF4Bf47A4508c0c8245505F2Af5b7b', + createdAt: 1630168878, + }, + { + id: 'ironswap-ice-iron-eol', + name: 'ICE-IRON LP', + token: 'ICE-IRON LP', + tokenDescription: 'IronSwap (DFYN)', + tokenAddress: '0x7e2cc09d3d36b3aF6EdfF55B214fd62885234E95', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooIronSwapICE-IRON', + earnedTokenAddress: '0xBD8B03a3fF5F63093000Df6De33B0A6C9E5bb501', + earnContractAddress: '0xBD8B03a3fF5F63093000Df6De33B0A6C9E5bb501', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'ironswap-ice-iron', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'IronFinance', + assets: ['ironICE', 'IRON'], + addLiquidityUrl: + 'https://exchange.dfyn.network/#/add/0x4A81f8796e0c6Ad4877A51C86693B0dE8093F2ef/0xD86b5923F3AD7b585eD81B448170ae026c65ae9a', + buyTokenUrl: + 'https://exchange.dfyn.network/#/swap?inputCurrency=0xD86b5923F3AD7b585eD81B448170ae026c65ae9a&outputCurrency=0x4A81f8796e0c6Ad4877A51C86693B0dE8093F2ef', + createdAt: 1630075988, + retireReason: 'tvl', + }, + { + id: 'ape-usdc-dai', + name: 'USDC-DAI ALP', + token: 'USDC-DAI ALP', + tokenDescription: 'ApeSwap', + tokenAddress: '0x5b13B583D4317aB15186Ed660A1E4C65C10da659', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooApeSwapUSDC-DAI', + earnedTokenAddress: '0x8440DAe4E1002e83D57fbFD6d33E6F3684a35036', + earnContractAddress: '0x8440DAe4E1002e83D57fbFD6d33E6F3684a35036', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'ape-usdc-dai', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'ApeSwap', + assets: ['USDC', 'DAI'], + withdrawalFee: '0%', + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + 'OVER_COLLAT_ALGO_STABLECOIN', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.apeswap.finance/add/0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174/0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063', + buyTokenUrl: + 'https://app.apeswap.finance/#/swap?inputCurrency=0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174&outputCurrency=0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063', + createdAt: 1630064594, + }, + { + id: 'sushi-avax-weth', + name: 'AVAX-ETH SLP', + token: 'AVAX-ETH SLP', + tokenDescription: 'SushiSwap', + tokenAddress: '0x1274De0DE2e9D9b1d0E06313c0E5EdD01CC335eF', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSushiETH-AVAX', + earnedTokenAddress: '0xf5881fF8fF609C1202E0c6481bc16B4273407A04', + earnContractAddress: '0xf5881fF8fF609C1202E0c6481bc16B4273407A04', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'sushi-avax-weth', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SushiSwap', + assets: ['AVAX', 'ETH'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.sushi.com/add/0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619/0x2C89bbc92BD86F8075d1DEcc58C7F4E0107f286b', + buyTokenUrl: + 'https://app.sushi.com/swap?inputCurrency=0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619&outputCurrency=0x2C89bbc92BD86F8075d1DEcc58C7F4E0107f286b', + createdAt: 1630000146, + }, + { + id: 'ironswap-iron', + logo: 'uncategorized/IRON3USD.png', + name: 'IRON/USDC/USDT/DAI', + token: 'IRON-IS3USD', + tokenDescription: 'IronSwap', + tokenAddress: '0x985D40feDAA3208DAbaCDFDCA00CbeAAc9543949', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooIronSwapIRON3USD', + earnedTokenAddress: '0x9F94558306D37F23a85ac95fDcCee7551C086b34', + earnContractAddress: '0x9F94558306D37F23a85ac95fDcCee7551C086b34', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'ironswap-iron', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'IronFinance', + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'ALGO_STABLE', + 'MCAP_MICRO', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + 'OVER_COLLAT_ALGO_STABLECOIN', + ], + stratType: 'StratMultiLP', + assets: ['IRON', 'USDC', 'USDT', 'DAI'], + withdrawalFee: '0.01%', + addLiquidityUrl: 'https://app.iron.finance/swap/pools/isiron/deposit', + createdAt: 1629902239, + }, + { + id: 'quick-eth-rendoge-eol', + name: 'ETH-renDOGE LP', + token: 'ETH-renDOGE LP', + tokenDescription: 'Quickswap', + tokenAddress: '0xAB1403De66519B898b38028357B74DF394a54a37', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooQuickETH-RENDOGE', + earnedTokenAddress: '0xC4FABD1E2A99c84b7fd152a41426B77c217c5764', + earnContractAddress: '0xC4FABD1E2A99c84b7fd152a41426B77c217c5764', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'quick-eth-rendoge', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'QuickSwap', + assets: ['ETH', 'renDOGE'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619/0xcE829A89d4A55a63418bcC43F00145adef0eDB8E', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?inputCurrency=0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619&outputCurrency=0xcE829A89d4A55a63418bcC43F00145adef0eDB8E', + createdAt: 1629635082, + }, + { + id: 'polypup-ball-ball-eol', + logo: 'single-assets/BALL.png', + name: 'BALL', + token: 'BALL', + tokenDescription: 'Polypup', + tokenAddress: '0x883aBe4168705d2e5dA925d28538B7a6AA9d8419', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPolypupBallBALL', + earnedTokenAddress: '0x48Fc8A7D72e5e54589F0B20928C98193c9133e70', + earnContractAddress: '0x48Fc8A7D72e5e54589F0B20928C98193c9133e70', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'BALL', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['BALL'], + withdrawalFee: '0.0%', + retireReason: 'rewards', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?outputCurrency=0x883aBe4168705d2e5dA925d28538B7a6AA9d8419', + createdAt: 1629256207, + }, + { + id: 'polypup-ball-usdc-ball-eol', + name: 'BALL-USDC QLP', + token: 'BALL-USDC QLP', + tokenDescription: 'Polypup', + tokenAddress: '0x0097692463fD591aEf388851FE2d756505f498AC', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPolypupBallUSDC-BALL', + earnedTokenAddress: '0x1bCe9A53f3f71DD6B6551712a622E891cf05F477', + earnContractAddress: '0x1bCe9A53f3f71DD6B6551712a622E891cf05F477', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'polypup-ball-usdc-ball', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['BALL', 'USDC'], + retireReason: 'rewards', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174/0x883aBe4168705d2e5dA925d28538B7a6AA9d8419', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?inputCurrency=0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174&outputCurrency=0x883aBe4168705d2e5dA925d28538B7a6AA9d8419', + createdAt: 1629262245, + }, + { + id: 'polypup-ball-wmatic-ball-eol', + name: 'BALL-MATIC QLP', + token: 'BALL-MATIC QLP', + tokenDescription: 'Polypup', + tokenAddress: '0xe11eb426206960e9533828031cDFED0B4B61749C', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPolypupBallWMATIC-BALL', + earnedTokenAddress: '0xC10ac3fe9b11ff6763F9f1dE3c1C00267974553B', + earnContractAddress: '0xC10ac3fe9b11ff6763F9f1dE3c1C00267974553B', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'polypup-ball-wmatic-ball', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['BALL', 'MATIC'], + withdrawalFee: '0.0%', + retireReason: 'rewards', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270/0x883aBe4168705d2e5dA925d28538B7a6AA9d8419', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?inputCurrency=0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270&outputCurrency=0x883aBe4168705d2e5dA925d28538B7a6AA9d8419', + createdAt: 1629258699, + }, + { + id: 'quick-usdc-quick', + name: 'QUICK-USDC LP', + token: 'QUICK-USDC LP', + tokenDescription: 'Quickswap', + tokenAddress: '0x1F1E4c845183EF6d50E9609F16f6f9cAE43BC9Cb', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooQuickQUICK-USDC', + earnedTokenAddress: '0xeD7148949c2dC8AA59A5aD8658eF347Bd7387fA8', + earnContractAddress: '0xeD7148949c2dC8AA59A5aD8658eF347Bd7387fA8', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'quick-usdc-quick', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'QuickSwap', + assets: ['QUICK', 'USDC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0x2791bca1f2de4661ed88a30c99a7a9449aa84174/0x831753dd7087cac61ab5644b308642cc1c33dc13', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?inputCurrency=0x2791bca1f2de4661ed88a30c99a7a9449aa84174&outputCurrency=0x831753dd7087cac61ab5644b308642cc1c33dc13', + createdAt: 1629158545, + }, + { + id: 'quick-wmatic-avax-eol', + name: 'AVAX-MATIC LP', + token: 'AVAX-MATIC LP', + tokenDescription: 'Quickswap', + tokenAddress: '0xEb477AE74774b697B5D515eF8ca09e24FEe413b5', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooQuickAVAX-WMATIC', + earnedTokenAddress: '0x764B2aAcfDE7e33888566a6d44005Dc982F02031', + earnContractAddress: '0x764B2aAcfDE7e33888566a6d44005Dc982F02031', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'quick-wmatic-avax', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'QuickSwap', + assets: ['AVAX', 'MATIC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270/0x2c89bbc92bd86f8075d1decc58c7f4e0107f286b', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?inputCurrency=0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270&outputCurrency=0x2c89bbc92bd86f8075d1decc58c7f4e0107f286b', + createdAt: 1629159263, + }, + { + id: 'pearzap-pear-usdc', + name: 'PEAR-USDC LP', + token: 'PEAR-USDC LP', + tokenDescription: 'WaultFinance (PearZap)', + tokenAddress: '0xa1d88Ce0d030B51342a05f9Dcc10AC4214592DAc', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPearZapPEAR-USDC', + earnedTokenAddress: '0x3e9C032052e774B85CbF5f1D6382be06144e1Bac', + earnContractAddress: '0x3e9C032052e774B85CbF5f1D6382be06144e1Bac', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'pearzap-pear-usdc', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Other', + assets: ['PEAR', 'USDC'], + addLiquidityUrl: + 'https://swap.wault.finance/polygon/#/add/0x2791bca1f2de4661ed88a30c99a7a9449aa84174/0xc8bcb58caEf1bE972C0B638B1dD8B0748Fdc8A44', + buyTokenUrl: + 'https://swap.wault.finance/polygon/#/swap?outputCurrency=0xc8bcb58caEf1bE972C0B638B1dD8B0748Fdc8A44', + createdAt: 1628607022, + }, + { + id: 'pearzap-pear-matic', + name: 'PEAR-MATIC LP', + token: 'PEAR-MATIC LP', + tokenDescription: 'WaultFinance (PearZap)', + tokenAddress: '0x51BEffd36EB8c81a9b440B7ee51f98ba9eFda707', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPearZapPEAR-MATIC', + earnedTokenAddress: '0xA5cd75EdC2f64580470bB6Fb2f9Ee00C66747c65', + earnContractAddress: '0xA5cd75EdC2f64580470bB6Fb2f9Ee00C66747c65', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'pearzap-pear-matic', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Other', + assets: ['PEAR', 'MATIC'], + addLiquidityUrl: + 'https://swap.wault.finance/polygon/#/add/0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270/0xc8bcb58caEf1bE972C0B638B1dD8B0748Fdc8A44', + buyTokenUrl: + 'https://swap.wault.finance/polygon/#/swap?outputCurrency=0xc8bcb58caEf1bE972C0B638B1dD8B0748Fdc8A44', + createdAt: 1628607888, + }, + { + id: 'polygonfarm-spade-matic-eol', + name: 'SPADE-MATIC LP', + token: 'SPADE-MATIC LP', + tokenDescription: 'SushiSwap (PolygonFarm)', + tokenAddress: '0xCcCEc4A90b3435065f5e1feC6346be9Da1B7B5eD', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPolyFarmSPADE-MATIC', + earnedTokenAddress: '0x07628d57b68E3ec227496740820A6fDa1b0DD0d8', + earnContractAddress: '0x07628d57b68E3ec227496740820A6fDa1b0DD0d8', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'polygonfarm-spade-matic', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + retireReason: 'rewards', + assets: ['SPADE', 'MATIC'], + addLiquidityUrl: 'https://app.sushi.com/add/ETH/0xf5EA626334037a2cf0155D49eA6462fDdC6Eff19', + buyTokenUrl: + 'https://app.sushi.com/swap?inputCurrency=ETH&outputCurrency=0xf5EA626334037a2cf0155D49eA6462fDdC6Eff19', + createdAt: 1628592682, + }, + { + id: 'polygonfarm-spade-usdc-eol', + name: 'SPADE-USDC LP', + token: 'SPADE-USDC LP', + tokenDescription: 'SushiSwap (PolygonFarm)', + tokenAddress: '0x6Fd8aAe9f85A7Db14c45453daAB81aa3085E4bA3', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPolyFarmSPADE-USDC', + earnedTokenAddress: '0xEEc9a4Ecd1C0caB2Eb20081A10b8b0A07336dA14', + earnContractAddress: '0xEEc9a4Ecd1C0caB2Eb20081A10b8b0A07336dA14', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'polygonfarm-spade-usdc', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['SPADE', 'USDC'], + retireReason: 'rewards', + addLiquidityUrl: + 'https://app.sushi.com/add/0x2791bca1f2de4661ed88a30c99a7a9449aa84174/0xf5EA626334037a2cf0155D49eA6462fDdC6Eff19', + buyTokenUrl: + 'https://app.sushi.com/swap?inputCurrency=ETH&outputCurrency=0xf5EA626334037a2cf0155D49eA6462fDdC6Eff19', + createdAt: 1628592884, + }, + { + id: 'cometh-eth-wbtc-eol', + name: 'ETH-WBTC LP', + token: 'ETH-WBTC LP', + tokenDescription: 'Cometh', + tokenAddress: '0x4282C6b1c21CD1A0C363a70e4292f8Bf4D7c898c', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooComethETH-WBTC', + earnedTokenAddress: '0x55eebAd2b295d5229cf853368c9307e48B9CD955', + earnContractAddress: '0x55eebAd2b295d5229cf853368c9307e48B9CD955', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cometh-eth-wbtc', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Cometh', + assets: ['ETH', 'WBTC'], + addLiquidityUrl: + 'https://swap.cometh.io/#/add/0x7ceb23fd6bc0add59e62ac25578270cff1b9f619/0x1BFD67037B42Cf73acF2047067bd4F2C47D9BfD6', + buyTokenUrl: + 'https://swap.cometh.io/#/swap?inputCurrency=0x7ceb23fd6bc0add59e62ac25578270cff1b9f619&outputCurrency=0x1BFD67037B42Cf73acF2047067bd4F2C47D9BfD6', + createdAt: 1627720202, + }, + { + id: 'cometh-eth-usdc-eol', + name: 'ETH-USDC LP', + token: 'ETH-USDC LP', + tokenDescription: 'Cometh', + tokenAddress: '0x1Edb2D8f791D2a51D56979bf3A25673D6E783232', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooComethETH-USDC', + earnedTokenAddress: '0x47036A1ecC5D02e122Ae6604973ee1529E76e022', + earnContractAddress: '0x47036A1ecC5D02e122Ae6604973ee1529E76e022', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cometh-eth-usdc', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Cometh', + assets: ['ETH', 'USDC'], + addLiquidityUrl: + 'https://swap.cometh.io/#/add/0x7ceb23fd6bc0add59e62ac25578270cff1b9f619/0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174', + buyTokenUrl: + 'https://swap.cometh.io/#/swap?inputCurrency=0x7ceb23fd6bc0add59e62ac25578270cff1b9f619&outputCurrency=0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174', + createdAt: 1628517667, + }, + { + id: 'quick-sol-matic-eol', + name: 'SOL-MATIC LP', + token: 'SOL-MATIC LP', + tokenDescription: 'QuickSwap', + tokenAddress: '0x898386DD8756779a4ba4f1462891B92dd76b78eF', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooQuickSOL-MATIC', + earnedTokenAddress: '0x8802fbcb669c7BbcC3989455B3FdBF9235176bD4', + earnContractAddress: '0x8802fbcb669c7BbcC3989455B3FdBF9235176bD4', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'quick-sol-matic', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'QuickSwap', + assets: ['SOL', 'MATIC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/ETH/0x7DfF46370e9eA5f0Bad3C4E29711aD50062EA7A4', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?outputCurrency=0x7DfF46370e9eA5f0Bad3C4E29711aD50062EA7A4', + createdAt: 1628164489, + }, + { + id: 'quick-uni-eth-eol', + name: 'UNI-ETH LP', + token: 'UNI-ETH LP', + tokenDescription: 'QuickSwap', + tokenAddress: '0xF7135272a5584Eb116f5a77425118a8B4A2ddfDb', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooQuickUNI-ETH', + earnedTokenAddress: '0x80fcA0946fb75724f5d84Dd49edC694062E3111C', + earnContractAddress: '0x80fcA0946fb75724f5d84Dd49edC694062E3111C', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'quick-uni-eth', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'QuickSwap', + assets: ['UNI', 'ETH'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + retireReason: 'rewards', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0xb33EaAd8d922B1083446DC23f610c2567fB5180f/0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?outputCurrency=0xb33EaAd8d922B1083446DC23f610c2567fB5180f', + createdAt: 1627994474, + }, + { + id: 'quick-guard-usdc-eol', + name: 'GUARD-USDC LP', + token: 'GUARD-USDC LP', + tokenDescription: 'QuickSwap', + tokenAddress: '0xD2EeeEdfcAF1457F7BC9cbA28d5316F73BB83b49', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooQuickGUARD-USDC', + earnedTokenAddress: '0x1081062Aa050AFDBC3D669A24856a6fD23C536Fc', + earnContractAddress: '0x1081062Aa050AFDBC3D669A24856a6fD23C536Fc', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'quick-guard-usdc', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'QuickSwap', + assets: ['GUARD', 'USDC'], + retireReason: 'tvl', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174/0x948d2a81086A075b3130BAc19e4c6DEe1D2E3fE8', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?outputCurrency=0x948d2a81086A075b3130BAc19e4c6DEe1D2E3fE8', + createdAt: 1628007315, + }, + { + id: 'dinoswap-dino-eth-eol', + name: 'DINO-ETH LP', + token: 'DINO-ETH LP', + tokenDescription: 'Quickswap (DinoSwap)', + tokenAddress: '0x9f03309A588e33A239Bf49ed8D68b2D45C7A1F11', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooDinoSwapDINO-ETH', + earnedTokenAddress: '0xE87151D8dd8695e3e69e8B2f0eB8cf79BD2227d1', + earnContractAddress: '0xE87151D8dd8695e3e69e8B2f0eB8cf79BD2227d1', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'dinoswap-dino-eth', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Other', + assets: ['DINO', 'ETH'], + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0x7ceb23fd6bc0add59e62ac25578270cff1b9f619/0xAa9654BECca45B5BDFA5ac646c939C62b527D394', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?outputCurrency=0xAa9654BECca45B5BDFA5ac646c939C62b527D394', + createdAt: 1627984193, + }, + { + id: 'dinoswap-dfyn-ust-usdt-eol', + name: 'UST-USDT LP', + token: 'UST-USDT LP', + tokenDescription: 'DFyn (DinoSwap)', + tokenAddress: '0x39BEd7f1C412ab64443196A6fEcb2ac20C707224', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooDinoSwapDfynUST-USDT', + earnedTokenAddress: '0xa2e51538fce9d2D8082988921be4C0afC3Fe089a', + earnContractAddress: '0xa2e51538fce9d2D8082988921be4C0afC3Fe089a', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'dinoswap-dfyn-ust-usdt', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Other', + assets: ['UST', 'USDT'], + withdrawalFee: '0.01%', + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + 'ALGO_STABLE', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://exchange.dfyn.network/#/add/0x692597b009d13C4049a947CAB2239b7d6517875F/0xc2132D05D31c914a87C6611C10748AEb04B58e8F', + buyTokenUrl: + 'https://exchange.dfyn.network/#/swap?inputCurrency=0x692597b009d13C4049a947CAB2239b7d6517875F&outputCurrency=0xc2132D05D31c914a87C6611C10748AEb04B58e8F', + createdAt: 1627747757, + }, + { + id: 'dinoswap-dfyn-eth-dfyn-eol', + name: 'DFYN-ETH LP', + token: 'DFYN-ETH LP', + tokenDescription: 'DFyn (DinoSwap)', + tokenAddress: '0x6fA867BBFDd025780a8CFE988475220AfF51FB8b', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooDinoSwapDfynETH-DFYN', + earnedTokenAddress: '0x05064BF1Bc9f6778c69c3f68E17Ba8d9427594D8', + earnContractAddress: '0x05064BF1Bc9f6778c69c3f68E17Ba8d9427594D8', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'dinoswap-dfyn-eth-dfyn', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Other', + assets: ['DFYN', 'ETH'], + addLiquidityUrl: + 'https://exchange.dfyn.network/#/add/0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619/0xC168E40227E4ebD8C1caE80F7a55a4F0e6D66C97', + buyTokenUrl: + 'https://exchange.dfyn.network/#/swap?inputCurrency=0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619&outputCurrency=0xC168E40227E4ebD8C1caE80F7a55a4F0e6D66C97', + createdAt: 1627747533, + }, + { + id: 'quick-quick-yamp-eol', + name: 'YAMP-QUICK LP', + token: 'YAMP-QUICK LP', + tokenDescription: 'QuickSwap', + tokenAddress: '0x66fF795535CF162D29f6B15ed546a3e148Eff0Fb', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooQuickQUICK-YAMP', + earnedTokenAddress: '0x0BeCc1ff5f13b00A77cA359d0a15a0989766380E', + earnContractAddress: '0x0BeCc1ff5f13b00A77cA359d0a15a0989766380E', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'quick-quick-yamp', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'QuickSwap', + assets: ['QUICK', 'YAMP'], + retireReason: 'tvl', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0x831753DD7087CaC61aB5644b308642cc1c33Dc13/0x87f654c4b347230C60CAD8d7ea9cF0D7238bcc79', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?outputCurrency=0x87f654c4b347230C60CAD8d7ea9cF0D7238bcc79', + createdAt: 1627653529, + }, + { + id: 'quick-quick-rendgb-eol', + name: 'renDGB-QUICK LP', + token: 'renDGB-QUICK LP', + tokenDescription: 'QuickSwap', + tokenAddress: '0x5Cb85aa163B1B443F88A1f9124153E70F6586400', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooQuickQUICK-renDGB', + earnedTokenAddress: '0x6d486dD56e2191E87c275722FBADA1aADa2F2Aff', + earnContractAddress: '0x6d486dD56e2191E87c275722FBADA1aADa2F2Aff', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'quick-quick-rendgb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'QuickSwap', + assets: ['QUICK', 'renDGB'], + retireReason: 'rewards', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0x831753DD7087CaC61aB5644b308642cc1c33Dc13/0x2628568509E87c4429fBb5c664Ed11391BE1BD29', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?outputCurrency=0x2628568509E87c4429fBb5c664Ed11391BE1BD29', + createdAt: 1627656527, + }, + { + id: 'quick-quick-polydoge-eol', + name: 'polyDOGE-QUICK LP', + token: 'polyDOGE-QUICK LP', + tokenDescription: 'Quickswap', + tokenAddress: '0xbedEE6a7c572aa855a0c84d2f504311d482862F4', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooQuickQUICK-PolyDoge', + earnedTokenAddress: '0x4A2De8466873fCb21D7bDE5A754Baaf244729c72', + earnContractAddress: '0x4A2De8466873fCb21D7bDE5A754Baaf244729c72', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'quick-quick-polydoge', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'QuickSwap', + assets: ['PolyDoge', 'QUICK'], + retireReason: 'tvl', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0x831753DD7087CaC61aB5644b308642cc1c33Dc13/0x8A953CfE442c5E8855cc6c61b1293FA648BAE472', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?outputCurrency=0x8A953CfE442c5E8855cc6c61b1293FA648BAE472', + createdAt: 1627489669, + }, + { + id: 'farmhero-quick-usdc-honor-eol', + name: 'HONOR-USDC QLP', + token: 'HONOR-USDC QLP', + tokenDescription: 'FarmHero (Quickswap)', + tokenAddress: '0x46489f825f11d7473D20279699b108aCAA246e73', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooFarmHeroQuickUSDC-HONOR', + earnedTokenAddress: '0xD8f5095Fd7E27D4aD12008d5eb09105bFFd1572c', + earnContractAddress: '0xD8f5095Fd7E27D4aD12008d5eb09105bFFd1572c', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'farmhero-quick-usdc-honor', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['HONOR', 'USDC'], + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174/0xb82A20B4522680951F11c94c54B8800c1C237693', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?inputCurrency=0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174&outputCurrency=0xb82A20B4522680951F11c94c54B8800c1C237693', + createdAt: 1627447004, + retireReason: 'tvl', + }, + { + id: 'farmhero-wault-usdc-honor-eol', + name: 'HONOR-USDC WLP', + token: 'HONOR-USDC WLP', + tokenDescription: 'FarmHero (Wault)', + tokenAddress: '0x4Bd5dF4300b7c5309cB1A0143e4A6d0184B878e1', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooFarmHeroWaultUSDC-HONOR', + earnedTokenAddress: '0x0cFc878111e72e800ecA9E0B2a6358bcc15EB9FE', + earnContractAddress: '0x0cFc878111e72e800ecA9E0B2a6358bcc15EB9FE', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'farmhero-wault-usdc-honor', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['HONOR', 'USDC'], + addLiquidityUrl: + 'https://swap.wault.finance/polygon/#/add/0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174/0xb82A20B4522680951F11c94c54B8800c1C237693', + buyTokenUrl: + 'https://swap.wault.finance/polygon/#/swap?inputCurrency=0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174&outputCurrency=0xb82A20B4522680951F11c94c54B8800c1C237693', + createdAt: 1627447222, + retireReason: 'tvl', + }, + { + id: 'dfyn-matic-dfyn-eol', + name: 'WMATIC-DFYN LP', + token: 'WMATIC-DFYN LP', + tokenDescription: 'DFyn', + tokenAddress: '0x740d668883b0fAEf5eeF7E84BE28C7152D6f609D', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooDFynMATIC-DFYN', + earnedTokenAddress: '0x4a759386cacb60A714275F97AbA9b555d91001c9', + earnContractAddress: '0x4a759386cacb60A714275F97AbA9b555d91001c9', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'dfyn-matic-dfyn', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Other', + assets: ['WMATIC_DFYN', 'DFYN', 'WMATIC'], + addLiquidityUrl: + 'https://exchange.dfyn.network/#/add/ETH/0xc168e40227e4ebd8c1cae80f7a55a4f0e6d66c97', + buyTokenUrl: + 'https://exchange.dfyn.network/#/swap?inputCurrency=ETH&outputCurrency=0xc168e40227e4ebd8c1cae80f7a55a4f0e6d66c97', + createdAt: 1627604368, + }, + { + id: 'dfyn-luna-dfyn-eol', + name: 'LUNA-DFYN LP', + token: 'LUNA-DFYN LP', + tokenDescription: 'DFyn', + tokenAddress: '0x7E2cE68E76E94cB4C35b3Ab66d03e66efd7641a7', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooDFynLUNA-DFYN', + earnedTokenAddress: '0x653B205f0ceB4dF38DBFBfEAcaacC2003C553883', + earnContractAddress: '0x653B205f0ceB4dF38DBFBfEAcaacC2003C553883', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'dfyn-luna-dfyn', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Other', + assets: ['LUNA', 'DFYN'], + addLiquidityUrl: + 'https://exchange.dfyn.network/#/add/0x24834bbec7e39ef42f4a75eaf8e5b6486d3f0e57/0xc168e40227e4ebd8c1cae80f7a55a4f0e6d66c97', + buyTokenUrl: + 'https://exchange.dfyn.network/#/swap?inputCurrency=0x24834bbec7e39ef42f4a75eaf8e5b6486d3f0e57&outputCurrency=0xc168e40227e4ebd8c1cae80f7a55a4f0e6d66c97', + createdAt: 1627605208, + }, + { + id: 'dfyn-uni-dfyn-eol', + name: 'UNI-DFYN LP', + token: 'UNI-DFYN LP', + tokenDescription: 'DFyn', + tokenAddress: '0xE8c9bB82443c55d1c0Bdd12f7e9cbEc5974eCf43', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooDFynUNI-DFYN', + earnedTokenAddress: '0x16B6BFE58deDF2934C6E9BE1D0cBEcaafc2C686d', + earnContractAddress: '0x16B6BFE58deDF2934C6E9BE1D0cBEcaafc2C686d', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'dfyn-uni-dfyn', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Other', + assets: ['UNI', 'DFYN'], + addLiquidityUrl: + 'https://exchange.dfyn.network/#/add/0xb33EaAd8d922B1083446DC23f610c2567fB5180f/0xc168e40227e4ebd8c1cae80f7a55a4f0e6d66c97', + buyTokenUrl: + 'https://exchange.dfyn.network/#/swap?inputCurrency=0xb33EaAd8d922B1083446DC23f610c2567fB5180f&outputCurrency=0xc168e40227e4ebd8c1cae80f7a55a4f0e6d66c97', + createdAt: 1627605778, + }, + { + id: 'dfyn-crv-dfyn-eol', + name: 'CRV-DFYN LP', + token: 'CRV-DFYN LP', + tokenDescription: 'DFyn', + tokenAddress: '0x4Ea3e2cfC39FA51Df85ebcfa366d7f0eED448a1C', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooDFynCRV-DFYN', + earnedTokenAddress: '0x259676497409B89Da5655468551685dFbec1EA57', + earnContractAddress: '0x259676497409B89Da5655468551685dFbec1EA57', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'dfyn-crv-dfyn', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Other', + assets: ['CRV', 'DFYN'], + addLiquidityUrl: + 'https://exchange.dfyn.network/#/add/0x172370d5Cd63279eFa6d502DAB29171933a610AF/0xc168e40227e4ebd8c1cae80f7a55a4f0e6d66c97', + buyTokenUrl: + 'https://exchange.dfyn.network/#/swap?inputCurrency=0x172370d5Cd63279eFa6d502DAB29171933a610AF&outputCurrency=0xc168e40227e4ebd8c1cae80f7a55a4f0e6d66c97', + createdAt: 1627605878, + }, + { + id: 'polyyeld-xyeld-quick-wmatic-xyeld-eol', + name: 'xYELD-MATIC QLP', + token: 'xYELD-MATIC QLP', + tokenDescription: 'Polyyeld (L2)', + tokenAddress: '0x6Ea785d8edeA0a99c7040839d8fA0498c3c9a319', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPolyyeldL2QuickWMATIC-xYELD', + earnedTokenAddress: '0xa450f23570868A33bc66bF60f2268E85575bbDC9', + earnContractAddress: '0xa450f23570868A33bc66bF60f2268E85575bbDC9', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'polyyeld-xyeld-quick-wmatic-xyeld', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['xYELD', 'MATIC'], + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270/0x90AC3fa9fCD997B168f218041de26eB01399Bb55', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?inputCurrency=0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270&outputCurrency=0x90AC3fa9fCD997B168f218041de26eB01399Bb55', + createdAt: 1626553687, + }, + { + id: 'polycracker-lith-eol', + logo: 'single-assets/LITHIUM.svg', + name: 'LITHIUM', + token: 'LITHIUM', + tokenDescription: 'PolyWantsACracker', + tokenAddress: '0xfE1a200637464FBC9B60Bc7AeCb9b86c0E1d486E', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'MooPolyCrackerLITH', + earnedTokenAddress: '0xE08d7B24E2D22B242dEA3DE85032261810F35B09', + earnContractAddress: '0xE08d7B24E2D22B242dEA3DE85032261810F35B09', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'LITHIUM', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['LITHIUM'], + buyTokenUrl: + 'https://quickswap.exchange/#/swap?outputCurrency=0xfE1a200637464FBC9B60Bc7AeCb9b86c0E1d486E', + createdAt: 1627398246, + }, + { + id: 'polycracker-lith-usdc-eol', + name: 'LITHIUM-USDC LP', + token: 'LITHIUM-USDC LP', + tokenDescription: 'Quickswap (PolyWantsACracker)', + tokenAddress: '0x1b9c6d8b372C410426CF803fd20a815aA7B454c2', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'MooPolyCrackerLITH-USDC', + earnedTokenAddress: '0x51A61e614E18B9c50f2420e77Bb071B5fF6D7aB7', + earnContractAddress: '0x51A61e614E18B9c50f2420e77Bb071B5fF6D7aB7', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'polycracker-lith-usdc', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['LITHIUM', 'USDC'], + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174/0xfE1a200637464FBC9B60Bc7AeCb9b86c0E1d486E', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?outputCurrency=0xfE1a200637464FBC9B60Bc7AeCb9b86c0E1d486E', + createdAt: 1627397974, + }, + { + id: 'dinoswap-xmark-usdc-eol', + name: 'xMARK-USDC LP', + token: 'xMARK-USDC LP', + tokenDescription: 'SushiSwap (DinoSwap)', + tokenAddress: '0x97A95deb56d689802F02f50c25EBCda5d0A49591', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooDinoSwapXMARK-USDC', + earnedTokenAddress: '0xFa08E2EFE3aa5a8a0142f26add94354f9FdFe1DE', + earnContractAddress: '0xFa08E2EFE3aa5a8a0142f26add94354f9FdFe1DE', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'dinoswap-xmark-usdc', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Other', + assets: ['xMARK', 'USDC'], + addLiquidityUrl: + 'https://app.sushi.com/add/0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174/0xf153eff70dc0bf3b085134928daeea248d9b30d0', + buyTokenUrl: + 'https://app.sushi.com/swap?inputCurrency=0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174&outputCurrency=0xf153eff70dc0bf3b085134928daeea248d9b30d0', + createdAt: 1627204805, + }, + { + id: 'dinoswap-dino-usdc-eol', + name: 'DINO-USDC LP', + token: 'DINO-USDC LP', + tokenDescription: 'SushiSwap (DinoSwap)', + tokenAddress: '0x3324af8417844e70b81555A6D1568d78f4D4Bf1f', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooDinoSwapDINO-USDC', + earnedTokenAddress: '0x6a195660472a51f267230c3324F86055D2A8B1E2', + earnContractAddress: '0x6a195660472a51f267230c3324F86055D2A8B1E2', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'dinoswap-dino-usdc', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Other', + assets: ['DINO', 'USDC'], + addLiquidityUrl: + 'https://app.sushi.com/add/0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174/0xAa9654BECca45B5BDFA5ac646c939C62b527D394', + buyTokenUrl: + 'https://app.sushi.com/swap?inputCurrency=0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174&outputCurrency=0xAa9654BECca45B5BDFA5ac646c939C62b527D394', + createdAt: 1626613413, + }, + { + id: 'dinoswap-usdc-mimatic-eol', + name: 'MAI-USDC LP', + token: 'MAI-USDC QLP', + tokenDescription: 'Quickswap (DinoSwap)', + tokenAddress: '0x160532D2536175d65C03B97b0630A9802c274daD', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooDinoSwapUSDC-MIMATIC', + earnedTokenAddress: '0x92dEB173538F4f4dCf51B8A878b6C816C034BcdF', + earnContractAddress: '0x92dEB173538F4f4dCf51B8A878b6C816C034BcdF', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'dinoswap-usdc-mimatic', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['MAI', 'USDC'], + withdrawalFee: '0.01%', + retireReason: 'rewards', + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_MICRO', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + 'OVER_COLLAT_ALGO_STABLECOIN', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0x2791bca1f2de4661ed88a30c99a7a9449aa84174/0xa3Fa99A148fA48D14Ed51d610c367C61876997F1', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?outputCurrency=0xa3Fa99A148fA48D14Ed51d610c367C61876997F1', + createdAt: 1626609638, + }, + { + id: 'dinoswap-usdc-usdt-eol', + name: 'USDC-USDT LP', + token: 'USDC-USDT QLP', + tokenDescription: 'Quickswap (DinoSwap)', + tokenAddress: '0x2cF7252e74036d1Da831d11089D326296e64a728', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooDinoSwapUSDC-USDT', + earnedTokenAddress: '0x4cE9E554a62672Fc9Ceecb26ce48B742b75D4658', + earnContractAddress: '0x4cE9E554a62672Fc9Ceecb26ce48B742b75D4658', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'dinoswap-usdc-usdt', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['USDC', 'USDT'], + withdrawalFee: '0.01%', + retireReason: 'rewards', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174/0xc2132D05D31c914a87C6611C10748AEb04B58e8F', + createdAt: 1626611305, + }, + { + id: 'jetswap-poly-usdc-usdt', + name: 'USDC-USDT LP', + token: 'USDC-USDT LP', + tokenDescription: 'JetSwap', + tokenAddress: '0x20BF018FDDBa3b352f3d913FE1c81b846fE0F490', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooJetSwapUSDC-USDT', + earnedTokenAddress: '0x93c9f29CF2496e73f3d8b07055e2359267207147', + earnContractAddress: '0x93c9f29CF2496e73f3d8b07055e2359267207147', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'jetswap-poly-usdc-usdt', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'JetSwap', + assets: ['USDC', 'USDT'], + withdrawalFee: '0.01%', + addLiquidityUrl: + 'https://polygon-exchange.jetswap.finance/#/add/0xc2132D05D31c914a87C6611C10748AEb04B58e8F/0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174', + createdAt: 1625847401, + }, + { + id: 'mai-usdc-mimatic', + name: 'MAI-USDC LP', + token: 'MAI-USDC QLP', + tokenDescription: 'QuickSwap (Mai)', + tokenAddress: '0x160532D2536175d65C03B97b0630A9802c274daD', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooMaiUSDC-miMATIC', + earnedTokenAddress: '0xebe0c8d842AA5A57D7BEf8e524dEabA676F91cD1', + earnContractAddress: '0xebe0c8d842AA5A57D7BEf8e524dEabA676F91cD1', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'mai-usdc-mimatic', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Mai', + assets: ['MAI', 'USDC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'MCAP_MICRO', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + 'OVER_COLLAT_ALGO_STABLECOIN', + ], + stratType: 'StratLP', + depositFee: '0.5%', + withdrawalFee: '0.0%', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0x2791bca1f2de4661ed88a30c99a7a9449aa84174/0xa3Fa99A148fA48D14Ed51d610c367C61876997F1', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?inputCurrency=0x2791bca1f2de4661ed88a30c99a7a9449aa84174&outputCurrency=0xa3Fa99A148fA48D14Ed51d610c367C61876997F1', + createdAt: 1624076992, + }, + { + id: 'polypup-usdc-bone-eol', + name: 'BONE-USDC QLP', + token: 'BONE-USDC QLP', + tokenDescription: 'Polypup', + tokenAddress: '0x2CC05c660f35E8692CA99dB95922CB744d44ef20', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPolypupUSDC-BONE', + earnedTokenAddress: '0x8Ce906F6f383c31b09B1D2A5f2c9f480b87ceb58', + earnContractAddress: '0x8Ce906F6f383c31b09B1D2A5f2c9f480b87ceb58', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'polypup-usdc-bone', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['BONE', 'USDC'], + retireReason: 'rewards', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174/0x6bb45cEAC714c52342Ef73ec663479da35934bf7', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?inputCurrency=0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174&outputCurrency=0x6bb45cEAC714c52342Ef73ec663479da35934bf7', + createdAt: 1625098451, + }, + { + id: 'polyyeld-xyeld-xyeld-eol', + logo: 'single-assets/xYELD.svg', + name: 'xYELD', + token: 'xYELD', + tokenDescription: 'Polyyeld (L2)', + tokenAddress: '0x90AC3fa9fCD997B168f218041de26eB01399Bb55', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPolyyeldL2xYELD', + earnedTokenAddress: '0x2Fa3A4671b977a8f0c16334e4CF16EA91F22db75', + earnContractAddress: '0x2Fa3A4671b977a8f0c16334e4CF16EA91F22db75', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'xYELD', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['xYELD'], + buyTokenUrl: + 'https://quickswap.exchange/#/swap?outputCurrency=0x90AC3fa9fCD997B168f218041de26eB01399Bb55', + createdAt: 1626552470, + }, + { + id: 'polyyeld-xyeld-yeld-eol', + logo: 'single-assets/YELD.png', + name: 'YELD', + token: 'YELD', + tokenDescription: 'Polyyeld (L2)', + tokenAddress: '0xd0f3121A190d85dE0AB6131f2bCEcdbfcfB38891', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPolyyeldL2YELD', + earnedTokenAddress: '0xa6D7AbC6D051314eD22a98ED74E41278516d3bbd', + earnContractAddress: '0xa6D7AbC6D051314eD22a98ED74E41278516d3bbd', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'YELD', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['YELD'], + buyTokenUrl: + 'https://quickswap.exchange/#/swap?outputCurrency=0xd0f3121A190d85dE0AB6131f2bCEcdbfcfB38891', + createdAt: 1626551580, + }, + { + id: 'polyyeld-xyeld-quick-wmatic-yeld-eol', + name: 'YELD-MATIC QLP', + token: 'YELD-MATIC QLP', + tokenDescription: 'Polyyeld (L2)', + tokenAddress: '0xef71F798c15f8C9732488e109BB511144088bECe', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPolyyeldL2QuickWMATIC-YELD', + earnedTokenAddress: '0xB215bFd4821C71914F92093cae527FD355CE268F', + earnContractAddress: '0xB215bFd4821C71914F92093cae527FD355CE268F', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'polyyeld-xyeld-quick-wmatic-yeld', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['YELD', 'MATIC'], + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270/0xd0f3121A190d85dE0AB6131f2bCEcdbfcfB38891', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?inputCurrency=0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270&outputCurrency=0xd0f3121A190d85dE0AB6131f2bCEcdbfcfB38891', + createdAt: 1626553815, + }, + { + id: 'quick-nexo-eth-eol', + name: 'NEXO-ETH LP', + token: 'NEXO-ETH LP', + tokenDescription: 'Quickswap', + tokenAddress: '0x10062ec62C0bE26cC9e2f50a1CF784a89ded075F', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooQuickNEXO-ETH', + earnedTokenAddress: '0xba1548b3f673950094dc00eDc1eB71683f371696', + earnContractAddress: '0xba1548b3f673950094dc00eDc1eB71683f371696', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'quick-nexo-eth', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'QuickSwap', + assets: ['NEXO', 'ETH'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MEDIUM', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + retireReason: 'rewards', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0x7ceb23fd6bc0add59e62ac25578270cff1b9f619/0x41b3966B4FF7b427969ddf5da3627d6AEAE9a48E', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?outputCurrency=0x41b3966B4FF7b427969ddf5da3627d6AEAE9a48E', + createdAt: 1626349862, + }, + { + id: 'telxchange-quick-quick-tel-eol', + name: 'TEL-QUICK QLP', + token: 'TEL-QUICK QLP', + tokenDescription: 'Telxchange', + tokenAddress: '0xE88e24F49338f974B528AcE10350Ac4576c5c8A1', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooTelxchangeQuickQUICK-TEL', + earnedTokenAddress: '0xda3E3ee01Ee7284e3D0d900Ca3fb3D09484E1ce0', + earnContractAddress: '0xda3E3ee01Ee7284e3D0d900Ca3fb3D09484E1ce0', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'telxchange-quick-quick-tel', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['TEL', 'QUICK'], + retireReason: 'rewards', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0x831753DD7087CaC61aB5644b308642cc1c33Dc13/0xdF7837DE1F2Fa4631D716CF2502f8b230F1dcc32', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?inputCurrency=0x831753DD7087CaC61aB5644b308642cc1c33Dc13&outputCurrency=0xdF7837DE1F2Fa4631D716CF2502f8b230F1dcc32', + createdAt: 1626289895, + }, + { + id: 'telxchange-quick-wmatic-tel', + name: 'TEL-MATIC QLP', + token: 'TEL-MATIC QLP', + tokenDescription: 'Telxchange', + tokenAddress: '0x9b5c71936670e9f1F36e63F03384De7e06E60d2a', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooTelxchangeQuickWMATIC-TEL', + earnedTokenAddress: '0x2AaB02eDE64d4A686EA1d1A70B688E46cce50fFd', + earnContractAddress: '0x2AaB02eDE64d4A686EA1d1A70B688E46cce50fFd', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'telxchange-quick-wmatic-tel', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Other', + assets: ['TEL', 'MATIC'], + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270/0xdF7837DE1F2Fa4631D716CF2502f8b230F1dcc32', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?inputCurrency=0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270&outputCurrency=0xdF7837DE1F2Fa4631D716CF2502f8b230F1dcc32', + createdAt: 1626322235, + }, + { + id: 'telxchange-quick-eth-tel-eol', + name: 'TEL-ETH QLP', + token: 'TEL-ETH QLP', + tokenDescription: 'Telxchange', + tokenAddress: '0xFc2fC983a411C4B1E238f7Eb949308CF0218C750', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooTelxchangeQuickETH-TEL', + earnedTokenAddress: '0xDC52e53f9E8b2cf42b557A6b3cE36e79De39ACd6', + earnContractAddress: '0xDC52e53f9E8b2cf42b557A6b3cE36e79De39ACd6', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'telxchange-quick-eth-tel', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['TEL', 'ETH'], + retireReason: 'rewards', + withdrawalFee: '0%', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619/0xdF7837DE1F2Fa4631D716CF2502f8b230F1dcc32', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?inputCurrency=0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619&outputCurrency=0xdF7837DE1F2Fa4631D716CF2502f8b230F1dcc32', + createdAt: 1626306817, + }, + { + id: 'telxchange-quick-aave-tel', + name: 'TEL-AAVE QLP', + token: 'TEL-AAVE QLP', + tokenDescription: 'Telxchange', + tokenAddress: '0x4917bC6b8E705Ad462ef525937E7eB7C6c87C356', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooTelxchangeQuickAAVE-TEL', + earnedTokenAddress: '0xBa58D7131Ca50DdFB458f37ea0De6fdcebFe836B', + earnContractAddress: '0xBa58D7131Ca50DdFB458f37ea0De6fdcebFe836B', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'telxchange-quick-aave-tel', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Other', + assets: ['TEL', 'AAVE'], + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0xD6DF932A45C0f255f85145f286eA0b292B21C90B/0xdF7837DE1F2Fa4631D716CF2502f8b230F1dcc32', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?inputCurrency=0xD6DF932A45C0f255f85145f286eA0b292B21C90B&outputCurrency=0xdF7837DE1F2Fa4631D716CF2502f8b230F1dcc32', + createdAt: 1626327159, + }, + { + id: 'telxchange-quick-wbtc-tel', + name: 'TEL-BTC QLP', + token: 'TEL-BTC QLP', + tokenDescription: 'Telxchange', + tokenAddress: '0xaDdc9C73f3CBaD4E647eAFf691715898825Ac20c', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooTelxchangeQuickWBTC-TEL', + earnedTokenAddress: '0xb74792F6a2cF81E3f704930621cb4832ffFcC840', + earnContractAddress: '0xb74792F6a2cF81E3f704930621cb4832ffFcC840', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'telxchange-quick-wbtc-tel', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'Other', + assets: ['TEL', 'WBTC'], + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0x1BFD67037B42Cf73acF2047067bd4F2C47D9BfD6/0xdF7837DE1F2Fa4631D716CF2502f8b230F1dcc32', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?inputCurrency=0x1BFD67037B42Cf73acF2047067bd4F2C47D9BfD6&outputCurrency=0xdF7837DE1F2Fa4631D716CF2502f8b230F1dcc32', + createdAt: 1626327313, + }, + { + id: 'curve-poly-atricrypto', + logo: 'uncategorized/ATRICRYPTO.png', + name: 'aTriCrypto', + token: 'crvUSDBTCETH', + tokenDescription: 'Curve', + tokenAddress: '0x8096ac61db23291252574D49f036f0f9ed8ab390', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooCurveATriCrypto', + earnedTokenAddress: '0x3dab1aCB811dc4C8b2FdC77812552f4d4Efd0A8c', + earnContractAddress: '0x3dab1aCB811dc4C8b2FdC77812552f4d4Efd0A8c', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'curve-poly-atricrypto', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Curve', + assets: ['DAI', 'USDC', 'USDT', 'WBTC', 'ETH'], + withdrawalFee: '0%', + addLiquidityUrl: 'https://polygon.curve.fi/atricrypto/deposit', + createdAt: 1625140527, + }, + { + id: 'dfyn-ice-dfyn-eol', + name: 'ICE-DFYN LP', + token: 'ICE-DFYN LP', + tokenDescription: 'DFyn', + tokenAddress: '0x9bb608dc0F9308B9beCA2F7c80865454d02E74cA', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooDfynICE-DFYN', + earnedTokenAddress: '0xB198A916123394f2d9c31D4645468566e87080d5', + earnContractAddress: '0xB198A916123394f2d9c31D4645468566e87080d5', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'dfyn-ice-dfyn', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['ironICE', 'DFYN'], + retireReason: 'rewards', + addLiquidityUrl: + 'https://exchange.dfyn.network/#/add/0x4A81f8796e0c6Ad4877A51C86693B0dE8093F2ef/0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174', + buyTokenUrl: + 'https://exchange.dfyn.network/#/swap?outputCurrency=0x4A81f8796e0c6Ad4877A51C86693B0dE8093F2ef', + createdAt: 1626270600, + }, + { + id: 'ironswap-ice-eth-eol', + name: 'ICE-ETH LP', + token: 'ICE-ETH LP', + tokenDescription: 'IronSwap (Firebird)', + tokenAddress: '0xf1EE78544a1118F2efb87f7EaCd9f1E6e80e1ea5', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooIronSwapICE-ETH', + earnedTokenAddress: '0x90D0F2050e62a6d4AF088dD09d802D9A18253c40', + earnContractAddress: '0x90D0F2050e62a6d4AF088dD09d802D9A18253c40', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'ironswap-ice-eth', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'IronFinance', + assets: ['ironICE', 'ETH'], + addLiquidityUrl: 'https://app.firebird.finance/add/0xf1ee78544a1118f2efb87f7eacd9f1e6e80e1ea5', + buyTokenUrl: + 'https://app.firebird.finance/swap?outputCurrency=0x4A81f8796e0c6Ad4877A51C86693B0dE8093F2ef', + createdAt: 1626155225, + retireReason: 'tvl', + }, + { + id: 'ironswap-ice-usdc-eol', + name: 'ICE-USDC LP', + token: 'ICE-USDC LP', + tokenDescription: 'IronSwap (DFYN)', + tokenAddress: '0x34832D9AC4127a232C1919d840f7aaE0fcb7315B', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooIronSwapICE-USDC', + earnedTokenAddress: '0x0564889d4Ff0dA0371Ec8a898AC39ABC99065BfA', + earnContractAddress: '0x0564889d4Ff0dA0371Ec8a898AC39ABC99065BfA', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'ironswap-ice-usdc', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'IronFinance', + assets: ['ironICE', 'USDC'], + addLiquidityUrl: + 'https://exchange.dfyn.network/#/add/0x4A81f8796e0c6Ad4877A51C86693B0dE8093F2ef/0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174', + buyTokenUrl: + 'https://exchange.dfyn.network/#/swap?outputCurrency=0x4A81f8796e0c6Ad4877A51C86693B0dE8093F2ef', + createdAt: 1626164436, + retireReason: 'tvl', + }, + { + id: 'ironswap-3usd', + logo: 'uncategorized/IRON-3USD.png', + name: 'USDC/USDT/DAI', + token: 'IS3USD', + tokenDescription: 'IronSwap', + tokenAddress: '0xb4d09ff3dA7f9e9A2BA029cb0A81A989fd7B8f17', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooIronSwap3USD', + earnedTokenAddress: '0x0C4705EBd2BF69660b72f9E9B684714c9e341942', + earnContractAddress: '0x0C4705EBd2BF69660b72f9E9B684714c9e341942', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'ironswap-3usd', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'IronFinance', + assets: ['USDC', 'USDT', 'DAI'], + withdrawalFee: '0.01%', + addLiquidityUrl: 'https://app.iron.finance/swap/pools/is3usd/deposit', + createdAt: 1626100387, + }, + { + id: 'wexpoly-wbtc-wex-eol', + logo: 'polygon/WEXPOLY-BTC.png', + name: 'WEXpoly-WBTC LP', + token: 'WEXpoly-WBTC WLP', + tokenDescription: 'WaultFinance', + tokenAddress: '0xaE183DB956FAf760Aa29bFcfDa4BDDdB02fbdd0E', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooWexPolyWBTC-WEX ', + earnedTokenAddress: '0xA1B2Ef1b6D5823D832DDa2AE2B489793832Fd082', + earnContractAddress: '0xA1B2Ef1b6D5823D832DDa2AE2B489793832Fd082', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'wexpoly-wbtc-wex', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Other', + assets: ['WEXpoly', 'WBTC'], + risks: [ + 'IL_HIGH', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://swap.wault.finance/polygon/#/add/0x1BFD67037B42Cf73acF2047067bd4F2C47D9BfD6/0x4c4BF319237D98a30A929A96112EfFa8DA3510EB', + buyTokenUrl: + 'https://swap.wault.finance/polygon/#/swap?inputCurrency=0x1BFD67037B42Cf73acF2047067bd4F2C47D9BfD6&outputCurrency=0x4c4BF319237D98a30A929A96112EfFa8DA3510EB', + createdAt: 1625995689, + }, + { + id: 'dfyn-bifi-dfyn-eol', + name: 'BIFI-DFYN LP', + token: 'BIFI-DFYN DLP', + tokenDescription: 'DFyn', + tokenAddress: '0x759738096589b9C39dA78A603565635a3Cee6013', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooDfynBIFI-DFYN', + earnedTokenAddress: '0x74b00bbb693de4dC07d8aB79Ac935b323e2A136a', + earnContractAddress: '0x74b00bbb693de4dC07d8aB79Ac935b323e2A136a', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'dfyn-bifi-dfyn', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['BIFI', 'DFYN'], + addLiquidityUrl: + 'https://exchange.dfyn.network/#/add/0xfbdd194376de19a88118e84e279b977f165d01b8/0xC168E40227E4ebD8C1caE80F7a55a4F0e6D66C97', + buyTokenUrl: + 'https://exchange.dfyn.network/#/swap?inputCurrency=0xfbdd194376de19a88118e84e279b977f165d01b8&outputCurrency=0xC168E40227E4ebD8C1caE80F7a55a4F0e6D66C97', + createdAt: 1625919162, + }, + { + id: 'jetswap-poly-pwings-eol', + logo: 'single-assets/pWINGS.png', + name: 'pWINGS', + token: 'pWINGS', + tokenDescription: 'JetSwap', + tokenAddress: '0x845E76A8691423fbc4ECb8Dd77556Cb61c09eE25', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooJetSwapPWINGS', + earnedTokenAddress: '0xa55e8326a9AC7B0bFcA5E6Fc9Cf1141E2dc11f67', + earnContractAddress: '0xa55e8326a9AC7B0bFcA5E6Fc9Cf1141E2dc11f67', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'pWINGS', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'JetSwap', + assets: ['pWINGS'], + buyTokenUrl: + 'https://polygon-exchange.jetswap.finance/#/swap?outputCurrency=0x845E76A8691423fbc4ECb8Dd77556Cb61c09eE25', + createdAt: 1625919720, + retireReason: 'tvl', + }, + { + id: 'jetswap-poly-pwings-usdc-eol', + name: 'pWINGS-USDC LP', + token: 'pWINGS-USDC LP', + tokenDescription: 'JetSwap', + tokenAddress: '0xaf623E96d38191038C48990Df298e07Fb77b56c3', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooJetSwapPWINGS-USDC', + earnedTokenAddress: '0xaA66e6EA1cAa7B86a8119B1420F6EdeDE3bb58f1', + earnContractAddress: '0xaA66e6EA1cAa7B86a8119B1420F6EdeDE3bb58f1', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'jetswap-poly-pwings-usdc', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'JetSwap', + assets: ['pWINGS', 'USDC'], + addLiquidityUrl: + 'https://polygon-exchange.jetswap.finance/#/add/0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174/0x845E76A8691423fbc4ECb8Dd77556Cb61c09eE25', + buyTokenUrl: + 'https://polygon-exchange.jetswap.finance/#/swap?outputCurrency=0x845E76A8691423fbc4ECb8Dd77556Cb61c09eE25', + createdAt: 1625844034, + }, + { + id: 'jetswap-poly-pwings-matic-eol', + name: 'pWINGS-MATIC LP', + token: 'pWINGS-MATIC LP', + tokenDescription: 'JetSwap', + tokenAddress: '0xA0A6e9A5185d5737CF6F7920CB417EA2F07F03B3', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooJetSwapPWINGS-MATIC', + earnedTokenAddress: '0x97fe99a9bc7db115EC89Bc2627eC7f0518409121', + earnContractAddress: '0x97fe99a9bc7db115EC89Bc2627eC7f0518409121', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'jetswap-poly-pwings-matic', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'JetSwap', + assets: ['pWINGS', 'MATIC'], + addLiquidityUrl: + 'https://polygon-exchange.jetswap.finance/#/add/MATIC/0x845E76A8691423fbc4ECb8Dd77556Cb61c09eE25', + buyTokenUrl: + 'https://polygon-exchange.jetswap.finance/#/swap?outputCurrency=0x845E76A8691423fbc4ECb8Dd77556Cb61c09eE25', + createdAt: 1625845966, + retireReason: 'tvl', + }, + { + id: 'mai-qi-mimatic-eol', + name: 'QI-MAI LP', + token: 'QI-MAI QLP', + tokenDescription: 'QuickSwap (Mai)', + tokenAddress: '0x7AfcF11F3e2f01e71B7Cc6b8B5e707E42e6Ea397', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooMaiQI-miMATIC', + earnedTokenAddress: '0xa2Dd60Fb8Bbf21e60E58AF97Cfc9dB9A34397848', + earnContractAddress: '0xa2Dd60Fb8Bbf21e60E58AF97Cfc9dB9A34397848', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'mai-qi-mimatic', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Mai', + assets: ['QI', 'MAI'], + depositFee: '0.5%', + withdrawalFee: '0.0%', + retireReason: 'rewards', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0x580A84C73811E1839F75d86d75d88cCa0c241fF4/0xa3Fa99A148fA48D14Ed51d610c367C61876997F1', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?inputCurrency=0xa3fa99a148fa48d14ed51d610c367c61876997f1&outputCurrency=0x580A84C73811E1839F75d86d75d88cCa0c241fF4', + createdAt: 1624074452, + }, + { + id: 'quick-qi-quick-eol', + name: 'QI-QUICK LP', + token: 'QI-QUICK QLP', + tokenDescription: 'QuickSwap', + tokenAddress: '0x25d56E2416f20De1Efb1F18fd06dD12eFeC3D3D0', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooQuickQI-QUICK', + earnedTokenAddress: '0x1d7A7182043F521ab57Fe07a8420Fee9843E365e', + earnContractAddress: '0x1d7A7182043F521ab57Fe07a8420Fee9843E365e', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'quick-qi-quick', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'QuickSwap', + assets: ['QI', 'QUICK'], + retireReason: 'tvl', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0x580A84C73811E1839F75d86d75d88cCa0c241fF4/0x831753DD7087CaC61aB5644b308642cc1c33Dc13', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?inputCurrency=0x831753DD7087CaC61aB5644b308642cc1c33Dc13&outputCurrency=0x580A84C73811E1839F75d86d75d88cCa0c241fF4', + createdAt: 1624073954, + }, + { + id: 'quick-usdc-mimatic-eol', + name: 'MAI-USDC LP', + token: 'MAI-USDC QLP', + tokenDescription: 'QuickSwap', + tokenAddress: '0x160532D2536175d65C03B97b0630A9802c274daD', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooQuickUSDC-miMATIC', + earnedTokenAddress: '0xf62c521c4fb3Fbc20EaB50E1871A90A53632f22e', + earnContractAddress: '0xf62c521c4fb3Fbc20EaB50E1871A90A53632f22e', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'quick-usdc-mimatic', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'QuickSwap', + assets: ['MAI', 'USDC'], + withdrawalFee: '0.01%', + retireReason: 'rewards', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0x2791bca1f2de4661ed88a30c99a7a9449aa84174/0xa3Fa99A148fA48D14Ed51d610c367C61876997F1', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?inputCurrency=0x2791bca1f2de4661ed88a30c99a7a9449aa84174&outputCurrency=0xa3Fa99A148fA48D14Ed51d610c367C61876997F1', + createdAt: 1623631997, + }, + { + id: 'quick-polybunny-eth-eol', + name: 'polyBUNNY-ETH LP', + token: 'polyBUNNY-ETH LP', + tokenDescription: 'Quickswap', + tokenAddress: '0x62052b489Cb5bC72a9DC8EEAE4B24FD50639921a', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooQuickpolyBUNNY-ETH', + earnedTokenAddress: '0x6C4593D4f91c790404cCEe5007E929d2b7bF45bD', + earnContractAddress: '0x6C4593D4f91c790404cCEe5007E929d2b7bF45bD', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'quick-polybunny-eth', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'QuickSwap', + assets: ['polyBUNNY', 'ETH'], + retireReason: 'tvl', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0x7ceb23fd6bc0add59e62ac25578270cff1b9f619/0x4C16f69302CcB511c5Fac682c7626B9eF0Dc126a', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?outputCurrency=0x4C16f69302CcB511c5Fac682c7626B9eF0Dc126a', + createdAt: 1625698210, + }, + { + id: 'quick-polybunny-quick-eol', + name: 'polyBUNNY-QUICK LP', + token: 'polyBUNNY-QUICK LP', + tokenDescription: 'Quickswap', + tokenAddress: '0x976b7B7fE4293111CaCd946C422a64f24A223564', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooQuickpolyBUNNY-QUICK', + earnedTokenAddress: '0x0e229c6381f00F4be47a9529CBDde18016dD9369', + earnContractAddress: '0x0e229c6381f00F4be47a9529CBDde18016dD9369', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'quick-polybunny-quick', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'QuickSwap', + assets: ['polyBUNNY', 'QUICK'], + retireReason: 'tvl', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0x831753dd7087cac61ab5644b308642cc1c33dc13/0x4C16f69302CcB511c5Fac682c7626B9eF0Dc126a', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?outputCurrency=0x4C16f69302CcB511c5Fac682c7626B9eF0Dc126a', + createdAt: 1625698046, + }, + { + id: 'boneswap-quick-wmatic-bone-eol', + name: 'BONE-MATIC LP', + token: 'BONE-MATIC LP', + tokenDescription: 'Quickswap (BoneSwap)', + tokenAddress: '0x2d10b334646F6e61F2556c0f7eda2fF3D82d001e', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBoneSwapQuickBONE-WMATIC', + earnedTokenAddress: '0xe9CAf4DfeaB51114a619C8104C38a309ccA236E1', + earnContractAddress: '0xe9CAf4DfeaB51114a619C8104C38a309ccA236E1', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'boneswap-quick-wmatic-bone', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['BONEswap', 'MATIC'], + retireReason: 'rewards', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0x80244C2441779361F35803b8C711C6c8fC6054a3/0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?outputCurrency=0x80244C2441779361F35803b8C711C6c8fC6054a3', + createdAt: 1625567504, + }, + { + id: 'boneswap-sushi-wmatic-bone-eol', + name: 'BONE-MATIC SLP', + token: 'BONE-MATIC SLP', + tokenDescription: 'SushiSwap (BoneSwap)', + tokenAddress: '0x4026895A93D720083E4469eE675156A8Ff8D3853', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBoneSwapSushiBONE-WMATIC', + earnedTokenAddress: '0x9fc153db31a5CeF1Cd326De31FEb37C7499eebC8', + earnContractAddress: '0x9fc153db31a5CeF1Cd326De31FEb37C7499eebC8', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'boneswap-sushi-wmatic-bone', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['BONEswap', 'MATIC'], + retireReason: 'rewards', + addLiquidityUrl: 'https://app.sushi.com/add/ETH/0x80244C2441779361F35803b8C711C6c8fC6054a3', + buyTokenUrl: + 'https://app.sushi.com/swap?inputCurrency=ETH&outputCurrency=0x80244C2441779361F35803b8C711C6c8fC6054a3', + createdAt: 1625569831, + }, + { + id: 'boneswap-ape-wmatic-bone-eol', + name: 'BONE-MATIC ALP', + token: 'BONE-MATIC ALP', + tokenDescription: 'ApeSwap (BoneSwap)', + tokenAddress: '0xbCD83aB205A14648674FE67c97AAD89B261cBaC6', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBoneSwapApeBONE-WMATIC', + earnedTokenAddress: '0x7D59B0cAC35d431fe5B2F3aAED2FB70050B2113D', + earnContractAddress: '0x7D59B0cAC35d431fe5B2F3aAED2FB70050B2113D', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'boneswap-ape-wmatic-bone', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['BONEswap', 'MATIC'], + retireReason: 'rewards', + addLiquidityUrl: + 'https://app.apeswap.finance/add/ETH/0x80244C2441779361F35803b8C711C6c8fC6054a3', + buyTokenUrl: + 'https://app.apeswap.finance/#/swap?outputCurrency=0x80244C2441779361F35803b8C711C6c8fC6054a3', + createdAt: 1625570159, + }, + { + id: 'boneswap-quick-usdc-bone-eol', + name: 'BONE-USDC LP', + token: 'BONE-USDC LP', + tokenDescription: 'Quickswap (BoneSwap)', + tokenAddress: '0xc4DA04f471210063f8C79a09D6152D63085451a5', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooBoneSwapQuickBONE-USDC', + earnedTokenAddress: '0x1001844Cb9Bc3B89a60ce4f4773dBa3B27115230', + earnContractAddress: '0x1001844Cb9Bc3B89a60ce4f4773dBa3B27115230', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'boneswap-quick-usdc-bone', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['BONEswap', 'USDC'], + retireReason: 'rewards', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0x80244C2441779361F35803b8C711C6c8fC6054a3/0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?outputCurrency=0x80244C2441779361F35803b8C711C6c8fC6054a3', + createdAt: 1625571379, + }, + { + id: 'polyyeld-quick-wmatic-yeld-eol', + name: 'YELD-MATIC QLP', + token: 'YELD-MATIC QLP', + tokenDescription: 'Quickswap (Polyyeld)', + tokenAddress: '0xef71F798c15f8C9732488e109BB511144088bECe', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPolyyeldWMATIC-YELD', + earnedTokenAddress: '0xbea5D2Aed651F579fa3e7ADAA2eC51276B2ea420', + earnContractAddress: '0xbea5D2Aed651F579fa3e7ADAA2eC51276B2ea420', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'polyyeld-quick-wmatic-yeld', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['YELD', 'MATIC'], + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0xd0f3121A190d85dE0AB6131f2bCEcdbfcfB38891/0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?inputCurrency=0xd0f3121A190d85dE0AB6131f2bCEcdbfcfB38891&outputCurrency=0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270', + createdAt: 1624239175, + }, + { + id: 'dfyn-route-dfyn-eol', + name: 'ROUTE-DFYN LP', + token: 'ROUTE-DFYN DLP', + tokenDescription: 'DFyn', + tokenAddress: '0xB0dc320ea9eea823a150763AbB4A7bA8286Cd08B', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooDFYNROUTE-DFYN', + earnedTokenAddress: '0xad88D6B731DCb567a3E13407f1E7B0649Bad82D2', + earnContractAddress: '0xad88D6B731DCb567a3E13407f1E7B0649Bad82D2', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'dfyn-route-dfyn', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['ROUTE', 'DFYN'], + retireReason: 'rewards', + addLiquidityUrl: + 'https://exchange.dfyn.network/#/add/0x16ECCfDbb4eE1A85A33f3A9B21175Cd7Ae753dB4/0xC168E40227E4ebD8C1caE80F7a55a4F0e6D66C97', + buyTokenUrl: + 'https://exchange.dfyn.network/#/swap?inputCurrency=0x16ECCfDbb4eE1A85A33f3A9B21175Cd7Ae753dB4&outputCurrency=0xC168E40227E4ebD8C1caE80F7a55a4F0e6D66C97', + createdAt: 1625512841, + }, + { + id: 'dfyn-sx-dfyn-eol', + name: 'SX-DFYN LP', + token: 'SX-DFYN DLP', + tokenDescription: 'DFyn', + tokenAddress: '0x863325397751C51f85818A7958a7Dd45209bf501', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooDFYNSX-DFYN', + earnedTokenAddress: '0x970283Df294f9cedD2187bf84782AB75617Be31c', + earnContractAddress: '0x970283Df294f9cedD2187bf84782AB75617Be31c', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'dfyn-sx-dfyn', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Other', + assets: ['SX', 'DFYN'], + addLiquidityUrl: + 'https://exchange.dfyn.network/#/add/0x840195888Db4D6A99ED9F73FcD3B225Bb3cB1A79/0xC168E40227E4ebD8C1caE80F7a55a4F0e6D66C97', + buyTokenUrl: + 'https://exchange.dfyn.network/#/swap?inputCurrency=0x840195888Db4D6A99ED9F73FcD3B225Bb3cB1A79&outputCurrency=0xC168E40227E4ebD8C1caE80F7a55a4F0e6D66C97', + createdAt: 1625512471, + }, + { + id: 'dfyn-ez-dfyn-eol', + name: 'EZ-DFYN LP', + token: 'EZ-DFYN DLP', + tokenDescription: 'DFyn', + tokenAddress: '0x3a89F0B87E6249Cc44A9420EfBe96ed6173aD0Dc', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooDFYNEZ-DFYN', + earnedTokenAddress: '0x0E765383bea3a166A87a042132422f5F29fDb217', + earnContractAddress: '0x0E765383bea3a166A87a042132422f5F29fDb217', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'dfyn-ez-dfyn', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Other', + assets: ['EZ', 'DFYN'], + addLiquidityUrl: + 'https://exchange.dfyn.network/#/add/0x34C1b299A74588D6Abdc1b85A53345A48428a521/0xC168E40227E4ebD8C1caE80F7a55a4F0e6D66C97', + buyTokenUrl: + 'https://exchange.dfyn.network/#/swap?inputCurrency=0x34C1b299A74588D6Abdc1b85A53345A48428a521&outputCurrency=0xC168E40227E4ebD8C1caE80F7a55a4F0e6D66C97', + createdAt: 1625512895, + }, + { + id: 'dfyn-uft-dfyn-eol', + name: 'UFT-DFYN LP', + token: 'UFT-DFYN DLP', + tokenDescription: 'DFyn', + tokenAddress: '0x8f07eaC653cd812b3Ac691729CD16616E232de68', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooDFYNUFT-DFYN', + earnedTokenAddress: '0xD239D193809b04fD24CB0Cd56A99A3F9dB069C9d', + earnContractAddress: '0xD239D193809b04fD24CB0Cd56A99A3F9dB069C9d', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'dfyn-uft-dfyn', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['UFT', 'DFYN'], + addLiquidityUrl: + 'https://exchange.dfyn.network/#/add/0x5B4CF2C120A9702225814E18543ee658c5f8631e/0xC168E40227E4ebD8C1caE80F7a55a4F0e6D66C97', + buyTokenUrl: + 'https://exchange.dfyn.network/#/swap?inputCurrency=0x5B4CF2C120A9702225814E18543ee658c5f8631e&outputCurrency=0xC168E40227E4ebD8C1caE80F7a55a4F0e6D66C97', + createdAt: 1625513153, + }, + { + id: 'polycat-dfyn-fish-matic-eol', + logo: 'polygon/FISH-MATIC.svg', + name: 'FISH-MATIC LP', + token: 'FISH-MATIC DLP', + tokenDescription: 'DFyn', + tokenAddress: '0x9e2Fbb31fBd68472f6cd54A1635b8cd64d78FC1C', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPolycatDfynFISH-MATIC', + earnedTokenAddress: '0x9f3B96a2Dd55aa904bC5476Ffe66E74a53f6b420', + earnContractAddress: '0x9f3B96a2Dd55aa904bC5476Ffe66E74a53f6b420', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'polycat-dfyn-fish-matic', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['FISH', 'MATIC'], + addLiquidityUrl: + 'https://exchange.dfyn.network/#/add/0x3a3df212b7aa91aa0402b9035b098891d276572b/ETH', + buyTokenUrl: + 'https://exchange.dfyn.network/#/swap?inputCurrency=0x3a3df212b7aa91aa0402b9035b098891d276572b&outputCurrency=ETH', + createdAt: 1625170837, + }, + { + id: 'polypup-bone-eol', + logo: 'single-assets/BONE.png', + name: 'BONE', + token: 'BONE', + tokenDescription: 'Polypup', + tokenAddress: '0x6bb45cEAC714c52342Ef73ec663479da35934bf7', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPolypupBONE', + earnedTokenAddress: '0x8Fa291074B9E28055fFdBCd4C1C1Dad67B9a130A', + earnContractAddress: '0x8Fa291074B9E28055fFdBCd4C1C1Dad67B9a130A', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'BONE', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['BONE'], + retireReason: 'rewards', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?outputCurrency=0x6bb45cEAC714c52342Ef73ec663479da35934bf7', + createdAt: 1625093994, + }, + { + id: 'polypup-pup-eol', + logo: 'single-assets/PUP.png', + name: 'PUP', + token: 'PUP', + tokenDescription: 'Polypup', + tokenAddress: '0xcFe2cF35D2bDDE84967e67d00aD74237e234CE59', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPolypupPUP', + earnedTokenAddress: '0xBe1C35d3349555Ba9eEa38AB1A21a6Db0Bb0fCdD', + earnContractAddress: '0xBe1C35d3349555Ba9eEa38AB1A21a6Db0Bb0fCdD', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'PUP', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['PUP'], + retireReason: 'rewards', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?outputCurrency=0xcFe2cF35D2bDDE84967e67d00aD74237e234CE59', + createdAt: 1624640068, + }, + { + id: 'polypup-wmatic-bone-eol', + name: 'BONE-MATIC QLP', + token: 'BONE-MATIC QLP', + tokenDescription: 'Polypup', + tokenAddress: '0xeb168C9D678dC34D64337F4eA12cf14ed6fbE34B', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPolypupWMATIC-BONE', + earnedTokenAddress: '0x6C433f102A6b8582a43222e335C73873538161b7', + earnContractAddress: '0x6C433f102A6b8582a43222e335C73873538161b7', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'polypup-wmatic-bone', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['BONE', 'MATIC'], + retireReason: 'rewards', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270/0x6bb45cEAC714c52342Ef73ec663479da35934bf7', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?inputCurrency=0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270&outputCurrency=0x6bb45cEAC714c52342Ef73ec663479da35934bf7', + createdAt: 1625079217, + }, + { + id: 'polypup-usdc-pup-eol', + name: 'PUP-USDC QLP', + token: 'PUP-USDC QLP', + tokenDescription: 'Polypup', + tokenAddress: '0x767f8BD67a5f133BdDF3b285c5E2FD3D157A2cdC', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPolypupUSDC-PUP', + earnedTokenAddress: '0xB1893a79fcCe73aEfc878e5AC918698Ee0110444', + earnContractAddress: '0xB1893a79fcCe73aEfc878e5AC918698Ee0110444', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'polypup-usdc-pup', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['PUP', 'USDC'], + retireReason: 'rewards', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174/0xcFe2cF35D2bDDE84967e67d00aD74237e234CE59', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?inputCurrency=0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174&outputCurrency=0xcFe2cF35D2bDDE84967e67d00aD74237e234CE59', + createdAt: 1625082947, + }, + { + id: 'polypup-wmatic-pup-eol', + name: 'PUP-MATIC QLP', + token: 'PUP-MATIC QLP', + tokenDescription: 'Polypup', + tokenAddress: '0xBC68d2A5920c4ffaEa20E2BE48a0E09055481976', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPolypupWMATIC-PUP', + earnedTokenAddress: '0x37884333d34eeE3EAe83439CE4608E69E7081116', + earnContractAddress: '0x37884333d34eeE3EAe83439CE4608E69E7081116', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'polypup-wmatic-pup', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['PUP', 'MATIC'], + retireReason: 'rewards', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270/0xcFe2cF35D2bDDE84967e67d00aD74237e234CE59', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?inputCurrency=0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270&outputCurrency=0xcFe2cF35D2bDDE84967e67d00aD74237e234CE59', + createdAt: 1624581505, + }, + { + id: 'ape-matic-usdt', + name: 'MATIC-USDT ALP', + token: 'MATIC-USDT ALP', + tokenDescription: 'ApeSwap', + tokenAddress: '0x65D43B64E3B31965Cd5EA367D4c2b94c03084797', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooApeSwapMATIC-USDT', + earnedTokenAddress: '0x1BE356364a1e849af2F7a513Fc46dAB6063Db485', + earnContractAddress: '0x1BE356364a1e849af2F7a513Fc46dAB6063Db485', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'ape-matic-usdt', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'ApeSwap', + assets: ['MATIC', 'USDT'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.apeswap.finance/add/ETH/0xc2132D05D31c914a87C6611C10748AEb04B58e8F', + buyTokenUrl: + 'https://app.apeswap.finance/#/swap?outputCurrency=0xc2132D05D31c914a87C6611C10748AEb04B58e8F', + createdAt: 1624811048, + }, + { + id: 'ape-matic-dai', + name: 'MATIC-DAI ALP', + token: 'MATIC-DAI ALP', + tokenDescription: 'ApeSwap', + tokenAddress: '0xd32f3139A214034A0f9777c87eE0a064c1FF6AE2', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooApeSwapMATIC-DAI', + earnedTokenAddress: '0x584611DA226b4d4C0c4D880E6f1E0c0E8522f3AE', + earnContractAddress: '0x584611DA226b4d4C0c4D880E6f1E0c0E8522f3AE', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'ape-matic-dai', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'ApeSwap', + assets: ['MATIC', 'DAI'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + 'OVER_COLLAT_ALGO_STABLECOIN', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.apeswap.finance/add/ETH/0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063', + buyTokenUrl: + 'https://app.apeswap.finance/#/swap?outputCurrency=0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063', + createdAt: 1624810792, + }, + { + id: 'polypup-weth-pup-eol', + name: 'PUP-ETH QLP', + token: 'PUP-ETH QLP', + tokenDescription: 'Polypup', + tokenAddress: '0x0d6fF4e5a446C3e7ae84C838bbF5e3b6b2E26093', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPolypupWETH-PUP', + earnedTokenAddress: '0x4D42bD06425179e53498D364427Af4Bf50d27658', + earnContractAddress: '0x4D42bD06425179e53498D364427Af4Bf50d27658', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'polypup-weth-pup-eol', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['PUP', 'ETH'], + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619/0xcFe2cF35D2bDDE84967e67d00aD74237e234CE59', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?inputCurrency=0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619&outputCurrency=0xcFe2cF35D2bDDE84967e67d00aD74237e234CE59', + createdAt: 1624580199, + }, + { + id: 'quick-eth-ramp-eol', + name: 'RAMP-ETH LP', + token: 'RAMP-ETH QLP', + tokenDescription: 'QuickSwap', + tokenAddress: '0xe55739E1fEb9F9aED4Ce34830a06cA6Cc37494A0', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooQuickETH-RAMP', + earnedTokenAddress: '0x94242E121F056FA7F0892452e6a17678124981c1', + earnContractAddress: '0x94242E121F056FA7F0892452e6a17678124981c1', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'quick-eth-ramp', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'QuickSwap', + assets: ['RAMP', 'ETH'], + retireReason: 'tvl', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0xaECeBfcF604AD245Eaf0D5BD68459C3a7A6399c2/0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?inputCurrency=0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619&outputCurrency=0xaECeBfcF604AD245Eaf0D5BD68459C3a7A6399c2', + createdAt: 1624595881, + }, + { + id: 'quick-usdc-rusd-eol', + name: 'rUSD-USDC LP', + token: 'rUSD-USDC QLP', + tokenDescription: 'QuickSwap', + tokenAddress: '0x5EF8747d1dc4839e92283794a10d448357973aC0', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooQuickUSDC-rUSD', + earnedTokenAddress: '0x2b17aD11c5e9553c79a18F33Df4dE565eF0ad5b0', + earnContractAddress: '0x2b17aD11c5e9553c79a18F33Df4dE565eF0ad5b0', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'quick-usdc-rusd', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'QuickSwap', + assets: ['rUSD', 'USDC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_MICRO', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0.01%', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0xfC40a4F89b410a1b855b5e205064a38fC29F5eb5/0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?inputCurrency=0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174&outputCurrency=0xfC40a4F89b410a1b855b5e205064a38fC29F5eb5', + createdAt: 1624637764, + }, + { + id: 'polyyeld-ape-wmatic-yeld-eol', + name: 'YELD-MATIC ALP', + token: 'YELD-MATIC ALP', + tokenDescription: 'ApeSwap (Polyyeld)', + tokenAddress: '0xC1Dd63cA154837AC4356D888F7c10fbBe442407e', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPolyyeldApeWMATIC-YELD', + earnedTokenAddress: '0xd73AEF83c08264C5600C3a17f009B6f8c0226221', + earnContractAddress: '0xd73AEF83c08264C5600C3a17f009B6f8c0226221', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'polyyeld-ape-wmatic-yeld', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['YELD', 'MATIC'], + addLiquidityUrl: + 'https://app.apeswap.finance/add/0xd0f3121A190d85dE0AB6131f2bCEcdbfcfB38891/0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270', + buyTokenUrl: + 'https://app.apeswap.finance/#/swap?inputCurrency=0xd0f3121A190d85dE0AB6131f2bCEcdbfcfB38891&outputCurrency=0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270', + createdAt: 1624588799, + }, + { + id: 'sushi-wbtc-ibbtc', + name: 'ibBTC-WBTC SLP', + token: 'ibBTC-WBTC SLP', + tokenDescription: 'SushiSwap', + tokenAddress: '0x8F8e95Ff4B4c5E354ccB005c6B0278492D7B5907', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSushiWBTC-ibBTC', + earnedTokenAddress: '0xD35B3733c2ceaf3635bE246B2c6C42f10e5b6B78', + earnContractAddress: '0xD35B3733c2ceaf3635bE246B2c6C42f10e5b6B78', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'sushi-wbtc-ibbtc', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SushiSwap', + assets: ['ibBTC', 'WBTC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.sushi.com/add/0x1BFD67037B42Cf73acF2047067bd4F2C47D9BfD6/0x4EaC4c4e9050464067D673102F8E24b2FccEB350', + buyTokenUrl: + 'https://app.sushi.com/#/swap?inputCurrency=0x1BFD67037B42Cf73acF2047067bd4F2C47D9BfD6&outputCurrency=0x4EaC4c4e9050464067D673102F8E24b2FccEB350', + createdAt: 1624343679, + }, + { + id: 'ape-eth-matic', + name: 'ETH-MATIC ALP', + token: 'ETH-MATIC ALP', + tokenDescription: 'ApeSwap', + tokenAddress: '0x6Cf8654e85AB489cA7e70189046D507ebA233613', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooApeSwapMATIC-ETH', + earnedTokenAddress: '0xc24Cf5fA29E619f2D5ccbEC46F2295876c3722ff', + earnContractAddress: '0xc24Cf5fA29E619f2D5ccbEC46F2295876c3722ff', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'ape-eth-matic', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'ApeSwap', + assets: ['ETH', 'MATIC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.apeswap.finance/add/ETH/0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619', + buyTokenUrl: + 'https://app.apeswap.finance/#/swap?outputCurrency=0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619', + createdAt: 1624378113, + }, + { + id: 'ape-btc-matic', + name: 'BTC-MATIC ALP', + token: 'BTC-MATIC ALP', + tokenDescription: 'ApeSwap', + tokenAddress: '0xe82635a105c520fd58e597181cBf754961d51E3e', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooApeSwapMATIC-BTC', + earnedTokenAddress: '0x76F0e4a08c1e85d020dfD7C66B991ecd4A7551AF', + earnContractAddress: '0x76F0e4a08c1e85d020dfD7C66B991ecd4A7551AF', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'ape-btc-matic', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'ApeSwap', + assets: ['WBTC', 'MATIC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.apeswap.finance/add/ETH/0x1BFD67037B42Cf73acF2047067bd4F2C47D9BfD6', + buyTokenUrl: + 'https://app.apeswap.finance/#/swap?outputCurrency=0x1BFD67037B42Cf73acF2047067bd4F2C47D9BfD6', + createdAt: 1624376861, + }, + { + id: 'ape-bnb-matic', + name: 'BNB-MATIC ALP', + token: 'BNB-MATIC ALP', + tokenDescription: 'ApeSwap', + tokenAddress: '0x0359001070cF696D5993E0697335157a6f7dB289', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooApeSwapMATIC-BNB', + earnedTokenAddress: '0x6888f67662d1f442C4428129e0Bdb27a275e0a65', + earnContractAddress: '0x6888f67662d1f442C4428129e0Bdb27a275e0a65', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'ape-bnb-matic', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'ApeSwap', + assets: ['BNB', 'MATIC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.apeswap.finance/add/ETH/0xA649325Aa7C5093d12D6F98EB4378deAe68CE23F', + buyTokenUrl: + 'https://app.apeswap.finance/#/swap?outputCurrency=0xA649325Aa7C5093d12D6F98EB4378deAe68CE23F', + createdAt: 1624375449, + }, + { + id: 'polyyeld-sushi-wmatic-yeld-eol', + name: 'YELD-MATIC SLP', + token: 'YELD-MATIC SLP', + tokenDescription: 'SushiSwap (Polyyeld)', + tokenAddress: '0xdD650C8d274474FF1af1152B3B27f2702AcA8a98', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPolyyeldSushiWMATIC-YELD', + earnedTokenAddress: '0x0Ca850eEfE051ED244846A2939e218ec6D44a0b2', + earnContractAddress: '0x0Ca850eEfE051ED244846A2939e218ec6D44a0b2', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'polyyeld-sushi-wmatic-yeld', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['YELD', 'MATIC'], + addLiquidityUrl: + 'https://app.sushi.com/add/0xd0f3121A190d85dE0AB6131f2bCEcdbfcfB38891/0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270', + buyTokenUrl: + 'https://app.sushi.com/#/swap?inputCurrency=0xd0f3121A190d85dE0AB6131f2bCEcdbfcfB38891&outputCurrency=0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270', + createdAt: 1624375717, + }, + { + id: 'polyyeld-quick-usdc-yeld-eol', + name: 'YELD-USDC QLP', + token: 'YELD-USDC QLP', + tokenDescription: 'Quickswap (Polyyeld)', + tokenAddress: '0xAD8f4c66b28756458Fc419AA67aD2207A21A6997', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPolyyeldUSDC-YELD', + earnedTokenAddress: '0x9a8390F3F74E7f367B5f948dd04495B67a54a5F4', + earnContractAddress: '0x9a8390F3F74E7f367B5f948dd04495B67a54a5F4', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'polyyeld-quick-usdc-yeld', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['USDC', 'YELD'], + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0xd0f3121A190d85dE0AB6131f2bCEcdbfcfB38891/0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?inputCurrency=0xd0f3121A190d85dE0AB6131f2bCEcdbfcfB38891&outputCurrency=0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174', + createdAt: 1624239489, + }, + { + id: 'quick-pbnb-quick-eol', + name: 'pBNB-QUICK QLP', + token: 'pBNB-QUICK QLP', + tokenDescription: 'QuickSwap', + tokenAddress: '0x53e27DaDf6473d062717be8807C453Af212c7102', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooQuickPBNB-QUICK', + earnedTokenAddress: '0x1A90Ea15e00a6c647478e86e3A3DB1aC1eB23cE5', + earnContractAddress: '0x1A90Ea15e00a6c647478e86e3A3DB1aC1eB23cE5', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'quick-pbnb-quick', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'QuickSwap', + assets: ['PBNB', 'QUICK'], + retireReason: 'rewards', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0xE55cb144E02Cffb6fBD65d9a4BD62378998Bc267/0x831753DD7087CaC61aB5644b308642cc1c33Dc13', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?inputCurrency=0xE55cb144E02Cffb6fBD65d9a4BD62378998Bc267&outputCurrency=0x831753DD7087CaC61aB5644b308642cc1c33Dc13', + createdAt: 1624037936, + }, + { + id: 'quick-usdc-pbnb-eol', + name: 'pBNB-USDC QLP', + token: 'pBNB-USDC QLP', + tokenDescription: 'QuickSwap', + tokenAddress: '0xE55cb144E02Cffb6fBD65d9a4BD62378998Bc267', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooQuickUSDC-PBNB', + earnedTokenAddress: '0x61f55dc5243398D57acd5d6265e228da65C4Cb52', + earnContractAddress: '0x61f55dc5243398D57acd5d6265e228da65C4Cb52', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'quick-usdc-pbnb', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'QuickSwap', + assets: ['USDC', 'PBNB'], + retireReason: 'rewards', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0xE55cb144E02Cffb6fBD65d9a4BD62378998Bc267/0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?inputCurrency=0xE55cb144E02Cffb6fBD65d9a4BD62378998Bc267&outputCurrency=0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174', + createdAt: 1623985582, + }, + { + id: 'quick-dai-usdt-eol', + name: 'DAI-USDT LP', + token: 'DAI-USDT QLP', + tokenDescription: 'QuickSwap', + tokenAddress: '0x59153f27eeFE07E5eCE4f9304EBBa1DA6F53CA88', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooQuickDAI-USDT', + earnedTokenAddress: '0x8F1F1FB23A208041e1f4Bf4A3b4E165bcCA25Bbb', + earnContractAddress: '0x8F1F1FB23A208041e1f4Bf4A3b4E165bcCA25Bbb', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'quick-dai-usdt', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'QuickSwap', + assets: ['DAI', 'USDT'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + 'OVER_COLLAT_ALGO_STABLECOIN', + ], + stratType: 'StratLP', + withdrawalFee: '0.01%', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063/0xc2132D05D31c914a87C6611C10748AEb04B58e8F', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?inputCurrency=0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063&outputCurrency=0xc2132D05D31c914a87C6611C10748AEb04B58e8F', + createdAt: 1623912540, + }, + { + id: 'quick-eth-fff-eol', + name: 'FFF-ETH LP', + token: 'FFF-ETH QLP', + tokenDescription: 'QuickSwap', + tokenAddress: '0x4935270Aa19bA0B88Fe99eA9FeB10519feAfA758', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooQuickETH-FFF', + earnedTokenAddress: '0xa5b0E0f38BC86723a9893B828a4B9595ecb22F42', + earnContractAddress: '0xa5b0E0f38BC86723a9893B828a4B9595ecb22F42', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'quick-eth-fff', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'QuickSwap', + assets: ['FFF', 'ETH'], + retireReason: 'rewards', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619/0x9aceb6f749396d1930abc9e263efc449e5e82c13', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?outputCurrency=0x9aceb6f749396d1930abc9e263efc449e5e82c13', + createdAt: 1623786134, + }, + { + id: 'wexpoly-wbtc-usdc-eol', + name: 'WBTC-USDC LP', + token: 'WBTC-USDC WLP', + tokenDescription: 'WaultFinance', + tokenAddress: '0x30eEf213D4B9C809f5776Ae56cC39f02f19F742f', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooWexPolyWBTC-USDC', + earnedTokenAddress: '0x5c7fd860fC0072cFef2Cc4aB17CC7fF25B639d8b', + earnContractAddress: '0x5c7fd860fC0072cFef2Cc4aB17CC7fF25B639d8b', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'wexpoly-wbtc-usdc', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Other', + assets: ['WBTC', 'USDC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://swap.wault.finance/polygon/#/add/0x1BFD67037B42Cf73acF2047067bd4F2C47D9BfD6/0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174', + createdAt: 1623864761, + }, + { + id: 'wexpoly-wbtc-eth-eol', + name: 'WBTC-ETH LP', + token: 'WBTC-ETH WLP', + tokenDescription: 'WaultFinance', + tokenAddress: '0x30AdBCAb9Fbb4436109fcf3058D1Af27E6E33F3F', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooWexPolyWBTC-ETH', + earnedTokenAddress: '0x75A59e8d6611e90e7A8e439Cb59D9f78e738d16F', + earnContractAddress: '0x75A59e8d6611e90e7A8e439Cb59D9f78e738d16F', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'wexpoly-wbtc-eth', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Other', + assets: ['WBTC', 'ETH'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://swap.wault.finance/polygon/#/add/0x1BFD67037B42Cf73acF2047067bd4F2C47D9BfD6/0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619', + createdAt: 1623864893, + }, + { + id: 'wexpoly-matic-eth-eol', + logo: 'polygon/ETH-MATIC.png', + name: 'MATIC-ETH LP', + token: 'MATIC-ETH WLP', + tokenDescription: 'WaultFinance', + tokenAddress: '0x679B8Ab80F298bF802fB294137765C6386D43dcA', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooWexPolyMATIC-ETH', + earnedTokenAddress: '0xCB171DF46CA6FF7AfEF6c4935128204435E4F05C', + earnContractAddress: '0xCB171DF46CA6FF7AfEF6c4935128204435E4F05C', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'wexpoly-matic-eth', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Other', + assets: ['MATIC', 'ETH'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://swap.wault.finance/polygon/#/add/MATIC/0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619', + createdAt: 1623848947, + }, + { + id: 'wexpoly-polydoge-matic-eol', + name: 'POLYDOGE-MATIC LP', + token: 'POLYDOGE-MATIC WLP', + tokenDescription: 'WaultFinance', + tokenAddress: '0x1a881D021d346C5433B2cf8FB46Ee00Dec89070d', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'MooWexPolyPOLYDOGE-MATIC', + earnedTokenAddress: '0xdf4E615e05713f9Be712bb999B3190Fd238bb77A', + earnContractAddress: '0xdf4E615e05713f9Be712bb999B3190Fd238bb77A', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'wexpoly-polydoge-matic', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Other', + assets: ['PolyDoge', 'MATIC'], + addLiquidityUrl: + 'https://swap.wault.finance/polygon/#/add/MATIC/0x8A953CfE442c5E8855cc6c61b1293FA648BAE472', + createdAt: 1624043620, + }, + { + id: 'wexpoly-snx-eth-eol', + name: 'SNX-ETH LP', + token: 'SNX-ETH WLP', + tokenDescription: 'WaultFinance', + tokenAddress: '0x2857Ec555c1E4fA20982AcBf985b8b8807157A5B', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'MooWexPolySNX-ETH', + earnedTokenAddress: '0xf7e1226F6f98D1981e88Da328347F0E2131A2864', + earnContractAddress: '0xf7e1226F6f98D1981e88Da328347F0E2131A2864', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'wexpoly-snx-eth', + oraclePrice: 0, + depositsPaused: false, + status: 'eol', + retireReason: 'rewards', + platform: 'Other', + assets: ['SNX', 'ETH'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_MEDIUM', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://swap.wault.finance/polygon/#/add/0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619/0x50B728D8D964fd00C2d0AAD81718b71311feF68a', + createdAt: 1624054007, + }, + { + id: 'wexpoly-link-eth-eol', + name: 'LINK-ETH LP', + token: 'LINK-ETH WLP', + tokenDescription: 'WaultFinance', + tokenAddress: '0x70bF5ffCC6090A8D243FD05485Ec4c084BD10Ae5', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'MooWexPolyLINK-ETH', + earnedTokenAddress: '0x23Ee6ED971ae7731F53913D9f8a45C7C1af3D6D5', + earnContractAddress: '0x23Ee6ED971ae7731F53913D9f8a45C7C1af3D6D5', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'wexpoly-link-eth', + oraclePrice: 0, + depositsPaused: false, + status: 'eol', + retireReason: 'rewards', + platform: 'Other', + assets: ['LINK', 'ETH'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://swap.wault.finance/polygon/#/add/0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619/0x53E0bca35eC356BD5ddDFebbD1Fc0fD03FaBad39', + createdAt: 1624055417, + }, + { + id: 'wexpoly-aave-eth-eol', + name: 'AAVE-ETH LP', + token: 'AAVE-ETH WLP', + tokenDescription: 'WaultFinance', + tokenAddress: '0x58401db5eD194cBA60f2b7D59b9619D54e0B493c', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'MooWexPolyAAVE-ETH', + earnedTokenAddress: '0xc4cC677bb8b7E6EEA6409Ee2af9F434BAB004192', + earnContractAddress: '0xc4cC677bb8b7E6EEA6409Ee2af9F434BAB004192', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'wexpoly-aave-eth', + oraclePrice: 0, + depositsPaused: false, + status: 'eol', + retireReason: 'rewards', + platform: 'Other', + assets: ['AAVE', 'ETH'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://swap.wault.finance/polygon/#/add/0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619/0xD6DF932A45C0f255f85145f286eA0b292B21C90B', + createdAt: 1624057500, + }, + { + id: 'wexpoly-dai-eth-eol', + name: 'DAI-ETH LP', + token: 'DAI-ETH WLP', + tokenDescription: 'WaultFinance', + tokenAddress: '0xaEF35d720C56eF3c259BCCdB6931F331c7f15b3F', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'MooWexPolyDAI-ETH', + earnedTokenAddress: '0x3a3a9784Af130d692E19A3f1C1b13eF44301D0f7', + earnContractAddress: '0x3a3a9784Af130d692E19A3f1C1b13eF44301D0f7', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'wexpoly-dai-eth', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Other', + assets: ['DAI', 'ETH'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + 'OVER_COLLAT_ALGO_STABLECOIN', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://swap.wault.finance/polygon/#/add/0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619/0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063', + createdAt: 1624062063, + }, + { + id: 'wexpoly-usdc-dai-eol', + name: 'USDC-DAI LP', + token: 'USDC-DAI WLP', + tokenDescription: 'WaultFinance', + tokenAddress: '0x8E5c5AE2542116b5715b12bb2d391A770a607075', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'MooWexPolyUSDC-DAI', + earnedTokenAddress: '0x5E7156F7c0B5E2005000C38beb38540ba9c283df', + earnContractAddress: '0x5E7156F7c0B5E2005000C38beb38540ba9c283df', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'wexpoly-usdc-dai', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Other', + assets: ['DAI', 'USDC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + 'OVER_COLLAT_ALGO_STABLECOIN', + ], + stratType: 'StratLP', + withdrawalFee: '0.01%', + addLiquidityUrl: + 'https://swap.wault.finance/polygon/#/add/0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174/0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063', + createdAt: 1624058722, + }, + { + id: 'wexpoly-matic-usdc-eol', + logo: 'polygon/MATIC-USDC.png', + name: 'MATIC-USDC LP', + token: 'MATIC-USDC WLP', + tokenDescription: 'WaultFinance', + tokenAddress: '0x8312A29A91D9Fac706F4d2ADEB1FA4540faD1673', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooWexPolyMATIC-USDC', + earnedTokenAddress: '0xeCBb84E73760d0E22BDBeE79490c691386B5008F', + earnContractAddress: '0xeCBb84E73760d0E22BDBeE79490c691386B5008F', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'wexpoly-matic-usdc', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Other', + assets: ['MATIC', 'USDC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://swap.wault.finance/polygon/#/add/MATIC/0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174', + createdAt: 1623849475, + }, + { + id: 'wexpoly-usdc-usdt-eol', + logo: 'polygon/USDC-USDT.png', + name: 'USDC-USDT LP', + token: 'USDC-USDT WLP', + tokenDescription: 'WaultFinance', + tokenAddress: '0x7242e19A0937ac33472febD69462668a4cf5bbC5', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooWexPolyUSDC-USDT', + earnedTokenAddress: '0x58C55B5675B106b440635E2c550A771f4E256D35', + earnContractAddress: '0x58C55B5675B106b440635E2c550A771f4E256D35', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'wexpoly-usdc-usdt', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Other', + assets: ['USDT', 'USDC'], + withdrawalFee: '0.01%', + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://swap.wault.finance/polygon/#/add/0x2791bca1f2de4661ed88a30c99a7a9449aa84174/0xc2132D05D31c914a87C6611C10748AEb04B58e8F', + createdAt: 1623753043, + }, + { + id: 'wexpoly-wex-usdc-eol', + logo: 'polygon/WEX-USDC.png', + name: 'WEXpoly-USDC LP', + token: 'WEXpoly-USDC LP', + tokenDescription: 'WaultFinance', + tokenAddress: '0x5DE6a3CcA10d3F788EEdbD4923e31D4658bf6f9a', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooWexPolyWEX-USDC', + earnedTokenAddress: '0xe3B5a0d5dFDCD6dE7e22a5c2B6b957aB76d2A085', + earnContractAddress: '0xe3B5a0d5dFDCD6dE7e22a5c2B6b957aB76d2A085', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'wexpoly-wex-usdc', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Other', + assets: ['WEXpoly', 'USDC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://swap.wault.finance/polygon/#/add/0x2791bca1f2de4661ed88a30c99a7a9449aa84174/0x4c4BF319237D98a30A929A96112EfFa8DA3510EB', + buyTokenUrl: + 'https://swap.wault.finance/polygon/#/swap?outputCurrency=0x4c4BF319237D98a30A929A96112EfFa8DA3510EB', + createdAt: 1623752473, + }, + { + id: 'wexpoly-wex-eol', + logo: 'polygon/WEX.png', + name: 'WEXpoly', + token: 'WEXpoly', + tokenDescription: 'WaultFinance', + tokenAddress: '0x4c4BF319237D98a30A929A96112EfFa8DA3510EB', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooWexPolyWEXpoly', + earnedTokenAddress: '0x1A1432b90a093CbFFeCb44cf6965e2fd11005373', + earnContractAddress: '0x1A1432b90a093CbFFeCb44cf6965e2fd11005373', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'WEXpoly', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Other', + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_MICRO', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'SingleStake', + assets: ['WEXpoly'], + buyTokenUrl: + 'https://swap.wault.finance/polygon/#/swap?outputCurrency=0x4c4BF319237D98a30A929A96112EfFa8DA3510EB', + createdAt: 1623690831, + }, + { + id: 'wexpoly-wex-matic-eol', + logo: 'polygon/WEX-MATIC.png', + name: 'WEXpoly-MATIC LP', + token: 'WEXpoly-MATIC LP', + tokenDescription: 'WaultFinance', + tokenAddress: '0xC46991072C7eAC184F7bd69d3122cd1750300b27', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooWexPolyWEX-MATIC', + earnedTokenAddress: '0xe09888EEab19bce85e67eDC59521F3f290B1BCcE', + earnContractAddress: '0xe09888EEab19bce85e67eDC59521F3f290B1BCcE', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'wexpoly-wex-matic', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Other', + assets: ['WEXpoly', 'MATIC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://swap.wault.finance/polygon/#/add/0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270/0x4c4BF319237D98a30A929A96112EfFa8DA3510EB', + buyTokenUrl: + 'https://swap.wault.finance/polygon/#/swap?outputCurrency=0x4c4BF319237D98a30A929A96112EfFa8DA3510EB', + createdAt: 1623688343, + }, + { + id: 'wexpoly-bifi-matic-eol', + logo: 'polygon/BIFI-MATIC.png', + name: 'BIFI-MATIC LP', + token: 'BIFI-MATIC LP', + tokenDescription: 'WaultFinance', + tokenAddress: '0xE60afed80406190C3AB2C17501d417097Dd741DB', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooWexPolyBIFI-MATIC', + earnedTokenAddress: '0x247303D4Be227Aa87Bd52F05aDDAD772794DE394', + earnContractAddress: '0x247303D4Be227Aa87Bd52F05aDDAD772794DE394', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'wexpoly-bifi-matic', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Other', + assets: ['BIFI', 'MATIC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://swap.wault.finance/polygon/#/add/0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270/0xFbdd194376de19a88118e84E279b977f165d01b8', + buyTokenUrl: + 'https://swap.wault.finance/polygon/#/swap?outputCurrency=0xFbdd194376de19a88118e84E279b977f165d01b8', + createdAt: 1623689233, + }, + { + id: 'sushi-eth-wfil-eol', + logo: 'polygon/ETH-FIL.png', + name: 'ETH-FIL SLP', + token: 'ETH-FIL SLP', + tokenDescription: 'SushiSwap', + tokenAddress: '0x21Ef14B5580a852477ef31E7Ea9373485bF50377', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSushiETH-WFIL', + earnedTokenAddress: '0xA4fB94990f99A8C1290e83d40DB9C648fD868D14', + earnContractAddress: '0xA4fB94990f99A8C1290e83d40DB9C648fD868D14', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'sushi-eth-wfil', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'SushiSwap', + assets: ['ETH', 'WFIL'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.sushi.com/add/0xEde1B77C0Ccc45BFa949636757cd2cA7eF30137F/0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619', + buyTokenUrl: + 'https://app.sushi.com/#/swap?inputCurrency=0xEde1B77C0Ccc45BFa949636757cd2cA7eF30137F&outputCurrency=0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619', + createdAt: 1623529777, + }, + { + id: 'quick-usdc-dai', + logo: 'polygon/USDC-DAI.png', + name: 'USDC-DAI LP', + token: 'USDC-DAI QLP', + tokenDescription: 'QuickSwap', + tokenAddress: '0xf04adBF75cDFc5eD26eeA4bbbb991DB002036Bdd', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooQuickUSDC-DAI', + earnedTokenAddress: '0x0dFd8c4dd493d8f87Be362878E41537Ca7Ee4d9e', + earnContractAddress: '0x0dFd8c4dd493d8f87Be362878E41537Ca7Ee4d9e', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'quick-usdc-dai', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'QuickSwap', + assets: ['USDC', 'DAI'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + 'OVER_COLLAT_ALGO_STABLECOIN', + ], + stratType: 'StratLP', + withdrawalFee: '0.01%', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174/0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?inputCurrency=0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174&outputCurrency=0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063', + createdAt: 1623516421, + }, + { + id: 'quick-quick-uni-eol', + logo: 'polygon/QUICK-UNI.png', + name: 'QUICK-UNI LP', + token: 'QUICK-UNI QLP', + tokenDescription: 'QuickSwap', + tokenAddress: '0x4B4C614b9219397c02296f6F4e2351259840B3C7', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooQuickQUICK-UNI', + earnedTokenAddress: '0xaF34573353aBd160889889D52d7841B2bBCE7Cf9', + earnContractAddress: '0xaF34573353aBd160889889D52d7841B2bBCE7Cf9', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'quick-quick-uni', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'QuickSwap', + assets: ['QUICK', 'UNI'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0x831753DD7087CaC61aB5644b308642cc1c33Dc13/0xb33EaAd8d922B1083446DC23f610c2567fB5180f', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?inputCurrency=0x831753DD7087CaC61aB5644b308642cc1c33Dc13&outputCurrency=0xb33EaAd8d922B1083446DC23f610c2567fB5180f', + createdAt: 1623516309, + }, + { + id: 'quick-link-quick-eol', + logo: 'polygon/LINK-QUICK.png', + name: 'LINK-QUICK LP', + token: 'LINK-QUICK QLP', + tokenDescription: 'QuickSwap', + tokenAddress: '0xDEA8f0F1E6E98C6AEE891601600E5fBa294B5e36', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooQuickLINK-QUICK', + earnedTokenAddress: '0xdD32ca42a5bab4073D319BC26bb4e951e767Ba6E', + earnContractAddress: '0xdD32ca42a5bab4073D319BC26bb4e951e767Ba6E', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'quick-link-quick', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'QuickSwap', + assets: ['LINK', 'QUICK'], + retireReason: 'rewards', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0x53E0bca35eC356BD5ddDFebbD1Fc0fD03FaBad39/0x831753DD7087CaC61aB5644b308642cc1c33Dc13', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?inputCurrency=0x53E0bca35eC356BD5ddDFebbD1Fc0fD03FaBad39&outputCurrency=0x831753DD7087CaC61aB5644b308642cc1c33Dc13', + createdAt: 1623515927, + }, + { + id: 'polycat-fish-eol', + logo: 'single-assets/FISH.svg', + name: 'FISH', + token: 'FISH', + tokenDescription: 'Polycat', + tokenAddress: '0x3a3Df212b7AA91Aa0402B9035b098891d276572B', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPolycatFish', + earnedTokenAddress: '0xcC16BbE4987920a17F5C4a92C1Ab4dbDfB0B9790', + earnContractAddress: '0xcC16BbE4987920a17F5C4a92C1Ab4dbDfB0B9790', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'FISH', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['FISH'], + withdrawalFee: '0%', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?outputCurrency=0x3a3Df212b7AA91Aa0402B9035b098891d276572B', + createdAt: 1623280369, + }, + { + id: 'quick-usdc-eth', + logo: 'polygon/USDC-ETH.png', + name: 'USDC-ETH LP', + token: 'USDC-ETH QLP', + tokenDescription: 'QuickSwap', + tokenAddress: '0x853Ee4b2A13f8a742d64C8F088bE7bA2131f670d', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooQuickUSDC-ETH', + earnedTokenAddress: '0x5d4B83B3011B1E14e55185c5D432987e76f6DE3C', + earnContractAddress: '0x5d4B83B3011B1E14e55185c5D432987e76f6DE3C', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'quick-usdc-eth', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'QuickSwap', + assets: ['USDC', 'ETH'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0x2791bca1f2de4661ed88a30c99a7a9449aa84174/0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?inputCurrency=0x2791bca1f2de4661ed88a30c99a7a9449aa84174&outputCurrency=0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619', + createdAt: 1622693962, + }, + { + id: 'quick-dai-eth', + logo: 'polygon/ETH-DAI.png', + name: 'DAI-ETH LP', + token: 'DAI-ETH QLP', + tokenDescription: 'QuickSwap', + tokenAddress: '0x4A35582a710E1F4b2030A3F826DA20BfB6703C09', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooQuickDAI-ETH', + earnedTokenAddress: '0x9DA4048550C1a73686E594f726310F0b0585fBA3', + earnContractAddress: '0x9DA4048550C1a73686E594f726310F0b0585fBA3', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'quick-dai-eth', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'QuickSwap', + assets: ['DAI', 'ETH'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + 'OVER_COLLAT_ALGO_STABLECOIN', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619/0x8f3cf7ad23cd3cadbd9735aff958023239c6a063', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?inputCurrency=0x8f3cf7ad23cd3cadbd9735aff958023239c6a063&outputCurrency=0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619', + createdAt: 1622675730, + }, + { + id: 'quick-fff-quick-eol', + logo: 'polygon/FFF-QUICK.png', + name: 'FFF-QUICK LP', + token: 'FFF-QUICK QLP', + tokenDescription: 'QuickSwap', + tokenAddress: '0x2648ec89875d944e38f55925Df77D9Cfe0B01Edd', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooQuickFFF-QUICK', + earnedTokenAddress: '0x2D4cf116A59e24Dd0aB8821c93AE87658a9483b6', + earnContractAddress: '0x2D4cf116A59e24Dd0aB8821c93AE87658a9483b6', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'quick-fff-quick', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'QuickSwap', + assets: ['FFF', 'QUICK'], + retireReason: 'rewards', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0x9aceb6f749396d1930abc9e263efc449e5e82c13/0x831753dd7087cac61ab5644b308642cc1c33dc13', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?outputCurrency=0x9aceb6f749396d1930abc9e263efc449e5e82c13', + createdAt: 1623016533, + }, + { + id: 'aave-wbtc-eol', + logo: 'single-assets/BTCB.svg', + name: 'WBTC', + token: 'WBTC', + tokenDescription: 'Aave', + tokenAddress: '0x1BFD67037B42Cf73acF2047067bd4F2C47D9BfD6', + tokenDecimals: 8, + tokenDescriptionUrl: '#', + earnedToken: 'mooAaveWBTC', + earnedTokenAddress: '0xD3395577febc6AdaB25490a69955ebC47040766C', + earnContractAddress: '0xD3395577febc6AdaB25490a69955ebC47040766C', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'WBTC', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Aave', + retireReason: 'rewards', + assets: ['WBTC'], + risks: [ + 'COMPLEXITY_MID', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'Lending', + withdrawalFee: '0.01%', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?outputCurrency=0x1BFD67037B42Cf73acF2047067bd4F2C47D9BfD6', + createdAt: 1620900077, + }, + { + id: 'aave-eth-eol', + logo: 'single-assets/ETH.svg', + name: 'ETH', + token: 'ETH', + tokenDescription: 'Aave', + tokenAddress: '0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooAaveETH', + earnedTokenAddress: '0x77276a7c9Ff3a6cbD334524d6F1f6219D039ac0E', + earnContractAddress: '0x77276a7c9Ff3a6cbD334524d6F1f6219D039ac0E', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'ETH', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Aave', + retireReason: 'rewards', + assets: ['ETH'], + risks: [ + 'COMPLEXITY_MID', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'Lending', + withdrawalFee: '0.01%', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?outputCurrency=0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619', + createdAt: 1620569907, + }, + { + id: 'quick-titan-eth-eol', + logo: 'polygon/TITAN-ETH.png', + name: 'TITAN-ETH LP', + token: 'TITAN-ETH LP', + tokenDescription: 'QuickSwap', + tokenAddress: '0xA28Ade2f27b9554b01964FDCe97eD643301411d9', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooQuickTITAN-ETH', + earnedTokenAddress: '0x1b27b7083a9BdA1aCD04266F61DF646f8296a872', + earnContractAddress: '0x1b27b7083a9BdA1aCD04266F61DF646f8296a872', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'quick-titan-eth', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['TITAN', 'ETH'], + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0xaAa5B9e6c589642f98a1cDA99B9D024B8407285A/0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?outputCurrency=0xaAa5B9e6c589642f98a1cDA99B9D024B8407285A', + createdAt: 1622729319, + }, + { + id: 'iron-iron-usdc-quick-eol', + logo: 'polygon/IRON-USDC.png', + name: 'IRON-USDC LP', + token: 'IRON-USDC QLP', + tokenDescription: 'QuickSwap', + tokenAddress: '0x2Bbe0F728f4d5821F84eeE0432D2A4be7C0cB7Fc', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooIronQuickIRON-USDC', + earnedTokenAddress: '0xe5D9d4F4C6369E24c8dA4cB07cCb2901845f6021', + earnContractAddress: '0xe5D9d4F4C6369E24c8dA4cB07cCb2901845f6021', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'iron-iron-usdc-quick', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['IRON', 'USDC'], + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0xD86b5923F3AD7b585eD81B448170ae026c65ae9a/0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?outputCurrency=0xD86b5923F3AD7b585eD81B448170ae026c65ae9a', + createdAt: 1622727165, + }, + { + id: 'polycat-sushi-fish-matic-eol', + logo: 'polygon/FISH-MATIC.svg', + name: 'FISH-MATIC LP', + token: 'FISH-MATIC SLP', + tokenDescription: 'SushiSwap', + tokenAddress: '0xcBF6f78981e63Ef813cb71852d72A060b583EECF', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPolycatSushiFISH-MATIC', + earnedTokenAddress: '0xefA8E30cE4cc433cEA1B3b6006D69731A4FBd485', + earnContractAddress: '0xefA8E30cE4cc433cEA1B3b6006D69731A4FBd485', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'polycat-sushi-fish-matic', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['FISH', 'MATIC'], + addLiquidityUrl: + 'https://app.sushi.com/add/0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270/0x3a3df212b7aa91aa0402b9035b098891d276572b', + buyTokenUrl: + 'https://app.sushi.com/swap?inputCurrency=0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270&outputCurrency=0x3a3df212b7aa91aa0402b9035b098891d276572b', + createdAt: 1622658346, + }, + { + id: 'polycat-quick-fish-matic-eol', + logo: 'polygon/FISH-MATIC.svg', + name: 'FISH-MATIC LP', + token: 'FISH-MATIC QLP', + tokenDescription: 'QuickSwap', + tokenAddress: '0x289cf2B63c5Edeeeab89663639674d9233E8668E', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPolycatQuickFISH-MATIC', + earnedTokenAddress: '0x7eE71053102d54Fc843BaEBaf07277C2b6dB64f1', + earnContractAddress: '0x7eE71053102d54Fc843BaEBaf07277C2b6dB64f1', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'polycat-quick-fish-matic', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['FISH', 'MATIC'], + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270/0x3a3Df212b7AA91Aa0402B9035b098891d276572B', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?inputCurrency=0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270&outputCurrency=0x3a3Df212b7AA91Aa0402B9035b098891d276572B', + createdAt: 1622658318, + }, + { + id: 'sushi-grt-eth', + logo: 'polygon/GRT-ETH.png', + name: 'GRT-ETH SLP', + token: 'GRT-ETH SLP', + tokenDescription: 'SushiSwap', + tokenAddress: '0x1cedA73C034218255F50eF8a2c282E6B4c301d60', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSushiGRT-ETH', + earnedTokenAddress: '0x8efCf419813F9E018cCaCda36151e5079c274fa4', + earnContractAddress: '0x8efCf419813F9E018cCaCda36151e5079c274fa4', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'sushi-grt-eth', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SushiSwap', + assets: ['GRT', 'ETH'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.sushi.com/add/0x5fe2B58c013d7601147DcdD68C143A77499f5531/0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619', + buyTokenUrl: + 'https://app.sushi.com/#/swap?inputCurrency=0x5fe2B58c013d7601147DcdD68C143A77499f5531&outputCurrency=0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619', + createdAt: 1622513600, + }, + { + id: 'sushi-frax-fxs-eol', + logo: 'polygon/FRAX-FXS.png', + name: 'FRAX-FXS SLP', + token: 'FRAX-FXS SLP', + tokenDescription: 'SushiSwap', + tokenAddress: '0xd53a56AE0f48c9a03660cd36c2E4ae20493a1Eca', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSushiFRAX-FXS', + earnedTokenAddress: '0xddD5F39d044Dbaeef7b348cf04C3628acd3F1D8f', + earnContractAddress: '0xddD5F39d044Dbaeef7b348cf04C3628acd3F1D8f', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'sushi-frax-fxs', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'SushiSwap', + assets: ['FRAX', 'FXS'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0.01%', + retireReason: 'rewards', + addLiquidityUrl: + 'https://app.sushi.com/add/0x104592a158490a9228070E0A8e5343B499e125D0/0x3e121107F6F22DA4911079845a470757aF4e1A1b', + buyTokenUrl: + 'https://app.sushi.com/#/swap?inputCurrency=0x104592a158490a9228070E0A8e5343B499e125D0&outputCurrency=0x3e121107F6F22DA4911079845a470757aF4e1A1b', + createdAt: 1622513442, + }, + { + id: 'sushi-frax-usdc-eol', + logo: 'polygon/FRAX-USDC.png', + name: 'FRAX-USDC SLP', + token: 'FRAX-USDC SLP', + tokenDescription: 'SushiSwap', + tokenAddress: '0x9e20a8d3501BF96EDA8e69b96DD84840058a1cB0', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSushiFRAX-USDC', + earnedTokenAddress: '0x5B19A2e8E5878cF2b1E9b1AC7CEA50346671B2Fc', + earnContractAddress: '0x5B19A2e8E5878cF2b1E9b1AC7CEA50346671B2Fc', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'sushi-frax-usdc', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'SushiSwap', + assets: ['FRAX', 'USDC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'ALGO_STABLE', + 'MCAP_SMALL', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + retireReason: 'rewards', + addLiquidityUrl: + 'https://app.sushi.com/add/0x104592a158490a9228070E0A8e5343B499e125D0/0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174', + buyTokenUrl: + 'https://app.sushi.com/#/swap?inputCurrency=0x104592a158490a9228070E0A8e5343B499e125D0&outputCurrency=0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174', + createdAt: 1622513282, + }, + { + id: 'sushi-wmatic-woofy-eol', + logo: 'polygon/MATIC-WOOFY.png', + name: 'MATIC-WOOFY SLP', + token: 'MATIC-WOOFY SLP', + tokenDescription: 'SushiSwap', + tokenAddress: '0x211F8e61113eDAf00cf37A804B0bA721875Ef560', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSushiMATIC-WOOFY', + earnedTokenAddress: '0x544551E4E7D7bDd1CfbD55F07e304F5C9fD514Dd', + earnContractAddress: '0x544551E4E7D7bDd1CfbD55F07e304F5C9fD514Dd', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'sushi-wmatic-woofy', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'SushiSwap', + assets: ['WOOFY', 'MATIC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.sushi.com/add/0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270/0xD0660cD418a64a1d44E9214ad8e459324D8157f1', + buyTokenUrl: + 'https://app.sushi.com/#/swap?inputCurrency=0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270&outputCurrency=0xD0660cD418a64a1d44E9214ad8e459324D8157f1', + createdAt: 1622512744, + }, + { + id: 'sushi-usdc-dai', + logo: 'polygon/USDC-DAI.png', + name: 'USDC-DAI SLP', + token: 'USDC-DAI SLP', + tokenDescription: 'SushiSwap', + tokenAddress: '0xCD578F016888B57F1b1e3f887f392F0159E26747', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSushiUSDC-DAI', + earnedTokenAddress: '0x75424BE5378621AeC2eEF25965f40FeB59039B52', + earnContractAddress: '0x75424BE5378621AeC2eEF25965f40FeB59039B52', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'sushi-usdc-dai', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SushiSwap', + assets: ['USDC', 'DAI'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + 'OVER_COLLAT_ALGO_STABLECOIN', + ], + stratType: 'StratLP', + withdrawalFee: '0.01%', + addLiquidityUrl: + 'https://app.sushi.com/add/0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174/0x8f3cf7ad23cd3cadbd9735aff958023239c6a063', + buyTokenUrl: + 'https://app.sushi.com/#/swap?inputCurrency=0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174&outputCurrency=0x8f3cf7ad23cd3cadbd9735aff958023239c6a063', + createdAt: 1622177876, + }, + { + id: 'sushi-snx-eth-eol', + logo: 'polygon/SNX-ETH.png', + name: 'SNX-ETH SLP', + token: 'SNX-ETH SLP', + tokenDescription: 'SushiSwap', + tokenAddress: '0x116Ff0d1Caa91a6b94276b3471f33dbeB52073E7', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSushiSNX-ETH', + earnedTokenAddress: '0x3AD9cd8d75f7a711Caea58e725425A9dC0D249c4', + earnContractAddress: '0x3AD9cd8d75f7a711Caea58e725425A9dC0D249c4', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'sushi-snx-eth', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'SushiSwap', + assets: ['SNX', 'ETH'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_MEDIUM', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.sushi.com/add/0x50B728D8D964fd00C2d0AAD81718b71311feF68a/0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619', + buyTokenUrl: + 'https://app.sushi.com/#/swap?inputCurrency=0x50B728D8D964fd00C2d0AAD81718b71311feF68a&outputCurrency=0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619', + createdAt: 1622508134, + }, + { + id: 'iron-titan-eol', + logo: 'polygon/TITAN.png', + name: 'TITAN', + token: 'TITAN', + tokenDescription: 'IronFinance', + tokenAddress: '0xaAa5B9e6c589642f98a1cDA99B9D024B8407285A', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooIronTITAN', + earnedTokenAddress: '0x8e3e85c7d4A616683f3F9468bC17169774cD1aFC', + earnContractAddress: '0x8e3e85c7d4A616683f3F9468bC17169774cD1aFC', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'TITAN', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['TITAN'], + buyTokenUrl: + 'https://app.sushi.com/#/swap?outputCurrency=0xaAa5B9e6c589642f98a1cDA99B9D024B8407285A', + createdAt: 1622454663, + }, + { + id: 'iron-titan-iron-eol', + logo: 'polygon/TITAN-IRON.png', + name: 'TITAN-IRON LP', + token: 'TITAN-IRON LP', + tokenDescription: 'SushiSwap', + tokenAddress: '0x35c1895DAC1e2432b320e2927b4F71a0D995602F', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooIronTITAN-IRON', + earnedTokenAddress: '0x9525A39b7E642785c10F02287b6A181CE9552f44', + earnContractAddress: '0x9525A39b7E642785c10F02287b6A181CE9552f44', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'iron-titan-iron', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['TITAN', 'IRON'], + addLiquidityUrl: + 'https://app.sushi.com/add/0xaAa5B9e6c589642f98a1cDA99B9D024B8407285A/0xD86b5923F3AD7b585eD81B448170ae026c65ae9a', + buyTokenUrl: + 'https://app.sushi.com/#/swap?inputCurrency=0xaAa5B9e6c589642f98a1cDA99B9D024B8407285A&outputCurrency=0xD86b5923F3AD7b585eD81B448170ae026c65ae9a', + createdAt: 1622452079, + }, + { + id: 'quick-bifi-eth-eol', + logo: 'polygon/BIFI-ETH.png', + name: 'BIFI-ETH LP', + token: 'BIFI-ETH QLP', + tokenDescription: 'QuickSwap', + tokenAddress: '0x8b80417D92571720949fC22404200AB8FAf7775f', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooQuickBIFI-ETH', + earnedTokenAddress: '0x21bA98fCb000dFeD8eC3B94cB41BeA51A601A94c', + earnContractAddress: '0x21bA98fCb000dFeD8eC3B94cB41BeA51A601A94c', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'quick-bifi-eth', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'QuickSwap', + assets: ['BIFI', 'ETH'], + retireReason: 'rewards', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619/0xfbdd194376de19a88118e84e279b977f165d01b8', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?inputCurrency=0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619&outputCurrency=0xfbdd194376de19a88118e84e279b977f165d01b8', + createdAt: 1622053127, + }, + { + id: 'quick-bifi-quick-eol', + logo: 'polygon/BIFI-QUICK.png', + name: 'BIFI-QUICK LP', + token: 'BIFI-QUICK QLP', + tokenDescription: 'QuickSwap', + tokenAddress: '0xC6a23BDd628c3B17fc0dF270e6BF8E48511950e2', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooQuickBIFI-QUICK', + earnedTokenAddress: '0xCC2755476B0573F0ee0D5a754Bb6fE720c3641Bb', + earnContractAddress: '0xCC2755476B0573F0ee0D5a754Bb6fE720c3641Bb', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'quick-bifi-quick', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'QuickSwap', + assets: ['BIFI', 'QUICK'], + retireReason: 'rewards', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0x831753dd7087cac61ab5644b308642cc1c33dc13/0xfbdd194376de19a88118e84e279b977f165d01b8', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?inputCurrency=0x831753dd7087cac61ab5644b308642cc1c33dc13&outputCurrency=0xfbdd194376de19a88118e84e279b977f165d01b8', + createdAt: 1622053085, + }, + { + id: 'quick-degen-quick-eol', + logo: 'polygon/DEGEN-QUICK.png', + name: 'DEGEN-QUICK LP', + token: 'DEGEN-QUICK QLP', + tokenDescription: 'QuickSwap', + tokenAddress: '0x75a4917aeE97BDA48D3572f431e04003743da85e', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooQuickDEGEN-QUICK', + earnedTokenAddress: '0xe942A8Ef245EAC3CEa951486e3Df5764C79b9621', + earnContractAddress: '0xe942A8Ef245EAC3CEa951486e3Df5764C79b9621', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'quick-degen-quick', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'QuickSwap', + assets: ['DEGEN', 'QUICK'], + retireReason: 'rewards', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0x831753dd7087cac61ab5644b308642cc1c33dc13/0x8a2870fb69A90000D6439b7aDfB01d4bA383A415', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?inputCurrency=0x831753dd7087cac61ab5644b308642cc1c33dc13&outputCurrency=0x8a2870fb69A90000D6439b7aDfB01d4bA383A415', + createdAt: 1622087987, + }, + { + id: 'quick-cc10-quick-eol', + logo: 'polygon/CC10-QUICK.png', + name: 'CC10-QUICK LP', + token: 'CC10-QUICK QLP', + tokenDescription: 'QuickSwap', + tokenAddress: '0x42fD10ddc7628b82d80c3b2C286F3e79555Fd7A1', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooQuickCC10-QUICK', + earnedTokenAddress: '0x226a18Fb5eb7d9d1c4Eb1b5Cff957E0F1e3fd9Ed', + earnContractAddress: '0x226a18Fb5eb7d9d1c4Eb1b5Cff957E0F1e3fd9Ed', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'quick-cc10-quick', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'QuickSwap', + assets: ['CC10', 'QUICK'], + retireReason: 'rewards', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0x831753dd7087cac61ab5644b308642cc1c33dc13/0x9c49BA0212Bb5Db371e66b59D1565b7c06E4894e', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?inputCurrency=0x831753dd7087cac61ab5644b308642cc1c33dc13&outputCurrency=0x9c49BA0212Bb5Db371e66b59D1565b7c06E4894e', + createdAt: 1622088077, + }, + { + id: 'quick-defi5-quick-eol', + logo: 'polygon/DEFI5-QUICK.png', + name: 'DEFI5-QUICK LP', + token: 'DEFI5-QUICK QLP', + tokenDescription: 'QuickSwap', + tokenAddress: '0xa975CEEb05B379Cf67FdfA63e7b2770f9F1D72c6', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooQuickDEFI5-QUICK', + earnedTokenAddress: '0x191E0b3B023fd8911c1D7632086A46C0D2dB39ed', + earnContractAddress: '0x191E0b3B023fd8911c1D7632086A46C0D2dB39ed', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'quick-defi5-quick', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'QuickSwap', + assets: ['DEFI5', 'QUICK'], + retireReason: 'rewards', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0x831753dd7087cac61ab5644b308642cc1c33dc13/0x42435F467D33e5C4146a4E8893976ef12BBCE762', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?inputCurrency=0x831753dd7087cac61ab5644b308642cc1c33dc13&outputCurrency=0x42435F467D33e5C4146a4E8893976ef12BBCE762', + createdAt: 1622088167, + }, + { + id: 'quick-btc-usdc', + logo: 'polygon/BTC-USDC.png', + name: 'WBTC-USDC LP', + token: 'WBTC-USDC QLP', + tokenDescription: 'QuickSwap', + tokenAddress: '0xF6a637525402643B0654a54bEAd2Cb9A83C8B498', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooQuickwBTC-USDC', + earnedTokenAddress: '0x91a55E4b057119e20334258f7C5EAB8822491CEb', + earnContractAddress: '0x91a55E4b057119e20334258f7C5EAB8822491CEb', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'quick-btc-usdc', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'QuickSwap', + assets: ['WBTC', 'USDC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0x1BFD67037B42Cf73acF2047067bd4F2C47D9BfD6/0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?inputCurrency=0x1BFD67037B42Cf73acF2047067bd4F2C47D9BfD6&outputCurrency=0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174', + createdAt: 1622047000, + }, + { + id: 'iron-titan-matic-eol', + logo: 'polygon/TITAN-MATIC.png', + name: 'TITAN-MATIC LP', + token: 'TITAN-MATIC LP', + tokenDescription: 'SushiSwap', + tokenAddress: '0xA79983Daf2A92c2C902cD74217Efe3D8AF9Fba2a', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooIronTITAN-MATIC', + earnedTokenAddress: '0xE63aCEbE35265896cC6E8BdB8eCC0640a1807141', + earnContractAddress: '0xE63aCEbE35265896cC6E8BdB8eCC0640a1807141', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'iron-titan-matic', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['TITAN', 'MATIC'], + addLiquidityUrl: 'https://app.sushi.com/add/ETH/0xaAa5B9e6c589642f98a1cDA99B9D024B8407285A', + buyTokenUrl: + 'https://app.sushi.com/#/swap?outputCurrency=0xaAa5B9e6c589642f98a1cDA99B9D024B8407285A', + createdAt: 1622024916, + }, + { + id: 'iron-iron-usdc-eol', + logo: 'polygon/IRON-USDC.png', + name: 'IRON-USDC LP', + token: 'IRON-USDC LP', + tokenDescription: 'SushiSwap', + tokenAddress: '0x85dE135fF062Df790A5f20B79120f17D3da63b2d', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooIronIRON-USDC', + earnedTokenAddress: '0x3e349b83A3E68bdD5BB71fAB63dDE123c478FEA4', + earnContractAddress: '0x3e349b83A3E68bdD5BB71fAB63dDE123c478FEA4', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'iron-iron-usdc', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['IRON', 'USDC'], + addLiquidityUrl: + 'https://app.sushi.com/add/0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174/0xD86b5923F3AD7b585eD81B448170ae026c65ae9a', + buyTokenUrl: + 'https://app.sushi.com/#/swap?outputCurrency=0xD86b5923F3AD7b585eD81B448170ae026c65ae9a', + createdAt: 1622026912, + }, + { + id: 'quick-matic-usdc', + logo: 'polygon/MATIC-USDC.png', + name: 'MATIC-USDC LP', + token: 'MATIC-USDC QLP', + tokenDescription: 'QuickSwap', + tokenAddress: '0x6e7a5FAFcec6BB1e78bAE2A1F0B612012BF14827', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooQuickMATIC-USDC', + earnedTokenAddress: '0xC1A2e8274D390b67A7136708203D71BF3877f158', + earnContractAddress: '0xC1A2e8274D390b67A7136708203D71BF3877f158', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'quick-matic-usdc', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'QuickSwap', + assets: ['MATIC', 'USDC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/ETH/0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?inputCurrency=ETH&outputCurrency=0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174', + createdAt: 1621983287, + }, + { + id: 'quick-vision-eth-eol', + logo: 'polygon/VISION-ETH.png', + name: 'VISION-ETH LP', + token: 'VISION-ETH QLP', + tokenDescription: 'QuickSwap', + tokenAddress: '0x47Be4b1b6921a36591142E108B8C9E04BB55E015', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooQuickVISION-ETH', + earnedTokenAddress: '0xAbA81D550C326DFf2cE0D31bC7Aa6289d576591E', + earnContractAddress: '0xAbA81D550C326DFf2cE0D31bC7Aa6289d576591E', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'quick-vision-eth', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'QuickSwap', + assets: ['VISION', 'ETH'], + retireReason: 'rewards', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619/0x034b2090b579228482520c589dbd397c53fc51cc', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?inputCurrency=0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619&outputCurrency=0x034b2090b579228482520c589dbd397c53fc51cc', + createdAt: 1621961982, + }, + { + id: 'quick-degen-eth-eol', + logo: 'polygon/DEGEN-ETH.png', + name: 'DEGEN-ETH LP', + token: 'DEGEN-ETH QLP', + tokenDescription: 'QuickSwap', + tokenAddress: '0xFdBDb3A2bbdC7d9dC6203DcEf9D53f1735135951', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooQuickDEGEN-ETH', + earnedTokenAddress: '0xF7A5eC9168B4C5688b3ad599Aa5c8E1922fEacAE', + earnContractAddress: '0xF7A5eC9168B4C5688b3ad599Aa5c8E1922fEacAE', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'quick-degen-eth', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'QuickSwap', + assets: ['DEGEN', 'ETH'], + retireReason: 'rewards', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619/0x8a2870fb69A90000D6439b7aDfB01d4bA383A415', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?inputCurrency=0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619&outputCurrency=0x8a2870fb69A90000D6439b7aDfB01d4bA383A415', + createdAt: 1621918051, + }, + { + id: 'quick-cc10-eth-eol', + logo: 'polygon/CC10-ETH.png', + name: 'CC10-ETH LP', + token: 'CC10-ETH QLP', + tokenDescription: 'QuickSwap', + tokenAddress: '0xBF646010B1ae86aD7fBb4cFf5fd93C7019331Cc9', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooQuickCC10-ETH', + earnedTokenAddress: '0x6F6bbbCA49b4b2cE0E27eb0156977048AC3434B9', + earnContractAddress: '0x6F6bbbCA49b4b2cE0E27eb0156977048AC3434B9', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'quick-cc10-eth', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'QuickSwap', + assets: ['CC10', 'ETH'], + retireReason: 'rewards', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619/0x9c49BA0212Bb5Db371e66b59D1565b7c06E4894e', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?inputCurrency=0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619&outputCurrency=0x9c49BA0212Bb5Db371e66b59D1565b7c06E4894e', + createdAt: 1621903565, + }, + { + id: 'pzap-pzap-usdc-eol', + logo: 'polygon/PZAP-USDC.png', + name: 'PZAP-USDC LP', + token: 'PZAP-USDC LP', + tokenDescription: 'Polyzap', + tokenAddress: '0x1df7ADAeD1F7f36C822A3079198815b284aD8475', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPzapPZAP-USDC', + earnedTokenAddress: '0xBA4FA9A5e1e573fA5267970238af5Edf40727315', + earnContractAddress: '0xBA4FA9A5e1e573fA5267970238af5Edf40727315', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'pzap-pzap-usdc', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['PZAP', 'USDC'], + addLiquidityUrl: + 'https://polyzap.app/#/add/0x2791bca1f2de4661ed88a30c99a7a9449aa84174/0xeb2778f74E5ee038E67AA6c77f0F0451ABd748FD', + buyTokenUrl: + 'https://polyzap.app/#/swap?outputCurrency=0xeb2778f74E5ee038E67AA6c77f0F0451ABd748FD', + createdAt: 1621345663, + retireReason: 'tvl', + }, + { + id: 'pzap-pzap-matic-eol', + logo: 'polygon/PZAP-MATIC.png', + name: 'PZAP-MATIC LP', + token: 'PZAP-MATIC LP', + tokenDescription: 'Polyzap', + tokenAddress: '0xf627E14c318045066dAe0A36997c8C1F34fC0D4c', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPzapPZAP-MATIC', + earnedTokenAddress: '0xf2984c27B963A14F9f3B7326096c54fb05d5b9AF', + earnContractAddress: '0xf2984c27B963A14F9f3B7326096c54fb05d5b9AF', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'pzap-pzap-matic', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['PZAP', 'MATIC'], + addLiquidityUrl: 'https://polyzap.app/#/add/ETH/0xeb2778f74E5ee038E67AA6c77f0F0451ABd748FD', + buyTokenUrl: + 'https://polyzap.app/#/swap?outputCurrency=0xeb2778f74E5ee038E67AA6c77f0F0451ABd748FD', + createdAt: 1621425966, + retireReason: 'tvl', + }, + { + id: 'cometh-bifi-eth-eol', + logo: 'polygon/BIFI-ETH.png', + name: 'BIFI-ETH LP', + token: 'BIFI-ETH LP', + tokenDescription: 'Cometh', + tokenAddress: '0xee3987aa1B20944EF4f8f049Cf1763007C06cFBC', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooComethBIFI-ETH', + earnedTokenAddress: '0x9649e6E5c689f21BC27B47CE4177f7c5f7281E20', + earnContractAddress: '0x9649e6E5c689f21BC27B47CE4177f7c5f7281E20', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cometh-bifi-eth', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Cometh', + assets: ['BIFI', 'ETH'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_MEDIUM', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://swap.cometh.io/#/add/0x7ceb23fd6bc0add59e62ac25578270cff1b9f619/0xfbdd194376de19a88118e84e279b977f165d01b8', + buyTokenUrl: + 'https://swap.cometh.io/#/swap?inputCurrency=0x7ceb23fd6bc0add59e62ac25578270cff1b9f619&outputCurrency=0xfbdd194376de19a88118e84e279b977f165d01b8', + createdAt: 1621259977, + }, + { + id: 'cometh-bifi-must-eol', + logo: 'polygon/BIFI-MUST.png', + name: 'BIFI-MUST LP', + token: 'BIFI-MUST LP', + tokenDescription: 'Cometh', + tokenAddress: '0x9292aa90F81dc77fE6e6BB34b276502b6a047F7d', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooComethBIFI-MUST', + earnedTokenAddress: '0x66b3d910c30f2305EA0078E06DF65e0c1745ceF0', + earnContractAddress: '0x66b3d910c30f2305EA0078E06DF65e0c1745ceF0', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cometh-bifi-must', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Cometh', + assets: ['BIFI', 'MUST'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_MICRO', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://swap.cometh.io/#/add/0x9c78ee466d6cb57a4d01fd887d2b5dfb2d46288f/0xfbdd194376de19a88118e84e279b977f165d01b8', + buyTokenUrl: + 'https://swap.cometh.io/#/swap?inputCurrency=0x9c78ee466d6cb57a4d01fd887d2b5dfb2d46288f&outputCurrency=0xfbdd194376de19a88118e84e279b977f165d01b8', + createdAt: 1621260031, + }, + { + id: 'aave-matic-eol', + logo: 'single-assets/MATIC.svg', + name: 'MATIC', + token: 'MATIC', + tokenDescription: 'Aave', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooAaveMATIC', + earnedTokenAddress: '0x1d23ecC0645B07791b7D99349e253ECEbe43f614', + earnContractAddress: '0x1d23ecC0645B07791b7D99349e253ECEbe43f614', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'WMATIC', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Aave', + retireReason: 'rewards', + assets: ['MATIC'], + risks: [ + 'COMPLEXITY_MID', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'Lending', + withdrawalFee: '0.01%', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?outputCurrency=0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270', + createdAt: 1621100435, + }, + { + id: 'aave-aave-eol', + logo: 'single-assets/AAVE.svg', + name: 'AAVE', + token: 'AAVE', + tokenDescription: 'Aave', + tokenAddress: '0xD6DF932A45C0f255f85145f286eA0b292B21C90B', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooAaveAAVE', + earnedTokenAddress: '0xe4b3CCbB1E48c579Ea3D764Fb258Bc908e46487E', + earnContractAddress: '0xe4b3CCbB1E48c579Ea3D764Fb258Bc908e46487E', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'AAVE', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Aave', + retireReason: 'rewards', + assets: ['AAVE'], + risks: [ + 'COMPLEXITY_MID', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'Lending', + withdrawalFee: '0.01%', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?outputCurrency=0xD6DF932A45C0f255f85145f286eA0b292B21C90B', + createdAt: 1621097202, + }, + { + id: 'aave-dai-eol', + logo: 'single-assets/DAI.svg', + name: 'DAI', + token: 'DAI', + tokenDescription: 'Aave', + tokenAddress: '0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooAaveDAI', + earnedTokenAddress: '0x9B36ECeaC46B70ACfB7C2D6F3FD51aEa87C31018', + earnContractAddress: '0x9B36ECeaC46B70ACfB7C2D6F3FD51aEa87C31018', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'DAI', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Aave', + retireReason: 'rewards', + assets: ['DAI'], + risks: [ + 'COMPLEXITY_MID', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + 'OVER_COLLAT_ALGO_STABLECOIN', + ], + stratType: 'Lending', + withdrawalFee: '0.01%', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?outputCurrency=0x8f3cf7ad23cd3cadbd9735aff958023239c6a063', + createdAt: 1620900737, + }, + { + id: 'aave-usdc-eol', + logo: 'single-assets/USDC.svg', + name: 'USDC', + token: 'USDC', + tokenDescription: 'Aave', + tokenAddress: '0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174', + tokenDecimals: 6, + tokenDescriptionUrl: '#', + earnedToken: 'mooAaveUSDC', + earnedTokenAddress: '0xE71f3C11D4535a7F8c5FB03FDA57899B2C9c721F', + earnContractAddress: '0xE71f3C11D4535a7F8c5FB03FDA57899B2C9c721F', + pricePerFullShare: 1, + tvl: 0, + oracle: 'tokens', + oracleId: 'USDC', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Aave', + retireReason: 'rewards', + assets: ['USDC'], + risks: [ + 'COMPLEXITY_MID', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'Lending', + withdrawalFee: '0.01%', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?outputCurrency=0x2791bca1f2de4661ed88a30c99a7a9449aa84174', + createdAt: 1620539520, + }, + { + id: 'sushi-crv-eth', + logo: 'polygon/CRV-ETH.png', + name: 'CRV-ETH LP', + token: 'CRV-ETH SLP', + tokenDescription: 'SushiSwap', + tokenAddress: '0x396E655C309676cAF0acf4607a868e0CDed876dB', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSushiCRV-ETH', + earnedTokenAddress: '0xE695fCeD8fD93eeE54204a7fC33323a60d41865A', + earnContractAddress: '0xE695fCeD8fD93eeE54204a7fC33323a60d41865A', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'sushi-crv-eth', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SushiSwap', + assets: ['CRV', 'ETH'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MEDIUM', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.sushi.com/#/add/0x172370d5cd63279efa6d502dab29171933a610af/0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619', + buyTokenUrl: + 'https://app.sushi.com/#/swap?inputCurrency=0x172370d5cd63279efa6d502dab29171933a610af&outputCurrency=0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619', + createdAt: 1621010827, + }, + { + id: 'sushi-usdc-usdt', + logo: 'polygon/USDC-USDT.png', + name: 'USDC-USDT LP', + token: 'USDC-USDT SLP', + tokenDescription: 'SushiSwap', + tokenAddress: '0x4B1F1e2435A9C96f7330FAea190Ef6A7C8D70001', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSushiUSDC-USDT', + earnedTokenAddress: '0xB6B89a05ad8228b98d0D8a77e1a695c54500db3b', + earnContractAddress: '0xB6B89a05ad8228b98d0D8a77e1a695c54500db3b', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'sushi-usdc-usdt', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SushiSwap', + assets: ['USDC', 'USDT'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + withdrawalFee: '0.01%', + addLiquidityUrl: + 'https://app.sushi.com/#/add/0x2791bca1f2de4661ed88a30c99a7a9449aa84174/0xc2132D05D31c914a87C6611C10748AEb04B58e8F', + buyTokenUrl: + 'https://app.sushi.com/#/swap?inputCurrency=0x2791bca1f2de4661ed88a30c99a7a9449aa84174&outputCurrency=0xc2132D05D31c914a87C6611C10748AEb04B58e8F', + createdAt: 1621012117, + }, + { + id: 'sushi-link-eth', + logo: 'polygon/LINK-ETH.png', + name: 'LINK-ETH LP', + token: 'LINK-ETH SLP', + tokenDescription: 'SushiSwap', + tokenAddress: '0x74D23F21F780CA26B47Db16B0504F2e3832b9321', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSushiLINK-ETH', + earnedTokenAddress: '0xaE65a66B3c7f8cc1ba71cEA740C953aBa0F3Ce8b', + earnContractAddress: '0xaE65a66B3c7f8cc1ba71cEA740C953aBa0F3Ce8b', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'sushi-link-eth', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SushiSwap', + assets: ['LINK', 'ETH'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.sushi.com/#/add/0x53e0bca35ec356bd5dddfebbd1fc0fd03fabad39/0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619', + buyTokenUrl: + 'https://app.sushi.com/#/swap?inputCurrency=0x53e0bca35ec356bd5dddfebbd1fc0fd03fabad39&outputCurrency=0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619', + createdAt: 1621012201, + }, + { + id: 'quick-mocean-matic-eol', + logo: 'polygon/mOCEAN-MATIC.png', + name: 'mOCEAN-MATIC LP', + token: 'mOCEAN-MATIC QLP', + tokenDescription: 'QuickSwap', + tokenAddress: '0x5a94F81D25c73eDdBDD84b84E8F6D36C58270510', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooQuickmOCEAN-MATIC', + earnedTokenAddress: '0x82303a4b2c821204A84AB2a068eC8EDf3Bc23061', + earnContractAddress: '0x82303a4b2c821204A84AB2a068eC8EDf3Bc23061', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'quick-mocean-matic', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'QuickSwap', + assets: ['mOCEAN', 'MATIC'], + retireReason: 'rewards', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270/0x282d8efce846a88b159800bd4130ad77443fa1a1', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?inputCurrency=0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619&outputCurrency=0x1bfd67037b42cf73acf2047067bd4f2c47d9bfd6', + createdAt: 1620755335, + }, + { + id: 'quick-any-quick-eol', + logo: 'polygon/ANY-QUICK.png', + name: 'ANY-QUICK LP', + token: 'ANY-QUICK QLP', + tokenDescription: 'QuickSwap', + tokenAddress: '0xeb275d1d930F157504cca7D7AFCe38360C7302b5', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooQuickANY-QUICK', + earnedTokenAddress: '0x2849095eE44eCd5f60Ed04f94e5BB45623A8e75a', + earnContractAddress: '0x2849095eE44eCd5f60Ed04f94e5BB45623A8e75a', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'quick-any-quick', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'QuickSwap', + assets: ['ANY', 'QUICK'], + retireReason: 'rewards', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0x6ab6d61428fde76768d7b45d8bfeec19c6ef91a8/0x831753dd7087cac61ab5644b308642cc1c33dc13', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?inputCurrency=0x6ab6d61428fde76768d7b45d8bfeec19c6ef91a8&outputCurrency=0x831753dd7087cac61ab5644b308642cc1c33dc13', + createdAt: 1620765461, + }, + { + id: 'quick-frax-quick-eol', + logo: 'polygon/FRAX-QUICK.png', + name: 'FRAX-QUICK LP', + token: 'FRAX-QUICK QLP', + tokenDescription: 'QuickSwap', + tokenAddress: '0x2Aa7a18cEAbf2eF893D2f7c0145cC45e6f10b223', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooQuickFRAX-QUICK', + earnedTokenAddress: '0x442ca31De7E6732455e60e3641Ac076fa7a0905f', + earnContractAddress: '0x442ca31De7E6732455e60e3641Ac076fa7a0905f', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'quick-frax-quick', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'QuickSwap', + assets: ['FRAX', 'QUICK'], + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0x104592a158490a9228070e0a8e5343b499e125d0/0x831753dd7087cac61ab5644b308642cc1c33dc13', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?inputCurrency=0x104592a158490a9228070e0a8e5343b499e125d0&outputCurrency=0x831753dd7087cac61ab5644b308642cc1c33dc13', + createdAt: 1620767599, + }, + { + id: 'sushi-aave-eth', + logo: 'polygon/AAVE-ETH.png', + name: 'AAVE-ETH LP', + token: 'AAVE-ETH SLP', + tokenDescription: 'SushiSwap', + tokenAddress: '0x2813D43463C374a680f235c428FB1D7f08dE0B69', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSushiAAVE-ETH', + earnedTokenAddress: '0x866a910F3375d0dEBDdD904A36B3940aFcD29900', + earnContractAddress: '0x866a910F3375d0dEBDdD904A36B3940aFcD29900', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'sushi-aave-eth', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SushiSwap', + assets: ['AAVE', 'ETH'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.sushi.com/#/add/0xD6DF932A45C0f255f85145f286eA0b292B21C90B/0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619', + buyTokenUrl: + 'https://app.sushi.com/#/swap?inputCurrency=0xD6DF932A45C0f255f85145f286eA0b292B21C90B&outputCurrency=0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619', + createdAt: 1620418656, + }, + { + id: 'polygon-sushi-eth-dai', + logo: 'polygon/ETH-DAI.png', + name: 'ETH-DAI LP', + token: 'ETH-DAI SLP', + tokenDescription: 'SushiSwap', + tokenAddress: '0x6FF62bfb8c12109E8000935A6De54daD83a4f39f', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSushiETH-DAI', + earnedTokenAddress: '0x6b6ca47520dDC9333B8bD09a1e64204648B63274', + earnContractAddress: '0x6b6ca47520dDC9333B8bD09a1e64204648B63274', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'sushi-eth-dai', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SushiSwap', + assets: ['ETH', 'DAI'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + 'OVER_COLLAT_ALGO_STABLECOIN', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.sushi.com/#/add/0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619/0x8f3cf7ad23cd3cadbd9735aff958023239c6a063', + buyTokenUrl: + 'https://app.sushi.com/#/swap?inputCurrency=0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619&outputCurrency=0x8f3cf7ad23cd3cadbd9735aff958023239c6a063', + createdAt: 1620653470, + }, + { + id: 'polygon-sushi-btc-eth', + logo: 'polygon/ETH-BTC.png', + name: 'WBTC-ETH LP', + token: 'WBTC-ETH SLP', + tokenDescription: 'SushiSwap', + tokenAddress: '0xE62Ec2e799305E0D367b0Cc3ee2CdA135bF89816', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSushiBTC-ETH', + earnedTokenAddress: '0x6530E351074f1f9fdf254dC7d7d8A44324E158a4', + earnContractAddress: '0x6530E351074f1f9fdf254dC7d7d8A44324E158a4', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'sushi-btc-eth', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SushiSwap', + assets: ['WBTC', 'ETH'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.sushi.com/#/add/0x1bfd67037b42cf73acf2047067bd4f2c47d9bfd6/0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619', + buyTokenUrl: + 'https://app.sushi.com/#/swap?inputCurrency=0x1bfd67037b42cf73acf2047067bd4f2c47d9bfd6&outputCurrency=0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619', + createdAt: 1620655127, + }, + { + id: 'sushi-eth-usdt', + logo: 'polygon/ETH-USDT.png', + name: 'ETH-USDT LP', + token: 'ETH-USDT SLP', + tokenDescription: 'SushiSwap', + tokenAddress: '0xc2755915a85C6f6c1C0F3a86ac8C058F11Caa9C9', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSushiETH-USDT', + earnedTokenAddress: '0xE8417099971151CD5CfAE264e25634Fac05cA2b3', + earnContractAddress: '0xE8417099971151CD5CfAE264e25634Fac05cA2b3', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'sushi-eth-usdt', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SushiSwap', + assets: ['ETH', 'USDT'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.sushi.com/#/add/0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619/0xc2132D05D31c914a87C6611C10748AEb04B58e8F', + buyTokenUrl: + 'https://app.sushi.com/#/swap?inputCurrency=0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619&outputCurrency=0xc2132D05D31c914a87C6611C10748AEb04B58e8F', + createdAt: 1620655517, + }, + { + id: 'sushi-usdc-eth', + logo: 'polygon/USDC-ETH.png', + name: 'USDC-ETH LP', + token: 'USDC-ETH SLP', + tokenDescription: 'SushiSwap', + tokenAddress: '0x34965ba0ac2451A34a0471F04CCa3F990b8dea27', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSushiUSDC-ETH', + earnedTokenAddress: '0xE4DB97A2AAFbfef40D1a4AE8B709f61d6756F8e1', + earnContractAddress: '0xE4DB97A2AAFbfef40D1a4AE8B709f61d6756F8e1', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'sushi-usdc-eth', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SushiSwap', + assets: ['USDC', 'ETH'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.sushi.com/#/add/0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174/0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619', + buyTokenUrl: + 'https://app.sushi.com/#/swap?inputCurrency=0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174&outputCurrency=0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619', + createdAt: 1620655909, + }, + { + id: 'sushi-matic-eth', + logo: 'polygon/ETH-MATIC.png', + name: 'ETH-MATIC LP', + token: 'MATIC-ETH SLP', + tokenDescription: 'SushiSwap', + tokenAddress: '0xc4e595acDD7d12feC385E5dA5D43160e8A0bAC0E', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooSushiMATIC-ETH', + earnedTokenAddress: '0xC8e809a9180d637Cc23dAf60b41B70CA1ad5Fc08', + earnContractAddress: '0xC8e809a9180d637Cc23dAf60b41B70CA1ad5Fc08', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'sushi-matic-eth', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'SushiSwap', + assets: ['MATIC', 'ETH'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://app.sushi.com/#/add/0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270/0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619', + buyTokenUrl: + 'https://app.sushi.com/#/swap?inputCurrency=0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270&outputCurrency=0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619', + createdAt: 1620656197, + }, + { + id: 'cometh-azuki-eth-eol', + logo: 'polygon/AZUKI-ETH.png', + name: 'AZUKI-ETH LP', + token: 'AZUKI-ETH LP', + tokenDescription: 'Cometh', + tokenAddress: '0x92Bb3233F59561FC1fEC53EfC3339E4Af8E917F4', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooComethAZUKI-ETH', + earnedTokenAddress: '0xe95d14D09a8F6034C582bd993A2F2aA8ecEC72f0', + earnContractAddress: '0xe95d14D09a8F6034C582bd993A2F2aA8ecEC72f0', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cometh-azuki-eth', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Cometh', + assets: ['AZUKI', 'ETH'], + addLiquidityUrl: + 'https://swap.cometh.io/#/add/0x7CdC0421469398e0F3aA8890693d86c840Ac8931/0x7ceb23fd6bc0add59e62ac25578270cff1b9f619', + buyTokenUrl: + 'https://swap.cometh.io/#/swap?inputCurrency=0x7ceb23fd6bc0add59e62ac25578270cff1b9f619&outputCurrency=0x7CdC0421469398e0F3aA8890693d86c840Ac8931', + createdAt: 1620677262, + }, + { + id: 'cometh-doki-eth-eol', + logo: 'polygon/DOKI-ETH.png', + name: 'DOKI-ETH LP', + token: 'DOKI-ETH LP', + tokenDescription: 'Cometh', + tokenAddress: '0xcCeD5cB001D6081c4561bf7911F11Ccd9aAA1474', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooComethDOKI-ETH', + earnedTokenAddress: '0x383489a0A5deA3f1499c638e0258F7e6a68a253f', + earnContractAddress: '0x383489a0A5deA3f1499c638e0258F7e6a68a253f', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cometh-doki-eth', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Cometh', + assets: ['DOKI', 'ETH'], + addLiquidityUrl: + 'https://swap.cometh.io/#/add/0x5C7F7Fe4766fE8f0fa9b41E2E4194d939488ff1C/0x7ceb23fd6bc0add59e62ac25578270cff1b9f619', + buyTokenUrl: + 'https://swap.cometh.io/#/swap?inputCurrency=0x7ceb23fd6bc0add59e62ac25578270cff1b9f619&outputCurrency=0x5C7F7Fe4766fE8f0fa9b41E2E4194d939488ff1C', + createdAt: 1620677292, + }, + { + id: 'quick-usdc-usdt', + logo: 'polygon/USDC-USDT.png', + name: 'USDC-USDT LP', + token: 'USDC-USDT QLP', + tokenDescription: 'QuickSwap', + tokenAddress: '0x2cF7252e74036d1Da831d11089D326296e64a728', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooQuickUSDC-USDT', + earnedTokenAddress: '0x4462817b53E76b722c2D174D0148ddb81452f1dE', + earnContractAddress: '0x4462817b53E76b722c2D174D0148ddb81452f1dE', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'quick-usdc-usdt', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'QuickSwap', + assets: ['USDC', 'USDT'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_NONE', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174/0xc2132D05D31c914a87C6611C10748AEb04B58e8F', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?inputCurrency=0x2791bca1f2de4661ed88a30c99a7a9449aa84174&outputCurrency=0xc2132d05d31c914a87c6611c10748aeb04b58e8f', + createdAt: 1619825239, + }, + { + id: 'cometh-must-eth-eol', + logo: 'polygon/MUST-ETH.png', + name: 'MUST-ETH LP', + token: 'MUST-ETH LP', + tokenDescription: 'Cometh', + tokenAddress: '0x8826C072657983939c26E684edcfb0e4133f0B3d', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooComethMUST-ETH', + earnedTokenAddress: '0x7CE2332fAF6328986C75e3A8fCc1CB79621aeB1F', + earnContractAddress: '0x7CE2332fAF6328986C75e3A8fCc1CB79621aeB1F', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cometh-must-eth', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Cometh', + assets: ['MUST', 'ETH'], + addLiquidityUrl: + 'https://swap.cometh.io/#/add/0x9C78EE466D6Cb57A4d01Fd887D2b5dFb2D46288f/0x7ceb23fd6bc0add59e62ac25578270cff1b9f619', + buyTokenUrl: + 'https://swap.cometh.io/#/swap?inputCurrency=0x7ceb23fd6bc0add59e62ac25578270cff1b9f619&outputCurrency=0x9c78ee466d6cb57a4d01fd887d2b5dfb2d46288f', + createdAt: 1620068910, + }, + { + id: 'quick-eth-btc', + logo: 'polygon/ETH-BTC.png', + name: 'WBTC-ETH LP', + token: 'WBTC-ETH QLP', + tokenDescription: 'QuickSwap', + tokenAddress: '0xdC9232E2Df177d7a12FdFf6EcBAb114E2231198D', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooQuickwBTC-ETH', + earnedTokenAddress: '0xf26607237355D7c6183ea66EC908729E9c6eEB6b', + earnContractAddress: '0xf26607237355D7c6183ea66EC908729E9c6eEB6b', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'quick-eth-btc', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'QuickSwap', + assets: ['WBTC', 'ETH'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0x1bfd67037b42cf73acf2047067bd4f2c47d9bfd6/0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?inputCurrency=0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619&outputCurrency=0x1bfd67037b42cf73acf2047067bd4f2c47d9bfd6', + createdAt: 1619797422, + }, + { + id: 'quick-ubt-eth-eol', + logo: 'polygon/UBT-ETH.png', + name: 'UBT-ETH LP', + token: 'UBT-ETH QLP', + tokenDescription: 'QuickSwap', + tokenAddress: '0xcc203f45A31aE086218170F6A9e9623fA1655486', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooQuickUBT-ETH', + earnedTokenAddress: '0x942aa6324E5D0C102d3Ad6607495ac5e798a991a', + earnContractAddress: '0x942aa6324E5D0C102d3Ad6607495ac5e798a991a', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'quick-ubt-eth', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'QuickSwap', + assets: ['UBT', 'ETH'], + retireReason: 'rewards', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619/0x7FBc10850caE055B27039aF31bD258430e714c62', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?inputCurrency=0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619&outputCurrency=0x7FBc10850caE055B27039aF31bD258430e714c62', + createdAt: 1620048684, + }, + { + id: 'quick-defi5-eth-eol', + logo: 'polygon/DEFI5-ETH.png', + name: 'DEFI5-ETH LP', + token: 'DEFI5-ETH QLP', + tokenDescription: 'QuickSwap', + tokenAddress: '0x654E651b658f784406125400cf648588CB9773e8', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooQuickDEFI5-ETH', + earnedTokenAddress: '0x53e674D5cC969930420d73E4b79Ee0D46cCdf6c4', + earnContractAddress: '0x53e674D5cC969930420d73E4b79Ee0D46cCdf6c4', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'quick-defi5-eth', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'QuickSwap', + assets: ['DEFI5', 'ETH'], + retireReason: 'rewards', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619/0x42435F467D33e5C4146a4E8893976ef12BBCE762', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?inputCurrency=0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619&outputCurrency=0x42435F467D33e5C4146a4E8893976ef12BBCE762', + createdAt: 1620048552, + }, + { + id: 'quick-wise-eth-eol', + logo: 'polygon/WISE-ETH.png', + name: 'WISE-ETH LP', + token: 'WISE-ETH QLP', + tokenDescription: 'QuickSwap', + tokenAddress: '0xDF8139e9BebecAdEcF48BeC8c8064CcEfB618e2b', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooQuickWISE-ETH', + earnedTokenAddress: '0x76cE86B1e1b7a3983B26F7E57B2A0C8896f7eB0D', + earnContractAddress: '0x76cE86B1e1b7a3983B26F7E57B2A0C8896f7eB0D', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'quick-wise-eth', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'QuickSwap', + assets: ['WISE', 'ETH'], + retireReason: 'rewards', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619/0xB77e62709e39aD1cbeEBE77cF493745AeC0F453a', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?inputCurrency=0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619&outputCurrency=0xB77e62709e39aD1cbeEBE77cF493745AeC0F453a', + createdAt: 1620048454, + }, + { + id: 'quick-cel-eth-eol', + logo: 'polygon/CEL-ETH.png', + name: 'CEL-ETH LP', + token: 'CEL-ETH QLP', + tokenDescription: 'QuickSwap', + tokenAddress: '0xEAA5E4620373d9Ded4DCB9267F46fcfc6698c867', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooQuickCEL-ETH', + earnedTokenAddress: '0xeF1870FddC25586636bf8a3d7cCf4d298f6E072e', + earnContractAddress: '0xeF1870FddC25586636bf8a3d7cCf4d298f6E072e', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'quick-cel-eth', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'QuickSwap', + assets: ['CEL', 'ETH'], + retireReason: 'rewards', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619/0xD85d1e945766Fea5Eda9103F918Bd915FbCa63E6', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?inputCurrency=0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619&outputCurrency=0xD85d1e945766Fea5Eda9103F918Bd915FbCa63E6', + createdAt: 1620048432, + }, + { + id: 'quick-quick-eth', + logo: 'polygon/QUICK-ETH.png', + name: 'QUICK-ETH LP', + token: 'QUICK-ETH QLP', + tokenDescription: 'QuickSwap', + tokenAddress: '0x1Bd06B96dd42AdA85fDd0795f3B4A79DB914ADD5', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooQuickQUICK-ETH', + earnedTokenAddress: '0x66df1B2d22759D03A9f37BAaAc826089e56a5936', + earnContractAddress: '0x66df1B2d22759D03A9f37BAaAc826089e56a5936', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'quick-quick-eth', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'QuickSwap', + assets: ['QUICK', 'ETH'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619/0x831753dd7087cac61ab5644b308642cc1c33dc13', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?inputCurrency=0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619&outputCurrency=0x831753dd7087cac61ab5644b308642cc1c33dc13', + createdAt: 1620048408, + }, + { + id: 'quick-aave-eth-eol', + logo: 'polygon/AAVE-ETH.png', + name: 'AAVE-ETH LP', + token: 'AAVE-ETH QLP', + tokenDescription: 'QuickSwap', + tokenAddress: '0x90bc3E68Ba8393a3Bf2D79309365089975341a43', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooQuickAAVE-ETH', + earnedTokenAddress: '0x752948B4493d2Ee09c95F944A76005aEBF410087', + earnContractAddress: '0x752948B4493d2Ee09c95F944A76005aEBF410087', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'quick-aave-eth', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'QuickSwap', + assets: ['AAVE', 'ETH'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0xD6DF932A45C0f255f85145f286eA0b292B21C90B/0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?inputCurrency=0xD6DF932A45C0f255f85145f286eA0b292B21C90B&outputCurrency=0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619', + createdAt: 1619797482, + }, + { + id: 'quick-link-eth-eol', + logo: 'polygon/LINK-ETH.png', + name: 'LINK-ETH LP', + token: 'LINK-ETH QLP', + tokenDescription: 'QuickSwap', + tokenAddress: '0x5cA6CA6c3709E1E6CFe74a50Cf6B2B6BA2Dadd67', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooQuickLINK-ETH', + earnedTokenAddress: '0xaB4105375FbE5F502B0da986F46ADf7a21762e52', + earnContractAddress: '0xaB4105375FbE5F502B0da986F46ADf7a21762e52', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'quick-link-eth', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'QuickSwap', + assets: ['LINK', 'ETH'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0x53e0bca35ec356bd5dddfebbd1fc0fd03fabad39/0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?inputCurrency=0x53e0bca35ec356bd5dddfebbd1fc0fd03fabad39&outputCurrency=0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619', + createdAt: 1619797458, + }, + { + id: 'krill-krill-usdc-eol', + logo: 'polygon/KRILL-USDC.png', + name: 'KRILL-USDC LP', + token: 'KRILL-USDC LP', + tokenDescription: 'Polywhale', + tokenAddress: '0x6405Ebc22cB0899FC21f414085Ac4044B4721a0d', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooPolywhaleKRILL-USDC', + earnedTokenAddress: '0x74907ad4E79b1Ce415caB26FEf526ae017598cEe', + earnContractAddress: '0x74907ad4E79b1Ce415caB26FEf526ae017598cEe', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'krill-krill-usdc', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + platform: 'Other', + assets: ['KRILL', 'USDC'], + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174/0x05089C9EBFFa4F0AcA269e32056b1b36B37ED71b', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?inputCurrency=0x05089c9ebffa4f0aca269e32056b1b36b37ed71b&outputCurrency=0x2791bca1f2de4661ed88a30c99a7a9449aa84174', + createdAt: 1619551330, + }, + { + id: 'quick-eth-usdt', + logo: 'polygon/ETH-USDT.png', + name: 'ETH-USDT LP', + token: 'ETH-USDT QLP', + tokenDescription: 'QuickSwap', + tokenAddress: '0xF6422B997c7F54D1c6a6e103bcb1499EeA0a7046', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooQuickETH-USDT', + earnedTokenAddress: '0xC422261EdC5dB679CAd9BC403e886351De540e77', + earnContractAddress: '0xC422261EdC5dB679CAd9BC403e886351De540e77', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'quick-eth-usdt', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'QuickSwap', + assets: ['ETH', 'USDT'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/ETH/0xc2132d05d31c914a87c6611c10748aeb04b58e8f', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?inputCurrency=ETH&outputCurrency=0xc2132d05d31c914a87c6611c10748aeb04b58e8f', + createdAt: 1619717061, + }, + { + id: 'quick-eth-matic', + name: 'ETH-MATIC LP', + token: 'ETH-MATIC QLP', + tokenDescription: 'QuickSwap', + tokenAddress: '0xadbF1854e5883eB8aa7BAf50705338739e558E5b', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooQuickETH-MATIC', + earnedTokenAddress: '0x8b89477dFde285849E1B07947E25012206F4D674', + earnContractAddress: '0x8b89477dFde285849E1B07947E25012206F4D674', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'quick-eth-matic', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'QuickSwap', + assets: ['ETH', 'MATIC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_LOW', + 'MCAP_LARGE', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/ETH/0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?inputCurrency=0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270&outputCurrency=ETH', + createdAt: 1619717027, + }, + { + id: 'quick-quick-matic', + logo: 'polygon/QUICK-MATIC.png', + name: 'QUICK-MATIC LP', + token: 'QUICK-MATIC QLP', + tokenDescription: 'QuickSwap', + tokenAddress: '0x019ba0325f1988213D448b3472fA1cf8D07618d7', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooQuickQUICK-MATIC', + earnedTokenAddress: '0xa008B727ddBa283Ddb178b47BB227Cdbea5C1bfD', + earnContractAddress: '0xa008B727ddBa283Ddb178b47BB227Cdbea5C1bfD', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'quick-quick-matic', + oraclePrice: 0, + depositsPaused: false, + status: 'active', + platform: 'QuickSwap', + assets: ['QUICK', 'MATIC'], + risks: [ + 'COMPLEXITY_LOW', + 'BATTLE_TESTED', + 'IL_HIGH', + 'MCAP_MICRO', + 'PLATFORM_ESTABLISHED', + 'AUDIT', + 'CONTRACTS_VERIFIED', + ], + stratType: 'StratLP', + addLiquidityUrl: + 'https://quickswap.exchange/#/add/0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270/0x831753dd7087cac61ab5644b308642cc1c33dc13', + buyTokenUrl: + 'https://quickswap.exchange/#/swap?inputCurrency=0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270&outputCurrency=0x831753dd7087cac61ab5644b308642cc1c33dc13', + createdAt: 1619716993, + }, + { + id: 'cometh-eth-matic-eol', + logo: 'polygon/ETH-MATIC.png', + name: 'ETH-MATIC LP', + token: 'ETH-MATIC LP', + tokenDescription: 'Cometh', + tokenAddress: '0x462390EA53F70F7570EEB2002c0150aF519f93A9', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooComethETH-MATIC', + earnedTokenAddress: '0xa5aaE3a55cA356C62b5425AA4bFC212542B17777', + earnContractAddress: '0xa5aaE3a55cA356C62b5425AA4bFC212542B17777', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cometh-eth-matic', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Cometh', + assets: ['ETH', 'MATIC'], + addLiquidityUrl: + 'https://swap.cometh.io/#/add/0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270/0x7ceb23fd6bc0add59e62ac25578270cff1b9f619', + buyTokenUrl: + 'https://swap.cometh.io/#/swap?inputCurrency=0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270&outputCurrency=0x7ceb23fd6bc0add59e62ac25578270cff1b9f619', + createdAt: 1619529365, + }, + { + id: 'cometh-matic-must-eol', + logo: 'polygon/MUST-MATIC.png', + name: 'MUST-MATIC LP', + token: 'MUST-MATIC LP', + tokenDescription: 'Cometh', + tokenAddress: '0x80676b414a905De269D0ac593322Af821b683B92', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooComethMUST-MATIC', + earnedTokenAddress: '0x7f6fE34C51d5352A0CF375C0Fbe03bD19eCD8460', + earnContractAddress: '0x7f6fE34C51d5352A0CF375C0Fbe03bD19eCD8460', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cometh-matic-must', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Cometh', + assets: ['MUST', 'MATIC'], + addLiquidityUrl: + 'https://swap.cometh.io/#/add/0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270/0x9c78ee466d6cb57a4d01fd887d2b5dfb2d46288f', + buyTokenUrl: + 'https://swap.cometh.io/#/swap?inputCurrency=0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270&outputCurrency=0x9c78ee466d6cb57a4d01fd887d2b5dfb2d46288f', + createdAt: 1619529345, + }, + { + id: 'cometh-usdc-must-eol', + logo: 'polygon/USDC-MUST.png', + name: 'USDC-MUST LP', + token: 'USDC-MUST LP', + tokenDescription: 'Cometh', + tokenAddress: '0x12A2aBcFcADc04681929F0c199bDf812967207E4', + tokenDecimals: 18, + tokenDescriptionUrl: '#', + earnedToken: 'mooComethUSDC-MUST', + earnedTokenAddress: '0x8a198BCbF313A5565c64A7Ed61FaA413eB4E0931', + earnContractAddress: '0x8a198BCbF313A5565c64A7Ed61FaA413eB4E0931', + pricePerFullShare: 1, + tvl: 0, + oracle: 'lps', + oracleId: 'cometh-usdc-must', + oraclePrice: 0, + depositsPaused: true, + status: 'eol', + retireReason: 'rewards', + platform: 'Cometh', + assets: ['USDC', 'MUST'], + addLiquidityUrl: + 'https://swap.cometh.io/#/add/0x2791bca1f2de4661ed88a30c99a7a9449aa84174/0x9c78ee466d6cb57a4d01fd887d2b5dfb2d46288f', + buyTokenUrl: + 'https://swap.cometh.io/#/swap?inputCurrency=0x2791bca1f2de4661ed88a30c99a7a9449aa84174&outputCurrency=0x9c78ee466d6cb57a4d01fd887d2b5dfb2d46288f', + createdAt: 1619529291, + }, +]; diff --git a/src/features/configure/zap/arbitrum_zaps.js b/src/features/configure/zap/arbitrum_zaps.js new file mode 100644 index 000000000..d6d3a0097 --- /dev/null +++ b/src/features/configure/zap/arbitrum_zaps.js @@ -0,0 +1,9 @@ +export const arbitrumZaps = [ + { + // Sushi + zapAddress: '0x6D973E33af0801Af13b7939956745c72bB17aa1E', + ammRouter: '0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506', + ammFactory: '0xc35DADB65012eC5796536bD9864eD8773aBc74C4', + ammPairInitHash: '0xe18a34eb0e04b04f7a0ac29a6e80748dca96319b42c54d679cb821dca90c6303', + }, +]; diff --git a/src/features/configure/zap/aurora_zaps.js b/src/features/configure/zap/aurora_zaps.js new file mode 100644 index 000000000..0d60ba06e --- /dev/null +++ b/src/features/configure/zap/aurora_zaps.js @@ -0,0 +1 @@ +export const auroraZaps = []; diff --git a/src/features/configure/zap/avalanche_zaps.js b/src/features/configure/zap/avalanche_zaps.js new file mode 100644 index 000000000..d4258a3ca --- /dev/null +++ b/src/features/configure/zap/avalanche_zaps.js @@ -0,0 +1,23 @@ +export const avalancheZaps = [ + { + // Pangolin + zapAddress: '0x7f62aF30081178F502c3d4DA17825e58d240D737', + ammRouter: '0xE54Ca86531e17Ef3616d22Ca28b0D458b6C89106', + ammFactory: '0xefa94DE7a4656D787667C749f7E1223D71E9FD88', + ammPairInitHash: '0x40231f6b438bce0797c9ada29b718a87ea0a5cea3fe9a771abdd76bd41a3e545', + }, + { + // Olive + zapAddress: '0xFeaaa3027F6f65bd97caE906dd85AA0Cd237702b', + ammRouter: '0x0c45FB63001b56a21e29c7dcc1727bfDA273a368', + ammFactory: '0x4Fe4D8b01A56706Bc6CaD26E8C59D0C7169976b3', + ammPairInitHash: '0xb7145948956af92afd2ae97eff039ada60998237282c1687ca23ce1ad5e1d282', + }, + { + // Joe + zapAddress: '0x6674f3961C5908B086A5551377806f4BA8F0Ac99', + ammRouter: '0x60aE616a2155Ee3d9A68541Ba4544862310933d4', + ammFactory: '0x9Ad6C38BE94206cA50bb0d90783181662f0Cfa10', + ammPairInitHash: '0x0bbca9af0511ad1a1da383135cf3a8d2ac620e549ef9f6ae3a4c33c2fed0af91', + }, +]; diff --git a/src/features/configure/zap/bsc_zaps.js b/src/features/configure/zap/bsc_zaps.js new file mode 100644 index 000000000..d47b75936 --- /dev/null +++ b/src/features/configure/zap/bsc_zaps.js @@ -0,0 +1,44 @@ +export const bscZaps = [ + { + // PancakeSwap V2 + zapAddress: '0x03c509fd85d51dc7E75fa2De06276cFA147486EA', + ammRouter: '0x10ed43c718714eb63d5aa57b78b54704e256024e', + ammFactory: '0xca143ce32fe78f1f7019d7d551a6402fc5350c73', + ammPairInitHash: '0x00fb7f630766e6a796048ea87d01acd3068e8ff67d078148a3fa3f4a84f69bd5', + }, + { + // ApeSwap + zapAddress: '0x10ab57c5889a00c497ce6be7ce142bb9a613e362', + ammRouter: '0xC0788A3aD43d79aa53B09c2EaCc313A787d1d607', + ammFactory: '0x0841BD0B734E4F5853f0dD8d7Ea041c241fb0Da6', + ammPairInitHash: '0xf4ccce374816856d11f00e4069e7cada164065686fbef53c6167a63ec2fd8c5b', + }, + { + // OOE + zapAddress: '0xDd29211787921Fb3867b816025dedC447EffEDeF', + ammRouter: '0xBeB43fbb2f7AEA8AC904975816BB1b4cA9f4D9c5', + ammFactory: '0xd76d8C2A7CA0a1609Aea0b9b5017B3F7782891bf', + ammPairInitHash: '0xe7da666f616ba3bdb18c6908b22d556a41659bdd652762c246b8d1fa4f7506b4', + }, + { + // MDEX + zapAddress: '0x781BF7b6d2a4C7014AB4EEAb4Bd10af540b8e020', + ammRouter: '0x7dae51bd3e3376b8c7c4900e9107f12be3af1ba8', + ammFactory: '0x3cd1c46068daea5ebb0d3f55f6915b10648062b8', + ammPairInitHash: '0x0d994d996174b05cfc7bed897dc1b20b4c458fc8d64fe98bc78b3c64a6b4d093', + }, + { + // BabySwap + zapAddress: '0xfd5701FB4139e6E18cE4F9712ADBAB355a6b606e', + ammRouter: '0x325E343f1dE602396E256B67eFd1F61C3A6B38Bd', + ammFactory: '0x86407bEa2078ea5f5EB5A52B2caA963bC1F889Da', + ammPairInitHash: '0x48c8bec5512d397a5d512fbb7d83d515e7b6d91e9838730bd1aa1b16575da7f5', + }, + { + // BiSwap + zapAddress: '0x9A76a315109663d9f2e105Be7A6df18b4F7B16F0', + ammRouter: '0x3a6d8cA21D1CF76F653A67577FA0D27453350dD8', + ammFactory: '0x858E3312ed3A876947EA49d572A7C42DE08af7EE', + ammPairInitHash: '0xfea293c909d87cd4153593f077b76bb7e94340200f4ee84211ae8e4f9bd7ffdf', + }, +]; diff --git a/src/features/configure/zap/celo_zaps.js b/src/features/configure/zap/celo_zaps.js new file mode 100644 index 000000000..c412657f2 --- /dev/null +++ b/src/features/configure/zap/celo_zaps.js @@ -0,0 +1 @@ +export const celoZaps = []; diff --git a/src/features/configure/zap/cronos_zaps.js b/src/features/configure/zap/cronos_zaps.js new file mode 100644 index 000000000..54581b76a --- /dev/null +++ b/src/features/configure/zap/cronos_zaps.js @@ -0,0 +1,16 @@ +export const cronosZaps = [ + { + // VVS + zapAddress: '0xE8f59c05Ff92CF1584CBc404B4527b4F1eaF6620', + ammRouter: '0x145863Eb42Cf62847A6Ca784e6416C1682b1b2Ae', + ammFactory: '0x3B44B2a187a7b3824131F8db5a74194D0a42Fc15', + ammPairInitHash: '0xa77ee1cc0f39570ddde947459e293d7ebc2c30ff4e8fc45860afdcb2c2d3dc17', + }, + { + // CronaSwap + zapAddress: '0xb25eB9105549627050AAB3A1c909fBD454014beA', + ammRouter: '0xcd7d16fB918511BF7269eC4f48d61D79Fb26f918', + ammFactory: '0x73A48f8f521EB31c55c0e1274dB0898dE599Cb11', + ammPairInitHash: '0xc93158cffa5b575e32566e81e847754ce517f8fa988d3e25cf346d916216e06f', + }, +]; diff --git a/src/features/configure/zap/emerald_zaps.js b/src/features/configure/zap/emerald_zaps.js new file mode 100644 index 000000000..3d96ec519 --- /dev/null +++ b/src/features/configure/zap/emerald_zaps.js @@ -0,0 +1,9 @@ +export const emeraldZaps = [ + { + // YuzuSwap + zapAddress: '0xa1Dfd44c90B7cE937FC450Fe19B691e72EE3a7D2', + ammRouter: '0x250d48C5E78f1E85F7AB07FEC61E93ba703aE668', + ammFactory: '0x5F50fDC22697591c1D7BfBE8021163Fc73513653', + ammPairInitHash: '0x0bb8a7327a411245127096fe3de27e8b77c9f202a1451409e78b04984d70601a', + }, +]; diff --git a/src/features/configure/zap/fantom_zaps.js b/src/features/configure/zap/fantom_zaps.js new file mode 100644 index 000000000..782d4b8e3 --- /dev/null +++ b/src/features/configure/zap/fantom_zaps.js @@ -0,0 +1,44 @@ +export const fantomZaps = [ + { + // SpookySwap + zapAddress: '0x8afc0f9BdC5DcA9f0408Df03A03520bFa98A15aF', + ammRouter: '0xF491e7B69E4244ad4002BC14e878a34207E38c29', + ammFactory: '0x152eE697f2E276fA89E96742e9bB9aB1F2E61bE3', + ammPairInitHash: '0xcdf2deca40a0bd56de8e3ce5c7df6727e5b1bf2ac96f283fa9c4b3e6b42ea9d2', + }, + { + // JetSwap + zapAddress: '0x63934e5aba120f2bae2418711ef0f20f7db26cd2', + ammRouter: '0x845E76A8691423fbc4ECb8Dd77556Cb61c09eE25', + ammFactory: '0xf6488205957f0b4497053d6422F49e27944eE3Dd', + ammPairInitHash: '0xa5e6089ea250dac750e4867fc4ce7f2a864bd94446564351fe9329f378963974', + }, + { + // SpiritSwap + zapAddress: '0x5618c4C0A9c024e77eb9A5b4424f492f94C86F14', + ammRouter: '0x16327E3FbDaCA3bcF7E38F5Af2599D2DDc33aE52', + ammFactory: '0xEF45d134b73241eDa7703fa787148D9C9F4950b0', + ammPairInitHash: '0xe242e798f6cee26a9cb0bbf24653bf066e5356ffeac160907fe2cc108e238617', + }, + { + // Sushi + zapAddress: '0xFA884e17f04341542790453b1B9A0e6F587768ce', + ammRouter: '0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506', + ammFactory: '0xc35DADB65012eC5796536bD9864eD8773aBc74C4', + ammPairInitHash: '0xe18a34eb0e04b04f7a0ac29a6e80748dca96319b42c54d679cb821dca90c6303', + }, + { + // WigoSwap + zapAddress: '0x21371d119bD22917eE2bd05497aE24d0CA3eE8F6', + ammRouter: '0x5023882f4D1EC10544FCB2066abE9C1645E95AA0', + ammFactory: '0xC831A5cBfb4aC2Da5ed5B194385DFD9bF5bFcBa7', + ammPairInitHash: '0x55c39e9406ff3c89a193882b4752879e73c8a0ce1222fe1de34c5e8f6482d9b6', + }, + { + // TombSwap + zapAddress: '0xf12FEe3837492D8fc09D4D0dbbA72919Ea76d19B', + ammRouter: '0x6D0176C5ea1e44b08D3dd001b0784cE42F47a3A7', + ammFactory: '0xE236f6890F1824fa0a7ffc39b1597A5A6077Cfe9', + ammPairInitHash: '0x2dfbcf1b907f911bc66d083d103a1d7de0b8b21a6cb2a66a78d1f1559018fba4', + }, +]; diff --git a/src/features/configure/zap/fuse_zaps.js b/src/features/configure/zap/fuse_zaps.js new file mode 100644 index 000000000..d96dcd4be --- /dev/null +++ b/src/features/configure/zap/fuse_zaps.js @@ -0,0 +1,23 @@ +export const fuseZaps = [ + { + // FuseFi + zapAddress: '0xb0F9c6FBcfE226EEAD3AE8b019ce4666cE223a78', + ammRouter: '0xFB76e9E7d88E308aB530330eD90e84a952570319', + ammFactory: '0x1d1f1A7280D67246665Bb196F38553b469294f3a', + ammPairInitHash: '0x04990f130515035f22e76663517440918b83941b25a4ec04ecdf4b2898e846aa', + }, + { + // Sushi + zapAddress: '0x8c2d54BA94f4638f1bb91f623F378B66d6023324', + ammRouter: '0xF4d73326C13a4Fc5FD7A064217e12780e9Bd62c3', + ammFactory: '0x43eA90e2b786728520e4f930d2A71a477BF2737C', + ammPairInitHash: '0x1901958ef8b470f2c0a3875a79ee0bd303866d85102c0f1ea820d317024d50b5', + }, + { + // Voltage + zapAddress: '0xc04DbaF536286D3e06BC4BD60681C47Be586f44f', + ammRouter: '0xE3F85aAd0c8DD7337427B9dF5d0fB741d65EEEB5', + ammFactory: '0x1998E4b0F1F922367d8Ec20600ea2b86df55f34E', + ammPairInitHash: '0xe5f5532292e2e2a7aee3c2bb13e6d26dca6e8cc0a843ddd6f37c436c23cfab22', + }, +]; diff --git a/src/features/configure/zap/harmony_zaps.js b/src/features/configure/zap/harmony_zaps.js new file mode 100644 index 000000000..ab6893239 --- /dev/null +++ b/src/features/configure/zap/harmony_zaps.js @@ -0,0 +1,9 @@ +export const harmonyZaps = [ + { + // Sushi + zapAddress: '0x41D44B276904561Ac51855159516FD4cB2c90968', + ammRouter: '0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506', + ammFactory: '0xc35DADB65012eC5796536bD9864eD8773aBc74C4', + ammPairInitHash: '0xe18a34eb0e04b04f7a0ac29a6e80748dca96319b42c54d679cb821dca90c6303', + }, +]; diff --git a/src/features/configure/zap/heco_zaps.js b/src/features/configure/zap/heco_zaps.js new file mode 100644 index 000000000..a58670a6a --- /dev/null +++ b/src/features/configure/zap/heco_zaps.js @@ -0,0 +1 @@ +export const hecoZaps = []; diff --git a/src/features/configure/zap/metis_zaps.js b/src/features/configure/zap/metis_zaps.js new file mode 100644 index 000000000..1c030a5a6 --- /dev/null +++ b/src/features/configure/zap/metis_zaps.js @@ -0,0 +1,16 @@ +export const metisZaps = [ + { + // Netswap + zapAddress: '0xF439B695bB28c9E9865170C1b3e98F5EB4cE9b48', + ammRouter: '0x1E876cCe41B7b844FDe09E38Fa1cf00f213bFf56', + ammFactory: '0x70f51d68D16e8f9e418441280342BD43AC9Dff9f', + ammPairInitHash: '0x966d65068a6a30f10fd1fa814258637a34e059081d79daa94f3e2b6cec48e810', + }, + { + // Tethys + zapAddress: '0x8c2d54BA94f4638f1bb91f623F378B66d6023324', + ammRouter: '0x81b9FA50D5f5155Ee17817C21702C3AE4780AD09', + ammFactory: '0x2CdFB20205701FF01689461610C9F321D1d00F80', + ammPairInitHash: '0xef3f1aabf6b944a53c06890783ddef260a21995d1eaea6d52f980cfe082a877d', + }, +]; diff --git a/src/features/configure/zap/moonbeam_zaps.js b/src/features/configure/zap/moonbeam_zaps.js new file mode 100644 index 000000000..1d4c521db --- /dev/null +++ b/src/features/configure/zap/moonbeam_zaps.js @@ -0,0 +1,16 @@ +export const moonbeamZaps = [ + { + // Stellaswap + zapAddress: '0x24Ef232A309fd4531343DDb69C49ae395A320c8B', + ammRouter: '0xd0A01ec574D1fC6652eDF79cb2F880fd47D34Ab1', + ammFactory: '0x68a384d826d3678f78bb9fb1533c7e9577dacc0e', + ammPairInitHash: '0x48a6ca3d52d0d0a6c53a83cc3c8688dd46ea4cb786b169ee959b95ad30f61643', + }, + { + // Beamswap + zapAddress: '0xdf68Bf80D427A5827Ff2c06A9c70D407e17DC041', + ammRouter: '0x96b244391D98B62D19aE89b1A4dCcf0fc56970C7', + ammFactory: '0x985BcA32293A7A496300a48081947321177a86FD', + ammPairInitHash: '0xe31da4209ffcce713230a74b5287fa8ec84797c9e77e1f7cfeccea015cdc97ea', + }, +]; diff --git a/src/features/configure/zap/moonriver_zaps.js b/src/features/configure/zap/moonriver_zaps.js new file mode 100644 index 000000000..55d9ff15d --- /dev/null +++ b/src/features/configure/zap/moonriver_zaps.js @@ -0,0 +1,16 @@ +export const moonriverZaps = [ + { + // Solarbeam + zapAddress: '0xb0F9c6FBcfE226EEAD3AE8b019ce4666cE223a78', + ammRouter: '0xAA30eF758139ae4a7f798112902Bf6d65612045f', + ammFactory: '0x049581aEB6Fe262727f290165C29BDAB065a1B68', + ammPairInitHash: '0x9a100ded5f254443fbd264cb7e87831e398a8b642e061670a9bc35ba27293dbf', + }, + { + //Sushi + zapAddress: '0x853d81dAC9cA251784f314043f0c7CB102328FAb', + ammRouter: '0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506', + ammFactory: '0xc35DADB65012eC5796536bD9864eD8773aBc74C4', + ammPairInitHash: '0xe18a34eb0e04b04f7a0ac29a6e80748dca96319b42c54d679cb821dca90c6303', + }, +]; diff --git a/src/features/configure/zap/polygon_zaps.js b/src/features/configure/zap/polygon_zaps.js new file mode 100644 index 000000000..12e0b43e9 --- /dev/null +++ b/src/features/configure/zap/polygon_zaps.js @@ -0,0 +1,51 @@ +export const polygonZaps = [ + { + // QuickSwap + zapAddress: '0x540A9f99bB730631BF243a34B19fd00BA8CF315C', + ammRouter: '0xa5E0829CaCEd8fFDD4De3c43696c57F7D7A678ff', + ammFactory: '0x5757371414417b8C6CAad45bAeF941aBc7d3Ab32', + ammPairInitHash: '0x96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f', + }, + { + // Cometh + zapAddress: '0x872c9DCE4B107042933AFD51E8A704631f7EE076', + ammRouter: '0x93bcDc45f7e62f89a8e901DC4A0E2c6C427D9F25', + ammFactory: '0x800b052609c355cA8103E06F022aA30647eAd60a', + ammPairInitHash: '0x499154cad90a3563f914a25c3710ed01b9a43b8471a35ba8a66a056f37638542', + }, + { + // Sushi + zapAddress: '0xf039fe26456901F863c873556f40fb207C6c9C18', + ammRouter: '0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506', + ammFactory: '0xc35DADB65012eC5796536bD9864eD8773aBc74C4', + ammPairInitHash: '0xe18a34eb0e04b04f7a0ac29a6e80748dca96319b42c54d679cb821dca90c6303', + }, + { + // Wault + zapAddress: '0x0EA7b115D96C4dF61B3e7d6757f0050F23492929', + ammRouter: '0x3a1D87f206D12415f5b0A33E786967680AAb4f6d', + ammFactory: '0xa98ea6356A316b44Bf710D5f9b6b4eA0081409Ef', + ammPairInitHash: '0x1cdc2246d318ab84d8bc7ae2a3d81c235f3db4e113f4c6fdc1e2211a9291be47', + }, + { + // ApeSwap + zapAddress: '0xaAa3477c6b326e2E416Af7506A30F4519bC9960F', + ammRouter: '0xC0788A3aD43d79aa53B09c2EaCc313A787d1d607', + ammFactory: '0xCf083Be4164828f00cAE704EC15a36D711491284', + ammPairInitHash: '0x511f0f358fe530cda0859ec20becf391718fdf5a329be02f4c95361f3d6a42d8', + }, + { + // DYFN + zapAddress: '0x1A53c6FCa349c23f573CEdd3F8AFE70c02CcEC39', + ammRouter: '0xA102072A4C07F06EC3B4900FDC4C7B80b6c57429', + ammFactory: '0xE7Fb3e833eFE5F9c441105EB65Ef8b261266423B', + ammPairInitHash: '0xf187ed688403aa4f7acfada758d8d53698753b998a3071b06f1b777f4330eaf3', + }, + { + // Jetswap + zapAddress: '0x2302Fff1408eAb81B5912FD9EDA887A9Ab190727', + ammRouter: '0x5C6EC38fb0e2609672BDf628B1fD605A523E5923', + ammFactory: '0x668ad0ed2622C62E24f0d5ab6B6Ac1b9D2cD4AC7', + ammPairInitHash: '0x505c843b83f01afef714149e8b174427d552e1aca4834b4f9b4b525f426ff3c6', + }, +]; diff --git a/src/features/farm/FarmPage.js b/src/features/farm/FarmPage.js deleted file mode 100644 index 27d7f7f33..000000000 --- a/src/features/farm/FarmPage.js +++ /dev/null @@ -1,20 +0,0 @@ -import React, { useEffect } from 'react'; -// @material-ui/core components -// @material-ui/icons -// import Close from "@material-ui/icons/Close"; -// core components -// sections for this page -import FarmPools from './sections/FarmPools' -// hooks - -export default function FarmPage() { - useEffect(() => { - window.scrollTo(0, 0); - document.body.scrollTop = 0; - }, []); - return ( - <> - - - ); -} \ No newline at end of file diff --git a/src/features/farm/PoolPage.js b/src/features/farm/PoolPage.js deleted file mode 100644 index b9a96cf6e..000000000 --- a/src/features/farm/PoolPage.js +++ /dev/null @@ -1,24 +0,0 @@ -import React, { useState, useEffect } from 'react'; -import { useHistory } from 'react-router-dom'; -// @material-ui/core components -// @material-ui/icons -// import Close from "@material-ui/icons/Close"; -// core components -// sections for this page -import { FarmPool } from './sections' -// hooks - -export default function PoolPage(props) { - const history = useHistory(); - const [ index ] = useState(Number(props.match.params.index) - 1); - - useEffect(() => { - window.scrollTo(0, 0); - document.body.scrollTop = 0; - }, [index]); - return ( - <> - - - ); -} \ No newline at end of file diff --git a/src/features/farm/index.js b/src/features/farm/index.js deleted file mode 100644 index 95bda5a18..000000000 --- a/src/features/farm/index.js +++ /dev/null @@ -1,2 +0,0 @@ -export { default as FarmPage } from './FarmPage'; -export { default as PoolPage } from './PoolPage'; diff --git a/src/features/farm/jss/sections/farmItemStyle.js b/src/features/farm/jss/sections/farmItemStyle.js deleted file mode 100644 index 261fd7722..000000000 --- a/src/features/farm/jss/sections/farmItemStyle.js +++ /dev/null @@ -1,63 +0,0 @@ - -const secondStyle = { - opacity: '0.4', - fontFamily: 'Helvetica', - fontSize: '14px', - color: '#FFFFFF', - letterSpacing: '0', - lineHeight: '14px', -}; - -const farmItemStyle = theme => ({ - mainTitle: { - fontFamily: 'Helvetica', - fontSize: '32px', - color: '#FFFFFF', - letterSpacing: '0', - lineHeight: '32px', - fontWeight: "550", - }, - secondTitle: { - ...secondStyle, - fontWeight: "550", - }, - flexColumnCenter: { - display: 'flex', - flexDirection: 'column', - justifyContent: 'center', - alignItems: 'center' - }, - farmItem: { - minWidth: 260, - margin: '10px 10px 50px', - padding: 15, - borderRadius: 20, - - color: '#ffffff', - textAlign: 'center' - }, - logo: { - display: 'flex', - justifyContent: 'center' - }, - logoImage: { - width: 60, - height: 60, - zIndex: 1 - }, - weightFont: { - fontSize: 20, - fontWeight: 500 - }, - menu: { - display: 'flex', - justifyContent: 'space-around' - }, - menuButton: { - borderRadius: 10, - fontSize: 15, - margin: 10 - } -}); - -export default farmItemStyle; diff --git a/src/features/farm/jss/sections/farmPoolsStyle.js b/src/features/farm/jss/sections/farmPoolsStyle.js deleted file mode 100644 index 891cca667..000000000 --- a/src/features/farm/jss/sections/farmPoolsStyle.js +++ /dev/null @@ -1,419 +0,0 @@ -import {withStyles} from "@material-ui/core/styles"; -import TableCell from '@material-ui/core/TableCell'; -import TableRow from '@material-ui/core/TableRow'; - -const fontDefaultStyle = { - color: '#fff', - fontFamily: 'Helvetica', - fontSize: '18px', - letterSpacing: '0', - lineHeight: '18px', - fontWeight: '400', -}; - -const normalBackgroundColor = '#2C3040'; -const primaryColor = '#FF2D82'; -const secondColor = '#635AFF'; - -const StyledTableCell = withStyles((theme) => ({ - head: { - ...fontDefaultStyle, - backgroundColor: secondColor, - height: '48px', - borderColor: 'rgb(40,42,55,0.5)', - padding: '0 40px', - '&:first-child': { - borderTopLeftRadius: '12px', - }, - '&:last-child': { - borderTopRightRadius: '12px', - }, - }, - body: { - ...fontDefaultStyle, - padding: '20px 40px', - backgroundColor: normalBackgroundColor, - borderColor: 'rgb(40,42,55,0.5)', - }, -}))(TableCell); - -const StyledTableRow = withStyles((theme) => ({ - root: {}, -}))(TableRow); - -const farmPoolsStyle = theme => ({ - leftImage: { - position: 'absolute', - left: '-3px', - bottom: '-98px', - zIndex: '-1', - }, - rightImage: { - position: 'absolute', - right: '0', - bottom: '0', - zIndex: '-1', - }, - listHeader: { - backgroundColor: normalBackgroundColor, - position: 'relative', - borderRadius: '6px', - height: '180px', - padding: '48px 60px', - zIndex: '10', - marginBottom: '40px', - }, - table: { - minWidth: 700, - }, - tableBodyRoot: { - '& tr:last-child th:first-child': { - borderBottomLeftRadius: '12px', - }, - '& tr:last-child th:last-child': { - borderBottomRightRadius: '12px', - }, - }, - stakeButton: { - ...fontDefaultStyle, - backgroundColor: primaryColor, - borderRadius: '24px', - fontSize: '14px', - lineHeight: '14px', - padding: '12px 24px', - marginRight: '8px', - boxShadow: "0 0", - "&:hover,&:focus": { - backgroundColor: primaryColor, - boxShadow: "0 0", - } - }, - learnMoreButton: { - ...fontDefaultStyle, - height: '32px', - borderRadius: '24px', - fontSize: '12px', - lineHeight: '12x', - padding: '12px 24px', - marginLeft: '12px', - fontWeight: '600', - boxShadow: "0 0", - backgroundColor: secondColor, - "&:hover,&:focus": { - backgroundColor: secondColor, - } - }, - rewardsButton: { - backgroundColor: secondColor, - "&:hover,&:focus": { - backgroundColor: secondColor, - boxShadow: "0 0", - } - }, - grayButton: { - color: primaryColor, - backgroundColor: '#353848', - boxShadow: "0 0", - "&:hover,&:focus": { - color: primaryColor, - backgroundColor: '#353848', - boxShadow: "0 0", - } - }, - firstCell: { - display: 'flex', - }, - firstCellContent: { - display: 'flex', - flexDirection: 'column', - alignItems: 'flex-start', - justifyContent: 'center', - marginLeft: '8px', - '& :first-child': { - marginBottom: '4px' - } - }, - avatarContainer: { - width: '48px', - height: '48px', - borderRadius: '4px', - backgroundColor: '#fff', - display: 'flex', - alignItems: 'center', - justifyContent: 'center', - }, - avatar: { - width: '38px', - height: '38px', - }, - inputAvatar: { - [theme.breakpoints.down("xs")]: { - width: '26px', - height: '26px', - }, - }, - detailTitle: { - fontFamily: 'Helvetica', - fontSize: '32px', - color: '#FFFFFF', - letterSpacing: '0', - lineHeight: '32px', - fontWeight: "550" - }, - detailDesc: { - fontSize: 14, - fontWeight: 350, - color: '#FFFFFF', - marginTop: 10, - marginBottom: 24 - }, - detailTime: { - textAlign: 'center', - color: '#ffffff', - fontWeight: 500, - fontSize: 14 - }, - detailContentUp: { - backgroundColor: normalBackgroundColor, - borderTopLeftRadius: '8px', - borderTopRightRadius: '8px', - padding: '56px 120px', - [theme.breakpoints.down("xs")]: { - borderRadius: '8px', - marginBottom: '12px', - padding: '30px 16px', - }, - }, - detailContentDown: { - backgroundColor: normalBackgroundColor, - borderBottomLeftRadius: '8px', - borderBottomRightRadius: '8px', - padding: '48px', - paddingTop: '0', - [theme.breakpoints.down("xs")]: { - borderRadius: '8px', - padding: '30px 22px', - }, - }, - contentTitleMarginBottom: { - marginBottom: '48px', - [theme.breakpoints.down("xs")]: { - marginBottom: '0', - }, - }, - contentTitle: { - display: "flex", - justifyContent: 'center', - [theme.breakpoints.down("xs")]: { - flexDirection: 'column', - }, - }, - contentTitleItem: { - display: 'flex', - flexDirection: 'column', - alignItems: 'center', - padding: '0 12px', - [theme.breakpoints.down("xs")]: { - alignItems: 'flex-start', - }, - }, - contentItemTitleVal: { - ...fontDefaultStyle, - fontSize: '28px', - color: primaryColor, - lineHeight: '28px', - marginBottom: '12px', - // textTransform:'uppercase', - [theme.breakpoints.down("xs")]: { - marginBottom: '0', - } - }, - contentItemTitle: { - ...fontDefaultStyle, - opacity: '0.4', - [theme.breakpoints.down("xs")]: { - marginBottom: '12px', - } - }, - contentTitleItemBorder: { - borderRight: '1px solid rgb(255,255,255,0.1)', - [theme.breakpoints.down("xs")]: { - border: '0', - }, - }, - contentButtonMargin: { - marginRight: '36px', - }, - inputContainer: { - height: '70px', - borderRadius: '35px', - backgroundColor: '#353848', - display: 'flex', - alignItems: 'center', - justifyContent: 'space-between', - [theme.breakpoints.down("xs")]: { - width: '300px', - height: '48px', - margin: '0 auto', - } - }, - inputAvatarContainer: { - width: '40px', - height: '40px', - borderRadius: '40px', - backgroundColor: '#fff', - display: 'flex', - alignItems: 'center', - justifyContent: 'center', - [theme.breakpoints.down("xs")]: { - width: '26px', - height: '26px', - }, - }, - flexBox: { - display: 'flex', - alignItems: 'center', - }, - inputTxt: { - ...fontDefaultStyle, - marginLeft: '8px', - }, - inputSubTxt: { - ...fontDefaultStyle, - fontSize: '16px', - lineHeight: '16px', - opacity: '0.4', - marginRight: '8px', - }, - inputCloseIcon: { - color: '#fff', - opacity: '0.4', - }, - flexCenter: { - display: 'flex', - justifyContent: 'center', - alignItems: 'center', - }, - marginTop: { - marginTop: '12px', - }, - mobileContainer: { - display: 'flex', - flexDirection: 'column', - justifyContent: 'center', - alignItems: 'center', - padding: '24px', - borderRadius: '12px', - backgroundColor: normalBackgroundColor, - }, - mobileHead: { - ...fontDefaultStyle, - display: 'flex', - flexDirection: 'column', - justifyContent: 'center', - alignItems: 'center', - margin: '12px', - }, - mobileDetail: { - fontFamily: 'Helvetica', - fontSize: '16px', - color: '#A4A6B3', - letterSpacing: '0', - lineHeight: '14px', - display: 'flex', - flexDirection: 'column', - justifyContent: 'center', - alignItems: 'center', - margin: '18px', - }, - mobileMaxButton: { - [theme.breakpoints.down("xs")]: { - width: '42px', - height: '24px', - fontSize: '12px', - lineHeight: '16px', - }, - }, - mobileInput: { - [theme.breakpoints.down("xs")]: { - width: '100px', - }, - }, - flexColumnCenter: { - display: 'flex', - flexDirection: 'column', - justifyContent: 'center', - alignItems: 'center', - position: 'relative' - }, - menuItem: { - color: '#ffffff', - background: 'rgb(43,49,64)', - borderRadius: 15, - padding: 15, - margin: "50px 0" - }, - menuItemLogo: { - position: 'absolute', - top: -30, - display: 'flex' - }, - menuItemLogoImg: { - width: 60, - height: 60, - zIndex: 1 - }, - menuContent: { - width: '100%', - display: 'flex', - justifyContent: 'space-around', - margin: '60px 0 70px' - }, - menuNumber: { - textAlign: 'center', - marginBottom: 10 - }, - numberWeight: { - fontWeight: 500, - fontSize: 45, - marginBottom: 20 - }, - menuItemButton: { - position: 'absolute', - bottom: 20, - minWidth: 200, - borderRadius: 10, - fontSize: 15, - background: "#ff2d82" - }, - menuItemButtonExit: { - bottom: -80, - background: 'rgba(96,94,255)' - }, - dialogRoot: { - background: "rgb(81,88,116)", - color: '#ffffff' - }, - dialogHref: { - marginLeft: 10, - cursor: 'pointer', - color: "#32B0FF" - }, - dialogInput: { - color: "#ffffff" - }, - dialogAction: { - width: 80, - textAlign: 'center', - fontSize: 15, - fontWeight: 450, - cursor: 'pointer' - }, - dialogTextBtn: { - '& > *': { - margin: theme.spacing(1), - } - } -}) - -export {StyledTableCell, StyledTableRow, farmPoolsStyle}; \ No newline at end of file diff --git a/src/features/farm/redux/action.js b/src/features/farm/redux/action.js deleted file mode 100644 index 41a533597..000000000 --- a/src/features/farm/redux/action.js +++ /dev/null @@ -1,10 +0,0 @@ -export { fetchPoolsInfo } from './fetchPoolsInfo'; -export { checkApproval } from './checkApproval'; -export { fetchBalance } from './fetchBalance'; -export { fetchCurrentlyStaked } from './fetchCurrentlyStaked'; -export { fetchRewardsAvailable } from './fetchRewardsAvailable'; -export { fetchApproval } from './fetchApproval'; -export { fetchStake } from './fetchStake'; -export { fetchWithdraw } from './fetchWithdraw'; -export { fetchClaim } from './fetchClaim'; -export { fetchExit } from './fetchExit'; \ No newline at end of file diff --git a/src/features/farm/redux/checkApproval.js b/src/features/farm/redux/checkApproval.js deleted file mode 100644 index dd74926b2..000000000 --- a/src/features/farm/redux/checkApproval.js +++ /dev/null @@ -1,113 +0,0 @@ -import { useCallback } from 'react'; -import BigNumber from "bignumber.js"; -import { erc20ABI } from "../../configure"; -import { useDispatch, useSelector } from 'react-redux'; -import { - FARM_CHECK_APPROVAL_BEGIN, - FARM_CHECK_APPROVAL_SUCCESS, - FARM_CHECK_APPROVAL_FAILURE, -} from './constants'; - -export function checkApproval(index) { - return (dispatch, getState) => { - // optionally you can have getState as the second argument - dispatch({ - type: FARM_CHECK_APPROVAL_BEGIN, - index - }); - // Return a promise so that you could control UI flow without states in the store. - // For example: after submit a form, you need to redirect the page to another when succeeds or show some errors message if fails. - // It's hard to use state to manage it, but returning a promise allows you to easily achieve it. - // e.g.: handleSubmit() { this.props.actions.submitForm(data).then(()=> {}).catch(() => {}); } - const promise = new Promise((resolve, reject) => { - // doRequest is a placeholder Promise. You should replace it with your own logic. - // See the real-word example at: https://github.com/supnate/rekit/blob/master/src/features/home/redux/fetchRedditReactjsList.js - // args.error here is only for test coverage purpose. - const { home, farm } = getState(); - const { address, web3 } = home; - const { pools } = farm; - const { tokenAddress, earnContractAddress } = pools[index]; - const contract = new web3.eth.Contract(erc20ABI, tokenAddress); - contract.methods.allowance(address, earnContractAddress).call({ from: address }).then( - data => { - const balance = web3.utils.fromWei(data, "ether"); - dispatch({ - type: FARM_CHECK_APPROVAL_SUCCESS, - data: new BigNumber(balance).toNumber(), - index - }); - resolve(data); - }, - ).catch( - // Use rejectHandler as the second argument so that render errors won't be caught. - error => { - dispatch({ - type: FARM_CHECK_APPROVAL_FAILURE, - index - }); - reject(error.message || error); - } - ) - }); - return promise; - } -} - - -export function useCheckApproval() { - // args: false value or array - // if array, means args passed to the action creator - const dispatch = useDispatch(); - - const { allowance, checkApprovalPending } = useSelector( - state => ({ - allowance: state.farm.allowance, - checkApprovalPending: state.farm.checkApprovalPending, - }) - ); - - const boundAction = useCallback( - data => dispatch(checkApproval(data)), - [dispatch], - ); - - return { - allowance, - checkApproval: boundAction, - checkApprovalPending - }; -} - -export function reducer(state, action) { - const { allowance, checkApprovalPending } = state; - switch (action.type) { - case FARM_CHECK_APPROVAL_BEGIN: - // Just after a request is sent - checkApprovalPending[action.index] = true; - return { - ...state, - checkApprovalPending, - }; - - case FARM_CHECK_APPROVAL_SUCCESS: - // The request is success - checkApprovalPending[action.index] = false; - allowance[action.index] = action.data; - return { - ...state, - allowance, - checkApprovalPending, - }; - - case FARM_CHECK_APPROVAL_FAILURE: - // The request is failed - checkApprovalPending[action.index] = false; - return { - ...state, - checkApprovalPending, - }; - - default: - return state; - } -} \ No newline at end of file diff --git a/src/features/farm/redux/constants.js b/src/features/farm/redux/constants.js deleted file mode 100644 index 046ecd3ed..000000000 --- a/src/features/farm/redux/constants.js +++ /dev/null @@ -1,39 +0,0 @@ -export const FARM_FETCH_POOLS_INFO_BEGIN = 'FARM_FETCH_POOLS_INFO_BEGIN'; -export const FARM_FETCH_POOLS_INFO_SUCCESS = 'FARM_FETCH_POOLS_INFO_SUCCESS'; -export const FARM_FETCH_POOLS_INFO_FAILURE = 'FARM_FETCH_POOLS_INFO_FAILURE'; - -export const FARM_CHECK_APPROVAL_BEGIN = 'FARM_CHECK_APPROVAL_BEGIN'; -export const FARM_CHECK_APPROVAL_SUCCESS = 'FARM_CHECK_APPROVAL_SUCCESS'; -export const FARM_CHECK_APPROVAL_FAILURE = 'FARM_CHECK_APPROVAL_FAILURE'; - -export const FARM_FETCH_BALANCE_BEGIN = 'FARM_FETCH_BALANCE_BEGIN'; -export const FARM_FETCH_BALANCE_SUCCESS = 'FARM_FETCH_BALANCE_SUCCESS'; -export const FARM_FETCH_BALANCE_FAILURE = 'FARM_FETCH_BALANCE_FAILURE'; - -export const FARM_FETCH_CURRENTLY_STAKED_BEGIN = 'FARM_FETCH_CURRENTLY_STAKED_BEGIN'; -export const FARM_FETCH_CURRENTLY_STAKED_SUCCESS = 'FARM_FETCH_CURRENTLY_STAKED_SUCCESS'; -export const FARM_FETCH_CURRENTLY_STAKED_FAILURE = 'FARM_FETCH_CURRENTLY_STAKED_FAILURE'; - -export const FARM_FETCH_REWARDS_AVAILABLE_BEGIN = 'FARM_FETCH_REWARDS_AVAILABLE_BEGIN'; -export const FARM_FETCH_REWARDS_AVAILABLE_SUCCESS = 'FARM_FETCH_REWARDS_AVAILABLE_SUCCESS'; -export const FARM_FETCH_REWARDS_AVAILABLE_FAILURE = 'FARM_FETCH_REWARDS_AVAILABLE_FAILURE'; - -export const FARM_FETCH_APPROVAL_BEGIN = 'FARM_FETCH_APPROVAL_BEGIN'; -export const FARM_FETCH_APPROVAL_SUCCESS = 'FARM_FETCH_APPROVAL_SUCCESS'; -export const FARM_FETCH_APPROVAL_FAILURE = 'FARM_FETCH_APPROVAL_FAILURE'; - -export const FARM_FETCH_STAKE_BEGIN = 'FARM_FETCH_STAKE_BEGIN'; -export const FARM_FETCH_STAKE_SUCCESS = 'FARM_FETCH_STAKE_SUCCESS'; -export const FARM_FETCH_STAKE_FAILURE = 'FARM_FETCH_STAKE_FAILURE'; - -export const FARM_FETCH_WITHDRAW_BEGIN = 'FARM_FETCH_WITHDRAW_BEGIN'; -export const FARM_FETCH_WITHDRAW_SUCCESS = 'FARM_FETCH_WITHDRAW_SUCCESS'; -export const FARM_FETCH_WITHDRAW_FAILURE = 'FARM_FETCH_WITHDRAW_FAILURE'; - -export const FARM_FETCH_CLAIM_BEGIN = 'FARM_FETCH_CLAIM_BEGIN'; -export const FARM_FETCH_CLAIM_SUCCESS = 'FARM_FETCH_CLAIM_SUCCESS'; -export const FARM_FETCH_CLAIM_FAILURE = 'FARM_FETCH_CLAIM_FAILURE'; - -export const FARM_FETCH_EXIT_BEGIN = 'FARM_FETCH_EXIT_BEGIN'; -export const FARM_FETCH_EXIT_SUCCESS = 'FARM_FETCH_EXIT_SUCCESS'; -export const FARM_FETCH_EXIT_FAILURE = 'FARM_FETCH_EXIT_FAILURE'; \ No newline at end of file diff --git a/src/features/farm/redux/fetchApproval.js b/src/features/farm/redux/fetchApproval.js deleted file mode 100644 index 5c26aad4f..000000000 --- a/src/features/farm/redux/fetchApproval.js +++ /dev/null @@ -1,129 +0,0 @@ -import { useCallback } from 'react'; -import { erc20ABI } from "../../configure"; -import { useDispatch, useSelector, shallowEqual } from 'react-redux'; -import { - FARM_FETCH_APPROVAL_BEGIN, - FARM_FETCH_APPROVAL_SUCCESS, - FARM_FETCH_APPROVAL_FAILURE, -} from './constants'; -import { enqueueSnackbar } from '../../common/redux/actions'; -import { checkApproval } from './action'; - -export function fetchApproval(index) { - return (dispatch, getState) => { - // optionally you can have getState as the second argument - dispatch({ - type: FARM_FETCH_APPROVAL_BEGIN, - index - }); - // Return a promise so that you could control UI flow without states in the store. - // For example: after submit a form, you need to redirect the page to another when succeeds or show some errors message if fails. - // It's hard to use state to manage it, but returning a promise allows you to easily achieve it. - // e.g.: handleSubmit() { this.props.actions.submitForm(data).then(()=> {}).catch(() => {}); } - const promise = new Promise(async (resolve, reject) => { - // doRequest is a placeholder Promise. You should replace it with your own logic. - // See the real-word example at: https://github.com/supnate/rekit/blob/master/src/features/home/redux/fetchRedditReactjsList.js - // args.error here is only for test coverage purpose. - const { home, farm } = getState(); - const { address, web3 } = home; - const { pools } = farm; - const { tokenAddress, earnContractAddress } = pools[index]; - const contract = new web3.eth.Contract(erc20ABI, tokenAddress); - - contract.methods.approve(earnContractAddress, web3.utils.toWei("79228162514", "ether")).send({ from: address }).on( - 'transactionHash', function(hash){ - dispatch(enqueueSnackbar({ - message: hash, - options: { - key: new Date().getTime() + Math.random(), - variant: 'success' - }, - hash - })); - }) - .on('receipt', function(receipt){ - dispatch(enqueueSnackbar({ - key: new Date().getTime() + Math.random(), - message: '交易确认', - options: { - variant: 'success', - }, - })); - dispatch({ type: FARM_FETCH_APPROVAL_SUCCESS, index }); - dispatch(checkApproval(index)) - resolve(); - }) - .on('error', function(error) { - dispatch(enqueueSnackbar({ - message: error.message || error, - options: { - key: new Date().getTime() + Math.random(), - variant: 'error' - }, - })); - dispatch({ type: FARM_FETCH_APPROVAL_FAILURE, index }); - resolve(); - }) - .catch((error) => { - dispatch({ type: FARM_FETCH_APPROVAL_FAILURE, index }); - reject(error) - }) - }); - return promise; - } -} - - -export function useFetchApproval() { - // args: false value or array - // if array, means args passed to the action creator - const dispatch = useDispatch(); - - const { fetchApprovalPending } = useSelector( - state => ({ - fetchApprovalPending: state.farm.fetchApprovalPending, - }) - ); - - const boundAction = useCallback( - data => dispatch(fetchApproval(data)), - [dispatch], - ); - - return { - fetchApproval: boundAction, - fetchApprovalPending - }; -} - -export function reducer(state, action) { - const { fetchApprovalPending } = state; - switch (action.type) { - case FARM_FETCH_APPROVAL_BEGIN: - // Just after a request is sent - fetchApprovalPending[action.index] = true; - return { - ...state, - fetchApprovalPending, - }; - - case FARM_FETCH_APPROVAL_SUCCESS: - // The request is success - fetchApprovalPending[action.index] = false; - return { - ...state, - fetchApprovalPending, - }; - - case FARM_FETCH_APPROVAL_FAILURE: - // The request is failed - fetchApprovalPending[action.index] = false; - return { - ...state, - fetchApprovalPending, - }; - - default: - return state; - } -} \ No newline at end of file diff --git a/src/features/farm/redux/fetchBalance.js b/src/features/farm/redux/fetchBalance.js deleted file mode 100644 index b158790a8..000000000 --- a/src/features/farm/redux/fetchBalance.js +++ /dev/null @@ -1,113 +0,0 @@ -import { useCallback } from 'react'; -import BigNumber from "bignumber.js"; -import { erc20ABI } from "../../configure"; -import { useDispatch, useSelector, shallowEqual } from 'react-redux'; -import { - FARM_FETCH_BALANCE_BEGIN, - FARM_FETCH_BALANCE_SUCCESS, - FARM_FETCH_BALANCE_FAILURE, -} from './constants'; - -export function fetchBalance(index) { - return (dispatch, getState) => { - // optionally you can have getState as the second argument - dispatch({ - type: FARM_FETCH_BALANCE_BEGIN, - index - }); - // Return a promise so that you could control UI flow without states in the store. - // For example: after submit a form, you need to redirect the page to another when succeeds or show some errors message if fails. - // It's hard to use state to manage it, but returning a promise allows you to easily achieve it. - // e.g.: handleSubmit() { this.props.actions.submitForm(data).then(()=> {}).catch(() => {}); } - const promise = new Promise((resolve, reject) => { - // doRequest is a placeholder Promise. You should replace it with your own logic. - // See the real-word example at: https://github.com/supnate/rekit/blob/master/src/features/home/redux/fetchRedditReactjsList.js - // args.error here is only for test coverage purpose. - const { home, farm } = getState(); - const { address, web3 } = home; - const { pools } = farm; - const { tokenAddress } = pools[index]; - const contract = new web3.eth.Contract(erc20ABI, tokenAddress); - contract.methods.balanceOf(address).call({ from: address }).then( - data => { - dispatch({ - type: FARM_FETCH_BALANCE_SUCCESS, - data: new BigNumber(data), - index - }); - resolve(data); - }, - ).catch( - // Use rejectHandler as the second argument so that render errors won't be caught. - error => { - dispatch({ - type: FARM_FETCH_BALANCE_FAILURE, - index - }); - reject(error.message || error); - } - ) - }); - return promise; - } -} - - -export function useFetchBalance() { - // args: false value or array - // if array, means args passed to the action creator - const dispatch = useDispatch(); - - const { balance, fetchBalancePending } = useSelector( - state => ({ - balance: state.farm.balance, - fetchBalancePending: state.farm.fetchBalancePending, - }) - ); - - const boundAction = useCallback( - data => dispatch(fetchBalance(data)), - [dispatch], - ); - - return { - balance, - fetchBalance: boundAction, - fetchBalancePending - }; -} - -export function reducer(state, action) { - const { balance, fetchBalancePending } = state; - switch (action.type) { - case FARM_FETCH_BALANCE_BEGIN: - // Just after a request is sent - fetchBalancePending[action.index] = true; - return { - ...state, - fetchBalancePending, - }; - - case FARM_FETCH_BALANCE_SUCCESS: - // The request is success - - balance[action.index] = action.data; - fetchBalancePending[action.index] = false; - return { - ...state, - balance, - fetchBalancePending, - }; - - case FARM_FETCH_BALANCE_FAILURE: - // The request is failed - fetchBalancePending[action.index] = false; - return { - ...state, - fetchBalancePending, - }; - - default: - return state; - } -} \ No newline at end of file diff --git a/src/features/farm/redux/fetchClaim.js b/src/features/farm/redux/fetchClaim.js deleted file mode 100644 index 40511a81d..000000000 --- a/src/features/farm/redux/fetchClaim.js +++ /dev/null @@ -1,126 +0,0 @@ -import { useCallback } from 'react'; -import { useDispatch, useSelector, shallowEqual } from 'react-redux'; -import { - FARM_FETCH_CLAIM_BEGIN, - FARM_FETCH_CLAIM_SUCCESS, - FARM_FETCH_CLAIM_FAILURE, -} from './constants'; -import { enqueueSnackbar } from '../../common/redux/actions' - -export function fetchClaim(index) { - return (dispatch, getState) => { - // optionally you can have getState as the second argument - dispatch({ - type: FARM_FETCH_CLAIM_BEGIN, - index - }); - // Return a promise so that you could control UI flow without states in the store. - // For example: after submit a form, you need to redirect the page to another when succeeds or show some errors message if fails. - // It's hard to use state to manage it, but returning a promise allows you to easily achieve it. - // e.g.: handleSubmit() { this.props.actions.submitForm(data).then(()=> {}).catch(() => {}); } - const promise = new Promise(async (resolve, reject) => { - // doRequest is a placeholder Promise. You should replace it with your own logic. - // See the real-word example at: https://github.com/supnate/rekit/blob/master/src/features/home/redux/fetchRedditReactjsList.js - // args.error here is only for test coverage purpose. - const { home, farm } = getState(); - const { address, web3 } = home; - const { pools } = farm; - const { earnContractAbi, earnContractAddress } = pools[index]; - const contract = new web3.eth.Contract(earnContractAbi, earnContractAddress); - - contract.methods.getReward().send({ from: address }).on( - 'transactionHash', function(hash){ - dispatch(enqueueSnackbar({ - message: hash, - options: { - key: new Date().getTime() + Math.random(), - variant: 'success' - }, - hash - })); - }) - .on('receipt', function(receipt){ - dispatch(enqueueSnackbar({ - key: new Date().getTime() + Math.random(), - message: '交易确认', - options: { - variant: 'success', - }, - })); - dispatch({ type: FARM_FETCH_CLAIM_SUCCESS, index }); - resolve(); - }) - .on('error', function(error) { - dispatch(enqueueSnackbar({ - message: error.message || error, - options: { - key: new Date().getTime() + Math.random(), - variant: 'error' - }, - })); - dispatch({ type: FARM_FETCH_CLAIM_FAILURE, index }); - resolve(); - }) - .catch((error) => { - dispatch({ type: FARM_FETCH_CLAIM_FAILURE, index}); - reject(error) - }) - }); - return promise; - } -} - - -export function useFetchClaim() { - // args: false value or array - // if array, means args passed to the action creator - const dispatch = useDispatch(); - - const { fetchClaimPending } = useSelector( - state => ({ - fetchClaimPending: state.farm.fetchClaimPending, - }) - ); - - const boundAction = useCallback( - data => dispatch(fetchClaim(data)), - [dispatch], - ); - - return { - fetchClaim: boundAction, - fetchClaimPending - }; -} - -export function reducer(state, action) { - const { fetchClaimPending } = state; - switch (action.type) { - case FARM_FETCH_CLAIM_BEGIN: - // Just after a request is sent - fetchClaimPending[action.index] = true; - return { - ...state, - fetchClaimPending, - }; - - case FARM_FETCH_CLAIM_SUCCESS: - // The request is success - fetchClaimPending[action.index] = false; - return { - ...state, - fetchClaimPending, - }; - - case FARM_FETCH_CLAIM_FAILURE: - // The request is failed - fetchClaimPending[action.index] = false; - return { - ...state, - fetchClaimPending, - }; - - default: - return state; - } -} \ No newline at end of file diff --git a/src/features/farm/redux/fetchCurrentlyStaked.js b/src/features/farm/redux/fetchCurrentlyStaked.js deleted file mode 100644 index b8257565b..000000000 --- a/src/features/farm/redux/fetchCurrentlyStaked.js +++ /dev/null @@ -1,111 +0,0 @@ -import { useCallback } from 'react'; -import BigNumber from "bignumber.js"; -import { useDispatch, useSelector, shallowEqual } from 'react-redux'; -import { - FARM_FETCH_CURRENTLY_STAKED_BEGIN, - FARM_FETCH_CURRENTLY_STAKED_SUCCESS, - FARM_FETCH_CURRENTLY_STAKED_FAILURE, -} from './constants'; - -export function fetchCurrentlyStaked(index) { - return (dispatch, getState) => { - // optionally you can have getState as the second argument - dispatch({ - type: FARM_FETCH_CURRENTLY_STAKED_BEGIN, - index - }); - // Return a promise so that you could control UI flow without states in the store. - // For example: after submit a form, you need to redirect the page to another when succeeds or show some errors message if fails. - // It's hard to use state to manage it, but returning a promise allows you to easily achieve it. - // e.g.: handleSubmit() { this.props.actions.submitForm(data).then(()=> {}).catch(() => {}); } - const promise = new Promise((resolve, reject) => { - // doRequest is a placeholder Promise. You should replace it with your own logic. - // See the real-word example at: https://github.com/supnate/rekit/blob/master/src/features/home/redux/fetchRedditReactjsList.js - // args.error here is only for test coverage purpose. - const { home, farm } = getState(); - const { address, web3 } = home; - const { pools } = farm; - const { earnContractAbi, earnContractAddress } = pools[index]; - const contract = new web3.eth.Contract(earnContractAbi, earnContractAddress); - contract.methods.balanceOf(address).call({ from: address }).then( - data => { - dispatch({ - type: FARM_FETCH_CURRENTLY_STAKED_SUCCESS, - data: new BigNumber(data).toNumber(), - index - }); - resolve(data); - }, - ).catch( - // Use rejectHandler as the second argument so that render errors won't be caught. - error => { - dispatch({ - type: FARM_FETCH_CURRENTLY_STAKED_FAILURE, - index - }); - reject(error.message || error); - } - ) - }); - return promise; - } -} - - -export function useFetchCurrentlyStaked() { - // args: false value or array - // if array, means args passed to the action creator - const dispatch = useDispatch(); - - const { currentlyStaked, fetchCurrentlyStakedPending } = useSelector( - state => ({ - currentlyStaked: state.farm.currentlyStaked, - fetchCurrentlyStakedPending: state.farm.fetchCurrentlyStakedPending, - }) - ); - - const boundAction = useCallback( - data => dispatch(fetchCurrentlyStaked(data)), - [dispatch], - ); - - return { - currentlyStaked, - fetchCurrentlyStaked: boundAction, - fetchCurrentlyStakedPending - }; -} - -export function reducer(state, action) { - const { currentlyStaked, fetchCurrentlyStakedPending } = state; - switch (action.type) { - case FARM_FETCH_CURRENTLY_STAKED_BEGIN: - // Just after a request is sent - fetchCurrentlyStakedPending[action.index] = true; - return { - ...state, - fetchCurrentlyStakedPending, - }; - - case FARM_FETCH_CURRENTLY_STAKED_SUCCESS: - // The request is success - currentlyStaked[action.index] = action.data; - fetchCurrentlyStakedPending[action.index] = false; - return { - ...state, - currentlyStaked, - fetchCurrentlyStakedPending, - }; - - case FARM_FETCH_CURRENTLY_STAKED_FAILURE: - // The request is failed - fetchCurrentlyStakedPending[action.index] = false; - return { - ...state, - fetchCurrentlyStakedPending, - }; - - default: - return state; - } -} \ No newline at end of file diff --git a/src/features/farm/redux/fetchExit.js b/src/features/farm/redux/fetchExit.js deleted file mode 100644 index 29733b6ed..000000000 --- a/src/features/farm/redux/fetchExit.js +++ /dev/null @@ -1,126 +0,0 @@ -import { useCallback } from 'react'; -import { useDispatch, useSelector, shallowEqual } from 'react-redux'; -import { - FARM_FETCH_EXIT_BEGIN, - FARM_FETCH_EXIT_SUCCESS, - FARM_FETCH_EXIT_FAILURE, -} from './constants'; -import { enqueueSnackbar } from '../../common/redux/actions' - -export function fetchExit(index) { - return (dispatch, getState) => { - // optionally you can have getState as the second argument - dispatch({ - type: FARM_FETCH_EXIT_BEGIN, - index - }); - // Return a promise so that you could control UI flow without states in the store. - // For example: after submit a form, you need to redirect the page to another when succeeds or show some errors message if fails. - // It's hard to use state to manage it, but returning a promise allows you to easily achieve it. - // e.g.: handleSubmit() { this.props.actions.submitForm(data).then(()=> {}).catch(() => {}); } - const promise = new Promise(async (resolve, reject) => { - // doRequest is a placeholder Promise. You should replace it with your own logic. - // See the real-word example at: https://github.com/supnate/rekit/blob/master/src/features/home/redux/fetchRedditReactjsList.js - // args.error here is only for test coverage purpose. - const { home, farm } = getState(); - const { address, web3 } = home; - const { pools } = farm; - const { earnContractAbi, earnContractAddress } = pools[index]; - const contract = new web3.eth.Contract(earnContractAbi, earnContractAddress); - - contract.methods.exit().send({ from: address }).on( - 'transactionHash', function(hash){ - dispatch(enqueueSnackbar({ - message: hash, - options: { - key: new Date().getTime() + Math.random(), - variant: 'success' - }, - hash - })); - }) - .on('receipt', function(receipt){ - dispatch(enqueueSnackbar({ - key: new Date().getTime() + Math.random(), - message: '交易确认', - options: { - variant: 'success', - }, - })); - dispatch({ type: FARM_FETCH_EXIT_SUCCESS, index }); - resolve(); - }) - .on('error', function(error) { - dispatch(enqueueSnackbar({ - message: error.message || error, - options: { - key: new Date().getTime() + Math.random(), - variant: 'error' - }, - })); - dispatch({ type: FARM_FETCH_EXIT_FAILURE, index }); - resolve(); - }) - .catch((error) => { - dispatch({ type: FARM_FETCH_EXIT_FAILURE, index }); - reject(error) - }) - }); - return promise; - } -} - - -export function useFetchExit() { - // args: false value or array - // if array, means args passed to the action creator - const dispatch = useDispatch(); - - const { fetchExitPending } = useSelector( - state => ({ - fetchExitPending: state.farm.fetchExitPending, - }) - ); - - const boundAction = useCallback( - data => dispatch(fetchExit(data)), - [dispatch], - ); - - return { - fetchExit: boundAction, - fetchExitPending - }; -} - -export function reducer(state, action) { - const { fetchExitPending } = state; - switch (action.type) { - case FARM_FETCH_EXIT_BEGIN: - // Just after a request is sent - fetchExitPending[action.index] = true; - return { - ...state, - fetchExitPending, - }; - - case FARM_FETCH_EXIT_SUCCESS: - // The request is success - fetchExitPending[action.index] = false; - return { - ...state, - fetchExitPending, - }; - - case FARM_FETCH_EXIT_FAILURE: - // The request is failed - fetchExitPending[action.index] = false; - return { - ...state, - fetchExitPending, - }; - - default: - return state; - } -} \ No newline at end of file diff --git a/src/features/farm/redux/fetchPoolsInfo.js b/src/features/farm/redux/fetchPoolsInfo.js deleted file mode 100644 index 9703fd3e5..000000000 --- a/src/features/farm/redux/fetchPoolsInfo.js +++ /dev/null @@ -1,95 +0,0 @@ -import axios from 'axios'; -import { useCallback } from 'react'; -import { useDispatch, useSelector, shallowEqual } from 'react-redux'; -import { - FARM_FETCH_POOLS_INFO_BEGIN, - FARM_FETCH_POOLS_INFO_SUCCESS, - FARM_FETCH_POOLS_INFO_FAILURE, -} from './constants'; - -export function fetchPoolsInfo() { - return (dispatch, getState) => { - // optionally you can have getState as the second argument - dispatch({ type: FARM_FETCH_POOLS_INFO_BEGIN }); - - // Return a promise so that you could control UI flow without states in the store. - // For example: after submit a form, you need to redirect the page to another when succeeds or show some errors message if fails. - // It's hard to use state to manage it, but returning a promise allows you to easily achieve it. - // e.g.: handleSubmit() { this.props.actions.submitForm(data).then(()=> {}).catch(() => {}); } - const promise = new Promise((resolve, reject) => { - // doRequest is a placeholder Promise. You should replace it with your own logic. - // See the real-word example at: https://github.com/supnate/rekit/blob/master/src/features/home/redux/fetchRedditReactjsList.js - // args.error here is only for test coverage purpose. - const doRequest = axios.get('https://api1.dfi.money/farm/pools/'); - - doRequest.then( - res => { - dispatch({ - type: FARM_FETCH_POOLS_INFO_SUCCESS, - data: res.data.data, - }); - resolve(res); - }, - // Use rejectHandler as the second argument so that render errors won't be caught. - err => { - dispatch({ type: FARM_FETCH_POOLS_INFO_FAILURE }); - reject(err); - }, - ); - }); - return promise; - }; -} - -export function useFetchPoolsInfo() { - // args: false value or array - // if array, means args passed to the action creator - const dispatch = useDispatch(); - - const { pools, poolsInfo, fetchPoolsInfoPending } = useSelector( - state => ({ - pools: state.farm.pools, - poolsInfo: state.farm.poolsInfo, - fetchPoolsInfoPending: state.farm.fetchPoolsInfoPending, - }), - shallowEqual, - ); - - const boundAction = useCallback(() => dispatch(fetchPoolsInfo()), [dispatch]); - - return { - fetchPoolsInfo: boundAction, - pools, - poolsInfo, - fetchPoolsInfoPending - }; -} - -export function reducer(state, action) { - switch (action.type) { - case FARM_FETCH_POOLS_INFO_BEGIN: - // Just after a request is sent - return { - ...state, - fetchPoolsInfoPending: true - }; - - case FARM_FETCH_POOLS_INFO_SUCCESS: - // The request is success - return { - ...state, - poolsInfo: action.data, - fetchPoolsInfoPending: false - }; - - case FARM_FETCH_POOLS_INFO_FAILURE: - // The request is failed - return { - ...state, - fetchPoolsInfoPending: false - }; - - default: - return state; - } -} \ No newline at end of file diff --git a/src/features/farm/redux/fetchRewardsAvailable.js b/src/features/farm/redux/fetchRewardsAvailable.js deleted file mode 100644 index dcc14ff57..000000000 --- a/src/features/farm/redux/fetchRewardsAvailable.js +++ /dev/null @@ -1,112 +0,0 @@ -import { useCallback } from 'react'; -import BigNumber from "bignumber.js"; -import { useDispatch, useSelector, shallowEqual } from 'react-redux'; -import { - FARM_FETCH_REWARDS_AVAILABLE_BEGIN, - FARM_FETCH_REWARDS_AVAILABLE_SUCCESS, - FARM_FETCH_REWARDS_AVAILABLE_FAILURE, -} from './constants'; - -export function fetchRewardsAvailable(index) { - return (dispatch, getState) => { - // optionally you can have getState as the second argument - dispatch({ - type: FARM_FETCH_REWARDS_AVAILABLE_BEGIN, - index - }); - // Return a promise so that you could control UI flow without states in the store. - // For example: after submit a form, you need to redirect the page to another when succeeds or show some errors message if fails. - // It's hard to use state to manage it, but returning a promise allows you to easily achieve it. - // e.g.: handleSubmit() { this.props.actions.submitForm(data).then(()=> {}).catch(() => {}); } - const promise = new Promise((resolve, reject) => { - // doRequest is a placeholder Promise. You should replace it with your own logic. - // See the real-word example at: https://github.com/supnate/rekit/blob/master/src/features/home/redux/fetchRedditReactjsList.js - // args.error here is only for test coverage purpose. - const { home, farm } = getState(); - const { address, web3 } = home; - const { pools } = farm; - const { earnContractAbi, earnContractAddress } = pools[index]; - const contract = new web3.eth.Contract(earnContractAbi, earnContractAddress); - contract.methods.earned(address).call({ from: address }).then( - data => { - dispatch({ - type: FARM_FETCH_REWARDS_AVAILABLE_SUCCESS, - data: new BigNumber(data).toNumber(), - index - }); - resolve(data); - }, - ).catch( - // Use rejectHandler as the second argument so that render errors won't be caught. - error => { - dispatch({ - type: FARM_FETCH_REWARDS_AVAILABLE_FAILURE, - index - }); - reject(error.message || error); - } - ) - }); - return promise; - } -} - - -export function useFetchRewardsAvailable() { - // args: false value or array - // if array, means args passed to the action creator - const dispatch = useDispatch(); - - const { rewardsAvailable, fetchRewardsAvailablePending } = useSelector( - state => ({ - rewardsAvailable: state.farm.rewardsAvailable, - fetchRewardsAvailablePending: state.farm.fetchRewardsAvailablePending, - }) - ); - - const boundAction = useCallback( - data => dispatch(fetchRewardsAvailable(data)), - [dispatch], - ); - - return { - rewardsAvailable, - fetchRewardsAvailable: boundAction, - fetchRewardsAvailablePending - }; -} - -export function reducer(state, action) { - const { rewardsAvailable, fetchRewardsAvailablePending } = state; - switch (action.type) { - case FARM_FETCH_REWARDS_AVAILABLE_BEGIN: - // Just after a request is sent - fetchRewardsAvailablePending[action.index] = true; - return { - ...state, - fetchRewardsAvailablePending, - }; - - case FARM_FETCH_REWARDS_AVAILABLE_SUCCESS: - // The request is success - - rewardsAvailable[action.index] = action.data; - fetchRewardsAvailablePending[action.index] = false; - return { - ...state, - rewardsAvailable, - fetchRewardsAvailablePending, - }; - - case FARM_FETCH_REWARDS_AVAILABLE_FAILURE: - // The request is failed - fetchRewardsAvailablePending[action.index] = false; - return { - ...state, - fetchRewardsAvailablePending, - }; - - default: - return state; - } -} \ No newline at end of file diff --git a/src/features/farm/redux/fetchStake.js b/src/features/farm/redux/fetchStake.js deleted file mode 100644 index 79fe7ed19..000000000 --- a/src/features/farm/redux/fetchStake.js +++ /dev/null @@ -1,129 +0,0 @@ -import { useCallback } from 'react'; -import { useDispatch, useSelector, shallowEqual } from 'react-redux'; -import { - FARM_FETCH_STAKE_BEGIN, - FARM_FETCH_STAKE_SUCCESS, - FARM_FETCH_STAKE_FAILURE, -} from './constants'; -import { fetchBalance, fetchCurrentlyStaked } from './action' -import { enqueueSnackbar } from '../../common/redux/actions' - -export function fetchStake(index, amount) { - return (dispatch, getState) => { - // optionally you can have getState as the second argument - dispatch({ - type: FARM_FETCH_STAKE_BEGIN, - index - }); - // Return a promise so that you could control UI flow without states in the store. - // For example: after submit a form, you need to redirect the page to another when succeeds or show some errors message if fails. - // It's hard to use state to manage it, but returning a promise allows you to easily achieve it. - // e.g.: handleSubmit() { this.props.actions.submitForm(data).then(()=> {}).catch(() => {}); } - const promise = new Promise(async (resolve, reject) => { - // doRequest is a placeholder Promise. You should replace it with your own logic. - // See the real-word example at: https://github.com/supnate/rekit/blob/master/src/features/home/redux/fetchRedditReactjsList.js - // args.error here is only for test coverage purpose. - const { home, farm } = getState(); - const { address, web3 } = home; - const { pools } = farm; - const { earnContractAbi, earnContractAddress } = pools[index]; - const contract = new web3.eth.Contract(earnContractAbi, earnContractAddress); - - contract.methods.stake(amount).send({ from: address }).on( - 'transactionHash', function(hash){ - dispatch(enqueueSnackbar({ - message: hash, - options: { - key: new Date().getTime() + Math.random(), - variant: 'success' - }, - hash - })); - }) - .on('receipt', function(receipt){ - dispatch(enqueueSnackbar({ - key: new Date().getTime() + Math.random(), - message: '交易确认', - options: { - variant: 'success', - }, - })); - dispatch({ type: FARM_FETCH_STAKE_SUCCESS, index }); - dispatch(fetchBalance(index)) - dispatch(fetchCurrentlyStaked(index)) - resolve(); - }) - .on('error', function(error) { - dispatch(enqueueSnackbar({ - message: error.message || error, - options: { - key: new Date().getTime() + Math.random(), - variant: 'error' - }, - })); - dispatch({ type: FARM_FETCH_STAKE_FAILURE, index }); - resolve(); - }) - .catch((error) => { - dispatch({ type: FARM_FETCH_STAKE_FAILURE, index }); - reject(error) - }) - }); - return promise; - } -} - - -export function useFetchStake() { - // args: false value or array - // if array, means args passed to the action creator - const dispatch = useDispatch(); - - const { fetchStakePending } = useSelector( - state => ({ - fetchStakePending: state.farm.fetchStakePending, - }) - ); - - const boundAction = useCallback( - (data, amount) => dispatch(fetchStake(data, amount)), - [dispatch], - ); - - return { - fetchStake: boundAction, - fetchStakePending - }; -} - -export function reducer(state, action) { - const { fetchStakePending } = state; - switch (action.type) { - case FARM_FETCH_STAKE_BEGIN: - // Just after a request is sent - fetchStakePending[action.index] = true; - return { - ...state, - fetchStakePending - }; - - case FARM_FETCH_STAKE_SUCCESS: - // The request is success - fetchStakePending[action.index] = false; - return { - ...state, - fetchStakePending - }; - - case FARM_FETCH_STAKE_FAILURE: - // The request is failed - fetchStakePending[action.index] = false; - return { - ...state, - fetchStakePending - }; - - default: - return state; - } -} \ No newline at end of file diff --git a/src/features/farm/redux/fetchWithdraw.js b/src/features/farm/redux/fetchWithdraw.js deleted file mode 100644 index 2af0b4c7a..000000000 --- a/src/features/farm/redux/fetchWithdraw.js +++ /dev/null @@ -1,125 +0,0 @@ -import { useCallback } from 'react'; -import { useDispatch, useSelector, shallowEqual } from 'react-redux'; -import { - FARM_FETCH_WITHDRAW_BEGIN, - FARM_FETCH_WITHDRAW_SUCCESS, - FARM_FETCH_WITHDRAW_FAILURE, -} from './constants'; -import { enqueueSnackbar } from '../../common/redux/actions' - -export function fetchWithdraw(index, amount) { - return (dispatch, getState) => { - // optionally you can have getState as the second argument - dispatch({ - type: FARM_FETCH_WITHDRAW_BEGIN, - index - }); - // Return a promise so that you could control UI flow without states in the store. - // For example: after submit a form, you need to redirect the page to another when succeeds or show some errors message if fails. - // It's hard to use state to manage it, but returning a promise allows you to easily achieve it. - // e.g.: handleSubmit() { this.props.actions.submitForm(data).then(()=> {}).catch(() => {}); } - const promise = new Promise(async (resolve, reject) => { - // doRequest is a placeholder Promise. You should replace it with your own logic. - // See the real-word example at: https://github.com/supnate/rekit/blob/master/src/features/home/redux/fetchRedditReactjsList.js - // args.error here is only for test coverage purpose. - const { home, farm } = getState(); - const { address, web3 } = home; - const { pools } = farm; - const { earnContractAbi, earnContractAddress } = pools[index]; - const contract = new web3.eth.Contract(earnContractAbi, earnContractAddress); - - contract.methods.withdraw(amount).send({ from: address }).on( - 'transactionHash', function(hash){ - dispatch(enqueueSnackbar({ - message: hash, - options: { - key: new Date().getTime() + Math.random(), - variant: 'success' - }, - hash - })); - }) - .on('receipt', function(receipt){ - dispatch(enqueueSnackbar({ - key: new Date().getTime() + Math.random(), - message: '交易确认', - options: { - variant: 'success', - }, - })); - dispatch({ type: FARM_FETCH_WITHDRAW_SUCCESS, index }); - resolve(); - }) - .on('error', function(error) { - dispatch(enqueueSnackbar({ - message: error.message || error, - options: { - key: new Date().getTime() + Math.random(), - variant: 'error' - }, - })); - dispatch({ type: FARM_FETCH_WITHDRAW_FAILURE, index }); - resolve(); - }) - .catch((error) => { - dispatch({ type: FARM_FETCH_WITHDRAW_FAILURE, index }); - reject(error) - }) - }); - return promise; - } -} - -export function useFetchWithdraw() { - // args: false value or array - // if array, means args passed to the action creator - const dispatch = useDispatch(); - - const { fetchWithdrawPending } = useSelector( - state => ({ - fetchWithdrawPending: state.farm.fetchWithdrawPending, - }) - ); - - const boundAction = useCallback( - (data, amount) => dispatch(fetchWithdraw(data, amount)), - [dispatch], - ); - - return { - fetchWithdraw: boundAction, - fetchWithdrawPending - }; -} - -export function reducer(state, action) { - const { fetchWithdrawPending } = state; - switch (action.type) { - case FARM_FETCH_WITHDRAW_BEGIN: - // Just after a request is sent - fetchWithdrawPending[action.index] = true; - return { - ...state, - fetchWithdrawPending, - }; - - case FARM_FETCH_WITHDRAW_SUCCESS: - // The request is success - fetchWithdrawPending[action.index] = false; - return { - ...state, - fetchWithdrawPending, - }; - - case FARM_FETCH_WITHDRAW_FAILURE: - // The request is failed - fetchWithdrawPending[action.index] = false; - return { - ...state, - fetchWithdrawPending, - }; - - default: - return state; - } -} \ No newline at end of file diff --git a/src/features/farm/redux/hooks.js b/src/features/farm/redux/hooks.js deleted file mode 100644 index 0264242b1..000000000 --- a/src/features/farm/redux/hooks.js +++ /dev/null @@ -1,10 +0,0 @@ -export { useFetchPoolsInfo } from './fetchPoolsInfo'; -export { useCheckApproval } from './checkApproval'; -export { useFetchBalance } from './fetchBalance'; -export { useFetchCurrentlyStaked } from './fetchCurrentlyStaked'; -export { useFetchRewardsAvailable } from './fetchRewardsAvailable'; -export { useFetchApproval } from './fetchApproval'; -export { useFetchStake } from './fetchStake'; -export { useFetchWithdraw } from './fetchWithdraw'; -export { useFetchClaim } from './fetchClaim'; -export { useFetchExit } from './fetchExit'; \ No newline at end of file diff --git a/src/features/farm/redux/initialState.js b/src/features/farm/redux/initialState.js deleted file mode 100644 index 7ab4d6b73..000000000 --- a/src/features/farm/redux/initialState.js +++ /dev/null @@ -1,78 +0,0 @@ -import {pool4Abi} from "../../configure"; - -const pools = [ - { - name: 'YFII', - description: '', - token: 'YFII', - tokenDescription: 'YFII', - tokenDecimals: 18, - tokenAddress: '0xa1d0E215a23d7030842FC67cE582a6aFa3CCaB83', - earnedToken: 'MEFI', - earnedTokenDescription: '', - earnedTokenDecimals: 8, - earnedTokenAddress: '0x1a969239E12F07281f8876D11AfceE081D872adf', - earnContractAddress: '0x6A77c0c917Da188fBfa9C380f2E60dd223c0c35a', - earnContractAbi: pool4Abi, - color: '255,45,130', - startTimestamp: 1601373600, - earnTime: 1 * 7 * 24 * 3600, - earnedTokenUrl: 'https://meet.one' - }, - { - name: 'mefilp', - description: '', - token: 'MEFI/ETH', - tokenDescription: 'MEFI-ETH UNI-V2 LP', - tokenDecimals: 18, - tokenAddress: '0xc4b478E749dbCFDdF96C6f84f4133E2f03c345a9', - earnedToken: 'MEFI', - earnedTokenDescription: '', - earnedTokenDecimals: 8, - earnedTokenAddress: '0x1a969239E12F07281f8876D11AfceE081D872adf', - earnContractAddress: '0x6CA21695CB12A251bB19aE73Bda6964f1BBc48De', - earnContractAbi: pool4Abi, - color: '254,119,0', - startTimestamp: 1601373600, - earnTime: 2 * 7 * 24 * 3600, - earnedTokenUrl: 'https://meet.one' - }, -]; - -const length = pools.length; -const poolsInfo = Array(length).fill({staked: 0, tvl: 0, apy: 0}); -const fetchPoolsInfoPending = false; -const allowance = Array(length).fill(0); -const checkApprovalPending = Array(length).fill(false); -const balance = Array(length).fill(0); -const fetchBalancePending = Array(length).fill(false); -const currentlyStaked = Array(length).fill(0); -const fetchCurrentlyStakedPending = Array(length).fill(false); -const rewardsAvailable = Array(length).fill(0); -const fetchRewardsAvailablePending = Array(length).fill(false); -const fetchApprovalPending = Array(length).fill(false); -const fetchStakePending = Array(length).fill(false); -const fetchWithdrawPending = Array(length).fill(false); -const fetchClaimPending = Array(length).fill(false); -const fetchExitPending = Array(length).fill(false); - -const initialState = { - pools, - poolsInfo, - fetchPoolsInfoPending, - allowance, - checkApprovalPending, - balance, - fetchBalancePending, - currentlyStaked, - fetchCurrentlyStakedPending, - rewardsAvailable, - fetchRewardsAvailablePending, - fetchApprovalPending, - fetchStakePending, - fetchWithdrawPending, - fetchClaimPending, - fetchExitPending -}; - -export default initialState; \ No newline at end of file diff --git a/src/features/farm/redux/reducer.js b/src/features/farm/redux/reducer.js deleted file mode 100644 index 6e788dd59..000000000 --- a/src/features/farm/redux/reducer.js +++ /dev/null @@ -1,37 +0,0 @@ -import initialState from './initialState'; -import { reducer as fetchPoolsInfoReducer} from './fetchPoolsInfo'; -import { reducer as checkApprovalReducer} from './checkApproval'; -import { reducer as fetchBalanceReducer} from './fetchBalance'; -import { reducer as fetchCurrentlyStakedReducer } from './fetchCurrentlyStaked'; -import { reducer as fetchRewardsAvailableReducer } from './fetchRewardsAvailable'; -import { reducer as fetchApprovalReducer } from './fetchApproval'; -import { reducer as fetchStakeReducer } from './fetchStake'; -import { reducer as fetchWithdrawReducer } from './fetchWithdraw'; -import { reducer as fetchClaimReducer } from './fetchClaim'; -import { reducer as fetchExitReducer } from './fetchExit'; - - -const reducers = [ - fetchPoolsInfoReducer, - checkApprovalReducer, - fetchBalanceReducer, - fetchCurrentlyStakedReducer, - fetchRewardsAvailableReducer, - fetchApprovalReducer, - fetchStakeReducer, - fetchWithdrawReducer, - fetchClaimReducer, - fetchExitReducer -]; - -export default function reducer(state = initialState, action) { - let newState; - switch (action.type) { - // Handle cross-topic actions here - default: - newState = state; - break; - } - /* istanbul ignore next */ - return reducers.reduce((s, r) => r(s, action), newState); -} \ No newline at end of file diff --git a/src/features/farm/route.js b/src/features/farm/route.js deleted file mode 100644 index bf0f417b9..000000000 --- a/src/features/farm/route.js +++ /dev/null @@ -1,9 +0,0 @@ -import { FarmPage, PoolPage } from './'; - -export default { - path: 'farm', - childRoutes: [ - { path: 'farm', component: FarmPage, isIndex: true }, - { path: 'pool/:index', component: PoolPage }, - ], -}; diff --git a/src/features/farm/sections/FarmPool.js b/src/features/farm/sections/FarmPool.js deleted file mode 100644 index 0ef7f4abf..000000000 --- a/src/features/farm/sections/FarmPool.js +++ /dev/null @@ -1,356 +0,0 @@ -import React, {useState, useEffect} from 'react'; -import classNames from "classnames"; -import {useTranslation} from 'react-i18next'; -import BigNumber from 'bignumber.js' -import {byDecimals} from 'features/helpers/bignumber'; -import {makeStyles} from "@material-ui/core/styles"; -import GridItem from "components/Grid/GridItem.js"; -import Avatar from '@material-ui/core/Avatar'; -import Grid from '@material-ui/core/Grid'; -import {farmPoolsStyle} from "../jss/sections/farmPoolsStyle"; -import Button from "../../../components/CustomButtons/Button"; -import TextButton from '@material-ui/core/Button'; - -import {useConnectWallet} from '../../home/redux/hooks'; -import { - useCheckApproval, - useFetchPoolsInfo, - useFetchBalance, - useFetchCurrentlyStaked, - useFetchRewardsAvailable, - useFetchApproval, - useFetchStake, - useFetchWithdraw, - useFetchClaim, - useFetchExit -} from '../redux/hooks'; -import Dialog from "@material-ui/core/Dialog"; -import DialogTitle from "@material-ui/core/DialogTitle"; -import DialogContent from "@material-ui/core/DialogContent"; -import DialogContentText from "@material-ui/core/DialogContentText"; -import TextField from "@material-ui/core/TextField"; -import DialogActions from "@material-ui/core/DialogActions"; -import {Input} from "@material-ui/core"; - -const useStyles = makeStyles(farmPoolsStyle); - -export default function FarmPool(props) { - const classes = useStyles(); - const {t, i18n} = useTranslation(); - const {address} = useConnectWallet(); - const {allowance, checkApproval} = useCheckApproval(); - const {pools} = useFetchPoolsInfo(); - const {balance, fetchBalance} = useFetchBalance(); - const {currentlyStaked, fetchCurrentlyStaked} = useFetchCurrentlyStaked(); - const {rewardsAvailable, fetchRewardsAvailable} = useFetchRewardsAvailable(); - const {fetchApproval, fetchApprovalPending} = useFetchApproval(); - const {fetchStake, fetchStakePending} = useFetchStake(); - const {fetchWithdraw, fetchWithdrawPending} = useFetchWithdraw(); - const {fetchClaim, fetchClaimPending} = useFetchClaim(); - const {fetchExit, fetchExitPending} = useFetchExit(); - const [index, setIndex] = useState(Number(props.match.params.index) - 1); - const [showInput, setShowInput] = useState(false); - const [isStake, setIsStake] = useState(true); - // const [ pageSize,setPageSize ] = useState(''); - const [isNeedApproval, setIsNeedApproval] = useState(true); - const [approvalAble, setApprovalAble] = useState(false); - const [stakeAble, setStakeAble] = useState(true); - const [withdrawAble, setWithdrawAble] = useState(true); - const [claimAble, setClaimAble] = useState(true); - const [exitAble, setExitAble] = useState(true); - const [myBalance, setMyBalance] = useState(new BigNumber(balance[index])); - const [myCurrentlyStaked, setMyCurrentlyStaked] = useState(new BigNumber(currentlyStaked[index])); - const [myRewardsAvailable, setMyRewardsAvailable] = useState(new BigNumber(rewardsAvailable[index])); - const [myHalfTime, setMyHalfTime] = useState(`0day 00:00:00`); - const [inputVal, setInputVal] = useState(0); - const [anchorEl, setAnchorEl] = useState(null); - // 弹窗 - const [dialogShow, setDialogShow] = useState(false); - // 存入、解除质押 弹窗类型 - const [dialogType, setDialogType] = useState(1); - - useEffect(() => { - setIndex(Number(props.match.params.index) - 1); - }, [Number(props.match.params.index)]); - - useEffect(() => { - setIsNeedApproval(Boolean(allowance[index] === 0)); - // setIsNeedApproval(false); - }, [allowance[index], index]); - - useEffect(() => { - setApprovalAble(!Boolean(fetchApprovalPending[index])); - }, [fetchApprovalPending[index], index]); - - const onApproval = () => { - fetchApproval(index); - } - - useEffect(() => { - setStakeAble(!Boolean(fetchStakePending[index])); - }, [fetchStakePending[index], index]); - - const onStake = () => { - const amount = new BigNumber(inputVal).multipliedBy(new BigNumber(10).exponentiatedBy(pools[index].tokenDecimals)).toString(10); - fetchStake(index, amount); - } - - useEffect(() => { - const isPending = Boolean(fetchWithdrawPending[index]); - const currentlyStakedIs0 = currentlyStaked[index] === 0; - setWithdrawAble(!Boolean(isPending || currentlyStakedIs0)); - // setWithdrawAble(true) - }, [currentlyStaked[index], fetchWithdrawPending[index], index]); - - const onWithdraw = () => { - const amount = new BigNumber(inputVal).multipliedBy(new BigNumber(10).exponentiatedBy(pools[index].tokenDecimals)).toString(10); - fetchWithdraw(index, amount); - } - - useEffect(() => { - const isPending = Boolean(fetchClaimPending[index]); - const rewardsAvailableIs0 = rewardsAvailable[index] === 0; - setClaimAble(!Boolean(isPending || rewardsAvailableIs0)); - }, [rewardsAvailable[index], fetchClaimPending[index], index]); - - const onClaim = () => { - fetchClaim(index); - } - - const closeDialog = () => { - setDialogShow(false); - setInputVal(''); - } - - useEffect(() => { - const isPending = Boolean(fetchExitPending[index]); - const currentlyStakedIs0 = currentlyStaked[index] === 0; - const rewardsAvailableIs0 = rewardsAvailable[index] === 0; - const currentlyStakedAndRewardsAvailableIs0 = Boolean(currentlyStakedIs0 && rewardsAvailableIs0); - setExitAble(!Boolean(isPending || currentlyStakedAndRewardsAvailableIs0)); - }, [currentlyStaked[index], rewardsAvailable[index], fetchExitPending[index], index, new Date()]); - - const onExit = () => { - fetchExit(index); - } - - useEffect(() => { - const amount = byDecimals(balance[index], pools[index].tokenDecimals); - setMyBalance(amount); - }, [balance[index], index]); - - useEffect(() => { - const amount = byDecimals(currentlyStaked[index], pools[index].tokenDecimals); - setMyCurrentlyStaked(amount); - }, [currentlyStaked[index], index]); - - useEffect(() => { - const amount = byDecimals(rewardsAvailable[index], pools[index].earnedTokenDecimals); - setMyRewardsAvailable(amount); - }, [rewardsAvailable[index], index]); - - useEffect(() => { - if (address) { - checkApproval(index); - fetchBalance(index); - fetchCurrentlyStaked(index); - fetchRewardsAvailable(index); - const id = setInterval(() => { - checkApproval(index); - fetchBalance(index); - fetchCurrentlyStaked(index); - fetchRewardsAvailable(index); - }, 10000); - return () => clearInterval(id); - } - }, [address, index]); - - - useEffect(() => { - setIsStake(dialogType === 1) - }, [dialogType]) - - const {name, token, startTimestamp, earnTime, earnedToken, earnedTokenUrl, tokenDescription} = pools[index]; - const isLP = name.toLowerCase().indexOf('lp') > -1; - const lpTokens = isLP ? token.split('/') : []; - const offsetImageStyle = {marginLeft: "-25%", zIndex: 0, background: '#ffffff'}; - const [timeEnd, setTimeEnd] = useState(startTimestamp + earnTime - parseInt(String((new Date()).getTime() / 1000))); - // 是否挖矿结束 - const canStake = timeEnd > 0; - - useEffect(() => { - const timer = setTimeout(() => { - if (timeEnd > 0) { - setTimeEnd((timeEnd) => timeEnd - 1); - } else { - clearTimeout(timer); - } - }, 1000); - return () => { - clearTimeout(timer); - } - }, [timeEnd]); - - - const changeInputVal = (event) => { - let value = event.target.value; - const changeIsNumber = /^[0-9]+\.?[0-9]*$/; - if (!value) return setInputVal(value); - if (changeIsNumber.test(value)) { - value = value.replace(/(^[0-9]+)(\.?[0-9]*$)/, (word, p1, p2) => { - return Number(p1).toString() + p2; - }); - if (new BigNumber(Number(value)).comparedTo(isStake ? myBalance : myCurrentlyStaked) === 1) return setInputVal((isStake ? myBalance.toString() : myCurrentlyStaked.toString())); - setInputVal(value) - } - } - - const dateCount = (time) => { - const day = Math.floor(time / (60 * 60 * 24)).toString().padStart(2, '0'); - const hours = Math.floor((time / (60 * 60)) % 24).toString().padStart(2, '0'); - const minutes = Math.floor((time / 60) % 60).toString().padStart(2, '0'); - const seconds = Math.floor(time % 60).toString().padStart(2, '0'); - return day + t('Public-Day') + hours + t('Public-Hour') + +minutes + t('Public-Minute') + seconds + t('Public-Seconds'); - } - - return ( - - -
{`Farm / ${pools[index].tokenDescription}`}
-
- {`${t('Farm-Stake')} ${tokenDescription} ${t('Farm-CAN-GET')} ${earnedToken},${t('Farm-Time')} ${earnTime / 7 / 24 / 3600} ${t('Farm-week')}。`} - {t('Farm-Know')} {earnedToken} -
-
- - {canStake ? (
{t('Farm-Will-Mining-Over')}
) : null} -
{canStake ? dateCount(timeEnd) : t('Farm-Mining-Over')}
-
- - -
-
-
-
-
-
{Math.floor(myRewardsAvailable.toNumber() * 10000) / 10000}
- {t('Farm-Earned')} {earnedToken} -
-
- -
-
- -
-
- {isLP && lpTokens.length === 2 ? - lpTokens.map((item, index) => { - return ( - 0 ? offsetImageStyle : {}}/> - ) - }) : - } -
- -
-
{Math.floor(myBalance.toNumber() * 10000) / 10000}
- {t('Farm-Hold')} {tokenDescription} -
-
-
{Math.floor(myCurrentlyStaked.toNumber() * 10000) / 10000}
- {t('Farm-Pledged')} {tokenDescription} -
-
- { - !isNeedApproval ? - - : - - } - - {!isNeedApproval ? ( - <> - - - - ) : null} -
-
-
- - - - {t(isStake ? 'Farm-Stake' : 'Farm-UnApproval')} {tokenDescription} Tokens - - - - { - t(isStake ? 'Farm-Balance' : 'Farm-Pledged') + ":" + (isStake ? myBalance.toString() : myCurrentlyStaked.toString()) - } - { - setInputVal(isStake ? myBalance.toString() : myCurrentlyStaked.toString()); - }}> - {t(isStake ? 'Farm-All-Stake' : 'Farm-All-UnApproval')} - - - - - - - {t('Farm-Dialog-Confirm')} - - - {t('Farm-Dialog-Cancel')} - - - -
- ) -} diff --git a/src/features/farm/sections/FarmPools.js b/src/features/farm/sections/FarmPools.js deleted file mode 100644 index 05c3e20e5..000000000 --- a/src/features/farm/sections/FarmPools.js +++ /dev/null @@ -1,98 +0,0 @@ -import React, {useState, useEffect} from 'react'; -import classNames from "classnames"; -import {useTranslation} from 'react-i18next'; -import {makeStyles} from "@material-ui/core/styles"; -import farmItemStyle from "../jss/sections/farmItemStyle"; -import Grid from '@material-ui/core/Grid'; -// core components -import Button from "components/CustomButtons/Button.js"; -import {useFetchPoolsInfo} from '../redux/hooks'; -import {Avatar} from "@material-ui/core"; - -const useStyles = makeStyles(farmItemStyle); - - -export default () => { - const classes = useStyles(); - const {t, i18n} = useTranslation(); - const {pools, poolsInfo, fetchPoolsInfo} = useFetchPoolsInfo(); - - useEffect(() => { - fetchPoolsInfo(); - }, [pools, fetchPoolsInfo]); - - const offsetImageStyle = {marginLeft: "-25%", zIndex: 0, background: '#ffffff'} - return ( - - -
{t('Farm-Main-Title')}
-

{t('Farm-Second-Title')}

-
- - {pools.map((pool, index) => { - const {token, name, earnedToken, earnedTokenAddress, color, tokenDescription} = pool; - - // 根据名称是否含有LP判断是否是存 LPToken对 - const isLP = name.toLowerCase().indexOf('lp') > -1; - - const lpTokens = isLP ? token.split('/') : []; - - return ( - -
- {/*Logo处理*/} - {isLP && lpTokens.length === 2 ? ( -
- {lpTokens.map((item, index) => { - console.log(`../../../images/${item}-logo.png`); - return ( - 0 ? offsetImageStyle : {}} - /> - ) - })} -
- ) : } -
{token}
- -
- {t('Farm-Stake')} {tokenDescription} -
-
{t('Farm-Earn')} {earnedToken}
- -
APY {poolsInfo[index].apy}
- - {/*操作菜单*/} -
- {isLP ? ( - <> - - - - ) : } -
-
-
- ) - })} -
-
- ) -} \ No newline at end of file diff --git a/src/features/farm/sections/index.js b/src/features/farm/sections/index.js deleted file mode 100644 index ccaf4e3a1..000000000 --- a/src/features/farm/sections/index.js +++ /dev/null @@ -1,2 +0,0 @@ -export { default as FarmPools } from './FarmPools'; -export { default as FarmPool } from './FarmPool'; \ No newline at end of file diff --git a/src/features/helpers/bignumber.js b/src/features/helpers/bignumber.js index dab34a2e3..217a52a4d 100644 --- a/src/features/helpers/bignumber.js +++ b/src/features/helpers/bignumber.js @@ -1,226 +1,158 @@ -import BigNumber from 'bignumber.js' +import BigNumber from 'bignumber.js'; -export function isNaN(value){ - return new BigNumber(`${value}`).isNaN() +export const ZERO = new BigNumber('0'); + +export function isNaN(value) { + return new BigNumber(`${value}`).isNaN(); } -export function isNumber(value){ - const isNaNResult = isNaN(value) - return !isNaNResult +export function isNumber(value) { + const isNaNResult = isNaN(value); + return !isNaNResult; } -export function isInteger(value){ - return new BigNumber(`${value}`).isInteger() +export function isInteger(value) { + return new BigNumber(`${value}`).isInteger(); } -export function isPositive(value){ - return new BigNumber(`${value}`).isPositive() +export function isPositive(value) { + return new BigNumber(`${value}`).isPositive(); } -export function isNegative(value){ - return new BigNumber(`${value}`).isNegative() +export function isNegative(value) { + return new BigNumber(`${value}`).isNegative(); } -export function isZero(value){ - return new BigNumber(`${value}`).isZero() +export function isZero(value) { + return new BigNumber(`${value}`).isZero(); } export function countDecimalPlaces(value) { - return new BigNumber(`${value}`).dp() + return new BigNumber(`${value}`).dp(); } -export function convertNumberToString(value){ - return new BigNumber(`${value}`).toString() +export function convertNumberToString(value) { + return new BigNumber(`${value}`).toString(); } export function convertStringToNumber(value) { - return new BigNumber(`${value}`).toNumber() + return new BigNumber(`${value}`).toNumber(); } -export function convertHexToString(hex){ - return new BigNumber(`${hex}`).toString() +export function convertHexToString(hex) { + return new BigNumber(`${hex}`).toString(); } -export function convertStringToHex(value){ - return new BigNumber(`${value}`).toString(16) +export function convertStringToHex(value) { + return new BigNumber(`${value}`).toString(16); } -export function greaterThan(numberOne,numberTwo){ - return ( - new BigNumber(`${numberOne}`).comparedTo(new BigNumber(`${numberTwo}`)) === - 1 - ) +export function greaterThan(numberOne, numberTwo) { + return new BigNumber(`${numberOne}`).comparedTo(new BigNumber(`${numberTwo}`)) === 1; } -export function greaterThanOrEqual( - numberOne, - numberTwo -){ - return ( - new BigNumber(`${numberOne}`).comparedTo(new BigNumber(`${numberTwo}`)) >= 0 - ) +export function greaterThanOrEqual(numberOne, numberTwo) { + return new BigNumber(`${numberOne}`).comparedTo(new BigNumber(`${numberTwo}`)) >= 0; } -export function smallerThan( - numberOne, - numberTwo -){ - return ( - new BigNumber(`${numberOne}`).comparedTo(new BigNumber(`${numberTwo}`)) === - -1 - ) +export function smallerThan(numberOne, numberTwo) { + return new BigNumber(`${numberOne}`).comparedTo(new BigNumber(`${numberTwo}`)) === -1; } -export function smallerThanOrEqual( - numberOne, - numberTwo -){ - return ( - new BigNumber(`${numberOne}`).comparedTo(new BigNumber(`${numberTwo}`)) <= 0 - ) +export function smallerThanOrEqual(numberOne, numberTwo) { + return new BigNumber(`${numberOne}`).comparedTo(new BigNumber(`${numberTwo}`)) <= 0; } -export function multiply( - numberOne, - numberTwo -){ - return new BigNumber(`${numberOne}`) - .times(new BigNumber(`${numberTwo}`)) - .toString() +export function multiply(numberOne, numberTwo) { + return new BigNumber(`${numberOne}`).times(new BigNumber(`${numberTwo}`)).toString(); } -export function divide( - numberOne, - numberTwo -){ - return new BigNumber(`${numberOne}`) - .dividedBy(new BigNumber(`${numberTwo}`)) - .toString() +export function divide(numberOne, numberTwo) { + return new BigNumber(`${numberOne}`).dividedBy(new BigNumber(`${numberTwo}`)).toString(); } -export function floorDivide( - numberOne, - numberTwo -){ - return new BigNumber(`${numberOne}`) - .dividedToIntegerBy(new BigNumber(`${numberTwo}`)) - .toString() +export function floorDivide(numberOne, numberTwo) { + return new BigNumber(`${numberOne}`).dividedToIntegerBy(new BigNumber(`${numberTwo}`)).toString(); } -export function mod( - numberOne, - numberTwo -){ - return new BigNumber(`${numberOne}`) - .mod(new BigNumber(`${numberTwo}`)) - .toString() +export function mod(numberOne, numberTwo) { + return new BigNumber(`${numberOne}`).mod(new BigNumber(`${numberTwo}`)).toString(); } -export function add( - numberOne, - numberTwo -){ - return new BigNumber(`${numberOne}`) - .plus(new BigNumber(`${numberTwo}`)) - .toString() +export function add(numberOne, numberTwo) { + return new BigNumber(`${numberOne}`).plus(new BigNumber(`${numberTwo}`)).toString(); } -export function subtract( - numberOne, - numberTwo -){ - return new BigNumber(`${numberOne}`) - .minus(new BigNumber(`${numberTwo}`)) - .toString() +export function subtract(numberOne, numberTwo) { + return new BigNumber(`${numberOne}`).minus(new BigNumber(`${numberTwo}`)).toString(); } -export function convertAmountToRawNumber( - value, - decimals = 18 -){ - return new BigNumber(`${value}`) +export function convertAmountToRawNumber(value, decimals = 18) { + return new BigNumber(value) .times(new BigNumber('10').pow(decimals)) - .toString() + .decimalPlaces(0, BigNumber.ROUND_DOWN) + .toString(10); } -export function convertAmountFromRawNumber( - value, - decimals = 18 -){ - return new BigNumber(`${value}`) - .dividedBy(new BigNumber('10').pow(decimals)) - .toString() +export function convertAmountFromRawNumber(value, decimals = 18) { + return new BigNumber(`${value}`).dividedBy(new BigNumber('10').pow(decimals)); } -export function handleSignificantDecimals( - value, - decimals, - buffer -){ +export function handleSignificantDecimals(value, decimals, buffer) { if ( !new BigNumber(`${decimals}`).isInteger() || (buffer && !new BigNumber(`${buffer}`).isInteger()) ) { - return null + return null; } - buffer = buffer ? convertStringToNumber(buffer) : 3 - decimals = convertStringToNumber(decimals) - const absolute = new BigNumber(`${value}`).abs().toNumber() + buffer = buffer ? convertStringToNumber(buffer) : 3; + decimals = convertStringToNumber(decimals); + const absolute = new BigNumber(`${value}`).abs().toNumber(); if (smallerThan(absolute, 1)) { - decimals = value.slice(2).search(/[^0]/g) + buffer - decimals = decimals < 8 ? decimals : 8 + decimals = value.slice(2).search(/[^0]/g) + buffer; + decimals = decimals < 8 ? decimals : 8; } else { - decimals = decimals < buffer ? decimals : buffer + decimals = decimals < buffer ? decimals : buffer; } - let result = new BigNumber(`${value}`).toFixed(decimals) - result = new BigNumber(`${result}`).toString() + let result = new BigNumber(`${value}`).toFixed(decimals); + result = new BigNumber(`${result}`).toString(); return new BigNumber(`${result}`).dp() <= 2 ? new BigNumber(`${result}`).toFormat(2) - : new BigNumber(`${result}`).toFormat() + : new BigNumber(`${result}`).toFormat(); } -export function formatFixedDecimals(value, decimals){ - const _value = convertNumberToString(value) - const _decimals = convertStringToNumber(decimals) - const result = new BigNumber( - new BigNumber(_value).toFixed(_decimals) - ).toString() - return result +export function formatFixedDecimals(value, decimals) { + const _value = convertNumberToString(value); + const _decimals = convertStringToNumber(decimals); + const result = new BigNumber(new BigNumber(_value).toFixed(_decimals)).toString(); + return result; } -export function formatInputDecimals( - inputOne, - inputTwo -){ - const _nativeAmountDecimalPlaces = countDecimalPlaces(inputTwo) - const decimals = - _nativeAmountDecimalPlaces > 8 ? _nativeAmountDecimalPlaces : 8 +export function formatInputDecimals(inputOne, inputTwo) { + const _nativeAmountDecimalPlaces = countDecimalPlaces(inputTwo); + const decimals = _nativeAmountDecimalPlaces > 8 ? _nativeAmountDecimalPlaces : 8; const result = new BigNumber(formatFixedDecimals(inputOne, decimals)) .toFormat() - .replace(/,/g, '') - return result + .replace(/,/g, ''); + return result; } -export function forMat(number) { - return new BigNumber( - number - ).multipliedBy( - new BigNumber(10000) - ).dividedToIntegerBy( - new BigNumber(1) - ).dividedBy( - new BigNumber(10000) - ).toNumber() +export function format(number) { + return new BigNumber(number) + .multipliedBy(new BigNumber(10000)) + .dividedToIntegerBy(new BigNumber(1)) + .dividedBy(new BigNumber(10000)) + .toNumber(); } -export function byDecimals(number, tokenDecimals = 18){ +export function byDecimals(number, tokenDecimals = 18) { const decimals = new BigNumber(10).exponentiatedBy(tokenDecimals); - return new BigNumber(number).dividedBy(decimals); + return new BigNumber(number).dividedBy(decimals).decimalPlaces(tokenDecimals); } -export function calculateReallyNum(total,sliderNum){ - if(sliderNum == undefined){ - return byDecimals(0, 0).toFormat(4); +export function calculateReallyNum(total, sliderNum) { + if (sliderNum === undefined) { + return byDecimals(0, 0).toFormat(8); } - return byDecimals(sliderNum/100*Number(total), 0).toFormat(4); -} \ No newline at end of file + return byDecimals((sliderNum / 100) * Number(total), 0).toFormat(8); +} diff --git a/src/features/helpers/format.js b/src/features/helpers/format.js new file mode 100644 index 000000000..52ca8932c --- /dev/null +++ b/src/features/helpers/format.js @@ -0,0 +1,83 @@ +import BigNumber from 'bignumber.js'; + +const units = ['', 'k', 'M', 'B', 'T', 'Q', 'Q', 'S', 'S']; + +export const formatApy = (apy, dp = 2) => { + if (!apy) return `???`; + + apy *= 100; + + const order = apy < 1 ? 0 : Math.floor(Math.log10(apy) / 3); + if (order >= units.length - 1) return `🔥`; + + const num = apy / 1000 ** order; + return `${num.toFixed(dp)}${units[order]}%`; +}; + +export const formatPercent = (per, dp = 2) => { + if (!per) { + return '0%'; + } + + return stripTrailingZeros((per * 100).toFixed(dp)) + '%'; +}; + +export const formatTvl = (tvl, oraclePrice, useOrder = true) => { + if (oraclePrice) { + tvl = BigNumber(tvl).times(oraclePrice).toFixed(2); + } + + let order = Math.floor(Math.log10(tvl) / 3); + if (order < 0 || useOrder === false) { + order = 0; + } + + const num = tvl / 1000 ** order; + + return '$' + num.toFixed(2) + units[order]; +}; + +export const formatGlobalTvl = tvl => formatTvl(tvl, 1); + +export const calcDaily = apy => { + if (!apy) return `???`; + + const g = Math.pow(10, Math.log10(apy + 1) / 365) - 1; + if (isNaN(g)) { + return '- %'; + } + + return `${(g * 100).toFixed(2)}%`; +}; + +export const formatCountdown = deadline => { + const time = deadline - new Date().getTime(); + + const day = Math.floor(time / (1000 * 60 * 60 * 24)) + .toString() + .padStart(2, '0'); + const hours = Math.floor((time / (1000 * 60 * 60)) % 24) + .toString() + .padStart(2, '0'); + const minutes = Math.floor((time / (1000 * 60)) % 60) + .toString() + .padStart(2, '0'); + const seconds = Math.floor((time / 1000) % 60) + .toString() + .padStart(2, '0'); + + return `${day}day ${hours}:${minutes}:${seconds}`; +}; + +export const stripTrailingZeros = str => { + return str.replace(/(\.[0-9]*?)(0+$)/, '$1').replace(/\.$/, ''); +}; + +export const formatDecimals = (number, maxPlaces = 8) => { + if (number.isZero()) { + return '0'; + } + + const places = Math.min(maxPlaces, number >= 10 ? 4 : 8); + return stripTrailingZeros(number.toFixed(places)); +}; diff --git a/src/features/helpers/getApiInfo.js b/src/features/helpers/getApiInfo.js new file mode 100644 index 000000000..ff9630b82 --- /dev/null +++ b/src/features/helpers/getApiInfo.js @@ -0,0 +1,6 @@ +export const apiUrl = process.env.REACT_APP_API_URL || 'https://api.beefy.finance'; + +// Time-based cache buster +export const getApiCacheBuster = () => { + return Math.trunc(Date.now() / (1000 * 60)); +}; diff --git a/src/features/helpers/getNetworkData.js b/src/features/helpers/getNetworkData.js new file mode 100644 index 000000000..2803eaa78 --- /dev/null +++ b/src/features/helpers/getNetworkData.js @@ -0,0 +1,1362 @@ +import { connectors } from 'web3modal'; +import { indexBy } from './utils'; +import WalletConnectProvider from '@walletconnect/web3-provider'; +import { DeFiConnector } from 'deficonnect'; +import WalletLink from 'walletlink'; +import { CloverConnector } from '@clover-network/clover-connector'; +import { allNetworks } from '../../network'; +import { + avalanchePools, + avalancheStakePools, + avaxAddressBook, + avalancheZaps, + bscPools, + bscStakePools, + bscAddressBook, + bscZaps, + fantomPools, + fantomStakePools, + fantomAddressBook, + fantomZaps, + hecoPools, + hecoStakePools, + hecoAddressBook, + hecoZaps, + nativeCoins, + polygonPools, + polygonStakePools, + polygonAddressBook, + polygonZaps, + celoPools, + celoStakePools, + celoAddressBook, + celoZaps, + moonriverPools, + moonriverStakePools, + moonriverAddressBook, + moonriverZaps, + harmonyPools, + harmonyStakePools, + harmonyAddressBook, + harmonyZaps, + cronosPools, + cronosStakePools, + cronosAddressBook, + cronosZaps, + auroraPools, + auroraStakePools, + auroraAddressBook, + auroraZaps, + arbitrumPools, + arbitrumStakePools, + arbitrumAddressBook, + arbitrumZaps, + fusePools, + fuseStakePools, + fuseAddressBook, + fuseZaps, + metisPools, + metisStakePools, + metisAddressBook, + metisZaps, + moonbeamPools, + moonbeamStakePools, + moonbeamAddressBook, + moonbeamZaps, + emeraldPools, + emeraldStakePools, + emeraldAddressBook, + emeraldZaps, +} from '../configure'; + +export const appNetworkId = window.REACT_APP_NETWORK_ID; + +const networkTxUrls = { + 56: hash => `https://bscscan.com/tx/${hash}`, + 128: hash => `https://hecoinfo.com/tx/${hash}`, + 43114: hash => `https://snowtrace.io/tx/${hash}`, + 137: hash => `https://polygonscan.com/tx/${hash}`, + 250: hash => `https://ftmscan.com/tx/${hash}`, + 1666600000: hash => `https://explorer.harmony.one/tx/${hash}`, + 42161: hash => `https://arbiscan.io/tx/${hash}`, + 42220: hash => `https://explorer.celo.org/tx/${hash}`, + 1285: hash => `https://moonriver.moonscan.io/tx/${hash}`, + 25: hash => `https://cronos.crypto.org/explorer/tx/${hash}`, + 1313161554: hash => `https://explorer.mainnet.aurora.dev/tx/${hash}`, + 122: hash => `https://explorer.fuse.io/tx/${hash}`, + 1088: hash => `https://andromeda-explorer.metis.io/tx/${hash}`, + 1284: hash => `https://moonscan.io/tx/${hash}`, + 42262: hash => `https://explorer.emerald.oasis.dev/tx/${hash}`, +}; + +const networkFriendlyName = { + 56: 'BSC', + 128: 'HECO', + 43114: 'AVAX', + 137: 'Polygon', + 250: 'Fantom', + 1666600000: 'Harmony', + 42161: 'Arbitrum', + 42220: 'Celo', + 1285: 'Moonriver', + 25: 'Cronos', + 1313161554: 'Aurora', + 122: 'Fuse', + 1088: 'Metis', + 1284: 'Moonbeam', + 42262: 'Oasis Emerald', +}; + +const networkBuyUrls = { + 56: 'https://app.1inch.io/#/r/0xF4cb25a1FF50E319c267b3E51CBeC2699FB2A43B', + 128: 'https://ht.mdex.com/#/swap?inputCurrency=0xa71edc38d189767582c38a3145b5873052c3e47a&outputCurrency=0x765277eebeca2e31912c9946eae1021199b39c61', + 137: 'https://app.1inch.io/#/r/0xF4cb25a1FF50E319c267b3E51CBeC2699FB2A43B', + 250: 'https://spooky.fi/#/swap?inputCurrency=0x04068da6c83afcfa0e13ba15a6696662335d5b75&outputCurrency=0xd6070ae98b8069de6B494332d1A1a81B6179D960', + 43114: + 'https://www.traderjoexyz.com/trade?outputCurrency=0xd6070ae98b8069de6b494332d1a1a81b6179d960', + 1666600000: + 'https://app.sushi.com/swap?inputCurrency=0x6ab6d61428fde76768d7b45d8bfeec19c6ef91a8&outputCurrency=0xcf664087a5bb0237a0bad6742852ec6c8d69a27a', + 42161: + 'https://app.sushi.com/swap?inputCurrency=0x82af49447d8a07e3bd95bd0d56f35241523fbab1&outputCurrency=0x99c409e5f62e4bd2ac142f17cafb6810b8f0baae', + 42220: + 'https://app.sushi.com/swap?inputCurrency=0x471ece3750da237f93b8e339c536989b8978a438&outputCurrency=0x639a647fbe20b6c8ac19e48e2de44ea792c62c5c', + 1285: 'https://app.sushi.com/swap?inputCurrency=0x173fd7434b8b50df08e3298f173487ebdb35fd14&outputCurrency=0xf50225a84382c74cbdea10b0c176f71fc3de0c4d', + 25: 'https://vvs.finance/swap?inputCurrency=0x5c7f8a570d578ed84e63fdfa7b1ee72deae1ae23&outputCurrency=0xe6801928061cdbe32ac5ad0634427e140efd05f9', + 1313161554: '', + 122: '', + 1088: 'https://netswap.io/#/swap?outputCurrency=0xe6801928061cdbe32ac5ad0634427e140efd05f9', + 1284: '', + 42262: '', +}; + +export const getNetworkCoin = () => { + return nativeCoins.find(coin => coin.chainId === appNetworkId); +}; + +export const getNetworkPools = () => { + switch (window.REACT_APP_NETWORK_ID) { + case 56: + return bscPools; + case 128: + return hecoPools; + case 43114: + return avalanchePools; + case 137: + return polygonPools; + case 250: + return fantomPools; + case 1666600000: + return harmonyPools; + case 42161: + return arbitrumPools; + case 42220: + return celoPools; + case 1285: + return moonriverPools; + case 25: + return cronosPools; + case 1313161554: + return auroraPools; + case 122: + return fusePools; + case 1088: + return metisPools; + case 1284: + return moonbeamPools; + case 42262: + return emeraldPools; + default: + return []; + } +}; + +export const getNetworkVaults = (networkId = appNetworkId) => { + switch (networkId) { + case 56: + return indexBy(bscPools, 'id'); + case 128: + return indexBy(hecoPools, 'id'); + case 43114: + return indexBy(avalanchePools, 'id'); + case 137: + return indexBy(polygonPools, 'id'); + case 250: + return indexBy(fantomPools, 'id'); + case 1666600000: + return indexBy(harmonyPools, 'id'); + case 42161: + return indexBy(arbitrumPools, 'id'); + case 42220: + return indexBy(celoPools, 'id'); + case 1285: + return indexBy(moonriverPools, 'id'); + case 25: + return indexBy(cronosPools, 'id'); + case 1313161554: + return indexBy(auroraPools, 'id'); + case 122: + return indexBy(fusePools, 'id'); + case 1088: + return indexBy(metisPools, 'id'); + case 1284: + return indexBy(moonbeamPools, 'id'); + case 42262: + return indexBy(emeraldPools, 'id'); + default: + return {}; + } +}; + +export const getNetworkLaunchpools = (networkId = appNetworkId) => { + switch (networkId) { + case 56: + return indexBy(bscStakePools, 'id'); + case 128: + return indexBy(hecoStakePools, 'id'); + case 43114: + return indexBy(avalancheStakePools, 'id'); + case 137: + return indexBy(polygonStakePools, 'id'); + case 250: + return indexBy(fantomStakePools, 'id'); + case 1666600000: + return indexBy(harmonyStakePools, 'id'); + case 42161: + return indexBy(arbitrumStakePools, 'id'); + case 42220: + return indexBy(celoStakePools, 'id'); + case 1285: + return indexBy(moonriverStakePools, 'id'); + case 25: + return indexBy(cronosStakePools, 'id'); + case 1313161554: + return indexBy(auroraStakePools, 'id'); + case 122: + return indexBy(fuseStakePools, 'id'); + case 1088: + return indexBy(metisStakePools, 'id'); + case 1284: + return indexBy(moonbeamStakePools, 'id'); + case 42262: + return indexBy(emeraldStakePools, 'id'); + default: + return {}; + } +}; + +export const getNetworkTokens = () => { + const chainId = window.REACT_APP_NETWORK_ID; + switch (chainId) { + case 56: + return bscAddressBook.tokens; + case 128: + return hecoAddressBook.tokens; + case 43114: + return avaxAddressBook.tokens; + case 137: + return polygonAddressBook.tokens; + case 250: + return fantomAddressBook.tokens; + case 1666600000: + return harmonyAddressBook.tokens; + case 42161: + return arbitrumAddressBook.tokens; + case 42220: + return celoAddressBook.tokens; + case 1285: + return moonriverAddressBook.tokens; + case 25: + return cronosAddressBook.tokens; + case 1313161554: + return auroraAddressBook.tokens; + case 122: + return fuseAddressBook.tokens; + case 1088: + return metisAddressBook.tokens; + case 1284: + return moonbeamAddressBook.tokens; + case 42262: + return emeraldAddressBook.tokens; + default: + throw new Error( + `Create address book for chainId(${chainId}) first. Check out https://github.com/beefyfinance/address-book` + ); + } +}; + +export const getNetworkBurnTokens = () => { + switch (window.REACT_APP_NETWORK_ID) { + case 56: + return { + [bscAddressBook.tokens.PERA.symbol]: bscAddressBook.tokens.PERA, + [bscAddressBook.tokens.GUARD.symbol]: bscAddressBook.tokens.GUARD, + [bscAddressBook.tokens.PEAR.symbol]: bscAddressBook.tokens.PEAR, + [bscAddressBook.tokens.SING.symbol]: bscAddressBook.tokens.SING, + }; + case 128: + return {}; + case 43114: + return { + [avaxAddressBook.tokens.SHIBX.symbol]: avaxAddressBook.tokens.SHIBX, + [avaxAddressBook.tokens.aSING.symbol]: avaxAddressBook.tokens.aSING, + [avaxAddressBook.tokens.MEAD.symbol]: avaxAddressBook.tokens.MEAD, + }; + case 137: + return { + // [polygonAddressBook.tokens.xYELD.symbol]: polygonAddressBook.tokens.xYELD, + [polygonAddressBook.tokens.PEAR.symbol]: polygonAddressBook.tokens.PEAR, + // [polygonAddressBook.tokens.pSING.symbol]: polygonAddressBook.tokens.pSING, + }; + case 250: + return { + [fantomAddressBook.tokens.fSING.symbol]: fantomAddressBook.tokens.fSING, + [fantomAddressBook.tokens.PEAR.symbol]: fantomAddressBook.tokens.PEAR, + }; + case 1666600000: + return {}; + case 42161: + return {}; + case 42220: + return {}; + case 1285: + return {}; + case 25: + return {}; + case 1313161554: + return {}; + case 122: + return {}; + case 1088: + return {}; + case 1284: + return {}; + case 42262: + return {}; + default: + throw new Error(`Create address book for this chainId first.`); + } +}; + +export const getNetworkZaps = () => { + switch (window.REACT_APP_NETWORK_ID) { + case 56: + return bscZaps; + case 128: + return hecoZaps; + case 43114: + return avalancheZaps; + case 137: + return polygonZaps; + case 250: + return fantomZaps; + case 1666600000: + return harmonyZaps; + case 42161: + return arbitrumZaps; + case 42220: + return celoZaps; + case 1285: + return moonriverZaps; + case 25: + return cronosZaps; + case 1313161554: + return auroraZaps; + case 122: + return fuseZaps; + case 1088: + return metisZaps; + case 1284: + return moonbeamZaps; + case 42262: + return emeraldZaps; + default: + return []; + } +}; + +export const getNetworkStables = () => { + switch (window.REACT_APP_NETWORK_ID) { + case 56: + return [ + 'BUSD', + 'USDT', + 'USDC', + 'DAI', + 'VAI', + 'QUSD', + 'UST', + 'VENUS BLP', + '3EPS', + 'fUSDT', + '4BELT', + 'IRON', + 'DOLLY', + 'TUSD', + 'USDN', + 'WUSD', + 'USDO', + 'USDD', + ]; + case 128: + return ['USDT', 'HUSD']; + case 43114: + return [ + 'USDT', + 'DAI', + 'BUSD', + 'zDAI', + 'zUSDT', + 'USDTe', + 'BUSDe', + 'USDC', + 'USDCe', + 'DAIe', + 'MAI', + 'FRAX', + 'nUSD', + 'MIM', + 'USDC', + 'UST', + 'USTw', + ]; + case 137: + return [ + 'USDC', + 'USDT', + 'maUSDC', + 'DAI', + 'IRON', + 'MAI', + 'FRAX', + 'rUSD', + 'UST', + 'USTw', + 'WUSD', + 'jEUR', + 'jGBP', + 'jCHF', + 'EURt', + 'TUSD', + 'PAR', + 'EURS', + '4EUR', + 'agEUR', + 'jJPY', + 'JPYC', + 'jCAD', + 'CADC', + 'jSGD', + 'XSGD', + ]; + case 250: + return [ + 'USDC', + 'USDT', + 'DAI', + 'fUSDT', + 'MIM', + 'FRAX', + 'MAI', + 'DOLA', + 'TUSD', + 'UST', + 'USTw', + 'asUSDC', + 'LAMBDA', + 'DEI', + 'TOR', + 'USDB', + ]; + case 1666600000: + return ['BUSD', 'bscBUSD', 'USDC', 'USDT', 'UST', 'DAI', 'FRAX']; + case 42161: + return ['USDC', 'USDT', 'MIM', 'FRAX', 'UST', 'USTw', 'EURS']; + case 42220: + return ['cUSD', 'cEUR', 'DAI', 'USDC', 'USDT']; + case 1285: + return ['USDC', 'USDT', 'DAI', 'BUSD', 'MAI', 'MIM', 'FRAX']; + case 25: + return ['USDC', 'USDT', 'DAI', 'BUSD']; + case 1313161554: + return ['USDC', 'USDT']; + case 122: + return ['fUSD', 'BUSD', 'USDC']; + case 1088: + return ['mUSDT', 'mUSDC']; + case 1284: + return ['USDC', 'USDT', 'DAI', 'BUSD']; + case 42262: + return ['ceUSDC, USDT']; + default: + return []; + } +}; + +export const getNetworkMulticall = () => { + switch (window.REACT_APP_NETWORK_ID) { + case 56: + return '0xB94858b0bB5437498F5453A16039337e5Fdc269C'; + case 128: + return '0x2776CF9B6E2Fa7B33A37139C3CB1ee362Ff0356e'; + case 43114: + return '0x6FfF95AC47b586bDDEea244b3c2fe9c4B07b9F76'; + case 137: + return '0xC3821F0b56FA4F4794d5d760f94B812DE261361B'; + case 250: + return '0xC9F6b1B53E056fd04bE5a197ce4B2423d456B982'; + case 1666600000: + return '0xBa5041B1c06e8c9cFb5dDB4b82BdC52E41EA5FC5'; + case 42161: + return '0x13aD51a6664973EbD0749a7c84939d973F247921'; + case 42220: + return '0xa9E6E271b27b20F65394914f8784B3B860dBd259'; + case 1285: + return '0x7f6fE34C51d5352A0CF375C0Fbe03bD19eCD8460'; + case 25: + return '0x13aD51a6664973EbD0749a7c84939d973F247921'; + case 1313161554: + return '0x55f46144bC62e9Af4bAdB71842B62162e2194E90'; + case 122: + return '0x4f22BD7CE44b0e0B2681A28e300A7285319de3a0'; + case 1088: + return '0x4fd2e1c2395dc088F36cab06DCe47F88A912fC85'; + case 1284: + return '0xC9F6b1B53E056fd04bE5a197ce4B2423d456B982'; + case 42262: + return '0xFE40f6eAD11099D91D51a945c145CFaD1DD15Bb8'; + default: + return ''; + } +}; + +export const getNetworkConnectors = t => { + switch (window.REACT_APP_NETWORK_ID) { + case 56: + return { + network: 'binance', + cacheProvider: true, + providerOptions: { + injected: { + display: { + name: 'MetaMask', + }, + }, + walletconnect: { + package: WalletConnectProvider, + options: { + rpc: { + 1: 'https://bsc-dataseed.binance.org/', + 56: 'https://bsc-dataseed.binance.org/', + }, + }, + }, + 'custom-clover-bsc': { + display: { + logo: require(`images/wallets/clover.png`), + name: 'Clover Wallet', + description: t('Connect with your Clover wallet and earn CLV'), + }, + options: { + supportedChainIds: [56], + }, + package: CloverConnector, + connector: async (ProviderPackage, options) => { + const provider = new ProviderPackage(options); + await provider.activate(); + return provider.getProvider(); + }, + }, + 'custom-binance': { + display: { + name: 'Binance', + description: t('Binance Chain Wallet'), + logo: require(`images/wallets/binance-wallet.png`), + }, + package: 'binance', + connector: async (ProviderPackage, options) => { + const provider = window.BinanceChain; + await provider.enable(); + return provider; + }, + }, + 'custom-math': { + display: { + name: 'Math', + description: t('Math Wallet'), + logo: require(`images/wallets/math-wallet.svg`), + }, + package: 'math', + connector: connectors.injected, + }, + 'custom-twt': { + display: { + name: 'Trust', + description: t('Trust Wallet'), + logo: require(`images/wallets/trust-wallet.svg`), + }, + package: 'twt', + connector: connectors.injected, + }, + 'custom-safepal': { + display: { + name: 'SafePal', + description: t('SafePal App'), + logo: require(`images/wallets/safepal-wallet.svg`), + }, + package: 'safepal', + connector: connectors.injected, + }, + 'custom-cb-bsc': { + display: { + logo: require(`images/wallets/coinbase.png`), + name: 'Coinbase Wallet', + description: t('Connect to your Coinbase Wallet'), + }, + options: { + appName: 'Beefy Finance', + appLogoUrl: 'https://app.beefy.finance/static/media/BIFI.e797b2e4.png', + darkMode: false, + }, + package: WalletLink, + connector: async (ProviderPackage, options) => { + const walletLink = new ProviderPackage(options); + + const provider = walletLink.makeWeb3Provider('https://bsc-dataseed.binance.org/', 56); + + await provider.enable(); + + return provider; + }, + }, + 'custom-bitkeep': { + display: { + name: 'BitKeep Wallet', + description: 'Connect your BitKeep Wallet', + logo: require(`images/wallets/bitkeep-wallet.png`), + }, + package: 'bitkeep', + connector: connectors.injected, + }, + }, + }; + case 128: + return { + network: 'heco', + cacheProvider: true, + providerOptions: { + injected: { + display: { + name: 'MetaMask', + }, + }, + // walletconnect: { + // package: WalletConnectProvider, + // options: { + // rpc: { + // 1: 'https://http-mainnet.hecochain.com', + // 128: 'https://http-mainnet.hecochain.com', + // }, + // }, + // }, + 'custom-clover-heco': { + display: { + logo: require(`images/wallets/clover.png`), + name: 'Clover Wallet', + description: t('Connect with your Clover wallet and earn CLV'), + }, + options: { + supportedChainIds: [128], + }, + package: CloverConnector, + connector: async (ProviderPackage, options) => { + const provider = new ProviderPackage(options); + await provider.activate(); + return provider.getProvider(); + }, + }, + 'custom-math': { + display: { + name: 'Math', + description: t('Math Wallet'), + logo: require(`images/wallets/math-wallet.svg`), + }, + package: 'math', + connector: connectors.injected, + }, + 'custom-bitkeep': { + display: { + name: 'BitKeep Wallet', + description: 'Connect your BitKeep Wallet', + logo: require(`images/wallets/bitkeep-wallet.png`), + }, + package: 'bitkeep', + connector: connectors.injected, + }, + }, + }; + case 43114: + return { + network: 'avalanche', + cacheProvider: true, + providerOptions: { + injected: { + display: { + name: 'MetaMask', + }, + }, + 'custom-wc-avax': { + display: { + logo: require(`images/wallets/wallet-connect.svg`), + name: 'Wallet Connect', + description: t('Scan your WalletConnect to Connect'), + }, + package: WalletConnectProvider, + options: { + rpc: { + 1: 'https://api.avax.network/ext/bc/C/rpc', + 43114: 'https://api.avax.network/ext/bc/C/rpc', + }, + }, + connector: async (ProviderPackage, options) => { + const provider = new ProviderPackage(options); + + await provider.enable(); + + return provider; + }, + }, + 'custom-cb-avalanche': { + display: { + logo: require(`images/wallets/coinbase.png`), + name: 'Coinbase Wallet', + description: t('Connect to your Coinbase Wallet'), + }, + options: { + appName: 'Beefy Finance', + appLogoUrl: 'https://app.beefy.finance/static/media/BIFI.e797b2e4.png', + darkMode: false, + }, + package: WalletLink, + connector: async (ProviderPackage, options) => { + const walletLink = new ProviderPackage(options); + + const provider = walletLink.makeWeb3Provider( + 'https://api.avax.network/ext/bc/C/rpc', + 43114 + ); + + await provider.enable(); + + return provider; + }, + }, + 'custom-bitkeep': { + display: { + name: 'BitKeep Wallet', + description: 'Connect your BitKeep Wallet', + logo: require(`images/wallets/bitkeep-wallet.png`), + }, + package: 'bitkeep', + connector: connectors.injected, + }, + }, + }; + case 137: + return { + network: 'polygon', + cacheProvider: true, + providerOptions: { + injected: { + display: { + name: 'MetaMask', + }, + }, + walletconnect: { + package: WalletConnectProvider, + options: { + network: 'matic', + rpc: { + 1: 'https://polygon-rpc.com/', + 137: 'https://polygon-rpc.com/', + }, + }, + }, + 'custom-clover-polygon': { + display: { + logo: require(`images/wallets/clover.png`), + name: 'Clover Wallet', + description: t('Connect with your Clover wallet and earn CLV'), + }, + options: { + supportedChainIds: [137], + }, + package: CloverConnector, + connector: async (ProviderPackage, options) => { + const provider = new ProviderPackage(options); + await provider.activate(); + return provider.getProvider(); + }, + }, + 'custom-cb-polygon': { + display: { + logo: require(`images/wallets/coinbase.png`), + name: 'Coinbase Wallet', + description: t('Connect to your Coinbase Wallet'), + }, + options: { + appName: 'Beefy Finance', + appLogoUrl: 'https://app.beefy.finance/static/media/BIFI.e797b2e4.png', + darkMode: false, + }, + package: WalletLink, + connector: async (ProviderPackage, options) => { + const walletLink = new ProviderPackage(options); + + const provider = walletLink.makeWeb3Provider('https://polygon-rpc.com/', 137); + + await provider.enable(); + + return provider; + }, + }, + 'custom-bitkeep': { + display: { + name: 'BitKeep Wallet', + description: 'Connect your BitKeep Wallet', + logo: require(`images/wallets/bitkeep-wallet.png`), + }, + package: 'bitkeep', + connector: connectors.injected, + }, + }, + }; + case 250: + return { + network: 'fantom', + cacheProvider: true, + providerOptions: { + injected: { + display: { + name: 'MetaMask', + }, + }, + 'custom-wc-ftm': { + display: { + logo: require(`images/wallets/wallet-connect.svg`), + name: 'Wallet Connect', + description: t('Scan your WalletConnect to Connect'), + }, + package: WalletConnectProvider, + options: { + rpc: { + 1: 'https://rpc.ftm.tools/', + 250: 'https://rpc.ftm.tools/', + }, + }, + connector: async (ProviderPackage, options) => { + const provider = new ProviderPackage(options); + + await provider.enable(); + + return provider; + }, + }, + 'custom-clover-fantom': { + display: { + logo: require(`images/wallets/clover.png`), + name: 'Clover Wallet', + description: t('Connect with your Clover wallet and earn CLV'), + }, + options: { + supportedChainIds: [250], + }, + package: CloverConnector, + connector: async (ProviderPackage, options) => { + const provider = new ProviderPackage(options); + await provider.activate(); + return provider.getProvider(); + }, + }, + 'custom-cb-ftm': { + display: { + logo: require(`images/wallets/coinbase.png`), + name: 'Coinbase Wallet', + description: t('Connect to your Coinbase Wallet'), + }, + options: { + appName: 'Beefy Finance', + appLogoUrl: 'https://app.beefy.finance/static/media/BIFI.e797b2e4.png', + darkMode: false, + }, + package: WalletLink, + connector: async (ProviderPackage, options) => { + const walletLink = new ProviderPackage(options); + + const provider = walletLink.makeWeb3Provider('https://rpc.ftm.tools/', 250); + + await provider.enable(); + + return provider; + }, + }, + 'custom-bitkeep': { + display: { + name: 'BitKeep Wallet', + description: 'Connect your BitKeep Wallet', + logo: require(`images/wallets/bitkeep-wallet.png`), + }, + package: 'bitkeep', + connector: connectors.injected, + }, + }, + }; + case 1666600000: + return { + network: 'harmony', + cacheProvider: true, + providerOptions: { + injected: { + display: { + name: 'MetaMask', + }, + }, + 'custom-wc-one': { + display: { + logo: require(`images/wallets/wallet-connect.svg`), + name: 'Wallet Connect', + description: t('Scan your WalletConnect to Connect'), + }, + package: WalletConnectProvider, + options: { + rpc: { + 1: 'https://api.harmony.one/', + 1666600000: 'https://api.harmony.one/', + }, + }, + connector: async (ProviderPackage, options) => { + const provider = new ProviderPackage(options); + + await provider.enable(); + + return provider; + }, + }, + 'custom-bitkeep': { + display: { + name: 'BitKeep Wallet', + description: 'Connect your BitKeep Wallet', + logo: require(`images/wallets/bitkeep-wallet.png`), + }, + package: 'bitkeep', + connector: connectors.injected, + }, + }, + }; + case 42161: + return { + network: 'arbitrum', + cacheProvider: true, + providerOptions: { + injected: { + display: { + name: 'MetaMask', + }, + }, + 'custom-wc-arb': { + display: { + logo: require(`images/wallets/wallet-connect.svg`), + name: 'Wallet Connect', + description: t('Scan your WalletConnect to Connect'), + }, + package: WalletConnectProvider, + options: { + rpc: { + 1: 'https://arb1.arbitrum.io/rpc', + 42161: 'https://arb1.arbitrum.io/rpc', + }, + }, + connector: async (ProviderPackage, options) => { + const provider = new ProviderPackage(options); + + await provider.enable(); + + return provider; + }, + }, + 'custom-cb-arb': { + display: { + logo: require(`images/wallets/coinbase.png`), + name: 'Coinbase Wallet', + description: t('Connect to your Coinbase Wallet'), + }, + options: { + appName: 'Beefy Finance', + appLogoUrl: 'https://app.beefy.finance/static/media/BIFI.e797b2e4.png', + darkMode: false, + }, + package: WalletLink, + connector: async (ProviderPackage, options) => { + const walletLink = new ProviderPackage(options); + + const provider = walletLink.makeWeb3Provider('https://arb1.arbitrum.io/rpc', 42161); + + await provider.enable(); + + return provider; + }, + }, + 'custom-bitkeep': { + display: { + name: 'BitKeep Wallet', + description: 'Connect your BitKeep Wallet', + logo: require(`images/wallets/bitkeep-wallet.png`), + }, + package: 'bitkeep', + connector: connectors.injected, + }, + }, + }; + case 1285: + return { + network: 'moonriver', + cacheProvider: true, + providerOptions: { + injected: { + display: { + name: 'MetaMask', + }, + }, + 'custom-wc-mr': { + display: { + logo: require(`images/wallets/wallet-connect.svg`), + name: 'Wallet Connect', + description: t('Scan your WalletConnect to Connect'), + }, + package: WalletConnectProvider, + options: { + rpc: { + 1: 'https://rpc.moonriver.moonbeam.network', + 1285: 'https://rpc.moonriver.moonbeam.network', + }, + }, + connector: async (ProviderPackage, options) => { + const provider = new ProviderPackage(options); + + await provider.enable(); + + return provider; + }, + }, + }, + }; + case 42220: + return { + network: 'celo', + cacheProvider: true, + providerOptions: { + injected: { + display: { + name: 'MetaMask', + }, + }, + 'custom-wc-valora': { + display: { + logo: require(`images/wallets/valora.png`), + name: 'Valora', + description: t('Connects to Valora, a mobile payments app that works worldwide'), + }, + package: WalletConnectProvider, + options: { + rpc: { + 1: 'https://forno.celo.org', + 42220: 'https://forno.celo.org', + }, + }, + connector: async (ProviderPackage, options) => { + const provider = new ProviderPackage(options); + + await provider.enable(); + + return provider; + }, + }, + 'custom-wc-celo': { + display: { + logo: require(`images/wallets/wallet-connect.svg`), + name: 'Wallet Connect', + description: t('Scan your WalletConnect to Connect'), + }, + package: WalletConnectProvider, + options: { + rpc: { + 1: 'https://forno.celo.org', + 42220: 'https://forno.celo.org', + }, + }, + connector: async (ProviderPackage, options) => { + const provider = new ProviderPackage(options); + + await provider.enable(); + + return provider; + }, + }, + }, + }; + case 25: + return { + network: 'cronos', + cacheProvider: true, + providerOptions: { + injected: { + display: { + name: 'MetaMask', + }, + }, + 'custom-cdc': { + display: { + logo: require(`images/wallets/crypto.png`), + name: 'Crypto.com', + description: t('Crypto.com | Wallet Extension'), + }, + options: { + supportedChainIds: [25], + rpc: { + 25: 'https://evm.cronos.org', // cronos mainet + }, + pollingInterval: 15000, + }, + package: DeFiConnector, + connector: async (packageConnector, options) => { + const connector = new packageConnector({ + name: 'Cronos', + supprtedChainTypes: ['eth'], + supportedChainTypes: ['eth'], + eth: options, + cosmos: null, + }); + await connector.activate(); + + return connector.getProvider(); + }, + }, + 'custom-wc-cronos': { + display: { + logo: require(`images/wallets/wallet-connect.svg`), + name: 'Wallet Connect', + description: t('Scan your WalletConnect to Connect'), + }, + package: WalletConnectProvider, + options: { + rpc: { + 1: 'https://evm.cronos.org', + 25: 'https://evm.cronos.org', + }, + }, + connector: async (ProviderPackage, options) => { + const provider = new ProviderPackage(options); + + await provider.enable(); + + return provider; + }, + }, + }, + }; + case 122: + return { + network: 'fuse', + cacheProvider: true, + providerOptions: { + injected: { + display: { + name: 'MetaMask', + }, + }, + 'custom-wc-fuseCash': { + display: { + logo: require(`images/wallets/fusecash.png`), + name: 'Fuse.Cash', + description: t('Connect to your Fuse.Cash Wallet'), + }, + package: WalletConnectProvider, + options: { + rpc: { + 1: 'https://rpc.fuse.io', + 122: 'https://rpc.fuse.io', + }, + }, + connector: async (ProviderPackage, options) => { + const provider = new ProviderPackage(options); + + await provider.enable(); + + return provider; + }, + }, + 'custom-wc-fuse': { + display: { + logo: require(`images/wallets/wallet-connect.svg`), + name: 'Wallet Connect', + description: t('Scan your WalletConnect to Connect'), + }, + package: WalletConnectProvider, + options: { + rpc: { + 1: 'https://rpc.fuse.io', + 122: 'https://rpc.fuse.io', + }, + }, + connector: async (ProviderPackage, options) => { + const provider = new ProviderPackage(options); + + await provider.enable(); + + return provider; + }, + }, + 'custom-bitkeep': { + display: { + name: 'BitKeep Wallet', + description: 'Connect your BitKeep Wallet', + logo: require(`images/wallets/bitkeep-wallet.png`), + }, + package: 'bitkeep', + connector: connectors.injected, + }, + }, + }; + case 1088: + return { + network: 'metis', + cacheProvider: true, + providerOptions: { + injected: { + display: { + name: 'MetaMask', + }, + }, + 'custom-wc-metis': { + display: { + logo: require(`images/wallets/wallet-connect.svg`), + name: 'Wallet Connect', + description: t('Scan your WalletConnect to Connect'), + }, + package: WalletConnectProvider, + options: { + rpc: { + 1: 'https://andromeda.metis.io/?owner=1088', + 1088: 'https://andromeda.metis.io/?owner=1088', + }, + }, + connector: async (ProviderPackage, options) => { + const provider = new ProviderPackage(options); + + await provider.enable(); + + return provider; + }, + }, + }, + }; + case 1313161554: + return { + network: 'aurora', + cacheProvider: true, + providerOptions: { + injected: { + display: { + name: 'Injected', + description: t('Home-BrowserWallet'), + }, + }, + package: WalletConnectProvider, + options: { + rpc: { + 1: 'https://mainnet.aurora.dev', + 1313161554: 'https://mainnet.aurora.dev', + }, + }, + connector: async (ProviderPackage, options) => { + const provider = new ProviderPackage(options); + + await provider.enable(); + + return provider; + }, + }, + }; + case 1284: + return { + network: 'moonbeam', + cacheProvider: true, + providerOptions: { + injected: { + display: { + name: 'Injected', + description: t('Home-BrowserWallet'), + }, + }, + package: WalletConnectProvider, + options: { + rpc: { + 1: 'https://rpc.api.moonbeam.network', + 1284: 'https://rpc.api.moonbeam.network', + }, + }, + connector: async (ProviderPackage, options) => { + const provider = new ProviderPackage(options); + + await provider.enable(); + + return provider; + }, + }, + }; + case 42262: + return { + network: 'emerald', + cacheProvider: true, + providerOptions: { + injected: { + display: { + name: 'Injected', + description: t('Home-BrowserWallet'), + }, + }, + package: WalletConnectProvider, + options: { + rpc: { + 1: 'https://emerald.oasis.dev', + 42262: 'https://emerald.oasis.dev', + }, + }, + connector: async (ProviderPackage, options) => { + const provider = new ProviderPackage(options); + + await provider.enable(); + + return provider; + }, + }, + }; + default: + return {}; + } +}; + +export const getNetworkTxUrl = networkTxUrls[window.REACT_APP_NETWORK_ID]; +export const getNetworkFriendlyName = (networkId = window.REACT_APP_NETWORK_ID) => + networkFriendlyName[networkId]; +export const getNetworkBuyUrl = (networkId = window.REACT_APP_NETWORK_ID) => + networkBuyUrls[networkId]; +export const getNetworkAppUrl = (networkId = window.REACT_APP_NETWORK_ID) => + window.location.protocol + + '//' + + window.location.host + + window.location.pathname + + '#' + + allNetworks.find(n => n.id === networkId)?.hash; + +export const launchpools = getNetworkLaunchpools(); +export const vaults = getNetworkVaults(); diff --git a/src/features/helpers/getSingleAssetSrc.js b/src/features/helpers/getSingleAssetSrc.js new file mode 100644 index 000000000..c2ca6538c --- /dev/null +++ b/src/features/helpers/getSingleAssetSrc.js @@ -0,0 +1,17 @@ +const singleAssetRequire = require.context('images/single-assets', false, /\.(svg|webp|png)$/); +const singleAssets = Object.fromEntries( + singleAssetRequire.keys().map(path => [path.substring(2, path.lastIndexOf('.')), path]) +); +const singleAssetCache = {}; + +export const getSingleAssetSrc = symbol => { + if (symbol in singleAssetCache) { + return singleAssetCache[symbol]; + } + + if (symbol in singleAssets) { + return (singleAssetCache[symbol] = singleAssetRequire(singleAssets[symbol])); + } + + throw new Error(`Image required for '${symbol}' token in 'images/single-assets/'`); +}; diff --git a/src/features/helpers/utils.js b/src/features/helpers/utils.js index 68f85f411..234e9fce6 100644 --- a/src/features/helpers/utils.js +++ b/src/features/helpers/utils.js @@ -1,40 +1,45 @@ -import { byDecimals } from './bignumber'; - let trimReg = /(^\s*)|(\s*$)/g; -export function isEmpty(key){ - if (key === undefined || key === '' || key === null){ - return true; - } - if (typeof(key) === 'string') { - key = key.replace(trimReg, ''); - if (key == '' || key == null || key == 'null' || key == undefined || key == 'undefined') { - return true - } else { - return false - } - } else if (typeof(key) === 'undefined') { - return true; - } else if (typeof(key) == 'object') { - for(let i in key){ - return false; - } - return true; - }else if (typeof(key) == 'boolean'){ - return false; +export function isEmpty(key) { + if (key === undefined || key === '' || key === null) { + return true; + } + if (typeof key === 'string') { + key = key.replace(trimReg, ''); + return key === '' || key === null || key === 'null' || key === undefined || key === 'undefined'; + } else if (typeof key === 'undefined') { + return true; + } else if (typeof key == 'object') { + for (let i in key) { + return false; } + return true; + } else if (typeof key == 'boolean') { + return false; + } } -let inputReg = /[a-z]/i; -export function inputLimitPass(value,tokenDecimals){ - let valueArr = value.split('.'); - if(inputReg.test(value) || (valueArr.length==2 && valueArr[1].length > tokenDecimals) ){ - return false; - } - return true; +// Index an array of objects by key +export function indexBy(array, key) { + return Object.fromEntries(array.map(item => [item[key], item])); } -export function inputFinalVal(value,total,tokenDecimals){ - let inputVal = Number(value.replace(',','')); - return inputVal > total ? byDecimals(total,0).toFormat(tokenDecimals) :value -} \ No newline at end of file +export const shouldHideFromHarvest = vaultName => { + // FIXME: hidden until we implement an 'advanced' toggle + // return HarvestBlacklistVaultIds.includes(vaultName); + return true; +}; + +// const HarvestBlacklistVaultIds = [ +// 'bifi-maxi', +// 'fortube-fil', +// 'fortube-atom', +// 'fortube-xtz', +// 'fortube-busd', +// 'fortube-link', +// 'fortube-dot', +// 'fortube-usdt', +// 'fortube-eth', +// 'fortube-btcb', +// 'fry-burger-v2', +// ]; diff --git a/src/features/home/App.js b/src/features/home/App.js index a41747962..d2dadcc5b 100644 --- a/src/features/home/App.js +++ b/src/features/home/App.js @@ -1,94 +1,106 @@ -import React, { useEffect, useState } from 'react'; +import React, { memo, useCallback, useEffect, useMemo, useState } from 'react'; +import { makeStyles, ThemeProvider, StylesProvider } from '@material-ui/core/styles'; +import Header from 'components/Header/Header'; +import HeaderLinks from 'components/HeaderLinks/HeaderLinks'; import { useTranslation } from 'react-i18next'; -// notistack import { SnackbarProvider } from 'notistack'; -// core components -import { Notifier } from "features/common" -import Header from "components/Header/Header.js"; -import HeaderLinks from "components/Header/HeaderLinks.js"; -import FooterLinks from 'components/Footer/FooterLinks.js' -// @material-ui/core components -import { makeStyles } from "@material-ui/core/styles"; -// hooks +import { Notifier } from 'features/common'; +import Footer from 'components/Footer/Footer'; +import Pastures from 'components/Pastures/Pastures'; +import { NetworkConnectNotice } from 'components/NetworkConnectNotice/NetworkConnectNotice'; +import appStyle from './jss/appStyle.js'; +import { createWeb3Modal } from '../web3'; import { useConnectWallet, useDisconnectWallet } from './redux/hooks'; -// i18n -import i18next from 'i18next'; -// web3Modal -import Web3Modal from "web3modal"; -import WalletConnectProvider from "@walletconnect/web3-provider"; -// core pages -// style for this page -import appStyle from "./jss/appStyle.js"; +import useNightMode from './hooks/useNightMode'; +import createThemeMode from './jss/appTheme'; +import { useLocation } from 'react-router'; +import V2Banner from 'components/V2Banner/V2Banner.js'; -const useStyles = makeStyles(appStyle); +const themes = { light: null, dark: null }; +const getTheme = mode => { + return (themes[mode] = themes[mode] || createThemeMode(mode === 'dark')); +}; + +const ScrollToTop = memo(function () { + const { pathname } = useLocation(); + + useEffect(() => { + window.scrollTo(0, 0); + }, [pathname]); + + return null; +}); export default function App({ children }) { - const classes = useStyles(); const { t } = useTranslation(); - const { connectWallet, web3, address, networkId, connected, connectWalletPending } = useConnectWallet(); + const { connectWallet, web3, address, networkId, connected } = useConnectWallet(); const { disconnectWallet } = useDisconnectWallet(); - const [ web3Modal, setModal ] = useState(null) + const [web3Modal, setModal] = useState(null); - useEffect(() => { - const newModal = new Web3Modal({ - network: process.env.NETWORK ? process.env.NETWORK : "mainet", - cacheProvider: true, - providerOptions: { - injected: { - display: { - name: "Injected", - description: i18next.t('Home-BrowserWallet') - }, - }, - walletconnect: { - package: WalletConnectProvider, - options: { - infuraId: process.env.INFURA_ID - } - } - } - }) - setModal(newModal) - }, [setModal]) + const { isNightMode, setNightMode } = useNightMode(); + const theme = useMemo(() => getTheme(isNightMode ? 'dark' : 'light'), [isNightMode]); + const useStyles = useMemo(() => { + return makeStyles(appStyle, { defaultTheme: theme }); + }, [theme]); + const classes = useStyles(); - + useEffect(() => { + setModal(createWeb3Modal(t)); + }, [setModal, t]); useEffect(() => { if (web3Modal && (web3Modal.cachedProvider || window.ethereum)) { connectWallet(web3Modal); } - }, [web3Modal, connectWallet, window.ethereum]) + }, [web3Modal, connectWallet]); - useEffect(() => { - if (web3 && address && !connectWalletPending && networkId && Boolean(networkId !== Number(process.env.NETWORK_ID))) { - alert(t('App-SnackBarText')) - } - }, [web3, address, networkId]) + const connectWalletCallback = useCallback(() => { + connectWallet(web3Modal); + }, [web3Modal, connectWallet]); + + const disconnectWalletCallback = useCallback(() => { + disconnectWallet(web3, web3Modal); + }, [web3, web3Modal, disconnectWallet]); return ( - -
-
connectWallet(web3Modal)} - disconnectWallet={() => disconnectWallet(web3, web3Modal)} + + + + +
+
setNightMode(!isNightMode)} + /> + } + isNightMode={isNightMode} + setNightMode={() => setNightMode(!isNightMode)} /> - } - color="dark" - /> -
-
- {Boolean(networkId === Number(process.env.NETWORK_ID)) && children} - +
+
+ {/**/} + + {networkId === window.REACT_APP_NETWORK_ID ? children : null} + +
- -
-
- +
+ +
+
+
+
); } diff --git a/src/features/home/HomePage.js b/src/features/home/HomePage.js index 7c545baf1..c257d4735 100644 --- a/src/features/home/HomePage.js +++ b/src/features/home/HomePage.js @@ -1,89 +1,13 @@ -import React, { useEffect } from 'react'; -import { useTranslation } from 'react-i18next'; -// @material-ui/core components -import { makeStyles } from "@material-ui/core/styles"; -import Slide from "@material-ui/core/Slide"; -import Dialog from "@material-ui/core/Dialog"; -import DialogTitle from "@material-ui/core/DialogTitle"; -import DialogContent from "@material-ui/core/DialogContent"; -import DialogActions from "@material-ui/core/DialogActions"; -// @material-ui/icons -import Check from "@material-ui/icons/Check"; -import Warning from "@material-ui/icons/Warning"; -import Close from "@material-ui/icons/Close"; -// core components -import Button from "components/CustomButtons/Button.js"; -import SnackbarContent from "components/Snackbar/SnackbarContent.js"; -import Clearfix from "components/Clearfix/Clearfix.js"; +import React from 'react'; -import style from "assets/jss/material-kit-pro-react/modalStyle.js"; -// sections for this page -import SectionPools from "features/vault/sections/SectionPools.js"; -import StakePage from 'features/stake/sections/StakePools.js'; -import FarmPools from 'features/farm/sections/FarmPools'; -// style for this page -// resource file -// hooks - -const Transition = React.forwardRef(function Transition(props, ref) { - return ; -}); - -const useStyles = makeStyles(style); +import Pools from 'features/vault/components/Pools/Pools'; +import Disclaimer from 'components/Disclaimer/Disclaimer'; export default function HomePage() { - const [liveDemo, setLiveDemo] = React.useState(true); - const classes = useStyles(); - const { t, i18n } = useTranslation(); - - useEffect(() => { - window.scrollTo(0, 0); - document.body.scrollTop = 0; - }, []); - return ( <> - window.open(t('Home-SnackBarUrl'))} style={{fontWeight: "bold"}}> - {t('Home-SnackBarText')} - - } - close - color="success" - /> - - - - setLiveDemo(false)} - aria-labelledby="classic-modal-slide-title" - aria-describedby="classic-modal-slide-description" - > - - { - (i18n.language=== 'zh' || i18n.language === 'zh-CN')?( -

YFII机枪池已升级到2.0版本并增添了iToken机制,目前旧机枪池中除了yCrv和cCrv以外,都已不再产生收益。我们建议您尽快将资金从旧池中取出并存入新池。旧系统入口:https://v1.dfi.money/

- ):( -

YFII Vault has been upgraded to version 2.0 which features the new iToken mechanism. The old vaults do not generate yield anymore except for yCrv and cCrv. You are encouraged to take your funds out of the old vaults and deposit them into the new ones. Entrance for old vaults:https://v1.dfi.money/

- )} -
- - - -
+ + ); -} \ No newline at end of file +} diff --git a/src/features/home/hooks/useENS.js b/src/features/home/hooks/useENS.js new file mode 100644 index 000000000..8bbd23870 --- /dev/null +++ b/src/features/home/hooks/useENS.js @@ -0,0 +1,19 @@ +import { getDefaultProvider } from '@ethersproject/providers'; +import { useEffect, useState } from 'react'; + +export function useENS(address) { + const [ensName, setENSName] = useState(); + + useEffect(() => { + async function resolveENS() { + if (address) { + const provider = await getDefaultProvider(); + const name = await provider.lookupAddress(address); + if (name) setENSName(name); + } + } + resolveENS(); + }, [address]); + + return { ensName }; +} diff --git a/src/features/home/hooks/useFiltersStorage.js b/src/features/home/hooks/useFiltersStorage.js new file mode 100644 index 000000000..c591de873 --- /dev/null +++ b/src/features/home/hooks/useFiltersStorage.js @@ -0,0 +1,35 @@ +const FILTER_STORAGE = 'filterStorage'; + +let data; + +if (localStorage) { + try { + data = JSON.parse(localStorage.getItem(FILTER_STORAGE)); + if (!data) { + data = {}; + } + } catch (e) {} +} + +const useFilterStorage = () => { + const saveData = () => { + if (localStorage) { + try { + localStorage.setItem(FILTER_STORAGE, JSON.stringify(data)); + } catch (e) {} + } + }; + + const setStorage = (key, value) => { + data[key] = value; + saveData(); + }; + + const getStorage = key => { + return data[key]; + }; + + return { getStorage, setStorage }; +}; + +export default useFilterStorage; diff --git a/src/features/home/hooks/useNightMode.js b/src/features/home/hooks/useNightMode.js new file mode 100644 index 000000000..e049f37db --- /dev/null +++ b/src/features/home/hooks/useNightMode.js @@ -0,0 +1,24 @@ +import { useEffect, useState } from 'react'; + +const useIsNightMode = () => { + const key = 'theme'; + const light = 'light'; + const dark = 'dark'; + let theme = light; + if (localStorage) { + try { + theme = localStorage.getItem(key); + } catch (e) {} + } + const [isNightMode, setNightMode] = useState(theme === dark); + + useEffect(() => { + try { + localStorage.setItem(key, isNightMode ? dark : light); + } catch (e) {} + }, [isNightMode]); + + return { isNightMode, setNightMode }; +}; + +export default useIsNightMode; diff --git a/src/features/home/index.js b/src/features/home/index.js index c42313271..f9e6b1b7a 100644 --- a/src/features/home/index.js +++ b/src/features/home/index.js @@ -1,2 +1,2 @@ export { default as App } from './App'; -export { default as HomePage } from './HomePage'; \ No newline at end of file +export { default as HomePage } from './HomePage'; diff --git a/src/features/home/jss/appStyle.js b/src/features/home/jss/appStyle.js index 3a0d3559e..4f1ea4d25 100644 --- a/src/features/home/jss/appStyle.js +++ b/src/features/home/jss/appStyle.js @@ -1,17 +1,28 @@ -import { container } from "assets/jss/material-kit-pro-react.js"; +import { container } from 'assets/jss/material-kit-pro-react.js'; const appStyle = theme => ({ + '@global': { + 'html,body': { + backgroundColor: theme.palette.background.default, + }, + '#WEB3_CONNECT_MODAL_ID': { + position: 'relative', + zIndex: 2100, + }, + }, page: { - backgroundColor: "#232733", - minHeight: "100vh" + backgroundColor: theme.palette.background.default, + minHeight: '100vh', + position: 'relative', + overflow: 'hidden', }, container: { ...container, zIndex: 1, }, - children:{ - minHeight:'77vh', - } + children: { + minHeight: '77vh', + }, }); export default appStyle; diff --git a/src/features/home/jss/appTheme.js b/src/features/home/jss/appTheme.js new file mode 100644 index 000000000..83642c0e0 --- /dev/null +++ b/src/features/home/jss/appTheme.js @@ -0,0 +1,55 @@ +import { createTheme } from '@material-ui/core/styles'; + +const createThemeMode = isNightMode => + createTheme({ + palette: { + type: isNightMode ? 'dark' : 'light', + background: { + default: isNightMode ? '#242332' : '#fbf9f6', + paper: isNightMode ? '#606077' : '#fff', + primary: isNightMode ? '#505067' : '#FBF6F0', + secondary: isNightMode ? '#3B3A4D' : '#F8F2EC', + extra: isNightMode ? '#242332' : '#FBF6F0', + dark: isNightMode ? '#2B2A3D' : '#999', + paused: isNightMode ? '#2B2A5A' : '#FCE57E', + retired: isNightMode ? '#d32f2f' : '#e57373', + hover: isNightMode ? '#2B2A3D' : '#EFE6DC', + border: isNightMode ? '#2B2A3D' : '#DED9D5', + overlay: isNightMode ? 'rgba(0, 0, 0, 0.75)' : 'rgba(255, 255, 255, 0.75)', + }, + primary: { + main: isNightMode ? '#fff' : '#000', + }, + secondary: { + main: isNightMode ? '#fff' : '#F8F2EC', + }, + text: { + primary: isNightMode ? '#fff' : '#000', + secondary: isNightMode ? '#B0B0DD' : '#00000066', + flipped: isNightMode ? '#000' : '#fff', + }, + }, + overrides: { + MuiButton: { + label: { + color: isNightMode ? '#fff' : '#000', + }, + }, + // for dropdown menu items + MuiButtonBase: { + root: { + color: isNightMode ? '#fff' : '#000', + }, + }, + MuiCheckbox: { + colorPrimary: { + color: isNightMode ? '#fff' : '#000', + }, + colorSecondary: { + color: isNightMode ? '#fff' : '#000', + }, + }, + }, + }); + +export default createThemeMode; diff --git a/src/features/home/jss/sections/sectionSelectStyle.js b/src/features/home/jss/sections/sectionSelectStyle.js deleted file mode 100644 index 9415ab91a..000000000 --- a/src/features/home/jss/sections/sectionSelectStyle.js +++ /dev/null @@ -1,162 +0,0 @@ -import { whiteColor, grayColor } from "assets/jss/material-kit-pro-react.js"; - -const sectionSelectStyle = theme => ({ - modalRoot: { - overflow: "auto", - display: "block" - }, - modal: { - [theme.breakpoints.up("sm")]: { - maxWidth: "500px", - margin: "auto" - }, - borderRadius: "6px", - overflow: "visible", - maxHeight: "unset", - width: "100%", - marginTop: "130px !important", - maxWidth: "50vh", - }, - - modalTitle: { - margin: "0", - lineHeight: "1.5" - }, - modalCloseButton: { - "&, &:hover": { - color: grayColor[0] - }, - "&:hover": { - opacity: "1" - }, - cursor: "pointer", - padding: "1rem", - margin: "-1rem -1rem -1rem auto", - backgroundColor: "transparent", - border: "0", - WebkitAppearance: "none", - float: "right", - fontSize: "1.5rem", - fontWeight: "500", - lineHeight: "1", - textShadow: "0 1px 0 " + whiteColor, - opacity: ".5" - }, - modalClose: { - width: "16px", - height: "16px" - }, - modalBody: { - // paddingTop: "24px", - // paddingRight: "24px", - // paddingBottom: "16px", - // paddingLeft: "24px", - position: "relative", - overflow: "visible" - }, - modalFooter: { - padding: "15px", - textAlign: "right", - paddingTop: "0", - margin: "0" - }, - modalFooterCenter: { - marginLeft: "auto", - marginRight: "auto" - }, - instructionNoticeModal: { - marginBottom: "25px" - }, - imageNoticeModal: { - maxWidth: "150px" - }, - modalLarge: { - [theme.breakpoints.up("md")]: { - maxWidth: "800px" - } - }, - modalSmall: { - [theme.breakpoints.up("sm")]: { - width: "300px", - margin: "auto" - }, - margin: "0 auto" - }, - modalSmallBody: { - marginTop: "20px" - }, - root: { - flex: 1, - display: 'flex', - width: '100%', - justifyContent: 'space-around', - alignItems: 'center', - flexDirection: 'column', - [theme.breakpoints.up('sm')]: { - flexDirection: 'row', - } - }, - card: { - flex: '1', - height: '25vh', - width: '100%', - display: 'flex', - justifyContent: 'center', - alignItems: 'center', - flexDirection: 'column', - cursor: 'pointer', - borderRadius: '0px', - transition: 'background-color 0.2s linear', - [theme.breakpoints.up('sm')]: { - // height: '100vh', - minWidth: '20%', - minHeight: '50vh', - } - }, - - pool: { - backgroundColor: whiteColor, - '&:hover': { - backgroundColor: "#e56b73", - '& .title': { - color: whiteColor, - // display: 'none' - }, - // '& .soon': { - // color: whiteColor, - // display: 'block' - // }, - '& .icon': { - color: whiteColor - } - }, - '& .title': { - color: "#e56b73", - }, - // '& .soon': { - // color: "#e56b73", - // display: 'none' - // }, - '& .icon': { - color: "#e56b73" - }, - }, - title: { - padding: '24px', - paddingBottom: '0px', - [theme.breakpoints.up('sm')]: { - paddingBottom: '24px' - } - }, - icon: { - fontSize: '60px', - [theme.breakpoints.up('sm')]: { - fontSize: '100px', - } - }, - link: { - textDecoration: 'none' - } -}); - -export default sectionSelectStyle; diff --git a/src/features/home/redux/actions.js b/src/features/home/redux/actions.js index ed1d2afde..aa5643774 100644 --- a/src/features/home/redux/actions.js +++ b/src/features/home/redux/actions.js @@ -1,2 +1,2 @@ export { connectWallet } from './connectWallet'; -export { disconnectWallet } from './disconnectWallet'; \ No newline at end of file +export { disconnectWallet } from './disconnectWallet'; diff --git a/src/features/home/redux/connectWallet.js b/src/features/home/redux/connectWallet.js index 57f043ea0..00a30dbe3 100644 --- a/src/features/home/redux/connectWallet.js +++ b/src/features/home/redux/connectWallet.js @@ -1,7 +1,13 @@ -import Web3 from "web3"; +import Web3 from 'web3'; import { useCallback } from 'react'; import { useDispatch, useSelector, shallowEqual } from 'react-redux'; -import { HOME_CONNECT_WALLET_BEGIN, HOME_CONNECT_WALLET_SUCCESS, HOME_CONNECT_WALLET_FAILURE, HOME_ACCOUNTS_CHANGED, HOME_NETWORK_CHANGED } from './constants'; +import { + HOME_CONNECT_WALLET_BEGIN, + HOME_CONNECT_WALLET_SUCCESS, + HOME_CONNECT_WALLET_FAILURE, + HOME_ACCOUNTS_CHANGED, + HOME_NETWORK_CHANGED, +} from './constants'; import { disconnectWallet } from './actions'; export function connectWallet(web3Modal) { @@ -13,62 +19,67 @@ export function connectWallet(web3Modal) { web3.eth.extend({ methods: [ { - name: "chainId", - call: "eth_chainId", - outputFormatter: web3.utils.hexToNumber - } - ] + name: 'chainId', + call: 'eth_chainId', + outputFormatter: web3.utils.hexToNumber, + }, + ], }); const subscribeProvider = provider => { - if (!provider.on) { - console.log("provider.on") + if (!provider.on) { return; - }; + } provider.on('close', () => { dispatch(disconnectWallet(web3, web3Modal)); }); - provider.on("disconnect", async () => { - console.log("provider.close") + provider.on('disconnect', async () => { dispatch(disconnectWallet(web3, web3Modal)); }); - provider.on("accountsChanged", async (accounts) => { - console.log("provider.accountsChanged") - console.log(accounts[0]) + provider.on('accountsChanged', async accounts => { if (accounts[0]) { - dispatch({type: HOME_ACCOUNTS_CHANGED, data: accounts[0]}); + dispatch({ type: HOME_ACCOUNTS_CHANGED, data: accounts[0] }); } else { dispatch(disconnectWallet(web3, web3Modal)); } }); - provider.on("networkChanged", async (networkId) => { - dispatch({type: HOME_NETWORK_CHANGED, data: networkId}); + provider.on('chainChanged', async chainId => { + const networkId = web3.utils.isHex(chainId) ? web3.utils.hexToNumber(chainId) : chainId; + dispatch({ type: HOME_NETWORK_CHANGED, data: networkId }); }); - } - await subscribeProvider(provider); - + }; + subscribeProvider(provider); + const accounts = await web3.eth.getAccounts(); const address = accounts[0]; - const networkId = await web3.eth.net.getId(); - dispatch({type: HOME_CONNECT_WALLET_SUCCESS, data: {web3, address, networkId}}) + let networkId = Number(provider.chainId || (await web3.eth.getChainId())); + if (networkId === 86) { + // Trust provider returns an incorrect chainId for BSC. + networkId = 56; + } + + dispatch({ type: HOME_CONNECT_WALLET_SUCCESS, data: { web3, address, networkId } }); } catch (error) { + console.error(error); dispatch({ type: HOME_CONNECT_WALLET_FAILURE }); } - }; } export function useConnectWallet() { const dispatch = useDispatch(); - const {web3, address, networkId, connected, connectWalletPending} = useSelector(state => ({ - web3:state.home.web3, - address:state.home.address, - networkId: state.home.networkId, - connected: state.home.connected, - connectWalletPending:state.home.connectWalletPending, - }), shallowEqual); + const { web3, address, networkId, connected, connectWalletPending } = useSelector( + state => ({ + web3: state.home.web3, + address: state.home.address, + networkId: state.home.networkId, + connected: state.home.connected, + connectWalletPending: state.home.connectWalletPending, + }), + shallowEqual + ); const boundAction = useCallback(data => dispatch(connectWallet(data)), [dispatch]); - return { web3, address, networkId, connected,connectWalletPending, connectWallet: boundAction }; + return { web3, address, networkId, connected, connectWalletPending, connectWallet: boundAction }; } export function reducer(state, action) { @@ -76,7 +87,7 @@ export function reducer(state, action) { case HOME_CONNECT_WALLET_BEGIN: return { ...state, - connectWalletPending: true + connectWalletPending: true, }; case HOME_CONNECT_WALLET_SUCCESS: @@ -86,27 +97,27 @@ export function reducer(state, action) { address: process.env.ACCOUNT ? process.env.ACCOUNT : action.data.address, networkId: action.data.networkId, connected: true, - connectWalletPending: false + connectWalletPending: false, }; case HOME_NETWORK_CHANGED: return { ...state, - networkId: action.data - } + networkId: action.data, + }; case HOME_ACCOUNTS_CHANGED: return { ...state, - address: action.data - } + address: action.data, + }; case HOME_CONNECT_WALLET_FAILURE: return { ...state, - connectWalletPending: false + connectWalletPending: false, }; default: return state; } -} \ No newline at end of file +} diff --git a/src/features/home/redux/constants.js b/src/features/home/redux/constants.js index 9e343619d..c7592c092 100644 --- a/src/features/home/redux/constants.js +++ b/src/features/home/redux/constants.js @@ -1,10 +1,9 @@ -// connectWallet -export const HOME_CONNECT_WALLET_BEGIN = 'HOME_CONNECT_WALLET_BEGIN' -export const HOME_CONNECT_WALLET_SUCCESS = 'HOME_CONNECT_WALLET_SUCCESS' -export const HOME_CONNECT_WALLET_FAILURE = 'HOME_CONNECT_WALLET_FAILURE' +export const HOME_CONNECT_WALLET_BEGIN = 'HOME_CONNECT_WALLET_BEGIN'; +export const HOME_CONNECT_WALLET_SUCCESS = 'HOME_CONNECT_WALLET_SUCCESS'; +export const HOME_CONNECT_WALLET_FAILURE = 'HOME_CONNECT_WALLET_FAILURE'; export const HOME_ACCOUNTS_CHANGED = 'HOME_ACCOUNTS_CHANGED'; -export const HOME_NETWORK_CHANGED = 'HOME_NETWORK_CHANGED' -// disconnectWallet -export const HOME_DISCONNECT_WALLET_BEGIN = 'HOME_DISCONNECT_WALLET_BEGIN' -export const HOME_DISCONNECT_WALLET_SUCCESS = 'HOME_DISCONNECT_WALLET_SUCCESS' -export const HOME_DISCONNECT_WALLET_FAILURE = 'HOME_DISCONNECT_WALLET_FAILURE' \ No newline at end of file +export const HOME_NETWORK_CHANGED = 'HOME_NETWORK_CHANGED'; + +export const HOME_DISCONNECT_WALLET_BEGIN = 'HOME_DISCONNECT_WALLET_BEGIN'; +export const HOME_DISCONNECT_WALLET_SUCCESS = 'HOME_DISCONNECT_WALLET_SUCCESS'; +export const HOME_DISCONNECT_WALLET_FAILURE = 'HOME_DISCONNECT_WALLET_FAILURE'; diff --git a/src/features/home/redux/disconnectWallet.js b/src/features/home/redux/disconnectWallet.js index 6aaec1fb8..b4e785f3b 100644 --- a/src/features/home/redux/disconnectWallet.js +++ b/src/features/home/redux/disconnectWallet.js @@ -1,6 +1,10 @@ import { useCallback } from 'react'; import { useDispatch, useSelector, shallowEqual } from 'react-redux'; -import { HOME_DISCONNECT_WALLET_BEGIN, HOME_DISCONNECT_WALLET_SUCCESS, HOME_DISCONNECT_WALLET_FAILURE } from './constants'; +import { + HOME_DISCONNECT_WALLET_BEGIN, + HOME_DISCONNECT_WALLET_SUCCESS, + HOME_DISCONNECT_WALLET_FAILURE, +} from './constants'; export function disconnectWallet(web3, web3Modal) { return dispatch => { @@ -13,10 +17,10 @@ export function disconnectWallet(web3, web3Modal) { } await web3Modal.clearCachedProvider(); dispatch({ type: HOME_DISCONNECT_WALLET_SUCCESS }); - resolve() + resolve(); } catch (error) { - dispatch({ type: HOME_DISCONNECT_WALLET_FAILURE }) - reject(error) + dispatch({ type: HOME_DISCONNECT_WALLET_FAILURE }); + reject(error); } }); return promise; @@ -25,8 +29,14 @@ export function disconnectWallet(web3, web3Modal) { export function useDisconnectWallet() { const dispatch = useDispatch(); - const disconnectWalletPending = useSelector(state => (state.home.disconnectWalletPending), shallowEqual); - const boundAction = useCallback((web3, web3Modal) => dispatch(disconnectWallet(web3, web3Modal)), [dispatch]); + const disconnectWalletPending = useSelector( + state => state.home.disconnectWalletPending, + shallowEqual + ); + const boundAction = useCallback( + (web3, web3Modal) => dispatch(disconnectWallet(web3, web3Modal)), + [dispatch] + ); return { disconnectWalletPending, disconnectWallet: boundAction }; } @@ -36,26 +46,26 @@ export function reducer(state, action) { case HOME_DISCONNECT_WALLET_BEGIN: return { ...state, - disconnectWalletPending: true + disconnectWalletPending: true, }; case HOME_DISCONNECT_WALLET_SUCCESS: return { ...state, - address: "", + address: '', web3: null, connected: false, - disconnectWalletPending: false + disconnectWalletPending: false, }; case HOME_DISCONNECT_WALLET_FAILURE: return { ...state, web3: null, - address: "", - disconnectWalletPending: false + address: '', + disconnectWalletPending: false, }; default: return state; } -} \ No newline at end of file +} diff --git a/src/features/home/redux/hooks.js b/src/features/home/redux/hooks.js index a298099e0..db52bcb70 100644 --- a/src/features/home/redux/hooks.js +++ b/src/features/home/redux/hooks.js @@ -1,2 +1,2 @@ export { useConnectWallet } from './connectWallet'; -export { useDisconnectWallet } from './disconnectWallet'; \ No newline at end of file +export { useDisconnectWallet } from './disconnectWallet'; diff --git a/src/features/home/redux/initialState.js b/src/features/home/redux/initialState.js deleted file mode 100644 index 3c5b4bd3b..000000000 --- a/src/features/home/redux/initialState.js +++ /dev/null @@ -1,16 +0,0 @@ -// Initial state is the place you define all initial values for the Redux store of the feature. -// In the 'standard' way, initialState is defined in reducers: http://redux.js.org/docs/basics/Reducers.html -// But when application grows, there will be multiple reducers files, it's not intuitive what data is managed by the whole store. -// So Rekit extracts the initial state definition into a separate module so that you can have -// a quick view about what data is used for the feature, at any time. - -// NOTE: initialState constant is necessary so that Rekit could auto add initial state when creating async actions. - -const initialState = { - address: "", - web3: null, - connected: false, - networkId: Number(process.env.NETWORK_ID), -}; - -export default initialState; \ No newline at end of file diff --git a/src/features/home/redux/reducer.js b/src/features/home/redux/reducer.js index 95f9b3604..e92eb0a7a 100644 --- a/src/features/home/redux/reducer.js +++ b/src/features/home/redux/reducer.js @@ -1,20 +1,14 @@ -// This is the root reducer of the feature. It is used for: -// 1. Load reducers from each action in the feature and process them one by one. -// Note that this part of code is mainly maintained by Rekit, you usually don't need to edit them. -// 2. Write cross-topic reducers. If a reducer is not bound to some specific action. -// Then it could be written here. -// Learn more from the introduction of this approach: -// https://medium.com/@nate_wang/a-new-approach-for-managing-redux-actions-91c26ce8b5da. - -import initialState from './initialState'; import { reducer as connectWalletReducer } from './connectWallet'; import { reducer as disconnectWalletReducer } from './disconnectWallet'; +const reducers = [connectWalletReducer, disconnectWalletReducer]; -const reducers = [ - connectWalletReducer, - disconnectWalletReducer -]; +const initialState = { + address: '', + web3: null, + connected: false, + networkId: window.REACT_APP_NETWORK_ID, +}; export default function reducer(state = initialState, action) { let newState; @@ -26,4 +20,4 @@ export default function reducer(state = initialState, action) { } /* istanbul ignore next */ return reducers.reduce((s, r) => r(s, action), newState); -} \ No newline at end of file +} diff --git a/src/features/home/route.js b/src/features/home/route.js deleted file mode 100644 index 201843969..000000000 --- a/src/features/home/route.js +++ /dev/null @@ -1,8 +0,0 @@ -import { HomePage } from './'; - -export default { - path: '', - childRoutes: [ - { path: 'index', component: HomePage, isIndex: true }, - ], -}; diff --git a/src/features/stake/PoolPage.js b/src/features/stake/PoolPage.js index 93b8a5a90..2db34e269 100644 --- a/src/features/stake/PoolPage.js +++ b/src/features/stake/PoolPage.js @@ -1,25 +1,10 @@ -import React, { useState, useEffect } from 'react'; -import { useHistory } from 'react-router-dom'; -// @material-ui/core components -// @material-ui/icons -// import Close from "@material-ui/icons/Close"; -// core components -// sections for this page -import { StakePool } from './sections' -// hooks +import React from 'react'; +import { StakePool } from './sections'; export default function PoolPage(props) { - const history = useHistory(); - const [ index ] = useState(Number(props.match.params.index) - 1); - - useEffect(() => { - if(index != 3) return history.push('/stake') - window.scrollTo(0, 0); - document.body.scrollTop = 0; - }, [index]); return ( <> - + ); -} \ No newline at end of file +} diff --git a/src/features/stake/StakePage.js b/src/features/stake/StakePage.js index 2804755a5..16f777960 100644 --- a/src/features/stake/StakePage.js +++ b/src/features/stake/StakePage.js @@ -1,20 +1,18 @@ -import React, { useEffect } from 'react'; -// @material-ui/core components -// @material-ui/icons -// import Close from "@material-ui/icons/Close"; -// core components -// sections for this page -import StakePools from './sections/StakePools' -// hooks +import React from 'react'; +import { StakePools } from './sections'; +import { Helmet } from 'react-helmet'; +import { usePageMeta } from '../common/getPageMeta'; export default function StakePage() { - useEffect(() => { - window.scrollTo(0, 0); - document.body.scrollTop = 0; - }, []); + const { getPageMeta } = usePageMeta(); + return ( <> + + {getPageMeta('Stakes-Meta-Title')} + + ); -} \ No newline at end of file +} diff --git a/src/features/stake/jss/sections/stakePoolsStyle.js b/src/features/stake/jss/sections/stakePoolsStyle.js deleted file mode 100644 index eadd70513..000000000 --- a/src/features/stake/jss/sections/stakePoolsStyle.js +++ /dev/null @@ -1,390 +0,0 @@ -import { withStyles } from "@material-ui/core/styles"; -import TableCell from '@material-ui/core/TableCell'; -import TableRow from '@material-ui/core/TableRow'; - -const fontDefaultStyle = { - color: '#fff', - fontFamily: 'Helvetica', - fontSize: '18px', - letterSpacing: '0', - lineHeight: '18px', - fontWeight:'400', -}; - -const secondStyle = { - opacity: '0.4', - fontFamily: 'Helvetica', - fontSize: '14px', - color: '#FFFFFF', - letterSpacing: '0', - lineHeight: '14px', -}; - -const normalBackgroundColor = '#2C3040'; -const primaryColor = '#FF2D82'; -const secondColor = '#635AFF'; - -const StyledTableCell = withStyles((theme) => ({ - head: { - ...fontDefaultStyle, - backgroundColor: secondColor, - height:'48px', - borderColor:'rgb(40,42,55,0.5)', - padding:'0 40px', - '&:first-child':{ - borderTopLeftRadius:'12px', - }, - '&:last-child':{ - borderTopRightRadius:'12px', - }, - }, - body: { - ...fontDefaultStyle, - padding:'20px 40px', - backgroundColor: normalBackgroundColor, - borderColor:'rgb(40,42,55,0.5)', - }, -}))(TableCell); - -const StyledTableRow = withStyles((theme) => ({ - root: { - - }, -}))(TableRow); - -const stakePoolsStyle = theme => ({ - leftImage:{ - position:'absolute', - left:'-3px', - bottom:'-98px', - zIndex:'-1', - }, - rightImage:{ - position:'absolute', - right:'0', - bottom:'0', - zIndex:'-1', - }, - mainTitle:{ - fontFamily: 'Helvetica', - fontSize: '32px', - color: '#FFFFFF', - letterSpacing: '0', - lineHeight: '32px', - fontWeight: "550", - }, - secondTitle:{ - ...secondStyle, - fontWeight: "550", - }, - listHeader:{ - backgroundColor: normalBackgroundColor, - position:'relative', - borderRadius:'6px', - height:'180px', - padding:'48px 60px', - zIndex:'10', - marginBottom:'40px', - }, - table: { - minWidth: 700, - }, - tableBodyRoot:{ - '& tr:last-child th:first-child':{ - borderBottomLeftRadius:'12px', - }, - '& tr:last-child th:last-child':{ - borderBottomRightRadius:'12px', - }, - }, - stakeButton:{ - ...fontDefaultStyle, - backgroundColor: primaryColor, - borderRadius: '24px', - fontSize: '14px', - lineHeight: '14px', - padding:'12px 24px', - marginRight:'8px', - boxShadow: "0 0", - "&:hover,&:focus": { - backgroundColor: primaryColor, - boxShadow: "0 0", - } - }, - learnMoreButton:{ - ...fontDefaultStyle, - height:'32px', - borderRadius: '24px', - fontSize: '12px', - lineHeight: '12x', - padding:'12px 24px', - marginLeft:'12px', - fontWeight:'600', - boxShadow: "0 0", - backgroundColor: secondColor, - "&:hover,&:focus": { - backgroundColor: secondColor, - } - }, - rewardsButton:{ - backgroundColor: secondColor, - "&:hover,&:focus": { - backgroundColor: secondColor, - boxShadow: "0 0", - } - }, - grayButton:{ - color:primaryColor, - backgroundColor:'#353848', - boxShadow:'0 2px 2px 0 #353848', - boxShadow: "0 0", - "&:hover,&:focus": { - color:primaryColor, - backgroundColor: '#353848', - boxShadow: "0 0", - } - }, - firstCell:{ - display:'flex', - }, - firstCellContent:{ - display:'flex', - flexDirection:'column', - alignItems:'flex-start', - justifyContent:'center', - marginLeft:'8px', - '& :first-child':{ - marginBottom:'4px' - } - }, - avatarContainer:{ - width:'48px', - height:'48px', - borderRadius:'4px', - backgroundColor:'#fff', - display:'flex', - alignItems:'center', - justifyContent:'center', - }, - avatar:{ - width:'38px', - height:'38px', - }, - inputAvatar:{ - [theme.breakpoints.down("xs")]: { - width:'26px', - height:'26px', - }, - }, - detailTitle:{ - fontFamily: 'Helvetica', - fontSize: '32px', - color: '#FFFFFF', - letterSpacing: '0', - lineHeight: '32px', - fontWeight: "550", - marginBottom:'24px' - }, - detailContentUp:{ - backgroundColor: normalBackgroundColor, - borderTopLeftRadius:'8px', - borderTopRightRadius:'8px', - padding:'56px 120px', - [theme.breakpoints.down("xs")]: { - borderRadius:'8px', - marginBottom:'12px', - padding:'30px 16px', - }, - }, - detailContentDown:{ - backgroundColor: normalBackgroundColor, - borderBottomLeftRadius:'8px', - borderBottomRightRadius:'8px', - padding:'48px', - paddingTop:'0', - paddingBottom:'20px', - [theme.breakpoints.down("xs")]: { - borderRadius:'8px', - padding:'36px 22px 12px 22px', - }, - }, - contentTitleMarginBottom:{ - marginBottom:'48px', - [theme.breakpoints.down("xs")]: { - marginBottom:'0', - }, - }, - contentTitle:{ - display:"flex", - justifyContent:'center', - [theme.breakpoints.down("xs")]: { - flexDirection:'column', - }, - }, - contentTitleItem:{ - display:'flex', - flexDirection:'column', - alignItems:'center', - padding:'0 12px', - [theme.breakpoints.down("xs")]: { - alignItems:'flex-start', - }, - }, - contentItemTitleVal:{ - ...fontDefaultStyle, - fontSize: '28px', - color: primaryColor, - lineHeight: '28px', - marginBottom:'12px', - // textTransform:'uppercase', - [theme.breakpoints.down("xs")]: { - marginBottom:'0', - } - }, - contentItemTitle:{ - ...fontDefaultStyle, - opacity: '0.4', - [theme.breakpoints.down("xs")]: { - marginBottom:'12px', - } - }, - stakeHintContainer:{ - display:'flex', - justifyContent:'center', - alignItems:'center', - marginTop:'10px', - width:'85%', - height:'36px', - [theme.breakpoints.down("xs")]: { - width:'100%', - marginTop:'12px', - height:'14px', - marginBottom:'24px', - }, - }, - stakeHint:{ - ...fontDefaultStyle, - color:'#979797', - fontSize:'14px', - }, - stakeDetailButton:{ - width:'250px', - height:'44px', - marginRight:'0', - [theme.breakpoints.down("xs")]: { - width:'300px', - }, - }, - stakeHintContainerHidden:{ - [theme.breakpoints.down("xs")]: { - height:'0 !important', - marginBottom:'0', - } - }, - contentTitleItemBorder:{ - borderRight:'1px solid rgb(255,255,255,0.1)', - [theme.breakpoints.down("xs")]: { - border:'0', - }, - }, - contentButtonMargin:{ - marginRight:'36px', - }, - inputContainer:{ - height:'70px', - borderRadius:'35px', - backgroundColor:'#353848', - display:'flex', - alignItems:'center', - justifyContent:'space-between', - [theme.breakpoints.down("xs")]: { - width:'300px', - height:'48px', - margin:'0 auto', - } - }, - inputAvatarContainer:{ - width:'40px', - height:'40px', - borderRadius:'40px', - backgroundColor:'#fff', - display:'flex', - alignItems:'center', - justifyContent:'center', - [theme.breakpoints.down("xs")]: { - width:'26px', - height:'26px', - }, - }, - flexBox:{ - display:'flex', - alignItems:'center', - }, - inputTxt:{ - ...fontDefaultStyle, - marginLeft:'8px', - }, - inputSubTxt:{ - ...fontDefaultStyle, - fontSize: '16px', - lineHeight: '16px', - opacity: '0.4', - marginRight:'8px', - }, - inputCloseIcon:{ - color:'#fff', - opacity: '0.4', - }, - flexCenter:{ - display:'flex', - justifyContent:'center', - alignItems:'center', - }, - marginTop:{ - marginTop:'12px', - }, - mobileContainer:{ - display:'flex', - flexDirection:'column', - justifyContent:'center', - alignItems:'center', - padding:'24px', - borderRadius:'12px', - backgroundColor: normalBackgroundColor, - }, - mobileHead:{ - ...fontDefaultStyle, - display:'flex', - flexDirection:'column', - justifyContent:'center', - alignItems:'center', - margin:'12px', - }, - mobileDetail:{ - fontFamily: 'Helvetica', - fontSize: '16px', - color: '#A4A6B3', - letterSpacing: '0', - lineHeight: '14px', - display:'flex', - flexDirection:'column', - justifyContent:'center', - alignItems:'center', - margin:'18px', - }, - mobileMaxButton:{ - [theme.breakpoints.down("xs")]: { - width:'42px', - height:'24px', - fontSize: '12px', - lineHeight: '16px', - }, - }, - mobileInput:{ - [theme.breakpoints.down("xs")]: { - width:'100px', - }, - }, -}) - -export {StyledTableCell,StyledTableRow,stakePoolsStyle}; \ No newline at end of file diff --git a/src/features/stake/redux/action.js b/src/features/stake/redux/action.js index fb1804e3c..cc776d4ff 100644 --- a/src/features/stake/redux/action.js +++ b/src/features/stake/redux/action.js @@ -1,12 +1,5 @@ -export { fetchPoolsInfo } from './fetchPoolsInfo'; -export { checkApproval } from './checkApproval'; -export { fetchBalance } from './fetchBalance'; -export { fetchCurrentlyStaked } from './fetchCurrentlyStaked'; -export { fetchRewardsAvailable } from './fetchRewardsAvailable'; -export { fetchHalfTime } from './fetchHalfTime'; -export { fetchCanWithdrawTime } from './fetchCanWithdrawTime'; export { fetchApproval } from './fetchApproval'; export { fetchStake } from './fetchStake'; export { fetchWithdraw } from './fetchWithdraw'; export { fetchClaim } from './fetchClaim'; -export { fetchExit } from './fetchExit'; \ No newline at end of file +export { fetchExit } from './fetchExit'; diff --git a/src/features/stake/redux/checkApproval.js b/src/features/stake/redux/checkApproval.js deleted file mode 100644 index 5add622d7..000000000 --- a/src/features/stake/redux/checkApproval.js +++ /dev/null @@ -1,113 +0,0 @@ -import { useCallback } from 'react'; -import BigNumber from "bignumber.js"; -import { erc20ABI } from "../../configure"; -import { useDispatch, useSelector, shallowEqual } from 'react-redux'; -import { - STAKE_CHECK_APPROVAL_BEGIN, - STAKE_CHECK_APPROVAL_SUCCESS, - STAKE_CHECK_APPROVAL_FAILURE, -} from './constants'; - -export function checkApproval(index) { - return (dispatch, getState) => { - // optionally you can have getState as the second argument - dispatch({ - type: STAKE_CHECK_APPROVAL_BEGIN, - index - }); - // Return a promise so that you could control UI flow without states in the store. - // For example: after submit a form, you need to redirect the page to another when succeeds or show some errors message if fails. - // It's hard to use state to manage it, but returning a promise allows you to easily achieve it. - // e.g.: handleSubmit() { this.props.actions.submitForm(data).then(()=> {}).catch(() => {}); } - const promise = new Promise((resolve, reject) => { - // doRequest is a placeholder Promise. You should replace it with your own logic. - // See the real-word example at: https://github.com/supnate/rekit/blob/master/src/features/home/redux/fetchRedditReactjsList.js - // args.error here is only for test coverage purpose. - const { home, stake } = getState(); - const { address, web3 } = home; - const { pools } = stake; - const { tokenAddress, earnContractAddress } = pools[index]; - const contract = new web3.eth.Contract(erc20ABI, tokenAddress); - contract.methods.allowance(address, earnContractAddress).call({ from: address }).then( - data => { - const balance = web3.utils.fromWei(data, "ether"); - dispatch({ - type: STAKE_CHECK_APPROVAL_SUCCESS, - data: new BigNumber(balance).toNumber(), - index - }); - resolve(data); - }, - ).catch( - // Use rejectHandler as the second argument so that render errors won't be caught. - error => { - dispatch({ - type: STAKE_CHECK_APPROVAL_FAILURE, - index - }); - reject(error.message || error); - } - ) - }); - return promise; - } -} - - -export function useCheckApproval() { - // args: false value or array - // if array, means args passed to the action creator - const dispatch = useDispatch(); - - const { allowance, checkApprovalPending } = useSelector( - state => ({ - allowance: state.stake.allowance, - checkApprovalPending: state.stake.checkApprovalPending, - }) - ); - - const boundAction = useCallback( - data => dispatch(checkApproval(data)), - [dispatch], - ); - - return { - allowance, - checkApproval: boundAction, - checkApprovalPending - }; -} - -export function reducer(state, action) { - const { allowance, checkApprovalPending } = state; - switch (action.type) { - case STAKE_CHECK_APPROVAL_BEGIN: - // Just after a request is sent - checkApprovalPending[action.index] = true; - return { - ...state, - checkApprovalPending, - }; - - case STAKE_CHECK_APPROVAL_SUCCESS: - // The request is success - checkApprovalPending[action.index] = false; - allowance[action.index] = action.data; - return { - ...state, - allowance, - checkApprovalPending, - }; - - case STAKE_CHECK_APPROVAL_FAILURE: - // The request is failed - checkApprovalPending[action.index] = false; - return { - ...state, - checkApprovalPending, - }; - - default: - return state; - } -} \ No newline at end of file diff --git a/src/features/stake/redux/constants.js b/src/features/stake/redux/constants.js index deb4177eb..0e6e082d2 100644 --- a/src/features/stake/redux/constants.js +++ b/src/features/stake/redux/constants.js @@ -44,4 +44,8 @@ export const STAKE_FETCH_CLAIM_FAILURE = 'STAKE_FETCH_CLAIM_FAILURE'; export const STAKE_FETCH_EXIT_BEGIN = 'STAKE_FETCH_EXIT_BEGIN'; export const STAKE_FETCH_EXIT_SUCCESS = 'STAKE_FETCH_EXIT_SUCCESS'; -export const STAKE_FETCH_EXIT_FAILURE = 'STAKE_FETCH_EXIT_FAILURE'; \ No newline at end of file +export const STAKE_FETCH_EXIT_FAILURE = 'STAKE_FETCH_EXIT_FAILURE'; + +export const STAKE_FETCH_POOL_DATA_BEGIN = 'STAKE_FETCH_POOL_DATA_BEGIN'; +export const STAKE_FETCH_POOL_DATA_SUCCESS = 'STAKE_FETCH_POOL_DATA_SUCCESS'; +export const STAKE_FETCH_POOL_DATA_FAILURE = 'STAKE_FETCH_POOL_DATA_FAILURE'; diff --git a/src/features/stake/redux/fetchApproval.js b/src/features/stake/redux/fetchApproval.js index 2f0e53c04..bbd3c3a5d 100644 --- a/src/features/stake/redux/fetchApproval.js +++ b/src/features/stake/redux/fetchApproval.js @@ -1,129 +1,138 @@ import { useCallback } from 'react'; -import { erc20ABI } from "../../configure"; -import { useDispatch, useSelector, shallowEqual } from 'react-redux'; +import { erc20ABI } from '../../configure'; +import { useDispatch, useSelector } from 'react-redux'; import { STAKE_FETCH_APPROVAL_BEGIN, - STAKE_FETCH_APPROVAL_SUCCESS, STAKE_FETCH_APPROVAL_FAILURE, + STAKE_FETCH_APPROVAL_SUCCESS, } from './constants'; import { enqueueSnackbar } from '../../common/redux/actions'; -import { checkApproval } from './action'; +import { updatePools } from './subscription'; +import { launchpools } from '../../helpers/getNetworkData'; + +const UNLIMITED_APPROVAL = '0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff'; -export function fetchApproval(index) { +export function fetchApproval(id) { return (dispatch, getState) => { // optionally you can have getState as the second argument dispatch({ type: STAKE_FETCH_APPROVAL_BEGIN, - index + id, }); // Return a promise so that you could control UI flow without states in the store. // For example: after submit a form, you need to redirect the page to another when succeeds or show some errors message if fails. // It's hard to use state to manage it, but returning a promise allows you to easily achieve it. // e.g.: handleSubmit() { this.props.actions.submitForm(data).then(()=> {}).catch(() => {}); } - const promise = new Promise(async (resolve, reject) => { + return new Promise(async (resolve, reject) => { // doRequest is a placeholder Promise. You should replace it with your own logic. // See the real-word example at: https://github.com/supnate/rekit/blob/master/src/features/home/redux/fetchRedditReactjsList.js // args.error here is only for test coverage purpose. - const { home, stake } = getState(); + const { home } = getState(); const { address, web3 } = home; - const { pools } = stake; - const { tokenAddress, earnContractAddress } = pools[index]; + const { tokenAddress, earnContractAddress } = launchpools[id]; const contract = new web3.eth.Contract(erc20ABI, tokenAddress); - contract.methods.approve(earnContractAddress, web3.utils.toWei("79228162514", "ether")).send({ from: address }).on( - 'transactionHash', function(hash){ - dispatch(enqueueSnackbar({ - message: hash, - options: { - key: new Date().getTime() + Math.random(), - variant: 'success' - }, - hash - })); - }) - .on('receipt', function(receipt){ - dispatch(enqueueSnackbar({ - key: new Date().getTime() + Math.random(), - message: '交易确认', - options: { - variant: 'success', - }, - })); - dispatch({ type: STAKE_FETCH_APPROVAL_SUCCESS, index }); - dispatch(checkApproval(index)) - resolve(); + contract.methods + .approve(earnContractAddress, UNLIMITED_APPROVAL) + .send({ from: address }) + .on('transactionHash', function (hash) { + dispatch( + enqueueSnackbar({ + message: hash, + options: { + key: new Date().getTime() + Math.random(), + variant: 'success', + }, + hash, + }) + ); }) - .on('error', function(error) { - dispatch(enqueueSnackbar({ - message: error.message || error, - options: { + .on('receipt', function (receipt) { + dispatch( + enqueueSnackbar({ key: new Date().getTime() + Math.random(), - variant: 'error' - }, - })); - dispatch({ type: STAKE_FETCH_APPROVAL_FAILURE, index }); + message: 'Success', + options: { + variant: 'success', + }, + hash: receipt.transactionHash, + }) + ); + dispatch({ type: STAKE_FETCH_APPROVAL_SUCCESS, id }); + dispatch(updatePools); resolve(); }) - .catch((error) => { - dispatch({ type: STAKE_FETCH_APPROVAL_FAILURE, index }); - reject(error) + .on('error', function (error) { + dispatch( + enqueueSnackbar({ + message: error.message || error, + options: { + key: new Date().getTime() + Math.random(), + variant: 'error', + }, + }) + ); + dispatch({ type: STAKE_FETCH_APPROVAL_FAILURE, id }); + resolve(); }) + .catch(error => { + dispatch({ type: STAKE_FETCH_APPROVAL_FAILURE, id }); + reject(error); + }); }); - return promise; - } + }; } - export function useFetchApproval() { // args: false value or array // if array, means args passed to the action creator const dispatch = useDispatch(); - const { fetchApprovalPending } = useSelector( - state => ({ - fetchApprovalPending: state.stake.fetchApprovalPending, - }) - ); + const { fetchApprovalPending } = useSelector(state => ({ + fetchApprovalPending: state.stake.fetchApprovalPending, + })); - const boundAction = useCallback( - data => dispatch(fetchApproval(data)), - [dispatch], - ); + const boundAction = useCallback(data => dispatch(fetchApproval(data)), [dispatch]); return { fetchApproval: boundAction, - fetchApprovalPending + fetchApprovalPending, }; } export function reducer(state, action) { - const { fetchApprovalPending } = state; switch (action.type) { case STAKE_FETCH_APPROVAL_BEGIN: // Just after a request is sent - fetchApprovalPending[action.index] = true; return { ...state, - fetchApprovalPending, + fetchApprovalPending: { + ...state.fetchApprovalPending, + [action.id]: true, + }, }; case STAKE_FETCH_APPROVAL_SUCCESS: // The request is success - fetchApprovalPending[action.index] = false; return { ...state, - fetchApprovalPending, + fetchApprovalPending: { + ...state.fetchApprovalPending, + [action.id]: false, + }, }; case STAKE_FETCH_APPROVAL_FAILURE: // The request is failed - fetchApprovalPending[action.index] = false; return { ...state, - fetchApprovalPending, + fetchApprovalPending: { + ...state.fetchApprovalPending, + [action.id]: false, + }, }; default: return state; } -} \ No newline at end of file +} diff --git a/src/features/stake/redux/fetchBalance.js b/src/features/stake/redux/fetchBalance.js deleted file mode 100644 index c151c21c2..000000000 --- a/src/features/stake/redux/fetchBalance.js +++ /dev/null @@ -1,113 +0,0 @@ -import { useCallback } from 'react'; -import BigNumber from "bignumber.js"; -import { erc20ABI } from "../../configure"; -import { useDispatch, useSelector, shallowEqual } from 'react-redux'; -import { - STAKE_FETCH_BALANCE_BEGIN, - STAKE_FETCH_BALANCE_SUCCESS, - STAKE_FETCH_BALANCE_FAILURE, -} from './constants'; - -export function fetchBalance(index) { - return (dispatch, getState) => { - // optionally you can have getState as the second argument - dispatch({ - type: STAKE_FETCH_BALANCE_BEGIN, - index - }); - // Return a promise so that you could control UI flow without states in the store. - // For example: after submit a form, you need to redirect the page to another when succeeds or show some errors message if fails. - // It's hard to use state to manage it, but returning a promise allows you to easily achieve it. - // e.g.: handleSubmit() { this.props.actions.submitForm(data).then(()=> {}).catch(() => {}); } - const promise = new Promise((resolve, reject) => { - // doRequest is a placeholder Promise. You should replace it with your own logic. - // See the real-word example at: https://github.com/supnate/rekit/blob/master/src/features/home/redux/fetchRedditReactjsList.js - // args.error here is only for test coverage purpose. - const { home, stake } = getState(); - const { address, web3 } = home; - const { pools } = stake; - const { tokenAddress } = pools[index]; - const contract = new web3.eth.Contract(erc20ABI, tokenAddress); - contract.methods.balanceOf(address).call({ from: address }).then( - data => { - dispatch({ - type: STAKE_FETCH_BALANCE_SUCCESS, - data: new BigNumber(data), - index - }); - resolve(data); - }, - ).catch( - // Use rejectHandler as the second argument so that render errors won't be caught. - error => { - dispatch({ - type: STAKE_FETCH_BALANCE_FAILURE, - index - }); - reject(error.message || error); - } - ) - }); - return promise; - } -} - - -export function useFetchBalance() { - // args: false value or array - // if array, means args passed to the action creator - const dispatch = useDispatch(); - - const { balance, fetchBalancePending } = useSelector( - state => ({ - balance: state.stake.balance, - fetchBalancePending: state.stake.fetchBalancePending, - }) - ); - - const boundAction = useCallback( - data => dispatch(fetchBalance(data)), - [dispatch], - ); - - return { - balance, - fetchBalance: boundAction, - fetchBalancePending - }; -} - -export function reducer(state, action) { - const { balance, fetchBalancePending } = state; - switch (action.type) { - case STAKE_FETCH_BALANCE_BEGIN: - // Just after a request is sent - fetchBalancePending[action.index] = true; - return { - ...state, - fetchBalancePending, - }; - - case STAKE_FETCH_BALANCE_SUCCESS: - // The request is success - - balance[action.index] = action.data; - fetchBalancePending[action.index] = false; - return { - ...state, - balance, - fetchBalancePending, - }; - - case STAKE_FETCH_BALANCE_FAILURE: - // The request is failed - fetchBalancePending[action.index] = false; - return { - ...state, - fetchBalancePending, - }; - - default: - return state; - } -} \ No newline at end of file diff --git a/src/features/stake/redux/fetchCanWithdrawTime.js b/src/features/stake/redux/fetchCanWithdrawTime.js deleted file mode 100644 index 95dd036f9..000000000 --- a/src/features/stake/redux/fetchCanWithdrawTime.js +++ /dev/null @@ -1,111 +0,0 @@ -import { useCallback } from 'react'; -import { useDispatch, useSelector, shallowEqual } from 'react-redux'; -import { - STAKE_FETCH_CAN_WITHDRAW_TIME_BEGIN, - STAKE_FETCH_CAN_WITHDRAW_TIME_SUCCESS, - STAKE_FETCH_CAN_WITHDRAW_TIME_FAILURE, -} from './constants'; - -export function fetchCanWithdrawTime(index) { - return (dispatch, getState) => { - // optionally you can have getState as the second argument - dispatch({ - type: STAKE_FETCH_CAN_WITHDRAW_TIME_BEGIN, - index - }); - // Return a promise so that you could control UI flow without states in the store. - // For example: after submit a form, you need to redirect the page to another when succeeds or show some errors message if fails. - // It's hard to use state to manage it, but returning a promise allows you to easily achieve it. - // e.g.: handleSubmit() { this.props.actions.submitForm(data).then(()=> {}).catch(() => {}); } - const promise = new Promise((resolve, reject) => { - // doRequest is a placeholder Promise. You should replace it with your own logic. - // See the real-word example at: https://github.com/supnate/rekit/blob/master/src/features/home/redux/fetchRedditReactjsList.js - // args.error here is only for test coverage purpose. - const { home, stake } = getState(); - const { address, web3 } = home; - const { pools } = stake; - const { earnContractAbi, earnContractAddress } = pools[index]; - const contract = new web3.eth.Contract(earnContractAbi, earnContractAddress); - contract.methods.canWithdrawTime(address).call({ from: address }).then( - data => { - dispatch({ - type: STAKE_FETCH_CAN_WITHDRAW_TIME_SUCCESS, - data: Number(data), - index - }); - resolve(data); - }, - ).catch( - // Use rejectHandler as the second argument so that render errors won't be caught. - error => { - dispatch({ - type: STAKE_FETCH_CAN_WITHDRAW_TIME_FAILURE, - index - }); - reject(error.message || error); - } - ) - }); - return promise; - } -} - - -export function useFetchCanWithdrawTime() { - // args: false value or array - // if array, means args passed to the action creator - const dispatch = useDispatch(); - - const { canWithdrawTime, fetchCanWithdrawTimePending } = useSelector( - state => ({ - canWithdrawTime: state.stake.canWithdrawTime, - fetchCanWithdrawTimePending: state.stake.fetchCanWithdrawTimePending, - }) - ); - - const boundAction = useCallback( - data => dispatch(fetchCanWithdrawTime(data)), - [dispatch], - ); - - return { - canWithdrawTime, - fetchCanWithdrawTime: boundAction, - fetchCanWithdrawTimePending - }; -} - -export function reducer(state, action) { - const { canWithdrawTime, fetchCanWithdrawTimePending } = state; - switch (action.type) { - case STAKE_FETCH_CAN_WITHDRAW_TIME_BEGIN: - // Just after a request is sent - fetchCanWithdrawTimePending[action.index] = true; - return { - ...state, - fetchCanWithdrawTimePending, - }; - - case STAKE_FETCH_CAN_WITHDRAW_TIME_SUCCESS: - // The request is success - - canWithdrawTime[action.index] = action.data; - fetchCanWithdrawTimePending[action.index] = false; - return { - ...state, - canWithdrawTime, - fetchCanWithdrawTimePending, - }; - - case STAKE_FETCH_CAN_WITHDRAW_TIME_FAILURE: - // The request is failed - fetchCanWithdrawTimePending[action.index] = false; - return { - ...state, - fetchCanWithdrawTimePending, - }; - - default: - return state; - } -} \ No newline at end of file diff --git a/src/features/stake/redux/fetchClaim.js b/src/features/stake/redux/fetchClaim.js index 04dd4ff27..6719df4c9 100644 --- a/src/features/stake/redux/fetchClaim.js +++ b/src/features/stake/redux/fetchClaim.js @@ -1,126 +1,135 @@ import { useCallback } from 'react'; -import { useDispatch, useSelector, shallowEqual } from 'react-redux'; +import { useDispatch, useSelector } from 'react-redux'; import { STAKE_FETCH_CLAIM_BEGIN, - STAKE_FETCH_CLAIM_SUCCESS, STAKE_FETCH_CLAIM_FAILURE, + STAKE_FETCH_CLAIM_SUCCESS, } from './constants'; -import { enqueueSnackbar } from '../../common/redux/actions' +import { enqueueSnackbar } from '../../common/redux/actions'; +import { launchpools } from '../../helpers/getNetworkData'; +import { updatePools } from './subscription'; -export function fetchClaim(index) { +export function fetchClaim(id) { return (dispatch, getState) => { // optionally you can have getState as the second argument dispatch({ type: STAKE_FETCH_CLAIM_BEGIN, - index + id, }); // Return a promise so that you could control UI flow without states in the store. // For example: after submit a form, you need to redirect the page to another when succeeds or show some errors message if fails. // It's hard to use state to manage it, but returning a promise allows you to easily achieve it. // e.g.: handleSubmit() { this.props.actions.submitForm(data).then(()=> {}).catch(() => {}); } - const promise = new Promise(async (resolve, reject) => { + return new Promise(async (resolve, reject) => { // doRequest is a placeholder Promise. You should replace it with your own logic. // See the real-word example at: https://github.com/supnate/rekit/blob/master/src/features/home/redux/fetchRedditReactjsList.js // args.error here is only for test coverage purpose. - const { home, stake } = getState(); + const { home } = getState(); const { address, web3 } = home; - const { pools } = stake; - const { earnContractAbi, earnContractAddress } = pools[index]; + const { earnContractAbi, earnContractAddress } = launchpools[id]; const contract = new web3.eth.Contract(earnContractAbi, earnContractAddress); - contract.methods.getReward().send({ from: address }).on( - 'transactionHash', function(hash){ - dispatch(enqueueSnackbar({ - message: hash, - options: { - key: new Date().getTime() + Math.random(), - variant: 'success' - }, - hash - })); - }) - .on('receipt', function(receipt){ - dispatch(enqueueSnackbar({ - key: new Date().getTime() + Math.random(), - message: '交易确认', - options: { - variant: 'success', - }, - })); - dispatch({ type: STAKE_FETCH_CLAIM_SUCCESS, index }); - resolve(); + contract.methods + .getReward() + .send({ from: address }) + .on('transactionHash', function (hash) { + dispatch( + enqueueSnackbar({ + message: hash, + options: { + key: new Date().getTime() + Math.random(), + variant: 'success', + }, + hash, + }) + ); }) - .on('error', function(error) { - dispatch(enqueueSnackbar({ - message: error.message || error, - options: { + .on('receipt', function (receipt) { + dispatch( + enqueueSnackbar({ key: new Date().getTime() + Math.random(), - variant: 'error' - }, - })); - dispatch({ type: STAKE_FETCH_CLAIM_FAILURE, index }); + message: 'Success', + options: { + variant: 'success', + }, + hash: receipt.transactionHash, + }) + ); + dispatch({ type: STAKE_FETCH_CLAIM_SUCCESS, id }); + dispatch(updatePools); resolve(); }) - .catch((error) => { - dispatch({ type: STAKE_FETCH_CLAIM_FAILURE, index}); - reject(error) + .on('error', function (error) { + dispatch( + enqueueSnackbar({ + message: error.message || error, + options: { + key: new Date().getTime() + Math.random(), + variant: 'error', + }, + }) + ); + dispatch({ type: STAKE_FETCH_CLAIM_FAILURE, id }); + resolve(); }) + .catch(error => { + dispatch({ type: STAKE_FETCH_CLAIM_FAILURE, id }); + reject(error); + }); }); - return promise; - } + }; } - export function useFetchClaim() { // args: false value or array // if array, means args passed to the action creator const dispatch = useDispatch(); - const { fetchClaimPending } = useSelector( - state => ({ - fetchClaimPending: state.stake.fetchClaimPending, - }) - ); + const { fetchClaimPending } = useSelector(state => ({ + fetchClaimPending: state.stake.fetchClaimPending, + })); - const boundAction = useCallback( - data => dispatch(fetchClaim(data)), - [dispatch], - ); + const boundAction = useCallback(data => dispatch(fetchClaim(data)), [dispatch]); return { fetchClaim: boundAction, - fetchClaimPending + fetchClaimPending, }; } export function reducer(state, action) { - const { fetchClaimPending } = state; switch (action.type) { case STAKE_FETCH_CLAIM_BEGIN: // Just after a request is sent - fetchClaimPending[action.index] = true; return { ...state, - fetchClaimPending, + fetchClaimPending: { + ...state.fetchClaimPending, + [action.id]: true, + }, }; case STAKE_FETCH_CLAIM_SUCCESS: // The request is success - fetchClaimPending[action.index] = false; return { ...state, - fetchClaimPending, + fetchClaimPending: { + ...state.fetchClaimPending, + [action.id]: false, + }, }; case STAKE_FETCH_CLAIM_FAILURE: // The request is failed - fetchClaimPending[action.index] = false; return { ...state, - fetchClaimPending, + fetchClaimPending: { + ...state.fetchClaimPending, + [action.id]: false, + }, }; default: return state; } -} \ No newline at end of file +} diff --git a/src/features/stake/redux/fetchCurrentlyStaked.js b/src/features/stake/redux/fetchCurrentlyStaked.js deleted file mode 100644 index c934f95a9..000000000 --- a/src/features/stake/redux/fetchCurrentlyStaked.js +++ /dev/null @@ -1,112 +0,0 @@ -import { useCallback } from 'react'; -import BigNumber from "bignumber.js"; -import { useDispatch, useSelector, shallowEqual } from 'react-redux'; -import { - STAKE_FETCH_CURRENTLY_STAKED_BEGIN, - STAKE_FETCH_CURRENTLY_STAKED_SUCCESS, - STAKE_FETCH_CURRENTLY_STAKED_FAILURE, -} from './constants'; - -export function fetchCurrentlyStaked(index) { - return (dispatch, getState) => { - // optionally you can have getState as the second argument - dispatch({ - type: STAKE_FETCH_CURRENTLY_STAKED_BEGIN, - index - }); - // Return a promise so that you could control UI flow without states in the store. - // For example: after submit a form, you need to redirect the page to another when succeeds or show some errors message if fails. - // It's hard to use state to manage it, but returning a promise allows you to easily achieve it. - // e.g.: handleSubmit() { this.props.actions.submitForm(data).then(()=> {}).catch(() => {}); } - const promise = new Promise((resolve, reject) => { - // doRequest is a placeholder Promise. You should replace it with your own logic. - // See the real-word example at: https://github.com/supnate/rekit/blob/master/src/features/home/redux/fetchRedditReactjsList.js - // args.error here is only for test coverage purpose. - const { home, stake } = getState(); - const { address, web3 } = home; - const { pools } = stake; - const { earnContractAbi, earnContractAddress } = pools[index]; - const contract = new web3.eth.Contract(earnContractAbi, earnContractAddress); - contract.methods.balanceOf(address).call({ from: address }).then( - data => { - dispatch({ - type: STAKE_FETCH_CURRENTLY_STAKED_SUCCESS, - data: new BigNumber(data).toNumber(), - index - }); - resolve(data); - }, - ).catch( - // Use rejectHandler as the second argument so that render errors won't be caught. - error => { - console.log(error) - dispatch({ - type: STAKE_FETCH_CURRENTLY_STAKED_FAILURE, - index - }); - reject(error.message || error); - } - ) - }); - return promise; - } -} - - -export function useFetchCurrentlyStaked() { - // args: false value or array - // if array, means args passed to the action creator - const dispatch = useDispatch(); - - const { currentlyStaked, fetchCurrentlyStakedPending } = useSelector( - state => ({ - currentlyStaked: state.stake.currentlyStaked, - fetchCurrentlyStakedPending: state.stake.fetchCurrentlyStakedPending, - }) - ); - - const boundAction = useCallback( - data => dispatch(fetchCurrentlyStaked(data)), - [dispatch], - ); - - return { - currentlyStaked, - fetchCurrentlyStaked: boundAction, - fetchCurrentlyStakedPending - }; -} - -export function reducer(state, action) { - const { currentlyStaked, fetchCurrentlyStakedPending } = state; - switch (action.type) { - case STAKE_FETCH_CURRENTLY_STAKED_BEGIN: - // Just after a request is sent - fetchCurrentlyStakedPending[action.index] = true; - return { - ...state, - fetchCurrentlyStakedPending, - }; - - case STAKE_FETCH_CURRENTLY_STAKED_SUCCESS: - // The request is success - currentlyStaked[action.index] = action.data; - fetchCurrentlyStakedPending[action.index] = false; - return { - ...state, - currentlyStaked, - fetchCurrentlyStakedPending, - }; - - case STAKE_FETCH_CURRENTLY_STAKED_FAILURE: - // The request is failed - fetchCurrentlyStakedPending[action.index] = false; - return { - ...state, - fetchCurrentlyStakedPending, - }; - - default: - return state; - } -} \ No newline at end of file diff --git a/src/features/stake/redux/fetchExit.js b/src/features/stake/redux/fetchExit.js index 566fef945..d0ab23e25 100644 --- a/src/features/stake/redux/fetchExit.js +++ b/src/features/stake/redux/fetchExit.js @@ -1,126 +1,135 @@ import { useCallback } from 'react'; -import { useDispatch, useSelector, shallowEqual } from 'react-redux'; +import { useDispatch, useSelector } from 'react-redux'; import { STAKE_FETCH_EXIT_BEGIN, - STAKE_FETCH_EXIT_SUCCESS, STAKE_FETCH_EXIT_FAILURE, + STAKE_FETCH_EXIT_SUCCESS, } from './constants'; -import { enqueueSnackbar } from '../../common/redux/actions' +import { enqueueSnackbar } from '../../common/redux/actions'; +import { launchpools } from '../../helpers/getNetworkData'; +import { updatePools } from './subscription'; -export function fetchExit(index) { +export function fetchExit(id) { return (dispatch, getState) => { // optionally you can have getState as the second argument dispatch({ type: STAKE_FETCH_EXIT_BEGIN, - index + id, }); // Return a promise so that you could control UI flow without states in the store. // For example: after submit a form, you need to redirect the page to another when succeeds or show some errors message if fails. // It's hard to use state to manage it, but returning a promise allows you to easily achieve it. // e.g.: handleSubmit() { this.props.actions.submitForm(data).then(()=> {}).catch(() => {}); } - const promise = new Promise(async (resolve, reject) => { + return new Promise(async (resolve, reject) => { // doRequest is a placeholder Promise. You should replace it with your own logic. // See the real-word example at: https://github.com/supnate/rekit/blob/master/src/features/home/redux/fetchRedditReactjsList.js // args.error here is only for test coverage purpose. - const { home, stake } = getState(); + const { home } = getState(); const { address, web3 } = home; - const { pools } = stake; - const { earnContractAbi, earnContractAddress } = pools[index]; + const { earnContractAbi, earnContractAddress } = launchpools[id]; const contract = new web3.eth.Contract(earnContractAbi, earnContractAddress); - contract.methods.exit().send({ from: address }).on( - 'transactionHash', function(hash){ - dispatch(enqueueSnackbar({ - message: hash, - options: { - key: new Date().getTime() + Math.random(), - variant: 'success' - }, - hash - })); - }) - .on('receipt', function(receipt){ - dispatch(enqueueSnackbar({ - key: new Date().getTime() + Math.random(), - message: '交易确认', - options: { - variant: 'success', - }, - })); - dispatch({ type: STAKE_FETCH_EXIT_SUCCESS, index }); - resolve(); + contract.methods + .exit() + .send({ from: address }) + .on('transactionHash', function (hash) { + dispatch( + enqueueSnackbar({ + message: hash, + options: { + key: new Date().getTime() + Math.random(), + variant: 'success', + }, + hash, + }) + ); }) - .on('error', function(error) { - dispatch(enqueueSnackbar({ - message: error.message || error, - options: { + .on('receipt', function (receipt) { + dispatch( + enqueueSnackbar({ key: new Date().getTime() + Math.random(), - variant: 'error' - }, - })); - dispatch({ type: STAKE_FETCH_EXIT_FAILURE, index }); + message: 'Success', + options: { + variant: 'success', + }, + hash: receipt.transactionHash, + }) + ); + dispatch({ type: STAKE_FETCH_EXIT_SUCCESS, id }); + dispatch(updatePools); resolve(); }) - .catch((error) => { - dispatch({ type: STAKE_FETCH_EXIT_FAILURE, index }); - reject(error) + .on('error', function (error) { + dispatch( + enqueueSnackbar({ + message: error.message || error, + options: { + key: new Date().getTime() + Math.random(), + variant: 'error', + }, + }) + ); + dispatch({ type: STAKE_FETCH_EXIT_FAILURE, id }); + resolve(); }) + .catch(error => { + dispatch({ type: STAKE_FETCH_EXIT_FAILURE, id }); + reject(error); + }); }); - return promise; - } + }; } - export function useFetchExit() { // args: false value or array // if array, means args passed to the action creator const dispatch = useDispatch(); - const { fetchExitPending } = useSelector( - state => ({ - fetchExitPending: state.stake.fetchExitPending, - }) - ); + const { fetchExitPending } = useSelector(state => ({ + fetchExitPending: state.stake.fetchExitPending, + })); - const boundAction = useCallback( - data => dispatch(fetchExit(data)), - [dispatch], - ); + const boundAction = useCallback(data => dispatch(fetchExit(data)), [dispatch]); return { fetchExit: boundAction, - fetchExitPending + fetchExitPending, }; } export function reducer(state, action) { - const { fetchExitPending } = state; switch (action.type) { case STAKE_FETCH_EXIT_BEGIN: // Just after a request is sent - fetchExitPending[action.index] = true; return { ...state, - fetchExitPending, + fetchExitPending: { + ...state.fetchExitPending, + [action.id]: true, + }, }; case STAKE_FETCH_EXIT_SUCCESS: // The request is success - fetchExitPending[action.index] = false; return { ...state, - fetchExitPending, + fetchExitPending: { + ...state.fetchExitPending, + [action.id]: false, + }, }; case STAKE_FETCH_EXIT_FAILURE: // The request is failed - fetchExitPending[action.index] = false; return { ...state, - fetchExitPending, + fetchExitPending: { + ...state.fetchExitPending, + [action.id]: false, + }, }; default: return state; } -} \ No newline at end of file +} diff --git a/src/features/stake/redux/fetchHalfTime.js b/src/features/stake/redux/fetchHalfTime.js deleted file mode 100644 index 19025de26..000000000 --- a/src/features/stake/redux/fetchHalfTime.js +++ /dev/null @@ -1,111 +0,0 @@ -import { useCallback } from 'react'; -import { useDispatch, useSelector, shallowEqual } from 'react-redux'; -import { - STAKE_FETCH_HALF_TIME_BEGIN, - STAKE_FETCH_HALF_TIME_SUCCESS, - STAKE_FETCH_HALF_TIME_FAILURE, -} from './constants'; - -export function fetchHalfTime(index) { - return (dispatch, getState) => { - // optionally you can have getState as the second argument - dispatch({ - type: STAKE_FETCH_HALF_TIME_BEGIN, - index - }); - // Return a promise so that you could control UI flow without states in the store. - // For example: after submit a form, you need to redirect the page to another when succeeds or show some errors message if fails. - // It's hard to use state to manage it, but returning a promise allows you to easily achieve it. - // e.g.: handleSubmit() { this.props.actions.submitForm(data).then(()=> {}).catch(() => {}); } - const promise = new Promise((resolve, reject) => { - // doRequest is a placeholder Promise. You should replace it with your own logic. - // See the real-word example at: https://github.com/supnate/rekit/blob/master/src/features/home/redux/fetchRedditReactjsList.js - // args.error here is only for test coverage purpose. - const { home, stake } = getState(); - const { address, web3 } = home; - const { pools } = stake; - const { earnContractAbi, earnContractAddress } = pools[index]; - const contract = new web3.eth.Contract(earnContractAbi, earnContractAddress); - contract.methods.periodFinish().call({ from: address }).then( - data => { - dispatch({ - type: STAKE_FETCH_HALF_TIME_SUCCESS, - data, - index - }); - resolve(data); - }, - ).catch( - // Use rejectHandler as the second argument so that render errors won't be caught. - error => { - dispatch({ - type: STAKE_FETCH_HALF_TIME_FAILURE, - index - }); - reject(error.message || error); - } - ) - }); - return promise; - } -} - - -export function useFetchHalfTime() { - // args: false value or array - // if array, means args passed to the action creator - const dispatch = useDispatch(); - - const { halfTime, fetchHalfTimePending } = useSelector( - state => ({ - halfTime: state.stake.halfTime, - fetchHalfTimePending: state.stake.fetchHalfTimePending, - }) - ); - - const boundAction = useCallback( - data => dispatch(fetchHalfTime(data)), - [dispatch], - ); - - return { - halfTime, - fetchHalfTime: boundAction, - fetchHalfTimePending - }; -} - -export function reducer(state, action) { - const { halfTime, fetchHalfTimePending } = state; - switch (action.type) { - case STAKE_FETCH_HALF_TIME_BEGIN: - // Just after a request is sent - fetchHalfTimePending[action.index] = true; - return { - ...state, - fetchHalfTimePending, - }; - - case STAKE_FETCH_HALF_TIME_SUCCESS: - // The request is success - - fetchHalfTimePending[action.index] = false; - halfTime[action.index] = action.data; - return { - ...state, - halfTime, - fetchHalfTimePending, - }; - - case STAKE_FETCH_HALF_TIME_FAILURE: - // The request is failed - fetchHalfTimePending[action.index] = false; - return { - ...state, - fetchHalfTimePending, - }; - - default: - return state; - } -} \ No newline at end of file diff --git a/src/features/stake/redux/fetchPoolsInfo.js b/src/features/stake/redux/fetchPoolsInfo.js deleted file mode 100644 index 169807730..000000000 --- a/src/features/stake/redux/fetchPoolsInfo.js +++ /dev/null @@ -1,95 +0,0 @@ -import axios from 'axios'; -import { useCallback } from 'react'; -import { useDispatch, useSelector, shallowEqual } from 'react-redux'; -import { - STAKE_FETCH_POOLS_INFO_BEGIN, - STAKE_FETCH_POOLS_INFO_SUCCESS, - STAKE_FETCH_POOLS_INFO_FAILURE, -} from './constants'; - -export function fetchPoolsInfo() { - return (dispatch, getState) => { - // optionally you can have getState as the second argument - dispatch({ type: STAKE_FETCH_POOLS_INFO_BEGIN }); - - // Return a promise so that you could control UI flow without states in the store. - // For example: after submit a form, you need to redirect the page to another when succeeds or show some errors message if fails. - // It's hard to use state to manage it, but returning a promise allows you to easily achieve it. - // e.g.: handleSubmit() { this.props.actions.submitForm(data).then(()=> {}).catch(() => {}); } - const promise = new Promise((resolve, reject) => { - // doRequest is a placeholder Promise. You should replace it with your own logic. - // See the real-word example at: https://github.com/supnate/rekit/blob/master/src/features/home/redux/fetchRedditReactjsList.js - // args.error here is only for test coverage purpose. - const doRequest = axios.get('https://api1.dfi.money/stake/pools/'); - - doRequest.then( - res => { - dispatch({ - type: STAKE_FETCH_POOLS_INFO_SUCCESS, - data: res.data.data, - }); - resolve(res); - }, - // Use rejectHandler as the second argument so that render errors won't be caught. - err => { - dispatch({ type: STAKE_FETCH_POOLS_INFO_FAILURE }); - reject(err); - }, - ); - }); - return promise; - }; -} - -export function useFetchPoolsInfo() { - // args: false value or array - // if array, means args passed to the action creator - const dispatch = useDispatch(); - - const { pools, poolsInfo, fetchPoolsInfoPending } = useSelector( - state => ({ - pools: state.stake.pools, - poolsInfo: state.stake.poolsInfo, - fetchPoolsInfoPending: state.stake.fetchPoolsInfoPending, - }), - shallowEqual, - ); - - const boundAction = useCallback(() => dispatch(fetchPoolsInfo()), [dispatch]); - - return { - fetchPoolsInfo: boundAction, - pools, - poolsInfo, - fetchPoolsInfoPending - }; -} - -export function reducer(state, action) { - switch (action.type) { - case STAKE_FETCH_POOLS_INFO_BEGIN: - // Just after a request is sent - return { - ...state, - fetchPoolsInfoPending: true - }; - - case STAKE_FETCH_POOLS_INFO_SUCCESS: - // The request is success - return { - ...state, - poolsInfo: action.data, - fetchPoolsInfoPending: false - }; - - case STAKE_FETCH_POOLS_INFO_FAILURE: - // The request is failed - return { - ...state, - fetchPoolsInfoPending: false - }; - - default: - return state; - } -} \ No newline at end of file diff --git a/src/features/stake/redux/fetchRewardsAvailable.js b/src/features/stake/redux/fetchRewardsAvailable.js deleted file mode 100644 index 3cd30724a..000000000 --- a/src/features/stake/redux/fetchRewardsAvailable.js +++ /dev/null @@ -1,112 +0,0 @@ -import { useCallback } from 'react'; -import BigNumber from "bignumber.js"; -import { useDispatch, useSelector, shallowEqual } from 'react-redux'; -import { - STAKE_FETCH_REWARDS_AVAILABLE_BEGIN, - STAKE_FETCH_REWARDS_AVAILABLE_SUCCESS, - STAKE_FETCH_REWARDS_AVAILABLE_FAILURE, -} from './constants'; - -export function fetchRewardsAvailable(index) { - return (dispatch, getState) => { - // optionally you can have getState as the second argument - dispatch({ - type: STAKE_FETCH_REWARDS_AVAILABLE_BEGIN, - index - }); - // Return a promise so that you could control UI flow without states in the store. - // For example: after submit a form, you need to redirect the page to another when succeeds or show some errors message if fails. - // It's hard to use state to manage it, but returning a promise allows you to easily achieve it. - // e.g.: handleSubmit() { this.props.actions.submitForm(data).then(()=> {}).catch(() => {}); } - const promise = new Promise((resolve, reject) => { - // doRequest is a placeholder Promise. You should replace it with your own logic. - // See the real-word example at: https://github.com/supnate/rekit/blob/master/src/features/home/redux/fetchRedditReactjsList.js - // args.error here is only for test coverage purpose. - const { home, stake } = getState(); - const { address, web3 } = home; - const { pools } = stake; - const { earnContractAbi, earnContractAddress } = pools[index]; - const contract = new web3.eth.Contract(earnContractAbi, earnContractAddress); - contract.methods.earned(address).call({ from: address }).then( - data => { - dispatch({ - type: STAKE_FETCH_REWARDS_AVAILABLE_SUCCESS, - data: new BigNumber(data).toNumber(), - index - }); - resolve(data); - }, - ).catch( - // Use rejectHandler as the second argument so that render errors won't be caught. - error => { - dispatch({ - type: STAKE_FETCH_REWARDS_AVAILABLE_FAILURE, - index - }); - reject(error.message || error); - } - ) - }); - return promise; - } -} - - -export function useFetchRewardsAvailable() { - // args: false value or array - // if array, means args passed to the action creator - const dispatch = useDispatch(); - - const { rewardsAvailable, fetchRewardsAvailablePending } = useSelector( - state => ({ - rewardsAvailable: state.stake.rewardsAvailable, - fetchRewardsAvailablePending: state.stake.fetchRewardsAvailablePending, - }) - ); - - const boundAction = useCallback( - data => dispatch(fetchRewardsAvailable(data)), - [dispatch], - ); - - return { - rewardsAvailable, - fetchRewardsAvailable: boundAction, - fetchRewardsAvailablePending - }; -} - -export function reducer(state, action) { - const { rewardsAvailable, fetchRewardsAvailablePending } = state; - switch (action.type) { - case STAKE_FETCH_REWARDS_AVAILABLE_BEGIN: - // Just after a request is sent - fetchRewardsAvailablePending[action.index] = true; - return { - ...state, - fetchRewardsAvailablePending, - }; - - case STAKE_FETCH_REWARDS_AVAILABLE_SUCCESS: - // The request is success - - rewardsAvailable[action.index] = action.data; - fetchRewardsAvailablePending[action.index] = false; - return { - ...state, - rewardsAvailable, - fetchRewardsAvailablePending, - }; - - case STAKE_FETCH_REWARDS_AVAILABLE_FAILURE: - // The request is failed - fetchRewardsAvailablePending[action.index] = false; - return { - ...state, - fetchRewardsAvailablePending, - }; - - default: - return state; - } -} \ No newline at end of file diff --git a/src/features/stake/redux/fetchStake.js b/src/features/stake/redux/fetchStake.js index 9d92ea910..0c3e1c06c 100644 --- a/src/features/stake/redux/fetchStake.js +++ b/src/features/stake/redux/fetchStake.js @@ -1,126 +1,135 @@ import { useCallback } from 'react'; -import { useDispatch, useSelector, shallowEqual } from 'react-redux'; +import { useDispatch, useSelector } from 'react-redux'; import { STAKE_FETCH_STAKE_BEGIN, - STAKE_FETCH_STAKE_SUCCESS, STAKE_FETCH_STAKE_FAILURE, + STAKE_FETCH_STAKE_SUCCESS, } from './constants'; -import { enqueueSnackbar } from '../../common/redux/actions' +import { enqueueSnackbar } from '../../common/redux/actions'; +import { launchpools } from '../../helpers/getNetworkData'; +import { updatePools } from './subscription'; -export function fetchStake(index, amount) { +export function fetchStake(id, amount) { return (dispatch, getState) => { // optionally you can have getState as the second argument dispatch({ type: STAKE_FETCH_STAKE_BEGIN, - index + id, }); // Return a promise so that you could control UI flow without states in the store. // For example: after submit a form, you need to redirect the page to another when succeeds or show some errors message if fails. // It's hard to use state to manage it, but returning a promise allows you to easily achieve it. // e.g.: handleSubmit() { this.props.actions.submitForm(data).then(()=> {}).catch(() => {}); } - const promise = new Promise(async (resolve, reject) => { + return new Promise(async (resolve, reject) => { // doRequest is a placeholder Promise. You should replace it with your own logic. // See the real-word example at: https://github.com/supnate/rekit/blob/master/src/features/home/redux/fetchRedditReactjsList.js // args.error here is only for test coverage purpose. - const { home, stake } = getState(); + const { home } = getState(); const { address, web3 } = home; - const { pools } = stake; - const { earnContractAbi, earnContractAddress } = pools[index]; + const { earnContractAbi, earnContractAddress } = launchpools[id]; const contract = new web3.eth.Contract(earnContractAbi, earnContractAddress); - contract.methods.stake(amount).send({ from: address }).on( - 'transactionHash', function(hash){ - dispatch(enqueueSnackbar({ - message: hash, - options: { - key: new Date().getTime() + Math.random(), - variant: 'success' - }, - hash - })); - }) - .on('receipt', function(receipt){ - dispatch(enqueueSnackbar({ - key: new Date().getTime() + Math.random(), - message: '交易确认', - options: { - variant: 'success', - }, - })); - dispatch({ type: STAKE_FETCH_STAKE_SUCCESS, index }); - resolve(); + contract.methods + .stake(amount) + .send({ from: address }) + .on('transactionHash', function (hash) { + dispatch( + enqueueSnackbar({ + message: hash, + options: { + key: new Date().getTime() + Math.random(), + variant: 'success', + }, + hash, + }) + ); }) - .on('error', function(error) { - dispatch(enqueueSnackbar({ - message: error.message || error, - options: { + .on('receipt', function (receipt) { + dispatch( + enqueueSnackbar({ key: new Date().getTime() + Math.random(), - variant: 'error' - }, - })); - dispatch({ type: STAKE_FETCH_STAKE_FAILURE, index }); + message: 'success', + options: { + variant: 'success', + }, + hash: receipt.transactionHash, + }) + ); + dispatch({ type: STAKE_FETCH_STAKE_SUCCESS, id }); + dispatch(updatePools); resolve(); }) - .catch((error) => { - dispatch({ type: STAKE_FETCH_STAKE_FAILURE, index }); - reject(error) + .on('error', function (error) { + dispatch( + enqueueSnackbar({ + message: error.message || error, + options: { + key: new Date().getTime() + Math.random(), + variant: 'error', + }, + }) + ); + dispatch({ type: STAKE_FETCH_STAKE_FAILURE, id }); + resolve(); }) + .catch(error => { + dispatch({ type: STAKE_FETCH_STAKE_FAILURE, id }); + reject(error); + }); }); - return promise; - } + }; } - export function useFetchStake() { // args: false value or array // if array, means args passed to the action creator const dispatch = useDispatch(); - const { fetchStakePending } = useSelector( - state => ({ - fetchStakePending: state.stake.fetchStakePending, - }) - ); + const { fetchStakePending } = useSelector(state => ({ + fetchStakePending: state.stake.fetchStakePending, + })); - const boundAction = useCallback( - (data, amount) => dispatch(fetchStake(data, amount)), - [dispatch], - ); + const boundAction = useCallback((data, amount) => dispatch(fetchStake(data, amount)), [dispatch]); return { fetchStake: boundAction, - fetchStakePending + fetchStakePending, }; } export function reducer(state, action) { - const { fetchStakePending } = state; switch (action.type) { case STAKE_FETCH_STAKE_BEGIN: // Just after a request is sent - fetchStakePending[action.index] = true; return { ...state, - fetchStakePending + fetchStakePending: { + ...state.fetchStakePending, + [action.id]: true, + }, }; case STAKE_FETCH_STAKE_SUCCESS: // The request is success - fetchStakePending[action.index] = false; return { ...state, - fetchStakePending + fetchStakePending: { + ...state.fetchStakePending, + [action.id]: false, + }, }; case STAKE_FETCH_STAKE_FAILURE: // The request is failed - fetchStakePending[action.index] = false; return { ...state, - fetchStakePending + fetchStakePending: { + ...state.fetchStakePending, + [action.id]: false, + }, }; default: return state; } -} \ No newline at end of file +} diff --git a/src/features/stake/redux/fetchWithdraw.js b/src/features/stake/redux/fetchWithdraw.js index a3d476155..64c44f143 100644 --- a/src/features/stake/redux/fetchWithdraw.js +++ b/src/features/stake/redux/fetchWithdraw.js @@ -1,73 +1,83 @@ import { useCallback } from 'react'; -import { useDispatch, useSelector, shallowEqual } from 'react-redux'; +import { useDispatch, useSelector } from 'react-redux'; import { STAKE_FETCH_WITHDRAW_BEGIN, - STAKE_FETCH_WITHDRAW_SUCCESS, STAKE_FETCH_WITHDRAW_FAILURE, + STAKE_FETCH_WITHDRAW_SUCCESS, } from './constants'; -import { enqueueSnackbar } from '../../common/redux/actions' +import { enqueueSnackbar } from '../../common/redux/actions'; +import { launchpools } from '../../helpers/getNetworkData'; +import { updatePools } from './subscription'; -export function fetchWithdraw(index, amount) { +export function fetchWithdraw(id, amount) { return (dispatch, getState) => { // optionally you can have getState as the second argument dispatch({ type: STAKE_FETCH_WITHDRAW_BEGIN, - index + id, }); // Return a promise so that you could control UI flow without states in the store. // For example: after submit a form, you need to redirect the page to another when succeeds or show some errors message if fails. // It's hard to use state to manage it, but returning a promise allows you to easily achieve it. // e.g.: handleSubmit() { this.props.actions.submitForm(data).then(()=> {}).catch(() => {}); } - const promise = new Promise(async (resolve, reject) => { + return new Promise(async (resolve, reject) => { // doRequest is a placeholder Promise. You should replace it with your own logic. // See the real-word example at: https://github.com/supnate/rekit/blob/master/src/features/home/redux/fetchRedditReactjsList.js // args.error here is only for test coverage purpose. - const { home, stake } = getState(); + const { home } = getState(); const { address, web3 } = home; - const { pools } = stake; - const { earnContractAbi, earnContractAddress } = pools[index]; + const { earnContractAbi, earnContractAddress } = launchpools[id]; const contract = new web3.eth.Contract(earnContractAbi, earnContractAddress); - contract.methods.withdraw(amount).send({ from: address }).on( - 'transactionHash', function(hash){ - dispatch(enqueueSnackbar({ - message: hash, - options: { - key: new Date().getTime() + Math.random(), - variant: 'success' - }, - hash - })); - }) - .on('receipt', function(receipt){ - dispatch(enqueueSnackbar({ - key: new Date().getTime() + Math.random(), - message: '交易确认', - options: { - variant: 'success', - }, - })); - dispatch({ type: STAKE_FETCH_WITHDRAW_SUCCESS, index }); - resolve(); + contract.methods + .withdraw(amount) + .send({ from: address }) + .on('transactionHash', function (hash) { + dispatch( + enqueueSnackbar({ + message: hash, + options: { + key: new Date().getTime() + Math.random(), + variant: 'success', + }, + hash, + }) + ); }) - .on('error', function(error) { - dispatch(enqueueSnackbar({ - message: error.message || error, - options: { + .on('receipt', function (receipt) { + dispatch( + enqueueSnackbar({ key: new Date().getTime() + Math.random(), - variant: 'error' - }, - })); - dispatch({ type: STAKE_FETCH_WITHDRAW_FAILURE, index }); + message: 'success', + options: { + variant: 'success', + }, + hash: receipt.transactionHash, + }) + ); + dispatch({ type: STAKE_FETCH_WITHDRAW_SUCCESS, id }); + dispatch(updatePools); resolve(); }) - .catch((error) => { - dispatch({ type: STAKE_FETCH_WITHDRAW_FAILURE, index }); - reject(error) + .on('error', function (error) { + dispatch( + enqueueSnackbar({ + message: error.message || error, + options: { + key: new Date().getTime() + Math.random(), + variant: 'error', + }, + }) + ); + dispatch({ type: STAKE_FETCH_WITHDRAW_FAILURE, id }); + resolve(); }) + .catch(error => { + dispatch({ type: STAKE_FETCH_WITHDRAW_FAILURE, id }); + reject(error); + }); }); - return promise; - } + }; } export function useFetchWithdraw() { @@ -75,51 +85,54 @@ export function useFetchWithdraw() { // if array, means args passed to the action creator const dispatch = useDispatch(); - const { fetchWithdrawPending } = useSelector( - state => ({ - fetchWithdrawPending: state.stake.fetchWithdrawPending, - }) - ); + const { fetchWithdrawPending } = useSelector(state => ({ + fetchWithdrawPending: state.stake.fetchWithdrawPending, + })); const boundAction = useCallback( (data, amount) => dispatch(fetchWithdraw(data, amount)), - [dispatch], + [dispatch] ); return { fetchWithdraw: boundAction, - fetchWithdrawPending + fetchWithdrawPending, }; } export function reducer(state, action) { - const { fetchWithdrawPending } = state; switch (action.type) { case STAKE_FETCH_WITHDRAW_BEGIN: // Just after a request is sent - fetchWithdrawPending[action.index] = true; return { ...state, - fetchWithdrawPending, + fetchWithdrawPending: { + ...state.fetchWithdrawPending, + [action.id]: true, + }, }; case STAKE_FETCH_WITHDRAW_SUCCESS: // The request is success - fetchWithdrawPending[action.index] = false; return { ...state, - fetchWithdrawPending, + fetchWithdrawPending: { + ...state.fetchWithdrawPending, + [action.id]: false, + }, }; case STAKE_FETCH_WITHDRAW_FAILURE: // The request is failed - fetchWithdrawPending[action.index] = false; return { ...state, - fetchWithdrawPending, + fetchWithdrawPending: { + ...state.fetchWithdrawPending, + [action.id]: false, + }, }; default: return state; } -} \ No newline at end of file +} diff --git a/src/features/stake/redux/hooks.js b/src/features/stake/redux/hooks.js index 5632a0edd..65889ef30 100644 --- a/src/features/stake/redux/hooks.js +++ b/src/features/stake/redux/hooks.js @@ -1,12 +1,17 @@ -export { useFetchPoolsInfo } from './fetchPoolsInfo'; -export { useCheckApproval } from './checkApproval'; -export { useFetchBalance } from './fetchBalance'; -export { useFetchCurrentlyStaked } from './fetchCurrentlyStaked'; -export { useFetchRewardsAvailable } from './fetchRewardsAvailable'; -export { useFetchHalfTime } from './fetchHalfTime'; -export { useFetchCanWithdrawTime } from './fetchCanWithdrawTime'; export { useFetchApproval } from './fetchApproval'; export { useFetchStake } from './fetchStake'; export { useFetchWithdraw } from './fetchWithdraw'; export { useFetchClaim } from './fetchClaim'; -export { useFetchExit } from './fetchExit'; \ No newline at end of file +export { useFetchExit } from './fetchExit'; +export { + useLaunchpoolSubscriptions, + useLaunchpoolUpdates, + usePoolFinish, + usePoolStatus, + usePoolApr, + usePoolStaked, + useUserApproval, + useUserBalance, + useUserStaked, + useUserRewardsAvailable, +} from './subscription'; diff --git a/src/features/stake/redux/initialState.js b/src/features/stake/redux/initialState.js index bc3e1df4d..0bb7a2d2d 100644 --- a/src/features/stake/redux/initialState.js +++ b/src/features/stake/redux/initialState.js @@ -1,102 +1,47 @@ -import { yCurveFiRewardsABI, balancerRewardsABI, governanceABI, pool4Abi } from "../../configure"; +import { launchpools } from '../../helpers/getNetworkData'; -const pools = [ - { - name: 'yearn.finance', - token: 'curve.fi', - tokenDecimals: 18, - tokenAddress: '0xdF5e0e81Dff6FAF3A7e52BA697820c5e32D806A8', - earnedToken: 'YFII', - earnedTokenDecimals: 18, - earnedTokenAddress: '0xa1d0E215a23d7030842FC67cE582a6aFa3CCaB83', - earnContractAddress: '0xb81D3cB2708530ea990a287142b82D058725C092', - earnContractAbi: yCurveFiRewardsABI, - }, - { - name: 'Balancer Pool', - token: 'BPT', - tokenDecimals: 18, - tokenAddress: '0x16cAC1403377978644e78769Daa49d8f6B6CF565', - earnedToken: 'YFII', - earnedTokenDecimals: 18, - earnedTokenAddress: '0xa1d0E215a23d7030842FC67cE582a6aFa3CCaB83', - earnContractAddress: '0xAFfcD3D45cEF58B1DfA773463824c6F6bB0Dc13a', - earnContractAbi: balancerRewardsABI, - }, - { - name: 'Governance', - token: 'YFII', - tokenDecimals: 18, - tokenAddress: '0xa1d0E215a23d7030842FC67cE582a6aFa3CCaB83', - earnedToken: 'yCrv', - earnedTokenDecimals: 18, - earnedTokenAddress: '0xa1d0E215a23d7030842FC67cE582a6aFa3CCaB83', - earnContractAddress: '0xf1750B770485A5d0589A6ba1270D9FC354884D45', - earnContractAbi: governanceABI, - }, - { - name: 'pool4', - token: 'YFII', - tokenDecimals: 18, - tokenAddress: '0xa1d0E215a23d7030842FC67cE582a6aFa3CCaB83', - earnedToken: 'iUSDT', - earnedTokenDecimals: 6, - earnedTokenAddress: '0x72Cf258c852Dc485a853370171d46B9D29fD3184', - earnContractAddress: '0x3d367c9529f260b0661e1c1e91167c9319ee96ca', - earnContractAbi: pool4Abi - }, -]; +const now = Date.now() / 1000; -const poolsInfo = [{ - name: "yearn.finance", - staked: 0, - tvl: 0, - apy: 0, -},{ - name: "Balancer Pool", - staked: 0, - tvl: 0, - apy: 0, -},{ - name: "Governance", - staked: 0, - tvl: 0, - apy: 0, -},{ - name: "pool4", - staked: 0, - tvl: 0, - apy: 0, -}] -const allowance = [0,0,0,0]; -const balance = [0,0,0,0]; -const currentlyStaked = [0,0,0,0]; -const rewardsAvailable = [0,0,0,0]; -const halfTime = [0,0,0,0]; -const canWithdrawTime = [0,0,0,0]; +export const initialFetchState = { + fetchApprovalPending: Object.fromEntries( + Object.values(launchpools).map(pool => [pool.id, false]) + ), + fetchStakePending: Object.fromEntries(Object.values(launchpools).map(pool => [pool.id, false])), + fetchWithdrawPending: Object.fromEntries( + Object.values(launchpools).map(pool => [pool.id, false]) + ), + fetchClaimPending: Object.fromEntries(Object.values(launchpools).map(pool => [pool.id, false])), + fetchExitPending: Object.fromEntries(Object.values(launchpools).map(pool => [pool.id, false])), +}; + +export const initialUserState = { + userApproval: Object.fromEntries(Object.values(launchpools).map(pool => [pool.id, '0'])), + userBalance: Object.fromEntries(Object.values(launchpools).map(pool => [pool.id, '0'])), + userStaked: Object.fromEntries(Object.values(launchpools).map(pool => [pool.id, '0'])), + userRewardsAvailable: Object.fromEntries(Object.values(launchpools).map(pool => [pool.id, '0'])), +}; +export const initialPoolState = { + poolStatus: Object.fromEntries( + Object.values(launchpools).map(pool => [ + pool.id, + pool.fixedStatus !== true && pool.status === 'active' && now >= pool.periodFinish + ? 'closed' + : pool.status, + ]) + ), + poolFinish: Object.fromEntries( + Object.values(launchpools).map(pool => [pool.id, pool.periodFinish]) + ), + poolStaked: Object.fromEntries(Object.values(launchpools).map(pool => [pool.id, '0'])), + poolApr: Object.fromEntries(Object.values(launchpools).map(pool => [pool.id, 0])), +}; const initialState = { - pools, - allowance, - currentlyStaked, - rewardsAvailable, - halfTime, - canWithdrawTime, - balance, - poolsInfo, - fetchPoolsInfoPending: false, - checkApprovalPending: [false,false,false,false], - fetchBalancePending: [false,false,false,false], - fetchCurrentlyStakedPending: [false,false,false,false], - fetchRewardsAvailablePending: [false,false,false,false], - fetchHalfTimePending: [false,false,false,false], - fetchCanWithdrawTimePending: [false,false,false,false], - fetchApprovalPending: [false,false,false,false], - fetchStakePending: [false,false,false,false], - fetchWithdrawPending: [false,false,false,false], - fetchClaimPending: [false,false,false,false], - fetchExitPending: [false,false,false,false] + subscriptions: Object.fromEntries(Object.values(launchpools).map(pool => [pool.id, {}])), + ...initialPoolState, + ...initialUserState, + ...initialFetchState, }; -export default initialState; \ No newline at end of file +export default initialState; diff --git a/src/features/stake/redux/reducer.js b/src/features/stake/redux/reducer.js index 860bff2df..88ad852b8 100644 --- a/src/features/stake/redux/reducer.js +++ b/src/features/stake/redux/reducer.js @@ -1,31 +1,18 @@ import initialState from './initialState'; -import { reducer as fetchPoolsInfoReducer} from './fetchPoolsInfo'; -import { reducer as checkApprovalReducer} from './checkApproval'; -import { reducer as fetchBalanceReducer} from './fetchBalance'; -import { reducer as fetchCurrentlyStakedReducer } from './fetchCurrentlyStaked'; -import { reducer as fetchRewardsAvailableReducer } from './fetchRewardsAvailable'; -import { reducer as fetchHalfTimeReducer } from './fetchHalfTime'; -import { reducer as fetchCanWithdrawTimeReducer } from './fetchCanWithdrawTime'; import { reducer as fetchApprovalReducer } from './fetchApproval'; import { reducer as fetchStakeReducer } from './fetchStake'; import { reducer as fetchWithdrawReducer } from './fetchWithdraw'; import { reducer as fetchClaimReducer } from './fetchClaim'; import { reducer as fetchExitReducer } from './fetchExit'; - +import { reducer as subscriptionReducer } from './subscription'; const reducers = [ - fetchPoolsInfoReducer, - checkApprovalReducer, - fetchBalanceReducer, - fetchCurrentlyStakedReducer, - fetchRewardsAvailableReducer, - fetchHalfTimeReducer, - fetchCanWithdrawTimeReducer, fetchApprovalReducer, fetchStakeReducer, fetchWithdrawReducer, fetchClaimReducer, - fetchExitReducer + fetchExitReducer, + subscriptionReducer, ]; export default function reducer(state = initialState, action) { @@ -38,4 +25,4 @@ export default function reducer(state = initialState, action) { } /* istanbul ignore next */ return reducers.reduce((s, r) => r(s, action), newState); -} \ No newline at end of file +} diff --git a/src/features/stake/redux/subscription.js b/src/features/stake/redux/subscription.js new file mode 100644 index 000000000..24cf434d5 --- /dev/null +++ b/src/features/stake/redux/subscription.js @@ -0,0 +1,684 @@ +import { getNetworkMulticall, launchpools } from '../../helpers/getNetworkData'; +import { useDispatch, useSelector } from 'react-redux'; +import { useCallback, useEffect, useMemo } from 'react'; +import { MooToken } from '../../configure/abi'; +import { MultiCall } from 'eth-multicall'; +import Web3 from 'web3'; +import { getRpcUrl } from '../../../common/networkSetup'; +import { useConnectWallet } from '../../home/redux/connectWallet'; +import { byDecimals, ZERO } from '../../helpers/bignumber'; +import { fetchPrice, whenPricesLoaded } from '../../web3'; +import BigNumber from 'bignumber.js'; +import { HOME_DISCONNECT_WALLET_BEGIN } from '../../home/redux/constants'; +import { initialUserState } from './initialState'; +import { updateLaunchpools } from '../../vault/redux/actions'; + +const DEFAULT_UPDATE_INTERVAL = 30000; // ms +const MIN_UPDATE_DELAY = 5000; // ms (min time between updates) +const ACTION_PREFIX = 'launchpools/subscription/'; +const NOOP = () => {}; + +// what contact calls are needed to perform subscription actions +const subscriptionCalls = { + userApproval: ['userApproval'], + userBalance: ['userBalance'], + userStaked: ['userStaked'], + userRewardsAvailable: ['userRewardsAvailable'], + poolApr: ['poolRewardRate', 'poolStaked', 'tokenPricePerShare'], + poolStaked: ['poolStaked'], + poolFinish: ['poolFinish'], +}; + +// list of contract calls that do not require the users wallet address +const callsDoNotNeedAddress = ['poolRewardRate', 'poolStaked', 'poolFinish', 'tokenPricePerShare']; + +// list of subscriptions that do not require the users wallet address +const subscriptionsDoNotNeedAddress = Object.fromEntries( + Object.entries(subscriptionCalls).map(([key, calls]) => [ + key, + calls.every(call => callsDoNotNeedAddress.includes(call)), + ]) +); + +// which contract is needed to perform the call +const callGroups = { + userApproval: 'tokenAddress', + userBalance: 'tokenAddress', + userStaked: 'earnContractAddress', + userRewardsAvailable: 'earnContractAddress', + poolRewardRate: 'earnContractAddress', + poolStaked: 'earnContractAddress', + poolFinish: 'earnContractAddress', + tokenPricePerShare: 'tokenAddress', +}; + +// contract name -> instance of the contract +const callGroupContracts = { + tokenAddress: (web3, pool) => new web3.eth.Contract(MooToken, pool.tokenAddress), + earnContractAddress: (web3, pool) => + new web3.eth.Contract(pool.earnContractAbi, pool.earnContractAddress), +}; + +// call name -> contract method call +const callFunctions = { + userApproval: (tokenContract, pool, address) => + tokenContract.methods.allowance(address, pool.earnContractAddress), + userBalance: (tokenContract, pool, address) => tokenContract.methods.balanceOf(address), + userStaked: (earnContract, pool, address) => earnContract.methods.balanceOf(address), + userRewardsAvailable: (earnContract, pool, address) => earnContract.methods.earned(address), + poolRewardRate: (earnContract, pool, address) => earnContract.methods.rewardRate(), + poolStaked: (earnContract, pool, address) => earnContract.methods.totalSupply(), + poolFinish: (earnContract, pool, address) => earnContract.methods.periodFinish(), + tokenPricePerShare: (tokenContract, pool, address) => + tokenContract.methods.getPricePerFullShare(), +}; + +// process subscription and dispatch action to update state +// data will include call results with keys defined in subscriptionCalls above +const subscriptionCallbacks = { + userApproval: async (dispatch, pool, data) => { + if (data.userApproval === undefined) { + console.warn('Missing data for launchpools userApproval.'); + return; + } + + // Save to state + dispatch({ + type: ACTION_PREFIX + 'userApproval', + payload: { + id: pool.id, + userApproval: data.userApproval, + }, + }); + }, + userBalance: async (dispatch, pool, data) => { + if (data.userBalance === undefined) { + console.warn('Missing data for launchpools userBalance.'); + return; + } + + // Save to state + dispatch({ + type: ACTION_PREFIX + 'userBalance', + payload: { + id: pool.id, + userBalance: data.userBalance, + }, + }); + }, + userStaked: async (dispatch, pool, data) => { + if (data.userStaked === undefined) { + console.warn('Missing data for launchpools userStaked.'); + return; + } + + // Save to state + dispatch({ + type: ACTION_PREFIX + 'userStaked', + payload: { + id: pool.id, + userStaked: data.userStaked, + }, + }); + }, + userRewardsAvailable: async (dispatch, pool, data) => { + if (data.userRewardsAvailable === undefined) { + console.warn('Missing data for launchpools userRewardsAvailable.'); + return; + } + + // Save to state + dispatch({ + type: ACTION_PREFIX + 'userRewardsAvailable', + payload: { + id: pool.id, + userRewardsAvailable: data.userRewardsAvailable, + }, + }); + }, + poolStaked: async (dispatch, pool, data) => { + if (data.poolStaked === undefined) { + console.warn('Missing data for launchpools poolStaked.'); + return; + } + + // Save to state + dispatch({ + type: ACTION_PREFIX + 'poolStaked', + payload: { + id: pool.id, + poolStaked: data.poolStaked, + }, + }); + }, + poolApr: async (dispatch, pool, data) => { + if ( + data.poolRewardRate === undefined || + data.poolStaked === undefined || + (pool.isMooStaked && data.tokenPricePerShare === undefined) + ) { + console.warn('Missing data for launchpools poolApr.'); + return; + } + + await whenPricesLoaded(); + + const rewardTokenPrice = fetchPrice({ id: pool.earnedOracleId }); + const rewardTokenDecimals = new BigNumber(10).exponentiatedBy(pool.earnedTokenDecimals); + const rewardRate = new BigNumber(data.poolRewardRate); + const rewardYearly = rewardRate.times(3600).times(24).times(365); + const rewardYearlyUsd = rewardYearly.times(rewardTokenPrice).dividedBy(rewardTokenDecimals); + + const depositTokenDecimals = new BigNumber(10).exponentiatedBy(pool.tokenDecimals); + const depositTokenStaked = new BigNumber(data.poolStaked); + const depositTokenPrice = fetchPrice({ id: pool.tokenOracleId }); + let depositTokenStakedUsd = depositTokenStaked + .times(depositTokenPrice) + .dividedBy(depositTokenDecimals); + + if (pool.isMooStaked) { + const pricePerShareDecimals = new BigNumber(10).exponentiatedBy(18); + const pricePerShare = new BigNumber(data.tokenPricePerShare); + + depositTokenStakedUsd = depositTokenStakedUsd + .times(pricePerShare) + .dividedBy(pricePerShareDecimals); + } + + const apr = rewardYearlyUsd.dividedBy(depositTokenStakedUsd).toNumber(); + + // Save to state + dispatch({ + type: ACTION_PREFIX + 'poolApr', + payload: { + id: pool.id, + poolApr: apr, + }, + }); + + dispatch(updateLaunchpools); + }, + poolFinish: async (dispatch, pool, data) => { + if (data.poolFinish === undefined) { + console.warn('Missing data for launchpools poolFinish.'); + return; + } + + // Save to state + dispatch({ + type: ACTION_PREFIX + 'poolFinish', + payload: { + id: pool.id, + poolFinish: data.poolFinish, + }, + }); + + // Do not update fixed status pools + if (pool.fixedStatus !== true) { + // Calculate pool status based on initial status + let poolStatus = pool.status; + if (pool.status === 'active') { + if (data.poolFinish === '0') { + poolStatus = 'soon'; + } else if (data.poolFinish * 1000 < Date.now()) { + poolStatus = 'closed'; + } + } else if (pool.status === 'soon') { + if (data.poolFinish * 1000 >= Date.now()) { + poolStatus = 'active'; + } + } + + dispatch({ + type: ACTION_PREFIX + 'poolStatus', + payload: { + id: pool.id, + poolStatus, + }, + }); + + dispatch(updateLaunchpools); + } + }, +}; + +// update state with subscription results +const subscriptionReducers = { + subscribe: (state, payload) => { + return { + ...state, + subscriptions: { + ...state.subscriptions, + [payload.id]: { + ...state.subscriptions[payload.id], + ...Object.fromEntries( + payload.subscriptions.map(subscription => [ + subscription, + (state.subscriptions[payload.id][subscription] || 0) + 1, + ]) + ), + }, + }, + }; + }, + unsubscribe: (state, payload) => { + return { + ...state, + subscriptions: { + ...state.subscriptions, + [payload.id]: { + ...state.subscriptions[payload.id], + ...Object.fromEntries( + payload.subscriptions.map(subscription => [ + subscription, + (state.subscriptions[payload.id][subscription] || 0) - 1, + ]) + ), + }, + }, + }; + }, + userApproval: (state, payload) => { + if (state.userApproval[payload.id] !== payload.userApproval) { + return { + ...state, + userApproval: { + ...state.userApproval, + [payload.id]: payload.userApproval, + }, + }; + } + + return state; + }, + userBalance: (state, payload) => { + if (state.userBalance[payload.id] !== payload.userBalance) { + return { + ...state, + userBalance: { + ...state.userBalance, + [payload.id]: payload.userBalance, + }, + }; + } + + return state; + }, + userStaked: (state, payload) => { + if (state.userStaked[payload.id] !== payload.userStaked) { + return { + ...state, + userStaked: { + ...state.userStaked, + [payload.id]: payload.userStaked, + }, + }; + } + + return state; + }, + userRewardsAvailable: (state, payload) => { + if (state.userRewardsAvailable[payload.id] !== payload.userRewardsAvailable) { + return { + ...state, + userRewardsAvailable: { + ...state.userRewardsAvailable, + [payload.id]: payload.userRewardsAvailable, + }, + }; + } + + return state; + }, + poolFinish: (state, payload) => { + if (state.poolFinish[payload.id] !== payload.poolFinish) { + return { + ...state, + poolFinish: { + ...state.poolFinish, + [payload.id]: payload.poolFinish, + }, + }; + } + + return state; + }, + poolStatus: (state, payload) => { + if (state.poolStatus[payload.id] !== payload.poolStatus) { + return { + ...state, + poolStatus: { + ...state.poolStatus, + [payload.id]: payload.poolStatus, + }, + }; + } + + return state; + }, + poolStaked: (state, payload) => { + if (state.poolStaked[payload.id] !== payload.poolStaked) { + return { + ...state, + poolStaked: { + ...state.poolStaked, + [payload.id]: payload.poolStaked, + }, + }; + } + + return state; + }, + poolApr: (state, payload) => { + if (state.poolApr[payload.id] !== payload.poolApr) { + return { + ...state, + poolApr: { + ...state.poolApr, + [payload.id]: payload.poolApr, + }, + }; + } + + return state; + }, +}; + +export function reducer(state, action) { + if (action.type.substr(0, ACTION_PREFIX.length) === ACTION_PREFIX) { + const key = action.type.substr(ACTION_PREFIX.length); + if (key in subscriptionReducers) { + return subscriptionReducers[key](state, action.payload); + } else { + console.error(`No reducer for launchpool action ${key}`); + } + } else if (action.type === HOME_DISCONNECT_WALLET_BEGIN) { + // Clear user values on wallet disconnect + return { + ...state, + ...initialUserState, + }; + } + + return state; +} + +// Exported so can be called on tx receipt (i.e. approval) +export async function updatePools(dispatch, getState) { + const { home, stake } = getState(); + const { address: userAddress, web3: userWeb3 } = home; + const { subscriptions } = stake; + const hasAddress = userWeb3 && userAddress; + const requestedCalls = {}; + + // Get list of active subscriptions + const activeSubscriptions = Object.fromEntries( + Object.entries(subscriptions) + .map(([poolId, poolSubscriptions]) => { + const active = Object.entries(poolSubscriptions) + .filter(([subscriptionKey, refCount]) => { + return refCount > 0 && (hasAddress || subscriptionsDoNotNeedAddress[subscriptionKey]); + }) + .map(([subscriptionKey]) => subscriptionKey); + + return active.length ? [poolId, active] : null; + }) + .filter(entries => entries !== null) + ); + + // No active subscriptions? + if (Object.keys(activeSubscriptions).length === 0) { + // No RPC calls made, no need to throttle + clearThrottleUpdatePools(dispatch); + return; + } + + // Gets list of contract calls required to fulfill active subscriptions + for (const [poolId, poolSubscriptions] of Object.entries(activeSubscriptions)) { + // For each subscription in the pool + for (const subscriptionKey of poolSubscriptions) { + // Add this poolId to the list of requested calls + for (const callKey of subscriptionCalls[subscriptionKey]) { + // Group by group > pool > calls + const groupKey = callGroups[callKey]; + + if (!(groupKey in requestedCalls)) { + requestedCalls[groupKey] = {}; + } + + if (!(poolId in requestedCalls[groupKey])) { + requestedCalls[groupKey][poolId] = new Set(); + } + + if (!requestedCalls[groupKey][poolId].has(callKey)) { + requestedCalls[groupKey][poolId].add(callKey); + } + } + } + } + + // Get RPC connection + const web3 = userWeb3 || new Web3(new Web3.providers.HttpProvider(getRpcUrl())); + const multicall = new MultiCall(web3, getNetworkMulticall()); + + // Build groups of calls for multicall + const allCalls = Object.entries(requestedCalls).map(([groupKey, groupContracts]) => { + return Object.entries(groupContracts).map(([poolId, callKeys]) => { + const pool = launchpools[poolId]; + const contract = callGroupContracts[groupKey](web3, pool); + const calls = Object.fromEntries( + Array.from(callKeys).map(call => [call, callFunctions[call](contract, pool, userAddress)]) + ); + + calls.poolId = poolId; + + return calls; + }); + }); + + // Call all, and collect results by poolId + const allResults = await multicall.all(allCalls); + const resultsById = {}; + for (const groupResults of allResults) { + for (const result of groupResults) { + const { poolId, ...rest } = result; + if (!(poolId in resultsById)) { + resultsById[poolId] = {}; + } + resultsById[poolId] = { ...resultsById[poolId], ...rest }; + } + } + + // Subscription callsbacks + const callbacks = []; + for (const [poolId, poolSubscriptions] of Object.entries(activeSubscriptions)) { + // For each subscription in the pool + for (const subscriptionKey of poolSubscriptions) { + callbacks.push( + subscriptionCallbacks[subscriptionKey](dispatch, launchpools[poolId], resultsById[poolId]) + ); + } + } + + return Promise.allSettled(callbacks); +} + +function createSubscribePool(poolId, data) { + return { + type: ACTION_PREFIX + 'subscribe', + payload: { + id: poolId, + subscriptions: Object.entries(data) + .filter(([, subscribe]) => subscribe) + .map(([key]) => key), + }, + }; +} + +function createUnsubscribePool(poolId, data) { + return { + type: ACTION_PREFIX + 'unsubscribe', + payload: { + id: poolId, + subscriptions: Object.entries(data) + .filter(([, subscribe]) => subscribe) + .map(([key]) => key), + }, + }; +} + +// waits until there is at least 100ms between update calls before actually calling update +// ensure maximum number of subscriptions are captured for the update +let debounceUpdatePoolsTimer = null; + +async function debounceUpdatePools(dispatch) { + if (debounceUpdatePoolsTimer) { + clearTimeout(debounceUpdatePoolsTimer); + debounceUpdatePoolsTimer = null; + } + + debounceUpdatePoolsTimer = setTimeout(() => { + debounceUpdatePoolsTimer = null; + dispatch(throttleUpdatePools); + }, 100); +} + +// only allow update to be called at most every MIN_UPDATE_DELAY ms +// ensure RPC is not spammed with calls +let throttleUpdatePoolsLastUpdate = 0; +let throttleUpdatePoolsTimer = null; + +async function throttleUpdatePools(dispatch) { + const now = Date.now(); + const timeSinceLast = now - throttleUpdatePoolsLastUpdate; + + if (throttleUpdatePoolsTimer) { + clearTimeout(throttleUpdatePoolsTimer); + throttleUpdatePoolsTimer = null; + } + + if (timeSinceLast >= MIN_UPDATE_DELAY) { + throttleUpdatePoolsLastUpdate = now; + dispatch(updatePools); + } else { + throttleUpdatePoolsTimer = setTimeout(() => { + dispatch(throttleUpdatePools); + }, MIN_UPDATE_DELAY - timeSinceLast); + } +} + +function clearThrottleUpdatePools(dispatch) { + throttleUpdatePoolsLastUpdate = 0; + + if (throttleUpdatePoolsTimer) { + dispatch(throttleUpdatePools); + } +} + +export function useLaunchpoolSubscriptions() { + const dispatch = useDispatch(); + const update = useCallback( + (immediate = false) => dispatch(immediate ? updatePools : debounceUpdatePools), + [dispatch] + ); + + const unsubscribe = useCallback( + (poolId, data) => dispatch(createUnsubscribePool(poolId, data)), + [dispatch] + ); + + const subscribe = useCallback( + (poolId, data) => { + const action = createSubscribePool(poolId, data); + + // if we are subscribing to something + if (action.payload.subscriptions.length) { + // dispatch subscribe + dispatch(action); + // dispatch update + update(); + // result is function that can undo the subscription + return () => unsubscribe(poolId, data); + } + + return NOOP; + }, + [dispatch, update, unsubscribe] + ); + + return { subscribe, update }; +} + +export function useLaunchpoolUpdates(updateInterval = DEFAULT_UPDATE_INTERVAL) { + const dispatch = useDispatch(); + const { update } = useLaunchpoolSubscriptions(); + const { web3, address } = useConnectWallet(); + + // update on connect wallet + useEffect(() => { + if (web3 && address) { + clearThrottleUpdatePools(dispatch); + update(); + } + }, [web3, address, dispatch, update]); + + // update on interval + useEffect(() => { + const id = setInterval(update, updateInterval); + return () => clearInterval(id); + }, [updateInterval, update]); +} + +export function usePoolFinish(id) { + return useSelector(state => (id ? state.stake.poolFinish[id] : null)); +} + +export function usePoolStatus(id) { + return useSelector(state => (id ? state.stake.poolStatus[id] : null)); +} + +export function usePoolApr(id) { + return useSelector(state => (id ? state.stake.poolApr[id] : null)); +} + +export function usePoolStaked(id) { + const raw = useSelector(state => (id && id in launchpools ? state.stake.poolStaked[id] : null)); + + return useMemo(() => { + return raw ? byDecimals(raw, launchpools[id].tokenDecimals) : ZERO; + }, [raw, id]); +} + +export function useUserApproval(id) { + const raw = useSelector(state => (id && id in launchpools ? state.stake.userApproval[id] : null)); + + return useMemo(() => { + return raw ? byDecimals(raw, launchpools[id].tokenDecimals) : ZERO; + }, [raw, id]); +} + +export function useUserBalance(id) { + const raw = useSelector(state => (id && id in launchpools ? state.stake.userBalance[id] : null)); + + return useMemo(() => { + return raw ? byDecimals(raw, launchpools[id].tokenDecimals) : ZERO; + }, [raw, id]); +} + +export function useUserStaked(id) { + const raw = useSelector(state => (id && id in launchpools ? state.stake.userStaked[id] : null)); + + return useMemo(() => { + return raw ? byDecimals(raw, launchpools[id].tokenDecimals) : ZERO; + }, [raw, id]); +} + +export function useUserRewardsAvailable(id) { + const raw = useSelector(state => + id && id in launchpools ? state.stake.userRewardsAvailable[id] : null + ); + + return useMemo(() => { + return raw ? byDecimals(raw, launchpools[id].earnedTokenDecimals) : ZERO; + }, [raw, id]); +} diff --git a/src/features/stake/route.js b/src/features/stake/route.js deleted file mode 100644 index a5efe5445..000000000 --- a/src/features/stake/route.js +++ /dev/null @@ -1,9 +0,0 @@ -import { StakePage, PoolPage } from './'; - -export default { - path: 'stake', - childRoutes: [ - { path: 'stake', component: StakePage, isIndex: true }, - { path: 'pool/:index', component: PoolPage }, - ], -}; diff --git a/src/features/stake/sections/StakeCountdown.js b/src/features/stake/sections/StakeCountdown.js new file mode 100644 index 000000000..7a6ce9cc9 --- /dev/null +++ b/src/features/stake/sections/StakeCountdown.js @@ -0,0 +1,18 @@ +import React, { useEffect, useState } from 'react'; +import { useTranslation } from 'react-i18next'; +import { formatCountdown } from '../../helpers/format'; + +export function StakeCountdown({ periodFinish }) { + const { t } = useTranslation(); + const [time, setTime] = useState(Date.now()); + + useEffect(() => { + const id = setInterval(() => setTime(Date.now()), 1000); + return () => clearInterval(id); + }); + + const periodFinishMS = periodFinish * 1000; + const diff = periodFinishMS - time; + + return <>{diff > 0 ? formatCountdown(periodFinishMS) : t('Finished')}; +} diff --git a/src/features/stake/sections/StakePool.js b/src/features/stake/sections/StakePool.js index 2bbc4f3ef..902521261 100644 --- a/src/features/stake/sections/StakePool.js +++ b/src/features/stake/sections/StakePool.js @@ -1,483 +1,550 @@ -import React,{ useState, useEffect } from 'react'; -import classNames from "classnames"; +import React, { useCallback, useEffect, useMemo, useState } from 'react'; import { useTranslation } from 'react-i18next'; -import BigNumber from 'bignumber.js' -import moment from 'moment'; -import { byDecimals } from 'features/helpers/bignumber'; -import { withStyles, makeStyles } from "@material-ui/core/styles"; -import GridContainer from "components/Grid/GridContainer.js"; -import GridItem from "components/Grid/GridItem.js"; -import CustomButtons from "components/CustomButtons/Button.js"; -import Table from '@material-ui/core/Table'; -import TableBody from '@material-ui/core/TableBody'; -import TableCell from '@material-ui/core/TableCell'; -import TableContainer from '@material-ui/core/TableContainer'; -import TableHead from '@material-ui/core/TableHead'; -import TableRow from '@material-ui/core/TableRow'; -import Avatar from '@material-ui/core/Avatar'; -import Popover from '@material-ui/core/Popover'; -import Typography from '@material-ui/core/Typography'; -import Grid from '@material-ui/core/Grid'; -import { isEmpty,inputLimitPass,inputFinalVal } from 'features/helpers/utils'; -import {StyledTableCell,StyledTableRow,stakePoolsStyle} from "../jss/sections/stakePoolsStyle"; -import InputBase from '@material-ui/core/InputBase'; -import IconButton from '@material-ui/core/IconButton'; -import Hidden from '@material-ui/core/Hidden'; +import { useParams } from 'react-router'; +import { Link } from 'react-router-dom'; +import BigNumber from 'bignumber.js'; +import { + useFetchApproval, + useFetchClaim, + useFetchExit, + useFetchStake, + useFetchWithdraw, + useLaunchpoolSubscriptions, + useLaunchpoolUpdates, + usePoolApr, + usePoolFinish, + usePoolStaked, + usePoolStatus, + useUserApproval, + useUserBalance, + useUserRewardsAvailable, + useUserStaked, +} from '../redux/hooks'; -import { useConnectWallet } from '../../home/redux/hooks'; -import { useCheckApproval, useFetchPoolsInfo, useFetchBalance, useFetchCurrentlyStaked, useFetchRewardsAvailable, useFetchHalfTime, useFetchCanWithdrawTime, useFetchApproval, useFetchStake, useFetchWithdraw, useFetchClaim, useFetchExit } from '../redux/hooks'; +import { + Avatar, + Box, + Dialog, + Grid, + makeStyles, + TextField, + Typography, + useTheme, +} from '@material-ui/core'; -const useStyles = makeStyles(stakePoolsStyle); +import TwitterIcon from '@material-ui/icons/Twitter'; +import TelegramIcon from '@material-ui/icons/Telegram'; -export default function StakePool(props) { - const classes = useStyles(); - const { t, i18n } = useTranslation(); - const { address } = useConnectWallet(); - const { allowance, checkApproval } = useCheckApproval(); - const { pools } = useFetchPoolsInfo(); - const { balance, fetchBalance } = useFetchBalance(); - const { currentlyStaked, fetchCurrentlyStaked } = useFetchCurrentlyStaked(); - const { rewardsAvailable, fetchRewardsAvailable } = useFetchRewardsAvailable(); - const { canWithdrawTime, fetchCanWithdrawTime } = useFetchCanWithdrawTime(); - const { halfTime, fetchHalfTime } = useFetchHalfTime(); - const { fetchApproval, fetchApprovalPending } = useFetchApproval(); - const { fetchStake, fetchStakePending } = useFetchStake(); - const { fetchWithdraw, fetchWithdrawPending } = useFetchWithdraw(); - const { fetchClaim, fetchClaimPending } = useFetchClaim(); - const { fetchExit, fetchExitPending } = useFetchExit(); - const [ index, setIndex] = useState(Number(props.match.params.index) - 1); - const [ showInput, setShowInput ] = useState(false); - // const [ pageSize,setPageSize ] = useState(''); - const [ isNeedApproval, setIsNeedApproval] = useState(true); - const [ approvalAble, setApprovalAble] = useState(true); - const [ stakeAble,setStakeAble ] = useState(true); - const [ withdrawAble,setWithdrawAble ] = useState(true); - const [ claimAble,setClaimAble ] = useState(true); - const [ exitAble,setExitAble ] = useState(true); - const [ myBalance,setMyBalance ] = useState(new BigNumber(balance[index])); - const [ myCurrentlyStaked, setMyCurrentlyStaked] = useState(new BigNumber(currentlyStaked[index])); - const [ myRewardsAvailable, setMyRewardsAvailable] = useState(new BigNumber(rewardsAvailable[index])); - const [ myHalfTime, setMyHalfTime] = useState(`0day 00:00:00`); - const [ inputVal, setInputVal] = useState(0); - const [ anchorEl, setAnchorEl] = useState(null); - const [ canWithdrawTimeIsZero,setCanWithdrawTimeIsZero ] = useState(false); - const [ canWithdrawTimeIsMoreNowTime,setCanWithdrawTimeIsMoreNowTime ] = useState(false); +import Button from '../../../components/CustomButtons/Button'; +import { styles } from './styles/view'; +import Divider from '@material-ui/core/Divider'; +import { formatApy, formatDecimals, formatPercent } from '../../helpers/format'; +import { Helmet } from 'react-helmet'; +import { usePageMeta } from '../../common/getPageMeta'; +import { launchpools } from '../../helpers/getNetworkData'; +import { useSelector } from 'react-redux'; +import { StakeCountdown } from './StakeCountdown'; +import ValueLoader from '../../common/components/ValueLoader/ValueLoader'; +import { NetworkRequired } from '../../../components/NetworkRequired/NetworkRequired'; +import AvatarGroup from '@material-ui/lab/AvatarGroup'; +import { getSingleAssetSrc } from '../../helpers/getSingleAssetSrc'; - const changeInputVal = (event) => { - let value = event.target.value; - const changeIsNumber = /^[0-9]+\.?[0-9]*$/; - if (!value) return setInputVal(value); - if (changeIsNumber.test(value)) { - value = value.replace(/(^[0-9]+)(\.?[0-9]*$)/, (word, p1, p2) => { - return Number(p1).toString() + p2; - }); - if (new BigNumber(Number(value)).comparedTo(showInput === 'stake'?myBalance:myCurrentlyStaked) === 1) return setInputVal((showInput === 'stake'?myBalance.toString():myCurrentlyStaked.toString())); - setInputVal(value) - } - } +const useStyles = makeStyles(styles); - useEffect(() => { - setIndex(Number(props.match.params.index) - 1); - }, [Number(props.match.params.index)]); +export default function StakePool(props) { + const { chain } = useParams(); - useEffect(() => { - setIsNeedApproval(Boolean(allowance[index] === 0)); - }, [allowance[index], index]); + const classes = useStyles(); + const { t } = useTranslation(); + const { fetchApproval } = useFetchApproval(); + const { fetchStake } = useFetchStake(); + const { fetchWithdraw } = useFetchWithdraw(); + const { fetchClaim } = useFetchClaim(); + const { fetchExit } = useFetchExit(); + const [showInput, setShowInput] = useState(false); + const [inputVal, setInputVal] = useState(0); + const [open, setOpen] = React.useState(false); + const { getPageMeta } = usePageMeta(); + const theme = useTheme(); + const isNightMode = theme.palette.type === 'dark'; - useEffect(() => { - setApprovalAble(!Boolean(fetchApprovalPending[index])); - }, [fetchApprovalPending[index], index]); + // Get pool from url + const poolId = props.match.params.id; - const onApproval = () => { - fetchApproval(index); - } + const launchpool = useMemo(() => { + return launchpools[poolId]; + }, [poolId]); + // Subscribe to updates for this pool + const { subscribe } = useLaunchpoolSubscriptions(); useEffect(() => { - setStakeAble(!Boolean(fetchStakePending[index])); - }, [fetchStakePending[index], index]); + return subscribe(launchpool.id, { + userApproval: true, + userBalance: true, + userStaked: true, + userRewardsAvailable: true, + poolStaked: true, + poolApr: true, + poolFinish: true, + }); + }, [subscribe, launchpool]); + useLaunchpoolUpdates(); - const onStake = () => { - const amount = new BigNumber(inputVal).multipliedBy(new BigNumber(10).exponentiatedBy(pools[index].tokenDecimals)).toString(10); - fetchStake(index, amount); - } + // Get pool state + const poolHideCountdown = launchpool.fixedStatus === true; + const poolFinish = usePoolFinish(launchpool.id); + const poolStatus = usePoolStatus(launchpool.id); + const poolStaked = usePoolStaked(launchpool.id); + const poolApr = usePoolApr(launchpool.id); + const userApproval = useUserApproval(launchpool.id); + const userBalance = useUserBalance(launchpool.id); + const userStaked = useUserStaked(launchpool.id); + const userRewardsAvailable = useUserRewardsAvailable(launchpool.id); - useEffect(() => { - const func = () => { - if(Boolean(canWithdrawTime[index] === 0)){ - setCanWithdrawTimeIsZero(true); - setCanWithdrawTimeIsMoreNowTime(false); - }else{ - setCanWithdrawTimeIsZero(false); - if(Boolean((canWithdrawTime[index] * 1000) > new Date().getTime())){ - setCanWithdrawTimeIsMoreNowTime(true); - }else{ - setCanWithdrawTimeIsMoreNowTime(false); - } - } + const fetchApprovalPending = useSelector( + state => state.stake.fetchApprovalPending[launchpool.id] + ); + const fetchStakePending = useSelector(state => state.stake.fetchStakePending[launchpool.id]); + const fetchWithdrawPending = useSelector( + state => state.stake.fetchWithdrawPending[launchpool.id] + ); + const fetchClaimPending = useSelector(state => state.stake.fetchClaimPending[launchpool.id]); + const fetchExitPending = useSelector(state => state.stake.fetchExitPending[launchpool.id]); + + // Countdown timer/status + const countdownStatus = useMemo(() => { + if (poolStatus === 'closed') { + return <>{t('Finished')}; + } else if (poolStatus === 'soon') { + return <>{t('Coming-Soon')}; + } else if (poolFinish && !poolHideCountdown) { + return ( + <> + {t('End') + ': '} + + + ); + } else if (poolFinish === undefined && !poolHideCountdown) { + return ; } - const id = setInterval(func, 1000); - return () => clearInterval(id); - },[canWithdrawTime[index]]) - const momentFormatTime = (timestamp) =>{ - return moment(timestamp).format('YYYY-MM-DD HH:mm:ss') - } + return <>; + }, [poolStatus, poolHideCountdown, poolFinish, t]); - useEffect(() => { - const isPending = Boolean(fetchWithdrawPending[index]); - const currentlyStakedIs0 = currentlyStaked[index] === 0; - const isPool4 = Boolean(index === 3); - const isDisableCanWithdrawTime = canWithdrawTimeIsZero || canWithdrawTimeIsMoreNowTime; - const isPool4AndDisableCanWithDraw = Boolean(isPool4 && isDisableCanWithdrawTime) - setWithdrawAble(!Boolean(isPending || isPool4AndDisableCanWithDraw || currentlyStakedIs0)); - }, [currentlyStaked[index], fetchWithdrawPending[index], index, canWithdrawTimeIsZero, canWithdrawTimeIsMoreNowTime]); + // Pool Share + const myPoolShare = useMemo(() => { + return userStaked.dividedBy(poolStaked).toNumber(); + }, [userStaked, poolStaked]); - const onWithdraw = () => { - const amount = new BigNumber(inputVal).multipliedBy(new BigNumber(10).exponentiatedBy(pools[index].tokenDecimals)).toString(10); - fetchWithdraw(index, amount); - } + // Modal input change + const changeInputVal = event => { + let value = event.target.value; + const changeIsNumber = /^[0-9]+\.?[0-9]*$/; + if (!value) return setInputVal(value); + if (changeIsNumber.test(value)) { + value = value.replace(/(^[0-9]+)(\.?[0-9]*$)/, (word, p1, p2) => { + return Number(p1).toString() + p2; + }); + if ( + new BigNumber(Number(value)).comparedTo( + showInput === 'stake' ? userBalance : userStaked + ) === 1 + ) + return setInputVal(showInput === 'stake' ? userBalance.toString() : userStaked.toString()); + setInputVal(value); + } + }; - useEffect(() => { - const isPending = Boolean(fetchClaimPending[index]); - const rewardsAvailableIs0 = rewardsAvailable[index] === 0; - setClaimAble(!Boolean(isPending || rewardsAvailableIs0)); - }, [rewardsAvailable[index], fetchClaimPending[index], index]); + // Approval: Needs approval + const isNeedApproval = useMemo(() => { + const stakeAmount = new BigNumber(inputVal); + return ( + userApproval.isZero() || (showInput === 'stake' && stakeAmount.isGreaterThan(userApproval)) + ); + }, [userApproval, inputVal, showInput]); - const onClaim = () => { - fetchClaim(index); - } + // Approval: Submit tx + const onApproval = useCallback(() => { + fetchApproval(poolId); + }, [fetchApproval, poolId]); - useEffect(() => { - const isPending = Boolean(fetchExitPending[index]); - const currentlyStakedIs0 = currentlyStaked[index] === 0; - const rewardsAvailableIs0 = rewardsAvailable[index] === 0; - const currentlyStakedAndRewardsAvailableIs0 = Boolean(currentlyStakedIs0 && rewardsAvailableIs0); - const isPool4 = Boolean(index === 3); - const isDisableCanWithdrawTime = canWithdrawTimeIsZero || canWithdrawTimeIsMoreNowTime; - const isPool4AndDisableCanWithDraw = Boolean(isPool4 && isDisableCanWithdrawTime) - setExitAble(!Boolean(isPending || isPool4AndDisableCanWithDraw || currentlyStakedAndRewardsAvailableIs0)); - }, [currentlyStaked[index], rewardsAvailable[index], fetchExitPending[index], index, canWithdrawTimeIsZero, canWithdrawTimeIsMoreNowTime]); + // Stake: Submit tx + const onStake = useCallback(() => { + const amount = new BigNumber(inputVal) + .multipliedBy(new BigNumber(10).exponentiatedBy(launchpool.tokenDecimals)) + .toString(10); + fetchStake(poolId, amount); + setOpen(false); + }, [fetchStake, inputVal, launchpool, poolId, setOpen]); - const onExit = () => { - fetchExit(index); - } + // Withdraw: Submit tx + const onWithdraw = useCallback(() => { + const amount = new BigNumber(inputVal) + .multipliedBy(new BigNumber(10).exponentiatedBy(launchpool.tokenDecimals)) + .toString(10); + fetchWithdraw(poolId, amount); + setOpen(false); + }, [fetchWithdraw, inputVal, launchpool, poolId, setOpen]); - useEffect(() => { - const amount = byDecimals(balance[index], pools[index].tokenDecimals); - setMyBalance(amount); - }, [balance[index], index]); + // Claim: Submit tx + const onClaim = useCallback(() => { + fetchClaim(poolId); + }, [fetchClaim, poolId]); - useEffect(() => { - const amount = byDecimals(currentlyStaked[index], pools[index].tokenDecimals); - setMyCurrentlyStaked(amount); - }, [currentlyStaked[index], index]); + // Exit: Submit tx + const onExit = useCallback(() => { + fetchExit(poolId); + }, [fetchExit, poolId]); - useEffect(() => { - const amount = byDecimals(rewardsAvailable[index], pools[index].earnedTokenDecimals); - setMyRewardsAvailable(amount); - }, [rewardsAvailable[index], index]); + const handleModal = (state, action = false) => { + setOpen(state); + setShowInput(action); + setInputVal(0); + }; - useEffect(() => { - if(halfTime[index] === 0) return; - if(Boolean(index === 2) || Boolean(index=== 3)) return; - const formatTime = () => { - const currTime = new Date().getTime(); - const deadline = halfTime[index] * 1000; - const time = deadline - currTime; - if (time <= 0) { return fetchHalfTime(index);} - const day = Math.floor(time / (1000 * 60 * 60 * 24)).toString().padStart(2, '0'); - const hours = Math.floor(( time / (1000 * 60 * 60)) % 24).toString().padStart(2, '0'); - const minutes = Math.floor(( time / (1000 * 60)) % 60).toString().padStart(2, '0'); - const seconds = Math.floor(( time / 1000) % 60).toString().padStart(2, '0'); - setMyHalfTime(`${day}day ${hours}:${minutes}:${seconds}`); - } - formatTime(); - const id = setInterval(formatTime, 1000); - return () => clearInterval(id); - }, [halfTime[index], pools, index]); + const customBgImg = img => { + return img + ? { + backgroundImage: 'url(' + require('images/' + img) + ')', + backgroundSize: 'cover', + backgroundRepeat: 'no-repeat', + } + : {}; + }; - useEffect(() => { - if (address) { - checkApproval(index); - fetchBalance(index); - fetchCurrentlyStaked(index); - fetchRewardsAvailable(index); - if(Boolean(index === 0) || Boolean(index === 1)) fetchHalfTime(index); - if(index === 3) fetchCanWithdrawTime(index); - const id = setInterval(() => { - checkApproval(index); - fetchBalance(index); - fetchCurrentlyStaked(index); - fetchRewardsAvailable(index); - if(Boolean(index === 0) || Boolean(index === 1)) fetchHalfTime(index); - if(index === 3) fetchCanWithdrawTime(index); - }, 10000); - return () => clearInterval(id); - } - }, [address, index]); + let avatar; + if (launchpool.logo) { + avatar = ( + + ); + } else { + avatar = ( + + + + + ); + } return ( - - -
{`Stake / ${pools[index].name}`}
+ + + + {getPageMeta('Stake-Meta-Title', { + earnedToken: launchpool.earnedToken, + boostedBy: launchpool.name, + })} + + + + + + + - - - - - {t('Stake-Balancer-Your-Balance')} - -
{`${Math.floor(myBalance.toNumber() * 10000)/ 10000} ${pools[index].token}`}
- -
{t('Stake-Balancer-Your-Balance')}
-
-
- - - {t('Stake-Balancer-Current-Staked')} - -
{`${Math.floor(myCurrentlyStaked.toNumber() * 10000)/ 10000} ${pools[index].token}`}
- -
{t('Stake-Balancer-Current-Staked')}
-
-
- - - {t('Stake-Balancer-Rewards-Available')} - -
{`${Math.floor(myRewardsAvailable.toNumber() * 10000)/ 10000} ${pools[index].earnedToken}`}
- -
{t('Stake-Balancer-Rewards-Available')}
-
-
- {index!==3&& - - {t('Stake-Balancer-Half-Time')} - -
{myHalfTime}
- -
{t('Stake-Balancer-Half-Time')}
-
-
} -
+ + {countdownStatus} - - { - showInput ? ( -
- -
-
- -
- - -
{pools[index].name}
-
-
-
- -
{`Balance: ${showInput === 'stake' ? myBalance.toString(): myCurrentlyStaked.toString()}`}
-
- { - event.stopPropagation(); - setInputVal(showInput === 'stake' ? myBalance.toString(): myCurrentlyStaked.toString()); - }} - className={classNames({ - [classes.stakeButton]:true, - [classes.rewardsButton]:true, - [classes.mobileMaxButton]:true, - })}> - {t('Swap-Max')} - - -
{pools[index].name}
-
- - - {showInput === 'stake' ? t('Stake-Button-Stake'):t('Stake-Button-Unstake-Tokens')} - - - - { - event.stopPropagation(); - setShowInput(false); - }} - > - - - -
-
- -
{`Balance: ${showInput === 'stake' ? myBalance.toString(): myCurrentlyStaked.toString()}`}
-
- - {t('Stake-Button-Stake-Tokens')} - -
-
- { - event.stopPropagation(); - setShowInput(false); - }} - className={classNames({ - [classes.stakeButton]:true, - [classes.grayButton]:true, - })}> - {t('Stake-Button-Unstake-Tokens')} - -
-
-
+ + + + {avatar} + + + + {formatDecimals(userBalance)} + + {launchpool.token} + {t('Vault-Wallet')} + + + + {formatDecimals(userStaked)} + + {launchpool.token} + {t('Stake-Balancer-Current-Staked')} + + + + {formatDecimals(userRewardsAvailable)} + + {launchpool.earnedToken} + + {t('Stake-Balancer-Rewards-Available')} + + + + + + + {formatDecimals(poolStaked)} + + {t('Stake-Total-Value-Locked', { mooToken: launchpool.token })} + + + + + {formatPercent(myPoolShare, 4)} + + {t('Stake-Your-Pool')}% + + + {formatApy(poolApr)} + {t('Vault-APR')} + + + {poolStatus === 'closed' || poolStatus === 'soon' ? ( + + + {poolStatus === 'closed' + ? t('Finished') + : poolStatus === 'soon' + ? t('Coming-Soon') + : ''} + + + ) : ( + '' + )} + + + + + {launchpool.partnership ? ( + {t('Stake-BoostedBy', { name: launchpool.name })} + ) : ( + '' + )} + + {isNeedApproval ? ( + ) : ( - - - { isNeedApproval ? ( - - {t('Stake-Button-Approval')} - - ): ({ - event.stopPropagation(); - setShowInput('stake'); - }} - className={classNames({ - [classes.stakeButton]:true, - [classes.stakeDetailButton]:true, - })}> - {t('Stake-Button-Stake-Tokens')} - - )} -
-
- - { - event.stopPropagation(); - setShowInput('unstake'); - }} - className={classNames({ - [classes.stakeButton]:true, - [classes.grayButton]:!Boolean(withdrawAble), - [classes.stakeDetailButton]:true, - })}> - {t('Stake-Button-Unstake-Tokens')} - - { - (canWithdrawTimeIsZero || canWithdrawTimeIsMoreNowTime) ? ( -
- - { - canWithdrawTimeIsMoreNowTime ? ( - {t('Stake-Pool-Unstake-Hint-Date')+momentFormatTime(canWithdrawTime[index] * 1000)} - ) : ( - {t('Stake-Pool-Unstake-Hint')} - ) - } -
- ):( -
- ) - } -
- - - {t('Stake-Button-Claim-Rewards')} - -
-
- - - {t('Stake-Button-Exit')} - - { - (canWithdrawTimeIsZero || canWithdrawTimeIsMoreNowTime) ? ( -
- - { - canWithdrawTimeIsMoreNowTime ? ( - {t('Stake-Pool-Unstake-Hint-Date')+momentFormatTime(canWithdrawTime[index] * 1000)} - ) : ( - {t('Stake-Pool-Unstake-Hint')} - ) - } -
- ):( -
- ) - } -
-
- ) - } + + )} +
+ + + + + + + + + +
+
+ + {launchpool.partners.map(partner => ( + + + + {isNightMode && partner.logoNight ? ( + {launchpool.name} + ) : partner.logo ? ( + {launchpool.name} + ) : ( + '' + )} + + + + {partner.text} + + + + {partner.social.twitter ? ( + + + + ) : ( + '' + )} + {partner.social.telegram ? ( + + + + ) : ( + '' + )} + {partner.website ? ( + + + {partner.website} + + + ) : ( + '' + )} + + + ))} + + { + handleModal(false); + }} + aria-labelledby="customized-dialog-title" + open={open} + > + + + Stake your tokens + + + { + setInputVal(showInput === 'stake' ? userBalance.toString() : userStaked.toString()); + }} + > + {launchpool.token} Balance:{' '} + {showInput === 'stake' ? userBalance.toString() : userStaked.toString()} + + + +
+ + +
+ + + +
+
- ) + ); } diff --git a/src/features/stake/sections/StakePools.js b/src/features/stake/sections/StakePools.js index 111623860..ca613a519 100644 --- a/src/features/stake/sections/StakePools.js +++ b/src/features/stake/sections/StakePools.js @@ -1,158 +1,292 @@ -import React,{ useState, useEffect } from 'react'; -import classNames from "classnames"; +import React, { useCallback } from 'react'; import { useTranslation } from 'react-i18next'; -import { makeStyles } from "@material-ui/core/styles"; -import GridContainer from "components/Grid/GridContainer.js"; -import GridItem from "components/Grid/GridItem.js"; -import Table from '@material-ui/core/Table'; -import TableBody from '@material-ui/core/TableBody'; -import TableContainer from '@material-ui/core/TableContainer'; -import TableHead from '@material-ui/core/TableHead'; -import TableRow from '@material-ui/core/TableRow'; -import CustomButtons from "components/CustomButtons/Button.js"; -import Avatar from '@material-ui/core/Avatar'; -import { isEmpty } from 'features/helpers/utils'; -import {StyledTableCell,StyledTableRow,stakePoolsStyle} from "../jss/sections/stakePoolsStyle"; -import InputBase from '@material-ui/core/InputBase'; -import IconButton from '@material-ui/core/IconButton'; -import Grid from '@material-ui/core/Grid'; -import Hidden from '@material-ui/core/Hidden'; -import leftImage from 'assets/img/stake-head-left.png'; -import rightImage from 'assets/img/stake-head-right.png'; -import { useFetchPoolsInfo } from '../redux/hooks'; +import { Accordion, AccordionDetails, Grid, makeStyles, Typography } from '@material-ui/core'; +import Disclaimer from 'components/Disclaimer/Disclaimer'; +import styles from './styles/list'; +import AccordionSummary from '@material-ui/core/AccordionSummary'; +import ExpandMoreIcon from '@material-ui/icons/ExpandMore'; +import { ToggleButton, ToggleButtonGroup } from '@material-ui/lab'; +import { useLaunchpoolUpdates } from '../redux/hooks'; +import { launchpools, appNetworkId } from '../../helpers/getNetworkData'; +import { StakePoolsPool } from './StakePoolsPool'; -const useStyles = makeStyles(stakePoolsStyle); +const useStyles = makeStyles(styles); -export default function StakePools(props) { - const { fromPage } = props; +export default function StakePools() { const classes = useStyles(); - const { t, i18n } = useTranslation(); - const { pools, poolsInfo, fetchPoolsInfo } = useFetchPoolsInfo(); + const { t } = useTranslation(); + const [expanded, setExpanded] = React.useState('faq-1'); + const [showPools, setShowActive] = React.useState('active'); + useLaunchpoolUpdates(); + + const handleChange = useCallback( + panel => (event, newExpanded) => { + setExpanded(newExpanded ? panel : false); + }, + [setExpanded] + ); + + const handleShowPools = useCallback( + (event, value) => { + setShowActive(value); + }, + [setShowActive] + ); - useEffect(() => { - fetchPoolsInfo(); - }, [fetchPoolsInfo]); - return ( - + -
{t('Stake-Main-Title')}
-

{t('Stake-Second-Title')}

+
+ Launchpool +
- { - fromPage == 'page' && - - -
- - -
{t('Stake-List-Header-Main')}
- - -
{t('Stake-List-Header-Sub')}
- - {t('Stake-Learn-More')} - -
-
-
-
-
- } - - - - - - {t('Stake-Table-Pool')} - {t('Stake-Table-Staked')} - {t('Stake-Table-Total')} - {t('Stake-Table-Apy')} - - - - - {pools.map((pool, index) => ( - - -
-
- -
-
-
{pool.name}
-
{pool.token}
-
-
-
- {/* $40,027,383.88 */} - {poolsInfo[index].staked} - {poolsInfo[index].tvl} - {poolsInfo[index].apy} - - - {t('Stake-Button-Stake')} - - -
- ))} -
-
-
-
- - - {pools.map((pool, index) => ( -
-
- -
-
-
{pool.name}
-
{pool.token}
-
-
-
{t('Stake-Table-Apy')+": "+poolsInfo[index].apy}
-
{t('Stake-Table-Staked')+": "+poolsInfo[index].staked}
-
{t('Stake-Table-Total')+": "+poolsInfo[index].tvl}
-
- - {t('Stake-Button-Stake')} - -
+ + + All + Live + Finished + + + + {Object.values(launchpools).map(pool => ( + ))} -
-
+
+ + + + }> + How do I use Beefy Launchpool? + + + + launchpool how to + Look for a boosted partner Vault in our main app and stake the tokens that are asked + for in the vault. You will get a “receipt” called mooToken in your wallet. Proceed + to the related partner Launchpool vault here on the Beefy Launchpool site and enter + the corresponding vault (or press the shortcut on the main vault page called Boost). + The vault will ask for you to stake yourmooToken “receipts''. Stake these mooTokens + and you are all done, you can easily come back here and follow your earned partner + tokens and withdraw at any time. + + + + + }> + How do I see my earned tokens? + + + + Enter the vault where you deposited your mooTokens and it will show you a nice + summary of your earned tokens. + + + + + }> + How long will the Boosted vault last? + + + + Since we introduced multiple partner vaults at different times, there is a timer + shown on each partner vault. This is nothing you really need to keep track of since + you can always come back after a vault is finished and withdraw then. + + + + + }> + + Do I have to manually unstake from the Launchpool vault when it’s finished? + + + + + Yes! Just come back after a partner vault is finished and you can unstake your + deposited MooTokens together with the partner tokens, at any time. + + + + + }> + Can I enter multiple Launchpool vaults at once? + + + + Absolutely! Just deposit the required tokens in one or multiple of our boosted + vaults, one by one, and then deposit your mooTokens (vault receipts) in the + accompanied partner vaults. Repeat this step for every boosted partner vault you + want to be a part of. + + + + + }> + I can’t see my deposited tokens in the Boosted vault! + + + + No worries! Your deposit is safe and where it should be! Since you have deposited + your mooTokens (vault receipts) in one of our partner vaults, the main boosted vault + don’t see these receipts in your wallet, hence it shows you zero. As soon as you are + finished with a partner vault, you withdraw your mooTokens (receipts) back to your + wallet and your initial vault deposit will show up again. + + + + + }> + What are MooTokens? + + + + A mooToken can be seen as a receipt that you get when depositing into any Beefy vault. + This is a fully automatic process. For example, you receive ‘mooBIFI’ tokens from + depositing $BIFI into the Beefy Maxi vault. These mooTokens do not 1:1 represent the + token amount initially deposited but it does represent the value of your share in the + vault. As a vault generates profit, the amount of mooTokens in your wallet remain + constant while the underlying invested token amount in the vault increases. Whenever + you want to withdraw the tokens that are staked for you in the vault, you need your + receipt (mooTokens) which you hand in to redeem the deposited tokens + yield. + Beefy.Finance users should hold on tightly to the mooTokens i.e. deposit receipts + and not sell or exchange them to strangers or you will lose ownership of your staked + assets in the vault. + + + + + }> + Why do I have less mooToken than the amount of tokens I deposited? + + + + The mooTokens represent the share of the vault the user has. As the vault generates + profit, the deposited token amount in the vault increases while the amount of shares + (mooTokens) in your wallet remain constant. If you deposit at a time when the vault + has been operating for a while, the ratio between deposited tokens and mooTokens + will be off from the initial 1:1 ratio, and continues to diverge from it. + + + + + }> + What is mooBIFI? + + + + mooBIFI is the token you receive from depositing $BIFI into the Beefy Maxi vault. + These mooTokens do not 1:1 represent the token amount initially deposited but it + does represent the value of your share in the vault. The Beefy Maxi vault gathers a + performance fee from every Beefy Vault when they are harvested, and uses it to buy + more $BIFI and redeposit in the vault. The more profit the Beefy generates, the more + $BIFI you'll own in the vault. Do NOT sell your mooTokens, or else you lose access + to your deposit. + + + + + }> + Are these partner vaults safe to use? + + + + Yes! These partner vaults are hosted by Beefy and are completely safe. Beefy has + gotten tokens from our partners and uses our own vaults for the reward. Those + mooTokens your stake doesn’t leave Beefy. + + + + + }> + + If I enter a partner vault with my mooTokens, will I still earn the ordinary vault + reward? + + + + + Yes! The ordinary tokens you deposited in our main vaults even if it’s boosted will + earn the ordinary reward and be compounded as usual. What you place in these partner + vaults is your “receipt” from the ordinary vault that normally is worth nothing. By + using these partner vaults, you earn both tokens on the ordinary vault and tokens + from our partner vaults. + + + + + }> + Why is APY and Daily rates not matching? + + + + That’s because APR and APY show two different things. APR means “Annual Percentage + Rate” and is a fixed rate. Beefy shows APR by dividing the annual yield into 365 + days and presents that to you as “Daily”. APY on the other hand means “Annual + percentage yield” which is when you take the daily yield and compound it. Beefy + compounds your rewards automatically most of the time multiple times a day, this + makes the APY much higher than a yearly APR would be. + + + + + }> + How come the APY shown when deposited is not the same now? + + + + APY is the “Annual percentage yield” and is your daily yield compounded. The daily + yield in turn is based on factors such as the yield rate and the total amount + deposited that share this yield. When more people and in turn tokens enter the pool, + the fixed yield is shared by more people (tokens) hence the daily yield will become + lower and in turn, lower the APY. In the same way, if people (tokens) exit the + vault, there are fewer people (tokens) sharing the fixed reward and the daily yield + will increase and in turn, APY will increase. + + + + + }> + Are the promoted project and its tokens safe? + + + + When partnering with a certain project, Beefy always tries to make an overall check + of the project to get a sense of its sincerity and safety. Before adding vaults that + are hosted by the partnering project, we also try to look for vulnerabilities in the + code. Despite all this, we can never be 100% sure about a partner, hence it’s up to + you to make sure that the partnering project is a project that you want to support. + Beefy cannot, and will not take any responsibility for your personal actions. + + + + {appNetworkId === 56 ? ( + + }> + How to earn free BNB indefinitely? + + + + Buy our own token $BIFI, and stake it here in the BIFI Gov vault and you will earn + part of every harvest done on all our over 200 vaults, every day. + + + + ) : ( + '' + )} + + + + +
- ) + ); } StakePools.defaultProps = { - fromPage:'page', -} \ No newline at end of file + fromPage: 'page', +}; diff --git a/src/features/stake/sections/StakePoolsPool.js b/src/features/stake/sections/StakePoolsPool.js new file mode 100644 index 000000000..56441da97 --- /dev/null +++ b/src/features/stake/sections/StakePoolsPool.js @@ -0,0 +1,118 @@ +import React, { useEffect, useMemo } from 'react'; +import { useParams } from 'react-router'; +import { Link } from 'react-router-dom'; +import { StakeCountdown } from './StakeCountdown'; +import { Avatar, Box, Grid, Typography } from '@material-ui/core'; +import Button from '../../../components/CustomButtons/Button'; +import ValueLoader from '../../common/components/ValueLoader/ValueLoader'; +import { useLaunchpoolSubscriptions, usePoolFinish, usePoolStatus } from '../redux/hooks'; +import AvatarGroup from '@material-ui/lab/AvatarGroup'; +import { getSingleAssetSrc } from '../../helpers/getSingleAssetSrc'; + +export function StakePoolsPool({ showPools, classes, pool, t }) { + const { chain } = useParams(); + const id = pool.id; + const hideCountdown = pool.fixedStatus === true; + const poolFinish = usePoolFinish(pool.id); + const status = usePoolStatus(pool.id); + const { subscribe } = useLaunchpoolSubscriptions(); + + const countdownStatus = useMemo(() => { + if (status === 'closed') { + return <>{t('Finished')}; + } else if (status === 'soon') { + return <>{t('Coming-Soon')}; + } else if (poolFinish && !hideCountdown) { + return ; + } else if (poolFinish === undefined && !hideCountdown) { + return ; + } + + return <>; + }, [status, hideCountdown, poolFinish, t]); + + useEffect(() => { + return subscribe(id, { + poolFinish: status !== 'closed', + }); + }, [subscribe, id, status]); + + let avatar; + if (pool.logo) { + avatar = ( + + ); + } else { + avatar = ( + + + + + ); + } + + if ( + showPools === 'all' || + (showPools === 'active' && status === showPools) || + (showPools === 'active' && status === 'soon') || + (showPools === 'closed' && status === showPools) + ) { + return ( + + + {pool.partnership ? ( + {t('Stake-BoostedBy', { name: pool.name })} + ) : ( + '' + )} + + Earn {pool.earnedToken} + + {avatar} + + {countdownStatus} + + + {pool.token} + + + + + {status === 'closed' || status === 'soon' ? ( + + + {status === 'closed' ? t('Finished') : t('Coming-Soon')} + + + ) : ( + '' + )} + + + ); + } + + return null; +} diff --git a/src/features/stake/sections/index.js b/src/features/stake/sections/index.js index 83c2a2f66..86ce8e48a 100644 --- a/src/features/stake/sections/index.js +++ b/src/features/stake/sections/index.js @@ -1,2 +1,2 @@ export { default as StakePools } from './StakePools'; -export { default as StakePool } from './StakePool'; \ No newline at end of file +export { default as StakePool } from './StakePool'; diff --git a/src/features/stake/sections/styles/list.js b/src/features/stake/sections/styles/list.js new file mode 100644 index 000000000..cc12906aa --- /dev/null +++ b/src/features/stake/sections/styles/list.js @@ -0,0 +1,154 @@ +import { primaryColor } from 'assets/jss/material-kit-pro-react'; + +const styles = theme => ({ + launchpool: { + textAlign: 'center', + paddingBottom: '30px', + '& img': { + height: '60px', + }, + }, + item: { + position: 'relative', + textAlign: 'center', + padding: '20px', + marginBottom: '24px', + border: '1px solid ' + theme.palette.background.border, + borderRadius: '8px', + backgroundColor: theme.palette.background.primary, + '& .MuiAvatar-root': { + width: theme.spacing(7), + height: theme.spacing(7), + margin: '0 auto', + }, + }, + itemRetired: { + background: theme.palette.type === 'dark' ? '#614141' : '#d0c5c9', + }, + boosted: { + position: 'absolute', + top: 0, + left: 0, + padding: '3px 8px', + color: 'white', + fontWeight: 'bold', + fontSize: '13px', + borderTopLeftRadius: '8px', + background: theme.palette.type === 'dark' ? '#5a8f69' : '#85b18b', + }, + title: { + fontSize: '16px', + fontWeight: 'bold', + paddingTop: '10px', + color: theme.palette.text.primary, + lineHeight: '18px', + letterSpacing: 0, + wordBreak: 'break-word', + }, + subtitle: { + fontSize: '14px', + fontWeight: 'bold', + color: theme.palette.text.primary, + lineHeight: '14px', + letterSpacing: 0, + }, + countdown: { + color: theme.palette.text.primary, + fontSize: '18px', + fontWeight: 'bold', + padding: '5px 0', + height: '37px', + }, + stakeBtn: { + margin: '8px 0', + padding: '5px 30px', + fontSize: '14px', + fontWeight: 'bold', + textTransform: 'capitalize', + borderRadius: '20px', + backgroundColor: primaryColor[0], + '& .MuiButton-label': { + color: 'white', + }, + }, + ribbon: { + position: 'absolute', + right: '0', + bottom: '0', + zIndex: 1, + overflow: 'hidden', + width: '85px', + height: '85px', + textAlign: 'right', + '& span': { + fontWeight: 'bold', + color: '#FFF', + textTransform: 'uppercase', + textAlign: 'center', + lineHeight: '20px', + transform: 'rotate(-45deg)', + width: '110px', + display: 'block', + position: 'absolute', + bottom: '22px', + right: '-23px', + }, + '& .soon': { + fontSize: '11px', + background: theme.palette.type === 'dark' ? '#1e67b4' : '#56a0ee', + }, + '& .closed': { + fontSize: '12px', + background: theme.palette.type === 'dark' ? '#5a8f69' : '#57ad82', + }, + }, + faq: { + marginTop: '30px', + '& .MuiPaper-root': { + background: 'none', + }, + '& .MuiAccordion-root': { + border: '1px solid ' + theme.palette.background.border, + borderRadius: '4px', + marginBottom: '4px', + }, + '& .MuiAccordion-root .MuiAccordionSummary-root': { + background: theme.palette.background.secondary, + }, + '& .MuiAccordionSummary-root .MuiTypography-root': { + fontWeight: 'bold', + }, + '& .MuiAccordion-root.Mui-expanded': { + margin: '0 0 4px 0', + }, + '& .MuiAccordionDetails-root': { + borderTop: '1px solid ' + theme.palette.background.border, + padding: '25px 15px', + }, + }, + + icon: { + color: theme.palette.text.primary, + marginLeft: '4px', + 'flex-shrink': 0, + width: '45px', + height: '45px', + '& .MuiAvatarGroup-avatar': { + border: 'none', + width: '65%', + height: '65%', + '&:first-child': { + position: 'absolute', + top: 0, + left: 0, + }, + '&:last-child': { + position: 'absolute', + bottom: 0, + right: 0, + }, + }, + }, +}); + +export default styles; diff --git a/src/features/stake/sections/styles/view.js b/src/features/stake/sections/styles/view.js new file mode 100644 index 000000000..51c50c3fd --- /dev/null +++ b/src/features/stake/sections/styles/view.js @@ -0,0 +1,254 @@ +import { primaryColor } from 'assets/jss/material-kit-pro-react'; + +const styles = theme => ({ + roundedBtn: { + margin: '0 10px', + padding: '5px 30px', + fontSize: '14px', + fontWeight: 'bold', + textTransform: 'capitalize', + borderRadius: '20px', + backgroundColor: primaryColor[0], + '& .MuiButton-label': { + color: 'white', + }, + }, + countdown: { + color: theme.palette.text.primary, + fontSize: '18px', + fontWeight: 'bold', + padding: 0, + textAlign: 'right', + margin: '0 10px', + }, + + mb: { + marginBottom: '24px', + }, + + row: { + position: 'relative', + textAlign: 'center', + padding: '20px 20px 0 20px', + marginBottom: '24px', + border: '1px solid ' + theme.palette.background.border, + borderRadius: '8px', + backgroundColor: theme.palette.background.primary, + '& .MuiAvatar-root': { + width: theme.spacing(7), + height: theme.spacing(7), + margin: '0 auto', + }, + '& > .MuiGrid-item': { + paddingBottom: '20px', + }, + }, + + retired: { + background: theme.palette.type === 'dark' ? '#614141' : '#d2c5c9', + }, + + title: { + textAlign: 'center', + fontSize: '16px', + fontWeight: 'bold', + color: theme.palette.text.primary, + display: 'block', + [theme.breakpoints.up('md')]: { + fontSize: '18px', + }, + [theme.breakpoints.up('lg')]: { + fontSize: '22px', + }, + '& .MuiSvgIcon-root': { + color: 'red', + }, + }, + + tokenTitle: { + textAlign: 'center', + fontSize: '14px', + fontWeight: 'bold', + color: theme.palette.text.primary, + display: 'block', + [theme.breakpoints.up('md')]: { + fontSize: '16px', + }, + [theme.breakpoints.up('lg')]: { + fontSize: '20px', + }, + }, + + subtitle: { + textAlign: 'center', + fontSize: '16px', + fontWeight: 'bold', + color: theme.palette.text.secondary, + display: 'block', + }, + + fire: { + width: '32px !important', + height: '32px !important', + margin: '0 !important', + }, + + actionBtn: { + margin: '12px 5px', + fontSize: '14px', + fontWeight: 'bold', + borderRadius: '5px', + minWidth: '185px', + backgroundColor: primaryColor[0], + '& .MuiButton-label': { + color: 'white', + textTransform: 'capitalize', + }, + }, + btnBoost: { + padding: '7px 30px', + }, + boosted: { + position: 'absolute', + top: 0, + left: 0, + padding: '3px 8px', + color: 'white', + fontWeight: 'bold', + fontSize: '13px', + borderTopLeftRadius: '8px', + background: theme.palette.type === 'dark' ? '#5a8f69' : '#85b18b', + }, + + partnerHeader: { + textAlign: 'center', + paddingBottom: '20px', + '& img': { + [theme.breakpoints.down('xs')]: { + width: '100%', + height: 'auto', + }, + }, + }, + + partnerBody: { + textAlign: 'centered', + color: theme.palette.text.primary, + background: theme.palette.type === 'dark' ? 'rgba(0, 0, 0, 0.1)' : 'rgba(255, 255, 255, 0.5)', + padding: '15px', + }, + + ribbon: { + position: 'absolute', + right: '0', + bottom: '0', + zIndex: 1, + overflow: 'hidden', + width: '90px', + height: '90px', + textAlign: 'right', + '& span': { + fontWeight: 'bold', + color: '#FFF', + textTransform: 'uppercase', + textAlign: 'center', + lineHeight: '20px', + transform: 'rotate(-45deg)', + width: '110px', + display: 'block', + position: 'absolute', + bottom: '22px', + right: '-23px', + }, + '& .soon': { + fontSize: '11px', + background: theme.palette.type === 'dark' ? '#1e67b4' : '#56a0ee', + }, + '& .closed': { + fontSize: '12px', + background: theme.palette.type === 'dark' ? '#5a8f69' : '#57ad82', + }, + }, + + modal: { + padding: '40px', + border: '1px solid ' + theme.palette.background.border, + borderRadius: '4px', + backgroundColor: theme.palette.background.primary, + }, + + h1: { + textAlign: 'center', + fontSize: '26px', + fontWeight: 'bold', + color: theme.palette.text.primary, + }, + + balance: { + textAlign: 'right', + fontSize: '16px', + fontWeight: 'bold', + cursor: 'pointer', + '&:hover': { + color: theme.palette.text.secondary, + textDecoration: 'underline', + }, + }, + + input: { + width: '100%', + }, + + modalbtns: { + textAlign: 'center', + marginTop: '24px', + }, + + boost: { + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + '& .MuiAvatar-root': { + height: '30px', + width: '30px', + }, + '& .MuiBox-root': { + lineHeight: 0, + }, + }, + boostImg: { + marginLeft: '10px', + height: '20px', + filter: + 'invert(100%) sepia(100%) saturate(0%) hue-rotate(288deg) brightness(1000%) contrast(1000%)', + }, + + divider: { + margin: '10px 0', + }, + + icon: { + color: theme.palette.text.primary, + marginLeft: '4px', + 'flex-shrink': 0, + width: '45px', + height: '45px', + '& .MuiAvatarGroup-avatar': { + border: 'none', + width: '65%', + height: '65%', + '&:first-child': { + position: 'absolute', + top: 0, + left: 0, + }, + '&:last-child': { + position: 'absolute', + bottom: 0, + right: 0, + }, + }, + }, +}); + +export { styles }; diff --git a/src/features/swap/ZapPage.js b/src/features/swap/ZapPage.js deleted file mode 100644 index dae44881d..000000000 --- a/src/features/swap/ZapPage.js +++ /dev/null @@ -1,12 +0,0 @@ -import React, { useEffect } from 'react'; -import ZapCommand from './sections/ZapCommand'; - -export default function ZapPage() { - useEffect(() => { - window.scrollTo(0, 0); - document.body.scrollTop = 0; - }, []); - return ( - - ); - } \ No newline at end of file diff --git a/src/features/swap/index.js b/src/features/swap/index.js deleted file mode 100644 index a54a62029..000000000 --- a/src/features/swap/index.js +++ /dev/null @@ -1 +0,0 @@ -export { default as ZapPage } from './ZapPage'; diff --git a/src/features/swap/jss/sections/zapCommandStyle.js b/src/features/swap/jss/sections/zapCommandStyle.js deleted file mode 100644 index 56b4bc153..000000000 --- a/src/features/swap/jss/sections/zapCommandStyle.js +++ /dev/null @@ -1,144 +0,0 @@ -import { - defaultFont, - } from "assets/jss/material-kit-pro-react.js"; - -const secondStyle = { - opacity: '0.4', - fontFamily: 'Helvetica', - fontSize: '14px', - color: '#FFFFFF', - letterSpacing: '0', - lineHeight: '14px', -}; - -const zapCommandStyle = theme => ({ - container:{ - width:'100%', - display:'flex', - justifyContent:'center', - }, - zapContainer:{ - width:'588px', - backgroundColor:'#2C3040', - borderRadius:'24px', - padding:'24px', - - }, - mainTitle:{ - fontFamily: 'Helvetica', - fontSize: '32px', - color: '#FFFFFF', - letterSpacing: '0', - lineHeight: '32px', - fontWeight: "550", - }, - secondTitle:{ - ...secondStyle, - fontWeight: "550", - }, - secondContent:{ - ...secondStyle, - }, - boxContainer:{ - padding:'15px', - border: '1px solid #353848', - borderRadius: '16px', - marginBottom:'24px', - }, - boxHeader:{ - display:'flex', - justifyContent:'space-between', - ...secondStyle, - }, - boxHeaderMain:{ - fontSize: '18px', - lineHeight: '18px', - fontWeight: "550", - }, - boxHeaderSub:{ - fontSize: '12px', - textAlign: 'right', - lineHeight: '18px', - fontWeight: "400", - }, - boxContainerInside:{ - borderRadius: '12px', - background: '#635AFF', - borderRadius: '24px', - }, - endAdornment:{ - display:'flex', - }, - memuStyle:{ - display:'flex', - alignItems:'center', - }, - subMemuStyle:{ - display:'flex', - justifyContent:'flex-start', - alignItems:'center', - }, - papperNav:{ - width:'100%', - }, - marginRight:{ - marginRight:'4px', - }, - receiveStyle:{ - display:'flex', - justifyContent:'space-between', - width:'100%', - height: '56px', - background: '#353848', - borderRadius: '12px', - fontWeight: '600', - fontSize: '18px', - color: '#FFFFFF', - lineHeight: '24px', - fontWeight: '600', - boxShadow:'0 2px 2px 0 #353848', - textAlign:'right', - padding:'18.5px 18px', - '&:hover,&:focus':{ - background: '#353848', - boxShadow:'0 2px 2px 0 #353848', - } - }, - navLink:{ - paddingLeft:'4px', - paddingRight:'4px', - }, - avatar:{ - width:'24px', - height:'24px', - lineHeight:'48px', - }, - avatarFont:{ - ...secondStyle, - opacity: '1', - fontSize: '16px', - textAlign: 'center', - lineHeight: '16px', - }, - maxButtonBox:{ - display:'flex', - alignItems:'center', - }, - maxButton:{ - ...secondStyle, - opacity: '1', - width:'48px', - height:'24px', - backgroundColor: '#635AFF', - borderRadius: '24px', - fontSize: '12px', - lineHeight: '12px', - padding:'12px 24px', - marginRight:'8px', - "&:hover,&:focus": { - backgroundColor: "#635AFF", - } - } -}) - -export default zapCommandStyle; \ No newline at end of file diff --git a/src/features/swap/redux/actions.js b/src/features/swap/redux/actions.js deleted file mode 100644 index 5d0d66122..000000000 --- a/src/features/swap/redux/actions.js +++ /dev/null @@ -1 +0,0 @@ -export { fetchBalances } from './fetchBalances'; \ No newline at end of file diff --git a/src/features/swap/redux/checkApproval.js b/src/features/swap/redux/checkApproval.js deleted file mode 100644 index 41fdc1209..000000000 --- a/src/features/swap/redux/checkApproval.js +++ /dev/null @@ -1,128 +0,0 @@ -import { useCallback } from 'react'; -import { erc20ABI } from "../../configure"; -import { useDispatch, useSelector, shallowEqual } from 'react-redux'; -import { - SWAP_CHECK_APPROVAL_BEGIN, - SWAP_CHECK_APPROVAL_SUCCESS, - SWAP_CHECK_APPROVAL_FAILURE, -} from './constants'; -import { fetchAllowance } from "../../web3"; -import async from 'async'; - -export function checkApproval() { - return (dispatch, getState) => { - // optionally you can have getState as the second argument - dispatch({ - type: SWAP_CHECK_APPROVAL_BEGIN, - }); - - // Return a promise so that you could control UI flow without states in the store. - // For example: after submit a form, you need to redirect the page to another when succeeds or show some errors message if fails. - // It's hard to use state to manage it, but returning a promise allows you to easily achieve it. - // e.g.: handleSubmit() { this.props.actions.submitForm(data).then(()=> {}).catch(() => {}); } - const promise = new Promise((resolve, reject) => { - // doRequest is a placeholder Promise. You should replace it with your own logic. - // args.error here is only for test coverage purpose. - const { home, swap } = getState(); - const { address, web3 } = home; - const { allowance } = swap; - - async.map(allowance, (token, callback) => { - const erc20Contract = new web3.eth.Contract(erc20ABI, token.address); - async.map(token.pools, (pool, callbackInner) => { - fetchAllowance({ - web3, - contractAddress: pool.address, - contract: erc20Contract, - address - }).then( - data => { - pool.allowance = data; - return callbackInner(null, pool) - } - ).catch( - error => { - // console.log(error) - return callbackInner(error, 0) - } - ) - }, (error, pools) => { - if (error) { - console.log(error) - } - token.pools = pools - callback(null, token); - }) - }, (error, allowance) => { - if(error) { - dispatch({ - type: SWAP_CHECK_APPROVAL_FAILURE, - }) - return reject(error.message || error) - } - dispatch({ - type: SWAP_CHECK_APPROVAL_SUCCESS, - data: allowance - }) - resolve() - }) - }); - - return promise; - } -} - - -export function useCheckApproval() { - // args: false value or array - // if array, means args passed to the action creator - const dispatch = useDispatch(); - - const { allowance, checkApprovalPending } = useSelector( - state => ({ - allowance: state.swap.allowance, - checkApprovalPending: state.swap.checkApprovalPending, - }), - shallowEqual, - ); - - const boundAction = useCallback( - () => dispatch(checkApproval()), - [dispatch], - ); - - return { - allowance, - checkApproval: boundAction, - checkApprovalPending - }; -} - -export function reducer(state, action) { - switch (action.type) { - case SWAP_CHECK_APPROVAL_BEGIN: - // Just after a request is sent - return { - ...state, - checkApprovalPending: true, - }; - - case SWAP_CHECK_APPROVAL_SUCCESS: - // The request is success - return { - ...state, - allowance: action.data, - checkApprovalPending: false, - }; - - case SWAP_CHECK_APPROVAL_FAILURE: - // The request is failed - return { - ...state, - checkApprovalPending: false, - }; - - default: - return state; - } -} \ No newline at end of file diff --git a/src/features/swap/redux/constants.js b/src/features/swap/redux/constants.js deleted file mode 100644 index 9140a4f1b..000000000 --- a/src/features/swap/redux/constants.js +++ /dev/null @@ -1,19 +0,0 @@ -// fetchBalances -export const SWAP_FETCH_BALANCES_BEGIN = 'SWAP_FETCH_BALANCES_BEGIN'; -export const SWAP_FETCH_BALANCES_SUCCESS = 'SWAP_FETCH_BALANCES_SUCCESS'; -export const SWAP_FETCH_BALANCES_FAILURE = 'SWAP_FETCH_BALANCES_FAILURE'; - -// checkApproval -export const SWAP_CHECK_APPROVAL_BEGIN = 'SWAP_CHECK_APPROVAL_BEGIN'; -export const SWAP_CHECK_APPROVAL_SUCCESS = 'SWAP_CHECK_APPROVAL_SUCCESS'; -export const SWAP_CHECK_APPROVAL_FAILURE = 'SWAP_CHECK_APPROVAL_FAILURE'; - -// fetchApproval -export const SWAP_FETCH_APPROVAL_BEGIN = 'SWAP_FETCH_APPROVAL_BEGIN'; -export const SWAP_FETCH_APPROVAL_SUCCESS = 'SWAP_FETCH_APPROVAL_SUCCESS'; -export const SWAP_FETCH_APPROVAL_FAILURE = 'SWAP_FETCH_APPROVAL_FAILURE'; - -// fetchZapOrSwap -export const SWAP_FETCH_ZAP_OR_SWAP_BEGIN = 'SWAP_FETCH_ZAP_OR_SWAP_BEGIN'; -export const SWAP_FETCH_ZAP_OR_SWAP_SUCCESS = 'SWAP_FETCH_ZAP_OR_SWAP_SUCCESS'; -export const SWAP_FETCH_ZAP_OR_SWAP_FAILURE = 'SWAP_FETCH_ZAP_OR_SWAP_FAILURE'; diff --git a/src/features/swap/redux/fetchApproval.js b/src/features/swap/redux/fetchApproval.js deleted file mode 100644 index ec3ae5734..000000000 --- a/src/features/swap/redux/fetchApproval.js +++ /dev/null @@ -1,118 +0,0 @@ -import { useCallback } from 'react'; -import { useDispatch, useSelector, shallowEqual } from 'react-redux'; -import { - SWAP_FETCH_APPROVAL_BEGIN, - SWAP_FETCH_APPROVAL_SUCCESS, - SWAP_FETCH_APPROVAL_FAILURE, -} from './constants'; -import { approval } from "../../web3"; - -export function fetchApproval(token, contract) { - return (dispatch, getState) => { - // optionally you can have getState as the second argument - dispatch({ type: SWAP_FETCH_APPROVAL_BEGIN }); - - // Return a promise so that you could control UI flow without states in the store. - // For example: after submit a form, you need to redirect the page to another when succeeds or show some errors message if fails. - // It's hard to use state to manage it, but returning a promise allows you to easily achieve it. - // e.g.: handleSubmit() { this.props.actions.submitForm(data).then(()=> {}).catch(() => {}); } - const promise = new Promise((resolve, reject) => { - // doRequest is a placeholder Promise. You should replace it with your own logic. - // See the real-word example at: https://github.com/supnate/rekit/blob/master/src/features/vault/redux/fetchRedditReactjsList.js - // args.error here is only for test coverage purpose. - const { home, swap } = getState(); - const { address, web3 } = home; - const { allowance } = swap; - const item = allowance.filter(item => { return item.name === token })[0] - console.log(item) - const tokenAddress = item.address - const contractAddress = item.pools.filter(item => { return item.name === contract })[0].address - console.log(tokenAddress) - console.log(contractAddress) - approval({ - web3, - address, - tokenAddress, - contractAddress, - dispatch - }).then( - () => { - const newAllowance = allowance.map(item => { - if (item.name === token) { - item.pools = item.pools.map(pool => { - if(pool.name === contract) { - pool.allowance = 79228162514 - } - return pool; - }) - } - return item - }); - dispatch({ - type: SWAP_FETCH_APPROVAL_SUCCESS, - data: newAllowance - }) - resolve(); - } - ).catch( - error => { - dispatch({ - type: SWAP_FETCH_APPROVAL_FAILURE, - }) - reject(error.message || error); - } - ) - }); - - return promise; - }; -} - -export function useFetchApproval() { - // args: false value or array - // if array, means args passed to the action creator - const dispatch = useDispatch(); - - const { fetchApprovalPending } = useSelector( - state => ({ - fetchApprovalPending: state.swap.fetchApprovalPending, - }), - shallowEqual, - ); - - const boundAction = useCallback((token, contract) => dispatch(fetchApproval(token, contract)), [dispatch]); - - return { - fetchApproval: boundAction, - fetchApprovalPending, - }; -} - -export function reducer(state, action) { - switch (action.type) { - case SWAP_FETCH_APPROVAL_BEGIN: - // Just after a request is sent - return { - ...state, - fetchApprovalPending: true, - }; - - case SWAP_FETCH_APPROVAL_SUCCESS: - // The request is success - return { - ...state, - allowance: action.data, - fetchApprovalPending: false - }; - - case SWAP_FETCH_APPROVAL_FAILURE: - // The request is failed - return { - ...state, - fetchApprovalPending: false - }; - - default: - return state; - } -} \ No newline at end of file diff --git a/src/features/swap/redux/fetchBalances.js b/src/features/swap/redux/fetchBalances.js deleted file mode 100644 index a4943bb28..000000000 --- a/src/features/swap/redux/fetchBalances.js +++ /dev/null @@ -1,114 +0,0 @@ -import { useCallback } from 'react'; -import { useDispatch, useSelector, shallowEqual } from 'react-redux'; -import { - SWAP_FETCH_BALANCES_BEGIN, - SWAP_FETCH_BALANCES_SUCCESS, - SWAP_FETCH_BALANCES_FAILURE, -} from './constants'; -import { fetchBalance } from "../../web3"; -import async from 'async'; - -export function fetchBalances(data) { - return (dispatch, getState) => { - // optionally you can have getState as the second argument - dispatch({ - type: SWAP_FETCH_BALANCES_BEGIN, - }); - - // Return a promise so that you could control UI flow without states in the store. - // For example: after submit a form, you need to redirect the page to another when succeeds or show some errors message if fails. - // It's hard to use state to manage it, but returning a promise allows you to easily achieve it. - // e.g.: handleSubmit() { this.props.actions.submitForm(data).then(()=> {}).catch(() => {}); } - const promise = new Promise((resolve, reject) => { - // doRequest is a placeholder Promise. You should replace it with your own logic. - // See the real-word example at: https://github.com/supnate/rekit/blob/master/src/features/vault/redux/fetchRedditReactjsList.js - // args.error here is only for test coverage purpose. - const { home, swap } = getState(); - const { address, web3 } = home; - const { tokens } = swap - - async.map(tokens, (token, callback) => { - fetchBalance({ - web3, - address, - tokenAddress: token.address - }).then( - data => { - token.balance = data - return callback(null, token) - } - ).catch( - error => { - return callback(error.message || error) - } - ) - }, (error, callBackTokens) => { - if(error) { - console.log(error) - dispatch({ - type: SWAP_FETCH_BALANCES_FAILURE, - }) - return reject(error.message || error) - } - dispatch({ - type: SWAP_FETCH_BALANCES_SUCCESS, - data: callBackTokens, - }) - resolve() - }) - }); - - return promise; - }; -} - -export function useFetchBalances() { - // args: false value or array - // if array, means args passed to the action creator - const dispatch = useDispatch(); - - const { tokens, fetchBalancesPending } = useSelector( - state => ({ - tokens: state.swap.tokens, - fetchBalancesPending: state.swap.fetchBalancesPending, - }), - shallowEqual, - ); - - const boundAction = useCallback(() => dispatch(fetchBalances()), [dispatch]); - - return { - tokens, - fetchBalances: boundAction, - fetchBalancesPending, - }; -} - -export function reducer(state, action) { - switch (action.type) { - case SWAP_FETCH_BALANCES_BEGIN: - // Just after a request is sent - return { - ...state, - fetchBalancesPending: true, - }; - - case SWAP_FETCH_BALANCES_SUCCESS: - // The request is success - return { - ...state, - tokens: action.data, - fetchBalancesPending: false, - }; - - case SWAP_FETCH_BALANCES_FAILURE: - // The request is failed - return { - ...state, - fetchBalancesPending: false, - }; - - default: - return state; - } -} \ No newline at end of file diff --git a/src/features/swap/redux/fetchZapOrSwap.js b/src/features/swap/redux/fetchZapOrSwap.js deleted file mode 100644 index 23da31cd7..000000000 --- a/src/features/swap/redux/fetchZapOrSwap.js +++ /dev/null @@ -1,105 +0,0 @@ -import { useCallback } from 'react'; -import { useDispatch, useSelector, shallowEqual } from 'react-redux'; -import { - SWAP_FETCH_ZAP_OR_SWAP_BEGIN, - SWAP_FETCH_ZAP_OR_SWAP_SUCCESS, - SWAP_FETCH_ZAP_OR_SWAP_FAILURE, -} from './constants'; -import { zapOrSwap } from "../../web3"; - -export function fetchZapOrSwap(token, receiveToken, amount) { - return (dispatch, getState) => { - // optionally you can have getState as the second argument - dispatch({ type: SWAP_FETCH_ZAP_OR_SWAP_BEGIN }); - - // Return a promise so that you could control UI flow without states in the store. - // For example: after submit a form, you need to redirect the page to another when succeeds or show some errors message if fails. - // It's hard to use state to manage it, but returning a promise allows you to easily achieve it. - // e.g.: handleSubmit() { this.props.actions.submitForm(data).then(()=> {}).catch(() => {}); } - const promise = new Promise((resolve, reject) => { - // doRequest is a placeholder Promise. You should replace it with your own logic. - // See the real-word example at: https://github.com/supnate/rekit/blob/master/src/features/vault/redux/fetchRedditReactjsList.js - // args.error here is only for test coverage purpose. - const { home, swap } = getState(); - const { address, web3 } = home; - const { tokens } = swap; - const item = tokens.filter(item => { return item.name === token })[0] - console.log(item) - const { abi, address: contractAddress, call} = item.pools.filter(item => { return item.name === receiveToken })[0].contract - - console.log(contractAddress) - - const contract = new web3.eth.Contract(abi, contractAddress); - zapOrSwap({ - web3, - address, - contract, - call, - amount, - zapOrSwap - }).then( - () => { - dispatch({ type: SWAP_FETCH_ZAP_OR_SWAP_SUCCESS }) - resolve(); - } - ).catch( - error => { - dispatch({ - type: SWAP_FETCH_ZAP_OR_SWAP_FAILURE, - }) - reject(error.message || error); - } - ) - }); - - return promise; - }; -} - -export function useFetchZapOrSwap() { - // args: false value or array - // if array, means args passed to the action creator - const dispatch = useDispatch(); - - const { fetchZapOrSwapPending } = useSelector( - state => ({ - fetchZapOrSwapPending: state.swap.fetchZapOrSwapPending, - }), - shallowEqual, - ); - - const boundAction = useCallback((token, receiveToken, amount) => dispatch(fetchZapOrSwap(token, receiveToken, amount)), [dispatch]); - - return { - fetchZapOrSwap: boundAction, - fetchZapOrSwapPending, - }; -} - -export function reducer(state, action) { - switch (action.type) { - case SWAP_FETCH_ZAP_OR_SWAP_BEGIN: - // Just after a request is sent - return { - ...state, - fetchZapOrSwapPending: true, - }; - - case SWAP_FETCH_ZAP_OR_SWAP_SUCCESS: - // The request is success - return { - ...state, - fetchZapOrSwapPending: false - }; - - case SWAP_FETCH_ZAP_OR_SWAP_FAILURE: - // The request is failed - return { - ...state, - fetchZapOrSwapPending: false - }; - - default: - return state; - } -} \ No newline at end of file diff --git a/src/features/swap/redux/hooks.js b/src/features/swap/redux/hooks.js deleted file mode 100644 index cdf9fad28..000000000 --- a/src/features/swap/redux/hooks.js +++ /dev/null @@ -1,4 +0,0 @@ -export { useFetchBalances } from './fetchBalances'; -export { useCheckApproval } from './checkApproval'; -export { useFetchApproval } from './fetchApproval'; -export { useFetchZapOrSwap } from './fetchZapOrSwap'; diff --git a/src/features/swap/redux/initialState.js b/src/features/swap/redux/initialState.js deleted file mode 100644 index ccffd8eda..000000000 --- a/src/features/swap/redux/initialState.js +++ /dev/null @@ -1,395 +0,0 @@ -import { yCurveZapABI, yCurveZapOutABI, yCurveZapV4ABI, yCurveZapOutV4ABI, yCurveZapSwapABI, yCurveZapSwapV4ABI } from "../../configure"; - -const yCurveZapAddress = '0xb227ea4F19257B838d34d7d390E209A83e590D71' -const yCurveZapOutAddress = '0xF2fF83844ffBa41b4Ebbf31296f9bb638107364B' -const yCurveZapV4Address = '0xFdedC6e02108B4cb53BbeAC4E041Dec94334C29e' -const yCurveZapOutV4Address = '0xDf09EFbEfC94d360e1D232Ad5b2d8Ed66c6A9642' -const yCurveZapSwapAddress = '0x53f05A51cF87AC0AFFc67a52D8110fFe824580AD' -const yCurveZapSwapV4Address = '0x500B508C847492E549842438DB4Cfc5666b8B7D4' - - -const allowance = [ - { - name: 'BUSD', - address: '0x4fabb145d64652a948d72533023f6e7a623c7c53', - pools: [{ - name: 'yCurveZapV4Address', - address: yCurveZapV4Address, - allowance: 0, - }] - }, - { - name: 'DAI', - address: '0x6b175474e89094c44da98b954eedeac495271d0f', - pools: [{ - name: 'yCurveZapAddress', - address: yCurveZapAddress, - allowance: 0, - },{ - name: 'yCurveZapV4Address', - address: yCurveZapV4Address, - allowance: 0, - }] - }, - { - name: 'USDC', - address: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', - pools: [{ - name: 'yCurveZapAddress', - address: yCurveZapAddress, - allowance: 0, - },{ - name: 'yCurveZapV4Address', - address: yCurveZapV4Address, - allowance: 0, - }] - }, - { - name: 'USDT', - address: '0xdAC17F958D2ee523a2206206994597C13D831ec7', - pools: [{ - name: 'yCurveZapAddress', - address: yCurveZapAddress, - allowance: 0, - },{ - name: 'yCurveZapV4Address', - address: yCurveZapV4Address, - allowance: 0, - }] - }, - { - name: 'TUSD', - address: '0x0000000000085d4780B73119b644AE5ecd22b376', - pools: [{ - name: 'yCurveZapAddress', - address: yCurveZapAddress, - allowance: 0, - }] - }, - { - name: 'compound.curve.fi', - address: '0x3740fb63ab7a09891d7c0d4299442a551d06f5fd', - pools: [{ - name: 'yCurveZapSwapAddress', - address: yCurveZapSwapAddress, - allowance: 0, - }] - }, - { - name: 'usdt.curve.fi', - address: '0x9fc689ccada600b6df723d9e47d84d76664a1f23', - pools: [{ - name: 'yCurveZapSwapAddress', - address: yCurveZapSwapAddress, - allowance: 0, - }] - }, - { - name: 'y.curve.fi', - address: '0xdf5e0e81dff6faf3a7e52ba697820c5e32d806a8', - pools: [{ - name: 'yCurveZapOutAddress', - address: yCurveZapOutAddress, - allowance: 0, - },{ - name: 'yCurveZapSwapV4Address', - address: yCurveZapSwapV4Address, - allowance: 0, - }] - }, - { - name: 'busd.curve.fi', - address: '0x3B3Ac5386837Dc563660FB6a0937DFAa5924333B', - pools: [{ - name: 'yCurveZapSwapV4Address', - address: yCurveZapSwapV4Address, - allowance: 0, - }] - } -] - -const tokens = [ - { - name: 'BUSD', - description: 'Binance USD', - address: '0x4fabb145d64652a948d72533023f6e7a623c7c53', - decimals: 18, - balance: 0, - receivableList:[ - { - name: 'busd.curve.fi', - type: 'zap', - contract: { - name: 'yCurveZapV4Address', - address: yCurveZapV4Address, - abi: yCurveZapV4ABI, - call: 'depositBUSD' - }, - } - ] - }, - { - name: 'DAI', - description: 'DAI Stablecoin', - address: '0x6b175474e89094c44da98b954eedeac495271d0f', - decimals: 18, - balance: 0, - receivableList:[ - { - name: 'y.curve.fi', - type: 'zap', - contract: { - name: 'yCurveZapAddress', - address: yCurveZapAddress, - abi: yCurveZapABI, - call: "depositDAI" - } - }, - { - name: 'busd.curve.fi', - type: 'zap', - contract: { - name: 'yCurveZapV4Address', - address: yCurveZapV4Address, - abi: yCurveZapV4ABI, - call: "depositDAI" - } - } - ] - }, - { - name: 'USDC', - description: 'USD//C', - address: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', - decimals: 6, - balance: 0, - receivableList:[ - { - name: 'y.curve.fi', - type: 'zap', - contract: { - name: 'yCurveZapAddress', - address: yCurveZapAddress, - abi: yCurveZapABI, - call: "depositUSDC" - } - }, - { - name: 'busd.curve.fi', - type: 'zap', - contract: { - name: 'yCurveZapV4Address', - address: yCurveZapV4Address, - abi: yCurveZapV4ABI, - call: "depositUSDC" - } - } - ] - }, - { - name: 'USDT', - description: 'Tether USD', - address: '0xdAC17F958D2ee523a2206206994597C13D831ec7', - decimals: 6, - balance: 0, - receivableList:[ - { - name: 'y.curve.fi', - type: 'zap', - contract: { - name: 'yCurveZapAddress', - address: yCurveZapAddress, - abi: yCurveZapABI, - call: "depositUSDT" - } - }, - { - name: 'busd.curve.fi', - type: 'zap', - contract: { - name: 'yCurveZapV4Address', - address: yCurveZapV4Address, - abi: yCurveZapV4ABI, - call: "depositUSDT" - } - } - ] - }, - { - name: 'TUSD', - description: 'TrueUSD', - address: '0x0000000000085d4780B73119b644AE5ecd22b376', - decimals: 18, - balance: 0, - receivableList:[ - { - name: 'y.curve.fi', - type: 'zap', - contract: { - name: 'yCurveZapAddress', - address: yCurveZapAddress, - abi: yCurveZapABI, - call: "depositTUSD" - } - } - ] - }, - { - name: 'compound.curve.fi', - description: 'compound.curve.fi', - address: '0x3740fb63ab7a09891d7c0d4299442a551d06f5fd', - decimals: 18, - balance: 0, - receivableList:[ - { - name: 'y.curve.fi', - type: 'swap', - contract: { - name: 'yCurveZapSwapAddress', - address: yCurveZapSwapAddress, - abi: yCurveZapSwapABI, - call: "swapv1tov3" - } - } - ] - }, - { - name: 'usdt.curve.fi', - description: 'usdt.curve.fi', - address: '0x9fc689ccada600b6df723d9e47d84d76664a1f23', - decimals: 18, - balance: 0, - receivableList:[ - { - name: 'y.curve.fi', - type: 'swap', - contract: { - name: 'yCurveZapSwapAddress', - address: yCurveZapSwapAddress, - abi: yCurveZapSwapABI, - call: "swapv2tov3" - } - } - ] - }, - { - name: 'y.curve.fi', - description: 'y.curve.fi', - address: '0xdf5e0e81dff6faf3a7e52ba697820c5e32d806a8', - decimals: 18, - balance: 0, - receivableList:[ - { - name: 'DAI', - type: 'zap', - contract: { - name: 'yCurveZapOutAddress', - address: yCurveZapOutAddress, - abi: yCurveZapOutABI, - call: "withdrawDAI" - } - }, - { - name: 'USDC', - type: 'zap', - contract: { - name: 'yCurveZapOutAddress', - address: yCurveZapOutAddress, - abi: yCurveZapOutABI, - call: "withdrawUSDC" - } - }, - { - name: 'USDT', - type: 'zap', - contract: { - name: 'yCurveZapOutAddress', - address: yCurveZapOutAddress, - abi: yCurveZapOutABI, - call: "withdrawUSDT" - } - }, - { - name: 'TUSD', - type: 'zap', - contract: { - name: 'yCurveZapOutAddress', - address: yCurveZapOutAddress, - abi: yCurveZapOutABI, - call: "withdrawTUSD" - } - }, - { - name: 'busd.curve.fi', - type: 'swap', - contract: { - name: 'yCurveZapSwapV4Address', - address: yCurveZapSwapV4Address, - abi: yCurveZapSwapV4ABI, - call: "swapv3tov4" - }, - needTUSD: true - } - ] - }, - { - name: 'busd.curve.fi', - description: 'busd.curve.fi', - address: '0x3B3Ac5386837Dc563660FB6a0937DFAa5924333B', - decimals: 18, - balance: 0, - receivableList:[ - { - name: 'BUSD', - type: 'zap', - contract: { - name: 'yCurveZapOutV4Address', - address: yCurveZapOutV4Address, - abi: yCurveZapOutV4ABI, - call: "withdrawBUSD" - } - }, - { - name: 'DAI', - type: 'zap', - contract: { - name: 'yCurveZapOutV4Address', - address: yCurveZapOutV4Address, - abi: yCurveZapOutV4ABI, - call: "withdrawDAI" - } - }, - { - name: 'USDC', - type: 'zap', - contract: { - name: 'yCurveZapOutV4Address', - address: yCurveZapOutV4Address, - abi: yCurveZapOutV4ABI, - call: "withdrawUSDC" - } - }, - { - name: 'USDT', - type: 'zap', - contract: { - name: 'yCurveZapOutV4Address', - address: yCurveZapOutV4Address, - abi: yCurveZapOutV4ABI, - call: "withdrawUSDT" - } - } - ] - } -] - -const initialState = { - allowance, - tokens, - fetchBalancesPending: false, - checkApprovalPending: false, - fetchApprovalPending: false, - fetchZapOrSwapPending: false -}; - -export default initialState; \ No newline at end of file diff --git a/src/features/swap/redux/reducer.js b/src/features/swap/redux/reducer.js deleted file mode 100644 index e9434ff5a..000000000 --- a/src/features/swap/redux/reducer.js +++ /dev/null @@ -1,25 +0,0 @@ -import initialState from './initialState'; -import { reducer as checkApprovalReducer} from './checkApproval'; -import { reducer as fetchBalancesReducer } from './fetchBalances'; -import { reducer as fetchApprovalReducer } from './fetchApproval'; -import { reducer as fetchZapOrSwapReducer } from './fetchZapOrSwap'; - -const reducers = [ - fetchBalancesReducer, - fetchApprovalReducer, - fetchZapOrSwapReducer, - checkApprovalReducer -]; - - -export default function reducer(state = initialState, action) { - let newState; - switch (action.type) { - // Handle cross-topic actions here - default: - newState = state; - break; - } - /* istanbul ignore next */ - return reducers.reduce((s, r) => r(s, action), newState); -} \ No newline at end of file diff --git a/src/features/swap/route.js b/src/features/swap/route.js deleted file mode 100644 index 1e6ccc0e1..000000000 --- a/src/features/swap/route.js +++ /dev/null @@ -1,8 +0,0 @@ -import { ZapPage } from '.'; - -export default { - path: 'zap', - childRoutes: [ - { path: 'zap', component: ZapPage, isIndex: true }, - ], -}; diff --git a/src/features/swap/sections/ZapCommand.js b/src/features/swap/sections/ZapCommand.js deleted file mode 100644 index 59dfca9ed..000000000 --- a/src/features/swap/sections/ZapCommand.js +++ /dev/null @@ -1,277 +0,0 @@ -import React, { useState, useEffect } from 'react'; -import BigNumber from "bignumber.js"; -import classNames from "classnames"; -import { useTranslation } from 'react-i18next'; -import { useConnectWallet } from '../../home/redux/hooks'; -import { useFetchBalances, useCheckApproval, useFetchApproval, useFetchZapOrSwap } from '../redux/hooks'; -import GridContainer from "components/Grid/GridContainer.js"; -import GridItem from "components/Grid/GridItem.js"; -import Card from "components/Card/Card.js"; -import { makeStyles } from "@material-ui/core/styles"; -import CustomSlider from 'components/CustomSlider/CustomSlider'; -import FormControl from '@material-ui/core/FormControl'; -import CustomOutlinedInput from 'components/CustomOutlinedInput/CustomOutlinedInput'; -import CustomButtons from "components/CustomButtons/Button.js"; -import Button from '@material-ui/core/Button'; -import zapCommandStyle from "../jss/sections/zapCommandStyle"; -import Avatar from '@material-ui/core/Avatar'; -import {byDecimals,calculateReallyNum} from 'features/helpers/bignumber'; -import { inputLimitPass,inputFinalVal } from 'features/helpers/utils'; -import CustomDropdown from "components/CustomDropdown/CustomDropdown.js"; - -const useStyles = makeStyles(zapCommandStyle); - -export default function ZapCommand() { - const classes = useStyles(); - const { t, i18n } = useTranslation(); - const { web3, address } = useConnectWallet(); - const { tokens, fetchBalances } = useFetchBalances(); - const { allowance, checkApproval } = useCheckApproval(); - const { fetchApproval,fetchApprovalPending } = useFetchApproval(); - const { fetchZapOrSwap } = useFetchZapOrSwap(); - const [ isApproval, setIsApproval ] = useState(false); - const [showIndex,setShowIndex] = useState(0); - const [ subInfo, setSubInfo] = useState({}); - - useEffect(() => { - if (address && web3) { - checkApproval(); - fetchBalances(); - } - }, [address, web3, fetchBalances]); - - useEffect(() => { - if(!Boolean(showIndex && subInfo.contract)) return; - const item = allowance.filter(item => { return item.name === tokens[showIndex].name })[0] - console.log(item) - const pool = item.pools.filter(item => { return item.name === subInfo.contract.name })[0] - setIsApproval(!Boolean(pool.allowance==0)) - }, [tokens, showIndex, address, subInfo.contract]); - - const onFetchApproval = () => { - console.log(Boolean(subInfo.contract)?'1':'2') - console.log(Boolean(tokens[showIndex].name && subInfo.contract)?'1':'2') - console.log(!Boolean(tokens[showIndex].name && subInfo.contract)?'1':'2') - console.log(subInfo) - fetchApproval(tokens[showIndex].name, subInfo.contract.name) - } - - const onFetchZapOrSwap = () => { - fetchZapOrSwap(tokens[showIndex].name, subInfo.name, new BigNumber(sendJson.num).multipliedBy(new BigNumber(10).exponentiatedBy(tokens[showIndex].decimals)).toString(10)) - } - - const handleMainDropdownClick = (event) => { - setShowIndex(event.key); - setSendJson({'num':0,'slider':0}); - if(!tokens[event.key].receivableList.find((item)=>{return item.name==subInfo.name})){ - setSubInfo({}); - } - }; - let mainDropdownList = []; - tokens.map((item,index)=>{ - mainDropdownList.push( -
- - {item.name} -
- ); - return true; - }); - - const handleSubDropdownClick = (event) => { - let targetInfo = tokens[showIndex].receivableList.find((item)=>{return item.name==event.key}) - if(targetInfo){ - setSubInfo(targetInfo); - }else{ - setSubInfo({}); - } - }; - - const singleSubDropDownNode = (item) => { - return ( -
- - {item.name} - { - item.needTUSD && ( -
- + - - TUSD -
- ) - } -
- ) - } - let subDropdownList = []; - tokens[showIndex].receivableList.map((item)=>{ - subDropdownList.push(singleSubDropDownNode(item)) - }) - - const [sendJson,setSendJson] = useState({'num':0,'slider':0}); - const changeMainInput = (total,tokenDecimals,event)=>{ - event.stopPropagation(); - let value = event.target.value; - if(!inputLimitPass(value,tokenDecimals)){ - return; - } - let sliderNum = 0; - let inputVal = Number(value.replace(',','')); - if(value){ - sliderNum = byDecimals(inputVal/total,0).toFormat(2) * 100; - } - setSendJson({ - 'num':inputFinalVal(value,total,tokenDecimals), - 'slider': sliderNum, - }) - } - - const changeSliderVal = (total,event,sliderNum) => { - event.stopPropagation(); - setSendJson({ - 'num': sliderNum == 0 ? 0: calculateReallyNum(total,sliderNum), - 'slider': sliderNum, - }) - } - - let buttonTxt = 'Trade'; - if(subInfo.type){ - buttonTxt = subInfo.type - } - let balanceTotal = byDecimals(tokens[showIndex].balance,tokens[showIndex].decimals); - return ( -
-
-
{t('Swap-Header')}
-

{t('Swap-Title')}

-
-
-
{t('Swap-Send')}
-
{`${t('Swap-Balance')}: ${balanceTotal.toFormat(tokens[showIndex].decimals)} ${tokens[showIndex].name}`}
-
- - -
- { - setSendJson({'num':balanceTotal.toFormat(tokens[showIndex].decimals),'slider':100}) - }} - className={classes.maxButton}> - {t('Swap-Max')} - -
- - - {tokens[showIndex].name} -
- } - buttonProps={{ - className: classes.navLink, - color: "transparent", - - }} - onClick={handleMainDropdownClick} - dropdownList={mainDropdownList} - /> -
- } - /> - - - - -
-
-
-
{t('Swap-Receive')}
- {/*
Current Price: 1 ETH = 339.5905 USDT
*/} -
- - {return item.name==subInfo.name}) && - singleSubDropDownNode(subInfo) - } - buttonProps={{ - className: classes.receiveStyle, - }} - onClick={handleSubDropdownClick} - dropdownList={subDropdownList} - /> - -
- -
-
- ) -} \ No newline at end of file diff --git a/src/features/vault/VaultPage.js b/src/features/vault/VaultPage.js index bae45b079..8b825a91f 100644 --- a/src/features/vault/VaultPage.js +++ b/src/features/vault/VaultPage.js @@ -1,22 +1,17 @@ -import React, { useEffect } from 'react'; -// @material-ui/core components -// @material-ui/icons -// import Close from "@material-ui/icons/Close"; -// core components -// sections for this page -import SectionTitle from './sections/SectionTitle'; -import SectionPools from './sections/SectionPools'; -// hooks +import React from 'react'; +import { useParams } from 'react-router'; -export default function VaultPage() { - useEffect(() => { - window.scrollTo(0, 0); - document.body.scrollTop = 0; - }, []); +import Disclaimer from 'components/Disclaimer/Disclaimer'; +import PoolDetails from './components/PoolDetails/PoolDetails'; +import ScrollToTop from './components/ScrollToTop/ScrollToTop'; + +export default function VaultDetailsPage() { + const { vaultId } = useParams(); return ( <> - - + + + ); -} \ No newline at end of file +} diff --git a/src/features/vault/components/Filters/Filters.js b/src/features/vault/components/Filters/Filters.js new file mode 100644 index 000000000..530ac8dd8 --- /dev/null +++ b/src/features/vault/components/Filters/Filters.js @@ -0,0 +1,250 @@ +import React, { memo, useCallback, useEffect, useMemo } from 'react'; +import Select from '@material-ui/core/Select'; +import MenuItem from '@material-ui/core/MenuItem'; +import { makeStyles } from '@material-ui/core/styles'; +import { useTranslation } from 'react-i18next'; +import Grid from '@material-ui/core/Grid'; +import FormControlLabel from '@material-ui/core/FormControlLabel'; +import FormControl from '@material-ui/core/FormControl'; +import Checkbox from '@material-ui/core/Checkbox'; +import InputLabel from '@material-ui/core/InputLabel'; +import Autocomplete from '@material-ui/lab/Autocomplete'; +import TextField from '@material-ui/core/TextField'; +import { Avatar, Box, Button } from '@material-ui/core'; + +import styles from './styles'; +import { assets, platforms } from './constants'; + +const useStyles = makeStyles(styles); + +const Filters = ({ + toggleFilter, + filters, + platform, + vaultType, + asset, + order, + setPlatform, + setVaultType, + setAsset, + setOrder, +}) => { + const { t } = useTranslation(); + const classes = useStyles(); + + const handlePlatformChange = useCallback(event => setPlatform(event.target.value), [setPlatform]); + const handleVaultTypeChange = useCallback( + event => setVaultType(event.target.value), + [setVaultType] + ); + const handleAssetChange = useCallback((_event, option) => setAsset(option.value), [setAsset]); + const handleOrderChange = useCallback(event => setOrder(event.target.value), [setOrder]); + + const allAssetOptions = useMemo(() => { + return [ + { + value: 'All', + label: t('Filters-All'), + }, + ...assets.map(asset => ({ + value: asset, + label: asset, + })), + ]; + }, [t]); + + const resetFilter = useCallback(() => { + toggleFilter('resetAll'); + setPlatform('All'); + setVaultType('All'); + setAsset('All'); + setOrder('default'); + }, [toggleFilter, setPlatform, setVaultType, setAsset, setOrder]); + + useEffect(() => { + if ((!asset || !allAssetOptions.find(option => option.value === asset)) && asset !== 'All') { + setAsset('All'); + } + }, [allAssetOptions, asset, setAsset]); + + useEffect(() => { + if ((!platform || !platforms.includes(platform)) && platform !== 'All') { + setPlatform('All'); + } + }, [platform, setPlatform]); + + return ( + + + + + toggleFilter('hideZeroBalances')} + color="primary" + /> + } + // TODO: translate labels + label={t('Hide-Zero-Balances')} + /> + + + + + + toggleFilter('hideDecomissioned')} + color="primary" + /> + } + // TODO: translate labels + label={t('Retired-Vaults')} + /> + + + + + + toggleFilter('hideZeroVaultBalances')} + color="primary" + /> + } + // TODO: translate labels + label={t('Hide-Zero-Vault-Balances')} + /> + + + + + + toggleFilter('showBoosted')} + color="primary" + /> + } + label={ + + {t('Boost')} + + + } + /> + + + + + + + {t('Filters-Platform')} + + + + + + + + + {t('Filters-Vault-Type')} + + + + + + + + option.value === asset)} + onChange={handleAssetChange} + className={classes.selector} + id="select-asset" + options={allAssetOptions} + getOptionLabel={option => option.label} + renderInput={params => ( + + )} + disableClearable + /> + + + + + + + {t('Filters-Sort')} + + + + + + ); +}; + +export default memo(Filters); diff --git a/src/features/vault/components/Filters/constants.js b/src/features/vault/components/Filters/constants.js new file mode 100644 index 000000000..6e5b0355b --- /dev/null +++ b/src/features/vault/components/Filters/constants.js @@ -0,0 +1,15 @@ +import { getNetworkPools, getNetworkStables } from '../../../helpers/getNetworkData'; + +const unique = key => [ + ...new Set( + getNetworkPools() + .map(pool => pool[key]) + .flat() + .filter(data => data !== undefined) + .sort() + ), +]; + +export const assets = unique('assets'); +export const platforms = unique('platform'); +export const stables = getNetworkStables(); diff --git a/src/features/vault/components/Filters/styles.js b/src/features/vault/components/Filters/styles.js new file mode 100644 index 000000000..72ba80f79 --- /dev/null +++ b/src/features/vault/components/Filters/styles.js @@ -0,0 +1,54 @@ +const styles = theme => ({ + container: { + padding: '24px', + margin: '8px 0 2rem', + border: '1px solid ' + theme.palette.background.border, + backgroundColor: theme.palette.background.primary, + justifyContent: 'space-between', + position: 'relative', + }, + + selectorContainer: { + width: '100%', + }, + + selectorLabel: { + color: theme.palette.text.secondary, + marginBottom: '10px', + }, + + selector: { + padding: '0', + margin: '0', + }, + + label: { + color: theme.palette.text.primary, + '& .MuiTypography-root': { + fontSize: '14px', + }, + }, + boost: { + color: '#5a8f69', + fontWeight: 'bold', + '& .MuiAvatar-root': { + position: 'absolute', + top: 0, + right: '-20px', + }, + }, + reset: { + border: '1px solid ' + theme.palette.background.border, + padding: '4px 8px', + position: 'absolute', + top: '5px', + right: '5px', + backgroundColor: theme.palette.background.default, + '& .MuiButton-label': { + fontWeight: 'bold', + textTransform: 'capitalize', + }, + }, +}); + +export default styles; diff --git a/src/features/vault/components/Pool/Pool.js b/src/features/vault/components/Pool/Pool.js new file mode 100644 index 000000000..749abe8f1 --- /dev/null +++ b/src/features/vault/components/Pool/Pool.js @@ -0,0 +1,85 @@ +import React, { memo, useCallback, useEffect, useState } from 'react'; +import Accordion from '@material-ui/core/Accordion'; +import Divider from '@material-ui/core/Divider'; +import Grid from '@material-ui/core/Grid'; +import { makeStyles } from '@material-ui/core/styles'; +import BigNumber from 'bignumber.js'; + +import { byDecimals } from 'features/helpers/bignumber'; +import PoolSummary from '../PoolSummary/PoolSummary'; +import styles from './styles'; +import { useSelector } from 'react-redux'; +import PoolActions from '../PoolActions/PoolActions'; +import AccordionDetails from '@material-ui/core/AccordionActions'; +import { useLaunchpoolSubscriptions } from '../../../stake/redux/hooks'; +import { launchpools } from '../../../helpers/getNetworkData'; + +const useStyles = makeStyles(styles); + +const Pool = ({ + pool, + index, + tokens, + apy, + fetchBalancesDone, + fetchApysDone, + fetchVaultsDataDone, +}) => { + const classes = useStyles(); + + const [isOpen, setIsOpen] = useState(false); + const toggleCard = useCallback(() => setIsOpen(!isOpen), [isOpen]); + const { subscribe } = useLaunchpoolSubscriptions(); + const balanceSingle = byDecimals(tokens[pool.token].tokenBalance, pool.tokenDecimals); + const sharesBalance = tokens[pool.earnedToken].launchpoolTokenBalance + ? new BigNumber.sum( + tokens[pool.earnedToken].launchpoolTokenBalance, + tokens[pool.earnedToken].tokenBalance + ) + : new BigNumber(tokens[pool.earnedToken].tokenBalance); + const launchpoolId = useSelector(state => state.vault.vaultLaunchpool[pool.id]); + const launchpool = launchpoolId ? launchpools[launchpoolId] : null; + const activeLaunchpools = useSelector(state => state.vault.vaultLaunchpools[pool.id]); + const multipleLaunchpools = activeLaunchpools.length > 1; + + useEffect(() => { + const unsubscribes = activeLaunchpools.map(launchpoolId => + subscribe(launchpoolId, { + poolApr: true, + poolFinish: true, + }) + ); + + return () => unsubscribes.forEach(unsubscribe => unsubscribe()); + }, [subscribe, activeLaunchpools]); + + return ( + + + + + + + + + + ); +}; + +export default memo(Pool); diff --git a/src/features/vault/components/Pool/styles.js b/src/features/vault/components/Pool/styles.js new file mode 100644 index 000000000..191967173 --- /dev/null +++ b/src/features/vault/components/Pool/styles.js @@ -0,0 +1,15 @@ +const styles = theme => ({ + container: { + marginBottom: '24px', + border: '1px solid ' + theme.palette.background.border, + }, + accordion: { + width: '100%', + backgroundColor: theme.palette.background.primary, + }, + divider: { + margin: '0 30px', + }, +}); + +export default styles; diff --git a/src/features/vault/components/PoolActions/PoolActions.js b/src/features/vault/components/PoolActions/PoolActions.js new file mode 100644 index 000000000..c163a3e7c --- /dev/null +++ b/src/features/vault/components/PoolActions/PoolActions.js @@ -0,0 +1,44 @@ +import React from 'react'; +import Grid from '@material-ui/core/Grid'; +import DepositSection from '../PoolDetails/DepositSection/DepositSection'; +import WithdrawSection from '../PoolDetails/WithdrawSection/WithdrawSection'; +import HarvestSection from '../PoolDetails/HarvestSection/HarvestSection'; +import { shouldHideFromHarvest } from '../../../helpers/utils'; +import { NetworkRequired } from '../../../../components/NetworkRequired/NetworkRequired'; +import { makeStyles } from '@material-ui/core/styles'; + +const useStyles = makeStyles(theme => ({ + notice: { + backgroundColor: theme.palette.background.extra, + padding: '16px', + border: '1px solid ' + theme.palette.background.border, + color: theme.palette.text.primary, + fontSize: '16px', + fontWeight: '400', + width: '100%', + marginTop: '24px', + }, +})); + +const PoolActions = ({ pool, balanceSingle, index, sharesBalance }) => { + const classes = useStyles(); + + return ( + + + {window.REACT_APP_NETWORK_ID === 42262 ? ( +
+ Note: + Please ensure your transaction's gas limit is under 10,000,000. Oasis RPCs are currently + overestimating the amount of gas needed for a transaction. +
+ ) : null} + + + {shouldHideFromHarvest(pool.id) ? '' : } +
+
+ ); +}; + +export default PoolActions; diff --git a/src/features/vault/components/PoolDetails/Banners/CakeV2Banner/CakeV2Banner.js b/src/features/vault/components/PoolDetails/Banners/CakeV2Banner/CakeV2Banner.js new file mode 100644 index 000000000..6a1dd0242 --- /dev/null +++ b/src/features/vault/components/PoolDetails/Banners/CakeV2Banner/CakeV2Banner.js @@ -0,0 +1,45 @@ +import React, { memo } from 'react'; +import { makeStyles } from '@material-ui/core/styles'; +import { useTranslation } from 'react-i18next'; +import styles from './styles'; + +const useStyles = makeStyles(styles); + +export const CakeV2Banner = memo(() => { + const classes = useStyles(); + const { t } = useTranslation(); + + return ( +
+
+
+ {t('Vault-Banner-CakeV2-StakeLabel', { symbol: 'CAKE' })} +
+
{t('Vault-Banner-CakeV2-StakeValue', { symbol: 'CAKE' })}
+
+
+
+ +
+
+
+
{t('Vault-Banner-CakeV2-SaferLabel')}
+
{t('Vault-Banner-CakeV2-SaferValue', { count: 0 })}
+
+
+
{t('Vault-Banner-CakeV2-SmarterLabel')}
+
{t('Vault-Banner-CakeV2-SmarterValue', { count: 8760 })}
+
+
+
{t('Vault-Banner-CakeV2-FairerLabel')}
+
{t('Vault-Banner-CakeV2-FairerValue', { percent: 77 })}
+
+
+ ); +}); diff --git a/src/features/vault/components/PoolDetails/Banners/CakeV2Banner/styles.js b/src/features/vault/components/PoolDetails/Banners/CakeV2Banner/styles.js new file mode 100644 index 000000000..c91ded67f --- /dev/null +++ b/src/features/vault/components/PoolDetails/Banners/CakeV2Banner/styles.js @@ -0,0 +1,84 @@ +import { fade } from '@material-ui/core'; + +export default theme => ({ + box: { + backgroundColor: + theme.palette.type === 'dark' ? fade('#fff', 0.05) : theme.palette.background.extra, + marginBottom: 24, + padding: '0 9px', + display: 'flex', + flexDirection: 'row', + flexWrap: 'wrap', + [theme.breakpoints.up('lg')]: { + flexWrap: 'nowrap', + }, + }, + feature: { + padding: '24px 15px 0 15px', + color: theme.palette.text.primary, + fontWeight: 700, + width: '100%', + [theme.breakpoints.up('sm')]: { + width: 'auto', + flexBasis: 'auto', + flexGrow: 1, + flexShrink: 1, + }, + [theme.breakpoints.up('lg')]: { + padding: '24px 15px', + flexBasis: 'auto', + flexShrink: 0, + width: 'auto', + }, + }, + featureFirst: { + width: 'calc(100% - 80px)', + [theme.breakpoints.up('sm')]: { + flexBasis: 'calc(100% - 80px)', + }, + [theme.breakpoints.up('lg')]: { + flexBasis: '20%', + flexShrink: 0, + flexGrow: 3, + }, + }, + featureLast: { + paddingBottom: 24, + }, + featureLabel: { + textTransform: 'uppercase', + }, + logoFeature: { + padding: '24px 24px 0 24px', + alignSelf: 'stretch', + width: 'auto', + [theme.breakpoints.up('lg')]: { + padding: '0 24px', + flexBasis: '155px', + flexShrink: 0, + flexGrow: 0, + }, + '@media (min-width: 1380px)': { + flexBasis: '255px', + }, + }, + logoHolder: { + position: 'relative', + margin: '0 auto', + [theme.breakpoints.up('lg')]: { + height: '100%', + }, + }, + logo: { + [theme.breakpoints.up('lg')]: { + position: 'absolute', + top: 0, + left: 0, + right: 0, + bottom: 0, + width: '100%', + height: ' 100%', + objectFit: 'cover', + }, + }, +}); diff --git a/src/features/vault/components/PoolDetails/DepositSection/DepositSection.js b/src/features/vault/components/PoolDetails/DepositSection/DepositSection.js new file mode 100644 index 000000000..580c9cc74 --- /dev/null +++ b/src/features/vault/components/PoolDetails/DepositSection/DepositSection.js @@ -0,0 +1,463 @@ +/* eslint-disable jsx-a11y/anchor-is-valid */ +import React, { useState, useEffect, useMemo } from 'react'; +import useDeepCompareEffect from 'use-deep-compare-effect'; +import Grid from '@material-ui/core/Grid'; +import BigNumber from 'bignumber.js'; +import { useTranslation } from 'react-i18next'; +import { makeStyles } from '@material-ui/core/styles'; +import FormControl from '@material-ui/core/FormControl'; +import Select from '@material-ui/core/Select'; +import MenuItem from '@material-ui/core/MenuItem'; +import CircularProgress from '@material-ui/core/CircularProgress'; +import { useSnackbar } from 'notistack'; +import CustomOutlinedInput from 'components/CustomOutlinedInput/CustomOutlinedInput'; +import CustomSlider from 'components/CustomSlider/CustomSlider'; + +import { useConnectWallet } from 'features/home/redux/hooks'; +import { + useFetchBalances, + useFetchDeposit, + useFetchZapDeposit, + useFetchApproval, + useFetchZapEstimate, +} from 'features/vault/redux/hooks'; +import { shouldHideFromHarvest } from 'features/helpers/utils'; +import { convertAmountToRawNumber, convertAmountFromRawNumber } from 'features/helpers/bignumber'; +import Button from 'components/CustomButtons/Button.js'; +import styles from './styles'; + +const useStyles = makeStyles(styles); + +const DepositSection = ({ pool }) => { + const { t } = useTranslation(); + const classes = useStyles(); + const { web3, address } = useConnectWallet(); + const { enqueueSnackbar } = useSnackbar(); + const { fetchApproval, fetchApprovalPending } = useFetchApproval(); + const { fetchDeposit, fetchDepositBnb, fetchDepositPending } = useFetchDeposit(); + const { fetchZapDeposit } = useFetchZapDeposit(); + const { tokens, tokenBalance, fetchBalances } = useFetchBalances(); + const { fetchZapDepositEstimate, fetchZapEstimatePending } = useFetchZapEstimate(); + + const { zap, eligibleTokens } = useMemo(() => { + const zap = pool.zap; + return { + zap, + eligibleTokens: [ + { + name: pool.name, + symbol: pool.token, + address: pool.tokenAddress, + decimals: pool.tokenDecimals, + logoURI: pool.logo, + }, + ...(zap ? zap.tokens : []), + ], + }; + }, [pool.logo, pool.name, pool.token, pool.tokenAddress, pool.tokenDecimals, pool.zap]); + + const [depositSettings, setDepositSettings] = useState({ + tokenIndex: 0, + isZap: false, + token: eligibleTokens[0], + amount: new BigNumber(0), + slider: 0, + input: '0.0', + vaultAddress: pool.earnContractAddress, + depositAddress: pool.earnContractAddress, + isNeedApproval: new BigNumber( + tokens[eligibleTokens[0].symbol].allowance[pool.earnContractAddress] + ).isZero(), + slippageTolerance: 0.01, + swapAmountOut: pool.zapEstimate?.swapAmountOut, + }); + + useDeepCompareEffect(() => { + if (depositSettings.amount.isZero()) return; + if (depositSettings.isZap) { + fetchZapDepositEstimate({ + web3, + zapAddress: zap.zapAddress, + vaultAddress: pool.earnContractAddress, + tokenAddress: depositSettings.token.address, + tokenAmount: convertAmountToRawNumber( + depositSettings.amount, + depositSettings.token.decimals + ), + }); + } + }, [depositSettings.amount, pool, new Date().getMinutes()]); + + useEffect(() => { + const allowance = new BigNumber( + tokens[depositSettings.token.symbol].allowance[depositSettings.depositAddress] + ); + setDepositSettings(prevState => ({ + ...prevState, + isNeedApproval: allowance.isZero() || prevState.amount.isGreaterThan(allowance), + })); + }, [depositSettings.depositAddress, depositSettings.token.symbol, tokens]); + + useEffect(() => { + if (address && web3 && zap) { + const tokens = {}; + eligibleTokens.forEach(token => { + tokens[token.symbol] = { + tokenAddress: token.wrappedSymbol ? null : token.address, + tokenBalance: 0, + allowance: { + [zap.zapAddress]: token.wrappedSymbol ? Infinity : 0, + }, + decimals: token.decimals, + ...tokens[token.symbol], + }; + }); + fetchBalances({ address, web3, tokens }); + } + }, [address, web3, fetchBalances, zap, eligibleTokens]); + + const handleTokenChange = event => { + const isZap = event.target.value > 0; + const spender = isZap ? zap.zapAddress : pool.earnContractAddress; + const token = eligibleTokens[event.target.value]; + const allowance = new BigNumber(tokens[token.symbol].allowance[spender]); + + setDepositSettings(prevState => ({ + ...prevState, + tokenIndex: event.target.value, + isZap: isZap, + token: token, + amount: new BigNumber(0), + slider: 0, + input: '0.0', + depositAddress: spender, + isNeedApproval: allowance.isZero(), + })); + }; + + const handleSliderChange = (_, sliderInt) => { + setDepositSettings(prevState => ({ + ...prevState, + slider: sliderInt, + })); + }; + + const handleSliderChangeCommitted = (_, sliderInt) => { + const total = tokenBalance(depositSettings.token.symbol); + let amount = new BigNumber(0); + if (sliderInt > 0 && sliderInt < 100) { + amount = total.times(sliderInt).div(100).decimalPlaces(8); + } + if (sliderInt === 100) { + amount = total; + } + const allowance = new BigNumber( + tokens[depositSettings.token.symbol].allowance[depositSettings.depositAddress] + ); + + setDepositSettings(prevState => ({ + ...prevState, + amount: amount, + slider: sliderInt, + input: amount.toFormat(), + isNeedApproval: allowance.isZero(), + })); + }; + + const handleMax = _ => { + handleSliderChangeCommitted(_, 100); + }; + + const handleInputAmountChange = event => { + const input = event.target.value.replace(/[,]+/, '').replace(/[^0-9.]+/, ''); + let amount = new BigNumber(input); + const total = tokenBalance(depositSettings.token.symbol); + if (amount.isNaN()) amount = new BigNumber(0); + + amount = amount.decimalPlaces(depositSettings.token.decimals); + if (amount.isGreaterThan(total)) amount = total; + + const sliderInt = total.isZero() ? 0 : amount.times(100).dividedToIntegerBy(total).toNumber(); + const allowance = new BigNumber( + tokens[depositSettings.token.symbol].allowance[depositSettings.depositAddress] + ); + + setDepositSettings(prevState => ({ + ...prevState, + amount: amount, + slider: sliderInt, + input: amount.isEqualTo(input) ? input : amount.toFormat(), + isNeedApproval: allowance.isZero(), + })); + }; + + const handleApproval = () => { + fetchApproval({ + address, + web3, + tokenAddress: depositSettings.token.address, + contractAddress: depositSettings.depositAddress, + tokenSymbol: depositSettings.token.symbol, + }) + .then(() => enqueueSnackbar(t('Vault-ApprovalSuccess'), { variant: 'success' })) + .catch(error => enqueueSnackbar(t('Vault-ApprovalError', { error }), { variant: 'error' })); + }; + + const handleDepositAll = () => { + const newDepositSettings = { + ...depositSettings, + amount: tokenBalance(depositSettings.token.symbol), + slider: 100, + input: tokenBalance(depositSettings.token.symbol).toFormat(), + }; + setDepositSettings(newDepositSettings); + depositAssets({ + ...newDepositSettings, + isAll: true, + }); + }; + + const handleDepositAmount = () => { + depositAssets(depositSettings); + }; + + const depositAssets = deposit => { + if (pool.depositsPaused) { + console.error('Deposits paused!'); + return; + } + + if (deposit.isZap) { + // Zap deposit + const swapAmountOut = pool.zapEstimate.swapAmountOut; + const swapAmountOutMin = new BigNumber( + swapAmountOut - swapAmountOut * deposit.slippageTolerance + ); + const zapDepositArgs = { + vaultAddress: deposit.vaultAddress, + isETH: !!deposit.token.wrappedSymbol, + tokenAddress: deposit.token.address, + tokenAmount: convertAmountToRawNumber(deposit.amount, deposit.token.decimals), + zapAddress: deposit.depositAddress, + swapAmountOutMin: swapAmountOutMin.toFixed(0), + address, + web3, + }; + fetchZapDeposit(zapDepositArgs) + .then(() => { + enqueueSnackbar(t('Vault-DepositSuccess'), { variant: 'success' }); + fetchBalances({ address, web3, tokens }); + }) + .catch(error => enqueueSnackbar(t('Vault-DepositError', { error }), { variant: 'error' })); + } else { + // Vault deposit + const depositArgs = { + address, + web3, + isAll: !!deposit.isAll, + amount: convertAmountToRawNumber(deposit.amount, deposit.token.decimals), + contractAddress: deposit.vaultAddress, + }; + if (pool.tokenAddress) { + fetchDeposit(depositArgs) + .then(() => { + enqueueSnackbar(t('Vault-DepositSuccess'), { variant: 'success' }); + fetchBalances({ address, web3, tokens }); + }) + .catch(error => + enqueueSnackbar(t('Vault-DepositError', { error }), { variant: 'error' }) + ); + } else { + fetchDepositBnb(depositArgs) + .then(() => { + enqueueSnackbar(t('Vault-DepositSuccess'), { variant: 'success' }); + fetchBalances({ address, web3, tokens }); + }) + .catch(error => + enqueueSnackbar(t('Vault-DepositError', { error }), { variant: 'error' }) + ); + } + } + }; + + const getVaultState = (status, paused) => { + let display = false; + let cont = null; + + if (status === 'eol') { + display = true; + cont = ( +
+
{t('Vault-DepositsRetiredMsg')}
+
+ ); + } else { + if (paused) { + display = true; + cont = ( +
+
{t('Vault-DepositsPausedMsg')}
+
+ ); + } + } + + return { display: display, content: cont }; + }; + + const vaultState = getVaultState(pool.status, pool.depositsPaused); + const swapTokenOut = depositSettings.isZap + ? eligibleTokens.find( + t => t.address.toLowerCase() === pool.zapEstimate?.swapTokenOut?.toLowerCase() + ) + : undefined; + + const vaultFee = t('Vault-DepositAndWithdrawFee', { + depositFee: pool.depositFee, + withdrawalFee: pool.withdrawalFee, + }); + return ( + + + + + + + ) + } + /> + + + {vaultState.display === true ? ( + vaultState.content + ) : ( +
+ {depositSettings.isNeedApproval ? ( +
+ +
+ ) : ( +
+ + {Boolean(pool.tokenAddress) && Boolean(!depositSettings.isZap) && ( + + )} +
+ )} + {depositSettings.isZap && !depositSettings.amount.isZero() && pool.zapEstimate && ( +
+ {t('Vault-DepositScenario')}  + {fetchZapEstimatePending[pool.earnContractAddress] && } +
    +
  1. + {t('Vault-DepositScenarioSwap', { + swapIn: `${convertAmountFromRawNumber( + pool.zapEstimate.swapAmountIn, + depositSettings.token.decimals + ) + .decimalPlaces(8, BigNumber.ROUND_DOWN) + .toFormat()} ${depositSettings.token.symbol}`, + swapOut: `${convertAmountFromRawNumber( + pool.zapEstimate.swapAmountOut, + swapTokenOut.decimals + ) + .decimalPlaces(8, BigNumber.ROUND_DOWN) + .toFormat()} ${swapTokenOut.symbol}`, + slippageTolerance: `1%`, + })} +
  2. +
  3. + {t('Vault-DepositScenarioAddLiquidity', { + tokenA: pool.assets[0], + tokenB: pool.assets[1], + poolToken: pool.token, + })} +
  4. +
  5. {t('Vault-DepositScenarioDepositToVault', { poolToken: pool.token })}
  6. +
  7. + {t('Vault-DepositScenarioReturnDust', { + tokenA: pool.assets[0], + tokenB: pool.assets[1], + })} +
  8. +
+
+ )} +
+ )} + + {vaultFee ?

{vaultFee}

: ''} +

+ {t('Vault-DepositTokensNote', { mooToken: pool.earnedToken, assetToken: pool.token })} +

+
+ ); +}; + +export default DepositSection; diff --git a/src/features/vault/components/PoolDetails/DepositSection/styles.js b/src/features/vault/components/PoolDetails/DepositSection/styles.js new file mode 100644 index 000000000..489d2b467 --- /dev/null +++ b/src/features/vault/components/PoolDetails/DepositSection/styles.js @@ -0,0 +1,117 @@ +import { primaryColor } from 'assets/jss/material-kit-pro-react.js'; + +const styles = theme => ({ + sliderDetailContainer: { + padding: '24px 30px', + }, + showDetailLeft: { + float: 'left', + marginBottom: '10px', + fontSize: '1rem', + lineHeight: '20px', + color: theme.palette.text.secondary, + fontWeight: '500', + }, + showDetailButtonCon: { + display: 'flex', + justifyContent: 'space-around', + '& + &': { + marginLeft: '5px', + }, + }, + showPausedMsg: { + display: 'flex', + margin: '12px 5px', + padding: '15px', + fontSize: '14px', + fontWeight: 'bold', + borderRadius: '5px', + background: `${theme.palette.background.paused}`, + border: `1px solid ${theme.palette.primary.main}`, + }, + showRetiredMsg: { + display: 'flex', + margin: '12px 5px', + padding: '15px', + fontSize: '14px', + fontWeight: 'bold', + borderRadius: '5px', + background: `${theme.palette.background.retired}`, + border: `1px solid ${theme.palette.primary.main}`, + }, + showDetailButton: { + margin: '12px 5px', + fontSize: '14px', + fontWeight: 'bold', + borderRadius: '5px', + width: '160px', + }, + showDetailButtonOutlined: { + backgroundColor: 'transparent', + border: `1px solid ${theme.palette.primary.main}`, + color: primaryColor[0], + '&:hover': { + '& .MuiButton-label': { + color: 'white', + }, + }, + '& .MuiTouchRipple-root span': { + backgroundColor: primaryColor[0], + }, + }, + showDetailButtonContained: { + backgroundColor: primaryColor[0], + '& .MuiButton-label': { + color: 'white', + }, + }, + numericInput: { + color: primaryColor[0], + }, + subtitle: { + textAlign: 'center', + fontSize: '14px', + letterSpacing: '0', + lineHeight: '8px', + [theme.breakpoints.down('xs')]: { + lineHeight: '16px', + }, + fontWeight: '550', + color: theme.palette.text.secondary, + }, + note: { + textAlign: 'center', + fontSize: '12px', + color: theme.palette.text.secondary, + }, + balanceMax: { + cursor: 'pointer', + color: theme.palette.text.secondary, + borderBottom: '1px dashed', + }, + zapNote: { + width: '100%', + textAlign: 'left', + fontSize: '14px', + color: theme.palette.text.secondary, + }, + zapFormControl: { + minWidth: 'auto', + }, + zapSelect: { + border: 'none', + borderLeft: `1px solid ${theme.palette.text.secondary}`, + paddingLeft: '10px', + '& > div': { + padding: '6px 0', + }, + '&::before': { + content: 'none', + }, + '&::after': { + content: 'none', + }, + }, +}); + +export default styles; diff --git a/src/features/vault/components/PoolDetails/HarvestSection/HarvestSection.js b/src/features/vault/components/PoolDetails/HarvestSection/HarvestSection.js new file mode 100644 index 000000000..33b50c061 --- /dev/null +++ b/src/features/vault/components/PoolDetails/HarvestSection/HarvestSection.js @@ -0,0 +1,93 @@ +import React, { useState } from 'react'; +import Grid from '@material-ui/core/Grid'; +import Dialog from '@material-ui/core/Dialog'; +import DialogActions from '@material-ui/core/DialogActions'; +import DialogContent from '@material-ui/core/DialogContent'; +import DialogContentText from '@material-ui/core/DialogContentText'; +import DialogTitle from '@material-ui/core/DialogTitle'; +import Typography from '@material-ui/core/Typography'; +import { makeStyles } from '@material-ui/core/styles'; +import { useTranslation } from 'react-i18next'; +import { useSnackbar } from 'notistack'; + +import Button from 'components/CustomButtons/Button.js'; +import { useFetchHarvest } from 'features/vault/redux/hooks'; +import { useConnectWallet } from 'features/home/redux/hooks'; +import styles from './styles'; + +const useStyles = makeStyles(styles); + +const HarvestSection = ({ pool, index }) => { + const { t } = useTranslation(); + const classes = useStyles(); + const { web3, address } = useConnectWallet(); + const { enqueueSnackbar } = useSnackbar(); + const { fetchHarvest, fetchHarvestPending } = useFetchHarvest(); + const [showHarvestModal, setShowHarvestModal] = useState(false); + + const onHarvest = () => { + fetchHarvest({ + address, + web3, + contractAddress: pool.earnContractAddress, + index, + }) + .then(() => enqueueSnackbar(t('Vault-HarvestSuccess'), { variant: 'success' })) + .catch(error => enqueueSnackbar(t('Vault-HarvestError', { error }), { variant: 'error' })); + setShowHarvestModal(false); + }; + + return ( + <> + setShowHarvestModal(false)}> + + + {t('Vault-HarvestConfirm')} + + + + + + {t('Vault-HarvestDescription')} + + + + + + + + + +
+
{/* {t('Vault-LastHarvest')}: */}
+
+ +
+
+
+ + ); +}; + +export default HarvestSection; diff --git a/src/features/vault/components/PoolDetails/HarvestSection/styles.js b/src/features/vault/components/PoolDetails/HarvestSection/styles.js new file mode 100644 index 000000000..1d7963709 --- /dev/null +++ b/src/features/vault/components/PoolDetails/HarvestSection/styles.js @@ -0,0 +1,77 @@ +import { primaryColor } from 'assets/jss/material-kit-pro-react.js'; + +const styles = theme => ({ + sliderDetailContainer: { + padding: '24px 30px', + }, + showDetailLeft: { + float: 'left', + marginBottom: '10px', + fontSize: '1rem', + lineHeight: '20px', + color: theme.palette.text.secondary, + fontWeight: '500', + }, + showDetailBottom: { + display: 'flex', + height: '100%', + flexDirection: 'column', + justifyContent: 'space-between', + '& + &': { + marginLeft: '5px', + }, + }, + showResponsiveButtonCon: { + width: '160px', + [theme.breakpoints.up('md')]: { + maxWidth: '80px', + }, + [theme.breakpoints.up('lg')]: { + maxWidth: '100px', + }, + }, + showDetailButton: { + margin: '12px 5px', + fontSize: '14px', + fontWeight: 'bold', + borderRadius: '5px', + width: '160px', + }, + showDetailButtonOutlined: { + backgroundColor: 'transparent', + border: `1px solid ${theme.palette.primary.main}`, + color: primaryColor[0], + '&:hover': { + '& .MuiButton-label': { + color: 'white', + }, + }, + '& .MuiTouchRipple-root span': { + backgroundColor: primaryColor[0], + }, + }, + showDetailButtonContained: { + backgroundColor: primaryColor[0], + '& .MuiButton-label': { + color: 'white', + }, + }, + title: { + fontSize: '18px', + fontWeight: 'bold', + color: theme.palette.text.primary, + lineHeight: '18px', + letterSpacing: 0, + wordBreak: 'break-word', + minWidth: '150px', + }, + subtitle: { + fontSize: '14px', + fontWeight: '400', + color: theme.palette.text.secondary, + lineHeight: '20px', + letterSpacing: 0, + }, +}); + +export default styles; diff --git a/src/features/vault/components/PoolDetails/HomeLink/HomeLink.js b/src/features/vault/components/PoolDetails/HomeLink/HomeLink.js new file mode 100644 index 000000000..b4bfa21a8 --- /dev/null +++ b/src/features/vault/components/PoolDetails/HomeLink/HomeLink.js @@ -0,0 +1,20 @@ +import React from 'react'; +import { useParams } from 'react-router'; +import { Link } from 'react-router-dom'; + +import { makeStyles } from '@material-ui/core/styles'; +import styles from './styles'; +import { useTranslation } from 'react-i18next'; +const useStyles = makeStyles(styles); + +export default () => { + const { chain } = useParams(); + const classes = useStyles(); + const { t } = useTranslation(); + return ( + + + {t('Vaults-Back')} + + ); +}; diff --git a/src/features/vault/components/PoolDetails/HomeLink/styles.js b/src/features/vault/components/PoolDetails/HomeLink/styles.js new file mode 100644 index 000000000..eba0cb1e1 --- /dev/null +++ b/src/features/vault/components/PoolDetails/HomeLink/styles.js @@ -0,0 +1,16 @@ +const styles = theme => ({ + link: { + display: 'inline-block', + marginBottom: '24px', + color: theme.palette.text.secondary, + textDecoration: 'none', + '&:hover': { + textDecoration: 'underline', + }, + }, + linkIcon: { + marginRight: '0.5rem', + }, +}); + +export default styles; diff --git a/src/features/vault/components/PoolDetails/PoolDetails.js b/src/features/vault/components/PoolDetails/PoolDetails.js new file mode 100644 index 000000000..179927465 --- /dev/null +++ b/src/features/vault/components/PoolDetails/PoolDetails.js @@ -0,0 +1,229 @@ +import React, { useEffect, useMemo } from 'react'; +import { useSelector } from 'react-redux'; +import Divider from '@material-ui/core/Divider'; +import { makeStyles } from '@material-ui/core/styles'; +import Grid from '@material-ui/core/Grid'; +import { useTranslation } from 'react-i18next'; +import BigNumber from 'bignumber.js'; +import { useConnectWallet } from '../../../home/redux/hooks'; +import { useFetchApys, useFetchBalances, useFetchVaultsData } from '../../redux/hooks'; +import { byDecimals } from 'features/helpers/bignumber'; +import { formatTvl } from 'features/helpers/format'; +import HomeLink from './HomeLink/HomeLink'; +import PoolActions from '../PoolActions/PoolActions'; +import PoolTitle from '../PoolSummary/PoolTitle/PoolTitle'; +import LabeledStat from '../PoolSummary/LabeledStat/LabeledStat'; +import styles from './styles'; +import { Helmet } from 'react-helmet'; +import { usePageMeta } from '../../../common/getPageMeta'; +import ApyStats from '../PoolSummary/ApyStats/ApyStats'; +import PoolPaused from '../PoolSummary/PoolPaused/PoolPaused'; +import { CakeV2Banner } from './Banners/CakeV2Banner/CakeV2Banner'; +import { launchpools } from '../../../helpers/getNetworkData'; +import { + useLaunchpoolSubscriptions, + useLaunchpoolUpdates, + usePoolApr, +} from '../../../stake/redux/hooks'; +import { PoolBoosts } from '../PoolSummary/PoolBoosts/PoolBoosts'; +import { getRetireReason } from '../PoolSummary/RetireReason/RetireReason'; +import { getPoolWarning } from '../PoolSummary/PoolWarning/PoolWarning'; + +const FETCH_INTERVAL_MS = 30 * 1000; + +const useStyles = makeStyles(styles); + +const formatDecimals = number => { + return number >= 10 ? number.toFixed(4) : number.isEqualTo(0) ? 0 : number.toFixed(8); +}; + +const PoolDetails = ({ vaultId }) => { + const classes = useStyles(); + const { t } = useTranslation(); + const { web3, address } = useConnectWallet(); + const { pools, fetchVaultsData, fetchVaultsDataDone } = useFetchVaultsData(); + const { tokens, fetchBalances, fetchBalancesDone } = useFetchBalances(); + const { apys, fetchApys, fetchApysDone } = useFetchApys(); + const pool = pools.find(p => p.id === vaultId); + const { getPageMeta } = usePageMeta(); + const { subscribe } = useLaunchpoolSubscriptions(); + const activeLaunchpools = useSelector(state => state.vault.vaultLaunchpools[pool.id]); + const launchpoolId = useSelector(state => state.vault.vaultLaunchpool[pool.id]); + const launchpool = launchpoolId ? launchpools[launchpoolId] : null; + const launchpoolApr = usePoolApr(launchpoolId); + const multipleLaunchpools = activeLaunchpools.length > 1; + + useEffect(() => { + const unsubscribes = activeLaunchpools.map(launchpoolId => + subscribe(launchpoolId, { + poolApr: true, + poolFinish: true, + }) + ); + + return () => unsubscribes.forEach(unsubscribe => unsubscribe()); + }, [subscribe, activeLaunchpools]); + + useLaunchpoolUpdates(); + + useEffect(() => { + const fetch = () => { + if (address && web3) { + fetchBalances({ address, web3, tokens }); + } + fetchVaultsData({ address, web3, pools }); + fetchApys(); + }; + fetch(); + + const id = setInterval(fetch, FETCH_INTERVAL_MS); + return () => clearInterval(id); + + // Adding tokens and pools to this dep list, causes an endless loop, DDoSing the api + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [address, web3, fetchBalances, fetchVaultsData]); + + const vaultStateTitle = useMemo(() => { + let state = + pool.status === 'eol' + ? t(getRetireReason(pool.retireReason)) + : pool.depositsPaused + ? t('Vault-DepositsPausedTitle') + : pool.showWarning + ? t(getPoolWarning(pool.warning), { name: pool.name, platform: pool.platform }) + : null; + + if (launchpool) { + state = t('Stake-BoostedBy', { name: launchpool.name }); + } + + if (pool.experimental) { + state = t('Vault-Experimental'); + } + + return state === null ? ( + '' + ) : ( + + ); + }, [pool, launchpool, t]); + + const balanceSingle = byDecimals(tokens[pool.token].tokenBalance, pool.tokenDecimals); + const sharesBalance = new BigNumber(tokens[pool.earnedToken].tokenBalance); + const apy = apys[pool.id] || { totalApy: 0 }; + + const balanceUsd = + balanceSingle > 0 && fetchVaultsDataDone ? formatTvl(balanceSingle, pool.oraclePrice) : ''; + const deposited = byDecimals( + sharesBalance.multipliedBy(new BigNumber(pool.pricePerFullShare)), + pool.tokenDecimals + ); + const depositedUsd = + deposited > 0 && fetchVaultsDataDone ? formatTvl(deposited, pool.oraclePrice, false) : ''; + + if (!pool) { + return ( + <> + +
+
Vault {vaultId} not found
+
+ + ); + } + + return ( + <> + + + {getPageMeta('Vault-Meta-Title', { + vaultName: pool.name, + vaultDescription: pool.tokenDescription, + })} + + + + + {vaultId === 'cake-cakev2' ? : ''} +
+ + {vaultStateTitle} + + + + + + + + + + + + + + + + + {pool.tokenDescriptionUrl && pool.tokenDescriptionUrl !== '#' && ( +
+

+ Link:{' '} + + {pool.tokenDescriptionUrl} + +

+
+ )} + + +
+ + ); +}; + +export default PoolDetails; diff --git a/src/features/vault/components/PoolDetails/RefundButtons/RefundButtons.js b/src/features/vault/components/PoolDetails/RefundButtons/RefundButtons.js new file mode 100644 index 000000000..60579e2a2 --- /dev/null +++ b/src/features/vault/components/PoolDetails/RefundButtons/RefundButtons.js @@ -0,0 +1,55 @@ +import React, { memo } from 'react'; +import { makeStyles } from '@material-ui/core/styles'; +import { useSnackbar } from 'notistack'; + +import { useFetchApproval } from '../../../redux/hooks'; +import Button from 'components/CustomButtons/Button.js'; +import { useConnectWallet } from 'features/home/redux/hooks'; +import { refundABI } from 'features/configure/abi'; +import styles from './styles'; + +const useStyles = makeStyles(styles); + +const RefundButtons = ({ tokenAddress, refundAddress, index }) => { + const classes = useStyles(); + const { web3, address } = useConnectWallet(); + const { enqueueSnackbar } = useSnackbar(); + const { fetchApproval } = useFetchApproval(); + + const onRefundApproval = () => { + fetchApproval({ + address, + web3, + tokenAddress, + refundAddress, + contractAddress: refundAddress, + index, + }) + .then(() => enqueueSnackbar(`Approval success`, { variant: 'success' })) + .catch(error => enqueueSnackbar(`Approval error: ${error}`, { variant: 'error' })); + }; + + const onRefund = () => { + const vault = new web3.eth.Contract(refundABI, refundAddress); + vault.methods.refund().send({ from: address }); + }; + + return ( + <> + + + + ); +}; + +export default memo(RefundButtons); diff --git a/src/features/vault/components/PoolDetails/RefundButtons/styles.js b/src/features/vault/components/PoolDetails/RefundButtons/styles.js new file mode 100644 index 000000000..9a62edf79 --- /dev/null +++ b/src/features/vault/components/PoolDetails/RefundButtons/styles.js @@ -0,0 +1,19 @@ +import { primaryColor } from 'assets/jss/material-kit-pro-react.js'; + +const styles = theme => ({ + showDetailButton: { + margin: '12px 5px', + fontSize: '14px', + fontWeight: 'bold', + borderRadius: '5px', + width: '160px', + }, + showDetailButtonContained: { + backgroundColor: primaryColor[0], + '& .MuiButton-label': { + color: 'white', + }, + }, +}); + +export default styles; diff --git a/src/features/vault/components/PoolDetails/WithdrawSection/WithdrawSection.js b/src/features/vault/components/PoolDetails/WithdrawSection/WithdrawSection.js new file mode 100644 index 000000000..dfa6bc17c --- /dev/null +++ b/src/features/vault/components/PoolDetails/WithdrawSection/WithdrawSection.js @@ -0,0 +1,498 @@ +/* eslint-disable jsx-a11y/anchor-is-valid */ +import React, { useState, useMemo, useEffect } from 'react'; +import useDeepCompareEffect from 'use-deep-compare-effect'; +import Grid from '@material-ui/core/Grid'; +import BigNumber from 'bignumber.js'; +import { makeStyles } from '@material-ui/core/styles'; +import { useTranslation } from 'react-i18next'; +import { useSnackbar } from 'notistack'; +import FormControl from '@material-ui/core/FormControl'; +import Select from '@material-ui/core/Select'; +import MenuItem from '@material-ui/core/MenuItem'; +import CircularProgress from '@material-ui/core/CircularProgress'; + +import Button from 'components/CustomButtons/Button.js'; +import CustomOutlinedInput from 'components/CustomOutlinedInput/CustomOutlinedInput'; +import CustomSlider from 'components/CustomSlider/CustomSlider'; +import RefundButtons from '../RefundButtons/RefundButtons'; +import { + byDecimals, + convertAmountToRawNumber, + convertAmountFromRawNumber, +} from 'features/helpers/bignumber'; +import { shouldHideFromHarvest } from 'features/helpers/utils'; +import { + useFetchWithdraw, + useFetchBalances, + useFetchApproval, + useFetchZapEstimate, +} from 'features/vault/redux/hooks'; +import { useConnectWallet } from 'features/home/redux/hooks'; +import { getNetworkCoin } from 'features/helpers/getNetworkData'; +import styles from './styles'; + +const useStyles = makeStyles(styles); +const nativeCoin = getNetworkCoin(); + +const WithdrawSection = ({ pool, index, sharesBalance }) => { + const { t, i18n } = useTranslation(); + const classes = useStyles(); + const { web3, address } = useConnectWallet(); + const { enqueueSnackbar } = useSnackbar(); + const { fetchApproval, fetchApprovalPending } = useFetchApproval(); + const { + fetchWithdraw, + fetchWithdrawBnb, + fetchZapWithdrawAndRemoveLiquidity, + fetchZapWithdrawAndSwap, + fetchWithdrawPending, + } = useFetchWithdraw(); + const { fetchZapWithdrawEstimate, fetchZapEstimatePending } = useFetchZapEstimate(); + const { tokens, fetchBalances, fetchPairReverves } = useFetchBalances(); + + const sharesDecimals = pool.tokenDecimals; + const sharesByDecimals = byDecimals(sharesBalance, sharesDecimals); + const underliyngBalance = sharesByDecimals + .multipliedBy(pool.pricePerFullShare) + .decimalPlaces(pool.tokenDecimals, BigNumber.ROUND_DOWN); + + const withdrawOutputs = useMemo(() => { + const outputs = [ + { + name: pool.name, + symbol: pool.token, + address: pool.tokenAddress, + decimals: pool.tokenDecimals, + }, + ]; + + if (pool.zap) { + const pairTokens = pool.zap.tokens.filter(t => t.symbol !== nativeCoin.wrappedSymbol); + if (pairTokens.length) { + outputs.push( + { + symbol: pool.assets.join('+'), + }, + ...pairTokens + ); + } + } + + return outputs; + }, [pool.assets, pool.name, pool.token, pool.tokenAddress, pool.tokenDecimals, pool.zap]); + + const [withdrawSettings, setWithdrawSettings] = useState({ + isZap: false, + isSwap: false, + swapInput: undefined, + swapOutput: undefined, + outputIndex: 0, + amount: new BigNumber(0), + slider: 0, + input: '0.0', + vaultAddress: pool.earnContractAddress, + withdrawAddress: pool.earnContractAddress, + isNeedApproval: false, + slippageTolerance: 0.01, + swapAmountOut: pool.zapWithdrawEstimate?.swapAmountOut, + }); + + useDeepCompareEffect(() => { + if (fetchWithdrawPending[index]) return; + if (fetchZapEstimatePending[pool.tokenAddress]) return; + if (pool.zap) { + fetchPairReverves({ web3, pairToken: tokens[pool.token] }); + } + }, [pool, new Date().getMinutes()]); + + useDeepCompareEffect(() => { + if (fetchWithdrawPending[index]) return; + if (fetchZapEstimatePending[pool.tokenAddress]) return; + if (pool.zap && withdrawSettings.isSwap) { + fetchZapWithdrawEstimate({ + web3, + vaultAddress: pool.earnContractAddress, + routerAddress: pool.zap.ammRouter, + swapInput: withdrawSettings.swapInput, + swapOutput: withdrawSettings.swapOutput, + pairToken: tokens[pool.token], + pairTokenAmount: convertAmountToRawNumber( + withdrawSettings.amount, + tokens[pool.token].decimals + ), + }); + } + }, [tokens[pool.token].reserves, withdrawSettings.amount, withdrawSettings.outputIndex]); + + const handleOutputChange = event => { + const outputIndex = event.target.value; + const isZap = outputIndex > 0; + const isSwap = outputIndex > 1; + const spender = isZap ? pool.zap.zapAddress : pool.earnContractAddress; + const swapInput = isSwap ? withdrawOutputs[outputIndex === 2 ? 3 : 2] : undefined; + const swapOutput = isSwap ? withdrawOutputs[outputIndex] : undefined; + const allowance = new BigNumber(tokens[pool.earnedToken].allowance[spender]); + + setWithdrawSettings(prevState => ({ + ...prevState, + outputIndex, + isZap, + isSwap, + swapInput, + swapOutput, + withdrawAddress: spender, + isNeedApproval: isZap && allowance.isZero(), + })); + }; + + const handleSliderChange = (_, sliderInt) => { + setWithdrawSettings(prevState => ({ + ...prevState, + slider: sliderInt, + })); + }; + + const handleSliderChangeCommitted = (_, sliderInt) => { + let amount = new BigNumber(0); + let input = new BigNumber(0); + if (sliderInt > 0 && sliderInt < 99) { + amount = underliyngBalance + .times(sliderInt) + .div(100) + .decimalPlaces(pool.tokenDecimals, BigNumber.ROUND_DOWN); + input = amount.decimalPlaces(8, BigNumber.ROUND_DOWN).toFormat(); + } + if (sliderInt >= 99) { + amount = underliyngBalance; + sliderInt = 100; + input = amount.toFormat(); + } + + setWithdrawSettings(prevState => ({ + ...prevState, + amount: amount, + slider: sliderInt, + input: input, + })); + }; + + const handleMax = _ => { + handleSliderChangeCommitted(_, 100); + }; + + const handleInputAmountChange = event => { + const input = event.target.value.replace(/[,]+/, '').replace(/[^0-9.]+/, ''); + let amount = new BigNumber(input); + + if (amount.isNaN()) amount = new BigNumber(0); + if (amount.isGreaterThan(underliyngBalance)) amount = underliyngBalance; + + const sliderInt = underliyngBalance.isZero() + ? 0 + : amount.times(100).dividedToIntegerBy(underliyngBalance).toNumber(); + + setWithdrawSettings(prevState => ({ + ...prevState, + amount: amount, + slider: sliderInt, + input: amount.isEqualTo(input) ? input : amount.toFormat(), + })); + }; + + useEffect(() => { + const allowance = new BigNumber( + tokens[pool.earnedToken].allowance[withdrawSettings.withdrawAddress] + ); + setWithdrawSettings(prevState => ({ + ...prevState, + isNeedApproval: prevState.isZap && allowance.isZero(), + })); + }, [pool.earnedToken, tokens, withdrawSettings.withdrawAddress]); + + const handleApproval = () => { + fetchApproval({ + address, + web3, + tokenAddress: pool.earnedTokenAddress, + contractAddress: pool.zap.zapAddress, + tokenSymbol: pool.earnedToken, + }) + .then(() => enqueueSnackbar(t('Vault-ApprovalSuccess'), { variant: 'success' })) + .catch(error => enqueueSnackbar(t('Vault-ApprovalError', { error }), { variant: 'error' })); + }; + + const handleWithdraw = () => { + const sharesAmount = withdrawSettings.amount + .dividedBy(pool.pricePerFullShare) + .decimalPlaces(sharesDecimals, BigNumber.ROUND_UP); + if (sharesAmount.times(100).dividedBy(sharesByDecimals).isGreaterThan(99)) { + return handleWithdrawAll(); + } + withdraw(convertAmountToRawNumber(sharesAmount, sharesDecimals)); + }; + + const handleWithdrawAll = () => { + const isAll = true; + setWithdrawSettings(prevState => ({ + ...prevState, + amount: underliyngBalance, + input: underliyngBalance.toFormat(), + slider: 100, + })); + withdraw(convertAmountToRawNumber(sharesByDecimals, sharesDecimals), isAll); + }; + + const withdraw = (sharesAmount, isAll = false) => { + if (withdrawSettings.isZap) { + if (withdrawSettings.isSwap) { + const swapAmountOut = pool.swapEstimate.amountOut; + const swapAmountOutMin = new BigNumber( + swapAmountOut - swapAmountOut * withdrawSettings.slippageTolerance + ); + const zapWithdrawArgs = { + address, + web3, + vaultAddress: pool.earnContractAddress, + amount: sharesAmount, + zapAddress: pool.zap.zapAddress, + tokenOut: withdrawSettings.swapOutput.address, + amountOutMin: swapAmountOutMin.toFixed(0), + }; + fetchZapWithdrawAndSwap(zapWithdrawArgs) + .then(() => { + enqueueSnackbar(t('Vault-WithdrawSuccess'), { variant: 'success' }); + fetchBalances({ address, web3, tokens }); + }) + .catch(error => + enqueueSnackbar(t('Vault-WithdrawError', { error }), { variant: 'error' }) + ); + } else { + const zapWithdrawArgs = { + address, + web3, + vaultAddress: pool.earnContractAddress, + amount: sharesAmount, + zapAddress: pool.zap.zapAddress, + }; + fetchZapWithdrawAndRemoveLiquidity(zapWithdrawArgs) + .then(() => { + enqueueSnackbar(t('Vault-WithdrawSuccess'), { variant: 'success' }); + fetchBalances({ address, web3, tokens }); + }) + .catch(error => + enqueueSnackbar(t('Vault-WithdrawError', { error }), { variant: 'error' }) + ); + } + } else { + const vaultWithdrawArgs = { + address, + web3, + isAll, + amount: sharesAmount, + contractAddress: pool.earnContractAddress, + index, + }; + if (pool.tokenAddress) { + fetchWithdraw(vaultWithdrawArgs) + .then(() => { + enqueueSnackbar(t('Vault-WithdrawSuccess'), { variant: 'success' }); + fetchBalances({ address, web3, tokens }); + }) + .catch(error => + enqueueSnackbar(t('Vault-WithdrawError', { error }), { variant: 'error' }) + ); + } else { + fetchWithdrawBnb(vaultWithdrawArgs) + .then(() => { + enqueueSnackbar(t('Vault-WithdrawSuccess'), { variant: 'success' }); + fetchBalances({ address, web3, tokens }); + }) + .catch(error => + enqueueSnackbar(t('Vault-WithdrawError', { error }), { variant: 'error' }) + ); + } + } + }; + + const withrawalNoticeKey = `Vault-Withdrawal-Platform-Notice-${pool.platform}`; + const withdrawalNotice = !sharesBalance.isZero() && i18n.exists(withrawalNoticeKey); + + return ( + + + + + + + ) + } + /> + + +
+ {pool.refund === true ? ( + + ) : ( +
+ {withdrawSettings.isNeedApproval ? ( +
+ +
+ ) : ( +
+ {pool.id === 'scream-tusd' ? ( +
+ {t( + 'There is no liquidity in the underlying protocol to withdraw. Withdrawals will be activated once more liquidity is available.' + )} +
+ ) : ( + <> + + {!withdrawSettings.isSwap && ( + + )} + + )} +
+ )} + {/* Display a platform-specific withdrawal notice */} + {/* NOTE: Temporary hack until better solution is found */} + {withdrawalNotice ? ( +
+
{t(withrawalNoticeKey)}
+
+ ) : ( + '' + )} +
+ {t('Vault-WithdrawScenario')}  + {fetchZapEstimatePending[pool.tokenAddress] && } +
    +
  1. + {t('Vault-WithdrawScenarioRedeem', { + mooToken: pool.earnedToken, + poolToken: pool.token, + })} +
  2. + {withdrawSettings.isZap && ( +
  3. + {t('Vault-WithdrawScenarioRemoveLiquidity', { + poolToken: pool.token, + tokenA: pool.assets[0], + tokenB: pool.assets[1], + })} +
  4. + )} + {withdrawSettings.isSwap && ( +
  5. + {t('Vault-WithdrawScenarioSwap', { + swapIn: `${convertAmountFromRawNumber( + pool.swapEstimate?.amountIn || 0, + withdrawSettings.swapInput.decimals + ) + .decimalPlaces(8, BigNumber.ROUND_DOWN) + .toFormat()} ${withdrawSettings.swapInput.symbol}`, + swapOut: `${convertAmountFromRawNumber( + pool.swapEstimate?.amountOut || 0, + withdrawSettings.swapOutput.decimals + ) + .decimalPlaces(8, BigNumber.ROUND_DOWN) + .toFormat()} ${withdrawSettings.swapOutput.symbol}`, + slippageTolerance: `1%`, + })} +
  6. + )} + {withdrawSettings.isSwap && ( +
  7. + {t('Vault-WithdrawScenarioTotal', { + totalOut: `${convertAmountFromRawNumber( + pool.swapEstimate?.amountOut * 2 || 0, + withdrawSettings.swapOutput.decimals + ) + .decimalPlaces(8, BigNumber.ROUND_DOWN) + .toFormat()} ${withdrawSettings.swapOutput.symbol}`, + })} +
  8. + )} +
+
+
+ )} +
+
+ ); +}; + +export default WithdrawSection; diff --git a/src/features/vault/components/PoolDetails/WithdrawSection/styles.js b/src/features/vault/components/PoolDetails/WithdrawSection/styles.js new file mode 100644 index 000000000..ba77f4f17 --- /dev/null +++ b/src/features/vault/components/PoolDetails/WithdrawSection/styles.js @@ -0,0 +1,104 @@ +import { primaryColor } from 'assets/jss/material-kit-pro-react.js'; + +const styles = theme => ({ + sliderDetailContainer: { + padding: '24px 30px', + }, + showDetailLeft: { + float: 'left', + marginBottom: '10px', + fontSize: '1rem', + lineHeight: '20px', + color: theme.palette.text.secondary, + fontWeight: '500', + }, + showDetailButtonCon: { + display: 'flex', + justifyContent: 'space-around', + '& + &': { + marginLeft: '5px', + }, + }, + showDetailButton: { + margin: '12px 5px', + fontSize: '14px', + fontWeight: 'bold', + borderRadius: '5px', + width: '160px', + }, + showDetailButtonOutlined: { + backgroundColor: 'transparent', + border: `1px solid ${theme.palette.primary.main}`, + color: primaryColor[0], + '&:hover': { + '& .MuiButton-label': { + color: 'white', + }, + }, + '& .MuiTouchRipple-root span': { + backgroundColor: primaryColor[0], + }, + }, + showDetailButtonContained: { + backgroundColor: primaryColor[0], + '& .MuiButton-label': { + color: 'white', + }, + }, + numericInput: { + color: primaryColor[0], + }, + balanceMax: { + cursor: 'pointer', + color: theme.palette.text.secondary, + borderBottom: '1px dashed', + }, + withdrawalNoticeContainer: { + position: 'absolute', + bottom: '0px', + right: '0px', + backgroundColor: theme.palette.type === 'dark' ? '#dd7217' : '#ff9f2c', + }, + withdrawalNotice: { + padding: '5px 10px', + fontSize: '14px', + fontWeight: 'bold', + color: '#ffffff', + }, + zapNote: { + width: '100%', + textAlign: 'left', + fontSize: '14px', + color: theme.palette.text.secondary, + }, + zapFormControl: { + minWidth: 'auto', + }, + zapSelect: { + border: 'none', + borderLeft: `1px solid ${theme.palette.text.secondary}`, + paddingLeft: '10px', + '& > div': { + padding: '6px 0', + }, + '&::before': { + content: 'none', + }, + '&::after': { + content: 'none', + }, + }, + showPausedMsg: { + display: 'flex', + margin: '12px 5px', + padding: '15px', + fontSize: '14px', + fontWeight: 'bold', + borderRadius: '5px', + background: `${theme.palette.background.paused}`, + border: `1px solid ${theme.palette.primary.main}`, + textAlign: 'center', + }, +}); + +export default styles; diff --git a/src/features/vault/components/PoolDetails/styles.js b/src/features/vault/components/PoolDetails/styles.js new file mode 100644 index 000000000..c07052d17 --- /dev/null +++ b/src/features/vault/components/PoolDetails/styles.js @@ -0,0 +1,103 @@ +import { primaryColor } from 'assets/jss/material-kit-pro-react.js'; + +const styles = theme => ({ + noWalletButtonCon: { + display: 'flex', + justifyContent: 'space-around', + }, + noWalletButton: { + margin: '20px 0', + fontSize: '14px', + fontWeight: 'bold', + borderRadius: '5px', + backgroundColor: primaryColor[0], + '& .MuiButton-label': { + color: 'white', + }, + }, + container: { + position: 'relative', + backgroundColor: theme.palette.background.extra, + padding: '24px', + border: '1px solid ' + theme.palette.background.border, + }, + heading: { + color: theme.palette.primary.main, + }, + summary: { + paddingTop: '24px', + paddingBottom: '24px', + }, + statusIcon: { + marginRight: '.5rem', + }, + status: { + padding: '24px', + marginBottom: '8px', + background: pool => + pool.status === 'eol' + ? theme.palette.background.retired + : pool.depositsPaused + ? theme.palette.background.paused + : theme.palette.background.primary, + }, + description: { + padding: '8px', + }, + item: { + marginBottom: '20px', + display: 'flex', + flexDirection: 'column', + alignItems: 'center', + justifyContent: 'center', + }, + itemTitle: { + [theme.breakpoints.up('sm')]: { + flexBasis: '50%', + maxWidth: '50%', + }, + [theme.breakpoints.up('md')]: { + flexBasis: '37%', + maxWidth: '37%', + }, + [theme.breakpoints.up('lg')]: { + flexBasis: '30%', + maxWidth: '30%', + }, + }, + itemBalances: { + [theme.breakpoints.up('sm')]: { + flexBasis: '25%', + maxWidth: '25%', + }, + [theme.breakpoints.up('md')]: { + flexBasis: '15%', + maxWidth: '15%', + }, + [theme.breakpoints.up('lg')]: { + flexBasis: '18%', + maxWidth: '18%', + }, + }, + itemStats: { + [theme.breakpoints.up('md')]: { + flexBasis: '11%', + maxWidth: '11%', + }, + [theme.breakpoints.up('lg')]: { + flexBasis: '11.33%', + maxWidth: '11.33%', + }, + }, + itemInner: { + textAlign: 'center', + }, + error: { + color: 'red', + }, + loading: { + color: theme.palette.primary.main, + }, +}); + +export default styles; diff --git a/src/features/vault/components/PoolSummary/ApyStats/ApyStats.js b/src/features/vault/components/PoolSummary/ApyStats/ApyStats.js new file mode 100644 index 000000000..f7b4f2fa3 --- /dev/null +++ b/src/features/vault/components/PoolSummary/ApyStats/ApyStats.js @@ -0,0 +1,199 @@ +import React, { memo } from 'react'; +import Grid from '@material-ui/core/Grid'; +import { makeStyles } from '@material-ui/core/styles'; +import styles from './styles'; +import { formatApy } from '../../../../helpers/format'; +import { isNaN } from '../../../../helpers/bignumber'; +import LabeledStat from '../LabeledStat/LabeledStat'; +import { Fade, Tooltip } from '@material-ui/core'; +import { useTranslation } from 'react-i18next'; + +const useStyles = makeStyles(styles); + +const yearlyToDaily = apy => { + const g = Math.pow(10, Math.log10(apy + 1) / 365) - 1; + + if (isNaN(g)) { + return 0; + } + + return g; +}; + +const BreakdownTooltip = memo(({ rows }) => { + const classes = useStyles(); + + return ( + + + {rows.map(row => ( + + + + + ))} + +
{row.label}{row.value}
+ ); +}); + +const YearlyBreakdownTooltip = memo(({ rates }) => { + const rows = []; + const { t } = useTranslation(); + + if ('vaultApr' in rates) { + rows.push({ + label: t('Vault-Breakdown-VaultApr'), + value: rates.vaultApr, + }); + } + + if ('tradingApr' in rates) { + rows.push({ + label: t('Vault-Breakdown-TradingApr'), + value: rates.tradingApr, + }); + } + + if ('boostApr' in rates) { + rows.push({ + label: t('Vault-Breakdown-BoostApr'), + value: rates.boostApr, + }); + } + + return ; +}); + +const DailyBreakdownTooltip = memo(({ rates }) => { + const rows = []; + const { t } = useTranslation(); + + if ('vaultDaily' in rates) { + rows.push({ + label: t('Vault-Breakdown-VaultDaily'), + value: rates.vaultDaily, + }); + } + + if ('tradingDaily' in rates) { + rows.push({ + label: t('Vault-Breakdown-TradingDaily'), + value: rates.tradingDaily, + }); + } + + if ('boostDaily' in rates) { + rows.push({ + label: t('Vault-Breakdown-BoostDaily'), + value: rates.boostDaily, + }); + } + + return ; +}); + +const LabeledStatWithTooltip = memo(({ tooltip, label, ...passthrough }) => { + const classes = useStyles(); + + return tooltip ? ( + + + {label} + + } + {...passthrough} + /> + + ) : ( + + ); +}); + +const ApyStats = ({ apy, launchpoolApr, isLoading = false, itemClasses, itemInnerClasses }) => { + const { t } = useTranslation(); + const isBoosted = !!launchpoolApr; + const values = {}; + let needsApyTooltip = false; + let needsDailyTooltip = false; + + values.totalApy = apy.totalApy; + + if ('vaultApr' in apy && apy.vaultApr) { + needsApyTooltip = true; + values.vaultApr = apy.vaultApr; + values.vaultDaily = apy.vaultApr / 365; + } + + if ('tradingApr' in apy && apy.tradingApr) { + needsApyTooltip = true; + needsDailyTooltip = true; + values.tradingApr = apy.tradingApr; + values.tradingDaily = apy.tradingApr / 365; + } + + if ('vaultAprDaily' in values || 'tradingAprDaily' in values) { + values.totalDaily = (values.vaultDaily || 0) + (values.tradingDaily || 0); + } else { + values.totalDaily = yearlyToDaily(values.totalApy); + } + + if (isBoosted) { + needsApyTooltip = true; + needsDailyTooltip = true; + values.boostApr = launchpoolApr; + values.boostDaily = launchpoolApr / 365; + values.boostedTotalApy = values.boostApr ? values.totalApy + values.boostApr : 0; + values.boostedTotalDaily = values.boostDaily ? values.totalDaily + values.boostDaily : 0; + } + + const formatted = Object.fromEntries( + Object.entries(values).map(([key, value]) => { + const formattedValue = key.toLowerCase().includes('daily') + ? formatApy(value, 4) + : formatApy(value); + return [key, formattedValue]; + }) + ); + + return ( + <> + + : null + } + boosted={isBoosted ? formatted.boostedTotalApy : ''} + isLoading={isLoading} + className={`tooltip-toggle ${itemInnerClasses}`} + /> + + + : null + } + boosted={isBoosted ? formatted.boostedTotalDaily : ''} + isLoading={isLoading} + className={`tooltip-toggle ${itemInnerClasses}`} + /> + + + ); +}; + +export default memo(ApyStats); diff --git a/src/features/vault/components/PoolSummary/ApyStats/styles.js b/src/features/vault/components/PoolSummary/ApyStats/styles.js new file mode 100644 index 000000000..be0387bac --- /dev/null +++ b/src/features/vault/components/PoolSummary/ApyStats/styles.js @@ -0,0 +1,15 @@ +const styles = theme => ({ + tooltip: { + fontSize: 14, + }, + label: { + fontWeight: 'bold', + paddingRight: '10px', + }, + value: { + fontWeight: 'normal', + textAlign: 'right', + }, +}); + +export default styles; diff --git a/src/features/vault/components/PoolSummary/LabeledStat/LabeledStat.js b/src/features/vault/components/PoolSummary/LabeledStat/LabeledStat.js new file mode 100644 index 000000000..6bb628433 --- /dev/null +++ b/src/features/vault/components/PoolSummary/LabeledStat/LabeledStat.js @@ -0,0 +1,41 @@ +import React, { forwardRef, memo } from 'react'; +import Typography from '@material-ui/core/Typography'; +import { makeStyles } from '@material-ui/core/styles'; + +import ValueLoader from '../../../../common/components/ValueLoader/ValueLoader'; +import styles from './styles'; + +const useStyles = makeStyles(styles); + +const LabeledStat = forwardRef( + ({ value, label, boosted, isLoading = false, subvalue, ...passthrough }, ref) => { + const classes = useStyles(); + + return ( +
+ + {subvalue && !isLoading ? {subvalue} : ''} + {boosted ? ( + isLoading ? ( + + ) : ( + {boosted} + ) + ) : ( + '' + )} + {isLoading ? ( + + ) : ( + {value} + )} + + + {label} + +
+ ); + } +); + +export default memo(LabeledStat); diff --git a/src/features/vault/components/PoolSummary/LabeledStat/styles.js b/src/features/vault/components/PoolSummary/LabeledStat/styles.js new file mode 100644 index 000000000..a02097d35 --- /dev/null +++ b/src/features/vault/components/PoolSummary/LabeledStat/styles.js @@ -0,0 +1,44 @@ +const styles = theme => ({ + container: { + display: 'flex', + flexDirection: 'column', + alignItems: props => (props.align ? props.align : 'center'), + justifyContent: 'center', + }, + stat: { + fontSize: '18px', + fontWeight: 'bold', + color: theme.palette.text.primary, + lineHeight: '18px', + letterSpacing: 0, + position: 'relative', + }, + substat: { + fontSize: '16px', + fontWeight: '400', + color: theme.palette.text.secondary, + width: '100%', + textAlign: 'center', + position: 'absolute', + top: '-20px', + }, + label: { + fontSize: '14px', + fontWeight: '400', + color: theme.palette.text.secondary, + lineHeight: '14px', + letterSpacing: 0, + }, + boosted: { + color: '#2a9e46', + position: 'absolute', + top: '-20px', + left: 0, + right: 0, + }, + crossed: { + textDecoration: 'line-through', + }, +}); + +export default styles; diff --git a/src/features/vault/components/PoolSummary/PoolBoosts/PoolBoosts.js b/src/features/vault/components/PoolSummary/PoolBoosts/PoolBoosts.js new file mode 100644 index 000000000..5496d4aff --- /dev/null +++ b/src/features/vault/components/PoolSummary/PoolBoosts/PoolBoosts.js @@ -0,0 +1,148 @@ +import React, { useCallback, useEffect, useMemo, useState } from 'react'; +import { useParams } from 'react-router'; +import { Link } from 'react-router-dom'; +import { launchpools } from '../../../../helpers/getNetworkData'; +import { shallowEqual, useSelector } from 'react-redux'; +import { byDecimals } from '../../../../helpers/bignumber'; +import { useLaunchpoolSubscriptions } from '../../../../stake/redux/hooks'; +import { makeStyles, withStyles } from '@material-ui/core/styles'; +import styles from './styles'; +import { useTranslation } from 'react-i18next'; +import { + Dialog, + DialogActions, + DialogContent, + DialogTitle, + Table, + TableBody, + TableCell, + TableHead, + TableRow, + useMediaQuery, +} from '@material-ui/core'; +import { formatDecimals } from '../../../../helpers/format'; +import Button from '@material-ui/core/Button'; + +const useStyles = makeStyles(styles); + +const StyledTableCell = withStyles(theme => ({ + root: { + padding: '16px 24px', + }, + head: { + fontWeight: 'bold', + }, +}))(TableCell); + +export const PoolBoosts = function ({ poolName, earnedTokenAddress }) { + const { chain } = useParams(); + const classes = useStyles(); + const { t } = useTranslation(); + const { subscribe } = useLaunchpoolSubscriptions(); + const [isDialogOpen, setIsDialogOpen] = useState(false); + const fullscreenDialog = useMediaQuery(theme => theme.breakpoints.down('xs')); + + // Find launchpools that ended less than 30 days ago + const recentLaunchpools = useMemo(() => { + const nowMinusDays = Date.now() / 1000 - 86400 * 30; + return Object.values(launchpools).filter( + lp => lp.tokenAddress === earnedTokenAddress && lp.periodFinish > nowMinusDays + ); + }, [earnedTokenAddress]); + + // Subscribe to user staked for those pools + useEffect(() => { + const unsubscribes = recentLaunchpools.map(launchpool => + subscribe(launchpool.id, { + userStaked: true, + }) + ); + + return () => unsubscribes.forEach(unsubscribe => unsubscribe()); + }, [subscribe, recentLaunchpools]); + + // Get user staked for those pools (if not zero) + const recentStaked = useSelector( + state => + Object.fromEntries( + recentLaunchpools + .map(lp => [ + lp.id, + state.stake.userStaked[lp.id] && state.stake.userStaked[lp.id] !== '0' + ? byDecimals(state.stake.userStaked[lp.id], lp.tokenDecimals) + : null, + ]) + .filter(([, staked]) => !!staked) + ), + shallowEqual + ); + + // Toggle dialog + const handleDialogOpen = useCallback(() => setIsDialogOpen(true), [setIsDialogOpen]); + const handleDialogClose = useCallback(() => setIsDialogOpen(false), [setIsDialogOpen]); + + // Count + const numStakedLaunchpools = Object.keys(recentStaked).length; + + if (!numStakedLaunchpools) { + return null; + } + + if (numStakedLaunchpools === 1) { + const launchpool = launchpools[Object.keys(recentStaked)[0]]; + return ( + + {t('Vault-Boosts-Staked-Single', { name: launchpool.name })} + + ); + } + + return ( + <> +
+ {t('Vault-Boosts-Staked-Count', { count: numStakedLaunchpools })} +
+ + + {poolName} - {t('Boosts')} + + + + + + {t('Boost')} + + {t('Stake-Balancer-Current-Staked')} + + + + + {Object.entries(recentStaked).map(([id, userStaked]) => ( + + + + {launchpools[id].name} + + + + {formatDecimals(userStaked)} {launchpools[id].token} + + + ))} + +
+
+ + + +
+ + ); +}; diff --git a/src/features/vault/components/PoolSummary/PoolBoosts/styles.js b/src/features/vault/components/PoolSummary/PoolBoosts/styles.js new file mode 100644 index 000000000..b5051a659 --- /dev/null +++ b/src/features/vault/components/PoolSummary/PoolBoosts/styles.js @@ -0,0 +1,21 @@ +const styles = theme => ({ + boosts: { + position: 'absolute', + top: 0, + right: 0, + backgroundColor: 'rgba(0,0,0,0.15)', + padding: '5px 10px', + fontSize: '14px', + fontWeight: 'bold', + color: theme.palette.primary.main, + cursor: 'pointer', + }, + link: { + color: theme.palette.primary.main, + }, + dialogContent: { + padding: 0, + }, +}); + +export default styles; diff --git a/src/features/vault/components/PoolSummary/PoolPaused/PoolPaused.js b/src/features/vault/components/PoolSummary/PoolPaused/PoolPaused.js new file mode 100644 index 000000000..d4f420ef8 --- /dev/null +++ b/src/features/vault/components/PoolSummary/PoolPaused/PoolPaused.js @@ -0,0 +1,23 @@ +import React, { memo } from 'react'; +import { makeStyles } from '@material-ui/core/styles'; + +import styles from './styles'; + +const useStyles = makeStyles(styles); + +const PoolPaused = ({ message, isBoosted, isExperimental }) => { + const classes = useStyles(); + + return ( +
+
{message}
+
+ ); +}; + +export default memo(PoolPaused); diff --git a/src/features/vault/components/PoolSummary/PoolPaused/styles.js b/src/features/vault/components/PoolSummary/PoolPaused/styles.js new file mode 100644 index 000000000..93ea221e3 --- /dev/null +++ b/src/features/vault/components/PoolSummary/PoolPaused/styles.js @@ -0,0 +1,23 @@ +const styles = theme => ({ + container: { + position: 'absolute', + top: '0px', + left: '0px', + backgroundColor: 'rgba(0,0,0,0.15)', + }, + texts: { + padding: '5px 10px', + fontSize: '14px', + fontWeight: 'bold', + }, + launchpool: { + color: '#ffffff', + backgroundColor: theme.palette.type === 'dark' ? '#3e754e' : '#5a8f69', + }, + experimental: { + color: '#ffffff', + backgroundColor: theme.palette.type === 'dark' ? '#205686' : '#3285CF', + }, +}); + +export default styles; diff --git a/src/features/vault/components/PoolSummary/PoolSummary.js b/src/features/vault/components/PoolSummary/PoolSummary.js new file mode 100644 index 000000000..93c6037bc --- /dev/null +++ b/src/features/vault/components/PoolSummary/PoolSummary.js @@ -0,0 +1,155 @@ +import React, { useCallback, useMemo } from 'react'; +import AccordionSummary from '@material-ui/core/AccordionSummary'; +import Grid from '@material-ui/core/Grid'; +import { useTranslation } from 'react-i18next'; +import BigNumber from 'bignumber.js'; +import { makeStyles } from '@material-ui/core/styles'; +import { formatTvl } from 'features/helpers/format'; +import { byDecimals } from 'features/helpers/bignumber'; +import styles from './styles'; +import PoolPaused from './PoolPaused/PoolPaused'; +import PoolTitle from './PoolTitle/PoolTitle'; +import LabeledStat from './LabeledStat/LabeledStat'; +import ApyStats from './ApyStats/ApyStats'; +import { usePoolApr } from '../../../stake/redux/subscription'; +import { PoolBoosts } from './PoolBoosts/PoolBoosts'; +import { getRetireReason } from './RetireReason/RetireReason'; +import { getPoolWarning } from './PoolWarning/PoolWarning'; + +const useStyles = makeStyles(styles); + +const PoolSummary = ({ + pool, + launchpool, + toggleCard, + balanceSingle, + sharesBalance, + apy, + fetchBalancesDone, + fetchApysDone, + fetchVaultsDataDone, + multipleLaunchpools = false, +}) => { + const { t } = useTranslation(); + const classes = useStyles(); + + const launchpoolApr = usePoolApr(launchpool ? launchpool.id : null); + const vaultStateTitle = useMemo(() => { + let state = + pool.status === 'eol' + ? t(getRetireReason(pool.retireReason)) + : pool.depositsPaused + ? t('Vault-DepositsPausedTitle') + : pool.showWarning + ? t(getPoolWarning(pool.warning), { name: pool.name, platform: pool.platform }) + : null; + + if (launchpool) { + state = t('Stake-BoostedBy', { name: launchpool.name }); + } + + if (pool.experimental) { + state = t('Vault-Experimental'); + } + + return state === null ? ( + '' + ) : ( + + ); + }, [pool, launchpool, t]); + + const balanceUsd = + balanceSingle > 0 && fetchVaultsDataDone ? formatTvl(balanceSingle, pool.oraclePrice) : ''; + const deposited = byDecimals( + sharesBalance.multipliedBy(new BigNumber(pool.pricePerFullShare)), + pool.tokenDecimals + ); + const depositedUsd = + deposited > 0 && fetchVaultsDataDone ? formatTvl(deposited, pool.oraclePrice) : ''; + const onSummaryClick = useCallback( + e => { + if (!e.target || !e.target.classList.contains('tooltip-toggle')) { + toggleCard(); + } + }, + [toggleCard] + ); + + return ( + + + {vaultStateTitle} + + + + + + + + + + + + + + + + + ); +}; + +const formatDecimals = number => { + return number >= 10 ? number.toFixed(4) : number.isEqualTo(0) ? 0 : number.toFixed(8); +}; + +export default PoolSummary; diff --git a/src/features/vault/components/PoolSummary/PoolTitle/PoolTitle.js b/src/features/vault/components/PoolSummary/PoolTitle/PoolTitle.js new file mode 100644 index 000000000..eedbe5c8a --- /dev/null +++ b/src/features/vault/components/PoolSummary/PoolTitle/PoolTitle.js @@ -0,0 +1,144 @@ +import React, { memo } from 'react'; +import { useParams } from 'react-router'; +import { Link } from 'react-router-dom'; +import { useTranslation } from 'react-i18next'; +import Avatar from '@material-ui/core/Avatar'; +import AvatarGroup from '@material-ui/lab/AvatarGroup'; +import Grid from '@material-ui/core/Grid'; +import Typography from '@material-ui/core/Typography'; +import { makeStyles } from '@material-ui/core/styles'; +import { getSingleAssetSrc } from '../../../../helpers/getSingleAssetSrc'; + +import styles from './styles'; + +const useStyles = makeStyles(styles); + +const PoolTitle = ({ + name, + logo, + poolId, + description, + launchpool, + buyTokenUrl, + addLiquidityUrl, + removeLiquidityUrl, + mintTokenUrl, + assets, + multipleLaunchpools = false, +}) => { + const { chain } = useParams(); + + const classes = useStyles(); + const { t } = useTranslation(); + + let avatar; + if (logo) { + avatar = ( + + ); + } else { + avatar = ( + + + + + ); + } + + return ( + + {avatar} +
+ + {poolId ? ( + + {name} + + ) : ( + name + )} + + + {description} + +
+ {buyTokenUrl ? ( + + {name === 'WBNB' ? t('Wrap-BNB') : t('Buy-Token')} + {'\u00A0\u00A0'} + + ) : ( + '' + )} + {addLiquidityUrl ? ( + + {t('Add-Liquidity')} + + ) : ( + '' + )} + {removeLiquidityUrl ? ( + + {t('Remove-Liquidity')} + + ): ( + '' + )} + {mintTokenUrl ? ( + + {t('Mint-Token')} + + ) : ( + '' + )} +
+ {launchpool ? ( + + Boost + + Fire + + + ) : ( + '' + )} +
+
+ ); +}; + +export default memo(PoolTitle); diff --git a/src/features/vault/components/PoolSummary/PoolTitle/styles.js b/src/features/vault/components/PoolSummary/PoolTitle/styles.js new file mode 100644 index 000000000..40bbc3219 --- /dev/null +++ b/src/features/vault/components/PoolSummary/PoolTitle/styles.js @@ -0,0 +1,81 @@ +const styles = theme => ({ + texts: { + marginLeft: '20px', + }, + title: { + fontSize: '18px', + fontWeight: 'bold', + color: theme.palette.text.primary, + lineHeight: '18px', + letterSpacing: 0, + minWidth: '150px', + }, + subtitle: { + fontSize: '14px', + fontWeight: '400', + color: theme.palette.text.secondary, + lineHeight: '14px', + letterSpacing: 0, + }, + url: { + fontSize: '16px', + fontWeight: '600', + color: theme.palette.text.primary, + lineHeight: '14px', + letterSpacing: 0, + '&:hover,&:focus': { + color: theme.palette.text.secondary, + }, + }, + icon: { + color: theme.palette.text.primary, + marginLeft: '4px', + 'flex-shrink': 0, + width: '45px', + height: '45px', + '& .MuiAvatarGroup-avatar': { + border: 'none', + width: '65%', + height: '65%', + '&:first-child': { + position: 'absolute', + top: 0, + left: 0, + }, + '&:last-child': { + position: 'absolute', + bottom: 0, + right: 0, + }, + }, + }, + btnBoost: { + marginTop: '8px', + marginRight: '5px', + padding: '4px 26px 4px 6px', + border: 'solid 2px #5a8f69', + borderRadius: '4px', + height: '32px', + whiteSpace: 'nowrap', + position: 'relative', + width: '108px', + display: 'block', + '& span': { + position: 'absolute', + top: 0, + right: 0, + }, + '& img': { + verticalAlign: 'middle', + }, + '&:hover': { + backgroundColor: '#5a8f69', + }, + '&:hover img': { + filter: + 'invert(100%) sepia(100%) saturate(0%) hue-rotate(288deg) brightness(1000%) contrast(1000%)', + }, + }, +}); + +export default styles; diff --git a/src/features/vault/components/PoolSummary/PoolWarning/PoolWarning.js b/src/features/vault/components/PoolSummary/PoolWarning/PoolWarning.js new file mode 100644 index 000000000..4b09eb312 --- /dev/null +++ b/src/features/vault/components/PoolSummary/PoolWarning/PoolWarning.js @@ -0,0 +1,14 @@ +const poolWarningMap = { + liquidity: 'Vault-LiquidityWarningTitle', + lending: 'Vault-LendingWarningTitle', + generalWarning: 'Vault-GeneralWarningTitle' +}; + +export const getPoolWarning = key => { + if (key in poolWarningMap) { + const warning = poolWarningMap[key]; + return warning; + } else { + return poolWarningMap['generalWarning']; + } +}; diff --git a/src/features/vault/components/PoolSummary/RetireReason/RetireReason.js b/src/features/vault/components/PoolSummary/RetireReason/RetireReason.js new file mode 100644 index 000000000..6d0b64578 --- /dev/null +++ b/src/features/vault/components/PoolSummary/RetireReason/RetireReason.js @@ -0,0 +1,16 @@ +const retireReasonMap = { + rewards: 'Vault-DepositsRetiredRewardsTitle', + exploit: 'Vault-DepositsRetiredExploitTitle', + tvl: 'Vault-DepositsRetiredTVLTitle', + noReason: 'Vault-DepositsRetiredTitle', + upgrade: 'Vault-DepositsRetiredUpgradeTitle', +}; + +export const getRetireReason = key => { + if (key in retireReasonMap) { + const reason = retireReasonMap[key]; + return reason; + } else { + return retireReasonMap['noReason']; + } +}; diff --git a/src/features/vault/components/PoolSummary/styles.js b/src/features/vault/components/PoolSummary/styles.js new file mode 100644 index 000000000..d976af9ab --- /dev/null +++ b/src/features/vault/components/PoolSummary/styles.js @@ -0,0 +1,73 @@ +const styles = theme => ({ + details: { + display: 'flex', + alignItems: 'center', + background: theme.palette.background.primary, + }, + detailsPaused: { + display: 'flex', + alignItems: 'center', + background: theme.palette.background.paused, + }, + detailsRetired: { + display: 'flex', + alignItems: 'center', + background: theme.palette.background.retired, + }, + mobilePadding: { + paddingTop: '20px', + [theme.breakpoints.up('sm')]: { + paddingTop: 0, + }, + }, + item: { + marginBottom: '20px', + display: 'flex', + flexDirection: 'column', + alignItems: 'center', + justifyContent: 'center', + }, + itemTitle: { + [theme.breakpoints.up('sm')]: { + flexBasis: '50%', + maxWidth: '50%', + }, + [theme.breakpoints.up('md')]: { + flexBasis: '37%', + maxWidth: '37%', + }, + [theme.breakpoints.up('lg')]: { + flexBasis: '30%', + maxWidth: '30%', + }, + }, + itemBalances: { + [theme.breakpoints.up('sm')]: { + flexBasis: '25%', + maxWidth: '25%', + }, + [theme.breakpoints.up('md')]: { + flexBasis: '15%', + maxWidth: '15%', + }, + [theme.breakpoints.up('lg')]: { + flexBasis: '18%', + maxWidth: '18%', + }, + }, + itemStats: { + [theme.breakpoints.up('md')]: { + flexBasis: '11%', + maxWidth: '11%', + }, + [theme.breakpoints.up('lg')]: { + flexBasis: '11.33%', + maxWidth: '11.33%', + }, + }, + itemInner: { + textAlign: 'center', + }, +}); + +export default styles; diff --git a/src/features/vault/components/Pools/Pools.js b/src/features/vault/components/Pools/Pools.js new file mode 100644 index 000000000..a134c5109 --- /dev/null +++ b/src/features/vault/components/Pools/Pools.js @@ -0,0 +1,126 @@ +import React, { useEffect } from 'react'; +import { useTranslation } from 'react-i18next'; +import { makeStyles } from '@material-ui/core/styles'; +import AllInclusiveIcon from '@material-ui/icons/AllInclusive'; +import Grid from '@material-ui/core/Grid'; + +import TVLLoader from './TVLLoader/TVLLoader'; +import NetworksToggle from 'components/NetworksToggle/NetworksToggle'; +import { useConnectWallet } from 'features/home/redux/hooks'; +import { useFetchBalances, useFetchVaultsData, useFetchApys } from '../../redux/hooks'; +import VisiblePools from '../VisiblePools/VisiblePools'; +import styles from './styles'; +import { usePoolsTvl, useUserTvl } from '../../hooks/usePoolsTvl'; +import { formatGlobalTvl } from 'features/helpers/format'; +import { useFetchBifibuyback } from 'features/vault/redux/fetchBifiBuyback'; +import { getNetworkFriendlyName } from '../../../helpers/getNetworkData'; + +const FETCH_INTERVAL_MS = 15 * 1000; + +const useStyles = makeStyles(styles); + +export default function Pools() { + const { t } = useTranslation(); + const { web3, address } = useConnectWallet(); + const { pools, fetchVaultsData, fetchVaultsDataPending, fetchVaultsDataDone } = + useFetchVaultsData(); + const { tokens, fetchBalances, fetchBalancesPending, fetchBalancesDone } = useFetchBalances(); + const { apys, fetchApys, fetchApysDone } = useFetchApys(); + const { bifibuyback, fetchBifibuyback, fetchBifibuybackDone } = useFetchBifibuyback(); + const { poolsTvl } = usePoolsTvl(pools); + const { userTvl } = useUserTvl(pools, tokens); + const classes = useStyles(); + + useEffect(() => { + fetchApys(); + const id = setInterval(fetchApys, FETCH_INTERVAL_MS); + return () => clearInterval(id); + }, [fetchApys]); + + useEffect(() => { + fetchBifibuyback(); + const id = setInterval(fetchBifibuyback, FETCH_INTERVAL_MS); + return () => clearInterval(id); + }, [fetchBifibuyback]); + + useEffect(() => { + const fetch = () => { + if (address && web3 && !fetchBalancesPending) { + fetchBalances({ address, web3, tokens }); + } + if (!fetchVaultsDataPending) { + fetchVaultsData({ web3, pools }); + } + }; + fetch(); + + const id = setInterval(fetch, FETCH_INTERVAL_MS); + return () => clearInterval(id); + + // Adding tokens and pools to this dep list, causes an endless loop, DDoSing the api + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [address, web3, fetchBalances, fetchVaultsData]); + + const chainNameLowercase = getNetworkFriendlyName().toLowerCase(); + const chainBifibuyback = + fetchBifibuybackDone && chainNameLowercase in bifibuyback + ? bifibuyback[chainNameLowercase].buybackUsdAmount + : undefined; + + const activePoolCount = pools.filter(pool => pool.status === 'active').length; + + return ( + + +

{t('Vault-Network')}

+ + {fetchVaultsDataDone && activePoolCount && ( + <> + {`${activePoolCount} ${t('Vault-MainTitle')}`} + + )} +
+ +
+ + TVL{' '} + {fetchVaultsDataDone && poolsTvl > 0 ? ( + formatGlobalTvl(poolsTvl) + ) : ( + + )} + + + {fetchBifibuybackDone && chainBifibuyback && ( + + {t('Vault-BifiBuyback', { amount: formatGlobalTvl(chainBifibuyback) })} + + )} + + + {t('Vault-Deposited')}{' '} + {fetchVaultsDataDone && fetchBalancesDone ? ( + formatGlobalTvl(userTvl) + ) : ( + + )} + + +

+ + {t('Vault-AutocompoundingNote')} +

+
+
+ + +
+ ); +} diff --git a/src/features/vault/components/Pools/TVLLoader/TVLLoader.js b/src/features/vault/components/Pools/TVLLoader/TVLLoader.js new file mode 100644 index 000000000..7bd3c3d1b --- /dev/null +++ b/src/features/vault/components/Pools/TVLLoader/TVLLoader.js @@ -0,0 +1,22 @@ +import React from 'react'; +import { useTheme } from '@material-ui/core/styles'; +import ContentLoader from 'react-content-loader'; + +const Loader = props => { + const theme = useTheme(); + + return ( + + + + ); +}; + +export default Loader; diff --git a/src/features/vault/components/Pools/styles.js b/src/features/vault/components/Pools/styles.js new file mode 100644 index 000000000..df37abeb3 --- /dev/null +++ b/src/features/vault/components/Pools/styles.js @@ -0,0 +1,46 @@ +const styles = theme => ({ + container: { + paddingTop: '4px', + }, + tvl: { + display: 'flex', + flexDirection: 'column', + alignItems: 'flex-end', + }, + title: { + fontSize: '32px', + letterSpacing: '0', + lineHeight: '32px', + fontWeight: '550', + color: theme.palette.text.primary, + display: 'flex', + alignItems: 'center', + }, + titleLoader: { + marginLeft: '12px', + }, + subtitle: { + letterSpacing: '0', + lineHeight: '8px', + [theme.breakpoints.down('xs')]: { + lineHeight: '16px', + }, + color: theme.palette.text.secondary, + marginTop: '0', + }, + text: { + fontSize: '24px', + letterSpacing: '0', + lineHeight: '32px', + fontWeight: '550', + color: theme.palette.text.primary, + display: 'flex', + alignItems: 'center', + }, + infinityIcon: { + marginBottom: '-6px', + paddingRight: '5px', + }, +}); + +export default styles; diff --git a/src/features/vault/components/ScrollToTop/ScrollToTop.js b/src/features/vault/components/ScrollToTop/ScrollToTop.js new file mode 100644 index 000000000..3cbf60325 --- /dev/null +++ b/src/features/vault/components/ScrollToTop/ScrollToTop.js @@ -0,0 +1,9 @@ +import { useEffect } from 'react'; + +export default function ScrollToTop() { + useEffect(() => { + window.scrollTo(0, 0); + }, []); + + return null; +} diff --git a/src/features/vault/components/VisiblePools/VisiblePools.js b/src/features/vault/components/VisiblePools/VisiblePools.js new file mode 100644 index 000000000..c6a47b0d7 --- /dev/null +++ b/src/features/vault/components/VisiblePools/VisiblePools.js @@ -0,0 +1,76 @@ +import React from 'react'; + +import InfiniteScroll from 'react-infinite-scroll-component'; +import { useTranslation } from 'react-i18next'; +import { makeStyles } from '@material-ui/core/styles'; +import styles from './styles'; + +import useFilteredPools from '../../hooks/useFilteredPools'; +import usePoolsByPlatform from '../../hooks/usePoolsByPlatform'; +import usePoolsByVaultType from '../../hooks/usePoolsByVaultType'; +import usePoolsByAsset from '../../hooks/usePoolsByAsset'; +import useSortedPools from '../../hooks/useSortedPools'; +import useVisiblePools from '../../hooks/useVisiblePools'; + +import Pool from '../Pool/Pool'; +import Filters from '../Filters/Filters'; +import { useLaunchpoolUpdates } from '../../../stake/redux/hooks'; + +const useStyles = makeStyles(styles); + +const VisiblePools = ({ + pools, + tokens, + apys, + fetchBalancesDone, + fetchApysDone, + fetchVaultsDataDone, +}) => { + const classes = useStyles(); + const { t } = useTranslation(); + + const { filteredPools, toggleFilter, filters } = useFilteredPools(pools, tokens); + const { poolsByPlatform, platform, setPlatform } = usePoolsByPlatform(filteredPools); + const { poolsByVaultType, vaultType, setVaultType } = usePoolsByVaultType(poolsByPlatform); + const { poolsByAsset, asset, setAsset } = usePoolsByAsset(poolsByVaultType); + const { sortedPools, order, setOrder } = useSortedPools(poolsByAsset, apys, tokens); + const { visiblePools, fetchVisiblePools } = useVisiblePools(sortedPools, 10); + + useLaunchpoolUpdates(); + + return ( + <> + +
+ + {visiblePools.map((pool, index) => ( + + ))} + +
+ {!sortedPools.length &&

{t('No-Results')}

} + + ); +}; + +export default VisiblePools; diff --git a/src/features/vault/components/VisiblePools/styles.js b/src/features/vault/components/VisiblePools/styles.js new file mode 100644 index 000000000..0d174766e --- /dev/null +++ b/src/features/vault/components/VisiblePools/styles.js @@ -0,0 +1,17 @@ +const styles = theme => ({ + scroller: { + width: '100%', + }, + subtitle: { + fontSize: '20px', + letterSpacing: '0', + lineHeight: '8px', + [theme.breakpoints.down('xs')]: { + lineHeight: '16px', + }, + fontWeight: '550', + color: theme.palette.text.primary, + }, +}); + +export default styles; diff --git a/src/features/vault/hooks/useFilteredPools.js b/src/features/vault/hooks/useFilteredPools.js new file mode 100644 index 000000000..c3317a4d7 --- /dev/null +++ b/src/features/vault/hooks/useFilteredPools.js @@ -0,0 +1,156 @@ +import { useState, useEffect, useCallback, useMemo } from 'react'; +import useFilterStorage from '../../home/hooks/useFiltersStorage'; +import { shallowEqual, useSelector } from 'react-redux'; +import { useLaunchpoolSubscriptions } from '../../stake/redux/subscription'; +import { launchpools } from '../../helpers/getNetworkData'; + +const DEFAULT = { + hideDecomissioned: true, + hideZeroBalances: false, + hideZeroVaultBalances: false, + showBoosted: false, + showExperimental: false, +}; + +const KEY = 'filteredPools'; + +function useRecentStakedLaunchpools(maxAgeDays = 30) { + const { subscribe } = useLaunchpoolSubscriptions(); + const poolFinish = useSelector(state => state.stake.poolFinish, shallowEqual); + const userStaked = useSelector(state => state.stake.userStaked, shallowEqual); + + const recentLaunchpools = useMemo(() => { + const nowMinusDays = Date.now() / 1000 - 86400 * maxAgeDays; + return Object.values(launchpools).filter( + lp => poolFinish[lp.id] && poolFinish[lp.id] > nowMinusDays + ); + }, [poolFinish, maxAgeDays]); + + useEffect(() => { + const unsubscribes = recentLaunchpools.map(launchpool => + subscribe(launchpool.id, { + userStaked: true, + }) + ); + + return () => unsubscribes.forEach(unsubscribe => unsubscribe()); + }, [subscribe, recentLaunchpools]); + + return useMemo(() => { + return recentLaunchpools.filter(lp => userStaked[lp.id] && userStaked[lp.id] !== '0'); + }, [recentLaunchpools, userStaked]); +} + +function getLaunchpoolsForVault(vault, launchpools) { + return Object.values(launchpools).filter(lp => lp.tokenAddress === vault.earnedTokenAddress); +} + +const useFilteredPools = (pools, tokens) => { + const { getStorage, setStorage } = useFilterStorage(); + const vaultLaunchpools = useSelector(state => state.vault.vaultLaunchpool); + const recentStakedLaunchpools = useRecentStakedLaunchpools(); + const data = getStorage(KEY); + const [filters, setFilters] = useState(data ? data : DEFAULT); + + const toggleFilter = useCallback( + key => { + const newFilters = { ...filters }; + newFilters[key] = !filters[key]; + setFilters(newFilters); + }, + [filters, setFilters] + ); + + useEffect(() => { + setStorage(KEY, filters); + }, [setStorage, filters]); + + let filteredPools = [...pools]; + + if (filters.resetAll) { + setFilters(DEFAULT); + } + + if (filters.hideZeroBalances) { + filteredPools = hideZeroBalances(filteredPools, tokens, recentStakedLaunchpools); + } + + if (filters.hideZeroVaultBalances) { + filteredPools = hideZeroVaultBalances(filteredPools, tokens, recentStakedLaunchpools); + } + + if (filters.hideDecomissioned) { + filteredPools = hideDecomissioned(filteredPools, tokens); + } + + if (filters.showBoosted) { + filteredPools = showBoosted(filteredPools, vaultLaunchpools); + } + + filteredPools = Experimental(filteredPools, filters.showExperimental); + + return { filteredPools, toggleFilter, filters }; +}; + +function Experimental(pools, show) { + return pools.filter(pool => { + return show ? pool.experimental : !pool.experimental; + }); +} + +function showBoosted(pools, vaultLaunchpools) { + return pools.filter(pool => { + return !!vaultLaunchpools[pool.id]; + }); +} + +function hideDecomissioned(pools, tokens) { + return pools.filter(pool => { + return ( + (pool.status !== 'eol' && pool.status !== 'refund') || + (tokens[pool.earnedToken] && tokens[pool.earnedToken].tokenBalance > 0) + ); + }); +} + +function hideZeroBalances(pools, tokens, recentStakedLaunchpools) { + return pools.filter(pool => { + if (tokens[pool.token]) { + if (tokens[pool.token].tokenBalance > 0) { + return true; + } + } + + if (tokens[pool.earnedToken]) { + if (tokens[pool.earnedToken].tokenBalance > 0) { + return true; + } + } + + const launchpools = getLaunchpoolsForVault(pool, recentStakedLaunchpools); + if (launchpools.length) { + return true; + } + + return false; + }); +} + +function hideZeroVaultBalances(pools, tokens, recentStakedLaunchpools) { + return pools.filter(pool => { + if (tokens[pool.earnedToken]) { + if (tokens[pool.earnedToken].tokenBalance > 0) { + return true; + } + } + + const launchpools = getLaunchpoolsForVault(pool, recentStakedLaunchpools); + if (launchpools.length) { + return true; + } + + return false; + }); +} + +export default useFilteredPools; diff --git a/src/features/vault/hooks/usePoolsByAsset.js b/src/features/vault/hooks/usePoolsByAsset.js new file mode 100644 index 000000000..1f56e65fa --- /dev/null +++ b/src/features/vault/hooks/usePoolsByAsset.js @@ -0,0 +1,25 @@ +import { useState, useEffect } from 'react'; +import useFilterStorage from '../../home/hooks/useFiltersStorage'; + +const DEFAULT = 'All'; +const KEY = 'poolsByAsset'; + +const usePoolsByAsset = pools => { + const { getStorage, setStorage } = useFilterStorage(); + const data = getStorage(KEY); + + const [asset, setAsset] = useState(data ? data : DEFAULT); + + useEffect(() => { + setStorage(KEY, asset); + }, [setStorage, asset]); + + let poolsByAsset = pools; + if (asset !== DEFAULT) { + poolsByAsset = pools.filter(pool => pool.assets.includes(asset)); + } + + return { poolsByAsset, asset, setAsset }; +}; + +export default usePoolsByAsset; diff --git a/src/features/vault/hooks/usePoolsByPlatform.js b/src/features/vault/hooks/usePoolsByPlatform.js new file mode 100644 index 000000000..7097398dc --- /dev/null +++ b/src/features/vault/hooks/usePoolsByPlatform.js @@ -0,0 +1,26 @@ +import { useState, useEffect } from 'react'; +import useFilterStorage from '../../home/hooks/useFiltersStorage'; + +const DEFAULT = 'All'; +const KEY = 'poolsByPlatform'; + +const usePoolsByPlatform = pools => { + const { getStorage, setStorage } = useFilterStorage(); + const data = getStorage(KEY); + + const [platform, setPlatform] = useState(data ? data : DEFAULT); + + useEffect(() => { + setStorage(KEY, platform); + }, [setStorage, platform]); + + let poolsByPlatform = pools; + if (platform !== DEFAULT) { + const newPools = pools.filter(pool => pool.platform === platform); + poolsByPlatform = newPools; + } + + return { poolsByPlatform, platform, setPlatform }; +}; + +export default usePoolsByPlatform; diff --git a/src/features/vault/hooks/usePoolsByVaultType.js b/src/features/vault/hooks/usePoolsByVaultType.js new file mode 100644 index 000000000..225e62e99 --- /dev/null +++ b/src/features/vault/hooks/usePoolsByVaultType.js @@ -0,0 +1,37 @@ +import { useState, useEffect } from 'react'; +import { stables } from '../components/Filters/constants.js'; +import useFilterStorage from '../../home/hooks/useFiltersStorage'; + +const DEFAULT = 'All'; +const KEY = 'poolsByVaultType'; + +const usePoolsByVaultType = pools => { + const { getStorage, setStorage } = useFilterStorage(); + const data = getStorage(KEY); + + const [vaultType, setVaultType] = useState(data ? data : DEFAULT); + + useEffect(() => { + setStorage(KEY, vaultType); + }, [setStorage, vaultType]); + + let newPools = []; + + if (vaultType === 'Singles') { + newPools = pools.filter(pool => pool.assets.length === 1); + } else { + const isStable = vaultType => stables.includes(vaultType); + if (vaultType === 'StableLPs') { + newPools = pools.filter(pool => pool.assets.every(isStable)); // every + } else if (vaultType === 'Stables') { + newPools = pools.filter(pool => pool.assets.some(isStable)); // some + } + } + + let poolsByVaultType; + poolsByVaultType = vaultType === 'All' ? pools : newPools; + + return { poolsByVaultType, vaultType, setVaultType }; +}; + +export default usePoolsByVaultType; diff --git a/src/features/vault/hooks/usePoolsTvl.js b/src/features/vault/hooks/usePoolsTvl.js new file mode 100644 index 000000000..8eaaf4e66 --- /dev/null +++ b/src/features/vault/hooks/usePoolsTvl.js @@ -0,0 +1,54 @@ +import BigNumber from 'bignumber.js'; +import { useState, useEffect } from 'react'; +import { byDecimals } from '../../helpers/bignumber'; + +const usePoolsTvl = pools => { + const [poolsTvl, setPoolsTvl] = useState(0); + + useEffect(() => { + let globalTvl = 0; + + pools.filter(isUniqueEarnContract).forEach(({ tvl, oraclePrice }) => { + globalTvl += tvl * oraclePrice; + }); + + setPoolsTvl(globalTvl); + }, [pools]); + + return { poolsTvl }; +}; + +const useUserTvl = (pools, tokens) => { + const [userTvl, setUserTvl] = useState(0); + + useEffect(() => { + let userTvl = 0; + + pools.filter(isUniqueEarnContract).forEach(pool => { + const sharesBalance = tokens[pool.earnedToken].launchpoolTokenBalance + ? new BigNumber.sum( + tokens[pool.earnedToken].launchpoolTokenBalance, + tokens[pool.earnedToken].tokenBalance + ) + : new BigNumber(tokens[pool.earnedToken].tokenBalance); + if (sharesBalance > 0) { + const deposited = byDecimals( + sharesBalance.multipliedBy(new BigNumber(pool.pricePerFullShare)), + pool.tokenDecimals + ); + userTvl += deposited * pool.oraclePrice; + } + }); + + setUserTvl(userTvl); + }, [pools, tokens]); + + return { userTvl }; +}; + +const isUniqueEarnContract = (pool, index, pools) => { + const earnContractAddress = pool.earnContractAddress; + return pools.findIndex(p => p.earnContractAddress === earnContractAddress) === index; +}; + +export { usePoolsTvl, useUserTvl }; diff --git a/src/features/vault/hooks/useSortedPools.js b/src/features/vault/hooks/useSortedPools.js new file mode 100644 index 000000000..cb227797a --- /dev/null +++ b/src/features/vault/hooks/useSortedPools.js @@ -0,0 +1,73 @@ +import { useState, useEffect } from 'react'; +import useFilterStorage from '../../home/hooks/useFiltersStorage'; + +const DEFAULT = 'default'; +const KEY = 'sortedPools'; + +const useSortedPools = (pools, apys, tokens) => { + const { getStorage, setStorage } = useFilterStorage(); + const data = getStorage(KEY); + + const [order, setOrder] = useState(data ? data : DEFAULT); + + useEffect(() => { + setStorage(KEY, order); + }, [setStorage, order]); + + let sortedPools = pools; + switch (order) { + case 'apy': + sortedPools = handleApy(pools, apys); + break; + case 'tvl': + sortedPools = handleTvl(pools); + break; + default: + break; + } + + sortedPools = showDecommissionedFirst(sortedPools, tokens); + + return { sortedPools, order, setOrder }; +}; + +const handleApy = (pools, apys) => { + const newPools = [...pools]; + return newPools.sort((a, b) => { + if (apys[a.id] === apys[b.id]) { + return 0; + } else if (apys[a.id] === undefined) { + return 1; + } else if (apys[b.id] === undefined) { + return -1; + } + + return apys[b.id].totalApy - apys[a.id].totalApy; + }); +}; + +const handleTvl = pools => { + const newPools = [...pools]; + return newPools.sort((a, b) => { + const aPrice = a.oraclePrice; + const bPrice = b.oraclePrice; + return b.tvl * bPrice - a.tvl * aPrice; + }); +}; + +function showDecommissionedFirst(pools, tokens) { + for (let i = 0; i < pools.length; i++) { + // if ( EOL or REFUND ) AND (Deposited Balance > 0) + if ( + (pools[i].status === 'eol' || pools[i].status === 'refund') && + tokens[pools[i].earnedToken] && + tokens[pools[i].earnedToken].tokenBalance > 0 + ) { + // Remove Vault from pools, insert it at the top. + pools.splice(0, 0, pools.splice(i, 1)[0]); + } + } + return pools; +} + +export default useSortedPools; diff --git a/src/features/vault/hooks/useVisiblePools.js b/src/features/vault/hooks/useVisiblePools.js new file mode 100644 index 000000000..0ea1dd7ac --- /dev/null +++ b/src/features/vault/hooks/useVisiblePools.js @@ -0,0 +1,20 @@ +import { useState } from 'react'; + +const useVisiblePools = (pools, chunk) => { + const [visibleCount, setVisibleCount] = useState(chunk); + + let visiblePools = pools.slice(0, visibleCount); + + const fetchVisiblePools = () => { + if (visibleCount >= pools.length) return; + + // Concat visible pools with new chunk + const newPools = pools.slice(visibleCount, visibleCount + chunk); + visiblePools = visiblePools.concat(newPools); + setVisibleCount(visibleCount + chunk); + }; + + return { visiblePools, fetchVisiblePools }; +}; + +export default useVisiblePools; diff --git a/src/features/vault/jss/sections/sectionModalStyle.js b/src/features/vault/jss/sections/sectionModalStyle.js deleted file mode 100644 index 1c1740a61..000000000 --- a/src/features/vault/jss/sections/sectionModalStyle.js +++ /dev/null @@ -1,163 +0,0 @@ -import { - grayColor, - whiteColor -} from "assets/jss/material-kit-pro-react.js"; - -const sectionModalStyle = theme => ({ - modalRoot: { - overflow: "auto", - display: "block" - }, - modal: { - [theme.breakpoints.up("sm")]: { - maxWidth: "500px", - margin: "auto" - }, - borderRadius: "6px", - overflow: "visible", - maxHeight: "unset", - width: "100%", - marginTop: "130px !important" - }, - modalHeader: { - borderBottom: "none", - paddingTop: "24px", - paddingRight: "24px", - paddingBottom: "0", - paddingLeft: "24px", - minHeight: "16.43px" - }, - modalTitle: { - margin: "0", - lineHeight: "1.5" - }, - modalCloseButton: { - "&, &:hover": { - color: grayColor[0] - }, - "&:hover": { - opacity: "1" - }, - cursor: "pointer", - padding: "1rem", - margin: "-1rem -1rem -1rem auto", - backgroundColor: "transparent", - border: "0", - WebkitAppearance: "none", - float: "right", - fontSize: "1.5rem", - fontWeight: "500", - lineHeight: "1", - textShadow: "0 1px 0 " + whiteColor, - opacity: ".5" - }, - modalClose: { - width: "16px", - height: "16px" - }, - modalBody: { - paddingTop: "24px", - paddingRight: "24px", - paddingBottom: "16px", - paddingLeft: "24px", - position: "relative", - overflow: "visible" - }, - modalFooter: { - padding: "15px", - textAlign: "right", - paddingTop: "0", - margin: "0" - }, - modalFooterCenter: { - marginLeft: "auto", - marginRight: "auto" - }, - instructionNoticeModal: { - marginBottom: "25px" - }, - imageNoticeModal: { - maxWidth: "150px" - }, - modalLarge: { - [theme.breakpoints.up("md")]: { - maxWidth: "800px" - } - }, - modalSmall: { - [theme.breakpoints.up("sm")]: { - width: "300px", - margin: "auto" - }, - margin: "0 auto" - }, - modalSmallBody: { - marginTop: "20px" - }, - modalSmallFooterFirstButton: { - margin: "0", - paddingLeft: "16px", - paddingRight: "16px", - width: "auto" - }, - modalSmallFooterSecondButton: { - marginBottom: "0", - marginLeft: "5px" - }, - modalLogin: { - maxWidth: "360px", - overflowY: "visible", - width: "100%", - "& $modalCloseButton": { - color: whiteColor, - top: "-10px", - right: "10px", - textShadow: "none", - position: "relative" - }, - "& $modalHeader": { - borderBottom: "none", - paddingTop: "24px", - paddingRight: "24px", - paddingBottom: "0", - paddingLeft: "24px" - }, - "& $modalBody": { - paddingBottom: "0", - paddingTop: "0" - }, - "& $modalFooter": { - paddingBottom: "0", - paddingTop: "0" - } - }, - modalLoginCard: { - marginBottom: "0", - margin: "0", - "& $modalHeader": { - paddingTop: "0" - } - }, - modalSignup: { - maxWidth: "900px", - width: "100%", - "& $modalHeader": { - paddingTop: "0" - }, - "& $modalTitle": { - textAlign: "center", - width: "100%", - marginTop: "0.625rem" - }, - "& $modalBody": { - paddingBottom: "0", - paddingTop: "0" - } - }, - modalSignupCard: { - padding: "40px 0", - margin: "0" - } -}); - -export default sectionModalStyle; \ No newline at end of file diff --git a/src/features/vault/jss/sections/sectionPoolsStyle.js b/src/features/vault/jss/sections/sectionPoolsStyle.js deleted file mode 100644 index f0004dc9a..000000000 --- a/src/features/vault/jss/sections/sectionPoolsStyle.js +++ /dev/null @@ -1,255 +0,0 @@ -import { - title, - mrAuto, - mlAuto, - primaryColor, - hoverColor, - grayColor, -} from "assets/jss/material-kit-pro-react.js"; - -import checkboxes from "assets/jss/material-kit-pro-react/customCheckboxRadioSwitchStyle.js"; -import buttonGroup from "assets/jss/material-kit-pro-react/buttonGroupStyle.js"; -import tooltips from "assets/jss/material-kit-pro-react/tooltipsStyle.js"; -import { rgbToHex } from "@material-ui/core"; - -const secondStyle = { - opacity: '0.4', - fontFamily: 'Helvetica', - fontSize: '14px', - color: '#FFFFFF', - letterSpacing: '0', - lineHeight: '14px', -}; - -const sectionPoolsStyle = theme => ({ - mainTitle:{ - fontFamily: 'Helvetica', - fontSize: '32px', - color: '#FFFFFF', - letterSpacing: '0', - lineHeight: '32px', - fontWeight: "550", - }, - secondTitle:{ - ...secondStyle, - fontWeight: "550", - }, - title, - mrAuto, - mlAuto, - ...checkboxes, - ...buttonGroup, - ...tooltips, - icon: { - verticalAlign: 'bottom', - height: 20, - width: 20, - }, - details: { - display: 'flex', - alignItems: 'center', - }, - column: { - flexBasis: '33.33%', - display: "flex", - justifyContent : "space-around", - alignItems : "center", - alignContent: "space-around", - }, - space50: { - height: "50px", - display: "block" - }, - padding0: { - padding: "0 !important" - }, - imgContainer: { - width: "120px", - maxHeight: "160px", - overflow: "hidden", - display: "block", - "& img": { - width: "100%" - } - }, - description: { - maxWidth: "150px" - }, - tdName: { - minWidth: "200px", - fontWeight: "400", - fontSize: "1.5em" - }, - tdNameAnchor: { - color: grayColor[1] - }, - tdNameSmall: { - color: grayColor[0], - fontSize: "0.75em", - fontWeight: "300" - }, - tdNumber: { - textAlign: "right", - minWidth: "150px", - fontWeight: "300", - fontSize: "1.125em !important" - }, - tdNumberSmall: { - marginRight: "3px" - }, - tdNumberAndButtonGroup: { - lineHeight: "1 !important", - "& .fab,& .fas,& .far,& .fal,& .material-icons": { - marginRight: "0" - }, - "& svg": { - marginRight: "0" - } - }, - customFont: { - fontSize: "16px !important" - }, - actionButton: { - margin: "0px", - padding: "5px" - }, - textCenter: { - textAlign: "center" - }, - textRight: { - textAlign: "right" - }, - floatRight: { - float: "right" - }, - justifyContentCenter: { - WebkitBoxPack: "center !important", - MsFlexPack: "center !important", - justifyContent: "center !important" - }, - signInButton: { - "& button": { - marginRight: "5px" - } - }, - cardWrap: { - minHeight: '170px', - }, - iconContainerMainTitle:{ - fontSize: '18px', - fontWeight: 'bold', - color: '#fff', - lineHeight: '18px', - // marginBottom:'8px', - letterSpacing: 0, - }, - iconContainerSubTitle:{ - fontSize: '14px', - fontWeight: '400', - color: '#fff', - lineHeight: '14px', - opacity: "0.4", - letterSpacing: 0 - }, - iconContainerSecond: { - width:'48px', - height:'48px', - backgroundColor:'#353848', - borderRadius:'8px', - color:primaryColor[0], - - "& i": { - fontSize: '24px', - }, - "&:hover,&:focus": { - backgroundColor: hoverColor[1], - } - }, - iconContainerPrimary: { - width:'48px', - height:'48px', - backgroundColor:primaryColor[0], - borderRadius:'8px', - color:'#fff', - "& i": { - fontSize: '24px', - }, - "&:hover,&:focus": { - background: hoverColor[0], - } - }, - accordion:{ - backgroundColor:'#2C3040', - color:'#fff', - boxShadow: '0px 4px 8px 0px rgba(0, 0, 0, 0.06)', - borderRadius: '8px', - }, - details:{ - // padding: '12px 0', - background: '#2C3040', - boxShadow: '0 4px 8px 0 rgba(0,0,0,0.06)', - borderRadius: '8px', - }, - track: { - height: 4, - borderRadius: 2, - }, - sliderDetailContainer:{ - padding: '24px 16px', - }, - showDetail:{ - display:'inline-block', - alignItems:'center', - justifyContent:'space-around', - width:'100%', - height: '56px', - background: '#353848', - borderRadius: '12px', - fontWeight: '600', - fontSize: '18px', - color: '#FFFFFF', - lineHeight: '24px', - fontWeight: '600', - }, - depositedBalanceSliderRoot:{ - color:'#FF2D82', - }, - depositedBalanceSliderMarkLabel:{ - color:'#FF2D82', - }, - drawSliderRoot:{ - color:'#635AFF', - }, - drawSliderMarkLabel:{ - color:'#635AFF', - }, - showDetailLeft:{ - float: 'left', - margin: '16px 24px', - fontSize: '18px', - color: '#FFFFFF', - lineHeight: '24px', - fontWeight: '600', - }, - showDetailRight:{ - float: 'right', - fontSize: '12px', - lineHeight: '18px', - color: '#FFFFFF', - opacity: '.4', - fontWeight: '600', - }, - - MuiSliderRoot:{ - color: '#FF2D82', - }, - showDetailButtonCon:{ - display:'flex', - justifyContent:'space-around', - '& + &': { - marginLeft: '5px' - } - }, -}); - -export default sectionPoolsStyle; diff --git a/src/features/vault/jss/sections/sectionTitleStyle.js b/src/features/vault/jss/sections/sectionTitleStyle.js deleted file mode 100644 index 4f2482488..000000000 --- a/src/features/vault/jss/sections/sectionTitleStyle.js +++ /dev/null @@ -1,22 +0,0 @@ -import { - title, - grayColor -} from "assets/jss/material-kit-pro-react.js"; - -const sectionTitleStyle = theme => ({ - root: { - flexGrow: 1, - alignItems: "center" - }, - title: { - ...title, - fontSize: "1.5rem", - lineHeight: 1.2, - color: grayColor, - }, - textCenter: { - textAlign: "center", - } -}); - -export default sectionTitleStyle; diff --git a/src/features/vault/jss/sections/sectionWalletStyle.js b/src/features/vault/jss/sections/sectionWalletStyle.js deleted file mode 100644 index 6703ed9ba..000000000 --- a/src/features/vault/jss/sections/sectionWalletStyle.js +++ /dev/null @@ -1,169 +0,0 @@ -import { - mlAuto, -} from "assets/jss/material-kit-pro-react.js"; - -const sectionWalletStyle = theme => ({ - mlAuto, - root: { - flexGrow: 1, - }, - walletCard: { - borderRadius: "50rem", - marginTop: 0, - // marginBottom: 0, - borderStyle: "solid", - borderWidth: "2px", - borderColor: "rgb(233, 30, 99)", - boxShadow: "0 0" - }, - walletTitle: { - fontSize: "0.5rem", - lineHeight: 1.2, - // fontWeight: 700 - }, - walletAddress: { - fontSize: "0.5rem", - lineHeight: 1.2 - // display: "flex" - } - // .Wallet { - // position: absolute; - // left: 0px; - // top: 0px; - // width: 1920px; - // height: 1920px; - // z-index: 258; - // } - // .Ellipse_1 { - // border-radius: 50%; - // background-color: rgb(233, 30, 99); - // position: absolute; - // left: 1036px; - // top: 253px; - // width: 18px; - // height: 18px; - // z-index: 257; - // } - // ._0xa1d0______6B83 { - // font-size: 8px; - // font-family: "Roboto"; - // color: rgb(0, 0, 0); - // line-height: 1.2; - // text-align: left; - // -moz-transform: matrix( 2.92765961560257,0,0,2.92765961560257,0,0); - // -webkit-transform: matrix( 2.92765961560257,0,0,2.92765961560257,0,0); - // -ms-transform: matrix( 2.92765961560257,0,0,2.92765961560257,0,0); - // position: absolute; - // left: 900.99px; - // top: 256.581px; - // z-index: 256; - // } - // .Switch { - // font-size: 7.515px; - // font-family: "Roboto"; - // color: rgb(255, 255, 255); - // font-weight: bold; - // line-height: 1.2; - // text-align: left; - // -moz-transform: matrix( 2.92765961560257,0,0,2.92765961560257,0,0); - // -webkit-transform: matrix( 2.92765961560257,0,0,2.92765961560257,0,0); - // -ms-transform: matrix( 2.92765961560257,0,0,2.92765961560257,0,0); - // position: absolute; - // left: 1135.182px; - // top: 256.991px; - // z-index: 255; - // } - // .Wallet_ { - // font-size: 8px; - // font-family: "Roboto"; - // color: rgb(0, 0, 0); - // font-weight: bold; - // line-height: 1.2; - // text-align: left; - // -moz-transform: matrix( 2.92765961560257,0,0,2.92765961560257,0,0); - // -webkit-transform: matrix( 2.92765961560257,0,0,2.92765961560257,0,0); - // -ms-transform: matrix( 2.92765961560257,0,0,2.92765961560257,0,0); - // position: absolute; - // left: 764.155px; - // top: 256.581px; - // z-index: 254; - // } - // .Rounded_Rectangle_39_copy_2 { - // background-color: rgb(233, 30, 99); - // position: absolute; - // left: 1086px; - // top: 238px; - // width: 120px; - // height: 48px; - // z-index: 253; - // } - // .Rounded_Rectangle_39_copy { - // border-style: solid; - // border-width: 2px; - // border-color: rgb(233, 30, 99); - // background-color: rgba(233, 30, 99, 0); - // position: absolute; - // left: 706px; - // top: 234px; - // width: 370px; - // height: 52px; - // z-index: 252; - // } - - // .Wallet_ { - // font-size: 8px; - // font-family: "Roboto"; - // color: rgb(0, 0, 0); - // font-weight: bold; - // line-height: 1.2; - // text-align: left; - // -moz-transform: matrix( 2.92765961560257,0,0,2.92765961560257,0,0); - // -webkit-transform: matrix( 2.92765961560257,0,0,2.92765961560257,0,0); - // -ms-transform: matrix( 2.92765961560257,0,0,2.92765961560257,0,0); - // position: absolute; - // left: 764.155px; - // top: 256.581px; - // z-index: 254; - // } - - // intro: { - // width: "100%", - // position: 'relative', - // display: 'flex', - // justifyContent: 'center', - // alignItems: 'center', - // paddingBottom: '32px', - // [theme.breakpoints.down('sm')]: { - // maxWidth: 'calc(100vw - 24px)' - // } - // }, - // addressContainer: { - // display: 'flex', - // justifyContent: 'space-between', - // overflow: 'hidden', - // flex: 1, - // whiteSpace: 'nowrap', - // fontSize: '0.83rem', - // textOverflow:'ellipsis', - // cursor: 'pointer', - // padding: '28px 30px', - // borderRadius: '50px', - // border: '1px solid rgba(25, 101, 233, 0.5)', - // alignItems: 'center', - // maxWidth: '450px', - // [theme.breakpoints.up('md')]: { - // width: '100%' - // } - // }, - // walletAddress: { - // display: 'inline-block', - // padding: '0px 12px' - // }, - // walletTitle: { - // display: 'inline-block', - // flex: 1, - // color: "rgba(43,57,84,.5)" - // }, -}); - -export default sectionWalletStyle; \ No newline at end of file diff --git a/src/features/vault/jss/vaultPageStyle.js b/src/features/vault/jss/vaultPageStyle.js deleted file mode 100644 index 912014ebf..000000000 --- a/src/features/vault/jss/vaultPageStyle.js +++ /dev/null @@ -1,21 +0,0 @@ -import { - container, - whiteColor, -} from "assets/jss/material-kit-pro-react.js"; - -const vaultPageStyle = theme => ({ - page: { - backgroundColor: whiteColor, - minHeight: "100vh" - }, - // main: { - // ...main, - // /*overflow: "hidden"*/ - // }, - container: { - ...container, - zIndex: 1 - }, -}); - -export default vaultPageStyle; \ No newline at end of file diff --git a/src/features/vault/redux/actions.js b/src/features/vault/redux/actions.js index 02a69e46d..b8f1d79c3 100644 --- a/src/features/vault/redux/actions.js +++ b/src/features/vault/redux/actions.js @@ -1,9 +1,7 @@ export { fetchBalances } from './fetchBalances'; -export { fetchPoolBalances } from './fetchPoolBalances'; +export { fetchVaultsData } from './fetchVaultsData'; export { fetchApproval } from './fetchApproval'; export { fetchDeposit } from './fetchDeposit'; -export { fetchClaim } from './fetchClaim'; export { fetchWithdraw } from './fetchWithdraw'; -export { fetchFarm } from './fetchFarm'; -export { fetchHarvest } from './fetchHarvest'; -export { fetchContractApy } from './fetchContractApy'; \ No newline at end of file +export { fetchApys } from './fetchApys'; +export { updateLaunchpools } from './updateLaunchpools'; diff --git a/src/features/vault/redux/constants.js b/src/features/vault/redux/constants.js index 23319e9bb..e6cf71f77 100644 --- a/src/features/vault/redux/constants.js +++ b/src/features/vault/redux/constants.js @@ -1,24 +1,37 @@ -// fetchBalances export const VAULT_FETCH_BALANCES_BEGIN = 'VAULT_FETCH_BALANCES_BEGIN'; export const VAULT_FETCH_BALANCES_SUCCESS = 'VAULT_FETCH_BALANCES_SUCCESS'; export const VAULT_FETCH_BALANCES_FAILURE = 'VAULT_FETCH_BALANCES_FAILURE'; -// fetchPoolBalances -export const VAULT_FETCH_POOL_BALANCES_BEGIN = 'VAULT_FETCH_POOL_BALANCES_BEGIN'; -export const VAULT_FETCH_POOL_BALANCES_SUCCESS = 'VAULT_FETCH_POOL_BALANCES_SUCCESS'; -export const VAULT_FETCH_POOL_BALANCES_FAILURE = 'VAULT_FETCH_POOL_BALANCES_FAILURE'; -// fetchApproval + +export const VAULT_FETCH_VAULTS_DATA_BEGIN = 'VAULT_FETCH_VAULTS_DATA_BEGIN'; +export const VAULT_FETCH_VAULTS_DATA_SUCCESS = 'VAULT_FETCH_VAULTS_DATA_SUCCESS'; +export const VAULT_FETCH_VAULTS_DATA_FAILURE = 'VAULT_FETCH_VAULTS_DATA_FAILURE'; + export const VAULT_FETCH_APPROVAL_BEGIN = 'VAULT_FETCH_APPROVAL_BEGIN'; export const VAULT_FETCH_APPROVAL_SUCCESS = 'VAULT_FETCH_APPROVAL_SUCCESS'; export const VAULT_FETCH_APPROVAL_FAILURE = 'VAULT_FETCH_APPROVAL_FAILURE'; -// fetchDeposit + export const VAULT_FETCH_DEPOSIT_BEGIN = 'VAULT_FETCH_DEPOSIT_BEGIN'; export const VAULT_FETCH_DEPOSIT_SUCCESS = 'VAULT_FETCH_DEPOSIT_SUCCESS'; export const VAULT_FETCH_DEPOSIT_FAILURE = 'VAULT_FETCH_DEPOSIT_FAILURE'; -// fetchWithdraw + export const VAULT_FETCH_WITHDRAW_BEGIN = 'VAULT_FETCH_WITHDRAW_BEGIN'; export const VAULT_FETCH_WITHDRAW_SUCCESS = 'VAULT_FETCH_WITHDRAW_SUCCESS'; export const VAULT_FETCH_WITHDRAW_FAILURE = 'VAULT_FETCH_WITHDRAW_FAILURE'; -// fetchUniswapPrices -export const VAULT_FETCH_CONTRACT_APY_BEGIN = 'VAULT_FETCH_CONTRACT_APY_BEGIN'; -export const VAULT_FETCH_CONTRACT_APY_SUCCESS = 'VAULT_FETCH_CONTRACT_APY_SUCCESS'; -export const VAULT_FETCH_CONTRACT_APY_FAILURE = 'VAULT_FETCH_CONTRACT_APY_FAILURE'; + +export const VAULT_FETCH_APYS_BEGIN = 'VAULT_FETCH_APYS_BEGIN'; +export const VAULT_FETCH_APYS_SUCCESS = 'VAULT_FETCH_APYS_SUCCESS'; +export const VAULT_FETCH_APYS_FAILURE = 'VAULT_FETCH_APYS_FAILURE'; + +export const VAULT_FETCH_STRATEGY_HARVEST_BEGIN = 'VAULT_FETCH_STRATEGY_HARVEST_BEGIN'; +export const VAULT_FETCH_STRATEGY_HARVEST_SUCCESS = 'VAULT_FETCH_STRATEGY_HARVEST_SUCCESS'; +export const VAULT_FETCH_STRATEGY_HARVEST_FAILURE = 'VAULT_FETCH_STRATEGY_HARVEST_FAILURE'; + +export const VAULT_FETCH_ZAP_ESTIMATE_BEGIN = 'VAULT_FETCH_ZAP_ESTIMATE_BEGIN'; +export const VAULT_FETCH_ZAP_ESTIMATE_SUCCESS = 'VAULT_FETCH_ZAP_ESTIMATE_SUCCESS'; +export const VAULT_FETCH_ZAP_ESTIMATE_FAILURE = 'VAULT_FETCH_ZAP_ESTIMATE_FAILURE'; + +export const VAULT_FETCH_BIFIBUYBACK_BEGIN = 'VAULT_FETCH_BIFIBUYBACK_BEGIN'; +export const VAULT_FETCH_BIFIBUYBACK_SUCCESS = 'VAULT_FETCH_BIFIBUYBACK_SUCCESS'; +export const VAULT_FETCH_BIFIBUYBACK_FAILURE = 'VAULT_FETCH_BIFIBUYBACK_FAILURE'; + +export const VAULT_UPDATE_LAUNCHPOOLS = 'VAULT_UPDATE_LAUNCHPOOLS'; diff --git a/src/features/vault/redux/fetchApproval.js b/src/features/vault/redux/fetchApproval.js index 6b5206ee2..46deee870 100644 --- a/src/features/vault/redux/fetchApproval.js +++ b/src/features/vault/redux/fetchApproval.js @@ -1,51 +1,43 @@ import { useCallback } from 'react'; -import { useDispatch, useSelector, shallowEqual } from 'react-redux'; +import { useDispatch, useSelector } from 'react-redux'; import { VAULT_FETCH_APPROVAL_BEGIN, VAULT_FETCH_APPROVAL_SUCCESS, VAULT_FETCH_APPROVAL_FAILURE, } from './constants'; -import { approval } from "../../web3"; +import { approval } from '../../web3'; -export function fetchApproval({ address, web3, tokenAddress, contractAddress, index }) { +export function fetchApproval({ address, web3, tokenAddress, contractAddress, tokenSymbol }) { return dispatch => { - // optionally you can have getState as the second argument dispatch({ type: VAULT_FETCH_APPROVAL_BEGIN, - index + tokenSymbol, }); - // Return a promise so that you could control UI flow without states in the store. - // For example: after submit a form, you need to redirect the page to another when succeeds or show some errors message if fails. - // It's hard to use state to manage it, but returning a promise allows you to easily achieve it. - // e.g.: handleSubmit() { this.props.actions.submitForm(data).then(()=> {}).catch(() => {}); } const promise = new Promise((resolve, reject) => { - // doRequest is a placeholder Promise. You should replace it with your own logic. - // See the real-word example at: https://github.com/supnate/rekit/blob/master/src/features/vault/redux/fetchRedditReactjsList.js - // args.error here is only for test coverage purpose. approval({ web3, address, tokenAddress, contractAddress, - dispatch - }).then( - data => { + dispatch, + }) + .then(data => { dispatch({ type: VAULT_FETCH_APPROVAL_SUCCESS, - data: {index, allowance: data},index - }) + data: { allowance: data }, + spender: contractAddress, + tokenSymbol, + }); resolve(); - } - ).catch( - error => { + }) + .catch(error => { dispatch({ type: VAULT_FETCH_APPROVAL_FAILURE, - index - }) + tokenSymbol, + }); reject(error.message || error); - } - ) + }); }); return promise; @@ -53,15 +45,11 @@ export function fetchApproval({ address, web3, tokenAddress, contractAddress, in } export function useFetchApproval() { - // args: false value or array - // if array, means args passed to the action creator const dispatch = useDispatch(); - const { fetchApprovalPending } = useSelector( - state => ({ - fetchApprovalPending: state.vault.fetchApprovalPending, - }) - ); + const { fetchApprovalPending } = useSelector(state => ({ + fetchApprovalPending: state.vault.fetchApprovalPending, + })); const boundAction = useCallback(data => dispatch(fetchApproval(data)), [dispatch]); @@ -74,39 +62,36 @@ export function useFetchApproval() { export function reducer(state, action) { switch (action.type) { case VAULT_FETCH_APPROVAL_BEGIN: - // Just after a request is sent return { ...state, fetchApprovalPending: { ...state.fetchApprovalPending, - [action.index]: true + [action.tokenSymbol]: true, }, }; case VAULT_FETCH_APPROVAL_SUCCESS: - // The request is success - const { pools } = state; - pools[action.index].allowance = action.data.allowance; + const { tokens } = state; + tokens[action.tokenSymbol].allowance[action.spender] = action.data.allowance; return { ...state, - pools, + tokens, fetchApprovalPending: { ...state.fetchApprovalPending, - [action.index]: false + [action.tokenSymbol]: false, }, }; case VAULT_FETCH_APPROVAL_FAILURE: - // The request is failed return { ...state, fetchApprovalPending: { ...state.fetchApprovalPending, - [action.index]: false + [action.tokenSymbol]: false, }, }; default: return state; } -} \ No newline at end of file +} diff --git a/src/features/vault/redux/fetchApys.js b/src/features/vault/redux/fetchApys.js new file mode 100644 index 000000000..d1db25f1b --- /dev/null +++ b/src/features/vault/redux/fetchApys.js @@ -0,0 +1,90 @@ +import axios from 'axios'; +import { useCallback } from 'react'; +import { useDispatch, useSelector, shallowEqual } from 'react-redux'; +import { + VAULT_FETCH_APYS_BEGIN, + VAULT_FETCH_APYS_SUCCESS, + VAULT_FETCH_APYS_FAILURE, +} from './constants'; +import { apiUrl, getApiCacheBuster } from '../../helpers/getApiInfo'; + +export function fetchApys() { + return dispatch => { + dispatch({ + type: VAULT_FETCH_APYS_BEGIN, + }); + + return new Promise((resolve, reject) => { + const cacheBuster = getApiCacheBuster(); + const doRequest = axios.get(`${apiUrl}/apy/breakdown?_=${cacheBuster}`); + + doRequest.then( + res => { + dispatch({ + type: VAULT_FETCH_APYS_SUCCESS, + data: res.data, + }); + resolve(res); + }, + err => { + dispatch({ + type: VAULT_FETCH_APYS_FAILURE, + data: { error: err }, + }); + reject(err); + } + ); + }); + }; +} + +export function useFetchApys() { + const dispatch = useDispatch(); + + const { apys, fetchApysPending, fetchApysDone } = useSelector( + state => ({ + apys: state.vault.apys, + fetchApysDone: state.vault.fetchApysDone, + fetchApysPending: state.vault.fetchApysPending, + }), + shallowEqual + ); + + const boundAction = useCallback(() => { + dispatch(fetchApys()); + }, [dispatch]); + + return { + apys, + fetchApys: boundAction, + fetchApysDone, + fetchApysPending, + }; +} + +export function reducer(state, action) { + switch (action.type) { + case VAULT_FETCH_APYS_BEGIN: + return { + ...state, + fetchApysPending: true, + }; + + case VAULT_FETCH_APYS_SUCCESS: + return { + ...state, + apys: action.data, + fetchApysDone: true, + fetchApysPending: false, + }; + + case VAULT_FETCH_APYS_FAILURE: + return { + ...state, + fetchApysPending: false, + }; + + default: + return state; + } +} diff --git a/src/features/vault/redux/fetchBalances.js b/src/features/vault/redux/fetchBalances.js index 14626bb9f..68050447c 100644 --- a/src/features/vault/redux/fetchBalances.js +++ b/src/features/vault/redux/fetchBalances.js @@ -1,3 +1,4 @@ +import BigNumber from 'bignumber.js'; import { useCallback } from 'react'; import { useDispatch, useSelector, shallowEqual } from 'react-redux'; import { @@ -5,74 +6,157 @@ import { VAULT_FETCH_BALANCES_SUCCESS, VAULT_FETCH_BALANCES_FAILURE, } from './constants'; -import { fetchBalance } from "../../web3"; -import async from 'async'; +import { MultiCall } from 'eth-multicall'; +import { erc20ABI, multicallABI, uniswapV2PairABI, launchPoolABI } from 'features/configure'; +import { byDecimals } from 'features/helpers/bignumber'; +import { getNetworkMulticall, launchpools } from 'features/helpers/getNetworkData'; -export function fetchBalances(data) { +export function fetchBalances({ address, web3, tokens }) { return dispatch => { - // optionally you can have getState as the second argument + if (!(address && web3)) return; + dispatch({ type: VAULT_FETCH_BALANCES_BEGIN, }); - // Return a promise so that you could control UI flow without states in the store. - // For example: after submit a form, you need to redirect the page to another when succeeds or show some errors message if fails. - // It's hard to use state to manage it, but returning a promise allows you to easily achieve it. - // e.g.: handleSubmit() { this.props.actions.submitForm(data).then(()=> {}).catch(() => {}); } const promise = new Promise((resolve, reject) => { - // doRequest is a placeholder Promise. You should replace it with your own logic. - // See the real-word example at: https://github.com/supnate/rekit/blob/master/src/features/vault/redux/fetchRedditReactjsList.js - // args.error here is only for test coverage purpose. - const { address, web3, tokens } = data; - - const newTokens = []; - for (let key in tokens) { - newTokens.push({ - token: key, - tokenAddress: tokens[key].tokenAddress, - tokenBalance: tokens[key].tokenBalance, - }); - } - async.map(newTokens, (token, callback) => { - async.parallel([ - (callbackInner) => { - fetchBalance({ - web3, - address, - tokenAddress: token.tokenAddress - }).then( - data => callbackInner(null, data) - ).catch( - error => { - return callbackInner(error.message || error) - } - ) - } - ], (error, data) => { - token.tokenBalance = data[0] || 0 - callback(null, token) + const multicall = new MultiCall(web3, getNetworkMulticall()); + + const balanceCalls = []; + const allowanceCalls = []; + const launchPoolBalanceCalls = []; + + Object.entries(tokens).forEach(([symbol, token]) => { + if (!token.tokenAddress) { + const multicallContract = new web3.eth.Contract(multicallABI, multicall.contract); + balanceCalls.push({ + balance: multicallContract.methods.getEthBalance(address), + symbol: symbol, + }); + } else { + const tokenContract = new web3.eth.Contract(erc20ABI, token.tokenAddress); + balanceCalls.push({ + balance: tokenContract.methods.balanceOf(address), + symbol: symbol, + }); + Object.entries(token.allowance).forEach(([spender]) => { + allowanceCalls.push({ + allowance: tokenContract.methods.allowance(address, spender), + spender: spender, + symbol: symbol, + }); + }); + } + }); + + Object.entries(launchpools).forEach(([lpid, launchpool]) => { + if (launchpool.earnContractAddress) { + const multicallContract = new web3.eth.Contract( + launchPoolABI, + launchpool.earnContractAddress + ); + launchPoolBalanceCalls.push({ + balance: multicallContract.methods.balanceOf(address), + symbol: launchpool.token, + }); + } + }); + + multicall + .all([balanceCalls, allowanceCalls, launchPoolBalanceCalls]) + .then(([balanceResults, allowanceResults, launchpoolBalanceResults]) => { + const newTokens = {}; + + balanceResults.forEach(balanceResult => { + newTokens[balanceResult.symbol] = { + ...tokens[balanceResult.symbol], + tokenBalance: balanceResult.balance, + launchpoolTokenBalance: '0', + }; + }); + + allowanceResults.forEach(allowanceResult => { + newTokens[allowanceResult.symbol] = { + ...newTokens[allowanceResult.symbol], + allowance: { + ...newTokens[allowanceResult.symbol].allowance, + [allowanceResult.spender]: allowanceResult.allowance, + }, + }; + }); + + launchpoolBalanceResults.forEach(launchPoolBalanceResult => { + const previousBalance = + newTokens[launchPoolBalanceResult.symbol]?.launchpoolTokenBalance || 0; + newTokens[launchPoolBalanceResult.symbol] = { + ...newTokens[launchPoolBalanceResult.symbol], + launchpoolTokenBalance: new BigNumber.sum( + launchPoolBalanceResult.balance, + previousBalance + ).toString(), + }; + }); + + dispatch({ + type: VAULT_FETCH_BALANCES_SUCCESS, + data: newTokens, + }); + resolve(); }) - }, (error, tokens) => { - if(error) { - console.log(error) + .catch(error => { dispatch({ type: VAULT_FETCH_BALANCES_FAILURE, - }) - return reject(error.message || error) - } - const newTokens = {}; - for(let i = 0; i < tokens.length; i++) { - newTokens[tokens[i].token] = { - tokenAddress: tokens[i].tokenAddress, - tokenBalance: tokens[i].tokenBalance - } - } - dispatch({ - type: VAULT_FETCH_BALANCES_SUCCESS, - data: newTokens, + }); + return reject(error.message || error); + }); + }); + + return promise; + }; +} + +export function fetchPairReverves({ web3, pairToken }) { + return dispatch => { + if (!web3) return; + + dispatch({ + type: VAULT_FETCH_BALANCES_BEGIN, + }); + + const promise = new Promise((resolve, reject) => { + const multicall = new MultiCall(web3, getNetworkMulticall()); + const tokenContract = new web3.eth.Contract(uniswapV2PairABI, pairToken.tokenAddress); + multicall + .all([ + [ + { + totalSupply: tokenContract.methods.totalSupply(), + token0: tokenContract.methods.token0(), + token1: tokenContract.methods.token1(), + reserves: tokenContract.methods.getReserves(), + }, + ], + ]) + .then(([[result]]) => { + const newPairToken = { + [pairToken.symbol]: { + ...pairToken, + ...result, + }, + }; + + dispatch({ + type: VAULT_FETCH_BALANCES_SUCCESS, + data: newPairToken, + }); + resolve(); }) - resolve() - }) + .catch(error => { + dispatch({ + type: VAULT_FETCH_BALANCES_FAILURE, + }); + return reject(error.message || error); + }); }); return promise; @@ -80,28 +164,41 @@ export function fetchBalances(data) { } export function useFetchBalances() { - // args: false value or array - // if array, means args passed to the action creator const dispatch = useDispatch(); - const { tokens, fetchBalancesPending } = useSelector( + const { tokens, fetchBalancesPending, fetchBalancesDone } = useSelector( state => ({ tokens: state.vault.tokens, + fetchBalancesDone: state.vault.fetchBalancesDone, fetchBalancesPending: state.vault.fetchBalancesPending, }), - shallowEqual, + shallowEqual ); const boundAction = useCallback( - (data) => { + data => { return dispatch(fetchBalances(data)); }, - [dispatch], + [dispatch] + ); + + const tokenBalance = tokenSymbol => { + return byDecimals(tokens[tokenSymbol]?.tokenBalance || 0, tokens[tokenSymbol].decimals); + }; + + const boundPairReverves = useCallback( + data => { + return dispatch(fetchPairReverves(data)); + }, + [dispatch] ); return { tokens, + tokenBalance: tokenBalance, fetchBalances: boundAction, + fetchPairReverves: boundPairReverves, + fetchBalancesDone, fetchBalancesPending, }; } @@ -109,22 +206,35 @@ export function useFetchBalances() { export function reducer(state, action) { switch (action.type) { case VAULT_FETCH_BALANCES_BEGIN: - // Just after a request is sent return { ...state, fetchBalancesPending: true, }; case VAULT_FETCH_BALANCES_SUCCESS: - // The request is success + const newAndUpdatedTokens = {}; + Object.entries(action.data).forEach(([symbol, token]) => { + newAndUpdatedTokens[symbol] = { + ...state.tokens[symbol], + ...token, + allowance: { + ...state.tokens[symbol]?.allowance, + ...token.allowance, + }, + }; + }); + return { ...state, - tokens: action.data, + tokens: { + ...state.tokens, + ...newAndUpdatedTokens, + }, + fetchBalancesDone: true, fetchBalancesPending: false, }; case VAULT_FETCH_BALANCES_FAILURE: - // The request is failed return { ...state, fetchBalancesPending: false, @@ -133,4 +243,4 @@ export function reducer(state, action) { default: return state; } -} \ No newline at end of file +} diff --git a/src/features/vault/redux/fetchBifiBuyback.js b/src/features/vault/redux/fetchBifiBuyback.js new file mode 100644 index 000000000..ef4c383e0 --- /dev/null +++ b/src/features/vault/redux/fetchBifiBuyback.js @@ -0,0 +1,90 @@ +import axios from 'axios'; +import { useCallback } from 'react'; +import { useDispatch, useSelector, shallowEqual } from 'react-redux'; +import { + VAULT_FETCH_BIFIBUYBACK_BEGIN, + VAULT_FETCH_BIFIBUYBACK_SUCCESS, + VAULT_FETCH_BIFIBUYBACK_FAILURE, +} from './constants'; +import { apiUrl, getApiCacheBuster } from '../../helpers/getApiInfo'; + +export function fetchBifibuyback() { + return dispatch => { + dispatch({ + type: VAULT_FETCH_BIFIBUYBACK_BEGIN, + }); + + return new Promise((resolve, reject) => { + const cacheBuster = getApiCacheBuster(); + const doRequest = axios.get(`${apiUrl}/bifibuyback?_=${cacheBuster}`); + + doRequest.then( + res => { + dispatch({ + type: VAULT_FETCH_BIFIBUYBACK_SUCCESS, + data: res.data, + }); + resolve(res); + }, + err => { + dispatch({ + type: VAULT_FETCH_BIFIBUYBACK_FAILURE, + data: { error: err }, + }); + reject(err); + } + ); + }); + }; +} + +export function useFetchBifibuyback() { + const dispatch = useDispatch(); + + const { bifibuyback, fetchBifibuybackPending, fetchBifibuybackDone } = useSelector( + state => ({ + bifibuyback: state.vault.bifibuyback, + fetchBifibuybackDone: state.vault.fetchBifibuybackDone, + fetchBifibuybackPending: state.vault.fetchBifibuybackPending, + }), + shallowEqual + ); + + const boundAction = useCallback(() => { + dispatch(fetchBifibuyback()); + }, [dispatch]); + + return { + bifibuyback, + fetchBifibuyback: boundAction, + fetchBifibuybackDone, + fetchBifibuybackPending, + }; +} + +export function reducer(state, action) { + switch (action.type) { + case VAULT_FETCH_BIFIBUYBACK_BEGIN: + return { + ...state, + fetchBifibuybackPending: true, + }; + + case VAULT_FETCH_BIFIBUYBACK_SUCCESS: + return { + ...state, + bifibuyback: action.data, + fetchBifibuybackDone: true, + fetchBifibuybackPending: false, + }; + + case VAULT_FETCH_BIFIBUYBACK_FAILURE: + return { + ...state, + fetchBifibuybackPending: false, + }; + + default: + return state; + } +} diff --git a/src/features/vault/redux/fetchContractApy.js b/src/features/vault/redux/fetchContractApy.js deleted file mode 100644 index 472c431f1..000000000 --- a/src/features/vault/redux/fetchContractApy.js +++ /dev/null @@ -1,107 +0,0 @@ -import axios from 'axios'; -import { useCallback } from 'react'; -import { useDispatch, useSelector, shallowEqual } from 'react-redux'; -import { - VAULT_FETCH_CONTRACT_APY_BEGIN, - VAULT_FETCH_CONTRACT_APY_SUCCESS, - VAULT_FETCH_CONTRACT_APY_FAILURE, -} from './constants'; - -// Rekit uses redux-thunk for async actions by default: https://github.com/gaearon/redux-thunk -// If you prefer redux-saga, you can use rekit-plugin-redux-saga: https://github.com/supnate/rekit-plugin-redux-saga -export function fetchContractApy() { - return dispatch => { - // optionally you can have getState as the second argument - dispatch({ - type: VAULT_FETCH_CONTRACT_APY_BEGIN, - }); - - // Return a promise so that you could control UI flow without states in the store. - // For example: after submit a form, you need to redirect the page to another when succeeds or show some errors message if fails. - // It's hard to use state to manage it, but returning a promise allows you to easily achieve it. - // e.g.: handleSubmit() { this.props.actions.submitForm(data).then(()=> {}).catch(() => {}); } - const promise = new Promise((resolve, reject) => { - // doRequest is a placeholder Promise. You should replace it with your own logic. - // See the real-word example at: https://github.com/supnate/rekit/blob/master/src/features/home/redux/fetchRedditReactjsList.js - // args.error here is only for test coverage purpose. - const doRequest = axios.get('https://api.dfi.money/apy.json'); - - doRequest.then( - res => { - dispatch({ - type: VAULT_FETCH_CONTRACT_APY_SUCCESS, - data: res.data, - }); - resolve(res); - }, - // Use rejectHandler as the second argument so that render errors won't be caught. - err => { - dispatch({ - type: VAULT_FETCH_CONTRACT_APY_FAILURE, - data: { error: err }, - }); - reject(err); - }, - ); - }); - - return promise; - }; -} - -export function useFetchContractApy() { - // args: false value or array - // if array, means args passed to the action creator - const dispatch = useDispatch(); - - const { contractApy, fetchContractApyPending } = useSelector( - state => ({ - contractApy: state.vault.contractApy, - fetchContractApyPending: state.vault.fetchContractApyPending, - }), - shallowEqual, - ); - - const boundAction = useCallback( - () => { - dispatch(fetchContractApy()); - }, - [dispatch], - ); - - return { - contractApy, - fetchContractApy: boundAction, - fetchContractApyPending, - }; -} - -export function reducer(state, action) { - switch (action.type) { - case VAULT_FETCH_CONTRACT_APY_BEGIN: - // Just after a request is sent - return { - ...state, - fetchContractApyPending: true, - }; - - case VAULT_FETCH_CONTRACT_APY_SUCCESS: - // The request is success - return { - ...state, - contractApy: action.data, - fetchContractApyPending: false, - }; - - case VAULT_FETCH_CONTRACT_APY_FAILURE: - // The request is failed - return { - ...state, - fetchContractApyPending: false, - }; - - default: - return state; - } -} - diff --git a/src/features/vault/redux/fetchDeposit.js b/src/features/vault/redux/fetchDeposit.js index 8b25f278c..fbf1b7d81 100644 --- a/src/features/vault/redux/fetchDeposit.js +++ b/src/features/vault/redux/fetchDeposit.js @@ -1,155 +1,130 @@ import { useCallback } from 'react'; -import { useDispatch, useSelector, shallowEqual } from 'react-redux'; +import { useDispatch, useSelector } from 'react-redux'; import { VAULT_FETCH_DEPOSIT_BEGIN, VAULT_FETCH_DEPOSIT_SUCCESS, VAULT_FETCH_DEPOSIT_FAILURE, } from './constants'; -import { deposit, depositEth } from "../../web3"; +import { deposit, depositBnb } from '../../web3'; + +export function fetchDeposit({ address, web3, isAll, amount, contractAddress }) { + const index = contractAddress; -export function fetchDeposit({ address, web3, isAll, amount, contractAddress, index }) { return dispatch => { - // optionally you can have getState as the second argument dispatch({ type: VAULT_FETCH_DEPOSIT_BEGIN, - index + index, }); - // Return a promise so that you could control UI flow without states in the store. - // For example: after submit a form, you need to redirect the page to another when succeeds or show some errors message if fails. - // It's hard to use state to manage it, but returning a promise allows you to easily achieve it. - // e.g.: handleSubmit() { this.props.actions.submitForm(data).then(()=> {}).catch(() => {}); } const promise = new Promise((resolve, reject) => { - // doRequest is a placeholder Promise. You should replace it with your own logic. - // See the real-word example at: https://github.com/supnate/rekit/blob/master/src/features/home/redux/fetchRedditReactjsList.js - // args.error here is only for test coverage purpose. - deposit({ web3, address, isAll, amount, contractAddress, dispatch }).then( - data => { + deposit({ web3, address, isAll, amount, contractAddress, dispatch }) + .then(data => { dispatch({ type: VAULT_FETCH_DEPOSIT_SUCCESS, - data, index + data, + index, }); resolve(data); - }, - ).catch( - // Use rejectHandler as the second argument so that render errors won't be caught. - error => { + }) + .catch(error => { dispatch({ type: VAULT_FETCH_DEPOSIT_FAILURE, - index + index, }); reject(error.message || error); - } - ) + }); }); return promise; }; } -export function fetchDepositEth({ address, web3, amount, contractAddress, index }) { +export function fetchDepositBnb({ address, web3, amount, contractAddress, index }) { return dispatch => { - // optionally you can have getState as the second argument dispatch({ type: VAULT_FETCH_DEPOSIT_BEGIN, - index + index, }); - // Return a promise so that you could control UI flow without states in the store. - // For example: after submit a form, you need to redirect the page to another when succeeds or show some errors message if fails. - // It's hard to use state to manage it, but returning a promise allows you to easily achieve it. - // e.g.: handleSubmit() { this.props.actions.submitForm(data).then(()=> {}).catch(() => {}); } const promise = new Promise((resolve, reject) => { - // doRequest is a placeholder Promise. You should replace it with your own logic. - // See the real-word example at: https://github.com/supnate/rekit/blob/master/src/features/home/redux/fetchRedditReactjsList.js - // args.error here is only for test coverage purpose. - depositEth({ web3, address, amount, contractAddress, dispatch }).then( - data => { + depositBnb({ web3, address, amount, contractAddress, dispatch }) + .then(data => { dispatch({ type: VAULT_FETCH_DEPOSIT_SUCCESS, - data, index + data, + index, }); resolve(data); - }, - ).catch( - // Use rejectHandler as the second argument so that render errors won't be caught. - error => { + }) + .catch(error => { dispatch({ type: VAULT_FETCH_DEPOSIT_FAILURE, - index + index, }); reject(error.message || error); - } - ) + }); }); return promise; }; } export function useFetchDeposit() { - // args: false value or array - // if array, means args passed to the action creator const dispatch = useDispatch(); - const { fetchDepositPending } = useSelector( - state => ({ - fetchDepositPending: state.vault.fetchDepositPending, - }) - ); + const { fetchDepositPending } = useSelector(state => ({ + fetchDepositPending: state.vault.fetchDepositPending, + })); const boundAction = useCallback( - (data) => { + data => { return dispatch(fetchDeposit(data)); }, - [dispatch], + [dispatch] ); const boundAction2 = useCallback( - (data) => { - return dispatch(fetchDepositEth(data)); + data => { + return dispatch(fetchDepositBnb(data)); }, - [dispatch], + [dispatch] ); return { fetchDeposit: boundAction, - fetchDepositEth: boundAction2, - fetchDepositPending + fetchDepositBnb: boundAction2, + fetchDepositPending, }; } export function reducer(state, action) { switch (action.type) { case VAULT_FETCH_DEPOSIT_BEGIN: - // Just after a request is sent return { ...state, fetchDepositPending: { ...state.fetchDepositPending, - [action.index]: true + [action.index]: true, }, }; case VAULT_FETCH_DEPOSIT_SUCCESS: - // The request is success return { ...state, fetchDepositPending: { ...state.fetchDepositPending, - [action.index]: false + [action.index]: false, }, }; case VAULT_FETCH_DEPOSIT_FAILURE: - // The request is failed return { ...state, fetchDepositPending: { ...state.fetchDepositPending, - [action.index]: false + [action.index]: false, }, }; default: return state; } -} \ No newline at end of file +} diff --git a/src/features/vault/redux/fetchHarvest.js b/src/features/vault/redux/fetchHarvest.js new file mode 100644 index 000000000..481c5fa51 --- /dev/null +++ b/src/features/vault/redux/fetchHarvest.js @@ -0,0 +1,86 @@ +import { useCallback } from 'react'; +import { useDispatch, useSelector } from 'react-redux'; +import { + VAULT_FETCH_STRATEGY_HARVEST_BEGIN, + VAULT_FETCH_STRATEGY_HARVEST_SUCCESS, + VAULT_FETCH_STRATEGY_HARVEST_FAILURE, +} from './constants'; +import { harvest } from '../../web3'; + +export function fetchHarvest({ address, web3, contractAddress, index }) { + return dispatch => { + dispatch({ + type: VAULT_FETCH_STRATEGY_HARVEST_BEGIN, + index, + }); + + const promise = new Promise((resolve, reject) => { + harvest({ web3, address, vaultContractAddress: contractAddress, dispatch }) + .then(data => { + dispatch({ + type: VAULT_FETCH_STRATEGY_HARVEST_SUCCESS, + data, + index, + }); + resolve(data); + }) + .catch(error => { + dispatch({ + type: VAULT_FETCH_STRATEGY_HARVEST_FAILURE, + index, + }); + reject(error.message || error); + }); + }); + return promise; + }; +} + +export function useFetchHarvest() { + const dispatch = useDispatch(); + + const { fetchHarvestPending } = useSelector(state => ({ + fetchHarvestPending: state.vault.fetchHarvestPending, + })); + + const boundAction = useCallback(data => dispatch(fetchHarvest(data)), [dispatch]); + + return { + fetchHarvest: boundAction, + fetchHarvestPending, + }; +} + +export function reducer(state, action) { + switch (action.type) { + case VAULT_FETCH_STRATEGY_HARVEST_BEGIN: + return { + ...state, + fetchHarvestPending: { + ...state.fetchHarvestPending, + [action.index]: true, + }, + }; + + case VAULT_FETCH_STRATEGY_HARVEST_SUCCESS: + return { + ...state, + fetchHarvestPending: { + ...state.fetchHarvestPending, + [action.index]: false, + }, + }; + + case VAULT_FETCH_STRATEGY_HARVEST_FAILURE: + return { + ...state, + fetchHarvestPending: { + ...state.fetchHarvestPending, + [action.index]: false, + }, + }; + + default: + return state; + } +} diff --git a/src/features/vault/redux/fetchPoolBalances.js b/src/features/vault/redux/fetchPoolBalances.js deleted file mode 100644 index c76403f6d..000000000 --- a/src/features/vault/redux/fetchPoolBalances.js +++ /dev/null @@ -1,147 +0,0 @@ -import { useCallback } from 'react'; -import { earnContractABI, erc20ABI } from "../../configure"; -import { useDispatch, useSelector, shallowEqual } from 'react-redux'; -import { - VAULT_FETCH_POOL_BALANCES_BEGIN, - VAULT_FETCH_POOL_BALANCES_SUCCESS, - VAULT_FETCH_POOL_BALANCES_FAILURE, -} from './constants'; -import { fetchPricePerFullShare, fetchAllowance } from "../../web3"; -import async from 'async'; - -export function fetchPoolBalances(data) { - return dispatch => { - // optionally you can have getState as the second argument - dispatch({ - type: VAULT_FETCH_POOL_BALANCES_BEGIN, - }); - - // Return a promise so that you could control UI flow without states in the store. - // For example: after submit a form, you need to redirect the page to another when succeeds or show some errors message if fails. - // It's hard to use state to manage it, but returning a promise allows you to easily achieve it. - // e.g.: handleSubmit() { this.props.actions.submitForm(data).then(()=> {}).catch(() => {}); } - const promise = new Promise((resolve, reject) => { - // doRequest is a placeholder Promise. You should replace it with your own logic. - // args.error here is only for test coverage purpose. - const { address, web3, pools } = data; - async.map(pools, (pool, callback) => { - const earnContract = new web3.eth.Contract(earnContractABI, pool.earnContractAddress); - const erc20Contract = pool.tokenAddress ? new web3.eth.Contract(erc20ABI, pool.tokenAddress) : null; - async.parallel([ - (callbackInner) => { - fetchAllowance({ - web3, - contractAddress: pool.earnContractAddress, - contract: erc20Contract, - address - }).then( - data => { - // console.log('data:' + data); - return callbackInner(null, data) - } - ).catch( - error => { - // console.log(error) - return callbackInner(error, 0) - } - ) - }, - (callbackInner) => { - fetchPricePerFullShare({ - contract: earnContract, - address - }).then( - data => { - // console.log(data) - return callbackInner(null, data) - } - ).catch( - error => { - // console.log(error) - return callbackInner(error, 0) - } - ) - } - ], (error, data) => { - if (error) { - console.log(error) - } - pool.allowance = data[0] || 0; - pool.pricePerFullShare = data[1] || 1; - callback(null, pool); - }) - }, (error, pools) => { - if(error) { - dispatch({ - type: VAULT_FETCH_POOL_BALANCES_FAILURE, - }) - return reject(error.message || error) - } - dispatch({ - type: VAULT_FETCH_POOL_BALANCES_SUCCESS, - data: pools, - }) - resolve() - }) - }); - - return promise; - } -} - - -export function useFetchPoolBalances() { - // args: false value or array - // if array, means args passed to the action creator - const dispatch = useDispatch(); - - const { pools, fetchPoolBalancesPending } = useSelector( - state => ({ - pools: state.vault.pools, - fetchPoolBalancesPending: state.vault.fetchPoolBalancesPending, - }), - shallowEqual, - ); - - const boundAction = useCallback( - (data) => { - return dispatch(fetchPoolBalances(data)); - }, - [dispatch], - ); - - return { - pools, - fetchPoolBalances: boundAction, - fetchPoolBalancesPending - }; -} - -export function reducer(state, action) { - switch (action.type) { - case VAULT_FETCH_POOL_BALANCES_BEGIN: - // Just after a request is sent - return { - ...state, - fetchPoolBalancesPending: true, - }; - - case VAULT_FETCH_POOL_BALANCES_SUCCESS: - // The request is success - return { - ...state, - pools: action.data, - fetchPoolBalancesPending: false, - }; - - case VAULT_FETCH_POOL_BALANCES_FAILURE: - // The request is failed - return { - ...state, - fetchPoolBalancesPending: false, - }; - - default: - return state; - } -} \ No newline at end of file diff --git a/src/features/vault/redux/fetchVaultsData.js b/src/features/vault/redux/fetchVaultsData.js new file mode 100644 index 000000000..29d3233f0 --- /dev/null +++ b/src/features/vault/redux/fetchVaultsData.js @@ -0,0 +1,125 @@ +import { useCallback } from 'react'; +import { useDispatch, useSelector, shallowEqual } from 'react-redux'; +import BigNumber from 'bignumber.js'; +import { MultiCall } from 'eth-multicall'; +import { + VAULT_FETCH_VAULTS_DATA_BEGIN, + VAULT_FETCH_VAULTS_DATA_SUCCESS, + VAULT_FETCH_VAULTS_DATA_FAILURE, +} from './constants'; +import { fetchPrice, whenPricesLoaded } from '../../web3'; +import { vaultABI } from '../../configure'; +import { byDecimals } from 'features/helpers/bignumber'; +import { getNetworkMulticall } from 'features/helpers/getNetworkData'; +import Web3 from 'web3'; +import { getRpcUrl } from 'common/networkSetup'; + +export function fetchVaultsData({ web3, pools }) { + return dispatch => { + dispatch({ + type: VAULT_FETCH_VAULTS_DATA_BEGIN, + }); + + if (!web3) { + // setup default provider to get vault data + web3 = new Web3(new Web3.providers.HttpProvider(getRpcUrl())); + } + + const promise = new Promise((resolve, reject) => { + const multicall = new MultiCall(web3, getNetworkMulticall()); + const vaultCalls = pools.map(pool => { + const vault = new web3.eth.Contract(vaultABI, pool.earnedTokenAddress); + return { + pricePerFullShare: vault.methods.getPricePerFullShare(), + tvl: vault.methods.balance(), + }; + }); + + Promise.all([ + multicall.all([vaultCalls]).then(result => result[0]), + whenPricesLoaded(), // need to wait until prices are loaded in cache + ]) + .then(data => { + const newPools = pools.map((pool, i) => { + const pricePerFullShare = byDecimals(data[0][i].pricePerFullShare, 18).toNumber(); + return { + pricePerFullShare: new BigNumber(pricePerFullShare).toNumber() || 1, + tvl: byDecimals(data[0][i].tvl, pool.tokenDecimals).toNumber(), + oraclePrice: fetchPrice({ id: pool.oracleId }) || 0, + }; + }); + dispatch({ + type: VAULT_FETCH_VAULTS_DATA_SUCCESS, + data: newPools, + }); + resolve(); + }) + .catch(error => { + dispatch({ + type: VAULT_FETCH_VAULTS_DATA_FAILURE, + }); + reject(error.message || error); + }); + }); + + return promise; + }; +} + +export function useFetchVaultsData() { + const dispatch = useDispatch(); + + const { pools, fetchVaultsDataDone } = useSelector( + state => ({ + pools: state.vault.pools, + fetchVaultsData: state.vault.fetchVaultsData, + fetchVaultsDataDone: state.vault.fetchVaultsDataDone, + }), + shallowEqual + ); + + const boundAction = useCallback( + data => { + return dispatch(fetchVaultsData(data)); + }, + [dispatch] + ); + + return { + pools, + fetchVaultsData: boundAction, + fetchVaultsDataDone, + }; +} + +export function reducer(state, action) { + switch (action.type) { + case VAULT_FETCH_VAULTS_DATA_BEGIN: + return { + ...state, + fetchVaultsDataPending: true, + }; + + case VAULT_FETCH_VAULTS_DATA_SUCCESS: + const pools = state.pools.map((pool, i) => ({ + ...pool, + ...action.data[i], + })); + + return { + ...state, + pools, + fetchVaultsDataPending: false, + fetchVaultsDataDone: true, + }; + + case VAULT_FETCH_VAULTS_DATA_FAILURE: + return { + ...state, + fetchVaultsDataPending: false, + }; + + default: + return state; + } +} diff --git a/src/features/vault/redux/fetchWithdraw.js b/src/features/vault/redux/fetchWithdraw.js index fd180ba39..d5f9cc11e 100644 --- a/src/features/vault/redux/fetchWithdraw.js +++ b/src/features/vault/redux/fetchWithdraw.js @@ -1,151 +1,212 @@ import { useCallback } from 'react'; -import { useDispatch, useSelector, shallowEqual } from 'react-redux'; +import { useDispatch, useSelector } from 'react-redux'; import { VAULT_FETCH_WITHDRAW_BEGIN, VAULT_FETCH_WITHDRAW_SUCCESS, VAULT_FETCH_WITHDRAW_FAILURE, } from './constants'; -import { withdraw, withdrawEth } from "../../web3"; +import { withdraw, withdrawBnb, zapWithdraw, zapWithdrawAndSwap } from '../../web3'; export function fetchWithdraw({ address, web3, isAll, amount, contractAddress, index }) { return dispatch => { - // optionally you can have getState as the second argument dispatch({ type: VAULT_FETCH_WITHDRAW_BEGIN, - index + index, }); - // Return a promise so that you could control UI flow without states in the store. - // For example: after submit a form, you need to redirect the page to another when succeeds or show some errors message if fails. - // It's hard to use state to manage it, but returning a promise allows you to easily achieve it. - // e.g.: handleSubmit() { this.props.actions.submitForm(data).then(()=> {}).catch(() => {}); } const promise = new Promise((resolve, reject) => { - // doRequest is a placeholder Promise. You should replace it with your own logic. - // See the real-word example at: https://github.com/supnate/rekit/blob/master/src/features/home/redux/fetchRedditReactjsList.js - // args.error here is only for test coverage purpose. - withdraw({ web3, address, isAll, amount, contractAddress, dispatch }).then( - data => { + withdraw({ web3, address, isAll, amount, contractAddress, dispatch }) + .then(data => { dispatch({ type: VAULT_FETCH_WITHDRAW_SUCCESS, - data, index + data, + index, }); - resolve(data); - }, - ).catch( - // Use rejectHandler as the second argument so that render errors won't be caught. - error => { + resolve(data); + }) + .catch(error => { dispatch({ type: VAULT_FETCH_WITHDRAW_FAILURE, - index + index, }); reject(error.message || error); - } - ) + }); }); return promise; }; } -export function fetchWithdrawEth({ address, web3, isAll, amount, contractAddress, index }) { +export function fetchWithdrawBnb({ address, web3, isAll, amount, contractAddress, index }) { return dispatch => { - // optionally you can have getState as the second argument dispatch({ type: VAULT_FETCH_WITHDRAW_BEGIN, - index + index, }); - // Return a promise so that you could control UI flow without states in the store. - // For example: after submit a form, you need to redirect the page to another when succeeds or show some errors message if fails. - // It's hard to use state to manage it, but returning a promise allows you to easily achieve it. - // e.g.: handleSubmit() { this.props.actions.submitForm(data).then(()=> {}).catch(() => {}); } const promise = new Promise((resolve, reject) => { - // doRequest is a placeholder Promise. You should replace it with your own logic. - // See the real-word example at: https://github.com/supnate/rekit/blob/master/src/features/home/redux/fetchRedditReactjsList.js - // args.error here is only for test coverage purpose. - withdrawEth({ web3, address, isAll, amount, contractAddress, dispatch }).then( - data => { + withdrawBnb({ web3, address, isAll, amount, contractAddress, dispatch }) + .then(data => { dispatch({ type: VAULT_FETCH_WITHDRAW_SUCCESS, - data, index + data, + index, }); - resolve(data); - }, - ).catch( - // Use rejectHandler as the second argument so that render errors won't be caught. - error => { + resolve(data); + }) + .catch(error => { dispatch({ type: VAULT_FETCH_WITHDRAW_FAILURE, - index + index, }); reject(error.message || error); - } - ) + }); + }); + return promise; + }; +} + +export function fetchZapWithdrawAndRemoveLiquidity({ + address, + web3, + vaultAddress, + amount, + zapAddress, +}) { + const index = vaultAddress; + + return dispatch => { + dispatch({ + type: VAULT_FETCH_WITHDRAW_BEGIN, + index, + }); + + const promise = new Promise((resolve, reject) => { + zapWithdraw({ web3, address, vaultAddress, amount, zapAddress, dispatch }) + .then(data => { + dispatch({ + type: VAULT_FETCH_WITHDRAW_SUCCESS, + data, + index, + }); + resolve(data); + }) + .catch(error => { + dispatch({ + type: VAULT_FETCH_WITHDRAW_FAILURE, + index, + }); + reject(error.message || error); + }); + }); + return promise; + }; +} + +export function fetchZapWithdrawAndSwap({ + address, + web3, + vaultAddress, + amount, + zapAddress, + tokenOut, + amountOutMin, +}) { + const index = vaultAddress; + + return dispatch => { + dispatch({ + type: VAULT_FETCH_WITHDRAW_BEGIN, + index, + }); + + const promise = new Promise((resolve, reject) => { + zapWithdrawAndSwap({ + web3, + address, + vaultAddress, + amount, + zapAddress, + tokenOut, + amountOutMin, + dispatch, + }) + .then(data => { + dispatch({ + type: VAULT_FETCH_WITHDRAW_SUCCESS, + data, + index, + }); + resolve(data); + }) + .catch(error => { + dispatch({ + type: VAULT_FETCH_WITHDRAW_FAILURE, + index, + }); + reject(error.message || error); + }); }); return promise; }; } export function useFetchWithdraw() { - // args: false value or array - // if array, means args passed to the action creator const dispatch = useDispatch(); - const { fetchWithdrawPending } = useSelector( - state => ({ - fetchWithdrawPending: state.vault.fetchWithdrawPending, - }) - ); + const { fetchWithdrawPending } = useSelector(state => ({ + fetchWithdrawPending: state.vault.fetchWithdrawPending, + })); - const boundAction = useCallback( - (data) => dispatch(fetchWithdraw(data)), - [dispatch], + const boundWithdraw = useCallback(data => dispatch(fetchWithdraw(data)), [dispatch]); + const boundWithdrawBnb = useCallback(data => dispatch(fetchWithdrawBnb(data)), [dispatch]); + const boundZapWithdrawAndRemoveLiquidity = useCallback( + data => dispatch(fetchZapWithdrawAndRemoveLiquidity(data)), + [dispatch] ); - - const boundAction2 = useCallback( - (data) => dispatch(fetchWithdrawEth(data)), - [dispatch], + const boundZapWithdrawAndSwap = useCallback( + data => dispatch(fetchZapWithdrawAndSwap(data)), + [dispatch] ); return { - fetchWithdraw: boundAction, - fetchWithdrawEth: boundAction2, - fetchWithdrawPending + fetchWithdraw: boundWithdraw, + fetchWithdrawBnb: boundWithdrawBnb, + fetchZapWithdrawAndRemoveLiquidity: boundZapWithdrawAndRemoveLiquidity, + fetchZapWithdrawAndSwap: boundZapWithdrawAndSwap, + fetchWithdrawPending, }; } export function reducer(state, action) { switch (action.type) { case VAULT_FETCH_WITHDRAW_BEGIN: - // Just after a request is sent return { ...state, fetchWithdrawPending: { ...state.fetchWithdrawPending, - [action.index]: true + [action.index]: true, }, }; case VAULT_FETCH_WITHDRAW_SUCCESS: - // The request is success return { ...state, fetchWithdrawPending: { ...state.fetchWithdrawPending, - [action.index]: false + [action.index]: false, }, }; case VAULT_FETCH_WITHDRAW_FAILURE: - // The request is failed return { ...state, fetchWithdrawPending: { ...state.fetchWithdrawPending, - [action.index]: false + [action.index]: false, }, }; default: return state; } -} \ No newline at end of file +} diff --git a/src/features/vault/redux/fetchZapDeposit.js b/src/features/vault/redux/fetchZapDeposit.js new file mode 100644 index 000000000..31024aaa2 --- /dev/null +++ b/src/features/vault/redux/fetchZapDeposit.js @@ -0,0 +1,112 @@ +import { useCallback } from 'react'; +import { useDispatch, useSelector } from 'react-redux'; +import { + VAULT_FETCH_DEPOSIT_BEGIN, + VAULT_FETCH_DEPOSIT_SUCCESS, + VAULT_FETCH_DEPOSIT_FAILURE, +} from './constants'; +import { zapDeposit } from '../../web3'; + +export function fetchZapDeposit({ + address, + web3, + vaultAddress, + isETH, + tokenAddress, + tokenAmount, + zapAddress, + swapAmountOutMin, +}) { + const index = vaultAddress; + + return dispatch => { + dispatch({ + type: VAULT_FETCH_DEPOSIT_BEGIN, + index, + }); + + const promise = new Promise((resolve, reject) => { + zapDeposit({ + web3, + address, + vaultAddress, + isETH, + tokenAddress, + tokenAmount, + zapAddress, + swapAmountOutMin, + dispatch, + }) + .then(data => { + dispatch({ + type: VAULT_FETCH_DEPOSIT_SUCCESS, + data, + index, + }); + resolve(data); + }) + .catch(error => { + dispatch({ + type: VAULT_FETCH_DEPOSIT_FAILURE, + index, + }); + reject(error.message || error); + }); + }); + return promise; + }; +} + +export function useFetchZapDeposit() { + const dispatch = useDispatch(); + + const { fetchZapDepositPending } = useSelector(state => ({ + fetchZapDepositPending: state.vault.fetchZapDepositPending, + })); + + const boundActionZapDeposit = useCallback( + data => { + return dispatch(fetchZapDeposit(data)); + }, + [dispatch] + ); + + return { + fetchZapDeposit: boundActionZapDeposit, + fetchZapDepositPending, + }; +} + +export function reducer(state, action) { + switch (action.type) { + case VAULT_FETCH_DEPOSIT_BEGIN: + return { + ...state, + fetchZapDepositPending: { + ...state.fetchZapDepositPending, + [action.index]: true, + }, + }; + + case VAULT_FETCH_DEPOSIT_SUCCESS: + return { + ...state, + fetchZapDepositPending: { + ...state.fetchZapDepositPending, + [action.index]: false, + }, + }; + + case VAULT_FETCH_DEPOSIT_FAILURE: + return { + ...state, + fetchZapDepositPending: { + ...state.fetchZapDepositPending, + [action.index]: false, + }, + }; + + default: + return state; + } +} diff --git a/src/features/vault/redux/fetchZapEstimate.js b/src/features/vault/redux/fetchZapEstimate.js new file mode 100644 index 000000000..dcc731d89 --- /dev/null +++ b/src/features/vault/redux/fetchZapEstimate.js @@ -0,0 +1,193 @@ +import { useCallback } from 'react'; +import { useDispatch, useSelector } from 'react-redux'; +import BigNumber from 'bignumber.js'; +import { + VAULT_FETCH_ZAP_ESTIMATE_BEGIN, + VAULT_FETCH_ZAP_ESTIMATE_SUCCESS, + VAULT_FETCH_ZAP_ESTIMATE_FAILURE, +} from './constants'; +import { zapDepositEstimate, zapWithdrawEstimate } from '../../web3'; +import { convertAmountToRawNumber } from 'features/helpers/bignumber'; + +export function fetchZapDepositEstimate({ + web3, + zapAddress, + vaultAddress, + tokenAddress, + tokenAmount, +}) { + return dispatch => { + dispatch({ + type: VAULT_FETCH_ZAP_ESTIMATE_BEGIN, + index: vaultAddress, + }); + + const promise = new Promise((resolve, reject) => { + zapDepositEstimate({ web3, zapAddress, vaultAddress, tokenAddress, tokenAmount }) + .then(data => { + dispatch({ + type: VAULT_FETCH_ZAP_ESTIMATE_SUCCESS, + data: { zapEstimate: data }, + vaultAddress, + index: vaultAddress, + }); + resolve(); + }) + .catch(error => { + dispatch({ + type: VAULT_FETCH_ZAP_ESTIMATE_FAILURE, + index: vaultAddress, + }); + reject(error.message || error); + }); + }); + + return promise; + }; +} + +export function fetchZapWithdrawEstimate({ + web3, + vaultAddress, + routerAddress, + swapInput, + swapOutput, + pairToken, + pairTokenAmount, +}) { + return dispatch => { + dispatch({ + type: VAULT_FETCH_ZAP_ESTIMATE_BEGIN, + index: pairToken.tokenAddress, + }); + + const totalSupply = new BigNumber(pairToken.totalSupply); + const shares = new BigNumber(pairTokenAmount); + if (shares.isZero()) { + return new Promise(resolve => { + dispatch({ + type: VAULT_FETCH_ZAP_ESTIMATE_SUCCESS, + data: { + swapEstimate: { + amountIn: 0, + amountOut: 0, + swapInput, + swapOutput, + }, + }, + vaultAddress, + index: pairToken.tokenAddress, + }); + resolve(); + }); + } + + const equity = shares.dividedBy(totalSupply); + let amountIn, reserveIn, reserveOut; + if (swapInput.address.toLowerCase() === pairToken.token0.toLowerCase()) { + amountIn = equity.multipliedBy(pairToken.reserves[0]); + reserveIn = pairToken.reserves[0]; + reserveOut = pairToken.reserves[1]; + } + if (swapInput.address.toLowerCase() === pairToken.token1.toLowerCase()) { + amountIn = equity.multipliedBy(pairToken.reserves[1]); + reserveIn = pairToken.reserves[1]; + reserveOut = pairToken.reserves[0]; + } + + amountIn = convertAmountToRawNumber(amountIn, 0); + + const promise = new Promise((resolve, reject) => { + zapWithdrawEstimate({ web3, routerAddress, amountIn, reserveIn, reserveOut, dispatch }) + .then(amountOut => { + dispatch({ + type: VAULT_FETCH_ZAP_ESTIMATE_SUCCESS, + data: { + swapEstimate: { + amountIn, + amountOut, + swapInput, + swapOutput, + }, + }, + vaultAddress, + index: pairToken.tokenAddress, + }); + resolve(); + }) + .catch(error => { + dispatch({ + type: VAULT_FETCH_ZAP_ESTIMATE_FAILURE, + index: pairToken.tokenAddress, + }); + reject(error.message || error); + }); + }); + + return promise; + }; +} + +export function useFetchZapEstimate() { + const dispatch = useDispatch(); + + const { fetchZapEstimatePending } = useSelector(state => ({ + fetchZapEstimatePending: state.vault.fetchZapEstimatePending, + })); + + const boundActionDeposit = useCallback( + data => dispatch(fetchZapDepositEstimate(data)), + [dispatch] + ); + const boundActionWithdraw = useCallback( + data => dispatch(fetchZapWithdrawEstimate(data)), + [dispatch] + ); + + return { + fetchZapDepositEstimate: boundActionDeposit, + fetchZapWithdrawEstimate: boundActionWithdraw, + fetchZapEstimatePending, + }; +} + +export function reducer(state, action) { + switch (action.type) { + case VAULT_FETCH_ZAP_ESTIMATE_BEGIN: + return { + ...state, + fetchZapEstimatePending: { + ...state.fetchZapEstimatePending, + [action.index]: true, + }, + }; + + case VAULT_FETCH_ZAP_ESTIMATE_SUCCESS: + const { pools } = state; + const poolIndex = pools.findIndex(pool => pool.earnContractAddress === action.vaultAddress); + pools[poolIndex] = { + ...pools[poolIndex], + ...action.data, + }; + return { + ...state, + pools, + fetchZapEstimatePending: { + ...state.fetchZapEstimatePending, + [action.index]: false, + }, + }; + + case VAULT_FETCH_ZAP_ESTIMATE_FAILURE: + return { + ...state, + fetchZapEstimatePending: { + ...state.fetchZapEstimatePending, + [action.index]: false, + }, + }; + + default: + return state; + } +} diff --git a/src/features/vault/redux/hooks.js b/src/features/vault/redux/hooks.js index 355a631a8..e65b4e7c3 100644 --- a/src/features/vault/redux/hooks.js +++ b/src/features/vault/redux/hooks.js @@ -1,6 +1,9 @@ export { useFetchBalances } from './fetchBalances'; -export { useFetchPoolBalances } from './fetchPoolBalances'; +export { useFetchVaultsData } from './fetchVaultsData'; export { useFetchApproval } from './fetchApproval'; export { useFetchDeposit } from './fetchDeposit'; +export { useFetchZapDeposit } from './fetchZapDeposit'; export { useFetchWithdraw } from './fetchWithdraw'; -export { useFetchContractApy } from './fetchContractApy'; \ No newline at end of file +export { useFetchApys } from './fetchApys'; +export { useFetchHarvest } from './fetchHarvest'; +export { useFetchZapEstimate } from './fetchZapEstimate'; diff --git a/src/features/vault/redux/initialState.js b/src/features/vault/redux/initialState.js index 9d90525e4..18773ad6f 100644 --- a/src/features/vault/redux/initialState.js +++ b/src/features/vault/redux/initialState.js @@ -1,31 +1,101 @@ -import { pools } from "../../configure"; +import { getNetworkPools, launchpools } from '../../helpers/getNetworkData'; +import { getEligibleZap } from 'features/zap/zapUniswapV2'; const tokens = {}; +const pools = getNetworkPools(); -pools.map(({token, tokenAddress, earnedToken, earnedTokenAddress})=> { - tokens[token] = { - tokenAddress: tokenAddress, - tokenBalance: 0 - } - tokens[earnedToken] = { - tokenAddress: earnedTokenAddress, - tokenBalance: 0 - } - return ''; -}) +const zapMap = {}; + +pools.forEach( + ( + { + token, + tokenDecimals, + tokenAddress, + earnedToken, + earnContractAddress, + earnedTokenAddress, + withdrawalFee, + depositFee, + }, + i + ) => { + if (!withdrawalFee) pools[i].withdrawalFee = '0.1%'; + if (!depositFee) pools[i].depositFee = '0%'; + + tokens[token] = { + symbol: token, + decimals: tokenDecimals, + tokenAddress: tokenAddress, + tokenBalance: 0, + allowance: { + ...tokens[token]?.allowance, + [earnContractAddress]: tokenAddress ? 0 : Infinity, + }, + }; + tokens[earnedToken] = { + symbol: earnedToken, + decimals: 18, + tokenAddress: earnedTokenAddress, + tokenBalance: 0, + allowance: { + [earnContractAddress]: 0, + }, + }; -// console.log(tokens) + const zap = getEligibleZap(pools[i]); + if (zap) { + tokens[token].allowance[zap.zapAddress] = tokenAddress ? 0 : Infinity; + tokens[earnedToken].allowance[zap.zapAddress] = 0; + pools[i]['zap'] = zap; + zapMap[pools[i].id] = zap; + } + } +); +const now = Date.now() / 1000; const initialState = { pools, tokens, - contractApy: {}, - fetchContractApyPending: false, - fetchPoolBalancesPending: false, + apys: {}, + bifibuyback: {}, + fetchApysDone: false, + fetchApysPending: false, + fetchVaultsDataDone: false, + fetchVaultsDataPending: false, + fetchBalancesDone: false, fetchBalancesPending: false, + fetchBifibuybackDone: false, + fetchBifibuybackPending: false, fetchApprovalPending: {}, fetchDepositPending: {}, + fetchZapDepositPending: {}, fetchWithdrawPending: {}, + fetchHarvestPending: {}, + fetchZapEstimatePending: {}, + vaultLaunchpool: Object.fromEntries( + pools.map(vault => { + const launchpool = Object.values(launchpools).find( + lp => lp.token === vault.earnedToken && lp.status !== 'closed' && lp.periodFinish >= now + ); + + return [vault.id, launchpool ? launchpool.id : null]; + }) + ), + vaultLaunchpools: Object.fromEntries( + pools.map(vault => { + const activeLaunchpools = Object.values(launchpools) + .filter( + lp => lp.token === vault.earnedToken && lp.status !== 'closed' && lp.periodFinish >= now + ) + .map(lp => lp.id); + + return [vault.id, activeLaunchpools]; + }) + ), }; -export default initialState; \ No newline at end of file +const allZaps = Object.keys(zapMap); +console.log('Total number of zaps: ' + allZaps.length.toString()); + +export default initialState; diff --git a/src/features/vault/redux/reducer.js b/src/features/vault/redux/reducer.js index 0f2e1752c..7a1956cad 100644 --- a/src/features/vault/redux/reducer.js +++ b/src/features/vault/redux/reducer.js @@ -1,21 +1,26 @@ import initialState from './initialState'; import { reducer as fetchBalancesReducer } from './fetchBalances'; -import { reducer as fetchPoolBalancesReducer } from './fetchPoolBalances'; +import { reducer as fetchVaultsData } from './fetchVaultsData'; import { reducer as fetchApprovalReducer } from './fetchApproval'; import { reducer as fetchDepositReducer } from './fetchDeposit'; import { reducer as fetchWithdrawReducer } from './fetchWithdraw'; -import { reducer as fetchContractApyReducer } from './fetchContractApy'; +import { reducer as fetchApysReducer } from './fetchApys'; +import { reducer as fetchZapEstimateReducer } from './fetchZapEstimate'; +import { reducer as fetchBifiBuybackReducer } from './fetchBifiBuyback'; +import { reducer as updateLaunchpoolsReducer } from './updateLaunchpools'; const reducers = [ - fetchBalancesReducer, - fetchPoolBalancesReducer, + fetchVaultsData, fetchApprovalReducer, fetchDepositReducer, fetchWithdrawReducer, - fetchContractApyReducer + fetchApysReducer, + fetchZapEstimateReducer, + fetchBalancesReducer, + fetchBifiBuybackReducer, + updateLaunchpoolsReducer, ]; - export default function reducer(state = initialState, action) { let newState; switch (action.type) { @@ -26,4 +31,4 @@ export default function reducer(state = initialState, action) { } /* istanbul ignore next */ return reducers.reduce((s, r) => r(s, action), newState); -} \ No newline at end of file +} diff --git a/src/features/vault/redux/updateLaunchpools.js b/src/features/vault/redux/updateLaunchpools.js new file mode 100644 index 000000000..0920ae13d --- /dev/null +++ b/src/features/vault/redux/updateLaunchpools.js @@ -0,0 +1,59 @@ +import { launchpools, vaults } from '../../helpers/getNetworkData'; +import { VAULT_UPDATE_LAUNCHPOOLS } from './constants'; + +export async function updateLaunchpools(dispatch, getState) { + const { + stake: { poolStatus, poolApr }, + } = getState(); + + const allActive = Object.fromEntries( + Object.entries(vaults).map(([vaultId, vault]) => { + const activeLaunchpools = Object.values(launchpools) + .filter(pool => pool.token === vault.earnedToken && poolStatus[pool.id] !== 'closed') + .map(pool => pool.id); + + activeLaunchpools.sort((a, b) => { + const apyA = poolApr[a]; + const apyB = poolApr[b]; + + // Descending sort + return (apyB > apyA) - (apyA > apyB); + }); + + return [vaultId, activeLaunchpools]; + }) + ); + + const highestApy = Object.fromEntries( + Object.keys(vaults).map(vaultId => { + return [vaultId, allActive[vaultId].length ? allActive[vaultId][0] : null]; + }) + ); + + dispatch({ + type: VAULT_UPDATE_LAUNCHPOOLS, + vaultLaunchpools: allActive, + vaultLaunchpool: highestApy, + }); +} + +export function reducer(state, action) { + switch (action.type) { + case VAULT_UPDATE_LAUNCHPOOLS: { + return { + ...state, + vaultLaunchpools: { + ...state.vaultLaunchpools, + ...action.vaultLaunchpools, + }, + vaultLaunchpool: { + ...state.vaultLaunchpool, + ...action.vaultLaunchpool, + }, + }; + } + default: { + return state; + } + } +} diff --git a/src/features/vault/route.js b/src/features/vault/route.js deleted file mode 100644 index ffdde3718..000000000 --- a/src/features/vault/route.js +++ /dev/null @@ -1,8 +0,0 @@ -import { VaultPage } from './'; - -export default { - path: 'vault', - childRoutes: [ - { path: 'vault', component: VaultPage, isIndex: true }, - ], -}; diff --git a/src/features/vault/sections/SectionPools.js b/src/features/vault/sections/SectionPools.js deleted file mode 100644 index 0f4fa0b13..000000000 --- a/src/features/vault/sections/SectionPools.js +++ /dev/null @@ -1,535 +0,0 @@ -/* eslint-disable */ -import React, { useState, useEffect, createContext } from 'react'; -import { useTranslation } from 'react-i18next'; -import BigNumber from "bignumber.js"; -import {byDecimals,calculateReallyNum} from 'features/helpers/bignumber'; -// @material-ui/core components -import { makeStyles } from "@material-ui/core/styles"; -import InputAdornment from "@material-ui/core/InputAdornment"; -import ExpandMoreIcon from '@material-ui/icons/ExpandMore'; -import Accordion from '@material-ui/core/Accordion' -import classNames from "classnames"; -import AccordionSummary from '@material-ui/core/AccordionSummary' -import AccordionDetails from '@material-ui/core/AccordionActions' -import HelpOutlineIcon from '@material-ui/icons/HelpOutline'; -import IconButton from '@material-ui/core/IconButton'; -import TextField from '@material-ui/core/TextField'; -import Typography from '@material-ui/core/Typography'; -import FormControl from '@material-ui/core/FormControl'; -import CustomOutlinedInput from 'components/CustomOutlinedInput/CustomOutlinedInput'; -import Grid from '@material-ui/core/Grid'; -import Hidden from '@material-ui/core/Hidden'; -import {primaryColor} from "assets/jss/material-kit-pro-react.js"; -// core components -import GridContainer from "components/Grid/GridContainer.js"; -import GridItem from "components/Grid/GridItem.js"; -import Card from "components/Card/Card.js"; -import CardBody from "components/Card/CardBody.js"; -import Button from "components/CustomButtons/Button.js"; -import Avatar from '@material-ui/core/Avatar'; -import CustomInput from "components/CustomInput/CustomInput.js"; -// sections for this section -// import SectionOpenedPool from "./SectionOpenedPool"; -import { useSnackbar } from 'notistack'; -// hooks -import { useConnectWallet } from '../../home/redux/hooks'; -import { useFetchBalances, useFetchPoolBalances, useFetchApproval, useFetchDeposit, useFetchWithdraw, useFetchContractApy } from '../redux/hooks'; -import CustomSlider from 'components/CustomSlider/CustomSlider'; - -import sectionPoolsStyle from "../jss/sections/sectionPoolsStyle"; -import { reflect } from 'async'; -import { inputLimitPass,inputFinalVal } from 'features/helpers/utils'; - -const useStyles = makeStyles(sectionPoolsStyle); - -export default function SectionPools() { - const { t, i18n } = useTranslation(); - const { web3, address, networkId } = useConnectWallet(); - let { pools, fetchPoolBalances } = useFetchPoolBalances(); - const { tokens, fetchBalances } = useFetchBalances(); - const [ openedCardList, setOpenCardList ] = useState([0]); - const classes = useStyles(); - - const { fetchApproval, fetchApprovalPending } = useFetchApproval(); - const { fetchDeposit, fetchDepositEth, fetchDepositPending } = useFetchDeposit(); - const { fetchWithdraw, fetchWithdrawEth, fetchWithdrawPending } = useFetchWithdraw(); - const { contractApy, fetchContractApy } = useFetchContractApy(); - - const [ depositedBalance, setDepositedBalance ] = useState({}); - const [ withdrawAmount, setWithdrawAmount ] = useState({}); - - const { enqueueSnackbar } = useSnackbar(); - - const changeDetailInputValue = (type,index,total,tokenDecimals,event) => { - let value = event.target.value; - if(!inputLimitPass(value,tokenDecimals)){ - return; - } - let sliderNum = 0; - let inputVal = Number(value.replace(',','')); - if(value){ - sliderNum = byDecimals(inputVal/total,0).toFormat(2) * 100; - } - switch(type){ - case 'depositedBalance': - setDepositedBalance({ - ...depositedBalance, - [index]: inputFinalVal(value,total,tokenDecimals), - [`slider-${index}`]: sliderNum, - }); - break; - case 'withdrawAmount': - setWithdrawAmount({ - ...withdrawAmount, - [index]: inputFinalVal(value,total,tokenDecimals), - [`slider-${index}`]: sliderNum, - }); - break; - default: - break; - } - } - - const handleDepositedBalance = (index,total,event,sliderNum) => { - setDepositedBalance({ - ...depositedBalance, - [index]: sliderNum == 0 ? 0: calculateReallyNum(total,sliderNum), - [`slider-${index}`]: sliderNum == 0 ? 0: sliderNum, - }); - } - - const handleWithdrawAmount = (index,total,event,sliderNum) => { - setWithdrawAmount({ - ...withdrawAmount, - [index]: sliderNum == 0 ? 0: calculateReallyNum(total,sliderNum), - [`slider-${index}`]: sliderNum == 0 ? 0: sliderNum, - }); - }; - - const onApproval = (pool, index, event) => { - event.stopPropagation(); - fetchApproval({ - address, - web3, - tokenAddress: pool.tokenAddress, - contractAddress: pool.earnContractAddress, - index - }).then( - () => enqueueSnackbar(`Approval success`, {variant: 'success'}) - ).catch( - error => enqueueSnackbar(`Approval error: ${error}`, {variant: 'error'}) - ) - } - - const onDeposit = (pool, index, isAll, balanceSingle, event) => { - event.stopPropagation(); - if (isAll) { - setDepositedBalance({ - ...depositedBalance, - [index]: forMat(balanceSingle), - [`slider-${index}`]: 100, - }) - } - console.log(depositedBalance[index]) - let amountValue = depositedBalance[index]? depositedBalance[index].replace(',',''): depositedBalance[index]; - if (!pool.tokenAddress) {// 如果是eth - fetchDepositEth({ - address, - web3, - amount: new BigNumber(amountValue).multipliedBy(new BigNumber(10).exponentiatedBy(pool.tokenDecimals)).toString(10), - contractAddress: pool.earnContractAddress, - index - }).then( - () => enqueueSnackbar(`Deposit success`, {variant: 'success'}) - ).catch( - error => enqueueSnackbar(`Deposit error: ${error}`, {variant: 'error'}) - ) - } else { - fetchDeposit({ - address, - web3, - isAll, - amount: new BigNumber(amountValue).multipliedBy(new BigNumber(10).exponentiatedBy(pool.tokenDecimals)).toString(10), - contractAddress: pool.earnContractAddress, - index - }).then( - () => enqueueSnackbar(`Deposit success`, {variant: 'success'}) - ).catch( - error => enqueueSnackbar(`Deposit error: ${error}`, {variant: 'error'}) - ) - } - } - - const onWithdraw = (pool, index, isAll, singleDepositedBalance, event) => { - event.stopPropagation(); - // console.log(isAll) - if (isAll) { - setWithdrawAmount({ - ...withdrawAmount, - [index]: forMat(singleDepositedBalance), - [`slider-${index}`]: 100, - }) - } - let amountValue = withdrawAmount[index]? withdrawAmount[index].replace(',',''): withdrawAmount[index]; - if (!pool.tokenAddress) {// 如果是eth - fetchWithdrawEth({ - address, - web3, - isAll, - amount: new BigNumber(amountValue).multipliedBy(new BigNumber(10).exponentiatedBy(pool.tokenDecimals)).toString(10), - contractAddress: pool.earnContractAddress, - index - }).then( - () => enqueueSnackbar(`Withdraw success`, {variant: 'success'}) - ).catch( - error => enqueueSnackbar(`Withdraw error: ${error}`, {variant: 'error'}) - ) - } else { - fetchWithdraw({ - address, - web3, - isAll, - amount: new BigNumber(amountValue).multipliedBy(new BigNumber(10).exponentiatedBy(pool.tokenDecimals)).toString(10), - contractAddress: pool.earnContractAddress, - index - }).then( - () => enqueueSnackbar(`Withdraw success`, {variant: 'success'}) - ).catch( - error => enqueueSnackbar(`Withdraw error: ${error}`, {variant: 'error'}) - ) - } - - } - - const openCard = id => { - return setOpenCardList( - openedCardList => { - if(openedCardList.includes(id)) { - return openedCardList.filter(item => item!==id) - } else { - return [...openedCardList, id] - } - } - ) - } - - useEffect(() => { - if (address && web3) { - fetchBalances({address, web3, tokens}); - fetchPoolBalances({address, web3, pools}); - const id = setInterval(() => { - fetchBalances({address, web3, tokens}); - fetchPoolBalances({address, web3, pools}); - }, 10000); - return () => clearInterval(id); - } - }, [address, web3, fetchBalances, fetchPoolBalances]); - - useEffect(() => { - fetchContractApy(); - }, [pools, fetchContractApy]); - - const forMat = number => { - return new BigNumber( - number - ).multipliedBy( - new BigNumber(10000) - ).dividedToIntegerBy( - new BigNumber(1) - ).dividedBy( - new BigNumber(10000) - ).toNumber() - } - - const isZh = Boolean((i18n.language == 'zh') || (i18n.language == 'zh-CN')); - const gridItemStyle = { - display: "flex", - justifyContent : "space-around", - alignItems : "center", - alignContent: "space-around", - } - - const random = (min, max) => { - return Math.floor(Math.random() * (max - min)) + min; - } - return ( - - -
{t('Vault-Main-Title')}
-

{t('Vault-Second-Title')}

-
- - {Boolean(networkId === Number(process.env.NETWORK_ID)) && pools.map((pool, index) => { - let balanceSingle = byDecimals(tokens[pool.token].tokenBalance, pool.tokenDecimals); - // balanceSingle = byDecimals(random(1, 1000000), 1) - // balanceSingle = new BigNumber(random(1, 1000000000000000)) - let singleDepositedBalance = byDecimals(tokens[pool.earnedToken].tokenBalance, pool.tokenDecimals); - // singleDepositedBalance = byDecimals(random(1, 1000000), 1) - // singleDepositedBalance = new BigNumber(random(1, 1000)) - let depositedApy = contractApy[pool.id] || 0; - // depositedApy = random(0, 1) - // depositedApy =byDecimals(random(0, 100), 1) - return ( - -
- - { - event.stopPropagation(); - openCard(index) - }} - > - - - - - - - - - {pool.token} - - { - event.stopPropagation(); - window.open(isZh?pool.tokenDescriptionUrl2:pool.tokenDescriptionUrl) - } - } - /> - - - - {pool.token} - - - - - - - - - - {forMat(balanceSingle)} { pool.token } - {t('Vault-Balance')} - - - - - - {forMat(singleDepositedBalance)} { pool.token } - {t('Vault-Deposited')} - - - - - - {depositedApy} - {t('Vault-ListAPY')} - - - - - - - - - - { - event.stopPropagation(); - window.open(isZh?pool.tokenDescriptionUrl2:pool.tokenDescriptionUrl) - } - } - > - - - - - - { - event.stopPropagation(); - openCard(index); - }} - > - { - openedCardList.includes(index) ? : - } - - - - - - - - - -
- {t('Vault-Balance')}:{balanceSingle.toFormat(4)} { pool.token } -
- - - - - -
- { - pool.allowance === 0 ? ( -
- -
- ) : ( -
- - {Boolean(pool.tokenAddress) && } -
- ) - } -
-
- - -
- {singleDepositedBalance.multipliedBy(new BigNumber(pool.pricePerFullShare)).toFormat(4)} { pool.token } ({singleDepositedBalance.toFormat(4)} { pool.earnedToken }) -
- - - - -
- - -
-
- -
-
-
-
-
- ) - })} - -
- ) -} diff --git a/src/features/vault/sections/SectionTitle.js b/src/features/vault/sections/SectionTitle.js deleted file mode 100644 index b25018bd8..000000000 --- a/src/features/vault/sections/SectionTitle.js +++ /dev/null @@ -1,22 +0,0 @@ -import React from 'react'; -import { useTranslation } from 'react-i18next'; -// nodejs library that concatenates classes -import classNames from "classnames"; -// @material-ui/core components -import { makeStyles } from "@material-ui/core/styles"; -import Grid from '@material-ui/core/Grid'; -import Typography from '@material-ui/core/Typography'; - -import sectionTitleStyle from "../jss/sections/sectionTitleStyle"; - -const useStyles = makeStyles(sectionTitleStyle); -export default function SectionTitle() { - const { t } = useTranslation(); - const classes = useStyles(); - - return ( - - {t('Vault-Title')} - - ) -} diff --git a/src/features/web3/approval.js b/src/features/web3/approval.js index 96c797de1..b27d4e50a 100644 --- a/src/features/web3/approval.js +++ b/src/features/web3/approval.js @@ -1,37 +1,34 @@ -import { erc20ABI } from "../configure"; -import BigNumber from "bignumber.js"; +import { erc20ABI } from '../configure'; +import BigNumber from 'bignumber.js'; import { enqueueSnackbar } from '../common/redux/actions'; -export const approval = ({web3, address, tokenAddress, contractAddress, dispatch}) => { - // console.log(`=====================================approval begin=====================================`) +export const approval = ({ web3, address, tokenAddress, contractAddress, dispatch }) => { return new Promise((resolve, reject) => { const contract = new web3.eth.Contract(erc20ABI, tokenAddress); - // console.log(` - // address:${address}\n - // tokenAddress:${tokenAddress}\n - // contractAddress:${contractAddress}\n - // amount:${web3.utils.toWei('79228162514', "ether")} - // `) - contract.methods.approve(contractAddress, web3.utils.toWei('79228162514', "ether")).send({ from: address }).on( - 'transactionHash', function(hash){ - dispatch(enqueueSnackbar({ - message: hash, - options: { - key: new Date().getTime() + Math.random(), - variant: 'success' - }, - hash - })); - }) - .on('receipt', function(receipt){ - resolve(new BigNumber(79228162514).toNumber()); + + contract.methods + .approve(contractAddress, '0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff') + .send({ from: address }) + .on('transactionHash', function (hash) { + dispatch( + enqueueSnackbar({ + message: hash, + options: { + key: new Date().getTime() + Math.random(), + variant: 'success', + }, + hash, + }) + ); }) - .on('error', function(error) { - reject(error) + .on('receipt', function (receipt) { + resolve(new BigNumber('Infinity').toNumber()); }) - .catch((error) => { - reject(error) + .on('error', function (error) { + reject(error); }) + .catch(error => { + reject(error); + }); }); - // console.log(`=====================================approval success=====================================`) -} \ No newline at end of file +}; diff --git a/src/features/web3/createWeb3Modal.js b/src/features/web3/createWeb3Modal.js new file mode 100644 index 000000000..ed5f86630 --- /dev/null +++ b/src/features/web3/createWeb3Modal.js @@ -0,0 +1,14 @@ +import Web3Modal from 'web3modal'; + +import { getNetworkConnectors } from 'features/helpers/getNetworkData'; + +export const createWeb3Modal = t => { + const connectors = getNetworkConnectors(t); + const modal = new Web3Modal(connectors); + + if (modal.cachedProvider && !(modal.cachedProvider in connectors.providerOptions)) { + modal.clearCachedProvider(); + } + + return modal; +}; diff --git a/src/features/web3/deposit.js b/src/features/web3/deposit.js index b028cd6b2..6832052ae 100644 --- a/src/features/web3/deposit.js +++ b/src/features/web3/deposit.js @@ -1,71 +1,68 @@ -import { earnContractABI } from "../configure"; +import { vaultABI } from '../configure'; import { enqueueSnackbar } from '../common/redux/actions'; - -export const deposit = async ({web3, address, isAll, amount, contractAddress, dispatch}) => { - // console.log(`=====================================deposit begin=====================================`) - console.log(` - address:${address}\n - contractAddress:${contractAddress}\n - amount:${amount} - `) - const contract = new web3.eth.Contract(earnContractABI, contractAddress); - const data = await _deposit({web3, contract,isAll, amount, address}); - // console.log(`=====================================deposit success=====================================`) +export const deposit = async ({ web3, address, isAll, amount, contractAddress, dispatch }) => { + const contract = new web3.eth.Contract(vaultABI, contractAddress); + const data = await _deposit({ web3, contract, isAll, amount, address, dispatch }); return data; -} +}; -const _deposit = ({web3, contract, amount, isAll, address, dispatch}) => { +const _deposit = ({ web3, contract, amount, isAll, address, dispatch }) => { return new Promise((resolve, reject) => { - // console.log(isAll) - if(isAll) { - contract.methods.depositAll().send({ from: address }).on('transactionHash', function(hash){ - console.log(hash) - dispatch(enqueueSnackbar({ - message: hash, - options: { - key: new Date().getTime() + Math.random(), - variant: 'success' - }, - hash - })); - }) - .on('receipt', function(receipt){ - console.log(receipt); - resolve() - }) - .on('error', function(error) { - console.log(error) - reject(error) - }) - .catch((error) => { - console.log(error) - reject(error) - }) + if (isAll) { + contract.methods + .depositAll() + .send({ from: address }) + .on('transactionHash', function (hash) { + dispatch( + enqueueSnackbar({ + message: hash, + options: { + key: new Date().getTime() + Math.random(), + variant: 'success', + }, + hash, + }) + ); + }) + .on('receipt', function (receipt) { + resolve(); + }) + .on('error', function (error) { + reject(error); + }) + .catch(error => { + reject(error); + }); } else { - contract.methods.deposit(amount).send({ from: address }).on('transactionHash', function(hash){ - console.log(hash) - dispatch(enqueueSnackbar({ - message: hash, - options: { - key: new Date().getTime() + Math.random(), - variant: 'success' - }, - hash - })); - }) - .on('receipt', function(receipt){ - console.log(receipt); - resolve() - }) - .on('error', function(error) { - console.log(error) - reject(error) - }) - .catch((error) => { - console.log(error) - reject(error) - }) + contract.methods + .deposit(amount) + .send({ from: address }) + .on('transactionHash', function (hash) { + console.log(hash); + dispatch( + enqueueSnackbar({ + message: hash, + options: { + key: new Date().getTime() + Math.random(), + variant: 'success', + }, + hash, + }) + ); + }) + .on('receipt', function (receipt) { + console.log(receipt); + resolve(); + }) + .on('error', function (error) { + console.log(error); + reject(error); + }) + .catch(error => { + console.log(error); + reject(error); + }); } - }) -} \ No newline at end of file + }); +}; diff --git a/src/features/web3/depositBnb.js b/src/features/web3/depositBnb.js new file mode 100644 index 000000000..bc30a0696 --- /dev/null +++ b/src/features/web3/depositBnb.js @@ -0,0 +1,41 @@ +import { bnbVaultABI } from '../configure'; +import { enqueueSnackbar } from '../common/redux/actions'; + +export const depositBnb = async ({ web3, address, amount, contractAddress, dispatch }) => { + const contract = new web3.eth.Contract(bnbVaultABI, contractAddress); + const data = await _deposit({ web3, contract, amount, address, dispatch }); + return data; +}; + +const _deposit = ({ web3, contract, amount, address, dispatch }) => { + return new Promise((resolve, reject) => { + contract.methods + .depositBNB() + .send({ from: address, value: amount }) + .on('transactionHash', function (hash) { + console.log(hash); + dispatch( + enqueueSnackbar({ + message: hash, + options: { + key: new Date().getTime() + Math.random(), + variant: 'success', + }, + hash, + }) + ); + }) + .on('receipt', function (receipt) { + console.log(receipt); + resolve(); + }) + .on('error', function (error) { + console.log(error); + reject(error); + }) + .catch(error => { + console.log(error); + reject(error); + }); + }); +}; diff --git a/src/features/web3/depositEth.js b/src/features/web3/depositEth.js deleted file mode 100644 index b45b9d4c9..000000000 --- a/src/features/web3/depositEth.js +++ /dev/null @@ -1,39 +0,0 @@ -import { enqueueSnackbar } from '../common/redux/actions'; - -export const depositEth = async ({web3, address, amount, contractAddress, dispatch}) => { - return new Promise((resolve, reject) => { - console.log(` - address:${address}\n - contractAddress:${contractAddress}\n - amount:${amount} - `) - web3.eth.sendTransaction({ - from: address, - to: contractAddress, - value: amount, - gasLimit: 300000 - }) - .on('transactionHash', function(hash){ - dispatch(enqueueSnackbar({ - message: hash, - options: { - key: new Date().getTime() + Math.random(), - variant: 'success' - }, - hash - })); - }) - .on('receipt', function(receipt){ - console.log(receipt); - resolve() - }) - .on('error', function(error) { - console.log(error) - reject(error) - }) - .catch((error) => { - console.log(error) - reject(error) - }) - }) -} \ No newline at end of file diff --git a/src/features/web3/fetchAllowance.js b/src/features/web3/fetchAllowance.js index 3b4e479b7..777011a9b 100644 --- a/src/features/web3/fetchAllowance.js +++ b/src/features/web3/fetchAllowance.js @@ -1,18 +1,12 @@ -import BigNumber from "bignumber.js"; +import BigNumber from 'bignumber.js'; -export const fetchAllowance = async ({web3, address, contract, contractAddress}) => { - // console.log(`=====================================fetchAllowance begin=====================================`) - // const contract = new web3.eth.Contract(erc20ABI, tokenAddress); - // console.log(` - // address:${address}\n - // contractAddress:${contractAddress}\n - // contract:${contract}\n - // `) - if (!contract) { return 79228162514} - const balance = await contract.methods.allowance(address, contractAddress).call({ from: address }); - const allowance = web3.utils.fromWei(balance, "ether"); - - // console.log(allowance) - // console.log(`=====================================fetchAllowance success=====================================`) +export const fetchAllowance = async ({ web3, address, contract, contractAddress }) => { + if (!contract) { + return 8000000000000; + } + const balance = await contract.methods + .allowance(address, contractAddress) + .call({ from: address }); + const allowance = web3.utils.fromWei(balance, 'ether'); return new BigNumber(allowance).toNumber(); -} \ No newline at end of file +}; diff --git a/src/features/web3/fetchBalance.js b/src/features/web3/fetchBalance.js index 22788fb0f..3596933f5 100644 --- a/src/features/web3/fetchBalance.js +++ b/src/features/web3/fetchBalance.js @@ -1,21 +1,14 @@ -import { erc20ABI } from "../configure"; -import BigNumber from "bignumber.js"; +import { erc20ABI } from '../configure'; +import BigNumber from 'bignumber.js'; -export const fetchBalance = async ({web3, address, tokenAddress }) => { - // console.log(`=====================================fetchBalance begin=====================================`) +export const fetchBalance = async ({ web3, address, tokenAddress }) => { if (!tokenAddress) { - const ethBalance = await web3.eth.getBalance(address) + const ethBalance = await web3.eth.getBalance(address); return ethBalance; } - const contract = new web3.eth.Contract(erc20ABI, tokenAddress) - // console.log(` - // address:${address}\n - // tokenAddress:${tokenAddress}\n - // `) - // 0xdAC17F958D2ee523a2206206994597C13D831ec7 地址为usdt + + const contract = new web3.eth.Contract(erc20ABI, tokenAddress); const balance = await contract.methods.balanceOf(address).call({ from: address }); - // console.log(balance) - // console.log(`=====================================fetchBalance success=====================================`) return new BigNumber(balance).toNumber(); -} \ No newline at end of file +}; diff --git a/src/features/web3/fetchGasPrice.js b/src/features/web3/fetchGasPrice.js deleted file mode 100644 index 6179b7b22..000000000 --- a/src/features/web3/fetchGasPrice.js +++ /dev/null @@ -1,16 +0,0 @@ -import axios from 'axios'; - -export const fetchGasPrice = async () => { - try { - const url = 'https://www.gasnow.org/api/v3/gas/price?utm_source=dfi.money'; - // const url = 'https://gasprice.poa.network/' - const { data } = await axios.get(url); - // console.log(data.fast.toFixed(0)); - // return data.fast.toFixed(0).toString() || '70'; - // console.log(data.data.fast.toString()) - return data.data.fast.toString() || '70'; - } catch(error) { - // console.log(error) - return '70'; - } -} \ No newline at end of file diff --git a/src/features/web3/fetchPrice.js b/src/features/web3/fetchPrice.js new file mode 100644 index 000000000..ef5ac5af0 --- /dev/null +++ b/src/features/web3/fetchPrice.js @@ -0,0 +1,107 @@ +import axios from 'axios'; + +import { getNetworkPools, launchpools } from '../helpers/getNetworkData'; +import { apiUrl, getApiCacheBuster } from '../helpers/getApiInfo'; + +const pools = getNetworkPools(); + +const CACHE_TIMEOUT_MS = 1 * 60 * 1000; // 1 minute(s) +const priceCache = { + cache: new Map(), + lastUpdated: undefined, +}; + +function getCachedPrice(id) { + return priceCache.cache.get(id); +} + +function maybeUpdateCache() { + const currentTimestamp = new Date(); + if ( + priceCache.lastUpdated && + currentTimestamp.getTime() > priceCache.lastUpdated.getTime() + CACHE_TIMEOUT_MS + ) { + initializePriceCache(); + // console.trace('price cache updated') + } +} + +const fetchTokens = async () => { + const cacheBuster = getApiCacheBuster(); + + try { + const response = await axios.get(`${apiUrl}/prices?_=${cacheBuster}`); + return response.data; + } catch (err) { + console.error(err); + return {}; + } +}; + +const fetchLPs = async () => { + const cacheBuster = getApiCacheBuster(); + + try { + const response = await axios.get(`${apiUrl}/lps?_=${cacheBuster}`); + return response.data; + } catch (err) { + console.error(err); + return {}; + } +}; + +const oracleEndpoints = { + tokens: () => fetchTokens(), + lps: () => fetchLPs(), +}; + +let pricesLoadedPromise; +export function whenPricesLoaded() { + return pricesLoadedPromise; +} + +export function initializePriceCache() { + const currentTimestamp = new Date(); + priceCache.lastUpdated = currentTimestamp; + + const oracleToIds = new Map(); + pools.forEach(pool => { + if (!oracleToIds.has(pool.oracle)) { + oracleToIds.set(pool.oracle, []); + } + oracleToIds.get(pool.oracle).push(pool.oracleId); + }); + + // BIFI should always be fetched + if (!oracleToIds.has('tokens')) { + oracleToIds.set('tokens', []); + } + oracleToIds.get('tokens').push('BIFI'); + + Object.values(launchpools).forEach(pool => { + if (!oracleToIds.has(pool.earnedOracle)) { + oracleToIds.set(pool.earnedOracle, []); + } + oracleToIds.get(pool.earnedOracle).push(pool.earnedOracleId); + }); + + const promises = [...oracleToIds.keys()].map(key => oracleEndpoints[key](oracleToIds.get(key))); + pricesLoadedPromise = Promise.all(promises).then(results => { + const allPrices = results.reduce( + (accPrices, curPrices) => ({ ...accPrices, ...curPrices }), + {} + ); + [...oracleToIds.values()].flat().forEach(id => priceCache.cache.set(id, allPrices[id])); + }); +} + +export const fetchPrice = ({ id }) => { + if (id === undefined) { + console.error('Undefined pair'); + return 0; + } + + maybeUpdateCache(); + + return getCachedPrice(id) || 0; +}; diff --git a/src/features/web3/fetchPricePerFullShare.js b/src/features/web3/fetchPricePerFullShare.js deleted file mode 100644 index eed8d33e8..000000000 --- a/src/features/web3/fetchPricePerFullShare.js +++ /dev/null @@ -1,14 +0,0 @@ -import { byDecimals } from 'features/helpers/bignumber'; - -export const fetchPricePerFullShare = async ({address, contract}) => { - // console.log(`=====================================fetchDepositedBalance begin=====================================`) - // console.log(` - // address:${address}\n - // contractAddress:${contractAddress}\n - // `) - const pricePerFullShare = await contract.methods.getPricePerFullShare().call({ from: address }); - - // console.log(`=====================================fetchDepositedBalance success=====================================`) - - return byDecimals(pricePerFullShare, 18).toNumber(); -} \ No newline at end of file diff --git a/src/features/web3/fetchStrategy.js b/src/features/web3/fetchStrategy.js new file mode 100644 index 000000000..2327b3202 --- /dev/null +++ b/src/features/web3/fetchStrategy.js @@ -0,0 +1,7 @@ +import { vaultABI } from '../configure'; + +export const fetchStrategy = async ({ web3, contractAddress }) => { + const contract = new web3.eth.Contract(vaultABI, contractAddress); + const strategy = await contract.methods.strategy().call(); + return strategy.toString(); +}; diff --git a/src/features/web3/harvest.js b/src/features/web3/harvest.js new file mode 100644 index 000000000..e5dbca951 --- /dev/null +++ b/src/features/web3/harvest.js @@ -0,0 +1,46 @@ +import { strategyABI } from '../configure'; +import { enqueueSnackbar } from '../common/redux/actions'; +import { fetchStrategy } from './fetchStrategy'; + +export const harvest = async ({ web3, address, vaultContractAddress, dispatch }) => { + const strategyContractAddress = await fetchStrategy({ + web3, + contractAddress: vaultContractAddress, + }); + const strategyContract = new web3.eth.Contract(strategyABI, strategyContractAddress); + const data = await _harvest({ contract: strategyContract, address, dispatch }); + return data; +}; + +const _harvest = ({ contract, address, dispatch }) => { + return new Promise((resolve, reject) => { + contract.methods + .harvest() + .send({ from: address }) + .on('transactionHash', function (hash) { + console.log(hash); + dispatch( + enqueueSnackbar({ + message: hash, + options: { + key: new Date().getTime() + Math.random(), + variant: 'success', + }, + hash, + }) + ); + }) + .on('receipt', function (receipt) { + console.log(receipt); + resolve(); + }) + .on('error', function (error) { + console.log(error); + reject(error); + }) + .catch(error => { + console.log(error); + reject(error); + }); + }); +}; diff --git a/src/features/web3/index.js b/src/features/web3/index.js index 88f0afec6..69f2139e8 100644 --- a/src/features/web3/index.js +++ b/src/features/web3/index.js @@ -1,11 +1,13 @@ export { approval } from './approval'; -export { fetchGasPrice } from './fetchGasPrice'; export { fetchAllowance } from './fetchAllowance'; export { fetchBalance } from './fetchBalance'; export { deposit } from './deposit'; -export { depositEth } from './depositEth'; +export { depositBnb } from './depositBnb'; +export { zapDeposit } from './zapDeposit'; export { withdraw } from './withdraw'; -export { withdrawEth } from './withdrawEth'; -export { fetchPricePerFullShare } from './fetchPricePerFullShare'; -export { zapOrSwap } from './zapOrSwap'; -export { statke } from './stake'; \ No newline at end of file +export { withdrawBnb } from './withdrawBnb'; +export { zapWithdraw, zapWithdrawAndSwap } from './zapWithdraw'; +export { fetchPrice, whenPricesLoaded } from './fetchPrice'; +export { harvest } from './harvest'; +export { zapDepositEstimate, zapWithdrawEstimate } from './zapEstimate'; +export { createWeb3Modal } from './createWeb3Modal'; diff --git a/src/features/web3/stake.js b/src/features/web3/stake.js deleted file mode 100644 index 581c5ea61..000000000 --- a/src/features/web3/stake.js +++ /dev/null @@ -1,27 +0,0 @@ -import { enqueueSnackbar } from '../common/redux/actions'; - -export const statke = async ({contract, address, amount, dispatch}) => { - return new Promise((resolve, reject) => { - contract.methods.stake(amount).send({ from: address }).on('transactionHash', function(hash){ - dispatch(enqueueSnackbar({ - message: hash, - options: { - key: new Date().getTime() + Math.random(), - variant: 'success' - }, - hash - })); - }) - .on('receipt', function(receipt){ - resolve() - }) - .on('error', function(error) { - console.log(error) - reject(error) - }) - .catch((error) => { - console.log(error) - reject(error) - }) - }) -} \ No newline at end of file diff --git a/src/features/web3/withdraw.js b/src/features/web3/withdraw.js index 7138e1d4e..b4c6d82f7 100644 --- a/src/features/web3/withdraw.js +++ b/src/features/web3/withdraw.js @@ -1,75 +1,72 @@ -import { earnContractABI } from "../configure"; +import { vaultABI } from '../configure'; import { enqueueSnackbar } from '../common/redux/actions'; - -export const withdraw = async ({web3, address,isAll, amount, contractAddress, dispatch}) => { - // console.log(`=====================================withdraw begin=====================================`) - // console.log(amount) - const contract = new web3.eth.Contract(earnContractABI, contractAddress); - // console.log(` - // address:${address}\n - // contractAddress:${contractAddress}\n - // amount:${web3.utils.toWei(amount, "ether")} - // `) - - // console.log(`=====================================withdraw=====================================`) - const data = await _withdraw({web3, contract, isAll, amount, address, dispatch}); - // console.log(`=====================================withdraw success=====================================`) +export const withdraw = async ({ web3, address, isAll, amount, contractAddress, dispatch }) => { + const contract = new web3.eth.Contract(vaultABI, contractAddress); + const data = await _withdraw({ web3, contract, isAll, amount, address, dispatch }); return data; -} +}; -const _withdraw = ({web3, contract, address,isAll, amount, dispatch}) => { +const _withdraw = ({ web3, contract, address, isAll, amount, dispatch }) => { return new Promise((resolve, reject) => { - // console.log(isAll) if (isAll) { - contract.methods.withdrawAll().send({ from: address }).on('transactionHash', function(hash){ - console.log(hash) - dispatch(enqueueSnackbar({ - message: hash, - options: { - key: new Date().getTime() + Math.random(), - variant: 'success' - }, - hash - })); - }) - .on('receipt', function(receipt){ - console.log(receipt); - resolve() - }) - .on('error', function(error) { - console.log(error) - reject(error) - }) - .catch((error) => { - console.log(error) - reject(error) - }) + contract.methods + .withdrawAll() + .send({ from: address }) + .on('transactionHash', function (hash) { + console.log(hash); + dispatch( + enqueueSnackbar({ + message: hash, + options: { + key: new Date().getTime() + Math.random(), + variant: 'success', + }, + hash, + }) + ); + }) + .on('receipt', function (receipt) { + console.log(receipt); + resolve(); + }) + .on('error', function (error) { + console.log(error); + reject(error); + }) + .catch(error => { + console.log(error); + reject(error); + }); } else { - contract.methods.withdraw(amount).send({ from: address }).on('transactionHash', function(hash){ - console.log(hash) - dispatch(enqueueSnackbar({ - message: hash, - options: { - key: new Date().getTime() + Math.random(), - variant: 'success' - }, - hash - })); - }) - .on('receipt', function(receipt){ - console.log(receipt); - resolve() - }) - .on('error', function(error) { - console.log(error) - reject(error) - }) - .catch((error) => { - console.log(error) - reject(error) - }) + contract.methods + .withdraw(amount) + .send({ from: address }) + .on('transactionHash', function (hash) { + console.log(hash); + dispatch( + enqueueSnackbar({ + message: hash, + options: { + key: new Date().getTime() + Math.random(), + variant: 'success', + }, + hash, + }) + ); + }) + .on('receipt', function (receipt) { + console.log(receipt); + resolve(); + }) + .on('error', function (error) { + console.log(error); + reject(error); + }) + .catch(error => { + console.log(error); + reject(error); + }); } - - }) -} \ No newline at end of file + }); +}; diff --git a/src/features/web3/withdrawBnb.js b/src/features/web3/withdrawBnb.js new file mode 100644 index 000000000..d9affbcff --- /dev/null +++ b/src/features/web3/withdrawBnb.js @@ -0,0 +1,71 @@ +import { bnbVaultABI } from '../configure'; +import { enqueueSnackbar } from '../common/redux/actions'; + +export const withdrawBnb = async ({ web3, address, isAll, amount, contractAddress, dispatch }) => { + const contract = new web3.eth.Contract(bnbVaultABI, contractAddress); + const data = await _withdraw({ web3, contract, isAll, amount, address, dispatch }); + return data; +}; + +const _withdraw = ({ web3, contract, address, isAll, amount, dispatch }) => { + return new Promise((resolve, reject) => { + if (isAll) { + contract.methods + .withdrawAllBNB() + .send({ from: address }) + .on('transactionHash', function (hash) { + console.log(hash); + dispatch( + enqueueSnackbar({ + message: hash, + options: { + key: new Date().getTime() + Math.random(), + variant: 'success', + }, + hash, + }) + ); + }) + .on('receipt', function (receipt) { + console.log(receipt); + resolve(); + }) + .on('error', function (error) { + console.log(error); + reject(error); + }) + .catch(error => { + console.log(error); + reject(error); + }); + } else { + contract.methods + .withdrawBNB(amount) + .send({ from: address }) + .on('transactionHash', function (hash) { + console.log(hash); + dispatch( + enqueueSnackbar({ + message: hash, + options: { + key: new Date().getTime() + Math.random(), + variant: 'success', + }, + hash, + }) + ); + }) + .on('receipt', function (receipt) { + resolve(); + }) + .on('error', function (error) { + console.log(error); + reject(error); + }) + .catch(error => { + console.log(error); + reject(error); + }); + } + }); +}; diff --git a/src/features/web3/withdrawEth.js b/src/features/web3/withdrawEth.js deleted file mode 100644 index b100b34fc..000000000 --- a/src/features/web3/withdrawEth.js +++ /dev/null @@ -1,74 +0,0 @@ -import { earnContractABI } from "../configure"; -import { enqueueSnackbar } from '../common/redux/actions'; - - -export const withdrawEth = async ({web3, address,isAll, amount, contractAddress, dispatch}) => { - // console.log(`=====================================withdraw begin=====================================`) - // console.log(amount) - const contract = new web3.eth.Contract(earnContractABI, contractAddress); - // console.log(` - // address:${address}\n - // contractAddress:${contractAddress}\n - // amount:${web3.utils.toWei(amount, "ether")} - // `) - - // console.log(`=====================================withdraw=====================================`) - const data = await _withdraw({web3, contract, isAll, amount, address, dispatch}); - // console.log(`=====================================withdraw success=====================================`) - return data; -} - -const _withdraw = ({web3, contract, address,isAll, amount, dispatch}) => { - return new Promise((resolve, reject) => { - // console.log(isAll) - if (isAll) { - contract.methods.withdrawAllETH().send({ from: address }).on('transactionHash', function(hash){ - console.log(hash) - dispatch(enqueueSnackbar({ - message: hash, - options: { - key: new Date().getTime() + Math.random(), - variant: 'success' - }, - hash - })); - }) - .on('receipt', function(receipt){ - console.log(receipt); - resolve() - }) - .on('error', function(error) { - console.log(error) - reject(error) - }) - .catch((error) => { - console.log(error) - reject(error) - }) - } else { - contract.methods.withdrawETH(amount).send({ from: address }).on('transactionHash', function(hash){ - console.log(hash) - dispatch(enqueueSnackbar({ - message: hash, - options: { - key: new Date().getTime() + Math.random(), - variant: 'success' - }, - hash - })); - }) - .on('receipt', function(receipt){ - resolve() - }) - .on('error', function(error) { - console.log(error) - reject(error) - }) - .catch((error) => { - console.log(error) - reject(error) - }) - } - - }) -} \ No newline at end of file diff --git a/src/features/web3/zapDeposit.js b/src/features/web3/zapDeposit.js new file mode 100644 index 000000000..1b5ba159f --- /dev/null +++ b/src/features/web3/zapDeposit.js @@ -0,0 +1,90 @@ +import { beefyUniV2ZapABI } from '../configure'; +import { enqueueSnackbar } from '../common/redux/actions'; + +export const zapDeposit = async ({ + web3, + address, + vaultAddress, + isETH, + tokenAddress, + tokenAmount, + zapAddress, + swapAmountOutMin, + dispatch, +}) => { + const contract = new web3.eth.Contract(beefyUniV2ZapABI, zapAddress); + const data = await _zapDeposit({ + contract, + address, + vaultAddress, + isETH, + tokenAddress, + tokenAmount, + swapAmountOutMin, + dispatch, + }); + return data; +}; + +const _zapDeposit = ({ + contract, + address, + vaultAddress, + isETH, + tokenAddress, + tokenAmount, + swapAmountOutMin, + dispatch, +}) => { + let transaction; + + if (isETH) { + console.log('beefInETH(vaultAddress, swapAmountOutMin)', vaultAddress, swapAmountOutMin); + transaction = contract.methods.beefInETH(vaultAddress, swapAmountOutMin).send({ + from: address, + value: tokenAmount, + }); + } else { + console.log( + 'beefIn(vaultAddress, swapAmountOutMin, tokenAddress, tokenAmount)', + vaultAddress, + swapAmountOutMin, + tokenAddress, + tokenAmount + ); + transaction = contract.methods + .beefIn(vaultAddress, swapAmountOutMin, tokenAddress, tokenAmount) + .send({ + from: address, + }); + } + + return new Promise((resolve, reject) => { + transaction + .on('transactionHash', function (hash) { + console.log(hash); + dispatch( + enqueueSnackbar({ + message: hash, + options: { + key: new Date().getTime() + Math.random(), + variant: 'success', + }, + hash, + }) + ); + }) + .on('receipt', function (receipt) { + console.log(receipt); + resolve(); + }) + .on('error', function (error) { + console.log(error); + reject(error); + }) + .catch(error => { + console.log(error); + reject(error); + }); + }); +}; diff --git a/src/features/web3/zapEstimate.js b/src/features/web3/zapEstimate.js new file mode 100644 index 000000000..522253f35 --- /dev/null +++ b/src/features/web3/zapEstimate.js @@ -0,0 +1,19 @@ +import { beefyUniV2ZapABI, uniswapV2RouterABI } from 'features/configure'; + +export const zapDepositEstimate = ({ + web3, + zapAddress, + vaultAddress, + tokenAddress, + tokenAmount, +}) => { + const contract = new web3.eth.Contract(beefyUniV2ZapABI, zapAddress); + return contract.methods.estimateSwap(vaultAddress, tokenAddress, tokenAmount).call(); + // { swapAmountIn uint256, swapAmountOut uint256, swapTokenOut address } +}; + +export const zapWithdrawEstimate = ({ web3, routerAddress, amountIn, reserveIn, reserveOut }) => { + const contract = new web3.eth.Contract(uniswapV2RouterABI, routerAddress); + return contract.methods.getAmountOut(amountIn, reserveIn, reserveOut).call(); + // { amountOut uint } +}; diff --git a/src/features/web3/zapOrSwap.js b/src/features/web3/zapOrSwap.js deleted file mode 100644 index f3efb1c21..000000000 --- a/src/features/web3/zapOrSwap.js +++ /dev/null @@ -1,41 +0,0 @@ -import { enqueueSnackbar } from '../common/redux/actions'; - -export const zapOrSwap = async ({web3, address, contract, call, amount, dispatch}) => { - // console.log(`=====================================deposit begin=====================================`) - console.log(` - address:${address}\n - call:${call}\n - amount:${amount} - `) - const data = await _zapOrSwap({web3, address, contract, call, amount, dispatch}); - // console.log(`=====================================deposit success=====================================`) - return data; -} - -const _zapOrSwap = ({contract, amount, call, address, dispatch}) => { - return new Promise((resolve, reject) => { - // console.log(isAll) - contract.methods[call](amount).send({ from: address }).on('transactionHash', function(hash){ - console.log(hash) - dispatch(enqueueSnackbar({ - message: hash, - options: { - key: new Date().getTime() + Math.random(), - variant: 'success' - }, - hash - })); - }) - .on('receipt', function(receipt){ - resolve() - }) - .on('error', function(error) { - console.log(error) - reject(error) - }) - .catch((error) => { - console.log(error) - reject(error) - }) - }) -} \ No newline at end of file diff --git a/src/features/web3/zapWithdraw.js b/src/features/web3/zapWithdraw.js new file mode 100644 index 000000000..7dc06dc1c --- /dev/null +++ b/src/features/web3/zapWithdraw.js @@ -0,0 +1,79 @@ +import { beefyUniV2ZapABI } from '../configure'; +import { enqueueSnackbar } from '../common/redux/actions'; + +export const zapWithdraw = async ({ + web3, + address, + vaultAddress, + amount, + zapAddress, + dispatch, +}) => { + console.log('beefOut(vaultAddress, amount)', vaultAddress, amount); + + const contract = new web3.eth.Contract(beefyUniV2ZapABI, zapAddress); + const transaction = contract.methods.beefOut(vaultAddress, amount).send({ + from: address, + }); + + return promisifyTransaction(transaction, dispatch); +}; + +export const zapWithdrawAndSwap = async ({ + web3, + address, + vaultAddress, + amount, + zapAddress, + tokenOut, + amountOutMin, + dispatch, +}) => { + console.log( + 'beefOutAndSwap(vaultAddress, amount, tokenOut, amountOutMin)', + vaultAddress, + amount, + tokenOut, + amountOutMin + ); + + const contract = new web3.eth.Contract(beefyUniV2ZapABI, zapAddress); + const transaction = contract.methods + .beefOutAndSwap(vaultAddress, amount, tokenOut, amountOutMin) + .send({ + from: address, + }); + + return promisifyTransaction(transaction, dispatch); +}; + +const promisifyTransaction = (transaction, dispatch) => { + return new Promise((resolve, reject) => { + transaction + .on('transactionHash', function (hash) { + console.log(hash); + dispatch( + enqueueSnackbar({ + message: hash, + options: { + key: new Date().getTime() + Math.random(), + variant: 'success', + }, + hash, + }) + ); + }) + .on('receipt', function (receipt) { + console.log(receipt); + resolve(); + }) + .on('error', function (error) { + console.log(error); + reject(error); + }) + .catch(error => { + console.log(error); + reject(error); + }); + }); +}; diff --git a/src/features/zap/zapUniswapV2.js b/src/features/zap/zapUniswapV2.js new file mode 100644 index 000000000..bfc25271f --- /dev/null +++ b/src/features/zap/zapUniswapV2.js @@ -0,0 +1,80 @@ +import { pack, keccak256 } from '@ethersproject/solidity'; +import { getCreate2Address } from '@ethersproject/address'; +import { + getNetworkTokens, + getNetworkBurnTokens, + getNetworkZaps, + getNetworkCoin, +} from 'features/helpers/getNetworkData'; + +const availableZaps = getNetworkZaps(); +const availableTokens = getNetworkTokens(); +const burnTokens = getNetworkBurnTokens(); +const nativeCoin = getNetworkCoin(); + +export const getEligibleZap = pool => { + if (pool.assets.length !== 2) return undefined; + + const eligibleNativeCoin = []; + const tokenSymbols = pool.assets.map(symbol => { + if (nativeCoin.symbol === symbol) { + const wrappedToken = availableTokens[nativeCoin.wrappedSymbol]; + nativeCoin.address = wrappedToken.address; + eligibleNativeCoin.push(nativeCoin); + return nativeCoin.wrappedSymbol; + } + return symbol; + }); + + let tokenA, tokenB, tokenASymbol, tokenBSymbol; + let missingTokenSymbols = {}; + const zap = availableZaps.find(zap => { + tokenASymbol = tokenSymbols[0]; + tokenBSymbol = tokenSymbols[1]; + tokenA = availableTokens[tokenASymbol]; + tokenB = availableTokens[tokenBSymbol]; + if (tokenA && tokenB) { + return ( + pool.tokenAddress === + computePairAddress(zap.ammFactory, zap.ammPairInitHash, tokenA.address, tokenB.address) + ); + } else { + if (!tokenA) { + missingTokenSymbols[tokenASymbol] = ''; + } + if (!tokenB) { + missingTokenSymbols[tokenBSymbol] = ''; + } + } + return false; + }); + + for (const symbol in missingTokenSymbols) { + console.error('Beefy: token missing in the tokenlist:', symbol); + } + + const pairHasBurnToken = tokenASymbol in burnTokens || tokenBSymbol in burnTokens; + if (!zap || pairHasBurnToken) return undefined; + + tokenA.allowance = 0; + tokenB.allowance = 0; + + return { + ...zap, + tokens: [tokenA, tokenB, ...eligibleNativeCoin], + }; +}; + +export const computePairAddress = (factoryAddress, pairInitHash, tokenA, tokenB) => { + const [token0, token1] = sortTokens(tokenA, tokenB); + return getCreate2Address( + factoryAddress, + keccak256(['bytes'], [pack(['address', 'address'], [token0, token1])]), + pairInitHash + ); +}; + +export const sortTokens = (tokenA, tokenB) => { + if (tokenA === tokenB) throw new RangeError(`tokenA should not be equal to tokenB: ${tokenB}`); + return tokenA.toLowerCase() < tokenB.toLowerCase() ? [tokenA, tokenB] : [tokenB, tokenA]; +}; diff --git a/src/i18n.js b/src/i18n.js index 0ed9046c8..fd4b8de79 100644 --- a/src/i18n.js +++ b/src/i18n.js @@ -1,32 +1,40 @@ - import i18n from 'i18next'; import LanguageDetector from 'i18next-browser-languagedetector'; import { initReactI18next } from 'react-i18next'; -import translationEN from './locales/en/translation.json'; -import translationZH from './locales/zh/translation.json'; -import translationJA from './locales/ja/translation.json'; -import translationTH from './locales/th/translation.json'; -import translationKO from './locales/ko/translation.json'; - -const resources = { - en: { - translation: translationEN - }, - zh: { - translation: translationZH - }, - ja: { - translation: translationJA - }, - th: { - translation: translationTH - }, - ko: { - translation: translationKO - } +// key - locale folder name/code (IETF BCP 47 language tag) +// value - language label +export const supportedLanguages = { + ar: 'العربية', + de: 'Deutsch', + el: 'Ελληνικά', + en: 'English', + es: 'Español', + fil: 'Filipino', + fr: 'Français', + hi: 'हिन्दी', + id: 'Bahasa Indonesia', + it: 'Italiano', + ko: '한글', + ms: 'Bahasa Melayu', + nl: 'Nederlands', + pl: 'Polski', + 'pt-BR': 'Português do Brasil', + 'pt-PT': 'Português de Portugal', + ru: 'Pусский', + se: 'Svenska', + tr: 'Türkçe', + uk: 'Українська', + zh: '中文', }; +const resources = Object.fromEntries( + Object.keys(supportedLanguages).map(code => [ + code, + { translation: require(`./locales/${code}/translation.json`) }, + ]) +); + i18n // load translation using http -> see /public/locales // detect user language @@ -38,11 +46,10 @@ i18n // for all options read: https://www.i18next.com/overview/configuration-options .init({ resources, - fallbackLng: 'zh', - + fallbackLng: 'en', interpolation: { escapeValue: false, // not needed for react as it escapes by default }, }); -export default i18n; \ No newline at end of file +export default i18n; diff --git a/src/images/AMPL-logo.png b/src/images/AMPL-logo.png deleted file mode 100644 index 326e89c5d..000000000 Binary files a/src/images/AMPL-logo.png and /dev/null differ diff --git a/src/images/BAT-logo.png b/src/images/BAT-logo.png deleted file mode 100644 index 4efbc7d40..000000000 Binary files a/src/images/BAT-logo.png and /dev/null differ diff --git a/src/images/BIFI-logo.svg b/src/images/BIFI-logo.svg new file mode 100644 index 000000000..350aab2a7 --- /dev/null +++ b/src/images/BIFI-logo.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/BPT-logo.png b/src/images/BPT-logo.png deleted file mode 100644 index 3c887cbe1..000000000 Binary files a/src/images/BPT-logo.png and /dev/null differ diff --git a/src/images/BUSD-logo.png b/src/images/BUSD-logo.png deleted file mode 100644 index a079ba34c..000000000 Binary files a/src/images/BUSD-logo.png and /dev/null differ diff --git a/src/images/Balancer Pool-logo.png b/src/images/Balancer Pool-logo.png deleted file mode 100644 index be276c753..000000000 Binary files a/src/images/Balancer Pool-logo.png and /dev/null differ diff --git a/src/images/COMP-logo.png b/src/images/COMP-logo.png deleted file mode 100644 index 1bbd7aac0..000000000 Binary files a/src/images/COMP-logo.png and /dev/null differ diff --git a/src/images/CRV-icon.png b/src/images/CRV-icon.png deleted file mode 100644 index b71d9b0dc..000000000 Binary files a/src/images/CRV-icon.png and /dev/null differ diff --git a/src/images/CRV-logo.jpg b/src/images/CRV-logo.jpg deleted file mode 100644 index 9f2929303..000000000 Binary files a/src/images/CRV-logo.jpg and /dev/null differ diff --git a/src/images/CRV-logo.png b/src/images/CRV-logo.png deleted file mode 100644 index 422790f53..000000000 Binary files a/src/images/CRV-logo.png and /dev/null differ diff --git a/src/images/DAI-logo.png b/src/images/DAI-logo.png deleted file mode 100644 index 914b76bb3..000000000 Binary files a/src/images/DAI-logo.png and /dev/null differ diff --git a/src/images/ETH-icon.png b/src/images/ETH-icon.png deleted file mode 100644 index c96f24caf..000000000 Binary files a/src/images/ETH-icon.png and /dev/null differ diff --git a/src/images/ETH-logo.png b/src/images/ETH-logo.png deleted file mode 100644 index 03d3d6a30..000000000 Binary files a/src/images/ETH-logo.png and /dev/null differ diff --git a/src/images/FTM-logo.png b/src/images/FTM-logo.png deleted file mode 100644 index f77707b1b..000000000 Binary files a/src/images/FTM-logo.png and /dev/null differ diff --git a/src/images/Governance-logo.png b/src/images/Governance-logo.png deleted file mode 100644 index 5962479d9..000000000 Binary files a/src/images/Governance-logo.png and /dev/null differ diff --git a/src/images/HBTC-logo.png b/src/images/HBTC-logo.png deleted file mode 100644 index 75d3e3149..000000000 Binary files a/src/images/HBTC-logo.png and /dev/null differ diff --git a/src/images/IEARN-icon.png b/src/images/IEARN-icon.png deleted file mode 100644 index 50ede1df5..000000000 Binary files a/src/images/IEARN-icon.png and /dev/null differ diff --git a/src/images/KNC-logo.png b/src/images/KNC-logo.png deleted file mode 100644 index d8dc3c5df..000000000 Binary files a/src/images/KNC-logo.png and /dev/null differ diff --git a/src/images/LEND-logo.png b/src/images/LEND-logo.png deleted file mode 100644 index c56f001d4..000000000 Binary files a/src/images/LEND-logo.png and /dev/null differ diff --git a/src/images/LINK-logo.png b/src/images/LINK-logo.png deleted file mode 100644 index 633c671c7..000000000 Binary files a/src/images/LINK-logo.png and /dev/null differ diff --git a/src/images/MANA-logo.png b/src/images/MANA-logo.png deleted file mode 100644 index 7c839ead2..000000000 Binary files a/src/images/MANA-logo.png and /dev/null differ diff --git a/src/images/MEFI-logo.png b/src/images/MEFI-logo.png deleted file mode 100644 index c7e28072e..000000000 Binary files a/src/images/MEFI-logo.png and /dev/null differ diff --git a/src/images/MKR-logo.png b/src/images/MKR-logo.png deleted file mode 100644 index 9f7f28681..000000000 Binary files a/src/images/MKR-logo.png and /dev/null differ diff --git a/src/images/REP-logo.png b/src/images/REP-logo.png deleted file mode 100644 index 8b5928671..000000000 Binary files a/src/images/REP-logo.png and /dev/null differ diff --git a/src/images/SAI-logo.png b/src/images/SAI-logo.png deleted file mode 100644 index deb7a9241..000000000 Binary files a/src/images/SAI-logo.png and /dev/null differ diff --git a/src/images/SNX-logo.png b/src/images/SNX-logo.png deleted file mode 100644 index 8bb677dd4..000000000 Binary files a/src/images/SNX-logo.png and /dev/null differ diff --git a/src/images/SUSD-logo.png b/src/images/SUSD-logo.png deleted file mode 100644 index 27653a788..000000000 Binary files a/src/images/SUSD-logo.png and /dev/null differ diff --git a/src/images/TUSD-logo.png b/src/images/TUSD-logo.png deleted file mode 100644 index c2b289282..000000000 Binary files a/src/images/TUSD-logo.png and /dev/null differ diff --git a/src/images/USDC-icon.png b/src/images/USDC-icon.png deleted file mode 100644 index c9abd213b..000000000 Binary files a/src/images/USDC-icon.png and /dev/null differ diff --git a/src/images/USDC-logo.png b/src/images/USDC-logo.png deleted file mode 100644 index 0443e34d1..000000000 Binary files a/src/images/USDC-logo.png and /dev/null differ diff --git a/src/images/USDT-logo.png b/src/images/USDT-logo.png deleted file mode 100644 index 273c8ce0e..000000000 Binary files a/src/images/USDT-logo.png and /dev/null differ diff --git a/src/images/WETH-logo.png b/src/images/WETH-logo.png deleted file mode 100644 index 4dabc8f4d..000000000 Binary files a/src/images/WETH-logo.png and /dev/null differ diff --git a/src/images/YFI-logo.png b/src/images/YFI-logo.png deleted file mode 100644 index 50ede1df5..000000000 Binary files a/src/images/YFI-logo.png and /dev/null differ diff --git a/src/images/YFII-logo.png b/src/images/YFII-logo.png deleted file mode 100644 index 5962479d9..000000000 Binary files a/src/images/YFII-logo.png and /dev/null differ diff --git a/src/images/ZRX-logo.png b/src/images/ZRX-logo.png deleted file mode 100644 index b7d3cdc46..000000000 Binary files a/src/images/ZRX-logo.png and /dev/null differ diff --git a/src/images/aLINK-logo.png b/src/images/aLINK-logo.png deleted file mode 100644 index 4c863661d..000000000 Binary files a/src/images/aLINK-logo.png and /dev/null differ diff --git a/src/images/aave.png b/src/images/aave.png deleted file mode 100644 index 994492bcc..000000000 Binary files a/src/images/aave.png and /dev/null differ diff --git a/src/images/aave.svg b/src/images/aave.svg deleted file mode 100644 index de04f230a..000000000 --- a/src/images/aave.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/images/avax-pairs/COM-AVAX.png b/src/images/avax-pairs/COM-AVAX.png new file mode 100644 index 000000000..51e189f46 Binary files /dev/null and b/src/images/avax-pairs/COM-AVAX.png differ diff --git a/src/images/avax-pairs/DAI-AVAX.png b/src/images/avax-pairs/DAI-AVAX.png new file mode 100644 index 000000000..20912dde5 Binary files /dev/null and b/src/images/avax-pairs/DAI-AVAX.png differ diff --git a/src/images/avax-pairs/ETH-AVAX.png b/src/images/avax-pairs/ETH-AVAX.png new file mode 100644 index 000000000..55c422187 Binary files /dev/null and b/src/images/avax-pairs/ETH-AVAX.png differ diff --git a/src/images/avax-pairs/LYD-AVAX.png b/src/images/avax-pairs/LYD-AVAX.png new file mode 100644 index 000000000..2b055b219 Binary files /dev/null and b/src/images/avax-pairs/LYD-AVAX.png differ diff --git a/src/images/avax-pairs/OLIVE-AVAX.png b/src/images/avax-pairs/OLIVE-AVAX.png new file mode 100644 index 000000000..25180b8a7 Binary files /dev/null and b/src/images/avax-pairs/OLIVE-AVAX.png differ diff --git a/src/images/avax-pairs/OLIVE-USDT.png b/src/images/avax-pairs/OLIVE-USDT.png new file mode 100644 index 000000000..e0dc48cfe Binary files /dev/null and b/src/images/avax-pairs/OLIVE-USDT.png differ diff --git a/src/images/avax-pairs/PNG-AVAX.png b/src/images/avax-pairs/PNG-AVAX.png new file mode 100644 index 000000000..254c00389 Binary files /dev/null and b/src/images/avax-pairs/PNG-AVAX.png differ diff --git a/src/images/avax-pairs/SNOB-AVAX.svg b/src/images/avax-pairs/SNOB-AVAX.svg new file mode 100644 index 000000000..1c8666804 --- /dev/null +++ b/src/images/avax-pairs/SNOB-AVAX.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/avax-pairs/SNOB3P.png b/src/images/avax-pairs/SNOB3P.png new file mode 100644 index 000000000..6594b5488 Binary files /dev/null and b/src/images/avax-pairs/SNOB3P.png differ diff --git a/src/images/avax-pairs/USDT-AVAX.png b/src/images/avax-pairs/USDT-AVAX.png new file mode 100644 index 000000000..9f03a27c1 Binary files /dev/null and b/src/images/avax-pairs/USDT-AVAX.png differ diff --git a/src/images/avax-pairs/ZETH.svg b/src/images/avax-pairs/ZETH.svg new file mode 100644 index 000000000..bc0c279c7 --- /dev/null +++ b/src/images/avax-pairs/ZETH.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/background.png b/src/images/background.png deleted file mode 100644 index 521c3c869..000000000 Binary files a/src/images/background.png and /dev/null differ diff --git a/src/images/banners/CakeBanner.svg b/src/images/banners/CakeBanner.svg new file mode 100644 index 000000000..5968494eb --- /dev/null +++ b/src/images/banners/CakeBanner.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/binance-wallet.png b/src/images/binance-wallet.png new file mode 100644 index 000000000..520dceb46 Binary files /dev/null and b/src/images/binance-wallet.png differ diff --git a/src/images/bnb-pairs/AAVE-BNB.svg b/src/images/bnb-pairs/AAVE-BNB.svg new file mode 100644 index 000000000..80bf90f97 --- /dev/null +++ b/src/images/bnb-pairs/AAVE-BNB.svg @@ -0,0 +1,4377 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/bnb-pairs/ADA-BNB.svg b/src/images/bnb-pairs/ADA-BNB.svg new file mode 100644 index 000000000..d568a831d --- /dev/null +++ b/src/images/bnb-pairs/ADA-BNB.svg @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/bnb-pairs/ALICE-BNB.svg b/src/images/bnb-pairs/ALICE-BNB.svg new file mode 100644 index 000000000..c292e5784 --- /dev/null +++ b/src/images/bnb-pairs/ALICE-BNB.svg @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/bnb-pairs/ALPA-BNB.svg b/src/images/bnb-pairs/ALPA-BNB.svg new file mode 100644 index 000000000..491dc4ebb --- /dev/null +++ b/src/images/bnb-pairs/ALPA-BNB.svg @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/bnb-pairs/ALPACA-BNB.png b/src/images/bnb-pairs/ALPACA-BNB.png new file mode 100644 index 000000000..a37cb7177 Binary files /dev/null and b/src/images/bnb-pairs/ALPACA-BNB.png differ diff --git a/src/images/bnb-pairs/ALPHA-BNB.svg b/src/images/bnb-pairs/ALPHA-BNB.svg new file mode 100644 index 000000000..02e90aef5 --- /dev/null +++ b/src/images/bnb-pairs/ALPHA-BNB.svg @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/bnb-pairs/APYS-BNB.svg b/src/images/bnb-pairs/APYS-BNB.svg new file mode 100644 index 000000000..1d3a56a0c --- /dev/null +++ b/src/images/bnb-pairs/APYS-BNB.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/bnb-pairs/ARPA-BNB.svg b/src/images/bnb-pairs/ARPA-BNB.svg new file mode 100644 index 000000000..789532bcb --- /dev/null +++ b/src/images/bnb-pairs/ARPA-BNB.svg @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/bnb-pairs/ASR-BNB.svg b/src/images/bnb-pairs/ASR-BNB.svg new file mode 100644 index 000000000..fbc84163e --- /dev/null +++ b/src/images/bnb-pairs/ASR-BNB.svg @@ -0,0 +1,128 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/bnb-pairs/ATA-BNB.svg b/src/images/bnb-pairs/ATA-BNB.svg new file mode 100644 index 000000000..7d590cd08 --- /dev/null +++ b/src/images/bnb-pairs/ATA-BNB.svg @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/bnb-pairs/ATM-BNB.svg b/src/images/bnb-pairs/ATM-BNB.svg new file mode 100644 index 000000000..b83b0ce65 --- /dev/null +++ b/src/images/bnb-pairs/ATM-BNB.svg @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/bnb-pairs/ATOM-BNB.svg b/src/images/bnb-pairs/ATOM-BNB.svg new file mode 100644 index 000000000..a5eb22368 --- /dev/null +++ b/src/images/bnb-pairs/ATOM-BNB.svg @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/bnb-pairs/AUTO-BNB.png b/src/images/bnb-pairs/AUTO-BNB.png new file mode 100644 index 000000000..aa56b5bb1 Binary files /dev/null and b/src/images/bnb-pairs/AUTO-BNB.png differ diff --git a/src/images/bnb-pairs/AVAX-BNB.svg b/src/images/bnb-pairs/AVAX-BNB.svg new file mode 100644 index 000000000..3006b60c3 --- /dev/null +++ b/src/images/bnb-pairs/AVAX-BNB.svg @@ -0,0 +1,53 @@ + + avax-wbnb-svg-svg-svg + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/images/bnb-pairs/BAKE-BNB.png b/src/images/bnb-pairs/BAKE-BNB.png new file mode 100644 index 000000000..97bdcbd23 Binary files /dev/null and b/src/images/bnb-pairs/BAKE-BNB.png differ diff --git a/src/images/bnb-pairs/BALBT-BNB.svg b/src/images/bnb-pairs/BALBT-BNB.svg new file mode 100644 index 000000000..deed1ba09 --- /dev/null +++ b/src/images/bnb-pairs/BALBT-BNB.svg @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/bnb-pairs/BAND-BNB.svg b/src/images/bnb-pairs/BAND-BNB.svg new file mode 100644 index 000000000..5893c3b6f --- /dev/null +++ b/src/images/bnb-pairs/BAND-BNB.svg @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/bnb-pairs/BAT-BNB.svg b/src/images/bnb-pairs/BAT-BNB.svg new file mode 100644 index 000000000..fbdd944f6 --- /dev/null +++ b/src/images/bnb-pairs/BAT-BNB.svg @@ -0,0 +1,326 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/bnb-pairs/BCH-BNB.svg b/src/images/bnb-pairs/BCH-BNB.svg new file mode 100644 index 000000000..feb69ba74 --- /dev/null +++ b/src/images/bnb-pairs/BCH-BNB.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/bnb-pairs/BDO-BNB.svg b/src/images/bnb-pairs/BDO-BNB.svg new file mode 100644 index 000000000..906cca2df --- /dev/null +++ b/src/images/bnb-pairs/BDO-BNB.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/bnb-pairs/BEL-BNB.svg b/src/images/bnb-pairs/BEL-BNB.svg new file mode 100644 index 000000000..f5774078e --- /dev/null +++ b/src/images/bnb-pairs/BEL-BNB.svg @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/bnb-pairs/BELT-BNB-BELT.png b/src/images/bnb-pairs/BELT-BNB-BELT.png new file mode 100644 index 000000000..b6e8036da Binary files /dev/null and b/src/images/bnb-pairs/BELT-BNB-BELT.png differ diff --git a/src/images/bnb-pairs/BELT-BNB.svg b/src/images/bnb-pairs/BELT-BNB.svg new file mode 100644 index 000000000..0f6617b7f --- /dev/null +++ b/src/images/bnb-pairs/BELT-BNB.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/bnb-pairs/BFI-BNB.svg b/src/images/bnb-pairs/BFI-BNB.svg new file mode 100644 index 000000000..e25cbef45 --- /dev/null +++ b/src/images/bnb-pairs/BFI-BNB.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/bnb-pairs/BHC-BNB.png b/src/images/bnb-pairs/BHC-BNB.png new file mode 100644 index 000000000..bcbfe81ac Binary files /dev/null and b/src/images/bnb-pairs/BHC-BNB.png differ diff --git a/src/images/bnb-pairs/BIFI-BNB.png b/src/images/bnb-pairs/BIFI-BNB.png new file mode 100644 index 000000000..d9302517b Binary files /dev/null and b/src/images/bnb-pairs/BIFI-BNB.png differ diff --git a/src/images/bnb-pairs/BIFI-BNB.svg b/src/images/bnb-pairs/BIFI-BNB.svg new file mode 100644 index 000000000..8f15f688d --- /dev/null +++ b/src/images/bnb-pairs/BIFI-BNB.svg @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/bnb-pairs/BITI-BNB.png b/src/images/bnb-pairs/BITI-BNB.png new file mode 100644 index 000000000..73eb1c839 Binary files /dev/null and b/src/images/bnb-pairs/BITI-BNB.png differ diff --git a/src/images/bnb-pairs/BLIQ-BNB.png b/src/images/bnb-pairs/BLIQ-BNB.png new file mode 100644 index 000000000..be68b9e4e Binary files /dev/null and b/src/images/bnb-pairs/BLIQ-BNB.png differ diff --git a/src/images/bnb-pairs/BLK-BNB.svg b/src/images/bnb-pairs/BLK-BNB.svg new file mode 100644 index 000000000..167106562 --- /dev/null +++ b/src/images/bnb-pairs/BLK-BNB.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/bnb-pairs/BLZ-BNB.svg b/src/images/bnb-pairs/BLZ-BNB.svg new file mode 100644 index 000000000..20ad3b3ff --- /dev/null +++ b/src/images/bnb-pairs/BLZ-BNB.svg @@ -0,0 +1,73 @@ + + blz-bnb + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/images/bnb-pairs/BMXX-BNB.svg b/src/images/bnb-pairs/BMXX-BNB.svg new file mode 100644 index 000000000..8b7035a16 --- /dev/null +++ b/src/images/bnb-pairs/BMXX-BNB.svg @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/bnb-pairs/BONDLY-BNB.svg b/src/images/bnb-pairs/BONDLY-BNB.svg new file mode 100644 index 000000000..67a4730ab --- /dev/null +++ b/src/images/bnb-pairs/BONDLY-BNB.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/bnb-pairs/BOPEN-BNB.svg b/src/images/bnb-pairs/BOPEN-BNB.svg new file mode 100644 index 000000000..8ea6cc935 --- /dev/null +++ b/src/images/bnb-pairs/BOPEN-BNB.svg @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/bnb-pairs/BOR-BNB.svg b/src/images/bnb-pairs/BOR-BNB.svg new file mode 100644 index 000000000..93b347fea --- /dev/null +++ b/src/images/bnb-pairs/BOR-BNB.svg @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/bnb-pairs/BRY-BNB.svg b/src/images/bnb-pairs/BRY-BNB.svg new file mode 100644 index 000000000..cfc6077ed --- /dev/null +++ b/src/images/bnb-pairs/BRY-BNB.svg @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/bnb-pairs/BSCX-BNB.svg b/src/images/bnb-pairs/BSCX-BNB.svg new file mode 100644 index 000000000..8ac106458 --- /dev/null +++ b/src/images/bnb-pairs/BSCX-BNB.svg @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/bnb-pairs/BSHARE-BNB.png b/src/images/bnb-pairs/BSHARE-BNB.png new file mode 100644 index 000000000..77b216b59 Binary files /dev/null and b/src/images/bnb-pairs/BSHARE-BNB.png differ diff --git a/src/images/bnb-pairs/BTC-BNB.png b/src/images/bnb-pairs/BTC-BNB.png new file mode 100644 index 000000000..c0bf1ef97 Binary files /dev/null and b/src/images/bnb-pairs/BTC-BNB.png differ diff --git a/src/images/bnb-pairs/BTCB-BNB.svg b/src/images/bnb-pairs/BTCB-BNB.svg new file mode 100644 index 000000000..f2574418e --- /dev/null +++ b/src/images/bnb-pairs/BTCB-BNB.svg @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/bnb-pairs/BTCST-BNB.svg b/src/images/bnb-pairs/BTCST-BNB.svg new file mode 100644 index 000000000..79739912f --- /dev/null +++ b/src/images/bnb-pairs/BTCST-BNB.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/bnb-pairs/BTT-BNB.svg b/src/images/bnb-pairs/BTT-BNB.svg new file mode 100644 index 000000000..d4f4a3069 --- /dev/null +++ b/src/images/bnb-pairs/BTT-BNB.svg @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/bnb-pairs/BUNNY-BNB.svg b/src/images/bnb-pairs/BUNNY-BNB.svg new file mode 100644 index 000000000..2b7aa5a91 --- /dev/null +++ b/src/images/bnb-pairs/BUNNY-BNB.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/bnb-pairs/BUSD-BNB.png b/src/images/bnb-pairs/BUSD-BNB.png new file mode 100644 index 000000000..7cb966142 --- /dev/null +++ b/src/images/bnb-pairs/BUSD-BNB.png @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/bnb-pairs/BUSD-BNB.svg b/src/images/bnb-pairs/BUSD-BNB.svg new file mode 100644 index 000000000..7cb966142 --- /dev/null +++ b/src/images/bnb-pairs/BUSD-BNB.svg @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/bnb-pairs/BUX-BNB.svg b/src/images/bnb-pairs/BUX-BNB.svg new file mode 100644 index 000000000..1ebf7cb5e --- /dev/null +++ b/src/images/bnb-pairs/BUX-BNB.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/bnb-pairs/BXBTC-BNB.svg b/src/images/bnb-pairs/BXBTC-BNB.svg new file mode 100644 index 000000000..1f5f0ea52 --- /dev/null +++ b/src/images/bnb-pairs/BXBTC-BNB.svg @@ -0,0 +1,356 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/bnb-pairs/C98-BNB.svg b/src/images/bnb-pairs/C98-BNB.svg new file mode 100644 index 000000000..a366a9002 --- /dev/null +++ b/src/images/bnb-pairs/C98-BNB.svg @@ -0,0 +1,55 @@ + + C98-BNB-svg + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/bnb-pairs/CAKE-BNB.svg b/src/images/bnb-pairs/CAKE-BNB.svg new file mode 100644 index 000000000..155df2024 --- /dev/null +++ b/src/images/bnb-pairs/CAKE-BNB.svg @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/bnb-pairs/CELR-BNB.svg b/src/images/bnb-pairs/CELR-BNB.svg new file mode 100644 index 000000000..567fc61da --- /dev/null +++ b/src/images/bnb-pairs/CELR-BNB.svg @@ -0,0 +1,56 @@ + + celer-bnb + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/images/bnb-pairs/CGG-BNB.svg b/src/images/bnb-pairs/CGG-BNB.svg new file mode 100644 index 000000000..a41e422d0 --- /dev/null +++ b/src/images/bnb-pairs/CGG-BNB.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/bnb-pairs/COM-BNB.png b/src/images/bnb-pairs/COM-BNB.png new file mode 100644 index 000000000..5d45b696a Binary files /dev/null and b/src/images/bnb-pairs/COM-BNB.png differ diff --git a/src/images/bnb-pairs/COMP-BNB.svg b/src/images/bnb-pairs/COMP-BNB.svg new file mode 100644 index 000000000..2c7840938 --- /dev/null +++ b/src/images/bnb-pairs/COMP-BNB.svg @@ -0,0 +1,1754 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/bnb-pairs/COS-BNB.svg b/src/images/bnb-pairs/COS-BNB.svg new file mode 100644 index 000000000..c92bb5fa1 --- /dev/null +++ b/src/images/bnb-pairs/COS-BNB.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/bnb-pairs/COTI-BNB.svg b/src/images/bnb-pairs/COTI-BNB.svg new file mode 100644 index 000000000..f6bb6005d --- /dev/null +++ b/src/images/bnb-pairs/COTI-BNB.svg @@ -0,0 +1,79 @@ + + coti-bnb + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/images/bnb-pairs/CRED-BNB.png b/src/images/bnb-pairs/CRED-BNB.png new file mode 100644 index 000000000..3900b4e52 Binary files /dev/null and b/src/images/bnb-pairs/CRED-BNB.png differ diff --git a/src/images/bnb-pairs/CTK-BNB.svg b/src/images/bnb-pairs/CTK-BNB.svg new file mode 100644 index 000000000..77dc916bb --- /dev/null +++ b/src/images/bnb-pairs/CTK-BNB.svg @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/bnb-pairs/CYC-BNB.svg b/src/images/bnb-pairs/CYC-BNB.svg new file mode 100644 index 000000000..5b4e48633 --- /dev/null +++ b/src/images/bnb-pairs/CYC-BNB.svg @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/bnb-pairs/DAI-BNB.svg b/src/images/bnb-pairs/DAI-BNB.svg new file mode 100644 index 000000000..9be6c3302 --- /dev/null +++ b/src/images/bnb-pairs/DAI-BNB.svg @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/bnb-pairs/DEGO-BNB.svg b/src/images/bnb-pairs/DEGO-BNB.svg new file mode 100644 index 000000000..55db8d9cf --- /dev/null +++ b/src/images/bnb-pairs/DEGO-BNB.svg @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/bnb-pairs/DEP-BNB.png b/src/images/bnb-pairs/DEP-BNB.png new file mode 100644 index 000000000..76e525322 Binary files /dev/null and b/src/images/bnb-pairs/DEP-BNB.png differ diff --git a/src/images/bnb-pairs/DFT-BNB.svg b/src/images/bnb-pairs/DFT-BNB.svg new file mode 100644 index 000000000..f856e4a74 --- /dev/null +++ b/src/images/bnb-pairs/DFT-BNB.svg @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/bnb-pairs/DITTO-BNB.svg b/src/images/bnb-pairs/DITTO-BNB.svg new file mode 100644 index 000000000..e522e7c0f --- /dev/null +++ b/src/images/bnb-pairs/DITTO-BNB.svg @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/bnb-pairs/DODO-BNB.svg b/src/images/bnb-pairs/DODO-BNB.svg new file mode 100644 index 000000000..81322ee86 --- /dev/null +++ b/src/images/bnb-pairs/DODO-BNB.svg @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/bnb-pairs/DOGE-BNB-PCS.svg b/src/images/bnb-pairs/DOGE-BNB-PCS.svg new file mode 100644 index 000000000..52b07f3e9 --- /dev/null +++ b/src/images/bnb-pairs/DOGE-BNB-PCS.svg @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/bnb-pairs/DOGE-BNB.svg b/src/images/bnb-pairs/DOGE-BNB.svg new file mode 100644 index 000000000..520ae0d8e --- /dev/null +++ b/src/images/bnb-pairs/DOGE-BNB.svg @@ -0,0 +1,861 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/bnb-pairs/DOT-BNB.svg b/src/images/bnb-pairs/DOT-BNB.svg new file mode 100644 index 000000000..5a7c94c76 --- /dev/null +++ b/src/images/bnb-pairs/DOT-BNB.svg @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/bnb-pairs/DRUGS-BNB.png b/src/images/bnb-pairs/DRUGS-BNB.png new file mode 100644 index 000000000..d773e2afd Binary files /dev/null and b/src/images/bnb-pairs/DRUGS-BNB.png differ diff --git a/src/images/bnb-pairs/DUSK-BNB.svg b/src/images/bnb-pairs/DUSK-BNB.svg new file mode 100644 index 000000000..60aca3e00 --- /dev/null +++ b/src/images/bnb-pairs/DUSK-BNB.svg @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/bnb-pairs/EASY-BNB.svg b/src/images/bnb-pairs/EASY-BNB.svg new file mode 100644 index 000000000..89fa7408c --- /dev/null +++ b/src/images/bnb-pairs/EASY-BNB.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/bnb-pairs/EGLD-BNB.svg b/src/images/bnb-pairs/EGLD-BNB.svg new file mode 100644 index 000000000..41b0a2eb5 --- /dev/null +++ b/src/images/bnb-pairs/EGLD-BNB.svg @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/bnb-pairs/EOS-BNB.svg b/src/images/bnb-pairs/EOS-BNB.svg new file mode 100644 index 000000000..271304ca0 --- /dev/null +++ b/src/images/bnb-pairs/EOS-BNB.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/bnb-pairs/EPS-BNB.svg b/src/images/bnb-pairs/EPS-BNB.svg new file mode 100644 index 000000000..93355353f --- /dev/null +++ b/src/images/bnb-pairs/EPS-BNB.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/bnb-pairs/ETC-BNB.svg b/src/images/bnb-pairs/ETC-BNB.svg new file mode 100644 index 000000000..df31c54d2 --- /dev/null +++ b/src/images/bnb-pairs/ETC-BNB.svg @@ -0,0 +1,369 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/bnb-pairs/ETH-BNB.svg b/src/images/bnb-pairs/ETH-BNB.svg new file mode 100644 index 000000000..766fca643 --- /dev/null +++ b/src/images/bnb-pairs/ETH-BNB.svg @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/bnb-pairs/EZ-BNB.svg b/src/images/bnb-pairs/EZ-BNB.svg new file mode 100644 index 000000000..d3a2014eb --- /dev/null +++ b/src/images/bnb-pairs/EZ-BNB.svg @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/bnb-pairs/FIL-BNB.svg b/src/images/bnb-pairs/FIL-BNB.svg new file mode 100644 index 000000000..428129d2c --- /dev/null +++ b/src/images/bnb-pairs/FIL-BNB.svg @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/bnb-pairs/FINE-BNB.svg b/src/images/bnb-pairs/FINE-BNB.svg new file mode 100644 index 000000000..55d90d52d --- /dev/null +++ b/src/images/bnb-pairs/FINE-BNB.svg @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/bnb-pairs/FRONT-BNB.svg b/src/images/bnb-pairs/FRONT-BNB.svg new file mode 100644 index 000000000..a5d21a6c9 --- /dev/null +++ b/src/images/bnb-pairs/FRONT-BNB.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/bnb-pairs/FTM-BNB.svg b/src/images/bnb-pairs/FTM-BNB.svg new file mode 100644 index 000000000..debe73404 --- /dev/null +++ b/src/images/bnb-pairs/FTM-BNB.svg @@ -0,0 +1,496 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/bnb-pairs/FTS-BNB.svg b/src/images/bnb-pairs/FTS-BNB.svg new file mode 100644 index 000000000..e4eea677e --- /dev/null +++ b/src/images/bnb-pairs/FTS-BNB.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/bnb-pairs/FUEL-BNB.png b/src/images/bnb-pairs/FUEL-BNB.png new file mode 100644 index 000000000..6beb90f69 Binary files /dev/null and b/src/images/bnb-pairs/FUEL-BNB.png differ diff --git a/src/images/bnb-pairs/GOLD-BNB.png b/src/images/bnb-pairs/GOLD-BNB.png new file mode 100644 index 000000000..130781506 Binary files /dev/null and b/src/images/bnb-pairs/GOLD-BNB.png differ diff --git a/src/images/bnb-pairs/GUM-BNB.svg b/src/images/bnb-pairs/GUM-BNB.svg new file mode 100644 index 000000000..7aa4603f6 --- /dev/null +++ b/src/images/bnb-pairs/GUM-BNB.svg @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/bnb-pairs/GUNS-BNB.png b/src/images/bnb-pairs/GUNS-BNB.png new file mode 100644 index 000000000..a8f52450d Binary files /dev/null and b/src/images/bnb-pairs/GUNS-BNB.png differ diff --git a/src/images/bnb-pairs/HARD-BNB.svg b/src/images/bnb-pairs/HARD-BNB.svg new file mode 100644 index 000000000..bf0604113 --- /dev/null +++ b/src/images/bnb-pairs/HARD-BNB.svg @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/bnb-pairs/HELMET-BNB.svg b/src/images/bnb-pairs/HELMET-BNB.svg new file mode 100644 index 000000000..ed1adea83 --- /dev/null +++ b/src/images/bnb-pairs/HELMET-BNB.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/bnb-pairs/HGET-BNB.svg b/src/images/bnb-pairs/HGET-BNB.svg new file mode 100644 index 000000000..ab9083df9 --- /dev/null +++ b/src/images/bnb-pairs/HGET-BNB.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/bnb-pairs/HYFI-BNB.svg b/src/images/bnb-pairs/HYFI-BNB.svg new file mode 100644 index 000000000..b12c734b6 --- /dev/null +++ b/src/images/bnb-pairs/HYFI-BNB.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/bnb-pairs/HZN-BNB.svg b/src/images/bnb-pairs/HZN-BNB.svg new file mode 100644 index 000000000..8134b0526 --- /dev/null +++ b/src/images/bnb-pairs/HZN-BNB.svg @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/bnb-pairs/INJ-BNB.svg b/src/images/bnb-pairs/INJ-BNB.svg new file mode 100644 index 000000000..9b75688ab --- /dev/null +++ b/src/images/bnb-pairs/INJ-BNB.svg @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/bnb-pairs/IOTA-BNB.svg b/src/images/bnb-pairs/IOTA-BNB.svg new file mode 100644 index 000000000..f84fa3222 --- /dev/null +++ b/src/images/bnb-pairs/IOTA-BNB.svg @@ -0,0 +1,307 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/bnb-pairs/ITAM-BNB.svg b/src/images/bnb-pairs/ITAM-BNB.svg new file mode 100644 index 000000000..ab27da4bb --- /dev/null +++ b/src/images/bnb-pairs/ITAM-BNB.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/bnb-pairs/JBTCB-BNB.svg b/src/images/bnb-pairs/JBTCB-BNB.svg new file mode 100644 index 000000000..8dd125f2b --- /dev/null +++ b/src/images/bnb-pairs/JBTCB-BNB.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/bnb-pairs/JDOT-BNB.svg b/src/images/bnb-pairs/JDOT-BNB.svg new file mode 100644 index 000000000..83eb88d7a --- /dev/null +++ b/src/images/bnb-pairs/JDOT-BNB.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/bnb-pairs/JGN-BNB.png b/src/images/bnb-pairs/JGN-BNB.png new file mode 100644 index 000000000..3017f63c0 Binary files /dev/null and b/src/images/bnb-pairs/JGN-BNB.png differ diff --git a/src/images/bnb-pairs/JGN-BNB.svg b/src/images/bnb-pairs/JGN-BNB.svg new file mode 100644 index 000000000..349dc4125 --- /dev/null +++ b/src/images/bnb-pairs/JGN-BNB.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/bnb-pairs/JTWT-BNB.svg b/src/images/bnb-pairs/JTWT-BNB.svg new file mode 100644 index 000000000..78a2a2b89 --- /dev/null +++ b/src/images/bnb-pairs/JTWT-BNB.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/bnb-pairs/JULD-BNB.svg b/src/images/bnb-pairs/JULD-BNB.svg new file mode 100644 index 000000000..d94ab2f2a --- /dev/null +++ b/src/images/bnb-pairs/JULD-BNB.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/bnb-pairs/JUNI-BNB.svg b/src/images/bnb-pairs/JUNI-BNB.svg new file mode 100644 index 000000000..6629ba17d --- /dev/null +++ b/src/images/bnb-pairs/JUNI-BNB.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/bnb-pairs/JUV-BNB.svg b/src/images/bnb-pairs/JUV-BNB.svg new file mode 100644 index 000000000..c114cbfe7 --- /dev/null +++ b/src/images/bnb-pairs/JUV-BNB.svg @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/bnb-pairs/JXVS-BNB.svg b/src/images/bnb-pairs/JXVS-BNB.svg new file mode 100644 index 000000000..1a84d15f3 --- /dev/null +++ b/src/images/bnb-pairs/JXVS-BNB.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/bnb-pairs/KALM-BNB.svg b/src/images/bnb-pairs/KALM-BNB.svg new file mode 100644 index 000000000..4079fb1bc --- /dev/null +++ b/src/images/bnb-pairs/KALM-BNB.svg @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/bnb-pairs/KEBAB-BNB.png b/src/images/bnb-pairs/KEBAB-BNB.png new file mode 100644 index 000000000..2b656b09d Binary files /dev/null and b/src/images/bnb-pairs/KEBAB-BNB.png differ diff --git a/src/images/bnb-pairs/KEYFI-BNB.svg b/src/images/bnb-pairs/KEYFI-BNB.svg new file mode 100644 index 000000000..12c49f8e3 --- /dev/null +++ b/src/images/bnb-pairs/KEYFI-BNB.svg @@ -0,0 +1,345 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/bnb-pairs/KTN-BNB.svg b/src/images/bnb-pairs/KTN-BNB.svg new file mode 100644 index 000000000..f0320b1eb --- /dev/null +++ b/src/images/bnb-pairs/KTN-BNB.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/bnb-pairs/LIEN-BNB.svg b/src/images/bnb-pairs/LIEN-BNB.svg new file mode 100644 index 000000000..a9b522b65 --- /dev/null +++ b/src/images/bnb-pairs/LIEN-BNB.svg @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/bnb-pairs/LINK-BNB.svg b/src/images/bnb-pairs/LINK-BNB.svg new file mode 100644 index 000000000..94ecbcc75 --- /dev/null +++ b/src/images/bnb-pairs/LINK-BNB.svg @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/bnb-pairs/LIT-BNB.svg b/src/images/bnb-pairs/LIT-BNB.svg new file mode 100644 index 000000000..b415b17b7 --- /dev/null +++ b/src/images/bnb-pairs/LIT-BNB.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/bnb-pairs/LMT-BNB.svg b/src/images/bnb-pairs/LMT-BNB.svg new file mode 100644 index 000000000..ca3e2afc7 --- /dev/null +++ b/src/images/bnb-pairs/LMT-BNB.svg @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/bnb-pairs/LTC-BNB.svg b/src/images/bnb-pairs/LTC-BNB.svg new file mode 100644 index 000000000..e180c2604 --- /dev/null +++ b/src/images/bnb-pairs/LTC-BNB.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/bnb-pairs/LTO-BNB.svg b/src/images/bnb-pairs/LTO-BNB.svg new file mode 100644 index 000000000..bcc1b019e --- /dev/null +++ b/src/images/bnb-pairs/LTO-BNB.svg @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/bnb-pairs/MATIC-BNB.svg b/src/images/bnb-pairs/MATIC-BNB.svg new file mode 100644 index 000000000..94044cdc5 --- /dev/null +++ b/src/images/bnb-pairs/MATIC-BNB.svg @@ -0,0 +1,394 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/bnb-pairs/MBOX-BNB.svg b/src/images/bnb-pairs/MBOX-BNB.svg new file mode 100644 index 000000000..140d329ba --- /dev/null +++ b/src/images/bnb-pairs/MBOX-BNB.svg @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/bnb-pairs/MDX-BNB.png b/src/images/bnb-pairs/MDX-BNB.png new file mode 100644 index 000000000..0c4a0c634 Binary files /dev/null and b/src/images/bnb-pairs/MDX-BNB.png differ diff --git a/src/images/bnb-pairs/NAR-BNB.png b/src/images/bnb-pairs/NAR-BNB.png new file mode 100644 index 000000000..a3aac07f9 Binary files /dev/null and b/src/images/bnb-pairs/NAR-BNB.png differ diff --git a/src/images/bnb-pairs/NAUT-BNB.svg b/src/images/bnb-pairs/NAUT-BNB.svg new file mode 100644 index 000000000..7ebd4e74d --- /dev/null +++ b/src/images/bnb-pairs/NAUT-BNB.svg @@ -0,0 +1,311 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/bnb-pairs/NEAR-BNB.svg b/src/images/bnb-pairs/NEAR-BNB.svg new file mode 100644 index 000000000..0a427e715 --- /dev/null +++ b/src/images/bnb-pairs/NEAR-BNB.svg @@ -0,0 +1,51 @@ + + near-bnb-svg + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/images/bnb-pairs/NRV-BNB.svg b/src/images/bnb-pairs/NRV-BNB.svg new file mode 100644 index 000000000..03d42bf23 --- /dev/null +++ b/src/images/bnb-pairs/NRV-BNB.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/bnb-pairs/ODDZ-BNB.svg b/src/images/bnb-pairs/ODDZ-BNB.svg new file mode 100644 index 000000000..86fb455cd --- /dev/null +++ b/src/images/bnb-pairs/ODDZ-BNB.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/bnb-pairs/OG-BNB.svg b/src/images/bnb-pairs/OG-BNB.svg new file mode 100644 index 000000000..c3a960963 --- /dev/null +++ b/src/images/bnb-pairs/OG-BNB.svg @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/bnb-pairs/ONT-BNB.svg b/src/images/bnb-pairs/ONT-BNB.svg new file mode 100644 index 000000000..a219d68f1 --- /dev/null +++ b/src/images/bnb-pairs/ONT-BNB.svg @@ -0,0 +1,387 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/bnb-pairs/PBTC-BNB.svg b/src/images/bnb-pairs/PBTC-BNB.svg new file mode 100644 index 000000000..abc4fafb8 --- /dev/null +++ b/src/images/bnb-pairs/PBTC-BNB.svg @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/bnb-pairs/PERL-BNB.svg b/src/images/bnb-pairs/PERL-BNB.svg new file mode 100644 index 000000000..4ee58c9d2 --- /dev/null +++ b/src/images/bnb-pairs/PERL-BNB.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/bnb-pairs/POPEN-BNB.svg b/src/images/bnb-pairs/POPEN-BNB.svg new file mode 100644 index 000000000..dbbb1ec80 --- /dev/null +++ b/src/images/bnb-pairs/POPEN-BNB.svg @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/bnb-pairs/PSG-BNB.svg b/src/images/bnb-pairs/PSG-BNB.svg new file mode 100644 index 000000000..28db49553 --- /dev/null +++ b/src/images/bnb-pairs/PSG-BNB.svg @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/bnb-pairs/REEF-BNB.svg b/src/images/bnb-pairs/REEF-BNB.svg new file mode 100644 index 000000000..024456904 --- /dev/null +++ b/src/images/bnb-pairs/REEF-BNB.svg @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/bnb-pairs/SFP-BNB.svg b/src/images/bnb-pairs/SFP-BNB.svg new file mode 100644 index 000000000..3aa5ddc21 --- /dev/null +++ b/src/images/bnb-pairs/SFP-BNB.svg @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/bnb-pairs/SHIB-BNB.svg b/src/images/bnb-pairs/SHIB-BNB.svg new file mode 100644 index 000000000..486048f1c --- /dev/null +++ b/src/images/bnb-pairs/SHIB-BNB.svg @@ -0,0 +1,53 @@ + + shib-bnb + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/images/bnb-pairs/SNX-BNB.svg b/src/images/bnb-pairs/SNX-BNB.svg new file mode 100644 index 000000000..7f6155491 --- /dev/null +++ b/src/images/bnb-pairs/SNX-BNB.svg @@ -0,0 +1,65 @@ + + snx-bnb + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/images/bnb-pairs/SOAK-BNB.svg b/src/images/bnb-pairs/SOAK-BNB.svg new file mode 100644 index 000000000..6e97e2708 --- /dev/null +++ b/src/images/bnb-pairs/SOAK-BNB.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/images/bnb-pairs/SPG-BNB.svg b/src/images/bnb-pairs/SPG-BNB.svg new file mode 100644 index 000000000..95322ad25 --- /dev/null +++ b/src/images/bnb-pairs/SPG-BNB.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/images/bnb-pairs/STEAM-BNB.svg b/src/images/bnb-pairs/STEAM-BNB.svg new file mode 100644 index 000000000..c2b4b0099 --- /dev/null +++ b/src/images/bnb-pairs/STEAM-BNB.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/images/bnb-pairs/SUTER-BNB.svg b/src/images/bnb-pairs/SUTER-BNB.svg new file mode 100644 index 000000000..18d86b41d --- /dev/null +++ b/src/images/bnb-pairs/SUTER-BNB.svg @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/bnb-pairs/SWAMP-BNB.svg b/src/images/bnb-pairs/SWAMP-BNB.svg new file mode 100644 index 000000000..6a76e1052 --- /dev/null +++ b/src/images/bnb-pairs/SWAMP-BNB.svg @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/bnb-pairs/SWGB-BNB.svg b/src/images/bnb-pairs/SWGB-BNB.svg new file mode 100644 index 000000000..2af29ef79 --- /dev/null +++ b/src/images/bnb-pairs/SWGB-BNB.svg @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/bnb-pairs/SWINGBY-BNB.svg b/src/images/bnb-pairs/SWINGBY-BNB.svg new file mode 100644 index 000000000..a49ed9e9b --- /dev/null +++ b/src/images/bnb-pairs/SWINGBY-BNB.svg @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/bnb-pairs/SWIRL-BNB.png b/src/images/bnb-pairs/SWIRL-BNB.png new file mode 100644 index 000000000..f5e7e5b76 Binary files /dev/null and b/src/images/bnb-pairs/SWIRL-BNB.png differ diff --git a/src/images/bnb-pairs/SWTH-BNB.svg b/src/images/bnb-pairs/SWTH-BNB.svg new file mode 100644 index 000000000..0ab86fb18 --- /dev/null +++ b/src/images/bnb-pairs/SWTH-BNB.svg @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/bnb-pairs/SXP-BNB.svg b/src/images/bnb-pairs/SXP-BNB.svg new file mode 100644 index 000000000..3aadae8c0 --- /dev/null +++ b/src/images/bnb-pairs/SXP-BNB.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/bnb-pairs/TDOGE-BNB.svg b/src/images/bnb-pairs/TDOGE-BNB.svg new file mode 100644 index 000000000..09d7d4c30 --- /dev/null +++ b/src/images/bnb-pairs/TDOGE-BNB.svg @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/bnb-pairs/TEN-BNB.svg b/src/images/bnb-pairs/TEN-BNB.svg new file mode 100644 index 000000000..22813821e --- /dev/null +++ b/src/images/bnb-pairs/TEN-BNB.svg @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/bnb-pairs/THUGS-BNB.png b/src/images/bnb-pairs/THUGS-BNB.png new file mode 100644 index 000000000..bebde0913 Binary files /dev/null and b/src/images/bnb-pairs/THUGS-BNB.png differ diff --git a/src/images/bnb-pairs/TKO-BNB.svg b/src/images/bnb-pairs/TKO-BNB.svg new file mode 100644 index 000000000..3911ace50 --- /dev/null +++ b/src/images/bnb-pairs/TKO-BNB.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/bnb-pairs/TLM-BNB.svg b/src/images/bnb-pairs/TLM-BNB.svg new file mode 100644 index 000000000..1ebaec735 --- /dev/null +++ b/src/images/bnb-pairs/TLM-BNB.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/bnb-pairs/TRADE-BNB.svg b/src/images/bnb-pairs/TRADE-BNB.svg new file mode 100644 index 000000000..9e72c8331 --- /dev/null +++ b/src/images/bnb-pairs/TRADE-BNB.svg @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/bnb-pairs/TRX-BNB.svg b/src/images/bnb-pairs/TRX-BNB.svg new file mode 100644 index 000000000..c663d29d0 --- /dev/null +++ b/src/images/bnb-pairs/TRX-BNB.svg @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/bnb-pairs/TWT-BNB.svg b/src/images/bnb-pairs/TWT-BNB.svg new file mode 100644 index 000000000..f5a5e303b --- /dev/null +++ b/src/images/bnb-pairs/TWT-BNB.svg @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/bnb-pairs/TYPH-BNB.png b/src/images/bnb-pairs/TYPH-BNB.png new file mode 100644 index 000000000..efeb38c72 Binary files /dev/null and b/src/images/bnb-pairs/TYPH-BNB.png differ diff --git a/src/images/bnb-pairs/UNFI-BNB.svg b/src/images/bnb-pairs/UNFI-BNB.svg new file mode 100644 index 000000000..40b08bcfd --- /dev/null +++ b/src/images/bnb-pairs/UNFI-BNB.svg @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/bnb-pairs/UNI-BNB.svg b/src/images/bnb-pairs/UNI-BNB.svg new file mode 100644 index 000000000..6f6517cc0 --- /dev/null +++ b/src/images/bnb-pairs/UNI-BNB.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/bnb-pairs/USDC-BNB.svg b/src/images/bnb-pairs/USDC-BNB.svg new file mode 100644 index 000000000..2f4e6296a --- /dev/null +++ b/src/images/bnb-pairs/USDC-BNB.svg @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/bnb-pairs/USDT-BNB.svg b/src/images/bnb-pairs/USDT-BNB.svg new file mode 100644 index 000000000..f4b3d0d21 --- /dev/null +++ b/src/images/bnb-pairs/USDT-BNB.svg @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/bnb-pairs/VAPOR-BNB.png b/src/images/bnb-pairs/VAPOR-BNB.png new file mode 100644 index 000000000..4e901ecfa Binary files /dev/null and b/src/images/bnb-pairs/VAPOR-BNB.png differ diff --git a/src/images/bnb-pairs/VIDT-BNB.svg b/src/images/bnb-pairs/VIDT-BNB.svg new file mode 100644 index 000000000..6f6f4f7da --- /dev/null +++ b/src/images/bnb-pairs/VIDT-BNB.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/bnb-pairs/VRT-BNB.svg b/src/images/bnb-pairs/VRT-BNB.svg new file mode 100644 index 000000000..11eb4c318 --- /dev/null +++ b/src/images/bnb-pairs/VRT-BNB.svg @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/bnb-pairs/WATCH-BNB-APE.svg b/src/images/bnb-pairs/WATCH-BNB-APE.svg new file mode 100644 index 000000000..895c08c7c --- /dev/null +++ b/src/images/bnb-pairs/WATCH-BNB-APE.svg @@ -0,0 +1,409 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/bnb-pairs/WATCH-BNB.svg b/src/images/bnb-pairs/WATCH-BNB.svg new file mode 100644 index 000000000..e8917a7e5 --- /dev/null +++ b/src/images/bnb-pairs/WATCH-BNB.svg @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/bnb-pairs/WEX-BNB.png b/src/images/bnb-pairs/WEX-BNB.png new file mode 100644 index 000000000..318dc2777 Binary files /dev/null and b/src/images/bnb-pairs/WEX-BNB.png differ diff --git a/src/images/bnb-pairs/WIN-BNB.svg b/src/images/bnb-pairs/WIN-BNB.svg new file mode 100644 index 000000000..7c92ff171 --- /dev/null +++ b/src/images/bnb-pairs/WIN-BNB.svg @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/bnb-pairs/WSOTE-BNB.svg b/src/images/bnb-pairs/WSOTE-BNB.svg new file mode 100644 index 000000000..09786364f --- /dev/null +++ b/src/images/bnb-pairs/WSOTE-BNB.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/bnb-pairs/XED-BNB.svg b/src/images/bnb-pairs/XED-BNB.svg new file mode 100644 index 000000000..02e5080e7 --- /dev/null +++ b/src/images/bnb-pairs/XED-BNB.svg @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/bnb-pairs/XEND-BNB.svg b/src/images/bnb-pairs/XEND-BNB.svg new file mode 100644 index 000000000..3457e113a --- /dev/null +++ b/src/images/bnb-pairs/XEND-BNB.svg @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/bnb-pairs/XRP-BNB.svg b/src/images/bnb-pairs/XRP-BNB.svg new file mode 100644 index 000000000..86a75e502 --- /dev/null +++ b/src/images/bnb-pairs/XRP-BNB.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/bnb-pairs/XTZ-BNB.svg b/src/images/bnb-pairs/XTZ-BNB.svg new file mode 100644 index 000000000..87f55b0c6 --- /dev/null +++ b/src/images/bnb-pairs/XTZ-BNB.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/bnb-pairs/XVS-BNB.svg b/src/images/bnb-pairs/XVS-BNB.svg new file mode 100644 index 000000000..2d3b9a6d7 --- /dev/null +++ b/src/images/bnb-pairs/XVS-BNB.svg @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/bnb-pairs/YFI-BNB.svg b/src/images/bnb-pairs/YFI-BNB.svg new file mode 100644 index 000000000..818f20dec --- /dev/null +++ b/src/images/bnb-pairs/YFI-BNB.svg @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/bnb-pairs/YFII-BNB.svg b/src/images/bnb-pairs/YFII-BNB.svg new file mode 100644 index 000000000..c4f7e742f --- /dev/null +++ b/src/images/bnb-pairs/YFII-BNB.svg @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/bnb-pairs/ZEC-BNB.svg b/src/images/bnb-pairs/ZEC-BNB.svg new file mode 100644 index 000000000..c1512d38f --- /dev/null +++ b/src/images/bnb-pairs/ZEC-BNB.svg @@ -0,0 +1,53 @@ + + zec-bnb + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/images/bnb-pairs/ZEE-BNB.svg b/src/images/bnb-pairs/ZEE-BNB.svg new file mode 100644 index 000000000..936dc138e --- /dev/null +++ b/src/images/bnb-pairs/ZEE-BNB.svg @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/bnb-pairs/ZIL-BNB.svg b/src/images/bnb-pairs/ZIL-BNB.svg new file mode 100644 index 000000000..5c40cb4ac --- /dev/null +++ b/src/images/bnb-pairs/ZIL-BNB.svg @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/bnb-pairs/bROOBEE-BNB.svg b/src/images/bnb-pairs/bROOBEE-BNB.svg new file mode 100644 index 000000000..59ba952ab --- /dev/null +++ b/src/images/bnb-pairs/bROOBEE-BNB.svg @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/bnb-pairs/bTRI-BNB.png b/src/images/bnb-pairs/bTRI-BNB.png new file mode 100644 index 000000000..d471446b6 Binary files /dev/null and b/src/images/bnb-pairs/bTRI-BNB.png differ diff --git a/src/images/bnb-pairs/pCWS-BNB.svg b/src/images/bnb-pairs/pCWS-BNB.svg new file mode 100644 index 000000000..2124e8562 --- /dev/null +++ b/src/images/bnb-pairs/pCWS-BNB.svg @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/bnb-pairs/typh-bnb.svg b/src/images/bnb-pairs/typh-bnb.svg new file mode 100644 index 000000000..ac784ea5d --- /dev/null +++ b/src/images/bnb-pairs/typh-bnb.svg @@ -0,0 +1,537 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/busd-pairs/ADA-BUSD.png b/src/images/busd-pairs/ADA-BUSD.png new file mode 100644 index 000000000..4538fe329 Binary files /dev/null and b/src/images/busd-pairs/ADA-BUSD.png differ diff --git a/src/images/busd-pairs/ALPACA-BUSD.svg b/src/images/busd-pairs/ALPACA-BUSD.svg new file mode 100644 index 000000000..8d4f8e7e3 --- /dev/null +++ b/src/images/busd-pairs/ALPACA-BUSD.svg @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/busd-pairs/BAKE-BUSD.png b/src/images/busd-pairs/BAKE-BUSD.png new file mode 100644 index 000000000..3a197de08 Binary files /dev/null and b/src/images/busd-pairs/BAKE-BUSD.png differ diff --git a/src/images/busd-pairs/BCFX-BUSD.svg b/src/images/busd-pairs/BCFX-BUSD.svg new file mode 100644 index 000000000..099088ad6 --- /dev/null +++ b/src/images/busd-pairs/BCFX-BUSD.svg @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/busd-pairs/BIFI-BUSD.png b/src/images/busd-pairs/BIFI-BUSD.png new file mode 100644 index 000000000..0d478e029 Binary files /dev/null and b/src/images/busd-pairs/BIFI-BUSD.png differ diff --git a/src/images/busd-pairs/BTCB-BUSD.svg b/src/images/busd-pairs/BTCB-BUSD.svg new file mode 100644 index 000000000..57d01d7b0 --- /dev/null +++ b/src/images/busd-pairs/BTCB-BUSD.svg @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/busd-pairs/BTR-BUSD.svg b/src/images/busd-pairs/BTR-BUSD.svg new file mode 100644 index 000000000..5e22069e6 --- /dev/null +++ b/src/images/busd-pairs/BTR-BUSD.svg @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/busd-pairs/BUSD-USDC.svg b/src/images/busd-pairs/BUSD-USDC.svg new file mode 100644 index 000000000..eb6f53fd8 --- /dev/null +++ b/src/images/busd-pairs/BUSD-USDC.svg @@ -0,0 +1,200 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/busd-pairs/DAI-BUSD.png b/src/images/busd-pairs/DAI-BUSD.png new file mode 100644 index 000000000..391739842 Binary files /dev/null and b/src/images/busd-pairs/DAI-BUSD.png differ diff --git a/src/images/busd-pairs/DAI-BUSD.svg b/src/images/busd-pairs/DAI-BUSD.svg new file mode 100644 index 000000000..da3122335 --- /dev/null +++ b/src/images/busd-pairs/DAI-BUSD.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/busd-pairs/DEXE-BUSD.svg b/src/images/busd-pairs/DEXE-BUSD.svg new file mode 100644 index 000000000..8ead2d6a5 --- /dev/null +++ b/src/images/busd-pairs/DEXE-BUSD.svg @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/busd-pairs/DFD-BUSD.svg b/src/images/busd-pairs/DFD-BUSD.svg new file mode 100644 index 000000000..a6925d854 --- /dev/null +++ b/src/images/busd-pairs/DFD-BUSD.svg @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/busd-pairs/FOR-BUSD.svg b/src/images/busd-pairs/FOR-BUSD.svg new file mode 100644 index 000000000..beb9b1a81 --- /dev/null +++ b/src/images/busd-pairs/FOR-BUSD.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/busd-pairs/HAKKA-BUSD.svg b/src/images/busd-pairs/HAKKA-BUSD.svg new file mode 100644 index 000000000..319531062 --- /dev/null +++ b/src/images/busd-pairs/HAKKA-BUSD.svg @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/busd-pairs/HOO-BUSD.svg b/src/images/busd-pairs/HOO-BUSD.svg new file mode 100644 index 000000000..a157fd7de --- /dev/null +++ b/src/images/busd-pairs/HOO-BUSD.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/busd-pairs/IOTX-BUSD.svg b/src/images/busd-pairs/IOTX-BUSD.svg new file mode 100644 index 000000000..a3052b79f --- /dev/null +++ b/src/images/busd-pairs/IOTX-BUSD.svg @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/busd-pairs/KEBAB-BUSD.png b/src/images/busd-pairs/KEBAB-BUSD.png new file mode 100644 index 000000000..e14a942b6 Binary files /dev/null and b/src/images/busd-pairs/KEBAB-BUSD.png differ diff --git a/src/images/busd-pairs/KUN-BUSD.svg b/src/images/busd-pairs/KUN-BUSD.svg new file mode 100644 index 000000000..de129609f --- /dev/null +++ b/src/images/busd-pairs/KUN-BUSD.svg @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/busd-pairs/LINA-BUSD.svg b/src/images/busd-pairs/LINA-BUSD.svg new file mode 100644 index 000000000..a0051d5e8 --- /dev/null +++ b/src/images/busd-pairs/LINA-BUSD.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/busd-pairs/LTC-BUSD.png b/src/images/busd-pairs/LTC-BUSD.png new file mode 100644 index 000000000..2b0d57924 Binary files /dev/null and b/src/images/busd-pairs/LTC-BUSD.png differ diff --git a/src/images/busd-pairs/MATH-BUSD.svg b/src/images/busd-pairs/MATH-BUSD.svg new file mode 100644 index 000000000..4693df5bb --- /dev/null +++ b/src/images/busd-pairs/MATH-BUSD.svg @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/busd-pairs/MDX-BUSD.png b/src/images/busd-pairs/MDX-BUSD.png new file mode 100644 index 000000000..d29e2f3f7 Binary files /dev/null and b/src/images/busd-pairs/MDX-BUSD.png differ diff --git a/src/images/busd-pairs/MTRG-BUSD.svg b/src/images/busd-pairs/MTRG-BUSD.svg new file mode 100644 index 000000000..a28df0ff2 --- /dev/null +++ b/src/images/busd-pairs/MTRG-BUSD.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/busd-pairs/MX-BUSD.svg b/src/images/busd-pairs/MX-BUSD.svg new file mode 100644 index 000000000..32c0b0935 --- /dev/null +++ b/src/images/busd-pairs/MX-BUSD.svg @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/busd-pairs/NULS-BUSD.svg b/src/images/busd-pairs/NULS-BUSD.svg new file mode 100644 index 000000000..6152101a8 --- /dev/null +++ b/src/images/busd-pairs/NULS-BUSD.svg @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/busd-pairs/OIN-BUSD.svg b/src/images/busd-pairs/OIN-BUSD.svg new file mode 100644 index 000000000..6aebf266b --- /dev/null +++ b/src/images/busd-pairs/OIN-BUSD.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/busd-pairs/ONE-BUSD.svg b/src/images/busd-pairs/ONE-BUSD.svg new file mode 100644 index 000000000..9cd45a3af --- /dev/null +++ b/src/images/busd-pairs/ONE-BUSD.svg @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/busd-pairs/PMON-BUSD.svg b/src/images/busd-pairs/PMON-BUSD.svg new file mode 100644 index 000000000..db52252f8 --- /dev/null +++ b/src/images/busd-pairs/PMON-BUSD.svg @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/busd-pairs/QKC-BUSD.svg b/src/images/busd-pairs/QKC-BUSD.svg new file mode 100644 index 000000000..05449d4bf --- /dev/null +++ b/src/images/busd-pairs/QKC-BUSD.svg @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/busd-pairs/RAMP-BUSD.svg b/src/images/busd-pairs/RAMP-BUSD.svg new file mode 100644 index 000000000..8063bdeeb --- /dev/null +++ b/src/images/busd-pairs/RAMP-BUSD.svg @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/busd-pairs/SWAMP-BUSD.svg b/src/images/busd-pairs/SWAMP-BUSD.svg new file mode 100644 index 000000000..8c0d1b1d4 --- /dev/null +++ b/src/images/busd-pairs/SWAMP-BUSD.svg @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/busd-pairs/TPT-BUSD.svg b/src/images/busd-pairs/TPT-BUSD.svg new file mode 100644 index 000000000..a70594366 --- /dev/null +++ b/src/images/busd-pairs/TPT-BUSD.svg @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/busd-pairs/TUSD-BUSD.svg b/src/images/busd-pairs/TUSD-BUSD.svg new file mode 100644 index 000000000..e2b1b2d3c --- /dev/null +++ b/src/images/busd-pairs/TUSD-BUSD.svg @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/busd-pairs/TXL-BUSD.svg b/src/images/busd-pairs/TXL-BUSD.svg new file mode 100644 index 000000000..5bba70b85 --- /dev/null +++ b/src/images/busd-pairs/TXL-BUSD.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/busd-pairs/UBXT-BUSD.svg b/src/images/busd-pairs/UBXT-BUSD.svg new file mode 100644 index 000000000..b46012ff9 --- /dev/null +++ b/src/images/busd-pairs/UBXT-BUSD.svg @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/busd-pairs/USDC-BUSD.svg b/src/images/busd-pairs/USDC-BUSD.svg new file mode 100644 index 000000000..6a0acdf91 --- /dev/null +++ b/src/images/busd-pairs/USDC-BUSD.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/busd-pairs/USDT-BUSD.png b/src/images/busd-pairs/USDT-BUSD.png new file mode 100644 index 000000000..ea88eb3e8 Binary files /dev/null and b/src/images/busd-pairs/USDT-BUSD.png differ diff --git a/src/images/busd-pairs/USDT-BUSD.svg b/src/images/busd-pairs/USDT-BUSD.svg new file mode 100644 index 000000000..9e9411779 --- /dev/null +++ b/src/images/busd-pairs/USDT-BUSD.svg @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/busd-pairs/UST-BUSD.svg b/src/images/busd-pairs/UST-BUSD.svg new file mode 100644 index 000000000..171670d79 --- /dev/null +++ b/src/images/busd-pairs/UST-BUSD.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/busd-pairs/VAI-BUSD.svg b/src/images/busd-pairs/VAI-BUSD.svg new file mode 100644 index 000000000..00010f558 --- /dev/null +++ b/src/images/busd-pairs/VAI-BUSD.svg @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/busd-pairs/WELL-BUSD.svg b/src/images/busd-pairs/WELL-BUSD.svg new file mode 100644 index 000000000..f56877c81 --- /dev/null +++ b/src/images/busd-pairs/WELL-BUSD.svg @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/busd-pairs/WMASS-BUSD.svg b/src/images/busd-pairs/WMASS-BUSD.svg new file mode 100644 index 000000000..c72683777 --- /dev/null +++ b/src/images/busd-pairs/WMASS-BUSD.svg @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/busd-pairs/XMARK-BUSD.svg b/src/images/busd-pairs/XMARK-BUSD.svg new file mode 100644 index 000000000..6d1041179 --- /dev/null +++ b/src/images/busd-pairs/XMARK-BUSD.svg @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/busd-pairs/XRP-BUSD.png b/src/images/busd-pairs/XRP-BUSD.png new file mode 100644 index 000000000..d57b870e0 Binary files /dev/null and b/src/images/busd-pairs/XRP-BUSD.png differ diff --git a/src/images/busd.curve.fi-logo.png b/src/images/busd.curve.fi-logo.png deleted file mode 100644 index f0da617d2..000000000 Binary files a/src/images/busd.curve.fi-logo.png and /dev/null differ diff --git a/src/images/bzx.png b/src/images/bzx.png deleted file mode 100644 index fe1af00ee..000000000 Binary files a/src/images/bzx.png and /dev/null differ diff --git a/src/images/cCrv-logo.png b/src/images/cCrv-logo.png deleted file mode 100644 index 99c0b1c64..000000000 Binary files a/src/images/cCrv-logo.png and /dev/null differ diff --git a/src/images/cUSDC-logo.png b/src/images/cUSDC-logo.png deleted file mode 100644 index 76cd50baa..000000000 Binary files a/src/images/cUSDC-logo.png and /dev/null differ diff --git a/src/images/cUSDT-logo.png b/src/images/cUSDT-logo.png deleted file mode 100644 index a7be21076..000000000 Binary files a/src/images/cUSDT-logo.png and /dev/null differ diff --git a/src/images/cake-pairs/BROOBEE-CAKE.svg b/src/images/cake-pairs/BROOBEE-CAKE.svg new file mode 100644 index 000000000..258d6ae79 --- /dev/null +++ b/src/images/cake-pairs/BROOBEE-CAKE.svg @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/cake-pairs/CAKE-BUSD.svg b/src/images/cake-pairs/CAKE-BUSD.svg new file mode 100644 index 000000000..70306fd20 --- /dev/null +++ b/src/images/cake-pairs/CAKE-BUSD.svg @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/cake-pairs/NAR-CAKE.svg b/src/images/cake-pairs/NAR-CAKE.svg new file mode 100644 index 000000000..b046b094e --- /dev/null +++ b/src/images/cake-pairs/NAR-CAKE.svg @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/cake-pairs/NYA-CAKE.svg b/src/images/cake-pairs/NYA-CAKE.svg new file mode 100644 index 000000000..221f0e95f --- /dev/null +++ b/src/images/cake-pairs/NYA-CAKE.svg @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/cake-pairs/STAX-CAKE.svg b/src/images/cake-pairs/STAX-CAKE.svg new file mode 100644 index 000000000..067a3222c --- /dev/null +++ b/src/images/cake-pairs/STAX-CAKE.svg @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/cake-pairs/ampl-bsc-mp-busd.svg b/src/images/cake-pairs/ampl-bsc-mp-busd.svg new file mode 100644 index 000000000..80138ba57 --- /dev/null +++ b/src/images/cake-pairs/ampl-bsc-mp-busd.svg @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/cake-pairs/btcb-eth.svg b/src/images/cake-pairs/btcb-eth.svg new file mode 100644 index 000000000..ac8309c69 --- /dev/null +++ b/src/images/cake-pairs/btcb-eth.svg @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/cake-pairs/chr-busd.svg b/src/images/cake-pairs/chr-busd.svg new file mode 100644 index 000000000..bc0ce18ed --- /dev/null +++ b/src/images/cake-pairs/chr-busd.svg @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/cake-pairs/deri-busd.svg b/src/images/cake-pairs/deri-busd.svg new file mode 100644 index 000000000..450cc37c0 --- /dev/null +++ b/src/images/cake-pairs/deri-busd.svg @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/cake-pairs/eth-usdc.svg b/src/images/cake-pairs/eth-usdc.svg new file mode 100644 index 000000000..f14b4644b --- /dev/null +++ b/src/images/cake-pairs/eth-usdc.svg @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/cake-pairs/hotcross-bnb.svg b/src/images/cake-pairs/hotcross-bnb.svg new file mode 100644 index 000000000..528ecfee4 --- /dev/null +++ b/src/images/cake-pairs/hotcross-bnb.svg @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/cake-pairs/rfox-bnb.svg b/src/images/cake-pairs/rfox-bnb.svg new file mode 100644 index 000000000..47a9416db --- /dev/null +++ b/src/images/cake-pairs/rfox-bnb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/coinbaseWalletIcon.svg b/src/images/coinbaseWalletIcon.svg deleted file mode 100644 index cc54004d9..000000000 --- a/src/images/coinbaseWalletIcon.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/images/compound.curve.fi-logo.png b/src/images/compound.curve.fi-logo.png deleted file mode 100644 index f0da617d2..000000000 Binary files a/src/images/compound.curve.fi-logo.png and /dev/null differ diff --git a/src/images/compound.png b/src/images/compound.png deleted file mode 100644 index 3d3655c99..000000000 Binary files a/src/images/compound.png and /dev/null differ diff --git a/src/images/crow/crow.png b/src/images/crow/crow.png new file mode 100644 index 000000000..8ae7caed7 Binary files /dev/null and b/src/images/crow/crow.png differ diff --git a/src/images/curvefi.jpg b/src/images/curvefi.jpg deleted file mode 100644 index 0a51f6238..000000000 Binary files a/src/images/curvefi.jpg and /dev/null differ diff --git a/src/images/ddex.jpg b/src/images/ddex.jpg deleted file mode 100644 index deaa4d42a..000000000 Binary files a/src/images/ddex.jpg and /dev/null differ diff --git a/src/images/ddex.png b/src/images/ddex.png deleted file mode 100644 index 2a0e58cc9..000000000 Binary files a/src/images/ddex.png and /dev/null differ diff --git a/src/images/defipulse.png b/src/images/defipulse.png deleted file mode 100644 index 74934de94..000000000 Binary files a/src/images/defipulse.png and /dev/null differ diff --git a/src/images/defisnap.svg b/src/images/defisnap.svg deleted file mode 100644 index 7e5f71d31..000000000 --- a/src/images/defisnap.svg +++ /dev/null @@ -1 +0,0 @@ -logoCreated with Sketch. \ No newline at end of file diff --git a/src/images/defizap.png b/src/images/defizap.png deleted file mode 100644 index 3ab71ab60..000000000 Binary files a/src/images/defizap.png and /dev/null differ diff --git a/src/images/degens/ADA-BNB.svg b/src/images/degens/ADA-BNB.svg new file mode 100644 index 000000000..0ff3fa7d3 --- /dev/null +++ b/src/images/degens/ADA-BNB.svg @@ -0,0 +1,605 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/degens/BANANA-DOT-BNB.svg b/src/images/degens/BANANA-DOT-BNB.svg new file mode 100644 index 000000000..bb6e2ca16 --- /dev/null +++ b/src/images/degens/BANANA-DOT-BNB.svg @@ -0,0 +1,2656 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/degens/BANANA-EPS-BNB.svg b/src/images/degens/BANANA-EPS-BNB.svg new file mode 100644 index 000000000..cd6f4711f --- /dev/null +++ b/src/images/degens/BANANA-EPS-BNB.svg @@ -0,0 +1,70 @@ + + aave-bnb-svg + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/images/degens/BANANA-GUARD-BNB.svg b/src/images/degens/BANANA-GUARD-BNB.svg new file mode 100644 index 000000000..c2c1933cf --- /dev/null +++ b/src/images/degens/BANANA-GUARD-BNB.svg @@ -0,0 +1,53 @@ + + axs-bnb-svg + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/images/degens/BANANA-SFP-BNB.svg b/src/images/degens/BANANA-SFP-BNB.svg new file mode 100644 index 000000000..5139b91c7 --- /dev/null +++ b/src/images/degens/BANANA-SFP-BNB.svg @@ -0,0 +1,70 @@ + + aave-bnb-svg + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/images/degens/BANANA-SUSHI-BNB.svg b/src/images/degens/BANANA-SUSHI-BNB.svg new file mode 100644 index 000000000..ad744b82e --- /dev/null +++ b/src/images/degens/BANANA-SUSHI-BNB.svg @@ -0,0 +1,346 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/degens/BANANA-TWT-BNB.svg b/src/images/degens/BANANA-TWT-BNB.svg new file mode 100644 index 000000000..9ac1c027b --- /dev/null +++ b/src/images/degens/BANANA-TWT-BNB.svg @@ -0,0 +1,70 @@ + + aave-bnb-svg + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/images/degens/BANANA-XRP-BNB.svg b/src/images/degens/BANANA-XRP-BNB.svg new file mode 100644 index 000000000..5a553c97b --- /dev/null +++ b/src/images/degens/BANANA-XRP-BNB.svg @@ -0,0 +1,350 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/degens/BANANA-XVS-BNB.svg b/src/images/degens/BANANA-XVS-BNB.svg new file mode 100644 index 000000000..f3d9de464 --- /dev/null +++ b/src/images/degens/BANANA-XVS-BNB.svg @@ -0,0 +1,70 @@ + + aave-bnb-svg + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/images/degens/BANANA.svg b/src/images/degens/BANANA.svg new file mode 100644 index 000000000..1e1321055 --- /dev/null +++ b/src/images/degens/BANANA.svg @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/src/images/degens/BGO.png b/src/images/degens/BGO.png new file mode 100644 index 000000000..90e7e0960 Binary files /dev/null and b/src/images/degens/BGO.png differ diff --git a/src/images/degens/BIFI-BNB-banana.svg b/src/images/degens/BIFI-BNB-banana.svg new file mode 100644 index 000000000..ee9fe8b44 --- /dev/null +++ b/src/images/degens/BIFI-BNB-banana.svg @@ -0,0 +1,208 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/degens/BIFI-BNB.svg b/src/images/degens/BIFI-BNB.svg new file mode 100644 index 000000000..9c2e014a8 --- /dev/null +++ b/src/images/degens/BIFI-BNB.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/degens/BITI.png b/src/images/degens/BITI.png new file mode 100644 index 000000000..361f7feac Binary files /dev/null and b/src/images/degens/BITI.png differ diff --git a/src/images/degens/BLZD-BNB.png b/src/images/degens/BLZD-BNB.png new file mode 100644 index 000000000..412751858 Binary files /dev/null and b/src/images/degens/BLZD-BNB.png differ diff --git a/src/images/degens/BLZD-BUSD.png b/src/images/degens/BLZD-BUSD.png new file mode 100644 index 000000000..088a6288a Binary files /dev/null and b/src/images/degens/BLZD-BUSD.png differ diff --git a/src/images/degens/BLZD.png b/src/images/degens/BLZD.png new file mode 100644 index 000000000..80fe135a1 Binary files /dev/null and b/src/images/degens/BLZD.png differ diff --git a/src/images/degens/DND.png b/src/images/degens/DND.png new file mode 100644 index 000000000..82ecc9960 Binary files /dev/null and b/src/images/degens/DND.png differ diff --git a/src/images/degens/FTS-BNB.svg b/src/images/degens/FTS-BNB.svg new file mode 100644 index 000000000..729b7f746 --- /dev/null +++ b/src/images/degens/FTS-BNB.svg @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/degens/FUEL-BNB.svg b/src/images/degens/FUEL-BNB.svg new file mode 100644 index 000000000..4f987783f --- /dev/null +++ b/src/images/degens/FUEL-BNB.svg @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/degens/GOAL-BUSD.png b/src/images/degens/GOAL-BUSD.png new file mode 100644 index 000000000..a56ff116d Binary files /dev/null and b/src/images/degens/GOAL-BUSD.png differ diff --git a/src/images/degens/IRON.png b/src/images/degens/IRON.png new file mode 100644 index 000000000..7019103af Binary files /dev/null and b/src/images/degens/IRON.png differ diff --git a/src/images/degens/LINK-BNB.svg b/src/images/degens/LINK-BNB.svg new file mode 100644 index 000000000..72f777c3e --- /dev/null +++ b/src/images/degens/LINK-BNB.svg @@ -0,0 +1,369 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/degens/NAUT.png b/src/images/degens/NAUT.png new file mode 100644 index 000000000..b6d1634c0 Binary files /dev/null and b/src/images/degens/NAUT.png differ diff --git a/src/images/degens/PALM.png b/src/images/degens/PALM.png new file mode 100644 index 000000000..b067c6498 Binary files /dev/null and b/src/images/degens/PALM.png differ diff --git a/src/images/degens/SAT-BNB.png b/src/images/degens/SAT-BNB.png new file mode 100644 index 000000000..38e715f32 Binary files /dev/null and b/src/images/degens/SAT-BNB.png differ diff --git a/src/images/degens/SAT-BUSD.png b/src/images/degens/SAT-BUSD.png new file mode 100644 index 000000000..5f189a489 Binary files /dev/null and b/src/images/degens/SAT-BUSD.png differ diff --git a/src/images/degens/SBGO.png b/src/images/degens/SBGO.png new file mode 100644 index 000000000..87e7fe970 Binary files /dev/null and b/src/images/degens/SBGO.png differ diff --git a/src/images/degens/SOUP-BNB.svg b/src/images/degens/SOUP-BNB.svg new file mode 100644 index 000000000..7554aa6b1 --- /dev/null +++ b/src/images/degens/SOUP-BNB.svg @@ -0,0 +1 @@ +Artboard 2 \ No newline at end of file diff --git a/src/images/degens/SOUPS-BNB.svg b/src/images/degens/SOUPS-BNB.svg new file mode 100644 index 000000000..d6b73553d --- /dev/null +++ b/src/images/degens/SOUPS-BNB.svg @@ -0,0 +1 @@ +Artboard 2 copy 2 \ No newline at end of file diff --git a/src/images/degens/SPACE-BNB.png b/src/images/degens/SPACE-BNB.png new file mode 100644 index 000000000..7c64b9bda Binary files /dev/null and b/src/images/degens/SPACE-BNB.png differ diff --git a/src/images/degens/SPACE-BUSD.png b/src/images/degens/SPACE-BUSD.png new file mode 100644 index 000000000..350b0f4a5 Binary files /dev/null and b/src/images/degens/SPACE-BUSD.png differ diff --git a/src/images/degens/STEEL.png b/src/images/degens/STEEL.png new file mode 100644 index 000000000..dacc8c02d Binary files /dev/null and b/src/images/degens/STEEL.png differ diff --git a/src/images/degens/WINGS-BNB-BUSD.svg b/src/images/degens/WINGS-BNB-BUSD.svg new file mode 100644 index 000000000..622032c1c --- /dev/null +++ b/src/images/degens/WINGS-BNB-BUSD.svg @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/degens/WINGS-BNB.svg b/src/images/degens/WINGS-BNB.svg new file mode 100644 index 000000000..f6a5861b8 --- /dev/null +++ b/src/images/degens/WINGS-BNB.svg @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + diff --git a/src/images/degens/WINGS-BUSD.svg b/src/images/degens/WINGS-BUSD.svg new file mode 100644 index 000000000..d622aeb68 --- /dev/null +++ b/src/images/degens/WINGS-BUSD.svg @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/degens/WINGS-USDC-BUSD.svg b/src/images/degens/WINGS-USDC-BUSD.svg new file mode 100644 index 000000000..13d31c01c --- /dev/null +++ b/src/images/degens/WINGS-USDC-BUSD.svg @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/degens/WINGS.svg b/src/images/degens/WINGS.svg new file mode 100644 index 000000000..1eb5316d9 --- /dev/null +++ b/src/images/degens/WINGS.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + diff --git a/src/images/degens/ZEFI-BNB.svg b/src/images/degens/ZEFI-BNB.svg new file mode 100644 index 000000000..4b749cb5b --- /dev/null +++ b/src/images/degens/ZEFI-BNB.svg @@ -0,0 +1,499 @@ + + + + diff --git a/src/images/degens/ZEFI-BUSD.svg b/src/images/degens/ZEFI-BUSD.svg new file mode 100644 index 000000000..deb0aaef1 --- /dev/null +++ b/src/images/degens/ZEFI-BUSD.svg @@ -0,0 +1,495 @@ + + + + diff --git a/src/images/degens/ape-bnb.png b/src/images/degens/ape-bnb.png new file mode 100644 index 000000000..54c1b3d8d Binary files /dev/null and b/src/images/degens/ape-bnb.png differ diff --git a/src/images/degens/banana-bnb.svg b/src/images/degens/banana-bnb.svg new file mode 100644 index 000000000..6c58150dc --- /dev/null +++ b/src/images/degens/banana-bnb.svg @@ -0,0 +1,245 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/degens/banana-busd.svg b/src/images/degens/banana-busd.svg new file mode 100644 index 000000000..f528ec85b --- /dev/null +++ b/src/images/degens/banana-busd.svg @@ -0,0 +1,230 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/degens/banana-ltc-bnb.svg b/src/images/degens/banana-ltc-bnb.svg new file mode 100644 index 000000000..8e0dce746 --- /dev/null +++ b/src/images/degens/banana-ltc-bnb.svg @@ -0,0 +1,361 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/degens/brew-bnb.svg b/src/images/degens/brew-bnb.svg new file mode 100644 index 000000000..509867973 --- /dev/null +++ b/src/images/degens/brew-bnb.svg @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/degens/brew-busd.svg b/src/images/degens/brew-busd.svg new file mode 100644 index 000000000..9960cb954 --- /dev/null +++ b/src/images/degens/brew-busd.svg @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/degens/garuda-bnb.png b/src/images/degens/garuda-bnb.png new file mode 100644 index 000000000..12ba3eef6 Binary files /dev/null and b/src/images/degens/garuda-bnb.png differ diff --git a/src/images/degens/garuda-usdc.png b/src/images/degens/garuda-usdc.png new file mode 100644 index 000000000..6493d85c3 Binary files /dev/null and b/src/images/degens/garuda-usdc.png differ diff --git a/src/images/degens/garuda-usdt.png b/src/images/degens/garuda-usdt.png new file mode 100644 index 000000000..c7274374a Binary files /dev/null and b/src/images/degens/garuda-usdt.png differ diff --git a/src/images/degens/grand-bnb.png b/src/images/degens/grand-bnb.png new file mode 100644 index 000000000..afb363d76 Binary files /dev/null and b/src/images/degens/grand-bnb.png differ diff --git a/src/images/degens/grand.png b/src/images/degens/grand.png new file mode 100644 index 000000000..b5f6126d6 Binary files /dev/null and b/src/images/degens/grand.png differ diff --git a/src/images/degens/mash-bnb.png b/src/images/degens/mash-bnb.png new file mode 100644 index 000000000..bfe466c3f Binary files /dev/null and b/src/images/degens/mash-bnb.png differ diff --git a/src/images/degens/mash-busd.png b/src/images/degens/mash-busd.png new file mode 100644 index 000000000..2591901af Binary files /dev/null and b/src/images/degens/mash-busd.png differ diff --git a/src/images/degens/mash.png b/src/images/degens/mash.png new file mode 100644 index 000000000..b2b0d0f6d Binary files /dev/null and b/src/images/degens/mash.png differ diff --git a/src/images/degens/mfrm-bnb.png b/src/images/degens/mfrm-bnb.png new file mode 100644 index 000000000..48d50c233 Binary files /dev/null and b/src/images/degens/mfrm-bnb.png differ diff --git a/src/images/degens/palm-bnb.png b/src/images/degens/palm-bnb.png new file mode 100644 index 000000000..561ff11fe Binary files /dev/null and b/src/images/degens/palm-bnb.png differ diff --git a/src/images/degens/palm-busd.png b/src/images/degens/palm-busd.png new file mode 100644 index 000000000..55edf2844 Binary files /dev/null and b/src/images/degens/palm-busd.png differ diff --git a/src/images/degens/panther-bnb.png b/src/images/degens/panther-bnb.png new file mode 100644 index 000000000..433377f80 Binary files /dev/null and b/src/images/degens/panther-bnb.png differ diff --git a/src/images/degens/panther-busd.png b/src/images/degens/panther-busd.png new file mode 100644 index 000000000..235f7b57d Binary files /dev/null and b/src/images/degens/panther-busd.png differ diff --git a/src/images/degens/quant-busd.png b/src/images/degens/quant-busd.png new file mode 100644 index 000000000..7d4590995 Binary files /dev/null and b/src/images/degens/quant-busd.png differ diff --git a/src/images/degens/ramen-bnb.svg b/src/images/degens/ramen-bnb.svg new file mode 100644 index 000000000..9b614ac0d --- /dev/null +++ b/src/images/degens/ramen-bnb.svg @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/degens/ramen-busd.svg b/src/images/degens/ramen-busd.svg new file mode 100644 index 000000000..d79e401e4 --- /dev/null +++ b/src/images/degens/ramen-busd.svg @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/degens/salt-bnb.png b/src/images/degens/salt-bnb.png new file mode 100644 index 000000000..7d40daf6c Binary files /dev/null and b/src/images/degens/salt-bnb.png differ diff --git a/src/images/degens/salt-busd.png b/src/images/degens/salt-busd.png new file mode 100644 index 000000000..f67f740f9 Binary files /dev/null and b/src/images/degens/salt-busd.png differ diff --git a/src/images/degens/sdump-bnb.png b/src/images/degens/sdump-bnb.png new file mode 100644 index 000000000..56c6f3245 Binary files /dev/null and b/src/images/degens/sdump-bnb.png differ diff --git a/src/images/degens/sdump-busd.png b/src/images/degens/sdump-busd.png new file mode 100644 index 000000000..2b89d38f2 Binary files /dev/null and b/src/images/degens/sdump-busd.png differ diff --git a/src/images/degens/slime-bnb.png b/src/images/degens/slime-bnb.png new file mode 100644 index 000000000..cf5cb5f49 Binary files /dev/null and b/src/images/degens/slime-bnb.png differ diff --git a/src/images/degens/slime-busd.png b/src/images/degens/slime-busd.png new file mode 100644 index 000000000..416cdba7f Binary files /dev/null and b/src/images/degens/slime-busd.png differ diff --git a/src/images/degens/tndr-bnb.png b/src/images/degens/tndr-bnb.png new file mode 100644 index 000000000..c6caaf945 Binary files /dev/null and b/src/images/degens/tndr-bnb.png differ diff --git a/src/images/degens/tndr-busd.png b/src/images/degens/tndr-busd.png new file mode 100644 index 000000000..d2eefa467 Binary files /dev/null and b/src/images/degens/tndr-busd.png differ diff --git a/src/images/degens/tofy-bnb.png b/src/images/degens/tofy-bnb.png new file mode 100644 index 000000000..c1f72c970 Binary files /dev/null and b/src/images/degens/tofy-bnb.png differ diff --git a/src/images/degens/tofy-mash.png b/src/images/degens/tofy-mash.png new file mode 100644 index 000000000..25402b081 Binary files /dev/null and b/src/images/degens/tofy-mash.png differ diff --git a/src/images/degens/tofy.png b/src/images/degens/tofy.png new file mode 100644 index 000000000..55520bb1c Binary files /dev/null and b/src/images/degens/tofy.png differ diff --git a/src/images/dydx.jpg b/src/images/dydx.jpg deleted file mode 100644 index b3a9e9ead..000000000 Binary files a/src/images/dydx.jpg and /dev/null differ diff --git a/src/images/dydx.svg b/src/images/dydx.svg deleted file mode 100644 index 4ab8b20d5..000000000 --- a/src/images/dydx.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/images/eth-pairs/ADA-ETH.svg b/src/images/eth-pairs/ADA-ETH.svg new file mode 100644 index 000000000..e38f841f1 --- /dev/null +++ b/src/images/eth-pairs/ADA-ETH.svg @@ -0,0 +1,644 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/eth-pairs/BETH-ETH.svg b/src/images/eth-pairs/BETH-ETH.svg new file mode 100644 index 000000000..230b97811 --- /dev/null +++ b/src/images/eth-pairs/BETH-ETH.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/eth-pairs/BTCB-ETH.svg b/src/images/eth-pairs/BTCB-ETH.svg new file mode 100644 index 000000000..1a57c8a97 --- /dev/null +++ b/src/images/eth-pairs/BTCB-ETH.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/eth-pairs/ETH-BNB.png b/src/images/eth-pairs/ETH-BNB.png new file mode 100644 index 000000000..d0efdc214 Binary files /dev/null and b/src/images/eth-pairs/ETH-BNB.png differ diff --git a/src/images/eth-pairs/ETH-BTC.png b/src/images/eth-pairs/ETH-BTC.png new file mode 100644 index 000000000..436a07b71 Binary files /dev/null and b/src/images/eth-pairs/ETH-BTC.png differ diff --git a/src/images/ethereum.png b/src/images/ethereum.png deleted file mode 100644 index 75c64d1d0..000000000 Binary files a/src/images/ethereum.png and /dev/null differ diff --git a/src/images/etherscan.png b/src/images/etherscan.png deleted file mode 100644 index b20ee201d..000000000 Binary files a/src/images/etherscan.png and /dev/null differ diff --git a/src/images/fantom/Battle Bands.png b/src/images/fantom/Battle Bands.png new file mode 100644 index 000000000..a328b2e53 Binary files /dev/null and b/src/images/fantom/Battle Bands.png differ diff --git a/src/images/fantom/Beardhemian Brushsody.png b/src/images/fantom/Beardhemian Brushsody.png new file mode 100644 index 000000000..fac8ebc73 Binary files /dev/null and b/src/images/fantom/Beardhemian Brushsody.png differ diff --git a/src/images/fantom/Clair de Lune.png b/src/images/fantom/Clair de Lune.png new file mode 100644 index 000000000..b89fd75b4 Binary files /dev/null and b/src/images/fantom/Clair de Lune.png differ diff --git a/src/images/fantom/Dance of The Degens.png b/src/images/fantom/Dance of The Degens.png new file mode 100644 index 000000000..a46d48b6c Binary files /dev/null and b/src/images/fantom/Dance of The Degens.png differ diff --git a/src/images/fantom/Dante Symphony.png b/src/images/fantom/Dante Symphony.png new file mode 100644 index 000000000..bd54ebd4d Binary files /dev/null and b/src/images/fantom/Dante Symphony.png differ diff --git a/src/images/fantom/FROYO-3Pool.png b/src/images/fantom/FROYO-3Pool.png new file mode 100644 index 000000000..17ac3f9ff Binary files /dev/null and b/src/images/fantom/FROYO-3Pool.png differ diff --git a/src/images/fantom/Fantom Conservatory.png b/src/images/fantom/Fantom Conservatory.png new file mode 100644 index 000000000..1aaf996c5 Binary files /dev/null and b/src/images/fantom/Fantom Conservatory.png differ diff --git a/src/images/fantom/Fantom Sonata.png b/src/images/fantom/Fantom Sonata.png new file mode 100644 index 000000000..d735162e4 Binary files /dev/null and b/src/images/fantom/Fantom Sonata.png differ diff --git a/src/images/fantom/Guqin Qi 2.png b/src/images/fantom/Guqin Qi 2.png new file mode 100644 index 000000000..2fd6e6309 Binary files /dev/null and b/src/images/fantom/Guqin Qi 2.png differ diff --git a/src/images/fantom/Guqin Qi.png b/src/images/fantom/Guqin Qi.png new file mode 100644 index 000000000..d16a197b2 Binary files /dev/null and b/src/images/fantom/Guqin Qi.png differ diff --git a/src/images/fantom/Late Quartet.png b/src/images/fantom/Late Quartet.png new file mode 100644 index 000000000..57e798874 Binary files /dev/null and b/src/images/fantom/Late Quartet.png differ diff --git a/src/images/fantom/Multichain Maxi.png b/src/images/fantom/Multichain Maxi.png new file mode 100644 index 000000000..a5748b253 Binary files /dev/null and b/src/images/fantom/Multichain Maxi.png differ diff --git a/src/images/fantom/Paint It Black.png b/src/images/fantom/Paint It Black.png new file mode 100644 index 000000000..008a4a512 Binary files /dev/null and b/src/images/fantom/Paint It Black.png differ diff --git a/src/images/fantom/Song Of Ice And Fire.png b/src/images/fantom/Song Of Ice And Fire.png new file mode 100644 index 000000000..c7683c552 Binary files /dev/null and b/src/images/fantom/Song Of Ice And Fire.png differ diff --git a/src/images/fantom/Sound of Moosic.png b/src/images/fantom/Sound of Moosic.png new file mode 100644 index 000000000..395f09cad Binary files /dev/null and b/src/images/fantom/Sound of Moosic.png differ diff --git a/src/images/fantom/TOMB-FTM.png b/src/images/fantom/TOMB-FTM.png new file mode 100644 index 000000000..916c1d727 Binary files /dev/null and b/src/images/fantom/TOMB-FTM.png differ diff --git a/src/images/fantom/TOR-2CRV.svg b/src/images/fantom/TOR-2CRV.svg new file mode 100644 index 000000000..e18919e8b --- /dev/null +++ b/src/images/fantom/TOR-2CRV.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/images/fantom/TSHARE-FTM.png b/src/images/fantom/TSHARE-FTM.png new file mode 100644 index 000000000..c492706a0 Binary files /dev/null and b/src/images/fantom/TSHARE-FTM.png differ diff --git a/src/images/fantom/The Classic Trio.png b/src/images/fantom/The Classic Trio.png new file mode 100644 index 000000000..c60e3710d Binary files /dev/null and b/src/images/fantom/The Classic Trio.png differ diff --git a/src/images/fantom/The Grand Orchestra.png b/src/images/fantom/The Grand Orchestra.png new file mode 100644 index 000000000..7f1b034ca Binary files /dev/null and b/src/images/fantom/The Grand Orchestra.png differ diff --git a/src/images/fantom/The Magic Touch By Daniele.png b/src/images/fantom/The Magic Touch By Daniele.png new file mode 100644 index 000000000..0156fa549 Binary files /dev/null and b/src/images/fantom/The Magic Touch By Daniele.png differ diff --git a/src/images/fantom/The Spooky-Tempered Clavier.png b/src/images/fantom/The Spooky-Tempered Clavier.png new file mode 100644 index 000000000..ddcef1343 Binary files /dev/null and b/src/images/fantom/The Spooky-Tempered Clavier.png differ diff --git a/src/images/fantom/Tubular Bells.png b/src/images/fantom/Tubular Bells.png new file mode 100644 index 000000000..1e4c38e2f Binary files /dev/null and b/src/images/fantom/Tubular Bells.png differ diff --git a/src/images/fantom/Variation Theme USDC.png b/src/images/fantom/Variation Theme USDC.png new file mode 100644 index 000000000..79e887498 Binary files /dev/null and b/src/images/fantom/Variation Theme USDC.png differ diff --git a/src/images/fantom/WAGMI Index.png b/src/images/fantom/WAGMI Index.png new file mode 100644 index 000000000..b4459952d Binary files /dev/null and b/src/images/fantom/WAGMI Index.png differ diff --git a/src/images/fantom/When Two Became One.png b/src/images/fantom/When Two Became One.png new file mode 100644 index 000000000..901fe9ea6 Binary files /dev/null and b/src/images/fantom/When Two Became One.png differ diff --git a/src/images/fantom/Ziggy Stardust & Magic Internet Money.png b/src/images/fantom/Ziggy Stardust & Magic Internet Money.png new file mode 100644 index 000000000..51d678fad Binary files /dev/null and b/src/images/fantom/Ziggy Stardust & Magic Internet Money.png differ diff --git a/src/images/fantom/baron-von-binance.png b/src/images/fantom/baron-von-binance.png new file mode 100644 index 000000000..0ec1e2677 Binary files /dev/null and b/src/images/fantom/baron-von-binance.png differ diff --git a/src/images/fantom/double-dollar-fugue.png b/src/images/fantom/double-dollar-fugue.png new file mode 100644 index 000000000..64bc268e3 Binary files /dev/null and b/src/images/fantom/double-dollar-fugue.png differ diff --git a/src/images/fantom/solana-sonata.png b/src/images/fantom/solana-sonata.png new file mode 100644 index 000000000..e89067ad6 Binary files /dev/null and b/src/images/fantom/solana-sonata.png differ diff --git a/src/images/fonts/WorkSans-VariableFont_wght.ttf b/src/images/fonts/WorkSans-VariableFont_wght.ttf deleted file mode 100644 index 34f0583ba..000000000 Binary files a/src/images/fonts/WorkSans-VariableFont_wght.ttf and /dev/null differ diff --git a/src/images/fortmaticIcon.png b/src/images/fortmaticIcon.png deleted file mode 100644 index 434a8f1b4..000000000 Binary files a/src/images/fortmaticIcon.png and /dev/null differ diff --git a/src/images/heco/AAVE-USDT.svg b/src/images/heco/AAVE-USDT.svg new file mode 100644 index 000000000..e98d99063 --- /dev/null +++ b/src/images/heco/AAVE-USDT.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/heco/BAL-USDT.svg b/src/images/heco/BAL-USDT.svg new file mode 100644 index 000000000..87469e68e --- /dev/null +++ b/src/images/heco/BAL-USDT.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/heco/ETH-USDT.png b/src/images/heco/ETH-USDT.png new file mode 100644 index 000000000..cbd15dd88 Binary files /dev/null and b/src/images/heco/ETH-USDT.png differ diff --git a/src/images/heco/ETH-WHT.svg b/src/images/heco/ETH-WHT.svg new file mode 100644 index 000000000..512b2634c --- /dev/null +++ b/src/images/heco/ETH-WHT.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/heco/HBCH-USDT.svg b/src/images/heco/HBCH-USDT.svg new file mode 100644 index 000000000..b76352f6e --- /dev/null +++ b/src/images/heco/HBCH-USDT.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/heco/HBTC-USDT.png b/src/images/heco/HBTC-USDT.png new file mode 100644 index 000000000..9d2be9c19 Binary files /dev/null and b/src/images/heco/HBTC-USDT.png differ diff --git a/src/images/heco/HBTC-WHT.svg b/src/images/heco/HBTC-WHT.svg new file mode 100644 index 000000000..887c71347 --- /dev/null +++ b/src/images/heco/HBTC-WHT.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/heco/HDOT-USDT.svg b/src/images/heco/HDOT-USDT.svg new file mode 100644 index 000000000..de6416ca2 --- /dev/null +++ b/src/images/heco/HDOT-USDT.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/heco/HFI-HT.png b/src/images/heco/HFI-HT.png new file mode 100644 index 000000000..8274b90ad Binary files /dev/null and b/src/images/heco/HFI-HT.png differ diff --git a/src/images/heco/HFI-HUSD.png b/src/images/heco/HFI-HUSD.png new file mode 100644 index 000000000..fdf9c74b0 Binary files /dev/null and b/src/images/heco/HFI-HUSD.png differ diff --git a/src/images/heco/HFIL-USDT.svg b/src/images/heco/HFIL-USDT.svg new file mode 100644 index 000000000..2f3b5f6ed --- /dev/null +++ b/src/images/heco/HFIL-USDT.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/heco/HLTC-USDT.svg b/src/images/heco/HLTC-USDT.svg new file mode 100644 index 000000000..108fdcac0 --- /dev/null +++ b/src/images/heco/HLTC-USDT.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/heco/HPT-USDT.svg b/src/images/heco/HPT-USDT.svg new file mode 100644 index 000000000..c62c56370 --- /dev/null +++ b/src/images/heco/HPT-USDT.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/heco/HUSD-USDT.svg b/src/images/heco/HUSD-USDT.svg new file mode 100644 index 000000000..04cb34bb0 --- /dev/null +++ b/src/images/heco/HUSD-USDT.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/heco/HUSD.png b/src/images/heco/HUSD.png new file mode 100644 index 000000000..835efa7e8 Binary files /dev/null and b/src/images/heco/HUSD.png differ diff --git a/src/images/heco/LAVA-HT.svg b/src/images/heco/LAVA-HT.svg new file mode 100644 index 000000000..5478e451e --- /dev/null +++ b/src/images/heco/LAVA-HT.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/heco/LAVA-USDT.svg b/src/images/heco/LAVA-USDT.svg new file mode 100644 index 000000000..e20ab001b --- /dev/null +++ b/src/images/heco/LAVA-USDT.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/heco/LAVA.png b/src/images/heco/LAVA.png new file mode 100644 index 000000000..df7a122a0 Binary files /dev/null and b/src/images/heco/LAVA.png differ diff --git a/src/images/heco/LHB-USDT.svg b/src/images/heco/LHB-USDT.svg new file mode 100644 index 000000000..de6db754a --- /dev/null +++ b/src/images/heco/LHB-USDT.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/heco/LHB-WHT.png b/src/images/heco/LHB-WHT.png new file mode 100644 index 000000000..ef52dad43 Binary files /dev/null and b/src/images/heco/LHB-WHT.png differ diff --git a/src/images/heco/LINK-USDT.svg b/src/images/heco/LINK-USDT.svg new file mode 100644 index 000000000..775a42370 --- /dev/null +++ b/src/images/heco/LINK-USDT.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/heco/MDX-USDT.png b/src/images/heco/MDX-USDT.png new file mode 100644 index 000000000..b02661265 Binary files /dev/null and b/src/images/heco/MDX-USDT.png differ diff --git a/src/images/heco/MDX-WHT.png b/src/images/heco/MDX-WHT.png new file mode 100644 index 000000000..7576c19e9 Binary files /dev/null and b/src/images/heco/MDX-WHT.png differ diff --git a/src/images/heco/SNX-USDT.svg b/src/images/heco/SNX-USDT.svg new file mode 100644 index 000000000..2f087d308 --- /dev/null +++ b/src/images/heco/SNX-USDT.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/heco/UNI-USDT.svg b/src/images/heco/UNI-USDT.svg new file mode 100644 index 000000000..f524062a7 --- /dev/null +++ b/src/images/heco/UNI-USDT.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/heco/WHT-HUSD.png b/src/images/heco/WHT-HUSD.png new file mode 100644 index 000000000..88e6e291f Binary files /dev/null and b/src/images/heco/WHT-HUSD.png differ diff --git a/src/images/heco/WHT-USDT.png b/src/images/heco/WHT-USDT.png new file mode 100644 index 000000000..0293b2f2f Binary files /dev/null and b/src/images/heco/WHT-USDT.png differ diff --git a/src/images/heco/YFI-USDT.svg b/src/images/heco/YFI-USDT.svg new file mode 100644 index 000000000..391436aac --- /dev/null +++ b/src/images/heco/YFI-USDT.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/heco/fHT.png b/src/images/heco/fHT.png new file mode 100644 index 000000000..ebc0b3002 Binary files /dev/null and b/src/images/heco/fHT.png differ diff --git a/src/images/heco/fUNI.png b/src/images/heco/fUNI.png new file mode 100644 index 000000000..17695defc Binary files /dev/null and b/src/images/heco/fUNI.png differ diff --git a/src/images/iDAI-logo.png b/src/images/iDAI-logo.png deleted file mode 100644 index e51592252..000000000 Binary files a/src/images/iDAI-logo.png and /dev/null differ diff --git a/src/images/icn-aethereum.svg b/src/images/icn-aethereum.svg deleted file mode 100644 index 45d53fa59..000000000 --- a/src/images/icn-aethereum.svg +++ /dev/null @@ -1 +0,0 @@ -Created by potrace 1.15, written by Peter Selinger 2001-2017 \ No newline at end of file diff --git a/src/images/icn-ledger.svg b/src/images/icn-ledger.svg deleted file mode 100644 index 135d3ef98..000000000 --- a/src/images/icn-ledger.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/images/icn-metamask.svg b/src/images/icn-metamask.svg deleted file mode 100644 index 1bfb20c69..000000000 --- a/src/images/icn-metamask.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/images/kebab/ETH-BTCB.png b/src/images/kebab/ETH-BTCB.png new file mode 100644 index 000000000..9a97186b0 Binary files /dev/null and b/src/images/kebab/ETH-BTCB.png differ diff --git a/src/images/kebab/KEBAB-BTCB.png b/src/images/kebab/KEBAB-BTCB.png new file mode 100644 index 000000000..22b6883d3 Binary files /dev/null and b/src/images/kebab/KEBAB-BTCB.png differ diff --git a/src/images/kebab/USDT-BUSD.png b/src/images/kebab/USDT-BUSD.png new file mode 100644 index 000000000..44b67555e Binary files /dev/null and b/src/images/kebab/USDT-BUSD.png differ diff --git a/src/images/kybernetwork.png b/src/images/kybernetwork.png deleted file mode 100644 index 8f3209c5e..000000000 Binary files a/src/images/kybernetwork.png and /dev/null differ diff --git a/src/images/ledger.png b/src/images/ledger.png deleted file mode 100644 index baa0c0ca0..000000000 Binary files a/src/images/ledger.png and /dev/null differ diff --git a/src/images/lendf.png b/src/images/lendf.png deleted file mode 100644 index 44f43c500..000000000 Binary files a/src/images/lendf.png and /dev/null differ diff --git a/src/images/lendf.svg b/src/images/lendf.svg deleted file mode 100644 index d9bf730b3..000000000 --- a/src/images/lendf.svg +++ /dev/null @@ -1 +0,0 @@ -lendf_logo1 \ No newline at end of file diff --git a/src/images/metamask.png b/src/images/metamask.png deleted file mode 100644 index 5470e9c15..000000000 Binary files a/src/images/metamask.png and /dev/null differ diff --git a/src/images/oCurve-logo.svg b/src/images/oCurve-logo.svg deleted file mode 100644 index d879d8d4b..000000000 --- a/src/images/oCurve-logo.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/images/oneinch.svg b/src/images/oneinch.svg deleted file mode 100644 index 96657d643..000000000 --- a/src/images/oneinch.svg +++ /dev/null @@ -1 +0,0 @@ -Element 1 \ No newline at end of file diff --git a/src/images/polygon/AAVE-ETH.png b/src/images/polygon/AAVE-ETH.png new file mode 100644 index 000000000..17d99ed8d Binary files /dev/null and b/src/images/polygon/AAVE-ETH.png differ diff --git a/src/images/polygon/ADDY.png b/src/images/polygon/ADDY.png new file mode 100644 index 000000000..599f1c6b4 Binary files /dev/null and b/src/images/polygon/ADDY.png differ diff --git a/src/images/polygon/ANY-QUICK.png b/src/images/polygon/ANY-QUICK.png new file mode 100644 index 000000000..2143f023a Binary files /dev/null and b/src/images/polygon/ANY-QUICK.png differ diff --git a/src/images/polygon/AZUKI-ETH.png b/src/images/polygon/AZUKI-ETH.png new file mode 100644 index 000000000..03f279e1e Binary files /dev/null and b/src/images/polygon/AZUKI-ETH.png differ diff --git a/src/images/polygon/BIFI-ETH.png b/src/images/polygon/BIFI-ETH.png new file mode 100644 index 000000000..30fa448b8 Binary files /dev/null and b/src/images/polygon/BIFI-ETH.png differ diff --git a/src/images/polygon/BIFI-MATIC.png b/src/images/polygon/BIFI-MATIC.png new file mode 100644 index 000000000..599d65e6b Binary files /dev/null and b/src/images/polygon/BIFI-MATIC.png differ diff --git a/src/images/polygon/BIFI-MUST.png b/src/images/polygon/BIFI-MUST.png new file mode 100644 index 000000000..2157d22db Binary files /dev/null and b/src/images/polygon/BIFI-MUST.png differ diff --git a/src/images/polygon/BIFI-QUICK.png b/src/images/polygon/BIFI-QUICK.png new file mode 100644 index 000000000..f19c31be1 Binary files /dev/null and b/src/images/polygon/BIFI-QUICK.png differ diff --git a/src/images/polygon/BTC-USDC.png b/src/images/polygon/BTC-USDC.png new file mode 100644 index 000000000..84621f638 Binary files /dev/null and b/src/images/polygon/BTC-USDC.png differ diff --git a/src/images/polygon/CC10-ETH.png b/src/images/polygon/CC10-ETH.png new file mode 100644 index 000000000..ea6614e2d Binary files /dev/null and b/src/images/polygon/CC10-ETH.png differ diff --git a/src/images/polygon/CC10-QUICK.png b/src/images/polygon/CC10-QUICK.png new file mode 100644 index 000000000..347826d7e Binary files /dev/null and b/src/images/polygon/CC10-QUICK.png differ diff --git a/src/images/polygon/CEL-ETH.png b/src/images/polygon/CEL-ETH.png new file mode 100644 index 000000000..138a22596 Binary files /dev/null and b/src/images/polygon/CEL-ETH.png differ diff --git a/src/images/polygon/CRV-ETH.png b/src/images/polygon/CRV-ETH.png new file mode 100644 index 000000000..8c817e7b8 Binary files /dev/null and b/src/images/polygon/CRV-ETH.png differ diff --git a/src/images/polygon/CURVE-3Pool.png b/src/images/polygon/CURVE-3Pool.png new file mode 100644 index 000000000..17ac3f9ff Binary files /dev/null and b/src/images/polygon/CURVE-3Pool.png differ diff --git a/src/images/polygon/DEFI5-ETH.png b/src/images/polygon/DEFI5-ETH.png new file mode 100644 index 000000000..1f97e3601 Binary files /dev/null and b/src/images/polygon/DEFI5-ETH.png differ diff --git a/src/images/polygon/DEFI5-QUICK.png b/src/images/polygon/DEFI5-QUICK.png new file mode 100644 index 000000000..af0dbd36b Binary files /dev/null and b/src/images/polygon/DEFI5-QUICK.png differ diff --git a/src/images/polygon/DEGEN-ETH.png b/src/images/polygon/DEGEN-ETH.png new file mode 100644 index 000000000..aefed0c67 Binary files /dev/null and b/src/images/polygon/DEGEN-ETH.png differ diff --git a/src/images/polygon/DEGEN-QUICK.png b/src/images/polygon/DEGEN-QUICK.png new file mode 100644 index 000000000..a0d722c1d Binary files /dev/null and b/src/images/polygon/DEGEN-QUICK.png differ diff --git a/src/images/polygon/DOKI-ETH.png b/src/images/polygon/DOKI-ETH.png new file mode 100644 index 000000000..bd9d5880c Binary files /dev/null and b/src/images/polygon/DOKI-ETH.png differ diff --git a/src/images/polygon/ETH-BTC.png b/src/images/polygon/ETH-BTC.png new file mode 100644 index 000000000..4a012e7fc Binary files /dev/null and b/src/images/polygon/ETH-BTC.png differ diff --git a/src/images/polygon/ETH-DAI.png b/src/images/polygon/ETH-DAI.png new file mode 100644 index 000000000..0f6cb9b56 Binary files /dev/null and b/src/images/polygon/ETH-DAI.png differ diff --git a/src/images/polygon/ETH-FIL.png b/src/images/polygon/ETH-FIL.png new file mode 100644 index 000000000..5e0b881a9 Binary files /dev/null and b/src/images/polygon/ETH-FIL.png differ diff --git a/src/images/polygon/ETH-MATIC.png b/src/images/polygon/ETH-MATIC.png new file mode 100644 index 000000000..4a5d1efc6 Binary files /dev/null and b/src/images/polygon/ETH-MATIC.png differ diff --git a/src/images/polygon/ETH-USDT.png b/src/images/polygon/ETH-USDT.png new file mode 100644 index 000000000..bced5ee71 Binary files /dev/null and b/src/images/polygon/ETH-USDT.png differ diff --git a/src/images/polygon/FFF-QUICK.png b/src/images/polygon/FFF-QUICK.png new file mode 100644 index 000000000..a10756a6c Binary files /dev/null and b/src/images/polygon/FFF-QUICK.png differ diff --git a/src/images/polygon/FISH-MATIC.svg b/src/images/polygon/FISH-MATIC.svg new file mode 100644 index 000000000..e7f548cf4 --- /dev/null +++ b/src/images/polygon/FISH-MATIC.svg @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/polygon/FRAX-FXS.png b/src/images/polygon/FRAX-FXS.png new file mode 100644 index 000000000..bd41d383b Binary files /dev/null and b/src/images/polygon/FRAX-FXS.png differ diff --git a/src/images/polygon/FRAX-QUICK.png b/src/images/polygon/FRAX-QUICK.png new file mode 100644 index 000000000..52b75a806 Binary files /dev/null and b/src/images/polygon/FRAX-QUICK.png differ diff --git a/src/images/polygon/FRAX-USDC.png b/src/images/polygon/FRAX-USDC.png new file mode 100644 index 000000000..787daba2a Binary files /dev/null and b/src/images/polygon/FRAX-USDC.png differ diff --git a/src/images/polygon/GRT-ETH.png b/src/images/polygon/GRT-ETH.png new file mode 100644 index 000000000..98e4db26c Binary files /dev/null and b/src/images/polygon/GRT-ETH.png differ diff --git a/src/images/polygon/IRON-ETH.png b/src/images/polygon/IRON-ETH.png new file mode 100644 index 000000000..c100d7760 Binary files /dev/null and b/src/images/polygon/IRON-ETH.png differ diff --git a/src/images/polygon/IRON-USDC.png b/src/images/polygon/IRON-USDC.png new file mode 100644 index 000000000..96b8244ce Binary files /dev/null and b/src/images/polygon/IRON-USDC.png differ diff --git a/src/images/polygon/IRON.png b/src/images/polygon/IRON.png new file mode 100644 index 000000000..18bff0097 Binary files /dev/null and b/src/images/polygon/IRON.png differ diff --git a/src/images/polygon/KRILL-USDC.png b/src/images/polygon/KRILL-USDC.png new file mode 100644 index 000000000..c633703c8 Binary files /dev/null and b/src/images/polygon/KRILL-USDC.png differ diff --git a/src/images/polygon/LINK-ETH.png b/src/images/polygon/LINK-ETH.png new file mode 100644 index 000000000..af583b117 Binary files /dev/null and b/src/images/polygon/LINK-ETH.png differ diff --git a/src/images/polygon/LINK-QUICK.png b/src/images/polygon/LINK-QUICK.png new file mode 100644 index 000000000..424f1b953 Binary files /dev/null and b/src/images/polygon/LINK-QUICK.png differ diff --git a/src/images/polygon/MATIC-USDC.png b/src/images/polygon/MATIC-USDC.png new file mode 100644 index 000000000..95468a446 Binary files /dev/null and b/src/images/polygon/MATIC-USDC.png differ diff --git a/src/images/polygon/MATIC-WOOFY.png b/src/images/polygon/MATIC-WOOFY.png new file mode 100644 index 000000000..a8ddc6552 Binary files /dev/null and b/src/images/polygon/MATIC-WOOFY.png differ diff --git a/src/images/polygon/MIMATIC-USDC.png b/src/images/polygon/MIMATIC-USDC.png new file mode 100644 index 000000000..8c64158ce Binary files /dev/null and b/src/images/polygon/MIMATIC-USDC.png differ diff --git a/src/images/polygon/MUST-ETH.png b/src/images/polygon/MUST-ETH.png new file mode 100644 index 000000000..1de1e7c46 Binary files /dev/null and b/src/images/polygon/MUST-ETH.png differ diff --git a/src/images/polygon/MUST-MATIC.png b/src/images/polygon/MUST-MATIC.png new file mode 100644 index 000000000..06286af5a Binary files /dev/null and b/src/images/polygon/MUST-MATIC.png differ diff --git a/src/images/polygon/PZAP-MATIC.png b/src/images/polygon/PZAP-MATIC.png new file mode 100644 index 000000000..f7b368b2d Binary files /dev/null and b/src/images/polygon/PZAP-MATIC.png differ diff --git a/src/images/polygon/PZAP-USDC.png b/src/images/polygon/PZAP-USDC.png new file mode 100644 index 000000000..90e75bc68 Binary files /dev/null and b/src/images/polygon/PZAP-USDC.png differ diff --git a/src/images/polygon/QUICK-ETH.png b/src/images/polygon/QUICK-ETH.png new file mode 100644 index 000000000..edcb42a36 Binary files /dev/null and b/src/images/polygon/QUICK-ETH.png differ diff --git a/src/images/polygon/QUICK-MATIC.png b/src/images/polygon/QUICK-MATIC.png new file mode 100644 index 000000000..3539a6bd1 Binary files /dev/null and b/src/images/polygon/QUICK-MATIC.png differ diff --git a/src/images/polygon/QUICK-UNI.png b/src/images/polygon/QUICK-UNI.png new file mode 100644 index 000000000..ba20cedb3 Binary files /dev/null and b/src/images/polygon/QUICK-UNI.png differ diff --git a/src/images/polygon/SNX-ETH.png b/src/images/polygon/SNX-ETH.png new file mode 100644 index 000000000..9dda28773 Binary files /dev/null and b/src/images/polygon/SNX-ETH.png differ diff --git a/src/images/polygon/TITAN-ETH.png b/src/images/polygon/TITAN-ETH.png new file mode 100644 index 000000000..b25024ea0 Binary files /dev/null and b/src/images/polygon/TITAN-ETH.png differ diff --git a/src/images/polygon/TITAN-IRON.png b/src/images/polygon/TITAN-IRON.png new file mode 100644 index 000000000..1ae9ee7a8 Binary files /dev/null and b/src/images/polygon/TITAN-IRON.png differ diff --git a/src/images/polygon/TITAN-MATIC.png b/src/images/polygon/TITAN-MATIC.png new file mode 100644 index 000000000..c610a998c Binary files /dev/null and b/src/images/polygon/TITAN-MATIC.png differ diff --git a/src/images/polygon/TITAN.png b/src/images/polygon/TITAN.png new file mode 100644 index 000000000..fd73f9a01 Binary files /dev/null and b/src/images/polygon/TITAN.png differ diff --git a/src/images/polygon/UBT-ETH.png b/src/images/polygon/UBT-ETH.png new file mode 100644 index 000000000..57523d6a4 Binary files /dev/null and b/src/images/polygon/UBT-ETH.png differ diff --git a/src/images/polygon/USDC-DAI.png b/src/images/polygon/USDC-DAI.png new file mode 100644 index 000000000..49abe32e4 Binary files /dev/null and b/src/images/polygon/USDC-DAI.png differ diff --git a/src/images/polygon/USDC-ETH.png b/src/images/polygon/USDC-ETH.png new file mode 100644 index 000000000..abcb2dfd4 Binary files /dev/null and b/src/images/polygon/USDC-ETH.png differ diff --git a/src/images/polygon/USDC-MUST.png b/src/images/polygon/USDC-MUST.png new file mode 100644 index 000000000..7d228f004 Binary files /dev/null and b/src/images/polygon/USDC-MUST.png differ diff --git a/src/images/polygon/USDC-USDT.png b/src/images/polygon/USDC-USDT.png new file mode 100644 index 000000000..da7e59003 Binary files /dev/null and b/src/images/polygon/USDC-USDT.png differ diff --git a/src/images/polygon/VISION-ETH.png b/src/images/polygon/VISION-ETH.png new file mode 100644 index 000000000..e3eed4a0b Binary files /dev/null and b/src/images/polygon/VISION-ETH.png differ diff --git a/src/images/polygon/VISION-QUICK.png b/src/images/polygon/VISION-QUICK.png new file mode 100644 index 000000000..72745c604 Binary files /dev/null and b/src/images/polygon/VISION-QUICK.png differ diff --git a/src/images/polygon/WEX-MATIC.png b/src/images/polygon/WEX-MATIC.png new file mode 100644 index 000000000..b6cb54d82 Binary files /dev/null and b/src/images/polygon/WEX-MATIC.png differ diff --git a/src/images/polygon/WEX-USDC.png b/src/images/polygon/WEX-USDC.png new file mode 100644 index 000000000..08c9f8295 Binary files /dev/null and b/src/images/polygon/WEX-USDC.png differ diff --git a/src/images/polygon/WEX.png b/src/images/polygon/WEX.png new file mode 100644 index 000000000..f3b8580ff Binary files /dev/null and b/src/images/polygon/WEX.png differ diff --git a/src/images/polygon/WEXPOLY-BTC.png b/src/images/polygon/WEXPOLY-BTC.png new file mode 100644 index 000000000..64d9d1128 Binary files /dev/null and b/src/images/polygon/WEXPOLY-BTC.png differ diff --git a/src/images/polygon/WISE-ETH.png b/src/images/polygon/WISE-ETH.png new file mode 100644 index 000000000..56f20b908 Binary files /dev/null and b/src/images/polygon/WISE-ETH.png differ diff --git a/src/images/polygon/mOCEAN-MATIC.png b/src/images/polygon/mOCEAN-MATIC.png new file mode 100644 index 000000000..6682befc7 Binary files /dev/null and b/src/images/polygon/mOCEAN-MATIC.png differ diff --git a/src/images/polygon/maUSDC-USDC.png b/src/images/polygon/maUSDC-USDC.png new file mode 100644 index 000000000..7993a03fc Binary files /dev/null and b/src/images/polygon/maUSDC-USDC.png differ diff --git a/src/images/polygon/renDOGE-ETH.png b/src/images/polygon/renDOGE-ETH.png new file mode 100644 index 000000000..f6d937f53 Binary files /dev/null and b/src/images/polygon/renDOGE-ETH.png differ diff --git a/src/images/pool4-logo.png b/src/images/pool4-logo.png deleted file mode 100644 index 5962479d9..000000000 Binary files a/src/images/pool4-logo.png and /dev/null differ diff --git a/src/images/portisIcon.png b/src/images/portisIcon.png deleted file mode 100644 index 748881801..000000000 Binary files a/src/images/portisIcon.png and /dev/null differ diff --git a/src/images/single-assets/2CAD.svg b/src/images/single-assets/2CAD.svg new file mode 100644 index 000000000..d682d087e --- /dev/null +++ b/src/images/single-assets/2CAD.svg @@ -0,0 +1 @@ +jAUD \ No newline at end of file diff --git a/src/images/single-assets/2JPY.svg b/src/images/single-assets/2JPY.svg new file mode 100644 index 000000000..c15122876 --- /dev/null +++ b/src/images/single-assets/2JPY.svg @@ -0,0 +1 @@ +SuperjJPY \ No newline at end of file diff --git a/src/images/single-assets/2NZD.svg b/src/images/single-assets/2NZD.svg new file mode 100644 index 000000000..9b4fbd93a --- /dev/null +++ b/src/images/single-assets/2NZD.svg @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/single-assets/2OMB.png b/src/images/single-assets/2OMB.png new file mode 100644 index 000000000..bd51b185d Binary files /dev/null and b/src/images/single-assets/2OMB.png differ diff --git a/src/images/single-assets/2SGD.png b/src/images/single-assets/2SGD.png new file mode 100644 index 000000000..c36c5f707 Binary files /dev/null and b/src/images/single-assets/2SGD.png differ diff --git a/src/images/single-assets/2SHARES.png b/src/images/single-assets/2SHARES.png new file mode 100644 index 000000000..6d99d5435 Binary files /dev/null and b/src/images/single-assets/2SHARES.png differ diff --git a/src/images/single-assets/4EUR.png b/src/images/single-assets/4EUR.png new file mode 100644 index 000000000..288001c2c Binary files /dev/null and b/src/images/single-assets/4EUR.png differ diff --git a/src/images/single-assets/AAVE.svg b/src/images/single-assets/AAVE.svg new file mode 100644 index 000000000..9e538b917 --- /dev/null +++ b/src/images/single-assets/AAVE.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/single-assets/AAVEe.svg b/src/images/single-assets/AAVEe.svg new file mode 100644 index 000000000..9e538b917 --- /dev/null +++ b/src/images/single-assets/AAVEe.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/single-assets/ACRE.png b/src/images/single-assets/ACRE.png new file mode 100644 index 000000000..ec6b4603a Binary files /dev/null and b/src/images/single-assets/ACRE.png differ diff --git a/src/images/single-assets/ADA.svg b/src/images/single-assets/ADA.svg new file mode 100644 index 000000000..f070879e9 --- /dev/null +++ b/src/images/single-assets/ADA.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/single-assets/ADX.svg b/src/images/single-assets/ADX.svg new file mode 100644 index 000000000..4b0412a62 --- /dev/null +++ b/src/images/single-assets/ADX.svg @@ -0,0 +1 @@ + diff --git a/src/images/single-assets/ALI.svg b/src/images/single-assets/ALI.svg new file mode 100644 index 000000000..0a7eca4f6 --- /dev/null +++ b/src/images/single-assets/ALI.svg @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/src/images/single-assets/ALPACA.png b/src/images/single-assets/ALPACA.png new file mode 100644 index 000000000..a598113ab Binary files /dev/null and b/src/images/single-assets/ALPACA.png differ diff --git a/src/images/single-assets/ALPHA.png b/src/images/single-assets/ALPHA.png new file mode 100644 index 000000000..74fdf4310 Binary files /dev/null and b/src/images/single-assets/ALPHA.png differ diff --git a/src/images/single-assets/AMPL.png b/src/images/single-assets/AMPL.png new file mode 100644 index 000000000..9b84c24a2 Binary files /dev/null and b/src/images/single-assets/AMPL.png differ diff --git a/src/images/single-assets/ANN.png b/src/images/single-assets/ANN.png new file mode 100644 index 000000000..8680a56ab Binary files /dev/null and b/src/images/single-assets/ANN.png differ diff --git a/src/images/single-assets/ANY.png b/src/images/single-assets/ANY.png new file mode 100644 index 000000000..58fcc4ada Binary files /dev/null and b/src/images/single-assets/ANY.png differ diff --git a/src/images/single-assets/AOT.png b/src/images/single-assets/AOT.png new file mode 100644 index 000000000..dcee9c0ec Binary files /dev/null and b/src/images/single-assets/AOT.png differ diff --git a/src/images/single-assets/APE.png b/src/images/single-assets/APE.png new file mode 100644 index 000000000..7846d534c Binary files /dev/null and b/src/images/single-assets/APE.png differ diff --git a/src/images/single-assets/ARBITRUM.svg b/src/images/single-assets/ARBITRUM.svg new file mode 100644 index 000000000..12753e6f4 --- /dev/null +++ b/src/images/single-assets/ARBITRUM.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/single-assets/ATLAS.png b/src/images/single-assets/ATLAS.png new file mode 100644 index 000000000..7cbca938d Binary files /dev/null and b/src/images/single-assets/ATLAS.png differ diff --git a/src/images/single-assets/ATOM.png b/src/images/single-assets/ATOM.png new file mode 100644 index 000000000..d157a5bde Binary files /dev/null and b/src/images/single-assets/ATOM.png differ diff --git a/src/images/single-assets/AURO.png b/src/images/single-assets/AURO.png new file mode 100644 index 000000000..3f939208b Binary files /dev/null and b/src/images/single-assets/AURO.png differ diff --git a/src/images/single-assets/AURORA.svg b/src/images/single-assets/AURORA.svg new file mode 100644 index 000000000..0b9ad294c --- /dev/null +++ b/src/images/single-assets/AURORA.svg @@ -0,0 +1,14 @@ + + + + + + diff --git a/src/images/single-assets/AVALANCHE.svg b/src/images/single-assets/AVALANCHE.svg new file mode 100644 index 000000000..2d5455541 --- /dev/null +++ b/src/images/single-assets/AVALANCHE.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/single-assets/AVAX.png b/src/images/single-assets/AVAX.png new file mode 100644 index 000000000..315898939 Binary files /dev/null and b/src/images/single-assets/AVAX.png differ diff --git a/src/images/single-assets/AVAX.svg b/src/images/single-assets/AVAX.svg new file mode 100644 index 000000000..a5787eac6 --- /dev/null +++ b/src/images/single-assets/AVAX.svg @@ -0,0 +1,15 @@ + + + + + + + + + diff --git a/src/images/single-assets/AVAXL.svg b/src/images/single-assets/AVAXL.svg new file mode 100644 index 000000000..0c7a3002a --- /dev/null +++ b/src/images/single-assets/AVAXL.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/single-assets/AXS.png b/src/images/single-assets/AXS.png new file mode 100644 index 000000000..c0edf64df Binary files /dev/null and b/src/images/single-assets/AXS.png differ diff --git a/src/images/single-assets/Andromeda.svg b/src/images/single-assets/Andromeda.svg new file mode 100644 index 000000000..64912d82f --- /dev/null +++ b/src/images/single-assets/Andromeda.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/single-assets/BABY.svg b/src/images/single-assets/BABY.svg new file mode 100644 index 000000000..6aad8740f --- /dev/null +++ b/src/images/single-assets/BABY.svg @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/images/single-assets/BABYCAKE.svg b/src/images/single-assets/BABYCAKE.svg new file mode 100644 index 000000000..9d902c045 --- /dev/null +++ b/src/images/single-assets/BABYCAKE.svg @@ -0,0 +1 @@ + diff --git a/src/images/single-assets/BAKE.png b/src/images/single-assets/BAKE.png new file mode 100644 index 000000000..f14781107 Binary files /dev/null and b/src/images/single-assets/BAKE.png differ diff --git a/src/images/single-assets/BALL.png b/src/images/single-assets/BALL.png new file mode 100644 index 000000000..eb2e3626d Binary files /dev/null and b/src/images/single-assets/BALL.png differ diff --git a/src/images/single-assets/BANANA.svg b/src/images/single-assets/BANANA.svg new file mode 100644 index 000000000..1e1321055 --- /dev/null +++ b/src/images/single-assets/BANANA.svg @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/src/images/single-assets/BASED.svg b/src/images/single-assets/BASED.svg new file mode 100644 index 000000000..b9e8bccca --- /dev/null +++ b/src/images/single-assets/BASED.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/single-assets/BCH.svg b/src/images/single-assets/BCH.svg new file mode 100644 index 000000000..3e54e8d02 --- /dev/null +++ b/src/images/single-assets/BCH.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/src/images/single-assets/BCT.png b/src/images/single-assets/BCT.png new file mode 100644 index 000000000..91c19cd22 Binary files /dev/null and b/src/images/single-assets/BCT.png differ diff --git a/src/images/single-assets/BDO.png b/src/images/single-assets/BDO.png new file mode 100644 index 000000000..c6d30d5cd Binary files /dev/null and b/src/images/single-assets/BDO.png differ diff --git a/src/images/single-assets/BDP.png b/src/images/single-assets/BDP.png new file mode 100644 index 000000000..bc1f7cf1a Binary files /dev/null and b/src/images/single-assets/BDP.png differ diff --git a/src/images/single-assets/BEAR.png b/src/images/single-assets/BEAR.png new file mode 100644 index 000000000..1b18352d2 Binary files /dev/null and b/src/images/single-assets/BEAR.png differ diff --git a/src/images/single-assets/BEETS.png b/src/images/single-assets/BEETS.png new file mode 100644 index 000000000..6d38ed8a5 Binary files /dev/null and b/src/images/single-assets/BEETS.png differ diff --git a/src/images/single-assets/BETA.svg b/src/images/single-assets/BETA.svg new file mode 100644 index 000000000..c7da3344a --- /dev/null +++ b/src/images/single-assets/BETA.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/images/single-assets/BETH.png b/src/images/single-assets/BETH.png new file mode 100644 index 000000000..473b6e158 Binary files /dev/null and b/src/images/single-assets/BETH.png differ diff --git a/src/images/single-assets/BETU.png b/src/images/single-assets/BETU.png new file mode 100644 index 000000000..ce36e223a Binary files /dev/null and b/src/images/single-assets/BETU.png differ diff --git a/src/images/single-assets/BHC.png b/src/images/single-assets/BHC.png new file mode 100644 index 000000000..bcbfe81ac Binary files /dev/null and b/src/images/single-assets/BHC.png differ diff --git a/src/images/single-assets/BICO.png b/src/images/single-assets/BICO.png new file mode 100644 index 000000000..28207aad0 Binary files /dev/null and b/src/images/single-assets/BICO.png differ diff --git a/src/images/single-assets/BIFI.png b/src/images/single-assets/BIFI.png new file mode 100644 index 000000000..6c84abbc8 Binary files /dev/null and b/src/images/single-assets/BIFI.png differ diff --git a/src/images/single-assets/BISON.png b/src/images/single-assets/BISON.png new file mode 100644 index 000000000..b0e2f19c6 Binary files /dev/null and b/src/images/single-assets/BISON.png differ diff --git a/src/images/single-assets/BLZZ.svg b/src/images/single-assets/BLZZ.svg new file mode 100644 index 000000000..491c25566 --- /dev/null +++ b/src/images/single-assets/BLZZ.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/images/single-assets/BMON.svg b/src/images/single-assets/BMON.svg new file mode 100644 index 000000000..023866218 --- /dev/null +++ b/src/images/single-assets/BMON.svg @@ -0,0 +1 @@ + diff --git a/src/images/single-assets/BNB.png b/src/images/single-assets/BNB.png new file mode 100644 index 000000000..66eeb30c7 Binary files /dev/null and b/src/images/single-assets/BNB.png differ diff --git a/src/images/single-assets/BNBbsc.png b/src/images/single-assets/BNBbsc.png new file mode 100644 index 000000000..66eeb30c7 Binary files /dev/null and b/src/images/single-assets/BNBbsc.png differ diff --git a/src/images/single-assets/BOMB.png b/src/images/single-assets/BOMB.png new file mode 100644 index 000000000..3b3b27213 Binary files /dev/null and b/src/images/single-assets/BOMB.png differ diff --git a/src/images/single-assets/BONE.png b/src/images/single-assets/BONE.png new file mode 100644 index 000000000..4c6d409ea Binary files /dev/null and b/src/images/single-assets/BONE.png differ diff --git a/src/images/single-assets/BONEswap.png b/src/images/single-assets/BONEswap.png new file mode 100644 index 000000000..75422d65e Binary files /dev/null and b/src/images/single-assets/BONEswap.png differ diff --git a/src/images/single-assets/BOO.png b/src/images/single-assets/BOO.png new file mode 100644 index 000000000..88a3bf1ed Binary files /dev/null and b/src/images/single-assets/BOO.png differ diff --git a/src/images/single-assets/BOOK.png b/src/images/single-assets/BOOK.png new file mode 100644 index 000000000..a1f5344b3 Binary files /dev/null and b/src/images/single-assets/BOOK.png differ diff --git a/src/images/single-assets/BORING.png b/src/images/single-assets/BORING.png new file mode 100644 index 000000000..b12f7b25a Binary files /dev/null and b/src/images/single-assets/BORING.png differ diff --git a/src/images/single-assets/BP.png b/src/images/single-assets/BP.png new file mode 100644 index 000000000..9db0188ca Binary files /dev/null and b/src/images/single-assets/BP.png differ diff --git a/src/images/single-assets/BPT.png b/src/images/single-assets/BPT.png new file mode 100644 index 000000000..4f5221f1d Binary files /dev/null and b/src/images/single-assets/BPT.png differ diff --git a/src/images/single-assets/BREW.png b/src/images/single-assets/BREW.png new file mode 100644 index 000000000..edeede94d Binary files /dev/null and b/src/images/single-assets/BREW.png differ diff --git a/src/images/single-assets/BRIBE.png b/src/images/single-assets/BRIBE.png new file mode 100644 index 000000000..da299b56e Binary files /dev/null and b/src/images/single-assets/BRIBE.png differ diff --git a/src/images/single-assets/BRUSH.png b/src/images/single-assets/BRUSH.png new file mode 100644 index 000000000..d55ac3133 Binary files /dev/null and b/src/images/single-assets/BRUSH.png differ diff --git a/src/images/single-assets/BSC.svg b/src/images/single-assets/BSC.svg new file mode 100644 index 000000000..d440e5f45 --- /dev/null +++ b/src/images/single-assets/BSC.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/single-assets/BSCDEFI.svg b/src/images/single-assets/BSCDEFI.svg new file mode 100644 index 000000000..236369f0b --- /dev/null +++ b/src/images/single-assets/BSCDEFI.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/images/single-assets/BSCPAD.png b/src/images/single-assets/BSCPAD.png new file mode 100644 index 000000000..6cf0ed52c Binary files /dev/null and b/src/images/single-assets/BSCPAD.png differ diff --git a/src/images/single-assets/BSHARE.svg b/src/images/single-assets/BSHARE.svg new file mode 100644 index 000000000..7e6ccd7e5 --- /dev/null +++ b/src/images/single-assets/BSHARE.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/single-assets/BSTN.svg b/src/images/single-assets/BSTN.svg new file mode 100644 index 000000000..6018bba33 --- /dev/null +++ b/src/images/single-assets/BSTN.svg @@ -0,0 +1 @@ +wowstatue \ No newline at end of file diff --git a/src/images/single-assets/BSW.svg b/src/images/single-assets/BSW.svg new file mode 100644 index 000000000..b4e590030 --- /dev/null +++ b/src/images/single-assets/BSW.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/single-assets/BTC.svg b/src/images/single-assets/BTC.svg new file mode 100644 index 000000000..2b75c99bc --- /dev/null +++ b/src/images/single-assets/BTC.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + diff --git a/src/images/single-assets/BTCB.svg b/src/images/single-assets/BTCB.svg new file mode 100644 index 000000000..2b75c99bc --- /dev/null +++ b/src/images/single-assets/BTCB.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + diff --git a/src/images/single-assets/BTD.png b/src/images/single-assets/BTD.png new file mode 100644 index 000000000..47b67bf84 Binary files /dev/null and b/src/images/single-assets/BTD.png differ diff --git a/src/images/single-assets/BTS.png b/src/images/single-assets/BTS.png new file mode 100644 index 000000000..a46c5e562 Binary files /dev/null and b/src/images/single-assets/BTS.png differ diff --git a/src/images/single-assets/BTT.png b/src/images/single-assets/BTT.png new file mode 100644 index 000000000..ffb73a29f Binary files /dev/null and b/src/images/single-assets/BTT.png differ diff --git a/src/images/single-assets/BUNNY.png b/src/images/single-assets/BUNNY.png new file mode 100644 index 000000000..9f20a7d05 Binary files /dev/null and b/src/images/single-assets/BUNNY.png differ diff --git a/src/images/single-assets/BURGER.png b/src/images/single-assets/BURGER.png new file mode 100644 index 000000000..3584499a5 Binary files /dev/null and b/src/images/single-assets/BURGER.png differ diff --git a/src/images/single-assets/BUSD.svg b/src/images/single-assets/BUSD.svg new file mode 100644 index 000000000..d2a374781 --- /dev/null +++ b/src/images/single-assets/BUSD.svg @@ -0,0 +1 @@ +Asset 1 \ No newline at end of file diff --git a/src/images/single-assets/BUSDe.svg b/src/images/single-assets/BUSDe.svg new file mode 100644 index 000000000..d2a374781 --- /dev/null +++ b/src/images/single-assets/BUSDe.svg @@ -0,0 +1 @@ +Asset 1 \ No newline at end of file diff --git a/src/images/single-assets/BUSM.png b/src/images/single-assets/BUSM.png new file mode 100644 index 000000000..a1ca94241 Binary files /dev/null and b/src/images/single-assets/BUSM.png differ diff --git a/src/images/single-assets/BYTE.png b/src/images/single-assets/BYTE.png new file mode 100644 index 000000000..665ffee7f Binary files /dev/null and b/src/images/single-assets/BYTE.png differ diff --git a/src/images/single-assets/CAKE.svg b/src/images/single-assets/CAKE.svg new file mode 100644 index 000000000..2b9b3fe8d --- /dev/null +++ b/src/images/single-assets/CAKE.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/single-assets/CAPS.svg b/src/images/single-assets/CAPS.svg new file mode 100644 index 000000000..1ad2434b2 --- /dev/null +++ b/src/images/single-assets/CAPS.svg @@ -0,0 +1,14 @@ + + Ternoa-logo-svg + + + + + + + + + \ No newline at end of file diff --git a/src/images/single-assets/CARROT.png b/src/images/single-assets/CARROT.png new file mode 100644 index 000000000..88ec41d36 Binary files /dev/null and b/src/images/single-assets/CARROT.png differ diff --git a/src/images/single-assets/CCAR.png b/src/images/single-assets/CCAR.png new file mode 100644 index 000000000..d238c5573 Binary files /dev/null and b/src/images/single-assets/CCAR.png differ diff --git a/src/images/single-assets/CEEK.png b/src/images/single-assets/CEEK.png new file mode 100644 index 000000000..046c7ff0d Binary files /dev/null and b/src/images/single-assets/CEEK.png differ diff --git a/src/images/single-assets/CEL.png b/src/images/single-assets/CEL.png new file mode 100644 index 000000000..860b536aa Binary files /dev/null and b/src/images/single-assets/CEL.png differ diff --git a/src/images/single-assets/CELO.svg b/src/images/single-assets/CELO.svg new file mode 100644 index 000000000..f395ae741 --- /dev/null +++ b/src/images/single-assets/CELO.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/single-assets/CHARGE.png b/src/images/single-assets/CHARGE.png new file mode 100644 index 000000000..cfd363fd3 Binary files /dev/null and b/src/images/single-assets/CHARGE.png differ diff --git a/src/images/single-assets/CHARM.svg b/src/images/single-assets/CHARM.svg new file mode 100644 index 000000000..e49f76f7c --- /dev/null +++ b/src/images/single-assets/CHARM.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/single-assets/CHESS.svg b/src/images/single-assets/CHESS.svg new file mode 100644 index 000000000..c032650cd --- /dev/null +++ b/src/images/single-assets/CHESS.svg @@ -0,0 +1 @@ + diff --git a/src/images/single-assets/CLAM.png b/src/images/single-assets/CLAM.png new file mode 100644 index 000000000..b1d333904 Binary files /dev/null and b/src/images/single-assets/CLAM.png differ diff --git a/src/images/single-assets/CLY.png b/src/images/single-assets/CLY.png new file mode 100644 index 000000000..7acb8ccfc Binary files /dev/null and b/src/images/single-assets/CLY.png differ diff --git a/src/images/single-assets/COOK.png b/src/images/single-assets/COOK.png new file mode 100644 index 000000000..984a2e411 Binary files /dev/null and b/src/images/single-assets/COOK.png differ diff --git a/src/images/single-assets/CRA.png b/src/images/single-assets/CRA.png new file mode 100644 index 000000000..568f13f0f Binary files /dev/null and b/src/images/single-assets/CRA.png differ diff --git a/src/images/single-assets/CRAFT.png b/src/images/single-assets/CRAFT.png new file mode 100644 index 000000000..00d2c3c56 Binary files /dev/null and b/src/images/single-assets/CRAFT.png differ diff --git a/src/images/single-assets/CRE8R.png b/src/images/single-assets/CRE8R.png new file mode 100644 index 000000000..f640f7f24 Binary files /dev/null and b/src/images/single-assets/CRE8R.png differ diff --git a/src/images/single-assets/CREAM.svg b/src/images/single-assets/CREAM.svg new file mode 100644 index 000000000..cd5ad2b3e --- /dev/null +++ b/src/images/single-assets/CREAM.svg @@ -0,0 +1 @@ +Asset 2 \ No newline at end of file diff --git a/src/images/single-assets/CRO.svg b/src/images/single-assets/CRO.svg new file mode 100644 index 000000000..4625805cc --- /dev/null +++ b/src/images/single-assets/CRO.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/images/single-assets/CRONA.svg b/src/images/single-assets/CRONA.svg new file mode 100644 index 000000000..0e80e039c --- /dev/null +++ b/src/images/single-assets/CRONA.svg @@ -0,0 +1,27 @@ + + + CronaSwapLogo_drak512 + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/images/single-assets/CRONOS.svg b/src/images/single-assets/CRONOS.svg new file mode 100644 index 000000000..84a39284e --- /dev/null +++ b/src/images/single-assets/CRONOS.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/single-assets/CRUSH.svg b/src/images/single-assets/CRUSH.svg new file mode 100644 index 000000000..32fac9fc0 --- /dev/null +++ b/src/images/single-assets/CRUSH.svg @@ -0,0 +1,18 @@ + + + Slice 1 + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/images/single-assets/CRV.png b/src/images/single-assets/CRV.png new file mode 100644 index 000000000..7d088bd45 Binary files /dev/null and b/src/images/single-assets/CRV.png differ diff --git a/src/images/single-assets/CRYSTL.png b/src/images/single-assets/CRYSTL.png new file mode 100644 index 000000000..5b0b2efb4 Binary files /dev/null and b/src/images/single-assets/CRYSTL.png differ diff --git a/src/images/single-assets/CTK.png b/src/images/single-assets/CTK.png new file mode 100644 index 000000000..3546c370a Binary files /dev/null and b/src/images/single-assets/CTK.png differ diff --git a/src/images/single-assets/CYT.png b/src/images/single-assets/CYT.png new file mode 100644 index 000000000..44b3415dd Binary files /dev/null and b/src/images/single-assets/CYT.png differ diff --git a/src/images/single-assets/CZF.png b/src/images/single-assets/CZF.png new file mode 100644 index 000000000..fb4073c73 Binary files /dev/null and b/src/images/single-assets/CZF.png differ diff --git a/src/images/single-assets/DAI.png b/src/images/single-assets/DAI.png new file mode 100644 index 000000000..836fe7876 Binary files /dev/null and b/src/images/single-assets/DAI.png differ diff --git a/src/images/single-assets/DAI.svg b/src/images/single-assets/DAI.svg new file mode 100644 index 000000000..2ae2e32ff --- /dev/null +++ b/src/images/single-assets/DAI.svg @@ -0,0 +1,13 @@ + + + + + + + + + + diff --git a/src/images/single-assets/DAIe.png b/src/images/single-assets/DAIe.png new file mode 100644 index 000000000..836fe7876 Binary files /dev/null and b/src/images/single-assets/DAIe.png differ diff --git a/src/images/single-assets/DAR.svg b/src/images/single-assets/DAR.svg new file mode 100644 index 000000000..e3a66272e --- /dev/null +++ b/src/images/single-assets/DAR.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/src/images/single-assets/DARK.svg b/src/images/single-assets/DARK.svg new file mode 100644 index 000000000..44931f9cb --- /dev/null +++ b/src/images/single-assets/DARK.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/single-assets/DBY.png b/src/images/single-assets/DBY.png new file mode 100644 index 000000000..c38c07337 Binary files /dev/null and b/src/images/single-assets/DBY.png differ diff --git a/src/images/single-assets/DCAU.png b/src/images/single-assets/DCAU.png new file mode 100644 index 000000000..587903976 Binary files /dev/null and b/src/images/single-assets/DCAU.png differ diff --git a/src/images/single-assets/DEG.png b/src/images/single-assets/DEG.png new file mode 100644 index 000000000..646ce4623 Binary files /dev/null and b/src/images/single-assets/DEG.png differ diff --git a/src/images/single-assets/DEI.png b/src/images/single-assets/DEI.png new file mode 100644 index 000000000..3b81f852b Binary files /dev/null and b/src/images/single-assets/DEI.png differ diff --git a/src/images/single-assets/DELIRIUM.png b/src/images/single-assets/DELIRIUM.png new file mode 100644 index 000000000..33a44cb8b Binary files /dev/null and b/src/images/single-assets/DELIRIUM.png differ diff --git a/src/images/single-assets/DEP.png b/src/images/single-assets/DEP.png new file mode 100644 index 000000000..ad2818281 Binary files /dev/null and b/src/images/single-assets/DEP.png differ diff --git a/src/images/single-assets/DEUS.png b/src/images/single-assets/DEUS.png new file mode 100644 index 000000000..2e40bdd1c Binary files /dev/null and b/src/images/single-assets/DEUS.png differ diff --git a/src/images/single-assets/DFYN.png b/src/images/single-assets/DFYN.png new file mode 100644 index 000000000..11b283779 Binary files /dev/null and b/src/images/single-assets/DFYN.png differ diff --git a/src/images/single-assets/DG.png b/src/images/single-assets/DG.png new file mode 100644 index 000000000..83fde1426 Binary files /dev/null and b/src/images/single-assets/DG.png differ diff --git a/src/images/single-assets/DIBS.png b/src/images/single-assets/DIBS.png new file mode 100644 index 000000000..dbdbb1b97 Binary files /dev/null and b/src/images/single-assets/DIBS.png differ diff --git a/src/images/single-assets/DINO.png b/src/images/single-assets/DINO.png new file mode 100644 index 000000000..48412efdc Binary files /dev/null and b/src/images/single-assets/DINO.png differ diff --git a/src/images/single-assets/DIS.svg b/src/images/single-assets/DIS.svg new file mode 100644 index 000000000..75729637c --- /dev/null +++ b/src/images/single-assets/DIS.svg @@ -0,0 +1 @@ + diff --git a/src/images/single-assets/DKT.png b/src/images/single-assets/DKT.png new file mode 100644 index 000000000..fd9a2680e Binary files /dev/null and b/src/images/single-assets/DKT.png differ diff --git a/src/images/single-assets/DOGE.svg b/src/images/single-assets/DOGE.svg new file mode 100644 index 000000000..c435731dc --- /dev/null +++ b/src/images/single-assets/DOGE.svg @@ -0,0 +1 @@ +Dogecoin (DOGE) \ No newline at end of file diff --git a/src/images/single-assets/DOLA.png b/src/images/single-assets/DOLA.png new file mode 100644 index 000000000..441c079d7 Binary files /dev/null and b/src/images/single-assets/DOLA.png differ diff --git a/src/images/single-assets/DOMI.png b/src/images/single-assets/DOMI.png new file mode 100644 index 000000000..1026c9627 Binary files /dev/null and b/src/images/single-assets/DOMI.png differ diff --git a/src/images/single-assets/DOT.png b/src/images/single-assets/DOT.png new file mode 100644 index 000000000..672b9192a Binary files /dev/null and b/src/images/single-assets/DOT.png differ diff --git a/src/images/single-assets/DPI.png b/src/images/single-assets/DPI.png new file mode 100644 index 000000000..82ab2b93d Binary files /dev/null and b/src/images/single-assets/DPI.png differ diff --git a/src/images/single-assets/DPT.png b/src/images/single-assets/DPT.png new file mode 100644 index 000000000..40440bdd7 Binary files /dev/null and b/src/images/single-assets/DPT.png differ diff --git a/src/images/single-assets/DRUGS.png b/src/images/single-assets/DRUGS.png new file mode 100644 index 000000000..9015f10ce Binary files /dev/null and b/src/images/single-assets/DRUGS.png differ diff --git a/src/images/single-assets/DSHARE.png b/src/images/single-assets/DSHARE.png new file mode 100644 index 000000000..bb6a7018a Binary files /dev/null and b/src/images/single-assets/DSHARE.png differ diff --git a/src/images/single-assets/DUET.svg b/src/images/single-assets/DUET.svg new file mode 100644 index 000000000..428e7eb7c --- /dev/null +++ b/src/images/single-assets/DUET.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/images/single-assets/DVI.svg b/src/images/single-assets/DVI.svg new file mode 100644 index 000000000..effb5f1e2 --- /dev/null +++ b/src/images/single-assets/DVI.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/images/single-assets/ECD.png b/src/images/single-assets/ECD.png new file mode 100644 index 000000000..cde78a5b7 Binary files /dev/null and b/src/images/single-assets/ECD.png differ diff --git a/src/images/single-assets/EGG.png b/src/images/single-assets/EGG.png new file mode 100644 index 000000000..ea4935014 Binary files /dev/null and b/src/images/single-assets/EGG.png differ diff --git a/src/images/single-assets/ELK.png b/src/images/single-assets/ELK.png new file mode 100644 index 000000000..9fd9b015e Binary files /dev/null and b/src/images/single-assets/ELK.png differ diff --git a/src/images/single-assets/ELON.png b/src/images/single-assets/ELON.png new file mode 100644 index 000000000..12aa55006 Binary files /dev/null and b/src/images/single-assets/ELON.png differ diff --git a/src/images/single-assets/EMERALD.png b/src/images/single-assets/EMERALD.png new file mode 100644 index 000000000..f51b5d7bd Binary files /dev/null and b/src/images/single-assets/EMERALD.png differ diff --git a/src/images/single-assets/EMP.png b/src/images/single-assets/EMP.png new file mode 100644 index 000000000..a5121b7a4 Binary files /dev/null and b/src/images/single-assets/EMP.png differ diff --git a/src/images/single-assets/EPS.png b/src/images/single-assets/EPS.png new file mode 100644 index 000000000..a67ffc727 Binary files /dev/null and b/src/images/single-assets/EPS.png differ diff --git a/src/images/single-assets/ERA.svg b/src/images/single-assets/ERA.svg new file mode 100644 index 000000000..1d92204a5 --- /dev/null +++ b/src/images/single-assets/ERA.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/images/single-assets/ERTHA.png b/src/images/single-assets/ERTHA.png new file mode 100644 index 000000000..8fae3e7e2 Binary files /dev/null and b/src/images/single-assets/ERTHA.png differ diff --git a/src/images/single-assets/ESHARE.png b/src/images/single-assets/ESHARE.png new file mode 100644 index 000000000..3fba2cc81 Binary files /dev/null and b/src/images/single-assets/ESHARE.png differ diff --git a/src/images/single-assets/EST.png b/src/images/single-assets/EST.png new file mode 100644 index 000000000..8503bd770 Binary files /dev/null and b/src/images/single-assets/EST.png differ diff --git a/src/images/single-assets/ETERNAL.png b/src/images/single-assets/ETERNAL.png new file mode 100644 index 000000000..0ebc9c0bf Binary files /dev/null and b/src/images/single-assets/ETERNAL.png differ diff --git a/src/images/single-assets/ETH.svg b/src/images/single-assets/ETH.svg new file mode 100644 index 000000000..8ffed0a19 --- /dev/null +++ b/src/images/single-assets/ETH.svg @@ -0,0 +1,7 @@ + diff --git a/src/images/single-assets/ETH2x.png b/src/images/single-assets/ETH2x.png new file mode 100644 index 000000000..e363253fa Binary files /dev/null and b/src/images/single-assets/ETH2x.png differ diff --git a/src/images/single-assets/ETHs.svg b/src/images/single-assets/ETHs.svg new file mode 100644 index 000000000..8ffed0a19 --- /dev/null +++ b/src/images/single-assets/ETHs.svg @@ -0,0 +1,7 @@ + diff --git a/src/images/single-assets/EURt.png b/src/images/single-assets/EURt.png new file mode 100644 index 000000000..ad7591b7e Binary files /dev/null and b/src/images/single-assets/EURt.png differ diff --git a/src/images/single-assets/EXP.svg b/src/images/single-assets/EXP.svg new file mode 100644 index 000000000..f2c095296 --- /dev/null +++ b/src/images/single-assets/EXP.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/images/single-assets/EZ.png b/src/images/single-assets/EZ.png new file mode 100644 index 000000000..b6682818f Binary files /dev/null and b/src/images/single-assets/EZ.png differ diff --git a/src/images/single-assets/FANTOM.svg b/src/images/single-assets/FANTOM.svg new file mode 100644 index 000000000..f11b464eb --- /dev/null +++ b/src/images/single-assets/FANTOM.svg @@ -0,0 +1,10 @@ + + + Fantom circle@2x + + + + + + + diff --git a/src/images/single-assets/FET.png b/src/images/single-assets/FET.png new file mode 100644 index 000000000..df6f4eb84 Binary files /dev/null and b/src/images/single-assets/FET.png differ diff --git a/src/images/single-assets/FFF.png b/src/images/single-assets/FFF.png new file mode 100644 index 000000000..c69f77921 Binary files /dev/null and b/src/images/single-assets/FFF.png differ diff --git a/src/images/single-assets/FIEF.png b/src/images/single-assets/FIEF.png new file mode 100644 index 000000000..dfc43b104 Binary files /dev/null and b/src/images/single-assets/FIEF.png differ diff --git a/src/images/single-assets/FIL.svg b/src/images/single-assets/FIL.svg new file mode 100644 index 000000000..dbe53d5b6 --- /dev/null +++ b/src/images/single-assets/FIL.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + diff --git a/src/images/single-assets/FINN.png b/src/images/single-assets/FINN.png new file mode 100644 index 000000000..d2e2c3975 Binary files /dev/null and b/src/images/single-assets/FINN.png differ diff --git a/src/images/single-assets/FIRE.png b/src/images/single-assets/FIRE.png new file mode 100644 index 000000000..b8ea000b0 Binary files /dev/null and b/src/images/single-assets/FIRE.png differ diff --git a/src/images/single-assets/FISH.svg b/src/images/single-assets/FISH.svg new file mode 100644 index 000000000..49c52e7b4 --- /dev/null +++ b/src/images/single-assets/FISH.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/single-assets/FITFI.png b/src/images/single-assets/FITFI.png new file mode 100644 index 000000000..e77b8ed31 Binary files /dev/null and b/src/images/single-assets/FITFI.png differ diff --git a/src/images/single-assets/FLARE.png b/src/images/single-assets/FLARE.png new file mode 100644 index 000000000..2ca1fcd8e Binary files /dev/null and b/src/images/single-assets/FLARE.png differ diff --git a/src/images/single-assets/FLX.png b/src/images/single-assets/FLX.png new file mode 100644 index 000000000..a87cb46b6 Binary files /dev/null and b/src/images/single-assets/FLX.png differ diff --git a/src/images/single-assets/FLY.png b/src/images/single-assets/FLY.png new file mode 100644 index 000000000..c0a9992f2 Binary files /dev/null and b/src/images/single-assets/FLY.png differ diff --git a/src/images/single-assets/FODL.png b/src/images/single-assets/FODL.png new file mode 100644 index 000000000..0bf254ddf Binary files /dev/null and b/src/images/single-assets/FODL.png differ diff --git a/src/images/single-assets/FONT.png b/src/images/single-assets/FONT.png new file mode 100644 index 000000000..debf72b6b Binary files /dev/null and b/src/images/single-assets/FONT.png differ diff --git a/src/images/single-assets/FOO.png b/src/images/single-assets/FOO.png new file mode 100644 index 000000000..0cba9c463 Binary files /dev/null and b/src/images/single-assets/FOO.png differ diff --git a/src/images/single-assets/FORM.svg b/src/images/single-assets/FORM.svg new file mode 100644 index 000000000..d0f34ae56 --- /dev/null +++ b/src/images/single-assets/FORM.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/single-assets/FOX.png b/src/images/single-assets/FOX.png new file mode 100644 index 000000000..2bb2f2bc2 Binary files /dev/null and b/src/images/single-assets/FOX.png differ diff --git a/src/images/single-assets/FRAX.svg b/src/images/single-assets/FRAX.svg new file mode 100644 index 000000000..9f8e2f7b0 --- /dev/null +++ b/src/images/single-assets/FRAX.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + diff --git a/src/images/single-assets/FRM.png b/src/images/single-assets/FRM.png new file mode 100644 index 000000000..16667a7d1 Binary files /dev/null and b/src/images/single-assets/FRM.png differ diff --git a/src/images/single-assets/FROYO.png b/src/images/single-assets/FROYO.png new file mode 100644 index 000000000..7a43bfcd3 Binary files /dev/null and b/src/images/single-assets/FROYO.png differ diff --git a/src/images/single-assets/FRUIT.png b/src/images/single-assets/FRUIT.png new file mode 100644 index 000000000..56ee76b51 Binary files /dev/null and b/src/images/single-assets/FRUIT.png differ diff --git a/src/images/single-assets/FS.png b/src/images/single-assets/FS.png new file mode 100644 index 000000000..3fced5f00 Binary files /dev/null and b/src/images/single-assets/FS.png differ diff --git a/src/images/single-assets/FTM.png b/src/images/single-assets/FTM.png new file mode 100644 index 000000000..3c5046111 Binary files /dev/null and b/src/images/single-assets/FTM.png differ diff --git a/src/images/single-assets/FTML.svg b/src/images/single-assets/FTML.svg new file mode 100644 index 000000000..3395d2c91 --- /dev/null +++ b/src/images/single-assets/FTML.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/single-assets/FUSD.png b/src/images/single-assets/FUSD.png new file mode 100644 index 000000000..6ff9e8c3c Binary files /dev/null and b/src/images/single-assets/FUSD.png differ diff --git a/src/images/single-assets/FUSE Network.svg b/src/images/single-assets/FUSE Network.svg new file mode 100644 index 000000000..054cde3b6 --- /dev/null +++ b/src/images/single-assets/FUSE Network.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/single-assets/FUSE.svg b/src/images/single-assets/FUSE.svg new file mode 100644 index 000000000..f3e5ffde9 --- /dev/null +++ b/src/images/single-assets/FUSE.svg @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/single-assets/FXS.png b/src/images/single-assets/FXS.png new file mode 100644 index 000000000..80196436f Binary files /dev/null and b/src/images/single-assets/FXS.png differ diff --git a/src/images/single-assets/G.png b/src/images/single-assets/G.png new file mode 100644 index 000000000..9cbb45737 Binary files /dev/null and b/src/images/single-assets/G.png differ diff --git a/src/images/single-assets/GAL.png b/src/images/single-assets/GAL.png new file mode 100644 index 000000000..cd0c8312b Binary files /dev/null and b/src/images/single-assets/GAL.png differ diff --git a/src/images/single-assets/GEIST.svg b/src/images/single-assets/GEIST.svg new file mode 100644 index 000000000..cc73ea002 --- /dev/null +++ b/src/images/single-assets/GEIST.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/single-assets/GEL.png b/src/images/single-assets/GEL.png new file mode 100644 index 000000000..708a09fd3 Binary files /dev/null and b/src/images/single-assets/GEL.png differ diff --git a/src/images/single-assets/GENESIS.png b/src/images/single-assets/GENESIS.png new file mode 100644 index 000000000..5524f3330 Binary files /dev/null and b/src/images/single-assets/GENESIS.png differ diff --git a/src/images/single-assets/GHST.png b/src/images/single-assets/GHST.png new file mode 100644 index 000000000..a0cda928a Binary files /dev/null and b/src/images/single-assets/GHST.png differ diff --git a/src/images/single-assets/GLINT.png b/src/images/single-assets/GLINT.png new file mode 100644 index 000000000..ede9060d9 Binary files /dev/null and b/src/images/single-assets/GLINT.png differ diff --git a/src/images/single-assets/GLMR.png b/src/images/single-assets/GLMR.png new file mode 100644 index 000000000..03a4d2a04 Binary files /dev/null and b/src/images/single-assets/GLMR.png differ diff --git a/src/images/single-assets/GM.png b/src/images/single-assets/GM.png new file mode 100644 index 000000000..c35ac6cf7 Binary files /dev/null and b/src/images/single-assets/GM.png differ diff --git a/src/images/single-assets/GMT.svg b/src/images/single-assets/GMT.svg new file mode 100644 index 000000000..137f6963f --- /dev/null +++ b/src/images/single-assets/GMT.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/images/single-assets/GMX.png b/src/images/single-assets/GMX.png new file mode 100644 index 000000000..afbea4785 Binary files /dev/null and b/src/images/single-assets/GMX.png differ diff --git a/src/images/single-assets/GNS.png b/src/images/single-assets/GNS.png new file mode 100644 index 000000000..11385303b Binary files /dev/null and b/src/images/single-assets/GNS.png differ diff --git a/src/images/single-assets/GNT.png b/src/images/single-assets/GNT.png new file mode 100644 index 000000000..e39789b7d Binary files /dev/null and b/src/images/single-assets/GNT.png differ diff --git a/src/images/single-assets/GOLDCOIN.svg b/src/images/single-assets/GOLDCOIN.svg new file mode 100644 index 000000000..f1a286a8b --- /dev/null +++ b/src/images/single-assets/GOLDCOIN.svg @@ -0,0 +1,135 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/single-assets/GRAPE.png b/src/images/single-assets/GRAPE.png new file mode 100644 index 000000000..9c9730c16 Binary files /dev/null and b/src/images/single-assets/GRAPE.png differ diff --git a/src/images/single-assets/GUARD.svg b/src/images/single-assets/GUARD.svg new file mode 100644 index 000000000..99ad4db09 --- /dev/null +++ b/src/images/single-assets/GUARD.svg @@ -0,0 +1,20 @@ + + + 切片 + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/images/single-assets/HAI.png b/src/images/single-assets/HAI.png new file mode 100644 index 000000000..724e974c4 Binary files /dev/null and b/src/images/single-assets/HAI.png differ diff --git a/src/images/single-assets/HARD.png b/src/images/single-assets/HARD.png new file mode 100644 index 000000000..11d798c15 Binary files /dev/null and b/src/images/single-assets/HARD.png differ diff --git a/src/images/single-assets/HARMONY.svg b/src/images/single-assets/HARMONY.svg new file mode 100644 index 000000000..cbb5f3b15 --- /dev/null +++ b/src/images/single-assets/HARMONY.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/single-assets/HBAR.png b/src/images/single-assets/HBAR.png new file mode 100644 index 000000000..2c55b3c62 Binary files /dev/null and b/src/images/single-assets/HBAR.png differ diff --git a/src/images/single-assets/HBTC.png b/src/images/single-assets/HBTC.png new file mode 100644 index 000000000..ea2f52e8b Binary files /dev/null and b/src/images/single-assets/HBTC.png differ diff --git a/src/images/single-assets/HEC.png b/src/images/single-assets/HEC.png new file mode 100644 index 000000000..71c506366 Binary files /dev/null and b/src/images/single-assets/HEC.png differ diff --git a/src/images/single-assets/HECO.svg b/src/images/single-assets/HECO.svg new file mode 100644 index 000000000..3aeaa9cee --- /dev/null +++ b/src/images/single-assets/HECO.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/single-assets/HERO.png b/src/images/single-assets/HERO.png new file mode 100644 index 000000000..69ff4781a Binary files /dev/null and b/src/images/single-assets/HERO.png differ diff --git a/src/images/single-assets/HIGH.png b/src/images/single-assets/HIGH.png new file mode 100644 index 000000000..61cc69fc5 Binary files /dev/null and b/src/images/single-assets/HIGH.png differ diff --git a/src/images/single-assets/HND.png b/src/images/single-assets/HND.png new file mode 100644 index 000000000..6aada3b05 Binary files /dev/null and b/src/images/single-assets/HND.png differ diff --git a/src/images/single-assets/HONEY.png b/src/images/single-assets/HONEY.png new file mode 100644 index 000000000..97da57182 Binary files /dev/null and b/src/images/single-assets/HONEY.png differ diff --git a/src/images/single-assets/HONOR.png b/src/images/single-assets/HONOR.png new file mode 100644 index 000000000..69ff4781a Binary files /dev/null and b/src/images/single-assets/HONOR.png differ diff --git a/src/images/single-assets/HOTCROSS.svg b/src/images/single-assets/HOTCROSS.svg new file mode 100644 index 000000000..48a821056 --- /dev/null +++ b/src/images/single-assets/HOTCROSS.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/single-assets/HPS.png b/src/images/single-assets/HPS.png new file mode 100644 index 000000000..90fc4d6ac Binary files /dev/null and b/src/images/single-assets/HPS.png differ diff --git a/src/images/single-assets/HT.png b/src/images/single-assets/HT.png new file mode 100644 index 000000000..bbc6f887f Binary files /dev/null and b/src/images/single-assets/HT.png differ diff --git a/src/images/single-assets/HTB.svg b/src/images/single-assets/HTB.svg new file mode 100644 index 000000000..0db65d25f --- /dev/null +++ b/src/images/single-assets/HTB.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/single-assets/HUSD.png b/src/images/single-assets/HUSD.png new file mode 100644 index 000000000..a3f02bc67 Binary files /dev/null and b/src/images/single-assets/HUSD.png differ diff --git a/src/images/single-assets/ICA.svg b/src/images/single-assets/ICA.svg new file mode 100644 index 000000000..890da6ca9 --- /dev/null +++ b/src/images/single-assets/ICA.svg @@ -0,0 +1,14 @@ + + + + + + + diff --git a/src/images/single-assets/ICE.png b/src/images/single-assets/ICE.png new file mode 100644 index 000000000..8a599ef61 Binary files /dev/null and b/src/images/single-assets/ICE.png differ diff --git a/src/images/single-assets/IDIA.svg b/src/images/single-assets/IDIA.svg new file mode 100644 index 000000000..d88c8a8c1 --- /dev/null +++ b/src/images/single-assets/IDIA.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/single-assets/IF.svg b/src/images/single-assets/IF.svg new file mode 100644 index 000000000..39bb82686 --- /dev/null +++ b/src/images/single-assets/IF.svg @@ -0,0 +1 @@ + diff --git a/src/images/single-assets/IME.png b/src/images/single-assets/IME.png new file mode 100644 index 000000000..a36d611b5 Binary files /dev/null and b/src/images/single-assets/IME.png differ diff --git a/src/images/single-assets/INCH.png b/src/images/single-assets/INCH.png new file mode 100644 index 000000000..b014a4cb5 Binary files /dev/null and b/src/images/single-assets/INCH.png differ diff --git a/src/images/single-assets/INJ.png b/src/images/single-assets/INJ.png new file mode 100644 index 000000000..4cee4f691 Binary files /dev/null and b/src/images/single-assets/INJ.png differ diff --git a/src/images/single-assets/INSUR.png b/src/images/single-assets/INSUR.png new file mode 100644 index 000000000..7a46048f8 Binary files /dev/null and b/src/images/single-assets/INSUR.png differ diff --git a/src/images/single-assets/INV.png b/src/images/single-assets/INV.png new file mode 100644 index 000000000..260756baa Binary files /dev/null and b/src/images/single-assets/INV.png differ diff --git a/src/images/single-assets/IRON.png b/src/images/single-assets/IRON.png new file mode 100644 index 000000000..18bff0097 Binary files /dev/null and b/src/images/single-assets/IRON.png differ diff --git a/src/images/single-assets/IXT.png b/src/images/single-assets/IXT.png new file mode 100644 index 000000000..ea90d08fc Binary files /dev/null and b/src/images/single-assets/IXT.png differ diff --git a/src/images/single-assets/JETS.png b/src/images/single-assets/JETS.png new file mode 100644 index 000000000..c1d9ae850 Binary files /dev/null and b/src/images/single-assets/JETS.png differ diff --git a/src/images/single-assets/JEWEL.png b/src/images/single-assets/JEWEL.png new file mode 100644 index 000000000..a82c7e37b Binary files /dev/null and b/src/images/single-assets/JEWEL.png differ diff --git a/src/images/single-assets/JOE.png b/src/images/single-assets/JOE.png new file mode 100644 index 000000000..2c53971fe Binary files /dev/null and b/src/images/single-assets/JOE.png differ diff --git a/src/images/single-assets/JPYC.png b/src/images/single-assets/JPYC.png new file mode 100644 index 000000000..010a69bc6 Binary files /dev/null and b/src/images/single-assets/JPYC.png differ diff --git a/src/images/single-assets/JRT.png b/src/images/single-assets/JRT.png new file mode 100644 index 000000000..fe1bf669c Binary files /dev/null and b/src/images/single-assets/JRT.png differ diff --git a/src/images/single-assets/JULD.png b/src/images/single-assets/JULD.png new file mode 100644 index 000000000..3ab373d5d Binary files /dev/null and b/src/images/single-assets/JULD.png differ diff --git a/src/images/single-assets/JUST.png b/src/images/single-assets/JUST.png new file mode 100644 index 000000000..6b187dd89 Binary files /dev/null and b/src/images/single-assets/JUST.png differ diff --git a/src/images/single-assets/KAE.png b/src/images/single-assets/KAE.png new file mode 100644 index 000000000..dfd212110 Binary files /dev/null and b/src/images/single-assets/KAE.png differ diff --git a/src/images/single-assets/KART.png b/src/images/single-assets/KART.png new file mode 100644 index 000000000..6bdd9d3db Binary files /dev/null and b/src/images/single-assets/KART.png differ diff --git a/src/images/single-assets/KEBAB.png b/src/images/single-assets/KEBAB.png new file mode 100644 index 000000000..ee1342803 Binary files /dev/null and b/src/images/single-assets/KEBAB.png differ diff --git a/src/images/single-assets/KEK.png b/src/images/single-assets/KEK.png new file mode 100644 index 000000000..8604e630a Binary files /dev/null and b/src/images/single-assets/KEK.png differ diff --git a/src/images/single-assets/KIRO.png b/src/images/single-assets/KIRO.png new file mode 100644 index 000000000..36128d8f2 Binary files /dev/null and b/src/images/single-assets/KIRO.png differ diff --git a/src/images/single-assets/KLIMA.png b/src/images/single-assets/KLIMA.png new file mode 100644 index 000000000..9d2fff260 Binary files /dev/null and b/src/images/single-assets/KLIMA.png differ diff --git a/src/images/single-assets/KLO.png b/src/images/single-assets/KLO.png new file mode 100644 index 000000000..97c002946 Binary files /dev/null and b/src/images/single-assets/KLO.png differ diff --git a/src/images/single-assets/KRW.png b/src/images/single-assets/KRW.png new file mode 100644 index 000000000..3ef2159bf Binary files /dev/null and b/src/images/single-assets/KRW.png differ diff --git a/src/images/single-assets/LAC.svg b/src/images/single-assets/LAC.svg new file mode 100644 index 000000000..74a7b2f90 --- /dev/null +++ b/src/images/single-assets/LAC.svg @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/single-assets/LAMBDA.svg b/src/images/single-assets/LAMBDA.svg new file mode 100644 index 000000000..fb7cd1632 --- /dev/null +++ b/src/images/single-assets/LAMBDA.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/single-assets/LAND.svg b/src/images/single-assets/LAND.svg new file mode 100644 index 000000000..0eda8998a --- /dev/null +++ b/src/images/single-assets/LAND.svg @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/single-assets/LAZIO.png b/src/images/single-assets/LAZIO.png new file mode 100644 index 000000000..d5d254785 Binary files /dev/null and b/src/images/single-assets/LAZIO.png differ diff --git a/src/images/single-assets/LINEAR.svg b/src/images/single-assets/LINEAR.svg new file mode 100644 index 000000000..9d57ac876 --- /dev/null +++ b/src/images/single-assets/LINEAR.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/single-assets/LINK.png b/src/images/single-assets/LINK.png new file mode 100644 index 000000000..4f0c7bd0c Binary files /dev/null and b/src/images/single-assets/LINK.png differ diff --git a/src/images/single-assets/LINKe.png b/src/images/single-assets/LINKe.png new file mode 100644 index 000000000..4f0c7bd0c Binary files /dev/null and b/src/images/single-assets/LINKe.png differ diff --git a/src/images/single-assets/LIQ.png b/src/images/single-assets/LIQ.png new file mode 100644 index 000000000..16c4edc1c Binary files /dev/null and b/src/images/single-assets/LIQ.png differ diff --git a/src/images/single-assets/LITHIUM.svg b/src/images/single-assets/LITHIUM.svg new file mode 100644 index 000000000..e25eac00a --- /dev/null +++ b/src/images/single-assets/LITHIUM.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/single-assets/LONG.png b/src/images/single-assets/LONG.png new file mode 100644 index 000000000..89a6505c0 Binary files /dev/null and b/src/images/single-assets/LONG.png differ diff --git a/src/images/single-assets/LOOT.png b/src/images/single-assets/LOOT.png new file mode 100644 index 000000000..b1fae9747 Binary files /dev/null and b/src/images/single-assets/LOOT.png differ diff --git a/src/images/single-assets/LOST.png b/src/images/single-assets/LOST.png new file mode 100644 index 000000000..79cba897c Binary files /dev/null and b/src/images/single-assets/LOST.png differ diff --git a/src/images/single-assets/LTC.svg b/src/images/single-assets/LTC.svg new file mode 100644 index 000000000..13e76a40e --- /dev/null +++ b/src/images/single-assets/LTC.svg @@ -0,0 +1 @@ +litecoin-ltc-logo \ No newline at end of file diff --git a/src/images/single-assets/LUNA.png b/src/images/single-assets/LUNA.png new file mode 100644 index 000000000..fb97eb0fd Binary files /dev/null and b/src/images/single-assets/LUNA.png differ diff --git a/src/images/single-assets/MAGIC.png b/src/images/single-assets/MAGIC.png new file mode 100644 index 000000000..d04c9805f Binary files /dev/null and b/src/images/single-assets/MAGIC.png differ diff --git a/src/images/single-assets/MAI.png b/src/images/single-assets/MAI.png new file mode 100644 index 000000000..d155237fc Binary files /dev/null and b/src/images/single-assets/MAI.png differ diff --git a/src/images/single-assets/MAI_Rose.png b/src/images/single-assets/MAI_Rose.png new file mode 100644 index 000000000..317456bbe Binary files /dev/null and b/src/images/single-assets/MAI_Rose.png differ diff --git a/src/images/single-assets/MANA.png b/src/images/single-assets/MANA.png new file mode 100644 index 000000000..ad9d7b1b1 Binary files /dev/null and b/src/images/single-assets/MANA.png differ diff --git a/src/images/single-assets/MARSH.png b/src/images/single-assets/MARSH.png new file mode 100644 index 000000000..a2f98acfb Binary files /dev/null and b/src/images/single-assets/MARSH.png differ diff --git a/src/images/single-assets/MASK.svg b/src/images/single-assets/MASK.svg new file mode 100644 index 000000000..3d2e4aa32 --- /dev/null +++ b/src/images/single-assets/MASK.svg @@ -0,0 +1 @@ + diff --git a/src/images/single-assets/MATIC.svg b/src/images/single-assets/MATIC.svg new file mode 100644 index 000000000..ea851052c --- /dev/null +++ b/src/images/single-assets/MATIC.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/images/single-assets/MCB.png b/src/images/single-assets/MCB.png new file mode 100644 index 000000000..1b262da4a Binary files /dev/null and b/src/images/single-assets/MCB.png differ diff --git a/src/images/single-assets/MCRN.svg b/src/images/single-assets/MCRN.svg new file mode 100644 index 000000000..fbe4fb3e2 --- /dev/null +++ b/src/images/single-assets/MCRN.svg @@ -0,0 +1 @@ + diff --git a/src/images/single-assets/MDX.png b/src/images/single-assets/MDX.png new file mode 100644 index 000000000..0927585a7 Binary files /dev/null and b/src/images/single-assets/MDX.png differ diff --git a/src/images/single-assets/MEAD.png b/src/images/single-assets/MEAD.png new file mode 100644 index 000000000..ca7486c5c Binary files /dev/null and b/src/images/single-assets/MEAD.png differ diff --git a/src/images/single-assets/MECHA.png b/src/images/single-assets/MECHA.png new file mode 100644 index 000000000..f652fa2b0 Binary files /dev/null and b/src/images/single-assets/MECHA.png differ diff --git a/src/images/single-assets/MELT.png b/src/images/single-assets/MELT.png new file mode 100644 index 000000000..cb12c282d Binary files /dev/null and b/src/images/single-assets/MELT.png differ diff --git a/src/images/single-assets/MERL.svg b/src/images/single-assets/MERL.svg new file mode 100644 index 000000000..b26c82a81 --- /dev/null +++ b/src/images/single-assets/MERL.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/images/single-assets/METAHERO.svg b/src/images/single-assets/METAHERO.svg new file mode 100644 index 000000000..e090795f5 --- /dev/null +++ b/src/images/single-assets/METAHERO.svg @@ -0,0 +1 @@ + diff --git a/src/images/single-assets/METIS.svg b/src/images/single-assets/METIS.svg new file mode 100644 index 000000000..60e39d9ff --- /dev/null +++ b/src/images/single-assets/METIS.svg @@ -0,0 +1,42 @@ + + + + + + + + diff --git a/src/images/single-assets/MIDAS.png b/src/images/single-assets/MIDAS.png new file mode 100644 index 000000000..db4a98d97 Binary files /dev/null and b/src/images/single-assets/MIDAS.png differ diff --git a/src/images/single-assets/MILK.png b/src/images/single-assets/MILK.png new file mode 100644 index 000000000..7ed62778f Binary files /dev/null and b/src/images/single-assets/MILK.png differ diff --git a/src/images/single-assets/MIM.png b/src/images/single-assets/MIM.png new file mode 100644 index 000000000..a22e5d4b6 Binary files /dev/null and b/src/images/single-assets/MIM.png differ diff --git a/src/images/single-assets/MOBI.svg b/src/images/single-assets/MOBI.svg new file mode 100644 index 000000000..435760c5f --- /dev/null +++ b/src/images/single-assets/MOBI.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/images/single-assets/MONEY.png b/src/images/single-assets/MONEY.png new file mode 100644 index 000000000..9b12a0959 Binary files /dev/null and b/src/images/single-assets/MONEY.png differ diff --git a/src/images/single-assets/MOON.png b/src/images/single-assets/MOON.png new file mode 100644 index 000000000..664b0056d Binary files /dev/null and b/src/images/single-assets/MOON.png differ diff --git a/src/images/single-assets/MOONBEAM.svg b/src/images/single-assets/MOONBEAM.svg new file mode 100644 index 000000000..698904ab4 --- /dev/null +++ b/src/images/single-assets/MOONBEAM.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/single-assets/MOONRIVER.svg b/src/images/single-assets/MOONRIVER.svg new file mode 100644 index 000000000..00492cd77 --- /dev/null +++ b/src/images/single-assets/MOONRIVER.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/single-assets/MORE.png b/src/images/single-assets/MORE.png new file mode 100644 index 000000000..e6e3f01e0 Binary files /dev/null and b/src/images/single-assets/MORE.png differ diff --git a/src/images/single-assets/MOVR.png b/src/images/single-assets/MOVR.png new file mode 100644 index 000000000..fefc768f0 Binary files /dev/null and b/src/images/single-assets/MOVR.png differ diff --git a/src/images/single-assets/MSC.png b/src/images/single-assets/MSC.png new file mode 100644 index 000000000..3e0620bd7 Binary files /dev/null and b/src/images/single-assets/MSC.png differ diff --git a/src/images/single-assets/MSS.png b/src/images/single-assets/MSS.png new file mode 100644 index 000000000..8c913069a Binary files /dev/null and b/src/images/single-assets/MSS.png differ diff --git a/src/images/single-assets/MST.png b/src/images/single-assets/MST.png new file mode 100644 index 000000000..d768de639 Binary files /dev/null and b/src/images/single-assets/MST.png differ diff --git a/src/images/single-assets/MULTI.png b/src/images/single-assets/MULTI.png new file mode 100644 index 000000000..e75876346 Binary files /dev/null and b/src/images/single-assets/MULTI.png differ diff --git a/src/images/single-assets/MUST.png b/src/images/single-assets/MUST.png new file mode 100644 index 000000000..3a3ed18d3 Binary files /dev/null and b/src/images/single-assets/MUST.png differ diff --git a/src/images/single-assets/MaticX.svg b/src/images/single-assets/MaticX.svg new file mode 100644 index 000000000..896e4ba28 --- /dev/null +++ b/src/images/single-assets/MaticX.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/images/single-assets/NABOX.png b/src/images/single-assets/NABOX.png new file mode 100644 index 000000000..c4c9c4689 Binary files /dev/null and b/src/images/single-assets/NABOX.png differ diff --git a/src/images/single-assets/NAOS.png b/src/images/single-assets/NAOS.png new file mode 100644 index 000000000..9c357b3a1 Binary files /dev/null and b/src/images/single-assets/NAOS.png differ diff --git a/src/images/single-assets/NCASH.png b/src/images/single-assets/NCASH.png new file mode 100644 index 000000000..02b7ec010 Binary files /dev/null and b/src/images/single-assets/NCASH.png differ diff --git a/src/images/single-assets/NEAR.svg b/src/images/single-assets/NEAR.svg new file mode 100644 index 000000000..4000b557f --- /dev/null +++ b/src/images/single-assets/NEAR.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/single-assets/NETT.png b/src/images/single-assets/NETT.png new file mode 100644 index 000000000..add3d1f7f Binary files /dev/null and b/src/images/single-assets/NETT.png differ diff --git a/src/images/single-assets/NEXO.png b/src/images/single-assets/NEXO.png new file mode 100644 index 000000000..1e232a4b3 Binary files /dev/null and b/src/images/single-assets/NEXO.png differ diff --git a/src/images/single-assets/NFT.png b/src/images/single-assets/NFT.png new file mode 100644 index 000000000..ab1a5aa5c Binary files /dev/null and b/src/images/single-assets/NFT.png differ diff --git a/src/images/single-assets/NFTY.png b/src/images/single-assets/NFTY.png new file mode 100644 index 000000000..31ab2f889 Binary files /dev/null and b/src/images/single-assets/NFTY.png differ diff --git a/src/images/single-assets/NUGGET.svg b/src/images/single-assets/NUGGET.svg new file mode 100644 index 000000000..0ef777074 --- /dev/null +++ b/src/images/single-assets/NUGGET.svg @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/single-assets/NUTS.png b/src/images/single-assets/NUTS.png new file mode 100644 index 000000000..1454c815e Binary files /dev/null and b/src/images/single-assets/NUTS.png differ diff --git a/src/images/single-assets/NYA.png b/src/images/single-assets/NYA.png new file mode 100644 index 000000000..a2c15cb7f Binary files /dev/null and b/src/images/single-assets/NYA.png differ diff --git a/src/images/single-assets/NYAC.png b/src/images/single-assets/NYAC.png new file mode 100644 index 000000000..d8048b74b Binary files /dev/null and b/src/images/single-assets/NYAC.png differ diff --git a/src/images/single-assets/NYAS.png b/src/images/single-assets/NYAS.png new file mode 100644 index 000000000..733211608 Binary files /dev/null and b/src/images/single-assets/NYAS.png differ diff --git a/src/images/single-assets/NZDS.png b/src/images/single-assets/NZDS.png new file mode 100644 index 000000000..fc03a406c Binary files /dev/null and b/src/images/single-assets/NZDS.png differ diff --git a/src/images/single-assets/O3.png b/src/images/single-assets/O3.png new file mode 100644 index 000000000..439c6165f Binary files /dev/null and b/src/images/single-assets/O3.png differ diff --git a/src/images/single-assets/OASIS.svg b/src/images/single-assets/OASIS.svg new file mode 100644 index 000000000..cb0c07b47 --- /dev/null +++ b/src/images/single-assets/OASIS.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/single-assets/OCP.png b/src/images/single-assets/OCP.png new file mode 100644 index 000000000..38c5ec35a Binary files /dev/null and b/src/images/single-assets/OCP.png differ diff --git a/src/images/single-assets/ONE.svg b/src/images/single-assets/ONE.svg new file mode 100644 index 000000000..ccc9dac65 --- /dev/null +++ b/src/images/single-assets/ONE.svg @@ -0,0 +1 @@ + diff --git a/src/images/single-assets/ONG.svg b/src/images/single-assets/ONG.svg new file mode 100644 index 000000000..3155301b6 --- /dev/null +++ b/src/images/single-assets/ONG.svg @@ -0,0 +1,15 @@ + + + + + + + + + + diff --git a/src/images/single-assets/ONT.png b/src/images/single-assets/ONT.png new file mode 100644 index 000000000..de8aa3a2e Binary files /dev/null and b/src/images/single-assets/ONT.png differ diff --git a/src/images/single-assets/OOE.svg b/src/images/single-assets/OOE.svg new file mode 100644 index 000000000..eb21905c4 --- /dev/null +++ b/src/images/single-assets/OOE.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/images/single-assets/ORBS.svg b/src/images/single-assets/ORBS.svg new file mode 100644 index 000000000..ed3ea30fc --- /dev/null +++ b/src/images/single-assets/ORBS.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/single-assets/ORKAN.png b/src/images/single-assets/ORKAN.png new file mode 100644 index 000000000..e319b1da1 Binary files /dev/null and b/src/images/single-assets/ORKAN.png differ diff --git a/src/images/single-assets/OXD.png b/src/images/single-assets/OXD.png new file mode 100644 index 000000000..1ea303dab Binary files /dev/null and b/src/images/single-assets/OXD.png differ diff --git a/src/images/single-assets/PACOCA.svg b/src/images/single-assets/PACOCA.svg new file mode 100644 index 000000000..a2bbe4b37 --- /dev/null +++ b/src/images/single-assets/PACOCA.svg @@ -0,0 +1 @@ + diff --git a/src/images/single-assets/PAE.svg b/src/images/single-assets/PAE.svg new file mode 100644 index 000000000..f7c1bfb71 --- /dev/null +++ b/src/images/single-assets/PAE.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/single-assets/PAE_AVAX.svg b/src/images/single-assets/PAE_AVAX.svg new file mode 100644 index 000000000..17ab98121 --- /dev/null +++ b/src/images/single-assets/PAE_AVAX.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/single-assets/PAUTO.png b/src/images/single-assets/PAUTO.png new file mode 100644 index 000000000..eecb378a3 Binary files /dev/null and b/src/images/single-assets/PAUTO.png differ diff --git a/src/images/single-assets/PBNB.png b/src/images/single-assets/PBNB.png new file mode 100644 index 000000000..66eeb30c7 Binary files /dev/null and b/src/images/single-assets/PBNB.png differ diff --git a/src/images/single-assets/PEAR.svg b/src/images/single-assets/PEAR.svg new file mode 100644 index 000000000..6b2a20f46 --- /dev/null +++ b/src/images/single-assets/PEAR.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/single-assets/PEFI.png b/src/images/single-assets/PEFI.png new file mode 100644 index 000000000..0037a5fc6 Binary files /dev/null and b/src/images/single-assets/PEFI.png differ diff --git a/src/images/single-assets/PERA.png b/src/images/single-assets/PERA.png new file mode 100644 index 000000000..01684dec9 Binary files /dev/null and b/src/images/single-assets/PERA.png differ diff --git a/src/images/single-assets/PETS.png b/src/images/single-assets/PETS.png new file mode 100644 index 000000000..6221d8fe2 Binary files /dev/null and b/src/images/single-assets/PETS.png differ diff --git a/src/images/single-assets/PEX.png b/src/images/single-assets/PEX.png new file mode 100644 index 000000000..1b8fdf7e7 Binary files /dev/null and b/src/images/single-assets/PEX.png differ diff --git a/src/images/single-assets/PHA.png b/src/images/single-assets/PHA.png new file mode 100644 index 000000000..2d7da7461 Binary files /dev/null and b/src/images/single-assets/PHA.png differ diff --git a/src/images/single-assets/PILLS.png b/src/images/single-assets/PILLS.png new file mode 100644 index 000000000..83e2f9439 Binary files /dev/null and b/src/images/single-assets/PILLS.png differ diff --git a/src/images/single-assets/PMP.svg b/src/images/single-assets/PMP.svg new file mode 100644 index 000000000..464971747 --- /dev/null +++ b/src/images/single-assets/PMP.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/images/single-assets/PNG.png b/src/images/single-assets/PNG.png new file mode 100644 index 000000000..219d9896a Binary files /dev/null and b/src/images/single-assets/PNG.png differ diff --git a/src/images/single-assets/POLYGON.svg b/src/images/single-assets/POLYGON.svg new file mode 100644 index 000000000..b60c22059 --- /dev/null +++ b/src/images/single-assets/POLYGON.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/single-assets/PORTO.png b/src/images/single-assets/PORTO.png new file mode 100644 index 000000000..22edc010c Binary files /dev/null and b/src/images/single-assets/PORTO.png differ diff --git a/src/images/single-assets/POTS.png b/src/images/single-assets/POTS.png new file mode 100644 index 000000000..020fe12a8 Binary files /dev/null and b/src/images/single-assets/POTS.png differ diff --git a/src/images/single-assets/PSP.png b/src/images/single-assets/PSP.png new file mode 100644 index 000000000..7b8df1f62 Binary files /dev/null and b/src/images/single-assets/PSP.png differ diff --git a/src/images/single-assets/PTP.png b/src/images/single-assets/PTP.png new file mode 100644 index 000000000..fd30d0bd7 Binary files /dev/null and b/src/images/single-assets/PTP.png differ diff --git a/src/images/single-assets/PUP.png b/src/images/single-assets/PUP.png new file mode 100644 index 000000000..28cdbcf70 Binary files /dev/null and b/src/images/single-assets/PUP.png differ diff --git a/src/images/single-assets/PolyDoge.png b/src/images/single-assets/PolyDoge.png new file mode 100644 index 000000000..f4bc40e7a Binary files /dev/null and b/src/images/single-assets/PolyDoge.png differ diff --git a/src/images/single-assets/QBT.svg b/src/images/single-assets/QBT.svg new file mode 100644 index 000000000..2f244665e --- /dev/null +++ b/src/images/single-assets/QBT.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/images/single-assets/QI.png b/src/images/single-assets/QI.png new file mode 100644 index 000000000..d28e3069c Binary files /dev/null and b/src/images/single-assets/QI.png differ diff --git a/src/images/single-assets/QUICK.png b/src/images/single-assets/QUICK.png new file mode 100644 index 000000000..7faf1b4cf Binary files /dev/null and b/src/images/single-assets/QUICK.png differ diff --git a/src/images/single-assets/QUIDD.png b/src/images/single-assets/QUIDD.png new file mode 100644 index 000000000..c46b40569 Binary files /dev/null and b/src/images/single-assets/QUIDD.png differ diff --git a/src/images/single-assets/RABBIT.svg b/src/images/single-assets/RABBIT.svg new file mode 100644 index 000000000..d15ee8e64 --- /dev/null +++ b/src/images/single-assets/RABBIT.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/src/images/single-assets/RACA.svg b/src/images/single-assets/RACA.svg new file mode 100644 index 000000000..b517e77cf --- /dev/null +++ b/src/images/single-assets/RACA.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/images/single-assets/RAMP.png b/src/images/single-assets/RAMP.png new file mode 100644 index 000000000..f86220fbe Binary files /dev/null and b/src/images/single-assets/RAMP.png differ diff --git a/src/images/single-assets/RELAY.png b/src/images/single-assets/RELAY.png new file mode 100644 index 000000000..5aeab2a57 Binary files /dev/null and b/src/images/single-assets/RELAY.png differ diff --git a/src/images/single-assets/REVV.svg b/src/images/single-assets/REVV.svg new file mode 100644 index 000000000..3b07b7d9e --- /dev/null +++ b/src/images/single-assets/REVV.svg @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/single-assets/RIB.png b/src/images/single-assets/RIB.png new file mode 100644 index 000000000..1fbaac06c Binary files /dev/null and b/src/images/single-assets/RIB.png differ diff --git a/src/images/single-assets/ROME.png b/src/images/single-assets/ROME.png new file mode 100644 index 000000000..34daffce1 Binary files /dev/null and b/src/images/single-assets/ROME.png differ diff --git a/src/images/single-assets/ROSE.png b/src/images/single-assets/ROSE.png new file mode 100644 index 000000000..f51b5d7bd Binary files /dev/null and b/src/images/single-assets/ROSE.png differ diff --git a/src/images/single-assets/ROUTE.png b/src/images/single-assets/ROUTE.png new file mode 100644 index 000000000..0b06fe853 Binary files /dev/null and b/src/images/single-assets/ROUTE.png differ diff --git a/src/images/single-assets/RPG.png b/src/images/single-assets/RPG.png new file mode 100644 index 000000000..4e69e8038 Binary files /dev/null and b/src/images/single-assets/RPG.png differ diff --git a/src/images/single-assets/SAGE.png b/src/images/single-assets/SAGE.png new file mode 100644 index 000000000..2b8627806 Binary files /dev/null and b/src/images/single-assets/SAGE.png differ diff --git a/src/images/single-assets/SAND.png b/src/images/single-assets/SAND.png new file mode 100644 index 000000000..dfd7ed7ca Binary files /dev/null and b/src/images/single-assets/SAND.png differ diff --git a/src/images/single-assets/SANTOS.png b/src/images/single-assets/SANTOS.png new file mode 100644 index 000000000..e22beb464 Binary files /dev/null and b/src/images/single-assets/SANTOS.png differ diff --git a/src/images/single-assets/SBDO.png b/src/images/single-assets/SBDO.png new file mode 100644 index 000000000..1051beb3a Binary files /dev/null and b/src/images/single-assets/SBDO.png differ diff --git a/src/images/single-assets/SCREAM.png b/src/images/single-assets/SCREAM.png new file mode 100644 index 000000000..1985cf645 Binary files /dev/null and b/src/images/single-assets/SCREAM.png differ diff --git a/src/images/single-assets/SFP.png b/src/images/single-assets/SFP.png new file mode 100644 index 000000000..d0d396d2c Binary files /dev/null and b/src/images/single-assets/SFP.png differ diff --git a/src/images/single-assets/SFUND.png b/src/images/single-assets/SFUND.png new file mode 100644 index 000000000..eb6116e95 Binary files /dev/null and b/src/images/single-assets/SFUND.png differ diff --git a/src/images/single-assets/SHADE.png b/src/images/single-assets/SHADE.png new file mode 100644 index 000000000..360a61848 Binary files /dev/null and b/src/images/single-assets/SHADE.png differ diff --git a/src/images/single-assets/SHIB.png b/src/images/single-assets/SHIB.png new file mode 100644 index 000000000..e3b86d65a Binary files /dev/null and b/src/images/single-assets/SHIB.png differ diff --git a/src/images/single-assets/SHIBX.png b/src/images/single-assets/SHIBX.png new file mode 100644 index 000000000..c48f0a137 Binary files /dev/null and b/src/images/single-assets/SHIBX.png differ diff --git a/src/images/single-assets/SHRAP.png b/src/images/single-assets/SHRAP.png new file mode 100644 index 000000000..cf88b4598 Binary files /dev/null and b/src/images/single-assets/SHRAP.png differ diff --git a/src/images/single-assets/SING.png b/src/images/single-assets/SING.png new file mode 100644 index 000000000..f461817d6 Binary files /dev/null and b/src/images/single-assets/SING.png differ diff --git a/src/images/single-assets/SISTA.svg b/src/images/single-assets/SISTA.svg new file mode 100644 index 000000000..928bf69f9 --- /dev/null +++ b/src/images/single-assets/SISTA.svg @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/single-assets/SKILL.svg b/src/images/single-assets/SKILL.svg new file mode 100644 index 000000000..2fdb190bf --- /dev/null +++ b/src/images/single-assets/SKILL.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/images/single-assets/SKY.svg b/src/images/single-assets/SKY.svg new file mode 100644 index 000000000..0ad66d49b --- /dev/null +++ b/src/images/single-assets/SKY.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/single-assets/SMART.png b/src/images/single-assets/SMART.png new file mode 100644 index 000000000..11d798c15 Binary files /dev/null and b/src/images/single-assets/SMART.png differ diff --git a/src/images/single-assets/SNX.png b/src/images/single-assets/SNX.png new file mode 100644 index 000000000..8b457de00 Binary files /dev/null and b/src/images/single-assets/SNX.png differ diff --git a/src/images/single-assets/SOAK.png b/src/images/single-assets/SOAK.png new file mode 100644 index 000000000..041a5a5d2 Binary files /dev/null and b/src/images/single-assets/SOAK.png differ diff --git a/src/images/single-assets/SOL.png b/src/images/single-assets/SOL.png new file mode 100644 index 000000000..5d0001f0f Binary files /dev/null and b/src/images/single-assets/SOL.png differ diff --git a/src/images/single-assets/SOLACE.png b/src/images/single-assets/SOLACE.png new file mode 100644 index 000000000..ce6bdeebc Binary files /dev/null and b/src/images/single-assets/SOLACE.png differ diff --git a/src/images/single-assets/SOLAR.png b/src/images/single-assets/SOLAR.png new file mode 100644 index 000000000..47bde678f Binary files /dev/null and b/src/images/single-assets/SOLAR.png differ diff --git a/src/images/single-assets/SOLID.svg b/src/images/single-assets/SOLID.svg new file mode 100644 index 000000000..fd396e0b2 --- /dev/null +++ b/src/images/single-assets/SOLID.svg @@ -0,0 +1,13 @@ + + + + + + + + + + diff --git a/src/images/single-assets/SPADE.png b/src/images/single-assets/SPADE.png new file mode 100644 index 000000000..a12c7ef4b Binary files /dev/null and b/src/images/single-assets/SPADE.png differ diff --git a/src/images/single-assets/SPELL.png b/src/images/single-assets/SPELL.png new file mode 100644 index 000000000..2cbfb5c3a Binary files /dev/null and b/src/images/single-assets/SPELL.png differ diff --git a/src/images/single-assets/SPIRIT.png b/src/images/single-assets/SPIRIT.png new file mode 100644 index 000000000..83e2b331d Binary files /dev/null and b/src/images/single-assets/SPIRIT.png differ diff --git a/src/images/single-assets/SPS.svg b/src/images/single-assets/SPS.svg new file mode 100644 index 000000000..108421ef0 --- /dev/null +++ b/src/images/single-assets/SPS.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/src/images/single-assets/STARS.svg b/src/images/single-assets/STARS.svg new file mode 100644 index 000000000..ed0893797 --- /dev/null +++ b/src/images/single-assets/STARS.svg @@ -0,0 +1,75 @@ + +image/svg+xml diff --git a/src/images/single-assets/START.png b/src/images/single-assets/START.png new file mode 100644 index 000000000..b0ca29750 Binary files /dev/null and b/src/images/single-assets/START.png differ diff --git a/src/images/single-assets/STATIC.png b/src/images/single-assets/STATIC.png new file mode 100644 index 000000000..3f8e4abdf Binary files /dev/null and b/src/images/single-assets/STATIC.png differ diff --git a/src/images/single-assets/STEAK.png b/src/images/single-assets/STEAK.png new file mode 100644 index 000000000..c843aa385 Binary files /dev/null and b/src/images/single-assets/STEAK.png differ diff --git a/src/images/single-assets/STEEL.png b/src/images/single-assets/STEEL.png new file mode 100644 index 000000000..dacc8c02d Binary files /dev/null and b/src/images/single-assets/STEEL.png differ diff --git a/src/images/single-assets/STELLA.png b/src/images/single-assets/STELLA.png new file mode 100644 index 000000000..5982857cd Binary files /dev/null and b/src/images/single-assets/STELLA.png differ diff --git a/src/images/single-assets/STNEAR.png b/src/images/single-assets/STNEAR.png new file mode 100644 index 000000000..9c69ebba6 Binary files /dev/null and b/src/images/single-assets/STNEAR.png differ diff --git a/src/images/single-assets/SUMMIT.png b/src/images/single-assets/SUMMIT.png new file mode 100644 index 000000000..962eec044 Binary files /dev/null and b/src/images/single-assets/SUMMIT.png differ diff --git a/src/images/single-assets/SUSHI.png b/src/images/single-assets/SUSHI.png new file mode 100644 index 000000000..a27ad9f65 Binary files /dev/null and b/src/images/single-assets/SUSHI.png differ diff --git a/src/images/single-assets/SUSHIe.png b/src/images/single-assets/SUSHIe.png new file mode 100644 index 000000000..a27ad9f65 Binary files /dev/null and b/src/images/single-assets/SUSHIe.png differ diff --git a/src/images/single-assets/SWAMP.svg b/src/images/single-assets/SWAMP.svg new file mode 100644 index 000000000..14d4c3d9d --- /dev/null +++ b/src/images/single-assets/SWAMP.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/single-assets/SX.png b/src/images/single-assets/SX.png new file mode 100644 index 000000000..fc9a92a55 Binary files /dev/null and b/src/images/single-assets/SX.png differ diff --git a/src/images/single-assets/SXP.svg b/src/images/single-assets/SXP.svg new file mode 100644 index 000000000..27a498349 --- /dev/null +++ b/src/images/single-assets/SXP.svg @@ -0,0 +1 @@ +Asset 2 \ No newline at end of file diff --git a/src/images/single-assets/SYN.svg b/src/images/single-assets/SYN.svg new file mode 100644 index 000000000..8b3f96ca0 --- /dev/null +++ b/src/images/single-assets/SYN.svg @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/images/single-assets/TAPE.svg b/src/images/single-assets/TAPE.svg new file mode 100644 index 000000000..307446536 --- /dev/null +++ b/src/images/single-assets/TAPE.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/single-assets/TEL.png b/src/images/single-assets/TEL.png new file mode 100644 index 000000000..10149b271 Binary files /dev/null and b/src/images/single-assets/TEL.png differ diff --git a/src/images/single-assets/TENFI.png b/src/images/single-assets/TENFI.png new file mode 100644 index 000000000..8269cfd5b Binary files /dev/null and b/src/images/single-assets/TENFI.png differ diff --git a/src/images/single-assets/TETHYS.svg b/src/images/single-assets/TETHYS.svg new file mode 100644 index 000000000..2defde0ea --- /dev/null +++ b/src/images/single-assets/TETHYS.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/images/single-assets/TETU.svg b/src/images/single-assets/TETU.svg new file mode 100644 index 000000000..95ea3216d --- /dev/null +++ b/src/images/single-assets/TETU.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/images/single-assets/THG.png b/src/images/single-assets/THG.png new file mode 100644 index 000000000..e286976ca Binary files /dev/null and b/src/images/single-assets/THG.png differ diff --git a/src/images/single-assets/TIME.png b/src/images/single-assets/TIME.png new file mode 100644 index 000000000..f9a08559f Binary files /dev/null and b/src/images/single-assets/TIME.png differ diff --git a/src/images/single-assets/TITAN.svg b/src/images/single-assets/TITAN.svg new file mode 100644 index 000000000..bdf070c60 --- /dev/null +++ b/src/images/single-assets/TITAN.svg @@ -0,0 +1 @@ + diff --git a/src/images/single-assets/TLOS.svg b/src/images/single-assets/TLOS.svg new file mode 100644 index 000000000..6008c888c --- /dev/null +++ b/src/images/single-assets/TLOS.svg @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/single-assets/TOMB.png b/src/images/single-assets/TOMB.png new file mode 100644 index 000000000..228e7acee Binary files /dev/null and b/src/images/single-assets/TOMB.png differ diff --git a/src/images/single-assets/TONIC.svg b/src/images/single-assets/TONIC.svg new file mode 100644 index 000000000..b9e516e53 --- /dev/null +++ b/src/images/single-assets/TONIC.svg @@ -0,0 +1,5160 @@ + + + + + + + + + + +]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 +3elJQ3zRKQkRv2WW60OzVd5BQ/zJcvf+8eENdXcVd/PwVCLm4nP118Q1xa9VF4/4myWlEbPOaNGJ +vqsi7uX3kGKq9XDxp4OKmy9cw6JTi5SUq+dGqVdcm+pUYt5ycX2K54iKmOR14mKSnSciKmri3u0n +E+u7zl2ynjxctbuzQ4lXiWuZdJ6IRlzFzWueSjw7nXvkPXroo6ott3IPcU8d2mJa5fpqzx0uKJQN +nMxLuUn6Q4jPPToqYiad4hLinUs0U7Mj+vJZuYjGY4eHZUo7ZHi2qIvnRstcpDpltG7m6ZzQ0pek +e5d0yqh6F+namR4z5j0XsfSk0XxI1kXbHTLeUdUeJEQiVOdRQryq8xLu1UkjWpEZHTKsK3Xl6hcP +Hl5VfZhGXdwl8zli2ebrRw+TMsnwDsnPPaNa4Y8HCxGPZLm0SqcOt5Yot5x7DL3GvVPEX6Zx0dZH +d19KhYuLd0m4WVXHR7RE0jIyxFJ0VT7RqXh0LT211jXE9e9OaV76hHv7qzSu+uzoIhnh2iaeOu7h +aeFW0k8tpiKhj2T9bR393BHrcO+gGaM81NvavcUfOrOb+986a48d0yRmZiH9vkNnsE4ebUbX6Hdb +ej920ChNZuqhMliHTOrjuf2dOc1l4VE0vqVvHXIaNbJDaux5+du1+uDRbpLWtURpTmtn1WRW7u2S +6/xo1HfsDu/YV6/RXPTbSu3OZG6afcoM1lmkQ2fOZP6Nuz5mxoqsa6uXd9bwfNZM7g19WnnKzJVR +0W0e4il7mcu11xaT9tBt3Z4ts7nrsy1L092jZVKTlOyQpllju7l7R6mOD63r3YNlrrm0tbh6avXa +rfxBTc2zZtBaS7abaaycaiWyLU3zcp01U2aZpSfN2P/dWt0XLp06k3mkry2zb+vRM2sztC2h7sk0 +pB8981utI03z2TOWR3u8HjpTi+eVedpjNLfbrVvz/bjSZOXJK9/e7c4Wlp2fuavezfR5jMaKdbUt +Ujy+NJjns2h8eOwO71QatVOXBn2n0Fhec20XF89aGrvnKTS3tKuzyjM6TuP90d3Slp3359Ck6q1v +945OVhqjrXPMNZ2nJf3QGrOiW1u0zXNLYzWKZ6t6vgYT98zn7KOjTrX6IU3b2dO+rVQzpi8LbXVb +eJ+rNHvUk2nSbHW36TRWtcfWFFmZ3pLVzlEi1bkOkk3dFPHWTvOrnbrBg06jlXpyzQ== + + + amLVrWLduUq6HVuTqJi31bOeszRWSmfXoG/0beLZUb1R9c9uSQ3PrV8rPdlk+lCl0Tw7d1NbdLfH +Kk3emKtMT55vz6YJtcfNU0t2tNtJrTrutW6adHCPzBTrhvtjL9SrV+UefdWfevXVOjv6yiusk/2D +X6sfaR2TGbX1qn76PUmmZFVKVrauq7+M0s51wv+QrfBn70EyMp4lO9fVu4dstvfJZkdterp5XKZk +W64jmfF7UyTfz5vm2tSnM1w6X8lQV/F8vPms2d3ae7b6s1kqZfq25ENWmkfLDo+pfp3dvyQ6dqZ0 +++1cmq1r22jGnJTle+8HzxbPfKPiqTPEa2IdPTObtadEOz9p057kuwyPoZ3xJkw0s3rL6jbN/CT7 +qTM98tG3c2h0792pNEPDwjL08dYHzfR6mmdtaa+z+h35GNmVz77oFK/+svPoiixv+qpb6efIUA+V +XVn6Z3WIaz4+M7t8+/foGfpqy4NmrlNlvrm+pD622fZ2/p0t+d7cU2h552derTLbGSaiz8xs8T8/ +O1PKNCSbJZ129ZDayfbStMp6Hc90aLWO18K1PT3rpGXn6zoS5cHT0eqKeafIsu5X3dR7anXzqA7q +eeK+7GDeEW/H6TykmFVnx68dyspTuJlnr3OeRfuu72CubSfznVJDrbU9zW7eMubZsTbP4jVt13Wx +TtkM6XoftSW5zGUbuWrJypa0S4SUvqHtlFn9cl2GSZdUR7PSq+tkDxIcIhgiJFBwQQYPHhSGAYGB +8OAAEVHBAEwDMwcQVF0pHlrTZ1ntz04PpqkZOun/1p7zjz31HOglIRrbjj5Huxr58Iz6NKpENEY6 +mtlXfddFPUcsO5p4qXZ2jmVKi3aIpWmEZoqG9tTdg6ilWmcnSx9K+6bZuUw9NVoiHdES7bWq53DL +9kwRy9bMTkV6LItea3taap3ZLQuPZR0ezO+evb52aLvZ/pCi2V43Pdai21KR7WmXZmn7Gu2r15O4 +h79qpnZTKkw124nuTp1/V+ez7dxel768Tf01y1M1Oyeer2d15c95uKuIR4rqTVxfIp5SHtFHSnyp +6rn0WZEa3pKe0850SKt4sIous8yma6bNzqc/W2SZZnhIPjcb4p20Mh/RYqJhrtlb56X7fLvs0ufL +JMvn2WXpvNFlrxOtV2ZDH/pedrpFqei1u9KYmEd0+lnpO02EeDyl0VxHeRKNqWryeX185/V6jKgn +sfRsli4olAuOdlSR1KsHz6u1Wnb0vHauyvvsO7Vb7U9e3e6r/BrR/RDt6APfXVeHrOx+VUhmd6eq +Hx66FhTKBPBYt9cL026sBYWygX0WXR1VXelp51e5vtw9zro6q1u7scpXpytSrOOVnnJt4DgtLiiU +CUzgAd0e34JC2YB9Dn3ysFO6dHbsUKuOrXzsKx6lrHM7PKe0SEalZHuv9s7dfu9g4hLiOc3TH1U6 +l+s7p1atfZ5M2/Zclv04r4dH7RDeFflOomnV73jRyId+XjM1NbL/tWsd/GHRsSvpy8avPn87ydJ1 +qLyXZ0hWYy6hy8i5eeW83tpBW/J30yqftKQ/SjxoJEWzLLzVrrrDrE2sJ5XLVHp6Ip+Unq/KtFnd +08ekaeuzX1AoG7g0O0e2jWpFqr7y9+rLg+msO5iaej1mdY5pp/KU8jyzfj97XZuOZXqV7/Qm2/4I +j/Vqd/BqpqqjdFqbqvVbu7t7af5Vh3S+QnpVab68oFAO1+rmcWkPlvOLeJd0ttUPnvNpPqWzvPMz +8dLynrp49Vb+0Hr6855hElKZUSr6upn7zPUqZhpz8Vj6VvUqv+fvkfOnq3jOF9pMWuvb3bdSUbEy +NU2H5CS9cyr70HjftEafkSGu79b7qfKLhMeq0md1LjXfrVT3mJW9quy8Kmkx7W5VmkWv+910sspG +e3U3/5ZMfWRlWHe0yr60u1PVyXqnSkTTqeFrXahONaXT49p1ohLevbpYhDeio6yzQzL6x3cWqlpp +N/Gnm4fUuXVkt19naTvd1NM98aTGIqLD17r2Dr9eUCgPfDwjXtVVSYrn6Rua8oquQ8M6002nqvp2 +r/A+29F6DVVteL9T3bvX3GNU9jqluwrXPrkOrXvXEx2jMtFVHrvuLiOjvVJ7Fd3ZK2OWnrqqW2bl +3mW1VVWne/FcVVeoty68mYvOq3zCxEMXrVLp5erdrxLPurTKktB3W13Vfal20RYUygWvqhve1vh6 +nk3MS7o1O7Xz8s2ByVupEWmRET7vW0WqPbiu+96q9687/PpU9rLEUvteRTypXXl99Us8XtUptX1W +tna0zWXOGxot7UjpTbrVrHvvYHoLz7TonCddPYX+IRXZHe75Oa2q6dRLTbzVay5EvG3SSbVdz94L +CuWCm2rvWbTnVa5Cvcrf+X14MrzjNdFBdVZm4q3GmxUeU1//w1Wr8XoTla1OVaoFhXKkzw6znqX3 +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 +COk/sFZnmexIkEmcAJ962sHV7H9+Lc1DGGDAEKLiBCqjFYeAddgeqK4RSqA00YEmwIRNqGU4JhBH +7CvWQNZ0XwL04EevtWWu7uNqCcDt3xENKCsBsGGZOB+vdZTA4aMHynENNkfXcPxfjCYBph33P0BT +Z7LFqZMEGLJ4U0iC6VoqEsgkCQogwxGEf1KQwBHdUHJW1FzLI6BglwEpVcEDsX0QfSOBiI/wje0A +OSMQf7WJ75l98iIADSm8cxHw/SqTTosA7LaCtbtF4GsD5bwnBr7RBl/5u/lU75JaWvZb+DPtbzIq +EDhlQh2kdsJeGTcEKM6ezl0I1P14NVZs3H1EZyohcJ7pIpk3DZAMkOQgQNNxgsCikJEUCAyfBvcD +0iyAwAZ9wL+wz16NydQiK7jJj62xP8B3lrgo46JjEu4OambPhW0ewBYrTP38g/BrfugeEEUvBTwR +jMWBG/VVg/GnfLvTN2oNg3fNA47T9C/yQmVwoDmxl9bEbH9pKlNY7w7QNaIoKqYtr6mR7IC3aMnI +mbJ1UkwdwEsDYjiInbXrvosMdACwPGhkLgck9XViB1ckTkQTrPNxHMCRJAwsVcPexZSsFyNJ+gUZ +DdDSi8wNOARbyzNeKlUbULVf3J7SE1T1KhBZVUrYABYeVYANAP+//JWZ/PS97y5dDWAcEE8k8ni+ +Gg6nAXOm8IDYQznVUlKLBhy/JtYRrhViMsAfkNui1NGNmBlgTURVBpChLgSizNNGAFI393xAdpcf +NUw5DhlEjAFXRcsTiAGDluRj5SRHv3kv9ExGBwMYVxNF7S5gA7peKRhwnbrmp8BL0/LwCxDzCgHJ +2rpLg0HU18mE7+cqMwH8ZQLK1FwZHXBJkmIDMOpqRPg770OyiDZ+ZKaUmWLHgnlURV9ueAGhAZMB +dFUzV5W39pNYOg1JJ9KQ/l9q2flcUrmv0vK90n5IEY8Y+ZM7So8/3vdKf6lbVtH/Cq21krZVVqta +8izpZ2xN9neVZOo0Wy2+ytRbvt2slJgtdMb+rl5aIlXHtpfKM7cTFdUstxNVX1M8ufgzRWStk1Vu +IzMqCR1ljOeIkTVSR7cPFRWPpYXK0ttkOvWrZP9Xqw3HP6kiC4tm6q+LZPLTqqx4JDHdXe7OY8rY +Pfd6V+cTtc4yxeuIKyL36aVtbG/vdHdm+35jSU58rUaV0+/2fHMv9+m9qd5jsr327R3Wbq9YL1Jz +V8XbUsPyhFTU4tyn9//IX7fmJFKSv+4uzG21PWOPtcyqsV+vuSQzcu8JidSMbia2kWNNiGzv2b4l +P3d8vrnXdkqGVj1Jifidum0n1QiZvY7uGNmY/ah6/T1k5dPU55TftWjqJdvJ96rIr9RJnb3ayEjZ +iI3I0ZTj+SZ18qJNZkyMNJoMi+cmkDGznF9NzO/9LvV9AaUSj1eW1ZHP0j8JYzOeyOSRuMRtJG41 +R0UkVY6f2Ug3pVhKsWGkzMMQmIJV5ITdvaI36r4SMTsTJcjV8FhoFeLYJGw5k3ASljB9E2TzqD3z +bkPWyxwvbjNem/g0TleMmEeZ0lVF6UyUIrOmYTE3D3lR5ss+CTTX6vz/Jqj1o9+gy+t1xqBJXVwS +CvL5VBz+pxi70aOJ/ibIjpqmYjolEoz6GBtIgoOhYHR0U7M0dVVtaBZjS7Cu4G9iMUYj305ieuYK +MU85xEJoSkKMVXqTcDAYmOkjc9wCBwo4HAyFq2GQeSS2UFBXx0yFClwpOsAAI4ASIAMXkTAkKKi4 +zQIShgIMKJAOAxTIsMCBgjIwNGBAgQwHCmQAwBBYgAEFBPjY+iEyIhuKCIIOlUMq3U+s/vvnUknG +jEX3Uksqdp9pfZpyai3TyE+xlEVCk5szbMlIs+RMKHLaSRmpnEnlLjJiU3LTUEmZ4wqRcITuClm5 +ORQSCk2uKCevuywvvjhyZ6pL9ULea2w5uvLY3X28qqludh/HI76/ZUc13q8pOdNN5U7WKELRylVV +GR/VMvmEjO4pRtnItYvQbXNCMwm2sxA2RsZlZakxzeXOxmFynSkKelobJ/4g20FDEoqCQ079oNug +eZ24texTE4bVbPFFFRpmZtLimCyWOEmI++KGEyfedMImgQMDARwMBvMrqTALY9iZo4p2dnMqm1Hs +RfF6kjkcE822XN9tJ0IkN0IyZFIzPSV4o2kHbxWlXVGXbirM1UR5CIGN/TjjIpVZwne88YpjJuaX +E82PxkLGvERYOFcQqYZyOYmdsCEvKBmDFCQ2SGESJWFtRV2evaK9r0qrk9NfNMe561xT9j4sgatQ +YDY8MbDhSNhu2NBgZDz+FG9s2egYfMFMbq5kDhY5P1XFtpJsOBgKx/eNTpix9oRFJcxyJIsb9yaO +qL25nE58G8+YXJxZXEdGZM7OLldx1lPQiU+OEzKpJcEbz1wfDgYDKiJVyGmau5ixSA== + + + XYWYGtLXcDAU5KJUO5EQ46B9wVprT4NmRdqOBFMpapP2DQdDQaqOiGjmZuKe8kzjJf8lTkaOuXOc +ScS8ukpmAdRf1RDNT0RCvKHLDXqmLmPLx+NMyWoWNEKjGc6QZDUHq6TP5GK7WCxsIc1PWEhWS5JL +YVcSrAnStuljWOk5ZkikMEhEdjTSkMolpAX1fLYzVpEeVWV00YtFhSbZ6703FKQ7O9HFXMzdXTEn +ZczRHA0N0dEcndy0MzRHNjPE0t+fCsah8eoxvHDoRKIQBdHUEuQ77I6NSEzCKNXXbCGjManMO3T3 +HUSlKgoSkwRd4gZ9xWCnZd2j0MGqWKquovH2NuiRZSzqk9qXhxFVaOImXtxXQ7Zlzq4aK7GtdYXQ +FGpuiToFFcpP+Vd/umq0qG4nElyKXRdFO5FgPlnYb7eGyUXZp//kx8f2lxm/pw77uejKecKsIRRi +LrnH/6kiIhIox2KMh2ojG2nQ1RGtKnhj8K46JXXBo+pRb050FSIhzBh1RtShMtfCWkYV1UaZHcN+ +RlV2rZNc3Vk6IcISijH5lG1QIzMS1ogQcUhR05EhiaIgOd6YERQQT8JO1+vvNGqjCqX8KWj2oASm +5Kik+jTBowFFAWMXCFBIFAyEYSSKYnBmewAUgARUPCSOIAwKEAYEDjJuj+JgBQAgAiAAQEQCALHt +/V/uUQZUFscrEw1cKihLyXRNpDhlL4DBednjZBTs34njRzWNK9JT9InnU2kVbvpd/0PF50udktSY +L/fg9gsd+IKS+w71sGtPelLnVGXAEo3l0cHEz+lOCuGcm2ramExWmLTiTdxTNDqME8TZO0IluGw2 +QdCbPkopBzUhjHSno04ryApK4AT/l9Pctb22mttd+whmQtuBATWzPiCts8T1vt13FDhaqGD2GJWP +CggcVo/L63lSR/gBuXyIcrMH7DAF3neWqmFyqzdFlo8JYNCMcTGNFdEoR1a1nSy3bX/I+EPxNNyB +SByerllwZBa5x/bAZhGJ+m1Z5VoSXHwULVigl5xAFfh3cxruEqZbAbNmLyR7hg4LlLuaQ2JWVWEW +Vit6ThpP1ypWDxjwJ6viunkVpE07epyUkUuFKP41Y/a8zdOHY19C8zr7d/ix+CN/5CT4b9BB9owS +EgqqdlZ74B/qSPqaC7He325sCP+XryQX2Jb1KZRU0vQIgQtI6H84CxWv+Qt3gPAcmgeYnR1A87Q8 ++4JCRgQqSmOwGSk9FqA5SnaVUuBGuTrkxJ9L4/J5lFm/jBHsVjNpBvSFjoX7cMoUti8TAJ3wn7Ll +dt6fB1wDbtZv3QjQZQbhAeTS1ZwBBPCOUUruK1R/v2AVmBja85CE2vDWWP5rH0TlWl5Th7KznPpK +4jnUPqJMhD1lG/P9HPiXA14wQ0vjvbo1oAfXKRY/hKnLFrqyKkT4f0SXH4OKtbtVvWEdHSrcHYx/ +HysiziYW2wkpJr6aSDvL+tBCL7z1iMJKTZmOV/QTwWoqrftmQbmKaf+uYoMUxYJSfOkmLNeH9UsF +/I0mAL8psm2BENq4xUuTPYRA3srey3RrwuIiktK5poqu18fiktcoOVmqp2HFBIYrDmaCB3lWvcrR +PlrRIY6vYwKCfJHTUnQq/SfAGYsCO1ywNvf7MkqxjtuH6TpO0QW1pP2g0HM15DJMHlWI1p+a/fUd +zNxfKu8L4qCR6SPjBJfShYp00exWo6TVo+UcPC4nD78+99E0fgrkjJx3bZV2mx+U+yInmsQyC7X9 +LdBiK5XN6AyLNpyjQPH0wDCd7WaWXGyXj5taDr27w/FWwqGNTZDdgN9T9SAwbc/Nn6jqaLHM06Ay +rByu8U2NpbRNzVyHP42CGrTra+nkIcmMBGUGllgZdA22QA10a+6pnjKu8IN/MksEvxo+sx8nGm+d +9whdwt0Iw3Sjr+oHxA4kT/OASVqHGWOWLT1Ay1/MLaRbR8G2rzhWlX16jP004Kf4GLP9Kk+DcH/F +wTcQ65UQEGdverdKe9xIvqjHwbU8W4dgUgW2LxqA/mw/87tnoJexGWmnP2wTLT4SMLcrzkbI27Sh +xbKI5YUNSFtu+v1Ou/4UQrCtAD/PyriekgV3RrxfOxU0YpAkU54BNfdA1Ic7cHZtLui7as/xjeuv +C6ni080njQE48IdReQmfZy22AJuA7r3bfmQlEgi9rUB9ob32Zf/JMR5xewWqQsKxG73JkWtigYXf +UBhHq9F5szdFnaA1zz3f8EHy0m5Gw93TJzWwmuY7Q6HOAXMu45hQz0WxFUYoxwQmJsLVA9DtXWkL +xaNwCpas3sEtX3lXHDSf2lYkiKY1MvU69IqKqjEMe+q4IJuMoQJfP55VTS1rlu8QRlRUAq9aVFkI ++HYvtWtCbJ7Y7BBjP0wb69r1cvEFItwgqjyZ4JyWzk/8L/a3peXSaNuUnn/x4hyJ5/D4FMJD/ioJ ++5I9UYvJNEqz/bFwf5Zkq1ytMrnQaVYciSUI0tc+0PdgOoKTzAQFzGwrab+/xlHwBQG1gGwEtNa4 +c9eTS8OGgVl7beFqOmIvJNXkL0hOVn0zU/4hEAzVqzNhgIG9d3otjizy5TXHmsZ92rVHW4SIqEiZ +NTm2m+UQOTUejqDH9g70XkYnsP2gdqxriZ1zoNwN8yMskPGeXbsHrX/ZoqXaqMWJJJ6sSx6ljxfb +8MCBhKrF9Wcl+CswaKgvJ/yRWa/IgRbFy4E5FkzJYPDzwwSu6TywDwKnH+8sHLhBMQK8+LntIDqP +qt+7Qgo3rDNA+ctBzbgccRfawcRDvBCObDhntObittRNvAqPUzzLK4DzQsw4dVbP/vf29O94CgOt +AA7KszW+G/2y9ndKEDMZ8okDHF5IQTKpzIXdH23Q6X3XgbEkKT4gbKIpy7jV1Z/F8M28RhrIOMIo +YKV76imJtV2DEp/rkF+8C1XA3UdWbqLdE6HVNa9T4rkb0QXZH2KPqJGMJbKarHVrUyXPFU4PpgkJ +yk4OqBv+7DX1n6PQTogLQ8krml5LOaPs6ATY8Kau/wTO2s7hprgJeDUwrTtSw+vEdgNqJDBKb9A1 +SzkMC5qMeqXPgnplbcDS7XKXang0VzZEhcEBu2kWmuGUKD1ZuHjQl0NhhAxSx788A+dyFhNrV56b +tSijvmVajllnsA2twvoAV8numz642ao46FBx2D/T08lUswKuSJDw030VNuIsoum5Jtaa7nvb4MFO +KrljAnjoveTP1NUUI5uplFJvgb1DTvo9YcVyKyifcETCLFy/eNdTkDDqHKMb77Cg3v66tXEGPf3a +zAkFzyDET/RiFyPwc+8YdNeqz98dr+JvNxlzs9Q9ASL9JNXNUWJNHNGe/syqDvxl2Rl/VqaCzEbM +aJJF7xpq974QcIb3Q2Sch3gjKfzvoY2SGx1p1hzKwUCHKGXFGUyR3ozjOgB3vVsu3y6omn20xzRG +FEOJ9GoVyGW4fUCApUYakDVFMVXiiOfBAmkZuu1heUW/ZxZAi93Z2u0SfY4hBff3JvlPvSk8z7fe +Rx7S4JMsFtbhJ2KvtIk/YAm5zx1fdRHafKDTDqRdWjYpJdNHpNlMdlKDhFxuHRQLNH8+X7BdRwLB +GQOgg/0pYaaGWXVOQYh/1KuojA1OFyZGKdTTr1AWqww15pfPJFMml0smLzyRSpaKvs18lhn2lXC1 +QL7AOWsIpLyTldoz8tdEBJ1I67XzQUFKcMWUIzxDsBC0MGASM0yFiEsuzhh4zEyuCwP1KKIG+j0a +CFaZWmpKRe5v0uF5AZRSSSkxnqG/1fy44wlOfeRSYkingk+Ht5HUQ4kxTeKX7lja+uQ0RQ1dOq8a +yV98tah+MkMyfC4EfZLVtSKnX0DOtJ/MIrm8NjjIji5zuE8OZQVif1JQC8k+J8IO1JHUWyEGpkt0 +FLnDSr/gAa6B/HM6puFVaQqjhyMurF4sHkq61Czcm0/9oxA2a2nrpd2PEZgWFB6m0Km991hCSQ48 +7LUdSeQ9NJ8KxnRtm2nICy/Pu44V2kz5ElB2ZphvoAMzLCygLZNpgoMY33V3/575myvXDMcEUwUB +u06Cwsvcmg4PlvgL8dUZtMZ4kDHMVdLcnO8sFKDqLPnxHErDGktwQqVhq+4p2JVxEq8jaLiRoM03 +RQj5uJ3+Z/x5VZIc39Jahrv15v8aBynIp8N8auiGXqLT76j0p+G+l+g0BG9xEDMdHgAN54AaU4rY +WQRgk6I5dFT/sI+Py4/pPJdcK7S2O02UATsvepjgxDHSuRhJf9A7rQK914C7l+jDAfiSe1DJwSgY +1kOzUJoEwTHHK0xEIItzDFwwSItggpCMpZqQzwdJxkpUzfPerb2hJyAKLcKMptJoX941uBnEKeKj +XgtoLZPQUL3IRFZjjHVhMCUH2noDZprsNqF+s8a2hLMF5pLzP1rwAF7MJWT3+Wb8NdjR2Bk5UmHd +U9ZBaZxWZ0CMdBJowldlswYYc6MpgM1WX1fQgtGpzIOuMbFy9UQmZnvy+KLZVYQdYgfX511X3hB6 +gnz67GxpOG3raRRx5FnDemhbnh0+6EcYwyW2m5bYAdOBkbZDqCzE+oVOWzYnquabhmjesGpMrqc+ +64ITT55SkhyxfuOUGP0YumSbXMRKpg8xGmMsyPLTaD4TwSjQXRSos3l2pnTAzjJOFOvcxyJKmcyI ++tHZVPDDXQ/gq62dO5f74RgCJIAbyGs1OIz0GWGNjg/0S1ewVajBMMu3ixqSNKAqJ+qeO1Q+TFjZ +QIschtlNBxQSTJmOzixuWoaYoSThbmRpdAgzZh0KNEeYjOk09ChHk80hCdSj2rejzYbaeIf1zDMO +KgZpFyxKGM9kqvY4CjRT4dnnQJOIm8EgPrW/VGH2PECpuQ8eMe+CS3mXsZVME0/QW4H4cXRpvadu +vcjcDEyJWJCIGgmNH6y4dFS1oU74ILOq7LU28VPES3jug3+hePlLkIunnHWXED/QdNb7TYJ2oTot +VdhBUIPmCe/AQqZsoUR/sxJLlqu2zpAdZXkt5Krh4r1hRhVGS3SyreRXZL9ObAifgCeK70w+sUwW +IRVrCBoRDUQDLxGHSmLu4wECPA5/cxS5Miyue0NKCA+keCtTXWAxvc3h33su9W8pTOaJ79kNjwlC +g1mkxeXxeEjdvK7br9h/lomK225HVYE97OEspxH6ict3K+/KRrqv43s3+OKKyEukFMy+nc8Pwmx3 ++W1JO7KXWzGxolwwYpT1LGVhYt7c72Oqe+JEHT8jRELIyYD2tA4M50QIk6XiqxIl9YTZ0kj7pzbH +m64ZNWw3DErpInFQOUtXB3HKbvR2PtqnVO1U+scnuZjA0ouHxRcYWIgohiMRSiohSTBYizEg1U8p +emqibHbTBhdE6vNFwjOFQx8cSt2DYI3vVe3haLA1WOyg8kDHexX3Zd7A2YE/ZvbBggjmb42eKHTZ +ZkaRhoE/+98VBavR57TrUXxDGE78kI0Or4AP0crvjXNO4R9hRAKZ8U6j3T0m+9NQkg== + + + qb6QTfHS1OD22qLJl/Hvqt1yuY0B6t+myeHKjbJR+Gy4QUSre2uNulUEwGhrFbmugjT4Y6JWY8L5 +sR01naoPAT8MkRRQM5CqD3+TWiyGIHMkBI0eyY1mbi5G1o8HQWNzldPyCLYaR1Jmr7ZD+8OuBEyg +sSGQhapgC8vzzk81c3VjIUcmgsSKmB20id/sThxNJj1K69GWIzLD1GqQgXqGqUZBIon0qA4vzT/W +ajZVaevfgKW4RHCwEvG45xCEoeDosPYsnSMSt+UOeIhNLSJV2y+5BQ6RPhezSxFI+nr4TEPJgRmR +aZOGkWgRJ37ZFlTMBx2hMCN0bbOuUX41HxIIgzzisCoKiR80vv0wDCtO8Uh3M2ig3l5swL1lzs2T +BdGo0mG1wdur7nU6E6SPPCesqWcjSX/KzjovoODwTW5DqoVitG5FDC04UJhSYFcT/ZY3KNyfv/dd +aHDE/sm8BGaq2ZQJHXeQmHYVsqrtLymlYi1no9qizwGh9HKmCXa6jA4eCOPLAOUvLGBmGhDFB2jo +hcXrSPvvv+jg20zkfvyabGwQQX0t4B4D2fT+TCyxyz+2cNDtnp9xj5d5RwBiXsXZ0ikEO4b4zue3 +oY8NSf/58cJnaT8MBR/e74vyQ14XqNL9RltM/NKZVLnMhI9l0+sEeSGVCdzlyMpZ12q8lzo+MiXq +ulvwbnpBfg65b1v+EonTRkOfovbZSIZ9L4anAb0TCG5fBHCNJ09ZKYC9miE1zifFOTaQbolQtr/z +WEgELgF8AojVpMyEas/nOzknoYRQ4RT0LAGL7yvH5kHJ9Xh6wpi5ZwcCkqF/ywN9kvpCMYyvkuVR +d+N7Zsm9HIv7Q3bCMJewRHsHtciANSq+4HSN0WJHoDybzvVA8vjxQJkZE3jYEJE43rITtnstPAXR +UJbhyNvi/A0LA63VRlts4mjRc4euxt5NFCI7K2C+lF9CCEfgwgNY6i47MrMeq6hxPhvfmoU7+aT3 +xRpPl7vmNMpZ94VdwT3anVTZT/LhEVDtAux5pSZfyRtfbwQH7qPITNOripykHPBuA2UASsqpeHPz +QsMOmq5bmIW6wJAKBhfWpkyNC/uIgkjFvd+OmP7hekqkfQx/LuZZYB85JxasExen5w71F6TYKMeX +CEN+55ZX6j4TZEKhFcEiFGiJ9wEJiZjb3CN/seHZOuqVIk90Vn5pkLo7/jPSs8x6mvugIGklQOR+ +gC8fHSxhPgvErcsZwKQzAmf9LoLdJuvu+vzBnSQDJ83Zn55zLAVZQXYksBlJeA+gUI4zoRJJi6K/ +ohbWDe6hjiys0d37FJT4xBPVOVnrqLugn3n2g07ynCeqoQl4Fklz3eX93t/Q0zNWPlp32F5kgpnK +cezlWRz0Tx9FXCurYg3Hyo9DNYgjC4HGuMcGOhz0oIzYvrGTVnmi5/pini8bxJSlGCQz60fMfkgK +TeQG9rGWTBRYSQ4/osFA6vQp8c4CPFldUFzAfFwQlu6Logp1DCclYXenylJG5YOiAyLckl0m2PCT +dJExsOEQBeAk9v3eBrJzImhQPmzzFSqCOwVesqvcHUmNhb0/lUPFYwTTNh0ntijPvO9mgVk6p6kX +85Re11U9vJBJb3wFYD+nqHcTKJdKmHA401LjMNURiI9cNwR+uZDfWEXnTPM5rCL3WN3i26KVx2zp +1dPDNE/FttHgsz5qFQReSfK3ezRHTGqUEzppcDvbGPmiMCIRl5xtKl6Rp/3nNuVgEuJ6CbLaiXQG +gpyOJ6HMTltAR90ybFwQA2OF9BTXu0mOyTF4POVd1yT/Uo9yiBhUs8TlJDC+16WDRAsD+4rMZTpA +fPmFjahNVUYHOUw2QvzyYBDEuF1L4T/zquI7quSlGChyYLnUI58hokPCcKRj1QSm9SFohOvqIZqD +ZwcIKI7gHk24aj3oZiYnPODBZwUhx5CxeL82UGUwH8p9BDryOcRkeL6Vsst6c3PGaiMzqCEQHKSp +VqzQWQa5IlXMlY6zYiqblKx54IRVL7NLugj27HGEcZUyKzMcBsGZpNTJV8+zjj8Snbmn6b8emNwX +A89MLUNSKyon9CylxVYKRREpwhFd5tlyexVKWr2iUybFAgE+qnG1pCr5Wi3NVihpLX3pIN+p+z2Q +rZgU1bT3dGxavEQlv2PBhzsWFUEXGntNoxsZrfCSFM3aSSs3Rw5Un30TUXWxEpabogJlXOHRY5/U +7p+Oz5sLMfTF6HxVGkp/qlcCMpacybEwSd+02bTZV7k/aLfNKAj38Pj1Vh1fGBS4U/rFt9H2FJAa +IC82qsklt2p2q1hBA2BKpGDUFwpFe3WyYfBqOBri43lujm88sLV6/zVxfK3VFO5IoWNkBUQ7fbWG +iiItZaoPh7h9wZsDV4+pM0EHm8AVzHqZHtyQNNyp/y4aBN8OcCwyJAoFJEUpDRE8nzuwKZOgoI/m +sYmSLuGSQoa8EBb5CJeT9iFHEmK1JSVV2H9CsvKPq//K/XnIX4EjkEEFgifDWbZ2E2cgY+syeKHU +hd0CWTg1Z6SsHbhsOOUpJgesUQw6oPPcspqx0IaB/bTPC5QEwl/GV/gL5uiF25qjxaoSQwBaeuJ+ ++CU0W3PIrDiJvNn3D46pMEnDgLzfMsfJuKQ3gj6/MOseanUmhbRSk8a6NeGpAtY5GQ1KXyKOHIaF +nNUt8TZ7CUOhKaxjeahGysOtyZbUcN+HxGSmDUEGTNJ43x/mqIwDN+hBa4zNch9rQBnnj1O6pJVw +AVLaApQjYSf00PUPId8cnPkqpLSumm30qDZrXOYt/NJr1jjeP1Oodr1mCnDoclDSUjsViRlPGS5f +FQ34gjbvauMTlkerLpEqAZ4FHZJd9JOyZVvSzHnVTwa/xwXp3kGkGuc9oFXZIngGS/L8m6kdkrox +LKYowi84snfT/1I6hVjJdvbSMibTgX4zUd0FEDQD1vN55twn4FRgoHuXguyuMzH/w+fBtfXvhnx2 +NYioF4Al8+/mE4IVdNaC014bLKCvzHQj8i23pzQuloGj4wM1gv+BEGX+pL9JtvLghD745tuYtIlM +MZIbmBODZl2A+w+vvEjz+zbdJk+2nsntJ8HImH2YWFqYDKVGATy2RNi6triMvFC7+ZK7mjt/4d1V +Pi03++/5DnDHWEVSJsbrdd9C0Id2CV1kJVhZWcnK4fIcNVAjiT+tTSi8a6WcPoQ+/TX8eEPuwWbz +1yIZHSBE5/6fe6MCgje4tSDchX06jZd684ruwyEjwyBsoSptB5CEfgXwfVCQqydJB/Gxlviayol4 +/tgK3qlEK1FxBcpS/azOi8gNgPD8dejg6i4zptJwzz8BCRwbdHP3mpFDj9VQYzYauSPygwhZrCfp +ND+A62GNSG8L68RdtiLK3jkerYTgtyFLyDEyWsC8Bv1mS6s8pUB06FKl2hCK7QIhjaKwHG3NrNgU +mKW/ZJ5Jx1rvbxGik6d3aeefbmpDaC5nl+4ImUjYJonqJb8SxZRmN22F/uV6MKuRyE/LBoYCpq5W +8vpCTkrW9pDHyT8D/lSLC8t36Im38Q3CGgQVQ7Z40eZGguKvGw24yarU4MXnUP2cXBMQGhByfh2i +o4HomJUdwRBmOWCvAO1/6iAy7yZq8BwMSM2LDkZHmyM6xPK+DVagTUInqSLW4RyE2STHIYgzZK0y +XvhkNlrAtzHOpngd8J04zVjux6KB9gXLZCmGvqa0vuVAAI+NGG480xm/IQn+S6gJCHubjtRgJ+Co +RYs/Lporu+ixFVi2JoKq0y15JQV/5svdinmA8pFhjfsA34uwrnhEJ91BAc1IqnB33LjPgspGQxQc +yDn71U1v6XQwgiaRFO9dQyRGp8vO/NFaOuUs8igIB7rBerC4wuVMz0ONA1QGIOWaNbRLLMMg/SRw +zwrrRgkJPZiBz/8Yak8UiWIddhNHeojgpfPbJq11JyoahZItwYkmJnaWJym2hL5Hrli+2axmFYsR +uyHNoXFHou36yX3tv3Gzhqy9jKShhbdnGbZaMsdpMlp9Uv9ACFs76sRJxH+m2i0dVZu8Cj6EKA0f +5FfJw4Qy7pgDxDuhY6D0BaGQMzQU2bxCWaetvYcGEzC8KFRDiqsYfMDjgsAnhxGquGyhM9Zvezez +k4RzPjiFGU/2ncKxZD5K3AY/iHvt29LoYax0S7awWg1XgwNKa0F6IOgdSYLla18EjicUoSNdxdZ+ +A8mPuZV6grKmdt/wLZdpCmR0A0dvMwyJDcgPJfBTB1aFoQdhdcjBy3dupsrTseZeaQ628CLe/SyB +zDeMD6wAqMeW1pxUYsxPaaf7QiKwgjLiX2EQwXv/S0CcybpdaX5pQLGK/sDcS9ySFOvFmYySkRMS +j3aE2xxdHW/R15uDgo/TVXeWwbWCsvZQFCWdEwyh8o21nFim8K4WsBNokVKh6AAnt6HXwaD3asbZ +jkcvme3Qawx3rKCuvS+I33k8XiLiVMPvV9vj1DEsqro9Yv59ZnkTjpAfhsySS/neZ4J+16Y8WTdd +Kcl1xSownXNYPJGO2GzhNoGaNuaFB5Rd03LId05NQgPiNeGKIY0TwH9ql9NolasjfdCsy1ghpW3q +Vwhge1KXLX6z2JNvOD3V+J9DDT4x8DEbBtOmXiKxkUj0nUjPAmyPKiEHcyTZqR0JXakAtsOzf2kR +o58qsrtAj+GMXmGnrvgNNUqkWAGqMZm0d7q9doaxP8NG9e6Eo8DLYy+6XBDccAOarWWJ8/6fpW9Z +VkUUDokUfmfkBI8+w/ygqnulKQ7OTBlpPr56UXYWxUz/54NMn0VfNeA553IfGs+ZodXo/xTflsxk +SoWGrw5ncpNWfxjIAnPk11HAA8jLg/qdDK2KopyTmxDc2XqGFue5UMFynZ3tGNQ0EgAhKzmHY0QM +/Fq0dlK4RuSauT4m+1/AKL6n90wn7euzCc7F1c2XwIWbg80FNrPCDowTPIBuPB46C8coXWOENPnO +0BFdhsfigcEMwrhXTq5jl3AECmTknfMP+gd/VWIH/Ev5HCFNqTyrkl1Bv1tp4U+s8wHgyhKccsNm +/xSULXhxPviDxvngoQcIjnaB1j/WDNIuFK6D8fdlOs+opBDTkj54+vRP3hbD4NsCEF9DBMoFviFE +/wpKguhQSrJTtKiO7EJpLTqz5c2//d9zvzgEAsHymQRLWBRMH1DewhMXeZWUxGAK8a3jPLYFps9/ +sHMewigwEgYSTZiB4sI9CpNMXEh04oLZY4XJrG/vveUANEDYFqyJC/BaGDJAS19Ywe/hGMaPb7EB +DctreTS1QnJavh3IGIZQDPMghkkUF/8s4d8wDA8zzPVLTVyQaA7DLvXEhVk5WPHn+ZYkQZjCdRE0 +EQzzIbowsoDFUWL2YFQUFz8nLshD5D6F5KO4CBYyw/pXw5TIDIsPwwROgZDEgg8GKS5ecuw06zwM +k2tSUkGxB1MIw4r7ZZhP1LAB9+5wNwx9t4adi3sNQ3i3hu1tVmCBCNcwuSZlsTAVWQ== + + + cSHYLTVvlXESKKvpqtAN9jVMOEBAlWfxGtaiWWxYxHBY7mHD9MqGwwTiWFzQP/tmRurbfS0uehRp +m68X9qmFWtgDeYIzYFpW2JHwYMze0MUFve5qLSxgXAgp9fFtf0plXNDsC9tr7vfCsFy2KN8+jYtO +Wpg840KFVHvFCwMqvOiE6mIYltIQw+6sGUaszjAuGkJ5hmkBKpFxAaATGheCcr517wgN+2dcBLFk +w5iDhs0nGi+NC/jO0TC8UzOxEHEvNMx22jAJem3DoBg1jEDptr7Ut97JI/PuSpge5jrlMEa4w6x5 +dtvmL2Y/LN0NYggfYpphxPAOiQlTJYY+E2OwPDGMohjpzJ1iIl/Fwjxq4HqjD1wlcjF5wIHtFTts +jPEva1zwsoxdNi7CP2M6osamHxsTWDcGP5vh2L3MMU2Ap252/4whmsd+rTzGN+cxBlhqBSyWagx5 +4+IPf0xSC8tAph2EzDQOnh2GhjyG5bh4NTIW61jpHcnkASVzedkzIJnc12RgoJMJpE9GYSgzcVy4 +MY8yWT1iIYVMGbZxISkqU01WGVDjQon/xMYF9Ld642IiUPbhuHCElskkmvdZlnOWIWiWQdxaxu9b +pie6zG5DXkbA/DIJAIkzO3uWyfcMx4yI4wJq/HEBFDv215lV7mH2DNNMn+NCX9XMyPh5zZztijgu +4GymsOJmZOvNIDw4o2CXHBZVztJ4zgQ0nYk3LnR8nQmAO9M4eGY3B+WZRNOzZOae6dRWDqXuMwbu +Zw0cF2UPLbdgAk2EjgvtuNxsdcaKUJAqaKyZHDTgx8fl7BwXTYFWVog4LiiA9mxcuBx/pvZ740LE ++fsMaz5jT5UFjgsv9T7bY2/MZ2OYrkOqjgUweXUQZdxnku6ZXMs9s3f5bD3us8jYLMZy4W5c3OLP +IgYrCqAFagYF2rNIqHEBJ2j26rpoI1+zsDQuTgXtsyS7WxkXF7MEBS0DgaQ144KqX0KNylqg/aVA +ozFBQzAcNLyVceFoNssSmgEQzLh4Z1pGaKH2jTL0IqZxAcUaK+QxkyI0Ytk1hPbTRAYmMGhDBiSo +CkKEosbFzKCJ2T0GDYbGBZ+GBFvVRjMfR9MMmsMdbFqEhvAVmvCbhiZokaY9QyMoQ4MR+ExZxP7M +tmVoWiHGCGBoDkjmLLnnM+Pxb2j6v9D2E4b2b26+0H7sQrPSOoRHE9qpjYuyE9qTCS3X1CCjhMDQ +jJb9JTE0AO58UYaGSwqte6jQUo0LGQhiPBVZqapI1QBBQqEMDX4emjErornmiSZwFU3duJCOFw3B +GU3juFBmNBtvXBRUaDT/ZeNiJSYAo/VIHc6ocSFkMI3GbTWa2bhok0bTFozGuaJJdKLNUkRTXJaZ +s25cVIoyZ9o/i4KCvItoBObGBbGJNmsT0e4AYTxl7qFB5lgbF3hm/dQxhWaMMHhlQVSQoZGM93do ++MaFIjJMAU60H8rQEtrGRURgDE3x/BQ3LpAytPF3YTTBxsVIMbS5alwsGsvQAGnjIh41Lm4MLSr7 +KQoSVaGEp5c2hsZDofWtxsW+JzQ+D5pEBS2E2LiACDLQIIoGsoK23x60tMYFPwHnhMYcCg2zsnHR +61PbywVSaM2nQvMa9ZVfof2o0AC8OMWsRPJbXKFlTEMDMy6kYXeLQVPP0PrArdCKqowLLrNaNURl +w6KBHFWFBolxEWZYoYFzhmbIuGh5aAT/XXtoNxvxobUp9ofWrA0tphlzGeOi4SGMi4zPJAvWiPsC +SWgcR2h55uKiO/lPQhEa3uLijxWam1dFSMS8uKAutHs5p4WGXFwgt7jwEGKh5azQRMnJQkNdXOQj +90QHBBc8vLhQZWpoZLOhAdgPzasuLgTjVYoNDWwLbZ02NHM/NIJHoskvLlQUzXk1hboWrQUgo3kw +Lrw2mgM7mt79aD5eRBrlEUnj8Jo0zlGa6cWFOytNhnGhqV1L87rHXxpLjItBpj3DuHCQppm0TfNB +TrPzdpoNexrDfxpnI9TsI2p21KjhLy70jdTMmKWGw7hgUYqmpqZPbRijmsmfasNi1QSG1cTZUavl +M1fzCe/VSukIa2NhrJHTKmuP8441o1JYG2PHmvHLmhfjoslnDTlBrVnIuKiWrY3crbUzLopPXEvR +uBA01+qhrk20u5Y285o44Gtjn19jdC1gM0fBRvAJm1TjQgPR07iI/zWXLrbub2zmjIs+kE3aJJt8 +KZuS2bKdI7P5Mi4attnMYGeTo864WLjmalcyjQv8s/k8bWdz+BkXHMg22yfLuFgyW++eYzYoxoXc +s9VNjyYUxets8PjZtDIu9NAmH5A2G5m2NEJtLljVJhlZGz4bUOIltt272dbC2vYmideFY1wchm57 +FG+Tl77NrIGbdYYbgq+4yTMuxOPGgVFuoFR9+K6P+aZ66KaVcSHDdJN31c1Hr9uZZzcHOdyN8u0m +PrybeMZFO/B2ybhwFG9KoLzJt/PmpulN3euN4OPemIJv8JJvdix9Q/v2zY1x0dsG3e7Rsmhq+02R +tb9BGP9vLDYV4+IwQALg9gH2MC62zP2NUf6E0/1Wtsd++zKFcQHXL/hqoHT8hi1+U3D9pr64wJjO +32bZv8EuLnQT4EykLy4mDTiCZoHj+QPnwLhwg4LTY1xo29wN26lf93cOUwe3guJiP4T7U1y4YcJp +TIXz3YWTKzMc3TccQDychgXiTBQX7oo4zydx1lJc+OCXPteEvEHMBi7FYVFxkdMVFyRTXJ2dOFMX +njgTUIHeVfAnzryGe+I4i4vhTlyOEie64qJ/J67XPre4IKvfFAdMlIsLPjJ1rpKdOMCZ4n6P8OKC +IxcXyyvua4pTw1ecnCnOucVFwjdcXPBoP6c44qG1KQ7DiwtMaKe4X0PEuOBWqq44ul63uBPmtjhQ +dExManEC98VJf4yDk6VLoXFpl7GOcfiBxu2fiyYadzbxRE4sEyjNLH5E44iNZzAEcJsBDBl3k8c4 ++CKemBUkHg703ceepK0Xt8+Mces5RxAFoywuQIxxUIsLViG5uOBe3FWLC6PbFIsLjE5JdLTcaXHB +ylf64pDFxRAlEyTKlenF5eQtVKM/i4tDhNriQjwXF6MMY893nH1xIRyvf+AsLpbV4uqRp5eMC2hJ +9OIAT5tXUL0MMTEuWmOcHJ5x9LBxJobjDl5wMIsVQPlxdAYQOBRg0jhpKMkh71HCi3AKD9NAubaL +cgB2ylG4yvEJLCeEcVHQcnPjcnJHvZz4YM7sxUUf7or3dXDVb/GywvAzV89vUQFbtrggYMDiwpXL +SVdcaEaO9xwlcPQs59xQ55C5O6dg85yH6kk2WDbhAnTgAegc/nPHTPxzK/tYgSXyn8sXQCem6LAr +W4RzOHiy9g8O3QcluhkTruLh3nPfoODOncBddLknNMlcJ1p0QJ9j0QHfFt37XXRR9kWXqYAwfImu +T6LQyN+ouEBJdBqO6MhEdMZcTRtxKS6maWqIjldxUZWunVFc1B+Tkk2rYBBdoAQilTp2DmTi4j5F +FzFpkUV5Noc4utHku0VBRADFhSASU1y8chqmE/JzBupyqLhgPXP8nJCb4oJ/FRc6me+5J+65zpR7 +8D7HpyFXXJDG6nOC+ucQFhd6B7qVQDsgdKh6JTJ0jn0L70R08igrWLPoCtfo6Pno1PhIpxxKZ624 +6LJ01BDTyVXTaaa4cDRzOgX4dGgU6vyho05ll7rynzoCg6pjiNXp0dVJUFxUO6xbx6yTs1onDnrr +DJ/rNASEI1YmVieS4qI29xfnOuANxYWBVFz8yqLrIngLddCVVhNaEZfiwhzgwM91KwCQjpZRXcUF +8bklpMuRhBxcldJ1BtF1k39kcQEctriYb13XNs9aRy89ZizDF5oFiwtFW/RI/NYRRNfJmKKxwIPq +5HuariODzL53ghJHwAUqLvpKLfMrOK9ri7dYJwXFRUI5Ji7uqi4gccETeymcq4kHv27lbiGmsIiL +EOIQ4sIrUMFBXIiL0esQXq9za2npdRunoydTa9XBEBcz5ykvwZcUiIuDHy5A8HBB1+HiuROe3RYW ++nW1rmNM6sTllVWH+nDR6fEhWCSyQ/RMh4syu+7gcBHEuk5HoDCDw4UMRL2OCe11IXfXidZDat91 +H9KcPVxA+epwcbCHCz3L5lS5Dvvh4gk76P1IPUCCDrRDkpQLvfFwoViuE8hUsHYfLpAY10H9pu7h +ghAfLgQx1+mTUrzvdRJEBdghIC4kIOwWAHQwYoci1ho7foFOPv/oML304eKCzy5OYKCjXTBbCNRu +4KydhsV2ya7txMyUGza/nYPDnRbEhXDcuQ8XrWu500Rc6D93iwEjLtbSCXe6c2UMX3d1+xaVvcIk +LuK/qMSFi8GdxsSFUOmdB4AHtncj0loOzyS07/CC/U4u/zv0EXgGxUWDRfDEFBeiwdtDcbEI4bTH +w8bhCEAjJMwK74HiImZ4JsrDy1bEM1AQJygVDzy/E2+/XfFalr+JN564+BMRjzRx0R+eCcUQb1EG +9T9x4VrEE1BcyE48OwAUj9CJB7aduKA88R5NXCQUzyKReIH5JB6BUjxV4kISxQPME9XisaAt3jD4 +iOyRocgzrcUjE+KJi6HGeIp8mrBWN55Md7z2AfIcgMizEDBxrk+4ePK08kBQXAgw2PLEs33kLw9G +D5kn0FcvE837BLhTRZunsALpI+ehU1wo2nmLkYrfxZ5HfgW9UEHRewPsKi5KcIEUFzPaeXP69Bwz +Uk9ypHoy5OopQ3FBIo5E7T1xkW49sYmL5q73LnHh58AeRsWen8meeYmJiynOHgJAhTA7f+uBT1w8 +2rUn8eu3PfEA4J77mtyTpdI9DOS0p6C40Owf9A33QwtcvfRZ7T0yKa8/9j1Siov+7+0vgk+I4qJ+ +jvA9XA1OR/iQ1PBZKS7cIz5LFh/91fj08vGRdeRToaJ8TpCqtFzmS76bT8A7n3w2B/T9k+izKOkL +o7hQbfp0gxMXO+pT4LP6MNX68A3OMHFxhWp5wQnGLKgAhfZpd7RPhO7fIoa1lwtcImkflH0R47+F +tP4W5vu30Jemff5wIJk89rcgxN6IW84JLCqQuPxbnJjvKHV4+9/iaU8jHNK+J8LttK/NpKf2YXNb +yNW+NXpGeMjAoDOik7WP29+iYC7/FpJnjPir9p1Oa9/+Xft25sP2EUH67MRCsHHGcF+PCSslaaYP +/7cw799CcLehATZ8+9B/i2PUpiDW2/exNLsSbemDAXBxzjcntfO3T69JSYXFpU9s4aFAfZXNQfTt +g3v7KCwVrYZh6QMFWVIBFz22IRvqB7TlsE52WhrxWqUBF745q+hTQh6sZjHXg1DOfvtWauOmwMU6 +Kam37xy4KCRV7falaYKLLbd9Nfrg9iFv+y6BvuCi8UC3uKLti1RwAfBxfIBitn0pwYVw8iFtH3De +JjOPbPuIavu0ilZmy/YhgTMEr2oAtovAOXyA4+MgWOYMAS+d7aO84YuGkJ3BvbZvMw== + + + eJB8CttnL10GYpUrAZxg+4Dg92NReYqmAaiIXG2fH55l+/Y+W87gQuRmomLYPl0TZVmfjWvfBM2t +fXMTmcQZoth4AB5I9iM5uIDWPkml6CjtRh97rX3hVakZyHUzhPXadzEnZGvfnmpfqB0GhIuDAJMo ++I4vpcj0wQWMaYMLGTqDiyM3uGh4Di6O9OCCmdr3PJhV+xbE2ufdtY/BzNqXXRpT7ZsxnX4SiqMP +TZfowQX92vf/s7f2aaoahAunFCiwjAcXUqO+CtW+1oh64MKpfX6Ngwt41Vq1j5QL8h3hqH0rw4OL +KrhaDMGWpoE2jbEeb4sQLvDsqR5cCNHgQhGkXQcXIyQ7AZKe9oEHFyRdV3BE07yWKElK2gekbJxW +CJbRvsw0goJ2XdTBhSj5RAiplT8PwuBCdghGI+378yRhdsFFR/vehhjZ1QQXo3HtpxcGruBiBzsh +QkiS9rlCby9Zggtsu11O+9C5gSq4KJHfqn0DboKC3o/pggsjaKsQ2kxa+yBqGNFpoJvqdu379BIk +xQoGF2vtIzIAxoKL+2Ep2bQMtNe+wL5BOvASCGoc2wdLXvtQe2PyhO3zZ7avEaMjzCc1QEjjZIDi +ErR9QwKxb/vYPbfv1kWdkN3gglPu6+lrd2AZgPgRlAC6aO6DYnDxBPUaXFjSlDrbFj/NfR//dJ/m +4MJ7gu7j/uDixsEFjV+zwcWm3p/u8+Ezg2JwUUJ2g4tL0X3JTKjMBhde5Oqb6T7yy/tA7eCi+cAL +1BENLnLN4X3rmYOLZawPnSQaXCjpyNd4vAmkjH0IC+LdKCA1ZSLNaAcXXX58/CMJUjDeR7U1uBgB +oUzPPfvBy/s+1zHvW2wHaXDB+jK4iCcn73s5NrgYgMEF5YILKyavdLTO+yiKDC4mg9vLaTa44MuS +wUWuP24vFADUIze4APQ+gcHFSDQNLqTLc837PCYGF5veZ/A4innfvoILeeh9jrVFC6oRmXlf9V2C +C6D3yZ6c9wGiQYrJ+HjfqA6VIbgYWsD76N8TXAy6DGXjfQfC+1DX11YEF3O8+3xKJuqBiyV8nxms +qHLviykesbH3scC9T2ZZ4ILI9FGIE7honiUAowjfh3Xv87ZKwfe5MN83QGwfLpUSDZbvO8b36aqf +d4GLgC5sH7DVwEVy+R1eKHDBTw6V5hVtOVIDF1LFPXAx4nzfv6e4DKEbuAj3wMWt78tCkssHTsji +EFygHLgQW99ffeCSEQxcVIADFywtvocQglm+z4P6PlD1nqdP5fsM/vV9CPm+aQI/x2qcS0LtwDTw +44vg4nAJLvQT/IRI08MNqBWTQQouJmjBBTDBD0xlGfxM5m/AOcGvwekyuGC94II+FPyMTMFFWhP8 +iJqlmeBCqFSLFVy40h0sB36dZMHF0l/mcgUXSZC3Elwwgd+9qrdFcBFILQkuEgEz8AMAwQ8ZFfzU +G3TAkTlDcMGWbnZWn1BwoRlFQg8RNsFFLBIUsD1+JAoujEhwgWTl5xdlDX67A4KLHv568MOIdjCG +3g1+BIcs+IkygosM/MunLcmBCyc2cKFM8DO/qJVMteCehBiPwc9FB785g58+oh2aSQe/X6LARYMZ +wo9k4KIPd/ALJw5c9DyD4ALlfwvmAVwcRvjV6sZL+Ckf0vlvwUoAwMUDXUrYEaySCD8wPsAF4+B3 +BFxEYW1Ug99Tiavgp95FYPADOuDCnmMBF6TwbRG40BXqaeQCFxnD5qwWD37A7oLfWxi4aLDABcSr +HfipbAIX4LoWuJAUMvzwLfyQWkDC8ANvOthqd+FXX6kRXBDZJ8FFybI2/CAQXDC6w++aH36zMwuH +n+kDF/4d0yRsgYvT8AuZYACnPDIG81NMaqoIXEyLH0bjChXF7zjgomALuFhW/MQUabX4cflj8ICL +ARc/X/QbyO+fBS4CCVx4f5QGXJjQRWLosvjxIwQuWmzG48dvwMVkyPRk+AVkt4XxB1xAHZXwLboF +Llq2IQxciFX5+I1NkBDQmyPL7ocUOJCfyiXulSGFrCRKsCUfPn44Q5l9aOT3FmwVOOCRZ1ZniXSg +Ckgx4ALwd1AIuJCRARd/S+CCrST54eGSX+AmP0s6+YVSm/ze/CKv5Ld7hQIXxghcTBtwgfGDIocO +JAVc/JdmjaBA67ZgSX6RlqRHSMtY8kP3RDThgckP7hCqQzz5RT+kUJUSwn0Q4EKg/IyBlB+yKj8H +nBqh5HWwAXAxMlRUfkcDXJSVX5LKL5r4bzFqWVbKj5kkHGUn3EcDAh3w9rnwHnk1BroNK7fwfv8t +5BGAixlF8+SMlN+JWdMNcLEFKsQGcDHzABf31So/jzZEo6yVX5q/S8AFEdOlARd4LT89JMKy/JQa +0az8KmHAxXB73yHgYo8yB6Ov8luVA7jI0bxg5adjlJTfcuhU5P9bpAuKLFYqP3p/D8ubAC7Yy8pP +mLnKj93/Fkue0l1QJuWX37ZQjf7/LQ4NagBckNttw17BzgNcZHl6gnUFieHcz0Xl5xsDJh5wIcMJ +XPCV36IHyA0hESVfDriQXmWaHzUonYNZ9IYzP2nI0nlnyiVzgItiEoUgipP5rbktxCn/W6Rxf4uM +/RbCdEvUdYY0Ur/F0ccNgJnxW7h++sV9i3EyS8xvJ+FCCSN+i3kII49CUiKEijJkfgG2hTpd7Fsc +hVLfgkff4rkTniHm5ztZ+Kphfq4v5Fh4+xbY9eVsNemYvgX45Sd0vsWefAtoYpgfmm+hMBPCZzpe +fvcXlIZR3+K/sAZZ4vKb9C2aX98CKrXf1r7FCLqs/HAR9S1sDdYG8/j6FoCw/AxsiT5P27dISW/t +8sP6Fky0b3HUll/OPBasyw9x3wIs6qUtFxS6qAOxb8HJJOFFcFJv7JCgzMsP3Lc4XH5xYKGhSLKW +X8e+RU/Jb2HC9FsAjftYLCC0y0+rt4U0CMN+i4plhYPL34Jl/S38HyBR3W/c0tH+7PrfAiMEcLFc +frH7/xaeC8CFePlt+W9R+v4JrQxqvIb5Gdq/hZTjzJDMl9/f/haRxpPI31kmY/tvEaVgfsf2JPND +/xYj0N/ClRaM+QVw+Tn4W4h6e/kh5jsuP5z+FvQi61ujkurQvwUOTH1bHbz8SCTMD5sIRK3034LD +83v5GRWAC6oD5ydSa47hvgymOb9HIGBhfk0trZMf0G1hCHCxZQAX25cXLv23YIF/i/X4Xf0tiPhb +GIN/Ah0/rL+Fdtd1Kv8WdqiiNvS/WaJRP5j/t5ARgIvx1Z3/Fm2sAriQi3UnIeANBEV+4yUz+Y3/ +LZolvz4L/xa0Xhv9LU6Uy2Bj8vsPctwyrPeU1dKn1teV8FuEGX7OfLWDu+tRgvGO+JbxwbPL/4Q4 +cMtwZRrN9oHMi1sGut+oPQU2xJAqgIQmGSUCi7IthH9X8L73jabcXPD+Lco0Llxk7p7t45u/LwAj ++7eA6qcfDGMIlWunMrB6E59fnyz3zCpq/i2E14kPwCd7gS6uyX+G+rcIKwMUoTUOoJfFib+FiOxX +6WN/C7MJZbiXsX88A7QjIVXkb1F8qx+B/C2+jInTFg9PWzwczzX0QQVVpwDIH8LB04EOzVaC/C2U +nSChKo9/+MndgTLQkQokBHIs4GzPw4XuJUSi6ntZ1LaglONd2qBQZDcl/xbupEyX/FucLzJwe7mv ++UYU7KG9TZ47vH8LRToDBxn0phTWErICGejmlUHMs0eQ9omAOeEyn5rfKOHXM1r/Frc7xZlTaMUX +tDAz7XPUAqPK4O/fIurfjq3+lKZTb4/lDBJFTsoHfbjg/+BvkRBjUEJaeTnxtwiw4Ok+5qhLM0xK +AZRnM/WBv0WKU+6wRuoh6rsxQd/O+1sMWflASXKS0/4WZTxmzvacbQy9lnTK/lChB7AJrzLKt/pi +c7co1cWcbjHYBhgjDpCC9PxbFA/CamFY9J5+jaNm8W/R6/ZLFSYUmpl9mz/4B276ByIdSVkwmEo/ +6U6P49PUcpn+LRzRl1cz0hXeUELuEq5/ixDFiZ/kEs6SsoLj34IcLZf6W/gmM3vWjflDf4ScK74+ +59+iUjYl1rVoNq90/i2YN1lr2S5+DcgrkUbYaa1kwMMUwOn+LZBbUnJS2pvnv4XQDYPwRBumvQSY +cKlhuNAN1gq4xGwytK3tVcnBq8EEcHTrfhcy0E9qSuaF2H8LgiOC66ICPIXhX6LECJn8t7jFcLME +YFwl+pBnSRt/OJgkgaVCJEsEuCBCvv/4gXbilZT2BrgITaaMve/+XjACBhTyoU91o6jyQ4p6Bsz4 +IcBFkutp84KBZnD2wY0HxlFeC1DC9a86GOAiUYlDgjasIGIvd/ftGwa4mAEzFeWx8fCrrwwwwMUP +mn/oCXAR83AxlNT7zQdwM34hRqeZ9wAXwUysnTH1QdcVMHBO0R8dmQXJpHP7EAMMrlqjgdXNFSkz +wCD0xij8R4lv6tNWPUYfrZN2gItU+tJoYzDpJ+sNcBGRVN08i/Ip3BJiZUrf8Skrpqoht6z4gBVw +4SS4EQcsSUlNt4UwCwPb8OB8U2iKUXWbf/GlBQE1IhKm3Dr2FyHg4uT8UpW/R7X0Ai6M80HRYCFk +D98UcEGMWr7dT2vldzPgLTUTfljARY9z1enSD0lfmsz5ExMTcOE67wVdjVT66/MZcBG/R54MZcXq +NOCioVkBqCvLo407TKl+iQ+Y3yCFHQQu4i3vx4aEkRAJXDjmSPhS0dV7QYttnbfXsXHPPbYtXVVD +vAzLaXMtqQdVXHOugCeBogrvtR8rFdQYnlhADjqgvcD1w2BNI2GgBadKA6sl8s9ASvL1wqGYuFAS +4kFt76BPBi4WM9RdtF/IY1Muhz69oAB9UddthRW6ev5DIq6BC5G1EIPgou0We9m2zOaJz0BwEZF4 +NfqJfPF9EVxwbIOZ1sK4+JPkhUb2ijOeK6LfJ+JcZVyUczUruCAEPuj4MOMFI1vBxarPlbXWYOda +4AitWm9piIYKLmKGfYFftkVRcNEolCSFE0iEDlwXs2IeImft6W4vB09wQS0JLDldT1Zz1S40R3pc +amxqUZKWCC5owkZotqYaI0ilZtgFZ1eIHn2cg7IfvkrilzyCC+HS0L9TOtsYCC7ioX1wLwDKVdVk +UgguShiei+Nlxm4hq7lEcFFIuIExTH61gTUGggv9Qfs1jfB1yrZ0IaPWmSB7u2eiZv+zl18ILmB1 +XZhYjQlzfqvH0gXDxIkiZMPu9JOjSvsnwBLiFZeng4MT4SIQKH/D/+exfJXtCGDpwkTOlhWCi0im +rFQMO4ZOtsaKEFwoRDS2ObB6RE6yCC6E9OXp1rhcuqA+V7y6JvGKA4H9A6JdCi6ipI3fD5lCTn3m +/3Z6JMFFP5ksX9mSevWXBBfxNkjdg+CEymXJpOCiC1wIe7dfn79/tVWwtccs9Ju8ggtKdVHVwZQK +LqBnFmfLQqCCCyGRPBy+C1Accr10Ibp7oBb9KcopFlwUQNetuCfCHgwf4N6lC9HShw== + + + hnSmjBAZ6P5g+MOlC1yj8X969nD9ufpQIXeVYixidf8FF80Ovy8qAE3TfRPq0oVrFF8l3GM2q4Kq +BRed42XBQZNA26t9LbjIda/BmtKrFYC80O3C4vZj9YLFRScmgmz5TadbcjvaVrbPNK5AXHBhrBpW +WRzRgFMlxR/p+e6Ci8krECmXtmykzLwSM/fpF1yEj0MVbe8784qSmVpj8nQvXXDbLS608suakytw +/ahfulB85lFW7p9ZEawF4i5dyEDEVeS2EOXup7svXaCVnA4aLgbMoP8FF9oz6Zpn2HRA/vJ56cL/ +DGFS5A487AtFCy4aBjKB03SnMXBdLoHyYcuGeJeewi9d0EgRzoMUKpJYYNNLF44XfsssggQ1zBrs +x5+ApQu56MXOHiZqGpYu3Gy2XnkuuMgKya2ZjSR3v2zBhYDhDr4rBTeXfZXykAwu6k/THcmZTbXB +RQ133YEfbXBBA4UOnhWK+Aak0NTShWseNWRcHACKXFuDi6VrhEnVr3aUC0VCNRg40tIFgriR58lF +OxOEKr1vtxWgEWhwgamC4DV6mYF6E97gQsP5hLi1TogzVdjgon0NHEkgMZk7lhdOy1wg7LzShWz/ +zhSaBhfV4nSJfnhhGY9KF04GV4Agj/Pv5BjZN/TIr9M0ptgtozy44GU9i5UaBBL9L12IWcsu7ulS +wmvVbRyFKpY110IBgLbbH3KKvUVkXODSSY2UpccsSDi4KPNLUAgThJhXUF9087p04U4ZBXM4HLII +TeMUPA4uqsgN9Zp+iXCXLujBjBqhaEV+8ePggqAXD7SPPb3ByoC9JYjkngNvYv8OBhe7qbJcePPq +40xxBZcuLHgSEKA1ZwtrwcXCkPJgutCBSzuy/2twQTRucHqs6YIGy6fWXqOzR4LWLN0MXzs7NU0X +qAgaJZLG7C3CphQti4MLMvAJHuIJQGJZ/dV0YeDcwXgmKu7gYt0hmGh6UW1xx5StkYOLTPtE7Va/ +EfX7MEqxY2IqhGXUO7ggQDZ9XkPJQRbu208bCXyhfy7oFFuU7r5PoxlanyzmzwW1OmNcn2v66MYG +hFed+YOL4HN0LohZtix90v8HF1kDywIxBrnTcwZGFAxuBemDKlu+GnQueEc+Q2sGcMYilA4uYgkd +j7GWLOhc+LoZzx5O3aiJyLuic8EgjxFpwJe9Iza4yDiHNDciP11qcHFXd5tuNT+DDVmDC0jZCvTn +6ICYzgXmi3ysRAtHvxA7nQuV8gjx6GekoufgYpaNI+RPRWzlS/54VCX+XM6F3izu9xNoJ3T+HVzA +auoFMfBaTh806GDKuVDI6GZTp0mdQfdkYTwdXDTLPzn8V3WpO7hIIiM9vzev1urkXKBPzbz9E8Li +EqnNkFuM7M/3I0VIT2Vab8I+fL7wBuEixHGnferKBYVPeBAumkF4JNXvSTKiQQjhgomuP3dNnd4t +ct64IQSLbQVRmp1ki6FzmE7eRfLgguqUefoKMgZKiXWmKEcU+h5cCIiu4MaioHNwwcCOEGdTxLhq +5PicC65GhvBWWDFrtA4unGCSlBylvYTfKXf/89t8+IWFZSYC6QYXAqHG/hk4CIo4t8FF5Uuj0yrI +iPuQMudCFtEJtc8X/BvLuAdVKTgJPNC50J4JCxCwl1Cx92AlBxel9LhJrnEysj46F1Z/R9Ft8KEn +PyQcXGjCIIR1koOLLbp7aAHoObhoN++OCIyIbgmQijS4KBEuow3868uYoOU+BEHxBheQZ4OsfQcv +M5ONVMsSAbni6Fzg2P/4QR0Ab8CaBhdCqf958COyw9NpMzXoTa8QBR5/OpYuoKafS/P3P1LcIsR2 ++NfxK6inc4G5PAvQrSt4tYaaFaNZioo3uEjK0iYyiV5H5hsbXDhRwfTJwrvQG//h7hx5g4u4WDif +eLVF0QYXT3OZGq3YRCXQMH8NLqp3ryT44ZN943iDiwfBBXjItsFF7PABT/HmXLAFqjMzx5+cM3wF +6Jxur4xWLYluu7jBBeoKdauFBcLjFKmTIBS8vybG1uLCgTXaoGVcxsUtPDemxopLHUS54MLMfc0g +p0A72mk5JFwB+926019Yz7lAR2eJ639Y1TkXLnBM8MxvGxcKV3BBjmOAIbZh7/XEFVyEmdu84Lvr +chXbUvRVbwyUAnPOuRAsjcBhhYKLAJAMBaq4AXVXfiu+gotn+UzwejoRiLL9IrgQCY7Ean5Y5U8/ +cM4Fe4UdoIRMgKoAcy4kcSJ649tAwRNcKI3ZBUpu7YakMSl//k/KSCpEizndykKBlnUkuCD2pInH +hUyMa8EvSHMu9JOkDzGua/cGCAs8m5URwQV5/YwIR/XGncLtJ8trfSqWBcKR6UZfFs8zJGy4qVhU +BLD6grWUJx9gEAF1BBdxNwva/9H5VDjBxc2IoB6PH2WTvdLd2lNNcBErX0QnfTyUFKKGEaGQnZBP +R7xeG1Qs1WmCCyetpj/sqc4U68/4O0v67Q7NnuBCYJ3TalcG+9DjPpd9Jon9o9XkU0aiYgUXSjIF +Av9IWwq+T8FF16UC8pGirEjEwuMKLipIiZ/5Vprg6xZGaGDUqu4KLpTXeHTSVO+UCi56O1EdvzO1 +pgDz1LaAGUGKhPohqas1U62iVtf1ZwVaKip9SLntLS6tLfhPMLA8q2N/TSk/am2BjzyFohC6FlyE +osz70ZfLmF9w4Sc2sYcxYY2thzUCgIhlLLiggPMNBu+6xJ0v7BdclJYmAoEvokkMsIV3NYJmup7L ++jJKx+BmjAUXvmXwum6mYMjYggsCGTW1S2tVvtRpvbWBRai6J4gBpF4HrgfQezZRIB4R8c0APAAP +wAPwADwAD8AD8Ig60A/yB/gBfoCznHQn3Ul30p10HUO3iC1ii9gigH/gH/gH/oEHo6Ojo6Ojo6Oj +o6OjS9iPoygAAAAAAAAEZTOUOCE4c4qGe8i8wDhJUTH6LbDDjAkM8QMJGTQwQlArXicYI67WPbMQ +SaXAAxqo0cJCA+WlxA0WPmROXLxMLqA+Vsewp42U+hJcgAEH4MGHFE8uhAqVIGhSdqC0fogpOeKF +y44XE9GrxiAEENiAAyJAA3u9nDxBrFgJIgbliBgVI2JUSD69jpItSFg1KIEHXJyokIT6ltMfsxq5 +uEwxUa9C8pz0+yc1b4ygcJCsXMBMKU6gFF9v3TTPqv6KxqBHj94KyaOiNYIR6SpOPspOf8yRpQRi +IfI62TUMj19Gv8pHT/nvkl0+tSk+gnUpysRaMKwUCqhPgQLBaIVeqEI+tIwQIWMiE9rfLVs5TSW7 +K3xOotdHuGjZAYbEx4oVHilSVIS0VPpNo+VLinSAGzFctFYitIzRsEvp0wJm6tESI8KFC4+Xk5Ut +w6BEHFDAEitEViehnqZVqqESonISxfx8xlUy1fHLitSCpGXy4yw4ZSH1K2Cnl1OIVcMpVCIXE2hk +t3WgxEg8OchlV7kNgxKxiKlWSiCVLaf8euyWY/jsIqZSGXlMPrrL6UPy4yynEAlmSa3amyZrlncw +ccEQ8TGeG0bkp/S2y0dP8e9POtZACZkAEkEIQfPig0wKjSrk4nWqMbJKoRqFYFY/SR5SrOxISRG5 +ZxcrUQxYikbJqwfMCQ0TmIoWKUXDrXv2gQXMEThgvCiBrXihYk6gFCrRyUdv4XPs51//XoOEZSNk +NVP6VTz5SX+H4POqjk/1mzLymOzX46ItVKMgXExOPvwJiB/x5KaZJfHx2F7LuEQqUF4jIF0GiQpG +CArG5Kc4+Sme+1W/vWqm9nnk9Hn1uI+TFBM0YniwhKj8tgxYKYgXLzFURkz0m8SOFjpmYGKcvIZo +seIDpuTGycsGCevF60QC8oTcdAXMxAILOIDHCkoSM2CCYKFiQyW2A82KDypYdoA5eRl9XDf8ACF0 +EAAHDRgiqh4qsRsx1YwXauWzs+h4/jjSiw7xgsUnJWVEPA2WCMa/X/p8RwpJbM/dTlsR8To4gQdg +UibRaqr8eQsWaeb0QRH1sX+nxZAWQRGL2mEXQscWvJroM8tVUyzaIhUaAoYkBadJ9rsFGFAAAXTA +CKIFSxEvWFa0TCK4XTtuFL8vn59L0qOSNkpaLSGfxUpUw0QFQ+pV/t0Etx7VfO21jJQQAuyIAYOk +lYMlpoNFpEXLhOLBSa9aktl7BEHr6aPFZEWrRIOEtcOKCIk+p95UFbMmV41BiVY3DfN1HTArRNCg +GWKGjA8rVFrETCz6JbFoCoj/IYaKFKrRjhQXjBgKRskKh0osZc9NKkp73S2SfZriZrmiYRsmrRGd +TmH6mPR1LI9h91t6TxcOs4x8kr4O0WcT/4Y5/Sn/rpJf3hxlb0u5qgrSbyNEBaN1chF5VDz6CD6L +5PSLfl01PGpVHiolM0RaLVylFq/SC8mTsmX/XW2UVOG1CGZHr0oDhnKxGqF48pC8btVxCV59taxH +L6bXrjqeUYVonLRkUCIVD57S2yn+/WLypHSaZOS5oTLyEuprhJRqiJRwkJxshJxWQH3IXVuww1Fy +RhUS2WUTX6Yx8TEhfGYVGvl3l26LXLQkozFOWkbASJEC4mOMrF7ATiS7HcLfIHf1sGeoRVNCehEu +Wny0lMSkQiafPMUqFKMKufKZ5JP/aBHzI8XLA3jUWAKGDI6QlQqSR6W3RSsqe1yIPV9KohF8tvE6 +tTj9LP3tclmQSebhl4fgyVVTvFojPz+i0y5aJBwmLZcQj+K5VUQ9io5387xFcdU6n5N0+XMdJa0Y +0cckp0/yGeWOf9ATweseWsi0mEIzqJ8IFyw9WEJkTiDYXo/0eK+eKaf1ahnbb54EUXC6YhWiUYFa +RB7YPXtQ8h4/kc8u40qR9PgKFilGiGrl31lx26LhFg375egxSxWRqAS3r7yG4bFqZl31a3LXkHqu +CEnVYBl5kSIC83eYTseoQDdUWjdSWitWpBPeZgHtLPtVwRIRoYIFhuvUIvJNfLwEr1Xu2pPiR1X1 +kpQ/rnXHNCyRi8hPYQLF8BiGxyU4BaklSmZJ8Eri3y4kjwvJE3P6aVChlp+/RfAeQ89Z+iWJg16p +VXMRvEEvdJanVhWh5l+Ot+i1aji0miqZVfnoMiiQCYhv8bYKp3PUfMHuLsOQWy65qelVUS/rmt3X +7KbwdotnX8Ut/Wki+rxjhcTE48dmV6R+S/A4ha9Nr2qKWVUdx3BahelfwWkrVlN8u2S3W/f8q2de +ih+31c9yRKdtsEgzoDyG5IHptQunT/C6ktcQnV4ZeXa0lPRQKYEJ/Sb9vaJfEryG2rQ/R1O8pmb2 +hcMnoN2VyyghfcRjj3hukT833TEKl2lcJRkUyKS/Re4YVrss+wWt54+WvTmuYhY1tyT+HYLPorP0 +jCEpPVkv6ylDOvRQ9VziyVlGnhJfL72riEVJrgpaUXwc5Y6rvy4FszEbjiH9K1KnmF2jWpVkjjqX +kVLTBKsnF12hAgHRomWGSYuGJYJJfVi2zJvlHH4vl+liGErLnvRQbrpiRVqhMsFq+Q== + + + c5I7GeZk6FHLkHrGbnlEp1cwu4LZ1/yOUtMvR5jbXG7TTTIlxyH2/KQkKDX/k9xHkMSTw6RGJqP/ +d1c+LUU8eQvJh91wyp+vfPSUP3fZbQupfwFTjeg2Cl51MlzFbYgNr+KWxKq66MXbRtSaITyN4tFd +Qv6IPsdsGAWzKJg9wStehqJXjen1SXZJr8qa3ZP8PrHrBz13cpy97tUyXQRhTnu3bPa43iRv0NvF +b7SiqXe9P24XvVgts4Q8KqA+BUq0EvL8q2qXo02CH9W8xY8/x9B6jtzyCS639PcKf5fWEw+5lN6m +EWOhYpgEl1s8+Upvr/B0CO2q4HXUoiQ3bc1tLnYeM3TZcEynQ3T75K46GeYnmaOmqVVdbdp6U5aP +jvLZUT48yW6nXNUvwVGbqnCdVkKf08um5hYls687FslpFMyiXtZzkqvZfRHCMtEySnZbNpxCBXpB +gVJ3DHpVE/2qaNfEx0f0eTWzJT++ktuRevJjiGpTVev4Kzpy2dbbjsDvCA3D5rekniOX5dXUJkVT +LcPg13ocLYZ2CHrOkfY2N9vYYJeK23z0PmnpunGVjY/adYSWqhU1qecOen3ojeQ0DeyUwmfXXo/8 +OsumR+v6l2X+gXbX+aNIdxq6QaGPokueS2rqk+JOhrS33SCHe5pPih+TDKFl6CxLajpK0xCa0uCH +i+MMhrLn2eAHd9tOhh+UxL/utKIuGkbFLW+KOQnyadmjZEg1SewZu+UW7ZJWc6SWvjnWYEd7Gpt1 +POfoot8QO/aU4v1t95f1JUhi0VB6mty1Vcuxux6pKAtuT2y6k6E+hh81hb9ODj1cBD1mSVrRkWqO +VNNTinXH4V+Xi2DcaX0p3uIne5vMZX8pfsgwBzufFENmSULRVKuS3POJXr/q+BS3PUr2KImP326G +uxmq5Hakmqb1RLGoxwxTLfri3ym73Z9jiY+n4PaDjiN0dMGqCO2GxCyrRUXnqJOfCV5fSB+U7J7e +VYSWJRUlranIXcfoWXSSpdUMwWWUD/8i8pTstepdRWiJgleS3k7F7ic9Xbc8clPV/Kbi9kfLEGr+ +pXhqU5H9rsWxN8eUq7b8uAtVaOXfWTT8WU8VrIbk9OldRfq6xfRRwWyqTT/liH+cm3HebYs77/48 +1cuK5PcIbo/YMgg97/Czwc7dshEEBbnZnJzOydnkI9iTnugcS2h5alU89GJOY7NOyHX3cqw/7/Sy +I/XUQ7DuutrrQvD6V9N129JNK8Exb6K3OPZkGWedmuNqjkM5nZLDgTtPzbI1y3hS9MXwH0MeBNss +YzucuePirkM72W+iH/PkRdEzkq+moZwN2uGkHc7Laa+W1dx2StPV24bO8e60HvTsjrs/kCdJNOvE +3naHHe5pnzL8nGUufnOnuVnmatnsdTKn5V/nk+Euere3hUwSRI4j9AyxLA2KNvj1JDhKTVfb/qN4 +f1/cde+m5WN4i+HLbSd3JaWmL4K4x81aR6SeKJhNxW0dfmrWOTkg9JaFvOsLZkHn2GabWMtibnu7 +TQY50Fq2ePSROvaQoR5yn5Mcsak+hvCWwVmH5rRPKbLgtRWzKFf1ydBTirS3sdmGBrdRq4ZS9FOO +MNhNsapfijbY6aRYi2AqfmNCIBcolOp1Q6j5MU3Tmp5W9EXLpxj+rOkKdlUve2pVkXqKUhP1sp/U +3Esx9jj5825S/NNSFz2/FENoOUpNPPR4MvRHUGSGMB99pb9JcnoFs6tXNbGoaD1D9npVxzBbLtnt +1cv24Fd3HO1178aZm83Z6dgj6TFPfxR7MfxJ0h/F3OtgLStBQLwBnOAGMIA048ychnsc3nE56O3h +l4Pg7Hmw152cjbkBabmt5GzebYs3jvY8fhzXTjaCgJQczj2e4IbTgYDEXkcqSz4M7+/TQ7HccDYd +TnAGoIPZ0fiy1EMw/zyY287Nxu1kd+ehnWztPBC65uIoc5v+fW+msZ2sBAEZQVCMKFCQKFCwHI68 +cXa3eUYQRIZ7x+1dd3fdueGMm438dTK3oZsTKrlFwe9/mrn4uZyOCQKSdjg4+OkgWHud7XE52KnY +NpWq/OfNXdduW8xxewjWIdiL4D+GvBja4LdyNu+m0d/HblvLbbLX3V9XMksXu8IwkV6YRr85upyW +Zh2X23YxFJHjZwxDJhk6S14M1awTbkDCDYr+HE+t+jHHvxR10POUokg9dRFkOSAsB0XdaSBzDKGl +aE1JLvsxSbzbYq2DblC0G8ceQxkEQe0qg7XKQc/lOi/X+U9zH0eRmobc9cqm7XIsuS0IPUXpGTJH +lMuaZJgEw6A01Ufxg5qodvWYZC5+NtjNIDd/Xh2GdhjWnwdrHRz8PCbpMckb9Oyvg7cM3jKVzLJo +l+Sq+giaWhXVpiBz1MfQDsFPapreVaSit9fVHUd7XatpJggIeAIF3H16SKIcDrxpHnHsw1D/Orrb +zM2GBNmsmjZ326t10M0JtrPpR/G0pil25UPx7HRUTVs1jeRwMh1OrJrWapqrZXPXrZyOyumcHE6a +cZkOJzg66HCfJgq+zxuXdjj0952cjocCpEMBYnYyVdPKzWbVMrjrVA5H3XBSDicEAVm3Lva+s9NZ +tUykqjLntZ2sRIHCBAFhs+zccE4QkHPDQTcbutvur4uzDtzhtB1OytnUXbeD4Lxx5uZECpVJhO97 +s6S97c0yldNROx2Z49ROB804cLfNXveTZuk8PWL4nyZIVe/vyz9w3Tbb4/aPo7mN9jw3y+zv+83T +BkOywwFBULBax4SeoFFkyS/MjkFpqZPiHYJy17Ebl3Y6OPiZ1LSEovKWpR2O2eGgGYcOP1XrsFqn +J0WZ02Au85ji5xx9UhSdpOgk+RGswY4/TdH78uNIax2842Iti7nM3TK3434VPdl1NuPAnvZBS5L6 +PqXsLoa4CMbhx35diF3xUYw9jhc/EXs24XMXPdffp2Yc2eP+04y7Ts04cJflJJiLYf2BrqapnA3b +6cQbF3Oc7HVyx9mfd3+fDXr/aeqlOIed/HW9We7ih3sc7Xnz9+VjuJej/HUhCAqVw2mzjM0ydLN5 +OS/uPjXTMh10IDcb+/PgLdtBbwW3rBgWoaiHJPOvk7cOykGRdkBSbqt/XP91+ffdYmmP5tnJvhMg +mg4n0kw7OZyUA2J3ngkCUoKAfDqcEDcgHwgKM8v+lfWcqatpNwiKVHUPy3jrXI1DM23T4US42azb +tmYZzHGuxrUa93Zdu3FlJ/tAQMyM86equ3XzB4JO1BdHu/NQTsfT4cSnw4m0w2GzLO105K6bOQ7O +MpazobdN1rK689SMQ7LnKDiOuw3mNDfLys1m3GxGEBSq1sFH0C9HVstaLfvPMrSmpNY1ua0egvKm +zR13g16rddLOJrSyPInqo+kx0RsM75GMPe8GQT0UZY+DOYlYtFAjeL2Tou15rZaFHI7Z4ewh6Ivh +vGl/Se6jCHdbyQERNyfIDcjLbah2jTmt5Tom/UwT8rhgV7WmfvjNnfZ2W26eMSieHQ7+dXbH0VtW +d9sNeiR2NbWr/XVlB0XITUXuWxdHuutaLbtFMC/J+APlMCQ7nbbTSur5lyMvhvsYzl4Hd5uqcdKM +I4KgMDkgd+jdIZhyOPGm0V0Xdx28bSunU242ZsaJOS4HQdvrYK3DZp20w1Ezzn+a9OelnY27Zbco +3iIJc1uacd5us7/w1bZW0+oPlLnu7GgiCpARBOTsdGCOgzluzTi7GL7gOHSaOfjBWsftgMQZh+42 +HfTkTdNBT6Wm+Oe9G+dyXrtxbkdrOVl44kQJAoJyOOGJE92JE+/GgcSyhKKh8vyIZt19IwoUs+eZ +VvUXQ5SzKTebNMvQLGO1rdW6s6OBICCh9d3NlQbFNctCDmfMOirHsZw2i2GpafzKpuQ9zm1xtqG5 +rf68HAQ9JOlmWYgCBZpp9he6nazetj8US2c6QlWY42Rve7cs7Ww852mDIbtp9QfqIaiHYB+CeMeZ +GxRmZ+NR0T5F5697wa5KbsfmWISaabYROyhYLvNP9OW+eyRfc+6XZz6WMcexnY3K2dTi5+NlZYcW +l78s9dAjmSWoJD0kmWLVESnOGSfmtJG9d7eN1To12P1niWrbPAxv0Hu3LP60GCQxFiVY/3mmdESt +ph6CsrepWifVOu/X4WIYa9kvfi14ZcFvaVX/UhStZahF95OMRbDUOqeXTbHtCE15knS1DfY6+PPo +8MPDL+44UHqK4LUuhqvGMTsgqdbJxy90lqCzdDkN7jbY/J7S1NW2cwPSZp1X0+SOqz9P5XDWziYH +P/z78BB8Nw3WtJSzabMs5rh221hNWzud+utI5PjVNhIEhbnZsJpWgoDs4fiLY/6F8satHQ1EgSJE +ccL+wFQb66JIUtUXTf9h6IPfDoIeUSxRnFA7Gx383qwzcxztefHGqRuON4ABgCdOoByOyelkA9BB +00EHtdPpPxHvPI9I4p3Xdjhrp3OD31+Wc9etWkZ7nf15oNNElWi66YAoQMQNpzdT+AvfzmO97p+m +OUnyJulyGckBITsbnBxJqQo6zZEYVpln1prWm0ZvGZxxXi1jNc3kcMITKGJN08NQD8e662BOa7VO +zGUxl7GbBm5A2q67Q3HtcGIt48OwF0MPKeLgZ4ff2231143MMQx2/3KUOY3+uJKbnt4V7rixs8FN +MpSubrahnQ79dX74pU5TpJ76Ke4neYdfCDVNKNqDIM1pdqfp3pZ32w5+O0miHQ4uhqU19ZhkHoLv +luHix4Lb3yRNcbubJWpVVfJ5hIb/cqw/DnSKKTcMo9Nyx8GbpmJRkfmtPc4vw5XdhnEKhdCwHYIr +p7nfVpLvnzJls07MbSL0bLntqW1/FG23rOU0EauO4PcNep9zhMktjb+r0HFrRXvxW7XNXYYiu/6j +6Zp19jF8xfHIPG+vgznt5GzcbfOUpaxtbidTORyY20pp6osj3XVrlqWdjqtpMcfVXgee0EEEOZF2 +OiMIyAiCAmXOQSEpa1ubaSiHw27b7Hm1B9rfuGpaaF1btS1vXJxlcJbJ3EaCnFizzux1bIeDf2Cb +aSdnU25ARBAUJ4eTdjogCIrOAAbAnTixZpq8dWqmodrXBccj1PxJsR9FXQzXLDs7HLrrchDsQ5BU +nq/GqdkGdyH9hSYnczfO5b4ekrxB71OO/QjSHjd7nP11rabF4EdC01FJ8h/Hfx3JJD9jeHtbm3XM +zebkdFAO5+x02I2LO+4/SV78cJCrP67scDoQEDPL1I0LQUBmr/OM5D+KqRUNlSX9dbDH1aAXQst9 +DO/wuz/vU4qvd0WtqB1+7tfhpWiLYcnhvF7Hk2MPgh9S5NExP8UPe+ql2G7bmmVr1ok7zR/DE2qi +ULMHQbXTITebWwz7cmy37P64zxjGZFfFxw+dpyx67LfpIwg6x58Mc9Dzy/Dkflf0NQvt6mS4l6II +LUMoyWYc/xRLbHlFt1GsGlpXj5rGICda2Twc16zjbh0d9PCPu7/uDkHY42Swy0nRcw== + + + mjwptvh2i5DvgtsjMvSEHj9+NtjtJylyWVsUZ/AbqarqfXcxlLmM9rrY82Kvw0dR7WRups0cd3+f +qDRz73uzTO1w1E5nzTrlBmTVOLTHyR1nbjjdAAZAgqAgpS7b0d5tM6XrDYJzx8nblnI2JocDgoDA +oRiDIbkB6UUQVJJxx52bzbnZmJuNuQEJqazrgWanI3/ey21plp2dztnZrFsWex7tgeem06FAgYdj +aV39crQ9ju44metaTZvBsP4+muPgTXvZOB6O79a9HZh2MhJks2raDYKz15XY1GW/T6mJe5zNbTS3 +tZuWblvLcWnG+UtxhZZNppl73d1t/SjiH0h74LjZmFmGahv8ffXXkVaURb+jVm05rux0SA5H5HBG +DmcvyzXrwFwnZtSj3HeJXUFrSoNdLYIqp9Eh2I+j/XWk1ESpaMt18zBctQzkbMKM86/sDIKrlsU8 +vWvPT/qcxJ53chQ5m28DInI2bafN3VZz2s1t9Ka5WhZ/Xh1+rrehGWeknk/oOUSCLRYVmWQoLT9o +2XIdluvE3VZ/nuxtH1QcuV8ZkQ4j8rzmmCfDd+vQYPejJV+CLJkFpSdITXmTZLnM5TTZ62Bumz0O +1jgxxwGt56qmPenZnyRIRT1m6aMlCV+/6nknwxGbilYUBbchFb3FDyfD1+viz6NBEBdB/xxZMnui +7yJ1vUXRHkU101ROp806K2cTb1oehroo6uPoblra4ZAbFLDH9SLYdjitpt1hiH9gyeGMm02aaa3G +lRzOu2k46IHMMjSO7cZ9IJtsADqQHE6qhT0mGm5A2C2DN432Otrr0k5HBAEhORtXy1otE73w7751 +CMqc5mqammWtpqWalmYZu229iorouEhNdXGkPZDduA8FinGzgb2OVd/5SK7mmcS6/6l6TnX2vnbL +yg0K+/N8cmQ3zr+iK3k+rW79geRmU3I64wZE5jYeBOvwy8kQlJ68CMZbpnY2aqcjg2CZZR8ICIji +BI3K1IMMTOu2Y26bO04PwzwEa6/LQ/DkgNjkt8QNFyy5nr+O/jpW69xiGIMgLYZwx91juKrn3hxf +raNyNu2m6SXpwm1aHEEQEHn8JGBEESh/aTfHHh15lJTFLwa9PzVL7EpyNjDIvWp5hKr01+mkiIsg +u2Uy2KlYV/e80Qm69DYMbk3kV3WardaRPY4fx788Uc4mhnWqQBFByKBSpPXsSXAnQY8pkvC6n5qu +1xm9qA1+87eVWpTls8PmGLWyf1nmYQhvWuuOiXAhQ+IB3aSok6Jvkj05ekxztK57Wb7g9gMG5RTD +t/jppTh/XS2CcwjSYYhyNr96ypxEIbTNjyT9fbUI4iWJh6GsbSuHc25AQuzKm6Ydgi+3oRxOq2mv +lvWjWFpRDyme3NY3S1fLSBAQ1wPn8nxDMuR0UrRMsue8CNqbdnI4IggIuQFBtawGyZKTsZ5mw0Rk +pKaulrVZZ+100k6WdjrmZqNmnb917/JUs8wfx/v7Zo7rwdDdNpKzITkg/FmugEB3CLZZZ8067aa9 +3GaDYChNc7KUQRD1xjxpwlvndrS107HD0AY9PQTnblu5Dku/SW9MfyDcdWenA3vey3Eqh1NuQE6t +Q4veLX6is2St6g5+bdY5ORxxAwKiQBGiOOFBTRP83qO4j+NKXX9RnDUt3YCgHBCUA0KDHMuWX/DD +yxGknnf40SCoalvZ4XwgKGoxzE0S9rjRqr7kGXSaohTlSzIEAelAULjg1iLkZXLjFKzaCEnBcKVA +K7qbYl+K9fdxICh293ThUvWjaYdeS4ZZ8LuLIS+KuPe1HA4vejIjEC+KJLR8uS0INXcxvD8P3jRx +cwLm20GwUPGy85S+ngH1sfktrWcILWuQw0lvRJ9Favqb4gqSxwdsVULPoLK8v07utlbrnOTVB8xJ +if9BwW4IXodWtS/LnSTxUGS3DeU6PMiopF7YxKYxH3+knjTYrVpHzTrmBsWnRVOoTL2J5qQIStF8 +FOsQtL0vzjSVw0k7nNILy6KYahkNfvPn6eLIi+MuiiwikD6S9OfNXld/3h2GN3nK5DlqXLfZjIRA +KJ9P7XUyl7lbp9UyeNvQrHNmGQiCIifDJm7QUMExvG1ulq2dzrjZhChQlJuNmmUy+KXbdmadvyxr +z1s7nDfL1oyzblmqddxu089SBjv762Ru00cRB7/b83YwZDVt/kK+NEkOx922euPszguhKD+KdcfF +3BaH3grPcdJ0uQ4nyTTL2G1Ts2xEgSLtcOCPq8VPBjmQWaLS1PY6dAOyZh24495tSzubt9vcbnM7 +7j/PXxzhDuftdGRNsz3P9jo8/GoRNLlMDr18DO3Pc7ft7GQkZzNyNvc4qhxnZhwTy5bYuackdRGc +vU7VNNfrclOM4XU+hijXtMEisTCR+lKcwQ3uMpfrpF1msluUjx97X2g9V/hdZKbv75u5DdaytsOh +Pa70tnLHoVp1xK7/s5S7rdU48ZbR4Laa1xQ/B6mniudOye3QSd4gx4/e6k1VdloGxH9Qsy/DFKE+ +xsPzJIiDnD9+JxYFoaSINUs8uAl2YbUcgtd6Sb4d53Ja3G2wx8VhF9PrnhxZMCvj6/sIxp7mbhnc +bTXo8ShJil3X60KreWrXGvTaLZO9rv68uNvgTuPRUxbDldN4k4S7Lu46uePcTRPBssp9siiiXjiE +pjDXfRtOt9l8nE3KbX2a1mHIah0Rq+7lOH+d2umAKE6QG5C0w/GQYiuOebPMRdHNMhMEpNxsWG3T +xRHmOHbTRM6GQ3EC3rSUwyk3IDcI6mIIQs3/NNktIzkg8seFxC/pRF+Oa7WszTgzt8ld15dmHYob +ChQux/HhOG+cugF5tQ6sZboIlt6XT9ezk71eN4OgqmWrlrnb1mrZ5yx9crzDL/46nhzr71O1LOWA +tFln9ri549gOB+VsWi2bv67+PFbLzg1IvG261/lhyIOgzG1r1oE9jga9l9vODicXxVwkZ+9LO52z +0/FAUJAcENrjeJG0P68nxf80U/BLWlVRivqlmGYgNbi1ZBb1trKn+aX4OceRWo7U7wpvm1gVzTg5 +Ca5elx9FVut4ypEPQRz8Xi5jtQ7caTFbLsFv2uPusAuhJEnMrtDuig2zXFUGN94M/XKswe6TjiJ1 +C8P0y/Q4akVvEbTDriSnRW5aL8EVvKbg84oPz3LV3gx3M6TDbjdFvQxXLoM9rdSqJbltcteik9xH +8OU6O/mpXnUGOZbsnuh1yWVBLbujZ12Kaqf9Kql6Wdrj7NA7va3KfVFs6ylH+evYbns9zhZBNtNa +TaM/Tx/FcNPp6HAi5Gxir1uzTofiRCyGINhNwS8fjieH853Q4eyA5ChRKeF/G/zmz4M37dW0tdNZ +M87J2aybRoNfm3XaTkf/PrzzVg5nBEExgqAgOZt32z6m+W7byeHUn3d/XS+GN/ixm2Z2NvXnsdx2 +1bZvt/GkCDrLfhzp72M17ex0OhQn3s4jqWz+gfjn8SC4fx8PgrfXnR3OB4JiBsEPyuIi+TFNEory +o0hzW81pnlEcrernPONta7OOzG2xx61Zh/a6j0nmXvd/YM1tIsgJcgNicjbmBuTkbFwt+0WydJ6v +VR1x2VBJvts2bjbvttUf2Gbbm212+IFSs8SmeAiWm00dfq+6HqUq3XFuxmmzjf15+Aji4neP3wx2 +dtip7DlMjkNo+TFFECr+6NibIyg1S+76elxvkiQx7BHButtmj7tBzz/JEpvuIxhz2egUUymJSseQ +Vz2h4ZW72qHnl6M+gjXYqWLXlJ6vdxWZ3RI7bsWtKCVNa+mTH4lO13ChSnLac4ahVETBaslVVbEL +Uk/+JF1PQ8VtjKZLauqL4N1lvfiJTnLVqiz83o+iCW6HzHL9efuahmS4X88dHUer2YLdG/xet/wi +Co1WNxdH2uv8c0S9K6pVS6v6Oc/a83yyzEVx00GHkMOhRbA3x1XjtNxGWlXQadJeZ4Jsxg1Iydm4 +W4eUrno43uAHQs0dDGeOazVN7XTcbXu5jdUylLNhORzc+9wsYzudlMMpORtzs2k7Hfz7Xm1bswwH +vzz8Vq/rKUv663ZSFKGoym1FKEp/3cckSemJg57cbfwo7qEYb9vMcfK2yZq2hyG8bXTH3V6Xg57c +cWnGebmN/sBW2/xR/Mnx9rp40+xuQ6kqCq6j1tZTlqDz9JTk/Hlnh5NmHHfL4KzTc1zedfXn+aVY +exubcVIOSP15vkjWXScyx5V6isxxD0P7++JtS7PM5HDuzTOlaAjsgspR5jY14/TmGLttj4muHc7c +bffXlVB0lKL0x7lcJn9cPoJ+OcJbtpehSqiP2XBJPs9gnUzwui/F+etIrBo6y34EQSfJgl2X/JLW +VKSi/1n6pUgyRQ/IqfR2jFSJZcdJbvpzmnro3V+nj6DJZXkxZLkrjJ+/9LgJTodO0ifBPeRMdJoF +ijRqU1S9xghBzYilYKhKNB8PyCzr0Is/TiXk+c+UBr1QWprUMEnsqtAzSj2b4Hf9eSWXNb3uq3VU +s7vy8bzu+hS3ohUVqSdvjjGn0YyK5autB0VhMgyj9FHh4VusGkLNnhR5MfRLMtWyewx/Ff1PsidD +NdvUYbiPY5tlJmfjaps+iiDU/JjkX46yx+Ei6IpfEYr+ZemP49xx76apHU7a4agdTrrZqFk2bkDY +LHMzjc2yV9Nqjos1rc2yVtNcTZO5DXSePknWoPcxyZ8cQ2f5Kcv66/xR9JDiy2Wzx53S9JSmO/it +HE4KAuJ2OrXnjZsNmnXibuvJ0f6+NsvarONqGrxt8aa1HY79efX3sR1O/nkndQ2dqAhNTSvrk6Ts +eSy3oVpGckDUjKN73mccSehJOkvPCPKi14ceH4I6GKoZp+SuLfz+clnSaebgF2uaqmWqlsXaBnOb +yCQ/pPibpU+OqDYtrakNhq2W6SKYg54OfrwY6iIYUk+Vq4rQ0ga7VduchPYlaswQweuW3Mp8+JS8 +TrVqCDU/qJmToEp+XUAhkvtWuSuqVVNua2LXkEnmH5d/G41XKsaq9YpfklpmuSxKRWGx+5Lf0prW +XidCTdSaktISNruoVkW1qStmXTJbclP9FF2QsBCg44aKlCnFz2N0/ClHEGp+0LJFx7Pn7aZ4wt80 +nz7kbVPqaULN3yRr0Auxqqhta4+DAfUpfI+CYT8te1P8nKRINUt4HLb3ebqm4vhlz2H4HOauHzLk +SXAfwd8kdVFEt2zFqBQ6T7YDsmYg69bRSRL2vBAEBcnZ4GDoj+PoNFGsmmJTTyn2Y/iXI7xt9vfd +H6h2OCgHxAbBnSThbTNBUIQgKEoO5wZDWONibetBseY4lsNZOZyTsyk5m9nrRmq6kyTcdadV/ZRk +KT1dLvsxyVv8Wq6DZhsb/Oqv20XwU5K2583b5mYZytl4KE6YnY2qdWaPsz8v3jZYy2ItWzmbNuu8 +mzZ73appaacjcxzNcToYgswzdJ4ekny7Lc0ys9NJNc3dNLnbcNDzjGFqRUNilyR2Qw== + + + 2LT3OLfDQTsgI5dVuW4PfnnHxVrnH0dd/O7wWzct5ID0ZOiPIv55dtfhHod73D6G/2nqYghvmf11 +ojRNtS2KVUGlGCLDffzeruPy0AnI8QNW264aphH1KkR+ClBPYsufs5RBLsY04oFyUoLjLDd1vWzr +bT1kiHuc7W34t7Hk14Oq+yi23jXkZU1i90R2XWsKGsX783ZRnDtuxKIuH3+F101uuvWuJfa8SzA/ +Qx8pUiLwQxEk+a6SXdYMj9L0tKoj9MzDb9U2uymW9HgLfv9SFKWnSU1NKgpKzTv8aNDbRbCFSZSC +43sUQWv6qmcRGVax6Ocka1Fsv+9XVVTL9qToGUFQGcJgFrWmovTUS5INP5TDkTsNZIarl1Xxf54s +y81G3ICgnY6aZeYGpPa6lgyb3HNIm4JKce64d9PkLXMzztnZoOS5Vdsg88S7DkSOn3JEqenueSQK +FGuWvZl2goDkociLI+19dxjWXzd3W8ttcAj+5wlvGi9+qdT0kCH9bfTH6WMIOs1cBEkqqoMfzW0z +p8mbVntbSUVx0GO1bAQ5QXddvG1v1mE7HHnbfJLEQTDtdNhMgzcO3rhzw5G5Tg/Dj0nyomiLYA1+ +fTn+JflmHDfjxFz2ilkS28bFz6SaMTjdSs8SKYZIkB89G+Ry8fPJEQc/HQRjbmu1zstpsrf15YiH +n1+SJXZ1wW6Ljqv4e9fruluGdjZ6OZpcGO42+dt+lHRxCvkQeb38+ghGUzRsgtUYTpfk9Y+OIfab +os8v2S2xqOldRazqQU2PWfJjKEJL1Jq+XPaEnrrHyZwGfx0NevTHyd3Gj+BPiqCSXLErH4Yul61c +J0W/JzzvKUcQWqbg1UW7KXgVrebKflt53bplGVMIdt9w1+kiKELN3xRFaflJSVGb5iLIomPU+/Ik +CXPay2V/GapaVYSifDnSYPdZURcvl6mF9zHMx28vQd8kafCLvY7dNLjT+jHkxe9Dgv74reJ2RLdJ +8Mqd0KGFxytKodgsi1D0U5Iechyl6S6KLseVnA0uhvg46iJYKkFf/HZS9JBjrXXebKNqmUdd+/Ms +rWzJNHHPy70ONIYikqzBcN22EASFiAKF7X1017Vapo/hLoq/WfpmiYshmnVGDoofJVt0HPa2o1Ik +lWQfgvwY3uD3MU3b62CuSwLDKxVtqejLZf9SnD3u7HBQDscEAVE5nZTDSTuckaqe3JfuvJjb1k6W +cjpsps2dZ4cgDX52CNLhF38eHoJzt6kbFK7WobsNFrclNV257E9HlBo2leNoBH/Rq79M9rR9BPlR +bLWs3IDAHJeL4U+KsJa5W8ZqnVwMSavaj6LIHFUpOTrFVsya7LVrhnNRrMPu5N9XpFAsHv6FSaSS +0ye2bNUsq3ZV9OurJo6GKlgjHSGqHSxTiT33ZniPn6+eOTm+HqeToqgs/1EkmaUn/EDlyJPiDHot +p6EZhwa9fAzzEfyYIw9+p9U0uWOSWv5RNCdFlz3HeLVC7DnlqibVHK3mz5qsG075dxMMz2B4clmU +HY/JsCkt/dHzSfA3R1UM36LIbptdkr1Ztuw2TK97ynLdOPK3qWj4BglJX557WZ5gVzW/efjJ3fZu +2dtp9uflIAhvm9xtphaFEfEtSiAW3G4ndJChMsIAHjtK9L2kpih1rXLbJzWth2Ha6aCdjvx5Ldfp +ZLhqTw8J1p9nd5yccXCvm72u5bZVy/AwrL3u5Gz2kRyhp8g0bVAsOZ0QBIXJ2dRd92pauQHBRVDF +tivXJaXp/X0hyAmSgyInw9gcn1TUI4K/CH7I8WOWuhja4AdvGotlW+oKEsERKabSM1SKu/i9m1Zu +QNIOp9W0c8NBOZySXEfR/T0Ua6+Dt432vpnz3m2Lva4WQ70s5c9TtQzuNvrraI/Dw8/+OJNqhsxx +/jgPOn7K0Bc/fwR78gOlJCg1f5PEw0/NOmiHM3teDX60x6WdzctpM+jlYniHn+x1/Aii1jK1mjSf +fYYpFJNd2dv4E5wRW/04QRmlqGk1Va3p4tsuTB4Vnk7B7Dx+eDrWOImpKIlifN0Vu/857iT4UU/f +LGfQiz2uzTowp+3ix4sfKTX9crRBb/46+etm0KNBrw49XfxKaPmi1y5+Hga7+RjmpehSAvng0tKX +Y056JJWExezIHbP8uYuG9XJ8u443S1CKhs4ypZaotHS5aogM/yjKchvLbaNY5s8z1aooNtXHUP64 +e/xCK9qiaTwUU3DsmmcQisrcZnvbxxRNqvkhR/wD242LPe4Es7BbTrUrP4bt5736/MVkKrUsilVL +5xkiR5FZ5iC4djrvpsldd2adO/xAqTl7Xcxtegj64/ghx9vrbNCTPW7dsnEDcnY6dCi6HDd7Xm+e +e2naoshqGpt1UA4IygGRuUwHP54UUa1bWtca9OzP00MwFz93y+yv+0sSBz/QaY5SlBdFXgxz8Ju7 +Dd46opMkneRpPU3pmYPfDX7399Veh3I276aJ0jQfRXwEU/p+tLJ2CMLbVnsdCDVRLUtaVdjr4q87 +ve1KhuvwizsN5jIb5EKmeHLXLfv+KcX/LEVr+qMlST0/KJmL3g129sd5yFEXRZbTPOrZp6hdjrIY +spsGdxsugh60DKlnLXaitYTJLYwnP9lrFd+OEfEjd22HHT56PyqS2O+K0O7S2yQ67a8mHHI9i96m +uJtiHXqjFmXNrUl+o15XF8W44+jw600RD71W4/yoGILPpBUlqeZvjrPX5SEIOklVi/6jeGJPlNwO +mWXW2/KkOIpdVD3LH7ebIak1Wa8Km9sX/ZbelUdN1/tMTUM3zQ4917uW1BLVoik3ZdEv66ZJb+ur +ai2Gvln25qiXIh16ddjpZChiU1O7rmLYP8vZ8/hxDJ0lqk1NaPmLoKckfxT9qKgnPe0xpEOvN0kA +rFIGUNv9rZO+TA4ZE4nvNVmTN8nTJN0ihaRJnSZdSNyWaZYBwFJIUmpExYyLHSpM8wBSKSRNtuwA +bqjIgUNmxK9ryLjt0nlc30kcr2uMyNq2bVu/677HbVvXa7zX9f62ZRzvc57Hadnucbyn6T229Z22 +c37f912X9wHIlGybt2+63qH3tm67VHQyv/Fe3m9c3/Ocrnt9j3Hvt773Oa/XOm7Xd433tr3HM7aM +z/T3ru9k39O1TCyGft+3vvMgc5kewCiFtPPbvmWazPObt/Ob3+vatm9bpsmaxHke3/v81m0et/lc +psmctu/d3vNbJhmAC+f3W9/J3L55WdfrPR7Ai8RJHuQLsiZZZD2AUQpZ43Ut07qO4zZe43R+4/p+ +8/iu9/ne47tMkzqf3z09gJEZA3DZtovfa30n870mc8iEkDQzTjD8apQOwGQAKwZQ4m2Zp23a5nNd +p3Wel/V63/c65/lc5vne3vG6r/f8zvH6vnebr3N+33dervud7/m+l3M+3299v/c9v/k95/mdxmU8 +p3W5x3u8x2tel3G9lnEcz23+tm1chr7bMo7jO17bdb73dm7zcn7f9m3vuL3b9o7vLlzfdRnXabrm +cV2+d/t23bTe8zie8zS/2/mN27Ku0zov4zpt4g5gxQBKtC3vt77f/Z3fMmi8vnF53++9vnMd3/mb +lmHv+V3X920i637Xd/vWaXvH9T6/eVu+bbu+bZvf7dzWb52Xc1y3713XeTrXdfvebVmv6123952X +d3u3d97W9x63b/6Odzuvd97We36Xe9ul9za/67bc2zi/1zJ973t94/te3zdu8zy973t977fN97Z9 +77qe6y795uX7vvWb3/F+r+u+rvPa5u/axm+6xm8dl/Gbz3Vdv3s5z+/61u/93uX9zuXczvlb3vt+ +7+/7zmk8v3Ma1+Vcl2lcp29Z12t8t3sdr2mdv2Ud33edr+t67/e9l/Uet+1d1vf61nH81nn8ruU6 +r2+71u+6v+Oatukdr289v215z22dt/ecr2k85+m8zu1+v+P9xm97p+k75u84x3cZx3G6x3H8vvH8 +xvXbxm+6vm9btvH7ju8bx2/8vvu+7vGdp+va3u/61u36xne93+laz+/7vuP7vmmblun7pnmZz+/e +lntbl3H7lnn7pnVcvneZt2s8z+18l+3c5mU7t+/7vu1btu0oJI8nbkdIoh0sVLg8HtKqsmDXZNdV +tf1+IaptIcgmL0tQqvamqY9j/X3spsGfV5MjyW096ap6YKiuTUymWN/PuFg2VExMPHy+niveHiIG +zREyWqzoWCW0p3CRlvBhhwgwMAEidOA4KY3s8/zfNkWqZHrhOgTrEEy56gkev2J21TghCIpwgyKk +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 +1EGw5GxYjju9cT6Wced5zhNG0ym6XlLbvVna5Kh6nV2OIzeOet3S6/qrWoJfmI6LePiWka9EDzxU +jMRooLw4sIQPCdhRgwgalx0mMBct00moV+n2i5STIWrcOM10y6ePCf34GLacpmYb+9vsb+PNEbSq +M+jx5Uhy0yY6jmJXEmp6UjNGRdFeE4HDRslHVOLvPVxSgEjRwoQMmhsir5lRaIVJhJLbkFDfgCWK +QEASBHBpsWawmLAogZWAdtUc/2paqudRTavwvO28VNNa70s/ENS2j9Px07MHGhUfN67LsRSzLL6u +8u8so/8lNXrlNmqGjdhBowg6uEELlRQxSGA+VERoUCAWUB+y06cZvsvRZOOrB5KEQjCuV8/Cpvm+ +RxLVNA9ko+lwQjuBgjuBAgTHPvuaHS3dONUDdXT1VbYeyzkcb/MsM+3MtNHrxu7ZN0u5++DOo0Gw +BsGS6/7AQqYkxyehTwyRl8wJ5IPmpYeLFCurVK+2MBiC4ng2T7CT2aRZj6QciqrG0aHofp/7gaaa +9ts43TgQ7Lb2XT9VkOuCXJb0tvxpivQ7EC9YwLBatTiGVvVlzyr/HlpXVNs6FCAhCEgQMFzQYHk5 +ybc+nvDmeczTP8/5++RQTLuNd1MFBLHDyghli2EJX+8wYf2AKVEihwsgWrQE9R3bcOm7ndPYNCp4 +mVvv6VqPVdA0KeKbhsdjG7fpOJdRIdP3vGllYiKTQ8bEQ2ZEpkWNGCMVLGRkrEjcXo1U0NCYcTHD +ZCZbXsWd4pah7bzvZeJchZ4ilrln8DhFPrPHeN3L5DTNzpIxZGCqlAHI5JAx0cw4pakASFgRYmpi +amJqYmpiamJqYmpiamJqYmpiamJqYmpiamJqYmpiamJqYmpiamJqYmpiamJqYmpiamJqYmpiamJq +YmpiamJqYmpiamJqYmpiamJqYmpiamJqYmpiamJqYmpiamJqYmpiamJqYmpiamJqYmpiamJqYmpi +amJqYmpiamJqYmpiamJqYmpiamJqYmpiamJqYmpiamJqYmpiamJqYmpiamJqYmpiamJqYmpiamJq +YmpiamJqYmpiamJqYmpiamJqYmpiamJqYmpiamJqYmpqampqampqampqampqampqampqampqampq +ampqampqampqampqampqampqampqampqYmpqampqampqampqampqampqampqampqampqampqampq +ampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampq +ampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampq +ampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampq8K2z +stc4YCkDtICZGXlsjwOpaAqoJ7UpP3p1t50oUKgdjslFRyoab5uowwmfFH1AEZmRMqnWdFSGbbZx +uaxFxyQ7DsNtG/x6chy5aZXdFplheeuUIDq8nAZy1R4wKi88L0FA3k6Dya4OlWmFJz+JW1RahiAo +4HEcEY1Qs62P4ylNYW6rwtc7oLhcLbtyOG7HxXK8FkN1y2bQg83xS5Z5ckw5nZPTib8QBsGW4+au +Y7OM5XDwz2vx6CtGvsktl9y0R8sT/JZYNh/Hl9veLbvDby9J1PvuIvhuGcxlnxQFnaXoJH0S5Muw +R0nQip5itydBPuxEI/ji2Vn8fZSenlKswe4exVhdm9hV7jK4y3hTjM1wjGdvAfUkNw== + + + 3UXPhutkgBYwKDj9l6I+gi+nsZuNrGmhE205Gx3kSm6Yh0iKiJWRFCGeBas56KmcDR6CuAimnY38 +cayYnQHxLPqtjyPa4ZwZhwa9H0VhTqNBLaSSMT6+YuRJuevccW/WMZnhFx5fRZZDY3hvGx3cVrYM +w3HTC+cjGXNbX44sPc5jZbJRCqHWUyfDltNEbPqS3dJJhsiQHzkQW4pU83OKPlhMYHoug9uKZmGs +TiEvDArHm9vkbmtBDwS3r7v2jGKLRVWpWTpHTwnyosePnj52rJh10W8K7IARQ+TDVHNUina3zd0m +ctfYfu+kKFLRVz3vsBKCxEssZJbjCR20AAhA7rqYz49q2ZbTgTPO6k1/mKwigINFyl3lLas97jXH +/Si6nQ3b2egj+BLyJMECZgeKCAmP26J4i+HJ37MogVSoeW+cvOt8Rk8nwZK7pvw+a55DajrFqne3 +vRmIL3o2l7EckDsMVz6eXAzt8FPFr0uGb/BDOZu1w6FBT6SiJXadwc/kbGrwE6mpS3ZxqEYuPrsJ +7fLkh4dfiVVjz+NOnFi3LMSWV/p8hddJbtsvSb4cVX5/Fcv197lbBnvbyUfvEZPyguQV2+/X02TR +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 +Ik6Ry+DxCn6FHts0OE3O03tNNyDhhEFDhE+me0kL6EAdAesTkrAphRl/yrba9yPCdkCFAiTUCHAG +HIYF8juAXLFP9hZE2xAv3n5auwvhTQwjKNRhz48XoCUUasUDiGhKw7apVMLc+x02/Rsbog9KIXBA +H/H5g02QUMiBgoNIKCmKRVl4Dh6uUUK1BPf7FLAVdQ4CZSku4M+B65MQQM4wB2CBfAfTT8zg+lSD +bKcK+HnKDEgTWulTwMhWeEfZHA6X+LQXOKKP6HwAwa9X5GUAtDJqMzBhNDNjNWUtMDA2MC00Y2I1 +LThkMWQtZWVmZDEzN2UwNmI3ZjkyOTIyZWYtMjY5OS00MTUzLTg0MDItZmM1ZTg0YjM4NGQ4Mzg4 +MjEwU1ZHRmlsdGVyDS8gOg0vWE1MTm9kZSA6DShmeG1sbm9kZS1ub2RlbmFtdmFsdTEgL0ludHQv +QXJyYXllVHVyYnVsZW5jO2NoaWxkcmVucmVzdWx0KHR1cjJhdHRyaWJ1dGU7ICxzdGl0Y2hUaWxl +c25vU251bU9jdGF2YmFzZUZyZXF1ZW5jeTAuMDUsZmVDb21wb3NpdGluKFNvdXJjZUdyYXBoaWNp +bmlub3BlaWRBSV9faWRvYmplY3R3aWR0aDEwMCVoeHh5eS9EZWYgO2ZyYWN0YWxOb2lzNDRHYXVz +c2lhbkJsdXIoYnN0ZERldmlmZU9mZnNlb2RkZFNwZWN1bGFyTGlnaHRQb2ludEwtNTAwMC0xMHl6 +MnpzdXJmYWNlc3BlY091eWxsLWNvbG9yOndoc0NvbnN0YW50KEV4cG9uZWsya2szNDA0bGl0YXJp +dGhtZXRrMDFNZXJnTm9kQmV2ZWxTaGFkb3c0NC0yeU1vcnBob2xvZ3lpYWRpbGFyYWRpdTEuYmJk +LWQyNTJEaXNwbGFjZW1lbnRNYXBiM2JzM3hDaGFubmVsU2VsZWNSeUFNYXRyaTQzNG0wIDAgMWFu +aW1hY2N1bXUobm9uTnRvdG9kZnJvbWFkZGl0aXZyZXJlc3RhcmFsd2F5ZmlsbGZyZWV6Y2FsY00o +bGluZWFiZWcwNTQ1Y2M4Y2NjMWNjY2M4Y2NjMWNjY0Nvb2xCMTQtNW5EXzY2ZXJFcm9kNjY0Xyg3 +MSAxOzIwIDE1OzIwMCAyMDA7IDE1IDIwOzEgMSBScmVwZWF0RChpbmRlZmluMXJlbW92c3BsaWNQ +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 +Zd40kxgB + + + diff --git a/src/images/single-assets/TOR.svg b/src/images/single-assets/TOR.svg new file mode 100644 index 000000000..f4ffc7cd7 --- /dev/null +++ b/src/images/single-assets/TOR.svg @@ -0,0 +1 @@ + diff --git a/src/images/single-assets/TREEB.png b/src/images/single-assets/TREEB.png new file mode 100644 index 000000000..689921ffe Binary files /dev/null and b/src/images/single-assets/TREEB.png differ diff --git a/src/images/single-assets/TRI.svg b/src/images/single-assets/TRI.svg new file mode 100644 index 000000000..194a08bb3 --- /dev/null +++ b/src/images/single-assets/TRI.svg @@ -0,0 +1,30 @@ + + + diff --git a/src/images/single-assets/TRX.png b/src/images/single-assets/TRX.png new file mode 100644 index 000000000..74ec9785f Binary files /dev/null and b/src/images/single-assets/TRX.png differ diff --git a/src/images/single-assets/TSHARE.svg b/src/images/single-assets/TSHARE.svg new file mode 100644 index 000000000..1de811cc9 --- /dev/null +++ b/src/images/single-assets/TSHARE.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/single-assets/TUS.png b/src/images/single-assets/TUS.png new file mode 100644 index 000000000..d32ca6104 Binary files /dev/null and b/src/images/single-assets/TUS.png differ diff --git a/src/images/single-assets/TUSD.png b/src/images/single-assets/TUSD.png new file mode 100644 index 000000000..aca1b972f Binary files /dev/null and b/src/images/single-assets/TUSD.png differ diff --git a/src/images/single-assets/TYPH.png b/src/images/single-assets/TYPH.png new file mode 100644 index 000000000..56d7a087d Binary files /dev/null and b/src/images/single-assets/TYPH.png differ diff --git a/src/images/single-assets/UFT.png b/src/images/single-assets/UFT.png new file mode 100644 index 000000000..dca861df3 Binary files /dev/null and b/src/images/single-assets/UFT.png differ diff --git a/src/images/single-assets/UNI.png b/src/images/single-assets/UNI.png new file mode 100644 index 000000000..a0a67ab85 Binary files /dev/null and b/src/images/single-assets/UNI.png differ diff --git a/src/images/single-assets/UNIe.png b/src/images/single-assets/UNIe.png new file mode 100644 index 000000000..a0a67ab85 Binary files /dev/null and b/src/images/single-assets/UNIe.png differ diff --git a/src/images/single-assets/USDB.png b/src/images/single-assets/USDB.png new file mode 100644 index 000000000..96d628293 Binary files /dev/null and b/src/images/single-assets/USDB.png differ diff --git a/src/images/single-assets/USDC.svg b/src/images/single-assets/USDC.svg new file mode 100644 index 000000000..5dfea926e --- /dev/null +++ b/src/images/single-assets/USDC.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/images/single-assets/USDCe.svg b/src/images/single-assets/USDCe.svg new file mode 100644 index 000000000..5dfea926e --- /dev/null +++ b/src/images/single-assets/USDCe.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/images/single-assets/USDCm.svg b/src/images/single-assets/USDCm.svg new file mode 100644 index 000000000..5dfea926e --- /dev/null +++ b/src/images/single-assets/USDCm.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/images/single-assets/USDCs.svg b/src/images/single-assets/USDCs.svg new file mode 100644 index 000000000..5dfea926e --- /dev/null +++ b/src/images/single-assets/USDCs.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/images/single-assets/USDD.png b/src/images/single-assets/USDD.png new file mode 100644 index 000000000..82e1fd199 Binary files /dev/null and b/src/images/single-assets/USDD.png differ diff --git a/src/images/single-assets/USDL.svg b/src/images/single-assets/USDL.svg new file mode 100644 index 000000000..fb7a4531c --- /dev/null +++ b/src/images/single-assets/USDL.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/images/single-assets/USDO.png b/src/images/single-assets/USDO.png new file mode 100644 index 000000000..a64556539 Binary files /dev/null and b/src/images/single-assets/USDO.png differ diff --git a/src/images/single-assets/USDT.svg b/src/images/single-assets/USDT.svg new file mode 100644 index 000000000..12f5b3bff --- /dev/null +++ b/src/images/single-assets/USDT.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/images/single-assets/USDTe.svg b/src/images/single-assets/USDTe.svg new file mode 100644 index 000000000..12f5b3bff --- /dev/null +++ b/src/images/single-assets/USDTe.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/images/single-assets/UST.png b/src/images/single-assets/UST.png new file mode 100644 index 000000000..70d1c7580 Binary files /dev/null and b/src/images/single-assets/UST.png differ diff --git a/src/images/single-assets/UST_Rose.png b/src/images/single-assets/UST_Rose.png new file mode 100644 index 000000000..05875b75c Binary files /dev/null and b/src/images/single-assets/UST_Rose.png differ diff --git a/src/images/single-assets/USTaxl.png b/src/images/single-assets/USTaxl.png new file mode 100644 index 000000000..1db44d5b2 Binary files /dev/null and b/src/images/single-assets/USTaxl.png differ diff --git a/src/images/single-assets/USTw.png b/src/images/single-assets/USTw.png new file mode 100644 index 000000000..b62f29999 Binary files /dev/null and b/src/images/single-assets/USTw.png differ diff --git a/src/images/single-assets/VALAS.svg b/src/images/single-assets/VALAS.svg new file mode 100644 index 000000000..87b7d7c30 --- /dev/null +++ b/src/images/single-assets/VALAS.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/single-assets/VERSA.svg b/src/images/single-assets/VERSA.svg new file mode 100644 index 000000000..5cadaf986 --- /dev/null +++ b/src/images/single-assets/VERSA.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/images/single-assets/VOLT.png b/src/images/single-assets/VOLT.png new file mode 100644 index 000000000..52d07dfc1 Binary files /dev/null and b/src/images/single-assets/VOLT.png differ diff --git a/src/images/single-assets/VS.svg b/src/images/single-assets/VS.svg new file mode 100644 index 000000000..84635d689 --- /dev/null +++ b/src/images/single-assets/VS.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/single-assets/VTX.png b/src/images/single-assets/VTX.png new file mode 100644 index 000000000..4f0a7f8ca Binary files /dev/null and b/src/images/single-assets/VTX.png differ diff --git a/src/images/single-assets/VVS.svg b/src/images/single-assets/VVS.svg new file mode 100644 index 000000000..499b70e9a --- /dev/null +++ b/src/images/single-assets/VVS.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + diff --git a/src/images/single-assets/WAN.svg b/src/images/single-assets/WAN.svg new file mode 100644 index 000000000..0b9cb4c20 --- /dev/null +++ b/src/images/single-assets/WAN.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/single-assets/WATCH.png b/src/images/single-assets/WATCH.png new file mode 100644 index 000000000..7546ce8ec Binary files /dev/null and b/src/images/single-assets/WATCH.png differ diff --git a/src/images/single-assets/WAULTx.svg b/src/images/single-assets/WAULTx.svg new file mode 100644 index 000000000..d3fa1b0d1 --- /dev/null +++ b/src/images/single-assets/WAULTx.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/images/single-assets/WBNB.svg b/src/images/single-assets/WBNB.svg new file mode 100644 index 000000000..91a66e05f --- /dev/null +++ b/src/images/single-assets/WBNB.svg @@ -0,0 +1 @@ +bi \ No newline at end of file diff --git a/src/images/single-assets/WBTC.svg b/src/images/single-assets/WBTC.svg new file mode 100644 index 000000000..96b644da6 --- /dev/null +++ b/src/images/single-assets/WBTC.svg @@ -0,0 +1,26 @@ + + + icon-wbtc + Created with Sketch. + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/images/single-assets/WBTCe.svg b/src/images/single-assets/WBTCe.svg new file mode 100644 index 000000000..96b644da6 --- /dev/null +++ b/src/images/single-assets/WBTCe.svg @@ -0,0 +1,26 @@ + + + icon-wbtc + Created with Sketch. + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/images/single-assets/WBTCeth.svg b/src/images/single-assets/WBTCeth.svg new file mode 100644 index 000000000..96b644da6 --- /dev/null +++ b/src/images/single-assets/WBTCeth.svg @@ -0,0 +1,26 @@ + + + icon-wbtc + Created with Sketch. + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/images/single-assets/WCRO.svg b/src/images/single-assets/WCRO.svg new file mode 100644 index 000000000..4625805cc --- /dev/null +++ b/src/images/single-assets/WCRO.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/images/single-assets/WETH.svg b/src/images/single-assets/WETH.svg new file mode 100644 index 000000000..8ffed0a19 --- /dev/null +++ b/src/images/single-assets/WETH.svg @@ -0,0 +1,7 @@ + diff --git a/src/images/single-assets/WETHe.svg b/src/images/single-assets/WETHe.svg new file mode 100644 index 000000000..8ffed0a19 --- /dev/null +++ b/src/images/single-assets/WETHe.svg @@ -0,0 +1,7 @@ + diff --git a/src/images/single-assets/WEX.svg b/src/images/single-assets/WEX.svg new file mode 100644 index 000000000..1d5e5aefa --- /dev/null +++ b/src/images/single-assets/WEX.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/src/images/single-assets/WEXpoly.png b/src/images/single-assets/WEXpoly.png new file mode 100644 index 000000000..f3b8580ff Binary files /dev/null and b/src/images/single-assets/WEXpoly.png differ diff --git a/src/images/single-assets/WIGO.svg b/src/images/single-assets/WIGO.svg new file mode 100644 index 000000000..f276a4ae2 --- /dev/null +++ b/src/images/single-assets/WIGO.svg @@ -0,0 +1,14 @@ + + + + + + + + diff --git a/src/images/single-assets/WIN.png b/src/images/single-assets/WIN.png new file mode 100644 index 000000000..981c0e371 Binary files /dev/null and b/src/images/single-assets/WIN.png differ diff --git a/src/images/single-assets/WINE.png b/src/images/single-assets/WINE.png new file mode 100644 index 000000000..b835caebb Binary files /dev/null and b/src/images/single-assets/WINE.png differ diff --git a/src/images/single-assets/WMATIC.svg b/src/images/single-assets/WMATIC.svg new file mode 100644 index 000000000..ea851052c --- /dev/null +++ b/src/images/single-assets/WMATIC.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/images/single-assets/WMATIC_DFYN.svg b/src/images/single-assets/WMATIC_DFYN.svg new file mode 100644 index 000000000..ea851052c --- /dev/null +++ b/src/images/single-assets/WMATIC_DFYN.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/images/single-assets/WMOVR_SUSHI.png b/src/images/single-assets/WMOVR_SUSHI.png new file mode 100644 index 000000000..fefc768f0 Binary files /dev/null and b/src/images/single-assets/WMOVR_SUSHI.png differ diff --git a/src/images/single-assets/WOO.svg b/src/images/single-assets/WOO.svg new file mode 100644 index 000000000..b4d9653b9 --- /dev/null +++ b/src/images/single-assets/WOO.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/single-assets/WOOFY.png b/src/images/single-assets/WOOFY.png new file mode 100644 index 000000000..73c3b6048 Binary files /dev/null and b/src/images/single-assets/WOOFY.png differ diff --git a/src/images/single-assets/WOOP.png b/src/images/single-assets/WOOP.png new file mode 100644 index 000000000..99d52d5d6 Binary files /dev/null and b/src/images/single-assets/WOOP.png differ diff --git a/src/images/single-assets/WSG.svg b/src/images/single-assets/WSG.svg new file mode 100644 index 000000000..f93c26c74 --- /dev/null +++ b/src/images/single-assets/WSG.svg @@ -0,0 +1 @@ + diff --git a/src/images/single-assets/WSTA.png b/src/images/single-assets/WSTA.png new file mode 100644 index 000000000..b9451cfe9 Binary files /dev/null and b/src/images/single-assets/WSTA.png differ diff --git a/src/images/single-assets/WUSD.svg b/src/images/single-assets/WUSD.svg new file mode 100644 index 000000000..57ccd0643 --- /dev/null +++ b/src/images/single-assets/WUSD.svg @@ -0,0 +1 @@ +wusd circle svg \ No newline at end of file diff --git a/src/images/single-assets/XAVA.png b/src/images/single-assets/XAVA.png new file mode 100644 index 000000000..dbdb5d89f Binary files /dev/null and b/src/images/single-assets/XAVA.png differ diff --git a/src/images/single-assets/XCV.svg b/src/images/single-assets/XCV.svg new file mode 100644 index 000000000..8fe73ad86 --- /dev/null +++ b/src/images/single-assets/XCV.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/single-assets/XRP.svg b/src/images/single-assets/XRP.svg new file mode 100644 index 000000000..9a2c7c632 --- /dev/null +++ b/src/images/single-assets/XRP.svg @@ -0,0 +1 @@ +x \ No newline at end of file diff --git a/src/images/single-assets/XTZ.png b/src/images/single-assets/XTZ.png new file mode 100644 index 000000000..407ad4c93 Binary files /dev/null and b/src/images/single-assets/XTZ.png differ diff --git a/src/images/single-assets/XVS.png b/src/images/single-assets/XVS.png new file mode 100644 index 000000000..c4d6bf8b0 Binary files /dev/null and b/src/images/single-assets/XVS.png differ diff --git a/src/images/single-assets/XWG.png b/src/images/single-assets/XWG.png new file mode 100644 index 000000000..d52ab0f95 Binary files /dev/null and b/src/images/single-assets/XWG.png differ diff --git a/src/images/single-assets/YAMP.svg b/src/images/single-assets/YAMP.svg new file mode 100644 index 000000000..7aaaaec71 --- /dev/null +++ b/src/images/single-assets/YAMP.svg @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/single-assets/YEL.svg b/src/images/single-assets/YEL.svg new file mode 100644 index 000000000..f1f235bb3 --- /dev/null +++ b/src/images/single-assets/YEL.svg @@ -0,0 +1 @@ + diff --git a/src/images/single-assets/YELD.png b/src/images/single-assets/YELD.png new file mode 100644 index 000000000..e643f88c1 Binary files /dev/null and b/src/images/single-assets/YELD.png differ diff --git a/src/images/single-assets/YETI.png b/src/images/single-assets/YETI.png new file mode 100644 index 000000000..faeadfba3 Binary files /dev/null and b/src/images/single-assets/YETI.png differ diff --git a/src/images/single-assets/YFI.png b/src/images/single-assets/YFI.png new file mode 100644 index 000000000..19e2c1c6a Binary files /dev/null and b/src/images/single-assets/YFI.png differ diff --git a/src/images/single-assets/YFIe.png b/src/images/single-assets/YFIe.png new file mode 100644 index 000000000..19e2c1c6a Binary files /dev/null and b/src/images/single-assets/YFIe.png differ diff --git a/src/images/single-assets/YGG.png b/src/images/single-assets/YGG.png new file mode 100644 index 000000000..a4f142f40 Binary files /dev/null and b/src/images/single-assets/YGG.png differ diff --git a/src/images/single-assets/YOSHI.png b/src/images/single-assets/YOSHI.png new file mode 100644 index 000000000..bb9e3a0e1 Binary files /dev/null and b/src/images/single-assets/YOSHI.png differ diff --git a/src/images/single-assets/YUSD.png b/src/images/single-assets/YUSD.png new file mode 100644 index 000000000..229e5280e Binary files /dev/null and b/src/images/single-assets/YUSD.png differ diff --git a/src/images/single-assets/YUZU.png b/src/images/single-assets/YUZU.png new file mode 100644 index 000000000..28fecb10f Binary files /dev/null and b/src/images/single-assets/YUZU.png differ diff --git a/src/images/single-assets/ZBTC.svg b/src/images/single-assets/ZBTC.svg new file mode 100644 index 000000000..4e524b807 --- /dev/null +++ b/src/images/single-assets/ZBTC.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/images/single-assets/ZETH.svg b/src/images/single-assets/ZETH.svg new file mode 100644 index 000000000..ff4c62a46 --- /dev/null +++ b/src/images/single-assets/ZETH.svg @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/single-assets/ZOO.png b/src/images/single-assets/ZOO.png new file mode 100644 index 000000000..689c536b1 Binary files /dev/null and b/src/images/single-assets/ZOO.png differ diff --git a/src/images/single-assets/aBNBc.png b/src/images/single-assets/aBNBc.png new file mode 100644 index 000000000..a05380582 Binary files /dev/null and b/src/images/single-assets/aBNBc.png differ diff --git a/src/images/single-assets/aQI.png b/src/images/single-assets/aQI.png new file mode 100644 index 000000000..d7232a087 Binary files /dev/null and b/src/images/single-assets/aQI.png differ diff --git a/src/images/single-assets/aROME.png b/src/images/single-assets/aROME.png new file mode 100644 index 000000000..34daffce1 Binary files /dev/null and b/src/images/single-assets/aROME.png differ diff --git a/src/images/single-assets/aUSDO.svg b/src/images/single-assets/aUSDO.svg new file mode 100644 index 000000000..7904e198f --- /dev/null +++ b/src/images/single-assets/aUSDO.svg @@ -0,0 +1 @@ + diff --git a/src/images/single-assets/aWOOL.png b/src/images/single-assets/aWOOL.png new file mode 100644 index 000000000..bf1bdf91b Binary files /dev/null and b/src/images/single-assets/aWOOL.png differ diff --git a/src/images/single-assets/agEUR.png b/src/images/single-assets/agEUR.png new file mode 100644 index 000000000..074f8dfc9 Binary files /dev/null and b/src/images/single-assets/agEUR.png differ diff --git a/src/images/single-assets/anyMTLX.png b/src/images/single-assets/anyMTLX.png new file mode 100644 index 000000000..12461b929 Binary files /dev/null and b/src/images/single-assets/anyMTLX.png differ diff --git a/src/images/single-assets/asUSDC.png b/src/images/single-assets/asUSDC.png new file mode 100644 index 000000000..8616a398c Binary files /dev/null and b/src/images/single-assets/asUSDC.png differ diff --git a/src/images/single-assets/axlATOM.png b/src/images/single-assets/axlATOM.png new file mode 100644 index 000000000..bd53d9dee Binary files /dev/null and b/src/images/single-assets/axlATOM.png differ diff --git a/src/images/single-assets/bQI.png b/src/images/single-assets/bQI.png new file mode 100644 index 000000000..d61ba97f6 Binary files /dev/null and b/src/images/single-assets/bQI.png differ diff --git a/src/images/single-assets/bZoo.png b/src/images/single-assets/bZoo.png new file mode 100644 index 000000000..b18678f6e Binary files /dev/null and b/src/images/single-assets/bZoo.png differ diff --git a/src/images/single-assets/beFTM.svg b/src/images/single-assets/beFTM.svg new file mode 100644 index 000000000..855b29366 --- /dev/null +++ b/src/images/single-assets/beFTM.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/single-assets/beJOE.png b/src/images/single-assets/beJOE.png new file mode 100644 index 000000000..46aa5cd7a Binary files /dev/null and b/src/images/single-assets/beJOE.png differ diff --git a/src/images/single-assets/beQI.png b/src/images/single-assets/beQI.png new file mode 100644 index 000000000..ee3bdeee8 Binary files /dev/null and b/src/images/single-assets/beQI.png differ diff --git a/src/images/single-assets/binSPIRIT.svg b/src/images/single-assets/binSPIRIT.svg new file mode 100644 index 000000000..de538c2c7 --- /dev/null +++ b/src/images/single-assets/binSPIRIT.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/single-assets/bsc/BSHARE.png b/src/images/single-assets/bsc/BSHARE.png new file mode 100644 index 000000000..f808d2ced Binary files /dev/null and b/src/images/single-assets/bsc/BSHARE.png differ diff --git a/src/images/single-assets/bscBUSD.svg b/src/images/single-assets/bscBUSD.svg new file mode 100644 index 000000000..d2a374781 --- /dev/null +++ b/src/images/single-assets/bscBUSD.svg @@ -0,0 +1 @@ +Asset 1 \ No newline at end of file diff --git a/src/images/single-assets/cEUR.png b/src/images/single-assets/cEUR.png new file mode 100644 index 000000000..185d6cd1a Binary files /dev/null and b/src/images/single-assets/cEUR.png differ diff --git a/src/images/single-assets/cUSD.png b/src/images/single-assets/cUSD.png new file mode 100644 index 000000000..cf15fdd62 Binary files /dev/null and b/src/images/single-assets/cUSD.png differ diff --git a/src/images/single-assets/cakeHARD.png b/src/images/single-assets/cakeHARD.png new file mode 100644 index 000000000..87df18af9 Binary files /dev/null and b/src/images/single-assets/cakeHARD.png differ diff --git a/src/images/single-assets/cakeROOBEE.png b/src/images/single-assets/cakeROOBEE.png new file mode 100644 index 000000000..922075462 Binary files /dev/null and b/src/images/single-assets/cakeROOBEE.png differ diff --git a/src/images/single-assets/cakeSTAX.png b/src/images/single-assets/cakeSTAX.png new file mode 100644 index 000000000..3ff1c2bc6 Binary files /dev/null and b/src/images/single-assets/cakeSTAX.png differ diff --git a/src/images/single-assets/cakeTWT.png b/src/images/single-assets/cakeTWT.png new file mode 100644 index 000000000..38aeff3e1 Binary files /dev/null and b/src/images/single-assets/cakeTWT.png differ diff --git a/src/images/single-assets/cakebROOBEE.png b/src/images/single-assets/cakebROOBEE.png new file mode 100644 index 000000000..19b30f824 Binary files /dev/null and b/src/images/single-assets/cakebROOBEE.png differ diff --git a/src/images/single-assets/ceUSDC.svg b/src/images/single-assets/ceUSDC.svg new file mode 100644 index 000000000..5dfea926e --- /dev/null +++ b/src/images/single-assets/ceUSDC.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/images/single-assets/cxADA.png b/src/images/single-assets/cxADA.png new file mode 100644 index 000000000..9e2a895bb Binary files /dev/null and b/src/images/single-assets/cxADA.png differ diff --git a/src/images/single-assets/cxBTC.png b/src/images/single-assets/cxBTC.png new file mode 100644 index 000000000..c8cacded7 Binary files /dev/null and b/src/images/single-assets/cxBTC.png differ diff --git a/src/images/single-assets/cxDOGE.png b/src/images/single-assets/cxDOGE.png new file mode 100644 index 000000000..a27d54ca7 Binary files /dev/null and b/src/images/single-assets/cxDOGE.png differ diff --git a/src/images/single-assets/cxETH.png b/src/images/single-assets/cxETH.png new file mode 100644 index 000000000..f0c30aa2a Binary files /dev/null and b/src/images/single-assets/cxETH.png differ diff --git a/src/images/single-assets/evoBTC.svg b/src/images/single-assets/evoBTC.svg new file mode 100644 index 000000000..da3dd34a5 --- /dev/null +++ b/src/images/single-assets/evoBTC.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/single-assets/evoETH.svg b/src/images/single-assets/evoETH.svg new file mode 100644 index 000000000..8e9f12f09 --- /dev/null +++ b/src/images/single-assets/evoETH.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/single-assets/evoUSDC.svg b/src/images/single-assets/evoUSDC.svg new file mode 100644 index 000000000..fe94fd514 --- /dev/null +++ b/src/images/single-assets/evoUSDC.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/single-assets/evoUSDT.svg b/src/images/single-assets/evoUSDT.svg new file mode 100644 index 000000000..a43a46f4c --- /dev/null +++ b/src/images/single-assets/evoUSDT.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/single-assets/fUSD.png b/src/images/single-assets/fUSD.png new file mode 100644 index 000000000..6ff9e8c3c Binary files /dev/null and b/src/images/single-assets/fUSD.png differ diff --git a/src/images/single-assets/fUSDT.png b/src/images/single-assets/fUSDT.png new file mode 100644 index 000000000..91c0e5d15 Binary files /dev/null and b/src/images/single-assets/fUSDT.png differ diff --git a/src/images/single-assets/fWINGS.svg b/src/images/single-assets/fWINGS.svg new file mode 100644 index 000000000..2db977452 --- /dev/null +++ b/src/images/single-assets/fWINGS.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/single-assets/gOHM.jpg b/src/images/single-assets/gOHM.jpg new file mode 100644 index 000000000..9e0aac4df Binary files /dev/null and b/src/images/single-assets/gOHM.jpg differ diff --git a/src/images/single-assets/gOHM.png b/src/images/single-assets/gOHM.png new file mode 100644 index 000000000..958f0838a Binary files /dev/null and b/src/images/single-assets/gOHM.png differ diff --git a/src/images/single-assets/ibBTC.svg b/src/images/single-assets/ibBTC.svg new file mode 100644 index 000000000..5aa097bb7 --- /dev/null +++ b/src/images/single-assets/ibBTC.svg @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/single-assets/ironICE.svg b/src/images/single-assets/ironICE.svg new file mode 100644 index 000000000..f573f10cb --- /dev/null +++ b/src/images/single-assets/ironICE.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/single-assets/jCHF.png b/src/images/single-assets/jCHF.png new file mode 100644 index 000000000..8a8ab2b7b Binary files /dev/null and b/src/images/single-assets/jCHF.png differ diff --git a/src/images/single-assets/jEUR.png b/src/images/single-assets/jEUR.png new file mode 100644 index 000000000..52e844756 Binary files /dev/null and b/src/images/single-assets/jEUR.png differ diff --git a/src/images/single-assets/jGBP.png b/src/images/single-assets/jGBP.png new file mode 100644 index 000000000..d1720007a Binary files /dev/null and b/src/images/single-assets/jGBP.png differ diff --git a/src/images/single-assets/jJPY.png b/src/images/single-assets/jJPY.png new file mode 100644 index 000000000..59b79121e Binary files /dev/null and b/src/images/single-assets/jJPY.png differ diff --git a/src/images/single-assets/jNZD.svg b/src/images/single-assets/jNZD.svg new file mode 100644 index 000000000..0b8e9c2c3 --- /dev/null +++ b/src/images/single-assets/jNZD.svg @@ -0,0 +1 @@ +jNZD-24px \ No newline at end of file diff --git a/src/images/single-assets/mUSDC.svg b/src/images/single-assets/mUSDC.svg new file mode 100644 index 000000000..5dfea926e --- /dev/null +++ b/src/images/single-assets/mUSDC.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/images/single-assets/mUSDT.svg b/src/images/single-assets/mUSDT.svg new file mode 100644 index 000000000..12f5b3bff --- /dev/null +++ b/src/images/single-assets/mUSDT.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/images/single-assets/miMatic.png b/src/images/single-assets/miMatic.png new file mode 100644 index 000000000..d155237fc Binary files /dev/null and b/src/images/single-assets/miMatic.png differ diff --git a/src/images/single-assets/newQUICK.svg b/src/images/single-assets/newQUICK.svg new file mode 100644 index 000000000..eed8aabc1 --- /dev/null +++ b/src/images/single-assets/newQUICK.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/src/images/single-assets/pAVAX.svg b/src/images/single-assets/pAVAX.svg new file mode 100644 index 000000000..040216d8e --- /dev/null +++ b/src/images/single-assets/pAVAX.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/single-assets/pBNB.svg b/src/images/single-assets/pBNB.svg new file mode 100644 index 000000000..e0813fca3 --- /dev/null +++ b/src/images/single-assets/pBNB.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/single-assets/pBREW.png b/src/images/single-assets/pBREW.png new file mode 100644 index 000000000..05ab4b5f5 Binary files /dev/null and b/src/images/single-assets/pBREW.png differ diff --git a/src/images/single-assets/pFTM.svg b/src/images/single-assets/pFTM.svg new file mode 100644 index 000000000..96b4aaaad --- /dev/null +++ b/src/images/single-assets/pFTM.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/single-assets/pMATIC.svg b/src/images/single-assets/pMATIC.svg new file mode 100644 index 000000000..598508506 --- /dev/null +++ b/src/images/single-assets/pMATIC.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/single-assets/pOPEN.png b/src/images/single-assets/pOPEN.png new file mode 100644 index 000000000..b3b4c6d55 Binary files /dev/null and b/src/images/single-assets/pOPEN.png differ diff --git a/src/images/single-assets/pWINGS.png b/src/images/single-assets/pWINGS.png new file mode 100644 index 000000000..a2ae10128 Binary files /dev/null and b/src/images/single-assets/pWINGS.png differ diff --git a/src/images/single-assets/polyBUNNY.png b/src/images/single-assets/polyBUNNY.png new file mode 100644 index 000000000..fb6ee2428 Binary files /dev/null and b/src/images/single-assets/polyBUNNY.png differ diff --git a/src/images/single-assets/polyWISE.png b/src/images/single-assets/polyWISE.png new file mode 100644 index 000000000..11d9070ff Binary files /dev/null and b/src/images/single-assets/polyWISE.png differ diff --git a/src/images/single-assets/rUSD.svg b/src/images/single-assets/rUSD.svg new file mode 100644 index 000000000..498a6ae40 --- /dev/null +++ b/src/images/single-assets/rUSD.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + diff --git a/src/images/single-assets/renBTC.png b/src/images/single-assets/renBTC.png new file mode 100644 index 000000000..f6b21e5a5 Binary files /dev/null and b/src/images/single-assets/renBTC.png differ diff --git a/src/images/single-assets/renBTC.svg b/src/images/single-assets/renBTC.svg new file mode 100644 index 000000000..708ba9f1b --- /dev/null +++ b/src/images/single-assets/renBTC.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/images/single-assets/renDGB.svg b/src/images/single-assets/renDGB.svg new file mode 100644 index 000000000..14c3bde02 --- /dev/null +++ b/src/images/single-assets/renDGB.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/single-assets/renDOGE.png b/src/images/single-assets/renDOGE.png new file mode 100644 index 000000000..791c81afb Binary files /dev/null and b/src/images/single-assets/renDOGE.png differ diff --git a/src/images/single-assets/sALPACA.svg b/src/images/single-assets/sALPACA.svg new file mode 100644 index 000000000..a1d189f61 --- /dev/null +++ b/src/images/single-assets/sALPACA.svg @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/single-assets/sAVAX.png b/src/images/single-assets/sAVAX.png new file mode 100644 index 000000000..df6f51140 Binary files /dev/null and b/src/images/single-assets/sAVAX.png differ diff --git a/src/images/single-assets/sFTMx.png b/src/images/single-assets/sFTMx.png new file mode 100644 index 000000000..cd92d1c8b Binary files /dev/null and b/src/images/single-assets/sFTMx.png differ diff --git a/src/images/single-assets/sSPELL.png b/src/images/single-assets/sSPELL.png new file mode 100644 index 000000000..4eee15e14 Binary files /dev/null and b/src/images/single-assets/sSPELL.png differ diff --git a/src/images/single-assets/stKSM.png b/src/images/single-assets/stKSM.png new file mode 100644 index 000000000..77f191e1e Binary files /dev/null and b/src/images/single-assets/stKSM.png differ diff --git a/src/images/single-assets/stMATIC.png b/src/images/single-assets/stMATIC.png new file mode 100644 index 000000000..5dca985c8 Binary files /dev/null and b/src/images/single-assets/stMATIC.png differ diff --git a/src/images/single-assets/wMEMO.png b/src/images/single-assets/wMEMO.png new file mode 100644 index 000000000..77bb3520d Binary files /dev/null and b/src/images/single-assets/wMEMO.png differ diff --git a/src/images/single-assets/wsHEC.png b/src/images/single-assets/wsHEC.png new file mode 100644 index 000000000..88c57192c Binary files /dev/null and b/src/images/single-assets/wsHEC.png differ diff --git a/src/images/single-assets/wsSPA.png b/src/images/single-assets/wsSPA.png new file mode 100644 index 000000000..689ca6029 Binary files /dev/null and b/src/images/single-assets/wsSPA.png differ diff --git a/src/images/single-assets/xBOO.png b/src/images/single-assets/xBOO.png new file mode 100644 index 000000000..52f62ed3b Binary files /dev/null and b/src/images/single-assets/xBOO.png differ diff --git a/src/images/single-assets/xMARK.png b/src/images/single-assets/xMARK.png new file mode 100644 index 000000000..d51f9fa31 Binary files /dev/null and b/src/images/single-assets/xMARK.png differ diff --git a/src/images/single-assets/xSCREAM.png b/src/images/single-assets/xSCREAM.png new file mode 100644 index 000000000..29b95921d Binary files /dev/null and b/src/images/single-assets/xSCREAM.png differ diff --git a/src/images/single-assets/xTRI.svg b/src/images/single-assets/xTRI.svg new file mode 100644 index 000000000..149eaa793 --- /dev/null +++ b/src/images/single-assets/xTRI.svg @@ -0,0 +1,53 @@ + + + xTRI Logo 2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/images/single-assets/xVOLT.svg b/src/images/single-assets/xVOLT.svg new file mode 100644 index 000000000..fcdafd335 --- /dev/null +++ b/src/images/single-assets/xVOLT.svg @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/images/single-assets/xYELD.svg b/src/images/single-assets/xYELD.svg new file mode 100644 index 000000000..882f38943 --- /dev/null +++ b/src/images/single-assets/xYELD.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/single-assets/xcDOT.png b/src/images/single-assets/xcDOT.png new file mode 100644 index 000000000..ca2ed704d Binary files /dev/null and b/src/images/single-assets/xcDOT.png differ diff --git a/src/images/single-assets/xcKSM.png b/src/images/single-assets/xcKSM.png new file mode 100644 index 000000000..7ab6cb97d Binary files /dev/null and b/src/images/single-assets/xcKSM.png differ diff --git a/src/images/single-assets/xcRMRK.png b/src/images/single-assets/xcRMRK.png new file mode 100644 index 000000000..f902d7f90 Binary files /dev/null and b/src/images/single-assets/xcRMRK.png differ diff --git a/src/images/squarelink.png b/src/images/squarelink.png deleted file mode 100644 index 16a2131a0..000000000 Binary files a/src/images/squarelink.png and /dev/null differ diff --git a/src/images/stake-hint.svg b/src/images/stake-hint.svg deleted file mode 100644 index 727da7c05..000000000 --- a/src/images/stake-hint.svg +++ /dev/null @@ -1 +0,0 @@ -编组 3 \ No newline at end of file diff --git a/src/images/stake/2omb/bg.png b/src/images/stake/2omb/bg.png new file mode 100644 index 000000000..157695d2c Binary files /dev/null and b/src/images/stake/2omb/bg.png differ diff --git a/src/images/stake/2omb/logo.png b/src/images/stake/2omb/logo.png new file mode 100644 index 000000000..4eb4b09a6 Binary files /dev/null and b/src/images/stake/2omb/logo.png differ diff --git a/src/images/stake/annex/bg.png b/src/images/stake/annex/bg.png new file mode 100644 index 000000000..769a2f952 Binary files /dev/null and b/src/images/stake/annex/bg.png differ diff --git a/src/images/stake/annex/logo.png b/src/images/stake/annex/logo.png new file mode 100644 index 000000000..2e0d4c9d3 Binary files /dev/null and b/src/images/stake/annex/logo.png differ diff --git a/src/images/stake/apeswap/background.png b/src/images/stake/apeswap/background.png new file mode 100644 index 000000000..49a094239 Binary files /dev/null and b/src/images/stake/apeswap/background.png differ diff --git a/src/images/stake/apeswap/logo.png b/src/images/stake/apeswap/logo.png new file mode 100644 index 000000000..1c0c4ad22 Binary files /dev/null and b/src/images/stake/apeswap/logo.png differ diff --git a/src/images/stake/apyswap/background.png b/src/images/stake/apyswap/background.png new file mode 100644 index 000000000..99b03eea3 Binary files /dev/null and b/src/images/stake/apyswap/background.png differ diff --git a/src/images/stake/apyswap/logo.png b/src/images/stake/apyswap/logo.png new file mode 100644 index 000000000..eb1b53b7e Binary files /dev/null and b/src/images/stake/apyswap/logo.png differ diff --git a/src/images/stake/astronaut/background.png b/src/images/stake/astronaut/background.png new file mode 100644 index 000000000..2fc29cbd1 Binary files /dev/null and b/src/images/stake/astronaut/background.png differ diff --git a/src/images/stake/astronaut/logo.png b/src/images/stake/astronaut/logo.png new file mode 100644 index 000000000..4d5972bee Binary files /dev/null and b/src/images/stake/astronaut/logo.png differ diff --git a/src/images/stake/babyswap/bg.png b/src/images/stake/babyswap/bg.png new file mode 100644 index 000000000..c5e882554 Binary files /dev/null and b/src/images/stake/babyswap/bg.png differ diff --git a/src/images/stake/babyswap/logo.png b/src/images/stake/babyswap/logo.png new file mode 100644 index 000000000..8916c0fa8 Binary files /dev/null and b/src/images/stake/babyswap/logo.png differ diff --git a/src/images/stake/based/bg.png b/src/images/stake/based/bg.png new file mode 100644 index 000000000..6aefd00c1 Binary files /dev/null and b/src/images/stake/based/bg.png differ diff --git a/src/images/stake/based/logo.png b/src/images/stake/based/logo.png new file mode 100644 index 000000000..5ed881384 Binary files /dev/null and b/src/images/stake/based/logo.png differ diff --git a/src/images/stake/beefy/background.png b/src/images/stake/beefy/background.png new file mode 100644 index 000000000..dbe067540 Binary files /dev/null and b/src/images/stake/beefy/background.png differ diff --git a/src/images/stake/beefy/beefyfinance.png b/src/images/stake/beefy/beefyfinance.png new file mode 100644 index 000000000..7da910466 Binary files /dev/null and b/src/images/stake/beefy/beefyfinance.png differ diff --git a/src/images/stake/beefy/beefyfinance_night.png b/src/images/stake/beefy/beefyfinance_night.png new file mode 100644 index 000000000..276ef2e98 Binary files /dev/null and b/src/images/stake/beefy/beefyfinance_night.png differ diff --git a/src/images/stake/betu/bg.png b/src/images/stake/betu/bg.png new file mode 100644 index 000000000..695951e31 Binary files /dev/null and b/src/images/stake/betu/bg.png differ diff --git a/src/images/stake/betu/logo.png b/src/images/stake/betu/logo.png new file mode 100644 index 000000000..018aae026 Binary files /dev/null and b/src/images/stake/betu/logo.png differ diff --git a/src/images/stake/billionhappiness/background.png b/src/images/stake/billionhappiness/background.png new file mode 100644 index 000000000..5dd17fe1d Binary files /dev/null and b/src/images/stake/billionhappiness/background.png differ diff --git a/src/images/stake/billionhappiness/logo.png b/src/images/stake/billionhappiness/logo.png new file mode 100644 index 000000000..ffb5f4f66 Binary files /dev/null and b/src/images/stake/billionhappiness/logo.png differ diff --git a/src/images/stake/bingo/background.png b/src/images/stake/bingo/background.png new file mode 100644 index 000000000..bbd444cd0 Binary files /dev/null and b/src/images/stake/bingo/background.png differ diff --git a/src/images/stake/bingo/logo.png b/src/images/stake/bingo/logo.png new file mode 100644 index 000000000..db08a71bd Binary files /dev/null and b/src/images/stake/bingo/logo.png differ diff --git a/src/images/stake/bishares/bg.png b/src/images/stake/bishares/bg.png new file mode 100644 index 000000000..5e32316fa Binary files /dev/null and b/src/images/stake/bishares/bg.png differ diff --git a/src/images/stake/bishares/logo.png b/src/images/stake/bishares/logo.png new file mode 100644 index 000000000..a6ef5984c Binary files /dev/null and b/src/images/stake/bishares/logo.png differ diff --git a/src/images/stake/bitcrush/bg.png b/src/images/stake/bitcrush/bg.png new file mode 100644 index 000000000..ebb996b71 Binary files /dev/null and b/src/images/stake/bitcrush/bg.png differ diff --git a/src/images/stake/bitcrush/logo.png b/src/images/stake/bitcrush/logo.png new file mode 100644 index 000000000..9de465ea2 Binary files /dev/null and b/src/images/stake/bitcrush/logo.png differ diff --git a/src/images/stake/biticity/background.png b/src/images/stake/biticity/background.png new file mode 100644 index 000000000..2fb762794 Binary files /dev/null and b/src/images/stake/biticity/background.png differ diff --git a/src/images/stake/biticity/logo.png b/src/images/stake/biticity/logo.png new file mode 100644 index 000000000..530cb2f65 Binary files /dev/null and b/src/images/stake/biticity/logo.png differ diff --git a/src/images/stake/blockmine/bg.png b/src/images/stake/blockmine/bg.png new file mode 100644 index 000000000..607e4cb3d Binary files /dev/null and b/src/images/stake/blockmine/bg.png differ diff --git a/src/images/stake/blockmine/logo.png b/src/images/stake/blockmine/logo.png new file mode 100644 index 000000000..3f9dd6900 Binary files /dev/null and b/src/images/stake/blockmine/logo.png differ diff --git a/src/images/stake/boneswap/background.png b/src/images/stake/boneswap/background.png new file mode 100644 index 000000000..579624f54 Binary files /dev/null and b/src/images/stake/boneswap/background.png differ diff --git a/src/images/stake/boneswap/logo.png b/src/images/stake/boneswap/logo.png new file mode 100644 index 000000000..12133815c Binary files /dev/null and b/src/images/stake/boneswap/logo.png differ diff --git a/src/images/stake/boost.svg b/src/images/stake/boost.svg new file mode 100644 index 000000000..a2c51a894 --- /dev/null +++ b/src/images/stake/boost.svg @@ -0,0 +1,71 @@ + + + + diff --git a/src/images/stake/cafeswap/background.png b/src/images/stake/cafeswap/background.png new file mode 100644 index 000000000..4c7bd0ade Binary files /dev/null and b/src/images/stake/cafeswap/background.png differ diff --git a/src/images/stake/cafeswap/bg.png b/src/images/stake/cafeswap/bg.png new file mode 100644 index 000000000..4c7bd0ade Binary files /dev/null and b/src/images/stake/cafeswap/bg.png differ diff --git a/src/images/stake/cafeswap/brew.png b/src/images/stake/cafeswap/brew.png new file mode 100644 index 000000000..96a6b61fb Binary files /dev/null and b/src/images/stake/cafeswap/brew.png differ diff --git a/src/images/stake/cafeswap/cafeswap.png b/src/images/stake/cafeswap/cafeswap.png new file mode 100644 index 000000000..784f7b868 Binary files /dev/null and b/src/images/stake/cafeswap/cafeswap.png differ diff --git a/src/images/stake/cafeswap/logo.png b/src/images/stake/cafeswap/logo.png new file mode 100644 index 000000000..784f7b868 Binary files /dev/null and b/src/images/stake/cafeswap/logo.png differ diff --git a/src/images/stake/ceek/bg.png b/src/images/stake/ceek/bg.png new file mode 100644 index 000000000..1716c7fef Binary files /dev/null and b/src/images/stake/ceek/bg.png differ diff --git a/src/images/stake/ceek/logo.png b/src/images/stake/ceek/logo.png new file mode 100644 index 000000000..1c4c8d183 Binary files /dev/null and b/src/images/stake/ceek/logo.png differ diff --git a/src/images/stake/charge/bg.png b/src/images/stake/charge/bg.png new file mode 100644 index 000000000..44adba919 Binary files /dev/null and b/src/images/stake/charge/bg.png differ diff --git a/src/images/stake/charge/logo.png b/src/images/stake/charge/logo.png new file mode 100644 index 000000000..f700b9632 Binary files /dev/null and b/src/images/stake/charge/logo.png differ diff --git a/src/images/stake/crowfinance/background.png b/src/images/stake/crowfinance/background.png new file mode 100644 index 000000000..3e5051284 Binary files /dev/null and b/src/images/stake/crowfinance/background.png differ diff --git a/src/images/stake/crowfinance/crow.png b/src/images/stake/crowfinance/crow.png new file mode 100644 index 000000000..773e339c8 Binary files /dev/null and b/src/images/stake/crowfinance/crow.png differ diff --git a/src/images/stake/crowfinance/crowfinance.png b/src/images/stake/crowfinance/crowfinance.png new file mode 100644 index 000000000..f4497088b Binary files /dev/null and b/src/images/stake/crowfinance/crowfinance.png differ diff --git a/src/images/stake/czodiac/bg.png b/src/images/stake/czodiac/bg.png new file mode 100644 index 000000000..d14d5ddaa Binary files /dev/null and b/src/images/stake/czodiac/bg.png differ diff --git a/src/images/stake/czodiac/logo.png b/src/images/stake/czodiac/logo.png new file mode 100644 index 000000000..893423ab0 Binary files /dev/null and b/src/images/stake/czodiac/logo.png differ diff --git a/src/images/stake/dark/bg.png b/src/images/stake/dark/bg.png new file mode 100644 index 000000000..080848f92 Binary files /dev/null and b/src/images/stake/dark/bg.png differ diff --git a/src/images/stake/dark/logo.png b/src/images/stake/dark/logo.png new file mode 100644 index 000000000..8c5a15a9b Binary files /dev/null and b/src/images/stake/dark/logo.png differ diff --git a/src/images/stake/dep/bg.png b/src/images/stake/dep/bg.png new file mode 100644 index 000000000..7f901a4b6 Binary files /dev/null and b/src/images/stake/dep/bg.png differ diff --git a/src/images/stake/dep/logo.png b/src/images/stake/dep/logo.png new file mode 100644 index 000000000..c818f00a3 Binary files /dev/null and b/src/images/stake/dep/logo.png differ diff --git a/src/images/stake/dibs/bg.png b/src/images/stake/dibs/bg.png new file mode 100644 index 000000000..61ac7c473 Binary files /dev/null and b/src/images/stake/dibs/bg.png differ diff --git a/src/images/stake/dibs/logo.png b/src/images/stake/dibs/logo.png new file mode 100644 index 000000000..86fd839e5 Binary files /dev/null and b/src/images/stake/dibs/logo.png differ diff --git a/src/images/stake/dopple/background.png b/src/images/stake/dopple/background.png new file mode 100644 index 000000000..1dc177852 Binary files /dev/null and b/src/images/stake/dopple/background.png differ diff --git a/src/images/stake/dopple/logo.png b/src/images/stake/dopple/logo.png new file mode 100644 index 000000000..477952fe8 Binary files /dev/null and b/src/images/stake/dopple/logo.png differ diff --git a/src/images/stake/dumpling/background.png b/src/images/stake/dumpling/background.png new file mode 100644 index 000000000..3962f0d44 Binary files /dev/null and b/src/images/stake/dumpling/background.png differ diff --git a/src/images/stake/dumpling/logo.png b/src/images/stake/dumpling/logo.png new file mode 100644 index 000000000..8025fe4f6 Binary files /dev/null and b/src/images/stake/dumpling/logo.png differ diff --git a/src/images/stake/elk/bg.png b/src/images/stake/elk/bg.png new file mode 100644 index 000000000..0680277ea Binary files /dev/null and b/src/images/stake/elk/bg.png differ diff --git a/src/images/stake/elk/logo.png b/src/images/stake/elk/logo.png new file mode 100644 index 000000000..11b467383 Binary files /dev/null and b/src/images/stake/elk/logo.png differ diff --git a/src/images/stake/elon/bg.png b/src/images/stake/elon/bg.png new file mode 100644 index 000000000..001755af4 Binary files /dev/null and b/src/images/stake/elon/bg.png differ diff --git a/src/images/stake/elon/logo.png b/src/images/stake/elon/logo.png new file mode 100644 index 000000000..e96ae7101 Binary files /dev/null and b/src/images/stake/elon/logo.png differ diff --git a/src/images/stake/esterfinance/background.png b/src/images/stake/esterfinance/background.png new file mode 100644 index 000000000..aeb3345de Binary files /dev/null and b/src/images/stake/esterfinance/background.png differ diff --git a/src/images/stake/esterfinance/logo.png b/src/images/stake/esterfinance/logo.png new file mode 100644 index 000000000..495c52c2a Binary files /dev/null and b/src/images/stake/esterfinance/logo.png differ diff --git a/src/images/stake/f1.png b/src/images/stake/f1.png new file mode 100644 index 000000000..3ca1c71af Binary files /dev/null and b/src/images/stake/f1.png differ diff --git a/src/images/stake/fanatics/logo.png b/src/images/stake/fanatics/logo.png new file mode 100644 index 000000000..7fb5acc75 Binary files /dev/null and b/src/images/stake/fanatics/logo.png differ diff --git a/src/images/stake/farmhero/bg.png b/src/images/stake/farmhero/bg.png new file mode 100644 index 000000000..9edc727a8 Binary files /dev/null and b/src/images/stake/farmhero/bg.png differ diff --git a/src/images/stake/farmhero/logo.png b/src/images/stake/farmhero/logo.png new file mode 100644 index 000000000..19a968f1f Binary files /dev/null and b/src/images/stake/farmhero/logo.png differ diff --git a/src/images/stake/fire.png b/src/images/stake/fire.png new file mode 100644 index 000000000..d1b6379a0 Binary files /dev/null and b/src/images/stake/fire.png differ diff --git a/src/images/stake/fruit/background.png b/src/images/stake/fruit/background.png new file mode 100644 index 000000000..564d8fd33 Binary files /dev/null and b/src/images/stake/fruit/background.png differ diff --git a/src/images/stake/fruit/logo.png b/src/images/stake/fruit/logo.png new file mode 100644 index 000000000..48722d1df Binary files /dev/null and b/src/images/stake/fruit/logo.png differ diff --git a/src/images/stake/fuse/bg.png b/src/images/stake/fuse/bg.png new file mode 100644 index 000000000..deab4a302 Binary files /dev/null and b/src/images/stake/fuse/bg.png differ diff --git a/src/images/stake/fuse/logo.png b/src/images/stake/fuse/logo.png new file mode 100644 index 000000000..5bce63ca9 Binary files /dev/null and b/src/images/stake/fuse/logo.png differ diff --git a/src/images/stake/gamexchange/bg.png b/src/images/stake/gamexchange/bg.png new file mode 100644 index 000000000..a28a5b0ac Binary files /dev/null and b/src/images/stake/gamexchange/bg.png differ diff --git a/src/images/stake/gamexchange/logo.png b/src/images/stake/gamexchange/logo.png new file mode 100644 index 000000000..41079ab94 Binary files /dev/null and b/src/images/stake/gamexchange/logo.png differ diff --git a/src/images/stake/garuda/logo.png b/src/images/stake/garuda/logo.png new file mode 100644 index 000000000..525fe4ca8 Binary files /dev/null and b/src/images/stake/garuda/logo.png differ diff --git a/src/images/stake/grandbanks/background.png b/src/images/stake/grandbanks/background.png new file mode 100644 index 000000000..73c7b087e Binary files /dev/null and b/src/images/stake/grandbanks/background.png differ diff --git a/src/images/stake/grandbanks/logo.png b/src/images/stake/grandbanks/logo.png new file mode 100644 index 000000000..06676727a Binary files /dev/null and b/src/images/stake/grandbanks/logo.png differ diff --git a/src/images/stake/grape/bg.png b/src/images/stake/grape/bg.png new file mode 100644 index 000000000..079bce0f4 Binary files /dev/null and b/src/images/stake/grape/bg.png differ diff --git a/src/images/stake/grape/logo.png b/src/images/stake/grape/logo.png new file mode 100644 index 000000000..b61f58377 Binary files /dev/null and b/src/images/stake/grape/logo.png differ diff --git a/src/images/stake/honey/bg.png b/src/images/stake/honey/bg.png new file mode 100644 index 000000000..652edc304 Binary files /dev/null and b/src/images/stake/honey/bg.png differ diff --git a/src/images/stake/honey/logo.png b/src/images/stake/honey/logo.png new file mode 100644 index 000000000..65d8a91be Binary files /dev/null and b/src/images/stake/honey/logo.png differ diff --git a/src/images/stake/huckleberry/bg.png b/src/images/stake/huckleberry/bg.png new file mode 100644 index 000000000..0dff1904f Binary files /dev/null and b/src/images/stake/huckleberry/bg.png differ diff --git a/src/images/stake/huckleberry/logo.png b/src/images/stake/huckleberry/logo.png new file mode 100644 index 000000000..a8ff63713 Binary files /dev/null and b/src/images/stake/huckleberry/logo.png differ diff --git a/src/images/stake/icarus/background.png b/src/images/stake/icarus/background.png new file mode 100644 index 000000000..5be3cbbda Binary files /dev/null and b/src/images/stake/icarus/background.png differ diff --git a/src/images/stake/icarus/logo.png b/src/images/stake/icarus/logo.png new file mode 100644 index 000000000..f8978c9f2 Binary files /dev/null and b/src/images/stake/icarus/logo.png differ diff --git a/src/images/stake/ironfinance/background.png b/src/images/stake/ironfinance/background.png new file mode 100644 index 000000000..93f1c97ca Binary files /dev/null and b/src/images/stake/ironfinance/background.png differ diff --git a/src/images/stake/ironfinance/logo.png b/src/images/stake/ironfinance/logo.png new file mode 100644 index 000000000..7b5beeec7 Binary files /dev/null and b/src/images/stake/ironfinance/logo.png differ diff --git a/src/images/stake/jarvis/bg.png b/src/images/stake/jarvis/bg.png new file mode 100644 index 000000000..543e0dc1e Binary files /dev/null and b/src/images/stake/jarvis/bg.png differ diff --git a/src/images/stake/jarvis/logo.png b/src/images/stake/jarvis/logo.png new file mode 100644 index 000000000..cf5eff3c8 Binary files /dev/null and b/src/images/stake/jarvis/logo.png differ diff --git a/src/images/stake/jetswap/background.png b/src/images/stake/jetswap/background.png new file mode 100644 index 000000000..6bd350403 Binary files /dev/null and b/src/images/stake/jetswap/background.png differ diff --git a/src/images/stake/jetswap/logo.png b/src/images/stake/jetswap/logo.png new file mode 100644 index 000000000..abece38ac Binary files /dev/null and b/src/images/stake/jetswap/logo.png differ diff --git a/src/images/stake/krown/background.png b/src/images/stake/krown/background.png new file mode 100644 index 000000000..94df2904b Binary files /dev/null and b/src/images/stake/krown/background.png differ diff --git a/src/images/stake/krown/logo.png b/src/images/stake/krown/logo.png new file mode 100644 index 000000000..f1d0bd4f3 Binary files /dev/null and b/src/images/stake/krown/logo.png differ diff --git a/src/images/stake/landshare/bg.png b/src/images/stake/landshare/bg.png new file mode 100644 index 000000000..c4b44f2aa Binary files /dev/null and b/src/images/stake/landshare/bg.png differ diff --git a/src/images/stake/landshare/logo.png b/src/images/stake/landshare/logo.png new file mode 100644 index 000000000..4df4eff3f Binary files /dev/null and b/src/images/stake/landshare/logo.png differ diff --git a/src/images/stake/launchpool.png b/src/images/stake/launchpool.png new file mode 100644 index 000000000..5327dea42 Binary files /dev/null and b/src/images/stake/launchpool.png differ diff --git a/src/images/stake/liquidus/bg.png b/src/images/stake/liquidus/bg.png new file mode 100644 index 000000000..997d869d2 Binary files /dev/null and b/src/images/stake/liquidus/bg.png differ diff --git a/src/images/stake/liquidus/logo.png b/src/images/stake/liquidus/logo.png new file mode 100644 index 000000000..5b6ef76c3 Binary files /dev/null and b/src/images/stake/liquidus/logo.png differ diff --git a/src/images/stake/longdrink/bg.png b/src/images/stake/longdrink/bg.png new file mode 100644 index 000000000..0de801ea8 Binary files /dev/null and b/src/images/stake/longdrink/bg.png differ diff --git a/src/images/stake/longdrink/logo.png b/src/images/stake/longdrink/logo.png new file mode 100644 index 000000000..fe3296a63 Binary files /dev/null and b/src/images/stake/longdrink/logo.png differ diff --git a/src/images/stake/mash/background.png b/src/images/stake/mash/background.png new file mode 100644 index 000000000..10beb9539 Binary files /dev/null and b/src/images/stake/mash/background.png differ diff --git a/src/images/stake/mash/logo.png b/src/images/stake/mash/logo.png new file mode 100644 index 000000000..c3978f973 Binary files /dev/null and b/src/images/stake/mash/logo.png differ diff --git a/src/images/stake/memefarm/ape.png b/src/images/stake/memefarm/ape.png new file mode 100644 index 000000000..8e25fbabd Binary files /dev/null and b/src/images/stake/memefarm/ape.png differ diff --git a/src/images/stake/memefarm/background.png b/src/images/stake/memefarm/background.png new file mode 100644 index 000000000..f841a2161 Binary files /dev/null and b/src/images/stake/memefarm/background.png differ diff --git a/src/images/stake/memefarm/logo.png b/src/images/stake/memefarm/logo.png new file mode 100644 index 000000000..ea11e8945 Binary files /dev/null and b/src/images/stake/memefarm/logo.png differ diff --git a/src/images/stake/merlin/background.png b/src/images/stake/merlin/background.png new file mode 100644 index 000000000..e4b058e4e Binary files /dev/null and b/src/images/stake/merlin/background.png differ diff --git a/src/images/stake/merlin/logo.png b/src/images/stake/merlin/logo.png new file mode 100644 index 000000000..c99ca294b Binary files /dev/null and b/src/images/stake/merlin/logo.png differ diff --git a/src/images/stake/mogul/bg.png b/src/images/stake/mogul/bg.png new file mode 100644 index 000000000..db1dc8e1c Binary files /dev/null and b/src/images/stake/mogul/bg.png differ diff --git a/src/images/stake/mogul/logo.png b/src/images/stake/mogul/logo.png new file mode 100644 index 000000000..3a97be9db Binary files /dev/null and b/src/images/stake/mogul/logo.png differ diff --git a/src/images/stake/moonpot/bg.png b/src/images/stake/moonpot/bg.png new file mode 100644 index 000000000..c9c77ecf7 Binary files /dev/null and b/src/images/stake/moonpot/bg.png differ diff --git a/src/images/stake/moonpot/logo.png b/src/images/stake/moonpot/logo.png new file mode 100644 index 000000000..9a9d0ae07 Binary files /dev/null and b/src/images/stake/moonpot/logo.png differ diff --git a/src/images/stake/nfty/bg.png b/src/images/stake/nfty/bg.png new file mode 100644 index 000000000..9a37349c6 Binary files /dev/null and b/src/images/stake/nfty/bg.png differ diff --git a/src/images/stake/nfty/logo.png b/src/images/stake/nfty/logo.png new file mode 100644 index 000000000..09354a391 Binary files /dev/null and b/src/images/stake/nfty/logo.png differ diff --git a/src/images/stake/oasis/bg.png b/src/images/stake/oasis/bg.png new file mode 100644 index 000000000..46e3804ec Binary files /dev/null and b/src/images/stake/oasis/bg.png differ diff --git a/src/images/stake/oasis/logo.png b/src/images/stake/oasis/logo.png new file mode 100644 index 000000000..2d8e260f8 Binary files /dev/null and b/src/images/stake/oasis/logo.png differ diff --git a/src/images/stake/omnifarm/bg.png b/src/images/stake/omnifarm/bg.png new file mode 100644 index 000000000..9246030cd Binary files /dev/null and b/src/images/stake/omnifarm/bg.png differ diff --git a/src/images/stake/omnifarm/logo.png b/src/images/stake/omnifarm/logo.png new file mode 100644 index 000000000..dddb41ef2 Binary files /dev/null and b/src/images/stake/omnifarm/logo.png differ diff --git a/src/images/stake/pacoca/bg.png b/src/images/stake/pacoca/bg.png new file mode 100644 index 000000000..a0fe9ff57 Binary files /dev/null and b/src/images/stake/pacoca/bg.png differ diff --git a/src/images/stake/pacoca/logo.png b/src/images/stake/pacoca/logo.png new file mode 100644 index 000000000..5eb7a1a46 Binary files /dev/null and b/src/images/stake/pacoca/logo.png differ diff --git a/src/images/stake/panther/background.png b/src/images/stake/panther/background.png new file mode 100644 index 000000000..ed4bb4feb Binary files /dev/null and b/src/images/stake/panther/background.png differ diff --git a/src/images/stake/panther/logo.png b/src/images/stake/panther/logo.png new file mode 100644 index 000000000..c883d9fb2 Binary files /dev/null and b/src/images/stake/panther/logo.png differ diff --git a/src/images/stake/pearzap/bg.png b/src/images/stake/pearzap/bg.png new file mode 100644 index 000000000..3bcb5e03e Binary files /dev/null and b/src/images/stake/pearzap/bg.png differ diff --git a/src/images/stake/pearzap/logo.png b/src/images/stake/pearzap/logo.png new file mode 100644 index 000000000..28b22d559 Binary files /dev/null and b/src/images/stake/pearzap/logo.png differ diff --git a/src/images/stake/pera/bg.png b/src/images/stake/pera/bg.png new file mode 100644 index 000000000..f9c6317aa Binary files /dev/null and b/src/images/stake/pera/bg.png differ diff --git a/src/images/stake/pera/logo.png b/src/images/stake/pera/logo.png new file mode 100644 index 000000000..c85dedd61 Binary files /dev/null and b/src/images/stake/pera/logo.png differ diff --git a/src/images/stake/polyalpha/bg.png b/src/images/stake/polyalpha/bg.png new file mode 100644 index 000000000..7adc27cce Binary files /dev/null and b/src/images/stake/polyalpha/bg.png differ diff --git a/src/images/stake/polyalpha/logo.png b/src/images/stake/polyalpha/logo.png new file mode 100644 index 000000000..d5cc7bf71 Binary files /dev/null and b/src/images/stake/polyalpha/logo.png differ diff --git a/src/images/stake/polycracker/bg.png b/src/images/stake/polycracker/bg.png new file mode 100644 index 000000000..2a492118c Binary files /dev/null and b/src/images/stake/polycracker/bg.png differ diff --git a/src/images/stake/polycracker/logo.png b/src/images/stake/polycracker/logo.png new file mode 100644 index 000000000..e15663a99 Binary files /dev/null and b/src/images/stake/polycracker/logo.png differ diff --git a/src/images/stake/polyfarm/bg.png b/src/images/stake/polyfarm/bg.png new file mode 100644 index 000000000..1108bd7fd Binary files /dev/null and b/src/images/stake/polyfarm/bg.png differ diff --git a/src/images/stake/polyfarm/logo.png b/src/images/stake/polyfarm/logo.png new file mode 100644 index 000000000..499d35dfc Binary files /dev/null and b/src/images/stake/polyfarm/logo.png differ diff --git a/src/images/stake/polygon/background.png b/src/images/stake/polygon/background.png new file mode 100644 index 000000000..01ea85fcd Binary files /dev/null and b/src/images/stake/polygon/background.png differ diff --git a/src/images/stake/polygon/logo.png b/src/images/stake/polygon/logo.png new file mode 100644 index 000000000..d33a6716c Binary files /dev/null and b/src/images/stake/polygon/logo.png differ diff --git a/src/images/stake/polypup/background.png b/src/images/stake/polypup/background.png new file mode 100644 index 000000000..cba2e9b69 Binary files /dev/null and b/src/images/stake/polypup/background.png differ diff --git a/src/images/stake/polypup/logo.png b/src/images/stake/polypup/logo.png new file mode 100644 index 000000000..4bf9fdfda Binary files /dev/null and b/src/images/stake/polypup/logo.png differ diff --git a/src/images/stake/polysage/bg.png b/src/images/stake/polysage/bg.png new file mode 100644 index 000000000..d1093d2b1 Binary files /dev/null and b/src/images/stake/polysage/bg.png differ diff --git a/src/images/stake/polysage/logo.png b/src/images/stake/polysage/logo.png new file mode 100644 index 000000000..870c088d8 Binary files /dev/null and b/src/images/stake/polysage/logo.png differ diff --git a/src/images/stake/polywise/bg.png b/src/images/stake/polywise/bg.png new file mode 100644 index 000000000..80d6c4b18 Binary files /dev/null and b/src/images/stake/polywise/bg.png differ diff --git a/src/images/stake/polywise/logo.png b/src/images/stake/polywise/logo.png new file mode 100644 index 000000000..a514ab492 Binary files /dev/null and b/src/images/stake/polywise/logo.png differ diff --git a/src/images/stake/polyyeld/background.png b/src/images/stake/polyyeld/background.png new file mode 100644 index 000000000..0ead1a2b6 Binary files /dev/null and b/src/images/stake/polyyeld/background.png differ diff --git a/src/images/stake/polyyeld/logo.png b/src/images/stake/polyyeld/logo.png new file mode 100644 index 000000000..84a9f1a42 Binary files /dev/null and b/src/images/stake/polyyeld/logo.png differ diff --git a/src/images/stake/qidao/background.png b/src/images/stake/qidao/background.png new file mode 100644 index 000000000..547877054 Binary files /dev/null and b/src/images/stake/qidao/background.png differ diff --git a/src/images/stake/qidao/logo.png b/src/images/stake/qidao/logo.png new file mode 100644 index 000000000..256160bb0 Binary files /dev/null and b/src/images/stake/qidao/logo.png differ diff --git a/src/images/stake/ramenswap/background.png b/src/images/stake/ramenswap/background.png new file mode 100644 index 000000000..ac4aa9830 Binary files /dev/null and b/src/images/stake/ramenswap/background.png differ diff --git a/src/images/stake/ramenswap/ramen.png b/src/images/stake/ramenswap/ramen.png new file mode 100644 index 000000000..e67b531fd Binary files /dev/null and b/src/images/stake/ramenswap/ramen.png differ diff --git a/src/images/stake/ramenswap/ramenswap.png b/src/images/stake/ramenswap/ramenswap.png new file mode 100644 index 000000000..322d3a7a2 Binary files /dev/null and b/src/images/stake/ramenswap/ramenswap.png differ diff --git a/src/images/stake/relay/bg.png b/src/images/stake/relay/bg.png new file mode 100644 index 000000000..d733f2200 Binary files /dev/null and b/src/images/stake/relay/bg.png differ diff --git a/src/images/stake/relay/logo.png b/src/images/stake/relay/logo.png new file mode 100644 index 000000000..5d126adcb Binary files /dev/null and b/src/images/stake/relay/logo.png differ diff --git a/src/images/stake/ripae/bg.png b/src/images/stake/ripae/bg.png new file mode 100644 index 000000000..dbac18a6f Binary files /dev/null and b/src/images/stake/ripae/bg.png differ diff --git a/src/images/stake/ripae/logo.png b/src/images/stake/ripae/logo.png new file mode 100644 index 000000000..d13991c2c Binary files /dev/null and b/src/images/stake/ripae/logo.png differ diff --git a/src/images/stake/safefarm/background.png b/src/images/stake/safefarm/background.png new file mode 100644 index 000000000..15146ac53 Binary files /dev/null and b/src/images/stake/safefarm/background.png differ diff --git a/src/images/stake/safefarm/logo.png b/src/images/stake/safefarm/logo.png new file mode 100644 index 000000000..07bd543db Binary files /dev/null and b/src/images/stake/safefarm/logo.png differ diff --git a/src/images/stake/saltswap/background.png b/src/images/stake/saltswap/background.png new file mode 100644 index 000000000..5dd9ca32b Binary files /dev/null and b/src/images/stake/saltswap/background.png differ diff --git a/src/images/stake/saltswap/salt.png b/src/images/stake/saltswap/salt.png new file mode 100644 index 000000000..c799dee96 Binary files /dev/null and b/src/images/stake/saltswap/salt.png differ diff --git a/src/images/stake/saltswap/saltswap.png b/src/images/stake/saltswap/saltswap.png new file mode 100644 index 000000000..94fd197cb Binary files /dev/null and b/src/images/stake/saltswap/saltswap.png differ diff --git a/src/images/stake/sandman/bg.png b/src/images/stake/sandman/bg.png new file mode 100644 index 000000000..4ac330449 Binary files /dev/null and b/src/images/stake/sandman/bg.png differ diff --git a/src/images/stake/sandman/logo.png b/src/images/stake/sandman/logo.png new file mode 100644 index 000000000..dc1c194c4 Binary files /dev/null and b/src/images/stake/sandman/logo.png differ diff --git a/src/images/stake/satis/background.png b/src/images/stake/satis/background.png new file mode 100644 index 000000000..4f7fe3a6b Binary files /dev/null and b/src/images/stake/satis/background.png differ diff --git a/src/images/stake/satis/logo.png b/src/images/stake/satis/logo.png new file mode 100644 index 000000000..491215043 Binary files /dev/null and b/src/images/stake/satis/logo.png differ diff --git a/src/images/stake/scream/bg.png b/src/images/stake/scream/bg.png new file mode 100644 index 000000000..baa8533cf Binary files /dev/null and b/src/images/stake/scream/bg.png differ diff --git a/src/images/stake/scream/logo.png b/src/images/stake/scream/logo.png new file mode 100644 index 000000000..0301b1bbd Binary files /dev/null and b/src/images/stake/scream/logo.png differ diff --git a/src/images/stake/singular/bg.png b/src/images/stake/singular/bg.png new file mode 100644 index 000000000..e811682fb Binary files /dev/null and b/src/images/stake/singular/bg.png differ diff --git a/src/images/stake/singular/logo.png b/src/images/stake/singular/logo.png new file mode 100644 index 000000000..15b07b76c Binary files /dev/null and b/src/images/stake/singular/logo.png differ diff --git a/src/images/stake/slimefinance/background.png b/src/images/stake/slimefinance/background.png new file mode 100644 index 000000000..d8d2e5310 Binary files /dev/null and b/src/images/stake/slimefinance/background.png differ diff --git a/src/images/stake/slimefinance/logo.png b/src/images/stake/slimefinance/logo.png new file mode 100644 index 000000000..bb8759b3e Binary files /dev/null and b/src/images/stake/slimefinance/logo.png differ diff --git a/src/images/stake/slimefinance/slime.png b/src/images/stake/slimefinance/slime.png new file mode 100644 index 000000000..51bdb575f Binary files /dev/null and b/src/images/stake/slimefinance/slime.png differ diff --git a/src/images/stake/soup/background.png b/src/images/stake/soup/background.png new file mode 100644 index 000000000..e36e21d87 Binary files /dev/null and b/src/images/stake/soup/background.png differ diff --git a/src/images/stake/soup/logo.png b/src/images/stake/soup/logo.png new file mode 100644 index 000000000..3a8c53ae1 Binary files /dev/null and b/src/images/stake/soup/logo.png differ diff --git a/src/images/stake/space/background.png b/src/images/stake/space/background.png new file mode 100644 index 000000000..8ec0774b1 Binary files /dev/null and b/src/images/stake/space/background.png differ diff --git a/src/images/stake/space/logo.png b/src/images/stake/space/logo.png new file mode 100644 index 000000000..822253c75 Binary files /dev/null and b/src/images/stake/space/logo.png differ diff --git a/src/images/stake/spirit/bg.png b/src/images/stake/spirit/bg.png new file mode 100644 index 000000000..a25789304 Binary files /dev/null and b/src/images/stake/spirit/bg.png differ diff --git a/src/images/stake/spirit/logo.png b/src/images/stake/spirit/logo.png new file mode 100644 index 000000000..6039cbd68 Binary files /dev/null and b/src/images/stake/spirit/logo.png differ diff --git a/src/images/stake/squirrel/background.png b/src/images/stake/squirrel/background.png new file mode 100644 index 000000000..f8497d08b Binary files /dev/null and b/src/images/stake/squirrel/background.png differ diff --git a/src/images/stake/squirrel/logo.png b/src/images/stake/squirrel/logo.png new file mode 100644 index 000000000..be8099d97 Binary files /dev/null and b/src/images/stake/squirrel/logo.png differ diff --git a/src/images/stake/squirrel/nuts.png b/src/images/stake/squirrel/nuts.png new file mode 100644 index 000000000..581a34db9 Binary files /dev/null and b/src/images/stake/squirrel/nuts.png differ diff --git a/src/images/stake/stellaswap/bg.png b/src/images/stake/stellaswap/bg.png new file mode 100644 index 000000000..5c071b782 Binary files /dev/null and b/src/images/stake/stellaswap/bg.png differ diff --git a/src/images/stake/stellaswap/logo.png b/src/images/stake/stellaswap/logo.png new file mode 100644 index 000000000..3d84fe9ee Binary files /dev/null and b/src/images/stake/stellaswap/logo.png differ diff --git a/src/images/stake/swirl/background.png b/src/images/stake/swirl/background.png new file mode 100644 index 000000000..85b296189 Binary files /dev/null and b/src/images/stake/swirl/background.png differ diff --git a/src/images/stake/swirl/logo.png b/src/images/stake/swirl/logo.png new file mode 100644 index 000000000..dbdb879c8 Binary files /dev/null and b/src/images/stake/swirl/logo.png differ diff --git a/src/images/stake/tanks/bg.png b/src/images/stake/tanks/bg.png new file mode 100644 index 000000000..0fb7b81a8 Binary files /dev/null and b/src/images/stake/tanks/bg.png differ diff --git a/src/images/stake/tanks/logo.png b/src/images/stake/tanks/logo.png new file mode 100644 index 000000000..1c5ee1e48 Binary files /dev/null and b/src/images/stake/tanks/logo.png differ diff --git a/src/images/stake/tenfi/background.png b/src/images/stake/tenfi/background.png new file mode 100644 index 000000000..d42fd4ab7 Binary files /dev/null and b/src/images/stake/tenfi/background.png differ diff --git a/src/images/stake/tenfi/logo.png b/src/images/stake/tenfi/logo.png new file mode 100644 index 000000000..0bada7af2 Binary files /dev/null and b/src/images/stake/tenfi/logo.png differ diff --git a/src/images/stake/ternoa/bg.png b/src/images/stake/ternoa/bg.png new file mode 100644 index 000000000..ce0dc2908 Binary files /dev/null and b/src/images/stake/ternoa/bg.png differ diff --git a/src/images/stake/ternoa/logo.png b/src/images/stake/ternoa/logo.png new file mode 100644 index 000000000..c945d32b5 Binary files /dev/null and b/src/images/stake/ternoa/logo.png differ diff --git a/src/images/stake/tetu/bg.png b/src/images/stake/tetu/bg.png new file mode 100644 index 000000000..f3536b706 Binary files /dev/null and b/src/images/stake/tetu/bg.png differ diff --git a/src/images/stake/tetu/logo.png b/src/images/stake/tetu/logo.png new file mode 100644 index 000000000..8b296d290 Binary files /dev/null and b/src/images/stake/tetu/logo.png differ diff --git a/src/images/stake/thunder/background.png b/src/images/stake/thunder/background.png new file mode 100644 index 000000000..f94eae66e Binary files /dev/null and b/src/images/stake/thunder/background.png differ diff --git a/src/images/stake/thunder/logo.png b/src/images/stake/thunder/logo.png new file mode 100644 index 000000000..20d4d1ba9 Binary files /dev/null and b/src/images/stake/thunder/logo.png differ diff --git a/src/images/stake/thypoon/background.png b/src/images/stake/thypoon/background.png new file mode 100644 index 000000000..38d844eb9 Binary files /dev/null and b/src/images/stake/thypoon/background.png differ diff --git a/src/images/stake/thypoon/logo.png b/src/images/stake/thypoon/logo.png new file mode 100644 index 000000000..50de048b8 Binary files /dev/null and b/src/images/stake/thypoon/logo.png differ diff --git a/src/images/stake/tombfinance/background.png b/src/images/stake/tombfinance/background.png new file mode 100644 index 000000000..3bc4f0b0c Binary files /dev/null and b/src/images/stake/tombfinance/background.png differ diff --git a/src/images/stake/tombfinance/logo.png b/src/images/stake/tombfinance/logo.png new file mode 100644 index 000000000..24b66a589 Binary files /dev/null and b/src/images/stake/tombfinance/logo.png differ diff --git a/src/images/stake/tosdis/bg.png b/src/images/stake/tosdis/bg.png new file mode 100644 index 000000000..a3cffc4e9 Binary files /dev/null and b/src/images/stake/tosdis/bg.png differ diff --git a/src/images/stake/tosdis/logo.png b/src/images/stake/tosdis/logo.png new file mode 100644 index 000000000..005ea8ae1 Binary files /dev/null and b/src/images/stake/tosdis/logo.png differ diff --git a/src/images/stake/viralata/bg.png b/src/images/stake/viralata/bg.png new file mode 100644 index 000000000..97d1bd44c Binary files /dev/null and b/src/images/stake/viralata/bg.png differ diff --git a/src/images/stake/viralata/logo.png b/src/images/stake/viralata/logo.png new file mode 100644 index 000000000..9e3e863a9 Binary files /dev/null and b/src/images/stake/viralata/logo.png differ diff --git a/src/images/stake/wigoswap/bg.png b/src/images/stake/wigoswap/bg.png new file mode 100644 index 000000000..f62f2a04f Binary files /dev/null and b/src/images/stake/wigoswap/bg.png differ diff --git a/src/images/stake/wigoswap/logo.png b/src/images/stake/wigoswap/logo.png new file mode 100644 index 000000000..5e1eb0e68 Binary files /dev/null and b/src/images/stake/wigoswap/logo.png differ diff --git a/src/images/stake/wolfden/bg.png b/src/images/stake/wolfden/bg.png new file mode 100644 index 000000000..0ea56cc4d Binary files /dev/null and b/src/images/stake/wolfden/bg.png differ diff --git a/src/images/stake/wolfden/logo.png b/src/images/stake/wolfden/logo.png new file mode 100644 index 000000000..c4ac93941 Binary files /dev/null and b/src/images/stake/wolfden/logo.png differ diff --git a/src/images/stake/wsg/bg.png b/src/images/stake/wsg/bg.png new file mode 100644 index 000000000..ce2130449 Binary files /dev/null and b/src/images/stake/wsg/bg.png differ diff --git a/src/images/stake/wsg/logo.png b/src/images/stake/wsg/logo.png new file mode 100644 index 000000000..b5ffa9e4e Binary files /dev/null and b/src/images/stake/wsg/logo.png differ diff --git a/src/images/stake/xbtc/background.png b/src/images/stake/xbtc/background.png new file mode 100644 index 000000000..6de96c877 Binary files /dev/null and b/src/images/stake/xbtc/background.png differ diff --git a/src/images/stake/xbtc/logo.png b/src/images/stake/xbtc/logo.png new file mode 100644 index 000000000..e1e408dce Binary files /dev/null and b/src/images/stake/xbtc/logo.png differ diff --git a/src/images/stake/xyeld/bg.png b/src/images/stake/xyeld/bg.png new file mode 100644 index 000000000..64c1d391f Binary files /dev/null and b/src/images/stake/xyeld/bg.png differ diff --git a/src/images/stake/xyeld/logo.png b/src/images/stake/xyeld/logo.png new file mode 100644 index 000000000..8e880daaf Binary files /dev/null and b/src/images/stake/xyeld/logo.png differ diff --git a/src/images/stake/xyeld/xyeld-matic.svg b/src/images/stake/xyeld/xyeld-matic.svg new file mode 100644 index 000000000..feaf9d18b --- /dev/null +++ b/src/images/stake/xyeld/xyeld-matic.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/stake/yel/bg.png b/src/images/stake/yel/bg.png new file mode 100644 index 000000000..7de94ff8e Binary files /dev/null and b/src/images/stake/yel/bg.png differ diff --git a/src/images/stake/yel/logo.png b/src/images/stake/yel/logo.png new file mode 100644 index 000000000..f65cadbdd Binary files /dev/null and b/src/images/stake/yel/logo.png differ diff --git a/src/images/stake/yieldbay/background.png b/src/images/stake/yieldbay/background.png new file mode 100644 index 000000000..c957fcc19 Binary files /dev/null and b/src/images/stake/yieldbay/background.png differ diff --git a/src/images/stake/yieldbay/logo.png b/src/images/stake/yieldbay/logo.png new file mode 100644 index 000000000..3e88749b6 Binary files /dev/null and b/src/images/stake/yieldbay/logo.png differ diff --git a/src/images/stake/yieldwatch/bg.png b/src/images/stake/yieldwatch/bg.png new file mode 100644 index 000000000..a59d31ebf Binary files /dev/null and b/src/images/stake/yieldwatch/bg.png differ diff --git a/src/images/stake/yieldwatch/logo.png b/src/images/stake/yieldwatch/logo.png new file mode 100644 index 000000000..94eeafc41 Binary files /dev/null and b/src/images/stake/yieldwatch/logo.png differ diff --git a/src/images/stake/zcore/background.png b/src/images/stake/zcore/background.png new file mode 100644 index 000000000..b84fa8440 Binary files /dev/null and b/src/images/stake/zcore/background.png differ diff --git a/src/images/stake/zcore/logo.png b/src/images/stake/zcore/logo.png new file mode 100644 index 000000000..3247a50ce Binary files /dev/null and b/src/images/stake/zcore/logo.png differ diff --git a/src/images/synthetix.png b/src/images/synthetix.png deleted file mode 100644 index 97df2c4e5..000000000 Binary files a/src/images/synthetix.png and /dev/null differ diff --git a/src/images/torus.jpg b/src/images/torus.jpg deleted file mode 100644 index b8ead73cc..000000000 Binary files a/src/images/torus.jpg and /dev/null differ diff --git a/src/images/trezor.png b/src/images/trezor.png deleted file mode 100644 index 4f56f5062..000000000 Binary files a/src/images/trezor.png and /dev/null differ diff --git a/src/images/truffle.png b/src/images/truffle.png deleted file mode 100644 index 0210f304e..000000000 Binary files a/src/images/truffle.png and /dev/null differ diff --git a/src/images/trustWallet.png b/src/images/trustWallet.png deleted file mode 100644 index 1b4b1837c..000000000 Binary files a/src/images/trustWallet.png and /dev/null differ diff --git a/src/images/uncategorized/3CRV.png b/src/images/uncategorized/3CRV.png new file mode 100644 index 000000000..fc89028a7 Binary files /dev/null and b/src/images/uncategorized/3CRV.png differ diff --git a/src/images/uncategorized/ATRICRYPTO.png b/src/images/uncategorized/ATRICRYPTO.png new file mode 100644 index 000000000..f315da42b Binary files /dev/null and b/src/images/uncategorized/ATRICRYPTO.png differ diff --git a/src/images/uncategorized/BADGER-BTCB.svg b/src/images/uncategorized/BADGER-BTCB.svg new file mode 100644 index 000000000..da253d732 --- /dev/null +++ b/src/images/uncategorized/BADGER-BTCB.svg @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/uncategorized/BAT-BAKE.svg b/src/images/uncategorized/BAT-BAKE.svg new file mode 100644 index 000000000..20e38f53c --- /dev/null +++ b/src/images/uncategorized/BAT-BAKE.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/uncategorized/BDIGG-BTCB.svg b/src/images/uncategorized/BDIGG-BTCB.svg new file mode 100644 index 000000000..2f1ffdeea --- /dev/null +++ b/src/images/uncategorized/BDIGG-BTCB.svg @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/uncategorized/BELT-VENUSBLP.png b/src/images/uncategorized/BELT-VENUSBLP.png new file mode 100644 index 000000000..ff762fdfc Binary files /dev/null and b/src/images/uncategorized/BELT-VENUSBLP.png differ diff --git a/src/images/uncategorized/BETH-ETH.svg b/src/images/uncategorized/BETH-ETH.svg new file mode 100644 index 000000000..9025008f5 --- /dev/null +++ b/src/images/uncategorized/BETH-ETH.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/uncategorized/COMP-ETH.svg b/src/images/uncategorized/COMP-ETH.svg new file mode 100644 index 000000000..b00597e5c --- /dev/null +++ b/src/images/uncategorized/COMP-ETH.svg @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/uncategorized/DOPPLE-DOLLY-LP.svg b/src/images/uncategorized/DOPPLE-DOLLY-LP.svg new file mode 100644 index 000000000..7724fe505 --- /dev/null +++ b/src/images/uncategorized/DOPPLE-DOLLY-LP.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/uncategorized/DOPPLE-DOP-LP.svg b/src/images/uncategorized/DOPPLE-DOP-LP.svg new file mode 100644 index 000000000..01aa62ced --- /dev/null +++ b/src/images/uncategorized/DOPPLE-DOP-LP.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/uncategorized/DOPPLE-UST-LP.png b/src/images/uncategorized/DOPPLE-UST-LP.png new file mode 100644 index 000000000..74f4ccafe Binary files /dev/null and b/src/images/uncategorized/DOPPLE-UST-LP.png differ diff --git a/src/images/uncategorized/ETH-USDT.png b/src/images/uncategorized/ETH-USDT.png new file mode 100644 index 000000000..cd5b0ad74 Binary files /dev/null and b/src/images/uncategorized/ETH-USDT.png differ diff --git a/src/images/uncategorized/IRON-3USD.png b/src/images/uncategorized/IRON-3USD.png new file mode 100644 index 000000000..0f72179a0 Binary files /dev/null and b/src/images/uncategorized/IRON-3USD.png differ diff --git a/src/images/uncategorized/IRON3USD.png b/src/images/uncategorized/IRON3USD.png new file mode 100644 index 000000000..b688c60c6 Binary files /dev/null and b/src/images/uncategorized/IRON3USD.png differ diff --git a/src/images/uncategorized/MAI-av3CRV.svg b/src/images/uncategorized/MAI-av3CRV.svg new file mode 100644 index 000000000..9ca291deb --- /dev/null +++ b/src/images/uncategorized/MAI-av3CRV.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/uncategorized/MIM2CRV.svg b/src/images/uncategorized/MIM2CRV.svg new file mode 100644 index 000000000..e15ba2a7c --- /dev/null +++ b/src/images/uncategorized/MIM2CRV.svg @@ -0,0 +1,1627 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/uncategorized/PNT-PBTC.svg b/src/images/uncategorized/PNT-PBTC.svg new file mode 100644 index 000000000..b675949c2 --- /dev/null +++ b/src/images/uncategorized/PNT-PBTC.svg @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/uncategorized/SUSHI-ETH.svg b/src/images/uncategorized/SUSHI-ETH.svg new file mode 100644 index 000000000..30683d7ee --- /dev/null +++ b/src/images/uncategorized/SUSHI-ETH.svg @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/uncategorized/TBTC-BTCB.svg b/src/images/uncategorized/TBTC-BTCB.svg new file mode 100644 index 000000000..1c673bed9 --- /dev/null +++ b/src/images/uncategorized/TBTC-BTCB.svg @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/uncategorized/THUGS-NAR.png b/src/images/uncategorized/THUGS-NAR.png new file mode 100644 index 000000000..d825e65eb Binary files /dev/null and b/src/images/uncategorized/THUGS-NAR.png differ diff --git a/src/images/uncategorized/bTRI-CRED.png b/src/images/uncategorized/bTRI-CRED.png new file mode 100644 index 000000000..63f1bf66b Binary files /dev/null and b/src/images/uncategorized/bTRI-CRED.png differ diff --git a/src/images/uncategorized/crv2pool.png b/src/images/uncategorized/crv2pool.png new file mode 100644 index 000000000..da1a36b1e Binary files /dev/null and b/src/images/uncategorized/crv2pool.png differ diff --git a/src/images/uncategorized/eps3.png b/src/images/uncategorized/eps3.png new file mode 100644 index 000000000..cceaff96d Binary files /dev/null and b/src/images/uncategorized/eps3.png differ diff --git a/src/images/uncategorized/epsBNB.png b/src/images/uncategorized/epsBNB.png new file mode 100644 index 000000000..e58fed78a Binary files /dev/null and b/src/images/uncategorized/epsBNB.png differ diff --git a/src/images/uncategorized/epsFUSDT.png b/src/images/uncategorized/epsFUSDT.png new file mode 100644 index 000000000..4b49aff49 Binary files /dev/null and b/src/images/uncategorized/epsFUSDT.png differ diff --git a/src/images/uncategorized/epsPBTC.png b/src/images/uncategorized/epsPBTC.png new file mode 100644 index 000000000..20b00a6a6 Binary files /dev/null and b/src/images/uncategorized/epsPBTC.png differ diff --git a/src/images/uncategorized/epsRENBTC.png b/src/images/uncategorized/epsRENBTC.png new file mode 100644 index 000000000..70fe9a01a Binary files /dev/null and b/src/images/uncategorized/epsRENBTC.png differ diff --git a/src/images/uncategorized/epsUSDN.png b/src/images/uncategorized/epsUSDN.png new file mode 100644 index 000000000..1031c0140 Binary files /dev/null and b/src/images/uncategorized/epsUSDN.png differ diff --git a/src/images/uncategorized/frax-3pool.png b/src/images/uncategorized/frax-3pool.png new file mode 100644 index 000000000..9d7979fc8 Binary files /dev/null and b/src/images/uncategorized/frax-3pool.png differ diff --git a/src/images/uncategorized/nUSD-LP.png b/src/images/uncategorized/nUSD-LP.png new file mode 100644 index 000000000..e03e5795c Binary files /dev/null and b/src/images/uncategorized/nUSD-LP.png differ diff --git a/src/images/uncategorized/solar-3pool.png b/src/images/uncategorized/solar-3pool.png new file mode 100644 index 000000000..7ccdb7569 Binary files /dev/null and b/src/images/uncategorized/solar-3pool.png differ diff --git a/src/images/uniswap.png b/src/images/uniswap.png deleted file mode 100644 index df3434b8a..000000000 Binary files a/src/images/uniswap.png and /dev/null differ diff --git a/src/images/uniswap.svg b/src/images/uniswap.svg deleted file mode 100644 index 06d7795b3..000000000 --- a/src/images/uniswap.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/images/usdt-pairs/ALPACA-USDT.png b/src/images/usdt-pairs/ALPACA-USDT.png new file mode 100644 index 000000000..1208b4f48 Binary files /dev/null and b/src/images/usdt-pairs/ALPACA-USDT.png differ diff --git a/src/images/usdt-pairs/BIFI-USDT.png b/src/images/usdt-pairs/BIFI-USDT.png new file mode 100644 index 000000000..a6519d274 Binary files /dev/null and b/src/images/usdt-pairs/BIFI-USDT.png differ diff --git a/src/images/usdt-pairs/BNB-USDT.png b/src/images/usdt-pairs/BNB-USDT.png new file mode 100644 index 000000000..5bb5f8bbc Binary files /dev/null and b/src/images/usdt-pairs/BNB-USDT.png differ diff --git a/src/images/usdt-pairs/BTCB-USDT.svg b/src/images/usdt-pairs/BTCB-USDT.svg new file mode 100644 index 000000000..61a11ce8e --- /dev/null +++ b/src/images/usdt-pairs/BTCB-USDT.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/usdt-pairs/ETH-USDT.svg b/src/images/usdt-pairs/ETH-USDT.svg new file mode 100644 index 000000000..76fde6bab --- /dev/null +++ b/src/images/usdt-pairs/ETH-USDT.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/usdt-pairs/FIL-USDT.png b/src/images/usdt-pairs/FIL-USDT.png new file mode 100644 index 000000000..d980f9356 Binary files /dev/null and b/src/images/usdt-pairs/FIL-USDT.png differ diff --git a/src/images/usdt-pairs/LHB-USDT.png b/src/images/usdt-pairs/LHB-USDT.png new file mode 100644 index 000000000..ecf19f819 Binary files /dev/null and b/src/images/usdt-pairs/LHB-USDT.png differ diff --git a/src/images/usdt-pairs/LYD-USDT.png b/src/images/usdt-pairs/LYD-USDT.png new file mode 100644 index 000000000..882902d44 Binary files /dev/null and b/src/images/usdt-pairs/LYD-USDT.png differ diff --git a/src/images/usdt-pairs/MATIC-USDT.png b/src/images/usdt-pairs/MATIC-USDT.png new file mode 100644 index 000000000..7fe30d739 Binary files /dev/null and b/src/images/usdt-pairs/MATIC-USDT.png differ diff --git a/src/images/usdt-pairs/SHIB-USDT.png b/src/images/usdt-pairs/SHIB-USDT.png new file mode 100644 index 000000000..2b9dae816 Binary files /dev/null and b/src/images/usdt-pairs/SHIB-USDT.png differ diff --git a/src/images/usdt-pairs/TUSD-USDT.png b/src/images/usdt-pairs/TUSD-USDT.png new file mode 100644 index 000000000..734ce3ef0 Binary files /dev/null and b/src/images/usdt-pairs/TUSD-USDT.png differ diff --git a/src/images/usdt-pairs/WEX-USDT.png b/src/images/usdt-pairs/WEX-USDT.png new file mode 100644 index 000000000..e425a615a Binary files /dev/null and b/src/images/usdt-pairs/WEX-USDT.png differ diff --git a/src/images/usdt.curve.fi-logo.png b/src/images/usdt.curve.fi-logo.png deleted file mode 100644 index f0da617d2..000000000 Binary files a/src/images/usdt.curve.fi-logo.png and /dev/null differ diff --git a/src/images/ust-pairs/MAMZN-UST.svg b/src/images/ust-pairs/MAMZN-UST.svg new file mode 100644 index 000000000..a69393635 --- /dev/null +++ b/src/images/ust-pairs/MAMZN-UST.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/ust-pairs/MCOIN-UST.svg b/src/images/ust-pairs/MCOIN-UST.svg new file mode 100644 index 000000000..a67ef572f --- /dev/null +++ b/src/images/ust-pairs/MCOIN-UST.svg @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/ust-pairs/MGOOGL-UST.svg b/src/images/ust-pairs/MGOOGL-UST.svg new file mode 100644 index 000000000..714d5c889 --- /dev/null +++ b/src/images/ust-pairs/MGOOGL-UST.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/ust-pairs/MIR-UST.svg b/src/images/ust-pairs/MIR-UST.svg new file mode 100644 index 000000000..729c5ae8d --- /dev/null +++ b/src/images/ust-pairs/MIR-UST.svg @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/ust-pairs/MNFLX-UST.svg b/src/images/ust-pairs/MNFLX-UST.svg new file mode 100644 index 000000000..9562a7581 --- /dev/null +++ b/src/images/ust-pairs/MNFLX-UST.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/ust-pairs/MTSLA-UST.svg b/src/images/ust-pairs/MTSLA-UST.svg new file mode 100644 index 000000000..9eccb88de --- /dev/null +++ b/src/images/ust-pairs/MTSLA-UST.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/wBTC-icon.png b/src/images/wBTC-icon.png deleted file mode 100644 index a34071048..000000000 Binary files a/src/images/wBTC-icon.png and /dev/null differ diff --git a/src/images/wBTC-logo.png b/src/images/wBTC-logo.png deleted file mode 100644 index 0a26b98df..000000000 Binary files a/src/images/wBTC-logo.png and /dev/null differ diff --git a/src/images/walletConnectIcon.svg b/src/images/walletConnectIcon.svg deleted file mode 100644 index 04690fa18..000000000 --- a/src/images/walletConnectIcon.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/images/wallets/binance-wallet.png b/src/images/wallets/binance-wallet.png new file mode 100644 index 000000000..520dceb46 Binary files /dev/null and b/src/images/wallets/binance-wallet.png differ diff --git a/src/images/wallets/bitkeep-wallet.png b/src/images/wallets/bitkeep-wallet.png new file mode 100644 index 000000000..0fe978530 Binary files /dev/null and b/src/images/wallets/bitkeep-wallet.png differ diff --git a/src/images/wallets/clover.png b/src/images/wallets/clover.png new file mode 100644 index 000000000..68e99e565 Binary files /dev/null and b/src/images/wallets/clover.png differ diff --git a/src/images/wallets/coinbase.png b/src/images/wallets/coinbase.png new file mode 100644 index 000000000..68c6a8609 Binary files /dev/null and b/src/images/wallets/coinbase.png differ diff --git a/src/images/wallets/crypto.png b/src/images/wallets/crypto.png new file mode 100644 index 000000000..11016d142 Binary files /dev/null and b/src/images/wallets/crypto.png differ diff --git a/src/images/wallets/fusecash.png b/src/images/wallets/fusecash.png new file mode 100644 index 000000000..21cf2d456 Binary files /dev/null and b/src/images/wallets/fusecash.png differ diff --git a/src/images/wallets/math-wallet.svg b/src/images/wallets/math-wallet.svg new file mode 100644 index 000000000..33ce11663 --- /dev/null +++ b/src/images/wallets/math-wallet.svg @@ -0,0 +1,14 @@ + + + + Logo_Icon_black + Created with Sketch. + + + + + + + + + \ No newline at end of file diff --git a/src/images/wallets/metamask.png b/src/images/wallets/metamask.png new file mode 100644 index 000000000..c6d8955f6 Binary files /dev/null and b/src/images/wallets/metamask.png differ diff --git a/src/images/metamask.svg b/src/images/wallets/metamask.svg similarity index 100% rename from src/images/metamask.svg rename to src/images/wallets/metamask.svg diff --git a/src/images/wallets/safepal-wallet.svg b/src/images/wallets/safepal-wallet.svg new file mode 100644 index 000000000..3dd3a7fad --- /dev/null +++ b/src/images/wallets/safepal-wallet.svg @@ -0,0 +1,13 @@ + + + + + + + diff --git a/src/images/wallets/trust-wallet.svg b/src/images/wallets/trust-wallet.svg new file mode 100644 index 000000000..749d863b9 --- /dev/null +++ b/src/images/wallets/trust-wallet.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/images/wallets/valora.png b/src/images/wallets/valora.png new file mode 100644 index 000000000..0babad2e7 Binary files /dev/null and b/src/images/wallets/valora.png differ diff --git a/src/images/wallets/wallet-connect.svg b/src/images/wallets/wallet-connect.svg new file mode 100644 index 000000000..97f4bd770 --- /dev/null +++ b/src/images/wallets/wallet-connect.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/wechat.png b/src/images/wechat.png deleted file mode 100644 index 9539006d7..000000000 Binary files a/src/images/wechat.png and /dev/null differ diff --git a/src/images/y.curve.fi-logo.png b/src/images/y.curve.fi-logo.png deleted file mode 100644 index f0da617d2..000000000 Binary files a/src/images/y.curve.fi-logo.png and /dev/null differ diff --git a/src/images/yCRV-logo.png b/src/images/yCRV-logo.png deleted file mode 100644 index f0da617d2..000000000 Binary files a/src/images/yCRV-logo.png and /dev/null differ diff --git a/src/images/ycUSDC-logo.png b/src/images/ycUSDC-logo.png deleted file mode 100644 index eb48d7eb6..000000000 Binary files a/src/images/ycUSDC-logo.png and /dev/null differ diff --git a/src/images/ycUSDT-logo.png b/src/images/ycUSDT-logo.png deleted file mode 100644 index 6c096041e..000000000 Binary files a/src/images/ycUSDT-logo.png and /dev/null differ diff --git a/src/images/yearn.finance-logo.png b/src/images/yearn.finance-logo.png deleted file mode 100644 index 422790f53..000000000 Binary files a/src/images/yearn.finance-logo.png and /dev/null differ diff --git a/src/index.js b/src/index.js index 0d490fcb1..9d9e3f700 100644 --- a/src/index.js +++ b/src/index.js @@ -1,15 +1,18 @@ +import network from 'network'; import React from 'react'; import ReactDOM from 'react-dom'; import Root from './Root'; -import * as serviceWorker from './serviceWorker'; -import "assets/scss/material-kit-pro-react.scss?v=1.9.0"; +import 'assets/scss/material-kit-pro-react.scss?v=1.9.0'; import './styles/index.scss'; - import './i18n'; -ReactDOM.render(, document.getElementById('root')); +if (network) { + ReactDOM.render(, document.getElementById('root')); +} + // If you want your app to work offline and load faster, you can change // unregister() to register() below. Note this comes with some pitfalls. // Learn more about service workers: http://bit.ly/CRA-PWA -serviceWorker.unregister(); \ No newline at end of file +// import * as serviceWorker from './serviceWorker'; +// serviceWorker.unregister(); diff --git a/src/locales/ar/translation.json b/src/locales/ar/translation.json new file mode 100644 index 000000000..964834abb --- /dev/null +++ b/src/locales/ar/translation.json @@ -0,0 +1,118 @@ +{ + "App-Meta-Description": "مُحسِّن العائد متعدد الشبكات", + "Disclaimer": "يعد استخدام العقود الذكية والرموز والتشفير دائمًا مخاطرة. قم بدراسة الموضوع قبل الاستثمار.", + "Network-ConnectWallet": "ربط المحفظة", + "Vault-Wallet": "المحفظة", + "Vault-Balance": "الرصيد", + "Vault-APR": "م م", + "Vault-APY": "م س", + "Vault-APYDaily": "يومي", + "Vault-TVL": "إجمالي", + "Vault-AutocompoundingNote": "جميع الخزائن تتضاعف بمعدل مثالي", + "Vault-Approving": "جاري الوثوق...", + "Vault-ApproveButton": "اوثق", + "Vault-ApprovalSuccess": "نجح الوثوق", + "Vault-ApprovalError": "خطاء في الوثوق: {{error}}", + "Vault-DepositButton": "إيداع", + "Vault-DepositButtonAll": "إيداع الكل", + "Vault-DepositTokensNote": "سوف تتلقى {{mooToken}} كإيصال للإيداعاتك لأصول {{assetToken}}. هذا الإيصال مطلوب لإستخراج أصولك {{assetToken}}، لا تبادل أو تنقل {{mooToken}} للغرباء!", + "Vault-DepositAndWithdrawFee": "رسوم الإيداع: {{depositFee}}، رسوم الإستخراج: {{withdrawalFee}}", + "Vault-Deposited": "أودعت", + "Vault-DepositSuccess": "نجح الإيداع", + "Vault-DepositError": "خطاء في الإيداع: {{error}}", + "Vault-DepositScenario": "سينتج عن الإيداع:", + "Vault-DepositScenarioSwap": "لرصيد زوج السيولهلموازنة زوج السيولة ، استبدل {{swapIn}} بـ {{swapOut}} (± {{slippageTolerance}} رسوم الانزلاق والإيداع ، إن وجدت)", + "Vault-DepositScenarioAddLiquidity": "أضف سيولة لتحصل على {{poolToken}}", + "Vault-DepositScenarioDepositToVault": "تم استلام الإيداع {{poolToken}} في خزينة Beefy", + "Vault-DepositScenarioReturnDust": "أعد كميات التتبع غير المستخدمة من {{tokenA}} و {{tokenB}} إلى محفظتك", + "Vault-Withdrawing": "جاري الإستخراج...", + "Vault-WithdrawButton": "إستخراج", + "Vault-WithdrawButtonAll": "إستخراج الكل", + "Vault-WithdrawFeeGlobal": "0.1٪ رسوم سحب على جميع الخزائن (ما لم يذكر استثناء على وصف الخزنة)", + "Vault-WithdrawSuccess": "نجح الإستخراج", + "Vault-WithdrawError": "خطاء في الأستخراج: {{error}}", + "Vault-WithdrawScenario": "سينتج عن الإستخراج:", + "Vault-WithdrawScenarioRedeem": "استرداد {{mooToken}} مقابل {{poolToken}}", + "Vault-WithdrawScenarioRemoveLiquidity": "أزل السيولة من {{poolToken}} لتلقي {{tokenA}} و {{tokenB}}", + "Vault-WithdrawScenarioSwap": "تقدر قيمة المبادلة {{swapIn}} لـ {{swapOut}} (± {{slippageTolerance}} رسوم الانزلاق والسحب ، إن وجدت)", + "Vault-WithdrawScenarioTotal": "التحويل تقريبيا {{totalOut}} إلى محفظتك", + "Vault-Harvesting": "حصاد...", + "Vault-HarvestButton": "أحصد", + "Vault-HarvestConfirm": "تأكيد الحصاد؟", + "Vault-HarvestDescription": "الحصاد اليدوي غير مطلوب. يتم جمع حصاد جميع الخزائن أوتوماتيكيا. هذه ميزة متقدمة تستهدف المستخدمين ذوي الخبرة. هل أنت متأكد أنك تريد الحصاد؟", + "Vault-HarvestSuccess": "نجح الحصاد", + "Vault-HarvestError": "خطأ الحصاد: {{error}}", + "Vault-LastHarvest": "أخر حصاد", + "Vault-MainTitle": "الخزائن", + "Vault-SecondTitle": "إيداع و كسب المال", + "Vault-DepositsPausedTitle": "الإيداعات متوقفة مؤقتا", + "Vault-DepositsPausedMsg": "الإيداعات متوقفه مؤقتا لهذه الخزنة.", + "Vault-DepositsRetiredTitle": "متقاعد", + "Vault-DepositsRetiredMsg": "الخزنة متقاعده اسحب أموالك في أسرع وقت ممكن", + "Vault-Staked": "مرهون", + "Vault-Description": "يستخم: {{vault}}", + "Vault-Network": "اختار شبكة", + "Vault-Experimental": "تجريبي", + "Vault-Loading": "تحميل الخزنة", + "Vault-NotFound": "الخزنة {{vaultId}} لا توجد", + "Vault-Breakdown-VaultApr": "العائد السنوي للخزنة", + "Vault-Breakdown-TradingApr": "عائد التداول السنوي", + "Vault-Breakdown-BoostApr": "العائد المدعوم", + "Vault-Breakdown-VaultDaily": "العائد اليومي", + "Vault-Breakdown-TradingDaily": "تداول اليومي", + "Vault-Breakdown-BoostDaily": "دعم يومي", + "Vaults-Back": "العودة للخزائن", + "Hide-Zero-Balances": "إخفاء رصيد الصفر", + "Hide-Zero-Vault-Balances": "الخزائن التي تم الإيداع فيها", + "Retired-Vaults": "الخزائن المتقاعدة", + "Filters-Platform": "المنصة", + "Filters-Vault-Type": "نوع الخزنة", + "Filters-Asset": "الأصل", + "Filters-Sort": "ترتيب حسب", + "Filters-All": "الكل", + "Filters-Default": "الإفتراضي", + "Filters-Reset": "مسح الفلاتر", + "Confirm": "تأكيد", + "Cancel": "إلغاء", + "No-Results": "لا نتيجة", + "docs": "المستندات", + "news": "أخبار", + "source": "المصدر", + "vote": "تصويت", + "stats": "إحصاءات", + "socials": "إجتماعي", + "buy": "شراء", + "products": "منتجات", + "Powered-By": "مشغل بواسطة", + "IFO-Guide": "ديلي التمويل المستقبلي الأولي", + "Available-To-Stake": "متوفر للرهن", + "Stake": "رهن", + "Available-To-Unstake": "متوفر لإلغاء الرهن", + "Unstake": "إلغاء رهن", + "Max": "أقصى", + "Coming-Soon": "قريبا", + "Finished": "إنتهى", + "End": "نهاية", + "Stake-Meta-Title": "إكسب {{earnedToken}} - مدهوم من قبل {{boostedBy}} - {{networkName}}", + "Stake-Button-Stake": "رهن", + "Stake-Button-Claim": "أستلام", + "Stake-Button-Approval": "اوثق", + "Stake-Button-Stake-Tokens": "رهن التوكن", + "Stake-Button-Unstake-Tokens": "إلغاء رهن التوكن", + "Stake-Button-Claim-Rewards": "الحصول على المكافآت", + "Stake-Button-Exit": "الحصول على المكافئات و إلغاء الرهن", + "Stake-Balancer-Current-Staked": "المرهون حاليا", + "Stake-Balancer-Rewards-Available": "المكافآت المتاحة", + "Stake-Balancer-Half-Time": "نصف الوقت", + "Stake-BoostedBy": "مدعوم من قبل {{name}}", + "Stake-Button-Back": "عودة", + "Stake-Pool-Retired": "انتهت الجمعية ، اسحب أموالك.", + "Stake-Total-Value-Locked": "اجمالي {{mooToken}} المرهونة", + "Stake-Your-Pool": "جمعيتك", + "Stake-Current-Daily": "السعر اليومي الحالي", + "Add-Liquidity": "إضافة سيولة", + "Remove-Liquidity": "إزالة سيولة", + "Buy-Token": "شراء التوكن", + "Experimental": "إصدار تجريبي", + "Select-Network": "تحديد الشبكة" +} diff --git a/src/locales/de/translation.json b/src/locales/de/translation.json new file mode 100644 index 000000000..62f4fd293 --- /dev/null +++ b/src/locales/de/translation.json @@ -0,0 +1,113 @@ +{ + "Disclaimer": "Smart Contracts, Tokens und Crypto allgemein beinhaltet immer ein Risiko. DYOR vor dem Invest.", + "Network-ConnectWallet": "Mit Wallet verbinden", + "Vault-Wallet": "Wallet", + "Vault-Balance": "Guthaben", + "Vault-APY": "APY", + "Vault-APYDaily": "Tageskurs", + "Vault-TVL": "TVL", + "Vault-AutocompoundingNote": "Alle Vaults werden automatisch zu einer optimalen Rate thesauriert ", + "Vault-Approving": "Freigeben...", + "Vault-ApproveButton": "Freigeben", + "Vault-ApprovalSuccess": "Freigabe erfolgreich", + "Vault-ApprovalError": "Freigabe fehlgeschlagen: {{error}}", + "Vault-DepositButton": "Einzahlen", + "Vault-DepositButtonAll": "Alles einzahlen", + "Vault-DepositTokensNote": "Sie erhalten {{mooToken}}-Token als Quittung für Ihr eingezahltes Guthaben {{assetToken}}. Das Token wird für die Auszahlung Ihrer {{assetToken}} benötigt; handeln oder übertragen Sie das {{mooToken}} nicht an Dritte!", + "Vault-DepositFee": "Es fällt eine {{depositFee}} Einzahlungsgebühr an, keine Auszahlungsgebühr", + "Vault-Deposited": "Eingezahlt", + "Vault-DepositSuccess": "Einzahlung erfolgreich", + "Vault-DepositError": "Einzahlung fehlgeschlagen: {{error}}", + "Vault-DepositScenario": "Die Einzahlung führt zu:", + "Vault-DepositScenarioSwap": "Um ein Liquiditätspaar auszugleichen, wechseln von {{swapIn}} auf {{swapOut}} (±{{slippageTolerance}} Slippage und Einzahlungsgebühr, falls vorhanden)", + "Vault-DepositScenarioAddLiquidity": "{{poolToken}} kaufen", + "Vault-DepositScenarioDepositToVault": "Erhaltenen {{poolToken}} im Beefy Vault einzahlen", + "Vault-DepositScenarioReturnDust": "Ungenutzte Restbeträge von {{tokenA}} und {{tokenB}} in Ihr Wallet zurück übertragen", + "Vault-Withdrawing": "Auszahlen...", + "Vault-WithdrawButton": "Auszahlen", + "Vault-WithdrawButtonAll": "Alles auszahlen", + "Vault-WithdrawFeeGlobal": "Für alle Vaults wird eine Ein- bzw. Auszahlungsgebühr von 0,05%-0,1% erhoben", + "Vault-WithdrawSuccess": "Auszahlung erfolgreich", + "Vault-WithdrawError": "Auszahlung fehlgeschlagen", + "Vault-WithdrawScenario": "Die Auszahlung führt zu:", + "Vault-WithdrawScenarioRedeem": "Einlösen von {{mooToken}} Token für {{poolToken}}", + "Vault-WithdrawScenarioRemoveLiquidity": "Liquidität aus {{poolToken}} entnehmen, um {{tokenA}} und {{tokenB}} zu erhalten", + "Vault-WithdrawScenarioSwap": "Wechseln von geschätzten {{swapIn}} auf {{swapOut}} (±{{slippageTolerance}} Slippage und Abhebungsgebühr, falls vorhanden)", + "Vault-WithdrawScenarioTotal": "Überweisen geschätzte {{totalOut}} auf Ihr Wallet", + "Vault-Harvesting": "Ernten...", + "Vault-HarvestButton": "Ernten", + "Vault-HarvestConfirm": "Ernte bestätigen?", + "Vault-HarvestDescription": "Manuelle Ernte ist NICHT NOTWENDIG. Alle Vaults werden automatisch thesauriert. Dies ist eine erweiterte Funktion, die sich an erfahrene Nutzer richtet. Sind Sie sicher, dass Sie ernten wollen?", + "Vault-HarvestSuccess": "Ernte erfolgreich", + "Vault-HarvestError": "Ernte fehlgeschlagen: {{error}}", + "Vault-LastHarvest": "Letzte Ernte", + "Vault-MainTitle": "Vaults", + "Vault-SecondTitle": "Einzahlen & Geld verdienen", + "Vault-DepositsPausedTitle": "Einzahlungen pausiert", + "Vault-DepositsPausedMsg": "Einzahlungen für diesen Vault sind pausiert.", + "Vault-DepositsRetiredTitle": "ABGELAUFEN", + "Vault-DepositsRetiredMsg": "Vault beendet, heben Sie Ihr Geld umgehend ab", + "Vault-Staked": "Staked", + "Vault-Description": "Verwendet: {{vault}}", + "Vault-Network": "Netzwerk auswählen", + "Vault-Experimental": "Testweise", + "Vault-Loading": "Vault wird geladen", + "Vault-NotFound": "Vault {{vaultId}} nicht gefunden", + "Vaults-Back": "Zurück zu Vaults", + "Hide-Zero-Balances": "Nullsalden ausblenden", + "Hide-Zero-Vault-Balances": "Eingezahlte Vaults", + "Retired-Vaults": "Abgelaufene Vaults", + "Filters-Platform": "Plattform", + "Filters-Vault-Type": "Vault Typ", + "Filters-Asset": "Anlage", + "Filters-Sort": "Sortieren nach", + "Filters-All": "Alle", + "Filters-Default": "Standardeinstellungen", + "Filters-Reset": "Filter zurücksetzen", + "Confirm": "Bestätigen", + "Cancel": "Abbrechen", + "No-Results": "Keine Ergebnisse", + "docs": "dokumente", + "news": "neuigkeiten", + "source": "quelle", + "gov": "verwaltung", + "vote": "abstimmen", + "stats": "statistiken", + "app": "app", + "socials": "social media", + "buy": "kaufen", + "products": "produkte", + "Powered-By": "UNTERSTÜTZT VON", + "IFO-Guide": "IFO Anleitung", + "Available-To-Stake": "Zum Staken verfügbar", + "Stake": "Staken (Anlegen)", + "Available-To-Unstake": "Verfübgar für Unstake", + "Unstake": "Unstaken", + "Max": "Max", + "Coming-Soon": "in Kürze", + "Finished": "Abgeschlossen", + "End": "Ende", + "Stake-Button-Stake": "Anlegen", + "Stake-Button-Claim": "Anfordern", + "Stake-Button-Approval": "Freigeben", + "Stake-Button-Stake-Tokens": "Tokens anlegen", + "Stake-Button-Unstake-Tokens": "Tokens unstaken", + "Stake-Button-Claim-Rewards": "Belohnung erhalten", + "Stake-Button-Exit": "Anfordern und unstaken", + "Stake-Balancer-Current-Staked": "Derzeit gestaked", + "Stake-Balancer-Rewards-Available": "Belohnungen verfügbar", + "Stake-Balancer-Half-Time": "Halbzeit", + "Stake-BoostedBy": "Gefördert durch {{name}}", + "Stake-Button-Back": "Zurück", + "Stake-Pool-Retired": "Der Einsatz ist beendet, ziehen Sie Ihr Guthaben ab.", + "Stake-Total-Value-Locked": "Total Value Locked", + "Stake-Your-Pool": "Dein Einsatz", + "Stake-Current-Daily": "Aktueller Tageskurs", + "Add-Liquidity": "Liquidität hinzufügen", + "Remove-Liquidity": "Liquidität entfernen", + "Buy-Token": "Token kaufen", + "Wrap-BNB": "Wrap BNB", + "Boost": "Boost", + "Experimental": "Testweise", + "Select-Network": "Netzwerk auswählen" +} diff --git a/src/locales/el/translation.json b/src/locales/el/translation.json new file mode 100644 index 000000000..e04d652a7 --- /dev/null +++ b/src/locales/el/translation.json @@ -0,0 +1,113 @@ +{ + "Disclaimer": "Η χρησιμοποίηση Smart Contract, Token, και Crypto περιέχει ρίσκο. Κάντε την έρευνα σας πριν επενδύσετε.", + "Network-ConnectWallet": "Σύνδεση Πορτοφολιού", + "Vault-Wallet": "Πορτοφόλι", + "Vault-Balance": "Υπόλοιπο", + "Vault-APY": "APY", + "Vault-APYDaily": "Ημερήσια", + "Vault-TVL": "TVL", + "Vault-AutocompoundingNote": "Όλα τα χρηματοκιβώτια ανακαταθέτουν στο βέλτιστο ρυθμό", + "Vault-Approving": "Έγκριση...", + "Vault-ApproveButton": "Έγκριση", + "Vault-ApprovalSuccess": "Επιτυχής έγκριση", + "Vault-ApprovalError": "Αποτυχία έγκρισης: {{error}}", + "Vault-DepositButton": "Κατάθεση", + "Vault-DepositButtonAll": "Κατάθεση όλων", + "Vault-DepositTokensNote": "Θα λάβετε {{mooToken}} token ως απόδειξη της κατάθεσης {{assetToken}}. Η απόδειξη είναι απαραίτητη για την ανάληψη των {{assetToken}} σας, μην ανταλλάξετε ή στείλετε τα {{mooToken}} σας σε αγνώστους!", + "Vault-DepositFee": "Υπάρχουν {{depositFee}} τέλη κατάθεσης, δεν υπάρχουν τέλη ανάληψης.", + "Vault-Deposited": "Κατατεθειμένα", + "Vault-DepositSuccess": "Επιτυχής κατάθεση", + "Vault-DepositError": "Αποτυχία κατάθεσης: {{error}}", + "Vault-DepositScenario": "Η κατάθεση θα έχει ως αποτέλεσμα:", + "Vault-DepositScenarioSwap": "Για την εξισορρόπηση ενός ζευγαριού ρευστότητας, μετατροπή του {{swapIn}} για {{swapOut}} (±{{slippageTolerance}} ολίσθηση και τέλη ανάληψης, εάν υπάρχουν)", + "Vault-DepositScenarioAddLiquidity": "Παροχή ρευστότητας για παραλαβή {{poolToken}}", + "Vault-DepositScenarioDepositToVault": "Κατάθεση ληφθέντων {{poolToken}} στο χρηματοκιβώτιο του Beefy", + "Vault-DepositScenarioReturnDust": "Επιστροφή αχρησιμοποίητου ίχνους ποσότητας του {{tokenA}} και {{tokenB}} στο πορτοφόλι σας", + "Vault-Withdrawing": "Ανάληψη...", + "Vault-WithdrawButton": "Ανάληψη", + "Vault-WithdrawButtonAll": "Ανάληψη όλων", + "Vault-WithdrawFeeGlobal": "Υπάρχουν 0.05%-0.1% τέλη κατάθεσης ή ανάληψης σε όλα τα χρηματοκιβώτια", + "Vault-WithdrawSuccess": "Επιτυχής ανάληψη", + "Vault-WithdrawError": "Αποτυχία ανάληψης: {{error}}", + "Vault-WithdrawScenario": "Η ανάληψη θα έχει ως αποτέλεσμα:", + "Vault-WithdrawScenarioRedeem": "Εξαργύρωση {{mooToken}} token για {{poolToken}}", + "Vault-WithdrawScenarioRemoveLiquidity": "Αφαίρεση ρευστότητας από {{poolToken}} για να λάβετε {{tokenA}} και {{tokenB}}", + "Vault-WithdrawScenarioSwap": "Μετατροπή εκτιμώμενη {{swapIn}} για {{swapOut}} (±{{slippageTolerance}} ολίσθηση και τέλη ανάληψης, εάν υπάρχουν)", + "Vault-WithdrawScenarioTotal": "Μεταφορά εκτιμώμενη {{totalOut}} στο πορτοφόλι σας", + "Vault-Harvesting": "Συγκομιδή...", + "Vault-HarvestButton": "Συγκομιδή", + "Vault-HarvestConfirm": "Επιβεβαίωση συγκομιδής;", + "Vault-HarvestDescription": "H χειροκίνητη συγκομιδή ΔΕΝ ΧΡΕΙΆΖΕΤΕ. Όλα τα χρηματοκιβώτια την εκτελούν αυτόματα. Αυτό το χαρακτηριστικό είναι για προχωρημένους χρήστες. Είστε σίγουρος ότι θέλετε να κάνετε συγκομιδή;", + "Vault-HarvestSuccess": "Επιτυχής συγκομιδή", + "Vault-HarvestError": "Αποτυχία συγκομιδής: {{error}}", + "Vault-LastHarvest": "Τελευταία συγκομιδή", + "Vault-MainTitle": "Χρηματοκιβώτια", + "Vault-SecondTitle": "Κάνε κατάθεση & κέρδισε χρήματα", + "Vault-DepositsPausedTitle": "Οι καταθέσεις έχουν διακοπή", + "Vault-DepositsPausedMsg": "Οι καταθέσεις για αυτο το χρηματοκιβώτιο έχουν διακοπή.", + "Vault-DepositsRetiredTitle": "ΈΧΕΙ ΑΠΟΣΥΡΘΕΊ", + "Vault-DepositsRetiredMsg": "Το χρηματοκιβώτιο έχει αποσυρθεί, κάντε ανάληψη των χρημάτων σας όσο το δυνατόν γρηγορότερα.", + "Vault-Staked": "Κατατεθειμένα", + "Vault-Description": "Χρησιμοποιεί: {{vault}}", + "Vault-Network": "Επιλέξτε δίκτυο", + "Vault-Experimental": "Πειραματικά", + "Vault-Loading": "Φόρτωση χρηματοκιβώτιου", + "Vault-NotFound": "Το χρηματοκιβώτιο {{vaultId}} δεν βρέθηκε", + "Vaults-Back": "Πίσω στα Χρηματοκιβώτια", + "Hide-Zero-Balances": "Απόκρυψη μηδενικών υπολοίπων", + "Hide-Zero-Vault-Balances": "Χρηματοκιβώτια με καταθέσεις", + "Retired-Vaults": "Αποσυρμένα χρηματοκιβώτια", + "Filters-Platform": "Platform", + "Filters-Vault-Type": "Τύπος χρηματοκιβώτιου", + "Filters-Asset": "Asset", + "Filters-Sort": "Ταξινόμηση κατά", + "Filters-All": "Όλα", + "Filters-Default": "Προκαθορισμένο", + "Filters-Reset": "Καθαρισμός φίλτρων", + "Confirm": "Επιβεβαίωση", + "Cancel": "Ακύρωση", + "No-Results": "Κανένα αποτέλεσμα", + "docs": "Έγγραφα", + "news": "Νέα", + "source": "Πηγαίος κώδικας", + "gov": "gov", + "vote": "Ψηφοφορίες", + "stats": "Στατιστικά", + "app": "Εφαρμογή", + "socials": "Κοινωνικά δίκτυα", + "buy": "Αγορά", + "products": "Προϊόντα", + "Powered-By": "POWERED BY", + "IFO-Guide": "IFO Guide", + "Available-To-Stake": "Διαθέσιμο για Κατάθεση", + "Stake": "Stake", + "Available-To-Unstake": "Διαθέσιμο για Ανάληψη", + "Unstake": "Ανάληψη", + "Max": "Max", + "Coming-Soon": "Έρχεται Σύντομα", + "Finished": "Τελειωμένο", + "End": "Τέλος", + "Stake-Button-Stake": "Κατάθεση", + "Stake-Button-Claim": "Ανάληψη", + "Stake-Button-Approval": "Επιβεβαίωση", + "Stake-Button-Stake-Tokens": "Κατάθεση Token", + "Stake-Button-Unstake-Tokens": "Ανάληψη Token", + "Stake-Button-Claim-Rewards": "Ανάληψη Ανταμοιβών", + "Stake-Button-Exit": "Ανάληψη Token και Ανταμοιβών", + "Stake-Balancer-Current-Staked": "Κατατεθειμένα", + "Stake-Balancer-Rewards-Available": "Διαθέσιμες Ανταμοιβές", + "Stake-Balancer-Half-Time": "Half-Time", + "Stake-BoostedBy": "Boosted by {{name}}", + "Stake-Button-Back": "Πίσω", + "Stake-Pool-Retired": "Το pool έχει τελειώσει, κάντε ανάληψη των χρημάτων σας.", + "Stake-Total-Value-Locked": "Συνολική Κλειδωμένη Αξία", + "Stake-Your-Pool": "Το Pool σας", + "Stake-Current-Daily": "Τρέχων Ημερήσιος Ρυθμός", + "Add-Liquidity": "Παροχή Ρευστότητας", + "Remove-Liquidity": "Αφαίρεση Ρευστότητας", + "Buy-Token": "Αγορά Token", + "Wrap-BNB": "Wrap BNB", + "Boost": "Boost", + "Experimental": "Πειραματικά", + "Select-Network": "Επιλέξτε Δίκτυο" +} diff --git a/src/locales/en/translation.json b/src/locales/en/translation.json index b9ff4612b..afbcbf523 100644 --- a/src/locales/en/translation.json +++ b/src/locales/en/translation.json @@ -1,136 +1,183 @@ { - "Nav-Home": "Home", - "Nav-Vault": "Vault", - "Nav-Stake": "Stake", - "Nav-Farm": "Farm", - "Foot-Token": "Token Contract", - "Foot-Forum": "Forum", - "Foot-Audit": "Audit", - "Foot-Stats": "Stats", - "Foot-Voting": "Voting", - "Foot-Documentation": "Documentation", - "Foot-Uniswap": "Uniswap ETH-YFII", - "App-SnackBarText": "Network error", - "Home-Subtitle": "A Better Way For Everyone To Grow Wealth.", - "Home-Warning": "This project is in beta, Use at your own risk.", - "Home-ConnectWallet": "Connect your wallet to continue.", - "Home-ConnectButton": "Connect", - "Home-BrowserWallet": "Connect Wallet", - "Home-SnackBarText": "The difference between token desposited and itoken", - "Home-SnackBarUrl": "https://docs.yfii.finance/#/itokens", - "Vault-Title": "Deposit to Earn", + "App-Meta-Description": "The Multichain Yield Optimizer", + "Disclaimer": "Using Smart Contracts, Tokens, and Crypto is always a risk. DYOR before investing.", + "Network-UnknownError": "An unknown error has occurred.", + "Network-ConnectionRequired": "Wallet connection to {{network}} required.", + "Network-Supports": "This app supports {{network}}.", + "Network-ConnectedTo": "You are currently connected to {{network}}.", + "Network-ConnectedUnsupported": "You are currently connected to an unsupported network.", + "Network-ConnectWallet": "Connect wallet", + "Network-DisconnectWallet": "Disconnect wallet", + "Network-SwitchToNetwork": "Switch to {{network}} network", + "Network-GoToApp": "Go to {{network}} app", + "Network-SwitchNote": "You may need to manually switch network via your wallet.", + "Network-NoWalletAddress": "Allow access to one account in your wallet.", "Vault-Wallet": "Wallet", "Vault-Balance": "Balance", - "Vault-Input-1": "Input the number of ", - "Vault-Input-2": " you want to deposit", - "Vault-Input-3": "Input the number of ", - "Vault-Input-4": " you want to withdraw", - "Vault-ApproveING": "Approve...", + "Vault-APR": "APR", + "Vault-APY": "APY", + "Vault-APYDaily": "Daily", + "Vault-TVL": "TVL", + "Vault-AutocompoundingNote": "All vaults autocompound at an optimal rate", + "Vault-Approving": "Approving...", "Vault-ApproveButton": "Approve", - "Vault-DepositING": "Deposit...", + "Vault-ApprovalSuccess": "Approval success", + "Vault-ApprovalError": "Approval error: {{error}}", + "Vault-BifiBuyback": "BIFI Buyback {{amount}}/day", "Vault-DepositButton": "Deposit", "Vault-DepositButtonAll": "Deposit All", - "Vault-ListDeposited": "Deposited", - "Vault-ListAPY": "APY", - "Vault-ListEarned": "Earned", - "Vault-ListPending": "Pending", + "Vault-DepositTokensNote": "You will receive {{mooToken}} token as a receipt for your deposited {{assetToken}} assets. This token is needed to withdraw your {{assetToken}}, do not trade or transfer {{mooToken}} to strangers!", + "Vault-DepositAndWithdrawFee": "Deposit fee: {{depositFee}}, Withdrawal fee: {{withdrawalFee}}", "Vault-Deposited": "Deposited", - "Vault-WithdrawING": "Withdraw...", + "Vault-DepositSuccess": "Deposit success", + "Vault-DepositError": "Deposit error: {{error}}", + "Vault-DepositScenario": "Deposit will result in:", + "Vault-DepositScenarioSwap": "To balance a liquidity pair, swap {{swapIn}} for {{swapOut}} (±{{slippageTolerance}} slippage and deposit fee, if any)", + "Vault-DepositScenarioAddLiquidity": "Add liquidity to receive {{poolToken}}", + "Vault-DepositScenarioDepositToVault": "Deposit received {{poolToken}} into Beefy vault", + "Vault-DepositScenarioReturnDust": "Return unused trace amounts of {{tokenA}} and {{tokenB}} to your wallet", + "Vault-Withdrawing": "Withdrawing...", "Vault-WithdrawButton": "Withdraw", "Vault-WithdrawButtonAll": "Withdraw All", - "Vault-Earned": "Earned", - "Vault-ClaimING": "Claim...", - "Vault-ClaimButton": "Claim", - "Vault-Pending": "Pending", - "Vault-PendingDescription": "Estimated", - "Vault-PendingContent": "Only finalized after Harvesting.", - "Vault-Idle": "Idle", - "Vault-FarmING": "Farm...", - "Vault-FarmButton": "Farm", - "Vault-FarmButtonDescription": "Manually send idle balance in the contract to farm yield.", - "Vault-Yield": "Yield", - "Vault-HarvestING": "Harvest...", + "Vault-WithdrawFeeGlobal": "0.1% withdrawal fee on all vaults (unless exception noted on vault card)", + "Vault-WithdrawSuccess": "Withdrawal success", + "Vault-WithdrawError": "Withdrawal error: {{error}}", + "Vault-WithdrawScenario": "Withdrawal will result in:", + "Vault-WithdrawScenarioRedeem": "Redeem {{mooToken}} token for {{poolToken}}", + "Vault-WithdrawScenarioRemoveLiquidity": "Remove liquidity from {{poolToken}} to receive {{tokenA}} and {{tokenB}}", + "Vault-WithdrawScenarioSwap": "Swap estimated {{swapIn}} for {{swapOut}} (±{{slippageTolerance}} slippage and withdrawal fee, if any)", + "Vault-WithdrawScenarioTotal": "Transfer estimated {{totalOut}} to your wallet", + "Vault-Harvesting": "Harvesting...", "Vault-HarvestButton": "Harvest", - "Vault-HarvestButtonDescription": "Help harvest and get rewarded with 1% of the revenue.", - "Vault-Modal-Title": "New Features of Vault:", - "Vault-Modal-Content": "In order to prevent large investors from diluting other farmers' income by instant injection and withdrawal of large funds, the yield will be released evenly within 24 hours after each deposit, so only after 1 day can all the interest be claimed (by clicking Claim or Withdraw). Note: The countdown will be reset to 24 hours after each deposit.", - "Vault-Modal-Amount": "Your actual yield is ", - "Vault-Modal-Ratio": "Claimable ratio: ", - "Vault-Modal-TIme": "Countdown to full claim: ", - "Vault-Modal-CloseButton": "Close", - "Vault-Modal-ConfirmButton": "Confirm", - "Vault-Main-Title": "Vaults", - "Vault-Second-Title": "Deposit & Earn money", - "Stake-Main-Title": "YFII / Stake", - "Stake-Pools-Learn-More": "https://docs.yfii.finance/#/yield-farming", - "Stake-Second-Title": "APY will be revealed once rewards have begun, or a little bit later", - "Stake-List-Header-Main": "Knowledge base: Everything you need to know about YFII", - "Stake-List-Header-Sub": "Which tokens would you like to stake?", - "Stake-Learn-More": "Learn More", - "Swap-Header": "Zap", - "Swap-Title": "Exchange your assets", - "Swap-Send": "Send", - "Swap-Balance": "Balance", - "Swap-Max": "Max", - "Swap-Receive": "Receive", - "Stake-Pool-Unstake-Hint": "The mortgage will take three days to redeem", - "Stake-Pool-Unstake-Hint-Date":"call date:", - "Stake-Table-Pool":"POOL", - "Stake-Table-Staked":"STAKED", - "Stake-Table-Total":"Total Value Locked", - "Stake-Table-Apy":"APY", - "Stake-Button-Stake":"STAKE", - "Stake-Button-Approval":"Approval", - "Stake-Button-Stake-Tokens":"Stake Tokens", - "Stake-Button-Claim-Rewards":"Claim Rewards", - "Stake-Button-Unstake-Tokens":"Unstake Tokens", - "Stake-Button-Exit":"Exit: Claim and Unstake", - "Stake-Balancer-Your-Balance":"Your Balance", - "Stake-Balancer-Current-Staked":"Current Staked", - "Stake-Balancer-Rewards-Available":"Rewards Available", - "Stake-Balancer-Half-Time":"Half-Time", - "Link": { - "Home": "Home", - "Vault": "Vault", - "Stake": "Stake", - "Contract": "Token Contract", - "Forum": "Forum", - "Stats": "Stats", - "Voting": "Voting", - "Documentation": "Documentation", - "Uniswap": "Uniswap ETH-YFII", - "Audit": "Audit" - }, - "Farm-Main-Title": "Farm", - "Farm-Second-Title": "Hold YFII and Earn MEFI", - "Farm-Stake": "Deposit", - "Farm-Earn": "Earn", - "Farm-Get": "Get", - "Farm-Mining": "Mine", - "Farm-CAN-GET": "To get", - "Farm-Time": "Mining Time", - "Farm-Know": "Click to know", - "Farm-Earned": "Earned", - "Farm-Reward": "Harvest", - "Farm-Hold": "Hold", - "Farm-Pledged": "Staked", - "Farm-Pledge": "Stake", - "Farm-Proof": "Proof", - "Farm-Approval": "Authorize to stake", - "Farm-Exit": "Exit: Claim rewards and unstake", - "Farm-UnApproval": "Unstake", - "Farm-Balance": "Available Balance", - "Farm-All-Stake": "All Stake", - "Farm-Stake-Amount": "Input deposit amount", - "Farm-Dialog-Confirm": "Confirm", - "Farm-Dialog-Cancel": "Cancel", - "Farm-All-UnApproval": "All Unstaked", - "Farm-UnApproval-Amount": "Input unstaked amount", - "Farm-Mining-Over": "Mining Ended", - "Farm-Will-Mining-Over": "Mining available", - "Farm-week": "week", - "Public-Day": " Day ", - "Public-Hour": " Hour ", - "Public-Minute": " Minute ", - "Public-Seconds": " Seconds " -} \ No newline at end of file + "Vault-HarvestConfirm": "Confirm Harvest?", + "Vault-HarvestDescription": "Manual harvesting is NOT NEEDED. All vaults auto compound. This is an advanced feature aimed at experienced users. Are you sure you want to harvest?", + "Vault-HarvestSuccess": "Harvest Success", + "Vault-HarvestError": "Harvest error: {{error}}", + "Vault-LastHarvest": "Last Harvest", + "Vault-MainTitle": "Vaults", + "Vault-SecondTitle": "Deposit & Earn money", + "Vault-DepositsPausedTitle": "Deposits paused", + "Vault-DepositsPausedMsg": "Deposits are paused for this vault.", + "Vault-DepositsRetiredTitle": "RETIRED", + "Vault-DepositsRetiredUpgradeTitle": "RETIRED - We have upgraded this vault please move to the new and improved version", + "Vault-DepositsRetiredRewardsTitle": "RETIRED - Underlying platform stopped rewards.", + "Vault-DepositsRetiredExploitTitle": "RETIRED - Token has been exploited, funds are SAFU in vault.", + "Vault-DepositsRetiredTVLTitle": "RETIRED - TVL is too low.", + "Vault-DepositsRetiredMsg": "Vault retired, please withdraw your funds", + "Vault-LiquidityWarningTitle": "{{name}} overborrowed, please check {{platform}} for when you can withdraw.", + "Vault-LendingWarningTitle": "Uses leverage, please read the docs before depositing.", + "Vault-GeneralWarningTitle": "Please DYOR before depositing.", + "Vault-Staked": "Staked", + "Vault-Description": "Uses: {{vault}}", + "Vault-Network": "Select Network", + "Vault-Experimental": "Experimental", + "Vault-Loading": "Loading Vault...", + "Vault-NotFound": "Vault {{vaultId}} not found", + "Vault-Breakdown-VaultApr": "Vault APR", + "Vault-Breakdown-TradingApr": "Trading APR", + "Vault-Breakdown-BoostApr": "Boost APR", + "Vault-Breakdown-VaultDaily": "Vault Daily", + "Vault-Breakdown-TradingDaily": "Trading Daily", + "Vault-Breakdown-BoostDaily": "Boost Daily", + "Vault-Boosts-Staked-Single": "Staked in {{name}} boost", + "Vault-Boosts-Staked-Count": "Staked in {{count}} boosts", + "Vault-Banner-CakeV2-StakeLabel": "Stake your {{symbol}}", + "Vault-Banner-CakeV2-StakeValue": "New pure {{symbol}} vault", + "Vault-Banner-CakeV2-SaferLabel": "Safer", + "Vault-Banner-CakeV2-SaferValue": "{{count}} middlemen", + "Vault-Banner-CakeV2-SmarterLabel": "Smarter", + "Vault-Banner-CakeV2-SmarterValue": "{{count}}+ annual compounds", + "Vault-Banner-CakeV2-FairerLabel": "Fairer", + "Vault-Banner-CakeV2-FairerValue": "{{percent}}% less fees", + "Vault-Withdrawal-Platform-Notice-Geist": "Please set your gas limit to 9.9M when trying to withdraw. Anything 10M or over will fail.", + "Vaults-Back": "Back to vaults", + "Hide-Zero-Balances": "Hide Zero Balances", + "Hide-Zero-Vault-Balances": "Deposited Vaults", + "Retired-Vaults": "Retired Vaults", + "Filters-Platform": "Platform", + "Filters-Vault-Type": "Vault type", + "Filters-Asset": "Asset", + "Filters-Sort": "Sort by", + "Filters-All": "All", + "Filters-Default": "Default", + "Filters-Reset": "Clear Filters", + "Filters-Type-SingleAssets": "Single Assets", + "Filters-Type-StableLPs": "Stable LPs", + "Filters-Type-Stables": "Stables", + "Confirm": "Confirm", + "Cancel": "Cancel", + "No-Results": "No Results", + "docs": "docs", + "news": "news", + "source": "source", + "gov": "gov", + "vote": "vote", + "stats": "stats", + "app": "app", + "socials": "socials", + "buy": "Buy Crypto", + "insure": "insure", + "products": "products", + "Powered-By": "POWERED BY", + "IFO-Guide": "IFO Guide", + "Available-To-Stake": "Available to Stake", + "Stake": "Stake", + "Available-To-Unstake": "Available to Unstake", + "Unstake": "Unstake", + "Max": "Max", + "Coming-Soon": "Coming Soon", + "Finished": "Finished", + "End": "End", + "Stakes-Meta-Title": "Boosts - {{networkName}}", + "Stake-Meta-Title": "Earn {{earnedToken}} - Boosted by {{boostedBy}} - {{networkName}}", + "Stake-Button-Stake": "Stake", + "Stake-Button-Claim": "Claim", + "Stake-Button-Approval": "Approve", + "Stake-Button-Stake-Tokens": "Stake Tokens", + "Stake-Button-Unstake-Tokens": "Unstake Tokens", + "Stake-Button-Claim-Rewards": "Claim Rewards", + "Stake-Button-Exit": "Claim and Unstake", + "Stake-Balancer-Current-Staked": "Currently Staked", + "Stake-Balancer-Rewards-Available": "Rewards Available", + "Stake-Balancer-Half-Time": "Half-Time", + "Stake-BoostedBy": "Boosted by {{name}}", + "Stake-Button-Back": "Back", + "Stake-Pool-Retired": "The pool has finished, withdraw your funds.", + "Stake-Total-Value-Locked": "Total {{mooToken}} Staked", + "Stake-Your-Pool": "Your Pool", + "Stake-Current-Daily": "Current Daily Rate", + "Add-Liquidity": "Add Liquidity", + "Remove-Liquidity": "Remove Liquidity", + "Buy-Token": "Buy Token", + "Mint-Token": "Mint Token", + "Wrap-BNB": "Wrap BNB", + "Boost": "Boost", + "Experimental": "Experimental", + "Select-Network": "Select Network", + "InsurAce-Title": "InsurAce Vault Insurance", + "InsurAce-Sections": [ + { + "title": "What is InsurAce?", + "content": [ + "InsurAce.io is a decentralized insurance protocol operating across multiple blockchains. It provides insurance services to DeFi users to protect their investments against smart contract risks." + ] + }, + { + "title": "How it works", + "content": [ + "Beefy contracts deposit tokens on your behalf, to underlying platforms, for example Pancakeswap, TraderJoe, or Spookyswap. If one of Beefy’s smart contracts fails (for example our vault contract, or the strategy contract) and you were paying for coverage, InsurAce will cover your loss.", + "Contrarily if the smart contract that fails belongs to the underlying platform (Pancakeswap, Traderjoe, Spookyswap) your deposits won’t be covered." + ] + }, + { + "title": "What is the premium?", + "content": [ + "2.9% annually. Use our custom Beefy link to enjoy a 10% discount (paid in Insur Token)." + ] + } + ], + "InsurAce-Button": "Insure Vaults", + "V2Banner-Title": "This app will soon be replaced with Beefy’s updated v2 interface.", + "V2Banner-Text": "No user actions are required. You can try the new version now.", + "V2Banner-Button": "Try the Beta" +} diff --git a/src/locales/es/translation.json b/src/locales/es/translation.json new file mode 100644 index 000000000..4b2af9a42 --- /dev/null +++ b/src/locales/es/translation.json @@ -0,0 +1,113 @@ +{ + "Disclaimer": "Usar Smart Contracts, Tokens y Crypto es siempre un riesgo. Haz tu propia investigación antes de invertir.", + "Network-ConnectWallet": "Conectar Billetera", + "Vault-Wallet": "Billetera", + "Vault-Balance": "Balance", + "Vault-APY": "APY", + "Vault-APYDaily": "Diario", + "Vault-TVL": "TVL", + "Vault-AutocompoundingNote": "Todas las bóvedas se reinvierten en el momento óptimo", + "Vault-Approving": "Aprobando...", + "Vault-ApproveButton": "Aprobar", + "Vault-ApprovalSuccess": "Aprobación exitosa", + "Vault-ApprovalError": "Error de aprobación: {{error}}", + "Vault-DepositButton": "Depositar", + "Vault-DepositButtonAll": "Depositar Todo", + "Vault-DepositTokensNote": "Tu recibirás {{mooToken}} a modo de recibo por tu deposito de {{assetToken}}. El recibo es necesario para retirar tus {{assetToken}}, no comercies o transfieras el {{mooToken}} a extraños!", + "Vault-DepositFee": "Hay una tarifa de deposito {{depositFee}}, no hay tarifa de retiro", + "Vault-Deposited": "Depositado", + "Vault-DepositSuccess": "Deposito exitoso", + "Vault-DepositError": "Error de depósito: {{error}}", + "Vault-DepositScenario": "El depósito resultará en:", + "Vault-DepositScenarioSwap": "Para balancear un par de liquidez, swapea {{swapIn}} por {{swapOut}} (±{{slippageTolerance}} slippage y comisión de depósito, si hubiera)", + "Vault-DepositScenarioAddLiquidity": "Agrega liquidez para recibir {{poolToken}}", + "Vault-DepositScenarioDepositToVault": "Depósito de {{poolToken}} recibido en la bóveda de Beefy", + "Vault-DepositScenarioReturnDust": "Devolver las cantidades no usadas de {{tokenA}} y {{tokenB}} a tu billetera", + "Vault-Withdrawing": "Retirando...", + "Vault-WithdrawButton": "Retirar", + "Vault-WithdrawButtonAll": "Retirar Todo", + "Vault-WithdrawFeeGlobal": "Hay una tarifa de retiro o depósito de 0.05%-0.1% en todas las bóvedas.", + "Vault-WithdrawSuccess": "Retiro exitoso", + "Vault-WithdrawError": "Error de retiro: {{error}", + "Vault-WithdrawScenario": "El retiro resultará en:", + "Vault-WithdrawScenarioRedeem": "Reclama {{mooToken}} token por {{poolToken}}", + "Vault-WithdrawScenarioRemoveLiquidity": "Remueve liquidez de {{poolToken}} para recibir {{tokenA}} y {{tokenB}}", + "Vault-WithdrawScenarioSwap": "Swap estimado {{swapIn}} por {{swapOut}} (±{{slippageTolerance}} slippage y comisión de retiro, si hubiera)", + "Vault-WithdrawScenarioTotal": "Transferencia estimada de {{totalOut}} a tu billetera", + "Vault-Harvesting": "Cosechando...", + "Vault-HarvestButton": "Cosechar", + "Vault-HarvestConfirm": "Confirmar Cosecha?", + "Vault-HarvestDescription": "Cosechar manualmente NO ES NECESARIO. Todos las bóvedas se auto cosechan. Esta es una avanzada característica apuntada a usuarios experimentados. Estás seguro que deseas cosechar?", + "Vault-HarvestSuccess": "Cosecha exitosa", + "Vault-HarvestError": "Error de cosecha: {{error}}", + "Vault-LastHarvest": "Última Cosecha", + "Vault-MainTitle": "Bóvedas", + "Vault-SecondTitle": "Deposita y Gana dinero", + "Vault-DepositsPausedTitle": "Depositos pausados", + "Vault-DepositsPausedMsg": "Los depositos están detenidos para esta bóveda", + "Vault-DepositsRetiredTitle": "RETIRADO", + "Vault-DepositsRetiredMsg": "Bóveda retirada, por favor retire sus fondos", + "Vault-Staked": "Staked", + "Vault-Description": "Utiliza: {{vault}}", + "Vault-Network": "Seleccionar red", + "Vault-Experimental": "Experimental", + "Vault-Loading": "Cargando bóveda", + "Vault-NotFound": "Bóveda {{vaultId}} no encontrada", + "Vaults-Back": "Volver a bóvedas", + "Hide-Zero-Balances": "Ocultar saldos en cero", + "Hide-Zero-Vault-Balances": "Bóvedas Depositadas", + "Retired-Vaults": "Bóvedas Retiradas", + "Filters-Platform": "Plataforma", + "Filters-Vault-Type": "Tipo de bóveda", + "Filters-Asset": "Activo", + "Filters-Sort": "Ordenar por", + "Filters-All": "Todo", + "Filters-Default": "Por defecto", + "Filters-Reset": "Limpiar Filtros", + "Confirm": "Confirmar", + "Cancel": "Cancelar", + "No-Results": "Sin Resultados", + "docs": "docs", + "news": "noticias", + "source": "fuente", + "gov": "gov", + "vote": "votar", + "stats": "estadísticas", + "app": "app", + "socials": "redes sociales", + "buy": "comprar", + "products": "productos", + "Powered-By": "POTENCIADO POR", + "IFO-Guide": "Guia de IFO", + "Available-To-Stake": "Disponible para Stake", + "Stake": "Stake", + "Available-To-Unstake": "Disponible para Unstake", + "Unstake": "Unstake", + "Max": "Máximo", + "Coming-Soon": "Próximamente", + "Finished": "Terminado", + "End": "Terminar", + "Stake-Button-Stake": "Stake", + "Stake-Button-Claim": "Reclamar", + "Stake-Button-Approval": "Aprobar", + "Stake-Button-Stake-Tokens": "Stake Tokens", + "Stake-Button-Unstake-Tokens": "Unstake Tokens", + "Stake-Button-Claim-Rewards": "Reclamar Recompensas", + "Stake-Button-Exit": "Reclamar y Unstake", + "Stake-Balancer-Current-Staked": "Actualmente en Stake", + "Stake-Balancer-Rewards-Available": "Recompensas Disponibles", + "Stake-Balancer-Half-Time": "Medio-Tiempo", + "Stake-BoostedBy": "Boosteado por {{name}}", + "Stake-Button-Back": "Atrás", + "Stake-Pool-Retired": "El pool ha terminado, retira tus fondos.", + "Stake-Total-Value-Locked": "Valor Total Almacenado", + "Stake-Your-Pool": "Tu pool", + "Stake-Current-Daily": "Tarifa Diaria Actual", + "Add-Liquidity": "Agregar Liquidez", + "Remove-Liquidity": "Remover Liquidez", + "Buy-Token": "Comprar Token", + "Wrap-BNB": "Envolver BNB", + "Boost": "Boost", + "Experimental": "Experimental", + "Select-Network": "Seleccionar red" +} diff --git a/src/locales/fil/translation.json b/src/locales/fil/translation.json new file mode 100644 index 000000000..cf900cb20 --- /dev/null +++ b/src/locales/fil/translation.json @@ -0,0 +1,131 @@ +{ + "App-Meta-Description": "Ang Multichain Yield Optimizer", + "Disclaimer": "Alalahaning magingat sa pagamit ng Smart Contracts, Tokens and Crypto. DYOR bago maginvest.", + "Network-ConnectWallet": "Connect Wallet", + "Vault-Wallet": "Wallet", + "Vault-Balance": "Balanse", + "Vault-APR": "APR", + "Vault-APY": "APY", + "Vault-APYDaily": "Daily", + "Vault-TVL": "TVL", + "Vault-AutocompoundingNote": "All vaults autocompound at an optimal rate", + "Vault-Approving": "Approving...", + "Vault-ApproveButton": "Approve", + "Vault-ApprovalSuccess": "Approval success", + "Vault-ApprovalError": "Approval error: {{error}}", + "Vault-DepositButton": "I-Deposit", + "Vault-DepositButtonAll": "Kabuuang Hulog", + "Vault-DepositTokensNote": "Ikaw ay makakatanggap ng {{mooToken}} bilang resibo sa iyong hinulog na {{assetToken}} assets. Kailangan mo ito upang mai-withdraw ang {{assetToken}}, huwag itrade o transfer ang {{mooToken}} sa di kakilala!", + "Vault-DepositAndWithdrawFee": "Deposit Fee: {{depositFee}}, Withdrawal fee: {{withdrawalFee}}", + "Vault-Deposited": "Dineposito", + "Vault-DepositSuccess": "Deposit success", + "Vault-DepositError": "Deposit error: {{error}}", + "Vault-DepositScenario": "Ang magiging resulta ng dineposito:", + "Vault-DepositScenarioSwap": "Para sa maibalanse ang liquidity pair, pagpalitin ang {{swapIn}} sa {{swapOut}} (±{{slippageTolerance}} slippage at deposit fee, kung meron)", + "Vault-DepositScenarioAddLiquidity": "Magdagdag ng liquidity para makakuha ng {{poolToken}}", + "Vault-DepositScenarioDepositToVault": "Naideposito na ang {{poolToken}} sa Beefy vault", + "Vault-DepositScenarioReturnDust": "Ibalik ang hindi nagamit na trace amount ng {{tokenA}} at {{tokenB}} sa iyong wallet", + "Vault-Withdrawing": "Withdrawing...", + "Vault-WithdrawButton": "Withdraw", + "Vault-WithdrawButtonAll": "Withdraw lahat", + "Vault-WithdrawFeeGlobal": "May charge na 0.01% withdrawal fee sa lahat ng vaults (unless may exception na nakasulat sa vault card)", + "Vault-WithdrawSuccess": "Withdrawal success", + "Vault-WithdrawError": "Withdrawal error: {{error}}", + "Vault-WithdrawScenario": "Ang magiging resulta ng nai-withdraw:", + "Vault-WithdrawScenarioRedeem": "Makakuha ka ng {{mooToken}} token para sa {{poolToken}}", + "Vault-WithdrawScenarioRemoveLiquidity": "Tanggalin ang liquidity sa {{poolToken}} para makuha ang {{tokenA}} at {{tokenB}}", + "Vault-WithdrawScenarioSwap": "Pagpalitin ang estimated {{swapIn}} sa {{swapOut}} (±{{slippageTolerance}} slippage at withdrawal fee, kung meron man)", + "Vault-WithdrawScenarioTotal": "Ilipat ang estimated na total {{totalOut}} sa iyong wallet", + "Vault-Harvesting": "Harvest...", + "Vault-HarvestButton": "Harvest", + "Vault-HarvestConfirm": "Kumpirmahin ang harvest?", + "Vault-HarvestDescription": "Ang pag harvest ng manual ay di kailangan. Lahat ng vaults ay nagauauto compound. Eto ay isang advanced feature para sa mga experienced users. Sigurado ka na bang mag harvest?", + "Vault-HarvestSuccess": "Harvest Success", + "Vault-HarvestError": "Harvest error: {{error}}", + "Vault-LastHarvest": "Last Harvest", + "Vault-MainTitle": "Vaults", + "Vault-SecondTitle": "Mag deposito at kumita", + "Vault-DepositsPausedTitle": "Nakatigil panamantala ang deposito", + "Vault-DepositsPausedMsg": "Nakatigil panamantala ang deposito sa vault na ito.", + "Vault-DepositsRetiredTitle": "RETIRED", + "Vault-DepositsRetiredMsg": "Vault retired, i-withdraw ang funds ASAP", + "Vault-Staked": "Staked", + "Vault-Description": "Gamit: {{vault}}", + "Vault-Network": "Pumili ng Network", + "Vault-Experimental": "Experimental", + "Vault-Loading": "Loading Vault", + "Vault-NotFound": "Vault {{vaultId}} ay hindi mahanap", + "Vault-Breakdown-VaultApr": "Vault APR", + "Vault-Breakdown-TradingApr": "Trading APR", + "Vault-Breakdown-BoostApr": "Boost APR", + "Vault-Breakdown-VaultDaily": "Vault Daily", + "Vault-Breakdown-TradingDaily": "Trading Daily", + "Vault-Breakdown-BoostDaily": "Boost Daily", + "Vault-Banner-CakeV2-StakeLabel": "Stake ang iyong {{symbol}}", + "Vault-Banner-CakeV2-StakeValue": "New pure {{symbol}} vault", + "Vault-Banner-CakeV2-SaferLabel": "Mas ligtas", + "Vault-Banner-CakeV2-SaferValue": "{{count}} middlemen", + "Vault-Banner-CakeV2-SmarterLabel": "Mas matalino", + "Vault-Banner-CakeV2-SmarterValue": "{{count}}+ annual compounds", + "Vault-Banner-CakeV2-FairerLabel": "Mas patas", + "Vault-Banner-CakeV2-FairerValue": "{{percent}}% less fees", + "Vaults-Back": "Back to vaults", + "Hide-Zero-Balances": "Hide Zero Balances", + "Hide-Zero-Vault-Balances": "Dinepositong Vaults", + "Retired-Vaults": "Retired Vaults", + "Filters-Platform": "Mga Platforms", + "Filters-Vault-Type": "Uri ng Vault", + "Filters-Asset": "Asset", + "Filters-Sort": "Isa-ayos ukol sa", + "Filters-All": "Lahat", + "Filters-Default": "Default", + "Filters-Reset": "Clear Filters", + "Confirm": "Kumpirmahin", + "Cancel": "Ikansel", + "No-Results": "Walang resulta", + "docs": "docs", + "news": "balita", + "source": "pinangalingan", + "gov": "gov", + "vote": "boto", + "stats": "stats", + "app": "app", + "socials": "socials", + "buy": "bili", + "products": "produkto", + "Powered-By": "POWERED BY", + "IFO-Guide": "IFO Guide", + "Available-To-Stake": "Pwedeng i-Stake", + "Stake": "Stake", + "Available-To-Unstake": "Pwedeng ma un-stake", + "Unstake": "I-unstake", + "Max": "Max", + "Coming-Soon": "Darating na", + "Finished": "Tapos na", + "End": "Ang tapos", + "Stakes-Meta-Title": "Boosts - {{networkName}}", + "Stake-Meta-Title": "Kumita ng {{earnedToken}} - Boosted by {{boostedBy}} - {{networkName}}", + "Stake-Button-Stake": "Stake", + "Stake-Button-Claim": "Kunin", + "Stake-Button-Approval": "Approve", + "Stake-Button-Stake-Tokens": "I-stake ang Tokens", + "Stake-Button-Unstake-Tokens": "I-unstake ang Tokens", + "Stake-Button-Claim-Rewards": "Kunin and Rewards", + "Stake-Button-Exit": "Claim and Unstake", + "Stake-Balancer-Current-Staked": "Kasalukuyang naka-stake", + "Stake-Balancer-Rewards-Available": "Available rewards", + "Stake-Balancer-Half-Time": "Half-Time", + "Stake-BoostedBy": "Boosted by {{name}}", + "Stake-Button-Back": "Bumalik", + "Stake-Pool-Retired": "I-withdraw ang funds, tapos na ang pool.", + "Stake-Total-Value-Locked": "Kabuuang {{mooToken}} Staked", + "Stake-Your-Pool": "Iyong Pool", + "Stake-Current-Daily": "Current Daily Rate", + "Add-Liquidity": "Magdagdag ng Liquidity", + "Remove-Liquidity": "Magtanggal ng Liquidity", + "Buy-Token": "Bumili ng Token", + "Wrap-BNB": "Wrap BNB", + "Boost": "Boost", + "Experimental": "Experimental", + "Select-Network": "Pumili ng network" +} diff --git a/src/locales/fr/translation.json b/src/locales/fr/translation.json new file mode 100644 index 000000000..7a78173f0 --- /dev/null +++ b/src/locales/fr/translation.json @@ -0,0 +1,113 @@ +{ + "Disclaimer": "L'utilisation de Contrats Intelligents, de Jetons et de Crypto est toujours un risque. Faites vos propres recherches avant d'investir.", + "Network-ConnectWallet": "Connection Portefeuille", + "Vault-Wallet": "Portefeuille", + "Vault-Balance": "Solde", + "Vault-APY": "RAC (Rendement Annuel Composé)", + "Vault-APYDaily": "Journalier", + "Vault-TVL": "VTV (Valeur Totale Vérrouillée)", + "Vault-AutocompoundingNote": "Tous les coffres réinvestissent automatiquement à frequence optimale", + "Vault-Approving": "Approbation en cours...", + "Vault-ApproveButton": "Approuver", + "Vault-ApprovalSuccess": "Approuvé", + "Vault-ApprovalError": "Erreur approbation: {{error}}", + "Vault-DepositButton": "Déposer", + "Vault-DepositButtonAll": "Tout déposer", + "Vault-DepositTokensNote": "Vous recevrez des {{mooToken}} comme preuve de dépots pour vos {{assetToken}}. Ce jeton est nécessaire pour retirer vos {{assetToken}} du coffre, vos {{mooToken}} ne doivent EN AUCUN CAS être vendu ou transferés vers un portefeuille que vous ne controlez pas!", + "Vault-DepositFee": "Frais de dépot {{depositFee}}, pas de frais de retrait", + "Vault-Deposited": "Déposé", + "Vault-DepositSuccess": "Dépot réussi", + "Vault-DepositError": "Erreur lors du dépot: {{error}}", + "Vault-DepositScenario": "Processus de dépot:", + "Vault-DepositScenarioSwap": "Pour équilibrer la paire, échange {{swapIn}} pour {{swapOut}} (±{{slippageTolerance}} slippage et frais de dépot, si applicable", + "Vault-DepositScenarioAddLiquidity": "Achat de {{poolToken}}", + "Vault-DepositScenarioDepositToVault": "Dépot de {{poolToken}} dans le coffre Beefy", + "Vault-DepositScenarioReturnDust": "Retour des poussières de {{tokenA}} et {{tokenB}} dans votre portefeuille", + "Vault-Withdrawing": "Retrait en cours...", + "Vault-WithdrawButton": "Retrait", + "Vault-WithdrawButtonAll": "Tout retirer", + "Vault-WithdrawFeeGlobal": "Il y a des frais (de retrait OU de dépot) de 0,05% à 0,1% sur tous les coffres", + "Vault-WithdrawSuccess": "Retrait réussi", + "Vault-WithdrawError": "Erreur lors du retrait: {{error}}", + "Vault-WithdrawScenario": "Processus de retrait:", + "Vault-WithdrawScenarioRedeem": "Retirer vos {{mooToken}} en {{poolToken}}", + "Vault-WithdrawScenarioRemoveLiquidity": "Séparation de la liquidité de {{poolToken}} en {{tokenA}} et {{tokenB}}", + "Vault-WithdrawScenarioSwap": "Estimation de l'échange {{swapIn}} pour {{swapOut}} (±{{slippageTolerance}} slippage et frais de retrait, si applicable)", + "Vault-WithdrawScenarioTotal": "Vous recevrez environ {{totalOut}} dans votre portefeuille", + "Vault-Harvesting": "Récolte en cours...", + "Vault-HarvestButton": "Récolter", + "Vault-HarvestConfirm": "Confirmer le Récolte?", + "Vault-HarvestDescription": "La recolte manuelle n'est PAS NECESSAIRE. Tous les coffres sont automatiques. Ceci est une fonction avancée pour les utilisateurs expérimentés. Etes-vous sûr de vouloir récolter?", + "Vault-HarvestSuccess": "Récolte réussi", + "Vault-HarvestError": "Erreur lors de la récolte: {{error}}", + "Vault-LastHarvest": "Dernière Récolte", + "Vault-MainTitle": "Coffres", + "Vault-SecondTitle": "Déposer & Générer des intêrets", + "Vault-DepositsPausedTitle": "Dépots suspendus", + "Vault-DepositsPausedMsg": "Les dépots sont suspendus pour ce coffre.", + "Vault-DepositsRetiredTitle": "Coffre désuet", + "Vault-DepositsRetiredMsg": "Coffre désuet, retirez vos fonds dès que possible", + "Vault-Staked": "Staked", + "Vault-Description": "Uses: {{vault}}", + "Vault-Network": "Sélecteur de Réseaux", + "Vault-Experimental": "Expérimental", + "Vault-Loading": "Chargement du coffre", + "Vault-NotFound": "Coffre {{vaultId}} introuvable", + "Vaults-Back": "Retour aux coffres", + "Hide-Zero-Balances": "Cacher les petits soldes", + "Hide-Zero-Vault-Balances": "Coffres déposés", + "Retired-Vaults": "Coffres désuets", + "Filters-Platform": "Par Plateforme", + "Filters-Vault-Type": "Par types de coffre", + "Filters-Asset": "Par Devise", + "Filters-Sort": "Ordonner par", + "Filters-All": "Tous", + "Filters-Default": "Défaut", + "Filters-Reset": "Clear Filters", + "Confirm": "Confirmer", + "Cancel": "Annuler", + "No-Results": "Aucun résultat", + "docs": "docs", + "news": "news", + "source": "source", + "gov": "gov", + "vote": "vote", + "stats": "stats", + "app": "app", + "socials": "socials", + "buy": "buy", + "products": "products", + "Powered-By": "POWERED BY", + "IFO-Guide": "IFO Guide", + "Available-To-Stake": "Disponible pour Stake", + "Stake": "Stake", + "Available-To-Unstake": "Disponible pour Unstake", + "Unstake": "Unstake", + "Max": "Max", + "Coming-Soon": "Bientôt disponible", + "Finished": "Terminé", + "End": "End", + "Stake-Button-Stake": "Stake", + "Stake-Button-Claim": "Claim", + "Stake-Button-Approval": "Approuver", + "Stake-Button-Stake-Tokens": "Stake Tokens", + "Stake-Button-Unstake-Tokens": "Unstake Tokens", + "Stake-Button-Claim-Rewards": "Claim Rewards", + "Stake-Button-Exit": "Claim and Unstake", + "Stake-Balancer-Current-Staked": "Montant déposé", + "Stake-Balancer-Rewards-Available": "Récompenses disponible", + "Stake-Balancer-Half-Time": "Half-Time", + "Stake-BoostedBy": "Boosted par {{name}}", + "Stake-Button-Back": "Retour", + "Stake-Pool-Retired": "Staking terminé, retirez vos fonds.", + "Stake-Total-Value-Locked": "Valeur Totale Vérrouillée", + "Stake-Your-Pool": "Votre part", + "Stake-Current-Daily": "Taux journalier actuel", + "Add-Liquidity": "Ajouter de la liquidité", + "Remove-Liquidity": "Supprimer de la liquidité", + "Buy-Token": "Achat de la devise", + "Wrap-BNB": "Wrap BNB", + "Boost": "Boost", + "Experimental": "Expérimental", + "Select-Network": "Sélecteur de Réseaux" +} diff --git a/src/locales/hi/translation.json b/src/locales/hi/translation.json new file mode 100644 index 000000000..b565a224d --- /dev/null +++ b/src/locales/hi/translation.json @@ -0,0 +1,26 @@ +{ + "Disclaimer": "स्मार्ट कॉन्ट्रैक्ट, टोकन और क्रिप्टो का उपयोग करना हमेशा एक जोखिम होता है। अपने स्वयं के अनुसंधान के बाद निवेश करें।", + "Vault-Wallet": "वॉलेट", + "Vault-Balance": "बैलेंस", + "Vault-APY": "सालाना प्रतिशत आय", + "Vault-APYDaily": "दैनिक दर", + "Vault-TVL": "कुल मूल्य लॉक", + "Vault-Approving": "प्रगति मे है. . .", + "Vault-ApproveButton": "मंजूर", + "Vault-DepositButton": "जमा करें", + "Vault-DepositButtonAll": "कुल जमा करें", + "Vault-Deposited": "जमा किया", + "Vault-Withdrawing": "विदड्रॉ...", + "Vault-WithdrawButton": "विदड्रॉ", + "Vault-WithdrawButtonAll": "सब वपिस निकलो", + "Vault-WithdrawFeeGlobal": "सभी वाल्टों पर 0.05%-0.1% निकासी शुल्क है", + "Vault-MainTitle": "तिजोरी", + "Vault-SecondTitle": "जमा करें और पैसे कमाएँ", + "Hide-Zero-Balances": "शून्य बैलेंस छिपाएं", + "Retired-Vaults": "सेवानिवृत्त वाल्ट्स", + "Filters-Platform": "प्लेटफार्म", + "Filters-Asset": "संपत्ति", + "Filters-Sort": "छंटाई", + "Filters-All": "सभी", + "Filters-Default": "डिफ़ॉल्ट" +} diff --git a/src/locales/id/translation.json b/src/locales/id/translation.json new file mode 100644 index 000000000..e3e886329 --- /dev/null +++ b/src/locales/id/translation.json @@ -0,0 +1,26 @@ +{ + "Disclaimer": "Proyek ini adalah dalam Beta. Gunakan dengan hati-hati dan lakukan penelitian anda sendiri.", + "Vault-Wallet": "Dompet", + "Vault-Balance": "Saldo", + "Vault-APY": "Persentase hasil tahunan", + "Vault-APYDaily": "Daily", + "Vault-TVL": "Nilai total terkunci", + "Vault-Approving": "Menyetujui...", + "Vault-ApproveButton": "Disetujui", + "Vault-DepositButton": "Menyetor", + "Vault-DepositButtonAll": "Setor Semua", + "Vault-Deposited": "Disetor", + "Vault-Withdrawing": "Penarikan...", + "Vault-WithdrawButton": "Tarik", + "Vault-WithdrawButtonAll": "Tarik Semua", + "Vault-WithdrawFeeGlobal": "Ada biaya penarikan 0,1% di semua vault", + "Vault-MainTitle": "Kubah", + "Vault-SecondTitle": "Setor & Dapatkan uang", + "Hide-Zero-Balances": "Hide Zero Balances", + "Retired-Vaults": "Retired Vaults", + "Filters-Platform": "Platform", + "Filters-Asset": "Asset", + "Filters-Sort": "Sort by", + "Filters-All": "All", + "Filters-Default": "Default" +} diff --git a/src/locales/it/translation.json b/src/locales/it/translation.json new file mode 100644 index 000000000..f18b3d37e --- /dev/null +++ b/src/locales/it/translation.json @@ -0,0 +1,145 @@ +{ + "App-Meta-Description": "The Multichain Yield Optimizer", + "Disclaimer": "Interagire con smart contract, token e crypto comporta sempre dei rischi. Documentati personalmente prima di investire.", + "Network-UnknownError": "Si è verificato un errore sconosciuto.", + "Network-ConnectionRequired": "È necessario collegare il portafoglio a {{network}}.", + "Network-Supports": "Questo applicativo supporta {{network}}.", + "Network-ConnectedTo": "Sei attualmente collegato a {{network}}.", + "Network-ConnectedUnsupported": "Sei attualmente collegato a una rete non supportata.", + "Network-ConnectWallet": "Collega il portafoglio", + "Network-DisconnectWallet": "Scollega portafoglio", + "Network-SwitchToNetwork": "Passa alla rete {{network}}", + "Network-GoToApp": "Vai all'applicativo su {{network}}", + "Network-SwitchNote": "Potresti dover modificare la rete manualmente tramite il tuo portafoglio.", + "Network-NoWalletAddress": "Consenti l'accesso a un account nel tuo portafoglio.", + "Vault-Wallet": "Portafoglio", + "Vault-Balance": "Saldo", + "Vault-APR": "APR", + "Vault-APY": "APY", + "Vault-APYDaily": "Giornaliero", + "Vault-TVL": "TVL", + "Vault-AutocompoundingNote": "Capitalizzazione automatica e ottimizzata degli interessi", + "Vault-Approving": "Approvazione in corso...", + "Vault-ApproveButton": "Approva", + "Vault-ApprovalSuccess": "Approvazione riuscita", + "Vault-ApprovalError": "Errore durante l'approvazione: {{error}}", + "Vault-BifiBuyback": "Riacquistati {{amount}} BIFI/giorno", + "Vault-DepositButton": "Deposita", + "Vault-DepositButtonAll": "Deposita tutto", + "Vault-DepositTokensNote": "Riceverai dei token {{mooToken}} come ricevuta dei tuoi token {{assetToken}} depositati. La ricevuta è necessaria per prelevare i tuoi token {{assetToken}}, non scambiare o trasferire i tuoi {{mooToken}} a sconosciuti!", + "Vault-DepositAndWithdrawFee": "Commissione deposito: {{depositFee}}, Commissione prelievo: {{withdrawalFee}}", + "Vault-Deposited": "Depositato", + "Vault-DepositSuccess": "Deposito riuscito", + "Vault-DepositError": "Errore durante il deposito: {{error}}", + "Vault-DepositScenario": "Il deposito prevede che:", + "Vault-DepositScenarioSwap": "Per bilanciare la liquidità della coppia, verranno scambiati {{swapIn}} per {{swapOut}} (±{{slippageTolerance}} di slippage e di commissione di deposito, se presenti)", + "Vault-DepositScenarioAddLiquidity": "La liquidità sarà utilizzata per ricevere {{poolToken}}", + "Vault-DepositScenarioDepositToVault": "I {{poolToken}} ricevuti saranno depositati nella cassaforte di Beefy", + "Vault-DepositScenarioReturnDust": "I token non utilizzati torneranno nel tuo portafoglio.", + "Vault-Withdrawing": "Prelievo in corso...", + "Vault-WithdrawButton": "Preleva", + "Vault-WithdrawButtonAll": "Preleva tutto", + "Vault-WithdrawFeeGlobal": "Ogni cassaforte ha commissione di prelievo o deposito di 0.05%-0.01%", + "Vault-WithdrawSuccess": "Prelievo riuscito", + "Vault-WithdrawError": "Errore durante il prelievo: {{error}}", + "Vault-WithdrawScenario": "Il prelievo prevede che:", + "Vault-WithdrawScenarioRedeem": "Le tue ricevute {{mooToken}} saranno scambiate per {{poolToken}}", + "Vault-WithdrawScenarioRemoveLiquidity": "Sarà rimossa la liquidità da {{poolToken}} per ottenere {{tokenA}} e {{tokenB}}", + "Vault-WithdrawScenarioSwap": "Verranno ricevuti circa {{swapIn}} che saranno scambiati per {{swapOut}} (±{{slippageTolerance}} di slippage e di commissione di prelievo, se presenti)", + "Vault-WithdrawScenarioTotal": "Circa {{totalOut}} saranno trasferiti al tuo portafoglio", + "Vault-Harvesting": "Raccolta dei guadagni in corso...", + "Vault-HarvestButton": "Raccogli i guadagni", + "Vault-HarvestConfirm": "Confermi di raccogliere i guadagni?", + "Vault-HarvestDescription": "Raccogliere i guadagni manualmente NON È NECESSARIO. Tutte le casseforti reinvestono automaticamente i guadagni. Questa è una funzionalità avanzata, pensata per utenti esperti. Sei sicuro di voler raccogliere i guadagni?", + "Vault-HarvestSuccess": "Raccolta dei guadagni riuscita", + "Vault-HarvestError": "Errore durante la raccolta dei guadagni: {{error}}", + "Vault-LastHarvest": "Ultimo raccolto", + "Vault-MainTitle": "Casseforti", + "Vault-SecondTitle": "Deposita e guadagna", + "Vault-DepositsPausedTitle": "Depositi interrotti", + "Vault-DepositsPausedMsg": "I depositi sono interrotti per questa cassaforte.", + "Vault-DepositsRetiredTitle": "RITIRATA", + "Vault-DepositsRetiredMsg": "Cassaforte ritirata, preleva i tuoi fondi appena possibile", + "Vault-Staked": "In staking", + "Vault-Description": "Utilizza: {{vault}}", + "Vault-Network": "Rete selezionata", + "Vault-Experimental": "Sperimentale", + "Vault-Loading": "Caricamento cassaforte...", + "Vault-NotFound": "Cassaforte {{vaultId}} non trovata", + "Vault-Breakdown-VaultApr": "APR della Cassaforte", + "Vault-Breakdown-TradingApr": "APR da Trading", + "Vault-Breakdown-BoostApr": "APR da Boost", + "Vault-Breakdown-VaultDaily": "Giornaliero per la Cassaforte", + "Vault-Breakdown-TradingDaily": "Giornaliero da Trading", + "Vault-Breakdown-BoostDaily": "Giornaliero da Boost", + "Vault-Banner-CakeV2-StakeLabel": "Metti in staking i tuoi {{symbol}}", + "Vault-Banner-CakeV2-StakeValue": "Nuova cassaforte per i tuoi {{symbol}}", + "Vault-Banner-CakeV2-SaferLabel": "Più sicuro", + "Vault-Banner-CakeV2-SaferValue": "{{count}} intermediari", + "Vault-Banner-CakeV2-SmarterLabel": "Più smart", + "Vault-Banner-CakeV2-SmarterValue": "{{count}}+ reinvestimenti degli interessi", + "Vault-Banner-CakeV2-FairerLabel": "Più equo", + "Vault-Banner-CakeV2-FairerValue": "{{percent}}% meno commissioni", + "Vaults-Back": "Torna alle casseforti", + "Hide-Zero-Balances": "Nascondi saldi nulli", + "Hide-Zero-Vault-Balances": "Casseforti con deposito", + "Retired-Vaults": "Casseforti ritirate", + "Filters-Platform": "Piattaforma", + "Filters-Vault-Type": "Tipo cassaforte", + "Filters-Asset": "Token", + "Filters-Sort": "Ordina per", + "Filters-All": "Tutti", + "Filters-Default": "Predefinito", + "Filters-Reset": "Azzera filtri", + "Filters-Type-SingleAssets": "Asset singoli", + "Filters-Type-StableLPs": "Stablecoin LP", + "Filters-Type-Stables": "Stablecoin", + "Confirm": "Conferma", + "Cancel": "Annulla", + "No-Results": "Nessun risultato", + "docs": "documenti", + "news": "notizie", + "source": "codice sorgente", + "gov": "gov", + "vote": "vota", + "stats": "statistiche", + "app": "app", + "socials": "social", + "buy": "compra", + "products": "prodotti", + "Powered-By": "SUPPORTATO DA", + "IFO-Guide": "Guida alla IFO", + "Available-To-Stake": "Disponibili per staking", + "Stake": "Metti in staking", + "Available-To-Unstake": "Disponibili per rimuovere dallo staking", + "Unstake": "Rimuovi dallo staking", + "Max": "Massimo", + "Coming-Soon": "Prossimamente", + "Finished": "Terminato", + "End": "Fine", + "Stakes-Meta-Title": "Boost - {{networkName}}", + "Stake-Meta-Title": "Guadagna {{earnedToken}} - Promosso da {{boostedBy}} - {{networkName}}", + "Stake-Button-Stake": "Metti in staking", + "Stake-Button-Claim": "Riscuoti", + "Stake-Button-Approval": "Approva", + "Stake-Button-Stake-Tokens": "Metti in staking i token", + "Stake-Button-Unstake-Tokens": "Rimuovi dallo staking", + "Stake-Button-Claim-Rewards": "Riscuoti i guadagni", + "Stake-Button-Exit": "Riscuoti e rimuovi", + "Stake-Balancer-Current-Staked": "Attualmente in staking", + "Stake-Balancer-Rewards-Available": "Guadagni disponibili", + "Stake-Balancer-Half-Time": "Metà tempo", + "Stake-BoostedBy": "Promossa da {{name}}", + "Stake-Button-Back": "Indietro", + "Stake-Pool-Retired": "La pool è terminata, preleva i tuoi fondi.", + "Stake-Total-Value-Locked": "Valore Totale Bloccato (TVL)", + "Stake-Your-Pool": "La tua quota ", + "Stake-Current-Daily": "Tasso Giornaliero Attuale", + "Add-Liquidity": "Aggiungi Liquidità", + "Remove-Liquidity": "Rimuovere Liquidità", + "Buy-Token": "Compra Token", + "Wrap-BNB": "Wrap BNB", + "Boost": "Boost", + "Experimental": "Sperimentale", + "Select-Network": "Seleziona rete" +} diff --git a/src/locales/ja/translation.json b/src/locales/ja/translation.json deleted file mode 100755 index 0159a14fa..000000000 --- a/src/locales/ja/translation.json +++ /dev/null @@ -1,136 +0,0 @@ -{ - "Nav-Home": "Home", - "Nav-Vault": "Vault", - "Nav-Stake": "Stake", - "Nav-Farm": "Farm", - "Foot-Token": "Token Contract", - "Foot-Forum": "Forum", - "Foot-Audit": "Audit", - "Foot-Stats": "Stats", - "Foot-Voting": "Voting", - "Foot-Documentation": "Documentation", - "Foot-Uniswap": "Uniswap ETH-YFII", - "App-SnackBarText": "ネットワークエラー", - "Home-Subtitle": "富に繋がる新しい道", - "Home-Warning": "本プロジェクトはまだべた版、各自リスクを判断してください。", - "Home-ConnectWallet": "ウォレット接続", - "Home-ConnectButton": "接続", - "Home-BrowserWallet": "ウォレットを接続する", - "Home-SnackBarText": "The difference between token desposited and itoken", - "Home-SnackBarUrl": "https://docs.yfii.finance/#/itokens", - "Vault-Title": "入金して稼ぎましょう", - "Vault-Wallet": "ウォレット", - "Vault-Balance": "残高", - "Vault-Input-1": "入金したい金額を入力してください ", - "Vault-Input-2": " の額", - "Vault-Input-3": "入力したい金額を入力して", - "Vault-Input-4": " 取出したい", - "Vault-ApproveING": "許可中…", - "Vault-ApproveButton": "許可", - "Vault-DepositING": "入金中…", - "Vault-DepositButton": "入金", - "Vault-DepositButtonAll": "全額入金", - "Vault-ListDeposited": "入金額", - "Vault-ListAPY": "収益率", - "Vault-ListEarned": "稼ぐ額", - "Vault-ListPending": "確認待ち稼ぐ額", - "Vault-Deposited": "トータル入金額", - "Vault-WithdrawING": "取出中…", - "Vault-WithdrawButton": "取出", - "Vault-WithdrawButtonAll": "全額取出", - "Vault-Earned": "稼ぐ額", - "Vault-ClaimING": "受取中…", - "Vault-ClaimButton": "受取る", - "Vault-Pending": "確認待ち", - "Vault-PendingDescription": "予想額", - "Vault-PendingContent": "収穫後確認できる。", - "Vault-Idle": "稼動していない額", - "Vault-FarmING": "ファーミング…", - "Vault-FarmButton": "ファーム", - "Vault-FarmButtonDescription": "手動でコンタクト内のお金をファーミングにする。", - "Vault-Yield": "収益額", - "Vault-HarvestING": "収穫中…", - "Vault-HarvestButton": "収穫", - "Vault-HarvestButtonDescription": "収穫する人は金額(画面表示数字)の1%の収益はもらえる。", - "Vault-Modal-Title": "機関銃プール新機能:", - "Vault-Modal-Content": "不正入金を防止するため、入金してから24時間以内の収益は24時間以降から受取れる。注意:入金度に24時間のカウントダウンはリセットする。", - "Vault-Modal-Amount": "実収益 ", - "Vault-Modal-Ratio": "受取れるレート:", - "Vault-Modal-TIme": "24時間カウントダウン:", - "Vault-Modal-CloseButton": "クローズ", - "Vault-Modal-ConfirmButton": "確定", - "Vault-Main-Title":"金庫", - "Vault-Second-Title":"入金して金を稼ぐ", - "Stake-Main-Title":"YFII / ステーク", - "Stake-Pools-Learn-More": "https://docs.yfii.finance/#/yield-farming", - "Stake-Second-Title":"収益率の表示はすぐではないので、ご注意してください。", - "Stake-List-Header-Main":"知識ベース: YFIIに関するすべての知識", - "Stake-List-Header-Sub":"ステークしたいトークンを選んでください", - "Stake-Learn-More":"もっと知りたい", - "Swap-Header": "Zap", - "Swap-Title": "Exchange your assets", - "Swap-Send": "Send", - "Swap-Balance": "Balance", - "Swap-Max": "Max", - "Swap-Receive": "Receive", - "Stake-Pool-Unstake-Hint": "The mortgage will take three days to redeem", - "Stake-Pool-Unstake-Hint-Date":"請け戻し期日:", - "Stake-Table-Pool":"プール", - "Stake-Table-Staked":"ステークド", - "Stake-Table-Total":"トータル ステークド 金額", - "Stake-Table-Apy":"収益率", - "Stake-Button-Stake":"STAKE", - "Stake-Button-Approval":"許可", - "Stake-Button-Stake-Tokens":"ステーク トークン", - "Stake-Button-Claim-Rewards":"報酬取出", - "Stake-Button-Unstake-Tokens":"アンステーク トークン", - "Stake-Button-Exit":"退出:報酬取出&アンステーク", - "Stake-Balancer-Your-Balance":"残高", - "Stake-Balancer-Current-Staked":"現在ステークド", - "Stake-Balancer-Rewards-Available":"使える報酬", - "Stake-Balancer-Half-Time":"ハーフ 時間", - "Link": { - "Home": "ホーム", - "Vault": "金庫", - "Stake": "ステーク", - "Contract": "トークン コントラクト", - "Forum": "フォーラム", - "Stats": "統計", - "Voting": "投票", - "Documentation": "ドキュメント", - "Uniswap": "Uniswap ETH-YFII", - "Audit": "監査" - }, - "Farm-Main-Title": "Farm", - "Farm-Second-Title": "Hold YFII and Earn MEFI", - "Farm-Stake": "Deposit", - "Farm-Earn": "Earn", - "Farm-Get": "Get", - "Farm-Mining": "Mine", - "Farm-CAN-GET": "To get", - "Farm-Time": "Mining Time", - "Farm-Know": "Click to know", - "Farm-Earned": "Earned", - "Farm-Reward": "Harvest", - "Farm-Hold": "Hold", - "Farm-Pledged": "Staked", - "Farm-Pledge": "Stake", - "Farm-Proof": "Proof", - "Farm-Approval": "Authorize to stake", - "Farm-Exit": "Exit: Claim rewards and unstake", - "Farm-UnApproval": "Unstake", - "Farm-Balance": "Available Balance", - "Farm-All-Stake": "All Stake", - "Farm-Stake-Amount": "Input deposit amount", - "Farm-Dialog-Confirm": "Confirm", - "Farm-Dialog-Cancel": "Cancel", - "Farm-All-UnApproval": "All Unstaked", - "Farm-UnApproval-Amount": "Input unstaked amount", - "Farm-Mining-Over": "Mining Ended", - "Farm-Will-Mining-Over": "Mining available", - "Farm-week": "week", - "Public-Day": " Day ", - "Public-Hour": " Hour ", - "Public-Minute": " Minute ", - "Public-Seconds": " Seconds " -} diff --git a/src/locales/ko/translation.json b/src/locales/ko/translation.json index 9502f9a87..bfc9abaf9 100644 --- a/src/locales/ko/translation.json +++ b/src/locales/ko/translation.json @@ -1,137 +1,29 @@ { - "Nav-Home":"홈", - "Nav-Vault":"채굴풀", - "Nav-Stake":"스테이킹", - "Nav-Farm":"채굴", - "Foot-Token":"토큰 계약", - "Foot-Forum":"포럼", - "Foot-Audit":"심사", - "Foot-Stats":"통계", - "Foot-Voting":"투표", - "Foot-Documentation":"자료", - "Foot-Uniswap":"Uniswap ETH-YFII", - "App-SnackBarText": "네트워크 오류", - "Home-Subtitle": "자산을 늘리는 더 좋은 방법.", - "Home-Warning": "이 프로젝트는 베타버전이므로, 사용할 때 스스로 위험을 부담하십시오.", - "Home-ConnectWallet": "계속하려면 지갑에 연결하세요.", - "Home-ConnectButton": "연결", - "Home-BrowserWallet": "지갑 연결", - "Home-SnackBarText": "보통 토큰 및 itoken을 스테이킹하는 차이점", - "Home-SnackBarUrl": "https://docs.yfii.finance/#/itokens", - "Vault-Title": "입금하기", + "Disclaimer": "스마트 컨트랙트, 토큰, 가상자산 투자 선택시 직접 분석하셔서 신중하게 운영하시기 바랍니다. ", "Vault-Wallet": "지갑", "Vault-Balance": "잔고", - "Vault-Input-1": "입금 수량을 ", - "Vault-Input-2": " 입력하십시오", - "Vault-Input-3": "인출 수량을 ", - "Vault-Input-4": " 입력하십시오", - "Vault-ApproveING": "승인중...", + "Vault-APY": "수익 률", + "Vault-APYDaily": "Daily", + "Vault-TVL": "TVL", + "Vault-Approving": "승인중...", "Vault-ApproveButton": "승인", - "Vault-DepositING": "입금중...", "Vault-DepositButton": "입금", - "Vault-DepositButtonAll":"전부 수입 하 다.", - "Vault-ListDeposited": "입금완료", - "Vault-ListAPY":"수익 률", - "Vault-ListEarned": "수익", - "Vault-ListPending": "전송중", - "Vault-Deposited": "입금완료", - "Vault-WithdrawING": "출금중...", + "Vault-DepositButtonAll": "모두 입금", + "Vault-Deposited": "입금", + "Vault-Withdrawing": "출금중...", "Vault-WithdrawButton": "출금", - "Vault-WithdrawButtonAll": "전부 꺼낸다.", - "Vault-Earned": "수익", - "Vault-ClaimING": "요청중...", - "Vault-ClaimButton": "요청", - "Vault-Pending": "전송중", - "Vault-PendingDescription": "예상 금액", - "Vault-PendingContent": "수확이 끝난 후에 최종 확인.", - "Vault-Idle": "유휴상태", - "Vault-FarmING": "농업중...", - "Vault-FarmButton": "농업", - "Vault-FarmButtonDescription": "계약의 유휴 잔액을 수동으로 농업 생산량에 보냅니다.", - "Vault-Yield": "수익", - "Vault-HarvestING": "수확중...", - "Vault-HarvestButton": "수확", - "Vault-HarvestButtonDescription": "수확을 돕고 수익의 1%를 보상으로 받습니다.", - "Vault-Modal-Title": "볼트의 새 기능:", - "Vault-Modal-Content": "대형 투자자들이 매 입금 후 24시간 이내에 다른 농부들의 수익을 감소시키고 큰 자금을 회수하는 것을 막기 위해서, 이윤은 모든 이자가 청구될 수 있도록 (클레임 또는 철회) 1일 후에만 (청구 또는 철회) 할 수 있습니다. 참고:카운트다운은 입금시점로부터 2시간으로 재설정됩니다.", - "Vault-Modal-Amount": "당신의 실제 수익은 ", - "Vault-Modal-Ratio": "청구가능비율: ", - "Vault-Modal-TIme": "모든 요청을 카운트다운합니다: ", - "Vault-Modal-CloseButton": "닫기", - "Vault-Modal-ConfirmButton": "확정", - "Vault-Main-Title":"채굴풀", - "Vault-Second-Title":"입금 및 수익", - "Stake-Main-Title":"YFII / Stake", - "Stake-Pools-Learn-More": "https://docs.yfii.finance/#/yield-farming", - "Stake-Second-Title":"보상이 시작되거나 조금 후에 APY가 공개됩니다.", - "Stake-List-Header-Main":"자료: YFII에 대해 알아야 할 모든 것", - "Stake-List-Header-Sub":"어떤 토큰을 스테이킹 하시겠습니까?", - "Stake-Learn-More":"자세한 정보", - "Swap-Header": "삭제", - "Swap-Title": "자산 거래", - "Swap-Send": "보내기", - "Swap-Balance": "잔액", - "Swap-Max":"최대", - "Stake-Pool-Unstake-Hint": "The mortgage will take three days to redeem", - "Stake-Pool-Unstake-Hint-Date":"상환 날짜:", - "Swap-Receive": "받기", - "Stake-Table-Pool":"풀", - "Stake-Table-Staked":"스테이킹", - "Stake-Table-Total":"전체 잠금 금액 ", - "Stake-Table-Apy":"APY", - "Stake-Button-Stake":"스테이킹", - "Stake-Button-Approval":"승인", - "Stake-Button-Stake-Tokens":"스테이킹 토큰", - "Stake-Button-Claim-Rewards":"보상 인출", - "Stake-Button-Unstake-Tokens":"언스테이킹 토큰", - "Stake-Button-Exit":"나가기: 안출과 언스테이킹", - "Stake-Balancer-Your-Balance":"잔액", - "Stake-Balancer-Current-Staked":"현재 스테이킹", - "Stake-Balancer-Rewards-Available":"가능한 보상", - "Stake-Balancer-Half-Time":"중간", - "Farm-Main-Title": "채굴", - "Link": { - "Home": "Home", - "Vault": "Vault", - "Stake": "Stake", - "Contract": "Token Contract", - "Forum": "Forum", - "Stats": "Stats", - "Voting": "Voting", - "Documentation": "Documentation", - "Uniswap": "Uniswap ETH-YFII", - "Audit": "Audit" - }, - "Farm-Main-Title": "Farm", - "Farm-Second-Title": "Hold YFII and Earn MEFI", - "Farm-Stake": "Deposit", - "Farm-Earn": "Earn", - "Farm-Get": "Get", - "Farm-Mining": "Mine", - "Farm-CAN-GET": "To get", - "Farm-Time": "Mining Time", - "Farm-Know": "Click to know", - "Farm-Earned": "Earned", - "Farm-Reward": "Harvest", - "Farm-Hold": "Hold", - "Farm-Pledged": "Staked", - "Farm-Pledge": "Stake", - "Farm-Proof": "Proof", - "Farm-Approval": "Authorize to stake", - "Farm-Exit": "Exit: Claim rewards and unstake", - "Farm-UnApproval": "Unstake", - "Farm-Balance": "Available Balance", - "Farm-All-Stake": "All Stake", - "Farm-Stake-Amount": "Input deposit amount", - "Farm-Dialog-Confirm": "Confirm", - "Farm-Dialog-Cancel": "Cancel", - "Farm-All-UnApproval": "All Unstaked", - "Farm-UnApproval-Amount": "Input unstaked amount", - "Farm-Mining-Over": "Mining Ended", - "Farm-Will-Mining-Over": "Mining available", - "Farm-week": "week", - "Public-Day": " Day ", - "Public-Hour": " Hour ", - "Public-Minute": " Minute ", - "Public-Seconds": " Seconds " -} \ No newline at end of file + "Vault-WithdrawButtonAll": "모두 철회", + "Vault-WithdrawFeeGlobal": "모든 금고에는 0.1 %의 인출 수수료가 있습니다.", + "Vault-MainTitle": "Vaults", + "Vault-SecondTitle": "입금 & 수익 창출", + "Hide-Zero-Balances": "Hide Zero Balances", + "Retired-Vaults": "Retired Vaults", + "Filters-Platform": "Platform", + "Filters-Asset": "Asset", + "Filters-Sort": "Sort by", + "Filters-All": "All", + "Filters-Default": "Default", + "Stake-Table-Staked": "스테이킹", + "Stake-Table-Total": "전체 잠금 금액,", + "Stake-Balancer-Earned": "보상 인출" +} diff --git a/src/locales/ms/translation.json b/src/locales/ms/translation.json new file mode 100644 index 000000000..86513e0b2 --- /dev/null +++ b/src/locales/ms/translation.json @@ -0,0 +1,150 @@ +{ + "App-Meta-Description": "Pengoptimum Hasil Berbilang Rangkaian", + "Disclaimer": "Penggunaan Kontrak Pintar, Token, dan Kripto adalah berisiko. DYOR sebelum melabur.", + "Network-UnknownError": "Satu ralat yang tidak diketahui telah berlaku.", + "Network-ConnectionRequired": "Sambungan dompet ke {{network}} diperlukan.", + "Network-Supports": "Aplikasi ini menyokong {{network}}.", + "Network-ConnectedTo": "Anda kini disambungkan ke {{network}}.", + "Network-ConnectedUnsupported": "Anda kini disambungkan ke rangkaian yang tidak disokong.", + "Network-ConnectWallet": "Sambungkan dompet", + "Network-DisconnectWallet": "Putuskan sambungan dompet", + "Network-SwitchToNetwork": "Tukar ke rangkaian {{network}}", + "Network-GoToApp": "Pergi ke aplikasi {{network}}", + "Network-SwitchNote": "Anda perlu menukar rangkaian secara manual melalui dompet anda.", + "Network-NoWalletAddress": "Benarkan akses ke satu akaun di dompet anda.", + "Vault-Wallet": "Dompet", + "Vault-Balance": "Baki", + "Vault-APR": "APR", + "Vault-APY": "APY", + "Vault-APYDaily": "Harian", + "Vault-TVL": "TVL", + "Vault-AutocompoundingNote": "Semua vault kompaun secara automatik pada kadar optimum", + "Vault-Approving": "Meluluskan...", + "Vault-ApproveButton": "Lulus", + "Vault-ApprovalSuccess": "Berjaya diluluskan", + "Vault-ApprovalError": "Silap diluluskan: {{error}}", + "Vault-BifiBuyback": "Beli Balik BIFI {{amount}}/hari", + "Vault-DepositButton": "Deposit", + "Vault-DepositButtonAll": "Deposit Semua", + "Vault-DepositTokensNote": "Anda akan menerima token {{mooToken}} sebagai resit untuk aset {{assetToken}} yang telah anda depositkan. Token ini diperlukan untuk mengeluarkan {{assetToken}} anda, jangan berdagang atau memindahkan {{mooToken}} kepada orang yang tidak dikenali!", + "Vault-DepositAndWithdrawFee": "Bayaran deposit: {{depositFee}}, Bayaran pengeluaran: {{withdrawalFee}}", + "Vault-Deposited": "Didepositkan", + "Vault-DepositSuccess": "Deposit berjaya", + "Vault-DepositError": "Silap Deposit: {{error}}", + "Vault-DepositScenario": "Deposit akan mengakibatkan:", + "Vault-DepositScenarioSwap": "Untuk mengimbangi satu pasangan liquidity, {{swapIn}} akan ditukar kepada {{swapOut}} (±{{slippageTolerance}} gelinciran dan bayaran deposit, jika ada)", + "Vault-DepositScenarioAddLiquidity": "Liquidity ditambah untuk menerima {{poolToken}}", + "Vault-DepositScenarioDepositToVault": "Deposit {{poolToken}} yang diterima ke dalam Beefy vault", + "Vault-DepositScenarioReturnDust": "Sedikit daripada jumlah {{tokenA}} dan {{tokenB}} yang tidak digunakan akan dikembalikan ke dompet anda", + "Vault-Withdrawing": "Mengeluarkan...", + "Vault-WithdrawButton": "Keluar", + "Vault-WithdrawButtonAll": "Keluar Semua", + "Vault-WithdrawFeeGlobal": "Bayaran pengeluaran 0.1% untuk semua vault (kecuali pengecualian dinyatakan pada kad vault)", + "Vault-WithdrawSuccess": "Pengeluaran berjaya", + "Vault-WithdrawError": "Silap pengeluaran: {{error}}", + "Vault-WithdrawScenario": "Pengeluaran akan mengakibatkan:", + "Vault-WithdrawScenarioRedeem": "Token {{mooToken}} ditebuskan untuk {{poolToken}}", + "Vault-WithdrawScenarioRemoveLiquidity": "Liquidity dikeluarkan dari {{poolToken}} untuk menerima {{tokenA}} dan {{tokenB}}", + "Vault-WithdrawScenarioSwap": "Anggaran {{swapIn}} ditukarkan kepada {{swapOut}} (±{{slippageTolerance}} gelinciran dan bayaran pengeluaran, jika ada)", + "Vault-WithdrawScenarioTotal": "Anggaran {{totalOut}} dipindah ke dompet anda", + "Vault-Harvesting": "Menuaikan...", + "Vault-HarvestButton": "Menuai", + "Vault-HarvestConfirm": "Konfirm Penuaian?", + "Vault-HarvestDescription": "Penuaian secara manual TIDAK DIPERLUKAN. Semua vault kompaun secara automatik. Ini adalah ciri lanjutan yang ditujukan untuk pengguna berpengalaman. Adakah anda pasti mahu menuai?", + "Vault-HarvestSuccess": "Penuaian Berjaya", + "Vault-HarvestError": "Silap Menuai: {{error}}", + "Vault-LastHarvest": "Tuaian Terakhir", + "Vault-MainTitle": "Vault", + "Vault-SecondTitle": "Deposit & Menjana wang", + "Vault-DepositsPausedTitle": "Deposit dijeda", + "Vault-DepositsPausedMsg": "Deposit dijeda untuk vault tersebut.", + "Vault-DepositsRetiredTitle": "Bersara", + "Vault-DepositsRetiredRewardsTitle": "Bersara - Platform dasar menghentikan ganjaran.", + "Vault-DepositsRetiredExploitTitle": "Bersara - Token telah dieksploitasi, dana adalah SAFU di vault.", + "Vault-DepositsRetiredTVLTitle": "Bersara - TVL terlalu rendah.", + "Vault-DepositsRetiredMsg": "Vault bersara, keluarkan dana anda ASAP", + "Vault-Staked": "Stake", + "Vault-Description": "Guna: {{vault}}", + "Vault-Network": "Pilih Rangkaian", + "Vault-Experimental": "Eksperimen", + "Vault-Loading": "Memuatkan Vault...", + "Vault-NotFound": "Vault {{vaultId}} tidak dijumpai", + "Vault-Breakdown-VaultApr": "Vault APR", + "Vault-Breakdown-TradingApr": "Trading APR", + "Vault-Breakdown-BoostApr": "Boost APR", + "Vault-Breakdown-VaultDaily": "Vault Harian", + "Vault-Breakdown-TradingDaily": "Trading Harian", + "Vault-Breakdown-BoostDaily": "Boost Harian", + "Vault-Boosts-Staked-Single": "Staked di {{name}} boost", + "Vault-Boosts-Staked-Count": "Staked di {{count}} boosts", + "Vault-Banner-CakeV2-StakeLabel": "Stake {{symbol}} anda", + "Vault-Banner-CakeV2-StakeValue": "Vault {{symbol}} yang baru dan tulen", + "Vault-Banner-CakeV2-SaferLabel": "Lebih selamat", + "Vault-Banner-CakeV2-SaferValue": "{{count}} orang tengah", + "Vault-Banner-CakeV2-SmarterLabel": "Lebih bijak", + "Vault-Banner-CakeV2-SmarterValue": "{{count}}+ kompaun tahunan", + "Vault-Banner-CakeV2-FairerLabel": "Lebih adil", + "Vault-Banner-CakeV2-FairerValue": "{{percent}}% lebih rendah yuran", + "Vaults-Back": "Kembali ke vault", + "Hide-Zero-Balances": "Sembunyi Baki Sifar", + "Hide-Zero-Vault-Balances": "Vault Didepositkan", + "Retired-Vaults": "Vault Bersara", + "Filters-Platform": "Platform", + "Filters-Vault-Type": "Jenis vault", + "Filters-Asset": "Aset", + "Filters-Sort": "Disusun mengikut", + "Filters-All": "Semua", + "Filters-Default": "Default", + "Filters-Reset": "Kosongkan Penapis", + "Filters-Type-SingleAssets": "Aset Tunggal", + "Filters-Type-StableLPs": "LP dalam Stablecoin", + "Filters-Type-Stables": "LP dengan Stablecoin", + "Confirm": "Konfirm", + "Cancel": "Batal", + "No-Results": "Tiada Keputusan", + "docs": "dokumen", + "news": "berita", + "source": "sumber", + "gov": "gov", + "vote": "undi", + "stats": "statistik", + "app": "aplikasi", + "socials": "sosial", + "buy": "beli", + "products": "produk", + "Powered-By": "DIKUASAI OLEH", + "IFO-Guide": "Panduan IFO", + "Available-To-Stake": "Tersedia untuk Stake", + "Stake": "Stake", + "Available-To-Unstake": "Tersedia untuk Unstake", + "Unstake": "Unstake", + "Max": "Max", + "Coming-Soon": "Akan Datang", + "Finished": "Selesai", + "End": "Tamat", + "Stakes-Meta-Title": "Boosts - {{networkName}}", + "Stake-Meta-Title": "Menjana {{earnedToken}} - Didorong oleh {{boostedBy}} - {{networkName}}", + "Stake-Button-Stake": "Stake", + "Stake-Button-Claim": "Tuntut", + "Stake-Button-Approval": "Lulus", + "Stake-Button-Stake-Tokens": "Stake Tokens", + "Stake-Button-Unstake-Tokens": "Unstake Tokens", + "Stake-Button-Claim-Rewards": "Tuntutan Ganjaran", + "Stake-Button-Exit": "Tuntut dan Unstake", + "Stake-Balancer-Current-Staked": "Staked Semasa", + "Stake-Balancer-Rewards-Available": "Ganjaran Tersedia", + "Stake-Balancer-Half-Time": "Separuh Masa", + "Stake-BoostedBy": "Didorong oleh {{name}}", + "Stake-Button-Back": "Kembali", + "Stake-Pool-Retired": "Pool tersebut telah tamat, sila mengeluarkan dana anda.", + "Stake-Total-Value-Locked": "Jumlah {{mooToken}} Staked", + "Stake-Your-Pool": "Pool Anda", + "Stake-Current-Daily": "Kadar Harian Semasa", + "Add-Liquidity": "Tambah Liquidity", + "Remove-Liquidity": "Mengeluarkan Liquidity", + "Buy-Token": "Beli Token", + "Wrap-BNB": "Wrap BNB", + "Boost": "Boost", + "Experimental": "Eksperimen", + "Select-Network": "Pilih Rangkaian" +} diff --git a/src/locales/nl/translation.json b/src/locales/nl/translation.json new file mode 100644 index 000000000..650b58575 --- /dev/null +++ b/src/locales/nl/translation.json @@ -0,0 +1,113 @@ +{ + "Disclaimer": "Het gebruiken van Smart Contracts, Tokens en Crypto is altijd een risico. Doe je eigen onderzoek voordat je investeert.", + "Network-ConnectWallet": "Verbind Wallet", + "Vault-Wallet": "Wallet", + "Vault-Balance": "Saldo", + "Vault-APY": "APY", + "Vault-APYDaily": "Dagelijks", + "Vault-TVL": "TVL", + "Vault-AutocompoundingNote": "Alle kluizen herinvesteren automatisch met een optimale frequentie", + "Vault-Approving": "Bezig met goedkeuren...", + "Vault-ApproveButton": "Goedkeuren", + "Vault-ApprovalSuccess": "Goedkeuring voltooid", + "Vault-ApprovalError": "Goedkeuring mislukt: {{error}}", + "Vault-DepositButton": "Stort", + "Vault-DepositButtonAll": "Stort alles", + "Vault-DepositTokensNote": "Je ontvangt {{mooToken}} als stortingsbewijs van uw {{assetToken}} vermogen. Dit bewijs is nodig om uw {{assetToken}} op te nemen, verhandel of verstuur {{mooToken}} niet naar vreemden!", + "Vault-DepositFee": "Er zijn {{depositFee}} stortingskosten, geen opnamekosten", + "Vault-Deposited": "Gestort", + "Vault-DepositSuccess": "Storting gelukt", + "Vault-DepositError": "Storting mislukt: {{error}}", + "Vault-DepositScenario": "Storting resulteert in:", + "Vault-DepositScenarioSwap": "Voor de juiste verhouding, verwissel {{swapIn}} voor {{swapOut}} (±{{slippageTolerance}} afwijking en stort kosten, indien van toepassing)", + "Vault-DepositScenarioAddLiquidity": "Voeg liquiditeit toe om {{poolToken}} te ontvangen", + "Vault-DepositScenarioDepositToVault": "Stort ontvangen {{poolToken}} in Beefy's kluis", + "Vault-DepositScenarioReturnDust": "Retourneer ongebruikte hoeveelheden van {{tokenA}} en {{tokenB}} naar je wallet", + "Vault-Withdrawing": "Bezig met opnemen...", + "Vault-WithdrawButton": "Opnemen", + "Vault-WithdrawButtonAll": "Alles opnemen", + "Vault-WithdrawFeeGlobal": "Er zijn 0.05%-0.1% opname- of stortingskosten op alle kluizen", + "Vault-WithdrawSuccess": "Opname gelukt", + "Vault-WithdrawError": "Opname mislukt: {{error}}", + "Vault-WithdrawScenario": "Opname resulteert in:", + "Vault-WithdrawScenarioRedeem": "Wissel {{mooToken}} tokens in voor {{poolToken}}", + "Vault-WithdrawScenarioRemoveLiquidity": "Verwijder liquiditeit van {{poolToken}} om {{tokenA}} en {{tokenB}} te verkrijgen", + "Vault-WithdrawScenarioSwap": "Verwissel geschatte {{swapIn}} voor {{swapOut}} (±{{slippageTolerance}} afwijking en opname kosten, indien van toepassing)", + "Vault-WithdrawScenarioTotal": "Retourneer geschatte {{totalOut}} naar je wallet", + "Vault-Harvesting": "Bezig met oogsten...", + "Vault-HarvestButton": "Oogst", + "Vault-HarvestConfirm": "Bevestig oogst?", + "Vault-HarvestDescription": "Handmatig oogsten is NIET NODIG, alle kluizen herinvesteren automatisch. Deze functie is bedoeld voor expert-gebuikers. Weet je zeker dat je wilt oogsten?", + "Vault-HarvestSuccess": "Oogsten gelukt", + "Vault-HarvestError": "Oogst mislukt: {{error}}", + "Vault-LastHarvest": "Laatste oogst", + "Vault-MainTitle": "Kluizen", + "Vault-SecondTitle": "Stort & Verdien geld", + "Vault-DepositsPausedTitle": "Stortingen gepauzeerd", + "Vault-DepositsPausedMsg": "Stortingen zijn gepauzeerd voor deze kluis.", + "Vault-DepositsRetiredTitle": "BUITEN GEBRUIK", + "Vault-DepositsRetiredMsg": "Kluis buiten gebruik, neem z.s.m. je fondsen op", + "Vault-Staked": "Gestort", + "Vault-Description": "Gebruikt: {{vault}}", + "Vault-Network": "Kies netwerk", + "Vault-Experimental": "Experimenteel", + "Vault-Loading": "Kluis laden", + "Vault-NotFound": "Kluis {{vaultId}} niet gevonden", + "Vaults-Back": "Terug naar de kluizen", + "Hide-Zero-Balances": "Verberg nul saldo's", + "Hide-Zero-Vault-Balances": "Gebruikt", + "Retired-Vaults": "Buiten gebruik", + "Filters-Platform": "Platform", + "Filters-Vault-Type": "Kluis type", + "Filters-Asset": "Aandeel", + "Filters-Sort": "Sorteren op", + "Filters-All": "Alle", + "Filters-Default": "Standaard", + "Filters-Reset": "Wis Filters", + "Confirm": "Bevestig", + "Cancel": "Annuleer", + "No-Results": "Geen resultaten", + "docs": "docs", + "news": "nieuws", + "source": "broncode", + "gov": "gov", + "vote": "stem", + "stats": "stats", + "app": "app", + "socials": "socials", + "buy": "koop", + "products": "producten", + "Powered-By": "MOGELIJK GEMAAKT DOOR", + "IFO-Guide": "IFO Handleiding", + "Available-To-Stake": "Beschikbaar voor storting", + "Stake": "Stake", + "Available-To-Unstake": "Beschikbaar voor opname", + "Unstake": "Unstake", + "Max": "Max", + "Coming-Soon": "Binnenkort", + "Finished": "Afgelopen", + "End": "Einde", + "Stake-Button-Stake": "Stake", + "Stake-Button-Claim": "Claim", + "Stake-Button-Approval": "Keur goed", + "Stake-Button-Stake-Tokens": "Stake Tokens", + "Stake-Button-Unstake-Tokens": "Unstake Tokens", + "Stake-Button-Claim-Rewards": "Claim beloning", + "Stake-Button-Exit": "Claim en opnemen", + "Stake-Balancer-Current-Staked": "Momenteel gestaked", + "Stake-Balancer-Rewards-Available": "Beloningen beschikbaar", + "Stake-Balancer-Half-Time": "Half-Time", + "Stake-BoostedBy": "Gestimuleerd door {{name}}", + "Stake-Button-Back": "Terug", + "Stake-Pool-Retired": "De pool is beeindigd, neem je fondsen op.", + "Stake-Total-Value-Locked": "Totale gestorte waarde", + "Stake-Your-Pool": "Jouw pool", + "Stake-Current-Daily": "Huidig dagtarief", + "Add-Liquidity": "Voeg liquiditeit toe", + "Remove-Liquidity": "Verwijder liquiditeit", + "Buy-Token": "Koop Token", + "Wrap-BNB": "Wrap BNB", + "Boost": "Boost", + "Experimental": "Experimenteel", + "Select-Network": "Kies netwerk" +} diff --git a/src/locales/pl/translation.json b/src/locales/pl/translation.json new file mode 100644 index 000000000..22afe6855 --- /dev/null +++ b/src/locales/pl/translation.json @@ -0,0 +1,132 @@ +{ + "App-Meta-Description": "The Multichain Yield Optimizer", + "Disclaimer": "Korzystanie z Inteligentnych Kontraktów, Tokenów oraz Kryptowalut zawsze wiąże się z ryzykiem. DYOR przed inwestycją.", + "Network-ConnectWallet": "Podłącz portfel", + "Vault-Wallet": "Portfel", + "Vault-Balance": "Środki", + "Vault-APR": "APR", + "Vault-APY": "APY", + "Vault-APYDaily": "Dziennie", + "Vault-TVL": "TVL", + "Vault-AutocompoundingNote": "Wszystkie skarbce auto-kumulują się optymalnie", + "Vault-Approving": "Zatwierdzanie...", + "Vault-ApproveButton": "Zatwierdź", + "Vault-ApprovalSuccess": "Zatwierdzono", + "Vault-ApprovalError": "Błąd zatwierdzania: {{error}}", + "Vault-BifiBuyback": "Odkup BIFI {{amount}}/dzień", + "Vault-DepositButton": "Depozyt", + "Vault-DepositButtonAll": "Zdeponuj Wszystko", + "Vault-DepositTokensNote": "Otrzymasz w zamian token {{mooToken}} jako potwierdzenie depozytu {{assetToken}}. Ten token jest potrzebny, aby wypłacić {{assetToken}}, nie wymieniaj ani nie wysyłaj {{mooToken}} nieznajomym!", + "Vault-DepositAndWithdrawFee": "Opłata za depozyt: {{depositFee}}, Opłata za wypłatę: {{withdrawalFee}}", + "Vault-Deposited": "Zdeponowane", + "Vault-DepositSuccess": "Depozyt potwierdzony", + "Vault-DepositError": "Błąd depozytu: {{error}}", + "Vault-DepositScenario": "Depozyt spowoduje:", + "Vault-DepositScenarioSwap": "W celu zbilansowania pary walutowej, wymień {{swapIn}} na {{swapOut}} (±{{slippageTolerance}} opcjonalny poślizg cenowy i opłata za depozyt)", + "Vault-DepositScenarioAddLiquidity": "Dodaj płynność, aby otrzymać {{poolToken}}", + "Vault-DepositScenarioDepositToVault": "Zdeponowanie {{poolToken}} w skarbcu Beefy", + "Vault-DepositScenarioReturnDust": "Zwrot niewykorzystanych, śladowych ilości {{tokenA}} i {{tokenB}} do portfela", + "Vault-Withdrawing": "Wypłacanie...", + "Vault-WithdrawButton": "Wypłata", + "Vault-WithdrawButtonAll": "Wypłać wszystko", + "Vault-WithdrawFeeGlobal": "Opłata za wypłatę wynosi 0.1% dla wszystkich skarbców (wyjątki są zaznaczone na karcie skarbca)", + "Vault-WithdrawSuccess": "Wypłacono", + "Vault-WithdrawError": "Błąd wypłaty: {{error}}", + "Vault-WithdrawScenario": "Wypłata spowoduje:", + "Vault-WithdrawScenarioRedeem": "Wykup tokenów {{mooToken}} za {{poolToken}}", + "Vault-WithdrawScenarioRemoveLiquidity": "Usuń płynność z {{poolToken}} aby otrzymać {{tokenA}} i {{tokenB}}", + "Vault-WithdrawScenarioSwap": "Wymień {{swapIn}} za {{swapOut}} (±{{slippageTolerance}} opcjonalny poślizg cenowy i opłata za depozyt)", + "Vault-WithdrawScenarioTotal": "Przenieś {{totalOut}} do portfela", + "Vault-Harvesting": "Zbieranie...", + "Vault-HarvestButton": "Zbierz", + "Vault-HarvestConfirm": "Potwierdzasz zbiór?", + "Vault-HarvestDescription": "Ręczne zbieranie NIE JEST KONIECZNE. Wszystkie skarbce się auto-kumulują. To zawansowana funkcja przeznaczona dla doświadczonych użytkowników. Czy chcesz zebrać ręcznie?", + "Vault-HarvestSuccess": "Zbiór Zakończony", + "Vault-HarvestError": "Błąd zbioru: {{error}}", + "Vault-LastHarvest": "Ostatni Zbiór", + "Vault-MainTitle": "Skarbce", + "Vault-SecondTitle": "Deponuj i Zarabiaj", + "Vault-DepositsPausedTitle": "Depozyty wstrzymane", + "Vault-DepositsPausedMsg": "Depozyty dla tego skarbca są wstrzymane.", + "Vault-DepositsRetiredTitle": "WYCOFANY", + "Vault-DepositsRetiredMsg": "Skarbiec został wycofany, proszę wypłacić środki natychmiast", + "Vault-Staked": "Staked", + "Vault-Description": "Wykorzystuje: {{vault}}", + "Vault-Network": "Wybierz Sieć", + "Vault-Experimental": "Eksperymentalny", + "Vault-Loading": "Ładowanie Skarbca", + "Vault-NotFound": "Nie znaleziono skarbca {{vaultId}}", + "Vault-Breakdown-VaultApr": "APR Skarbca", + "Vault-Breakdown-TradingApr": "APR z Handlu", + "Vault-Breakdown-BoostApr": "Boost APR", + "Vault-Breakdown-VaultDaily": "Dzienny skarbca", + "Vault-Breakdown-TradingDaily": "Dzienny z handlu", + "Vault-Breakdown-BoostDaily": "Dzienny Boost", + "Vault-Banner-CakeV2-StakeLabel": "Stake'uj swoje {{symbol}}", + "Vault-Banner-CakeV2-StakeValue": "Nowy skarbiec {{symbol}}", + "Vault-Banner-CakeV2-SaferLabel": "Bezpieczniejszy", + "Vault-Banner-CakeV2-SaferValue": "{{count}} pośrednicy", + "Vault-Banner-CakeV2-SmarterLabel": "Efektywniejszy", + "Vault-Banner-CakeV2-SmarterValue": "{{count}}+ roczny procent składany", + "Vault-Banner-CakeV2-FairerLabel": "Rzetelniejszy", + "Vault-Banner-CakeV2-FairerValue": "{{percent}}% mniejsze opłaty", + "Vaults-Back": "Powrót do skarbców", + "Hide-Zero-Balances": "Ukryj Zerowe Pozycje", + "Hide-Zero-Vault-Balances": "Zdeponowane Skarbce", + "Retired-Vaults": "Wycofane Skarbce", + "Filters-Platform": "Platforma", + "Filters-Vault-Type": "Typ skarbca", + "Filters-Asset": "Aktywa", + "Filters-Sort": "Sortuj według", + "Filters-All": "Wszystkie", + "Filters-Default": "Domyślny", + "Filters-Reset": "Wyczyść Filtry", + "Confirm": "Potwierdź", + "Cancel": "Anuluj", + "No-Results": "Brak wyników", + "docs": "docs", + "news": "news", + "source": "źródło", + "gov": "gov", + "vote": "vote", + "stats": "statystyki", + "app": "app", + "socials": "socials", + "buy": "kup", + "products": "produkty", + "Powered-By": "POWERED BY", + "IFO-Guide": "Przewodnik IFO", + "Available-To-Stake": "Dostępne do Stake", + "Stake": "Stake", + "Available-To-Unstake": "Dostępne do Unstake", + "Unstake": "Unstake", + "Max": "Max", + "Coming-Soon": "Wkrótce", + "Finished": "Zakończono", + "End": "Koniec", + "Stakes-Meta-Title": "Boosts - {{networkName}}", + "Stake-Meta-Title": "Zarabiaj {{earnedToken}} - Boosted by {{boostedBy}} - {{networkName}}", + "Stake-Button-Stake": "Stake", + "Stake-Button-Claim": "Odbierz", + "Stake-Button-Approval": "Zatwierdź", + "Stake-Button-Stake-Tokens": "Stake Tokens", + "Stake-Button-Unstake-Tokens": "Unstake Tokens", + "Stake-Button-Claim-Rewards": "Odbierz nagrody", + "Stake-Button-Exit": "Odbierz i Unstake", + "Stake-Balancer-Current-Staked": "Obecny Stake", + "Stake-Balancer-Rewards-Available": "Dostępne nagrody", + "Stake-Balancer-Half-Time": "Połowa-czasu", + "Stake-BoostedBy": "Boosted by {{name}}", + "Stake-Button-Back": "Wstecz", + "Stake-Pool-Retired": "Pula została zakończona, proszę wypłacić środki.", + "Stake-Total-Value-Locked": "Suma Staked {{mooToken}}", + "Stake-Your-Pool": "Twój udział", + "Stake-Current-Daily": "Aktualna Dzienna Stawka", + "Add-Liquidity": "Dodaj płynność", + "Remove-Liquidity": "Usuń płynność", + "Buy-Token": "Kup Token", + "Wrap-BNB": "Wrap BNB", + "Boost": "Boost", + "Experimental": "Eksperymentalny", + "Select-Network": "Wybierz sieć" +} diff --git a/src/locales/pt-BR/translation.json b/src/locales/pt-BR/translation.json new file mode 100644 index 000000000..6ab798c5e --- /dev/null +++ b/src/locales/pt-BR/translation.json @@ -0,0 +1,132 @@ +{ + "App-Meta-Description": "O otimizador de ganhos de múltiplas chains", + "Disclaimer": "Usar smart contracts, tokens, e crypto é sempre um risco. Faça sua própria pesquisa (DYOR) antes de investir.", + "Vault-Wallet": "Carteira", + "Network-ConnectWallet": "Conectar Carteira", + "Vault-Balance": "Saldo", + "Vault-APR": "APR", + "Vault-APY": "APY", + "Vault-APYDaily": "Lucro diário", + "Vault-TVL": "TVL", + "Vault-AutocompoundingNote": "Todos os cofres são compostos automaticamente a uma taxa ideal", + "Vault-Approving": "Aprovando...", + "Vault-ApproveButton": "Aprovar", + "Vault-ApprovalSuccess": "Aprovado com sucesso", + "Vault-ApprovalError": "Erro ao aprovar: {{error}}", + "Vault-BifiBuyback": "Recompra BIFI {{amount}}/dia", + "Vault-DepositButton": "Depósito", + "Vault-DepositButtonAll": "Depositar tudo", + "Vault-DepositTokensNote": "Você irá receber {{mooToken}} token como recibo dos seus ativos {{assetToken}}. Este recibo é necessário para resgatar seu {{assetToken}}, não negocie ou transfira seus {{mooToken}} para estranhos!", + "Vault-DepositAndWithdrawFee": "Taxa depósito: {{depositFee}}, Taxa saque: {{withdrawalFee}}", + "Vault-Deposited": "Depositado", + "Vault-DepositSuccess": "Depositado com sucesso", + "Vault-DepositError": "Erro ao depositar: {{error}}", + "Vault-DepositScenario": "O depósito irá resultar em:", + "Vault-DepositScenarioSwap": "Para balancear um par de liquidez, troque {{swapIn}} por {{swapOut}} (±{{slippageTolerance}} de spread e taxa de depósito, se houver)", + "Vault-DepositScenarioAddLiquidity": "Adicione liquidez para receber {{poolToken}}", + "Vault-DepositScenarioDepositToVault": "Recebido o depósito de {{poolToken}} no cofre Beefy", + "Vault-DepositScenarioReturnDust": "Retorne montante não utilizado de {{tokenA}} e {{tokenB}} para sua carteira", + "Vault-Withdrawing": "Retirando...", + "Vault-WithdrawButton": "Retirar", + "Vault-WithdrawButtonAll": "Retirar tudo", + "Vault-WithdrawFeeGlobal": "Há uma taxa de retirada de 0.05%-0.1% em todos os cofres", + "Vault-WithdrawSuccess": "Sacado com sucesso", + "Vault-WithdrawError": "Erro ao sacar: {{error}}", + "Vault-WithdrawScenario": "O saque resultará em:", + "Vault-WithdrawScenarioRedeem": "Resgatar token {{mooToken}} por {{poolToken}}", + "Vault-WithdrawScenarioRemoveLiquidity": "Remover liquidez de {{poolToken}} para receber {{tokenA}} e {{tokenB}}", + "Vault-WithdrawScenarioSwap": "Converter o valor estimado de {{swapIn}} por {{swapOut}} (±{{slippageTolerance}} de spread e taxa de saque, se houver)", + "Vault-WithdrawScenarioTotal": "Transferir aproximadamente {{totalOut}} para sua carteira", + "Vault-Harvesting": "Colhendo...", + "Vault-HarvestButton": "Colheita", + "Vault-HarvestConfirm": "Confirmar Colheita?", + "Vault-HarvestDescription": "A colheita manual NÃO É NECESSÁRIA. Todos os cofres compõe automaticamente. Esse é um recurso avançado para usuários experientes. Você tem certeza que deseja fazer a colheita?", + "Vault-HarvestSuccess": "Colhido com sucesso", + "Vault-HarvestError": "Erro ao colher: {{error}}", + "Vault-LastHarvest": "Última Colheita", + "Vault-MainTitle": "Cofres", + "Vault-SecondTitle": "Deposite e Ganhe Dinheiro", + "Vault-DepositsPausedTitle": "Depósitos suspensos", + "Vault-DepositsPausedMsg": "Depósitos estão suspensos para este cofre.", + "Vault-DepositsRetiredTitle": "APOSENTADO", + "Vault-DepositsRetiredMsg": "Cofre aposentado, resgate seus fundos em breve", + "Vault-Staked": "Investido", + "Vault-Description": "Usa: {{vault}}", + "Vault-Network": "Rede", + "Vault-Experimental": "Experimental", + "Vault-Loading": "Carregando Cofre", + "Vault-NotFound": "Cofre {{vaultId}} não encontrado", + "Vault-Breakdown-VaultApr": "APR do Cofre", + "Vault-Breakdown-TradingApr": "APR de Negociação", + "Vault-Breakdown-BoostApr": "APR do Turbinado", + "Vault-Breakdown-VaultDaily": "Cofre Diário", + "Vault-Breakdown-TradingDaily": "Negociado Diário", + "Vault-Breakdown-BoostDaily": "Turbinado Diário", + "Vault-Banner-CakeV2-StakeLabel": "Invista seu {{symbol}}", + "Vault-Banner-CakeV2-StakeValue": "Novo cofre puro {{symbol}}", + "Vault-Banner-CakeV2-SaferLabel": "Mais seguro", + "Vault-Banner-CakeV2-SaferValue": "{{count}} intermediários", + "Vault-Banner-CakeV2-SmarterLabel": "Mais inteligente", + "Vault-Banner-CakeV2-SmarterValue": "{{count}}+ composições anuais", + "Vault-Banner-CakeV2-FairerLabel": "Mais justo", + "Vault-Banner-CakeV2-FairerValue": "{{percent}}% menos taxas", + "Vaults-Back": "Voltar para cofres", + "Hide-Zero-Balances": "Ocultar Ativos Com Saldo Zero", + "Hide-Zero-Vault-Balances": "Cofres com Depósitos", + "Retired-Vaults": "Cofres Aposentados", + "Filters-Platform": "Plataforma", + "Filters-Vault-Type": "Tipo de cofre", + "Filters-Asset": "Ativos", + "Filters-Sort": "Ordenar por", + "Filters-All": "Todos", + "Filters-Default": "Padrão", + "Filters-Reset": "Limpar Filtros", + "Confirm": "Confirmar", + "Cancel": "Cancelar", + "No-Results": "Sem Resultados", + "docs": "docs", + "news": "notícias", + "source": "fontes", + "gov": "gov", + "vote": "votar", + "stats": "painel", + "app": "app", + "socials": "sociais", + "buy": "comprar", + "products": "produtos", + "Powered-By": "FORNECIDO POR", + "IFO-Guide": "Guia do IFO", + "Available-To-Stake": "Disponível para Investir", + "Stake": "Investir", + "Available-To-Unstake": "Disponível para Resgate", + "Unstake": "Resgatar", + "Max": "Max", + "Coming-Soon": "Em Breve", + "Finished": "Concluído", + "End": "Fim", + "Stakes-Meta-Title": "Turbinados - {{networkName}}", + "Stake-Meta-Title": "Ganhe {{earnedToken}} - Turbinado por {{boostedBy}} - {{networkName}}", + "Stake-Button-Stake": "Investir", + "Stake-Button-Claim": "Reivindicar", + "Stake-Button-Approval": "Aprovar", + "Stake-Button-Stake-Tokens": "Investir Tokens", + "Stake-Button-Unstake-Tokens": "Resgatar Tokens", + "Stake-Button-Claim-Rewards": "Reivindicar Recompensas", + "Stake-Button-Exit": "Reivindicar e Resgatar", + "Stake-Balancer-Current-Staked": "Atualmente Investido", + "Stake-Balancer-Rewards-Available": "Prêmios Disponíveis", + "Stake-Balancer-Half-Time": "Meio-Tempo", + "Stake-BoostedBy": "Turbinado por {{name}}", + "Stake-Button-Back": "Voltar", + "Stake-Pool-Retired": "O pool chegou ao seu fim, saque seus fundos.", + "Stake-Total-Value-Locked": "Total {{mooToken}} Investido", + "Stake-Your-Pool": "Seu Pool", + "Stake-Current-Daily": "Taxa de Juros Diária", + "Add-Liquidity": "Adicionar Liquidez", + "Remove-Liquidity": "Remover Liquidez", + "Buy-Token": "Comprar Token", + "Wrap-BNB": "Embrulhar BNB", + "Boost": "Turbinar", + "Experimental": "Experimental", + "Select-Network": "Selecione a Rede" +} diff --git a/src/locales/pt-PT/translation.json b/src/locales/pt-PT/translation.json new file mode 100644 index 000000000..1ad83166d --- /dev/null +++ b/src/locales/pt-PT/translation.json @@ -0,0 +1,145 @@ +{ + "App-Meta-Description": "O Optimizador de Rentabilidades Multichain", + "Disclaimer": "Utilizar Contratos Inteligentes, Tokens, e Cripto em geral representa sempre um risco. Investigue (DYOR) antes de investir.", + "Network-UnknownError": "Ocorreu um erro desconhecido.", + "Network-ConnectionRequired": "É necessário ligar a carteira à rede {{network}}.", + "Network-Supports": "Esta app suporta a rede {{network}}.", + "Network-ConnectedTo": "Neste momento está ligado à rede {{network}}.", + "Network-ConnectedUnsupported": "Neste momento está ligado a um rede que não é suportada.", + "Network-ConnectWallet": "Ligar Carteira", + "Network-DisconnectWallet": "Desligar carteira", + "Network-SwitchToNetwork": "Mudar para a rede {{network}}", + "Network-GoToApp": "Ir para a app da rede {{network}}", + "Network-SwitchNote": "Necessita de alterar a rede que está escolhida na sua carteira.", + "Network-NoWalletAddress": "Permitir o acesso a uma conta da sua carteira.", + "Vault-Wallet": "Carteira", + "Vault-Balance": "Saldo", + "Vault-APR": "APR", + "Vault-APY": "APY", + "Vault-APYDaily": "Diário", + "Vault-TVL": "TVL", + "Vault-AutocompoundingNote": "Os cofres capitalizam com periodicidade optimizada", + "Vault-Approving": "Aprovando...", + "Vault-ApproveButton": "Aprovar", + "Vault-ApprovalSuccess": "Aprovado com sucesso", + "Vault-ApprovalError": "Erro ao aprovar: {{error}}", + "Vault-BifiBuyback": "BIFI Buyback {{amount}}/dia", + "Vault-DepositButton": "Depositar", + "Vault-DepositButtonAll": "Depositar tudo", + "Vault-DepositTokensNote": "Receberá {{mooToken}} como recibo do seu activo {{assetToken}}. Este recibo é necessário para resgatar o seu {{assetToken}}, pelo que nunca deverá negociar ou transferir os seus {{mooToken}} para estranhos!", + "Vault-DepositAndWithdrawFee": "Taxa de depósito: {{depositFee}}, Taxa de resgate: {{withdrawalFee}}", + "Vault-Deposited": "Depositado", + "Vault-DepositSuccess": "Depositado com sucesso", + "Vault-DepositError": "Erro ao depositar: {{error}}", + "Vault-DepositScenario": "O depósito resultará em:", + "Vault-DepositScenarioSwap": "Por forma a equilibrar o par de liquidez, permute {{swapIn}} por {{swapOut}} (±{{slippageTolerance}} de derrapagem e de taxa de depósito, caso exista)", + "Vault-DepositScenarioAddLiquidity": "Adicionar liquidez para receber {{poolToken}}", + "Vault-DepositScenarioDepositToVault": "O depósito de {{poolToken}} foi recebido no cofre Beefy", + "Vault-DepositScenarioReturnDust": "Devolver quantidades não utilizadas de {{tokenA}} e {{tokenB}} para a sua carteira", + "Vault-Withdrawing": "A resgatar...", + "Vault-WithdrawButton": "Resgatar", + "Vault-WithdrawButtonAll": "Resgatar tudo", + "Vault-WithdrawFeeGlobal": "Existe uma taxa de resgate de 0.1% em todos os cofres (salvo nota em contrário do cofre)", + "Vault-WithdrawSuccess": "Resgatado com sucesso", + "Vault-WithdrawError": "Erro ao resgatar: {{error}}", + "Vault-WithdrawScenario": "O resgate resultará em:", + "Vault-WithdrawScenarioRedeem": "Resgatar {{mooToken}} por {{poolToken}}", + "Vault-WithdrawScenarioRemoveLiquidity": "Remover liquidez de {{poolToken}} para receber {{tokenA}} e {{tokenB}}", + "Vault-WithdrawScenarioSwap": "Troca estimada de {{swapIn}} por {{swapOut}} (±{{slippageTolerance}} de derrapagem e taxa de resgate, caso exista)", + "Vault-WithdrawScenarioTotal": "Transferência estimada de {{totalOut}} para a sua carteira", + "Vault-Harvesting": "Colhendo...", + "Vault-HarvestButton": "Colheita", + "Vault-HarvestConfirm": "Confirmar Colheita?", + "Vault-HarvestDescription": "Todos os cofres capitalizam automaticamente os juros. Favor notar que o modo manual deverá ser apenas utilizado por utilizadores mais avançados. Tendo em conta esta explicação, pretende mesmo assim continuar com este procedimento manual?", + "Vault-HarvestSuccess": "Colhido com sucesso", + "Vault-HarvestError": "Erro ao colher: {{error}}", + "Vault-LastHarvest": "Última Colheita", + "Vault-MainTitle": "Cofres", + "Vault-SecondTitle": "Deposite e Ganhe Dinheiro", + "Vault-DepositsPausedTitle": "Depósitos suspensos", + "Vault-DepositsPausedMsg": "Depósitos estão suspensos para este cofre.", + "Vault-DepositsRetiredTitle": "OBSOLETO", + "Vault-DepositsRetiredMsg": "Cofre obsoleto, resgate os seus fundos com a maior brevidade", + "Vault-Staked": "Investido", + "Vault-Description": "Usa: {{vault}}", + "Vault-Network": "Rede", + "Vault-Experimental": "Experimental", + "Vault-Loading": "A carregar o cofre...", + "Vault-NotFound": "O cofre {{vaultId}} não foi encontrado", + "Vault-Breakdown-VaultApr": "APR do Cofre", + "Vault-Breakdown-TradingApr": "APR de Trading", + "Vault-Breakdown-BoostApr": "APR devido ao Boost", + "Vault-Breakdown-VaultDaily": "Diário do Cofre", + "Vault-Breakdown-TradingDaily": "Diário de Trading", + "Vault-Breakdown-BoostDaily": "Diário de Boost", + "Vault-Banner-CakeV2-StakeLabel": "Fazer Stake do seu {{symbol}}", + "Vault-Banner-CakeV2-StakeValue": "Cofre de apenas {{symbol}}", + "Vault-Banner-CakeV2-SaferLabel": "Mais seguro", + "Vault-Banner-CakeV2-SaferValue": "{{count}} intermediários", + "Vault-Banner-CakeV2-SmarterLabel": "Mais inteligente", + "Vault-Banner-CakeV2-SmarterValue": "{{count}}+ de reinvestimento anual", + "Vault-Banner-CakeV2-FairerLabel": "Mais justo", + "Vault-Banner-CakeV2-FairerValue": "{{percent}}% menos taxas", + "Vaults-Back": "Voltar para cofres", + "Hide-Zero-Balances": "Ocultar Sem Saldo", + "Hide-Zero-Vault-Balances": "Cofres com Depósitos", + "Retired-Vaults": "Cofres Obsoletos", + "Filters-Platform": "Plataforma", + "Filters-Vault-Type": "Tipo de cofre", + "Filters-Asset": "Activo", + "Filters-Sort": "Ordenar por", + "Filters-All": "Todos", + "Filters-Default": "Padrão", + "Filters-Reset": "Limpar Filtros", + "Filters-Type-SingleAssets": "Activos Únicos", + "Filters-Type-StableLPs": "LP Estável", + "Filters-Type-Stables": "Estáveis", + "Confirm": "Confirmar", + "Cancel": "Cancelar", + "No-Results": "Sem Resultados", + "docs": "docs", + "news": "notícias", + "source": "código-fonte", + "gov": "gov", + "vote": "votar", + "stats": "stats", + "app": "app", + "socials": "social", + "buy": "comprar", + "products": "produtos", + "Powered-By": "DISTRIBUÍDO POR", + "IFO-Guide": "Guia de IFO", + "Available-To-Stake": "Disponível para Investir", + "Stake": "Investir", + "Available-To-Unstake": "Disponível para Resgatar", + "Unstake": "Resgatar", + "Max": "Máx", + "Coming-Soon": "Disponível Brevemente", + "Finished": "Concluído", + "End": "Fim", + "Stakes-Meta-Title": "Boosts - {{networkName}}", + "Stake-Meta-Title": "Ganhe {{earnedToken}} - Boosted por {{boostedBy}} - {{networkName}}", + "Stake-Button-Stake": "Investir", + "Stake-Button-Claim": "Reclamar", + "Stake-Button-Approval": "Aprovar", + "Stake-Button-Stake-Tokens": "Investir Tokens", + "Stake-Button-Unstake-Tokens": "Resgatar Tokens", + "Stake-Button-Claim-Rewards": "Reclamar Recompensas", + "Stake-Button-Exit": "Reclamar e Resgatar", + "Stake-Balancer-Current-Staked": "Investido Actualmente", + "Stake-Balancer-Rewards-Available": "Prêmios Disponíveis", + "Stake-Balancer-Half-Time": "Meio-Tempo", + "Stake-BoostedBy": "Boosted por {{name}}", + "Stake-Button-Back": "Voltar", + "Stake-Pool-Retired": "A pool chegou ao fim, resgate os seus fundos.", + "Stake-Total-Value-Locked": "Valor Total de {{mooToken}} Investido", + "Stake-Your-Pool": "Seu Pool", + "Stake-Current-Daily": "Taxa de Juros Diária", + "Add-Liquidity": "Adicionar Liquidez", + "Remove-Liquidity": "Remover Liquidez", + "Buy-Token": "Comprar Token", + "Wrap-BNB": "Wrap BNB", + "Boost": "Boost", + "Experimental": "Experimental", + "Select-Network": "Escolha a Rede" +} diff --git a/src/locales/ru/translation.json b/src/locales/ru/translation.json new file mode 100644 index 000000000..bee990632 --- /dev/null +++ b/src/locales/ru/translation.json @@ -0,0 +1,150 @@ +{ + "App-Meta-Description": "Кросс-чейн протокол по оптимизации доходности", + "Disclaimer": "Использование смарт-контрактов, токенов и криптовалюты всегда сопряжено с риском. DYOR перед тем, как инвестировать.", + "Network-UnknownError": "Произошла неизвестная ошибка.", + "Network-ConnectionRequired": "Необходимо подключить кошелек к сети {{network}}.", + "Network-Supports": "Это приложение поддерживает сеть {{network}}.", + "Network-ConnectedTo": "Сейчас вы подключены к сети {{network}}.", + "Network-ConnectedUnsupported": "Вы подключены к сети, которая не поддерживается.", + "Network-ConnectWallet": "Подключить кошелек", + "Network-DisconnectWallet": "Отключить кошелек", + "Network-SwitchToNetwork": "Переключится на сеть {{network}}", + "Network-GoToApp": "Переключить приложение на сеть {{network}}", + "Network-SwitchNote": "Вам может потребоваться переключить сеть самостоятельно, через кошелек.", + "Network-NoWalletAddress": "Предоставьте доступ к одному из аккаунтов вашего кошелька.", + "Vault-Wallet": "Кошелек", + "Vault-Balance": "Баланс", + "Vault-APR": "APR", + "Vault-APY": "APY", + "Vault-APYDaily": "В день", + "Vault-TVL": "TVL", + "Vault-AutocompoundingNote": "Реинвестирование оптимально автоматизировано", + "Vault-Approving": "Подтверждение...", + "Vault-ApproveButton": "Подтвердить", + "Vault-ApprovalSuccess": "Успешно подтверждено", + "Vault-ApprovalError": "Ошибка при подтверждении: {{error}}", + "Vault-BifiBuyback": "Выкуп BIFI {{amount}}/в день", + "Vault-DepositButton": "Ввести", + "Vault-DepositButtonAll": "Ввести все", + "Vault-DepositTokensNote": "Вы получите токен {{mooToken}}, в качестве подтверждения внесения вами активов {{assetToken}}. Этот токен необходим для того, чтобы вывести ваши активы {{assetToken}}. Не продавайте и не переводите {{mooToken}} никому!", + "Vault-DepositAndWithdrawFee": "Комиссия за ввод: {{depositFee}}, Комиссия за вывод: {{withdrawalFee}}", + "Vault-Deposited": "Внесено", + "Vault-DepositSuccess": "Средства успешно введены", + "Vault-DepositError": "Ошибка при вводе: {{error}}", + "Vault-DepositScenario": "В результате ввода:", + "Vault-DepositScenarioSwap": "Чтобы сбалансировать пару ликвидности, {{swapIn}} будут обменяны на {{swapOut}} (± уплачена комиссия за ввод и проскальзывание {{slippageTolerance}}, если таковые имеются)", + "Vault-DepositScenarioAddLiquidity": "Ликвидность будет использована для получения {{poolToken}}", + "Vault-DepositScenarioDepositToVault": "Полученные {{poolToken}} будут введены в хранилище Beefy", + "Vault-DepositScenarioReturnDust": "Неиспользованные остатки {{tokenA}} и {{tokenB}} будут возвращены на ваш кошелек", + "Vault-Withdrawing": "Производится вывод...", + "Vault-WithdrawButton": "Вывести", + "Vault-WithdrawButtonAll": "Вывести все", + "Vault-WithdrawFeeGlobal": "Комиссия за вывод - 0,1% для всех хранилищ (кроме тех, в описании которых указано иное)", + "Vault-WithdrawSuccess": "Вывод прошел успешно", + "Vault-WithdrawError": "Ошибка при выводе: {{error}}", + "Vault-WithdrawScenario": "В результате вывода:", + "Vault-WithdrawScenarioRedeem": "Токены {{mooToken}} будет обменяны на {{poolToken}}", + "Vault-WithdrawScenarioRemoveLiquidity": "Ликвидность из {{poolToken}} будет выведена, чтобы вы получили {{tokenA}} и {{tokenB}}", + "Vault-WithdrawScenarioSwap": "Будет получено примерно {{swapIn}}, которые будут обменяны на {{swapOut}} (± {{slippageTolerance}} проскальзывание и комиссия за вывод, если таковые имеются)", + "Vault-WithdrawScenarioTotal": "Примерно {{totalOut}} будет переведено на ваш кошелек", + "Vault-Harvesting": "Сбор прибыли...", + "Vault-HarvestButton": "Собрать прибыль", + "Vault-HarvestConfirm": "Подтвердить сбор прибыли?", + "Vault-HarvestDescription": "Собирать прибыль вручную — НЕ ТРЕБУЕТСЯ. Все хранилища собирают и реинвестируют прибыль автоматически. Это расширенная функция, предназначенная для опытных пользователей. Вы уверены, что хотите собрать прибыль?", + "Vault-HarvestSuccess": "Прибыль собрана успешно", + "Vault-HarvestError": "Ошибка при сборе прибыли: {{error}}", + "Vault-LastHarvest": "Крайний сбор прибыли", + "Vault-MainTitle": "Хранилища", + "Vault-SecondTitle": "Вводите средства и зарабатывайте", + "Vault-DepositsPausedTitle": "Вводы приостановлены", + "Vault-DepositsPausedMsg": "Вводы в это хранилище приостановлены.", + "Vault-DepositsRetiredTitle": "УСТАРЕЛО", + "Vault-DepositsRetiredRewardsTitle": "УСТАРЕЛО - Соответствующая платформа прекратила выплату наград.", + "Vault-DepositsRetiredExploitTitle": "УСТАРЕЛО - В контракте токена была найдена уязвимость, средства в сохранности в хранилище.", + "Vault-DepositsRetiredTVLTitle": "УСТАРЕЛО - слишком низкая общая стоимость средств в контракте (TVL).", + "Vault-DepositsRetiredMsg": "Хранилище устарело. Выведите свои средства как можно скорее", + "Vault-Staked": "В стейкинге", + "Vault-Description": "Использует: {{vault}}", + "Vault-Network": "Выберите сеть", + "Vault-Experimental": "Экспериментальное", + "Vault-Loading": "Хранилище загружается...", + "Vault-NotFound": "Хранилище {{vaultId}} не найдено", + "Vault-Breakdown-VaultApr": "APR Хранилища", + "Vault-Breakdown-TradingApr": "APR от Торгов", + "Vault-Breakdown-BoostApr": "Буст APR", + "Vault-Breakdown-VaultDaily": "Прибыль хранилища в день", + "Vault-Breakdown-TradingDaily": "Прибыль от торгов в день", + "Vault-Breakdown-BoostDaily": "Буст в день", + "Vault-Boosts-Staked-Single": "В стейкинге {{name}} буст", + "Vault-Boosts-Staked-Count": "В стейкинге {{count}} бусты", + "Vault-Banner-CakeV2-StakeLabel": "Стейкайте свои {{symbol}}", + "Vault-Banner-CakeV2-StakeValue": "Новое хранилище для ваших {{symbol}}", + "Vault-Banner-CakeV2-SaferLabel": "Более безопасное", + "Vault-Banner-CakeV2-SaferValue": "{{count}} посредник", + "Vault-Banner-CakeV2-SmarterLabel": "Эффективнее", + "Vault-Banner-CakeV2-SmarterValue": "более {{count}} операций реинвестирования в год", + "Vault-Banner-CakeV2-FairerLabel": "Экономнее", + "Vault-Banner-CakeV2-FairerValue": "на {{percent}}% меньше трат на комиссии", + "Vaults-Back": "Назад к хранилищам", + "Hide-Zero-Balances": "Скрыть нулевые балансы", + "Hide-Zero-Vault-Balances": "Хранилища со средствами", + "Retired-Vaults": "Устаревшие хранилища", + "Filters-Platform": "Платформа", + "Filters-Vault-Type": "Тип хранилища", + "Filters-Asset": "Токен", + "Filters-Sort": "Сортировать по", + "Filters-All": "Все", + "Filters-Default": "По умолчанию", + "Filters-Reset": "Очистить фильтры", + "Filters-Type-SingleAssets": "Один токен", + "Filters-Type-StableLPs": "LP в стейблкоинах", + "Filters-Type-Stables": "LP со стейблкоином", + "Confirm": "Подтвердить", + "Cancel": "Отклонить", + "No-Results": "Ничего не найдено", + "docs": "docs", + "news": "новости", + "source": "исходный код", + "gov": "gov", + "vote": "проголосовать", + "stats": "статистика", + "app": "app", + "socials": "соцсети", + "buy": "купить", + "products": "продукты", + "Powered-By": "POWERED BY", + "IFO-Guide": "Руководство по IFO", + "Available-To-Stake": "Доступно для стейкинга", + "Stake": "Стейкать", + "Available-To-Unstake": "Можно разблокировать", + "Unstake": "Разблокировать", + "Max": "Максимум", + "Coming-Soon": "Уже совсем скоро", + "Finished": "Завершен", + "End": "Закончится через", + "Stakes-Meta-Title": "Бусты - {{networkName}}", + "Stake-Meta-Title": "Зарабатывайте {{earnedToken}} - благодаря Бусту от {{boostedBy}} - {{networkName}}", + "Stake-Button-Stake": "Стейкать", + "Stake-Button-Claim": "Получить", + "Stake-Button-Approval": "Подтвердить", + "Stake-Button-Stake-Tokens": "Стейкать токены", + "Stake-Button-Unstake-Tokens": "Вывести из стейкинга", + "Stake-Button-Claim-Rewards": "Получить награды", + "Stake-Button-Exit": "Получить и вывести", + "Stake-Balancer-Current-Staked": "В стейкинге сейчас", + "Stake-Balancer-Rewards-Available": "Доступные награды", + "Stake-Balancer-Half-Time": "Половина времени", + "Stake-BoostedBy": "Буст от {{name}}", + "Stake-Button-Back": "Назад", + "Stake-Pool-Retired": "Пул завершен, выведите ваши средства.", + "Stake-Total-Value-Locked": "Сумма {{mooToken}} в стейкинге", + "Stake-Your-Pool": "Ваша доля", + "Stake-Current-Daily": "Текущая прибыль в день", + "Add-Liquidity": "Добавить ликвидность", + "Remove-Liquidity": "Убрать ликвидность", + "Buy-Token": "Купить токен", + "Wrap-BNB": "Wrap BNB", + "Boost": "Буст", + "Experimental": "Экспериментальный", + "Select-Network": "Выберите сеть" +} diff --git a/src/locales/se/translation.json b/src/locales/se/translation.json new file mode 100644 index 000000000..54f5edfc6 --- /dev/null +++ b/src/locales/se/translation.json @@ -0,0 +1,25 @@ +{ + "Vault-Wallet": "Plånbok", + "Vault-Balance": "Balans", + "Vault-APY": "APY", + "Vault-APYDaily": "Daily", + "Vault-TVL": "TVL", + "Vault-Approving": "Tillåt...", + "Vault-ApproveButton": "Tillåt", + "Vault-DepositButton": "Insättning", + "Vault-DepositButtonAll": "Sätt in allt", + "Vault-Deposited": "Insatt", + "Vault-Withdrawing": "Ta ut...", + "Vault-WithdrawButton": "Ta ut", + "Vault-WithdrawButtonAll": "Ta ut Allt", + "Vault-WithdrawFeeGlobal": "Det finns en uttagsavgift på 0,1% på alla valv", + "Vault-MainTitle": "Valv", + "Vault-SecondTitle": "Sätt in & tjäna pengar", + "Hide-Zero-Balances": "Hide Zero Balances", + "Retired-Vaults": "Retired Vaults", + "Filters-Platform": "Platform", + "Filters-Asset": "Asset", + "Filters-Sort": "Sort by", + "Filters-All": "All", + "Filters-Default": "Default" +} diff --git a/src/locales/th/translation.json b/src/locales/th/translation.json deleted file mode 100644 index a430e9e06..000000000 --- a/src/locales/th/translation.json +++ /dev/null @@ -1,136 +0,0 @@ -{ - "Nav-Home": "Home", - "Nav-Vault": "Vault", - "Nav-Stake": "Stake", - "Nav-Farm": "Farm", - "Foot-Token": "Token Contract", - "Foot-Forum": "Forum", - "Foot-Audit": "Audit", - "Foot-Stats": "Stats", - "Foot-Voting": "Voting", - "Foot-Documentation": "Documentation", - "Foot-Uniswap": "Uniswap ETH-YFII", - "App-SnackBarText": "ข้อผิดพลาดของเครือข่าย", - "Home-Subtitle": "วิธีที่ดีขึ้นในการเพิ่มความมั่งคั่ง", - "Home-Warning": "โครงการนี้เป็นรุ่นเบต้า รับความเสี่ยงด้วยตนเอง。", - "Home-ConnectWallet": " เชื่อมต่อกระเป๋าเงินของคุณเพื่อดำเนินการต่อ", - "Home-ConnectButton": "การเชื่อมต่อ", - "Home-BrowserWallet": "เชื่อมต่อกระเป๋าเงิน", - "Home-SnackBarText": "The difference between token desposited and itoken", - "Home-SnackBarUrl": "https://docs.yfii.finance/#/itokens", - "Vault-Title": "เพิ่มมูคค่าโดยการฝากเงิน", - "Vault-Wallet": "กระเป๋าเงิน", - "Vault-Balance": "จำนวนเงิน ", - "Vault-Input-1": "กรุณากรอกที่คุณต้องการฝาก ", - "Vault-Input-2": " จำนวน", - "Vault-Input-3": "Input the number of ", - "Vault-Input-4": " you want to withdraw", - "Vault-ApproveING": "กำลังอนุญาต…", - "Vault-ApproveButton": "การอนุญาต", - "Vault-DepositING": "กำลังฝาก…", - "Vault-DepositButton": "ฝาก", - "Vault-DepositButtonAll": "ได้รับทั้งหมด", - "Vault-ListDeposited": "ฝากแล้ว", - "Vault-ListAPY": "ผลตอบแทน", - "Vault-ListEarned": "ได้รับประโยชน์", - "Vault-ListPending": "กำลังรอการยืนยัน", - "Vault-Deposited": "ฝากแล้ว", - "Vault-WithdrawING": "ถอนออก…", - "Vault-WithdrawButton": "เบิกถอน", - "Vault-WithdrawButtonAll": "เอาทุกอย่างออกไป", - "Vault-Earned": "ได้รับประโยชน์", - "Vault-ClaimING": "กำลังรับ…", - "Vault-ClaimButton": "รับ", - "Vault-Pending": "กำลังรอการยืนยัน", - "Vault-PendingDescription": "ค่าประมาณ", - "Vault-PendingContent": "จะยืนยันขั้นสุดท้ายได้หลังการเก็บเกี่ยว。", - "Vault-Idle": "ไม่ได้ใช้งาน", - "Vault-FarmING": ",ทำไร่ทำนา…", - "Vault-FarmButton": "การทำเกษตร", - "Vault-FarmButtonDescription": "ส่งเงินในสัญญาไปขุดด้วยตนเอง", - "Vault-Yield": "การเก็บเกี่ยว", - "Vault-HarvestING": "กำลังเก็บเกี่ยว…", - "Vault-HarvestButton": " ผลสำเร็จ", - "Vault-HarvestButtonDescription": "ช่วยรับรายได้,คนที่ทริกเกอร์จะได้รับหนึ่งเปอร์เซ็นต์ของจำนวนเงิน。", - "Vault-Modal-Title": ",ฟังก์ชั่นใหม่ของบ่อแกทลิง:", - "Vault-Modal-Content": "เพื่อป้องกันไม่ให้บัญชีขนาดใหญ่ลดทอนรายได้ของผู้อื่นโดยการฝากและถอนเงินอย่างรวดเร็ว,รายได้ทั้งหมดจะถูกปล่อยออกมาเท่า ๆ กันภายใน 24 ชั่วโมงหลังจากการฝากเงินแต่ละครั้ง,ดังนั้นรายได้ทั้งหมดจะได้รับหลังจากหนึ่งวันเท่านั้น。 หมายเหตุ: ทุกครั้งที่คุณฝากเงินการนับถอยหลัง 24 ชั่วโมงจะเริ่มต้นใหม่。", - "Vault-Modal-Amount": "รายได้ที่แท้จริงของคุณคือ ", - "Vault-Modal-Ratio": "อัตราส่วนลูกหนี้:", - "Vault-Modal-TIme": "นับถอยหลังที่รับเต็มจำนวน:", - "Vault-Modal-CloseButton": "ปิดตัวลง", - "Vault-Modal-ConfirmButton": "ยืนยัน", - "Vault-Main-Title": "Vaults", - "Vault-Second-Title": "Deposit & Earn money", - "Stake-Main-Title": "YFII / Stake", - "Stake-Pools-Learn-More": "https://docs.yfii.finance/#/yield-farming", - "Stake-Second-Title": "APY will be revealed once rewards have begun, or a little bit later", - "Stake-List-Header-Main": "Knowledge base: Everything you need to know about YFII", - "Stake-List-Header-Sub": "Which tokens would you like to stake?", - "Stake-Learn-More": "Learn More", - "Swap-Header": "Zap", - "Swap-Title": "Exchange your assets", - "Swap-Send": "Send", - "Swap-Balance": "Balance", - "Swap-Max": "Max", - "Stake-Pool-Unstake-Hint": "The mortgage will take three days to redeem", - "Stake-Pool-Unstake-Hint-Date":"วันที่ไถ่ถอน:", - "Swap-Receive": "Receive", - "Stake-Table-Pool": "POOL", - "Stake-Table-Staked": "STAKED", - "Stake-Table-Total": "Total Value Locked", - "Stake-Table-Apy": "APY", - "Stake-Button-Stake": "STAKE", - "Stake-Button-Approval": "Approval", - "Stake-Button-Stake-Tokens": "Stake Tokens", - "Stake-Button-Claim-Rewards": "Claim Rewards", - "Stake-Button-Unstake-Tokens": "Unstake Tokens", - "Stake-Button-Exit": "Exit: Claim and Unstake", - "Stake-Balancer-Your-Balance": "Your Balance", - "Stake-Balancer-Current-Staked": "Current Staked", - "Stake-Balancer-Rewards-Available": "Rewards Available", - "Stake-Balancer-Half-Time": "Half-Time", - "Link": { - "Home": "Home", - "Vault": "Vault", - "Stake": "Stake", - "Contract": "Token Contract", - "Forum": "Forum", - "Stats": "Stats", - "Voting": "Voting", - "Documentation": "Documentation", - "Uniswap": "Uniswap ETH-YFII", - "Audit": "Audit" - }, - "Farm-Main-Title": "Farm", - "Farm-Second-Title": "Hold YFII and Earn MEFI", - "Farm-Stake": "Deposit", - "Farm-Earn": "Earn", - "Farm-Get": "Get", - "Farm-Mining": "Mine", - "Farm-CAN-GET": "To get", - "Farm-Time": "Mining Time", - "Farm-Know": "Click to know", - "Farm-Earned": "Earned", - "Farm-Reward": "Harvest", - "Farm-Hold": "Hold", - "Farm-Pledged": "Staked", - "Farm-Pledge": "Stake", - "Farm-Proof": "Proof", - "Farm-Approval": "Authorize to stake", - "Farm-Exit": "Exit: Claim rewards and unstake", - "Farm-UnApproval": "Unstake", - "Farm-Balance": "Available Balance", - "Farm-All-Stake": "All Stake", - "Farm-Stake-Amount": "Input deposit amount", - "Farm-Dialog-Confirm": "Confirm", - "Farm-Dialog-Cancel": "Cancel", - "Farm-All-UnApproval": "All Unstaked", - "Farm-UnApproval-Amount": "Input unstaked amount", - "Farm-Mining-Over": "Mining Ended", - "Farm-Will-Mining-Over": "Mining available", - "Farm-week": "week", - "Public-Day": " Day ", - "Public-Hour": " Hour ", - "Public-Minute": " Minute ", - "Public-Seconds": " Seconds " -} diff --git a/src/locales/tr/translation.json b/src/locales/tr/translation.json new file mode 100644 index 000000000..17f342926 --- /dev/null +++ b/src/locales/tr/translation.json @@ -0,0 +1,117 @@ +{ + "App-Meta-Description": "Çoklu Zincir Kazanç Optimize Edici", + "Disclaimer": "Akıllı Kontratları kullanmak, Tokenler ve Kripto her zaman risk taşır. Yatırımdan önce kendi araştırmanızı yapın.", + "Vault-Wallet": "Cüzdan", + "Network-ConnectWallet": "Cüzdanı Bağla", + "Vault-Balance": "Bakiye", + "Vault-APR": "YYV", + "Vault-APY": "YYO", + "Vault-APYDaily": "Günlük", + "Vault-TVL": "TKB", + "Vault-AutocompoundingNote": "Tüm kasalar optimal oranda bileştirilir", + "Vault-Approving": "Onaylanıyor...", + "Vault-ApproveButton": "Onayla", + "Vault-ApprovalSuccess": "Onaylama başarılı", + "Vault-ApprovalError": "Onaylama hatası: {{error}}", + "Vault-DepositButton": "Yatır", + "Vault-DepositButtonAll": "Hepsini Yatır", + "Vault-DepositTokensNote": "Yatıracağınız {{assetToken}} varlıkları için makbuz olarak {{mooToken}} tokenleri teslim alacaksınız. Bu tokenler {{assetToken}} varlıklarınızı geri almanız için gereklidir, {{mooToken}} tokenlerinizi takaslamayın veya tanımadıklarınıza göndermeyin. ", + "Vault-DepositFee": "{{depositFee}} yatırma harcı vardır, çekme harcı yoktur", + "Vault-Deposited": "Yatırılan", + "Vault-DepositSuccess": "Yatırma başarılı", + "Vault-DepositError": "Yatırma hatası: {{error}}", + "Vault-DepositScenario": "Yatırma gerçekleştirilirken:", + "Vault-DepositScenarioSwap": "Likit eşini dengelemek için {{swapOut}} karşılığında {{swapIn}} takas et (± çekme harcı ve {{slippageTolerance}} kayma, eğer varsa)", + "Vault-DepositScenarioAddLiquidity": "{{poolToken}} almak için likit ekle", + "Vault-DepositScenarioDepositToVault": "Alınan {{poolToken}} tokeni Beefy kasasına yatır", + "Vault-DepositScenarioReturnDust": "Kullanılmamış {{tokenA}} ve {{tokenB}} miktarını cüzdanınıza geri iade et", + "Vault-Withdrawing": "Çekiliyor...", + "Vault-WithdrawButton": "Çek", + "Vault-WithdrawButtonAll": "Hepsini Çek", + "Vault-WithdrawFeeGlobal": "Tüm kasalarda %0.05-%0.1 çekme veya yatırma harcı vardır", + "Vault-WithdrawSuccess": "Çekme başarılı", + "Vault-WithdrawError": "Çekme hatası: {{error}}", + "Vault-WithdrawScenario": "Çekme gerçekleştirilirken:", + "Vault-WithdrawScenarioRedeem": "{{mooToken}} karşılığında {{poolToken}} tazmin et", + "Vault-WithdrawScenarioRemoveLiquidity": "{{tokenA}} ve {{tokenB}} almak için {{poolToken}} havuzundan likit kaldır", + "Vault-WithdrawScenarioSwap": "{{swapOut}} için tahmini {{swapIn}} takasla (± çekme harcı ve {{slippageTolerance}} kayma, eğer varsa)", + "Vault-WithdrawScenarioTotal": "Cüzdanınıza tahmini {{totalOut}} aktar", + "Vault-Harvesting": "Hasat ediliyor...", + "Vault-HarvestButton": "Hasat et", + "Vault-HarvestConfirm": "Hasadı onayla?", + "Vault-HarvestDescription": "Manuel hasat gerektirmez. Tüm kasalar oto bileşiktir. Bu ileri özellik tecrübeli kullanıcılar için hedeflenmiştir. Hasat etmek istediğinize emin misiniz?", + "Vault-HarvestSuccess": "Hasat Başarılı", + "Vault-HarvestError": "Hasat hatası: {{error}}", + "Vault-LastHarvest": "Son Hasat", + "Vault-MainTitle": "Kasalar", + "Vault-SecondTitle": "Yatır ve Para Kazan", + "Vault-DepositsPausedTitle": "Yatırmalar durduruldu", + "Vault-DepositsPausedMsg": "Bu kasa için yatırmalar durduruldu", + "Vault-DepositsRetiredTitle": "EMEKLİ", + "Vault-DepositsRetiredMsg": "Kasa emekli edildi, ivedilikle paranızı çekin", + "Vault-Staked": "Yatırılmış", + "Vault-Description": "{{vault}} kullanır", + "Vault-Network": "Ağ Seç", + "Vault-Experimental": "Deneysel", + "Vault-Loading": "Kasa Yükleniyor", + "Vault-NotFound": "{{vaultId}} kasası bulunamadı", + "Vaults-Back": "Kasalara dön", + "Hide-Zero-Balances": "Boş Bakiyeleri Gizle", + "Hide-Zero-Vault-Balances": "Yatırılmış Kasalar", + "Retired-Vaults": "Emekli Kasalar", + "Filters-Platform": "Platform", + "Filters-Vault-Type": "Kasa tipi", + "Filters-Asset": "Varlık", + "Filters-Sort": "Sıralama", + "Filters-All": "Hepsi", + "Filters-Default": "Varsayılan", + "Filters-Reset": "Filtreleri Temizle", + "Confirm": "Onayla", + "Cancel": "İptal Et", + "No-Results": "Sonuç Yok", + "docs": "dkmnlr", + "news": "hbrlr", + "source": "kaynak", + "gov": "yntm", + "vote": "oyla", + "stats": "istatistikler", + "app": "uyg", + "socials": "sosyaller", + "buy": "satın al", + "products": "ürünler", + "Powered-By": "POWERED BY", + "IFO-Guide": "IFO Rehberi", + "Available-To-Stake": "Yatırmaya Uygun", + "Stake": "Yatır", + "Available-To-Unstake": "Çekmeye Uygun", + "Unstake": "Çek", + "Max": "Maksimum", + "Coming-Soon": "Çok Yakında", + "Finished": "Bitti", + "End": "Son", + "Stakes-Meta-Title": "Boostlar - {{networkName}}", + "Stake-Meta-Title": "{{earnedToken}} kazan - {{boostedBy}} tarafından artırıldı - {{networkName}}", + "Stake-Button-Stake": "Yatır", + "Stake-Button-Claim": "Topla", + "Stake-Button-Approval": "Onayla", + "Stake-Button-Stake-Tokens": "Tokenleri Yatır", + "Stake-Button-Unstake-Tokens": "Tokenleri Çıkar", + "Stake-Button-Claim-Rewards": "Ödülleri topla", + "Stake-Button-Exit": "Topla ve Çıkar", + "Stake-Balancer-Current-Staked": "Şu anki Yatırılan", + "Stake-Balancer-Rewards-Available": "Mevcut Ödüller", + "Stake-Balancer-Half-Time": "Yarı Zamanlı", + "Stake-BoostedBy": "{{name}} tarafından boostlandı", + "Stake-Button-Back": "Geri", + "Stake-Pool-Retired": "Bu havuz bitmiştir, kaynaklarınızı çekiniz.", + "Stake-Total-Value-Locked": "Toplam yatırılmış {{mooToken}}", + "Stake-Your-Pool": "Sizin Havuzunuz", + "Stake-Current-Daily": "Şu anki Günlük Oran", + "Add-Liquidity": "Likit Ekle", + "Remove-Liquidity": "Likit Kaldır", + "Buy-Token": "Token Satın Al", + "Wrap-BNB": "BNB Sarmala", + "Boost": "Boost", + "Experimental": "Deneysel", + "Select-Network": "Ağ Seç" +} diff --git a/src/locales/uk/translation.json b/src/locales/uk/translation.json new file mode 100644 index 000000000..ce49bb220 --- /dev/null +++ b/src/locales/uk/translation.json @@ -0,0 +1,50 @@ +{ + "Disclaimer": "Проєкт знаходиться на стадії Бета. Використовуйте на свій страх і ризик і робіть власне дослідження.", + "Vault-Wallet": "Гаманець", + "Vault-Balance": "Баланс", + "Vault-APY": "APY", + "Vault-APYDaily": "Щоденно", + "Vault-TVL": "TVL", + "Vault-Approving": "Підтвердження...", + "Vault-ApproveButton": "Підтвердити", + "Vault-ApprovalSuccess": "Успішно підтверджено", + "Vault-ApprovalError": "Помилка підтвердження: {{error}}", + "Vault-DepositButton": "Внести", + "Vault-DepositButtonAll": "Внести Все", + "Vault-DepositFee": "Комісія за депозит {{depositFee}}, виведення без комісії", + "Vault-Deposited": "Внесено", + "Vault-DepositSuccess": "Внесено успішно", + "Vault-DepositError": "Помилка внесення: {{error}}", + "Vault-Withdrawing": "Зняття...", + "Vault-WithdrawButton": "Зняти", + "Vault-WithdrawButtonAll": "Зняти Все", + "Vault-WithdrawFeeGlobal": "На всі сховища стягується плата за зняття 0,1%", + "Vault-WithdrawSuccess": "Успішне зняття", + "Vault-WithdrawError": "Помилка зняття: {{error}}", + "Vault-Harvesting": "Сбір врожаю...", + "Vault-HarvestButton": "Зібрати врожай", + "Vault-HarvestConfirm": "Підтвердити врожай??", + "Vault-HarvestDescription": "Ручний збір НЕ ПОТРІБЕН. Всі сховища збираються автоматично. Це розширена функція для досвідчених користувачів. Ви точно впевнені що хочете зібрати врожай?", + "Vault-HarvestSuccess": "Збір успішний", + "Vault-HarvestError": "Помилка збору: {{error}}", + "Vault-LastHarvest": "Останній збір", + "Vault-MainTitle": "Сховище", + "Vault-SecondTitle": "Зробити Вклад і Отримати Дохід", + "Vault-DepositsPausedTitle": "Сховище призупинено", + "Vault-DepositsPausedMsg": "Внески в це сховище призупинені", + "Vault-DepositsRetiredTitle": "ЗАСТАРІВ", + "Vault-DepositsRetiredMsg": "Сховище застаріло. Виведіть свої кошти якомога швидше!", + "Hide-Zero-Balances": "Приховати нульові баланси", + "Hide-Zero-Vault-Balances": "Сховища з внесками", + "Retired-Vaults": "Застарілі сховища", + "Filters-Platform": "Платформа", + "Filters-Vault-Type": "Тип сховища", + "Filters-Asset": "Токен", + "Filters-Sort": "Сортувати за", + "Filters-All": "Всі", + "Filters-Default": "За замовченням", + "Confirm": "Підтвердити", + "Cancel": "Скасувати", + "No-Results": "Немає результатів", + "products": "Продукти" +} diff --git a/src/locales/zh/translation.json b/src/locales/zh/translation.json index 512db849f..125be2e72 100644 --- a/src/locales/zh/translation.json +++ b/src/locales/zh/translation.json @@ -1,136 +1,180 @@ { - "Nav-Home": "首页", - "Nav-Vault": "机枪池", - "Nav-Stake": "抵押", - "Nav-Farm": "挖矿", - "Foot-Token": "通证合约", - "Foot-Forum": "论坛", - "Foot-Audit": "审计", - "Foot-Stats": "统计数据", - "Foot-Voting": "投票", - "Foot-Documentation": "帮助文档", - "Foot-Uniswap": "ETH-YFII交易", - "App-SnackBarText": "网络错误", - "Home-Subtitle": "增长财富的更优方法", - "Home-Warning": "本项目为测试版,使用请自行承担风险。", - "Home-ConnectWallet": "连接您的钱包以继续", - "Home-ConnectButton": "连接", - "Home-BrowserWallet": "连接钱包", - "Home-SnackBarText": "关于机枪池存token和itoken之间关系的说明", - "Home-SnackBarUrl": "https://www.yuque.com/sawd49/faq/umt7p5", - "Vault-Title": "存入即可增值", + "App-Meta-Description": "多链收益优化器", + "Disclaimer": "操作智能合约,代币,加密货币有一定的风险. 投资前请务必做好自己的调查和研究.", + "Network-UnknownError": "出现未知错误", + "Network-ConnectionRequired": "需要连接到 {{network}} 的钱包。", + "Network-Supports": "此应用程序支持{{network}}。", + "Network-ConnectedTo": "您当前已连接到 {{network}}。", + "Network-ConnectedUnsupported": "您当前连接到不受支持的网络。", + "Network-ConnectWallet": "连接钱包", + "Network-DisconnectWallet": "断开钱包", + "Network-SwitchToNetwork": "切换到 {{network}} 网络", + "Network-GoToApp": "转到 {{network}} 应用", + "Network-SwitchNote": "您需要通过钱包手动切换网络。", + "Network-NoWalletAddress": "允许访问您钱包中的一个帐户。", "Vault-Wallet": "钱包", "Vault-Balance": "余额", - "Vault-Input-1": "请输入你想存入 ", - "Vault-Input-2": " 的数额", - "Vault-Input-3": "请输入你想取出 ", - "Vault-Input-4": " 的数额", - "Vault-ApproveING": "授权中…", - "Vault-ApproveButton": "授权", - "Vault-DepositING": "存入中…", + "Vault-APR": "年百分率", + "Vault-APY": "年收益率", + "Vault-APYDaily": "日收益率", + "Vault-TVL": "总锁仓量", + "Vault-AutocompoundingNote": "所有金库均以最佳速度进行自动复利", + "Vault-Approving": "批准中...", + "Vault-ApproveButton": "批准", + "Vault-ApprovalSuccess": "批准成功", + "Vault-ApprovalError": "批准失败: {{error}}", + "Vault-BifiBuyback": "BIFI 回购 {{amount}}/天", "Vault-DepositButton": "存入", - "Vault-DepositButtonAll": "全部存入", - "Vault-ListDeposited": "已存入", - "Vault-ListAPY": "回报率", - "Vault-ListEarned": "已获益", - "Vault-ListPending": "待确认", + "Vault-DepositButtonAll": "存入全部", + "Vault-DepositTokensNote": "您将收到{{mooToken}}代币作为存入{{assetToken}}的收据. 该收据将用于日后提取您的{{assetToken}}. 请勿把{{mooToken}} 提转或交易给任何陌生人!", + "Vault-DepositAndWithdrawFee": "存款费: {{depositFee}}, 提款费: {{withdrawalFee}}", "Vault-Deposited": "已存入", - "Vault-WithdrawING": "提取中…", - "Vault-WithdrawButton": "提取", - "Vault-WithdrawButtonAll": "全部提取", - "Vault-Earned": "已获益", - "Vault-ClaimING": "领取中…", - "Vault-ClaimButton": "领取", - "Vault-Pending": "待确认", - "Vault-PendingDescription": "预估值", - "Vault-PendingContent": "在收获后才会最终确认。", - "Vault-Idle": "闲置", - "Vault-FarmING": "农耕中…", - "Vault-FarmButton": "农耕", - "Vault-FarmButtonDescription": "手动把合约内的钱送进去挖矿,触发者无收益。给所有用户做贡献。", - "Vault-Yield": "收成", - "Vault-HarvestING": "收获中…", - "Vault-HarvestButton": "收获", - "Vault-HarvestButtonDescription": "帮助领取收益,触发者可获得1%的金额。", - "Vault-Modal-Title": "机枪池新功能:", - "Vault-Modal-Content": "为防止大户通过快速存入并提取资金的方式来稀释其他人的收入,所有收益将在每次存入资金后的24小时内被均匀释放,因而只有在一天后才能领取到全部收益。注意:每次存入资金都会重新开始计算24小时倒计时。", - "Vault-Modal-Amount": "您的实际收益是 ", - "Vault-Modal-Ratio": "可领取比例:", - "Vault-Modal-TIme": "领取全额倒计时:", - "Vault-Modal-CloseButton": "关闭", - "Vault-Modal-ConfirmButton": "确定", - "Vault-Main-Title": "Vaults", - "Vault-Second-Title": "存入即可增值", - "Stake-Main-Title": "YFII / 抵押", - "Stake-Pools-Learn-More": "https://www.yuque.com/sawd49", - "Stake-Second-Title": "回报率将在收益开始计算后更新,有时稍有延迟", - "Stake-List-Header-Main": "关于 YFII 你所需知道的一切都在这里", - "Stake-List-Header-Sub": "您想抵押哪种代币?", - "Stake-Learn-More": "了解更多", - "Swap-Header": "闪兑", - "Swap-Title": "兑换资产", - "Swap-Send": "发送", - "Swap-Balance": "余额", - "Swap-Max": "最大值", - "Stake-Pool-Unstake-Hint": "抵押3天才能赎回", - "Stake-Pool-Unstake-Hint-Date":"赎回日期:", - "Swap-Receive": "接收", - "Stake-Table-Pool": "抵押池", - "Stake-Table-Staked": "已抵押", - "Stake-Table-Total": "锁仓金额", - "Stake-Table-Apy": "回报率", - "Stake-Button-Stake": "抵押", - "Stake-Button-Approval": "授权", - "Stake-Button-Stake-Tokens": "抵押代币", + "Vault-DepositSuccess": "存入成功", + "Vault-DepositError": "存入失败: {{error}}", + "Vault-DepositScenario": "存款将会导致:", + "Vault-DepositScenarioSwap": "为了平衡一对流动性对,用{{swapIn}}换取{{swapOut}}(可能存在±{{slippageTolerance}}滑点和存款费用)", + "Vault-DepositScenarioAddLiquidity": "添加流动性以收到{{poolToken}}", + "Vault-DepositScenarioDepositToVault": "将收到的{{poolToken}}存入Beefy金库", + "Vault-DepositScenarioReturnDust": "将未使用过的微量的{{tokenA}}和{{tokenB}}返还到您的钱包", + "Vault-Withdrawing": "提出中...", + "Vault-WithdrawButton": "提出", + "Vault-WithdrawButtonAll": "提出全部", + "Vault-WithdrawFeeGlobal": "所有金库的提款费均为0.1%,除非金库卡上注明例外情况", + "Vault-WithdrawSuccess": "提出成功", + "Vault-WithdrawError": "提出失败: {{error}}", + "Vault-WithdrawScenario": "提出将会导致:", + "Vault-WithdrawScenarioRedeem": "将{{mooToken}}代币兑换为{{poolToken}}", + "Vault-WithdrawScenarioRemoveLiquidity": "从{{poolToken}}中去除流动性以接收{{tokenA}}和{{tokenB}}", + "Vault-WithdrawScenarioSwap": "用预计的{{swapIn}}换取{{swapOut}}(可能存在±{{slippageTolerance}}滑点和存款费用)", + "Vault-WithdrawScenarioTotal": "转移估计{{totalOut}}到您的钱包中", + "Vault-Harvesting": "收割中...", + "Vault-HarvestButton": "收割", + "Vault-HarvestConfirm": "确认收割?", + "Vault-HarvestDescription": "所有金库皆自动複利, 无需人工手动收割. 这是针对经验丰富的用户所设计的进阶功能. 您确定要主动收割吗?", + "Vault-HarvestSuccess": "收割成功", + "Vault-HarvestError": "收割失败: {{error}}", + "Vault-LastHarvest": "上一次收割时间", + "Vault-MainTitle": "金库", + "Vault-SecondTitle": "存入 & 赚取利息", + "Vault-DepositsPausedTitle": "存入已暂停", + "Vault-DepositsPausedMsg": "该金库目前暂停存入.", + "Vault-DepositsRetiredTitle": "已废弃", + "Vault-DepositsRetiredUpgradeTitle": "已退役 - 我们已升级此金库,请移至新的改进版本", + "Vault-DepositsRetiredRewardsTitle": "已退役 - 底层平台终止奖励。", + "Vault-DepositsRetiredExploitTitle": "已退役 - 代币已被利用,资金在金库中是安全的。", + "Vault-DepositsRetiredTVLTitle": "已退役 - 总锁仓量太低了。", + "Vault-DepositsRetiredMsg": "该金库已退役,请儘速提出您的资金", + "Vault-LiquidityWarningTitle": "{{name}} 超额借贷,请查看 {{platform}} 以了解何时可以提款。", + "Vault-LendingWarningTitle": "此金库使用杠杆,请在存款前阅读文档。", + "Vault-GeneralWarningTitle": "存款前请自行研究。", + "Vault-Staked": "已质押", + "Vault-Description": "使用: {{vault}}", + "Vault-Network": "选取网路", + "Vault-Experimental": "试验版", + "Vault-Loading": "加载金库", + "Vault-NotFound": "未找到金库{{vaultId}}", + "Vault-Breakdown-VaultApr": "金库 APR", + "Vault-Breakdown-TradingApr": "交易 APR", + "Vault-Breakdown-BoostApr": "强化 APR", + "Vault-Breakdown-VaultDaily": "金库日收益", + "Vault-Breakdown-TradingDaily": "交易日收益", + "Vault-Breakdown-BoostDaily": "强化日收益", + "Vault-Boosts-Staked-Single": "已质押进 {{name}} 强化池", + "Vault-Boosts-Staked-Count": "已质押进 {{count}} 强化池", + "Vault-Banner-CakeV2-StakeLabel": "质押您的 {{symbol}}", + "Vault-Banner-CakeV2-StakeValue": "新的纯 {{symbol}} 金库", + "Vault-Banner-CakeV2-SaferLabel": "更安全", + "Vault-Banner-CakeV2-SaferValue": "{{count}} 位中间人", + "Vault-Banner-CakeV2-SmarterLabel": "更聪明", + "Vault-Banner-CakeV2-SmarterValue": "{{count}}+ 年复投", + "Vault-Banner-CakeV2-FairerLabel": "更公平", + "Vault-Banner-CakeV2-FairerValue": "费用减少 {{percent}}%", + "Vault-Withdrawal-Platform-Notice-Geist": "尝试提款时,请将您的 gas 限制设置为 9.9M。任何 10M 或以上的设置都会失败。", + "Vaults-Back": "回到金库", + "Hide-Zero-Balances": "隐藏零余额资产", + "Hide-Zero-Vault-Balances": "已存入金库", + "Retired-Vaults": "已废弃金库", + "Filters-Platform": "平台", + "Filters-Vault-Type": "金库种类", + "Filters-Asset": "资产", + "Filters-Sort": "排序", + "Filters-All": "全部", + "Filters-Default": "默认", + "Filters-Reset": "清除筛选", + "Filters-Type-SingleAssets": "单一资产", + "Filters-Type-StableLPs": "稳定币LP", + "Filters-Type-Stables": "稳定币", + "Confirm": "确认", + "Cancel": "取消", + "No-Results": "无结果", + "docs": "文档", + "news": "最新消息", + "source": "来源", + "gov": "自理", + "vote": "投票", + "stats": "统计", + "app": "app", + "socials": "社群", + "buy": "购买", + "insure": "保险", + "products": "产品", + "Powered-By": "技术支持来自", + "IFO-Guide": "IFO 教程", + "Available-To-Stake": "可质押", + "Stake": "质押", + "Available-To-Unstake": "可取消质押", + "Unstake": "取消质押", + "Max": "最多", + "Coming-Soon": "即将推出", + "Finished": "已结束", + "End": "结束", + "Stakes-Meta-Title": "强化-{{networkName}}", + "Stake-Meta-Title": "赚取{{earnedToken}}-由{{boostedBy}}强化-{{networkName}}", + "Stake-Button-Stake": "质押", + "Stake-Button-Claim": "领取", + "Stake-Button-Approval": "批准", + "Stake-Button-Stake-Tokens": "质押代币", + "Stake-Button-Unstake-Tokens": "取消质押代币", "Stake-Button-Claim-Rewards": "领取奖励", - "Stake-Button-Unstake-Tokens": "解除抵押代币", - "Stake-Button-Exit": "退出:领取奖励并取消抵押", - "Stake-Balancer-Your-Balance": "您的余额", - "Stake-Balancer-Current-Staked": "当前已抵押", - "Stake-Balancer-Rewards-Available": "当前可领取奖励", - "Stake-Balancer-Half-Time": "减半时间", - "Link": { - "Home": "首页", - "Vault": "机枪池", - "Stake": "抵押池", - "Contract": "合约", - "Forum": "论坛", - "Stats": "统计", - "Voting": "投票", - "Documentation": "文档", - "Uniswap": "Uniswap", - "Audit": "审计报告" - }, - "Farm-Main-Title": "Farm", - "Farm-Second-Title": "持有二姨夫获得妹夫", - "Farm-Stake": "存入", - "Farm-Earn": "赚取", - "Farm-Get": "获取", - "Farm-Mining": "挖矿", - "Farm-CAN-GET": "即可获得", - "Farm-Time": "挖矿时间为", - "Farm-Know": "点击了解", - "Farm-Earned": "赚取的", - "Farm-Reward": "收获", - "Farm-Hold": "持有", - "Farm-Pledged": "已抵押", - "Farm-Pledge": "抵押", - "Farm-Proof": "通证", - "Farm-Approval": "授权抵押", - "Farm-Exit": "退出: 领取奖励并取消抵押", - "Farm-UnApproval": "解除抵押", - "Farm-Balance": "可用余额", - "Farm-All-Stake": "全部存入", - "Farm-Stake-Amount": "请输入要存入的数量", - "Farm-Dialog-Confirm": "确认", - "Farm-Dialog-Cancel": "取消", - "Farm-All-UnApproval": "全部解除", - "Farm-UnApproval-Amount": "请输入要解除抵押的数量", - "Farm-Mining-Over": "挖矿已结束", - "Farm-Will-Mining-Over": "距离挖矿结束", - "Farm-week": "周", - "Public-Day": " 天 ", - "Public-Hour": " 小时 ", - "Public-Minute": " 分钟 ", - "Public-Seconds": " 秒 " -} \ No newline at end of file + "Stake-Button-Exit": "领取并取消质押", + "Stake-Balancer-Current-Staked": "当前质押", + "Stake-Balancer-Rewards-Available": "可领取奖励", + "Stake-Balancer-Half-Time": "减半期", + "Stake-BoostedBy": "由 {{name}} 强化", + "Stake-Button-Back": "返回", + "Stake-Pool-Retired": "该金库已结束. 请提出您的资金.", + "Stake-Total-Value-Locked": "锁定总价值", + "Stake-Your-Pool": "您的金库", + "Stake-Current-Daily": "当前日收益率", + "Add-Liquidity": "添加流动性", + "Remove-Liquidity": "解除流动性", + "Buy-Token": "购买代币", + "Wrap-BNB": "Wrap BNB", + "Boost": "强化", + "Experimental": "试验版", + "Select-Network": "选择网路", + "InsurAce-Title": "InsurAce 金库保险", + "InsurAce-Sections": [ + { + "title": "什么是 InsurAce?", + "content": [ + "InsurAce.io 是一个跨多个区块链运行的去中心化保险协议。 它为 DeFi 用户提供保险服务,以保护他们的投资免受智能合约风险的影响。" + ] + }, + { + "title": "它是怎么运作的?", + "content": [ + "Beefy 的合约帮您将代币存入底层平台,例如 Pancakeswap、TraderJoe 或 Spookyswap。如果 Beefy 的智能合约之一失败(例如我们的金库合约或策略合约)而您已支付保险费用,InsurAce 将承担您的损失。", + "相反,如果智能合约的漏洞属于底层平台(Pancakeswap、Traderjoe、Spookyswap),您的存款将不予支付。" + ] + }, + { + "title": "溢价是多少?", + "content": ["每年 2.9%。 使用我们的自定义 Beefy 链接以享受 10% 的折扣(以Insur 代币支付)。"] + } + ], + "InsurAce-Button": "投保金库", + "V2Banner-Title": "此应用程序很快就会被 Beefy 的更新版 v2 界面所取代。", + "V2Banner-Text": "无需用户操作。您现在可以尝试新版本了。", + "V2Banner-Button": "试用测试版" +} diff --git a/src/network.js b/src/network.js new file mode 100644 index 000000000..9b7aa33f3 --- /dev/null +++ b/src/network.js @@ -0,0 +1,104 @@ +/* eslint-disable import/first */ +export const allNetworks = [ + { + name: 'BSC', + asset: 'BSC', + id: 56, + hash: '/bsc', + }, + { + name: 'HECO', + asset: 'HECO', + id: 128, + hash: '/heco', + }, + { + name: 'AVALANCHE', + asset: 'AVALANCHE', + id: 43114, + hash: '/avax', + }, + { + name: 'POLYGON', + asset: 'POLYGON', + id: 137, + hash: '/polygon', + }, + { + name: 'FANTOM', + asset: 'FANTOM', + id: 250, + hash: '/fantom', + }, + { + name: 'HARMONY', + asset: 'HARMONY', + id: 1666600000, + hash: '/harmony', + }, + { + name: 'ARBITRUM', + asset: 'ARBITRUM', + id: 42161, + hash: '/arbitrum', + }, + { + name: 'CELO', + asset: 'CELO', + id: 42220, + hash: '/celo', + }, + { + name: 'MOONRIVER', + asset: 'MOONRIVER', + id: 1285, + hash: '/moonriver', + }, + { + name: 'CRONOS', + asset: 'CRONOS', + id: 25, + hash: '/cronos', + }, + { + name: 'FUSE', + asset: 'FUSE Network', + id: 122, + hash: '/fuse', + }, + { + name: 'METIS', + asset: 'Andromeda', + id: 1088, + hash: '/metis', + }, + { + name: 'AURORA', + asset: 'AURORA', + id: 1313161554, + hash: '/aurora', + }, + { + name: 'MOONBEAM', + asset: 'MOONBEAM', + id: 1284, + hash: '/moonbeam', + }, + { + name: 'OASIS', + asset: 'EMERALD', + id: 42262, + hash: '/oasis', + }, +]; + +const network = allNetworks.find(n => window.location.hash.startsWith('#' + n.hash)); + +if (!network) { + window.location.hash = allNetworks[0].hash; + window.location.reload(); +} else { + window.REACT_APP_NETWORK_ID = network.id; +} + +export default network; diff --git a/src/serviceWorker.js b/src/serviceWorker.js index b04b771a8..8fe870354 100644 --- a/src/serviceWorker.js +++ b/src/serviceWorker.js @@ -15,9 +15,7 @@ const isLocalhost = Boolean( // [::1] is the IPv6 localhost address. window.location.hostname === '[::1]' || // 127.0.0.0/8 are considered localhost for IPv4. - window.location.hostname.match( - /^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/ - ) + window.location.hostname.match(/^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/) ); export function register(config) { @@ -42,8 +40,7 @@ export function register(config) { // service worker/PWA documentation. navigator.serviceWorker.ready.then(() => { console.log( - 'This web app is being served cache-first by a service ' + - 'worker. To learn more, visit https://bit.ly/CRA-PWA' + 'This web app is being served cache-first by a service worker. To learn more, visit https://bit.ly/CRA-PWA' ); }); } else { @@ -70,8 +67,7 @@ function registerValidSW(swUrl, config) { // but the previous service worker will still serve the older // content until all client tabs are closed. console.log( - 'New content is available and will be used when all ' + - 'tabs for this page are closed. See https://bit.ly/CRA-PWA.' + 'New content is available and will be used when all tabs for this page are closed. See https://bit.ly/CRA-PWA.' ); // Execute callback @@ -122,9 +118,7 @@ function checkValidServiceWorker(swUrl, config) { } }) .catch(() => { - console.log( - 'No internet connection found. App is running in offline mode.' - ); + console.log('No internet connection found. App is running in offline mode.'); }); } @@ -132,7 +126,7 @@ export function unregister() { if ('serviceWorker' in navigator) { navigator.serviceWorker.ready .then(registration => { - registration.unregister(); + return registration.unregister(); }) .catch(error => { console.error(error.message); diff --git a/src/setupTests.js b/src/setupTests.js deleted file mode 100644 index 74b1a275a..000000000 --- a/src/setupTests.js +++ /dev/null @@ -1,5 +0,0 @@ -// jest-dom adds custom jest matchers for asserting on DOM nodes. -// allows you to do things like: -// expect(element).toHaveTextContent(/react/i) -// learn more: https://github.com/testing-library/jest-dom -import '@testing-library/jest-dom/extend-expect'; diff --git a/src/styles/global.scss b/src/styles/global.scss index 5ae1f5285..1ac3ebf1b 100644 --- a/src/styles/global.scss +++ b/src/styles/global.scss @@ -1,27 +1,35 @@ -@import './mixins'; +* { + font-family: 'proxima-nova', sans-serif !important; + text-rendering: optimizeLegibility; + box-shadow: none !important; +} + +.fa, +.far, +.fas { + font-family: 'Font Awesome 5 Free' !important; +} -// Here you put all global css rules. +.fab { + font-family: 'Font Awesome 5 Brands' !important; +} body { margin: 0; padding: 0; - font-family: sans-serif; + background-color: #fbf9f6; +} + +.tooltip-toggle { + cursor: default; + + * { + pointer-events: none; + } } @media (max-width: 767px) { .hidden-xs { - display: none!important; + display: none !important; } } - -// .pool-section { -// padding-left: 16px; -// } - -// @media (min-width: 600px) { -// .pool-section { -// padding-left: 40px; -// } -// } - - diff --git a/src/styles/index.scss b/src/styles/index.scss index a31385776..3295db1fd 100644 --- a/src/styles/index.scss +++ b/src/styles/index.scss @@ -1,3 +1 @@ -// index is the entry for all styles. @import './global'; -// @import '../features/common/style'; \ No newline at end of file diff --git a/src/styles/mixins.scss b/src/styles/mixins.scss deleted file mode 100644 index e69de29bb..000000000 diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 000000000..0129ed8a5 --- /dev/null +++ b/yarn.lock @@ -0,0 +1,15112 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@babel/code-frame@7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.8.3.tgz#33e25903d7481181534e12ec0a25f16b6fcf419e" + integrity sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g== + dependencies: + "@babel/highlight" "^7.8.3" + +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.16.7", "@babel/code-frame@^7.8.3": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.7.tgz#44416b6bd7624b998f5b1af5d470856c40138789" + integrity sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg== + dependencies: + "@babel/highlight" "^7.16.7" + +"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.16.4", "@babel/compat-data@^7.9.0": + version "7.16.4" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.16.4.tgz#081d6bbc336ec5c2435c6346b2ae1fb98b5ac68e" + integrity sha512-1o/jo7D+kC9ZjHX5v+EHrdjl3PhxMrLSOTGsOdHJ+KL8HCaEK6ehrVL2RS6oHDZp+L7xLirLrPmQtEng769J/Q== + +"@babel/core@7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.9.0.tgz#ac977b538b77e132ff706f3b8a4dbad09c03c56e" + integrity sha512-kWc7L0fw1xwvI0zi8OKVBuxRVefwGOrKSQMvrQ3dW+bIIavBY3/NpXmpjMy7bQnLgwgzWQZ8TlM57YHpHNHz4w== + dependencies: + "@babel/code-frame" "^7.8.3" + "@babel/generator" "^7.9.0" + "@babel/helper-module-transforms" "^7.9.0" + "@babel/helpers" "^7.9.0" + "@babel/parser" "^7.9.0" + "@babel/template" "^7.8.6" + "@babel/traverse" "^7.9.0" + "@babel/types" "^7.9.0" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.1" + json5 "^2.1.2" + lodash "^4.17.13" + resolve "^1.3.2" + semver "^5.4.1" + source-map "^0.5.0" + +"@babel/core@^7.1.0", "@babel/core@^7.4.5": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.16.7.tgz#db990f931f6d40cb9b87a0dc7d2adc749f1dcbcf" + integrity sha512-aeLaqcqThRNZYmbMqtulsetOQZ/5gbR/dWruUCJcpas4Qoyy+QeagfDsPdMrqwsPRDNxJvBlRiZxxX7THO7qtA== + dependencies: + "@babel/code-frame" "^7.16.7" + "@babel/generator" "^7.16.7" + "@babel/helper-compilation-targets" "^7.16.7" + "@babel/helper-module-transforms" "^7.16.7" + "@babel/helpers" "^7.16.7" + "@babel/parser" "^7.16.7" + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.16.7" + "@babel/types" "^7.16.7" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.1.2" + semver "^6.3.0" + source-map "^0.5.0" + +"@babel/generator@^7.16.7", "@babel/generator@^7.4.0", "@babel/generator@^7.9.0": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.16.7.tgz#b42bf46a3079fa65e1544135f32e7958f048adbb" + integrity sha512-/ST3Sg8MLGY5HVYmrjOgL60ENux/HfO/CsUh7y4MalThufhE/Ff/6EibFDHi4jiDCaWfJKoqbE6oTh21c5hrRg== + dependencies: + "@babel/types" "^7.16.7" + jsesc "^2.5.1" + source-map "^0.5.0" + +"@babel/helper-annotate-as-pure@^7.16.0", "@babel/helper-annotate-as-pure@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz#bb2339a7534a9c128e3102024c60760a3a7f3862" + integrity sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw== + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-builder-binary-assignment-operator-visitor@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz#38d138561ea207f0f69eb1626a418e4f7e6a580b" + integrity sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA== + dependencies: + "@babel/helper-explode-assignable-expression" "^7.16.7" + "@babel/types" "^7.16.7" + +"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.16.7", "@babel/helper-compilation-targets@^7.8.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.7.tgz#06e66c5f299601e6c7da350049315e83209d551b" + integrity sha512-mGojBwIWcwGD6rfqgRXVlVYmPAv7eOpIemUG3dGnDdCY4Pae70ROij3XmfrH6Fa1h1aiDylpglbZyktfzyo/hA== + dependencies: + "@babel/compat-data" "^7.16.4" + "@babel/helper-validator-option" "^7.16.7" + browserslist "^4.17.5" + semver "^6.3.0" + +"@babel/helper-create-class-features-plugin@^7.16.7", "@babel/helper-create-class-features-plugin@^7.8.3": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.7.tgz#9c5b34b53a01f2097daf10678d65135c1b9f84ba" + integrity sha512-kIFozAvVfK05DM4EVQYKK+zteWvY85BFdGBRQBytRyY3y+6PX0DkDOn/CZ3lEuczCfrCxEzwt0YtP/87YPTWSw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.7" + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-function-name" "^7.16.7" + "@babel/helper-member-expression-to-functions" "^7.16.7" + "@babel/helper-optimise-call-expression" "^7.16.7" + "@babel/helper-replace-supers" "^7.16.7" + "@babel/helper-split-export-declaration" "^7.16.7" + +"@babel/helper-create-regexp-features-plugin@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.16.7.tgz#0cb82b9bac358eb73bfbd73985a776bfa6b14d48" + integrity sha512-fk5A6ymfp+O5+p2yCkXAu5Kyj6v0xh0RBeNcAkYUMDvvAAoxvSKXn+Jb37t/yWFiQVDFK1ELpUTD8/aLhCPu+g== + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.7" + regexpu-core "^4.7.1" + +"@babel/helper-define-polyfill-provider@^0.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.0.tgz#c5b10cf4b324ff840140bb07e05b8564af2ae971" + integrity sha512-7hfT8lUljl/tM3h+izTX/pO3W3frz2ok6Pk+gzys8iJqDfZrZy2pXjRTZAvG2YmfHun1X4q8/UZRLatMfqc5Tg== + dependencies: + "@babel/helper-compilation-targets" "^7.13.0" + "@babel/helper-module-imports" "^7.12.13" + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/traverse" "^7.13.0" + debug "^4.1.1" + lodash.debounce "^4.0.8" + resolve "^1.14.2" + semver "^6.1.2" + +"@babel/helper-environment-visitor@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz#ff484094a839bde9d89cd63cba017d7aae80ecd7" + integrity sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag== + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-explode-assignable-expression@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz#12a6d8522fdd834f194e868af6354e8650242b7a" + integrity sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ== + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-function-name@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz#f1ec51551fb1c8956bc8dd95f38523b6cf375f8f" + integrity sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA== + dependencies: + "@babel/helper-get-function-arity" "^7.16.7" + "@babel/template" "^7.16.7" + "@babel/types" "^7.16.7" + +"@babel/helper-get-function-arity@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz#ea08ac753117a669f1508ba06ebcc49156387419" + integrity sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw== + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-hoist-variables@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz#86bcb19a77a509c7b77d0e22323ef588fa58c246" + integrity sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg== + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-member-expression-to-functions@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.7.tgz#42b9ca4b2b200123c3b7e726b0ae5153924905b0" + integrity sha512-VtJ/65tYiU/6AbMTDwyoXGPKHgTsfRarivm+YbB5uAzKUyuPjgZSgAFeG87FCigc7KNHu2Pegh1XIT3lXjvz3Q== + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.16.0", "@babel/helper-module-imports@^7.16.7", "@babel/helper-module-imports@^7.8.3": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz#25612a8091a999704461c8a222d0efec5d091437" + integrity sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg== + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-module-transforms@^7.16.7", "@babel/helper-module-transforms@^7.9.0": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.16.7.tgz#7665faeb721a01ca5327ddc6bba15a5cb34b6a41" + integrity sha512-gaqtLDxJEFCeQbYp9aLAefjhkKdjKcdh6DB7jniIGU3Pz52WAmP268zK0VgPz9hUNkMSYeH976K2/Y6yPadpng== + dependencies: + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-module-imports" "^7.16.7" + "@babel/helper-simple-access" "^7.16.7" + "@babel/helper-split-export-declaration" "^7.16.7" + "@babel/helper-validator-identifier" "^7.16.7" + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.16.7" + "@babel/types" "^7.16.7" + +"@babel/helper-optimise-call-expression@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz#a34e3560605abbd31a18546bd2aad3e6d9a174f2" + integrity sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w== + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz#aa3a8ab4c3cceff8e65eb9e73d87dc4ff320b2f5" + integrity sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA== + +"@babel/helper-remap-async-to-generator@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.7.tgz#5ce2416990d55eb6e099128338848ae8ffa58a9a" + integrity sha512-C3o117GnP/j/N2OWo+oepeWbFEKRfNaay+F1Eo5Mj3A1SRjyx+qaFhm23nlipub7Cjv2azdUUiDH+VlpdwUFRg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.7" + "@babel/helper-wrap-function" "^7.16.7" + "@babel/types" "^7.16.7" + +"@babel/helper-replace-supers@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz#e9f5f5f32ac90429c1a4bdec0f231ef0c2838ab1" + integrity sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw== + dependencies: + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-member-expression-to-functions" "^7.16.7" + "@babel/helper-optimise-call-expression" "^7.16.7" + "@babel/traverse" "^7.16.7" + "@babel/types" "^7.16.7" + +"@babel/helper-simple-access@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.16.7.tgz#d656654b9ea08dbb9659b69d61063ccd343ff0f7" + integrity sha512-ZIzHVyoeLMvXMN/vok/a4LWRy8G2v205mNP0XOuf9XRLyX5/u9CnVulUtDgUTama3lT+bf/UqucuZjqiGuTS1g== + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-skip-transparent-expression-wrappers@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz#0ee3388070147c3ae051e487eca3ebb0e2e8bb09" + integrity sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw== + dependencies: + "@babel/types" "^7.16.0" + +"@babel/helper-split-export-declaration@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz#0b648c0c42da9d3920d85ad585f2778620b8726b" + integrity sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw== + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-validator-identifier@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz#e8c602438c4a8195751243da9031d1607d247cad" + integrity sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw== + +"@babel/helper-validator-option@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz#b203ce62ce5fe153899b617c08957de860de4d23" + integrity sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ== + +"@babel/helper-wrap-function@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.16.7.tgz#8ddf9eaa770ed43de4bc3687f3f3b0d6d5ecf014" + integrity sha512-7a9sABeVwcunnztZZ7WTgSw6jVYLzM1wua0Z4HIXm9S3/HC96WKQTkFgGEaj5W06SHHihPJ6Le6HzS5cGOQMNw== + dependencies: + "@babel/helper-function-name" "^7.16.7" + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.16.7" + "@babel/types" "^7.16.7" + +"@babel/helpers@^7.16.7", "@babel/helpers@^7.9.0": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.16.7.tgz#7e3504d708d50344112767c3542fc5e357fffefc" + integrity sha512-9ZDoqtfY7AuEOt3cxchfii6C7GDyyMBffktR5B2jvWv8u2+efwvpnVKXMWzNehqy68tKgAfSwfdw/lWpthS2bw== + dependencies: + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.16.7" + "@babel/types" "^7.16.7" + +"@babel/highlight@^7.16.7", "@babel/highlight@^7.8.3": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.16.7.tgz#81a01d7d675046f0d96f82450d9d9578bdfd6b0b" + integrity sha512-aKpPMfLvGO3Q97V0qhw/V2SWNWlwfJknuwAunU7wZLSfrM4xTBvg7E5opUVi1kJTBKihE38CPg4nBiqX83PWYw== + dependencies: + "@babel/helper-validator-identifier" "^7.16.7" + chalk "^2.0.0" + js-tokens "^4.0.0" + +"@babel/parser@^7.1.0", "@babel/parser@^7.16.7", "@babel/parser@^7.4.3", "@babel/parser@^7.7.0", "@babel/parser@^7.9.0": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.16.7.tgz#d372dda9c89fcec340a82630a9f533f2fe15877e" + integrity sha512-sR4eaSrnM7BV7QPzGfEX5paG/6wrZM3I0HDzfIAK06ESvo9oy3xBuVBxE3MbQaKNhvg8g/ixjMWo2CGpzpHsDA== + +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.7.tgz#4eda6d6c2a0aa79c70fa7b6da67763dfe2141050" + integrity sha512-anv/DObl7waiGEnC24O9zqL0pSuI9hljihqiDuFHC8d7/bjr/4RLGPWuc8rYOff/QPzbEPSkzG8wGG9aDuhHRg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.7.tgz#cc001234dfc139ac45f6bcf801866198c8c72ff9" + integrity sha512-di8vUHRdf+4aJ7ltXhaDbPoszdkh59AQtJM5soLsuHpQJdFQZOA4uGj0V2u/CZ8bJ/u8ULDL5yq6FO/bCXnKHw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" + "@babel/plugin-proposal-optional-chaining" "^7.16.7" + +"@babel/plugin-proposal-async-generator-functions@^7.16.7", "@babel/plugin-proposal-async-generator-functions@^7.8.3": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.7.tgz#739adc1212a9e4892de440cd7dfffb06172df78d" + integrity sha512-TTXBT3A5c11eqRzaC6beO6rlFT3Mo9C2e8eB44tTr52ESXSK2CIc2fOp1ynpAwQA8HhBMho+WXhMHWlAe3xkpw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-remap-async-to-generator" "^7.16.7" + "@babel/plugin-syntax-async-generators" "^7.8.4" + +"@babel/plugin-proposal-class-properties@7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.8.3.tgz#5e06654af5cd04b608915aada9b2a6788004464e" + integrity sha512-EqFhbo7IosdgPgZggHaNObkmO1kNUe3slaKu54d5OWvy+p9QIKOzK1GAEpAIsZtWVtPXUHSMcT4smvDrCfY4AA== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-proposal-class-properties@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.7.tgz#925cad7b3b1a2fcea7e59ecc8eb5954f961f91b0" + integrity sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-proposal-class-static-block@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.16.7.tgz#712357570b612106ef5426d13dc433ce0f200c2a" + integrity sha512-dgqJJrcZoG/4CkMopzhPJjGxsIe9A8RlkQLnL/Vhhx8AA9ZuaRwGSlscSh42hazc7WSrya/IK7mTeoF0DP9tEw== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + +"@babel/plugin-proposal-decorators@7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.8.3.tgz#2156860ab65c5abf068c3f67042184041066543e" + integrity sha512-e3RvdvS4qPJVTe288DlXjwKflpfy1hr0j5dz5WpIYYeP7vQZg2WfAEIp8k5/Lwis/m5REXEteIz6rrcDtXXG7w== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-decorators" "^7.8.3" + +"@babel/plugin-proposal-dynamic-import@^7.16.7", "@babel/plugin-proposal-dynamic-import@^7.8.3": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz#c19c897eaa46b27634a00fee9fb7d829158704b2" + integrity sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + +"@babel/plugin-proposal-export-namespace-from@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.7.tgz#09de09df18445a5786a305681423ae63507a6163" + integrity sha512-ZxdtqDXLRGBL64ocZcs7ovt71L3jhC1RGSyR996svrCi3PYqHNkb3SwPJCs8RIzD86s+WPpt2S73+EHCGO+NUA== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + +"@babel/plugin-proposal-json-strings@^7.16.7", "@babel/plugin-proposal-json-strings@^7.8.3": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.7.tgz#9732cb1d17d9a2626a08c5be25186c195b6fa6e8" + integrity sha512-lNZ3EEggsGY78JavgbHsK9u5P3pQaW7k4axlgFLYkMd7UBsiNahCITShLjNQschPyjtO6dADrL24757IdhBrsQ== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-json-strings" "^7.8.3" + +"@babel/plugin-proposal-logical-assignment-operators@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.7.tgz#be23c0ba74deec1922e639832904be0bea73cdea" + integrity sha512-K3XzyZJGQCr00+EtYtrDjmwX7o7PLK6U9bi1nCwkQioRFVUv6dJoxbQjtWVtP+bCPy82bONBKG8NPyQ4+i6yjg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + +"@babel/plugin-proposal-nullish-coalescing-operator@7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.8.3.tgz#e4572253fdeed65cddeecfdab3f928afeb2fd5d2" + integrity sha512-TS9MlfzXpXKt6YYomudb/KU7nQI6/xnapG6in1uZxoxDghuSMZsPb6D2fyUwNYSAp4l1iR7QtFOjkqcRYcUsfw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" + +"@babel/plugin-proposal-nullish-coalescing-operator@^7.16.7", "@babel/plugin-proposal-nullish-coalescing-operator@^7.8.3": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.7.tgz#141fc20b6857e59459d430c850a0011e36561d99" + integrity sha512-aUOrYU3EVtjf62jQrCj63pYZ7k6vns2h/DQvHPWGmsJRYzWXZ6/AsfgpiRy6XiuIDADhJzP2Q9MwSMKauBQ+UQ== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + +"@babel/plugin-proposal-numeric-separator@7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.8.3.tgz#5d6769409699ec9b3b68684cd8116cedff93bad8" + integrity sha512-jWioO1s6R/R+wEHizfaScNsAx+xKgwTLNXSh7tTC4Usj3ItsPEhYkEpU4h+lpnBwq7NBVOJXfO6cRFYcX69JUQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.8.3" + +"@babel/plugin-proposal-numeric-separator@^7.16.7", "@babel/plugin-proposal-numeric-separator@^7.8.3": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz#d6b69f4af63fb38b6ca2558442a7fb191236eba9" + integrity sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + +"@babel/plugin-proposal-object-rest-spread@^7.16.7", "@babel/plugin-proposal-object-rest-spread@^7.9.0": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.16.7.tgz#94593ef1ddf37021a25bdcb5754c4a8d534b01d8" + integrity sha512-3O0Y4+dw94HA86qSg9IHfyPktgR7q3gpNVAeiKQd+8jBKFaU5NQS1Yatgo4wY+UFNuLjvxcSmzcsHqrhgTyBUA== + dependencies: + "@babel/compat-data" "^7.16.4" + "@babel/helper-compilation-targets" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.16.7" + +"@babel/plugin-proposal-optional-catch-binding@^7.16.7", "@babel/plugin-proposal-optional-catch-binding@^7.8.3": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz#c623a430674ffc4ab732fd0a0ae7722b67cb74cf" + integrity sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + +"@babel/plugin-proposal-optional-chaining@7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.9.0.tgz#31db16b154c39d6b8a645292472b98394c292a58" + integrity sha512-NDn5tu3tcv4W30jNhmc2hyD5c56G6cXx4TesJubhxrJeCvuuMpttxr0OnNCqbZGhFjLrg+NIhxxC+BK5F6yS3w== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.0" + +"@babel/plugin-proposal-optional-chaining@^7.16.7", "@babel/plugin-proposal-optional-chaining@^7.9.0": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.7.tgz#7cd629564724816c0e8a969535551f943c64c39a" + integrity sha512-eC3xy+ZrUcBtP7x+sq62Q/HYd674pPTb/77XZMb5wbDPGWIdUbSr4Agr052+zaUPSb+gGRnjxXfKFvx5iMJ+DA== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + +"@babel/plugin-proposal-private-methods@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.7.tgz#e418e3aa6f86edd6d327ce84eff188e479f571e0" + integrity sha512-7twV3pzhrRxSwHeIvFE6coPgvo+exNDOiGUMg39o2LiLo1Y+4aKpfkcLGcg1UHonzorCt7SNXnoMyCnnIOA8Sw== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-proposal-private-property-in-object@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.7.tgz#b0b8cef543c2c3d57e59e2c611994861d46a3fce" + integrity sha512-rMQkjcOFbm+ufe3bTZLyOfsOUOxyvLXZJCTARhJr+8UMSoZmqTe1K1BgkFcrW37rAchWg57yI69ORxiWvUINuQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.7" + "@babel/helper-create-class-features-plugin" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + +"@babel/plugin-proposal-unicode-property-regex@^7.16.7", "@babel/plugin-proposal-unicode-property-regex@^7.4.4", "@babel/plugin-proposal-unicode-property-regex@^7.8.3": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.7.tgz#635d18eb10c6214210ffc5ff4932552de08188a2" + integrity sha512-QRK0YI/40VLhNVGIjRNAAQkEHws0cswSdFFjpFyt943YmJIU1da9uW63Iu6NFV6CxTZW5eTDCrwZUstBWgp/Rg== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-syntax-async-generators@^7.8.0", "@babel/plugin-syntax-async-generators@^7.8.4": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" + integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-class-properties@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" + integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-syntax-class-static-block@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz#195df89b146b4b78b3bf897fd7a257c84659d406" + integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-decorators@^7.8.3": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.16.7.tgz#f66a0199f16de7c1ef5192160ccf5d069739e3d3" + integrity sha512-vQ+PxL+srA7g6Rx6I1e15m55gftknl2X8GCUW1JTlkTaXZLJOS0UcaY0eK9jYT7IYf4awn6qwyghVHLDz1WyMw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-syntax-dynamic-import@^7.8.0", "@babel/plugin-syntax-dynamic-import@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" + integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-export-namespace-from@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a" + integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-flow@^7.8.3": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.16.7.tgz#202b147e5892b8452bbb0bb269c7ed2539ab8832" + integrity sha512-UDo3YGQO0jH6ytzVwgSLv9i/CzMcUjbKenL67dTrAZPPv6GFAtDhe6jqnvmoKzC/7htNTohhos+onPtDMqJwaQ== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-syntax-json-strings@^7.8.0", "@babel/plugin-syntax-json-strings@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" + integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-jsx@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.7.tgz#50b6571d13f764266a113d77c82b4a6508bbe665" + integrity sha512-Esxmk7YjA8QysKeT3VhTXvF6y77f/a91SIs4pWb4H2eWGQkCKFgQaG6hdoEVZtGsrAcb2K5BW66XsOErD4WU3Q== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-syntax-logical-assignment-operators@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" + integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.0", "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" + integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-numeric-separator@^7.10.4", "@babel/plugin-syntax-numeric-separator@^7.8.0", "@babel/plugin-syntax-numeric-separator@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" + integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-object-rest-spread@^7.0.0", "@babel/plugin-syntax-object-rest-spread@^7.8.0", "@babel/plugin-syntax-object-rest-spread@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" + integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-catch-binding@^7.8.0", "@babel/plugin-syntax-optional-catch-binding@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" + integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-chaining@^7.8.0", "@babel/plugin-syntax-optional-chaining@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" + integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-private-property-in-object@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz#0dc6671ec0ea22b6e94a1114f857970cd39de1ad" + integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-top-level-await@^7.14.5", "@babel/plugin-syntax-top-level-await@^7.8.3": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" + integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-typescript@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.7.tgz#39c9b55ee153151990fb038651d58d3fd03f98f8" + integrity sha512-YhUIJHHGkqPgEcMYkPCKTyGUdoGKWtopIycQyjJH8OjvRgOYsXsaKehLVPScKJWAULPxMa4N1vCe6szREFlZ7A== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-arrow-functions@^7.16.7", "@babel/plugin-transform-arrow-functions@^7.8.3": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.7.tgz#44125e653d94b98db76369de9c396dc14bef4154" + integrity sha512-9ffkFFMbvzTvv+7dTp/66xvZAWASuPD5Tl9LK3Z9vhOmANo6j94rik+5YMBt4CwHVMWLWpMsriIc2zsa3WW3xQ== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-async-to-generator@^7.16.7", "@babel/plugin-transform-async-to-generator@^7.8.3": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.7.tgz#646e1262ac341b587ff5449844d4492dbb10ac4b" + integrity sha512-pFEfjnK4DfXCfAlA5I98BYdDJD8NltMzx19gt6DAmfE+2lXRfPUoa0/5SUjT4+TDE1W/rcxU/1lgN55vpAjjdg== + dependencies: + "@babel/helper-module-imports" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-remap-async-to-generator" "^7.16.7" + +"@babel/plugin-transform-block-scoped-functions@^7.16.7", "@babel/plugin-transform-block-scoped-functions@^7.8.3": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz#4d0d57d9632ef6062cdf354bb717102ee042a620" + integrity sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-block-scoping@^7.16.7", "@babel/plugin-transform-block-scoping@^7.8.3": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.7.tgz#f50664ab99ddeaee5bc681b8f3a6ea9d72ab4f87" + integrity sha512-ObZev2nxVAYA4bhyusELdo9hb3H+A56bxH3FZMbEImZFiEDYVHXQSJ1hQKFlDnlt8G9bBrCZ5ZpURZUrV4G5qQ== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-classes@^7.16.7", "@babel/plugin-transform-classes@^7.9.0": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.7.tgz#8f4b9562850cd973de3b498f1218796eb181ce00" + integrity sha512-WY7og38SFAGYRe64BrjKf8OrE6ulEHtr5jEYaZMwox9KebgqPi67Zqz8K53EKk1fFEJgm96r32rkKZ3qA2nCWQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.7" + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-function-name" "^7.16.7" + "@babel/helper-optimise-call-expression" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-replace-supers" "^7.16.7" + "@babel/helper-split-export-declaration" "^7.16.7" + globals "^11.1.0" + +"@babel/plugin-transform-computed-properties@^7.16.7", "@babel/plugin-transform-computed-properties@^7.8.3": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.7.tgz#66dee12e46f61d2aae7a73710f591eb3df616470" + integrity sha512-gN72G9bcmenVILj//sv1zLNaPyYcOzUho2lIJBMh/iakJ9ygCo/hEF9cpGb61SCMEDxbbyBoVQxrt+bWKu5KGw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-destructuring@^7.16.7", "@babel/plugin-transform-destructuring@^7.8.3": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.16.7.tgz#ca9588ae2d63978a4c29d3f33282d8603f618e23" + integrity sha512-VqAwhTHBnu5xBVDCvrvqJbtLUa++qZaWC0Fgr2mqokBlulZARGyIvZDoqbPlPaKImQ9dKAcCzbv+ul//uqu70A== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-dotall-regex@^7.16.7", "@babel/plugin-transform-dotall-regex@^7.4.4", "@babel/plugin-transform-dotall-regex@^7.8.3": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz#6b2d67686fab15fb6a7fd4bd895d5982cfc81241" + integrity sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-duplicate-keys@^7.16.7", "@babel/plugin-transform-duplicate-keys@^7.8.3": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.7.tgz#2207e9ca8f82a0d36a5a67b6536e7ef8b08823c9" + integrity sha512-03DvpbRfvWIXyK0/6QiR1KMTWeT6OcQ7tbhjrXyFS02kjuX/mu5Bvnh5SDSWHxyawit2g5aWhKwI86EE7GUnTw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-exponentiation-operator@^7.16.7", "@babel/plugin-transform-exponentiation-operator@^7.8.3": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz#efa9862ef97e9e9e5f653f6ddc7b665e8536fe9b" + integrity sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA== + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-flow-strip-types@7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.9.0.tgz#8a3538aa40434e000b8f44a3c5c9ac7229bd2392" + integrity sha512-7Qfg0lKQhEHs93FChxVLAvhBshOPQDtJUTVHr/ZwQNRccCm4O9D79r9tVSoV8iNwjP1YgfD+e/fgHcPkN1qEQg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-flow" "^7.8.3" + +"@babel/plugin-transform-for-of@^7.16.7", "@babel/plugin-transform-for-of@^7.9.0": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.7.tgz#649d639d4617dff502a9a158c479b3b556728d8c" + integrity sha512-/QZm9W92Ptpw7sjI9Nx1mbcsWz33+l8kuMIQnDwgQBG5s3fAfQvkRjQ7NqXhtNcKOnPkdICmUHyCaWW06HCsqg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-function-name@^7.16.7", "@babel/plugin-transform-function-name@^7.8.3": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz#5ab34375c64d61d083d7d2f05c38d90b97ec65cf" + integrity sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA== + dependencies: + "@babel/helper-compilation-targets" "^7.16.7" + "@babel/helper-function-name" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-literals@^7.16.7", "@babel/plugin-transform-literals@^7.8.3": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.7.tgz#254c9618c5ff749e87cb0c0cef1a0a050c0bdab1" + integrity sha512-6tH8RTpTWI0s2sV6uq3e/C9wPo4PTqqZps4uF0kzQ9/xPLFQtipynvmT1g/dOfEJ+0EQsHhkQ/zyRId8J2b8zQ== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-member-expression-literals@^7.16.7", "@babel/plugin-transform-member-expression-literals@^7.8.3": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz#6e5dcf906ef8a098e630149d14c867dd28f92384" + integrity sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-modules-amd@^7.16.7", "@babel/plugin-transform-modules-amd@^7.9.0": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.7.tgz#b28d323016a7daaae8609781d1f8c9da42b13186" + integrity sha512-KaaEtgBL7FKYwjJ/teH63oAmE3lP34N3kshz8mm4VMAw7U3PxjVwwUmxEFksbgsNUaO3wId9R2AVQYSEGRa2+g== + dependencies: + "@babel/helper-module-transforms" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-commonjs@^7.16.7", "@babel/plugin-transform-modules-commonjs@^7.9.0": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.7.tgz#fd119e6a433c527d368425b45df361e1e95d3c1a" + integrity sha512-h2RP2kE7He1ZWKyAlanMZrAbdv+Acw1pA8dQZhE025WJZE2z0xzFADAinXA9fxd5bn7JnM+SdOGcndGx1ARs9w== + dependencies: + "@babel/helper-module-transforms" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-simple-access" "^7.16.7" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-systemjs@^7.16.7", "@babel/plugin-transform-modules-systemjs@^7.9.0": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.7.tgz#887cefaef88e684d29558c2b13ee0563e287c2d7" + integrity sha512-DuK5E3k+QQmnOqBR9UkusByy5WZWGRxfzV529s9nPra1GE7olmxfqO2FHobEOYSPIjPBTr4p66YDcjQnt8cBmw== + dependencies: + "@babel/helper-hoist-variables" "^7.16.7" + "@babel/helper-module-transforms" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-validator-identifier" "^7.16.7" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-umd@^7.16.7", "@babel/plugin-transform-modules-umd@^7.9.0": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.7.tgz#23dad479fa585283dbd22215bff12719171e7618" + integrity sha512-EMh7uolsC8O4xhudF2F6wedbSHm1HHZ0C6aJ7K67zcDNidMzVcxWdGr+htW9n21klm+bOn+Rx4CBsAntZd3rEQ== + dependencies: + "@babel/helper-module-transforms" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-named-capturing-groups-regex@^7.16.7", "@babel/plugin-transform-named-capturing-groups-regex@^7.8.3": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.7.tgz#749d90d94e73cf62c60a0cc8d6b94d29305a81f2" + integrity sha512-kFy35VwmwIQwCjwrAQhl3+c/kr292i4KdLPKp5lPH03Ltc51qnFlIADoyPxc/6Naz3ok3WdYKg+KK6AH+D4utg== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.16.7" + +"@babel/plugin-transform-new-target@^7.16.7", "@babel/plugin-transform-new-target@^7.8.3": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.7.tgz#9967d89a5c243818e0800fdad89db22c5f514244" + integrity sha512-xiLDzWNMfKoGOpc6t3U+etCE2yRnn3SM09BXqWPIZOBpL2gvVrBWUKnsJx0K/ADi5F5YC5f8APFfWrz25TdlGg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-object-super@^7.16.7", "@babel/plugin-transform-object-super@^7.8.3": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz#ac359cf8d32cf4354d27a46867999490b6c32a94" + integrity sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-replace-supers" "^7.16.7" + +"@babel/plugin-transform-parameters@^7.16.7", "@babel/plugin-transform-parameters@^7.8.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.7.tgz#a1721f55b99b736511cb7e0152f61f17688f331f" + integrity sha512-AT3MufQ7zZEhU2hwOA11axBnExW0Lszu4RL/tAlUJBuNoRak+wehQW8h6KcXOcgjY42fHtDxswuMhMjFEuv/aw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-property-literals@^7.16.7", "@babel/plugin-transform-property-literals@^7.8.3": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz#2dadac85155436f22c696c4827730e0fe1057a55" + integrity sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-react-constant-elements@^7.0.0": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.16.7.tgz#19e9e4c2df2f6c3e6b3aea11778297d81db8df62" + integrity sha512-lF+cfsyTgwWkcw715J88JhMYJ5GpysYNLhLP1PkvkhTRN7B3e74R/1KsDxFxhRpSn0UUD3IWM4GvdBR2PEbbQQ== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-react-display-name@7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.8.3.tgz#70ded987c91609f78353dd76d2fb2a0bb991e8e5" + integrity sha512-3Jy/PCw8Fe6uBKtEgz3M82ljt+lTg+xJaM4og+eyu83qLT87ZUSckn0wy7r31jflURWLO83TW6Ylf7lyXj3m5A== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-react-display-name@^7.16.7", "@babel/plugin-transform-react-display-name@^7.8.3": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.16.7.tgz#7b6d40d232f4c0f550ea348593db3b21e2404340" + integrity sha512-qgIg8BcZgd0G/Cz916D5+9kqX0c7nPZyXaP8R2tLNN5tkyIZdG5fEwBrxwplzSnjC1jvQmyMNVwUCZPcbGY7Pg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-react-jsx-development@^7.16.7", "@babel/plugin-transform-react-jsx-development@^7.9.0": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.16.7.tgz#43a00724a3ed2557ed3f276a01a929e6686ac7b8" + integrity sha512-RMvQWvpla+xy6MlBpPlrKZCMRs2AGiHOGHY3xRwl0pEeim348dDyxeH4xBsMPbIMhujeq7ihE702eM2Ew0Wo+A== + dependencies: + "@babel/plugin-transform-react-jsx" "^7.16.7" + +"@babel/plugin-transform-react-jsx-self@^7.9.0": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.16.7.tgz#f432ad0cba14c4a1faf44f0076c69e42a4d4479e" + integrity sha512-oe5VuWs7J9ilH3BCCApGoYjHoSO48vkjX2CbA5bFVhIuO2HKxA3vyF7rleA4o6/4rTDbk6r8hBW7Ul8E+UZrpA== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-react-jsx-source@^7.9.0": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.16.7.tgz#1879c3f23629d287cc6186a6c683154509ec70c0" + integrity sha512-rONFiQz9vgbsnaMtQlZCjIRwhJvlrPET8TabIUK2hzlXw9B9s2Ieaxte1SCOOXMbWRHodbKixNf3BLcWVOQ8Bw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-react-jsx@^7.16.7", "@babel/plugin-transform-react-jsx@^7.9.1": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.16.7.tgz#86a6a220552afd0e4e1f0388a68a372be7add0d4" + integrity sha512-8D16ye66fxiE8m890w0BpPpngG9o9OVBBy0gH2E+2AR7qMR2ZpTYJEqLxAsoroenMId0p/wMW+Blc0meDgu0Ag== + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.7" + "@babel/helper-module-imports" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-jsx" "^7.16.7" + "@babel/types" "^7.16.7" + +"@babel/plugin-transform-react-pure-annotations@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.16.7.tgz#232bfd2f12eb551d6d7d01d13fe3f86b45eb9c67" + integrity sha512-hs71ToC97k3QWxswh2ElzMFABXHvGiJ01IB1TbYQDGeWRKWz/MPUTh5jGExdHvosYKpnJW5Pm3S4+TA3FyX+GA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-regenerator@^7.16.7", "@babel/plugin-transform-regenerator@^7.8.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.7.tgz#9e7576dc476cb89ccc5096fff7af659243b4adeb" + integrity sha512-mF7jOgGYCkSJagJ6XCujSQg+6xC1M77/03K2oBmVJWoFGNUtnVJO4WHKJk3dnPC8HCcj4xBQP1Egm8DWh3Pb3Q== + dependencies: + regenerator-transform "^0.14.2" + +"@babel/plugin-transform-reserved-words@^7.16.7", "@babel/plugin-transform-reserved-words@^7.8.3": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.7.tgz#1d798e078f7c5958eec952059c460b220a63f586" + integrity sha512-KQzzDnZ9hWQBjwi5lpY5v9shmm6IVG0U9pB18zvMu2i4H90xpT4gmqwPYsn8rObiadYe2M0gmgsiOIF5A/2rtg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-runtime@7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.9.0.tgz#45468c0ae74cc13204e1d3b1f4ce6ee83258af0b" + integrity sha512-pUu9VSf3kI1OqbWINQ7MaugnitRss1z533436waNXp+0N3ur3zfut37sXiQMxkuCF4VUjwZucen/quskCh7NHw== + dependencies: + "@babel/helper-module-imports" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + resolve "^1.8.1" + semver "^5.5.1" + +"@babel/plugin-transform-runtime@^7.5.5": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.16.7.tgz#1da184cb83a2287a01956c10c60e66dd503c18aa" + integrity sha512-2FoHiSAWkdq4L06uaDN3rS43i6x28desUVxq+zAFuE6kbWYQeiLPJI5IC7Sg9xKYVcrBKSQkVUfH6aeQYbl9QA== + dependencies: + "@babel/helper-module-imports" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + babel-plugin-polyfill-corejs2 "^0.3.0" + babel-plugin-polyfill-corejs3 "^0.4.0" + babel-plugin-polyfill-regenerator "^0.3.0" + semver "^6.3.0" + +"@babel/plugin-transform-shorthand-properties@^7.16.7", "@babel/plugin-transform-shorthand-properties@^7.8.3": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz#e8549ae4afcf8382f711794c0c7b6b934c5fbd2a" + integrity sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-spread@^7.16.7", "@babel/plugin-transform-spread@^7.8.3": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.7.tgz#a303e2122f9f12e0105daeedd0f30fb197d8ff44" + integrity sha512-+pjJpgAngb53L0iaA5gU/1MLXJIfXcYepLgXB3esVRf4fqmj8f2cxM3/FKaHsZms08hFQJkFccEWuIpm429TXg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" + +"@babel/plugin-transform-sticky-regex@^7.16.7", "@babel/plugin-transform-sticky-regex@^7.8.3": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz#c84741d4f4a38072b9a1e2e3fd56d359552e8660" + integrity sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-template-literals@^7.16.7", "@babel/plugin-transform-template-literals@^7.8.3": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.7.tgz#f3d1c45d28967c8e80f53666fc9c3e50618217ab" + integrity sha512-VwbkDDUeenlIjmfNeDX/V0aWrQH2QiVyJtwymVQSzItFDTpxfyJh3EVaQiS0rIN/CqbLGr0VcGmuwyTdZtdIsA== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-typeof-symbol@^7.16.7", "@babel/plugin-transform-typeof-symbol@^7.8.4": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.7.tgz#9cdbe622582c21368bd482b660ba87d5545d4f7e" + integrity sha512-p2rOixCKRJzpg9JB4gjnG4gjWkWa89ZoYUnl9snJ1cWIcTH/hvxZqfO+WjG6T8DRBpctEol5jw1O5rA8gkCokQ== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-typescript@^7.9.0": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.16.7.tgz#33f8c2c890fbfdc4ef82446e9abb8de8211a3ff3" + integrity sha512-Hzx1lvBtOCWuCEwMmYOfpQpO7joFeXLgoPuzZZBtTxXqSqUGUubvFGZv2ygo1tB5Bp9q6PXV3H0E/kf7KM0RLA== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-typescript" "^7.16.7" + +"@babel/plugin-transform-unicode-escapes@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.7.tgz#da8717de7b3287a2c6d659750c964f302b31ece3" + integrity sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-unicode-regex@^7.16.7", "@babel/plugin-transform-unicode-regex@^7.8.3": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz#0f7aa4a501198976e25e82702574c34cfebe9ef2" + integrity sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/preset-env@7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.9.0.tgz#a5fc42480e950ae8f5d9f8f2bbc03f52722df3a8" + integrity sha512-712DeRXT6dyKAM/FMbQTV/FvRCms2hPCx+3weRjZ8iQVQWZejWWk1wwG6ViWMyqb/ouBbGOl5b6aCk0+j1NmsQ== + dependencies: + "@babel/compat-data" "^7.9.0" + "@babel/helper-compilation-targets" "^7.8.7" + "@babel/helper-module-imports" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-proposal-async-generator-functions" "^7.8.3" + "@babel/plugin-proposal-dynamic-import" "^7.8.3" + "@babel/plugin-proposal-json-strings" "^7.8.3" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-proposal-numeric-separator" "^7.8.3" + "@babel/plugin-proposal-object-rest-spread" "^7.9.0" + "@babel/plugin-proposal-optional-catch-binding" "^7.8.3" + "@babel/plugin-proposal-optional-chaining" "^7.9.0" + "@babel/plugin-proposal-unicode-property-regex" "^7.8.3" + "@babel/plugin-syntax-async-generators" "^7.8.0" + "@babel/plugin-syntax-dynamic-import" "^7.8.0" + "@babel/plugin-syntax-json-strings" "^7.8.0" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" + "@babel/plugin-syntax-numeric-separator" "^7.8.0" + "@babel/plugin-syntax-object-rest-spread" "^7.8.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" + "@babel/plugin-syntax-optional-chaining" "^7.8.0" + "@babel/plugin-syntax-top-level-await" "^7.8.3" + "@babel/plugin-transform-arrow-functions" "^7.8.3" + "@babel/plugin-transform-async-to-generator" "^7.8.3" + "@babel/plugin-transform-block-scoped-functions" "^7.8.3" + "@babel/plugin-transform-block-scoping" "^7.8.3" + "@babel/plugin-transform-classes" "^7.9.0" + "@babel/plugin-transform-computed-properties" "^7.8.3" + "@babel/plugin-transform-destructuring" "^7.8.3" + "@babel/plugin-transform-dotall-regex" "^7.8.3" + "@babel/plugin-transform-duplicate-keys" "^7.8.3" + "@babel/plugin-transform-exponentiation-operator" "^7.8.3" + "@babel/plugin-transform-for-of" "^7.9.0" + "@babel/plugin-transform-function-name" "^7.8.3" + "@babel/plugin-transform-literals" "^7.8.3" + "@babel/plugin-transform-member-expression-literals" "^7.8.3" + "@babel/plugin-transform-modules-amd" "^7.9.0" + "@babel/plugin-transform-modules-commonjs" "^7.9.0" + "@babel/plugin-transform-modules-systemjs" "^7.9.0" + "@babel/plugin-transform-modules-umd" "^7.9.0" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.8.3" + "@babel/plugin-transform-new-target" "^7.8.3" + "@babel/plugin-transform-object-super" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.8.7" + "@babel/plugin-transform-property-literals" "^7.8.3" + "@babel/plugin-transform-regenerator" "^7.8.7" + "@babel/plugin-transform-reserved-words" "^7.8.3" + "@babel/plugin-transform-shorthand-properties" "^7.8.3" + "@babel/plugin-transform-spread" "^7.8.3" + "@babel/plugin-transform-sticky-regex" "^7.8.3" + "@babel/plugin-transform-template-literals" "^7.8.3" + "@babel/plugin-transform-typeof-symbol" "^7.8.4" + "@babel/plugin-transform-unicode-regex" "^7.8.3" + "@babel/preset-modules" "^0.1.3" + "@babel/types" "^7.9.0" + browserslist "^4.9.1" + core-js-compat "^3.6.2" + invariant "^2.2.2" + levenary "^1.1.1" + semver "^5.5.0" + +"@babel/preset-env@^7.4.5": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.16.7.tgz#c491088856d0b3177822a2bf06cb74d76327aa56" + integrity sha512-urX3Cee4aOZbRWOSa3mKPk0aqDikfILuo+C7qq7HY0InylGNZ1fekq9jmlr3pLWwZHF4yD7heQooc2Pow2KMyQ== + dependencies: + "@babel/compat-data" "^7.16.4" + "@babel/helper-compilation-targets" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-validator-option" "^7.16.7" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.16.7" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.16.7" + "@babel/plugin-proposal-async-generator-functions" "^7.16.7" + "@babel/plugin-proposal-class-properties" "^7.16.7" + "@babel/plugin-proposal-class-static-block" "^7.16.7" + "@babel/plugin-proposal-dynamic-import" "^7.16.7" + "@babel/plugin-proposal-export-namespace-from" "^7.16.7" + "@babel/plugin-proposal-json-strings" "^7.16.7" + "@babel/plugin-proposal-logical-assignment-operators" "^7.16.7" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.16.7" + "@babel/plugin-proposal-numeric-separator" "^7.16.7" + "@babel/plugin-proposal-object-rest-spread" "^7.16.7" + "@babel/plugin-proposal-optional-catch-binding" "^7.16.7" + "@babel/plugin-proposal-optional-chaining" "^7.16.7" + "@babel/plugin-proposal-private-methods" "^7.16.7" + "@babel/plugin-proposal-private-property-in-object" "^7.16.7" + "@babel/plugin-proposal-unicode-property-regex" "^7.16.7" + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-class-properties" "^7.12.13" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + "@babel/plugin-syntax-top-level-await" "^7.14.5" + "@babel/plugin-transform-arrow-functions" "^7.16.7" + "@babel/plugin-transform-async-to-generator" "^7.16.7" + "@babel/plugin-transform-block-scoped-functions" "^7.16.7" + "@babel/plugin-transform-block-scoping" "^7.16.7" + "@babel/plugin-transform-classes" "^7.16.7" + "@babel/plugin-transform-computed-properties" "^7.16.7" + "@babel/plugin-transform-destructuring" "^7.16.7" + "@babel/plugin-transform-dotall-regex" "^7.16.7" + "@babel/plugin-transform-duplicate-keys" "^7.16.7" + "@babel/plugin-transform-exponentiation-operator" "^7.16.7" + "@babel/plugin-transform-for-of" "^7.16.7" + "@babel/plugin-transform-function-name" "^7.16.7" + "@babel/plugin-transform-literals" "^7.16.7" + "@babel/plugin-transform-member-expression-literals" "^7.16.7" + "@babel/plugin-transform-modules-amd" "^7.16.7" + "@babel/plugin-transform-modules-commonjs" "^7.16.7" + "@babel/plugin-transform-modules-systemjs" "^7.16.7" + "@babel/plugin-transform-modules-umd" "^7.16.7" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.16.7" + "@babel/plugin-transform-new-target" "^7.16.7" + "@babel/plugin-transform-object-super" "^7.16.7" + "@babel/plugin-transform-parameters" "^7.16.7" + "@babel/plugin-transform-property-literals" "^7.16.7" + "@babel/plugin-transform-regenerator" "^7.16.7" + "@babel/plugin-transform-reserved-words" "^7.16.7" + "@babel/plugin-transform-shorthand-properties" "^7.16.7" + "@babel/plugin-transform-spread" "^7.16.7" + "@babel/plugin-transform-sticky-regex" "^7.16.7" + "@babel/plugin-transform-template-literals" "^7.16.7" + "@babel/plugin-transform-typeof-symbol" "^7.16.7" + "@babel/plugin-transform-unicode-escapes" "^7.16.7" + "@babel/plugin-transform-unicode-regex" "^7.16.7" + "@babel/preset-modules" "^0.1.5" + "@babel/types" "^7.16.7" + babel-plugin-polyfill-corejs2 "^0.3.0" + babel-plugin-polyfill-corejs3 "^0.4.0" + babel-plugin-polyfill-regenerator "^0.3.0" + core-js-compat "^3.19.1" + semver "^6.3.0" + +"@babel/preset-modules@^0.1.3", "@babel/preset-modules@^0.1.5": + version "0.1.5" + resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.5.tgz#ef939d6e7f268827e1841638dc6ff95515e115d9" + integrity sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" + "@babel/plugin-transform-dotall-regex" "^7.4.4" + "@babel/types" "^7.4.4" + esutils "^2.0.2" + +"@babel/preset-react@7.9.1": + version "7.9.1" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.9.1.tgz#b346403c36d58c3bb544148272a0cefd9c28677a" + integrity sha512-aJBYF23MPj0RNdp/4bHnAP0NVqqZRr9kl0NAOP4nJCex6OYVio59+dnQzsAWFuogdLyeaKA1hmfUIVZkY5J+TQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-transform-react-display-name" "^7.8.3" + "@babel/plugin-transform-react-jsx" "^7.9.1" + "@babel/plugin-transform-react-jsx-development" "^7.9.0" + "@babel/plugin-transform-react-jsx-self" "^7.9.0" + "@babel/plugin-transform-react-jsx-source" "^7.9.0" + +"@babel/preset-react@^7.0.0": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.16.7.tgz#4c18150491edc69c183ff818f9f2aecbe5d93852" + integrity sha512-fWpyI8UM/HE6DfPBzD8LnhQ/OcH8AgTaqcqP2nGOXEUV+VKBR5JRN9hCk9ai+zQQ57vtm9oWeXguBCPNUjytgA== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-validator-option" "^7.16.7" + "@babel/plugin-transform-react-display-name" "^7.16.7" + "@babel/plugin-transform-react-jsx" "^7.16.7" + "@babel/plugin-transform-react-jsx-development" "^7.16.7" + "@babel/plugin-transform-react-pure-annotations" "^7.16.7" + +"@babel/preset-typescript@7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.9.0.tgz#87705a72b1f0d59df21c179f7c3d2ef4b16ce192" + integrity sha512-S4cueFnGrIbvYJgwsVFKdvOmpiL0XGw9MFW9D0vgRys5g36PBhZRL8NX8Gr2akz8XRtzq6HuDXPD/1nniagNUg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-transform-typescript" "^7.9.0" + +"@babel/runtime-corejs3@^7.12.1": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.16.7.tgz#a762745fe8b4d61a26444a9151e6586d36044dde" + integrity sha512-MiYR1yk8+TW/CpOD0CyX7ve9ffWTKqLk/L6pk8TPl0R8pNi+1pFY8fH9yET55KlvukQ4PAWfXsGr2YHVjcI4Pw== + dependencies: + core-js-pure "^3.19.0" + regenerator-runtime "^0.13.4" + +"@babel/runtime@7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.9.0.tgz#337eda67401f5b066a6f205a3113d4ac18ba495b" + integrity sha512-cTIudHnzuWLS56ik4DnRnqqNf8MkdUzV4iFFI1h7Jo9xvrpQROYaAnaSd2mHLQAzzZAPfATynX5ord6YlNYNMA== + dependencies: + regenerator-runtime "^0.13.4" + +"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.12.0", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.14.5", "@babel/runtime@^7.14.6", "@babel/runtime@^7.15.4", "@babel/runtime@^7.3.1", "@babel/runtime@^7.3.4", "@babel/runtime@^7.4.4", "@babel/runtime@^7.4.5", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.3", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.16.7.tgz#03ff99f64106588c9c403c6ecb8c3bafbbdff1fa" + integrity sha512-9E9FJowqAsytyOY6LG+1KuueckRL+aQW+mKvXRXnuFGyRAyepJPmEo9vgMfXUA6O9u3IeEdv9MAkppFcaQwogQ== + dependencies: + regenerator-runtime "^0.13.4" + +"@babel/template@^7.16.7", "@babel/template@^7.4.0", "@babel/template@^7.8.6": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.16.7.tgz#8d126c8701fde4d66b264b3eba3d96f07666d155" + integrity sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w== + dependencies: + "@babel/code-frame" "^7.16.7" + "@babel/parser" "^7.16.7" + "@babel/types" "^7.16.7" + +"@babel/traverse@^7.1.0", "@babel/traverse@^7.13.0", "@babel/traverse@^7.16.7", "@babel/traverse@^7.4.3", "@babel/traverse@^7.4.5", "@babel/traverse@^7.7.0", "@babel/traverse@^7.9.0": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.16.7.tgz#dac01236a72c2560073658dd1a285fe4e0865d76" + integrity sha512-8KWJPIb8c2VvY8AJrydh6+fVRo2ODx1wYBU2398xJVq0JomuLBZmVQzLPBblJgHIGYG4znCpUZUZ0Pt2vdmVYQ== + dependencies: + "@babel/code-frame" "^7.16.7" + "@babel/generator" "^7.16.7" + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-function-name" "^7.16.7" + "@babel/helper-hoist-variables" "^7.16.7" + "@babel/helper-split-export-declaration" "^7.16.7" + "@babel/parser" "^7.16.7" + "@babel/types" "^7.16.7" + debug "^4.1.0" + globals "^11.1.0" + +"@babel/types@^7.0.0", "@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.3.0", "@babel/types@^7.4.0", "@babel/types@^7.4.4", "@babel/types@^7.7.0", "@babel/types@^7.9.0": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.16.7.tgz#4ed19d51f840ed4bd5645be6ce40775fecf03159" + integrity sha512-E8HuV7FO9qLpx6OtoGfUQ2cjIYnbFwvZWYBS+87EwtdMvmUPJSwykpovFB+8insbpF0uJcpr8KMUi64XZntZcg== + dependencies: + "@babel/helper-validator-identifier" "^7.16.7" + to-fast-properties "^2.0.0" + +"@clover-network/clover-connector@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@clover-network/clover-connector/-/clover-connector-1.0.0.tgz#e56a91e9192831f6036b21799a92734fd2a604e7" + integrity sha512-r30ymrPAXCxSrhKZZ+PmlQDjBi+wxYo5E+fbh4UvhAeviS+/5QxT0SLNNjPwQpVi5ouP0ZOCvwcwa2vLr/gSwA== + dependencies: + "@web3-react/abstract-connector" "^6.0.7" + "@web3-react/types" "^6.0.7" + tiny-warning "^1.0.3" + +"@cnakazawa/watch@^1.0.3": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@cnakazawa/watch/-/watch-1.0.4.tgz#f864ae85004d0fcab6f50be9141c4da368d1656a" + integrity sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ== + dependencies: + exec-sh "^0.3.2" + minimist "^1.2.0" + +"@confio/ics23@^0.6.3": + version "0.6.5" + resolved "https://registry.yarnpkg.com/@confio/ics23/-/ics23-0.6.5.tgz#9c21a61089d4c3c2429875a69d6d9cd8c87512aa" + integrity sha512-1GdPMsaP/l8JSF4P4HWFLBhdcxHcJT8lS0nknBYNSZ1XrJOsJKUy6EkOwd9Pa1qJkXzY2gyNv7MdHR+AIwSTAg== + dependencies: + js-sha512 "^0.8.0" + protobufjs "^6.8.8" + ripemd160 "^2.0.2" + sha.js "^2.4.11" + +"@cosmjs/amino@0.26.5", "@cosmjs/amino@^0.26.0": + version "0.26.5" + resolved "https://registry.yarnpkg.com/@cosmjs/amino/-/amino-0.26.5.tgz#69db28610577a2cb647f0bfc1d2226e865d50455" + integrity sha512-RFf9P1eb7O60JEWaZ5jbQA0wVbwU4SiBJINEjZkhkB1vUrAxCkfSHBZdJrVg8+IIRSWxPUUVr8PMuIyWlORV3A== + dependencies: + "@cosmjs/crypto" "0.26.5" + "@cosmjs/encoding" "0.26.5" + "@cosmjs/math" "0.26.5" + "@cosmjs/utils" "0.26.5" + +"@cosmjs/crypto@0.26.5": + version "0.26.5" + resolved "https://registry.yarnpkg.com/@cosmjs/crypto/-/crypto-0.26.5.tgz#84c1193ec4a2296ea6c06655521944f9fe91af5f" + integrity sha512-ab7+qR/gdRi/DIdOLrjyimRdyD/2K/JdpRaFY1bl6Drr3ktVjDQrGsv53THvHONy33yCwD+YS+328ayQRv/pQA== + dependencies: + "@cosmjs/encoding" "0.26.5" + "@cosmjs/math" "0.26.5" + "@cosmjs/utils" "0.26.5" + bip39 "^3.0.2" + bn.js "^4.11.8" + elliptic "^6.5.3" + js-sha3 "^0.8.0" + libsodium-wrappers "^0.7.6" + ripemd160 "^2.0.2" + sha.js "^2.4.11" + +"@cosmjs/encoding@0.26.5", "@cosmjs/encoding@^0.26.0": + version "0.26.5" + resolved "https://registry.yarnpkg.com/@cosmjs/encoding/-/encoding-0.26.5.tgz#29ccaa647c28d4bffd5f0f46dde0eedf7e4745b4" + integrity sha512-lkw2mLvDZJqVCOZCBqdMzoGUtC4CN7c4+WMCGKDej3TpC0khsv7KZ1eFcsnN6EuZwHyGH67uyyjrs5x0ah9rYg== + dependencies: + base64-js "^1.3.0" + bech32 "^1.1.4" + readonly-date "^1.0.0" + +"@cosmjs/json-rpc@0.26.5": + version "0.26.5" + resolved "https://registry.yarnpkg.com/@cosmjs/json-rpc/-/json-rpc-0.26.5.tgz#c7c35d7ec6ab537f37dd24cd90f838f80d18c8f9" + integrity sha512-SFGm5MlY54v3I26hXThwVteh91U+/DKS+KGqFL5lPLHZ2EHxggASqhKMiTJBMJVUDWvnmv1ikjFndkWNhpTPNw== + dependencies: + "@cosmjs/stream" "0.26.5" + xstream "^11.14.0" + +"@cosmjs/math@0.26.5": + version "0.26.5" + resolved "https://registry.yarnpkg.com/@cosmjs/math/-/math-0.26.5.tgz#48900f5a0b5522586315435b43f611812eb0ea26" + integrity sha512-1G7NgLJ35g4jUupvyu7Igtgu/fj2NmgpOofpNk1JqIwMXrm3Tx7lOWbxJq8Wrjj2EoH7FNytSO1dXNGeK15UJw== + dependencies: + bn.js "^4.11.8" + +"@cosmjs/proto-signing@0.26.5", "@cosmjs/proto-signing@^0.26.0": + version "0.26.5" + resolved "https://registry.yarnpkg.com/@cosmjs/proto-signing/-/proto-signing-0.26.5.tgz#5a5029976c696c2d57c48b5d6867808b2b474bb2" + integrity sha512-F94Uh+PX9nF5zGzUHMdEGgys+YCOudaWQehiHBfOjbHUIv0khufcRXs3l9/5dKzizz9ouQ5DHQAiWq/nYKZKqA== + dependencies: + "@cosmjs/amino" "0.26.5" + "@cosmjs/crypto" "0.26.5" + "@cosmjs/math" "0.26.5" + cosmjs-types "^0.2.0" + long "^4.0.0" + protobufjs "~6.10.2" + +"@cosmjs/socket@0.26.5": + version "0.26.5" + resolved "https://registry.yarnpkg.com/@cosmjs/socket/-/socket-0.26.5.tgz#c71e0fa1329ca8e412cc13c1a1e2eb96c0d53a9e" + integrity sha512-kBpXw9wuNHkO1AGuKgDA4/DOA+jZ6Lt0GVJVJIJ6bfjGbsewsNVocktAiH+1dGb47xXg2oH7OwGJL+B/PB3qPQ== + dependencies: + "@cosmjs/stream" "0.26.5" + isomorphic-ws "^4.0.1" + ws "^7" + xstream "^11.14.0" + +"@cosmjs/stargate@^0.26.1": + version "0.26.5" + resolved "https://registry.yarnpkg.com/@cosmjs/stargate/-/stargate-0.26.5.tgz#0c0df8cabd9486a8816cc72dc50dad724d9e37df" + integrity sha512-rnRptbn01zXAa29272XZgxvH6zemPAvlE9/qGouRXpUm3ilHU+PscAq2k1pD17qtOKWRBLY2+x4feXYHwJg9VA== + dependencies: + "@confio/ics23" "^0.6.3" + "@cosmjs/amino" "0.26.5" + "@cosmjs/encoding" "0.26.5" + "@cosmjs/math" "0.26.5" + "@cosmjs/proto-signing" "0.26.5" + "@cosmjs/stream" "0.26.5" + "@cosmjs/tendermint-rpc" "0.26.5" + "@cosmjs/utils" "0.26.5" + cosmjs-types "^0.2.0" + long "^4.0.0" + protobufjs "~6.10.2" + xstream "^11.14.0" + +"@cosmjs/stream@0.26.5": + version "0.26.5" + resolved "https://registry.yarnpkg.com/@cosmjs/stream/-/stream-0.26.5.tgz#600383cb494d5e29148eb2a4615c002298c4d9b5" + integrity sha512-CIr/8bkRlLl36LAtbapsKxA7cMVhmPPWTihAcXgBXik1FM/0XCVNETPTQ64HX47eNQuP5AhWwaMoO553Sf9T2w== + dependencies: + xstream "^11.14.0" + +"@cosmjs/tendermint-rpc@0.26.5": + version "0.26.5" + resolved "https://registry.yarnpkg.com/@cosmjs/tendermint-rpc/-/tendermint-rpc-0.26.5.tgz#31502f64b7c61455ad70a38dd146e7c96608072d" + integrity sha512-bBcFgpTHEP15m8n/bG3cx/LO110sScpEvYvurZDewfy7MW8WETF6sYZaPCGfVDGWde1EPjFLwKKxQ1Da/XoK0A== + dependencies: + "@cosmjs/crypto" "0.26.5" + "@cosmjs/encoding" "0.26.5" + "@cosmjs/json-rpc" "0.26.5" + "@cosmjs/math" "0.26.5" + "@cosmjs/socket" "0.26.5" + "@cosmjs/stream" "0.26.5" + axios "^0.21.2" + readonly-date "^1.0.0" + xstream "^11.14.0" + +"@cosmjs/utils@0.26.5": + version "0.26.5" + resolved "https://registry.yarnpkg.com/@cosmjs/utils/-/utils-0.26.5.tgz#54d73c85c6127e3c439d25bee6983fca8fa700c1" + integrity sha512-VB4Z7lEIXA36q0RON15KexzEosToUtdDyMv7UXSBHSl4mLG/fIZgBIpBEYsaPZ1kh43xyINeKQJiGCp2z5rI+g== + +"@csstools/convert-colors@^1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@csstools/convert-colors/-/convert-colors-1.4.0.tgz#ad495dc41b12e75d588c6db8b9834f08fa131eb7" + integrity sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw== + +"@csstools/normalize.css@^10.1.0": + version "10.1.0" + resolved "https://registry.yarnpkg.com/@csstools/normalize.css/-/normalize.css-10.1.0.tgz#f0950bba18819512d42f7197e56c518aa491cf18" + integrity sha512-ij4wRiunFfaJxjB0BdrYHIH8FxBJpOwNPhhAcunlmPdXudL1WQV1qoP9un6JsEBAgQH+7UXyyjh0g7jTxXK6tg== + +"@davatar/react@^1.8.1": + version "1.8.1" + resolved "https://registry.yarnpkg.com/@davatar/react/-/react-1.8.1.tgz#2fe3e619422a46092c57025328be56b1e911550e" + integrity sha512-vq9zNwAfnZCoY8W2eAbjWP1GPQutUfdxG+lKG2fAPqNFP2qrzDhIziKyCKtt7jwaXp79P1Cy1Gjzlvs1XkzwOQ== + dependencies: + "@ethersproject/contracts" "^5.4.1" + "@ethersproject/providers" "^5.4.5" + "@types/react-blockies" "^1.4.1" + bn.js "^5.2.0" + color "^3.2.1" + mersenne-twister "^1.1.0" + react-blockies "^1.4.1" + +"@deficonnect/browser-utils@^1.6.13": + version "1.6.13" + resolved "https://registry.yarnpkg.com/@deficonnect/browser-utils/-/browser-utils-1.6.13.tgz#23384209f58ce86f9379bfb626342a025761d46c" + integrity sha512-5VJ9qkgtn6WK3tfdd87d3aJbrApW1yKkheRbFSSPcPkYWb7OjVwqgk7tJYEBUh0mEcFvBGLdj2ICY4MOxak8tQ== + dependencies: + "@deficonnect/types" "^1.6.13" + "@walletconnect/safe-json" "1.0.0" + "@walletconnect/window-getters" "1.0.0" + "@walletconnect/window-metadata" "1.0.0" + detect-browser "5.2.0" + +"@deficonnect/client@^1.6.13", "@deficonnect/client@^1.6.8": + version "1.6.13" + resolved "https://registry.yarnpkg.com/@deficonnect/client/-/client-1.6.13.tgz#f70666eb4b7b544ef8b42c079e9b9907d914417c" + integrity sha512-8MUEPzx/elQ5YAl9iKE1Cx/RvH89VAaawuN0k9Ashehe9ejzWqLHIF/HpQZ1c1o/iWkj0lrywHRBYwySQQyQxA== + dependencies: + "@deficonnect/core" "^1.6.13" + "@deficonnect/iso-crypto" "^1.6.13" + "@deficonnect/types" "^1.6.13" + "@deficonnect/utils" "^1.6.13" + +"@deficonnect/core@^1.6.13", "@deficonnect/core@^1.6.8": + version "1.6.13" + resolved "https://registry.yarnpkg.com/@deficonnect/core/-/core-1.6.13.tgz#b1eb70ec485945bb785f3d522ef01b6ad85aefca" + integrity sha512-qP/T/bt2LzHnmQs+UA7Gmsb38XhvDMjDu047fpkGSzQCJDxPSiB3mXHdgx2SbiY+nLdiAJPM/sjNJ7akTCWDWw== + dependencies: + "@deficonnect/socket-transport" "^1.6.13" + "@deficonnect/types" "^1.6.13" + "@deficonnect/utils" "^1.6.13" + +"@deficonnect/http-connection@^1.6.13": + version "1.6.13" + resolved "https://registry.yarnpkg.com/@deficonnect/http-connection/-/http-connection-1.6.13.tgz#31ce9d90e218029d07029160d7bb3d29b9391470" + integrity sha512-VoqWmRdsRGRwGu04kyThQ+eBrLCaFWuQyPvAB6b4Fdt9ghZzRKRx3D97tYH51L9w27gfcIwVj1uVr4kVZ7VYfQ== + dependencies: + "@deficonnect/types" "^1.6.13" + "@deficonnect/utils" "^1.6.13" + eventemitter3 "4.0.7" + xhr2-cookies "1.1.0" + +"@deficonnect/iso-crypto@^1.6.13", "@deficonnect/iso-crypto@^1.6.8": + version "1.6.13" + resolved "https://registry.yarnpkg.com/@deficonnect/iso-crypto/-/iso-crypto-1.6.13.tgz#fa8fe9fad9880fc6474debbacf470953c41b501a" + integrity sha512-1MT5E+yKABLtSp4w65OiJ/0U5OmbdBL3LqxVOE74lTOH6cdf1AZatZmCy4UUdVaciWlqEX6P/4s4wcsXXp521g== + dependencies: + "@deficonnect/types" "^1.6.13" + "@deficonnect/utils" "^1.6.13" + "@walletconnect/crypto" "^1.0.1" + +"@deficonnect/qrcode-modal@^1.6.13": + version "1.6.13" + resolved "https://registry.yarnpkg.com/@deficonnect/qrcode-modal/-/qrcode-modal-1.6.13.tgz#65ea64cbf4feb1ed12136706ef5dc0f126d17ab9" + integrity sha512-pWKfPtOy+j/roQiHQ2/heFvC/JB7me+y/Pl9snQ/w8jBoDP/qWvR3OZ/EXLCjd/f7rN1HDHrvu04Qhke2AUIBQ== + dependencies: + "@deficonnect/browser-utils" "^1.6.13" + "@deficonnect/types" "^1.6.13" + "@walletconnect/mobile-registry" "^1.4.0" + copy-to-clipboard "^3.3.1" + preact "10.4.1" + qrcode "1.4.4" + +"@deficonnect/socket-transport@^1.6.13": + version "1.6.13" + resolved "https://registry.yarnpkg.com/@deficonnect/socket-transport/-/socket-transport-1.6.13.tgz#e71fe82a332b48a60e818d42765c8fcb1a524030" + integrity sha512-qJi9WAMOrpeJ4Sv1Erwrj8zEbqRZKvwU86P7Vv/DNEg0IaOevO1w9IWFHJkw8kDH/pl9WIapgeKuKjcL4rWu7w== + dependencies: + "@deficonnect/types" "^1.6.13" + "@deficonnect/utils" "^1.6.13" + ws "7.5.3" + +"@deficonnect/types@^1.6.13", "@deficonnect/types@^1.6.8": + version "1.6.13" + resolved "https://registry.yarnpkg.com/@deficonnect/types/-/types-1.6.13.tgz#106c1cad675d9db1a2dbc1c5245ff42c179d57ea" + integrity sha512-5ls9LHgQpgaVSsppd/DzlNDO7ZmP9PH8SsbW0TZ1Rw8MG6T66ev7PxxxbkkyKdHqHeQoR7U9SjOtWRRUMVceDQ== + +"@deficonnect/utils@^1.6.13", "@deficonnect/utils@^1.6.8": + version "1.6.13" + resolved "https://registry.yarnpkg.com/@deficonnect/utils/-/utils-1.6.13.tgz#f927062f3930ace33166eeab8a4f3346cda96dd6" + integrity sha512-tvnbP91IyHH6ALkNsshn39JWwNZE6xR9qGbOgGqM0X+q6l/B9d8tzUogcmIKY5Wi+gxxW6OAEXhPC4lAdeIwpg== + dependencies: + "@deficonnect/browser-utils" "^1.6.13" + "@deficonnect/types" "^1.6.13" + "@walletconnect/encoding" "^1.0.0" + "@walletconnect/jsonrpc-utils" "^1.0.0" + bn.js "4.11.8" + js-sha3 "0.8.0" + query-string "6.13.5" + +"@deficonnect/web3-provider@^1.6.8": + version "1.6.13" + resolved "https://registry.yarnpkg.com/@deficonnect/web3-provider/-/web3-provider-1.6.13.tgz#f0d89fe519814fb2b078d83c75b5af73f5a0394b" + integrity sha512-1hPAvruGGMERFwPsA2Ot28GIGRfPWjtndw9FNfCIcjC4BAX5k/Sl1Hf0Spjt24Ub1MZjXE9He70jwT6zhiKqoA== + dependencies: + "@deficonnect/client" "^1.6.13" + "@deficonnect/http-connection" "^1.6.13" + "@deficonnect/qrcode-modal" "^1.6.13" + "@deficonnect/types" "^1.6.13" + "@deficonnect/utils" "^1.6.13" + web3-provider-engine "16.0.1" + +"@emotion/hash@^0.8.0": + version "0.8.0" + resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.8.0.tgz#bbbff68978fefdbe68ccb533bc8cbe1d1afb5413" + integrity sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow== + +"@emotion/is-prop-valid@^0.8.8": + version "0.8.8" + resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz#db28b1c4368a259b60a97311d6a952d4fd01ac1a" + integrity sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA== + dependencies: + "@emotion/memoize" "0.7.4" + +"@emotion/memoize@0.7.4": + version "0.7.4" + resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.7.4.tgz#19bf0f5af19149111c40d98bb0cf82119f5d9eeb" + integrity sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw== + +"@emotion/stylis@^0.8.4": + version "0.8.5" + resolved "https://registry.yarnpkg.com/@emotion/stylis/-/stylis-0.8.5.tgz#deacb389bd6ee77d1e7fcaccce9e16c5c7e78e04" + integrity sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ== + +"@emotion/unitless@^0.7.4": + version "0.7.5" + resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.7.5.tgz#77211291c1900a700b8a78cfafda3160d76949ed" + integrity sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg== + +"@ethereumjs/common@^2.5.0", "@ethereumjs/common@^2.6.0": + version "2.6.0" + resolved "https://registry.yarnpkg.com/@ethereumjs/common/-/common-2.6.0.tgz#feb96fb154da41ee2cc2c5df667621a440f36348" + integrity sha512-Cq2qS0FTu6O2VU1sgg+WyU9Ps0M6j/BEMHN+hRaECXCV/r0aI78u4N6p52QW/BDVhwWZpCdrvG8X7NJdzlpNUA== + dependencies: + crc-32 "^1.2.0" + ethereumjs-util "^7.1.3" + +"@ethereumjs/tx@^3.3.2": + version "3.4.0" + resolved "https://registry.yarnpkg.com/@ethereumjs/tx/-/tx-3.4.0.tgz#7eb1947eefa55eb9cf05b3ca116fb7a3dbd0bce7" + integrity sha512-WWUwg1PdjHKZZxPPo274ZuPsJCWV3SqATrEKQP1n2DrVYVP1aZIYpo/mFaA0BDoE0tIQmBeimRCEA0Lgil+yYw== + dependencies: + "@ethereumjs/common" "^2.6.0" + ethereumjs-util "^7.1.3" + +"@ethersproject/abi@5.0.0-beta.153": + version "5.0.0-beta.153" + resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.0.0-beta.153.tgz#43a37172b33794e4562999f6e2d555b7599a8eee" + integrity sha512-aXweZ1Z7vMNzJdLpR1CZUAIgnwjrZeUSvN9syCwlBaEBUFJmFY+HHnfuTI5vIhVs/mRkfJVrbEyl51JZQqyjAg== + dependencies: + "@ethersproject/address" ">=5.0.0-beta.128" + "@ethersproject/bignumber" ">=5.0.0-beta.130" + "@ethersproject/bytes" ">=5.0.0-beta.129" + "@ethersproject/constants" ">=5.0.0-beta.128" + "@ethersproject/hash" ">=5.0.0-beta.128" + "@ethersproject/keccak256" ">=5.0.0-beta.127" + "@ethersproject/logger" ">=5.0.0-beta.129" + "@ethersproject/properties" ">=5.0.0-beta.131" + "@ethersproject/strings" ">=5.0.0-beta.130" + +"@ethersproject/abi@5.0.7": + version "5.0.7" + resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.0.7.tgz#79e52452bd3ca2956d0e1c964207a58ad1a0ee7b" + integrity sha512-Cqktk+hSIckwP/W8O47Eef60VwmoSC/L3lY0+dIBhQPCNn9E4V7rwmm2aFrNRRDJfFlGuZ1khkQUOc3oBX+niw== + dependencies: + "@ethersproject/address" "^5.0.4" + "@ethersproject/bignumber" "^5.0.7" + "@ethersproject/bytes" "^5.0.4" + "@ethersproject/constants" "^5.0.4" + "@ethersproject/hash" "^5.0.4" + "@ethersproject/keccak256" "^5.0.3" + "@ethersproject/logger" "^5.0.5" + "@ethersproject/properties" "^5.0.3" + "@ethersproject/strings" "^5.0.4" + +"@ethersproject/abi@^5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.5.0.tgz#fb52820e22e50b854ff15ce1647cc508d6660613" + integrity sha512-loW7I4AohP5KycATvc0MgujU6JyCHPqHdeoo9z3Nr9xEiNioxa65ccdm1+fsoJhkuhdRtfcL8cfyGamz2AxZ5w== + dependencies: + "@ethersproject/address" "^5.5.0" + "@ethersproject/bignumber" "^5.5.0" + "@ethersproject/bytes" "^5.5.0" + "@ethersproject/constants" "^5.5.0" + "@ethersproject/hash" "^5.5.0" + "@ethersproject/keccak256" "^5.5.0" + "@ethersproject/logger" "^5.5.0" + "@ethersproject/properties" "^5.5.0" + "@ethersproject/strings" "^5.5.0" + +"@ethersproject/abstract-provider@^5.5.0": + version "5.5.1" + resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.5.1.tgz#2f1f6e8a3ab7d378d8ad0b5718460f85649710c5" + integrity sha512-m+MA/ful6eKbxpr99xUYeRvLkfnlqzrF8SZ46d/xFB1A7ZVknYc/sXJG0RcufF52Qn2jeFj1hhcoQ7IXjNKUqg== + dependencies: + "@ethersproject/bignumber" "^5.5.0" + "@ethersproject/bytes" "^5.5.0" + "@ethersproject/logger" "^5.5.0" + "@ethersproject/networks" "^5.5.0" + "@ethersproject/properties" "^5.5.0" + "@ethersproject/transactions" "^5.5.0" + "@ethersproject/web" "^5.5.0" + +"@ethersproject/abstract-signer@^5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.5.0.tgz#590ff6693370c60ae376bf1c7ada59eb2a8dd08d" + integrity sha512-lj//7r250MXVLKI7sVarXAbZXbv9P50lgmJQGr2/is82EwEb8r7HrxsmMqAjTsztMYy7ohrIhGMIml+Gx4D3mA== + dependencies: + "@ethersproject/abstract-provider" "^5.5.0" + "@ethersproject/bignumber" "^5.5.0" + "@ethersproject/bytes" "^5.5.0" + "@ethersproject/logger" "^5.5.0" + "@ethersproject/properties" "^5.5.0" + +"@ethersproject/address@>=5.0.0-beta.128", "@ethersproject/address@^5.0.4", "@ethersproject/address@^5.3.0", "@ethersproject/address@^5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.5.0.tgz#bcc6f576a553f21f3dd7ba17248f81b473c9c78f" + integrity sha512-l4Nj0eWlTUh6ro5IbPTgbpT4wRbdH5l8CQf7icF7sb/SI3Nhd9Y9HzhonTSTi6CefI0necIw7LJqQPopPLZyWw== + dependencies: + "@ethersproject/bignumber" "^5.5.0" + "@ethersproject/bytes" "^5.5.0" + "@ethersproject/keccak256" "^5.5.0" + "@ethersproject/logger" "^5.5.0" + "@ethersproject/rlp" "^5.5.0" + +"@ethersproject/base64@^5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.5.0.tgz#881e8544e47ed976930836986e5eb8fab259c090" + integrity sha512-tdayUKhU1ljrlHzEWbStXazDpsx4eg1dBXUSI6+mHlYklOXoXF6lZvw8tnD6oVaWfnMxAgRSKROg3cVKtCcppA== + dependencies: + "@ethersproject/bytes" "^5.5.0" + +"@ethersproject/basex@^5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@ethersproject/basex/-/basex-5.5.0.tgz#e40a53ae6d6b09ab4d977bd037010d4bed21b4d3" + integrity sha512-ZIodwhHpVJ0Y3hUCfUucmxKsWQA5TMnavp5j/UOuDdzZWzJlRmuOjcTMIGgHCYuZmHt36BfiSyQPSRskPxbfaQ== + dependencies: + "@ethersproject/bytes" "^5.5.0" + "@ethersproject/properties" "^5.5.0" + +"@ethersproject/bignumber@>=5.0.0-beta.130", "@ethersproject/bignumber@^5.0.7", "@ethersproject/bignumber@^5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.5.0.tgz#875b143f04a216f4f8b96245bde942d42d279527" + integrity sha512-6Xytlwvy6Rn3U3gKEc1vP7nR92frHkv6wtVr95LFR3jREXiCPzdWxKQ1cx4JGQBXxcguAwjA8murlYN2TSiEbg== + dependencies: + "@ethersproject/bytes" "^5.5.0" + "@ethersproject/logger" "^5.5.0" + bn.js "^4.11.9" + +"@ethersproject/bytes@>=5.0.0-beta.129", "@ethersproject/bytes@^5.0.4", "@ethersproject/bytes@^5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.5.0.tgz#cb11c526de657e7b45d2e0f0246fb3b9d29a601c" + integrity sha512-ABvc7BHWhZU9PNM/tANm/Qx4ostPGadAuQzWTr3doklZOhDlmcBqclrQe/ZXUIj3K8wC28oYeuRa+A37tX9kog== + dependencies: + "@ethersproject/logger" "^5.5.0" + +"@ethersproject/constants@>=5.0.0-beta.128", "@ethersproject/constants@^5.0.4", "@ethersproject/constants@^5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.5.0.tgz#d2a2cd7d94bd1d58377d1d66c4f53c9be4d0a45e" + integrity sha512-2MsRRVChkvMWR+GyMGY4N1sAX9Mt3J9KykCsgUFd/1mwS0UH1qw+Bv9k1UJb3X3YJYFco9H20pjSlOIfCG5HYQ== + dependencies: + "@ethersproject/bignumber" "^5.5.0" + +"@ethersproject/contracts@^5.4.1": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.5.0.tgz#b735260d4bd61283a670a82d5275e2a38892c197" + integrity sha512-2viY7NzyvJkh+Ug17v7g3/IJC8HqZBDcOjYARZLdzRxrfGlRgmYgl6xPRKVbEzy1dWKw/iv7chDcS83pg6cLxg== + dependencies: + "@ethersproject/abi" "^5.5.0" + "@ethersproject/abstract-provider" "^5.5.0" + "@ethersproject/abstract-signer" "^5.5.0" + "@ethersproject/address" "^5.5.0" + "@ethersproject/bignumber" "^5.5.0" + "@ethersproject/bytes" "^5.5.0" + "@ethersproject/constants" "^5.5.0" + "@ethersproject/logger" "^5.5.0" + "@ethersproject/properties" "^5.5.0" + "@ethersproject/transactions" "^5.5.0" + +"@ethersproject/hash@>=5.0.0-beta.128", "@ethersproject/hash@^5.0.4", "@ethersproject/hash@^5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.5.0.tgz#7cee76d08f88d1873574c849e0207dcb32380cc9" + integrity sha512-dnGVpK1WtBjmnp3mUT0PlU2MpapnwWI0PibldQEq1408tQBAbZpPidkWoVVuNMOl/lISO3+4hXZWCL3YV7qzfg== + dependencies: + "@ethersproject/abstract-signer" "^5.5.0" + "@ethersproject/address" "^5.5.0" + "@ethersproject/bignumber" "^5.5.0" + "@ethersproject/bytes" "^5.5.0" + "@ethersproject/keccak256" "^5.5.0" + "@ethersproject/logger" "^5.5.0" + "@ethersproject/properties" "^5.5.0" + "@ethersproject/strings" "^5.5.0" + +"@ethersproject/keccak256@>=5.0.0-beta.127", "@ethersproject/keccak256@^5.0.3", "@ethersproject/keccak256@^5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.5.0.tgz#e4b1f9d7701da87c564ffe336f86dcee82983492" + integrity sha512-5VoFCTjo2rYbBe1l2f4mccaRFN/4VQEYFwwn04aJV2h7qf4ZvI2wFxUE1XOX+snbwCLRzIeikOqtAoPwMza9kg== + dependencies: + "@ethersproject/bytes" "^5.5.0" + js-sha3 "0.8.0" + +"@ethersproject/logger@>=5.0.0-beta.129", "@ethersproject/logger@^5.0.5", "@ethersproject/logger@^5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.5.0.tgz#0c2caebeff98e10aefa5aef27d7441c7fd18cf5d" + integrity sha512-rIY/6WPm7T8n3qS2vuHTUBPdXHl+rGxWxW5okDfo9J4Z0+gRRZT0msvUdIJkE4/HS29GUMziwGaaKO2bWONBrg== + +"@ethersproject/networks@^5.5.0": + version "5.5.2" + resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.5.2.tgz#784c8b1283cd2a931114ab428dae1bd00c07630b" + integrity sha512-NEqPxbGBfy6O3x4ZTISb90SjEDkWYDUbEeIFhJly0F7sZjoQMnj5KYzMSkMkLKZ+1fGpx00EDpHQCy6PrDupkQ== + dependencies: + "@ethersproject/logger" "^5.5.0" + +"@ethersproject/properties@>=5.0.0-beta.131", "@ethersproject/properties@^5.0.3", "@ethersproject/properties@^5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.5.0.tgz#61f00f2bb83376d2071baab02245f92070c59995" + integrity sha512-l3zRQg3JkD8EL3CPjNK5g7kMx4qSwiR60/uk5IVjd3oq1MZR5qUg40CNOoEJoX5wc3DyY5bt9EbMk86C7x0DNA== + dependencies: + "@ethersproject/logger" "^5.5.0" + +"@ethersproject/providers@^5.4.5", "@ethersproject/providers@^5.5.2": + version "5.5.2" + resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.5.2.tgz#131ccf52dc17afd0ab69ed444b8c0e3a27297d99" + integrity sha512-hkbx7x/MKcRjyrO4StKXCzCpWer6s97xnm34xkfPiarhtEUVAN4TBBpamM+z66WcTt7H5B53YwbRj1n7i8pZoQ== + dependencies: + "@ethersproject/abstract-provider" "^5.5.0" + "@ethersproject/abstract-signer" "^5.5.0" + "@ethersproject/address" "^5.5.0" + "@ethersproject/basex" "^5.5.0" + "@ethersproject/bignumber" "^5.5.0" + "@ethersproject/bytes" "^5.5.0" + "@ethersproject/constants" "^5.5.0" + "@ethersproject/hash" "^5.5.0" + "@ethersproject/logger" "^5.5.0" + "@ethersproject/networks" "^5.5.0" + "@ethersproject/properties" "^5.5.0" + "@ethersproject/random" "^5.5.0" + "@ethersproject/rlp" "^5.5.0" + "@ethersproject/sha2" "^5.5.0" + "@ethersproject/strings" "^5.5.0" + "@ethersproject/transactions" "^5.5.0" + "@ethersproject/web" "^5.5.0" + bech32 "1.1.4" + ws "7.4.6" + +"@ethersproject/random@^5.5.0": + version "5.5.1" + resolved "https://registry.yarnpkg.com/@ethersproject/random/-/random-5.5.1.tgz#7cdf38ea93dc0b1ed1d8e480ccdaf3535c555415" + integrity sha512-YaU2dQ7DuhL5Au7KbcQLHxcRHfgyNgvFV4sQOo0HrtW3Zkrc9ctWNz8wXQ4uCSfSDsqX2vcjhroxU5RQRV0nqA== + dependencies: + "@ethersproject/bytes" "^5.5.0" + "@ethersproject/logger" "^5.5.0" + +"@ethersproject/rlp@^5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.5.0.tgz#530f4f608f9ca9d4f89c24ab95db58ab56ab99a0" + integrity sha512-hLv8XaQ8PTI9g2RHoQGf/WSxBfTB/NudRacbzdxmst5VHAqd1sMibWG7SENzT5Dj3yZ3kJYx+WiRYEcQTAkcYA== + dependencies: + "@ethersproject/bytes" "^5.5.0" + "@ethersproject/logger" "^5.5.0" + +"@ethersproject/sha2@^5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@ethersproject/sha2/-/sha2-5.5.0.tgz#a40a054c61f98fd9eee99af2c3cc6ff57ec24db7" + integrity sha512-B5UBoglbCiHamRVPLA110J+2uqsifpZaTmid2/7W5rbtYVz6gus6/hSDieIU/6gaKIDcOj12WnOdiymEUHIAOA== + dependencies: + "@ethersproject/bytes" "^5.5.0" + "@ethersproject/logger" "^5.5.0" + hash.js "1.1.7" + +"@ethersproject/signing-key@^5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.5.0.tgz#2aa37169ce7e01e3e80f2c14325f624c29cedbe0" + integrity sha512-5VmseH7qjtNmDdZBswavhotYbWB0bOwKIlOTSlX14rKn5c11QmJwGt4GHeo7NrL/Ycl7uo9AHvEqs5xZgFBTng== + dependencies: + "@ethersproject/bytes" "^5.5.0" + "@ethersproject/logger" "^5.5.0" + "@ethersproject/properties" "^5.5.0" + bn.js "^4.11.9" + elliptic "6.5.4" + hash.js "1.1.7" + +"@ethersproject/solidity@^5.1.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@ethersproject/solidity/-/solidity-5.5.0.tgz#2662eb3e5da471b85a20531e420054278362f93f" + integrity sha512-9NgZs9LhGMj6aCtHXhtmFQ4AN4sth5HuFXVvAQtzmm0jpSCNOTGtrHZJAeYTh7MBjRR8brylWZxBZR9zDStXbw== + dependencies: + "@ethersproject/bignumber" "^5.5.0" + "@ethersproject/bytes" "^5.5.0" + "@ethersproject/keccak256" "^5.5.0" + "@ethersproject/logger" "^5.5.0" + "@ethersproject/sha2" "^5.5.0" + "@ethersproject/strings" "^5.5.0" + +"@ethersproject/strings@>=5.0.0-beta.130", "@ethersproject/strings@^5.0.4", "@ethersproject/strings@^5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.5.0.tgz#e6784d00ec6c57710755699003bc747e98c5d549" + integrity sha512-9fy3TtF5LrX/wTrBaT8FGE6TDJyVjOvXynXJz5MT5azq+E6D92zuKNx7i29sWW2FjVOaWjAsiZ1ZWznuduTIIQ== + dependencies: + "@ethersproject/bytes" "^5.5.0" + "@ethersproject/constants" "^5.5.0" + "@ethersproject/logger" "^5.5.0" + +"@ethersproject/transactions@^5.0.0-beta.135", "@ethersproject/transactions@^5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.5.0.tgz#7e9bf72e97bcdf69db34fe0d59e2f4203c7a2908" + integrity sha512-9RZYSKX26KfzEd/1eqvv8pLauCKzDTub0Ko4LfIgaERvRuwyaNV78mJs7cpIgZaDl6RJui4o49lHwwCM0526zA== + dependencies: + "@ethersproject/address" "^5.5.0" + "@ethersproject/bignumber" "^5.5.0" + "@ethersproject/bytes" "^5.5.0" + "@ethersproject/constants" "^5.5.0" + "@ethersproject/keccak256" "^5.5.0" + "@ethersproject/logger" "^5.5.0" + "@ethersproject/properties" "^5.5.0" + "@ethersproject/rlp" "^5.5.0" + "@ethersproject/signing-key" "^5.5.0" + +"@ethersproject/web@^5.5.0": + version "5.5.1" + resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.5.1.tgz#cfcc4a074a6936c657878ac58917a61341681316" + integrity sha512-olvLvc1CB12sREc1ROPSHTdFCdvMh0J5GSJYiQg2D0hdD4QmJDy8QYDb1CvoqD/bF1c++aeKv2sR5uduuG9dQg== + dependencies: + "@ethersproject/base64" "^5.5.0" + "@ethersproject/bytes" "^5.5.0" + "@ethersproject/logger" "^5.5.0" + "@ethersproject/properties" "^5.5.0" + "@ethersproject/strings" "^5.5.0" + +"@hapi/address@2.x.x": + version "2.1.4" + resolved "https://registry.yarnpkg.com/@hapi/address/-/address-2.1.4.tgz#5d67ed43f3fd41a69d4b9ff7b56e7c0d1d0a81e5" + integrity sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ== + +"@hapi/bourne@1.x.x": + version "1.3.2" + resolved "https://registry.yarnpkg.com/@hapi/bourne/-/bourne-1.3.2.tgz#0a7095adea067243ce3283e1b56b8a8f453b242a" + integrity sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA== + +"@hapi/hoek@8.x.x", "@hapi/hoek@^8.3.0": + version "8.5.1" + resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-8.5.1.tgz#fde96064ca446dec8c55a8c2f130957b070c6e06" + integrity sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow== + +"@hapi/joi@^15.0.0": + version "15.1.1" + resolved "https://registry.yarnpkg.com/@hapi/joi/-/joi-15.1.1.tgz#c675b8a71296f02833f8d6d243b34c57b8ce19d7" + integrity sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ== + dependencies: + "@hapi/address" "2.x.x" + "@hapi/bourne" "1.x.x" + "@hapi/hoek" "8.x.x" + "@hapi/topo" "3.x.x" + +"@hapi/topo@3.x.x": + version "3.1.6" + resolved "https://registry.yarnpkg.com/@hapi/topo/-/topo-3.1.6.tgz#68d935fa3eae7fdd5ab0d7f953f3205d8b2bfc29" + integrity sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ== + dependencies: + "@hapi/hoek" "^8.3.0" + +"@jest/console@^24.7.1", "@jest/console@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-24.9.0.tgz#79b1bc06fb74a8cfb01cbdedf945584b1b9707f0" + integrity sha512-Zuj6b8TnKXi3q4ymac8EQfc3ea/uhLeCGThFqXeC8H9/raaH8ARPUTdId+XyGd03Z4In0/VjD2OYFcBF09fNLQ== + dependencies: + "@jest/source-map" "^24.9.0" + chalk "^2.0.1" + slash "^2.0.0" + +"@jest/core@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-24.9.0.tgz#2ceccd0b93181f9c4850e74f2a9ad43d351369c4" + integrity sha512-Fogg3s4wlAr1VX7q+rhV9RVnUv5tD7VuWfYy1+whMiWUrvl7U3QJSJyWcDio9Lq2prqYsZaeTv2Rz24pWGkJ2A== + dependencies: + "@jest/console" "^24.7.1" + "@jest/reporters" "^24.9.0" + "@jest/test-result" "^24.9.0" + "@jest/transform" "^24.9.0" + "@jest/types" "^24.9.0" + ansi-escapes "^3.0.0" + chalk "^2.0.1" + exit "^0.1.2" + graceful-fs "^4.1.15" + jest-changed-files "^24.9.0" + jest-config "^24.9.0" + jest-haste-map "^24.9.0" + jest-message-util "^24.9.0" + jest-regex-util "^24.3.0" + jest-resolve "^24.9.0" + jest-resolve-dependencies "^24.9.0" + jest-runner "^24.9.0" + jest-runtime "^24.9.0" + jest-snapshot "^24.9.0" + jest-util "^24.9.0" + jest-validate "^24.9.0" + jest-watcher "^24.9.0" + micromatch "^3.1.10" + p-each-series "^1.0.0" + realpath-native "^1.1.0" + rimraf "^2.5.4" + slash "^2.0.0" + strip-ansi "^5.0.0" + +"@jest/environment@^24.3.0", "@jest/environment@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-24.9.0.tgz#21e3afa2d65c0586cbd6cbefe208bafade44ab18" + integrity sha512-5A1QluTPhvdIPFYnO3sZC3smkNeXPVELz7ikPbhUj0bQjB07EoE9qtLrem14ZUYWdVayYbsjVwIiL4WBIMV4aQ== + dependencies: + "@jest/fake-timers" "^24.9.0" + "@jest/transform" "^24.9.0" + "@jest/types" "^24.9.0" + jest-mock "^24.9.0" + +"@jest/fake-timers@^24.3.0", "@jest/fake-timers@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-24.9.0.tgz#ba3e6bf0eecd09a636049896434d306636540c93" + integrity sha512-eWQcNa2YSwzXWIMC5KufBh3oWRIijrQFROsIqt6v/NS9Io/gknw1jsAC9c+ih/RQX4A3O7SeWAhQeN0goKhT9A== + dependencies: + "@jest/types" "^24.9.0" + jest-message-util "^24.9.0" + jest-mock "^24.9.0" + +"@jest/reporters@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-24.9.0.tgz#86660eff8e2b9661d042a8e98a028b8d631a5b43" + integrity sha512-mu4X0yjaHrffOsWmVLzitKmmmWSQ3GGuefgNscUSWNiUNcEOSEQk9k3pERKEQVBb0Cnn88+UESIsZEMH3o88Gw== + dependencies: + "@jest/environment" "^24.9.0" + "@jest/test-result" "^24.9.0" + "@jest/transform" "^24.9.0" + "@jest/types" "^24.9.0" + chalk "^2.0.1" + exit "^0.1.2" + glob "^7.1.2" + istanbul-lib-coverage "^2.0.2" + istanbul-lib-instrument "^3.0.1" + istanbul-lib-report "^2.0.4" + istanbul-lib-source-maps "^3.0.1" + istanbul-reports "^2.2.6" + jest-haste-map "^24.9.0" + jest-resolve "^24.9.0" + jest-runtime "^24.9.0" + jest-util "^24.9.0" + jest-worker "^24.6.0" + node-notifier "^5.4.2" + slash "^2.0.0" + source-map "^0.6.0" + string-length "^2.0.0" + +"@jest/source-map@^24.3.0", "@jest/source-map@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-24.9.0.tgz#0e263a94430be4b41da683ccc1e6bffe2a191714" + integrity sha512-/Xw7xGlsZb4MJzNDgB7PW5crou5JqWiBQaz6xyPd3ArOg2nfn/PunV8+olXbbEZzNl591o5rWKE9BRDaFAuIBg== + dependencies: + callsites "^3.0.0" + graceful-fs "^4.1.15" + source-map "^0.6.0" + +"@jest/test-result@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-24.9.0.tgz#11796e8aa9dbf88ea025757b3152595ad06ba0ca" + integrity sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA== + dependencies: + "@jest/console" "^24.9.0" + "@jest/types" "^24.9.0" + "@types/istanbul-lib-coverage" "^2.0.0" + +"@jest/test-sequencer@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-24.9.0.tgz#f8f334f35b625a4f2f355f2fe7e6036dad2e6b31" + integrity sha512-6qqsU4o0kW1dvA95qfNog8v8gkRN9ph6Lz7r96IvZpHdNipP2cBcb07J1Z45mz/VIS01OHJ3pY8T5fUY38tg4A== + dependencies: + "@jest/test-result" "^24.9.0" + jest-haste-map "^24.9.0" + jest-runner "^24.9.0" + jest-runtime "^24.9.0" + +"@jest/transform@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-24.9.0.tgz#4ae2768b296553fadab09e9ec119543c90b16c56" + integrity sha512-TcQUmyNRxV94S0QpMOnZl0++6RMiqpbH/ZMccFB/amku6Uwvyb1cjYX7xkp5nGNkbX4QPH/FcB6q1HBTHynLmQ== + dependencies: + "@babel/core" "^7.1.0" + "@jest/types" "^24.9.0" + babel-plugin-istanbul "^5.1.0" + chalk "^2.0.1" + convert-source-map "^1.4.0" + fast-json-stable-stringify "^2.0.0" + graceful-fs "^4.1.15" + jest-haste-map "^24.9.0" + jest-regex-util "^24.9.0" + jest-util "^24.9.0" + micromatch "^3.1.10" + pirates "^4.0.1" + realpath-native "^1.1.0" + slash "^2.0.0" + source-map "^0.6.1" + write-file-atomic "2.4.1" + +"@jest/types@^24.3.0", "@jest/types@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-24.9.0.tgz#63cb26cb7500d069e5a389441a7c6ab5e909fc59" + integrity sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^1.1.1" + "@types/yargs" "^13.0.0" + +"@material-ui/core@^4.11.0": + version "4.12.3" + resolved "https://registry.yarnpkg.com/@material-ui/core/-/core-4.12.3.tgz#80d665caf0f1f034e52355c5450c0e38b099d3ca" + integrity sha512-sdpgI/PL56QVsEJldwEe4FFaFTLUqN+rd7sSZiRCdx2E/C7z5yK0y/khAWVBH24tXwto7I1hCzNWfJGZIYJKnw== + dependencies: + "@babel/runtime" "^7.4.4" + "@material-ui/styles" "^4.11.4" + "@material-ui/system" "^4.12.1" + "@material-ui/types" "5.1.0" + "@material-ui/utils" "^4.11.2" + "@types/react-transition-group" "^4.2.0" + clsx "^1.0.4" + hoist-non-react-statics "^3.3.2" + popper.js "1.16.1-lts" + prop-types "^15.7.2" + react-is "^16.8.0 || ^17.0.0" + react-transition-group "^4.4.0" + +"@material-ui/icons@^4.9.1": + version "4.11.2" + resolved "https://registry.yarnpkg.com/@material-ui/icons/-/icons-4.11.2.tgz#b3a7353266519cd743b6461ae9fdfcb1b25eb4c5" + integrity sha512-fQNsKX2TxBmqIGJCSi3tGTO/gZ+eJgWmMJkgDiOfyNaunNaxcklJQFaFogYcFl0qFuaEz1qaXYXboa/bUXVSOQ== + dependencies: + "@babel/runtime" "^7.4.4" + +"@material-ui/lab@^4.0.0-alpha.57": + version "4.0.0-alpha.60" + resolved "https://registry.yarnpkg.com/@material-ui/lab/-/lab-4.0.0-alpha.60.tgz#5ad203aed5a8569b0f1753945a21a05efa2234d2" + integrity sha512-fadlYsPJF+0fx2lRuyqAuJj7hAS1tLDdIEEdov5jlrpb5pp4b+mRDUqQTUxi4inRZHS1bEXpU8QWUhO6xX88aA== + dependencies: + "@babel/runtime" "^7.4.4" + "@material-ui/utils" "^4.11.2" + clsx "^1.0.4" + prop-types "^15.7.2" + react-is "^16.8.0 || ^17.0.0" + +"@material-ui/styles@^4.11.4": + version "4.11.4" + resolved "https://registry.yarnpkg.com/@material-ui/styles/-/styles-4.11.4.tgz#eb9dfccfcc2d208243d986457dff025497afa00d" + integrity sha512-KNTIZcnj/zprG5LW0Sao7zw+yG3O35pviHzejMdcSGCdWbiO8qzRgOYL8JAxAsWBKOKYwVZxXtHWaB5T2Kvxew== + dependencies: + "@babel/runtime" "^7.4.4" + "@emotion/hash" "^0.8.0" + "@material-ui/types" "5.1.0" + "@material-ui/utils" "^4.11.2" + clsx "^1.0.4" + csstype "^2.5.2" + hoist-non-react-statics "^3.3.2" + jss "^10.5.1" + jss-plugin-camel-case "^10.5.1" + jss-plugin-default-unit "^10.5.1" + jss-plugin-global "^10.5.1" + jss-plugin-nested "^10.5.1" + jss-plugin-props-sort "^10.5.1" + jss-plugin-rule-value-function "^10.5.1" + jss-plugin-vendor-prefixer "^10.5.1" + prop-types "^15.7.2" + +"@material-ui/system@^4.12.1": + version "4.12.1" + resolved "https://registry.yarnpkg.com/@material-ui/system/-/system-4.12.1.tgz#2dd96c243f8c0a331b2bb6d46efd7771a399707c" + integrity sha512-lUdzs4q9kEXZGhbN7BptyiS1rLNHe6kG9o8Y307HCvF4sQxbCgpL2qi+gUk+yI8a2DNk48gISEQxoxpgph0xIw== + dependencies: + "@babel/runtime" "^7.4.4" + "@material-ui/utils" "^4.11.2" + csstype "^2.5.2" + prop-types "^15.7.2" + +"@material-ui/types@5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@material-ui/types/-/types-5.1.0.tgz#efa1c7a0b0eaa4c7c87ac0390445f0f88b0d88f2" + integrity sha512-7cqRjrY50b8QzRSYyhSpx4WRw2YuO0KKIGQEVk5J8uoz2BanawykgZGoWEqKm7pVIbzFDN0SpPcVV4IhOFkl8A== + +"@material-ui/utils@^4.11.2": + version "4.11.2" + resolved "https://registry.yarnpkg.com/@material-ui/utils/-/utils-4.11.2.tgz#f1aefa7e7dff2ebcb97d31de51aecab1bb57540a" + integrity sha512-Uul8w38u+PICe2Fg2pDKCaIG7kOyhowZ9vjiC1FsVwPABTW8vPPKfF6OvxRq3IiBaI1faOJmgdvMG7rMJARBhA== + dependencies: + "@babel/runtime" "^7.4.4" + prop-types "^15.7.2" + react-is "^16.8.0 || ^17.0.0" + +"@metamask/safe-event-emitter@2.0.0", "@metamask/safe-event-emitter@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@metamask/safe-event-emitter/-/safe-event-emitter-2.0.0.tgz#af577b477c683fad17c619a78208cede06f9605c" + integrity sha512-/kSXhY692qiV1MXu6EeOZvg5nECLclxNXcKCxJ3cXQgYuRymRHpdx/t7JXfsK+JLjwA1e1c1/SBrlQYpusC29Q== + +"@mrmlnc/readdir-enhanced@^2.2.1": + version "2.2.1" + resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde" + integrity sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g== + dependencies: + call-me-maybe "^1.0.1" + glob-to-regexp "^0.3.0" + +"@nodelib/fs.stat@^1.1.2": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b" + integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw== + +"@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@protobufjs/aspromise/-/aspromise-1.1.2.tgz#9b8b0cc663d669a7d8f6f5d0893a14d348f30fbf" + integrity sha1-m4sMxmPWaafY9vXQiToU00jzD78= + +"@protobufjs/base64@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@protobufjs/base64/-/base64-1.1.2.tgz#4c85730e59b9a1f1f349047dbf24296034bb2735" + integrity sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg== + +"@protobufjs/codegen@^2.0.4": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@protobufjs/codegen/-/codegen-2.0.4.tgz#7ef37f0d010fb028ad1ad59722e506d9262815cb" + integrity sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg== + +"@protobufjs/eventemitter@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz#355cbc98bafad5978f9ed095f397621f1d066b70" + integrity sha1-NVy8mLr61ZePntCV85diHx0Ga3A= + +"@protobufjs/fetch@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/fetch/-/fetch-1.1.0.tgz#ba99fb598614af65700c1619ff06d454b0d84c45" + integrity sha1-upn7WYYUr2VwDBYZ/wbUVLDYTEU= + dependencies: + "@protobufjs/aspromise" "^1.1.1" + "@protobufjs/inquire" "^1.1.0" + +"@protobufjs/float@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@protobufjs/float/-/float-1.0.2.tgz#5e9e1abdcb73fc0a7cb8b291df78c8cbd97b87d1" + integrity sha1-Xp4avctz/Ap8uLKR33jIy9l7h9E= + +"@protobufjs/inquire@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/inquire/-/inquire-1.1.0.tgz#ff200e3e7cf2429e2dcafc1140828e8cc638f089" + integrity sha1-/yAOPnzyQp4tyvwRQIKOjMY48Ik= + +"@protobufjs/path@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@protobufjs/path/-/path-1.1.2.tgz#6cc2b20c5c9ad6ad0dccfd21ca7673d8d7fbf68d" + integrity sha1-bMKyDFya1q0NzP0hynZz2Nf79o0= + +"@protobufjs/pool@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/pool/-/pool-1.1.0.tgz#09fd15f2d6d3abfa9b65bc366506d6ad7846ff54" + integrity sha1-Cf0V8tbTq/qbZbw2ZQbWrXhG/1Q= + +"@protobufjs/utf8@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" + integrity sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA= + +"@sindresorhus/is@^0.14.0": + version "0.14.0" + resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" + integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== + +"@svgr/babel-plugin-add-jsx-attribute@^4.2.0": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-4.2.0.tgz#dadcb6218503532d6884b210e7f3c502caaa44b1" + integrity sha512-j7KnilGyZzYr/jhcrSYS3FGWMZVaqyCG0vzMCwzvei0coIkczuYMcniK07nI0aHJINciujjH11T72ICW5eL5Ig== + +"@svgr/babel-plugin-remove-jsx-attribute@^4.2.0": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-4.2.0.tgz#297550b9a8c0c7337bea12bdfc8a80bb66f85abc" + integrity sha512-3XHLtJ+HbRCH4n28S7y/yZoEQnRpl0tvTZQsHqvaeNXPra+6vE5tbRliH3ox1yZYPCxrlqaJT/Mg+75GpDKlvQ== + +"@svgr/babel-plugin-remove-jsx-empty-expression@^4.2.0": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-4.2.0.tgz#c196302f3e68eab6a05e98af9ca8570bc13131c7" + integrity sha512-yTr2iLdf6oEuUE9MsRdvt0NmdpMBAkgK8Bjhl6epb+eQWk6abBaX3d65UZ3E3FWaOwePyUgNyNCMVG61gGCQ7w== + +"@svgr/babel-plugin-replace-jsx-attribute-value@^4.2.0": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-4.2.0.tgz#310ec0775de808a6a2e4fd4268c245fd734c1165" + integrity sha512-U9m870Kqm0ko8beHawRXLGLvSi/ZMrl89gJ5BNcT452fAjtF2p4uRzXkdzvGJJJYBgx7BmqlDjBN/eCp5AAX2w== + +"@svgr/babel-plugin-svg-dynamic-title@^4.3.3": + version "4.3.3" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-4.3.3.tgz#2cdedd747e5b1b29ed4c241e46256aac8110dd93" + integrity sha512-w3Be6xUNdwgParsvxkkeZb545VhXEwjGMwExMVBIdPQJeyMQHqm9Msnb2a1teHBqUYL66qtwfhNkbj1iarCG7w== + +"@svgr/babel-plugin-svg-em-dimensions@^4.2.0": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-4.2.0.tgz#9a94791c9a288108d20a9d2cc64cac820f141391" + integrity sha512-C0Uy+BHolCHGOZ8Dnr1zXy/KgpBOkEUYY9kI/HseHVPeMbluaX3CijJr7D4C5uR8zrc1T64nnq/k63ydQuGt4w== + +"@svgr/babel-plugin-transform-react-native-svg@^4.2.0": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-4.2.0.tgz#151487322843359a1ca86b21a3815fd21a88b717" + integrity sha512-7YvynOpZDpCOUoIVlaaOUU87J4Z6RdD6spYN4eUb5tfPoKGSF9OG2NuhgYnq4jSkAxcpMaXWPf1cePkzmqTPNw== + +"@svgr/babel-plugin-transform-svg-component@^4.2.0": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-4.2.0.tgz#5f1e2f886b2c85c67e76da42f0f6be1b1767b697" + integrity sha512-hYfYuZhQPCBVotABsXKSCfel2slf/yvJY8heTVX1PCTaq/IgASq1IyxPPKJ0chWREEKewIU/JMSsIGBtK1KKxw== + +"@svgr/babel-preset@^4.3.3": + version "4.3.3" + resolved "https://registry.yarnpkg.com/@svgr/babel-preset/-/babel-preset-4.3.3.tgz#a75d8c2f202ac0e5774e6bfc165d028b39a1316c" + integrity sha512-6PG80tdz4eAlYUN3g5GZiUjg2FMcp+Wn6rtnz5WJG9ITGEF1pmFdzq02597Hn0OmnQuCVaBYQE1OVFAnwOl+0A== + dependencies: + "@svgr/babel-plugin-add-jsx-attribute" "^4.2.0" + "@svgr/babel-plugin-remove-jsx-attribute" "^4.2.0" + "@svgr/babel-plugin-remove-jsx-empty-expression" "^4.2.0" + "@svgr/babel-plugin-replace-jsx-attribute-value" "^4.2.0" + "@svgr/babel-plugin-svg-dynamic-title" "^4.3.3" + "@svgr/babel-plugin-svg-em-dimensions" "^4.2.0" + "@svgr/babel-plugin-transform-react-native-svg" "^4.2.0" + "@svgr/babel-plugin-transform-svg-component" "^4.2.0" + +"@svgr/core@^4.3.3": + version "4.3.3" + resolved "https://registry.yarnpkg.com/@svgr/core/-/core-4.3.3.tgz#b37b89d5b757dc66e8c74156d00c368338d24293" + integrity sha512-qNuGF1QON1626UCaZamWt5yedpgOytvLj5BQZe2j1k1B8DUG4OyugZyfEwBeXozCUwhLEpsrgPrE+eCu4fY17w== + dependencies: + "@svgr/plugin-jsx" "^4.3.3" + camelcase "^5.3.1" + cosmiconfig "^5.2.1" + +"@svgr/hast-util-to-babel-ast@^4.3.2": + version "4.3.2" + resolved "https://registry.yarnpkg.com/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-4.3.2.tgz#1d5a082f7b929ef8f1f578950238f630e14532b8" + integrity sha512-JioXclZGhFIDL3ddn4Kiq8qEqYM2PyDKV0aYno8+IXTLuYt6TOgHUbUAAFvqtb0Xn37NwP0BTHglejFoYr8RZg== + dependencies: + "@babel/types" "^7.4.4" + +"@svgr/plugin-jsx@^4.3.3": + version "4.3.3" + resolved "https://registry.yarnpkg.com/@svgr/plugin-jsx/-/plugin-jsx-4.3.3.tgz#e2ba913dbdfbe85252a34db101abc7ebd50992fa" + integrity sha512-cLOCSpNWQnDB1/v+SUENHH7a0XY09bfuMKdq9+gYvtuwzC2rU4I0wKGFEp1i24holdQdwodCtDQdFtJiTCWc+w== + dependencies: + "@babel/core" "^7.4.5" + "@svgr/babel-preset" "^4.3.3" + "@svgr/hast-util-to-babel-ast" "^4.3.2" + svg-parser "^2.0.0" + +"@svgr/plugin-svgo@^4.3.1": + version "4.3.1" + resolved "https://registry.yarnpkg.com/@svgr/plugin-svgo/-/plugin-svgo-4.3.1.tgz#daac0a3d872e3f55935c6588dd370336865e9e32" + integrity sha512-PrMtEDUWjX3Ea65JsVCwTIXuSqa3CG9px+DluF1/eo9mlDrgrtFE7NE/DjdhjJgSM9wenlVBzkzneSIUgfUI/w== + dependencies: + cosmiconfig "^5.2.1" + merge-deep "^3.0.2" + svgo "^1.2.2" + +"@svgr/webpack@4.3.3": + version "4.3.3" + resolved "https://registry.yarnpkg.com/@svgr/webpack/-/webpack-4.3.3.tgz#13cc2423bf3dff2d494f16b17eb7eacb86895017" + integrity sha512-bjnWolZ6KVsHhgyCoYRFmbd26p8XVbulCzSG53BDQqAr+JOAderYK7CuYrB3bDjHJuF6LJ7Wrr42+goLRV9qIg== + dependencies: + "@babel/core" "^7.4.5" + "@babel/plugin-transform-react-constant-elements" "^7.0.0" + "@babel/preset-env" "^7.4.5" + "@babel/preset-react" "^7.0.0" + "@svgr/core" "^4.3.3" + "@svgr/plugin-jsx" "^4.3.3" + "@svgr/plugin-svgo" "^4.3.1" + loader-utils "^1.2.3" + +"@szmarczak/http-timer@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-1.1.2.tgz#b1665e2c461a2cd92f4c1bbf50d5454de0d4b421" + integrity sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA== + dependencies: + defer-to-connect "^1.0.1" + +"@transak/transak-sdk@^1.0.31": + version "1.0.31" + resolved "https://registry.yarnpkg.com/@transak/transak-sdk/-/transak-sdk-1.0.31.tgz#13a2b3fae27d5e309bf2e13932b9f7533c0eb46c" + integrity sha512-mja3qlFW71cTOXGSIrIPv4QPkcQ6ff3nXtJk0b5EzmqiU7CZWWstYf5cc5fJcmVO4/tWI0pP4S2Ex1iPUAcxwQ== + dependencies: + events "^3.1.0" + query-string "^6.12.1" + request "^2.88.2" + +"@types/babel__core@^7.1.0": + version "7.1.18" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.18.tgz#1a29abcc411a9c05e2094c98f9a1b7da6cdf49f8" + integrity sha512-S7unDjm/C7z2A2R9NzfKCK1I+BAALDtxEmsJBwlB3EzNfb929ykjL++1CK9LO++EIp2fQrC8O+BwjKvz6UeDyQ== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + "@types/babel__generator" "*" + "@types/babel__template" "*" + "@types/babel__traverse" "*" + +"@types/babel__generator@*": + version "7.6.4" + resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.4.tgz#1f20ce4c5b1990b37900b63f050182d28c2439b7" + integrity sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg== + dependencies: + "@babel/types" "^7.0.0" + +"@types/babel__template@*": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.1.tgz#3d1a48fd9d6c0edfd56f2ff578daed48f36c8969" + integrity sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + +"@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": + version "7.14.2" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.14.2.tgz#ffcd470bbb3f8bf30481678fb5502278ca833a43" + integrity sha512-K2waXdXBi2302XUdcHcR1jCeU0LL4TD9HRs/gk0N2Xvrht+G/BfJa4QObBQZfhMdxiCpV3COl5Nfq4uKTeTnJA== + dependencies: + "@babel/types" "^7.3.0" + +"@types/bn.js@^4.11.3", "@types/bn.js@^4.11.5": + version "4.11.6" + resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-4.11.6.tgz#c306c70d9358aaea33cd4eda092a742b9505967c" + integrity sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg== + dependencies: + "@types/node" "*" + +"@types/bn.js@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-5.1.0.tgz#32c5d271503a12653c62cf4d2b45e6eab8cebc68" + integrity sha512-QSSVYj7pYFN49kW77o2s9xTCwZ8F2xLbjLLSEVh8D2F4JUhZtPAGOFLTD+ffqksBx/u4cE/KImFjyhqCjn/LIA== + dependencies: + "@types/node" "*" + +"@types/eslint-visitor-keys@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#1ee30d79544ca84d68d4b3cdb0af4f205663dd2d" + integrity sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag== + +"@types/glob@^7.1.1": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.2.0.tgz#bc1b5bf3aa92f25bd5dd39f35c57361bdce5b2eb" + integrity sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA== + dependencies: + "@types/minimatch" "*" + "@types/node" "*" + +"@types/hoist-non-react-statics@^3.3.0": + version "3.3.1" + resolved "https://registry.yarnpkg.com/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz#1124aafe5118cb591977aeb1ceaaed1070eb039f" + integrity sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA== + dependencies: + "@types/react" "*" + hoist-non-react-statics "^3.3.0" + +"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44" + integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g== + +"@types/istanbul-lib-report@*": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686" + integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== + dependencies: + "@types/istanbul-lib-coverage" "*" + +"@types/istanbul-reports@^1.1.1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz#e875cc689e47bce549ec81f3df5e6f6f11cfaeb2" + integrity sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw== + dependencies: + "@types/istanbul-lib-coverage" "*" + "@types/istanbul-lib-report" "*" + +"@types/json-schema@^7.0.3", "@types/json-schema@^7.0.5": + version "7.0.9" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.9.tgz#97edc9037ea0c38585320b28964dde3b39e4660d" + integrity sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ== + +"@types/lodash@^4.14.159": + version "4.14.178" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.178.tgz#341f6d2247db528d4a13ddbb374bcdc80406f4f8" + integrity sha512-0d5Wd09ItQWH1qFbEyQ7oTQ3GZrMfth5JkbN3EvTKLXcHLRDSXeLnlvlOn0wvxVIwK5o2M8JzP/OWz7T3NRsbw== + +"@types/long@^4.0.1": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@types/long/-/long-4.0.1.tgz#459c65fa1867dafe6a8f322c4c51695663cc55e9" + integrity sha512-5tXH6Bx/kNGd3MgffdmP4dy2Z+G4eaXw0SE81Tq3BNadtnMR5/ySMzX4SLEzHJzSmPNn4HIdpQsBvXMUykr58w== + +"@types/minimatch@*": + version "3.0.5" + resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40" + integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ== + +"@types/node@*", "@types/node@>=13.7.0": + version "17.0.8" + resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.8.tgz#50d680c8a8a78fe30abe6906453b21ad8ab0ad7b" + integrity sha512-YofkM6fGv4gDJq78g4j0mMuGMkZVxZDgtU0JRdx6FgiJDG+0fY0GKVolOV8WqVmEhLCXkQRjwDdKyPxJp/uucg== + +"@types/node@11.11.6": + version "11.11.6" + resolved "https://registry.yarnpkg.com/@types/node/-/node-11.11.6.tgz#df929d1bb2eee5afdda598a41930fe50b43eaa6a" + integrity sha512-Exw4yUWMBXM3X+8oqzJNRqZSwUAaS4+7NdvHqQuFi/d+synz++xmX3QIf+BFqneW8N31R8Ky+sikfZUXq07ggQ== + +"@types/node@^12.12.6": + version "12.20.41" + resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.41.tgz#81d7734c5257da9f04354bd9084a6ebbdd5198a5" + integrity sha512-f6xOqucbDirG7LOzedpvzjP3UTmHttRou3Mosx3vL9wr9AIQGhcPgVnqa8ihpZYnxyM1rxeNCvTyukPKZtq10Q== + +"@types/node@^13.7.0": + version "13.13.52" + resolved "https://registry.yarnpkg.com/@types/node/-/node-13.13.52.tgz#03c13be70b9031baaed79481c0c0cfb0045e53f7" + integrity sha512-s3nugnZumCC//n4moGGe6tkNMyYEdaDBitVjwPxXmR5lnMG5dHePinH2EdxkG3Rh1ghFHHixAG4NJhpJW1rthQ== + +"@types/parse-json@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" + integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== + +"@types/pbkdf2@^3.0.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@types/pbkdf2/-/pbkdf2-3.1.0.tgz#039a0e9b67da0cdc4ee5dab865caa6b267bb66b1" + integrity sha512-Cf63Rv7jCQ0LaL8tNXmEyqTHuIJxRdlS5vMh1mj5voN4+QFhVZnlZruezqpWYDiJ8UTzhP0VmeLXCmBk66YrMQ== + dependencies: + "@types/node" "*" + +"@types/prop-types@*": + version "15.7.4" + resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.4.tgz#fcf7205c25dff795ee79af1e30da2c9790808f11" + integrity sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ== + +"@types/q@^1.5.1": + version "1.5.5" + resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.5.tgz#75a2a8e7d8ab4b230414505d92335d1dcb53a6df" + integrity sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ== + +"@types/qrcode@^1.4.1": + version "1.4.2" + resolved "https://registry.yarnpkg.com/@types/qrcode/-/qrcode-1.4.2.tgz#7d7142d6fa9921f195db342ed08b539181546c74" + integrity sha512-7uNT9L4WQTNJejHTSTdaJhfBSCN73xtXaHFyBJ8TSwiLhe4PRuTue7Iph0s2nG9R/ifUaSnGhLUOZavlBEqDWQ== + dependencies: + "@types/node" "*" + +"@types/react-blockies@^1.4.1": + version "1.4.1" + resolved "https://registry.yarnpkg.com/@types/react-blockies/-/react-blockies-1.4.1.tgz#d5f6fff8ece3e90f2e7708f8f3156c87333312df" + integrity sha512-aDX0g0hwzdodkGLSDNUQr6gXxwclGjnhS8jhsR8uQhAfe/7i3GZD/NDcSlQ2SiQiLhfRxX3NlY+nvBwf5Y0tTg== + dependencies: + "@types/react" "*" + +"@types/react-modal@^3.12.0": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@types/react-modal/-/react-modal-3.13.1.tgz#5b9845c205fccc85d9a77966b6e16dc70a60825a" + integrity sha512-iY/gPvTDIy6Z+37l+ibmrY+GTV4KQTHcCyR5FIytm182RQS69G5ps4PH2FxtC7bAQ2QRHXMevsBgck7IQruHNg== + dependencies: + "@types/react" "*" + +"@types/react-redux@^7.1.20": + version "7.1.21" + resolved "https://registry.yarnpkg.com/@types/react-redux/-/react-redux-7.1.21.tgz#f32bbaf7cbc4b93f51e10d340aa54035c084b186" + integrity sha512-bLdglUiBSQNzWVVbmNPKGYYjrzp3/YDPwfOH3nLEz99I4awLlaRAPWjo6bZ2POpxztFWtDDXIPxBLVykXqBt+w== + dependencies: + "@types/hoist-non-react-statics" "^3.3.0" + "@types/react" "*" + hoist-non-react-statics "^3.3.0" + redux "^4.0.0" + +"@types/react-transition-group@^4.2.0": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@types/react-transition-group/-/react-transition-group-4.4.4.tgz#acd4cceaa2be6b757db61ed7b432e103242d163e" + integrity sha512-7gAPz7anVK5xzbeQW9wFBDg7G++aPLAFY0QaSMOou9rJZpbuI58WAuJrgu+qR92l61grlnCUe7AFX8KGahAgug== + dependencies: + "@types/react" "*" + +"@types/react@*": + version "17.0.38" + resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.38.tgz#f24249fefd89357d5fa71f739a686b8d7c7202bd" + integrity sha512-SI92X1IA+FMnP3qM5m4QReluXzhcmovhZnLNm3pyeQlooi02qI7sLiepEYqT678uNiyc25XfCqxREFpy3W7YhQ== + dependencies: + "@types/prop-types" "*" + "@types/scheduler" "*" + csstype "^3.0.2" + +"@types/scheduler@*": + version "0.16.2" + resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.2.tgz#1a62f89525723dde24ba1b01b092bf5df8ad4d39" + integrity sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew== + +"@types/secp256k1@^4.0.1": + version "4.0.3" + resolved "https://registry.yarnpkg.com/@types/secp256k1/-/secp256k1-4.0.3.tgz#1b8e55d8e00f08ee7220b4d59a6abe89c37a901c" + integrity sha512-Da66lEIFeIz9ltsdMZcpQvmrmmoqrfju8pm1BH8WbYjZSwUgCwXLb9C+9XYogwBITnbsSaMdVPb2ekf7TV+03w== + dependencies: + "@types/node" "*" + +"@types/stack-utils@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-1.0.1.tgz#0a851d3bd96498fa25c33ab7278ed3bd65f06c3e" + integrity sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw== + +"@types/yargs-parser@*": + version "20.2.1" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-20.2.1.tgz#3b9ce2489919d9e4fea439b76916abc34b2df129" + integrity sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw== + +"@types/yargs@^13.0.0": + version "13.0.12" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-13.0.12.tgz#d895a88c703b78af0465a9de88aa92c61430b092" + integrity sha512-qCxJE1qgz2y0hA4pIxjBR+PelCH0U5CK1XJXFwCNqfmliatKp47UCXXE9Dyk1OXBDLvsCF57TqQEJaeLfDYEOQ== + dependencies: + "@types/yargs-parser" "*" + +"@typescript-eslint/eslint-plugin@^2.10.0": + version "2.34.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.34.0.tgz#6f8ce8a46c7dea4a6f1d171d2bb8fbae6dac2be9" + integrity sha512-4zY3Z88rEE99+CNvTbXSyovv2z9PNOVffTWD2W8QF5s2prBQtwN2zadqERcrHpcR7O/+KMI3fcTAmUUhK/iQcQ== + dependencies: + "@typescript-eslint/experimental-utils" "2.34.0" + functional-red-black-tree "^1.0.1" + regexpp "^3.0.0" + tsutils "^3.17.1" + +"@typescript-eslint/experimental-utils@2.34.0": + version "2.34.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-2.34.0.tgz#d3524b644cdb40eebceca67f8cf3e4cc9c8f980f" + integrity sha512-eS6FTkq+wuMJ+sgtuNTtcqavWXqsflWcfBnlYhg/nS4aZ1leewkXGbvBhaapn1q6qf4M71bsR1tez5JTRMuqwA== + dependencies: + "@types/json-schema" "^7.0.3" + "@typescript-eslint/typescript-estree" "2.34.0" + eslint-scope "^5.0.0" + eslint-utils "^2.0.0" + +"@typescript-eslint/parser@^2.10.0": + version "2.34.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-2.34.0.tgz#50252630ca319685420e9a39ca05fe185a256bc8" + integrity sha512-03ilO0ucSD0EPTw2X4PntSIRFtDPWjrVq7C3/Z3VQHRC7+13YB55rcJI3Jt+YgeHbjUdJPcPa7b23rXCBokuyA== + dependencies: + "@types/eslint-visitor-keys" "^1.0.0" + "@typescript-eslint/experimental-utils" "2.34.0" + "@typescript-eslint/typescript-estree" "2.34.0" + eslint-visitor-keys "^1.1.0" + +"@typescript-eslint/typescript-estree@2.34.0": + version "2.34.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-2.34.0.tgz#14aeb6353b39ef0732cc7f1b8285294937cf37d5" + integrity sha512-OMAr+nJWKdlVM9LOqCqh3pQQPwxHAN7Du8DR6dmwCrAmxtiXQnhHJ6tBNtf+cggqfo51SG/FCwnKhXCIM7hnVg== + dependencies: + debug "^4.1.1" + eslint-visitor-keys "^1.1.0" + glob "^7.1.6" + is-glob "^4.0.1" + lodash "^4.17.15" + semver "^7.3.2" + tsutils "^3.17.1" + +"@walletconnect/browser-utils@^1.7.0": + version "1.7.0" + resolved "https://registry.yarnpkg.com/@walletconnect/browser-utils/-/browser-utils-1.7.0.tgz#b420eb110d5ea4d7fe00084537fd720a72b68d56" + integrity sha512-bQsbCIDTT1OB4v8VF5bzg3byp03qTst9kLmjQj68ElecIUcdS6nZvEDhZdQK/r63WMVnA2KrTb5AEN6hPRGgIw== + dependencies: + "@walletconnect/safe-json" "1.0.0" + "@walletconnect/types" "^1.7.0" + "@walletconnect/window-getters" "1.0.0" + "@walletconnect/window-metadata" "1.0.0" + detect-browser "5.2.0" + +"@walletconnect/client@^1.7.0": + version "1.7.0" + resolved "https://registry.yarnpkg.com/@walletconnect/client/-/client-1.7.0.tgz#f656952a23367cc4890ca16cc3f10ee7dabb2f03" + integrity sha512-56aXK9Rb30cHhl4DMaUakz/3KG3Mr+/9h2iCvKDqAxmIeD931ahMZlBu86T7hGf4vboisZZEhj8/ZwiAM4Ukvg== + dependencies: + "@walletconnect/core" "^1.7.0" + "@walletconnect/iso-crypto" "^1.7.0" + "@walletconnect/types" "^1.7.0" + "@walletconnect/utils" "^1.7.0" + +"@walletconnect/core@^1.7.0": + version "1.7.0" + resolved "https://registry.yarnpkg.com/@walletconnect/core/-/core-1.7.0.tgz#eb318bfce80a5454e12f1d7811a583e2d1adcb42" + integrity sha512-0YX9Y/CVYctKPcSgSyp2wLrk4OgSenmyzWj6Z3C93Hb7PG+tJ+dKCeNFeEIYA03QQRxHew5uMLPbVgmdtmB/0w== + dependencies: + "@walletconnect/socket-transport" "^1.7.0" + "@walletconnect/types" "^1.7.0" + "@walletconnect/utils" "^1.7.0" + +"@walletconnect/crypto@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@walletconnect/crypto/-/crypto-1.0.1.tgz#d4c1b1cd5dd1be88fe9a82dfc54cadbbb3f9d325" + integrity sha512-IgUReNrycIFxkGgq8YT9HsosCkhutakWD9Q411PR0aJfxpEa/VKJeaLRtoz6DvJpztWStwhIHnAbBoOVR72a6g== + dependencies: + "@walletconnect/encoding" "^1.0.0" + "@walletconnect/environment" "^1.0.0" + "@walletconnect/randombytes" "^1.0.1" + aes-js "^3.1.2" + hash.js "^1.1.7" + +"@walletconnect/encoding@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@walletconnect/encoding/-/encoding-1.0.0.tgz#e24190cb5e803526f9dfd7191fb0e4dc53c6d864" + integrity sha512-4nkJFnS0QF5JdieG/3VPD1/iEWkLSZ14EBInLZ00RWxmC6EMZrzAeHNAWIgm+xP3NK0lqz+7lEsmWGtcl5gYnQ== + dependencies: + is-typedarray "1.0.0" + typedarray-to-buffer "3.1.5" + +"@walletconnect/environment@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@walletconnect/environment/-/environment-1.0.0.tgz#c4545869fa9c389ec88c364e1a5f8178e8ab5034" + integrity sha512-4BwqyWy6KpSvkocSaV7WR3BlZfrxLbJSLkg+j7Gl6pTDE+U55lLhJvQaMuDVazXYxcjBsG09k7UlH7cGiUI5vQ== + +"@walletconnect/http-connection@^1.7.0": + version "1.7.0" + resolved "https://registry.yarnpkg.com/@walletconnect/http-connection/-/http-connection-1.7.0.tgz#10021bc76bf1311c9da341dd5e6cc38cd7cdb8c0" + integrity sha512-U76SSiXfgsfhZodxZCvOxgeQ4UMv4mVN+NEbPHiM5KpNsaxG/aKanUjxznNhrIffQNiVRc9TphsmDeQHggdZcA== + dependencies: + "@walletconnect/types" "^1.7.0" + "@walletconnect/utils" "^1.7.0" + eventemitter3 "4.0.7" + xhr2-cookies "1.1.0" + +"@walletconnect/iso-crypto@^1.7.0": + version "1.7.0" + resolved "https://registry.yarnpkg.com/@walletconnect/iso-crypto/-/iso-crypto-1.7.0.tgz#ccb968504ee5925ae75c64efe610631470072982" + integrity sha512-ZUQ/MAM9TXtneIaRjxW/PuFF+es4I9OrCGFgVTCYAaa7p2zdy7BgHmVOnxxOpUh9VYwLXoiA/FU234NwS0ulYw== + dependencies: + "@walletconnect/crypto" "^1.0.1" + "@walletconnect/types" "^1.7.0" + "@walletconnect/utils" "^1.7.0" + +"@walletconnect/jsonrpc-types@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-types/-/jsonrpc-types-1.0.0.tgz#fa75ad5e8f106a2e33287b1e6833e22ed0225055" + integrity sha512-11QXNq5H1PKZk7bP8SxgmCw3HRaDuPOVE+wObqEvmhc7OWYUZqfuaaMb+OXGRSOHL3sbC+XHfdeCxFTMXSFyng== + dependencies: + keyvaluestorage-interface "^1.0.0" + +"@walletconnect/jsonrpc-utils@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-utils/-/jsonrpc-utils-1.0.0.tgz#1a2f668d606e8f0b6e7d8fdebae86001bd037a3f" + integrity sha512-qUHbKUK6sHeHn67qtHZoLoYk5hS6x1arTPjKDRkY93/6Fx+ZmNIpdm1owX3l6aYueyegJ7mz43FpvYHUqJ8xcw== + dependencies: + "@walletconnect/environment" "^1.0.0" + "@walletconnect/jsonrpc-types" "^1.0.0" + +"@walletconnect/mobile-registry@^1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@walletconnect/mobile-registry/-/mobile-registry-1.4.0.tgz#502cf8ab87330841d794819081e748ebdef7aee5" + integrity sha512-ZtKRio4uCZ1JUF7LIdecmZt7FOLnX72RPSY7aUVu7mj7CSfxDwUn6gBuK6WGtH+NZCldBqDl5DenI5fFSvkKYw== + +"@walletconnect/qrcode-modal@^1.7.0": + version "1.7.0" + resolved "https://registry.yarnpkg.com/@walletconnect/qrcode-modal/-/qrcode-modal-1.7.0.tgz#643b6d4da41e3907b105e90a30d6ba03331536a8" + integrity sha512-v2VL6+ugDYlW74ABiAVXG7YViELo3SNFHAHMbIO3ZvWhAB34KNyhkxGjoinOBuPdFUOyA4wTpbY9Q7jJRZDabA== + dependencies: + "@walletconnect/browser-utils" "^1.7.0" + "@walletconnect/mobile-registry" "^1.4.0" + "@walletconnect/types" "^1.7.0" + copy-to-clipboard "^3.3.1" + preact "10.4.1" + qrcode "1.4.4" + +"@walletconnect/randombytes@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@walletconnect/randombytes/-/randombytes-1.0.1.tgz#87f0f02d9206704ce1c9e23f07d3b28898c48385" + integrity sha512-YJTyq69i0PtxVg7osEpKfvjTaWuAsR49QEcqGKZRKVQWMbGXBZ65fovemK/SRgtiFRv0V8PwsrlKSheqzfPNcg== + dependencies: + "@walletconnect/encoding" "^1.0.0" + "@walletconnect/environment" "^1.0.0" + randombytes "^2.1.0" + +"@walletconnect/safe-json@1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@walletconnect/safe-json/-/safe-json-1.0.0.tgz#12eeb11d43795199c045fafde97e3c91646683b2" + integrity sha512-QJzp/S/86sUAgWY6eh5MKYmSfZaRpIlmCJdi5uG4DJlKkZrHEF7ye7gA+VtbVzvTtpM/gRwO2plQuiooIeXjfg== + +"@walletconnect/socket-transport@^1.7.0": + version "1.7.0" + resolved "https://registry.yarnpkg.com/@walletconnect/socket-transport/-/socket-transport-1.7.0.tgz#713a162d577fdda0b44753227b699b6f93927b97" + integrity sha512-HSWGZxdxDtf8K1Kd1eD1QuObpoNxHui+A/+inuC8i8fcifDjZu85AeJIfCKQijlmgjLR/25Ry3eJFbYpRXxUjQ== + dependencies: + "@walletconnect/types" "^1.7.0" + "@walletconnect/utils" "^1.7.0" + ws "7.5.3" + +"@walletconnect/types@^1.7.0": + version "1.7.0" + resolved "https://registry.yarnpkg.com/@walletconnect/types/-/types-1.7.0.tgz#e6d0f7e41e5d22303b57be0739716a8dd8c968b4" + integrity sha512-eoqnF+U04IuMfGIBsqYhAR6SIM2kzcrZM/RCVcomT/lIcsRoBwNxR+86+3Vn12/iaGnuAKn8xDZhZ47SLFmanQ== + +"@walletconnect/utils@^1.7.0": + version "1.7.0" + resolved "https://registry.yarnpkg.com/@walletconnect/utils/-/utils-1.7.0.tgz#1dbb1268c1ee245df378957945bf036a3d9fdbf5" + integrity sha512-DnYyKNMkpPUkbu6YwHfycvzlpx7Ro/qDPIDAuaNYT4FFWFyYxfx2ZY66kU3XklQivAc8dK7TyvYPJ08LWd8w4Q== + dependencies: + "@walletconnect/browser-utils" "^1.7.0" + "@walletconnect/encoding" "^1.0.0" + "@walletconnect/jsonrpc-utils" "^1.0.0" + "@walletconnect/types" "^1.7.0" + bn.js "4.11.8" + js-sha3 "0.8.0" + query-string "6.13.5" + +"@walletconnect/web3-provider@^1.6.5": + version "1.7.0" + resolved "https://registry.yarnpkg.com/@walletconnect/web3-provider/-/web3-provider-1.7.0.tgz#14d67a75555547205e9fd916a7142b1f951a143e" + integrity sha512-tX0nKVJAs1jrRmFAP8nv1h27ZttWQ/4pOW8hkH32JIB76zbsncdUOjHpnzpzgXrzMyrCzfeXeZ8dbdW4jS1KDw== + dependencies: + "@walletconnect/client" "^1.7.0" + "@walletconnect/http-connection" "^1.7.0" + "@walletconnect/qrcode-modal" "^1.7.0" + "@walletconnect/types" "^1.7.0" + "@walletconnect/utils" "^1.7.0" + web3-provider-engine "16.0.1" + +"@walletconnect/window-getters@1.0.0", "@walletconnect/window-getters@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@walletconnect/window-getters/-/window-getters-1.0.0.tgz#1053224f77e725dfd611c83931b5f6c98c32bfc8" + integrity sha512-xB0SQsLaleIYIkSsl43vm8EwETpBzJ2gnzk7e0wMF3ktqiTGS6TFHxcprMl5R44KKh4tCcHCJwolMCaDSwtAaA== + +"@walletconnect/window-metadata@1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@walletconnect/window-metadata/-/window-metadata-1.0.0.tgz#93b1cc685e6b9b202f29c26be550fde97800c4e5" + integrity sha512-9eFvmJxIKCC3YWOL97SgRkKhlyGXkrHwamfechmqszbypFspaSk+t2jQXAEU7YClHF6Qjw5eYOmy1//zFi9/GA== + dependencies: + "@walletconnect/window-getters" "^1.0.0" + +"@web3-react/abstract-connector@^6.0.7": + version "6.0.7" + resolved "https://registry.yarnpkg.com/@web3-react/abstract-connector/-/abstract-connector-6.0.7.tgz#401b3c045f1e0fab04256311be49d5144e9badc6" + integrity sha512-RhQasA4Ox8CxUC0OENc1AJJm8UTybu/oOCM61Zjg6y0iF7Z0sqv1Ai1VdhC33hrQpA8qSBgoXN9PaP8jKmtdqg== + dependencies: + "@web3-react/types" "^6.0.7" + +"@web3-react/injected-connector@^6.0.7": + version "6.0.7" + resolved "https://registry.yarnpkg.com/@web3-react/injected-connector/-/injected-connector-6.0.7.tgz#1e0be23f51fa07fe6547fe986768a46b74c3a426" + integrity sha512-Y7aJSz6pg+MWKtvdyuqyy6LWuH+4Tqtph1LWfiyVms9II9ar/9B/de4R8wh4wjg91wmHkU+D75yP09E/Soh2RA== + dependencies: + "@web3-react/abstract-connector" "^6.0.7" + "@web3-react/types" "^6.0.7" + tiny-warning "^1.0.3" + +"@web3-react/types@^6.0.7": + version "6.0.7" + resolved "https://registry.yarnpkg.com/@web3-react/types/-/types-6.0.7.tgz#34a6204224467eedc6123abaf55fbb6baeb2809f" + integrity sha512-ofGmfDhxmNT1/P/MgVa8IKSkCStFiyvXe+U5tyZurKdrtTDFU+wJ/LxClPDtFerWpczNFPUSrKcuhfPX1sI6+A== + +"@webassemblyjs/ast@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.8.5.tgz#51b1c5fe6576a34953bf4b253df9f0d490d9e359" + integrity sha512-aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ== + dependencies: + "@webassemblyjs/helper-module-context" "1.8.5" + "@webassemblyjs/helper-wasm-bytecode" "1.8.5" + "@webassemblyjs/wast-parser" "1.8.5" + +"@webassemblyjs/floating-point-hex-parser@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz#1ba926a2923613edce496fd5b02e8ce8a5f49721" + integrity sha512-9p+79WHru1oqBh9ewP9zW95E3XAo+90oth7S5Re3eQnECGq59ly1Ri5tsIipKGpiStHsUYmY3zMLqtk3gTcOtQ== + +"@webassemblyjs/helper-api-error@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz#c49dad22f645227c5edb610bdb9697f1aab721f7" + integrity sha512-Za/tnzsvnqdaSPOUXHyKJ2XI7PDX64kWtURyGiJJZKVEdFOsdKUCPTNEVFZq3zJ2R0G5wc2PZ5gvdTRFgm81zA== + +"@webassemblyjs/helper-buffer@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz#fea93e429863dd5e4338555f42292385a653f204" + integrity sha512-Ri2R8nOS0U6G49Q86goFIPNgjyl6+oE1abW1pS84BuhP1Qcr5JqMwRFT3Ah3ADDDYGEgGs1iyb1DGX+kAi/c/Q== + +"@webassemblyjs/helper-code-frame@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz#9a740ff48e3faa3022b1dff54423df9aa293c25e" + integrity sha512-VQAadSubZIhNpH46IR3yWO4kZZjMxN1opDrzePLdVKAZ+DFjkGD/rf4v1jap744uPVU6yjL/smZbRIIJTOUnKQ== + dependencies: + "@webassemblyjs/wast-printer" "1.8.5" + +"@webassemblyjs/helper-fsm@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz#ba0b7d3b3f7e4733da6059c9332275d860702452" + integrity sha512-kRuX/saORcg8se/ft6Q2UbRpZwP4y7YrWsLXPbbmtepKr22i8Z4O3V5QE9DbZK908dh5Xya4Un57SDIKwB9eow== + +"@webassemblyjs/helper-module-context@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz#def4b9927b0101dc8cbbd8d1edb5b7b9c82eb245" + integrity sha512-/O1B236mN7UNEU4t9X7Pj38i4VoU8CcMHyy3l2cV/kIF4U5KoHXDVqcDuOs1ltkac90IM4vZdHc52t1x8Yfs3g== + dependencies: + "@webassemblyjs/ast" "1.8.5" + mamacro "^0.0.3" + +"@webassemblyjs/helper-wasm-bytecode@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz#537a750eddf5c1e932f3744206551c91c1b93e61" + integrity sha512-Cu4YMYG3Ddl72CbmpjU/wbP6SACcOPVbHN1dI4VJNJVgFwaKf1ppeFJrwydOG3NDHxVGuCfPlLZNyEdIYlQ6QQ== + +"@webassemblyjs/helper-wasm-section@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz#74ca6a6bcbe19e50a3b6b462847e69503e6bfcbf" + integrity sha512-VV083zwR+VTrIWWtgIUpqfvVdK4ff38loRmrdDBgBT8ADXYsEZ5mPQ4Nde90N3UYatHdYoDIFb7oHzMncI02tA== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-buffer" "1.8.5" + "@webassemblyjs/helper-wasm-bytecode" "1.8.5" + "@webassemblyjs/wasm-gen" "1.8.5" + +"@webassemblyjs/ieee754@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz#712329dbef240f36bf57bd2f7b8fb9bf4154421e" + integrity sha512-aaCvQYrvKbY/n6wKHb/ylAJr27GglahUO89CcGXMItrOBqRarUMxWLJgxm9PJNuKULwN5n1csT9bYoMeZOGF3g== + dependencies: + "@xtuc/ieee754" "^1.2.0" + +"@webassemblyjs/leb128@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.8.5.tgz#044edeb34ea679f3e04cd4fd9824d5e35767ae10" + integrity sha512-plYUuUwleLIziknvlP8VpTgO4kqNaH57Y3JnNa6DLpu/sGcP6hbVdfdX5aHAV716pQBKrfuU26BJK29qY37J7A== + dependencies: + "@xtuc/long" "4.2.2" + +"@webassemblyjs/utf8@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.8.5.tgz#a8bf3b5d8ffe986c7c1e373ccbdc2a0915f0cedc" + integrity sha512-U7zgftmQriw37tfD934UNInokz6yTmn29inT2cAetAsaU9YeVCveWEwhKL1Mg4yS7q//NGdzy79nlXh3bT8Kjw== + +"@webassemblyjs/wasm-edit@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz#962da12aa5acc1c131c81c4232991c82ce56e01a" + integrity sha512-A41EMy8MWw5yvqj7MQzkDjU29K7UJq1VrX2vWLzfpRHt3ISftOXqrtojn7nlPsZ9Ijhp5NwuODuycSvfAO/26Q== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-buffer" "1.8.5" + "@webassemblyjs/helper-wasm-bytecode" "1.8.5" + "@webassemblyjs/helper-wasm-section" "1.8.5" + "@webassemblyjs/wasm-gen" "1.8.5" + "@webassemblyjs/wasm-opt" "1.8.5" + "@webassemblyjs/wasm-parser" "1.8.5" + "@webassemblyjs/wast-printer" "1.8.5" + +"@webassemblyjs/wasm-gen@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz#54840766c2c1002eb64ed1abe720aded714f98bc" + integrity sha512-BCZBT0LURC0CXDzj5FXSc2FPTsxwp3nWcqXQdOZE4U7h7i8FqtFK5Egia6f9raQLpEKT1VL7zr4r3+QX6zArWg== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-wasm-bytecode" "1.8.5" + "@webassemblyjs/ieee754" "1.8.5" + "@webassemblyjs/leb128" "1.8.5" + "@webassemblyjs/utf8" "1.8.5" + +"@webassemblyjs/wasm-opt@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz#b24d9f6ba50394af1349f510afa8ffcb8a63d264" + integrity sha512-HKo2mO/Uh9A6ojzu7cjslGaHaUU14LdLbGEKqTR7PBKwT6LdPtLLh9fPY33rmr5wcOMrsWDbbdCHq4hQUdd37Q== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-buffer" "1.8.5" + "@webassemblyjs/wasm-gen" "1.8.5" + "@webassemblyjs/wasm-parser" "1.8.5" + +"@webassemblyjs/wasm-parser@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz#21576f0ec88b91427357b8536383668ef7c66b8d" + integrity sha512-pi0SYE9T6tfcMkthwcgCpL0cM9nRYr6/6fjgDtL6q/ZqKHdMWvxitRi5JcZ7RI4SNJJYnYNaWy5UUrHQy998lw== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-api-error" "1.8.5" + "@webassemblyjs/helper-wasm-bytecode" "1.8.5" + "@webassemblyjs/ieee754" "1.8.5" + "@webassemblyjs/leb128" "1.8.5" + "@webassemblyjs/utf8" "1.8.5" + +"@webassemblyjs/wast-parser@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz#e10eecd542d0e7bd394f6827c49f3df6d4eefb8c" + integrity sha512-daXC1FyKWHF1i11obK086QRlsMsY4+tIOKgBqI1lxAnkp9xe9YMcgOxm9kLe+ttjs5aWV2KKE1TWJCN57/Btsg== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/floating-point-hex-parser" "1.8.5" + "@webassemblyjs/helper-api-error" "1.8.5" + "@webassemblyjs/helper-code-frame" "1.8.5" + "@webassemblyjs/helper-fsm" "1.8.5" + "@xtuc/long" "4.2.2" + +"@webassemblyjs/wast-printer@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz#114bbc481fd10ca0e23b3560fa812748b0bae5bc" + integrity sha512-w0U0pD4EhlnvRyeJzBqaVSJAo9w/ce7/WPogeXLzGkO6hzhr4GnQIZ4W4uUt5b9ooAaXPtnXlj0gzsXEOUNYMg== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/wast-parser" "1.8.5" + "@xtuc/long" "4.2.2" + +"@xtuc/ieee754@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" + integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== + +"@xtuc/long@4.2.2": + version "4.2.2" + resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" + integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== + +abab@^2.0.0: + version "2.0.5" + resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a" + integrity sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q== + +abstract-leveldown@~2.6.0: + version "2.6.3" + resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-2.6.3.tgz#1c5e8c6a5ef965ae8c35dfb3a8770c476b82c4b8" + integrity sha512-2++wDf/DYqkPR3o5tbfdhF96EfMApo1GpPfzOsR/ZYXdkSmELlvOOEAl9iKkRsktMPHdGjO4rtkBpf2I7TiTeA== + dependencies: + xtend "~4.0.0" + +abstract-leveldown@~2.7.1: + version "2.7.2" + resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-2.7.2.tgz#87a44d7ebebc341d59665204834c8b7e0932cc93" + integrity sha512-+OVvxH2rHVEhWLdbudP6p0+dNMXu8JA1CbhP19T8paTYAcX7oJ4OVjT+ZUVpv7mITxXHqDMej+GdqXBmXkw09w== + dependencies: + xtend "~4.0.0" + +accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7: + version "1.3.7" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" + integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== + dependencies: + mime-types "~2.1.24" + negotiator "0.6.2" + +acorn-globals@^4.1.0, acorn-globals@^4.3.0: + version "4.3.4" + resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.3.4.tgz#9fa1926addc11c97308c4e66d7add0d40c3272e7" + integrity sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A== + dependencies: + acorn "^6.0.1" + acorn-walk "^6.0.1" + +acorn-jsx@^5.2.0: + version "5.3.2" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== + +acorn-walk@^6.0.1: + version "6.2.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.2.0.tgz#123cb8f3b84c2171f1f7fb252615b1c78a6b1a8c" + integrity sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA== + +acorn@^5.5.3: + version "5.7.4" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.4.tgz#3e8d8a9947d0599a1796d10225d7432f4a4acf5e" + integrity sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg== + +acorn@^6.0.1, acorn@^6.0.4, acorn@^6.2.1: + version "6.4.2" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6" + integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== + +acorn@^7.1.1: + version "7.4.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" + integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== + +address@1.1.2, address@^1.0.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/address/-/address-1.1.2.tgz#bf1116c9c758c51b7a933d296b72c221ed9428b6" + integrity sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA== + +adjust-sourcemap-loader@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/adjust-sourcemap-loader/-/adjust-sourcemap-loader-2.0.0.tgz#6471143af75ec02334b219f54bc7970c52fb29a4" + integrity sha512-4hFsTsn58+YjrU9qKzML2JSSDqKvN8mUGQ0nNIrfPi8hmIONT4L3uUaT6MKdMsZ9AjsU6D2xDkZxCkbQPxChrA== + dependencies: + assert "1.4.1" + camelcase "5.0.0" + loader-utils "1.2.3" + object-path "0.11.4" + regex-parser "2.2.10" + +aes-js@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.1.2.tgz#db9aabde85d5caabbfc0d4f2a4446960f627146a" + integrity sha512-e5pEa2kBnBOgR4Y/p20pskXI74UEz7de8ZGVo58asOtvSVG5YAbJeELPZxOmt+Bnz3rX753YKhfIn4X4l1PPRQ== + +aggregate-error@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" + integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== + dependencies: + clean-stack "^2.0.0" + indent-string "^4.0.0" + +ajv-errors@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" + integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== + +ajv-keywords@^3.1.0, ajv-keywords@^3.4.1, ajv-keywords@^3.5.2: + version "3.5.2" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" + integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== + +ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.3, ajv@^6.12.4: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +alphanum-sort@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" + integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM= + +ansi-colors@^3.0.0: + version "3.2.4" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf" + integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== + +ansi-colors@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" + integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== + +ansi-escapes@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" + integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== + +ansi-escapes@^4.2.1, ansi-escapes@^4.3.0: + version "4.3.2" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" + integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== + dependencies: + type-fest "^0.21.3" + +ansi-html@0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e" + integrity sha1-gTWEAhliqenm/QOflA0S9WynhZ4= + +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= + +ansi-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" + integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= + +ansi-regex@^4.0.0, ansi-regex@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" + integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== + +ansi-regex@^5.0.0, ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-styles@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" + integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= + +ansi-styles@^3.2.0, ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +anymatch@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" + integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== + dependencies: + micromatch "^3.1.4" + normalize-path "^2.1.1" + +anymatch@~3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" + integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +aproba@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" + integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +aria-query@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-3.0.0.tgz#65b3fcc1ca1155a8c9ae64d6eee297f15d5133cc" + integrity sha1-ZbP8wcoRVajJrmTW7uKX8V1RM8w= + dependencies: + ast-types-flow "0.0.7" + commander "^2.11.0" + +arity-n@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/arity-n/-/arity-n-1.0.4.tgz#d9e76b11733e08569c0847ae7b39b2860b30b745" + integrity sha1-2edrEXM+CFacCEeuezmyhgswt0U= + +arr-diff@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" + integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= + +arr-flatten@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" + integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== + +arr-union@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" + integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= + +array-equal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" + integrity sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM= + +array-flatten@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" + integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= + +array-flatten@^2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099" + integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== + +array-includes@^3.0.3, array-includes@^3.1.1: + version "3.1.4" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.4.tgz#f5b493162c760f3539631f005ba2bb46acb45ba9" + integrity sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.1" + get-intrinsic "^1.1.1" + is-string "^1.0.7" + +array-union@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" + integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk= + dependencies: + array-uniq "^1.0.1" + +array-uniq@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" + integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= + +array-unique@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" + integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= + +array.prototype.flat@^1.2.1: + version "1.2.5" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.5.tgz#07e0975d84bbc7c48cd1879d609e682598d33e13" + integrity sha512-KaYU+S+ndVqyUnignHftkwc58o3uVU1jzczILJ1tN2YaIZpFIKBiP/x/j97E5MVPsaCloPbqWLB/8qCTVvT2qg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.0" + +arrify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" + integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= + +asap@~2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" + integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= + +asn1.js@^5.2.0: + version "5.4.1" + resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" + integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA== + dependencies: + bn.js "^4.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + safer-buffer "^2.1.0" + +asn1@~0.2.3: + version "0.2.6" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.6.tgz#0d3a7bb6e64e02a90c0303b31f292868ea09a08d" + integrity sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ== + dependencies: + safer-buffer "~2.1.0" + +assert-plus@1.0.0, assert-plus@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= + +assert@1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91" + integrity sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE= + dependencies: + util "0.10.3" + +assert@^1.1.1: + version "1.5.0" + resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb" + integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA== + dependencies: + object-assign "^4.1.1" + util "0.10.3" + +assign-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" + integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= + +ast-types-flow@0.0.7, ast-types-flow@^0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad" + integrity sha1-9wtzXGvKGlycItmCw+Oef+ujva0= + +astral-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" + integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== + +astral-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" + integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== + +async-each@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" + integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== + +async-eventemitter@^0.2.2: + version "0.2.4" + resolved "https://registry.yarnpkg.com/async-eventemitter/-/async-eventemitter-0.2.4.tgz#f5e7c8ca7d3e46aab9ec40a292baf686a0bafaca" + integrity sha512-pd20BwL7Yt1zwDFy+8MX8F1+WCT8aQeKj0kQnTrH9WaeRETlRamVhD0JtRPmrV4GfOJ2F9CvdQkZeZhnh2TuHw== + dependencies: + async "^2.4.0" + +async-limiter@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" + integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== + +async-mutex@^0.2.6: + version "0.2.6" + resolved "https://registry.yarnpkg.com/async-mutex/-/async-mutex-0.2.6.tgz#0d7a3deb978bc2b984d5908a2038e1ae2e54ff40" + integrity sha512-Hs4R+4SPgamu6rSGW8C7cV9gaWUKEHykfzCCvIRuaVv636Ju10ZdeUbvb4TBEW0INuq2DHZqXbK4Nd3yG4RaRw== + dependencies: + tslib "^2.0.0" + +async@0.9.x: + version "0.9.2" + resolved "https://registry.yarnpkg.com/async/-/async-0.9.2.tgz#aea74d5e61c1f899613bf64bda66d4c78f2fd17d" + integrity sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0= + +async@^1.4.2: + version "1.5.2" + resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" + integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo= + +async@^2.0.1, async@^2.1.2, async@^2.4.0, async@^2.5.0, async@^2.6.2: + version "2.6.3" + resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" + integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== + dependencies: + lodash "^4.17.14" + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= + +atob@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" + integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== + +autoprefixer@^9.6.1: + version "9.8.8" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.8.8.tgz#fd4bd4595385fa6f06599de749a4d5f7a474957a" + integrity sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA== + dependencies: + browserslist "^4.12.0" + caniuse-lite "^1.0.30001109" + normalize-range "^0.1.2" + num2fraction "^1.2.2" + picocolors "^0.2.1" + postcss "^7.0.32" + postcss-value-parser "^4.1.0" + +available-typed-arrays@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" + integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== + +aws-sign2@~0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" + integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= + +aws4@^1.8.0: + version "1.11.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59" + integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== + +axios@^0.21.1, axios@^0.21.2: + version "0.21.4" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.4.tgz#c67b90dc0568e5c1cf2b0b858c43ba28e2eda575" + integrity sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg== + dependencies: + follow-redirects "^1.14.0" + +axobject-query@^2.0.2: + version "2.2.0" + resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.2.0.tgz#943d47e10c0b704aa42275e20edf3722648989be" + integrity sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA== + +babel-code-frame@^6.22.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" + integrity sha1-Y/1D99weO7fONZR9uP42mj9Yx0s= + dependencies: + chalk "^1.1.3" + esutils "^2.0.2" + js-tokens "^3.0.2" + +babel-eslint@10.1.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-10.1.0.tgz#6968e568a910b78fb3779cdd8b6ac2f479943232" + integrity sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/parser" "^7.7.0" + "@babel/traverse" "^7.7.0" + "@babel/types" "^7.7.0" + eslint-visitor-keys "^1.0.0" + resolve "^1.12.0" + +babel-extract-comments@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/babel-extract-comments/-/babel-extract-comments-1.0.0.tgz#0a2aedf81417ed391b85e18b4614e693a0351a21" + integrity sha512-qWWzi4TlddohA91bFwgt6zO/J0X+io7Qp184Fw0m2JYRSTZnJbFR8+07KmzudHCZgOiKRCrjhylwv9Xd8gfhVQ== + dependencies: + babylon "^6.18.0" + +babel-jest@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-24.9.0.tgz#3fc327cb8467b89d14d7bc70e315104a783ccd54" + integrity sha512-ntuddfyiN+EhMw58PTNL1ph4C9rECiQXjI4nMMBKBaNjXvqLdkXpPRcMSr4iyBrJg/+wz9brFUD6RhOAT6r4Iw== + dependencies: + "@jest/transform" "^24.9.0" + "@jest/types" "^24.9.0" + "@types/babel__core" "^7.1.0" + babel-plugin-istanbul "^5.1.0" + babel-preset-jest "^24.9.0" + chalk "^2.4.2" + slash "^2.0.0" + +babel-loader@8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.1.0.tgz#c611d5112bd5209abe8b9fa84c3e4da25275f1c3" + integrity sha512-7q7nC1tYOrqvUrN3LQK4GwSk/TQorZSOlO9C+RZDZpODgyN4ZlCqE5q9cDsyWOliN+aU9B4JX01xK9eJXowJLw== + dependencies: + find-cache-dir "^2.1.0" + loader-utils "^1.4.0" + mkdirp "^0.5.3" + pify "^4.0.1" + schema-utils "^2.6.5" + +babel-plugin-dynamic-import-node@^2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3" + integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ== + dependencies: + object.assign "^4.1.0" + +babel-plugin-istanbul@^5.1.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-5.2.0.tgz#df4ade83d897a92df069c4d9a25cf2671293c854" + integrity sha512-5LphC0USA8t4i1zCtjbbNb6jJj/9+X6P37Qfirc/70EQ34xKlMW+a1RHGwxGI+SwWpNwZ27HqvzAobeqaXwiZw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + find-up "^3.0.0" + istanbul-lib-instrument "^3.3.0" + test-exclude "^5.2.3" + +babel-plugin-jest-hoist@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.9.0.tgz#4f837091eb407e01447c8843cbec546d0002d756" + integrity sha512-2EMA2P8Vp7lG0RAzr4HXqtYwacfMErOuv1U3wrvxHX6rD1sV6xS3WXG3r8TRQ2r6w8OhvSdWt+z41hQNwNm3Xw== + dependencies: + "@types/babel__traverse" "^7.0.6" + +babel-plugin-macros@2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz#0f958a7cc6556b1e65344465d99111a1e5e10138" + integrity sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg== + dependencies: + "@babel/runtime" "^7.7.2" + cosmiconfig "^6.0.0" + resolve "^1.12.0" + +babel-plugin-named-asset-import@^0.3.6: + version "0.3.8" + resolved "https://registry.yarnpkg.com/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.8.tgz#6b7fa43c59229685368683c28bc9734f24524cc2" + integrity sha512-WXiAc++qo7XcJ1ZnTYGtLxmBCVbddAml3CEXgWaBzNzLNoxtQ8AiGEFDMOhot9XjTCQbvP5E77Fj9Gk924f00Q== + +babel-plugin-polyfill-corejs2@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.0.tgz#407082d0d355ba565af24126fb6cb8e9115251fd" + integrity sha512-wMDoBJ6uG4u4PNFh72Ty6t3EgfA91puCuAwKIazbQlci+ENb/UU9A3xG5lutjUIiXCIn1CY5L15r9LimiJyrSA== + dependencies: + "@babel/compat-data" "^7.13.11" + "@babel/helper-define-polyfill-provider" "^0.3.0" + semver "^6.1.1" + +babel-plugin-polyfill-corejs3@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.4.0.tgz#0b571f4cf3d67f911512f5c04842a7b8e8263087" + integrity sha512-YxFreYwUfglYKdLUGvIF2nJEsGwj+RhWSX/ije3D2vQPOXuyMLMtg/cCGMDpOA7Nd+MwlNdnGODbd2EwUZPlsw== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.3.0" + core-js-compat "^3.18.0" + +babel-plugin-polyfill-regenerator@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.0.tgz#9ebbcd7186e1a33e21c5e20cae4e7983949533be" + integrity sha512-dhAPTDLGoMW5/84wkgwiLRwMnio2i1fUe53EuvtKMv0pn2p3S8OCoV1xAzfJPl0KOX7IB89s2ib85vbYiea3jg== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.3.0" + +"babel-plugin-styled-components@>= 1.12.0": + version "2.0.2" + resolved "https://registry.yarnpkg.com/babel-plugin-styled-components/-/babel-plugin-styled-components-2.0.2.tgz#0fac11402dc9db73698b55847ab1dc73f5197c54" + integrity sha512-7eG5NE8rChnNTDxa6LQfynwgHTVOYYaHJbUYSlOhk8QBXIQiMBKq4gyfHBBKPrxUcVBXVJL61ihduCpCQbuNbw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.0" + "@babel/helper-module-imports" "^7.16.0" + babel-plugin-syntax-jsx "^6.18.0" + lodash "^4.17.11" + +babel-plugin-syntax-jsx@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz#0af32a9a6e13ca7a3fd5069e62d7b0f58d0d8946" + integrity sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY= + +babel-plugin-syntax-object-rest-spread@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5" + integrity sha1-/WU28rzhODb/o6VFjEkDpZe7O/U= + +babel-plugin-transform-object-rest-spread@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz#0f36692d50fef6b7e2d4b3ac1478137a963b7b06" + integrity sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY= + dependencies: + babel-plugin-syntax-object-rest-spread "^6.8.0" + babel-runtime "^6.26.0" + +babel-plugin-transform-react-remove-prop-types@0.4.24: + version "0.4.24" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz#f2edaf9b4c6a5fbe5c1d678bfb531078c1555f3a" + integrity sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA== + +babel-preset-jest@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-24.9.0.tgz#192b521e2217fb1d1f67cf73f70c336650ad3cdc" + integrity sha512-izTUuhE4TMfTRPF92fFwD2QfdXaZW08qvWTFCI51V8rW5x00UuPgc3ajRoWofXOuxjfcOM5zzSYsQS3H8KGCAg== + dependencies: + "@babel/plugin-syntax-object-rest-spread" "^7.0.0" + babel-plugin-jest-hoist "^24.9.0" + +babel-preset-react-app@^9.1.2: + version "9.1.2" + resolved "https://registry.yarnpkg.com/babel-preset-react-app/-/babel-preset-react-app-9.1.2.tgz#54775d976588a8a6d1a99201a702befecaf48030" + integrity sha512-k58RtQOKH21NyKtzptoAvtAODuAJJs3ZhqBMl456/GnXEQ/0La92pNmwgWoMn5pBTrsvk3YYXdY7zpY4e3UIxA== + dependencies: + "@babel/core" "7.9.0" + "@babel/plugin-proposal-class-properties" "7.8.3" + "@babel/plugin-proposal-decorators" "7.8.3" + "@babel/plugin-proposal-nullish-coalescing-operator" "7.8.3" + "@babel/plugin-proposal-numeric-separator" "7.8.3" + "@babel/plugin-proposal-optional-chaining" "7.9.0" + "@babel/plugin-transform-flow-strip-types" "7.9.0" + "@babel/plugin-transform-react-display-name" "7.8.3" + "@babel/plugin-transform-runtime" "7.9.0" + "@babel/preset-env" "7.9.0" + "@babel/preset-react" "7.9.1" + "@babel/preset-typescript" "7.9.0" + "@babel/runtime" "7.9.0" + babel-plugin-macros "2.8.0" + babel-plugin-transform-react-remove-prop-types "0.4.24" + +babel-runtime@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" + integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4= + dependencies: + core-js "^2.4.0" + regenerator-runtime "^0.11.0" + +babylon@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" + integrity sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ== + +backoff@^2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/backoff/-/backoff-2.5.0.tgz#f616eda9d3e4b66b8ca7fca79f695722c5f8e26f" + integrity sha1-9hbtqdPktmuMp/ynn2lXIsX44m8= + dependencies: + precond "0.2" + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +base-x@^3.0.2, base-x@^3.0.8: + version "3.0.9" + resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.9.tgz#6349aaabb58526332de9f60995e548a53fe21320" + integrity sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ== + dependencies: + safe-buffer "^5.0.1" + +base64-js@^1.0.2, base64-js@^1.3.0, base64-js@^1.3.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + +base@^0.11.1: + version "0.11.2" + resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" + integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== + dependencies: + cache-base "^1.0.1" + class-utils "^0.3.5" + component-emitter "^1.2.1" + define-property "^1.0.0" + isobject "^3.0.1" + mixin-deep "^1.2.0" + pascalcase "^0.1.1" + +batch@0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" + integrity sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY= + +bcrypt-pbkdf@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" + integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= + dependencies: + tweetnacl "^0.14.3" + +bech32@1.1.4, bech32@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/bech32/-/bech32-1.1.4.tgz#e38c9f37bf179b8eb16ae3a772b40c356d4832e9" + integrity sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ== + +big.js@^5.2.2: + version "5.2.2" + resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" + integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== + +bignumber.js@^9.0.0, bignumber.js@^9.0.1: + version "9.0.2" + resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.0.2.tgz#71c6c6bed38de64e24a65ebe16cfcf23ae693673" + integrity sha512-GAcQvbpsM0pUb0zw1EI0KhQEZ+lRwR5fYaAp3vPOYuP7aDvGy6cVN6XHLauvF8SOga2y0dcLcjt3iQDTSEliyw== + +binary-extensions@^1.0.0: + version "1.13.1" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" + integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== + +binary-extensions@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" + integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== + +bind-decorator@^1.0.11: + version "1.0.11" + resolved "https://registry.yarnpkg.com/bind-decorator/-/bind-decorator-1.0.11.tgz#e41bc06a1f65dd9cec476c91c5daf3978488252f" + integrity sha1-5BvAah9l3ZzsR2yRxdrzl4SIJS8= + +bindings@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" + integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== + dependencies: + file-uri-to-path "1.0.0" + +bip39@^3.0.2: + version "3.0.4" + resolved "https://registry.yarnpkg.com/bip39/-/bip39-3.0.4.tgz#5b11fed966840b5e1b8539f0f54ab6392969b2a0" + integrity sha512-YZKQlb752TrUWqHWj7XAwCSjYEgGAk+/Aas3V7NyjQeZYsztO8JnQUaCWhcnL4T+jL8nvB8typ2jRPzTlgugNw== + dependencies: + "@types/node" "11.11.6" + create-hash "^1.1.0" + pbkdf2 "^3.0.9" + randombytes "^2.0.1" + +blakejs@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/blakejs/-/blakejs-1.1.1.tgz#bf313053978b2cd4c444a48795710be05c785702" + integrity sha512-bLG6PHOCZJKNshTjGRBvET0vTciwQE6zFKOKKXPDJfwFBd4Ac0yBfPZqcGvGJap50l7ktvlpFqc2jGVaUgbJgg== + +blockchain-addressbook@^0.34.1: + version "0.34.1" + resolved "https://registry.yarnpkg.com/blockchain-addressbook/-/blockchain-addressbook-0.34.1.tgz#c0e7e4be2db78e8c2e5f6f96ecc29f6ce0ec1695" + integrity sha512-9V6SicRb4G0P80AeEc8xijHvh5jQLlnwWR149bAHP9JGyybaLPeLFwdFHvFzuktvTr+TadGbiOUH2++4c++VXg== + +bluebird@^3.5.0, bluebird@^3.5.5: + version "3.7.2" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" + integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== + +bn.js@4.11.6: + version "4.11.6" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.6.tgz#53344adb14617a13f6e8dd2ce28905d1c0ba3215" + integrity sha1-UzRK2xRhehP26N0s4okF0cC6MhU= + +bn.js@4.11.8: + version "4.11.8" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" + integrity sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA== + +bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.0, bn.js@^4.11.6, bn.js@^4.11.8, bn.js@^4.11.9: + version "4.12.0" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" + integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== + +bn.js@^5.0.0, bn.js@^5.1.1, bn.js@^5.1.2, bn.js@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.0.tgz#358860674396c6997771a9d051fcc1b57d4ae002" + integrity sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw== + +body-parser@1.19.1, body-parser@^1.16.0: + version "1.19.1" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.1.tgz#1499abbaa9274af3ecc9f6f10396c995943e31d4" + integrity sha512-8ljfQi5eBk8EJfECMrgqNGWPEY5jWP+1IzkzkGdFFEwFQZZyaZ21UqdaHktgiMlH0xLHqIFtE/u2OYE5dOtViA== + dependencies: + bytes "3.1.1" + content-type "~1.0.4" + debug "2.6.9" + depd "~1.1.2" + http-errors "1.8.1" + iconv-lite "0.4.24" + on-finished "~2.3.0" + qs "6.9.6" + raw-body "2.4.2" + type-is "~1.6.18" + +bonjour@^3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5" + integrity sha1-jokKGD2O6aI5OzhExpGkK897yfU= + dependencies: + array-flatten "^2.1.0" + deep-equal "^1.0.1" + dns-equal "^1.0.0" + dns-txt "^2.0.2" + multicast-dns "^6.0.1" + multicast-dns-service-types "^1.1.0" + +boolbase@^1.0.0, boolbase@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@^2.3.1, braces@^2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" + integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== + dependencies: + arr-flatten "^1.1.0" + array-unique "^0.3.2" + extend-shallow "^2.0.1" + fill-range "^4.0.0" + isobject "^3.0.1" + repeat-element "^1.1.2" + snapdragon "^0.8.1" + snapdragon-node "^2.0.1" + split-string "^3.0.2" + to-regex "^3.0.1" + +braces@^3.0.1, braces@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +brorand@^1.0.1, brorand@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= + +browser-process-hrtime@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" + integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== + +browser-resolve@^1.11.3: + version "1.11.3" + resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.3.tgz#9b7cbb3d0f510e4cb86bdbd796124d28b5890af6" + integrity sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ== + dependencies: + resolve "1.1.7" + +browserify-aes@^1.0.0, browserify-aes@^1.0.4, browserify-aes@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" + integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== + dependencies: + buffer-xor "^1.0.3" + cipher-base "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.3" + inherits "^2.0.1" + safe-buffer "^5.0.1" + +browserify-cipher@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" + integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== + dependencies: + browserify-aes "^1.0.4" + browserify-des "^1.0.0" + evp_bytestokey "^1.0.0" + +browserify-des@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" + integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== + dependencies: + cipher-base "^1.0.1" + des.js "^1.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: + version "4.1.0" + resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.1.0.tgz#b2fd06b5b75ae297f7ce2dc651f918f5be158c8d" + integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog== + dependencies: + bn.js "^5.0.0" + randombytes "^2.0.1" + +browserify-sign@^4.0.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.1.tgz#eaf4add46dd54be3bb3b36c0cf15abbeba7956c3" + integrity sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg== + dependencies: + bn.js "^5.1.1" + browserify-rsa "^4.0.1" + create-hash "^1.2.0" + create-hmac "^1.1.7" + elliptic "^6.5.3" + inherits "^2.0.4" + parse-asn1 "^5.1.5" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" + +browserify-zlib@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" + integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== + dependencies: + pako "~1.0.5" + +browserslist@4.10.0: + version "4.10.0" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.10.0.tgz#f179737913eaf0d2b98e4926ac1ca6a15cbcc6a9" + integrity sha512-TpfK0TDgv71dzuTsEAlQiHeWQ/tiPqgNZVdv046fvNtBZrjbv2O3TsWCDU0AWGJJKCF/KsjNdLzR9hXOsh/CfA== + dependencies: + caniuse-lite "^1.0.30001035" + electron-to-chromium "^1.3.378" + node-releases "^1.1.52" + pkg-up "^3.1.0" + +browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.17.5, browserslist@^4.19.1, browserslist@^4.6.2, browserslist@^4.6.4, browserslist@^4.9.1: + version "4.19.1" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.19.1.tgz#4ac0435b35ab655896c31d53018b6dd5e9e4c9a3" + integrity sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A== + dependencies: + caniuse-lite "^1.0.30001286" + electron-to-chromium "^1.4.17" + escalade "^3.1.1" + node-releases "^2.0.1" + picocolors "^1.0.0" + +bs58@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/bs58/-/bs58-4.0.1.tgz#be161e76c354f6f788ae4071f63f34e8c4f0a42a" + integrity sha1-vhYedsNU9veIrkBx9j806MTwpCo= + dependencies: + base-x "^3.0.2" + +bs58check@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/bs58check/-/bs58check-2.1.2.tgz#53b018291228d82a5aa08e7d796fdafda54aebfc" + integrity sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA== + dependencies: + bs58 "^4.0.0" + create-hash "^1.1.0" + safe-buffer "^5.1.2" + +bser@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" + integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== + dependencies: + node-int64 "^0.4.0" + +btoa@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/btoa/-/btoa-1.2.1.tgz#01a9909f8b2c93f6bf680ba26131eb30f7fa3d73" + integrity sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g== + +buffer-alloc-unsafe@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0" + integrity sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg== + +buffer-alloc@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec" + integrity sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow== + dependencies: + buffer-alloc-unsafe "^1.1.0" + buffer-fill "^1.0.0" + +buffer-fill@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" + integrity sha1-+PeLdniYiO858gXNY39o5wISKyw= + +buffer-from@^1.0.0, buffer-from@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + +buffer-indexof@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c" + integrity sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g== + +buffer-to-arraybuffer@^0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/buffer-to-arraybuffer/-/buffer-to-arraybuffer-0.0.5.tgz#6064a40fa76eb43c723aba9ef8f6e1216d10511a" + integrity sha1-YGSkD6dutDxyOrqe+PbhIW0QURo= + +buffer-xor@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" + integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= + +buffer@^4.3.0: + version "4.9.2" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" + integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== + dependencies: + base64-js "^1.0.2" + ieee754 "^1.1.4" + isarray "^1.0.0" + +buffer@^5.0.5, buffer@^5.4.3, buffer@^5.5.0, buffer@^5.6.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" + integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.1.13" + +bufferutil@^4.0.1: + version "4.0.6" + resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-4.0.6.tgz#ebd6c67c7922a0e902f053e5d8be5ec850e48433" + integrity sha512-jduaYOYtnio4aIAyc6UbvPCVcgq7nYpVnucyxr6eCYg/Woad9Hf/oxxBRDnGGjPfjUm6j5O/uBWhIu4iLebFaw== + dependencies: + node-gyp-build "^4.3.0" + +builtin-status-codes@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" + integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= + +bytes@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" + integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= + +bytes@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.1.tgz#3f018291cb4cbad9accb6e6970bca9c8889e879a" + integrity sha512-dWe4nWO/ruEOY7HkUJ5gFt1DCFV9zPRoJr8pV0/ASQermOZjtq8jMjOprC0Kd10GLN+l7xaUPvxzJFWtxGu8Fg== + +cacache@^12.0.2: + version "12.0.4" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.4.tgz#668bcbd105aeb5f1d92fe25570ec9525c8faa40c" + integrity sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ== + dependencies: + bluebird "^3.5.5" + chownr "^1.1.1" + figgy-pudding "^3.5.1" + glob "^7.1.4" + graceful-fs "^4.1.15" + infer-owner "^1.0.3" + lru-cache "^5.1.1" + mississippi "^3.0.0" + mkdirp "^0.5.1" + move-concurrently "^1.0.1" + promise-inflight "^1.0.1" + rimraf "^2.6.3" + ssri "^6.0.1" + unique-filename "^1.1.1" + y18n "^4.0.0" + +cacache@^13.0.1: + version "13.0.1" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-13.0.1.tgz#a8000c21697089082f85287a1aec6e382024a71c" + integrity sha512-5ZvAxd05HDDU+y9BVvcqYu2LLXmPnQ0hW62h32g4xBTgL/MppR4/04NHfj/ycM2y6lmTnbw6HVi+1eN0Psba6w== + dependencies: + chownr "^1.1.2" + figgy-pudding "^3.5.1" + fs-minipass "^2.0.0" + glob "^7.1.4" + graceful-fs "^4.2.2" + infer-owner "^1.0.4" + lru-cache "^5.1.1" + minipass "^3.0.0" + minipass-collect "^1.0.2" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.2" + mkdirp "^0.5.1" + move-concurrently "^1.0.1" + p-map "^3.0.0" + promise-inflight "^1.0.1" + rimraf "^2.7.1" + ssri "^7.0.0" + unique-filename "^1.1.1" + +cache-base@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" + integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== + dependencies: + collection-visit "^1.0.0" + component-emitter "^1.2.1" + get-value "^2.0.6" + has-value "^1.0.0" + isobject "^3.0.1" + set-value "^2.0.0" + to-object-path "^0.3.0" + union-value "^1.0.0" + unset-value "^1.0.0" + +cacheable-request@^6.0.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-6.1.0.tgz#20ffb8bd162ba4be11e9567d823db651052ca912" + integrity sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg== + dependencies: + clone-response "^1.0.2" + get-stream "^5.1.0" + http-cache-semantics "^4.0.0" + keyv "^3.0.0" + lowercase-keys "^2.0.0" + normalize-url "^4.1.0" + responselike "^1.0.2" + +call-bind@^1.0.0, call-bind@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" + integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== + dependencies: + function-bind "^1.1.1" + get-intrinsic "^1.0.2" + +call-me-maybe@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" + integrity sha1-JtII6onje1y95gJQoV8DHBak1ms= + +caller-callsite@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" + integrity sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ= + dependencies: + callsites "^2.0.0" + +caller-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4" + integrity sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ= + dependencies: + caller-callsite "^2.0.0" + +callsites@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" + integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA= + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +camel-case@^4.1.1: + version "4.1.2" + resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a" + integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw== + dependencies: + pascal-case "^3.1.2" + tslib "^2.0.3" + +camelcase@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.0.0.tgz#03295527d58bd3cd4aa75363f35b2e8d97be2f42" + integrity sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA== + +camelcase@5.3.1, camelcase@^5.0.0, camelcase@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +camelize@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/camelize/-/camelize-1.0.0.tgz#164a5483e630fa4321e5af07020e531831b2609b" + integrity sha1-FkpUg+Yw+kMh5a8HAg5TGDGyYJs= + +caniuse-api@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0" + integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw== + dependencies: + browserslist "^4.0.0" + caniuse-lite "^1.0.0" + lodash.memoize "^4.1.2" + lodash.uniq "^4.5.0" + +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001035, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001286: + version "1.0.30001298" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001298.tgz#0e690039f62e91c3ea581673d716890512e7ec52" + integrity sha512-AcKqikjMLlvghZL/vfTHorlQsLDhGRalYf1+GmWCf5SCMziSGjRYQW/JEksj14NaYHIR6KIhrFAy0HV5C25UzQ== + +capture-exit@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-2.0.0.tgz#fb953bfaebeb781f62898239dabb426d08a509a4" + integrity sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g== + dependencies: + rsvp "^4.8.4" + +case-sensitive-paths-webpack-plugin@2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.3.0.tgz#23ac613cc9a856e4f88ff8bb73bbb5e989825cf7" + integrity sha512-/4YgnZS8y1UXXmC02xD5rRrBEu6T5ub+mQHLNRj0fzTRbgdBYhsNo2V5EqwgqrExjxsjtF/OpAKAMkKsxbD5XQ== + +caseless@~0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= + +chalk@2.4.2, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.4.1, chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= + dependencies: + ansi-styles "^2.2.1" + escape-string-regexp "^1.0.2" + has-ansi "^2.0.0" + strip-ansi "^3.0.0" + supports-color "^2.0.0" + +chalk@^4.1.0: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chardet@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" + integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== + +checkpoint-store@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/checkpoint-store/-/checkpoint-store-1.1.0.tgz#04e4cb516b91433893581e6d4601a78e9552ea06" + integrity sha1-BOTLUWuRQziTWB5tRgGnjpVS6gY= + dependencies: + functional-red-black-tree "^1.0.1" + +"chokidar@>=3.0.0 <4.0.0", chokidar@^3.3.0, chokidar@^3.4.1: + version "3.5.2" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.2.tgz#dba3976fcadb016f66fd365021d91600d01c1e75" + integrity sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + +chokidar@^2.1.8: + version "2.1.8" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" + integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== + dependencies: + anymatch "^2.0.0" + async-each "^1.0.1" + braces "^2.3.2" + glob-parent "^3.1.0" + inherits "^2.0.3" + is-binary-path "^1.0.0" + is-glob "^4.0.0" + normalize-path "^3.0.0" + path-is-absolute "^1.0.0" + readdirp "^2.2.1" + upath "^1.1.1" + optionalDependencies: + fsevents "^1.2.7" + +chownr@^1.1.1, chownr@^1.1.2, chownr@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" + integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== + +chrome-trace-event@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" + integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== + +ci-info@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" + integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== + +cids@^0.7.1: + version "0.7.5" + resolved "https://registry.yarnpkg.com/cids/-/cids-0.7.5.tgz#60a08138a99bfb69b6be4ceb63bfef7a396b28b2" + integrity sha512-zT7mPeghoWAu+ppn8+BS1tQ5qGmbMfB4AregnQjA/qHY3GC1m1ptI9GkWNlgeu38r7CuRdXB47uY2XgAYt6QVA== + dependencies: + buffer "^5.5.0" + class-is "^1.1.0" + multibase "~0.6.0" + multicodec "^1.0.0" + multihashes "~0.4.15" + +cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" + integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +class-is@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/class-is/-/class-is-1.1.0.tgz#9d3c0fba0440d211d843cec3dedfa48055005825" + integrity sha512-rhjH9AG1fvabIDoGRVH587413LPjTZgmDF9fOFCbFJQV4yuocX1mHxxvXI4g3cGwbVY9wAYIoKlg1N79frJKQw== + +class-utils@^0.3.5: + version "0.3.6" + resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" + integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== + dependencies: + arr-union "^3.1.0" + define-property "^0.2.5" + isobject "^3.0.0" + static-extend "^0.1.1" + +classnames@^2.2.6: + version "2.3.1" + resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.3.1.tgz#dfcfa3891e306ec1dad105d0e88f4417b8535e8e" + integrity sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA== + +clean-css@^4.2.3: + version "4.2.4" + resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.4.tgz#733bf46eba4e607c6891ea57c24a989356831178" + integrity sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A== + dependencies: + source-map "~0.6.0" + +clean-stack@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" + integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== + +cli-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" + integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== + dependencies: + restore-cursor "^3.1.0" + +cli-truncate@2.1.0, cli-truncate@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-2.1.0.tgz#c39e28bf05edcde5be3b98992a22deed5a2b93c7" + integrity sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg== + dependencies: + slice-ansi "^3.0.0" + string-width "^4.2.0" + +cli-width@^2.0.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.1.tgz#b0433d0b4e9c847ef18868a4ef16fd5fc8271c48" + integrity sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw== + +cli-width@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6" + integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw== + +cliui@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" + integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== + dependencies: + string-width "^3.1.0" + strip-ansi "^5.2.0" + wrap-ansi "^5.1.0" + +cliui@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" + integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^6.2.0" + +cliui@^7.0.2: + version "7.0.4" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" + integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^7.0.0" + +clone-deep@^0.2.4: + version "0.2.4" + resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-0.2.4.tgz#4e73dd09e9fb971cc38670c5dced9c1896481cc6" + integrity sha1-TnPdCen7lxzDhnDF3O2cGJZIHMY= + dependencies: + for-own "^0.1.3" + is-plain-object "^2.0.1" + kind-of "^3.0.2" + lazy-cache "^1.0.3" + shallow-clone "^0.1.2" + +clone-deep@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" + integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== + dependencies: + is-plain-object "^2.0.4" + kind-of "^6.0.2" + shallow-clone "^3.0.0" + +clone-response@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b" + integrity sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws= + dependencies: + mimic-response "^1.0.0" + +clone@^2.0.0, clone@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" + integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18= + +clsx@^1.0.4, clsx@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.1.1.tgz#98b3134f9abbdf23b2663491ace13c5c03a73188" + integrity sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA== + +co@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= + +coa@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/coa/-/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3" + integrity sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA== + dependencies: + "@types/q" "^1.5.1" + chalk "^2.4.1" + q "^1.1.2" + +collection-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" + integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= + dependencies: + map-visit "^1.0.0" + object-visit "^1.0.0" + +color-convert@^1.9.0, color-convert@^1.9.3: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= + +color-name@^1.0.0, color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +color-string@^1.6.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.9.0.tgz#63b6ebd1bec11999d1df3a79a7569451ac2be8aa" + integrity sha512-9Mrz2AQLefkH1UvASKj6v6hj/7eWgjnT/cVsR8CumieLoT+g900exWeNogqtweI8dxloXN9BDQTYro1oWu/5CQ== + dependencies: + color-name "^1.0.0" + simple-swizzle "^0.2.2" + +color@^3.0.0, color@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/color/-/color-3.2.1.tgz#3544dc198caf4490c3ecc9a790b54fe9ff45e164" + integrity sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA== + dependencies: + color-convert "^1.9.3" + color-string "^1.6.0" + +colorette@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.4.0.tgz#5190fbb87276259a86ad700bff2c6d6faa3fca40" + integrity sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g== + +colorette@^2.0.16: + version "2.0.16" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.16.tgz#713b9af84fdb000139f04546bd4a93f62a5085da" + integrity sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g== + +combined-stream@^1.0.6, combined-stream@~1.0.6: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +commander@^2.11.0, commander@^2.20.0: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +commander@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" + integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== + +commander@^8.2.0: + version "8.3.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" + integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== + +common-tags@^1.8.0: + version "1.8.2" + resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.2.tgz#94ebb3c076d26032745fd54face7f688ef5ac9c6" + integrity sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA== + +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= + +component-emitter@^1.2.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" + integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== + +compose-function@3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/compose-function/-/compose-function-3.0.3.tgz#9ed675f13cc54501d30950a486ff6a7ba3ab185f" + integrity sha1-ntZ18TzFRQHTCVCkhv9qe6OrGF8= + dependencies: + arity-n "^1.0.4" + +compressible@~2.0.16: + version "2.0.18" + resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" + integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== + dependencies: + mime-db ">= 1.43.0 < 2" + +compression@^1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" + integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== + dependencies: + accepts "~1.3.5" + bytes "3.0.0" + compressible "~2.0.16" + debug "2.6.9" + on-headers "~1.0.2" + safe-buffer "5.1.2" + vary "~1.1.2" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + +concat-stream@^1.5.0: + version "1.6.2" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" + integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== + dependencies: + buffer-from "^1.0.0" + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" + +confusing-browser-globals@^1.0.9: + version "1.0.11" + resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz#ae40e9b57cdd3915408a2805ebd3a5585608dc81" + integrity sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA== + +connect-history-api-fallback@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc" + integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg== + +connected-react-router@^6.8.0: + version "6.9.2" + resolved "https://registry.yarnpkg.com/connected-react-router/-/connected-react-router-6.9.2.tgz#f89fa87f0e977fcabf17475fb4552e170cc7e48e" + integrity sha512-bE8kNBiZv9Mivp7pYn9JvLH5ItTjLl45kk1/Vha0rmAK9I/ETb5JPJrAm0h2KCG9qLfv7vqU3Jo4UUDo0oJnQg== + dependencies: + lodash.isequalwith "^4.4.0" + prop-types "^15.7.2" + optionalDependencies: + immutable "^3.8.1 || ^4.0.0" + seamless-immutable "^7.1.3" + +console-browserify@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" + integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== + +constants-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" + integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= + +contains-path@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" + integrity sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo= + +content-disposition@0.5.4: + version "0.5.4" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" + integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== + dependencies: + safe-buffer "5.2.1" + +content-hash@^2.5.2: + version "2.5.2" + resolved "https://registry.yarnpkg.com/content-hash/-/content-hash-2.5.2.tgz#bbc2655e7c21f14fd3bfc7b7d4bfe6e454c9e211" + integrity sha512-FvIQKy0S1JaWV10sMsA7TRx8bpU+pqPkhbsfvOJAdjRXvYxEckAwQWGwtRjiaJfh+E0DvcWUGqcdjwMGFjsSdw== + dependencies: + cids "^0.7.1" + multicodec "^0.5.5" + multihashes "^0.4.15" + +content-type@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" + integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== + +convert-source-map@1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" + integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== + dependencies: + safe-buffer "~5.1.1" + +convert-source-map@^0.3.3: + version "0.3.5" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-0.3.5.tgz#f1d802950af7dd2631a1febe0596550c86ab3190" + integrity sha1-8dgClQr33SYxof6+BZZVDIarMZA= + +convert-source-map@^1.4.0, convert-source-map@^1.7.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369" + integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA== + dependencies: + safe-buffer "~5.1.1" + +cookie-signature@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" + integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= + +cookie@0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.1.tgz#afd713fe26ebd21ba95ceb61f9a8116e50a537d1" + integrity sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA== + +cookiejar@^2.1.1: + version "2.1.3" + resolved "https://registry.yarnpkg.com/cookiejar/-/cookiejar-2.1.3.tgz#fc7a6216e408e74414b90230050842dacda75acc" + integrity sha512-JxbCBUdrfr6AQjOXrxoTvAMJO4HBTUIlBzslcJPAz+/KT8yk53fXun51u+RenNYvad/+Vc2DIz5o9UxlCDymFQ== + +copy-concurrently@^1.0.0: + version "1.0.5" + resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" + integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A== + dependencies: + aproba "^1.1.1" + fs-write-stream-atomic "^1.0.8" + iferr "^0.1.5" + mkdirp "^0.5.1" + rimraf "^2.5.4" + run-queue "^1.0.0" + +copy-descriptor@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" + integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= + +copy-to-clipboard@^3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/copy-to-clipboard/-/copy-to-clipboard-3.3.1.tgz#115aa1a9998ffab6196f93076ad6da3b913662ae" + integrity sha512-i13qo6kIHTTpCm8/Wup+0b1mVWETvu2kIMzKoK8FpkLkFxlt0znUAHcMzox+T8sPlqtZXq3CulEjQHsYiGFJUw== + dependencies: + toggle-selection "^1.0.6" + +core-js-compat@^3.18.0, core-js-compat@^3.19.1, core-js-compat@^3.6.2: + version "3.20.2" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.20.2.tgz#d1ff6936c7330959b46b2e08b122a8b14e26140b" + integrity sha512-qZEzVQ+5Qh6cROaTPFLNS4lkvQ6mBzE3R6A6EEpssj7Zr2egMHgsy4XapdifqJDGC9CBiNv7s+ejI96rLNQFdg== + dependencies: + browserslist "^4.19.1" + semver "7.0.0" + +core-js-pure@^3.19.0: + version "3.20.2" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.20.2.tgz#5d263565f0e34ceeeccdc4422fae3e84ca6b8c0f" + integrity sha512-CmWHvSKn2vNL6p6StNp1EmMIfVY/pqn3JLAjfZQ8WZGPOlGoO92EkX9/Mk81i6GxvoPXjUqEQnpM3rJ5QxxIOg== + +core-js@^2.4.0: + version "2.6.12" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec" + integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== + +core-js@^3.5.0: + version "3.20.2" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.20.2.tgz#46468d8601eafc8b266bd2dd6bf9dee622779581" + integrity sha512-nuqhq11DcOAbFBV4zCbKeGbKQsUDRqTX0oqx7AttUBuqe3h20ixsE039QHelbL6P4h+9kytVqyEtyZ6gsiwEYw== + +core-util-is@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= + +core-util-is@~1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== + +cors@^2.8.1: + version "2.8.5" + resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29" + integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g== + dependencies: + object-assign "^4" + vary "^1" + +cosmiconfig@^5.0.0, cosmiconfig@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" + integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== + dependencies: + import-fresh "^2.0.0" + is-directory "^0.3.1" + js-yaml "^3.13.1" + parse-json "^4.0.0" + +cosmiconfig@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982" + integrity sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg== + dependencies: + "@types/parse-json" "^4.0.0" + import-fresh "^3.1.0" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.7.2" + +cosmiconfig@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.1.tgz#714d756522cace867867ccb4474c5d01bbae5d6d" + integrity sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ== + dependencies: + "@types/parse-json" "^4.0.0" + import-fresh "^3.2.1" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.10.0" + +cosmjs-types@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/cosmjs-types/-/cosmjs-types-0.2.1.tgz#bfa8e7721939e46f0fbd7848a82b3b47a2f7b3f2" + integrity sha512-EUG6TgdWkYHBzXjo5tZ82L+0QLijTu/rZGNIbJ/n07ST30GmptYkPmO+REX7qF4YUtli//Rfy0rrNzH9IMrMmw== + dependencies: + long "^4.0.0" + protobufjs "~6.11.2" + +crc-32@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/crc-32/-/crc-32-1.2.0.tgz#cb2db6e29b88508e32d9dd0ec1693e7b41a18208" + integrity sha512-1uBwHxF+Y/4yF5G48fwnKq6QsIXheor3ZLPT80yGBV1oEUwpPojlEhQbWKVw1VwcTQyMGHK1/XMmTjmlsmTTGA== + dependencies: + exit-on-epipe "~1.0.1" + printj "~1.1.0" + +create-ecdh@^4.0.0: + version "4.0.4" + resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" + integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A== + dependencies: + bn.js "^4.1.0" + elliptic "^6.5.3" + +create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" + integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== + dependencies: + cipher-base "^1.0.1" + inherits "^2.0.1" + md5.js "^1.3.4" + ripemd160 "^2.0.1" + sha.js "^2.4.0" + +create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" + integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== + dependencies: + cipher-base "^1.0.3" + create-hash "^1.1.0" + inherits "^2.0.1" + ripemd160 "^2.0.0" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +cross-fetch@^2.1.0: + version "2.2.5" + resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-2.2.5.tgz#afaf5729f3b6c78d89c9296115c9f142541a5705" + integrity sha512-xqYAhQb4NhCJSRym03dwxpP1bYXpK3y7UN83Bo2WFi3x1Zmzn0SL/6xGoPr+gpt4WmNrgCCX3HPysvOwFOW36w== + dependencies: + node-fetch "2.6.1" + whatwg-fetch "2.0.4" + +cross-spawn@7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.1.tgz#0ab56286e0f7c24e153d04cc2aa027e43a9a5d14" + integrity sha512-u7v4o84SwFpD32Z8IIcPZ6z1/ie24O6RU3RbtL5Y316l3KuHVPx9ItBgWQ6VlfAFnRnTtMUrsQ9MUUTuEZjogg== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +cross-spawn@^6.0.0, cross-spawn@^6.0.5: + version "6.0.5" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" + integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== + dependencies: + nice-try "^1.0.4" + path-key "^2.0.1" + semver "^5.5.0" + shebang-command "^1.2.0" + which "^1.2.9" + +cross-spawn@^7.0.3: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +crypto-browserify@3.12.0, crypto-browserify@^3.11.0: + version "3.12.0" + resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" + integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== + dependencies: + browserify-cipher "^1.0.0" + browserify-sign "^4.0.0" + create-ecdh "^4.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.0" + diffie-hellman "^5.0.0" + inherits "^2.0.1" + pbkdf2 "^3.0.3" + public-encrypt "^4.0.0" + randombytes "^2.0.0" + randomfill "^1.0.3" + +css-blank-pseudo@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/css-blank-pseudo/-/css-blank-pseudo-0.1.4.tgz#dfdefd3254bf8a82027993674ccf35483bfcb3c5" + integrity sha512-LHz35Hr83dnFeipc7oqFDmsjHdljj3TQtxGGiNWSOsTLIAubSm4TEz8qCaKFpk7idaQ1GfWscF4E6mgpBysA1w== + dependencies: + postcss "^7.0.5" + +css-color-keywords@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/css-color-keywords/-/css-color-keywords-1.0.0.tgz#fea2616dc676b2962686b3af8dbdbe180b244e05" + integrity sha1-/qJhbcZ2spYmhrOvjb2+GAskTgU= + +css-color-names@0.0.4, css-color-names@^0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0" + integrity sha1-gIrcLnnPhHOAabZGyyDsJ762KeA= + +css-declaration-sorter@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz#c198940f63a76d7e36c1e71018b001721054cb22" + integrity sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA== + dependencies: + postcss "^7.0.1" + timsort "^0.3.0" + +css-has-pseudo@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/css-has-pseudo/-/css-has-pseudo-0.10.0.tgz#3c642ab34ca242c59c41a125df9105841f6966ee" + integrity sha512-Z8hnfsZu4o/kt+AuFzeGpLVhFOGO9mluyHBaA2bA8aCGTwah5sT3WV/fTHH8UNZUytOIImuGPrl/prlb4oX4qQ== + dependencies: + postcss "^7.0.6" + postcss-selector-parser "^5.0.0-rc.4" + +css-loader@3.4.2: + version "3.4.2" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-3.4.2.tgz#d3fdb3358b43f233b78501c5ed7b1c6da6133202" + integrity sha512-jYq4zdZT0oS0Iykt+fqnzVLRIeiPWhka+7BqPn+oSIpWJAHak5tmB/WZrJ2a21JhCeFyNnnlroSl8c+MtVndzA== + dependencies: + camelcase "^5.3.1" + cssesc "^3.0.0" + icss-utils "^4.1.1" + loader-utils "^1.2.3" + normalize-path "^3.0.0" + postcss "^7.0.23" + postcss-modules-extract-imports "^2.0.0" + postcss-modules-local-by-default "^3.0.2" + postcss-modules-scope "^2.1.1" + postcss-modules-values "^3.0.0" + postcss-value-parser "^4.0.2" + schema-utils "^2.6.0" + +css-prefers-color-scheme@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/css-prefers-color-scheme/-/css-prefers-color-scheme-3.1.1.tgz#6f830a2714199d4f0d0d0bb8a27916ed65cff1f4" + integrity sha512-MTu6+tMs9S3EUqzmqLXEcgNRbNkkD/TGFvowpeoWJn5Vfq7FMgsmRQs9X5NXAURiOBmOxm/lLjsDNXDE6k9bhg== + dependencies: + postcss "^7.0.5" + +css-select-base-adapter@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7" + integrity sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w== + +css-select@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.1.0.tgz#6a34653356635934a81baca68d0255432105dbef" + integrity sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ== + dependencies: + boolbase "^1.0.0" + css-what "^3.2.1" + domutils "^1.7.0" + nth-check "^1.0.2" + +css-select@^4.1.3: + version "4.2.1" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.2.1.tgz#9e665d6ae4c7f9d65dbe69d0316e3221fb274cdd" + integrity sha512-/aUslKhzkTNCQUB2qTX84lVmfia9NyjP3WpDGtj/WxhwBzWBYUV3DgUpurHTme8UTPcPlAD1DJ+b0nN/t50zDQ== + dependencies: + boolbase "^1.0.0" + css-what "^5.1.0" + domhandler "^4.3.0" + domutils "^2.8.0" + nth-check "^2.0.1" + +css-to-react-native@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/css-to-react-native/-/css-to-react-native-3.0.0.tgz#62dbe678072a824a689bcfee011fc96e02a7d756" + integrity sha512-Ro1yETZA813eoyUp2GDBhG2j+YggidUmzO1/v9eYBKR2EHVEniE2MI/NqpTQ954BMpTPZFsGNPm46qFB9dpaPQ== + dependencies: + camelize "^1.0.0" + css-color-keywords "^1.0.0" + postcss-value-parser "^4.0.2" + +css-tree@1.0.0-alpha.37: + version "1.0.0-alpha.37" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.37.tgz#98bebd62c4c1d9f960ec340cf9f7522e30709a22" + integrity sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg== + dependencies: + mdn-data "2.0.4" + source-map "^0.6.1" + +css-tree@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d" + integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q== + dependencies: + mdn-data "2.0.14" + source-map "^0.6.1" + +css-vendor@^2.0.8: + version "2.0.8" + resolved "https://registry.yarnpkg.com/css-vendor/-/css-vendor-2.0.8.tgz#e47f91d3bd3117d49180a3c935e62e3d9f7f449d" + integrity sha512-x9Aq0XTInxrkuFeHKbYC7zWY8ai7qJ04Kxd9MnvbC1uO5DagxoHQjm4JvG+vCdXOoFtCjbL2XSZfxmoYa9uQVQ== + dependencies: + "@babel/runtime" "^7.8.3" + is-in-browser "^1.0.2" + +css-what@^3.2.1: + version "3.4.2" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-3.4.2.tgz#ea7026fcb01777edbde52124e21f327e7ae950e4" + integrity sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ== + +css-what@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-5.1.0.tgz#3f7b707aadf633baf62c2ceb8579b545bb40f7fe" + integrity sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw== + +css@^2.0.0: + version "2.2.4" + resolved "https://registry.yarnpkg.com/css/-/css-2.2.4.tgz#c646755c73971f2bba6a601e2cf2fd71b1298929" + integrity sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw== + dependencies: + inherits "^2.0.3" + source-map "^0.6.1" + source-map-resolve "^0.5.2" + urix "^0.1.0" + +cssdb@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/cssdb/-/cssdb-4.4.0.tgz#3bf2f2a68c10f5c6a08abd92378331ee803cddb0" + integrity sha512-LsTAR1JPEM9TpGhl/0p3nQecC2LJ0kD8X5YARu1hk/9I1gril5vDtMZyNxcEpxxDj34YNck/ucjuoUd66K03oQ== + +cssesc@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-2.0.0.tgz#3b13bd1bb1cb36e1bcb5a4dcd27f54c5dcb35703" + integrity sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg== + +cssesc@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" + integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== + +cssnano-preset-default@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-4.0.8.tgz#920622b1fc1e95a34e8838203f1397a504f2d3ff" + integrity sha512-LdAyHuq+VRyeVREFmuxUZR1TXjQm8QQU/ktoo/x7bz+SdOge1YKc5eMN6pRW7YWBmyq59CqYba1dJ5cUukEjLQ== + dependencies: + css-declaration-sorter "^4.0.1" + cssnano-util-raw-cache "^4.0.1" + postcss "^7.0.0" + postcss-calc "^7.0.1" + postcss-colormin "^4.0.3" + postcss-convert-values "^4.0.1" + postcss-discard-comments "^4.0.2" + postcss-discard-duplicates "^4.0.2" + postcss-discard-empty "^4.0.1" + postcss-discard-overridden "^4.0.1" + postcss-merge-longhand "^4.0.11" + postcss-merge-rules "^4.0.3" + postcss-minify-font-values "^4.0.2" + postcss-minify-gradients "^4.0.2" + postcss-minify-params "^4.0.2" + postcss-minify-selectors "^4.0.2" + postcss-normalize-charset "^4.0.1" + postcss-normalize-display-values "^4.0.2" + postcss-normalize-positions "^4.0.2" + postcss-normalize-repeat-style "^4.0.2" + postcss-normalize-string "^4.0.2" + postcss-normalize-timing-functions "^4.0.2" + postcss-normalize-unicode "^4.0.1" + postcss-normalize-url "^4.0.1" + postcss-normalize-whitespace "^4.0.2" + postcss-ordered-values "^4.1.2" + postcss-reduce-initial "^4.0.3" + postcss-reduce-transforms "^4.0.2" + postcss-svgo "^4.0.3" + postcss-unique-selectors "^4.0.1" + +cssnano-util-get-arguments@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz#ed3a08299f21d75741b20f3b81f194ed49cc150f" + integrity sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8= + +cssnano-util-get-match@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz#c0e4ca07f5386bb17ec5e52250b4f5961365156d" + integrity sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0= + +cssnano-util-raw-cache@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz#b26d5fd5f72a11dfe7a7846fb4c67260f96bf282" + integrity sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA== + dependencies: + postcss "^7.0.0" + +cssnano-util-same-parent@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz#574082fb2859d2db433855835d9a8456ea18bbf3" + integrity sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q== + +cssnano@^4.1.10: + version "4.1.11" + resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-4.1.11.tgz#c7b5f5b81da269cb1fd982cb960c1200910c9a99" + integrity sha512-6gZm2htn7xIPJOHY824ERgj8cNPgPxyCSnkXc4v7YvNW+TdVfzgngHcEhy/8D11kUWRUMbke+tC+AUcUsnMz2g== + dependencies: + cosmiconfig "^5.0.0" + cssnano-preset-default "^4.0.8" + is-resolvable "^1.0.0" + postcss "^7.0.0" + +csso@^4.0.2: + version "4.2.0" + resolved "https://registry.yarnpkg.com/csso/-/csso-4.2.0.tgz#ea3a561346e8dc9f546d6febedd50187cf389529" + integrity sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA== + dependencies: + css-tree "^1.1.2" + +cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0", cssom@^0.3.4: + version "0.3.8" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" + integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== + +cssstyle@^1.0.0, cssstyle@^1.1.1: + version "1.4.0" + resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-1.4.0.tgz#9d31328229d3c565c61e586b02041a28fccdccf1" + integrity sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA== + dependencies: + cssom "0.3.x" + +csstype@^2.5.2: + version "2.6.19" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.19.tgz#feeb5aae89020bb389e1f63669a5ed490e391caa" + integrity sha512-ZVxXaNy28/k3kJg0Fou5MiYpp88j7H9hLZp8PDC3jV0WFjfH5E9xHb56L0W59cPbKbcHXeP4qyT8PrHp8t6LcQ== + +csstype@^3.0.2: + version "3.0.10" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.10.tgz#2ad3a7bed70f35b965707c092e5f30b327c290e5" + integrity sha512-2u44ZG2OcNUO9HDp/Jl8C07x6pU/eTR3ncV91SiK3dhG9TWvRVsCoJw14Ckx5DgWkzGA3waZWO3d7pgqpUI/XA== + +cyclist@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" + integrity sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk= + +d@1, d@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" + integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA== + dependencies: + es5-ext "^0.10.50" + type "^1.0.1" + +damerau-levenshtein@^1.0.4: + version "1.0.8" + resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz#b43d286ccbd36bc5b2f7ed41caf2d0aba1f8a6e7" + integrity sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA== + +dashdash@^1.12.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= + dependencies: + assert-plus "^1.0.0" + +data-urls@^1.0.0, data-urls@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-1.1.0.tgz#15ee0582baa5e22bb59c77140da8f9c76963bbfe" + integrity sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ== + dependencies: + abab "^2.0.0" + whatwg-mimetype "^2.2.0" + whatwg-url "^7.0.0" + +debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.9: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@^3.1.1, debug@^3.2.5, debug@^3.2.7: + version "3.2.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== + dependencies: + ms "^2.1.1" + +debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.2: + version "4.3.3" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664" + integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q== + dependencies: + ms "2.1.2" + +decamelize@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= + +decode-uri-component@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" + integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= + +decompress-response@^3.2.0, decompress-response@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" + integrity sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M= + dependencies: + mimic-response "^1.0.0" + +deep-equal@^1.0.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a" + integrity sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g== + dependencies: + is-arguments "^1.0.4" + is-date-object "^1.0.1" + is-regex "^1.0.4" + object-is "^1.0.1" + object-keys "^1.1.1" + regexp.prototype.flags "^1.2.0" + +deep-is@~0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" + integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== + +default-gateway@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-4.2.0.tgz#167104c7500c2115f6dd69b0a536bb8ed720552b" + integrity sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA== + dependencies: + execa "^1.0.0" + ip-regex "^2.1.0" + +defer-to-connect@^1.0.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591" + integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ== + +deferred-leveldown@~1.2.1: + version "1.2.2" + resolved "https://registry.yarnpkg.com/deferred-leveldown/-/deferred-leveldown-1.2.2.tgz#3acd2e0b75d1669924bc0a4b642851131173e1eb" + integrity sha512-uukrWD2bguRtXilKt6cAWKyoXrTSMo5m7crUdLfWQmu8kIm88w3QZoUL+6nhpfKVmhHANER6Re3sKoNoZ3IKMA== + dependencies: + abstract-leveldown "~2.6.0" + +deficonnect@^1.1.5: + version "1.1.7" + resolved "https://registry.yarnpkg.com/deficonnect/-/deficonnect-1.1.7.tgz#e40fcaacff644fda28179e2dbba80c088ee96aaa" + integrity sha512-2fJmzPNyXetOWla5x1pP95yhVb0JdsN9GcdgVOleWTGFWlC6ZUOmNZ+g19yfUd/kYjWREaI8661mAYxmZRSLIw== + dependencies: + "@cosmjs/amino" "^0.26.0" + "@cosmjs/encoding" "^0.26.0" + "@cosmjs/proto-signing" "^0.26.0" + "@cosmjs/stargate" "^0.26.1" + "@deficonnect/client" "^1.6.8" + "@deficonnect/core" "^1.6.8" + "@deficonnect/iso-crypto" "^1.6.8" + "@deficonnect/types" "^1.6.8" + "@deficonnect/utils" "^1.6.8" + "@deficonnect/web3-provider" "^1.6.8" + "@types/qrcode" "^1.4.1" + "@types/react-modal" "^3.12.0" + "@web3-react/injected-connector" "^6.0.7" + cosmjs-types "^0.2.0" + qrcode "^1.4.4" + react "^16.13.1" + react-dom "^16.13.1" + react-modal "^3.14.3" + regenerator-runtime "^0.13.9" + ws "7.3.0" + +define-properties@^1.1.2, define-properties@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" + integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== + dependencies: + object-keys "^1.0.12" + +define-property@^0.2.5: + version "0.2.5" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" + integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= + dependencies: + is-descriptor "^0.1.0" + +define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" + integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= + dependencies: + is-descriptor "^1.0.0" + +define-property@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" + integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== + dependencies: + is-descriptor "^1.0.2" + isobject "^3.0.1" + +del@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/del/-/del-4.1.1.tgz#9e8f117222ea44a31ff3a156c049b99052a9f0b4" + integrity sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ== + dependencies: + "@types/glob" "^7.1.1" + globby "^6.1.0" + is-path-cwd "^2.0.0" + is-path-in-cwd "^2.0.0" + p-map "^2.0.0" + pify "^4.0.1" + rimraf "^2.6.3" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= + +depd@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= + +dequal@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.2.tgz#85ca22025e3a87e65ef75a7a437b35284a7e319d" + integrity sha512-q9K8BlJVxK7hQYqa6XISGmBZbtQQWVXSrRrWreHC94rMt1QL/Impruc+7p2CYSYuVIUr+YCt6hjrs1kkdJRTug== + +des.js@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" + integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== + dependencies: + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + +destroy@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" + integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= + +detect-browser@5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/detect-browser/-/detect-browser-5.2.0.tgz#c9cd5afa96a6a19fda0bbe9e9be48a6b6e1e9c97" + integrity sha512-tr7XntDAu50BVENgQfajMLzacmSe34D+qZc4zjnniz0ZVuw/TZcLcyxHQjYpJTM36sGEkZZlYLnIM1hH7alTMA== + +detect-browser@^5.1.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/detect-browser/-/detect-browser-5.3.0.tgz#9705ef2bddf46072d0f7265a1fe300e36fe7ceca" + integrity sha512-53rsFbGdwMwlF7qvCt0ypLM5V5/Mbl0szB7GPN8y9NCcbknYOeVVXdrXEq+90IwAfrrzt6Hd+u2E2ntakICU8w== + +detect-newline@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2" + integrity sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I= + +detect-node@^2.0.4: + version "2.1.0" + resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1" + integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== + +detect-port-alt@1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/detect-port-alt/-/detect-port-alt-1.1.6.tgz#24707deabe932d4a3cf621302027c2b266568275" + integrity sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q== + dependencies: + address "^1.0.1" + debug "^2.6.0" + +diff-sequences@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-24.9.0.tgz#5715d6244e2aa65f48bba0bc972db0b0b11e95b5" + integrity sha512-Dj6Wk3tWyTE+Fo1rW8v0Xhwk80um6yFYKbuAxc9c3EZxIHFDYwbi34Uk42u1CdnIiVorvt4RmlSDjIPyzGC2ew== + +diffie-hellman@^5.0.0: + version "5.0.3" + resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" + integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== + dependencies: + bn.js "^4.1.0" + miller-rabin "^4.0.0" + randombytes "^2.0.0" + +dijkstrajs@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/dijkstrajs/-/dijkstrajs-1.0.2.tgz#2e48c0d3b825462afe75ab4ad5e829c8ece36257" + integrity sha512-QV6PMaHTCNmKSeP6QoXhVTw9snc9VD8MulTT0Bd99Pacp4SS1cjcrYPgBPmibqKVtMJJfqC6XvOXgPMEEPH/fg== + +dir-glob@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.0.0.tgz#0b205d2b6aef98238ca286598a8204d29d0a0034" + integrity sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag== + dependencies: + arrify "^1.0.1" + path-type "^3.0.0" + +dns-equal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d" + integrity sha1-s55/HabrCnW6nBcySzR1PEfgZU0= + +dns-packet@^1.3.1: + version "1.3.4" + resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.3.4.tgz#e3455065824a2507ba886c55a89963bb107dec6f" + integrity sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA== + dependencies: + ip "^1.1.0" + safe-buffer "^5.0.1" + +dns-txt@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/dns-txt/-/dns-txt-2.0.2.tgz#b91d806f5d27188e4ab3e7d107d881a1cc4642b6" + integrity sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY= + dependencies: + buffer-indexof "^1.0.0" + +doctrine@1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" + integrity sha1-N53Ocw9hZvds76TmcHoVmwLFpvo= + dependencies: + esutils "^2.0.2" + isarray "^1.0.0" + +doctrine@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" + integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== + dependencies: + esutils "^2.0.2" + +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + dependencies: + esutils "^2.0.2" + +dom-converter@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768" + integrity sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA== + dependencies: + utila "~0.4" + +dom-helpers@^5.0.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-5.2.1.tgz#d9400536b2bf8225ad98fe052e029451ac40e902" + integrity sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA== + dependencies: + "@babel/runtime" "^7.8.7" + csstype "^3.0.2" + +dom-serializer@0: + version "0.2.2" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51" + integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== + dependencies: + domelementtype "^2.0.1" + entities "^2.0.0" + +dom-serializer@^1.0.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.3.2.tgz#6206437d32ceefaec7161803230c7a20bc1b4d91" + integrity sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig== + dependencies: + domelementtype "^2.0.1" + domhandler "^4.2.0" + entities "^2.0.0" + +dom-walk@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.2.tgz#0c548bef048f4d1f2a97249002236060daa3fd84" + integrity sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w== + +domain-browser@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" + integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== + +domelementtype@1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" + integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== + +domelementtype@^2.0.1, domelementtype@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.2.0.tgz#9a0b6c2782ed6a1c7323d42267183df9bd8b1d57" + integrity sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A== + +domexception@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/domexception/-/domexception-1.0.1.tgz#937442644ca6a31261ef36e3ec677fe805582c90" + integrity sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug== + dependencies: + webidl-conversions "^4.0.2" + +domhandler@^4.0.0, domhandler@^4.2.0, domhandler@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.0.tgz#16c658c626cf966967e306f966b431f77d4a5626" + integrity sha512-fC0aXNQXqKSFTr2wDNZDhsEYjCiYsDWl3D01kwt25hm1YIPyDGHvvi3rw+PLqHAl/m71MaiF7d5zvBr0p5UB2g== + dependencies: + domelementtype "^2.2.0" + +domutils@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" + integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== + dependencies: + dom-serializer "0" + domelementtype "1" + +domutils@^2.5.2, domutils@^2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" + integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== + dependencies: + dom-serializer "^1.0.1" + domelementtype "^2.2.0" + domhandler "^4.2.0" + +dot-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751" + integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + +dot-prop@^5.2.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88" + integrity sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q== + dependencies: + is-obj "^2.0.0" + +dotenv-expand@5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-5.1.0.tgz#3fbaf020bfd794884072ea26b1e9791d45a629f0" + integrity sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA== + +dotenv@8.2.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.2.0.tgz#97e619259ada750eea3e4ea3e26bceea5424b16a" + integrity sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw== + +duplexer3@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" + integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= + +duplexer@^0.1.1, duplexer@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" + integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== + +duplexify@^3.4.2, duplexify@^3.6.0: + version "3.7.1" + resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" + integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== + dependencies: + end-of-stream "^1.0.0" + inherits "^2.0.1" + readable-stream "^2.0.0" + stream-shift "^1.0.0" + +ecc-jsbn@~0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" + integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= + dependencies: + jsbn "~0.1.0" + safer-buffer "^2.1.0" + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= + +ejs@^3.1.5: + version "3.1.6" + resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.6.tgz#5bfd0a0689743bb5268b3550cceeebbc1702822a" + integrity sha512-9lt9Zse4hPucPkoP7FHDF0LQAlGyF9JVpnClFLFH3aSSbxmyoqINRpp/9wePWJTUl4KOQwRL72Iw3InHPDkoGw== + dependencies: + jake "^10.6.1" + +electron-to-chromium@^1.3.378, electron-to-chromium@^1.4.17: + version "1.4.38" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.38.tgz#10ea58d73d36b13e78d5024f3b74a352d3958d01" + integrity sha512-WhHt3sZazKj0KK/UpgsbGQnUUoFeAHVishzHFExMxagpZgjiGYSC9S0ZlbhCfSH2L2i+2A1yyqOIliTctMx7KQ== + +elliptic@6.5.4, elliptic@^6.4.0, elliptic@^6.5.2, elliptic@^6.5.3, elliptic@^6.5.4: + version "6.5.4" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" + integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== + dependencies: + bn.js "^4.11.9" + brorand "^1.1.0" + hash.js "^1.0.0" + hmac-drbg "^1.0.1" + inherits "^2.0.4" + minimalistic-assert "^1.0.1" + minimalistic-crypto-utils "^1.0.1" + +emoji-regex@^7.0.1, emoji-regex@^7.0.2: + version "7.0.3" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" + integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +emojis-list@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" + integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k= + +emojis-list@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" + integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== + +encode-utf8@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/encode-utf8/-/encode-utf8-1.0.3.tgz#f30fdd31da07fb596f281beb2f6b027851994cda" + integrity sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw== + +encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= + +end-of-stream@^1.0.0, end-of-stream@^1.1.0: + version "1.4.4" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== + dependencies: + once "^1.4.0" + +enhanced-resolve@^4.1.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz#2f3cfd84dbe3b487f18f2db2ef1e064a571ca5ec" + integrity sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg== + dependencies: + graceful-fs "^4.1.2" + memory-fs "^0.5.0" + tapable "^1.0.0" + +enquirer@^2.3.6: + version "2.3.6" + resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" + integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== + dependencies: + ansi-colors "^4.1.1" + +entities@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" + integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== + +errno@^0.1.3, errno@~0.1.1, errno@~0.1.7: + version "0.1.8" + resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f" + integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A== + dependencies: + prr "~1.0.1" + +error-ex@^1.2.0, error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +es-abstract@^1.17.2, es-abstract@^1.18.5, es-abstract@^1.19.0, es-abstract@^1.19.1: + version "1.19.1" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.19.1.tgz#d4885796876916959de78edaa0df456627115ec3" + integrity sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w== + dependencies: + call-bind "^1.0.2" + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + get-intrinsic "^1.1.1" + get-symbol-description "^1.0.0" + has "^1.0.3" + has-symbols "^1.0.2" + internal-slot "^1.0.3" + is-callable "^1.2.4" + is-negative-zero "^2.0.1" + is-regex "^1.1.4" + is-shared-array-buffer "^1.0.1" + is-string "^1.0.7" + is-weakref "^1.0.1" + object-inspect "^1.11.0" + object-keys "^1.1.1" + object.assign "^4.1.2" + string.prototype.trimend "^1.0.4" + string.prototype.trimstart "^1.0.4" + unbox-primitive "^1.0.1" + +es-to-primitive@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + +es5-ext@^0.10.35, es5-ext@^0.10.50: + version "0.10.53" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.53.tgz#93c5a3acfdbef275220ad72644ad02ee18368de1" + integrity sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q== + dependencies: + es6-iterator "~2.0.3" + es6-symbol "~3.1.3" + next-tick "~1.0.0" + +es6-iterator@2.0.3, es6-iterator@~2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" + integrity sha1-p96IkUGgWpSwhUQDstCg+/qY87c= + dependencies: + d "1" + es5-ext "^0.10.35" + es6-symbol "^3.1.1" + +es6-symbol@^3.1.1, es6-symbol@~3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18" + integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA== + dependencies: + d "^1.0.1" + ext "^1.1.2" + +escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + +escape-html@^1.0.3, escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= + +escape-string-regexp@2.0.0, escape-string-regexp@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" + integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== + +escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= + +escodegen@^1.11.0, escodegen@^1.9.1: + version "1.14.3" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.3.tgz#4e7b81fba61581dc97582ed78cab7f0e8d63f503" + integrity sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw== + dependencies: + esprima "^4.0.1" + estraverse "^4.2.0" + esutils "^2.0.2" + optionator "^0.8.1" + optionalDependencies: + source-map "~0.6.1" + +eslint-config-react-app@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/eslint-config-react-app/-/eslint-config-react-app-5.2.1.tgz#698bf7aeee27f0cea0139eaef261c7bf7dd623df" + integrity sha512-pGIZ8t0mFLcV+6ZirRgYK6RVqUIKRIi9MmgzUEmrIknsn3AdO0I32asO86dJgloHq+9ZPl8UIg8mYrvgP5u2wQ== + dependencies: + confusing-browser-globals "^1.0.9" + +eslint-import-resolver-node@^0.3.2: + version "0.3.6" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz#4048b958395da89668252001dbd9eca6b83bacbd" + integrity sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw== + dependencies: + debug "^3.2.7" + resolve "^1.20.0" + +eslint-loader@3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/eslint-loader/-/eslint-loader-3.0.3.tgz#e018e3d2722381d982b1201adb56819c73b480ca" + integrity sha512-+YRqB95PnNvxNp1HEjQmvf9KNvCin5HXYYseOXVC2U0KEcw4IkQ2IQEBG46j7+gW39bMzeu0GsUhVbBY3Votpw== + dependencies: + fs-extra "^8.1.0" + loader-fs-cache "^1.0.2" + loader-utils "^1.2.3" + object-hash "^2.0.1" + schema-utils "^2.6.1" + +eslint-module-utils@^2.4.1: + version "2.7.2" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.7.2.tgz#1d0aa455dcf41052339b63cada8ab5fd57577129" + integrity sha512-zquepFnWCY2ISMFwD/DqzaM++H+7PDzOpUvotJWm/y1BAFt5R4oeULgdrTejKqLkz7MA/tgstsUMNYc7wNdTrg== + dependencies: + debug "^3.2.7" + find-up "^2.1.0" + +eslint-plugin-flowtype@4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-4.6.0.tgz#82b2bd6f21770e0e5deede0228e456cb35308451" + integrity sha512-W5hLjpFfZyZsXfo5anlu7HM970JBDqbEshAJUkeczP6BFCIfJXuiIBQXyberLRtOStT0OGPF8efeTbxlHk4LpQ== + dependencies: + lodash "^4.17.15" + +eslint-plugin-import@2.20.1: + version "2.20.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.20.1.tgz#802423196dcb11d9ce8435a5fc02a6d3b46939b3" + integrity sha512-qQHgFOTjguR+LnYRoToeZWT62XM55MBVXObHM6SKFd1VzDcX/vqT1kAz8ssqigh5eMj8qXcRoXXGZpPP6RfdCw== + dependencies: + array-includes "^3.0.3" + array.prototype.flat "^1.2.1" + contains-path "^0.1.0" + debug "^2.6.9" + doctrine "1.5.0" + eslint-import-resolver-node "^0.3.2" + eslint-module-utils "^2.4.1" + has "^1.0.3" + minimatch "^3.0.4" + object.values "^1.1.0" + read-pkg-up "^2.0.0" + resolve "^1.12.0" + +eslint-plugin-jsx-a11y@6.2.3: + version "6.2.3" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.2.3.tgz#b872a09d5de51af70a97db1eea7dc933043708aa" + integrity sha512-CawzfGt9w83tyuVekn0GDPU9ytYtxyxyFZ3aSWROmnRRFQFT2BiPJd7jvRdzNDi6oLWaS2asMeYSNMjWTV4eNg== + dependencies: + "@babel/runtime" "^7.4.5" + aria-query "^3.0.0" + array-includes "^3.0.3" + ast-types-flow "^0.0.7" + axobject-query "^2.0.2" + damerau-levenshtein "^1.0.4" + emoji-regex "^7.0.2" + has "^1.0.3" + jsx-ast-utils "^2.2.1" + +eslint-plugin-react-hooks@^1.6.1: + version "1.7.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-1.7.0.tgz#6210b6d5a37205f0b92858f895a4e827020a7d04" + integrity sha512-iXTCFcOmlWvw4+TOE8CLWj6yX1GwzT0Y6cUfHHZqWnSk144VmVIRcVGtUAzrLES7C798lmvnt02C7rxaOX1HNA== + +eslint-plugin-react@7.19.0: + version "7.19.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.19.0.tgz#6d08f9673628aa69c5559d33489e855d83551666" + integrity sha512-SPT8j72CGuAP+JFbT0sJHOB80TX/pu44gQ4vXH/cq+hQTiY2PuZ6IHkqXJV6x1b28GDdo1lbInjKUrrdUf0LOQ== + dependencies: + array-includes "^3.1.1" + doctrine "^2.1.0" + has "^1.0.3" + jsx-ast-utils "^2.2.3" + object.entries "^1.1.1" + object.fromentries "^2.0.2" + object.values "^1.1.1" + prop-types "^15.7.2" + resolve "^1.15.1" + semver "^6.3.0" + string.prototype.matchall "^4.0.2" + xregexp "^4.3.0" + +eslint-scope@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" + integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + +eslint-scope@^5.0.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== + dependencies: + esrecurse "^4.3.0" + estraverse "^4.1.1" + +eslint-utils@^1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.3.tgz#74fec7c54d0776b6f67e0251040b5806564e981f" + integrity sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q== + dependencies: + eslint-visitor-keys "^1.1.0" + +eslint-utils@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" + integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== + dependencies: + eslint-visitor-keys "^1.1.0" + +eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" + integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== + +eslint@^6.6.0: + version "6.8.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-6.8.0.tgz#62262d6729739f9275723824302fb227c8c93ffb" + integrity sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig== + dependencies: + "@babel/code-frame" "^7.0.0" + ajv "^6.10.0" + chalk "^2.1.0" + cross-spawn "^6.0.5" + debug "^4.0.1" + doctrine "^3.0.0" + eslint-scope "^5.0.0" + eslint-utils "^1.4.3" + eslint-visitor-keys "^1.1.0" + espree "^6.1.2" + esquery "^1.0.1" + esutils "^2.0.2" + file-entry-cache "^5.0.1" + functional-red-black-tree "^1.0.1" + glob-parent "^5.0.0" + globals "^12.1.0" + ignore "^4.0.6" + import-fresh "^3.0.0" + imurmurhash "^0.1.4" + inquirer "^7.0.0" + is-glob "^4.0.0" + js-yaml "^3.13.1" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.3.0" + lodash "^4.17.14" + minimatch "^3.0.4" + mkdirp "^0.5.1" + natural-compare "^1.4.0" + optionator "^0.8.3" + progress "^2.0.0" + regexpp "^2.0.1" + semver "^6.1.2" + strip-ansi "^5.2.0" + strip-json-comments "^3.0.1" + table "^5.2.3" + text-table "^0.2.0" + v8-compile-cache "^2.0.3" + +espree@^6.1.2: + version "6.2.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-6.2.1.tgz#77fc72e1fd744a2052c20f38a5b575832e82734a" + integrity sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw== + dependencies: + acorn "^7.1.1" + acorn-jsx "^5.2.0" + eslint-visitor-keys "^1.1.0" + +esprima@^4.0.0, esprima@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +esquery@^1.0.1: + version "1.4.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" + integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== + dependencies: + estraverse "^5.1.0" + +esrecurse@^4.1.0, esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^4.1.1, estraverse@^4.2.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +estraverse@^5.1.0, estraverse@^5.2.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +etag@~1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= + +eth-block-tracker@4.4.3, eth-block-tracker@^4.4.2: + version "4.4.3" + resolved "https://registry.yarnpkg.com/eth-block-tracker/-/eth-block-tracker-4.4.3.tgz#766a0a0eb4a52c867a28328e9ae21353812cf626" + integrity sha512-A8tG4Z4iNg4mw5tP1Vung9N9IjgMNqpiMoJ/FouSFwNCGHv2X0mmOYwtQOJzki6XN7r7Tyo01S29p7b224I4jw== + dependencies: + "@babel/plugin-transform-runtime" "^7.5.5" + "@babel/runtime" "^7.5.5" + eth-query "^2.1.0" + json-rpc-random-id "^1.0.1" + pify "^3.0.0" + safe-event-emitter "^1.0.1" + +eth-ens-namehash@2.0.8: + version "2.0.8" + resolved "https://registry.yarnpkg.com/eth-ens-namehash/-/eth-ens-namehash-2.0.8.tgz#229ac46eca86d52e0c991e7cb2aef83ff0f68bcf" + integrity sha1-IprEbsqG1S4MmR58sq74P/D2i88= + dependencies: + idna-uts46-hx "^2.3.1" + js-sha3 "^0.5.7" + +eth-json-rpc-filters@4.2.2, eth-json-rpc-filters@^4.2.1: + version "4.2.2" + resolved "https://registry.yarnpkg.com/eth-json-rpc-filters/-/eth-json-rpc-filters-4.2.2.tgz#eb35e1dfe9357ace8a8908e7daee80b2cd60a10d" + integrity sha512-DGtqpLU7bBg63wPMWg1sCpkKCf57dJ+hj/k3zF26anXMzkmtSBDExL8IhUu7LUd34f0Zsce3PYNO2vV2GaTzaw== + dependencies: + "@metamask/safe-event-emitter" "^2.0.0" + async-mutex "^0.2.6" + eth-json-rpc-middleware "^6.0.0" + eth-query "^2.1.2" + json-rpc-engine "^6.1.0" + pify "^5.0.0" + +eth-json-rpc-infura@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/eth-json-rpc-infura/-/eth-json-rpc-infura-5.1.0.tgz#e6da7dc47402ce64c54e7018170d89433c4e8fb6" + integrity sha512-THzLye3PHUSGn1EXMhg6WTLW9uim7LQZKeKaeYsS9+wOBcamRiCQVGHa6D2/4P0oS0vSaxsBnU/J6qvn0MPdow== + dependencies: + eth-json-rpc-middleware "^6.0.0" + eth-rpc-errors "^3.0.0" + json-rpc-engine "^5.3.0" + node-fetch "^2.6.0" + +eth-json-rpc-middleware@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/eth-json-rpc-middleware/-/eth-json-rpc-middleware-6.0.0.tgz#4fe16928b34231a2537856f08a5ebbc3d0c31175" + integrity sha512-qqBfLU2Uq1Ou15Wox1s+NX05S9OcAEL4JZ04VZox2NS0U+RtCMjSxzXhLFWekdShUPZ+P8ax3zCO2xcPrp6XJQ== + dependencies: + btoa "^1.2.1" + clone "^2.1.1" + eth-query "^2.1.2" + eth-rpc-errors "^3.0.0" + eth-sig-util "^1.4.2" + ethereumjs-util "^5.1.2" + json-rpc-engine "^5.3.0" + json-stable-stringify "^1.0.1" + node-fetch "^2.6.1" + pify "^3.0.0" + safe-event-emitter "^1.0.1" + +eth-lib@0.2.8: + version "0.2.8" + resolved "https://registry.yarnpkg.com/eth-lib/-/eth-lib-0.2.8.tgz#b194058bef4b220ad12ea497431d6cb6aa0623c8" + integrity sha512-ArJ7x1WcWOlSpzdoTBX8vkwlkSQ85CjjifSZtV4co64vWxSV8geWfPI9x4SVYu3DSxnX4yWFVTtGL+j9DUFLNw== + dependencies: + bn.js "^4.11.6" + elliptic "^6.4.0" + xhr-request-promise "^0.1.2" + +eth-lib@^0.1.26: + version "0.1.29" + resolved "https://registry.yarnpkg.com/eth-lib/-/eth-lib-0.1.29.tgz#0c11f5060d42da9f931eab6199084734f4dbd1d9" + integrity sha512-bfttrr3/7gG4E02HoWTDUcDDslN003OlOoBxk9virpAZQ1ja/jDgwkWB8QfJF7ojuEowrqy+lzp9VcJG7/k5bQ== + dependencies: + bn.js "^4.11.6" + elliptic "^6.4.0" + nano-json-stream-parser "^0.1.2" + servify "^0.1.12" + ws "^3.0.0" + xhr-request-promise "^0.1.2" + +eth-multicall@^1.3.13: + version "1.4.0" + resolved "https://registry.yarnpkg.com/eth-multicall/-/eth-multicall-1.4.0.tgz#cfd913157260fbaca6522c0cdac5c7ba82afd13e" + integrity sha512-qQEheqDy2cmVgCNIb/GWB+2vK4MB1DkyJYNEVtzR1mDWDcUZIdXdUAqr/QRequu0y2YTrre+ZPsFnS8tibGPDQ== + dependencies: + "@types/lodash" "^4.14.159" + lodash "^4.17.19" + web3 "^1.5.0" + +eth-query@^2.1.0, eth-query@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/eth-query/-/eth-query-2.1.2.tgz#d6741d9000106b51510c72db92d6365456a6da5e" + integrity sha1-1nQdkAAQa1FRDHLbktY2VFam2l4= + dependencies: + json-rpc-random-id "^1.0.0" + xtend "^4.0.1" + +eth-rpc-errors@4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/eth-rpc-errors/-/eth-rpc-errors-4.0.2.tgz#11bc164e25237a679061ac05b7da7537b673d3b7" + integrity sha512-n+Re6Gu8XGyfFy1it0AwbD1x0MUzspQs0D5UiPs1fFPCr6WAwZM+vbIhXheBFrpgosqN9bs5PqlB4Q61U/QytQ== + dependencies: + fast-safe-stringify "^2.0.6" + +eth-rpc-errors@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/eth-rpc-errors/-/eth-rpc-errors-3.0.0.tgz#d7b22653c70dbf9defd4ef490fd08fe70608ca10" + integrity sha512-iPPNHPrLwUlR9xCSYm7HHQjWBasor3+KZfRvwEWxMz3ca0yqnlBeJrnyphkGIXZ4J7AMAaOLmwy4AWhnxOiLxg== + dependencies: + fast-safe-stringify "^2.0.6" + +eth-rpc-errors@^4.0.2: + version "4.0.3" + resolved "https://registry.yarnpkg.com/eth-rpc-errors/-/eth-rpc-errors-4.0.3.tgz#6ddb6190a4bf360afda82790bb7d9d5e724f423a" + integrity sha512-Z3ymjopaoft7JDoxZcEb3pwdGh7yiYMhOwm2doUt6ASXlMavpNlK6Cre0+IMl2VSGyEU9rkiperQhp5iRxn5Pg== + dependencies: + fast-safe-stringify "^2.0.6" + +eth-sig-util@^1.4.2: + version "1.4.2" + resolved "https://registry.yarnpkg.com/eth-sig-util/-/eth-sig-util-1.4.2.tgz#8d958202c7edbaae839707fba6f09ff327606210" + integrity sha1-jZWCAsftuq6Dlwf7pvCf8ydgYhA= + dependencies: + ethereumjs-abi "git+https://github.com/ethereumjs/ethereumjs-abi.git" + ethereumjs-util "^5.1.1" + +ethereum-bloom-filters@^1.0.6: + version "1.0.10" + resolved "https://registry.yarnpkg.com/ethereum-bloom-filters/-/ethereum-bloom-filters-1.0.10.tgz#3ca07f4aed698e75bd134584850260246a5fed8a" + integrity sha512-rxJ5OFN3RwjQxDcFP2Z5+Q9ho4eIdEmSc2ht0fCu8Se9nbXjZ7/031uXoUYJ87KHCOdVeiUuwSnoS7hmYAGVHA== + dependencies: + js-sha3 "^0.8.0" + +ethereum-common@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/ethereum-common/-/ethereum-common-0.2.0.tgz#13bf966131cce1eeade62a1b434249bb4cb120ca" + integrity sha512-XOnAR/3rntJgbCdGhqdaLIxDLWKLmsZOGhHdBKadEr6gEnJLH52k93Ou+TUdFaPN3hJc3isBZBal3U/XZ15abA== + +ethereum-common@^0.0.18: + version "0.0.18" + resolved "https://registry.yarnpkg.com/ethereum-common/-/ethereum-common-0.0.18.tgz#2fdc3576f232903358976eb39da783213ff9523f" + integrity sha1-L9w1dvIykDNYl26znaeDIT/5Uj8= + +ethereum-cryptography@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz#8d6143cfc3d74bf79bbd8edecdf29e4ae20dd191" + integrity sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ== + dependencies: + "@types/pbkdf2" "^3.0.0" + "@types/secp256k1" "^4.0.1" + blakejs "^1.1.0" + browserify-aes "^1.2.0" + bs58check "^2.1.2" + create-hash "^1.2.0" + create-hmac "^1.1.7" + hash.js "^1.1.7" + keccak "^3.0.0" + pbkdf2 "^3.0.17" + randombytes "^2.1.0" + safe-buffer "^5.1.2" + scrypt-js "^3.0.0" + secp256k1 "^4.0.1" + setimmediate "^1.0.5" + +"ethereumjs-abi@git+https://github.com/ethereumjs/ethereumjs-abi.git": + version "0.6.8" + resolved "git+https://github.com/ethereumjs/ethereumjs-abi.git#ee3994657fa7a427238e6ba92a84d0b529bbcde0" + dependencies: + bn.js "^4.11.8" + ethereumjs-util "^6.0.0" + +ethereumjs-account@^2.0.3: + version "2.0.5" + resolved "https://registry.yarnpkg.com/ethereumjs-account/-/ethereumjs-account-2.0.5.tgz#eeafc62de544cb07b0ee44b10f572c9c49e00a84" + integrity sha512-bgDojnXGjhMwo6eXQC0bY6UK2liSFUSMwwylOmQvZbSl/D7NXQ3+vrGO46ZeOgjGfxXmgIeVNDIiHw7fNZM4VA== + dependencies: + ethereumjs-util "^5.0.0" + rlp "^2.0.0" + safe-buffer "^5.1.1" + +ethereumjs-block@^1.2.2: + version "1.7.1" + resolved "https://registry.yarnpkg.com/ethereumjs-block/-/ethereumjs-block-1.7.1.tgz#78b88e6cc56de29a6b4884ee75379b6860333c3f" + integrity sha512-B+sSdtqm78fmKkBq78/QLKJbu/4Ts4P2KFISdgcuZUPDm9x+N7qgBPIIFUGbaakQh8bzuquiRVbdmvPKqbILRg== + dependencies: + async "^2.0.1" + ethereum-common "0.2.0" + ethereumjs-tx "^1.2.2" + ethereumjs-util "^5.0.0" + merkle-patricia-tree "^2.1.2" + +ethereumjs-block@~2.2.0: + version "2.2.2" + resolved "https://registry.yarnpkg.com/ethereumjs-block/-/ethereumjs-block-2.2.2.tgz#c7654be7e22df489fda206139ecd63e2e9c04965" + integrity sha512-2p49ifhek3h2zeg/+da6XpdFR3GlqY3BIEiqxGF8j9aSRIgkb7M1Ky+yULBKJOu8PAZxfhsYA+HxUk2aCQp3vg== + dependencies: + async "^2.0.1" + ethereumjs-common "^1.5.0" + ethereumjs-tx "^2.1.1" + ethereumjs-util "^5.0.0" + merkle-patricia-tree "^2.1.2" + +ethereumjs-common@^1.1.0, ethereumjs-common@^1.3.2, ethereumjs-common@^1.5.0: + version "1.5.2" + resolved "https://registry.yarnpkg.com/ethereumjs-common/-/ethereumjs-common-1.5.2.tgz#2065dbe9214e850f2e955a80e650cb6999066979" + integrity sha512-hTfZjwGX52GS2jcVO6E2sx4YuFnf0Fhp5ylo4pEPhEffNln7vS59Hr5sLnp3/QCazFLluuBZ+FZ6J5HTp0EqCA== + +ethereumjs-tx@^1.2.0, ethereumjs-tx@^1.2.2: + version "1.3.7" + resolved "https://registry.yarnpkg.com/ethereumjs-tx/-/ethereumjs-tx-1.3.7.tgz#88323a2d875b10549b8347e09f4862b546f3d89a" + integrity sha512-wvLMxzt1RPhAQ9Yi3/HKZTn0FZYpnsmQdbKYfUUpi4j1SEIcbkd9tndVjcPrufY3V7j2IebOpC00Zp2P/Ay2kA== + dependencies: + ethereum-common "^0.0.18" + ethereumjs-util "^5.0.0" + +ethereumjs-tx@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ethereumjs-tx/-/ethereumjs-tx-2.1.2.tgz#5dfe7688bf177b45c9a23f86cf9104d47ea35fed" + integrity sha512-zZEK1onCeiORb0wyCXUvg94Ve5It/K6GD1K+26KfFKodiBiS6d9lfCXlUKGBBdQ+bv7Day+JK0tj1K+BeNFRAw== + dependencies: + ethereumjs-common "^1.5.0" + ethereumjs-util "^6.0.0" + +ethereumjs-util@^5.0.0, ethereumjs-util@^5.1.1, ethereumjs-util@^5.1.2, ethereumjs-util@^5.1.5: + version "5.2.1" + resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz#a833f0e5fca7e5b361384dc76301a721f537bf65" + integrity sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ== + dependencies: + bn.js "^4.11.0" + create-hash "^1.1.2" + elliptic "^6.5.2" + ethereum-cryptography "^0.1.3" + ethjs-util "^0.1.3" + rlp "^2.0.0" + safe-buffer "^5.1.1" + +ethereumjs-util@^6.0.0: + version "6.2.1" + resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz#fcb4e4dd5ceacb9d2305426ab1a5cd93e3163b69" + integrity sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw== + dependencies: + "@types/bn.js" "^4.11.3" + bn.js "^4.11.0" + create-hash "^1.1.2" + elliptic "^6.5.2" + ethereum-cryptography "^0.1.3" + ethjs-util "0.1.6" + rlp "^2.2.3" + +ethereumjs-util@^7.0.10, ethereumjs-util@^7.1.0, ethereumjs-util@^7.1.3: + version "7.1.3" + resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-7.1.3.tgz#b55d7b64dde3e3e45749e4c41288238edec32d23" + integrity sha512-y+82tEbyASO0K0X1/SRhbJJoAlfcvq8JbrG4a5cjrOks7HS/36efU/0j2flxCPOUM++HFahk33kr/ZxyC4vNuw== + dependencies: + "@types/bn.js" "^5.1.0" + bn.js "^5.1.2" + create-hash "^1.1.2" + ethereum-cryptography "^0.1.3" + rlp "^2.2.4" + +ethereumjs-vm@^2.3.4: + version "2.6.0" + resolved "https://registry.yarnpkg.com/ethereumjs-vm/-/ethereumjs-vm-2.6.0.tgz#76243ed8de031b408793ac33907fb3407fe400c6" + integrity sha512-r/XIUik/ynGbxS3y+mvGnbOKnuLo40V5Mj1J25+HEO63aWYREIqvWeRO/hnROlMBE5WoniQmPmhiaN0ctiHaXw== + dependencies: + async "^2.1.2" + async-eventemitter "^0.2.2" + ethereumjs-account "^2.0.3" + ethereumjs-block "~2.2.0" + ethereumjs-common "^1.1.0" + ethereumjs-util "^6.0.0" + fake-merkle-patricia-tree "^1.0.1" + functional-red-black-tree "^1.0.1" + merkle-patricia-tree "^2.3.2" + rustbn.js "~0.2.0" + safe-buffer "^5.1.1" + +ethjs-unit@0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/ethjs-unit/-/ethjs-unit-0.1.6.tgz#c665921e476e87bce2a9d588a6fe0405b2c41699" + integrity sha1-xmWSHkduh7ziqdWIpv4EBbLEFpk= + dependencies: + bn.js "4.11.6" + number-to-bn "1.7.0" + +ethjs-util@0.1.6, ethjs-util@^0.1.3: + version "0.1.6" + resolved "https://registry.yarnpkg.com/ethjs-util/-/ethjs-util-0.1.6.tgz#f308b62f185f9fe6237132fb2a9818866a5cd536" + integrity sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w== + dependencies: + is-hex-prefixed "1.0.0" + strip-hex-prefix "1.0.0" + +eventemitter3@4.0.4: + version "4.0.4" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.4.tgz#b5463ace635a083d018bdc7c917b4c5f10a85384" + integrity sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ== + +eventemitter3@4.0.7, eventemitter3@^4.0.0: + version "4.0.7" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" + integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== + +events@^3.0.0, events@^3.1.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" + integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== + +eventsource@^1.0.7: + version "1.1.0" + resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-1.1.0.tgz#00e8ca7c92109e94b0ddf32dac677d841028cfaf" + integrity sha512-VSJjT5oCNrFvCS6igjzPAt5hBzQ2qPBFIbJ03zLI9SE0mxwZpMw6BfJrbFHm1a141AavMEB8JHmBhWAd66PfCg== + dependencies: + original "^1.0.0" + +evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" + integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== + dependencies: + md5.js "^1.3.4" + safe-buffer "^5.1.1" + +exec-sh@^0.3.2: + version "0.3.6" + resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.6.tgz#ff264f9e325519a60cb5e273692943483cca63bc" + integrity sha512-nQn+hI3yp+oD0huYhKwvYI32+JFeq+XkNcD1GAo3Y/MjxsfVGmrrzrnzjWiNY6f+pUCP440fThsFh5gZrRAU/w== + +execa@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" + integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== + dependencies: + cross-spawn "^6.0.0" + get-stream "^4.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + +execa@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" + integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.0" + human-signals "^2.1.0" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.1" + onetime "^5.1.2" + signal-exit "^3.0.3" + strip-final-newline "^2.0.0" + +exenv@^1.2.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/exenv/-/exenv-1.2.2.tgz#2ae78e85d9894158670b03d47bec1f03bd91bb9d" + integrity sha1-KueOhdmJQVhnCwPUe+wfA72Ru50= + +exit-on-epipe@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/exit-on-epipe/-/exit-on-epipe-1.0.1.tgz#0bdd92e87d5285d267daa8171d0eb06159689692" + integrity sha512-h2z5mrROTxce56S+pnvAV890uu7ls7f1kEvVGJbw1OlFH3/mlJ5bkXu0KRyW94v37zzHPiUd55iLn3DA7TjWpw== + +exit@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" + integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= + +expand-brackets@^2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" + integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= + dependencies: + debug "^2.3.3" + define-property "^0.2.5" + extend-shallow "^2.0.1" + posix-character-classes "^0.1.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +expect@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/expect/-/expect-24.9.0.tgz#b75165b4817074fa4a157794f46fe9f1ba15b6ca" + integrity sha512-wvVAx8XIol3Z5m9zvZXiyZOQ+sRJqNTIm6sGjdWlaZIeupQGO3WbYI+15D/AmEwZywL6wtJkbAbJtzkOfBuR0Q== + dependencies: + "@jest/types" "^24.9.0" + ansi-styles "^3.2.0" + jest-get-type "^24.9.0" + jest-matcher-utils "^24.9.0" + jest-message-util "^24.9.0" + jest-regex-util "^24.9.0" + +express@^4.14.0, express@^4.17.1: + version "4.17.2" + resolved "https://registry.yarnpkg.com/express/-/express-4.17.2.tgz#c18369f265297319beed4e5558753cc8c1364cb3" + integrity sha512-oxlxJxcQlYwqPWKVJJtvQiwHgosH/LrLSPA+H4UxpyvSS6jC5aH+5MoHFM+KABgTOt0APue4w66Ha8jCUo9QGg== + dependencies: + accepts "~1.3.7" + array-flatten "1.1.1" + body-parser "1.19.1" + content-disposition "0.5.4" + content-type "~1.0.4" + cookie "0.4.1" + cookie-signature "1.0.6" + debug "2.6.9" + depd "~1.1.2" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + finalhandler "~1.1.2" + fresh "0.5.2" + merge-descriptors "1.0.1" + methods "~1.1.2" + on-finished "~2.3.0" + parseurl "~1.3.3" + path-to-regexp "0.1.7" + proxy-addr "~2.0.7" + qs "6.9.6" + range-parser "~1.2.1" + safe-buffer "5.2.1" + send "0.17.2" + serve-static "1.14.2" + setprototypeof "1.2.0" + statuses "~1.5.0" + type-is "~1.6.18" + utils-merge "1.0.1" + vary "~1.1.2" + +ext@^1.1.2: + version "1.6.0" + resolved "https://registry.yarnpkg.com/ext/-/ext-1.6.0.tgz#3871d50641e874cc172e2b53f919842d19db4c52" + integrity sha512-sdBImtzkq2HpkdRLtlLWDa6w4DX22ijZLKx8BMPUuKe1c5lbN6xwQDQCxSfxBQnHZ13ls/FH0MQZx/q/gr6FQg== + dependencies: + type "^2.5.0" + +extend-shallow@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" + integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= + dependencies: + is-extendable "^0.1.0" + +extend-shallow@^3.0.0, extend-shallow@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" + integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= + dependencies: + assign-symbols "^1.0.0" + is-extendable "^1.0.1" + +extend@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + +external-editor@^3.0.3: + version "3.1.0" + resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" + integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== + dependencies: + chardet "^0.7.0" + iconv-lite "^0.4.24" + tmp "^0.0.33" + +extglob@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" + integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== + dependencies: + array-unique "^0.3.2" + define-property "^1.0.0" + expand-brackets "^2.1.4" + extend-shallow "^2.0.1" + fragment-cache "^0.2.1" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +extsprintf@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" + integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= + +extsprintf@^1.2.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.1.tgz#8d172c064867f235c0c84a596806d279bf4bcc07" + integrity sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA== + +fake-merkle-patricia-tree@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/fake-merkle-patricia-tree/-/fake-merkle-patricia-tree-1.0.1.tgz#4b8c3acfb520afadf9860b1f14cd8ce3402cddd3" + integrity sha1-S4w6z7Ugr635hgsfFM2M40As3dM= + dependencies: + checkpoint-store "^1.1.0" + +fast-deep-equal@^3.1.1: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-glob@^2.0.2: + version "2.2.7" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.7.tgz#6953857c3afa475fff92ee6015d52da70a4cd39d" + integrity sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw== + dependencies: + "@mrmlnc/readdir-enhanced" "^2.2.1" + "@nodelib/fs.stat" "^1.1.2" + glob-parent "^3.1.0" + is-glob "^4.0.0" + merge2 "^1.2.3" + micromatch "^3.1.10" + +fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= + +fast-safe-stringify@^2.0.6: + version "2.1.1" + resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz#c406a83b6e70d9e35ce3b30a81141df30aeba884" + integrity sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA== + +faye-websocket@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4" + integrity sha1-TkkvjQTftviQA1B/btvy1QHnxvQ= + dependencies: + websocket-driver ">=0.5.1" + +faye-websocket@~0.11.1: + version "0.11.4" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.4.tgz#7f0d9275cfdd86a1c963dc8b65fcc451edcbb1da" + integrity sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g== + dependencies: + websocket-driver ">=0.5.1" + +fb-watchman@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.1.tgz#fc84fb39d2709cf3ff6d743706157bb5708a8a85" + integrity sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg== + dependencies: + bser "2.1.1" + +figgy-pudding@^3.5.1: + version "3.5.2" + resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" + integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw== + +figures@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" + integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== + dependencies: + escape-string-regexp "^1.0.5" + +file-entry-cache@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c" + integrity sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g== + dependencies: + flat-cache "^2.0.1" + +file-loader@4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-4.3.0.tgz#780f040f729b3d18019f20605f723e844b8a58af" + integrity sha512-aKrYPYjF1yG3oX0kWRrqrSMfgftm7oJW5M+m4owoldH5C51C0RkIwB++JbRvEW3IU6/ZG5n8UvEcdgwOt2UOWA== + dependencies: + loader-utils "^1.2.3" + schema-utils "^2.5.0" + +file-uri-to-path@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" + integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== + +filelist@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.2.tgz#80202f21462d4d1c2e214119b1807c1bc0380e5b" + integrity sha512-z7O0IS8Plc39rTCq6i6iHxk43duYOn8uFJiWSewIq0Bww1RNybVHSCjahmcC87ZqAm4OTvFzlzeGu3XAzG1ctQ== + dependencies: + minimatch "^3.0.4" + +filesize@6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/filesize/-/filesize-6.0.1.tgz#f850b509909c7c86f7e450ea19006c31c2ed3d2f" + integrity sha512-u4AYWPgbI5GBhs6id1KdImZWn5yfyFrrQ8OWZdN7ZMfA8Bf4HcO0BGo9bmUIEV8yrp8I1xVfJ/dn90GtFNNJcg== + +fill-range@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" + integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= + dependencies: + extend-shallow "^2.0.1" + is-number "^3.0.0" + repeat-string "^1.6.1" + to-regex-range "^2.1.0" + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +filter-obj@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/filter-obj/-/filter-obj-1.1.0.tgz#9b311112bc6c6127a16e016c6c5d7f19e0805c5b" + integrity sha1-mzERErxsYSehbgFsbF1/GeCAXFs= + +finalhandler@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" + integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== + dependencies: + debug "2.6.9" + encodeurl "~1.0.2" + escape-html "~1.0.3" + on-finished "~2.3.0" + parseurl "~1.3.3" + statuses "~1.5.0" + unpipe "~1.0.0" + +find-cache-dir@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-0.1.1.tgz#c8defae57c8a52a8a784f9e31c57c742e993a0b9" + integrity sha1-yN765XyKUqinhPnjHFfHQumToLk= + dependencies: + commondir "^1.0.1" + mkdirp "^0.5.1" + pkg-dir "^1.0.0" + +find-cache-dir@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" + integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== + dependencies: + commondir "^1.0.1" + make-dir "^2.0.0" + pkg-dir "^3.0.0" + +find-cache-dir@^3.3.1: + version "3.3.2" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.2.tgz#b30c5b6eff0730731aea9bbd9dbecbd80256d64b" + integrity sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig== + dependencies: + commondir "^1.0.1" + make-dir "^3.0.2" + pkg-dir "^4.1.0" + +find-up@4.1.0, find-up@^4.0.0, find-up@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +find-up@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" + integrity sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8= + dependencies: + path-exists "^2.0.0" + pinkie-promise "^2.0.0" + +find-up@^2.0.0, find-up@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= + dependencies: + locate-path "^2.0.0" + +find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== + dependencies: + locate-path "^3.0.0" + +flat-cache@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" + integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA== + dependencies: + flatted "^2.0.0" + rimraf "2.6.3" + write "1.0.3" + +flatted@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.2.tgz#4575b21e2bcee7434aa9be662f4b7b5f9c2b5138" + integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA== + +flatten@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.3.tgz#c1283ac9f27b368abc1e36d1ff7b04501a30356b" + integrity sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg== + +flush-write-stream@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" + integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w== + dependencies: + inherits "^2.0.3" + readable-stream "^2.3.6" + +follow-redirects@^1.0.0, follow-redirects@^1.14.0: + version "1.14.6" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.6.tgz#8cfb281bbc035b3c067d6cd975b0f6ade6e855cd" + integrity sha512-fhUl5EwSJbbl8AR+uYL2KQDxLkdSjZGR36xy46AO7cOMTrCMON6Sa28FmAnC2tRTDbd/Uuzz3aJBv7EBN7JH8A== + +for-each@^0.3.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" + integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== + dependencies: + is-callable "^1.1.3" + +for-in@^0.1.3: + version "0.1.8" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-0.1.8.tgz#d8773908e31256109952b1fdb9b3fa867d2775e1" + integrity sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE= + +for-in@^1.0.1, for-in@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= + +for-own@^0.1.3: + version "0.1.5" + resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" + integrity sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4= + dependencies: + for-in "^1.0.1" + +foreach@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" + integrity sha1-C+4AUBiusmDQo6865ljdATbsG5k= + +forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= + +fork-ts-checker-webpack-plugin@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-3.1.1.tgz#a1642c0d3e65f50c2cc1742e9c0a80f441f86b19" + integrity sha512-DuVkPNrM12jR41KM2e+N+styka0EgLkTnXmNcXdgOM37vtGeY+oCBK/Jx0hzSeEU6memFCtWb4htrHPMDfwwUQ== + dependencies: + babel-code-frame "^6.22.0" + chalk "^2.4.1" + chokidar "^3.3.0" + micromatch "^3.1.10" + minimatch "^3.0.4" + semver "^5.6.0" + tapable "^1.0.0" + worker-rpc "^0.1.0" + +form-data@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" + integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.6" + mime-types "^2.1.12" + +forwarded@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" + integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== + +fragment-cache@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" + integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= + dependencies: + map-cache "^0.2.2" + +fresh@0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= + +from2@^2.1.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" + integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8= + dependencies: + inherits "^2.0.1" + readable-stream "^2.0.0" + +fs-extra@^4.0.2: + version "4.0.3" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94" + integrity sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg== + dependencies: + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-extra@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" + integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== + dependencies: + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-extra@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" + integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-minipass@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" + integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA== + dependencies: + minipass "^2.6.0" + +fs-minipass@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" + integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== + dependencies: + minipass "^3.0.0" + +fs-write-stream-atomic@^1.0.8: + version "1.0.10" + resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" + integrity sha1-tH31NJPvkR33VzHnCp3tAYnbQMk= + dependencies: + graceful-fs "^4.1.2" + iferr "^0.1.5" + imurmurhash "^0.1.4" + readable-stream "1 || 2" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + +fsevents@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.2.tgz#4c0a1fb34bc68e543b4b82a9ec392bfbda840805" + integrity sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA== + +fsevents@^1.2.7: + version "1.2.13" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.13.tgz#f325cb0455592428bcf11b383370ef70e3bfcc38" + integrity sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw== + dependencies: + bindings "^1.5.0" + nan "^2.12.1" + +fsevents@~2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +functional-red-black-tree@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" + integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= + +gensync@^1.0.0-beta.1, gensync@^1.0.0-beta.2: + version "1.0.0-beta.2" + resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" + integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== + +get-caller-file@^2.0.1, get-caller-file@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" + integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + +get-own-enumerable-property-symbols@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664" + integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g== + +get-stream@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" + integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ= + +get-stream@^4.0.0, get-stream@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" + integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== + dependencies: + pump "^3.0.0" + +get-stream@^5.1.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" + integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== + dependencies: + pump "^3.0.0" + +get-stream@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== + +get-symbol-description@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" + integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.1" + +get-value@^2.0.3, get-value@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" + integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= + +getpass@^0.1.1: + version "0.1.7" + resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" + integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= + dependencies: + assert-plus "^1.0.0" + +glob-parent@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" + integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= + dependencies: + is-glob "^3.1.0" + path-dirname "^1.0.0" + +glob-parent@^5.0.0, glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob-to-regexp@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" + integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs= + +glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: + version "7.2.0" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" + integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +global-modules@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780" + integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A== + dependencies: + global-prefix "^3.0.0" + +global-prefix@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97" + integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg== + dependencies: + ini "^1.3.5" + kind-of "^6.0.2" + which "^1.3.1" + +global@^4.3.0, global@~4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/global/-/global-4.4.0.tgz#3e7b105179006a323ed71aafca3e9c57a5cc6406" + integrity sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w== + dependencies: + min-document "^2.19.0" + process "^0.11.10" + +globals@^11.1.0: + version "11.12.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + +globals@^12.1.0: + version "12.4.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-12.4.0.tgz#a18813576a41b00a24a97e7f815918c2e19925f8" + integrity sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg== + dependencies: + type-fest "^0.8.1" + +globalthis@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.2.tgz#2a235d34f4d8036219f7e34929b5de9e18166b8b" + integrity sha512-ZQnSFO1la8P7auIOQECnm0sSuoMeaSq0EEdXMBFF2QJO4uNcwbyhSgG3MruWNbFTqCLmxVwGOl7LZ9kASvHdeQ== + dependencies: + define-properties "^1.1.3" + +globby@8.0.2: + version "8.0.2" + resolved "https://registry.yarnpkg.com/globby/-/globby-8.0.2.tgz#5697619ccd95c5275dbb2d6faa42087c1a941d8d" + integrity sha512-yTzMmKygLp8RUpG1Ymu2VXPSJQZjNAZPD4ywgYEaG7e4tBJeUQBO8OpXrf1RCNcEs5alsoJYPAMiIHP0cmeC7w== + dependencies: + array-union "^1.0.1" + dir-glob "2.0.0" + fast-glob "^2.0.2" + glob "^7.1.2" + ignore "^3.3.5" + pify "^3.0.0" + slash "^1.0.0" + +globby@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" + integrity sha1-9abXDoOV4hyFj7BInWTfAkJNUGw= + dependencies: + array-union "^1.0.1" + glob "^7.0.3" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +got@9.6.0: + version "9.6.0" + resolved "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85" + integrity sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q== + dependencies: + "@sindresorhus/is" "^0.14.0" + "@szmarczak/http-timer" "^1.1.2" + cacheable-request "^6.0.0" + decompress-response "^3.3.0" + duplexer3 "^0.1.4" + get-stream "^4.1.0" + lowercase-keys "^1.0.1" + mimic-response "^1.0.1" + p-cancelable "^1.0.0" + to-readable-stream "^1.0.0" + url-parse-lax "^3.0.0" + +got@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/got/-/got-7.1.0.tgz#05450fd84094e6bbea56f451a43a9c289166385a" + integrity sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw== + dependencies: + decompress-response "^3.2.0" + duplexer3 "^0.1.4" + get-stream "^3.0.0" + is-plain-obj "^1.1.0" + is-retry-allowed "^1.0.0" + is-stream "^1.0.0" + isurl "^1.0.0-alpha5" + lowercase-keys "^1.0.0" + p-cancelable "^0.3.0" + p-timeout "^1.1.1" + safe-buffer "^5.0.1" + timed-out "^4.0.0" + url-parse-lax "^1.0.0" + url-to-options "^1.0.1" + +graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.2: + version "4.2.9" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.9.tgz#041b05df45755e587a24942279b9d113146e1c96" + integrity sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ== + +growly@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" + integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE= + +gzip-size@5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-5.1.1.tgz#cb9bee692f87c0612b232840a873904e4c135274" + integrity sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA== + dependencies: + duplexer "^0.1.1" + pify "^4.0.1" + +gzip-size@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-6.0.0.tgz#065367fd50c239c0671cbcbad5be3e2eeb10e462" + integrity sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q== + dependencies: + duplexer "^0.1.2" + +handle-thing@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e" + integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== + +har-schema@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" + integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= + +har-validator@~5.1.3: + version "5.1.5" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" + integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== + dependencies: + ajv "^6.12.3" + har-schema "^2.0.0" + +harmony-reflect@^1.4.6: + version "1.6.2" + resolved "https://registry.yarnpkg.com/harmony-reflect/-/harmony-reflect-1.6.2.tgz#31ecbd32e648a34d030d86adb67d4d47547fe710" + integrity sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g== + +has-ansi@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" + integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= + dependencies: + ansi-regex "^2.0.0" + +has-bigints@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113" + integrity sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA== + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-symbol-support-x@^1.4.1: + version "1.4.2" + resolved "https://registry.yarnpkg.com/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz#1409f98bc00247da45da67cee0a36f282ff26455" + integrity sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw== + +has-symbols@^1.0.1, has-symbols@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423" + integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== + +has-to-string-tag-x@^1.2.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz#a045ab383d7b4b2012a00148ab0aa5f290044d4d" + integrity sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw== + dependencies: + has-symbol-support-x "^1.4.1" + +has-tostringtag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" + integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== + dependencies: + has-symbols "^1.0.2" + +has-value@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" + integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= + dependencies: + get-value "^2.0.3" + has-values "^0.1.4" + isobject "^2.0.0" + +has-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" + integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= + dependencies: + get-value "^2.0.6" + has-values "^1.0.0" + isobject "^3.0.0" + +has-values@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" + integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= + +has-values@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" + integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= + dependencies: + is-number "^3.0.0" + kind-of "^4.0.0" + +has@^1.0.0, has@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + +hash-base@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" + integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== + dependencies: + inherits "^2.0.4" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" + +hash.js@1.1.7, hash.js@^1.0.0, hash.js@^1.0.3, hash.js@^1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" + integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.1" + +he@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" + integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== + +hex-color-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e" + integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ== + +history@^4.9.0: + version "4.10.1" + resolved "https://registry.yarnpkg.com/history/-/history-4.10.1.tgz#33371a65e3a83b267434e2b3f3b1b4c58aad4cf3" + integrity sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew== + dependencies: + "@babel/runtime" "^7.1.2" + loose-envify "^1.2.0" + resolve-pathname "^3.0.0" + tiny-invariant "^1.0.2" + tiny-warning "^1.0.0" + value-equal "^1.0.1" + +history@^5.0.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/history/-/history-5.2.0.tgz#7cdd31cf9bac3c5d31f09c231c9928fad0007b7c" + integrity sha512-uPSF6lAJb3nSePJ43hN3eKj1dTWpN9gMod0ZssbFTIsen+WehTmEadgL+kg78xLJFdRfrrC//SavDzmRVdE+Ig== + dependencies: + "@babel/runtime" "^7.7.6" + +hmac-drbg@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" + integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= + dependencies: + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" + +hoist-non-react-statics@^3.0.0, hoist-non-react-statics@^3.1.0, hoist-non-react-statics@^3.3.0, hoist-non-react-statics@^3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" + integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== + dependencies: + react-is "^16.7.0" + +hosted-git-info@^2.1.4: + version "2.8.9" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" + integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== + +hpack.js@^2.1.6: + version "2.1.6" + resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" + integrity sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI= + dependencies: + inherits "^2.0.1" + obuf "^1.0.0" + readable-stream "^2.0.1" + wbuf "^1.1.0" + +hsl-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/hsl-regex/-/hsl-regex-1.0.0.tgz#d49330c789ed819e276a4c0d272dffa30b18fe6e" + integrity sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4= + +hsla-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/hsla-regex/-/hsla-regex-1.0.0.tgz#c1ce7a3168c8c6614033a4b5f7877f3b225f9c38" + integrity sha1-wc56MWjIxmFAM6S194d/OyJfnDg= + +html-encoding-sniffer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz#e70d84b94da53aa375e11fe3a351be6642ca46f8" + integrity sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw== + dependencies: + whatwg-encoding "^1.0.1" + +html-entities@^1.3.1: + version "1.4.0" + resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.4.0.tgz#cfbd1b01d2afaf9adca1b10ae7dffab98c71d2dc" + integrity sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA== + +html-escaper@^2.0.0, html-escaper@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" + integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== + +html-minifier-terser@^5.0.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz#922e96f1f3bb60832c2634b79884096389b1f054" + integrity sha512-ZPr5MNObqnV/T9akshPKbVgyOqLmy+Bxo7juKCfTfnjNniTAMdy4hz21YQqoofMBJD2kdREaqPPdThoR78Tgxg== + dependencies: + camel-case "^4.1.1" + clean-css "^4.2.3" + commander "^4.1.1" + he "^1.2.0" + param-case "^3.0.3" + relateurl "^0.2.7" + terser "^4.6.3" + +html-parse-stringify@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/html-parse-stringify/-/html-parse-stringify-3.0.1.tgz#dfc1017347ce9f77c8141a507f233040c59c55d2" + integrity sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg== + dependencies: + void-elements "3.1.0" + +html-webpack-plugin@4.0.0-beta.11: + version "4.0.0-beta.11" + resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-4.0.0-beta.11.tgz#3059a69144b5aecef97708196ca32f9e68677715" + integrity sha512-4Xzepf0qWxf8CGg7/WQM5qBB2Lc/NFI7MhU59eUDTkuQp3skZczH4UA1d6oQyDEIoMDgERVhRyTdtUPZ5s5HBg== + dependencies: + html-minifier-terser "^5.0.1" + loader-utils "^1.2.3" + lodash "^4.17.15" + pretty-error "^2.1.1" + tapable "^1.1.3" + util.promisify "1.0.0" + +htmlparser2@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-6.1.0.tgz#c4d762b6c3371a05dbe65e94ae43a9f845fb8fb7" + integrity sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A== + dependencies: + domelementtype "^2.0.1" + domhandler "^4.0.0" + domutils "^2.5.2" + entities "^2.0.0" + +http-cache-semantics@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390" + integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ== + +http-deceiver@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" + integrity sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc= + +http-errors@1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.8.1.tgz#7c3f28577cbc8a207388455dbd62295ed07bd68c" + integrity sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g== + dependencies: + depd "~1.1.2" + inherits "2.0.4" + setprototypeof "1.2.0" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.1" + +http-errors@~1.6.2: + version "1.6.3" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" + integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0= + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.0" + statuses ">= 1.4.0 < 2" + +http-https@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/http-https/-/http-https-1.0.0.tgz#2f908dd5f1db4068c058cd6e6d4ce392c913389b" + integrity sha1-L5CN1fHbQGjAWM1ubUzjkskTOJs= + +http-parser-js@>=0.5.1: + version "0.5.5" + resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.5.tgz#d7c30d5d3c90d865b4a2e870181f9d6f22ac7ac5" + integrity sha512-x+JVEkO2PoM8qqpbPbOL3cqHPwerep7OwzK7Ay+sMQjKzaKCqWvjoXm5tqMP9tXWWTnTzAjIhXg+J99XYuPhPA== + +http-proxy-middleware@0.19.1: + version "0.19.1" + resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz#183c7dc4aa1479150306498c210cdaf96080a43a" + integrity sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q== + dependencies: + http-proxy "^1.17.0" + is-glob "^4.0.0" + lodash "^4.17.11" + micromatch "^3.1.10" + +http-proxy@^1.17.0: + version "1.18.1" + resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" + integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== + dependencies: + eventemitter3 "^4.0.0" + follow-redirects "^1.0.0" + requires-port "^1.0.0" + +http-signature@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" + integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= + dependencies: + assert-plus "^1.0.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + +https-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" + integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= + +human-signals@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" + integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== + +husky@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/husky/-/husky-6.0.0.tgz#810f11869adf51604c32ea577edbc377d7f9319e" + integrity sha512-SQS2gDTB7tBN486QSoKPKQItZw97BMOd+Kdb6ghfpBc0yXyzrddI0oDV5MkDAbuB4X2mO3/nj60TRMcYxwzZeQ== + +hyphenate-style-name@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz#691879af8e220aea5750e8827db4ef62a54e361d" + integrity sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ== + +i18next-browser-languagedetector@^6.0.1: + version "6.1.2" + resolved "https://registry.yarnpkg.com/i18next-browser-languagedetector/-/i18next-browser-languagedetector-6.1.2.tgz#68565a28b929cbc98ab6a56826ef2faf0e927ff8" + integrity sha512-YDzIGHhMRvr7M+c8B3EQUKyiMBhfqox4o1qkFvt4QXuu5V2cxf74+NCr+VEkUuU0y+RwcupA238eeolW1Yn80g== + dependencies: + "@babel/runtime" "^7.14.6" + +i18next@^19.8.2: + version "19.9.2" + resolved "https://registry.yarnpkg.com/i18next/-/i18next-19.9.2.tgz#ea5a124416e3c5ab85fddca2c8e3c3669a8da397" + integrity sha512-0i6cuo6ER6usEOtKajUUDj92zlG+KArFia0857xxiEHAQcUwh/RtOQocui1LPJwunSYT574Pk64aNva1kwtxZg== + dependencies: + "@babel/runtime" "^7.12.0" + +iconv-lite@0.4.24, iconv-lite@^0.4.24: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +icss-utils@^4.0.0, icss-utils@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-4.1.1.tgz#21170b53789ee27447c2f47dd683081403f9a467" + integrity sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA== + dependencies: + postcss "^7.0.14" + +identity-obj-proxy@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz#94d2bda96084453ef36fbc5aaec37e0f79f1fc14" + integrity sha1-lNK9qWCERT7zb7xarsN+D3nx/BQ= + dependencies: + harmony-reflect "^1.4.6" + +idna-uts46-hx@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/idna-uts46-hx/-/idna-uts46-hx-2.3.1.tgz#a1dc5c4df37eee522bf66d969cc980e00e8711f9" + integrity sha512-PWoF9Keq6laYdIRwwCdhTPl60xRqAloYNMQLiyUnG42VjT53oW07BXIRM+NK7eQjzXjAk2gUvX9caRxlnF9TAA== + dependencies: + punycode "2.1.0" + +ieee754@^1.1.13, ieee754@^1.1.4: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + +iferr@^0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" + integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE= + +ignore@^3.3.5: + version "3.3.10" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" + integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug== + +ignore@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" + integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== + +immediate@^3.2.3: + version "3.3.0" + resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.3.0.tgz#1aef225517836bcdf7f2a2de2600c79ff0269266" + integrity sha512-HR7EVodfFUdQCTIeySw+WDRFJlPcLOJbXfwwZ7Oom6tjsvZ3bOkCDJHehQC3nxJrv7+f9XecwazynjU8e4Vw3Q== + +immer@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/immer/-/immer-1.10.0.tgz#bad67605ba9c810275d91e1c2a47d4582e98286d" + integrity sha512-O3sR1/opvCDGLEVcvrGTMtLac8GJ5IwZC4puPrLuRj3l7ICKvkmA0vGuU9OW8mV9WIBRnaxp5GJh9IEAaNOoYg== + +"immutable@^3.8.1 || ^4.0.0", immutable@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.0.0.tgz#b86f78de6adef3608395efb269a91462797e2c23" + integrity sha512-zIE9hX70qew5qTUjSS7wi1iwj/l7+m54KWU247nhM3v806UdGj1yDndXj+IOYxxtW9zyLI+xqFNZjTuDaLUqFw== + +import-cwd@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-2.1.0.tgz#aa6cf36e722761285cb371ec6519f53e2435b0a9" + integrity sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk= + dependencies: + import-from "^2.1.0" + +import-fresh@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" + integrity sha1-2BNVwVYS04bGH53dOSLUMEgipUY= + dependencies: + caller-path "^2.0.0" + resolve-from "^3.0.0" + +import-fresh@^3.0.0, import-fresh@^3.1.0, import-fresh@^3.2.1: + version "3.3.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +import-from@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/import-from/-/import-from-2.1.0.tgz#335db7f2a7affd53aaa471d4b8021dee36b7f3b1" + integrity sha1-M1238qev/VOqpHHUuAId7ja387E= + dependencies: + resolve-from "^3.0.0" + +import-local@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d" + integrity sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ== + dependencies: + pkg-dir "^3.0.0" + resolve-cwd "^2.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= + +indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== + +indexes-of@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" + integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc= + +infer-owner@^1.0.3, infer-owner@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" + integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3, inherits@~2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +inherits@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" + integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE= + +inherits@2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= + +ini@^1.3.5: + version "1.3.8" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" + integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== + +inquirer@7.0.4: + version "7.0.4" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.0.4.tgz#99af5bde47153abca23f5c7fc30db247f39da703" + integrity sha512-Bu5Td5+j11sCkqfqmUTiwv+tWisMtP0L7Q8WrqA2C/BbBhy1YTdFrvjjlrKq8oagA/tLQBski2Gcx/Sqyi2qSQ== + dependencies: + ansi-escapes "^4.2.1" + chalk "^2.4.2" + cli-cursor "^3.1.0" + cli-width "^2.0.0" + external-editor "^3.0.3" + figures "^3.0.0" + lodash "^4.17.15" + mute-stream "0.0.8" + run-async "^2.2.0" + rxjs "^6.5.3" + string-width "^4.1.0" + strip-ansi "^5.1.0" + through "^2.3.6" + +inquirer@^7.0.0: + version "7.3.3" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.3.3.tgz#04d176b2af04afc157a83fd7c100e98ee0aad003" + integrity sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA== + dependencies: + ansi-escapes "^4.2.1" + chalk "^4.1.0" + cli-cursor "^3.1.0" + cli-width "^3.0.0" + external-editor "^3.0.3" + figures "^3.0.0" + lodash "^4.17.19" + mute-stream "0.0.8" + run-async "^2.4.0" + rxjs "^6.6.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + through "^2.3.6" + +internal-ip@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-4.3.0.tgz#845452baad9d2ca3b69c635a137acb9a0dad0907" + integrity sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg== + dependencies: + default-gateway "^4.2.0" + ipaddr.js "^1.9.0" + +internal-slot@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c" + integrity sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA== + dependencies: + get-intrinsic "^1.1.0" + has "^1.0.3" + side-channel "^1.0.4" + +invariant@^2.2.2, invariant@^2.2.4: + version "2.2.4" + resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" + integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== + dependencies: + loose-envify "^1.0.0" + +ip-regex@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" + integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= + +ip@^1.1.0, ip@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" + integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= + +ipaddr.js@1.9.1, ipaddr.js@^1.9.0: + version "1.9.1" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" + integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== + +is-absolute-url@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6" + integrity sha1-UFMN+4T8yap9vnhS6Do3uTufKqY= + +is-absolute-url@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-3.0.3.tgz#96c6a22b6a23929b11ea0afb1836c36ad4a5d698" + integrity sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q== + +is-accessor-descriptor@^0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" + integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= + dependencies: + kind-of "^3.0.2" + +is-accessor-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" + integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== + dependencies: + kind-of "^6.0.0" + +is-arguments@^1.0.4: + version "1.1.1" + resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b" + integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= + +is-arrayish@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" + integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== + +is-bigint@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" + integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== + dependencies: + has-bigints "^1.0.1" + +is-binary-path@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" + integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= + dependencies: + binary-extensions "^1.0.0" + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-boolean-object@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" + integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-buffer@^1.0.2, is-buffer@^1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== + +is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.4.tgz#47301d58dd0259407865547853df6d61fe471945" + integrity sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w== + +is-ci@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" + integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== + dependencies: + ci-info "^2.0.0" + +is-color-stop@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-color-stop/-/is-color-stop-1.1.0.tgz#cfff471aee4dd5c9e158598fbe12967b5cdad345" + integrity sha1-z/9HGu5N1cnhWFmPvhKWe1za00U= + dependencies: + css-color-names "^0.0.4" + hex-color-regex "^1.1.0" + hsl-regex "^1.0.0" + hsla-regex "^1.0.0" + rgb-regex "^1.0.1" + rgba-regex "^1.0.0" + +is-core-module@^2.8.0: + version "2.8.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.1.tgz#f59fdfca701d5879d0a6b100a40aa1560ce27211" + integrity sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA== + dependencies: + has "^1.0.3" + +is-data-descriptor@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" + integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= + dependencies: + kind-of "^3.0.2" + +is-data-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" + integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== + dependencies: + kind-of "^6.0.0" + +is-date-object@^1.0.1: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" + integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== + dependencies: + has-tostringtag "^1.0.0" + +is-descriptor@^0.1.0: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" + integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== + dependencies: + is-accessor-descriptor "^0.1.6" + is-data-descriptor "^0.1.4" + kind-of "^5.0.0" + +is-descriptor@^1.0.0, is-descriptor@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" + integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== + dependencies: + is-accessor-descriptor "^1.0.0" + is-data-descriptor "^1.0.0" + kind-of "^6.0.2" + +is-directory@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" + integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE= + +is-docker@^2.0.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" + integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== + +is-extendable@^0.1.0, is-extendable@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= + +is-extendable@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" + integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== + dependencies: + is-plain-object "^2.0.4" + +is-extglob@^2.1.0, is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= + +is-fn@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-fn/-/is-fn-1.0.0.tgz#9543d5de7bcf5b08a22ec8a20bae6e286d510d8c" + integrity sha1-lUPV3nvPWwiiLsiiC65uKG1RDYw= + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-function@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-function/-/is-function-1.0.2.tgz#4f097f30abf6efadac9833b17ca5dc03f8144e08" + integrity sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ== + +is-generator-fn@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" + integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== + +is-generator-function@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72" + integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A== + dependencies: + has-tostringtag "^1.0.0" + +is-glob@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" + integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= + dependencies: + is-extglob "^2.1.0" + +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-hex-prefixed@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz#7d8d37e6ad77e5d127148913c573e082d777f554" + integrity sha1-fY035q135dEnFIkTxXPggtd39VQ= + +is-in-browser@^1.0.2, is-in-browser@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/is-in-browser/-/is-in-browser-1.1.3.tgz#56ff4db683a078c6082eb95dad7dc62e1d04f835" + integrity sha1-Vv9NtoOgeMYILrldrX3GLh0E+DU= + +is-negative-zero@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" + integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== + +is-number-object@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.6.tgz#6a7aaf838c7f0686a50b4553f7e54a96494e89f0" + integrity sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g== + dependencies: + has-tostringtag "^1.0.0" + +is-number@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" + integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= + dependencies: + kind-of "^3.0.2" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-obj@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" + integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= + +is-obj@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" + integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== + +is-object@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.2.tgz#a56552e1c665c9e950b4a025461da87e72f86fcf" + integrity sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA== + +is-path-cwd@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" + integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== + +is-path-in-cwd@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz#bfe2dca26c69f397265a4009963602935a053acb" + integrity sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ== + dependencies: + is-path-inside "^2.1.0" + +is-path-inside@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-2.1.0.tgz#7c9810587d659a40d27bcdb4d5616eab059494b2" + integrity sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg== + dependencies: + path-is-inside "^1.0.2" + +is-plain-obj@^1.0.0, is-plain-obj@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" + integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= + +is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + dependencies: + isobject "^3.0.1" + +is-regex@^1.0.4, is-regex@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" + integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-regexp@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" + integrity sha1-/S2INUXEa6xaYz57mgnof6LLUGk= + +is-resolvable@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" + integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg== + +is-retry-allowed@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz#d778488bd0a4666a3be8a1482b9f2baafedea8b4" + integrity sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg== + +is-root@2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-root/-/is-root-2.1.0.tgz#809e18129cf1129644302a4f8544035d51984a9c" + integrity sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg== + +is-shared-array-buffer@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz#97b0c85fbdacb59c9c446fe653b82cf2b5b7cfe6" + integrity sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA== + +is-stream@^1.0.0, is-stream@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= + +is-stream@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" + integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== + +is-string@^1.0.5, is-string@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" + integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== + dependencies: + has-tostringtag "^1.0.0" + +is-symbol@^1.0.2, is-symbol@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" + integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== + dependencies: + has-symbols "^1.0.2" + +is-typed-array@^1.1.3, is-typed-array@^1.1.7: + version "1.1.8" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.8.tgz#cbaa6585dc7db43318bc5b89523ea384a6f65e79" + integrity sha512-HqH41TNZq2fgtGT8WHVFVJhBVGuY3AnP3Q36K8JKXUxSxRgk/d+7NjmwG2vo2mYmXK8UYZKu0qH8bVP5gEisjA== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + es-abstract "^1.18.5" + foreach "^2.0.5" + has-tostringtag "^1.0.0" + +is-typedarray@1.0.0, is-typedarray@^1.0.0, is-typedarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= + +is-weakref@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" + integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== + dependencies: + call-bind "^1.0.2" + +is-windows@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" + integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== + +is-wsl@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" + integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= + +is-wsl@^2.1.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" + integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== + dependencies: + is-docker "^2.0.0" + +isarray@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" + integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= + +isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= + +isarray@^2.0.1: + version "2.0.5" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" + integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= + +isobject@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= + dependencies: + isarray "1.0.0" + +isobject@^3.0.0, isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= + +isomorphic-ws@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz#55fd4cd6c5e6491e76dc125938dd863f5cd4f2dc" + integrity sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w== + +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= + +istanbul-lib-coverage@^2.0.2, istanbul-lib-coverage@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz#675f0ab69503fad4b1d849f736baaca803344f49" + integrity sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA== + +istanbul-lib-instrument@^3.0.1, istanbul-lib-instrument@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz#a5f63d91f0bbc0c3e479ef4c5de027335ec6d630" + integrity sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA== + dependencies: + "@babel/generator" "^7.4.0" + "@babel/parser" "^7.4.3" + "@babel/template" "^7.4.0" + "@babel/traverse" "^7.4.3" + "@babel/types" "^7.4.0" + istanbul-lib-coverage "^2.0.5" + semver "^6.0.0" + +istanbul-lib-report@^2.0.4: + version "2.0.8" + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz#5a8113cd746d43c4889eba36ab10e7d50c9b4f33" + integrity sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ== + dependencies: + istanbul-lib-coverage "^2.0.5" + make-dir "^2.1.0" + supports-color "^6.1.0" + +istanbul-lib-source-maps@^3.0.1: + version "3.0.6" + resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz#284997c48211752ec486253da97e3879defba8c8" + integrity sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw== + dependencies: + debug "^4.1.1" + istanbul-lib-coverage "^2.0.5" + make-dir "^2.1.0" + rimraf "^2.6.3" + source-map "^0.6.1" + +istanbul-reports@^2.2.6: + version "2.2.7" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-2.2.7.tgz#5d939f6237d7b48393cc0959eab40cd4fd056931" + integrity sha512-uu1F/L1o5Y6LzPVSVZXNOoD/KXpJue9aeLRd0sM9uMXfZvzomB0WxVamWb5ue8kA2vVWEmW7EG+A5n3f1kqHKg== + dependencies: + html-escaper "^2.0.0" + +isurl@^1.0.0-alpha5: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isurl/-/isurl-1.0.0.tgz#b27f4f49f3cdaa3ea44a0a5b7f3462e6edc39d67" + integrity sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w== + dependencies: + has-to-string-tag-x "^1.2.0" + is-object "^1.0.1" + +jake@^10.6.1: + version "10.8.2" + resolved "https://registry.yarnpkg.com/jake/-/jake-10.8.2.tgz#ebc9de8558160a66d82d0eadc6a2e58fbc500a7b" + integrity sha512-eLpKyrfG3mzvGE2Du8VoPbeSkRry093+tyNjdYaBbJS9v17knImYGNXQCUV0gLxQtF82m3E8iRb/wdSQZLoq7A== + dependencies: + async "0.9.x" + chalk "^2.4.2" + filelist "^1.0.1" + minimatch "^3.0.4" + +jest-changed-files@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-24.9.0.tgz#08d8c15eb79a7fa3fc98269bc14b451ee82f8039" + integrity sha512-6aTWpe2mHF0DhL28WjdkO8LyGjs3zItPET4bMSeXU6T3ub4FPMw+mcOcbdGXQOAfmLcxofD23/5Bl9Z4AkFwqg== + dependencies: + "@jest/types" "^24.9.0" + execa "^1.0.0" + throat "^4.0.0" + +jest-cli@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-24.9.0.tgz#ad2de62d07472d419c6abc301fc432b98b10d2af" + integrity sha512-+VLRKyitT3BWoMeSUIHRxV/2g8y9gw91Jh5z2UmXZzkZKpbC08CSehVxgHUwTpy+HwGcns/tqafQDJW7imYvGg== + dependencies: + "@jest/core" "^24.9.0" + "@jest/test-result" "^24.9.0" + "@jest/types" "^24.9.0" + chalk "^2.0.1" + exit "^0.1.2" + import-local "^2.0.0" + is-ci "^2.0.0" + jest-config "^24.9.0" + jest-util "^24.9.0" + jest-validate "^24.9.0" + prompts "^2.0.1" + realpath-native "^1.1.0" + yargs "^13.3.0" + +jest-config@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-24.9.0.tgz#fb1bbc60c73a46af03590719efa4825e6e4dd1b5" + integrity sha512-RATtQJtVYQrp7fvWg6f5y3pEFj9I+H8sWw4aKxnDZ96mob5i5SD6ZEGWgMLXQ4LE8UurrjbdlLWdUeo+28QpfQ== + dependencies: + "@babel/core" "^7.1.0" + "@jest/test-sequencer" "^24.9.0" + "@jest/types" "^24.9.0" + babel-jest "^24.9.0" + chalk "^2.0.1" + glob "^7.1.1" + jest-environment-jsdom "^24.9.0" + jest-environment-node "^24.9.0" + jest-get-type "^24.9.0" + jest-jasmine2 "^24.9.0" + jest-regex-util "^24.3.0" + jest-resolve "^24.9.0" + jest-util "^24.9.0" + jest-validate "^24.9.0" + micromatch "^3.1.10" + pretty-format "^24.9.0" + realpath-native "^1.1.0" + +jest-diff@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-24.9.0.tgz#931b7d0d5778a1baf7452cb816e325e3724055da" + integrity sha512-qMfrTs8AdJE2iqrTp0hzh7kTd2PQWrsFyj9tORoKmu32xjPjeE4NyjVRDz8ybYwqS2ik8N4hsIpiVTyFeo2lBQ== + dependencies: + chalk "^2.0.1" + diff-sequences "^24.9.0" + jest-get-type "^24.9.0" + pretty-format "^24.9.0" + +jest-docblock@^24.3.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-24.9.0.tgz#7970201802ba560e1c4092cc25cbedf5af5a8ce2" + integrity sha512-F1DjdpDMJMA1cN6He0FNYNZlo3yYmOtRUnktrT9Q37njYzC5WEaDdmbynIgy0L/IvXvvgsG8OsqhLPXTpfmZAA== + dependencies: + detect-newline "^2.1.0" + +jest-each@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-24.9.0.tgz#eb2da602e2a610898dbc5f1f6df3ba86b55f8b05" + integrity sha512-ONi0R4BvW45cw8s2Lrx8YgbeXL1oCQ/wIDwmsM3CqM/nlblNCPmnC3IPQlMbRFZu3wKdQ2U8BqM6lh3LJ5Bsog== + dependencies: + "@jest/types" "^24.9.0" + chalk "^2.0.1" + jest-get-type "^24.9.0" + jest-util "^24.9.0" + pretty-format "^24.9.0" + +jest-environment-jsdom-fourteen@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom-fourteen/-/jest-environment-jsdom-fourteen-1.0.1.tgz#4cd0042f58b4ab666950d96532ecb2fc188f96fb" + integrity sha512-DojMX1sY+at5Ep+O9yME34CdidZnO3/zfPh8UW+918C5fIZET5vCjfkegixmsi7AtdYfkr4bPlIzmWnlvQkP7Q== + dependencies: + "@jest/environment" "^24.3.0" + "@jest/fake-timers" "^24.3.0" + "@jest/types" "^24.3.0" + jest-mock "^24.0.0" + jest-util "^24.0.0" + jsdom "^14.1.0" + +jest-environment-jsdom@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-24.9.0.tgz#4b0806c7fc94f95edb369a69cc2778eec2b7375b" + integrity sha512-Zv9FV9NBRzLuALXjvRijO2351DRQeLYXtpD4xNvfoVFw21IOKNhZAEUKcbiEtjTkm2GsJ3boMVgkaR7rN8qetA== + dependencies: + "@jest/environment" "^24.9.0" + "@jest/fake-timers" "^24.9.0" + "@jest/types" "^24.9.0" + jest-mock "^24.9.0" + jest-util "^24.9.0" + jsdom "^11.5.1" + +jest-environment-node@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-24.9.0.tgz#333d2d2796f9687f2aeebf0742b519f33c1cbfd3" + integrity sha512-6d4V2f4nxzIzwendo27Tr0aFm+IXWa0XEUnaH6nU0FMaozxovt+sfRvh4J47wL1OvF83I3SSTu0XK+i4Bqe7uA== + dependencies: + "@jest/environment" "^24.9.0" + "@jest/fake-timers" "^24.9.0" + "@jest/types" "^24.9.0" + jest-mock "^24.9.0" + jest-util "^24.9.0" + +jest-get-type@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-24.9.0.tgz#1684a0c8a50f2e4901b6644ae861f579eed2ef0e" + integrity sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q== + +jest-haste-map@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-24.9.0.tgz#b38a5d64274934e21fa417ae9a9fbeb77ceaac7d" + integrity sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ== + dependencies: + "@jest/types" "^24.9.0" + anymatch "^2.0.0" + fb-watchman "^2.0.0" + graceful-fs "^4.1.15" + invariant "^2.2.4" + jest-serializer "^24.9.0" + jest-util "^24.9.0" + jest-worker "^24.9.0" + micromatch "^3.1.10" + sane "^4.0.3" + walker "^1.0.7" + optionalDependencies: + fsevents "^1.2.7" + +jest-jasmine2@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-24.9.0.tgz#1f7b1bd3242c1774e62acabb3646d96afc3be6a0" + integrity sha512-Cq7vkAgaYKp+PsX+2/JbTarrk0DmNhsEtqBXNwUHkdlbrTBLtMJINADf2mf5FkowNsq8evbPc07/qFO0AdKTzw== + dependencies: + "@babel/traverse" "^7.1.0" + "@jest/environment" "^24.9.0" + "@jest/test-result" "^24.9.0" + "@jest/types" "^24.9.0" + chalk "^2.0.1" + co "^4.6.0" + expect "^24.9.0" + is-generator-fn "^2.0.0" + jest-each "^24.9.0" + jest-matcher-utils "^24.9.0" + jest-message-util "^24.9.0" + jest-runtime "^24.9.0" + jest-snapshot "^24.9.0" + jest-util "^24.9.0" + pretty-format "^24.9.0" + throat "^4.0.0" + +jest-leak-detector@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-24.9.0.tgz#b665dea7c77100c5c4f7dfcb153b65cf07dcf96a" + integrity sha512-tYkFIDsiKTGwb2FG1w8hX9V0aUb2ot8zY/2nFg087dUageonw1zrLMP4W6zsRO59dPkTSKie+D4rhMuP9nRmrA== + dependencies: + jest-get-type "^24.9.0" + pretty-format "^24.9.0" + +jest-matcher-utils@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-24.9.0.tgz#f5b3661d5e628dffe6dd65251dfdae0e87c3a073" + integrity sha512-OZz2IXsu6eaiMAwe67c1T+5tUAtQyQx27/EMEkbFAGiw52tB9em+uGbzpcgYVpA8wl0hlxKPZxrly4CXU/GjHA== + dependencies: + chalk "^2.0.1" + jest-diff "^24.9.0" + jest-get-type "^24.9.0" + pretty-format "^24.9.0" + +jest-message-util@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-24.9.0.tgz#527f54a1e380f5e202a8d1149b0ec872f43119e3" + integrity sha512-oCj8FiZ3U0hTP4aSui87P4L4jC37BtQwUMqk+zk/b11FR19BJDeZsZAvIHutWnmtw7r85UmR3CEWZ0HWU2mAlw== + dependencies: + "@babel/code-frame" "^7.0.0" + "@jest/test-result" "^24.9.0" + "@jest/types" "^24.9.0" + "@types/stack-utils" "^1.0.1" + chalk "^2.0.1" + micromatch "^3.1.10" + slash "^2.0.0" + stack-utils "^1.0.1" + +jest-mock@^24.0.0, jest-mock@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-24.9.0.tgz#c22835541ee379b908673ad51087a2185c13f1c6" + integrity sha512-3BEYN5WbSq9wd+SyLDES7AHnjH9A/ROBwmz7l2y+ol+NtSFO8DYiEBzoO1CeFc9a8DYy10EO4dDFVv/wN3zl1w== + dependencies: + "@jest/types" "^24.9.0" + +jest-pnp-resolver@^1.2.1: + version "1.2.2" + resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz#b704ac0ae028a89108a4d040b3f919dfddc8e33c" + integrity sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w== + +jest-regex-util@^24.3.0, jest-regex-util@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-24.9.0.tgz#c13fb3380bde22bf6575432c493ea8fe37965636" + integrity sha512-05Cmb6CuxaA+Ys6fjr3PhvV3bGQmO+2p2La4hFbU+W5uOc479f7FdLXUWXw4pYMAhhSZIuKHwSXSu6CsSBAXQA== + +jest-resolve-dependencies@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-24.9.0.tgz#ad055198959c4cfba8a4f066c673a3f0786507ab" + integrity sha512-Fm7b6AlWnYhT0BXy4hXpactHIqER7erNgIsIozDXWl5dVm+k8XdGVe1oTg1JyaFnOxarMEbax3wyRJqGP2Pq+g== + dependencies: + "@jest/types" "^24.9.0" + jest-regex-util "^24.3.0" + jest-snapshot "^24.9.0" + +jest-resolve@24.9.0, jest-resolve@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-24.9.0.tgz#dff04c7687af34c4dd7e524892d9cf77e5d17321" + integrity sha512-TaLeLVL1l08YFZAt3zaPtjiVvyy4oSA6CRe+0AFPPVX3Q/VI0giIWWoAvoS5L96vj9Dqxj4fB5p2qrHCmTU/MQ== + dependencies: + "@jest/types" "^24.9.0" + browser-resolve "^1.11.3" + chalk "^2.0.1" + jest-pnp-resolver "^1.2.1" + realpath-native "^1.1.0" + +jest-runner@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-24.9.0.tgz#574fafdbd54455c2b34b4bdf4365a23857fcdf42" + integrity sha512-KksJQyI3/0mhcfspnxxEOBueGrd5E4vV7ADQLT9ESaCzz02WnbdbKWIf5Mkaucoaj7obQckYPVX6JJhgUcoWWg== + dependencies: + "@jest/console" "^24.7.1" + "@jest/environment" "^24.9.0" + "@jest/test-result" "^24.9.0" + "@jest/types" "^24.9.0" + chalk "^2.4.2" + exit "^0.1.2" + graceful-fs "^4.1.15" + jest-config "^24.9.0" + jest-docblock "^24.3.0" + jest-haste-map "^24.9.0" + jest-jasmine2 "^24.9.0" + jest-leak-detector "^24.9.0" + jest-message-util "^24.9.0" + jest-resolve "^24.9.0" + jest-runtime "^24.9.0" + jest-util "^24.9.0" + jest-worker "^24.6.0" + source-map-support "^0.5.6" + throat "^4.0.0" + +jest-runtime@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-24.9.0.tgz#9f14583af6a4f7314a6a9d9f0226e1a781c8e4ac" + integrity sha512-8oNqgnmF3v2J6PVRM2Jfuj8oX3syKmaynlDMMKQ4iyzbQzIG6th5ub/lM2bCMTmoTKM3ykcUYI2Pw9xwNtjMnw== + dependencies: + "@jest/console" "^24.7.1" + "@jest/environment" "^24.9.0" + "@jest/source-map" "^24.3.0" + "@jest/transform" "^24.9.0" + "@jest/types" "^24.9.0" + "@types/yargs" "^13.0.0" + chalk "^2.0.1" + exit "^0.1.2" + glob "^7.1.3" + graceful-fs "^4.1.15" + jest-config "^24.9.0" + jest-haste-map "^24.9.0" + jest-message-util "^24.9.0" + jest-mock "^24.9.0" + jest-regex-util "^24.3.0" + jest-resolve "^24.9.0" + jest-snapshot "^24.9.0" + jest-util "^24.9.0" + jest-validate "^24.9.0" + realpath-native "^1.1.0" + slash "^2.0.0" + strip-bom "^3.0.0" + yargs "^13.3.0" + +jest-serializer@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-24.9.0.tgz#e6d7d7ef96d31e8b9079a714754c5d5c58288e73" + integrity sha512-DxYipDr8OvfrKH3Kel6NdED3OXxjvxXZ1uIY2I9OFbGg+vUkkg7AGvi65qbhbWNPvDckXmzMPbK3u3HaDO49bQ== + +jest-snapshot@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-24.9.0.tgz#ec8e9ca4f2ec0c5c87ae8f925cf97497b0e951ba" + integrity sha512-uI/rszGSs73xCM0l+up7O7a40o90cnrk429LOiK3aeTvfC0HHmldbd81/B7Ix81KSFe1lwkbl7GnBGG4UfuDew== + dependencies: + "@babel/types" "^7.0.0" + "@jest/types" "^24.9.0" + chalk "^2.0.1" + expect "^24.9.0" + jest-diff "^24.9.0" + jest-get-type "^24.9.0" + jest-matcher-utils "^24.9.0" + jest-message-util "^24.9.0" + jest-resolve "^24.9.0" + mkdirp "^0.5.1" + natural-compare "^1.4.0" + pretty-format "^24.9.0" + semver "^6.2.0" + +jest-util@^24.0.0, jest-util@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-24.9.0.tgz#7396814e48536d2e85a37de3e4c431d7cb140162" + integrity sha512-x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg== + dependencies: + "@jest/console" "^24.9.0" + "@jest/fake-timers" "^24.9.0" + "@jest/source-map" "^24.9.0" + "@jest/test-result" "^24.9.0" + "@jest/types" "^24.9.0" + callsites "^3.0.0" + chalk "^2.0.1" + graceful-fs "^4.1.15" + is-ci "^2.0.0" + mkdirp "^0.5.1" + slash "^2.0.0" + source-map "^0.6.0" + +jest-validate@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-24.9.0.tgz#0775c55360d173cd854e40180756d4ff52def8ab" + integrity sha512-HPIt6C5ACwiqSiwi+OfSSHbK8sG7akG8eATl+IPKaeIjtPOeBUd/g3J7DghugzxrGjI93qS/+RPKe1H6PqvhRQ== + dependencies: + "@jest/types" "^24.9.0" + camelcase "^5.3.1" + chalk "^2.0.1" + jest-get-type "^24.9.0" + leven "^3.1.0" + pretty-format "^24.9.0" + +jest-watch-typeahead@0.4.2: + version "0.4.2" + resolved "https://registry.yarnpkg.com/jest-watch-typeahead/-/jest-watch-typeahead-0.4.2.tgz#e5be959698a7fa2302229a5082c488c3c8780a4a" + integrity sha512-f7VpLebTdaXs81rg/oj4Vg/ObZy2QtGzAmGLNsqUS5G5KtSN68tFcIsbvNODfNyQxU78g7D8x77o3bgfBTR+2Q== + dependencies: + ansi-escapes "^4.2.1" + chalk "^2.4.1" + jest-regex-util "^24.9.0" + jest-watcher "^24.3.0" + slash "^3.0.0" + string-length "^3.1.0" + strip-ansi "^5.0.0" + +jest-watcher@^24.3.0, jest-watcher@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-24.9.0.tgz#4b56e5d1ceff005f5b88e528dc9afc8dd4ed2b3b" + integrity sha512-+/fLOfKPXXYJDYlks62/4R4GoT+GU1tYZed99JSCOsmzkkF7727RqKrjNAxtfO4YpGv11wybgRvCjR73lK2GZw== + dependencies: + "@jest/test-result" "^24.9.0" + "@jest/types" "^24.9.0" + "@types/yargs" "^13.0.0" + ansi-escapes "^3.0.0" + chalk "^2.0.1" + jest-util "^24.9.0" + string-length "^2.0.0" + +jest-worker@^24.6.0, jest-worker@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-24.9.0.tgz#5dbfdb5b2d322e98567898238a9697bcce67b3e5" + integrity sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw== + dependencies: + merge-stream "^2.0.0" + supports-color "^6.1.0" + +jest-worker@^25.4.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-25.5.0.tgz#2611d071b79cea0f43ee57a3d118593ac1547db1" + integrity sha512-/dsSmUkIy5EBGfv/IjjqmFxrNAUpBERfGs1oHROyD7yxjG/w+t0GOJDX8O1k32ySmd7+a5IhnJU2qQFcJ4n1vw== + dependencies: + merge-stream "^2.0.0" + supports-color "^7.0.0" + +jest@24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest/-/jest-24.9.0.tgz#987d290c05a08b52c56188c1002e368edb007171" + integrity sha512-YvkBL1Zm7d2B1+h5fHEOdyjCG+sGMz4f8D86/0HiqJ6MB4MnDc8FgP5vdWsGnemOQro7lnYo8UakZ3+5A0jxGw== + dependencies: + import-local "^2.0.0" + jest-cli "^24.9.0" + +js-sha256@0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/js-sha256/-/js-sha256-0.9.0.tgz#0b89ac166583e91ef9123644bd3c5334ce9d0966" + integrity sha512-sga3MHh9sgQN2+pJ9VYZ+1LPwXOxuBJBA5nrR5/ofPfuiJBE2hnjsaN8se8JznOmGLN2p49Pe5U/ttafcs/apA== + +js-sha3@0.8.0, js-sha3@^0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" + integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q== + +js-sha3@^0.5.7: + version "0.5.7" + resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.5.7.tgz#0d4ffd8002d5333aabaf4a23eed2f6374c9f28e7" + integrity sha1-DU/9gALVMzqrr0oj7tL2N0yfKOc= + +js-sha512@^0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/js-sha512/-/js-sha512-0.8.0.tgz#dd22db8d02756faccf19f218e3ed61ec8249f7d4" + integrity sha512-PWsmefG6Jkodqt+ePTvBZCSMFgN7Clckjd0O7su3I0+BW2QWUTJNzjktHsztGLhncP2h8mcF9V9Y2Ha59pAViQ== + +"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-tokens@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" + integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= + +js-yaml@^3.13.1: + version "3.14.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" + integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +jsbn@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= + +jsdom@^11.5.1: + version "11.12.0" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-11.12.0.tgz#1a80d40ddd378a1de59656e9e6dc5a3ba8657bc8" + integrity sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw== + dependencies: + abab "^2.0.0" + acorn "^5.5.3" + acorn-globals "^4.1.0" + array-equal "^1.0.0" + cssom ">= 0.3.2 < 0.4.0" + cssstyle "^1.0.0" + data-urls "^1.0.0" + domexception "^1.0.1" + escodegen "^1.9.1" + html-encoding-sniffer "^1.0.2" + left-pad "^1.3.0" + nwsapi "^2.0.7" + parse5 "4.0.0" + pn "^1.1.0" + request "^2.87.0" + request-promise-native "^1.0.5" + sax "^1.2.4" + symbol-tree "^3.2.2" + tough-cookie "^2.3.4" + w3c-hr-time "^1.0.1" + webidl-conversions "^4.0.2" + whatwg-encoding "^1.0.3" + whatwg-mimetype "^2.1.0" + whatwg-url "^6.4.1" + ws "^5.2.0" + xml-name-validator "^3.0.0" + +jsdom@^14.1.0: + version "14.1.0" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-14.1.0.tgz#916463b6094956b0a6c1782c94e380cd30e1981b" + integrity sha512-O901mfJSuTdwU2w3Sn+74T+RnDVP+FuV5fH8tcPWyqrseRAb0s5xOtPgCFiPOtLcyK7CLIJwPyD83ZqQWvA5ng== + dependencies: + abab "^2.0.0" + acorn "^6.0.4" + acorn-globals "^4.3.0" + array-equal "^1.0.0" + cssom "^0.3.4" + cssstyle "^1.1.1" + data-urls "^1.1.0" + domexception "^1.0.1" + escodegen "^1.11.0" + html-encoding-sniffer "^1.0.2" + nwsapi "^2.1.3" + parse5 "5.1.0" + pn "^1.1.0" + request "^2.88.0" + request-promise-native "^1.0.5" + saxes "^3.1.9" + symbol-tree "^3.2.2" + tough-cookie "^2.5.0" + w3c-hr-time "^1.0.1" + w3c-xmlserializer "^1.1.2" + webidl-conversions "^4.0.2" + whatwg-encoding "^1.0.5" + whatwg-mimetype "^2.3.0" + whatwg-url "^7.0.0" + ws "^6.1.2" + xml-name-validator "^3.0.0" + +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= + +json-buffer@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" + integrity sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg= + +json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" + integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== + +json-parse-even-better-errors@^2.3.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" + integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== + +json-rpc-engine@6.1.0, json-rpc-engine@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/json-rpc-engine/-/json-rpc-engine-6.1.0.tgz#bf5ff7d029e1c1bf20cb6c0e9f348dcd8be5a393" + integrity sha512-NEdLrtrq1jUZyfjkr9OCz9EzCNhnRyWtt1PAnvnhwy6e8XETS0Dtc+ZNCO2gvuAoKsIn2+vCSowXTYE4CkgnAQ== + dependencies: + "@metamask/safe-event-emitter" "^2.0.0" + eth-rpc-errors "^4.0.2" + +json-rpc-engine@^5.3.0: + version "5.4.0" + resolved "https://registry.yarnpkg.com/json-rpc-engine/-/json-rpc-engine-5.4.0.tgz#75758609d849e1dba1e09021ae473f3ab63161e5" + integrity sha512-rAffKbPoNDjuRnXkecTjnsE3xLLrb00rEkdgalINhaYVYIxDwWtvYBr9UFbhTvPB1B2qUOLoFd/cV6f4Q7mh7g== + dependencies: + eth-rpc-errors "^3.0.0" + safe-event-emitter "^1.0.1" + +json-rpc-random-id@^1.0.0, json-rpc-random-id@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-rpc-random-id/-/json-rpc-random-id-1.0.1.tgz#ba49d96aded1444dbb8da3d203748acbbcdec8c8" + integrity sha1-uknZat7RRE27jaPSA3SKy7zeyMg= + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-schema@0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5" + integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA== + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= + +json-stable-stringify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" + integrity sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8= + dependencies: + jsonify "~0.0.0" + +json-stringify-safe@~5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= + +json3@^3.3.2: + version "3.3.3" + resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.3.tgz#7fc10e375fc5ae42c4705a5cc0aa6f62be305b81" + integrity sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA== + +json5@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" + integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== + dependencies: + minimist "^1.2.0" + +json5@^2.1.2: + version "2.2.0" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3" + integrity sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA== + dependencies: + minimist "^1.2.5" + +jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" + integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= + optionalDependencies: + graceful-fs "^4.1.6" + +jsonify@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" + integrity sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM= + +jsprim@^1.2.2: + version "1.4.2" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.2.tgz#712c65533a15c878ba59e9ed5f0e26d5b77c5feb" + integrity sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw== + dependencies: + assert-plus "1.0.0" + extsprintf "1.3.0" + json-schema "0.4.0" + verror "1.10.0" + +jss-plugin-camel-case@^10.5.1: + version "10.9.0" + resolved "https://registry.yarnpkg.com/jss-plugin-camel-case/-/jss-plugin-camel-case-10.9.0.tgz#4921b568b38d893f39736ee8c4c5f1c64670aaf7" + integrity sha512-UH6uPpnDk413/r/2Olmw4+y54yEF2lRIV8XIZyuYpgPYTITLlPOsq6XB9qeqv+75SQSg3KLocq5jUBXW8qWWww== + dependencies: + "@babel/runtime" "^7.3.1" + hyphenate-style-name "^1.0.3" + jss "10.9.0" + +jss-plugin-default-unit@^10.5.1: + version "10.9.0" + resolved "https://registry.yarnpkg.com/jss-plugin-default-unit/-/jss-plugin-default-unit-10.9.0.tgz#bb23a48f075bc0ce852b4b4d3f7582bc002df991" + integrity sha512-7Ju4Q9wJ/MZPsxfu4T84mzdn7pLHWeqoGd/D8O3eDNNJ93Xc8PxnLmV8s8ZPNRYkLdxZqKtm1nPQ0BM4JRlq2w== + dependencies: + "@babel/runtime" "^7.3.1" + jss "10.9.0" + +jss-plugin-global@^10.5.1: + version "10.9.0" + resolved "https://registry.yarnpkg.com/jss-plugin-global/-/jss-plugin-global-10.9.0.tgz#fc07a0086ac97aca174e37edb480b69277f3931f" + integrity sha512-4G8PHNJ0x6nwAFsEzcuVDiBlyMsj2y3VjmFAx/uHk/R/gzJV+yRHICjT4MKGGu1cJq2hfowFWCyrr/Gg37FbgQ== + dependencies: + "@babel/runtime" "^7.3.1" + jss "10.9.0" + +jss-plugin-nested@^10.5.1: + version "10.9.0" + resolved "https://registry.yarnpkg.com/jss-plugin-nested/-/jss-plugin-nested-10.9.0.tgz#cc1c7d63ad542c3ccc6e2c66c8328c6b6b00f4b3" + integrity sha512-2UJnDrfCZpMYcpPYR16oZB7VAC6b/1QLsRiAutOt7wJaaqwCBvNsosLEu/fUyKNQNGdvg2PPJFDO5AX7dwxtoA== + dependencies: + "@babel/runtime" "^7.3.1" + jss "10.9.0" + tiny-warning "^1.0.2" + +jss-plugin-props-sort@^10.5.1: + version "10.9.0" + resolved "https://registry.yarnpkg.com/jss-plugin-props-sort/-/jss-plugin-props-sort-10.9.0.tgz#30e9567ef9479043feb6e5e59db09b4de687c47d" + integrity sha512-7A76HI8bzwqrsMOJTWKx/uD5v+U8piLnp5bvru7g/3ZEQOu1+PjHvv7bFdNO3DwNPC9oM0a//KwIJsIcDCjDzw== + dependencies: + "@babel/runtime" "^7.3.1" + jss "10.9.0" + +jss-plugin-rule-value-function@^10.5.1: + version "10.9.0" + resolved "https://registry.yarnpkg.com/jss-plugin-rule-value-function/-/jss-plugin-rule-value-function-10.9.0.tgz#379fd2732c0746fe45168011fe25544c1a295d67" + integrity sha512-IHJv6YrEf8pRzkY207cPmdbBstBaE+z8pazhPShfz0tZSDtRdQua5jjg6NMz3IbTasVx9FdnmptxPqSWL5tyJg== + dependencies: + "@babel/runtime" "^7.3.1" + jss "10.9.0" + tiny-warning "^1.0.2" + +jss-plugin-vendor-prefixer@^10.5.1: + version "10.9.0" + resolved "https://registry.yarnpkg.com/jss-plugin-vendor-prefixer/-/jss-plugin-vendor-prefixer-10.9.0.tgz#aa9df98abfb3f75f7ed59a3ec50a5452461a206a" + integrity sha512-MbvsaXP7iiVdYVSEoi+blrW+AYnTDvHTW6I6zqi7JcwXdc6I9Kbm234nEblayhF38EftoenbM+5218pidmC5gA== + dependencies: + "@babel/runtime" "^7.3.1" + css-vendor "^2.0.8" + jss "10.9.0" + +jss@10.9.0, jss@^10.5.1: + version "10.9.0" + resolved "https://registry.yarnpkg.com/jss/-/jss-10.9.0.tgz#7583ee2cdc904a83c872ba695d1baab4b59c141b" + integrity sha512-YpzpreB6kUunQBbrlArlsMpXYyndt9JATbt95tajx0t4MTJJcCJdd4hdNpHmOIDiUJrF/oX5wtVFrS3uofWfGw== + dependencies: + "@babel/runtime" "^7.3.1" + csstype "^3.0.2" + is-in-browser "^1.1.3" + tiny-warning "^1.0.2" + +jsx-ast-utils@^2.2.1, jsx-ast-utils@^2.2.3: + version "2.4.1" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.4.1.tgz#1114a4c1209481db06c690c2b4f488cc665f657e" + integrity sha512-z1xSldJ6imESSzOjd3NNkieVJKRlKYSOtMG8SFyCj2FIrvSaSuli/WjpBkEzCBoR9bYYYFgqJw61Xhu7Lcgk+w== + dependencies: + array-includes "^3.1.1" + object.assign "^4.1.0" + +keccak@^3.0.0, keccak@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.2.tgz#4c2c6e8c54e04f2670ee49fa734eb9da152206e0" + integrity sha512-PyKKjkH53wDMLGrvmRGSNWgmSxZOUqbnXwKL9tmgbFYA1iAYqW21kfR7mZXV0MlESiefxQQE9X9fTa3X+2MPDQ== + dependencies: + node-addon-api "^2.0.0" + node-gyp-build "^4.2.0" + readable-stream "^3.6.0" + +keyv@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9" + integrity sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA== + dependencies: + json-buffer "3.0.0" + +keyvaluestorage-interface@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/keyvaluestorage-interface/-/keyvaluestorage-interface-1.0.0.tgz#13ebdf71f5284ad54be94bd1ad9ed79adad515ff" + integrity sha512-8t6Q3TclQ4uZynJY9IGr2+SsIGwK9JHcO6ootkHCGA0CrQCRy+VkouYNO2xicET6b9al7QKzpebNow+gkpCL8g== + +killable@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892" + integrity sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg== + +kind-of@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-2.0.1.tgz#018ec7a4ce7e3a86cb9141be519d24c8faa981b5" + integrity sha1-AY7HpM5+OobLkUG+UZ0kyPqpgbU= + dependencies: + is-buffer "^1.0.2" + +kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: + version "3.2.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= + dependencies: + is-buffer "^1.1.5" + +kind-of@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" + integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= + dependencies: + is-buffer "^1.1.5" + +kind-of@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" + integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== + +kind-of@^6.0.0, kind-of@^6.0.2: + version "6.0.3" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + +kleur@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" + integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== + +last-call-webpack-plugin@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz#9742df0e10e3cf46e5c0381c2de90d3a7a2d7555" + integrity sha512-7KI2l2GIZa9p2spzPIVZBYyNKkN+e/SQPpnjlTiPhdbDW3F86tdKKELxKpzJ5sgU19wQWsACULZmpTPYHeWO5w== + dependencies: + lodash "^4.17.5" + webpack-sources "^1.1.0" + +lazy-cache@^0.2.3: + version "0.2.7" + resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-0.2.7.tgz#7feddf2dcb6edb77d11ef1d117ab5ffdf0ab1b65" + integrity sha1-f+3fLctu23fRHvHRF6tf/fCrG2U= + +lazy-cache@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" + integrity sha1-odePw6UEdMuAhF07O24dpJpEbo4= + +left-pad@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/left-pad/-/left-pad-1.3.0.tgz#5b8a3a7765dfe001261dde915589e782f8c94d1e" + integrity sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA== + +level-codec@~7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/level-codec/-/level-codec-7.0.1.tgz#341f22f907ce0f16763f24bddd681e395a0fb8a7" + integrity sha512-Ua/R9B9r3RasXdRmOtd+t9TCOEIIlts+TN/7XTT2unhDaL6sJn83S3rUyljbr6lVtw49N3/yA0HHjpV6Kzb2aQ== + +level-errors@^1.0.3: + version "1.1.2" + resolved "https://registry.yarnpkg.com/level-errors/-/level-errors-1.1.2.tgz#4399c2f3d3ab87d0625f7e3676e2d807deff404d" + integrity sha512-Sw/IJwWbPKF5Ai4Wz60B52yj0zYeqzObLh8k1Tk88jVmD51cJSKWSYpRyhVIvFzZdvsPqlH5wfhp/yxdsaQH4w== + dependencies: + errno "~0.1.1" + +level-errors@~1.0.3: + version "1.0.5" + resolved "https://registry.yarnpkg.com/level-errors/-/level-errors-1.0.5.tgz#83dbfb12f0b8a2516bdc9a31c4876038e227b859" + integrity sha512-/cLUpQduF6bNrWuAC4pwtUKA5t669pCsCi2XbmojG2tFeOr9j6ShtdDCtFFQO1DRt+EVZhx9gPzP9G2bUaG4ig== + dependencies: + errno "~0.1.1" + +level-iterator-stream@~1.3.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/level-iterator-stream/-/level-iterator-stream-1.3.1.tgz#e43b78b1a8143e6fa97a4f485eb8ea530352f2ed" + integrity sha1-5Dt4sagUPm+pek9IXrjqUwNS8u0= + dependencies: + inherits "^2.0.1" + level-errors "^1.0.3" + readable-stream "^1.0.33" + xtend "^4.0.0" + +level-ws@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/level-ws/-/level-ws-0.0.0.tgz#372e512177924a00424b0b43aef2bb42496d228b" + integrity sha1-Ny5RIXeSSgBCSwtDrvK7QkltIos= + dependencies: + readable-stream "~1.0.15" + xtend "~2.1.1" + +levelup@^1.2.1: + version "1.3.9" + resolved "https://registry.yarnpkg.com/levelup/-/levelup-1.3.9.tgz#2dbcae845b2bb2b6bea84df334c475533bbd82ab" + integrity sha512-VVGHfKIlmw8w1XqpGOAGwq6sZm2WwWLmlDcULkKWQXEA5EopA8OBNJ2Ck2v6bdk8HeEZSbCSEgzXadyQFm76sQ== + dependencies: + deferred-leveldown "~1.2.1" + level-codec "~7.0.0" + level-errors "~1.0.3" + level-iterator-stream "~1.3.0" + prr "~1.0.1" + semver "~5.4.1" + xtend "~4.0.0" + +leven@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" + integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== + +levenary@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/levenary/-/levenary-1.1.1.tgz#842a9ee98d2075aa7faeedbe32679e9205f46f77" + integrity sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ== + dependencies: + leven "^3.1.0" + +levn@^0.3.0, levn@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= + dependencies: + prelude-ls "~1.1.2" + type-check "~0.3.2" + +libsodium-wrappers@^0.7.6: + version "0.7.9" + resolved "https://registry.yarnpkg.com/libsodium-wrappers/-/libsodium-wrappers-0.7.9.tgz#4ffc2b69b8f7c7c7c5594a93a4803f80f6d0f346" + integrity sha512-9HaAeBGk1nKTRFRHkt7nzxqCvnkWTjn1pdjKgcUnZxj0FyOP4CnhgFhMdrFfgNsukijBGyBLpP2m2uKT1vuWhQ== + dependencies: + libsodium "^0.7.0" + +libsodium@^0.7.0: + version "0.7.9" + resolved "https://registry.yarnpkg.com/libsodium/-/libsodium-0.7.9.tgz#4bb7bcbf662ddd920d8795c227ae25bbbfa3821b" + integrity sha512-gfeADtR4D/CM0oRUviKBViMGXZDgnFdMKMzHsvBdqLBHd9ySi6EtYnmuhHVDDYgYpAO8eU8hEY+F8vIUAPh08A== + +lines-and-columns@^1.1.6: + version "1.2.4" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" + integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== + +lint-staged@^11.0.0: + version "11.2.6" + resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-11.2.6.tgz#f477b1af0294db054e5937f171679df63baa4c43" + integrity sha512-Vti55pUnpvPE0J9936lKl0ngVeTdSZpEdTNhASbkaWX7J5R9OEifo1INBGQuGW4zmy6OG+TcWPJ3m5yuy5Q8Tg== + dependencies: + cli-truncate "2.1.0" + colorette "^1.4.0" + commander "^8.2.0" + cosmiconfig "^7.0.1" + debug "^4.3.2" + enquirer "^2.3.6" + execa "^5.1.1" + listr2 "^3.12.2" + micromatch "^4.0.4" + normalize-path "^3.0.0" + please-upgrade-node "^3.2.0" + string-argv "0.3.1" + stringify-object "3.3.0" + supports-color "8.1.1" + +listr2@^3.12.2: + version "3.14.0" + resolved "https://registry.yarnpkg.com/listr2/-/listr2-3.14.0.tgz#23101cc62e1375fd5836b248276d1d2b51fdbe9e" + integrity sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g== + dependencies: + cli-truncate "^2.1.0" + colorette "^2.0.16" + log-update "^4.0.0" + p-map "^4.0.0" + rfdc "^1.3.0" + rxjs "^7.5.1" + through "^2.3.8" + wrap-ansi "^7.0.0" + +load-json-file@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" + integrity sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg= + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + strip-bom "^3.0.0" + +load-json-file@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" + integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs= + dependencies: + graceful-fs "^4.1.2" + parse-json "^4.0.0" + pify "^3.0.0" + strip-bom "^3.0.0" + +loader-fs-cache@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/loader-fs-cache/-/loader-fs-cache-1.0.3.tgz#f08657646d607078be2f0a032f8bd69dd6f277d9" + integrity sha512-ldcgZpjNJj71n+2Mf6yetz+c9bM4xpKtNds4LbqXzU/PTdeAX0g3ytnU1AJMEcTk2Lex4Smpe3Q/eCTsvUBxbA== + dependencies: + find-cache-dir "^0.1.1" + mkdirp "^0.5.1" + +loader-runner@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" + integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== + +loader-utils@1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7" + integrity sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA== + dependencies: + big.js "^5.2.2" + emojis-list "^2.0.0" + json5 "^1.0.1" + +loader-utils@^1.1.0, loader-utils@^1.2.3, loader-utils@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" + integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA== + dependencies: + big.js "^5.2.2" + emojis-list "^3.0.0" + json5 "^1.0.1" + +locate-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= + dependencies: + p-locate "^2.0.0" + path-exists "^3.0.0" + +locate-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" + integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== + dependencies: + p-locate "^3.0.0" + path-exists "^3.0.0" + +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + +lodash._reinterpolate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" + integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0= + +lodash.debounce@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" + integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168= + +lodash.isequalwith@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.isequalwith/-/lodash.isequalwith-4.4.0.tgz#266726ddd528f854f21f4ea98a065606e0fbc6b0" + integrity sha1-Jmcm3dUo+FTyH06pigZWBuD7xrA= + +lodash.memoize@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" + integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= + +lodash.sortby@^4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" + integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= + +lodash.template@^4.4.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.5.0.tgz#f976195cf3f347d0d5f52483569fe8031ccce8ab" + integrity sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A== + dependencies: + lodash._reinterpolate "^3.0.0" + lodash.templatesettings "^4.0.0" + +lodash.templatesettings@^4.0.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz#e481310f049d3cf6d47e912ad09313b154f0fb33" + integrity sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ== + dependencies: + lodash._reinterpolate "^3.0.0" + +lodash.uniq@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" + integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= + +"lodash@>=3.5 <5", lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.5: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +log-update@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/log-update/-/log-update-4.0.0.tgz#589ecd352471f2a1c0c570287543a64dfd20e0a1" + integrity sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg== + dependencies: + ansi-escapes "^4.3.0" + cli-cursor "^3.1.0" + slice-ansi "^4.0.0" + wrap-ansi "^6.2.0" + +loglevel@^1.6.8: + version "1.8.0" + resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.8.0.tgz#e7ec73a57e1e7b419cb6c6ac06bf050b67356114" + integrity sha512-G6A/nJLRgWOuuwdNuA6koovfEV1YpqqAG4pRUlFaz3jj2QNZ8M4vBqnVA+HBTmU/AMNUtlOsMmSpF6NyOjztbA== + +long@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28" + integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA== + +loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.2.0, loose-envify@^1.3.1, loose-envify@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + +lower-case@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" + integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== + dependencies: + tslib "^2.0.3" + +lowercase-keys@^1.0.0, lowercase-keys@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" + integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== + +lowercase-keys@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" + integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== + +lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" + integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== + dependencies: + yallist "^3.0.2" + +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + +ltgt@~2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ltgt/-/ltgt-2.2.1.tgz#f35ca91c493f7b73da0e07495304f17b31f87ee5" + integrity sha1-81ypHEk/e3PaDgdJUwTxezH4fuU= + +make-dir@^2.0.0, make-dir@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" + integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== + dependencies: + pify "^4.0.1" + semver "^5.6.0" + +make-dir@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" + integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== + dependencies: + semver "^6.0.0" + +makeerror@1.0.12: + version "1.0.12" + resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a" + integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== + dependencies: + tmpl "1.0.5" + +mamacro@^0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/mamacro/-/mamacro-0.0.3.tgz#ad2c9576197c9f1abf308d0787865bd975a3f3e4" + integrity sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA== + +map-cache@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" + integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= + +map-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" + integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= + dependencies: + object-visit "^1.0.0" + +md5.js@^1.3.4: + version "1.3.5" + resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" + integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +mdn-data@2.0.14: + version "2.0.14" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50" + integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow== + +mdn-data@2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.4.tgz#699b3c38ac6f1d728091a64650b65d388502fd5b" + integrity sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA== + +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= + +memdown@^1.0.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/memdown/-/memdown-1.4.1.tgz#b4e4e192174664ffbae41361aa500f3119efe215" + integrity sha1-tOThkhdGZP+65BNhqlAPMRnv4hU= + dependencies: + abstract-leveldown "~2.7.1" + functional-red-black-tree "^1.0.1" + immediate "^3.2.3" + inherits "~2.0.1" + ltgt "~2.2.0" + safe-buffer "~5.1.1" + +memory-fs@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" + integrity sha1-OpoguEYlI+RHz7x+i7gO1me/xVI= + dependencies: + errno "^0.1.3" + readable-stream "^2.0.1" + +memory-fs@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.5.0.tgz#324c01288b88652966d161db77838720845a8e3c" + integrity sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA== + dependencies: + errno "^0.1.3" + readable-stream "^2.0.1" + +merge-deep@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/merge-deep/-/merge-deep-3.0.3.tgz#1a2b2ae926da8b2ae93a0ac15d90cd1922766003" + integrity sha512-qtmzAS6t6grwEkNrunqTBdn0qKwFgNWvlxUbAV8es9M7Ot1EbyApytCnvE0jALPa46ZpKDUo527kKiaWplmlFA== + dependencies: + arr-union "^3.1.0" + clone-deep "^0.2.4" + kind-of "^3.0.2" + +merge-descriptors@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" + integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +merge2@^1.2.3: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +merkle-patricia-tree@^2.1.2, merkle-patricia-tree@^2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/merkle-patricia-tree/-/merkle-patricia-tree-2.3.2.tgz#982ca1b5a0fde00eed2f6aeed1f9152860b8208a" + integrity sha512-81PW5m8oz/pz3GvsAwbauj7Y00rqm81Tzad77tHBwU7pIAtN+TJnMSOJhxBKflSVYhptMMb9RskhqHqrSm1V+g== + dependencies: + async "^1.4.2" + ethereumjs-util "^5.0.0" + level-ws "0.0.0" + levelup "^1.2.1" + memdown "^1.0.0" + readable-stream "^2.0.0" + rlp "^2.0.0" + semaphore ">=1.0.1" + +mersenne-twister@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/mersenne-twister/-/mersenne-twister-1.1.0.tgz#f916618ee43d7179efcf641bec4531eb9670978a" + integrity sha1-+RZhjuQ9cXnvz2Qb7EUx65Zwl4o= + +methods@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= + +microevent.ts@~0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/microevent.ts/-/microevent.ts-0.1.1.tgz#70b09b83f43df5172d0205a63025bce0f7357fa0" + integrity sha512-jo1OfR4TaEwd5HOrt5+tAZ9mqT4jmpNAusXtyfNzqVm9uiSYFZlKM1wYL4oU7azZW/PxQW53wM0S6OR1JHNa2g== + +micromatch@^3.1.10, micromatch@^3.1.4: + version "3.1.10" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" + integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + braces "^2.3.1" + define-property "^2.0.2" + extend-shallow "^3.0.2" + extglob "^2.0.4" + fragment-cache "^0.2.1" + kind-of "^6.0.2" + nanomatch "^1.2.9" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.2" + +micromatch@^4.0.4: + version "4.0.4" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9" + integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg== + dependencies: + braces "^3.0.1" + picomatch "^2.2.3" + +miller-rabin@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" + integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== + dependencies: + bn.js "^4.0.0" + brorand "^1.0.1" + +mime-db@1.51.0, "mime-db@>= 1.43.0 < 2": + version "1.51.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.51.0.tgz#d9ff62451859b18342d960850dc3cfb77e63fb0c" + integrity sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g== + +mime-types@^2.1.12, mime-types@^2.1.16, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24: + version "2.1.34" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.34.tgz#5a712f9ec1503511a945803640fafe09d3793c24" + integrity sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A== + dependencies: + mime-db "1.51.0" + +mime@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +mime@^2.4.4: + version "2.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367" + integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== + +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +mimic-response@^1.0.0, mimic-response@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" + integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== + +min-document@^2.19.0: + version "2.19.0" + resolved "https://registry.yarnpkg.com/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685" + integrity sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU= + dependencies: + dom-walk "^0.1.0" + +mini-create-react-context@^0.4.0: + version "0.4.1" + resolved "https://registry.yarnpkg.com/mini-create-react-context/-/mini-create-react-context-0.4.1.tgz#072171561bfdc922da08a60c2197a497cc2d1d5e" + integrity sha512-YWCYEmd5CQeHGSAKrYvXgmzzkrvssZcuuQDDeqkT+PziKGMgE+0MCCtcKbROzocGBG1meBLl2FotlRwf4gAzbQ== + dependencies: + "@babel/runtime" "^7.12.1" + tiny-warning "^1.0.3" + +mini-css-extract-plugin@0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.9.0.tgz#47f2cf07aa165ab35733b1fc97d4c46c0564339e" + integrity sha512-lp3GeY7ygcgAmVIcRPBVhIkf8Us7FZjA+ILpal44qLdSu11wmjKQ3d9k15lfD7pO4esu9eUIAW7qiYIBppv40A== + dependencies: + loader-utils "^1.1.0" + normalize-url "1.9.1" + schema-utils "^1.0.0" + webpack-sources "^1.1.0" + +minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== + +minimalistic-crypto-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" + integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= + +minimatch@3.0.4, minimatch@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== + dependencies: + brace-expansion "^1.1.7" + +minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" + integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== + +minipass-collect@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617" + integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA== + dependencies: + minipass "^3.0.0" + +minipass-flush@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" + integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== + dependencies: + minipass "^3.0.0" + +minipass-pipeline@^1.2.2: + version "1.2.4" + resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz#68472f79711c084657c067c5c6ad93cddea8214c" + integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A== + dependencies: + minipass "^3.0.0" + +minipass@^2.6.0, minipass@^2.9.0: + version "2.9.0" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" + integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg== + dependencies: + safe-buffer "^5.1.2" + yallist "^3.0.0" + +minipass@^3.0.0, minipass@^3.1.1: + version "3.1.6" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.6.tgz#3b8150aa688a711a1521af5e8779c1d3bb4f45ee" + integrity sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ== + dependencies: + yallist "^4.0.0" + +minizlib@^1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d" + integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q== + dependencies: + minipass "^2.9.0" + +mississippi@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" + integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA== + dependencies: + concat-stream "^1.5.0" + duplexify "^3.4.2" + end-of-stream "^1.1.0" + flush-write-stream "^1.0.0" + from2 "^2.1.0" + parallel-transform "^1.1.0" + pump "^3.0.0" + pumpify "^1.3.3" + stream-each "^1.1.0" + through2 "^2.0.0" + +mixin-deep@^1.2.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" + integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== + dependencies: + for-in "^1.0.2" + is-extendable "^1.0.1" + +mixin-object@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/mixin-object/-/mixin-object-2.0.1.tgz#4fb949441dab182540f1fe035ba60e1947a5e57e" + integrity sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4= + dependencies: + for-in "^0.1.3" + is-extendable "^0.1.1" + +mkdirp-promise@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/mkdirp-promise/-/mkdirp-promise-5.0.1.tgz#e9b8f68e552c68a9c1713b84883f7a1dd039b8a1" + integrity sha1-6bj2jlUsaKnBcTuEiD96HdA5uKE= + dependencies: + mkdirp "*" + +mkdirp@*: + version "1.0.4" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + +mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.5, mkdirp@~0.5.1: + version "0.5.5" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" + integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== + dependencies: + minimist "^1.2.5" + +mock-fs@^4.1.0: + version "4.14.0" + resolved "https://registry.yarnpkg.com/mock-fs/-/mock-fs-4.14.0.tgz#ce5124d2c601421255985e6e94da80a7357b1b18" + integrity sha512-qYvlv/exQ4+svI3UOvPUpLDF0OMX5euvUH0Ny4N5QyRyhNdgAgUrVH3iUINSzEPLvx0kbo/Bp28GJKIqvE7URw== + +moment@^2.29.1: + version "2.29.1" + resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.1.tgz#b2be769fa31940be9eeea6469c075e35006fa3d3" + integrity sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ== + +move-concurrently@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" + integrity sha1-viwAX9oy4LKa8fBdfEszIUxwH5I= + dependencies: + aproba "^1.1.1" + copy-concurrently "^1.0.0" + fs-write-stream-atomic "^1.0.8" + mkdirp "^0.5.1" + rimraf "^2.5.4" + run-queue "^1.0.3" + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= + +ms@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +ms@2.1.3, ms@^2.1.1: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +multibase@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/multibase/-/multibase-0.7.0.tgz#1adfc1c50abe05eefeb5091ac0c2728d6b84581b" + integrity sha512-TW8q03O0f6PNFTQDvh3xxH03c8CjGaaYrjkl9UQPG6rz53TQzzxJVCIWVjzcbN/Q5Y53Zd0IBQBMVktVgNx4Fg== + dependencies: + base-x "^3.0.8" + buffer "^5.5.0" + +multibase@~0.6.0: + version "0.6.1" + resolved "https://registry.yarnpkg.com/multibase/-/multibase-0.6.1.tgz#b76df6298536cc17b9f6a6db53ec88f85f8cc12b" + integrity sha512-pFfAwyTjbbQgNc3G7D48JkJxWtoJoBMaR4xQUOuB8RnCgRqaYmWNFeJTTvrJ2w51bjLq2zTby6Rqj9TQ9elSUw== + dependencies: + base-x "^3.0.8" + buffer "^5.5.0" + +multicast-dns-service-types@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901" + integrity sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE= + +multicast-dns@^6.0.1: + version "6.2.3" + resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-6.2.3.tgz#a0ec7bd9055c4282f790c3c82f4e28db3b31b229" + integrity sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g== + dependencies: + dns-packet "^1.3.1" + thunky "^1.0.2" + +multicodec@^0.5.5: + version "0.5.7" + resolved "https://registry.yarnpkg.com/multicodec/-/multicodec-0.5.7.tgz#1fb3f9dd866a10a55d226e194abba2dcc1ee9ffd" + integrity sha512-PscoRxm3f+88fAtELwUnZxGDkduE2HD9Q6GHUOywQLjOGT/HAdhjLDYNZ1e7VR0s0TP0EwZ16LNUTFpoBGivOA== + dependencies: + varint "^5.0.0" + +multicodec@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/multicodec/-/multicodec-1.0.4.tgz#46ac064657c40380c28367c90304d8ed175a714f" + integrity sha512-NDd7FeS3QamVtbgfvu5h7fd1IlbaC4EQ0/pgU4zqE2vdHCmBGsUa0TiM8/TdSeG6BMPC92OOCf8F1ocE/Wkrrg== + dependencies: + buffer "^5.6.0" + varint "^5.0.0" + +multihashes@^0.4.15, multihashes@~0.4.15: + version "0.4.21" + resolved "https://registry.yarnpkg.com/multihashes/-/multihashes-0.4.21.tgz#dc02d525579f334a7909ade8a122dabb58ccfcb5" + integrity sha512-uVSvmeCWf36pU2nB4/1kzYZjsXD9vofZKpgudqkceYY5g2aZZXJ5r9lxuzoRLl1OAp28XljXsEJ/X/85ZsKmKw== + dependencies: + buffer "^5.5.0" + multibase "^0.7.0" + varint "^5.0.0" + +mute-stream@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" + integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== + +nan@^2.12.1: + version "2.15.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.15.0.tgz#3f34a473ff18e15c1b5626b62903b5ad6e665fee" + integrity sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ== + +nano-json-stream-parser@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/nano-json-stream-parser/-/nano-json-stream-parser-0.1.2.tgz#0cc8f6d0e2b622b479c40d499c46d64b755c6f5f" + integrity sha1-DMj20OK2IrR5xA1JnEbWS3Vcb18= + +nanomatch@^1.2.9: + version "1.2.13" + resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" + integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + define-property "^2.0.2" + extend-shallow "^3.0.2" + fragment-cache "^0.2.1" + is-windows "^1.0.2" + kind-of "^6.0.2" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= + +negotiator@0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" + integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== + +neo-async@^2.5.0, neo-async@^2.6.1: + version "2.6.2" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" + integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== + +next-tick@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" + integrity sha1-yobR/ogoFpsBICCOPchCS524NCw= + +nice-try@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" + integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== + +no-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" + integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== + dependencies: + lower-case "^2.0.2" + tslib "^2.0.3" + +node-addon-api@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-2.0.2.tgz#432cfa82962ce494b132e9d72a15b29f71ff5d32" + integrity sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA== + +node-fetch@2.6.1: + version "2.6.1" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" + integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== + +node-fetch@^2.6.0, node-fetch@^2.6.1: + version "2.6.6" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.6.tgz#1751a7c01834e8e1697758732e9efb6eeadfaf89" + integrity sha512-Z8/6vRlTUChSdIgMa51jxQ4lrw/Jy5SOW10ObaA47/RElsAN2c5Pn8bTgFGWn/ibwzXTE8qwr1Yzx28vsecXEA== + dependencies: + whatwg-url "^5.0.0" + +node-forge@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.10.0.tgz#32dea2afb3e9926f02ee5ce8794902691a676bf3" + integrity sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA== + +node-gyp-build@^4.2.0, node-gyp-build@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.3.0.tgz#9f256b03e5826150be39c764bf51e993946d71a3" + integrity sha512-iWjXZvmboq0ja1pUGULQBexmxq8CV4xBhX7VDOTbL7ZR4FOowwY/VOtRxBN/yKxmdGoIp4j5ysNT4u3S2pDQ3Q== + +node-int64@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" + integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs= + +node-libs-browser@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425" + integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q== + dependencies: + assert "^1.1.1" + browserify-zlib "^0.2.0" + buffer "^4.3.0" + console-browserify "^1.1.0" + constants-browserify "^1.0.0" + crypto-browserify "^3.11.0" + domain-browser "^1.1.1" + events "^3.0.0" + https-browserify "^1.0.0" + os-browserify "^0.3.0" + path-browserify "0.0.1" + process "^0.11.10" + punycode "^1.2.4" + querystring-es3 "^0.2.0" + readable-stream "^2.3.3" + stream-browserify "^2.0.1" + stream-http "^2.7.2" + string_decoder "^1.0.0" + timers-browserify "^2.0.4" + tty-browserify "0.0.0" + url "^0.11.0" + util "^0.11.0" + vm-browserify "^1.0.1" + +node-notifier@^5.4.2: + version "5.4.5" + resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-5.4.5.tgz#0cbc1a2b0f658493b4025775a13ad938e96091ef" + integrity sha512-tVbHs7DyTLtzOiN78izLA85zRqB9NvEXkAf014Vx3jtSvn/xBl6bR8ZYifj+dFcFrKI21huSQgJZ6ZtL3B4HfQ== + dependencies: + growly "^1.3.0" + is-wsl "^1.1.0" + semver "^5.5.0" + shellwords "^0.1.1" + which "^1.3.0" + +node-releases@^1.1.52: + version "1.1.77" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.77.tgz#50b0cfede855dd374e7585bf228ff34e57c1c32e" + integrity sha512-rB1DUFUNAN4Gn9keO2K1efO35IDK7yKHCdCaIMvFO7yUYmmZYeDjnGKle26G4rwj+LKRQpjyUUvMkPglwGCYNQ== + +node-releases@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.1.tgz#3d1d395f204f1f2f29a54358b9fb678765ad2fc5" + integrity sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA== + +normalize-package-data@^2.3.2: + version "2.5.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" + integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== + dependencies: + hosted-git-info "^2.1.4" + resolve "^1.10.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + +normalize-path@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" + integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= + dependencies: + remove-trailing-separator "^1.0.1" + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +normalize-range@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" + integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= + +normalize-url@1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-1.9.1.tgz#2cc0d66b31ea23036458436e3620d85954c66c3c" + integrity sha1-LMDWazHqIwNkWENuNiDYWVTGbDw= + dependencies: + object-assign "^4.0.1" + prepend-http "^1.0.0" + query-string "^4.1.0" + sort-keys "^1.0.0" + +normalize-url@^3.0.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559" + integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg== + +normalize-url@^4.1.0: + version "4.5.1" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.1.tgz#0dd90cf1288ee1d1313b87081c9a5932ee48518a" + integrity sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA== + +notistack@^1.0.1: + version "1.0.10" + resolved "https://registry.yarnpkg.com/notistack/-/notistack-1.0.10.tgz#8db90830034383467a04184f1fa8ff77f4fc58a5" + integrity sha512-z0y4jJaVtOoH3kc3GtNUlhNTY+5LE04QDeLVujX3VPhhzg67zw055mZjrBF+nzpv3V9aiPNph1EgRU4+t8kQTQ== + dependencies: + clsx "^1.1.0" + hoist-non-react-statics "^3.3.0" + +npm-run-path@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" + integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= + dependencies: + path-key "^2.0.0" + +npm-run-path@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== + dependencies: + path-key "^3.0.0" + +nth-check@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" + integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== + dependencies: + boolbase "~1.0.0" + +nth-check@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.0.1.tgz#2efe162f5c3da06a28959fbd3db75dbeea9f0fc2" + integrity sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w== + dependencies: + boolbase "^1.0.0" + +num2fraction@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" + integrity sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4= + +number-to-bn@1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/number-to-bn/-/number-to-bn-1.7.0.tgz#bb3623592f7e5f9e0030b1977bd41a0c53fe1ea0" + integrity sha1-uzYjWS9+X54AMLGXe9QaDFP+HqA= + dependencies: + bn.js "4.11.6" + strip-hex-prefix "1.0.0" + +nwsapi@^2.0.7, nwsapi@^2.1.3: + version "2.2.0" + resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" + integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== + +oauth-sign@~0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" + integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== + +object-assign@^4, object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= + +object-copy@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" + integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= + dependencies: + copy-descriptor "^0.1.0" + define-property "^0.2.5" + kind-of "^3.0.3" + +object-hash@^2.0.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-2.2.0.tgz#5ad518581eefc443bd763472b8ff2e9c2c0d54a5" + integrity sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw== + +object-inspect@^1.11.0, object-inspect@^1.9.0: + version "1.12.0" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.0.tgz#6e2c120e868fd1fd18cb4f18c31741d0d6e776f0" + integrity sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g== + +object-is@^1.0.1: + version "1.1.5" + resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" + integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + +object-keys@^1.0.12, object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object-keys@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-0.4.0.tgz#28a6aae7428dd2c3a92f3d95f21335dd204e0336" + integrity sha1-KKaq50KN0sOpLz2V8hM13SBOAzY= + +object-path@0.11.4: + version "0.11.4" + resolved "https://registry.yarnpkg.com/object-path/-/object-path-0.11.4.tgz#370ae752fbf37de3ea70a861c23bba8915691949" + integrity sha1-NwrnUvvzfePqcKhhwju6iRVpGUk= + +object-visit@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" + integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= + dependencies: + isobject "^3.0.0" + +object.assign@^4.1.0, object.assign@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" + integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + has-symbols "^1.0.1" + object-keys "^1.1.1" + +object.entries@^1.1.0, object.entries@^1.1.1: + version "1.1.5" + resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.5.tgz#e1acdd17c4de2cd96d5a08487cfb9db84d881861" + integrity sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.1" + +object.fromentries@^2.0.2: + version "2.0.5" + resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.5.tgz#7b37b205109c21e741e605727fe8b0ad5fa08251" + integrity sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.1" + +object.getownpropertydescriptors@^2.0.3, object.getownpropertydescriptors@^2.1.0, object.getownpropertydescriptors@^2.1.1: + version "2.1.3" + resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.3.tgz#b223cf38e17fefb97a63c10c91df72ccb386df9e" + integrity sha512-VdDoCwvJI4QdC6ndjpqFmoL3/+HxffFBbcJzKi5hwLLqqx3mdbedRpfZDdK0SrOSauj8X4GzBvnDZl4vTN7dOw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.1" + +object.pick@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" + integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= + dependencies: + isobject "^3.0.1" + +object.values@^1.1.0, object.values@^1.1.1: + version "1.1.5" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.5.tgz#959f63e3ce9ef108720333082131e4a459b716ac" + integrity sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.1" + +oboe@2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/oboe/-/oboe-2.1.4.tgz#20c88cdb0c15371bb04119257d4fdd34b0aa49f6" + integrity sha1-IMiM2wwVNxuwQRklfU/dNLCqSfY= + dependencies: + http-https "^1.0.0" + +oboe@2.1.5: + version "2.1.5" + resolved "https://registry.yarnpkg.com/oboe/-/oboe-2.1.5.tgz#5554284c543a2266d7a38f17e073821fbde393cd" + integrity sha1-VVQoTFQ6ImbXo48X4HOCH73jk80= + dependencies: + http-https "^1.0.0" + +obuf@^1.0.0, obuf@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" + integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== + +on-finished@~2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" + integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= + dependencies: + ee-first "1.1.1" + +on-headers@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" + integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== + +once@^1.3.0, once@^1.3.1, once@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + dependencies: + wrappy "1" + +onetime@^5.1.0, onetime@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + dependencies: + mimic-fn "^2.1.0" + +open@^7.0.2, open@^7.3.1: + version "7.4.2" + resolved "https://registry.yarnpkg.com/open/-/open-7.4.2.tgz#b8147e26dcf3e426316c730089fd71edd29c2321" + integrity sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q== + dependencies: + is-docker "^2.0.0" + is-wsl "^2.1.1" + +opn@^5.5.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/opn/-/opn-5.5.0.tgz#fc7164fab56d235904c51c3b27da6758ca3b9bfc" + integrity sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA== + dependencies: + is-wsl "^1.1.0" + +optimize-css-assets-webpack-plugin@5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.3.tgz#e2f1d4d94ad8c0af8967ebd7cf138dcb1ef14572" + integrity sha512-q9fbvCRS6EYtUKKSwI87qm2IxlyJK5b4dygW1rKUBT6mMDhdG5e5bZT63v6tnJR9F9FB/H5a0HTmtw+laUBxKA== + dependencies: + cssnano "^4.1.10" + last-call-webpack-plugin "^3.0.0" + +optionator@^0.8.1, optionator@^0.8.3: + version "0.8.3" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" + integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== + dependencies: + deep-is "~0.1.3" + fast-levenshtein "~2.0.6" + levn "~0.3.0" + prelude-ls "~1.1.2" + type-check "~0.3.2" + word-wrap "~1.2.3" + +original@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/original/-/original-1.0.2.tgz#e442a61cffe1c5fd20a65f3261c26663b303f25f" + integrity sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg== + dependencies: + url-parse "^1.4.3" + +os-browserify@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" + integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= + +os-tmpdir@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= + +p-cancelable@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-0.3.0.tgz#b9e123800bcebb7ac13a479be195b507b98d30fa" + integrity sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw== + +p-cancelable@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc" + integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw== + +p-each-series@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-1.0.0.tgz#930f3d12dd1f50e7434457a22cd6f04ac6ad7f71" + integrity sha1-kw89Et0fUOdDRFeiLNbwSsatf3E= + dependencies: + p-reduce "^1.0.0" + +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= + +p-limit@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" + integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== + dependencies: + p-try "^1.0.0" + +p-limit@^2.0.0, p-limit@^2.2.0, p-limit@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-locate@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= + dependencies: + p-limit "^1.1.0" + +p-locate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" + integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== + dependencies: + p-limit "^2.0.0" + +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + +p-map@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" + integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== + +p-map@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-3.0.0.tgz#d704d9af8a2ba684e2600d9a215983d4141a979d" + integrity sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ== + dependencies: + aggregate-error "^3.0.0" + +p-map@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" + integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== + dependencies: + aggregate-error "^3.0.0" + +p-reduce@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-reduce/-/p-reduce-1.0.0.tgz#18c2b0dd936a4690a529f8231f58a0fdb6a47dfa" + integrity sha1-GMKw3ZNqRpClKfgjH1ig/bakffo= + +p-retry@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-3.0.1.tgz#316b4c8893e2c8dc1cfa891f406c4b422bebf328" + integrity sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w== + dependencies: + retry "^0.12.0" + +p-timeout@^1.1.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-1.2.1.tgz#5eb3b353b7fce99f101a1038880bb054ebbea386" + integrity sha1-XrOzU7f86Z8QGhA4iAuwVOu+o4Y= + dependencies: + p-finally "^1.0.0" + +p-try@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" + integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +pako@~1.0.5: + version "1.0.11" + resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" + integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== + +parallel-transform@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.2.0.tgz#9049ca37d6cb2182c3b1d2c720be94d14a5814fc" + integrity sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg== + dependencies: + cyclist "^1.0.1" + inherits "^2.0.3" + readable-stream "^2.1.5" + +param-case@^3.0.3: + version "3.0.4" + resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5" + integrity sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A== + dependencies: + dot-case "^3.0.4" + tslib "^2.0.3" + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +parse-asn1@^5.0.0, parse-asn1@^5.1.5: + version "5.1.6" + resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.6.tgz#385080a3ec13cb62a62d39409cb3e88844cdaed4" + integrity sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw== + dependencies: + asn1.js "^5.2.0" + browserify-aes "^1.0.0" + evp_bytestokey "^1.0.0" + pbkdf2 "^3.0.3" + safe-buffer "^5.1.1" + +parse-headers@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/parse-headers/-/parse-headers-2.0.4.tgz#9eaf2d02bed2d1eff494331ce3df36d7924760bf" + integrity sha512-psZ9iZoCNFLrgRjZ1d8mn0h9WRqJwFxM9q3x7iUjN/YT2OksthDJ5TiPCu2F38kS4zutqfW+YdVVkBZZx3/1aw== + +parse-json@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" + integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck= + dependencies: + error-ex "^1.2.0" + +parse-json@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" + integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= + dependencies: + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" + +parse-json@^5.0.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" + integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== + dependencies: + "@babel/code-frame" "^7.0.0" + error-ex "^1.3.1" + json-parse-even-better-errors "^2.3.0" + lines-and-columns "^1.1.6" + +parse5@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-4.0.0.tgz#6d78656e3da8d78b4ec0b906f7c08ef1dfe3f608" + integrity sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA== + +parse5@5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.0.tgz#c59341c9723f414c452975564c7c00a68d58acd2" + integrity sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ== + +parseurl@~1.3.2, parseurl@~1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== + +pascal-case@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.2.tgz#b48e0ef2b98e205e7c1dae747d0b1508237660eb" + integrity sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + +pascalcase@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" + integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= + +path-browserify@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" + integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== + +path-dirname@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" + integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= + +path-exists@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" + integrity sha1-D+tsZPD8UY2adU3V77YscCJ2H0s= + dependencies: + pinkie-promise "^2.0.0" + +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + +path-is-inside@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" + integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= + +path-key@^2.0.0, path-key@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= + +path-key@^3.0.0, path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-parse@^1.0.6, path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +path-to-regexp@0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" + integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= + +path-to-regexp@^1.7.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.8.0.tgz#887b3ba9d84393e87a0a0b9f4cb756198b53548a" + integrity sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA== + dependencies: + isarray "0.0.1" + +path-type@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" + integrity sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM= + dependencies: + pify "^2.0.0" + +path-type@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" + integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== + dependencies: + pify "^3.0.0" + +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +pbkdf2@^3.0.17, pbkdf2@^3.0.3, pbkdf2@^3.0.9: + version "3.1.2" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" + integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== + dependencies: + create-hash "^1.1.2" + create-hmac "^1.1.4" + ripemd160 "^2.0.1" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +performance-now@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" + integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= + +picocolors@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-0.2.1.tgz#570670f793646851d1ba135996962abad587859f" + integrity sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA== + +picocolors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" + integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== + +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +pify@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= + +pify@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" + integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= + +pify@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" + integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== + +pify@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-5.0.0.tgz#1f5eca3f5e87ebec28cc6d54a0e4aaf00acc127f" + integrity sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA== + +pinkie-promise@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" + integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o= + dependencies: + pinkie "^2.0.0" + +pinkie@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" + integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= + +pirates@^4.0.1: + version "4.0.4" + resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.4.tgz#07df81e61028e402735cdd49db701e4885b4e6e6" + integrity sha512-ZIrVPH+A52Dw84R0L3/VS9Op04PuQ2SEoJL6bkshmiTic/HldyW9Tf7oH5mhJZBK7NmDx27vSMrYEXPXclpDKw== + +pkg-dir@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-1.0.0.tgz#7a4b508a8d5bb2d629d447056ff4e9c9314cf3d4" + integrity sha1-ektQio1bstYp1EcFb/TpyTFM89Q= + dependencies: + find-up "^1.0.0" + +pkg-dir@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" + integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== + dependencies: + find-up "^3.0.0" + +pkg-dir@^4.1.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== + dependencies: + find-up "^4.0.0" + +pkg-up@3.1.0, pkg-up@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-3.1.0.tgz#100ec235cc150e4fd42519412596a28512a0def5" + integrity sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA== + dependencies: + find-up "^3.0.0" + +please-upgrade-node@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz#aeddd3f994c933e4ad98b99d9a556efa0e2fe942" + integrity sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg== + dependencies: + semver-compare "^1.0.0" + +pn@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb" + integrity sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA== + +pngjs@^3.3.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-3.4.0.tgz#99ca7d725965fb655814eaf65f38f12bbdbf555f" + integrity sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w== + +pngjs@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-5.0.0.tgz#e79dd2b215767fd9c04561c01236df960bce7fbb" + integrity sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw== + +pnp-webpack-plugin@1.6.4: + version "1.6.4" + resolved "https://registry.yarnpkg.com/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz#c9711ac4dc48a685dabafc86f8b6dd9f8df84149" + integrity sha512-7Wjy+9E3WwLOEL30D+m8TSTF7qJJUJLONBnwQp0518siuMxUQUbgZwssaFX+QKlZkjHZcw/IpZCt/H0srrntSg== + dependencies: + ts-pnp "^1.1.6" + +popper.js@1.16.1-lts: + version "1.16.1-lts" + resolved "https://registry.yarnpkg.com/popper.js/-/popper.js-1.16.1-lts.tgz#cf6847b807da3799d80ee3d6d2f90df8a3f50b05" + integrity sha512-Kjw8nKRl1m+VrSFCoVGPph93W/qrSO7ZkqPpTf7F4bk/sqcfWK019dWBUpE/fBOsOQY1dks/Bmcbfn1heM/IsA== + +portfinder@^1.0.26: + version "1.0.28" + resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.28.tgz#67c4622852bd5374dd1dd900f779f53462fac778" + integrity sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA== + dependencies: + async "^2.6.2" + debug "^3.1.1" + mkdirp "^0.5.5" + +posix-character-classes@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" + integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= + +postcss-attribute-case-insensitive@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-4.0.2.tgz#d93e46b504589e94ac7277b0463226c68041a880" + integrity sha512-clkFxk/9pcdb4Vkn0hAHq3YnxBQ2p0CGD1dy24jN+reBck+EWxMbxSUqN4Yj7t0w8csl87K6p0gxBe1utkJsYA== + dependencies: + postcss "^7.0.2" + postcss-selector-parser "^6.0.2" + +postcss-browser-comments@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-browser-comments/-/postcss-browser-comments-3.0.0.tgz#1248d2d935fb72053c8e1f61a84a57292d9f65e9" + integrity sha512-qfVjLfq7HFd2e0HW4s1dvU8X080OZdG46fFbIBFjW7US7YPDcWfRvdElvwMJr2LI6hMmD+7LnH2HcmXTs+uOig== + dependencies: + postcss "^7" + +postcss-calc@^7.0.1: + version "7.0.5" + resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-7.0.5.tgz#f8a6e99f12e619c2ebc23cf6c486fdc15860933e" + integrity sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg== + dependencies: + postcss "^7.0.27" + postcss-selector-parser "^6.0.2" + postcss-value-parser "^4.0.2" + +postcss-color-functional-notation@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/postcss-color-functional-notation/-/postcss-color-functional-notation-2.0.1.tgz#5efd37a88fbabeb00a2966d1e53d98ced93f74e0" + integrity sha512-ZBARCypjEDofW4P6IdPVTLhDNXPRn8T2s1zHbZidW6rPaaZvcnCS2soYFIQJrMZSxiePJ2XIYTlcb2ztr/eT2g== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-color-gray@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/postcss-color-gray/-/postcss-color-gray-5.0.0.tgz#532a31eb909f8da898ceffe296fdc1f864be8547" + integrity sha512-q6BuRnAGKM/ZRpfDascZlIZPjvwsRye7UDNalqVz3s7GDxMtqPY6+Q871liNxsonUw8oC61OG+PSaysYpl1bnw== + dependencies: + "@csstools/convert-colors" "^1.4.0" + postcss "^7.0.5" + postcss-values-parser "^2.0.0" + +postcss-color-hex-alpha@^5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/postcss-color-hex-alpha/-/postcss-color-hex-alpha-5.0.3.tgz#a8d9ca4c39d497c9661e374b9c51899ef0f87388" + integrity sha512-PF4GDel8q3kkreVXKLAGNpHKilXsZ6xuu+mOQMHWHLPNyjiUBOr75sp5ZKJfmv1MCus5/DWUGcK9hm6qHEnXYw== + dependencies: + postcss "^7.0.14" + postcss-values-parser "^2.0.1" + +postcss-color-mod-function@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/postcss-color-mod-function/-/postcss-color-mod-function-3.0.3.tgz#816ba145ac11cc3cb6baa905a75a49f903e4d31d" + integrity sha512-YP4VG+xufxaVtzV6ZmhEtc+/aTXH3d0JLpnYfxqTvwZPbJhWqp8bSY3nfNzNRFLgB4XSaBA82OE4VjOOKpCdVQ== + dependencies: + "@csstools/convert-colors" "^1.4.0" + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-color-rebeccapurple@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-4.0.1.tgz#c7a89be872bb74e45b1e3022bfe5748823e6de77" + integrity sha512-aAe3OhkS6qJXBbqzvZth2Au4V3KieR5sRQ4ptb2b2O8wgvB3SJBsdG+jsn2BZbbwekDG8nTfcCNKcSfe/lEy8g== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-colormin@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-4.0.3.tgz#ae060bce93ed794ac71264f08132d550956bd381" + integrity sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw== + dependencies: + browserslist "^4.0.0" + color "^3.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-convert-values@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz#ca3813ed4da0f812f9d43703584e449ebe189a7f" + integrity sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ== + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-custom-media@^7.0.8: + version "7.0.8" + resolved "https://registry.yarnpkg.com/postcss-custom-media/-/postcss-custom-media-7.0.8.tgz#fffd13ffeffad73621be5f387076a28b00294e0c" + integrity sha512-c9s5iX0Ge15o00HKbuRuTqNndsJUbaXdiNsksnVH8H4gdc+zbLzr/UasOwNG6CTDpLFekVY4672eWdiiWu2GUg== + dependencies: + postcss "^7.0.14" + +postcss-custom-properties@^8.0.11: + version "8.0.11" + resolved "https://registry.yarnpkg.com/postcss-custom-properties/-/postcss-custom-properties-8.0.11.tgz#2d61772d6e92f22f5e0d52602df8fae46fa30d97" + integrity sha512-nm+o0eLdYqdnJ5abAJeXp4CEU1c1k+eB2yMCvhgzsds/e0umabFrN6HoTy/8Q4K5ilxERdl/JD1LO5ANoYBeMA== + dependencies: + postcss "^7.0.17" + postcss-values-parser "^2.0.1" + +postcss-custom-selectors@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/postcss-custom-selectors/-/postcss-custom-selectors-5.1.2.tgz#64858c6eb2ecff2fb41d0b28c9dd7b3db4de7fba" + integrity sha512-DSGDhqinCqXqlS4R7KGxL1OSycd1lydugJ1ky4iRXPHdBRiozyMHrdu0H3o7qNOCiZwySZTUI5MV0T8QhCLu+w== + dependencies: + postcss "^7.0.2" + postcss-selector-parser "^5.0.0-rc.3" + +postcss-dir-pseudo-class@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-5.0.0.tgz#6e3a4177d0edb3abcc85fdb6fbb1c26dabaeaba2" + integrity sha512-3pm4oq8HYWMZePJY+5ANriPs3P07q+LW6FAdTlkFH2XqDdP4HeeJYMOzn0HYLhRSjBO3fhiqSwwU9xEULSrPgw== + dependencies: + postcss "^7.0.2" + postcss-selector-parser "^5.0.0-rc.3" + +postcss-discard-comments@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz#1fbabd2c246bff6aaad7997b2b0918f4d7af4033" + integrity sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg== + dependencies: + postcss "^7.0.0" + +postcss-discard-duplicates@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz#3fe133cd3c82282e550fc9b239176a9207b784eb" + integrity sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ== + dependencies: + postcss "^7.0.0" + +postcss-discard-empty@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz#c8c951e9f73ed9428019458444a02ad90bb9f765" + integrity sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w== + dependencies: + postcss "^7.0.0" + +postcss-discard-overridden@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz#652aef8a96726f029f5e3e00146ee7a4e755ff57" + integrity sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg== + dependencies: + postcss "^7.0.0" + +postcss-double-position-gradients@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/postcss-double-position-gradients/-/postcss-double-position-gradients-1.0.0.tgz#fc927d52fddc896cb3a2812ebc5df147e110522e" + integrity sha512-G+nV8EnQq25fOI8CH/B6krEohGWnF5+3A6H/+JEpOncu5dCnkS1QQ6+ct3Jkaepw1NGVqqOZH6lqrm244mCftA== + dependencies: + postcss "^7.0.5" + postcss-values-parser "^2.0.0" + +postcss-env-function@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/postcss-env-function/-/postcss-env-function-2.0.2.tgz#0f3e3d3c57f094a92c2baf4b6241f0b0da5365d7" + integrity sha512-rwac4BuZlITeUbiBq60h/xbLzXY43qOsIErngWa4l7Mt+RaSkT7QBjXVGTcBHupykkblHMDrBFh30zchYPaOUw== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-flexbugs-fixes@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-4.1.0.tgz#e094a9df1783e2200b7b19f875dcad3b3aff8b20" + integrity sha512-jr1LHxQvStNNAHlgco6PzY308zvLklh7SJVYuWUwyUQncofaAlD2l+P/gxKHOdqWKe7xJSkVLFF/2Tp+JqMSZA== + dependencies: + postcss "^7.0.0" + +postcss-focus-visible@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-focus-visible/-/postcss-focus-visible-4.0.0.tgz#477d107113ade6024b14128317ade2bd1e17046e" + integrity sha512-Z5CkWBw0+idJHSV6+Bgf2peDOFf/x4o+vX/pwcNYrWpXFrSfTkQ3JQ1ojrq9yS+upnAlNRHeg8uEwFTgorjI8g== + dependencies: + postcss "^7.0.2" + +postcss-focus-within@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-focus-within/-/postcss-focus-within-3.0.0.tgz#763b8788596cee9b874c999201cdde80659ef680" + integrity sha512-W0APui8jQeBKbCGZudW37EeMCjDeVxKgiYfIIEo8Bdh5SpB9sxds/Iq8SEuzS0Q4YFOlG7EPFulbbxujpkrV2w== + dependencies: + postcss "^7.0.2" + +postcss-font-variant@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-font-variant/-/postcss-font-variant-4.0.1.tgz#42d4c0ab30894f60f98b17561eb5c0321f502641" + integrity sha512-I3ADQSTNtLTTd8uxZhtSOrTCQ9G4qUVKPjHiDk0bV75QSxXjVWiJVJ2VLdspGUi9fbW9BcjKJoRvxAH1pckqmA== + dependencies: + postcss "^7.0.2" + +postcss-gap-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-gap-properties/-/postcss-gap-properties-2.0.0.tgz#431c192ab3ed96a3c3d09f2ff615960f902c1715" + integrity sha512-QZSqDaMgXCHuHTEzMsS2KfVDOq7ZFiknSpkrPJY6jmxbugUPTuSzs/vuE5I3zv0WAS+3vhrlqhijiprnuQfzmg== + dependencies: + postcss "^7.0.2" + +postcss-image-set-function@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/postcss-image-set-function/-/postcss-image-set-function-3.0.1.tgz#28920a2f29945bed4c3198d7df6496d410d3f288" + integrity sha512-oPTcFFip5LZy8Y/whto91L9xdRHCWEMs3e1MdJxhgt4jy2WYXfhkng59fH5qLXSCPN8k4n94p1Czrfe5IOkKUw== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-initial@^3.0.0: + version "3.0.4" + resolved "https://registry.yarnpkg.com/postcss-initial/-/postcss-initial-3.0.4.tgz#9d32069a10531fe2ecafa0b6ac750ee0bc7efc53" + integrity sha512-3RLn6DIpMsK1l5UUy9jxQvoDeUN4gP939tDcKUHD/kM8SGSKbFAnvkpFpj3Bhtz3HGk1jWY5ZNWX6mPta5M9fg== + dependencies: + postcss "^7.0.2" + +postcss-lab-function@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/postcss-lab-function/-/postcss-lab-function-2.0.1.tgz#bb51a6856cd12289ab4ae20db1e3821ef13d7d2e" + integrity sha512-whLy1IeZKY+3fYdqQFuDBf8Auw+qFuVnChWjmxm/UhHWqNHZx+B99EwxTvGYmUBqe3Fjxs4L1BoZTJmPu6usVg== + dependencies: + "@csstools/convert-colors" "^1.4.0" + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-load-config@^2.0.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-2.1.2.tgz#c5ea504f2c4aef33c7359a34de3573772ad7502a" + integrity sha512-/rDeGV6vMUo3mwJZmeHfEDvwnTKKqQ0S7OHUi/kJvvtx3aWtyWG2/0ZWnzCt2keEclwN6Tf0DST2v9kITdOKYw== + dependencies: + cosmiconfig "^5.0.0" + import-cwd "^2.0.0" + +postcss-loader@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-3.0.0.tgz#6b97943e47c72d845fa9e03f273773d4e8dd6c2d" + integrity sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA== + dependencies: + loader-utils "^1.1.0" + postcss "^7.0.0" + postcss-load-config "^2.0.0" + schema-utils "^1.0.0" + +postcss-logical@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-logical/-/postcss-logical-3.0.0.tgz#2495d0f8b82e9f262725f75f9401b34e7b45d5b5" + integrity sha512-1SUKdJc2vuMOmeItqGuNaC+N8MzBWFWEkAnRnLpFYj1tGGa7NqyVBujfRtgNa2gXR+6RkGUiB2O5Vmh7E2RmiA== + dependencies: + postcss "^7.0.2" + +postcss-media-minmax@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-media-minmax/-/postcss-media-minmax-4.0.0.tgz#b75bb6cbc217c8ac49433e12f22048814a4f5ed5" + integrity sha512-fo9moya6qyxsjbFAYl97qKO9gyre3qvbMnkOZeZwlsW6XYFsvs2DMGDlchVLfAd8LHPZDxivu/+qW2SMQeTHBw== + dependencies: + postcss "^7.0.2" + +postcss-merge-longhand@^4.0.11: + version "4.0.11" + resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz#62f49a13e4a0ee04e7b98f42bb16062ca2549e24" + integrity sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw== + dependencies: + css-color-names "0.0.4" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + stylehacks "^4.0.0" + +postcss-merge-rules@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz#362bea4ff5a1f98e4075a713c6cb25aefef9a650" + integrity sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ== + dependencies: + browserslist "^4.0.0" + caniuse-api "^3.0.0" + cssnano-util-same-parent "^4.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" + vendors "^1.0.0" + +postcss-minify-font-values@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz#cd4c344cce474343fac5d82206ab2cbcb8afd5a6" + integrity sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg== + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-minify-gradients@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz#93b29c2ff5099c535eecda56c4aa6e665a663471" + integrity sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q== + dependencies: + cssnano-util-get-arguments "^4.0.0" + is-color-stop "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-minify-params@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz#6b9cef030c11e35261f95f618c90036d680db874" + integrity sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg== + dependencies: + alphanum-sort "^1.0.0" + browserslist "^4.0.0" + cssnano-util-get-arguments "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + uniqs "^2.0.0" + +postcss-minify-selectors@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz#e2e5eb40bfee500d0cd9243500f5f8ea4262fbd8" + integrity sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g== + dependencies: + alphanum-sort "^1.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" + +postcss-modules-extract-imports@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz#818719a1ae1da325f9832446b01136eeb493cd7e" + integrity sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ== + dependencies: + postcss "^7.0.5" + +postcss-modules-local-by-default@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.3.tgz#bb14e0cc78279d504dbdcbfd7e0ca28993ffbbb0" + integrity sha512-e3xDq+LotiGesympRlKNgaJ0PCzoUIdpH0dj47iWAui/kyTgh3CiAr1qP54uodmJhl6p9rN6BoNcdEDVJx9RDw== + dependencies: + icss-utils "^4.1.1" + postcss "^7.0.32" + postcss-selector-parser "^6.0.2" + postcss-value-parser "^4.1.0" + +postcss-modules-scope@^2.1.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz#385cae013cc7743f5a7d7602d1073a89eaae62ee" + integrity sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ== + dependencies: + postcss "^7.0.6" + postcss-selector-parser "^6.0.0" + +postcss-modules-values@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz#5b5000d6ebae29b4255301b4a3a54574423e7f10" + integrity sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg== + dependencies: + icss-utils "^4.0.0" + postcss "^7.0.6" + +postcss-nesting@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/postcss-nesting/-/postcss-nesting-7.0.1.tgz#b50ad7b7f0173e5b5e3880c3501344703e04c052" + integrity sha512-FrorPb0H3nuVq0Sff7W2rnc3SmIcruVC6YwpcS+k687VxyxO33iE1amna7wHuRVzM8vfiYofXSBHNAZ3QhLvYg== + dependencies: + postcss "^7.0.2" + +postcss-normalize-charset@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz#8b35add3aee83a136b0471e0d59be58a50285dd4" + integrity sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g== + dependencies: + postcss "^7.0.0" + +postcss-normalize-display-values@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz#0dbe04a4ce9063d4667ed2be476bb830c825935a" + integrity sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ== + dependencies: + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-positions@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz#05f757f84f260437378368a91f8932d4b102917f" + integrity sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA== + dependencies: + cssnano-util-get-arguments "^4.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-repeat-style@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz#c4ebbc289f3991a028d44751cbdd11918b17910c" + integrity sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q== + dependencies: + cssnano-util-get-arguments "^4.0.0" + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-string@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz#cd44c40ab07a0c7a36dc5e99aace1eca4ec2690c" + integrity sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA== + dependencies: + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-timing-functions@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz#8e009ca2a3949cdaf8ad23e6b6ab99cb5e7d28d9" + integrity sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A== + dependencies: + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-unicode@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz#841bd48fdcf3019ad4baa7493a3d363b52ae1cfb" + integrity sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg== + dependencies: + browserslist "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-url@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz#10e437f86bc7c7e58f7b9652ed878daaa95faae1" + integrity sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA== + dependencies: + is-absolute-url "^2.0.0" + normalize-url "^3.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-whitespace@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz#bf1d4070fe4fcea87d1348e825d8cc0c5faa7d82" + integrity sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA== + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize@8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize/-/postcss-normalize-8.0.1.tgz#90e80a7763d7fdf2da6f2f0f82be832ce4f66776" + integrity sha512-rt9JMS/m9FHIRroDDBGSMsyW1c0fkvOJPy62ggxSHUldJO7B195TqFMqIf+lY5ezpDcYOV4j86aUp3/XbxzCCQ== + dependencies: + "@csstools/normalize.css" "^10.1.0" + browserslist "^4.6.2" + postcss "^7.0.17" + postcss-browser-comments "^3.0.0" + sanitize.css "^10.0.0" + +postcss-ordered-values@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz#0cf75c820ec7d5c4d280189559e0b571ebac0eee" + integrity sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw== + dependencies: + cssnano-util-get-arguments "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-overflow-shorthand@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-overflow-shorthand/-/postcss-overflow-shorthand-2.0.0.tgz#31ecf350e9c6f6ddc250a78f0c3e111f32dd4c30" + integrity sha512-aK0fHc9CBNx8jbzMYhshZcEv8LtYnBIRYQD5i7w/K/wS9c2+0NSR6B3OVMu5y0hBHYLcMGjfU+dmWYNKH0I85g== + dependencies: + postcss "^7.0.2" + +postcss-page-break@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-page-break/-/postcss-page-break-2.0.0.tgz#add52d0e0a528cabe6afee8b46e2abb277df46bf" + integrity sha512-tkpTSrLpfLfD9HvgOlJuigLuk39wVTbbd8RKcy8/ugV2bNBUW3xU+AIqyxhDrQr1VUj1RmyJrBn1YWrqUm9zAQ== + dependencies: + postcss "^7.0.2" + +postcss-place@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-place/-/postcss-place-4.0.1.tgz#e9f39d33d2dc584e46ee1db45adb77ca9d1dcc62" + integrity sha512-Zb6byCSLkgRKLODj/5mQugyuj9bvAAw9LqJJjgwz5cYryGeXfFZfSXoP1UfveccFmeq0b/2xxwcTEVScnqGxBg== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-preset-env@6.7.0: + version "6.7.0" + resolved "https://registry.yarnpkg.com/postcss-preset-env/-/postcss-preset-env-6.7.0.tgz#c34ddacf8f902383b35ad1e030f178f4cdf118a5" + integrity sha512-eU4/K5xzSFwUFJ8hTdTQzo2RBLbDVt83QZrAvI07TULOkmyQlnYlpwep+2yIK+K+0KlZO4BvFcleOCCcUtwchg== + dependencies: + autoprefixer "^9.6.1" + browserslist "^4.6.4" + caniuse-lite "^1.0.30000981" + css-blank-pseudo "^0.1.4" + css-has-pseudo "^0.10.0" + css-prefers-color-scheme "^3.1.1" + cssdb "^4.4.0" + postcss "^7.0.17" + postcss-attribute-case-insensitive "^4.0.1" + postcss-color-functional-notation "^2.0.1" + postcss-color-gray "^5.0.0" + postcss-color-hex-alpha "^5.0.3" + postcss-color-mod-function "^3.0.3" + postcss-color-rebeccapurple "^4.0.1" + postcss-custom-media "^7.0.8" + postcss-custom-properties "^8.0.11" + postcss-custom-selectors "^5.1.2" + postcss-dir-pseudo-class "^5.0.0" + postcss-double-position-gradients "^1.0.0" + postcss-env-function "^2.0.2" + postcss-focus-visible "^4.0.0" + postcss-focus-within "^3.0.0" + postcss-font-variant "^4.0.0" + postcss-gap-properties "^2.0.0" + postcss-image-set-function "^3.0.1" + postcss-initial "^3.0.0" + postcss-lab-function "^2.0.1" + postcss-logical "^3.0.0" + postcss-media-minmax "^4.0.0" + postcss-nesting "^7.0.0" + postcss-overflow-shorthand "^2.0.0" + postcss-page-break "^2.0.0" + postcss-place "^4.0.1" + postcss-pseudo-class-any-link "^6.0.0" + postcss-replace-overflow-wrap "^3.0.0" + postcss-selector-matches "^4.0.0" + postcss-selector-not "^4.0.0" + +postcss-pseudo-class-any-link@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-6.0.0.tgz#2ed3eed393b3702879dec4a87032b210daeb04d1" + integrity sha512-lgXW9sYJdLqtmw23otOzrtbDXofUdfYzNm4PIpNE322/swES3VU9XlXHeJS46zT2onFO7V1QFdD4Q9LiZj8mew== + dependencies: + postcss "^7.0.2" + postcss-selector-parser "^5.0.0-rc.3" + +postcss-reduce-initial@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz#7fd42ebea5e9c814609639e2c2e84ae270ba48df" + integrity sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA== + dependencies: + browserslist "^4.0.0" + caniuse-api "^3.0.0" + has "^1.0.0" + postcss "^7.0.0" + +postcss-reduce-transforms@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz#17efa405eacc6e07be3414a5ca2d1074681d4e29" + integrity sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg== + dependencies: + cssnano-util-get-match "^4.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-replace-overflow-wrap@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-3.0.0.tgz#61b360ffdaedca84c7c918d2b0f0d0ea559ab01c" + integrity sha512-2T5hcEHArDT6X9+9dVSPQdo7QHzG4XKclFT8rU5TzJPDN7RIRTbO9c4drUISOVemLj03aezStHCR2AIcr8XLpw== + dependencies: + postcss "^7.0.2" + +postcss-safe-parser@4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-safe-parser/-/postcss-safe-parser-4.0.1.tgz#8756d9e4c36fdce2c72b091bbc8ca176ab1fcdea" + integrity sha512-xZsFA3uX8MO3yAda03QrG3/Eg1LN3EPfjjf07vke/46HERLZyHrTsQ9E1r1w1W//fWEhtYNndo2hQplN2cVpCQ== + dependencies: + postcss "^7.0.0" + +postcss-selector-matches@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-selector-matches/-/postcss-selector-matches-4.0.0.tgz#71c8248f917ba2cc93037c9637ee09c64436fcff" + integrity sha512-LgsHwQR/EsRYSqlwdGzeaPKVT0Ml7LAT6E75T8W8xLJY62CE4S/l03BWIt3jT8Taq22kXP08s2SfTSzaraoPww== + dependencies: + balanced-match "^1.0.0" + postcss "^7.0.2" + +postcss-selector-not@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-selector-not/-/postcss-selector-not-4.0.1.tgz#263016eef1cf219e0ade9a913780fc1f48204cbf" + integrity sha512-YolvBgInEK5/79C+bdFMyzqTg6pkYqDbzZIST/PDMqa/o3qtXenD05apBG2jLgT0/BQ77d4U2UK12jWpilqMAQ== + dependencies: + balanced-match "^1.0.0" + postcss "^7.0.2" + +postcss-selector-parser@^3.0.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz#b310f5c4c0fdaf76f94902bbaa30db6aa84f5270" + integrity sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA== + dependencies: + dot-prop "^5.2.0" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss-selector-parser@^5.0.0-rc.3, postcss-selector-parser@^5.0.0-rc.4: + version "5.0.0" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz#249044356697b33b64f1a8f7c80922dddee7195c" + integrity sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ== + dependencies: + cssesc "^2.0.0" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2: + version "6.0.8" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.8.tgz#f023ed7a9ea736cd7ef70342996e8e78645a7914" + integrity sha512-D5PG53d209Z1Uhcc0qAZ5U3t5HagH3cxu+WLZ22jt3gLUpXM4eXXfiO14jiDWST3NNooX/E8wISfOhZ9eIjGTQ== + dependencies: + cssesc "^3.0.0" + util-deprecate "^1.0.2" + +postcss-svgo@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-4.0.3.tgz#343a2cdbac9505d416243d496f724f38894c941e" + integrity sha512-NoRbrcMWTtUghzuKSoIm6XV+sJdvZ7GZSc3wdBN0W19FTtp2ko8NqLsgoh/m9CzNhU3KLPvQmjIwtaNFkaFTvw== + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + svgo "^1.0.0" + +postcss-unique-selectors@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz#9446911f3289bfd64c6d680f073c03b1f9ee4bac" + integrity sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg== + dependencies: + alphanum-sort "^1.0.0" + postcss "^7.0.0" + uniqs "^2.0.0" + +postcss-value-parser@^3.0.0: + version "3.3.1" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" + integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== + +postcss-value-parser@^4.0.2, postcss-value-parser@^4.1.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" + integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== + +postcss-values-parser@^2.0.0, postcss-values-parser@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/postcss-values-parser/-/postcss-values-parser-2.0.1.tgz#da8b472d901da1e205b47bdc98637b9e9e550e5f" + integrity sha512-2tLuBsA6P4rYTNKCXYG/71C7j1pU6pK503suYOmn4xYrQIzW+opD+7FAFNuGSdZC/3Qfy334QbeMu7MEb8gOxg== + dependencies: + flatten "^1.0.2" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss@7.0.21: + version "7.0.21" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.21.tgz#06bb07824c19c2021c5d056d5b10c35b989f7e17" + integrity sha512-uIFtJElxJo29QC753JzhidoAhvp/e/Exezkdhfmt8AymWT6/5B7W1WmponYWkHk2eg6sONyTch0A3nkMPun3SQ== + dependencies: + chalk "^2.4.2" + source-map "^0.6.1" + supports-color "^6.1.0" + +postcss@^7, postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.17, postcss@^7.0.2, postcss@^7.0.23, postcss@^7.0.27, postcss@^7.0.32, postcss@^7.0.5, postcss@^7.0.6: + version "7.0.39" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.39.tgz#9624375d965630e2e1f2c02a935c82a59cb48309" + integrity sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA== + dependencies: + picocolors "^0.2.1" + source-map "^0.6.1" + +preact@10.4.1: + version "10.4.1" + resolved "https://registry.yarnpkg.com/preact/-/preact-10.4.1.tgz#9b3ba020547673a231c6cf16f0fbaef0e8863431" + integrity sha512-WKrRpCSwL2t3tpOOGhf2WfTpcmbpxaWtDbdJdKdjd0aEiTkvOmS4NBkG6kzlaAHI9AkQ3iVqbFWM3Ei7mZ4o1Q== + +preact@^10.5.9: + version "10.6.4" + resolved "https://registry.yarnpkg.com/preact/-/preact-10.6.4.tgz#ad12c409ff1b4316158486e0a7b8d43636f7ced8" + integrity sha512-WyosM7pxGcndU8hY0OQlLd54tOU+qmG45QXj2dAYrL11HoyU/EzOSTlpJsirbBr1QW7lICxSsVJJmcmUglovHQ== + +precond@0.2: + version "0.2.3" + resolved "https://registry.yarnpkg.com/precond/-/precond-0.2.3.tgz#aa9591bcaa24923f1e0f4849d240f47efc1075ac" + integrity sha1-qpWRvKokkj8eD0hJ0kD0fvwQdaw= + +prelude-ls@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" + integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= + +prepend-http@^1.0.0, prepend-http@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" + integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= + +prepend-http@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" + integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc= + +prettier@^2.3.0: + version "2.5.1" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.5.1.tgz#fff75fa9d519c54cf0fce328c1017d94546bc56a" + integrity sha512-vBZcPRUR5MZJwoyi3ZoyQlc1rXeEck8KgeC9AwwOn+exuxLxq5toTRDTSaVrXHxelDMHy9zlicw8u66yxoSUFg== + +pretty-bytes@^5.1.0: + version "5.6.0" + resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb" + integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg== + +pretty-error@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.2.tgz#be89f82d81b1c86ec8fdfbc385045882727f93b6" + integrity sha512-EY5oDzmsX5wvuynAByrmY0P0hcp+QpnAKbJng2A2MPjVKXCxrDSUkzghVJ4ZGPIv+JC4gX8fPUWscC0RtjsWGw== + dependencies: + lodash "^4.17.20" + renderkid "^2.0.4" + +pretty-format@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-24.9.0.tgz#12fac31b37019a4eea3c11aa9a959eb7628aa7c9" + integrity sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA== + dependencies: + "@jest/types" "^24.9.0" + ansi-regex "^4.0.0" + ansi-styles "^3.2.0" + react-is "^16.8.4" + +printj@~1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/printj/-/printj-1.1.2.tgz#d90deb2975a8b9f600fb3a1c94e3f4c53c78a222" + integrity sha512-zA2SmoLaxZyArQTOPj5LXecR+RagfPSU5Kw1qP+jkWeNlrq+eJZyY2oS68SU1Z/7/myXM4lo9716laOFAVStCQ== + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +process@^0.11.10: + version "0.11.10" + resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= + +progress@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" + integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== + +promise-inflight@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" + integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= + +promise-to-callback@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/promise-to-callback/-/promise-to-callback-1.0.0.tgz#5d2a749010bfb67d963598fcd3960746a68feef7" + integrity sha1-XSp0kBC/tn2WNZj805YHRqaP7vc= + dependencies: + is-fn "^1.0.0" + set-immediate-shim "^1.0.1" + +promise@^8.0.3: + version "8.1.0" + resolved "https://registry.yarnpkg.com/promise/-/promise-8.1.0.tgz#697c25c3dfe7435dd79fcd58c38a135888eaf05e" + integrity sha512-W04AqnILOL/sPRXziNicCjSNRruLAuIHEOVBazepu0545DDNGYHz7ar9ZgZ1fMU8/MA4mVxp5rkBWRi6OXIy3Q== + dependencies: + asap "~2.0.6" + +prompts@^2.0.1: + version "2.4.2" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" + integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== + dependencies: + kleur "^3.0.3" + sisteransi "^1.0.5" + +prop-types@^15.5.10, prop-types@^15.6.1, prop-types@^15.6.2, prop-types@^15.7.2: + version "15.8.1" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" + integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== + dependencies: + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.13.1" + +protobufjs@^6.8.8, protobufjs@~6.11.2: + version "6.11.2" + resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-6.11.2.tgz#de39fabd4ed32beaa08e9bb1e30d08544c1edf8b" + integrity sha512-4BQJoPooKJl2G9j3XftkIXjoC9C0Av2NOrWmbLWT1vH32GcSUHjM0Arra6UfTsVyfMAuFzaLucXn1sadxJydAw== + dependencies: + "@protobufjs/aspromise" "^1.1.2" + "@protobufjs/base64" "^1.1.2" + "@protobufjs/codegen" "^2.0.4" + "@protobufjs/eventemitter" "^1.1.0" + "@protobufjs/fetch" "^1.1.0" + "@protobufjs/float" "^1.0.2" + "@protobufjs/inquire" "^1.1.0" + "@protobufjs/path" "^1.1.2" + "@protobufjs/pool" "^1.1.0" + "@protobufjs/utf8" "^1.1.0" + "@types/long" "^4.0.1" + "@types/node" ">=13.7.0" + long "^4.0.0" + +protobufjs@~6.10.2: + version "6.10.2" + resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-6.10.2.tgz#b9cb6bd8ec8f87514592ba3fdfd28e93f33a469b" + integrity sha512-27yj+04uF6ya9l+qfpH187aqEzfCF4+Uit0I9ZBQVqK09hk/SQzKa2MUqUpXaVa7LOFRg1TSSr3lVxGOk6c0SQ== + dependencies: + "@protobufjs/aspromise" "^1.1.2" + "@protobufjs/base64" "^1.1.2" + "@protobufjs/codegen" "^2.0.4" + "@protobufjs/eventemitter" "^1.1.0" + "@protobufjs/fetch" "^1.1.0" + "@protobufjs/float" "^1.0.2" + "@protobufjs/inquire" "^1.1.0" + "@protobufjs/path" "^1.1.2" + "@protobufjs/pool" "^1.1.0" + "@protobufjs/utf8" "^1.1.0" + "@types/long" "^4.0.1" + "@types/node" "^13.7.0" + long "^4.0.0" + +proxy-addr@~2.0.7: + version "2.0.7" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" + integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== + dependencies: + forwarded "0.2.0" + ipaddr.js "1.9.1" + +prr@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" + integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= + +psl@^1.1.28: + version "1.8.0" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" + integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== + +public-encrypt@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" + integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== + dependencies: + bn.js "^4.1.0" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + parse-asn1 "^5.0.0" + randombytes "^2.0.1" + safe-buffer "^5.1.2" + +pump@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" + integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +pump@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" + integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +pumpify@^1.3.3: + version "1.5.1" + resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" + integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== + dependencies: + duplexify "^3.6.0" + inherits "^2.0.3" + pump "^2.0.0" + +punycode@1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" + integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= + +punycode@2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.0.tgz#5f863edc89b96db09074bad7947bf09056ca4e7d" + integrity sha1-X4Y+3Im5bbCQdLrXlHvwkFbKTn0= + +punycode@^1.2.4: + version "1.4.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" + integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= + +punycode@^2.1.0, punycode@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + +q@^1.1.2: + version "1.5.1" + resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" + integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= + +qrcode@1.4.4: + version "1.4.4" + resolved "https://registry.yarnpkg.com/qrcode/-/qrcode-1.4.4.tgz#f0c43568a7e7510a55efc3b88d9602f71963ea83" + integrity sha512-oLzEC5+NKFou9P0bMj5+v6Z40evexeE29Z9cummZXZ9QXyMr3lphkURzxjXgPJC5azpxcshoDWV1xE46z+/c3Q== + dependencies: + buffer "^5.4.3" + buffer-alloc "^1.2.0" + buffer-from "^1.1.1" + dijkstrajs "^1.0.1" + isarray "^2.0.1" + pngjs "^3.3.0" + yargs "^13.2.4" + +qrcode@^1.4.4: + version "1.5.0" + resolved "https://registry.yarnpkg.com/qrcode/-/qrcode-1.5.0.tgz#95abb8a91fdafd86f8190f2836abbfc500c72d1b" + integrity sha512-9MgRpgVc+/+47dFvQeD6U2s0Z92EsKzcHogtum4QB+UNd025WOJSHvn/hjk9xmzj7Stj95CyUAs31mrjxliEsQ== + dependencies: + dijkstrajs "^1.0.1" + encode-utf8 "^1.0.3" + pngjs "^5.0.0" + yargs "^15.3.1" + +qs@6.9.6: + version "6.9.6" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.9.6.tgz#26ed3c8243a431b2924aca84cc90471f35d5a0ee" + integrity sha512-TIRk4aqYLNoJUbd+g2lEdz5kLWIuTMRagAXxl78Q0RiVjAOugHmeKNGdd3cwo/ktpf9aL9epCfFqWDEKysUlLQ== + +qs@~6.5.2: + version "6.5.2" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" + integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== + +query-string@6.13.5: + version "6.13.5" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-6.13.5.tgz#99e95e2fb7021db90a6f373f990c0c814b3812d8" + integrity sha512-svk3xg9qHR39P3JlHuD7g3nRnyay5mHbrPctEBDUxUkHRifPHXJDhBUycdCC0NBjXoDf44Gb+IsOZL1Uwn8M/Q== + dependencies: + decode-uri-component "^0.2.0" + split-on-first "^1.0.0" + strict-uri-encode "^2.0.0" + +query-string@^4.1.0: + version "4.3.4" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.3.4.tgz#bbb693b9ca915c232515b228b1a02b609043dbeb" + integrity sha1-u7aTucqRXCMlFbIosaArYJBD2+s= + dependencies: + object-assign "^4.1.0" + strict-uri-encode "^1.0.0" + +query-string@^5.0.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-5.1.1.tgz#a78c012b71c17e05f2e3fa2319dd330682efb3cb" + integrity sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw== + dependencies: + decode-uri-component "^0.2.0" + object-assign "^4.1.0" + strict-uri-encode "^1.0.0" + +query-string@^6.12.1: + version "6.14.1" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-6.14.1.tgz#7ac2dca46da7f309449ba0f86b1fd28255b0c86a" + integrity sha512-XDxAeVmpfu1/6IjyT/gXHOl+S0vQ9owggJ30hhWKdHAsNPOcasn5o9BW0eejZqL2e4vMjhAxoW3jVHcD6mbcYw== + dependencies: + decode-uri-component "^0.2.0" + filter-obj "^1.1.0" + split-on-first "^1.0.0" + strict-uri-encode "^2.0.0" + +querystring-es3@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" + integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM= + +querystring@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" + integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= + +querystringify@^2.1.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" + integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== + +raf@^3.4.1: + version "3.4.1" + resolved "https://registry.yarnpkg.com/raf/-/raf-3.4.1.tgz#0742e99a4a6552f445d73e3ee0328af0ff1ede39" + integrity sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA== + dependencies: + performance-now "^2.1.0" + +randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" + +randomfill@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" + integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== + dependencies: + randombytes "^2.0.5" + safe-buffer "^5.1.0" + +range-parser@^1.2.1, range-parser@~1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== + +raw-body@2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.2.tgz#baf3e9c21eebced59dd6533ac872b71f7b61cb32" + integrity sha512-RPMAFUJP19WIet/99ngh6Iv8fzAbqum4Li7AD6DtGaW2RpMB/11xDoalPiJMTbu6I3hkbMVkATvZrqb9EEqeeQ== + dependencies: + bytes "3.1.1" + http-errors "1.8.1" + iconv-lite "0.4.24" + unpipe "1.0.0" + +react-app-polyfill@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/react-app-polyfill/-/react-app-polyfill-1.0.6.tgz#890f8d7f2842ce6073f030b117de9130a5f385f0" + integrity sha512-OfBnObtnGgLGfweORmdZbyEz+3dgVePQBb3zipiaDsMHV1NpWm0rDFYIVXFV/AK+x4VIIfWHhrdMIeoTLyRr2g== + dependencies: + core-js "^3.5.0" + object-assign "^4.1.1" + promise "^8.0.3" + raf "^3.4.1" + regenerator-runtime "^0.13.3" + whatwg-fetch "^3.0.0" + +react-blockies@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/react-blockies/-/react-blockies-1.4.1.tgz#d4f0faf95ac197213a297a370a4d7f77ea3d0b08" + integrity sha512-4N015X5oPNnD3xQPsiqolOFzPZSSWyc5mJhJUZShUCHtiGUxVN+1qsWTcglkHMNySux9hUofaispqcw9QkWP5Q== + dependencies: + prop-types "^15.5.10" + +react-content-loader@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/react-content-loader/-/react-content-loader-6.1.0.tgz#6b06be3889d2480ae909be0374a6062a36a53dec" + integrity sha512-S4/+doQrNs0PGDgUYCGGfdFjGax8dMQzYkWcSSxfaUcUjFkbnikWARuX9lWkglocIVhxnn3lxNb6uEWFFUzNUw== + +react-dev-utils@^10.2.1: + version "10.2.1" + resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-10.2.1.tgz#f6de325ae25fa4d546d09df4bb1befdc6dd19c19" + integrity sha512-XxTbgJnYZmxuPtY3y/UV0D8/65NKkmaia4rXzViknVnZeVlklSh8u6TnaEYPfAi/Gh1TP4mEOXHI6jQOPbeakQ== + dependencies: + "@babel/code-frame" "7.8.3" + address "1.1.2" + browserslist "4.10.0" + chalk "2.4.2" + cross-spawn "7.0.1" + detect-port-alt "1.1.6" + escape-string-regexp "2.0.0" + filesize "6.0.1" + find-up "4.1.0" + fork-ts-checker-webpack-plugin "3.1.1" + global-modules "2.0.0" + globby "8.0.2" + gzip-size "5.1.1" + immer "1.10.0" + inquirer "7.0.4" + is-root "2.1.0" + loader-utils "1.2.3" + open "^7.0.2" + pkg-up "3.1.0" + react-error-overlay "^6.0.7" + recursive-readdir "2.2.2" + shell-quote "1.7.2" + strip-ansi "6.0.0" + text-table "0.2.0" + +react-dom@^16.13.1, react-dom@^16.8.6: + version "16.14.0" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.14.0.tgz#7ad838ec29a777fb3c75c3a190f661cf92ab8b89" + integrity sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + prop-types "^15.6.2" + scheduler "^0.19.1" + +react-dom@^17.0.0: + version "17.0.2" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-17.0.2.tgz#ecffb6845e3ad8dbfcdc498f0d0a939736502c23" + integrity sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + scheduler "^0.20.2" + +react-error-overlay@^6.0.7: + version "6.0.10" + resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.10.tgz#0fe26db4fa85d9dbb8624729580e90e7159a59a6" + integrity sha512-mKR90fX7Pm5seCOfz8q9F+66VCc1PGsWSBxKbITjfKVQHMNF2zudxHnMdJiB1fRCb+XsbQV9sO9DCkgsMQgBIA== + +react-fast-compare@^3.1.1: + version "3.2.0" + resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-3.2.0.tgz#641a9da81b6a6320f270e89724fb45a0b39e43bb" + integrity sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA== + +react-helmet@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/react-helmet/-/react-helmet-6.1.0.tgz#a750d5165cb13cf213e44747502652e794468726" + integrity sha512-4uMzEY9nlDlgxr61NL3XbKRy1hEkXmKNXhjbAIOVw5vcFrsdYbH2FEwcNyWvWinl103nXgzYNlns9ca+8kFiWw== + dependencies: + object-assign "^4.1.1" + prop-types "^15.7.2" + react-fast-compare "^3.1.1" + react-side-effect "^2.1.0" + +react-hot-loader@^4.13.0: + version "4.13.0" + resolved "https://registry.yarnpkg.com/react-hot-loader/-/react-hot-loader-4.13.0.tgz#c27e9408581c2a678f5316e69c061b226dc6a202" + integrity sha512-JrLlvUPqh6wIkrK2hZDfOyq/Uh/WeVEr8nc7hkn2/3Ul0sx1Kr5y4kOGNacNRoj7RhwLNcQ3Udf1KJXrqc0ZtA== + dependencies: + fast-levenshtein "^2.0.6" + global "^4.3.0" + hoist-non-react-statics "^3.3.0" + loader-utils "^1.1.0" + prop-types "^15.6.1" + react-lifecycles-compat "^3.0.4" + shallowequal "^1.1.0" + source-map "^0.7.3" + +react-i18next@^11.7.3: + version "11.15.3" + resolved "https://registry.yarnpkg.com/react-i18next/-/react-i18next-11.15.3.tgz#7608fb3cacc02ac75a62fc2d68b579f140b198dd" + integrity sha512-RSUEM4So3Tu2JHV0JsZ5Yje+4nz66YViMfPZoywxOy0xyn3L7tE2CHvJ7Y9LUsrTU7vGmZ5bwb8PpjnkatdIxg== + dependencies: + "@babel/runtime" "^7.14.5" + html-escaper "^2.0.2" + html-parse-stringify "^3.0.1" + +react-infinite-scroll-component@^6.0.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/react-infinite-scroll-component/-/react-infinite-scroll-component-6.1.0.tgz#7e511e7aa0f728ac3e51f64a38a6079ac522407f" + integrity sha512-SQu5nCqy8DxQWpnUVLx7V7b7LcA37aM7tvoWjTLZp1dk6EJibM5/4EJKzOnl07/BsM1Y40sKLuqjCwwH/xV0TQ== + dependencies: + throttle-debounce "^2.1.0" + +react-is@^16.13.1, react-is@^16.6.0, react-is@^16.7.0, react-is@^16.8.4: + version "16.13.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" + integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== + +"react-is@^16.8.0 || ^17.0.0", react-is@^17.0.2: + version "17.0.2" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" + integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== + +react-lifecycles-compat@^3.0.0, react-lifecycles-compat@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362" + integrity sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA== + +react-modal@^3.14.3: + version "3.14.4" + resolved "https://registry.yarnpkg.com/react-modal/-/react-modal-3.14.4.tgz#2ca7e8e9a180955e5c9508c228b73167c1e6f6a3" + integrity sha512-8surmulejafYCH9wfUmFyj4UfbSJwjcgbS9gf3oOItu4Hwd6ivJyVBETI0yHRhpJKCLZMUtnhzk76wXTsNL6Qg== + dependencies: + exenv "^1.2.0" + prop-types "^15.7.2" + react-lifecycles-compat "^3.0.0" + warning "^4.0.3" + +react-redux@^7.2.1: + version "7.2.6" + resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-7.2.6.tgz#49633a24fe552b5f9caf58feb8a138936ddfe9aa" + integrity sha512-10RPdsz0UUrRL1NZE0ejTkucnclYSgXp5q+tB5SWx2qeG2ZJQJyymgAhwKy73yiL/13btfB6fPr+rgbMAaZIAQ== + dependencies: + "@babel/runtime" "^7.15.4" + "@types/react-redux" "^7.1.20" + hoist-non-react-statics "^3.3.2" + loose-envify "^1.4.0" + prop-types "^15.7.2" + react-is "^17.0.2" + +react-router-dom@^5.2.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-5.3.0.tgz#da1bfb535a0e89a712a93b97dd76f47ad1f32363" + integrity sha512-ObVBLjUZsphUUMVycibxgMdh5jJ1e3o+KpAZBVeHcNQZ4W+uUGGWsokurzlF4YOldQYRQL4y6yFRWM4m3svmuQ== + dependencies: + "@babel/runtime" "^7.12.13" + history "^4.9.0" + loose-envify "^1.3.1" + prop-types "^15.6.2" + react-router "5.2.1" + tiny-invariant "^1.0.2" + tiny-warning "^1.0.0" + +react-router@5.2.1, react-router@^5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/react-router/-/react-router-5.2.1.tgz#4d2e4e9d5ae9425091845b8dbc6d9d276239774d" + integrity sha512-lIboRiOtDLFdg1VTemMwud9vRVuOCZmUIT/7lUoZiSpPODiiH1UQlfXy+vPLC/7IWdFYnhRwAyNqA/+I7wnvKQ== + dependencies: + "@babel/runtime" "^7.12.13" + history "^4.9.0" + hoist-non-react-statics "^3.1.0" + loose-envify "^1.3.1" + mini-create-react-context "^0.4.0" + path-to-regexp "^1.7.0" + prop-types "^15.6.2" + react-is "^16.6.0" + tiny-invariant "^1.0.2" + tiny-warning "^1.0.0" + +react-scripts@3.4.3: + version "3.4.3" + resolved "https://registry.yarnpkg.com/react-scripts/-/react-scripts-3.4.3.tgz#21de5eb93de41ee92cd0b85b0e1298d0bb2e6c51" + integrity sha512-oSnoWmii/iKdeQiwaO6map1lUaZLmG0xIUyb/HwCVFLT7gNbj8JZ9RmpvMCZ4fB98ZUMRfNmp/ft8uy/xD1RLA== + dependencies: + "@babel/core" "7.9.0" + "@svgr/webpack" "4.3.3" + "@typescript-eslint/eslint-plugin" "^2.10.0" + "@typescript-eslint/parser" "^2.10.0" + babel-eslint "10.1.0" + babel-jest "^24.9.0" + babel-loader "8.1.0" + babel-plugin-named-asset-import "^0.3.6" + babel-preset-react-app "^9.1.2" + camelcase "^5.3.1" + case-sensitive-paths-webpack-plugin "2.3.0" + css-loader "3.4.2" + dotenv "8.2.0" + dotenv-expand "5.1.0" + eslint "^6.6.0" + eslint-config-react-app "^5.2.1" + eslint-loader "3.0.3" + eslint-plugin-flowtype "4.6.0" + eslint-plugin-import "2.20.1" + eslint-plugin-jsx-a11y "6.2.3" + eslint-plugin-react "7.19.0" + eslint-plugin-react-hooks "^1.6.1" + file-loader "4.3.0" + fs-extra "^8.1.0" + html-webpack-plugin "4.0.0-beta.11" + identity-obj-proxy "3.0.0" + jest "24.9.0" + jest-environment-jsdom-fourteen "1.0.1" + jest-resolve "24.9.0" + jest-watch-typeahead "0.4.2" + mini-css-extract-plugin "0.9.0" + optimize-css-assets-webpack-plugin "5.0.3" + pnp-webpack-plugin "1.6.4" + postcss-flexbugs-fixes "4.1.0" + postcss-loader "3.0.0" + postcss-normalize "8.0.1" + postcss-preset-env "6.7.0" + postcss-safe-parser "4.0.1" + react-app-polyfill "^1.0.6" + react-dev-utils "^10.2.1" + resolve "1.15.0" + resolve-url-loader "3.1.1" + sass-loader "8.0.2" + semver "6.3.0" + style-loader "0.23.1" + terser-webpack-plugin "2.3.8" + ts-pnp "1.1.6" + url-loader "2.3.0" + webpack "4.42.0" + webpack-dev-server "3.11.0" + webpack-manifest-plugin "2.2.0" + workbox-webpack-plugin "4.3.1" + optionalDependencies: + fsevents "2.1.2" + +react-side-effect@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/react-side-effect/-/react-side-effect-2.1.1.tgz#66c5701c3e7560ab4822a4ee2742dee215d72eb3" + integrity sha512-2FoTQzRNTncBVtnzxFOk2mCpcfxQpenBMbk5kSVBg5UcPqV9fRbgY2zhb7GTWWOlpFmAxhClBDlIq8Rsubz1yQ== + +react-transition-group@^4.4.0: + version "4.4.2" + resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-4.4.2.tgz#8b59a56f09ced7b55cbd53c36768b922890d5470" + integrity sha512-/RNYfRAMlZwDSr6z4zNKV6xu53/e2BuaBbGhbyYIXTrmgu/bGHzmqOs7mJSJBHy9Ud+ApHx3QjrkKSp1pxvlFg== + dependencies: + "@babel/runtime" "^7.5.5" + dom-helpers "^5.0.1" + loose-envify "^1.4.0" + prop-types "^15.6.2" + +react@^16.13.1, react@^16.8.6: + version "16.14.0" + resolved "https://registry.yarnpkg.com/react/-/react-16.14.0.tgz#94d776ddd0aaa37da3eda8fc5b6b18a4c9a3114d" + integrity sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + prop-types "^15.6.2" + +react@^17.0.0: + version "17.0.2" + resolved "https://registry.yarnpkg.com/react/-/react-17.0.2.tgz#d0b5cc516d29eb3eee383f75b62864cfb6800037" + integrity sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + +read-pkg-up@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" + integrity sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4= + dependencies: + find-up "^2.0.0" + read-pkg "^2.0.0" + +read-pkg-up@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-4.0.0.tgz#1b221c6088ba7799601c808f91161c66e58f8978" + integrity sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA== + dependencies: + find-up "^3.0.0" + read-pkg "^3.0.0" + +read-pkg@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" + integrity sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg= + dependencies: + load-json-file "^2.0.0" + normalize-package-data "^2.3.2" + path-type "^2.0.0" + +read-pkg@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" + integrity sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k= + dependencies: + load-json-file "^4.0.0" + normalize-package-data "^2.3.2" + path-type "^3.0.0" + +"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.2.9, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: + version "2.3.7" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" + integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readable-stream@^1.0.33: + version "1.1.14" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" + integrity sha1-fPTFTvZI44EwhMY23SB54WbAgdk= + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + +readable-stream@^3.0.6, readable-stream@^3.5.0, readable-stream@^3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" + integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readable-stream@~1.0.15: + version "1.0.34" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" + integrity sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw= + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + +readdirp@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" + integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== + dependencies: + graceful-fs "^4.1.11" + micromatch "^3.1.10" + readable-stream "^2.0.2" + +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + +readonly-date@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/readonly-date/-/readonly-date-1.0.0.tgz#5af785464d8c7d7c40b9d738cbde8c646f97dcd9" + integrity sha512-tMKIV7hlk0h4mO3JTmmVuIlJVXjKk3Sep9Bf5OH0O+758ruuVkUy2J9SttDLm91IEX/WHlXPSpxMGjPj4beMIQ== + +realpath-native@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-1.1.0.tgz#2003294fea23fb0672f2476ebe22fcf498a2d65c" + integrity sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA== + dependencies: + util.promisify "^1.0.0" + +recursive-readdir@2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/recursive-readdir/-/recursive-readdir-2.2.2.tgz#9946fb3274e1628de6e36b2f6714953b4845094f" + integrity sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg== + dependencies: + minimatch "3.0.4" + +redux-thunk@^2.3.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/redux-thunk/-/redux-thunk-2.4.1.tgz#0dd8042cf47868f4b29699941de03c9301a75714" + integrity sha512-OOYGNY5Jy2TWvTL1KgAlVy6dcx3siPJ1wTq741EPyUKfn6W6nChdICjZwCd0p8AZBs5kWpZlbkXW2nE/zjUa+Q== + +redux@^4.0.0, redux@^4.0.5: + version "4.1.2" + resolved "https://registry.yarnpkg.com/redux/-/redux-4.1.2.tgz#140f35426d99bb4729af760afcf79eaaac407104" + integrity sha512-SH8PglcebESbd/shgf6mii6EIoRM0zrQyjcuQ+ojmfxjTtE0z9Y8pa62iA/OJ58qjP6j27uyW4kUF4jl/jd6sw== + dependencies: + "@babel/runtime" "^7.9.2" + +regenerate-unicode-properties@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-9.0.0.tgz#54d09c7115e1f53dc2314a974b32c1c344efe326" + integrity sha512-3E12UeNSPfjrgwjkR81m5J7Aw/T55Tu7nUyZVQYCKEOs+2dkxEY+DpPtZzO4YruuiPb7NkYLVcyJC4+zCbk5pA== + dependencies: + regenerate "^1.4.2" + +regenerate@^1.4.2: + version "1.4.2" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" + integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== + +regenerator-runtime@^0.11.0: + version "0.11.1" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" + integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== + +regenerator-runtime@^0.13.3, regenerator-runtime@^0.13.4, regenerator-runtime@^0.13.9: + version "0.13.9" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" + integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== + +regenerator-transform@^0.14.2: + version "0.14.5" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.5.tgz#c98da154683671c9c4dcb16ece736517e1b7feb4" + integrity sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw== + dependencies: + "@babel/runtime" "^7.8.4" + +regex-not@^1.0.0, regex-not@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" + integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== + dependencies: + extend-shallow "^3.0.2" + safe-regex "^1.1.0" + +regex-parser@2.2.10: + version "2.2.10" + resolved "https://registry.yarnpkg.com/regex-parser/-/regex-parser-2.2.10.tgz#9e66a8f73d89a107616e63b39d4deddfee912b37" + integrity sha512-8t6074A68gHfU8Neftl0Le6KTDwfGAj7IyjPIMSfikI2wJUTHDMaIq42bUsfVnj8mhx0R+45rdUXHGpN164avA== + +regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz#7ef352ae8d159e758c0eadca6f8fcb4eef07be26" + integrity sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + +regexpp@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" + integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw== + +regexpp@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" + integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== + +regexpu-core@^4.7.1: + version "4.8.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.8.0.tgz#e5605ba361b67b1718478501327502f4479a98f0" + integrity sha512-1F6bYsoYiz6is+oz70NWur2Vlh9KWtswuRuzJOfeYUrfPX2o8n74AnUVaOGDbUqVGO9fNHu48/pjJO4sNVwsOg== + dependencies: + regenerate "^1.4.2" + regenerate-unicode-properties "^9.0.0" + regjsgen "^0.5.2" + regjsparser "^0.7.0" + unicode-match-property-ecmascript "^2.0.0" + unicode-match-property-value-ecmascript "^2.0.0" + +regjsgen@^0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.2.tgz#92ff295fb1deecbf6ecdab2543d207e91aa33733" + integrity sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A== + +regjsparser@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.7.0.tgz#a6b667b54c885e18b52554cb4960ef71187e9968" + integrity sha512-A4pcaORqmNMDVwUjWoTzuhwMGpP+NykpfqAsEgI1FSH/EzC7lrN5TMd+kN8YCovX+jMpu8eaqXgXPCa0g8FQNQ== + dependencies: + jsesc "~0.5.0" + +relateurl@^0.2.7: + version "0.2.7" + resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" + integrity sha1-VNvzd+UUQKypCkzSdGANP/LYiKk= + +remove-trailing-separator@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" + integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= + +renderkid@^2.0.4: + version "2.0.7" + resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.7.tgz#464f276a6bdcee606f4a15993f9b29fc74ca8609" + integrity sha512-oCcFyxaMrKsKcTY59qnCAtmDVSLfPbrv6A3tVbPdFMMrv5jaK10V6m40cKsoPNhAqN6rmHW9sswW4o3ruSrwUQ== + dependencies: + css-select "^4.1.3" + dom-converter "^0.2.0" + htmlparser2 "^6.1.0" + lodash "^4.17.21" + strip-ansi "^3.0.1" + +repeat-element@^1.1.2: + version "1.1.4" + resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.4.tgz#be681520847ab58c7568ac75fbfad28ed42d39e9" + integrity sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ== + +repeat-string@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= + +request-promise-core@1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.4.tgz#3eedd4223208d419867b78ce815167d10593a22f" + integrity sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw== + dependencies: + lodash "^4.17.19" + +request-promise-native@^1.0.5: + version "1.0.9" + resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.9.tgz#e407120526a5efdc9a39b28a5679bf47b9d9dc28" + integrity sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g== + dependencies: + request-promise-core "1.1.4" + stealthy-require "^1.1.1" + tough-cookie "^2.3.3" + +request@^2.79.0, request@^2.85.0, request@^2.87.0, request@^2.88.0, request@^2.88.2: + version "2.88.2" + resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" + integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== + dependencies: + aws-sign2 "~0.7.0" + aws4 "^1.8.0" + caseless "~0.12.0" + combined-stream "~1.0.6" + extend "~3.0.2" + forever-agent "~0.6.1" + form-data "~2.3.2" + har-validator "~5.1.3" + http-signature "~1.2.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.19" + oauth-sign "~0.9.0" + performance-now "^2.1.0" + qs "~6.5.2" + safe-buffer "^5.1.2" + tough-cookie "~2.5.0" + tunnel-agent "^0.6.0" + uuid "^3.3.2" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= + +require-main-filename@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" + integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== + +requires-port@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= + +resolve-cwd@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" + integrity sha1-AKn3OHVW4nA46uIyyqNypqWbZlo= + dependencies: + resolve-from "^3.0.0" + +resolve-from@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" + integrity sha1-six699nWiBvItuZTM17rywoYh0g= + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +resolve-pathname@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-pathname/-/resolve-pathname-3.0.0.tgz#99d02224d3cf263689becbb393bc560313025dcd" + integrity sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng== + +resolve-url-loader@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/resolve-url-loader/-/resolve-url-loader-3.1.1.tgz#28931895fa1eab9be0647d3b2958c100ae3c0bf0" + integrity sha512-K1N5xUjj7v0l2j/3Sgs5b8CjrrgtC70SmdCuZiJ8tSyb5J+uk3FoeZ4b7yTnH6j7ngI+Bc5bldHJIa8hYdu2gQ== + dependencies: + adjust-sourcemap-loader "2.0.0" + camelcase "5.3.1" + compose-function "3.0.3" + convert-source-map "1.7.0" + es6-iterator "2.0.3" + loader-utils "1.2.3" + postcss "7.0.21" + rework "1.0.1" + rework-visit "1.0.0" + source-map "0.6.1" + +resolve-url@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" + integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= + +resolve@1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" + integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= + +resolve@1.15.0: + version "1.15.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.15.0.tgz#1b7ca96073ebb52e741ffd799f6b39ea462c67f5" + integrity sha512-+hTmAldEGE80U2wJJDC1lebb5jWqvTYAfm3YZ1ckk1gBr0MnCqUKlwK1e+anaFljIl+F5tR5IoZcm4ZDA1zMQw== + dependencies: + path-parse "^1.0.6" + +resolve@^1.10.0, resolve@^1.12.0, resolve@^1.14.2, resolve@^1.15.1, resolve@^1.20.0, resolve@^1.3.2, resolve@^1.8.1: + version "1.21.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.21.0.tgz#b51adc97f3472e6a5cf4444d34bc9d6b9037591f" + integrity sha512-3wCbTpk5WJlyE4mSOtDLhqQmGFi0/TD9VPwmiolnk8U0wRgMEktqCXd3vy5buTO3tljvalNvKrjHEfrd2WpEKA== + dependencies: + is-core-module "^2.8.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +responselike@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" + integrity sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec= + dependencies: + lowercase-keys "^1.0.0" + +restore-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" + integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== + dependencies: + onetime "^5.1.0" + signal-exit "^3.0.2" + +ret@~0.1.10: + version "0.1.15" + resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" + integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== + +retry@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" + integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs= + +rework-visit@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/rework-visit/-/rework-visit-1.0.0.tgz#9945b2803f219e2f7aca00adb8bc9f640f842c9a" + integrity sha1-mUWygD8hni96ygCtuLyfZA+ELJo= + +rework@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/rework/-/rework-1.0.1.tgz#30806a841342b54510aa4110850cd48534144aa7" + integrity sha1-MIBqhBNCtUUQqkEQhQzUhTQUSqc= + dependencies: + convert-source-map "^0.3.3" + css "^2.0.0" + +rfdc@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.3.0.tgz#d0b7c441ab2720d05dc4cf26e01c89631d9da08b" + integrity sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA== + +rgb-regex@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/rgb-regex/-/rgb-regex-1.0.1.tgz#c0e0d6882df0e23be254a475e8edd41915feaeb1" + integrity sha1-wODWiC3w4jviVKR16O3UGRX+rrE= + +rgba-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3" + integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM= + +rimraf@2.6.3, rimraf@~2.6.2: + version "2.6.3" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" + integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== + dependencies: + glob "^7.1.3" + +rimraf@^2.5.4, rimraf@^2.6.3, rimraf@^2.7.1: + version "2.7.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + +ripemd160@^2.0.0, ripemd160@^2.0.1, ripemd160@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" + integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + +rlp@^2.0.0, rlp@^2.2.3, rlp@^2.2.4: + version "2.2.7" + resolved "https://registry.yarnpkg.com/rlp/-/rlp-2.2.7.tgz#33f31c4afac81124ac4b283e2bd4d9720b30beaf" + integrity sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ== + dependencies: + bn.js "^5.2.0" + +rsvp@^4.8.4: + version "4.8.5" + resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734" + integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA== + +run-async@^2.2.0, run-async@^2.4.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" + integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== + +run-queue@^1.0.0, run-queue@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" + integrity sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec= + dependencies: + aproba "^1.1.1" + +rustbn.js@~0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/rustbn.js/-/rustbn.js-0.2.0.tgz#8082cb886e707155fd1cb6f23bd591ab8d55d0ca" + integrity sha512-4VlvkRUuCJvr2J6Y0ImW7NvTCriMi7ErOAqWk1y69vAdoNIzCF3yPmgeNzx+RQTLEDFq5sHfscn1MwHxP9hNfA== + +rxjs@^6.5.3, rxjs@^6.6.0, rxjs@^6.6.3: + version "6.6.7" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9" + integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== + dependencies: + tslib "^1.9.0" + +rxjs@^7.5.1: + version "7.5.1" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.5.1.tgz#af73df343cbcab37628197f43ea0c8256f54b157" + integrity sha512-KExVEeZWxMZnZhUZtsJcFwz8IvPvgu4G2Z2QyqjZQzUGr32KDYuSxrEYO4w3tFFNbfLozcrKUTvTPi+E9ywJkQ== + dependencies: + tslib "^2.1.0" + +safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@^5.2.1, safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +safe-event-emitter@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/safe-event-emitter/-/safe-event-emitter-1.0.1.tgz#5b692ef22329ed8f69fdce607e50ca734f6f20af" + integrity sha512-e1wFe99A91XYYxoQbcq2ZJUWurxEyP8vfz7A7vuUe1s95q8r5ebraVaA1BukYJcpM6V16ugWoD9vngi8Ccu5fg== + dependencies: + events "^3.0.0" + +safe-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" + integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= + dependencies: + ret "~0.1.10" + +"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +sane@^4.0.3: + version "4.1.0" + resolved "https://registry.yarnpkg.com/sane/-/sane-4.1.0.tgz#ed881fd922733a6c461bc189dc2b6c006f3ffded" + integrity sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA== + dependencies: + "@cnakazawa/watch" "^1.0.3" + anymatch "^2.0.0" + capture-exit "^2.0.0" + exec-sh "^0.3.2" + execa "^1.0.0" + fb-watchman "^2.0.0" + micromatch "^3.1.4" + minimist "^1.1.1" + walker "~1.0.5" + +sanitize.css@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/sanitize.css/-/sanitize.css-10.0.0.tgz#b5cb2547e96d8629a60947544665243b1dc3657a" + integrity sha512-vTxrZz4dX5W86M6oVWVdOVe72ZiPs41Oi7Z6Km4W5Turyz28mrXSJhhEBZoRtzJWIv3833WKVwLSDWWkEfupMg== + +sass-loader@8.0.2: + version "8.0.2" + resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-8.0.2.tgz#debecd8c3ce243c76454f2e8290482150380090d" + integrity sha512-7o4dbSK8/Ol2KflEmSco4jTjQoV988bM82P9CZdmo9hR3RLnvNc0ufMNdMrB0caq38JQ/FgF4/7RcbcfKzxoFQ== + dependencies: + clone-deep "^4.0.1" + loader-utils "^1.2.3" + neo-async "^2.6.1" + schema-utils "^2.6.1" + semver "^6.3.0" + +sass@^1.43.4: + version "1.47.0" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.47.0.tgz#c22dd0eed2e4a991430dae0b03c8e694bc41c2b4" + integrity sha512-GtXwvwgD7/6MLUZPnlA5/8cdRgC9SzT5kAnnJMRmEZQFRE3J56Foswig4NyyyQGsnmNvg6EUM/FP0Pe9Y2zywQ== + dependencies: + chokidar ">=3.0.0 <4.0.0" + immutable "^4.0.0" + source-map-js ">=0.6.2 <2.0.0" + +sax@^1.2.4, sax@~1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" + integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== + +saxes@^3.1.9: + version "3.1.11" + resolved "https://registry.yarnpkg.com/saxes/-/saxes-3.1.11.tgz#d59d1fd332ec92ad98a2e0b2ee644702384b1c5b" + integrity sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g== + dependencies: + xmlchars "^2.1.1" + +scheduler@^0.19.1: + version "0.19.1" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.19.1.tgz#4f3e2ed2c1a7d65681f4c854fa8c5a1ccb40f196" + integrity sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + +scheduler@^0.20.2: + version "0.20.2" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.20.2.tgz#4baee39436e34aa93b4874bddcbf0fe8b8b50e91" + integrity sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + +schema-utils@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770" + integrity sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g== + dependencies: + ajv "^6.1.0" + ajv-errors "^1.0.0" + ajv-keywords "^3.1.0" + +schema-utils@^2.5.0, schema-utils@^2.6.0, schema-utils@^2.6.1, schema-utils@^2.6.5, schema-utils@^2.6.6: + version "2.7.1" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7" + integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg== + dependencies: + "@types/json-schema" "^7.0.5" + ajv "^6.12.4" + ajv-keywords "^3.5.2" + +scrypt-js@^3.0.0, scrypt-js@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-3.0.1.tgz#d314a57c2aef69d1ad98a138a21fe9eafa9ee312" + integrity sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA== + +seamless-immutable@^7.1.3: + version "7.1.4" + resolved "https://registry.yarnpkg.com/seamless-immutable/-/seamless-immutable-7.1.4.tgz#6e9536def083ddc4dea0207d722e0e80d0f372f8" + integrity sha512-XiUO1QP4ki4E2PHegiGAlu6r82o5A+6tRh7IkGGTVg/h+UoeX4nFBeCGPOhb4CYjvkqsfm/TUtvOMYC1xmV30A== + +secp256k1@^4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-4.0.3.tgz#c4559ecd1b8d3c1827ed2d1b94190d69ce267303" + integrity sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA== + dependencies: + elliptic "^6.5.4" + node-addon-api "^2.0.0" + node-gyp-build "^4.2.0" + +select-hose@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" + integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo= + +selfsigned@^1.10.7: + version "1.10.11" + resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.11.tgz#24929cd906fe0f44b6d01fb23999a739537acbe9" + integrity sha512-aVmbPOfViZqOZPgRBT0+3u4yZFHpmnIghLMlAcb5/xhp5ZtB/RVnKhz5vl2M32CLXAqR4kha9zfhNg0Lf/sxKA== + dependencies: + node-forge "^0.10.0" + +semaphore@>=1.0.1, semaphore@^1.0.3: + version "1.1.0" + resolved "https://registry.yarnpkg.com/semaphore/-/semaphore-1.1.0.tgz#aaad8b86b20fe8e9b32b16dc2ee682a8cd26a8aa" + integrity sha512-O4OZEaNtkMd/K0i6js9SL+gqy0ZCBMgUvlSqHKi4IBdjhe7wB8pwztUk1BbZ1fmrvpwFrPbHzqd2w5pTcJH6LA== + +semver-compare@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" + integrity sha1-De4hahyUGrN+nvsXiPavxf9VN/w= + +"semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + +semver@6.3.0, semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + +semver@7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" + integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== + +semver@^7.3.2: + version "7.3.5" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" + integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== + dependencies: + lru-cache "^6.0.0" + +semver@~5.4.1: + version "5.4.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e" + integrity sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg== + +send@0.17.2: + version "0.17.2" + resolved "https://registry.yarnpkg.com/send/-/send-0.17.2.tgz#926622f76601c41808012c8bf1688fe3906f7820" + integrity sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww== + dependencies: + debug "2.6.9" + depd "~1.1.2" + destroy "~1.0.4" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "1.8.1" + mime "1.6.0" + ms "2.1.3" + on-finished "~2.3.0" + range-parser "~1.2.1" + statuses "~1.5.0" + +serialize-javascript@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" + integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw== + dependencies: + randombytes "^2.1.0" + +serve-index@^1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" + integrity sha1-03aNabHn2C5c4FD/9bRTvqEqkjk= + dependencies: + accepts "~1.3.4" + batch "0.6.1" + debug "2.6.9" + escape-html "~1.0.3" + http-errors "~1.6.2" + mime-types "~2.1.17" + parseurl "~1.3.2" + +serve-static@1.14.2: + version "1.14.2" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.2.tgz#722d6294b1d62626d41b43a013ece4598d292bfa" + integrity sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ== + dependencies: + encodeurl "~1.0.2" + escape-html "~1.0.3" + parseurl "~1.3.3" + send "0.17.2" + +servify@^0.1.12: + version "0.1.12" + resolved "https://registry.yarnpkg.com/servify/-/servify-0.1.12.tgz#142ab7bee1f1d033b66d0707086085b17c06db95" + integrity sha512-/xE6GvsKKqyo1BAY+KxOWXcLpPsUUyji7Qg3bVD7hh1eRze5bR1uYiuDA/k3Gof1s9BTzQZEJK8sNcNGFIzeWw== + dependencies: + body-parser "^1.16.0" + cors "^2.8.1" + express "^4.14.0" + request "^2.79.0" + xhr "^2.3.3" + +set-blocking@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= + +set-immediate-shim@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" + integrity sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E= + +set-value@^2.0.0, set-value@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" + integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.3" + split-string "^3.0.1" + +setimmediate@^1.0.4, setimmediate@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= + +setprototypeof@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" + integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== + +setprototypeof@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" + integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== + +sha.js@^2.4.0, sha.js@^2.4.11, sha.js@^2.4.8: + version "2.4.11" + resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" + integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +shallow-clone@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-0.1.2.tgz#5909e874ba77106d73ac414cfec1ffca87d97060" + integrity sha1-WQnodLp3EG1zrEFM/sH/yofZcGA= + dependencies: + is-extendable "^0.1.1" + kind-of "^2.0.1" + lazy-cache "^0.2.3" + mixin-object "^2.0.1" + +shallow-clone@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" + integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== + dependencies: + kind-of "^6.0.2" + +shallowequal@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8" + integrity sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ== + +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= + dependencies: + shebang-regex "^1.0.0" + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +shell-quote@1.7.2: + version "1.7.2" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.2.tgz#67a7d02c76c9da24f99d20808fcaded0e0e04be2" + integrity sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg== + +shellwords@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" + integrity sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww== + +side-channel@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" + integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== + dependencies: + call-bind "^1.0.0" + get-intrinsic "^1.0.2" + object-inspect "^1.9.0" + +signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3: + version "3.0.6" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.6.tgz#24e630c4b0f03fea446a2bd299e62b4a6ca8d0af" + integrity sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ== + +simple-concat@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f" + integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q== + +simple-get@^2.7.0: + version "2.8.1" + resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-2.8.1.tgz#0e22e91d4575d87620620bc91308d57a77f44b5d" + integrity sha512-lSSHRSw3mQNUGPAYRqo7xy9dhKmxFXIjLjp4KHpf99GEH2VH7C3AM+Qfx6du6jhfUi6Vm7XnbEVEf7Wb6N8jRw== + dependencies: + decompress-response "^3.3.0" + once "^1.3.1" + simple-concat "^1.0.0" + +simple-swizzle@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" + integrity sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo= + dependencies: + is-arrayish "^0.3.1" + +sisteransi@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" + integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== + +slash@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" + integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU= + +slash@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" + integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +slice-ansi@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" + integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== + dependencies: + ansi-styles "^3.2.0" + astral-regex "^1.0.0" + is-fullwidth-code-point "^2.0.0" + +slice-ansi@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-3.0.0.tgz#31ddc10930a1b7e0b67b08c96c2f49b77a789787" + integrity sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ== + dependencies: + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" + +slice-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" + integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== + dependencies: + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" + +snapdragon-node@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" + integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== + dependencies: + define-property "^1.0.0" + isobject "^3.0.0" + snapdragon-util "^3.0.1" + +snapdragon-util@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" + integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== + dependencies: + kind-of "^3.2.0" + +snapdragon@^0.8.1: + version "0.8.2" + resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" + integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== + dependencies: + base "^0.11.1" + debug "^2.2.0" + define-property "^0.2.5" + extend-shallow "^2.0.1" + map-cache "^0.2.2" + source-map "^0.5.6" + source-map-resolve "^0.5.0" + use "^3.1.0" + +sockjs-client@1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.4.0.tgz#c9f2568e19c8fd8173b4997ea3420e0bb306c7d5" + integrity sha512-5zaLyO8/nri5cua0VtOrFXBPK1jbL4+1cebT/mmKA1E1ZXOvJrII75bPu0l0k843G/+iAbhEqzyKr0w/eCCj7g== + dependencies: + debug "^3.2.5" + eventsource "^1.0.7" + faye-websocket "~0.11.1" + inherits "^2.0.3" + json3 "^3.3.2" + url-parse "^1.4.3" + +sockjs@0.3.20: + version "0.3.20" + resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.20.tgz#b26a283ec562ef8b2687b44033a4eeceac75d855" + integrity sha512-SpmVOVpdq0DJc0qArhF3E5xsxvaiqGNb73XfgBpK1y3UD5gs8DSo8aCTsuT5pX8rssdc2NDIzANwP9eCAiSdTA== + dependencies: + faye-websocket "^0.10.0" + uuid "^3.4.0" + websocket-driver "0.6.5" + +sort-keys@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad" + integrity sha1-RBttTTRnmPG05J6JIK37oOVD+a0= + dependencies: + is-plain-obj "^1.0.0" + +source-list-map@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" + integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== + +source-map-explorer@^2.5.2: + version "2.5.2" + resolved "https://registry.yarnpkg.com/source-map-explorer/-/source-map-explorer-2.5.2.tgz#857cab5dd9d1d7175e9c5c2739dc9ccfb99f2dc5" + integrity sha512-gBwOyCcHPHcdLbgw6Y6kgoH1uLKL6hN3zz0xJcNI2lpnElZliIlmSYAjUVwAWnc7+HscoTyh1ScR7ITtFuEnxg== + dependencies: + btoa "^1.2.1" + chalk "^4.1.0" + convert-source-map "^1.7.0" + ejs "^3.1.5" + escape-html "^1.0.3" + glob "^7.1.6" + gzip-size "^6.0.0" + lodash "^4.17.20" + open "^7.3.1" + source-map "^0.7.3" + temp "^0.9.4" + yargs "^16.2.0" + +"source-map-js@>=0.6.2 <2.0.0": + version "1.0.1" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.1.tgz#a1741c131e3c77d048252adfa24e23b908670caf" + integrity sha512-4+TN2b3tqOCd/kaGRJ/sTYA0tR0mdXx26ipdolxcwtJVqEnqNYvlCAt1q3ypy4QMlYus+Zh34RNtYLoq2oQ4IA== + +source-map-resolve@^0.5.0, source-map-resolve@^0.5.2: + version "0.5.3" + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" + integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== + dependencies: + atob "^2.1.2" + decode-uri-component "^0.2.0" + resolve-url "^0.2.1" + source-map-url "^0.4.0" + urix "^0.1.0" + +source-map-support@^0.5.6, source-map-support@~0.5.12: + version "0.5.21" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map-url@^0.4.0: + version "0.4.1" + resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56" + integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw== + +source-map@0.6.1, source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +source-map@^0.5.0, source-map@^0.5.6: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= + +source-map@^0.7.3: + version "0.7.3" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" + integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== + +spdx-correct@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" + integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== + dependencies: + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" + +spdx-exceptions@^2.1.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" + integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== + +spdx-expression-parse@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" + integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + +spdx-license-ids@^3.0.0: + version "3.0.11" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz#50c0d8c40a14ec1bf449bae69a0ea4685a9d9f95" + integrity sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g== + +spdy-transport@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31" + integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw== + dependencies: + debug "^4.1.0" + detect-node "^2.0.4" + hpack.js "^2.1.6" + obuf "^1.1.2" + readable-stream "^3.0.6" + wbuf "^1.7.3" + +spdy@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.2.tgz#b74f466203a3eda452c02492b91fb9e84a27677b" + integrity sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA== + dependencies: + debug "^4.1.0" + handle-thing "^2.0.0" + http-deceiver "^1.2.7" + select-hose "^2.0.0" + spdy-transport "^3.0.0" + +split-on-first@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/split-on-first/-/split-on-first-1.1.0.tgz#f610afeee3b12bce1d0c30425e76398b78249a5f" + integrity sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw== + +split-string@^3.0.1, split-string@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" + integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== + dependencies: + extend-shallow "^3.0.0" + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= + +sshpk@^1.7.0: + version "1.17.0" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.17.0.tgz#578082d92d4fe612b13007496e543fa0fbcbe4c5" + integrity sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ== + dependencies: + asn1 "~0.2.3" + assert-plus "^1.0.0" + bcrypt-pbkdf "^1.0.0" + dashdash "^1.12.0" + ecc-jsbn "~0.1.1" + getpass "^0.1.1" + jsbn "~0.1.0" + safer-buffer "^2.0.2" + tweetnacl "~0.14.0" + +ssri@^6.0.1: + version "6.0.2" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.2.tgz#157939134f20464e7301ddba3e90ffa8f7728ac5" + integrity sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q== + dependencies: + figgy-pudding "^3.5.1" + +ssri@^7.0.0: + version "7.1.1" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-7.1.1.tgz#33e44f896a967158e3c63468e47ec46613b95b5f" + integrity sha512-w+daCzXN89PseTL99MkA+fxJEcU3wfaE/ah0i0lnOlpG1CYLJ2ZjzEry68YBKfLs4JfoTShrTEsJkAZuNZ/stw== + dependencies: + figgy-pudding "^3.5.1" + minipass "^3.1.1" + +stable@^0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" + integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== + +stack-utils@^1.0.1: + version "1.0.5" + resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.5.tgz#a19b0b01947e0029c8e451d5d61a498f5bb1471b" + integrity sha512-KZiTzuV3CnSnSvgMRrARVCj+Ht7rMbauGDK0LdVFRGyenwdylpajAp4Q0i6SX8rEmbTpMMf6ryq2gb8pPq2WgQ== + dependencies: + escape-string-regexp "^2.0.0" + +static-extend@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" + integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= + dependencies: + define-property "^0.2.5" + object-copy "^0.1.0" + +"statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2", statuses@~1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" + integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= + +stealthy-require@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" + integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= + +stream-browserify@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" + integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg== + dependencies: + inherits "~2.0.1" + readable-stream "^2.0.2" + +stream-browserify@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-3.0.0.tgz#22b0a2850cdf6503e73085da1fc7b7d0c2122f2f" + integrity sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA== + dependencies: + inherits "~2.0.4" + readable-stream "^3.5.0" + +stream-each@^1.1.0: + version "1.2.3" + resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" + integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw== + dependencies: + end-of-stream "^1.1.0" + stream-shift "^1.0.0" + +stream-http@^2.7.2: + version "2.8.3" + resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" + integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw== + dependencies: + builtin-status-codes "^3.0.0" + inherits "^2.0.1" + readable-stream "^2.3.6" + to-arraybuffer "^1.0.0" + xtend "^4.0.0" + +stream-shift@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" + integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== + +strict-uri-encode@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" + integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM= + +strict-uri-encode@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546" + integrity sha1-ucczDHBChi9rFC3CdLvMWGbONUY= + +string-argv@0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.1.tgz#95e2fbec0427ae19184935f816d74aaa4c5c19da" + integrity sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg== + +string-length@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/string-length/-/string-length-2.0.0.tgz#d40dbb686a3ace960c1cffca562bf2c45f8363ed" + integrity sha1-1A27aGo6zpYMHP/KVivyxF+DY+0= + dependencies: + astral-regex "^1.0.0" + strip-ansi "^4.0.0" + +string-length@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/string-length/-/string-length-3.1.0.tgz#107ef8c23456e187a8abd4a61162ff4ac6e25837" + integrity sha512-Ttp5YvkGm5v9Ijagtaz1BnN+k9ObpvS0eIBblPMp2YWL8FBmi9qblQ9fexc2k/CXFgrTIteU3jAw3payCnwSTA== + dependencies: + astral-regex "^1.0.0" + strip-ansi "^5.2.0" + +string-width@^3.0.0, string-width@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" + integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== + dependencies: + emoji-regex "^7.0.1" + is-fullwidth-code-point "^2.0.0" + strip-ansi "^5.1.0" + +string-width@^4.1.0, string-width@^4.2.0: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string.prototype.matchall@^4.0.2: + version "4.0.6" + resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.6.tgz#5abb5dabc94c7b0ea2380f65ba610b3a544b15fa" + integrity sha512-6WgDX8HmQqvEd7J+G6VtAahhsQIssiZ8zl7zKh1VDMFyL3hRTJP4FTNA3RbIp2TOQ9AYNDcc7e3fH0Qbup+DBg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.1" + get-intrinsic "^1.1.1" + has-symbols "^1.0.2" + internal-slot "^1.0.3" + regexp.prototype.flags "^1.3.1" + side-channel "^1.0.4" + +string.prototype.trimend@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz#e75ae90c2942c63504686c18b287b4a0b1a45f80" + integrity sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + +string.prototype.trimstart@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz#b36399af4ab2999b4c9c648bd7a3fb2bb26feeed" + integrity sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + +string_decoder@^1.0.0, string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~0.10.x: + version "0.10.31" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" + integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ= + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +stringify-object@3.3.0, stringify-object@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629" + integrity sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw== + dependencies: + get-own-enumerable-property-symbols "^3.0.0" + is-obj "^1.0.1" + is-regexp "^1.0.0" + +strip-ansi@6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" + integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== + dependencies: + ansi-regex "^5.0.0" + +strip-ansi@^3.0.0, strip-ansi@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= + dependencies: + ansi-regex "^2.0.0" + +strip-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" + integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= + dependencies: + ansi-regex "^3.0.0" + +strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" + integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== + dependencies: + ansi-regex "^4.1.0" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= + +strip-comments@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/strip-comments/-/strip-comments-1.0.2.tgz#82b9c45e7f05873bee53f37168af930aa368679d" + integrity sha512-kL97alc47hoyIQSV165tTt9rG5dn4w1dNnBhOQ3bOU1Nc1hel09jnXANaHJ7vzHLd4Ju8kseDGzlev96pghLFw== + dependencies: + babel-extract-comments "^1.0.0" + babel-plugin-transform-object-rest-spread "^6.26.0" + +strip-eof@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" + integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= + +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== + +strip-hex-prefix@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz#0c5f155fef1151373377de9dbb588da05500e36f" + integrity sha1-DF8VX+8RUTczd96du1iNoFUA428= + dependencies: + is-hex-prefixed "1.0.0" + +strip-json-comments@^3.0.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +style-loader@0.23.1: + version "0.23.1" + resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.23.1.tgz#cb9154606f3e771ab6c4ab637026a1049174d925" + integrity sha512-XK+uv9kWwhZMZ1y7mysB+zoihsEj4wneFWAS5qoiLwzW0WzSqMrrsIy+a3zkQJq0ipFtBpX5W3MqyRIBF/WFGg== + dependencies: + loader-utils "^1.1.0" + schema-utils "^1.0.0" + +styled-components@^5.3.3: + version "5.3.3" + resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-5.3.3.tgz#312a3d9a549f4708f0fb0edc829eb34bde032743" + integrity sha512-++4iHwBM7ZN+x6DtPPWkCI4vdtwumQ+inA/DdAsqYd4SVgUKJie5vXyzotA00ttcFdQkCng7zc6grwlfIfw+lw== + dependencies: + "@babel/helper-module-imports" "^7.0.0" + "@babel/traverse" "^7.4.5" + "@emotion/is-prop-valid" "^0.8.8" + "@emotion/stylis" "^0.8.4" + "@emotion/unitless" "^0.7.4" + babel-plugin-styled-components ">= 1.12.0" + css-to-react-native "^3.0.0" + hoist-non-react-statics "^3.0.0" + shallowequal "^1.1.0" + supports-color "^5.5.0" + +stylehacks@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-4.0.3.tgz#6718fcaf4d1e07d8a1318690881e8d96726a71d5" + integrity sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g== + dependencies: + browserslist "^4.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" + +supports-color@8.1.1: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + +supports-color@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= + +supports-color@^5.3.0, supports-color@^5.5.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" + integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.0.0, supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + +svg-parser@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/svg-parser/-/svg-parser-2.0.4.tgz#fdc2e29e13951736140b76cb122c8ee6630eb6b5" + integrity sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ== + +svgo@^1.0.0, svgo@^1.2.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.3.2.tgz#b6dc511c063346c9e415b81e43401145b96d4167" + integrity sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw== + dependencies: + chalk "^2.4.1" + coa "^2.0.2" + css-select "^2.0.0" + css-select-base-adapter "^0.1.1" + css-tree "1.0.0-alpha.37" + csso "^4.0.2" + js-yaml "^3.13.1" + mkdirp "~0.5.1" + object.values "^1.1.0" + sax "~1.2.4" + stable "^0.1.8" + unquote "~1.1.1" + util.promisify "~1.0.0" + +swarm-js@^0.1.40: + version "0.1.40" + resolved "https://registry.yarnpkg.com/swarm-js/-/swarm-js-0.1.40.tgz#b1bc7b6dcc76061f6c772203e004c11997e06b99" + integrity sha512-yqiOCEoA4/IShXkY3WKwP5PvZhmoOOD8clsKA7EEcRILMkTEYHCQ21HDCAcVpmIxZq4LyZvWeRJ6quIyHk1caA== + dependencies: + bluebird "^3.5.0" + buffer "^5.0.5" + eth-lib "^0.1.26" + fs-extra "^4.0.2" + got "^7.1.0" + mime-types "^2.1.16" + mkdirp-promise "^5.0.1" + mock-fs "^4.1.0" + setimmediate "^1.0.5" + tar "^4.0.2" + xhr-request "^1.0.1" + +symbol-observable@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-2.0.3.tgz#5b521d3d07a43c351055fa43b8355b62d33fd16a" + integrity sha512-sQV7phh2WCYAn81oAkakC5qjq2Ml0g8ozqz03wOGnx9dDlG1de6yrF+0RAzSJD8fPUow3PTSMf2SAbOGxb93BA== + +symbol-tree@^3.2.2: + version "3.2.4" + resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" + integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== + +table@^5.2.3: + version "5.4.6" + resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e" + integrity sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug== + dependencies: + ajv "^6.10.2" + lodash "^4.17.14" + slice-ansi "^2.1.0" + string-width "^3.0.0" + +tapable@^1.0.0, tapable@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" + integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== + +tar@^4.0.2: + version "4.4.19" + resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.19.tgz#2e4d7263df26f2b914dee10c825ab132123742f3" + integrity sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA== + dependencies: + chownr "^1.1.4" + fs-minipass "^1.2.7" + minipass "^2.9.0" + minizlib "^1.3.3" + mkdirp "^0.5.5" + safe-buffer "^5.2.1" + yallist "^3.1.1" + +temp@^0.9.4: + version "0.9.4" + resolved "https://registry.yarnpkg.com/temp/-/temp-0.9.4.tgz#cd20a8580cb63635d0e4e9d4bd989d44286e7620" + integrity sha512-yYrrsWnrXMcdsnu/7YMYAofM1ktpL5By7vZhf15CrXijWWrEYZks5AXBudalfSWJLlnen/QUJUB5aoB0kqZUGA== + dependencies: + mkdirp "^0.5.1" + rimraf "~2.6.2" + +terser-webpack-plugin@2.3.8: + version "2.3.8" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-2.3.8.tgz#894764a19b0743f2f704e7c2a848c5283a696724" + integrity sha512-/fKw3R+hWyHfYx7Bv6oPqmk4HGQcrWLtV3X6ggvPuwPNHSnzvVV51z6OaaCOus4YLjutYGOz3pEpbhe6Up2s1w== + dependencies: + cacache "^13.0.1" + find-cache-dir "^3.3.1" + jest-worker "^25.4.0" + p-limit "^2.3.0" + schema-utils "^2.6.6" + serialize-javascript "^4.0.0" + source-map "^0.6.1" + terser "^4.6.12" + webpack-sources "^1.4.3" + +terser-webpack-plugin@^1.4.3: + version "1.4.5" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz#a217aefaea330e734ffacb6120ec1fa312d6040b" + integrity sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw== + dependencies: + cacache "^12.0.2" + find-cache-dir "^2.1.0" + is-wsl "^1.1.0" + schema-utils "^1.0.0" + serialize-javascript "^4.0.0" + source-map "^0.6.1" + terser "^4.1.2" + webpack-sources "^1.4.0" + worker-farm "^1.7.0" + +terser@^4.1.2, terser@^4.6.12, terser@^4.6.3: + version "4.8.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.0.tgz#63056343d7c70bb29f3af665865a46fe03a0df17" + integrity sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw== + dependencies: + commander "^2.20.0" + source-map "~0.6.1" + source-map-support "~0.5.12" + +test-exclude@^5.2.3: + version "5.2.3" + resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-5.2.3.tgz#c3d3e1e311eb7ee405e092dac10aefd09091eac0" + integrity sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g== + dependencies: + glob "^7.1.3" + minimatch "^3.0.4" + read-pkg-up "^4.0.0" + require-main-filename "^2.0.0" + +text-table@0.2.0, text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= + +throat@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/throat/-/throat-4.1.0.tgz#89037cbc92c56ab18926e6ba4cbb200e15672a6a" + integrity sha1-iQN8vJLFarGJJua6TLsgDhVnKmo= + +throttle-debounce@^2.1.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/throttle-debounce/-/throttle-debounce-2.3.0.tgz#fd31865e66502071e411817e241465b3e9c372e2" + integrity sha512-H7oLPV0P7+jgvrk+6mwwwBDmxTaxnu9HMXmloNLXwnNO0ZxZ31Orah2n8lU1eMPvsaowP2CX+USCgyovXfdOFQ== + +through2@^2.0.0: + version "2.0.5" + resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" + integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== + dependencies: + readable-stream "~2.3.6" + xtend "~4.0.1" + +through@^2.3.6, through@^2.3.8: + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= + +thunky@^1.0.2: + version "1.1.0" + resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" + integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== + +timed-out@^4.0.0, timed-out@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" + integrity sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8= + +timers-browserify@^2.0.4: + version "2.0.12" + resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.12.tgz#44a45c11fbf407f34f97bccd1577c652361b00ee" + integrity sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ== + dependencies: + setimmediate "^1.0.4" + +timsort@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" + integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q= + +tiny-invariant@^1.0.2: + version "1.2.0" + resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.2.0.tgz#a1141f86b672a9148c72e978a19a73b9b94a15a9" + integrity sha512-1Uhn/aqw5C6RI4KejVeTg6mIS7IqxnLJ8Mv2tV5rTc0qWobay7pDUz6Wi392Cnc8ak1H0F2cjoRzb2/AW4+Fvg== + +tiny-warning@^1.0.0, tiny-warning@^1.0.2, tiny-warning@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754" + integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA== + +tmp@^0.0.33: + version "0.0.33" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== + dependencies: + os-tmpdir "~1.0.2" + +tmpl@1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" + integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== + +to-arraybuffer@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" + integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M= + +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= + +to-object-path@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" + integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= + dependencies: + kind-of "^3.0.2" + +to-readable-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/to-readable-stream/-/to-readable-stream-1.0.0.tgz#ce0aa0c2f3df6adf852efb404a783e77c0475771" + integrity sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q== + +to-regex-range@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" + integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= + dependencies: + is-number "^3.0.0" + repeat-string "^1.6.1" + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +to-regex@^3.0.1, to-regex@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" + integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== + dependencies: + define-property "^2.0.2" + extend-shallow "^3.0.2" + regex-not "^1.0.2" + safe-regex "^1.1.0" + +toggle-selection@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/toggle-selection/-/toggle-selection-1.0.6.tgz#6e45b1263f2017fa0acc7d89d78b15b8bf77da32" + integrity sha1-bkWxJj8gF/oKzH2J14sVuL932jI= + +toidentifier@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" + integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== + +tough-cookie@^2.3.3, tough-cookie@^2.3.4, tough-cookie@^2.5.0, tough-cookie@~2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" + integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== + dependencies: + psl "^1.1.28" + punycode "^2.1.1" + +tr46@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" + integrity sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk= + dependencies: + punycode "^2.1.0" + +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o= + +ts-pnp@1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.1.6.tgz#389a24396d425a0d3162e96d2b4638900fdc289a" + integrity sha512-CrG5GqAAzMT7144Cl+UIFP7mz/iIhiy+xQ6GGcnjTezhALT02uPMRw7tgDSESgB5MsfKt55+GPWw4ir1kVtMIQ== + +ts-pnp@^1.1.6: + version "1.2.0" + resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.2.0.tgz#a500ad084b0798f1c3071af391e65912c86bca92" + integrity sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw== + +tslib@^1.10.0, tslib@^1.8.1, tslib@^1.9.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== + +tslib@^2.0.0, tslib@^2.0.3, tslib@^2.1.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01" + integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw== + +tsutils@^3.17.1: + version "3.21.0" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" + integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== + dependencies: + tslib "^1.8.1" + +tty-browserify@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" + integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY= + +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= + dependencies: + safe-buffer "^5.0.1" + +tweetnacl@^0.14.3, tweetnacl@~0.14.0: + version "0.14.5" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" + integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= + +type-check@~0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" + integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= + dependencies: + prelude-ls "~1.1.2" + +type-fest@^0.21.3: + version "0.21.3" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" + integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== + +type-fest@^0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" + integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== + +type-is@~1.6.18: + version "1.6.18" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" + integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== + dependencies: + media-typer "0.3.0" + mime-types "~2.1.24" + +type@^1.0.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0" + integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== + +type@^2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/type/-/type-2.5.0.tgz#0a2e78c2e77907b252abe5f298c1b01c63f0db3d" + integrity sha512-180WMDQaIMm3+7hGXWf12GtdniDEy7nYcyFMKJn/eZz/6tSLXrUN9V0wKSbMjej0I1WHWbpREDEKHtqPQa9NNw== + +typedarray-to-buffer@3.1.5, typedarray-to-buffer@^3.1.5: + version "3.1.5" + resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" + integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== + dependencies: + is-typedarray "^1.0.0" + +typedarray@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= + +ultron@~1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c" + integrity sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og== + +unbox-primitive@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.1.tgz#085e215625ec3162574dc8859abee78a59b14471" + integrity sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw== + dependencies: + function-bind "^1.1.1" + has-bigints "^1.0.1" + has-symbols "^1.0.2" + which-boxed-primitive "^1.0.2" + +underscore@1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.9.1.tgz#06dce34a0e68a7babc29b365b8e74b8925203961" + integrity sha512-5/4etnCkd9c8gwgowi5/om/mYO5ajCaOgdzj/oW+0eQV9WxKBDZw5+ycmKmeaTXjInS/W0BzpGLo2xR2aBwZdg== + +unicode-canonical-property-names-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" + integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ== + +unicode-match-property-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3" + integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q== + dependencies: + unicode-canonical-property-names-ecmascript "^2.0.0" + unicode-property-aliases-ecmascript "^2.0.0" + +unicode-match-property-value-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz#1a01aa57247c14c568b89775a54938788189a714" + integrity sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw== + +unicode-property-aliases-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz#0a36cb9a585c4f6abd51ad1deddb285c165297c8" + integrity sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ== + +union-value@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" + integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== + dependencies: + arr-union "^3.1.0" + get-value "^2.0.6" + is-extendable "^0.1.1" + set-value "^2.0.1" + +uniq@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" + integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= + +uniqs@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02" + integrity sha1-/+3ks2slKQaW5uFl1KWe25mOawI= + +unique-filename@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" + integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== + dependencies: + unique-slug "^2.0.0" + +unique-slug@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" + integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== + dependencies: + imurmurhash "^0.1.4" + +universalify@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== + +unpipe@1.0.0, unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= + +unquote@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544" + integrity sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ= + +unset-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" + integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= + dependencies: + has-value "^0.3.1" + isobject "^3.0.0" + +upath@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" + integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== + +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + +urix@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" + integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= + +url-loader@2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-2.3.0.tgz#e0e2ef658f003efb8ca41b0f3ffbf76bab88658b" + integrity sha512-goSdg8VY+7nPZKUEChZSEtW5gjbS66USIGCeSJ1OVOJ7Yfuh/36YxCwMi5HVEJh6mqUYOoy3NJ0vlOMrWsSHog== + dependencies: + loader-utils "^1.2.3" + mime "^2.4.4" + schema-utils "^2.5.0" + +url-parse-lax@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73" + integrity sha1-evjzA2Rem9eaJy56FKxovAYJ2nM= + dependencies: + prepend-http "^1.0.1" + +url-parse-lax@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c" + integrity sha1-FrXK/Afb42dsGxmZF3gj1lA6yww= + dependencies: + prepend-http "^2.0.0" + +url-parse@^1.4.3: + version "1.5.4" + resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.4.tgz#e4f645a7e2a0852cc8a66b14b292a3e9a11a97fd" + integrity sha512-ITeAByWWoqutFClc/lRZnFplgXgEZr3WJ6XngMM/N9DMIm4K8zXPCZ1Jdu0rERwO84w1WC5wkle2ubwTA4NTBg== + dependencies: + querystringify "^2.1.1" + requires-port "^1.0.0" + +url-set-query@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/url-set-query/-/url-set-query-1.0.0.tgz#016e8cfd7c20ee05cafe7795e892bd0702faa339" + integrity sha1-AW6M/Xwg7gXK/neV6JK9BwL6ozk= + +url-to-options@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/url-to-options/-/url-to-options-1.0.1.tgz#1505a03a289a48cbd7a434efbaeec5055f5633a9" + integrity sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k= + +url@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" + integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= + dependencies: + punycode "1.3.2" + querystring "0.2.0" + +use-deep-compare-effect@^1.6.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/use-deep-compare-effect/-/use-deep-compare-effect-1.8.1.tgz#ef0ce3b3271edb801da1ec23bf0754ef4189d0c6" + integrity sha512-kbeNVZ9Zkc0RFGpfMN3MNfaKNvcLNyxOAAd9O4CBZ+kCBXXscn9s/4I+8ytUER4RDpEYs5+O6Rs4PqiZ+rHr5Q== + dependencies: + "@babel/runtime" "^7.12.5" + dequal "^2.0.2" + +use@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" + integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== + +utf-8-validate@^5.0.2: + version "5.0.8" + resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-5.0.8.tgz#4a735a61661dbb1c59a0868c397d2fe263f14e58" + integrity sha512-k4dW/Qja1BYDl2qD4tOMB9PFVha/UJtxTc1cXYOe3WwA/2m0Yn4qB7wLMpJyLJ/7DR0XnTut3HsCSzDT4ZvKgA== + dependencies: + node-gyp-build "^4.3.0" + +utf8@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/utf8/-/utf8-3.0.0.tgz#f052eed1364d696e769ef058b183df88c87f69d1" + integrity sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ== + +util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= + +util.promisify@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" + integrity sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA== + dependencies: + define-properties "^1.1.2" + object.getownpropertydescriptors "^2.0.3" + +util.promisify@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.1.1.tgz#77832f57ced2c9478174149cae9b96e9918cd54b" + integrity sha512-/s3UsZUrIfa6xDhr7zZhnE9SLQ5RIXyYfiVnMMyMDzOc8WhWN4Nbh36H842OyurKbCDAesZOJaVyvmSl6fhGQw== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + for-each "^0.3.3" + has-symbols "^1.0.1" + object.getownpropertydescriptors "^2.1.1" + +util.promisify@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.1.tgz#6baf7774b80eeb0f7520d8b81d07982a59abbaee" + integrity sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.2" + has-symbols "^1.0.1" + object.getownpropertydescriptors "^2.1.0" + +util@0.10.3: + version "0.10.3" + resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" + integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk= + dependencies: + inherits "2.0.1" + +util@^0.11.0: + version "0.11.1" + resolved "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61" + integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ== + dependencies: + inherits "2.0.3" + +util@^0.12.0: + version "0.12.4" + resolved "https://registry.yarnpkg.com/util/-/util-0.12.4.tgz#66121a31420df8f01ca0c464be15dfa1d1850253" + integrity sha512-bxZ9qtSlGUWSOy9Qa9Xgk11kSslpuZwaxCg4sNIDj6FLucDab2JxnHwyNTCpHMtK1MjoQiWQ6DiUMZYbSrO+Sw== + dependencies: + inherits "^2.0.3" + is-arguments "^1.0.4" + is-generator-function "^1.0.7" + is-typed-array "^1.1.3" + safe-buffer "^5.1.2" + which-typed-array "^1.1.2" + +utila@~0.4: + version "0.4.0" + resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" + integrity sha1-ihagXURWV6Oupe7MWxKk+lN5dyw= + +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= + +uuid@3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" + integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA== + +uuid@^3.3.2, uuid@^3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" + integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== + +v8-compile-cache@^2.0.3: + version "2.3.0" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" + integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== + +validate-npm-package-license@^3.0.1: + version "3.0.4" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" + integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== + dependencies: + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" + +value-equal@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/value-equal/-/value-equal-1.0.1.tgz#1e0b794c734c5c0cade179c437d356d931a34d6c" + integrity sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw== + +varint@^5.0.0: + version "5.0.2" + resolved "https://registry.yarnpkg.com/varint/-/varint-5.0.2.tgz#5b47f8a947eb668b848e034dcfa87d0ff8a7f7a4" + integrity sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow== + +vary@^1, vary@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= + +vendors@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.4.tgz#e2b800a53e7a29b93506c3cf41100d16c4c4ad8e" + integrity sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w== + +verror@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" + integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= + dependencies: + assert-plus "^1.0.0" + core-util-is "1.0.2" + extsprintf "^1.2.0" + +vm-browserify@^1.0.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" + integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== + +void-elements@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-3.1.0.tgz#614f7fbf8d801f0bb5f0661f5b2f5785750e4f09" + integrity sha1-YU9/v42AHwu18GYfWy9XhXUOTwk= + +w3c-hr-time@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" + integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== + dependencies: + browser-process-hrtime "^1.0.0" + +w3c-xmlserializer@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz#30485ca7d70a6fd052420a3d12fd90e6339ce794" + integrity sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg== + dependencies: + domexception "^1.0.1" + webidl-conversions "^4.0.2" + xml-name-validator "^3.0.0" + +walker@^1.0.7, walker@~1.0.5: + version "1.0.8" + resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" + integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== + dependencies: + makeerror "1.0.12" + +walletlink@^2.3.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/walletlink/-/walletlink-2.4.1.tgz#8fd6c5f154b1305bc928860907a3372c5f3b5225" + integrity sha512-KSeAJOjimJVD5r7XnpmwO84ZFe8pp2K3q8PpxO7cABMwngOYlZfo5zzFa2HIHZehoAskavL5lRXxqawGj6T1cQ== + dependencies: + "@metamask/safe-event-emitter" "2.0.0" + bind-decorator "^1.0.11" + bn.js "^5.1.1" + clsx "^1.1.0" + eth-block-tracker "4.4.3" + eth-json-rpc-filters "4.2.2" + eth-rpc-errors "4.0.2" + js-sha256 "0.9.0" + json-rpc-engine "6.1.0" + keccak "^3.0.1" + preact "^10.5.9" + rxjs "^6.6.3" + stream-browserify "^3.0.0" + +warning@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/warning/-/warning-4.0.3.tgz#16e9e077eb8a86d6af7d64aa1e05fd85b4678ca3" + integrity sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w== + dependencies: + loose-envify "^1.0.0" + +watchpack-chokidar2@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz#38500072ee6ece66f3769936950ea1771be1c957" + integrity sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww== + dependencies: + chokidar "^2.1.8" + +watchpack@^1.6.0: + version "1.7.5" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.7.5.tgz#1267e6c55e0b9b5be44c2023aed5437a2c26c453" + integrity sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ== + dependencies: + graceful-fs "^4.1.2" + neo-async "^2.5.0" + optionalDependencies: + chokidar "^3.4.1" + watchpack-chokidar2 "^2.0.1" + +wbuf@^1.1.0, wbuf@^1.7.3: + version "1.7.3" + resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df" + integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA== + dependencies: + minimalistic-assert "^1.0.0" + +web3-bzz@1.2.11: + version "1.2.11" + resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.2.11.tgz#41bc19a77444bd5365744596d778b811880f707f" + integrity sha512-XGpWUEElGypBjeFyUhTkiPXFbDVD6Nr/S5jznE3t8cWUA0FxRf1n3n/NuIZeb0H9RkN2Ctd/jNma/k8XGa3YKg== + dependencies: + "@types/node" "^12.12.6" + got "9.6.0" + swarm-js "^0.1.40" + underscore "1.9.1" + +web3-bzz@1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.6.1.tgz#8430eb3cbb69baaee4981d190b840748c37a9ec2" + integrity sha512-JbnFNbRlwwHJZPtVuCxo7rC4U4OTg+mPsyhjgPQJJhS0a6Y54OgVWYk9UA/95HqbmTJwTtX329gJoSsseEfrng== + dependencies: + "@types/node" "^12.12.6" + got "9.6.0" + swarm-js "^0.1.40" + +web3-core-helpers@1.2.11: + version "1.2.11" + resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.2.11.tgz#84c681ed0b942c0203f3b324a245a127e8c67a99" + integrity sha512-PEPoAoZd5ME7UfbnCZBdzIerpe74GEvlwT4AjOmHeCVZoIFk7EqvOZDejJHt+feJA6kMVTdd0xzRNN295UhC1A== + dependencies: + underscore "1.9.1" + web3-eth-iban "1.2.11" + web3-utils "1.2.11" + +web3-core-helpers@1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.6.1.tgz#cb21047306871f4cf0fedfece7d47ea2aa96141b" + integrity sha512-om2PZvK1uoWcgMq6JfcSx3241LEIVF6qi2JuHz2SLKiKEW5UsBUaVx0mNCmcZaiuYQCyOsLS3r33q5AdM+v8ng== + dependencies: + web3-eth-iban "1.6.1" + web3-utils "1.6.1" + +web3-core-method@1.2.11: + version "1.2.11" + resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.2.11.tgz#f880137d1507a0124912bf052534f168b8d8fbb6" + integrity sha512-ff0q76Cde94HAxLDZ6DbdmKniYCQVtvuaYh+rtOUMB6kssa5FX0q3vPmixi7NPooFnbKmmZCM6NvXg4IreTPIw== + dependencies: + "@ethersproject/transactions" "^5.0.0-beta.135" + underscore "1.9.1" + web3-core-helpers "1.2.11" + web3-core-promievent "1.2.11" + web3-core-subscriptions "1.2.11" + web3-utils "1.2.11" + +web3-core-method@1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.6.1.tgz#4ae91c639bf1da85ebfd8b99595da6a2235d7b98" + integrity sha512-szH5KyIWIaULQDBdDvevQUCHV9lsExJ/oV0ePqK+w015D2SdMPMuhii0WB+HCePaksWO+rr/GAypvV9g2T3N+w== + dependencies: + "@ethersproject/transactions" "^5.0.0-beta.135" + web3-core-helpers "1.6.1" + web3-core-promievent "1.6.1" + web3-core-subscriptions "1.6.1" + web3-utils "1.6.1" + +web3-core-promievent@1.2.11: + version "1.2.11" + resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.2.11.tgz#51fe97ca0ddec2f99bf8c3306a7a8e4b094ea3cf" + integrity sha512-il4McoDa/Ox9Agh4kyfQ8Ak/9ABYpnF8poBLL33R/EnxLsJOGQG2nZhkJa3I067hocrPSjEdlPt/0bHXsln4qA== + dependencies: + eventemitter3 "4.0.4" + +web3-core-promievent@1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.6.1.tgz#f650dea9361e2edf02691015b213fcc8ea499992" + integrity sha512-byJ5s2MQxrWdXd27pWFmujfzsTZK4ik8rDgIV1RFDFc+rHZ2nZhq+VWk7t/Nkrj7EaVXncEgTdPEHc18nx+ocQ== + dependencies: + eventemitter3 "4.0.4" + +web3-core-requestmanager@1.2.11: + version "1.2.11" + resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.2.11.tgz#fe6eb603fbaee18530293a91f8cf26d8ae28c45a" + integrity sha512-oFhBtLfOiIbmfl6T6gYjjj9igOvtyxJ+fjS+byRxiwFJyJ5BQOz4/9/17gWR1Cq74paTlI7vDGxYfuvfE/mKvA== + dependencies: + underscore "1.9.1" + web3-core-helpers "1.2.11" + web3-providers-http "1.2.11" + web3-providers-ipc "1.2.11" + web3-providers-ws "1.2.11" + +web3-core-requestmanager@1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.6.1.tgz#d9c08b0716c9cda546a0c02767b7e08deb04448a" + integrity sha512-4y7etYEUtkfflyYVBfN1oJtCbVFNhNX1omlEYzezhTnPj3/dT7n+dhUXcqvIhx9iKA13unGfpFge80XNFfcB8A== + dependencies: + util "^0.12.0" + web3-core-helpers "1.6.1" + web3-providers-http "1.6.1" + web3-providers-ipc "1.6.1" + web3-providers-ws "1.6.1" + +web3-core-subscriptions@1.2.11: + version "1.2.11" + resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.2.11.tgz#beca908fbfcb050c16f45f3f0f4c205e8505accd" + integrity sha512-qEF/OVqkCvQ7MPs1JylIZCZkin0aKK9lDxpAtQ1F8niEDGFqn7DT8E/vzbIa0GsOjL2fZjDhWJsaW+BSoAW1gg== + dependencies: + eventemitter3 "4.0.4" + underscore "1.9.1" + web3-core-helpers "1.2.11" + +web3-core-subscriptions@1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.6.1.tgz#4dfc1f74137354d4ac9eaa628aa916c5e2cc8741" + integrity sha512-WZwxsYttIojyGQ5RqxuQcKg0IJdDCFpUe4EncS3QKZwxPqWzGmgyLwE0rm7tP+Ux1waJn5CUaaoSCBxWGSun1g== + dependencies: + eventemitter3 "4.0.4" + web3-core-helpers "1.6.1" + +web3-core@1.2.11: + version "1.2.11" + resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.2.11.tgz#1043cacc1becb80638453cc5b2a14be9050288a7" + integrity sha512-CN7MEYOY5ryo5iVleIWRE3a3cZqVaLlIbIzDPsvQRUfzYnvzZQRZBm9Mq+ttDi2STOOzc1MKylspz/o3yq/LjQ== + dependencies: + "@types/bn.js" "^4.11.5" + "@types/node" "^12.12.6" + bignumber.js "^9.0.0" + web3-core-helpers "1.2.11" + web3-core-method "1.2.11" + web3-core-requestmanager "1.2.11" + web3-utils "1.2.11" + +web3-core@1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.6.1.tgz#b41f08fdc9ea1082d15384a3d6fa93a47c3fc1b4" + integrity sha512-m+b7UfYvU5cQUAh6NRfxRzH/5B3to1AdEQi1HIQt570cDWlObOOmoO9tY6iJnI5w4acxIO19LqjDMqEJGBYyRQ== + dependencies: + "@types/bn.js" "^4.11.5" + "@types/node" "^12.12.6" + bignumber.js "^9.0.0" + web3-core-helpers "1.6.1" + web3-core-method "1.6.1" + web3-core-requestmanager "1.6.1" + web3-utils "1.6.1" + +web3-eth-abi@1.2.11: + version "1.2.11" + resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.2.11.tgz#a887494e5d447c2926d557a3834edd66e17af9b0" + integrity sha512-PkRYc0+MjuLSgg03QVWqWlQivJqRwKItKtEpRUaxUAeLE7i/uU39gmzm2keHGcQXo3POXAbOnMqkDvOep89Crg== + dependencies: + "@ethersproject/abi" "5.0.0-beta.153" + underscore "1.9.1" + web3-utils "1.2.11" + +web3-eth-abi@1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.6.1.tgz#15b937e3188570754d50bbac51a4bb0578600d1d" + integrity sha512-svhYrAlXP9XQtV7poWKydwDJq2CaNLMtmKydNXoOBLcQec6yGMP+v20pgrxF2H6wyTK+Qy0E3/5ciPOqC/VuoQ== + dependencies: + "@ethersproject/abi" "5.0.7" + web3-utils "1.6.1" + +web3-eth-accounts@1.2.11: + version "1.2.11" + resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.2.11.tgz#a9e3044da442d31903a7ce035a86d8fa33f90520" + integrity sha512-6FwPqEpCfKIh3nSSGeo3uBm2iFSnFJDfwL3oS9pyegRBXNsGRVpgiW63yhNzL0796StsvjHWwQnQHsZNxWAkGw== + dependencies: + crypto-browserify "3.12.0" + eth-lib "0.2.8" + ethereumjs-common "^1.3.2" + ethereumjs-tx "^2.1.1" + scrypt-js "^3.0.1" + underscore "1.9.1" + uuid "3.3.2" + web3-core "1.2.11" + web3-core-helpers "1.2.11" + web3-core-method "1.2.11" + web3-utils "1.2.11" + +web3-eth-accounts@1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.6.1.tgz#aeb0dfb52c4391773550569732975b471212583f" + integrity sha512-rGn3jwnuOKwaQRu4SiShz0YAQ87aVDBKs4HO43+XTCI1q1Y1jn3NOsG3BW9ZHaOckev4+zEyxze/Bsh2oEk24w== + dependencies: + "@ethereumjs/common" "^2.5.0" + "@ethereumjs/tx" "^3.3.2" + crypto-browserify "3.12.0" + eth-lib "0.2.8" + ethereumjs-util "^7.0.10" + scrypt-js "^3.0.1" + uuid "3.3.2" + web3-core "1.6.1" + web3-core-helpers "1.6.1" + web3-core-method "1.6.1" + web3-utils "1.6.1" + +web3-eth-contract@1.2.11: + version "1.2.11" + resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.2.11.tgz#917065902bc27ce89da9a1da26e62ef663663b90" + integrity sha512-MzYuI/Rq2o6gn7vCGcnQgco63isPNK5lMAan2E51AJLknjSLnOxwNY3gM8BcKoy4Z+v5Dv00a03Xuk78JowFow== + dependencies: + "@types/bn.js" "^4.11.5" + underscore "1.9.1" + web3-core "1.2.11" + web3-core-helpers "1.2.11" + web3-core-method "1.2.11" + web3-core-promievent "1.2.11" + web3-core-subscriptions "1.2.11" + web3-eth-abi "1.2.11" + web3-utils "1.2.11" + +web3-eth-contract@1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.6.1.tgz#4b0a2c0b37015d70146e54c7cb3f035a58fbeec0" + integrity sha512-GXqTe3mF6kpbOAakiNc7wtJ120/gpuKMTZjuGFKeeY8aobRLfbfgKzM9IpyqVZV2v5RLuGXDuurVN2KPgtu3hQ== + dependencies: + "@types/bn.js" "^4.11.5" + web3-core "1.6.1" + web3-core-helpers "1.6.1" + web3-core-method "1.6.1" + web3-core-promievent "1.6.1" + web3-core-subscriptions "1.6.1" + web3-eth-abi "1.6.1" + web3-utils "1.6.1" + +web3-eth-ens@1.2.11: + version "1.2.11" + resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.2.11.tgz#26d4d7f16d6cbcfff918e39832b939edc3162532" + integrity sha512-dbW7dXP6HqT1EAPvnniZVnmw6TmQEKF6/1KgAxbo8iBBYrVTMDGFQUUnZ+C4VETGrwwaqtX4L9d/FrQhZ6SUiA== + dependencies: + content-hash "^2.5.2" + eth-ens-namehash "2.0.8" + underscore "1.9.1" + web3-core "1.2.11" + web3-core-helpers "1.2.11" + web3-core-promievent "1.2.11" + web3-eth-abi "1.2.11" + web3-eth-contract "1.2.11" + web3-utils "1.2.11" + +web3-eth-ens@1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.6.1.tgz#801bd5fb5237377ec2ed8517a9fe4634f2269c7a" + integrity sha512-ngprtbnoRgxg8s1wXt9nXpD3h1P+p7XnKXrp/8GdFI9uDmrbSQPRfzBw86jdZgOmy78hAnWmrHI6pBInmgi2qQ== + dependencies: + content-hash "^2.5.2" + eth-ens-namehash "2.0.8" + web3-core "1.6.1" + web3-core-helpers "1.6.1" + web3-core-promievent "1.6.1" + web3-eth-abi "1.6.1" + web3-eth-contract "1.6.1" + web3-utils "1.6.1" + +web3-eth-iban@1.2.11: + version "1.2.11" + resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.2.11.tgz#f5f73298305bc7392e2f188bf38a7362b42144ef" + integrity sha512-ozuVlZ5jwFC2hJY4+fH9pIcuH1xP0HEFhtWsR69u9uDIANHLPQQtWYmdj7xQ3p2YT4bQLq/axKhZi7EZVetmxQ== + dependencies: + bn.js "^4.11.9" + web3-utils "1.2.11" + +web3-eth-iban@1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.6.1.tgz#20bbed75723e3e9ff98e624979629d26329462b6" + integrity sha512-91H0jXZnWlOoXmc13O9NuQzcjThnWyAHyDn5Yf7u6mmKOhpJSGF/OHlkbpXt1Y4v2eJdEPaVFa+6i8aRyagE7Q== + dependencies: + bn.js "^4.11.9" + web3-utils "1.6.1" + +web3-eth-personal@1.2.11: + version "1.2.11" + resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.2.11.tgz#a38b3942a1d87a62070ce0622a941553c3d5aa70" + integrity sha512-42IzUtKq9iHZ8K9VN0vAI50iSU9tOA1V7XU2BhF/tb7We2iKBVdkley2fg26TxlOcKNEHm7o6HRtiiFsVK4Ifw== + dependencies: + "@types/node" "^12.12.6" + web3-core "1.2.11" + web3-core-helpers "1.2.11" + web3-core-method "1.2.11" + web3-net "1.2.11" + web3-utils "1.2.11" + +web3-eth-personal@1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.6.1.tgz#9b524fb9f92b51163f46920ee2663d34a4897c8d" + integrity sha512-ItsC89Ln02+irzJjK6ALcLrMZfbVUCqVbmb/ieDKJ+eLW3pNkBNwoUzaydh92d5NzxNZgNxuQWVdlFyYX2hkEw== + dependencies: + "@types/node" "^12.12.6" + web3-core "1.6.1" + web3-core-helpers "1.6.1" + web3-core-method "1.6.1" + web3-net "1.6.1" + web3-utils "1.6.1" + +web3-eth@1.2.11: + version "1.2.11" + resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.2.11.tgz#4c81fcb6285b8caf544058fba3ae802968fdc793" + integrity sha512-REvxW1wJ58AgHPcXPJOL49d1K/dPmuw4LjPLBPStOVkQjzDTVmJEIsiLwn2YeuNDd4pfakBwT8L3bz1G1/wVsQ== + dependencies: + underscore "1.9.1" + web3-core "1.2.11" + web3-core-helpers "1.2.11" + web3-core-method "1.2.11" + web3-core-subscriptions "1.2.11" + web3-eth-abi "1.2.11" + web3-eth-accounts "1.2.11" + web3-eth-contract "1.2.11" + web3-eth-ens "1.2.11" + web3-eth-iban "1.2.11" + web3-eth-personal "1.2.11" + web3-net "1.2.11" + web3-utils "1.2.11" + +web3-eth@1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.6.1.tgz#a25aba1ac213d872ecf3f81c7b4ab8072ecae224" + integrity sha512-kOV1ZgCKypSo5BQyltRArS7ZC3bRpIKAxSgzl7pUFinUb/MxfbM9KGeNxUXoCfTSErcCQJaDjcS6bSre5EMKuQ== + dependencies: + web3-core "1.6.1" + web3-core-helpers "1.6.1" + web3-core-method "1.6.1" + web3-core-subscriptions "1.6.1" + web3-eth-abi "1.6.1" + web3-eth-accounts "1.6.1" + web3-eth-contract "1.6.1" + web3-eth-ens "1.6.1" + web3-eth-iban "1.6.1" + web3-eth-personal "1.6.1" + web3-net "1.6.1" + web3-utils "1.6.1" + +web3-net@1.2.11: + version "1.2.11" + resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.2.11.tgz#eda68ef25e5cdb64c96c39085cdb74669aabbe1b" + integrity sha512-sjrSDj0pTfZouR5BSTItCuZ5K/oZPVdVciPQ6981PPPIwJJkCMeVjD7I4zO3qDPCnBjBSbWvVnLdwqUBPtHxyg== + dependencies: + web3-core "1.2.11" + web3-core-method "1.2.11" + web3-utils "1.2.11" + +web3-net@1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.6.1.tgz#7a630a804ec9f81908ae52ccbb4ebbb9530b3906" + integrity sha512-gpnqKEIwfUHh5ik7wsQFlCje1DfcmGv+Sk7LCh1hCqn++HEDQxJ/mZCrMo11ZZpZHCH7c87imdxTg96GJnRxDw== + dependencies: + web3-core "1.6.1" + web3-core-method "1.6.1" + web3-utils "1.6.1" + +web3-provider-engine@16.0.1: + version "16.0.1" + resolved "https://registry.yarnpkg.com/web3-provider-engine/-/web3-provider-engine-16.0.1.tgz#2600a39ede364cdc0a1fc773bf40a94f2177e605" + integrity sha512-/Eglt2aocXMBiDj7Se/lyZnNDaHBaoJlaUfbP5HkLJQC/HlGbR+3/W+dINirlJDhh7b54DzgykqY7ksaU5QgTg== + dependencies: + async "^2.5.0" + backoff "^2.5.0" + clone "^2.0.0" + cross-fetch "^2.1.0" + eth-block-tracker "^4.4.2" + eth-json-rpc-filters "^4.2.1" + eth-json-rpc-infura "^5.1.0" + eth-json-rpc-middleware "^6.0.0" + eth-rpc-errors "^3.0.0" + eth-sig-util "^1.4.2" + ethereumjs-block "^1.2.2" + ethereumjs-tx "^1.2.0" + ethereumjs-util "^5.1.5" + ethereumjs-vm "^2.3.4" + json-stable-stringify "^1.0.1" + promise-to-callback "^1.0.0" + readable-stream "^2.2.9" + request "^2.85.0" + semaphore "^1.0.3" + ws "^5.1.1" + xhr "^2.2.0" + xtend "^4.0.1" + +web3-providers-http@1.2.11: + version "1.2.11" + resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.2.11.tgz#1cd03442c61670572d40e4dcdf1faff8bd91e7c6" + integrity sha512-psh4hYGb1+ijWywfwpB2cvvOIMISlR44F/rJtYkRmQ5jMvG4FOCPlQJPiHQZo+2cc3HbktvvSJzIhkWQJdmvrA== + dependencies: + web3-core-helpers "1.2.11" + xhr2-cookies "1.1.0" + +web3-providers-http@1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.6.1.tgz#b59b14eefef23b98c327806f5f566303a73bd435" + integrity sha512-xBoKOJxu10+kO3ikamXmBfrWZ/xpQOGy0ocdp7Y81B17En5TXELwlmMXt1UlIgWiyYDhjq4OwlH/VODYqHXy3A== + dependencies: + web3-core-helpers "1.6.1" + xhr2-cookies "1.1.0" + +web3-providers-ipc@1.2.11: + version "1.2.11" + resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.2.11.tgz#d16d6c9be1be6e0b4f4536c4acc16b0f4f27ef21" + integrity sha512-yhc7Y/k8hBV/KlELxynWjJDzmgDEDjIjBzXK+e0rHBsYEhdCNdIH5Psa456c+l0qTEU2YzycF8VAjYpWfPnBpQ== + dependencies: + oboe "2.1.4" + underscore "1.9.1" + web3-core-helpers "1.2.11" + +web3-providers-ipc@1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.6.1.tgz#7ba460589d46896bb3d124288deed1b6a72d517e" + integrity sha512-anyoIZlpMzwEQI4lwylTzDrHsVp20v0QUtSTp2B5jInBinmQtyCE7vnbX20jEQ4j5uPwfJabKNtoJsk6a3O4WQ== + dependencies: + oboe "2.1.5" + web3-core-helpers "1.6.1" + +web3-providers-ws@1.2.11: + version "1.2.11" + resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.2.11.tgz#a1dfd6d9778d840561d9ec13dd453046451a96bb" + integrity sha512-ZxnjIY1Er8Ty+cE4migzr43zA/+72AF1myzsLaU5eVgdsfV7Jqx7Dix1hbevNZDKFlSoEyq/3j/jYalh3So1Zg== + dependencies: + eventemitter3 "4.0.4" + underscore "1.9.1" + web3-core-helpers "1.2.11" + websocket "^1.0.31" + +web3-providers-ws@1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.6.1.tgz#f7ee71f158971102b865e99ea7911f483e0507e9" + integrity sha512-FWMEFYb4rYFYRgSFBf/O1Ex4p/YKSlN+JydCtdlJwRimd89qm95CTfs4xGjCskwvXMjV2sarH+f1NPwJXicYpg== + dependencies: + eventemitter3 "4.0.4" + web3-core-helpers "1.6.1" + websocket "^1.0.32" + +web3-shh@1.2.11: + version "1.2.11" + resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.2.11.tgz#f5d086f9621c9a47e98d438010385b5f059fd88f" + integrity sha512-B3OrO3oG1L+bv3E1sTwCx66injW1A8hhwpknDUbV+sw3fehFazA06z9SGXUefuFI1kVs4q2vRi0n4oCcI4dZDg== + dependencies: + web3-core "1.2.11" + web3-core-method "1.2.11" + web3-core-subscriptions "1.2.11" + web3-net "1.2.11" + +web3-shh@1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.6.1.tgz#eebaab2e5e6be80fe2585c6c094fa10a03349ca7" + integrity sha512-oP00HbAtybLCGlLOZUYXOdeB9xq88k2l0TtStvKBtmFqRt+zVk5TxEeuOnVPRxNhcA2Un8RUw6FtvgZlWStu9A== + dependencies: + web3-core "1.6.1" + web3-core-method "1.6.1" + web3-core-subscriptions "1.6.1" + web3-net "1.6.1" + +web3-utils@1.2.11: + version "1.2.11" + resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.2.11.tgz#af1942aead3fb166ae851a985bed8ef2c2d95a82" + integrity sha512-3Tq09izhD+ThqHEaWYX4VOT7dNPdZiO+c/1QMA0s5X2lDFKK/xHJb7cyTRRVzN2LvlHbR7baS1tmQhSua51TcQ== + dependencies: + bn.js "^4.11.9" + eth-lib "0.2.8" + ethereum-bloom-filters "^1.0.6" + ethjs-unit "0.1.6" + number-to-bn "1.7.0" + randombytes "^2.1.0" + underscore "1.9.1" + utf8 "3.0.0" + +web3-utils@1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.6.1.tgz#befcb23922b00603ab56d8c5b4158468dc494aca" + integrity sha512-RidGKv5kOkcerI6jQqDFDoTllQQqV+rPhTzZHhmbqtFObbYpU93uc+yG1LHivRTQhA6llIx67iudc/vzisgO+w== + dependencies: + bn.js "^4.11.9" + ethereum-bloom-filters "^1.0.6" + ethereumjs-util "^7.1.0" + ethjs-unit "0.1.6" + number-to-bn "1.7.0" + randombytes "^2.1.0" + utf8 "3.0.0" + +web3@1.2.11: + version "1.2.11" + resolved "https://registry.yarnpkg.com/web3/-/web3-1.2.11.tgz#50f458b2e8b11aa37302071c170ed61cff332975" + integrity sha512-mjQ8HeU41G6hgOYm1pmeH0mRAeNKJGnJEUzDMoerkpw7QUQT4exVREgF1MYPvL/z6vAshOXei25LE/t/Bxl8yQ== + dependencies: + web3-bzz "1.2.11" + web3-core "1.2.11" + web3-eth "1.2.11" + web3-eth-personal "1.2.11" + web3-net "1.2.11" + web3-shh "1.2.11" + web3-utils "1.2.11" + +web3@^1.5.0: + version "1.6.1" + resolved "https://registry.yarnpkg.com/web3/-/web3-1.6.1.tgz#c9e68fe7b3073adddf35393441f950ec69b92735" + integrity sha512-c299lLiyb2/WOcxh7TinwvbATaMmrgNIeAzbLbmOKHI0LcwyfsB1eu2ReOIrfrCYDYRW2KAjYr7J7gHawqDNPQ== + dependencies: + web3-bzz "1.6.1" + web3-core "1.6.1" + web3-eth "1.6.1" + web3-eth-personal "1.6.1" + web3-net "1.6.1" + web3-shh "1.6.1" + web3-utils "1.6.1" + +web3modal@^1.9.1: + version "1.9.5" + resolved "https://registry.yarnpkg.com/web3modal/-/web3modal-1.9.5.tgz#a1d6351a11358b376af5772f79f3dcdba6c38d1b" + integrity sha512-L5ME6zgoaCDa+T66skW9WpxGOJX6vU9v+7aLacoQJhU3AMTk784ionpX+Pg4UdhdM+UQW+odge32GkwEX11czQ== + dependencies: + detect-browser "^5.1.0" + prop-types "^15.7.2" + react "^16.8.6" + react-dom "^16.8.6" + styled-components "^5.3.3" + tslib "^1.10.0" + +webidl-conversions@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + integrity sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE= + +webidl-conversions@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" + integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== + +webpack-dev-middleware@^3.7.2: + version "3.7.3" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz#0639372b143262e2b84ab95d3b91a7597061c2c5" + integrity sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ== + dependencies: + memory-fs "^0.4.1" + mime "^2.4.4" + mkdirp "^0.5.1" + range-parser "^1.2.1" + webpack-log "^2.0.0" + +webpack-dev-server@3.11.0: + version "3.11.0" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.11.0.tgz#8f154a3bce1bcfd1cc618ef4e703278855e7ff8c" + integrity sha512-PUxZ+oSTxogFQgkTtFndEtJIPNmml7ExwufBZ9L2/Xyyd5PnOL5UreWe5ZT7IU25DSdykL9p1MLQzmLh2ljSeg== + dependencies: + ansi-html "0.0.7" + bonjour "^3.5.0" + chokidar "^2.1.8" + compression "^1.7.4" + connect-history-api-fallback "^1.6.0" + debug "^4.1.1" + del "^4.1.1" + express "^4.17.1" + html-entities "^1.3.1" + http-proxy-middleware "0.19.1" + import-local "^2.0.0" + internal-ip "^4.3.0" + ip "^1.1.5" + is-absolute-url "^3.0.3" + killable "^1.0.1" + loglevel "^1.6.8" + opn "^5.5.0" + p-retry "^3.0.1" + portfinder "^1.0.26" + schema-utils "^1.0.0" + selfsigned "^1.10.7" + semver "^6.3.0" + serve-index "^1.9.1" + sockjs "0.3.20" + sockjs-client "1.4.0" + spdy "^4.0.2" + strip-ansi "^3.0.1" + supports-color "^6.1.0" + url "^0.11.0" + webpack-dev-middleware "^3.7.2" + webpack-log "^2.0.0" + ws "^6.2.1" + yargs "^13.3.2" + +webpack-log@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/webpack-log/-/webpack-log-2.0.0.tgz#5b7928e0637593f119d32f6227c1e0ac31e1b47f" + integrity sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg== + dependencies: + ansi-colors "^3.0.0" + uuid "^3.3.2" + +webpack-manifest-plugin@2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/webpack-manifest-plugin/-/webpack-manifest-plugin-2.2.0.tgz#19ca69b435b0baec7e29fbe90fb4015de2de4f16" + integrity sha512-9S6YyKKKh/Oz/eryM1RyLVDVmy3NSPV0JXMRhZ18fJsq+AwGxUY34X54VNwkzYcEmEkDwNxuEOboCZEebJXBAQ== + dependencies: + fs-extra "^7.0.0" + lodash ">=3.5 <5" + object.entries "^1.1.0" + tapable "^1.0.0" + +webpack-sources@^1.1.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1, webpack-sources@^1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" + integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== + dependencies: + source-list-map "^2.0.0" + source-map "~0.6.1" + +webpack@4.42.0: + version "4.42.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.42.0.tgz#b901635dd6179391d90740a63c93f76f39883eb8" + integrity sha512-EzJRHvwQyBiYrYqhyjW9AqM90dE4+s1/XtCfn7uWg6cS72zH+2VPFAlsnW0+W0cDi0XRjNKUMoJtpSi50+Ph6w== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-module-context" "1.8.5" + "@webassemblyjs/wasm-edit" "1.8.5" + "@webassemblyjs/wasm-parser" "1.8.5" + acorn "^6.2.1" + ajv "^6.10.2" + ajv-keywords "^3.4.1" + chrome-trace-event "^1.0.2" + enhanced-resolve "^4.1.0" + eslint-scope "^4.0.3" + json-parse-better-errors "^1.0.2" + loader-runner "^2.4.0" + loader-utils "^1.2.3" + memory-fs "^0.4.1" + micromatch "^3.1.10" + mkdirp "^0.5.1" + neo-async "^2.6.1" + node-libs-browser "^2.2.1" + schema-utils "^1.0.0" + tapable "^1.1.3" + terser-webpack-plugin "^1.4.3" + watchpack "^1.6.0" + webpack-sources "^1.4.1" + +websocket-driver@0.6.5: + version "0.6.5" + resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.6.5.tgz#5cb2556ceb85f4373c6d8238aa691c8454e13a36" + integrity sha1-XLJVbOuF9Dc8bYI4qmkchFThOjY= + dependencies: + websocket-extensions ">=0.1.1" + +websocket-driver@>=0.5.1: + version "0.7.4" + resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" + integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== + dependencies: + http-parser-js ">=0.5.1" + safe-buffer ">=5.1.0" + websocket-extensions ">=0.1.1" + +websocket-extensions@>=0.1.1: + version "0.1.4" + resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" + integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== + +websocket@^1.0.31, websocket@^1.0.32: + version "1.0.34" + resolved "https://registry.yarnpkg.com/websocket/-/websocket-1.0.34.tgz#2bdc2602c08bf2c82253b730655c0ef7dcab3111" + integrity sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ== + dependencies: + bufferutil "^4.0.1" + debug "^2.2.0" + es5-ext "^0.10.50" + typedarray-to-buffer "^3.1.5" + utf-8-validate "^5.0.2" + yaeti "^0.0.6" + +whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.3, whatwg-encoding@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" + integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== + dependencies: + iconv-lite "0.4.24" + +whatwg-fetch@2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz#dde6a5df315f9d39991aa17621853d720b85566f" + integrity sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng== + +whatwg-fetch@^3.0.0: + version "3.6.2" + resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz#dced24f37f2624ed0281725d51d0e2e3fe677f8c" + integrity sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA== + +whatwg-mimetype@^2.1.0, whatwg-mimetype@^2.2.0, whatwg-mimetype@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" + integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== + +whatwg-url@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" + integrity sha1-lmRU6HZUYuN2RNNib2dCzotwll0= + dependencies: + tr46 "~0.0.3" + webidl-conversions "^3.0.0" + +whatwg-url@^6.4.1: + version "6.5.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-6.5.0.tgz#f2df02bff176fd65070df74ad5ccbb5a199965a8" + integrity sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ== + dependencies: + lodash.sortby "^4.7.0" + tr46 "^1.0.1" + webidl-conversions "^4.0.2" + +whatwg-url@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.1.0.tgz#c2c492f1eca612988efd3d2266be1b9fc6170d06" + integrity sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg== + dependencies: + lodash.sortby "^4.7.0" + tr46 "^1.0.1" + webidl-conversions "^4.0.2" + +which-boxed-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" + integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== + dependencies: + is-bigint "^1.0.1" + is-boolean-object "^1.1.0" + is-number-object "^1.0.4" + is-string "^1.0.5" + is-symbol "^1.0.3" + +which-module@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" + integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= + +which-typed-array@^1.1.2: + version "1.1.7" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.7.tgz#2761799b9a22d4b8660b3c1b40abaa7739691793" + integrity sha512-vjxaB4nfDqwKI0ws7wZpxIlde1XrLX5uB0ZjpfshgmapJMD7jJWhZI+yToJTqaFByF0eNBcYxbjmCzoRP7CfEw== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + es-abstract "^1.18.5" + foreach "^2.0.5" + has-tostringtag "^1.0.0" + is-typed-array "^1.1.7" + +which@^1.2.9, which@^1.3.0, which@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +word-wrap@~1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" + integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== + +workbox-background-sync@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-background-sync/-/workbox-background-sync-4.3.1.tgz#26821b9bf16e9e37fd1d640289edddc08afd1950" + integrity sha512-1uFkvU8JXi7L7fCHVBEEnc3asPpiAL33kO495UMcD5+arew9IbKW2rV5lpzhoWcm/qhGB89YfO4PmB/0hQwPRg== + dependencies: + workbox-core "^4.3.1" + +workbox-broadcast-update@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-broadcast-update/-/workbox-broadcast-update-4.3.1.tgz#e2c0280b149e3a504983b757606ad041f332c35b" + integrity sha512-MTSfgzIljpKLTBPROo4IpKjESD86pPFlZwlvVG32Kb70hW+aob4Jxpblud8EhNb1/L5m43DUM4q7C+W6eQMMbA== + dependencies: + workbox-core "^4.3.1" + +workbox-build@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-build/-/workbox-build-4.3.1.tgz#414f70fb4d6de47f6538608b80ec52412d233e64" + integrity sha512-UHdwrN3FrDvicM3AqJS/J07X0KXj67R8Cg0waq1MKEOqzo89ap6zh6LmaLnRAjpB+bDIz+7OlPye9iii9KBnxw== + dependencies: + "@babel/runtime" "^7.3.4" + "@hapi/joi" "^15.0.0" + common-tags "^1.8.0" + fs-extra "^4.0.2" + glob "^7.1.3" + lodash.template "^4.4.0" + pretty-bytes "^5.1.0" + stringify-object "^3.3.0" + strip-comments "^1.0.2" + workbox-background-sync "^4.3.1" + workbox-broadcast-update "^4.3.1" + workbox-cacheable-response "^4.3.1" + workbox-core "^4.3.1" + workbox-expiration "^4.3.1" + workbox-google-analytics "^4.3.1" + workbox-navigation-preload "^4.3.1" + workbox-precaching "^4.3.1" + workbox-range-requests "^4.3.1" + workbox-routing "^4.3.1" + workbox-strategies "^4.3.1" + workbox-streams "^4.3.1" + workbox-sw "^4.3.1" + workbox-window "^4.3.1" + +workbox-cacheable-response@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-cacheable-response/-/workbox-cacheable-response-4.3.1.tgz#f53e079179c095a3f19e5313b284975c91428c91" + integrity sha512-Rp5qlzm6z8IOvnQNkCdO9qrDgDpoPNguovs0H8C+wswLuPgSzSp9p2afb5maUt9R1uTIwOXrVQMmPfPypv+npw== + dependencies: + workbox-core "^4.3.1" + +workbox-core@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-core/-/workbox-core-4.3.1.tgz#005d2c6a06a171437afd6ca2904a5727ecd73be6" + integrity sha512-I3C9jlLmMKPxAC1t0ExCq+QoAMd0vAAHULEgRZ7kieCdUd919n53WC0AfvokHNwqRhGn+tIIj7vcb5duCjs2Kg== + +workbox-expiration@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-expiration/-/workbox-expiration-4.3.1.tgz#d790433562029e56837f341d7f553c4a78ebe921" + integrity sha512-vsJLhgQsQouv9m0rpbXubT5jw0jMQdjpkum0uT+d9tTwhXcEZks7qLfQ9dGSaufTD2eimxbUOJfWLbNQpIDMPw== + dependencies: + workbox-core "^4.3.1" + +workbox-google-analytics@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-google-analytics/-/workbox-google-analytics-4.3.1.tgz#9eda0183b103890b5c256e6f4ea15a1f1548519a" + integrity sha512-xzCjAoKuOb55CBSwQrbyWBKqp35yg1vw9ohIlU2wTy06ZrYfJ8rKochb1MSGlnoBfXGWss3UPzxR5QL5guIFdg== + dependencies: + workbox-background-sync "^4.3.1" + workbox-core "^4.3.1" + workbox-routing "^4.3.1" + workbox-strategies "^4.3.1" + +workbox-navigation-preload@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-navigation-preload/-/workbox-navigation-preload-4.3.1.tgz#29c8e4db5843803b34cd96dc155f9ebd9afa453d" + integrity sha512-K076n3oFHYp16/C+F8CwrRqD25GitA6Rkd6+qAmLmMv1QHPI2jfDwYqrytOfKfYq42bYtW8Pr21ejZX7GvALOw== + dependencies: + workbox-core "^4.3.1" + +workbox-precaching@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-precaching/-/workbox-precaching-4.3.1.tgz#9fc45ed122d94bbe1f0ea9584ff5940960771cba" + integrity sha512-piSg/2csPoIi/vPpp48t1q5JLYjMkmg5gsXBQkh/QYapCdVwwmKlU9mHdmy52KsDGIjVaqEUMFvEzn2LRaigqQ== + dependencies: + workbox-core "^4.3.1" + +workbox-range-requests@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-range-requests/-/workbox-range-requests-4.3.1.tgz#f8a470188922145cbf0c09a9a2d5e35645244e74" + integrity sha512-S+HhL9+iTFypJZ/yQSl/x2Bf5pWnbXdd3j57xnb0V60FW1LVn9LRZkPtneODklzYuFZv7qK6riZ5BNyc0R0jZA== + dependencies: + workbox-core "^4.3.1" + +workbox-routing@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-routing/-/workbox-routing-4.3.1.tgz#a675841af623e0bb0c67ce4ed8e724ac0bed0cda" + integrity sha512-FkbtrODA4Imsi0p7TW9u9MXuQ5P4pVs1sWHK4dJMMChVROsbEltuE79fBoIk/BCztvOJ7yUpErMKa4z3uQLX+g== + dependencies: + workbox-core "^4.3.1" + +workbox-strategies@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-strategies/-/workbox-strategies-4.3.1.tgz#d2be03c4ef214c115e1ab29c9c759c9fe3e9e646" + integrity sha512-F/+E57BmVG8dX6dCCopBlkDvvhg/zj6VDs0PigYwSN23L8hseSRwljrceU2WzTvk/+BSYICsWmRq5qHS2UYzhw== + dependencies: + workbox-core "^4.3.1" + +workbox-streams@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-streams/-/workbox-streams-4.3.1.tgz#0b57da70e982572de09c8742dd0cb40a6b7c2cc3" + integrity sha512-4Kisis1f/y0ihf4l3u/+ndMkJkIT4/6UOacU3A4BwZSAC9pQ9vSvJpIi/WFGQRH/uPXvuVjF5c2RfIPQFSS2uA== + dependencies: + workbox-core "^4.3.1" + +workbox-sw@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-sw/-/workbox-sw-4.3.1.tgz#df69e395c479ef4d14499372bcd84c0f5e246164" + integrity sha512-0jXdusCL2uC5gM3yYFT6QMBzKfBr2XTk0g5TPAV4y8IZDyVNDyj1a8uSXy3/XrvkVTmQvLN4O5k3JawGReXr9w== + +workbox-webpack-plugin@4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-webpack-plugin/-/workbox-webpack-plugin-4.3.1.tgz#47ff5ea1cc074b6c40fb5a86108863a24120d4bd" + integrity sha512-gJ9jd8Mb8wHLbRz9ZvGN57IAmknOipD3W4XNE/Lk/4lqs5Htw4WOQgakQy/o/4CoXQlMCYldaqUg+EJ35l9MEQ== + dependencies: + "@babel/runtime" "^7.0.0" + json-stable-stringify "^1.0.1" + workbox-build "^4.3.1" + +workbox-window@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-window/-/workbox-window-4.3.1.tgz#ee6051bf10f06afa5483c9b8dfa0531994ede0f3" + integrity sha512-C5gWKh6I58w3GeSc0wp2Ne+rqVw8qwcmZnQGpjiek8A2wpbxSJb1FdCoQVO+jDJs35bFgo/WETgl1fqgsxN0Hg== + dependencies: + workbox-core "^4.3.1" + +worker-farm@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" + integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw== + dependencies: + errno "~0.1.7" + +worker-rpc@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/worker-rpc/-/worker-rpc-0.1.1.tgz#cb565bd6d7071a8f16660686051e969ad32f54d5" + integrity sha512-P1WjMrUB3qgJNI9jfmpZ/htmBEjFh//6l/5y8SD9hg1Ef5zTTVVoRjTrTEzPrNBQvmhMxkoTsjOXN10GWU7aCg== + dependencies: + microevent.ts "~0.1.1" + +wrap-ansi@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" + integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== + dependencies: + ansi-styles "^3.2.0" + string-width "^3.0.0" + strip-ansi "^5.0.0" + +wrap-ansi@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + +write-file-atomic@2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.1.tgz#d0b05463c188ae804396fd5ab2a370062af87529" + integrity sha512-TGHFeZEZMnv+gBFRfjAcxL5bPHrsGKtnb4qsFAws7/vlh+QfwAaySIw4AXP9ZskTTh5GWu3FLuJhsWVdiJPGvg== + dependencies: + graceful-fs "^4.1.11" + imurmurhash "^0.1.4" + signal-exit "^3.0.2" + +write@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3" + integrity sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig== + dependencies: + mkdirp "^0.5.1" + +ws@7.3.0: + version "7.3.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.3.0.tgz#4b2f7f219b3d3737bc1a2fbf145d825b94d38ffd" + integrity sha512-iFtXzngZVXPGgpTlP1rBqsUK82p9tKqsWRPg5L56egiljujJT3vGAYnHANvFxBieXrTFavhzhxW52jnaWV+w2w== + +ws@7.4.6: + version "7.4.6" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" + integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== + +ws@7.5.3: + version "7.5.3" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.3.tgz#160835b63c7d97bfab418fc1b8a9fced2ac01a74" + integrity sha512-kQ/dHIzuLrS6Je9+uv81ueZomEwH0qVYstcAQ4/Z93K8zeko9gtAbttJWzoC5ukqXY1PpoouV3+VSOqEAFt5wg== + +ws@^3.0.0: + version "3.3.3" + resolved "https://registry.yarnpkg.com/ws/-/ws-3.3.3.tgz#f1cf84fe2d5e901ebce94efaece785f187a228f2" + integrity sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA== + dependencies: + async-limiter "~1.0.0" + safe-buffer "~5.1.0" + ultron "~1.1.0" + +ws@^5.1.1, ws@^5.2.0: + version "5.2.3" + resolved "https://registry.yarnpkg.com/ws/-/ws-5.2.3.tgz#05541053414921bc29c63bee14b8b0dd50b07b3d" + integrity sha512-jZArVERrMsKUatIdnLzqvcfydI85dvd/Fp1u/VOpfdDWQ4c9qWXe+VIeAbQ5FrDwciAkr+lzofXLz3Kuf26AOA== + dependencies: + async-limiter "~1.0.0" + +ws@^6.1.2, ws@^6.2.1: + version "6.2.2" + resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.2.tgz#dd5cdbd57a9979916097652d78f1cc5faea0c32e" + integrity sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw== + dependencies: + async-limiter "~1.0.0" + +ws@^7: + version "7.5.6" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.6.tgz#e59fc509fb15ddfb65487ee9765c5a51dec5fe7b" + integrity sha512-6GLgCqo2cy2A2rjCNFlxQS6ZljG/coZfZXclldI8FB/1G3CCI36Zd8xy2HrFVACi8tfk5XrgLQEk+P0Tnz9UcA== + +xhr-request-promise@^0.1.2: + version "0.1.3" + resolved "https://registry.yarnpkg.com/xhr-request-promise/-/xhr-request-promise-0.1.3.tgz#2d5f4b16d8c6c893be97f1a62b0ed4cf3ca5f96c" + integrity sha512-YUBytBsuwgitWtdRzXDDkWAXzhdGB8bYm0sSzMPZT7Z2MBjMSTHFsyCT1yCRATY+XC69DUrQraRAEgcoCRaIPg== + dependencies: + xhr-request "^1.1.0" + +xhr-request@^1.0.1, xhr-request@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/xhr-request/-/xhr-request-1.1.0.tgz#f4a7c1868b9f198723444d82dcae317643f2e2ed" + integrity sha512-Y7qzEaR3FDtL3fP30k9wO/e+FBnBByZeybKOhASsGP30NIkRAAkKD/sCnLvgEfAIEC1rcmK7YG8f4oEnIrrWzA== + dependencies: + buffer-to-arraybuffer "^0.0.5" + object-assign "^4.1.1" + query-string "^5.0.1" + simple-get "^2.7.0" + timed-out "^4.0.1" + url-set-query "^1.0.0" + xhr "^2.0.4" + +xhr2-cookies@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/xhr2-cookies/-/xhr2-cookies-1.1.0.tgz#7d77449d0999197f155cb73b23df72505ed89d48" + integrity sha1-fXdEnQmZGX8VXLc7I99yUF7YnUg= + dependencies: + cookiejar "^2.1.1" + +xhr@^2.0.4, xhr@^2.2.0, xhr@^2.3.3: + version "2.6.0" + resolved "https://registry.yarnpkg.com/xhr/-/xhr-2.6.0.tgz#b69d4395e792b4173d6b7df077f0fc5e4e2b249d" + integrity sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA== + dependencies: + global "~4.4.0" + is-function "^1.0.1" + parse-headers "^2.0.0" + xtend "^4.0.0" + +xml-name-validator@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" + integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== + +xmlchars@^2.1.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" + integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== + +xregexp@^4.3.0: + version "4.4.1" + resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-4.4.1.tgz#c84a88fa79e9ab18ca543959712094492185fe65" + integrity sha512-2u9HwfadaJaY9zHtRRnH6BY6CQVNQKkYm3oLtC9gJXXzfsbACg5X5e4EZZGVAH+YIfa+QA9lsFQTTe3HURF3ag== + dependencies: + "@babel/runtime-corejs3" "^7.12.1" + +xstream@^11.14.0: + version "11.14.0" + resolved "https://registry.yarnpkg.com/xstream/-/xstream-11.14.0.tgz#2c071d26b18310523b6877e86b4e54df068a9ae5" + integrity sha512-1bLb+kKKtKPbgTK6i/BaoAn03g47PpFstlbe1BA+y3pNS/LfvcaghS5BFf9+EE1J+KwSQsEpfJvFN5GqFtiNmw== + dependencies: + globalthis "^1.0.1" + symbol-observable "^2.0.3" + +xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.0, xtend@~4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + +xtend@~2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-2.1.2.tgz#6efecc2a4dad8e6962c4901b337ce7ba87b5d28b" + integrity sha1-bv7MKk2tjmlixJAbM3znuoe10os= + dependencies: + object-keys "~0.4.0" + +y18n@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" + integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== + +y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== + +yaeti@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/yaeti/-/yaeti-0.0.6.tgz#f26f484d72684cf42bedfb76970aa1608fbf9577" + integrity sha1-8m9ITXJoTPQr7ft2lwqhYI+/lXc= + +yallist@^3.0.0, yallist@^3.0.2, yallist@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yaml@^1.10.0, yaml@^1.7.2: + version "1.10.2" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" + integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== + +yargs-parser@^13.1.2: + version "13.1.2" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" + integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs-parser@^18.1.2: + version "18.1.3" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" + integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs-parser@^20.2.2: + version "20.2.9" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" + integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== + +yargs@^13.2.4, yargs@^13.3.0, yargs@^13.3.2: + version "13.3.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" + integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== + dependencies: + cliui "^5.0.0" + find-up "^3.0.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^3.0.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^13.1.2" + +yargs@^15.3.1: + version "15.4.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" + integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== + dependencies: + cliui "^6.0.0" + decamelize "^1.2.0" + find-up "^4.1.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^4.2.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^18.1.2" + +yargs@^16.2.0: + version "16.2.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" + integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== + dependencies: + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.0" + y18n "^5.0.5" + yargs-parser "^20.2.2"