diff --git a/contracts/tasks/index.ts b/contracts/tasks/index.ts index 19050a901..98c143c27 100644 --- a/contracts/tasks/index.ts +++ b/contracts/tasks/index.ts @@ -15,6 +15,7 @@ import './runners/finalize' import './runners/claim' import './runners/cancel' import './runners/exportRound' +import './runners/exportImages' import './runners/mergeAllocation' import './runners/loadSimpleUsers' import './runners/loadMerkleUsers' diff --git a/contracts/tasks/runners/exportImages.ts b/contracts/tasks/runners/exportImages.ts new file mode 100644 index 000000000..4a0b05858 --- /dev/null +++ b/contracts/tasks/runners/exportImages.ts @@ -0,0 +1,80 @@ +/** + * Export the project logo images in a ClrFund round. + * + * Sample usage: + * yarn hardhat export-images \ + * --output-dir ../vue-apps/public/ipfs + * --gateway https://ipfs.io + * --round-file ../vue-app/src/rounds/arbitrum/0x4A2d90844EB9C815eF10dB0371726F0ceb2848B0.json + * + * Notes: + * 1) This script assumes the round has been exported using the `export-round` hardhat task + */ + +import { task } from 'hardhat/config' +import { isPathExist, makeDirectory } from '../../utils/misc' +import { getIpfsContent } from '@clrfund/common' +import fs from 'fs' + +/** + * Download the IPFS file with the ipfsHash to the output directory + * @param gateway IPFS gateway url + * @param ipfsHash IPFS hash of the file to download + * @param outputDir The directory to store the downloaded file + */ +async function download({ + gateway, + ipfsHash, + outputDir, +}: { + gateway: string + ipfsHash: string + outputDir: string +}) { + if (!ipfsHash) return + + const res = await getIpfsContent(ipfsHash, gateway) + if (res.hasBody()) { + console.log('Downloaded', ipfsHash) + fs.writeFileSync(`${outputDir}/${ipfsHash}`, res.body) + } +} + +task('export-images', 'Export project logo images') + .addParam('outputDir', 'The output directory') + .addParam('roundFile', 'The exported funding round file path') + .addParam('gateway', 'The IPFS gateway url') + .setAction(async ({ outputDir, roundFile, gateway }) => { + console.log('Starting to download from ipfs') + + if (!isPathExist(outputDir)) { + makeDirectory(outputDir) + } + + const data = fs.readFileSync(roundFile, { encoding: 'utf-8' }) + const round = JSON.parse(data) + const projects = round.projects + const images = projects.map((project: any) => { + const { bannerImageHash, thumbnailImageHash, imageHash } = + project.metadata + return { bannerImageHash, thumbnailImageHash, imageHash } + }) + + for (let i = 0; i < images.length; i++) { + await download({ + gateway, + ipfsHash: images[i].bannerImageHash, + outputDir, + }) + await download({ + gateway, + ipfsHash: images[i].thumbnailImageHash, + outputDir, + }) + await download({ + gateway, + ipfsHash: images[i].imageHash, + outputDir, + }) + } + }) diff --git a/vue-app/public/ipfs/QmNN4mDtiWTACSRNkZnFuzC51TjcJCTjstmv5tSVQpvEwA b/vue-app/public/ipfs/QmNN4mDtiWTACSRNkZnFuzC51TjcJCTjstmv5tSVQpvEwA new file mode 100644 index 000000000..024338717 Binary files /dev/null and b/vue-app/public/ipfs/QmNN4mDtiWTACSRNkZnFuzC51TjcJCTjstmv5tSVQpvEwA differ diff --git a/vue-app/public/ipfs/QmNTcsGwmED9nudJbvHjkeMRnP874kvJBsJDKCaQgv7XgN b/vue-app/public/ipfs/QmNTcsGwmED9nudJbvHjkeMRnP874kvJBsJDKCaQgv7XgN new file mode 100644 index 000000000..0c94730ba Binary files /dev/null and b/vue-app/public/ipfs/QmNTcsGwmED9nudJbvHjkeMRnP874kvJBsJDKCaQgv7XgN differ diff --git a/vue-app/public/ipfs/QmNThEDfYFaVsCT7aWp3oJApJePJazsQVwwaAs6eXj9UEY b/vue-app/public/ipfs/QmNThEDfYFaVsCT7aWp3oJApJePJazsQVwwaAs6eXj9UEY new file mode 100644 index 000000000..c556c2cdf Binary files /dev/null and b/vue-app/public/ipfs/QmNThEDfYFaVsCT7aWp3oJApJePJazsQVwwaAs6eXj9UEY differ diff --git a/vue-app/public/ipfs/QmNWDVTEhi5p8FKWn76U2RC32tceMVqD9u5d8eKrTw2g3R b/vue-app/public/ipfs/QmNWDVTEhi5p8FKWn76U2RC32tceMVqD9u5d8eKrTw2g3R new file mode 100644 index 000000000..b37f961cb Binary files /dev/null and b/vue-app/public/ipfs/QmNWDVTEhi5p8FKWn76U2RC32tceMVqD9u5d8eKrTw2g3R differ diff --git a/vue-app/public/ipfs/QmNbSxkxTWUSd1jsXk7hfyi4zTBtSMJMELWCcELYbPvGjV b/vue-app/public/ipfs/QmNbSxkxTWUSd1jsXk7hfyi4zTBtSMJMELWCcELYbPvGjV new file mode 100644 index 000000000..9eb885d16 Binary files /dev/null and b/vue-app/public/ipfs/QmNbSxkxTWUSd1jsXk7hfyi4zTBtSMJMELWCcELYbPvGjV differ diff --git a/vue-app/public/ipfs/QmNcLebHQ1U7V28UTgdfofyXrqBbsAN57bSgkpryw325Et b/vue-app/public/ipfs/QmNcLebHQ1U7V28UTgdfofyXrqBbsAN57bSgkpryw325Et new file mode 100644 index 000000000..769228000 Binary files /dev/null and b/vue-app/public/ipfs/QmNcLebHQ1U7V28UTgdfofyXrqBbsAN57bSgkpryw325Et differ diff --git a/vue-app/public/ipfs/QmNkzoy7bbKMwKDtd68fdq3mKYu25UE54hea2yxptEG4fH b/vue-app/public/ipfs/QmNkzoy7bbKMwKDtd68fdq3mKYu25UE54hea2yxptEG4fH new file mode 100644 index 000000000..b81a03bbb Binary files /dev/null and b/vue-app/public/ipfs/QmNkzoy7bbKMwKDtd68fdq3mKYu25UE54hea2yxptEG4fH differ diff --git a/vue-app/public/ipfs/QmNycj9VQsmkvv2Gr7aHEYEc68YJcftvHLtWy762EG8xKc b/vue-app/public/ipfs/QmNycj9VQsmkvv2Gr7aHEYEc68YJcftvHLtWy762EG8xKc new file mode 100644 index 000000000..d940ddb40 Binary files /dev/null and b/vue-app/public/ipfs/QmNycj9VQsmkvv2Gr7aHEYEc68YJcftvHLtWy762EG8xKc differ diff --git a/vue-app/public/ipfs/QmP3HvHbWgHD5DsjQj59UeWRokFYKJy6yWabnQnYym1tsF b/vue-app/public/ipfs/QmP3HvHbWgHD5DsjQj59UeWRokFYKJy6yWabnQnYym1tsF new file mode 100644 index 000000000..c92a86e29 Binary files /dev/null and b/vue-app/public/ipfs/QmP3HvHbWgHD5DsjQj59UeWRokFYKJy6yWabnQnYym1tsF differ diff --git a/vue-app/public/ipfs/QmPABB6RMCWMrFi17KkDPGmxQejgXGugQARF2A9Tm65it8 b/vue-app/public/ipfs/QmPABB6RMCWMrFi17KkDPGmxQejgXGugQARF2A9Tm65it8 new file mode 100644 index 000000000..25565cc27 Binary files /dev/null and b/vue-app/public/ipfs/QmPABB6RMCWMrFi17KkDPGmxQejgXGugQARF2A9Tm65it8 differ diff --git a/vue-app/public/ipfs/QmPDWS9mgEajvZiXFmJtJH9t34hE9mrifrLvsh7XUR9KKz b/vue-app/public/ipfs/QmPDWS9mgEajvZiXFmJtJH9t34hE9mrifrLvsh7XUR9KKz new file mode 100644 index 000000000..6b5af246d Binary files /dev/null and b/vue-app/public/ipfs/QmPDWS9mgEajvZiXFmJtJH9t34hE9mrifrLvsh7XUR9KKz differ diff --git a/vue-app/public/ipfs/QmPJvKzAbQ6y9ZgN7aYw5mbLSvjrnsHxRTubWg8XkdZUDt b/vue-app/public/ipfs/QmPJvKzAbQ6y9ZgN7aYw5mbLSvjrnsHxRTubWg8XkdZUDt new file mode 100644 index 000000000..9264d0c16 Binary files /dev/null and b/vue-app/public/ipfs/QmPJvKzAbQ6y9ZgN7aYw5mbLSvjrnsHxRTubWg8XkdZUDt differ diff --git a/vue-app/public/ipfs/QmPP6pa4L6f55Qyze7LivkCu76REij8eV6ty9cbtgHiMai b/vue-app/public/ipfs/QmPP6pa4L6f55Qyze7LivkCu76REij8eV6ty9cbtgHiMai new file mode 100644 index 000000000..4f06dc0f4 Binary files /dev/null and b/vue-app/public/ipfs/QmPP6pa4L6f55Qyze7LivkCu76REij8eV6ty9cbtgHiMai differ diff --git a/vue-app/public/ipfs/QmPPAsHsQjeCHT9ts4CiyRmR5d658KgnCwHJL28RRfTcrZ b/vue-app/public/ipfs/QmPPAsHsQjeCHT9ts4CiyRmR5d658KgnCwHJL28RRfTcrZ new file mode 100644 index 000000000..9fd72096c Binary files /dev/null and b/vue-app/public/ipfs/QmPPAsHsQjeCHT9ts4CiyRmR5d658KgnCwHJL28RRfTcrZ differ diff --git a/vue-app/public/ipfs/QmPVXPfpxisS5P19F165fKXkwbwgNbCBETRUTnpB3CcG5Q b/vue-app/public/ipfs/QmPVXPfpxisS5P19F165fKXkwbwgNbCBETRUTnpB3CcG5Q new file mode 100644 index 000000000..c283a990a Binary files /dev/null and b/vue-app/public/ipfs/QmPVXPfpxisS5P19F165fKXkwbwgNbCBETRUTnpB3CcG5Q differ diff --git a/vue-app/public/ipfs/QmPe9T3adXRPZajB611oFKWTBVSLGnruoE8W24TiVHqamT b/vue-app/public/ipfs/QmPe9T3adXRPZajB611oFKWTBVSLGnruoE8W24TiVHqamT new file mode 100644 index 000000000..e9477207c Binary files /dev/null and b/vue-app/public/ipfs/QmPe9T3adXRPZajB611oFKWTBVSLGnruoE8W24TiVHqamT differ diff --git a/vue-app/public/ipfs/QmPjwgpom2Ckz18TYoPS72LMMVHpy8Y2etL7V7nDTXyQ4j b/vue-app/public/ipfs/QmPjwgpom2Ckz18TYoPS72LMMVHpy8Y2etL7V7nDTXyQ4j new file mode 100644 index 000000000..479ca08f3 Binary files /dev/null and b/vue-app/public/ipfs/QmPjwgpom2Ckz18TYoPS72LMMVHpy8Y2etL7V7nDTXyQ4j differ diff --git a/vue-app/public/ipfs/QmPq5FBapTJ9ed6DRBLxbT4NLAcUwmCYW66dU2JhwonfF7 b/vue-app/public/ipfs/QmPq5FBapTJ9ed6DRBLxbT4NLAcUwmCYW66dU2JhwonfF7 new file mode 100644 index 000000000..09b191f36 Binary files /dev/null and b/vue-app/public/ipfs/QmPq5FBapTJ9ed6DRBLxbT4NLAcUwmCYW66dU2JhwonfF7 differ diff --git a/vue-app/public/ipfs/QmPrZhf38ERNLoDYpdQxa7qdTqfUtUS4Szdwt2Jg4C3iJ8 b/vue-app/public/ipfs/QmPrZhf38ERNLoDYpdQxa7qdTqfUtUS4Szdwt2Jg4C3iJ8 new file mode 100644 index 000000000..40a66ad20 Binary files /dev/null and b/vue-app/public/ipfs/QmPrZhf38ERNLoDYpdQxa7qdTqfUtUS4Szdwt2Jg4C3iJ8 differ diff --git a/vue-app/public/ipfs/QmPzuETqY9v9BQNTESqePYq15E7XYA676uMegYRrthEcSz b/vue-app/public/ipfs/QmPzuETqY9v9BQNTESqePYq15E7XYA676uMegYRrthEcSz new file mode 100644 index 000000000..ce5415c2f Binary files /dev/null and b/vue-app/public/ipfs/QmPzuETqY9v9BQNTESqePYq15E7XYA676uMegYRrthEcSz differ diff --git a/vue-app/public/ipfs/QmQ18DgpCNRrtD7deyTsPGsdEsLeks9en4CuTK1wnbQByg b/vue-app/public/ipfs/QmQ18DgpCNRrtD7deyTsPGsdEsLeks9en4CuTK1wnbQByg new file mode 100644 index 000000000..7362d94fe Binary files /dev/null and b/vue-app/public/ipfs/QmQ18DgpCNRrtD7deyTsPGsdEsLeks9en4CuTK1wnbQByg differ diff --git a/vue-app/public/ipfs/QmQ2rK3oUX7Fcxk7gFhzvCpKTe4B3jQttDPBeAihE9RWfM b/vue-app/public/ipfs/QmQ2rK3oUX7Fcxk7gFhzvCpKTe4B3jQttDPBeAihE9RWfM new file mode 100644 index 000000000..801684ded Binary files /dev/null and b/vue-app/public/ipfs/QmQ2rK3oUX7Fcxk7gFhzvCpKTe4B3jQttDPBeAihE9RWfM differ diff --git a/vue-app/public/ipfs/QmQ7wdiWd4DUWfWpGmKCnDEMEopMGT4hg5PubALhBQfPF9 b/vue-app/public/ipfs/QmQ7wdiWd4DUWfWpGmKCnDEMEopMGT4hg5PubALhBQfPF9 new file mode 100644 index 000000000..07e256e31 Binary files /dev/null and b/vue-app/public/ipfs/QmQ7wdiWd4DUWfWpGmKCnDEMEopMGT4hg5PubALhBQfPF9 differ diff --git a/vue-app/public/ipfs/QmQ8GXpYiEfPr2sdBA4tTEDDUn5pqBomBVJDE14ysqRtAi b/vue-app/public/ipfs/QmQ8GXpYiEfPr2sdBA4tTEDDUn5pqBomBVJDE14ysqRtAi new file mode 100644 index 000000000..74d4a3e6e Binary files /dev/null and b/vue-app/public/ipfs/QmQ8GXpYiEfPr2sdBA4tTEDDUn5pqBomBVJDE14ysqRtAi differ diff --git a/vue-app/public/ipfs/QmQGCXDrjRyzpGrLUt45GYq2C5wrri2ZBP6XC2283PLCB6 b/vue-app/public/ipfs/QmQGCXDrjRyzpGrLUt45GYq2C5wrri2ZBP6XC2283PLCB6 new file mode 100644 index 000000000..8e8364594 Binary files /dev/null and b/vue-app/public/ipfs/QmQGCXDrjRyzpGrLUt45GYq2C5wrri2ZBP6XC2283PLCB6 differ diff --git a/vue-app/public/ipfs/QmQH754CYf72MYE3epWCRiuxNfrgfyRKgYgC75WhBJHARS b/vue-app/public/ipfs/QmQH754CYf72MYE3epWCRiuxNfrgfyRKgYgC75WhBJHARS new file mode 100644 index 000000000..b16f9d386 Binary files /dev/null and b/vue-app/public/ipfs/QmQH754CYf72MYE3epWCRiuxNfrgfyRKgYgC75WhBJHARS differ diff --git a/vue-app/public/ipfs/QmQKsft9kpjYR5yqoAzwxE32sSby3sqrDVb57ANhTNcCah b/vue-app/public/ipfs/QmQKsft9kpjYR5yqoAzwxE32sSby3sqrDVb57ANhTNcCah new file mode 100644 index 000000000..c00fe677e Binary files /dev/null and b/vue-app/public/ipfs/QmQKsft9kpjYR5yqoAzwxE32sSby3sqrDVb57ANhTNcCah differ diff --git a/vue-app/public/ipfs/QmQUEuurpHKsZmvNJKxMM5xnfiEFR2oBrUn1qq9EHd2s1Y b/vue-app/public/ipfs/QmQUEuurpHKsZmvNJKxMM5xnfiEFR2oBrUn1qq9EHd2s1Y new file mode 100644 index 000000000..13d0d167d Binary files /dev/null and b/vue-app/public/ipfs/QmQUEuurpHKsZmvNJKxMM5xnfiEFR2oBrUn1qq9EHd2s1Y differ diff --git a/vue-app/public/ipfs/QmQZGptrynCF5wwJwz1CG7DbiHE1KdoyLYkLQgjdgM4o9b b/vue-app/public/ipfs/QmQZGptrynCF5wwJwz1CG7DbiHE1KdoyLYkLQgjdgM4o9b new file mode 100644 index 000000000..a34fcb986 Binary files /dev/null and b/vue-app/public/ipfs/QmQZGptrynCF5wwJwz1CG7DbiHE1KdoyLYkLQgjdgM4o9b differ diff --git a/vue-app/public/ipfs/QmQjZKcXcKHBhhxbHriTN6Q6D6nCbukk5r8bKLz2dUykD9 b/vue-app/public/ipfs/QmQjZKcXcKHBhhxbHriTN6Q6D6nCbukk5r8bKLz2dUykD9 new file mode 100644 index 000000000..0a67c1a4b Binary files /dev/null and b/vue-app/public/ipfs/QmQjZKcXcKHBhhxbHriTN6Q6D6nCbukk5r8bKLz2dUykD9 differ diff --git a/vue-app/public/ipfs/QmQmY788EB6qCK4n1XRFc7xF6jF2w3Ve1MPin29EdFbeig b/vue-app/public/ipfs/QmQmY788EB6qCK4n1XRFc7xF6jF2w3Ve1MPin29EdFbeig new file mode 100644 index 000000000..499566797 Binary files /dev/null and b/vue-app/public/ipfs/QmQmY788EB6qCK4n1XRFc7xF6jF2w3Ve1MPin29EdFbeig differ diff --git a/vue-app/public/ipfs/QmQw5jcdu6swPQDQcwCL4A6mcm8PUNJpnaFAqqr8KJEXBx b/vue-app/public/ipfs/QmQw5jcdu6swPQDQcwCL4A6mcm8PUNJpnaFAqqr8KJEXBx new file mode 100644 index 000000000..5981242f0 Binary files /dev/null and b/vue-app/public/ipfs/QmQw5jcdu6swPQDQcwCL4A6mcm8PUNJpnaFAqqr8KJEXBx differ diff --git a/vue-app/public/ipfs/QmR5ooHG2TtfLAkNLZLyNEEVRRDRQf9m4Rxn8XxcHLsPyt b/vue-app/public/ipfs/QmR5ooHG2TtfLAkNLZLyNEEVRRDRQf9m4Rxn8XxcHLsPyt new file mode 100644 index 000000000..9d32f8ae9 Binary files /dev/null and b/vue-app/public/ipfs/QmR5ooHG2TtfLAkNLZLyNEEVRRDRQf9m4Rxn8XxcHLsPyt differ diff --git a/vue-app/public/ipfs/QmRA74QP7Jm3YoqRtSUejEuU2rVFrupnAFJhP9Ev5bUPMg b/vue-app/public/ipfs/QmRA74QP7Jm3YoqRtSUejEuU2rVFrupnAFJhP9Ev5bUPMg new file mode 100644 index 000000000..b9cf60da1 Binary files /dev/null and b/vue-app/public/ipfs/QmRA74QP7Jm3YoqRtSUejEuU2rVFrupnAFJhP9Ev5bUPMg differ diff --git a/vue-app/public/ipfs/QmREmdBTxB1bKhVMZD6ApnNXUZnF875pj8eQtyvFjuvKKa b/vue-app/public/ipfs/QmREmdBTxB1bKhVMZD6ApnNXUZnF875pj8eQtyvFjuvKKa new file mode 100644 index 000000000..5dec4e129 Binary files /dev/null and b/vue-app/public/ipfs/QmREmdBTxB1bKhVMZD6ApnNXUZnF875pj8eQtyvFjuvKKa differ diff --git a/vue-app/public/ipfs/QmRUQZzSVHr59S9k3v7ze1uoccJfcbJsQi8NnRbDS67XWD b/vue-app/public/ipfs/QmRUQZzSVHr59S9k3v7ze1uoccJfcbJsQi8NnRbDS67XWD new file mode 100644 index 000000000..1b3f9b462 Binary files /dev/null and b/vue-app/public/ipfs/QmRUQZzSVHr59S9k3v7ze1uoccJfcbJsQi8NnRbDS67XWD differ diff --git a/vue-app/public/ipfs/QmRh7y71JRvNT1EoUz2YN2LYhHTA6HtiFiWtGrkWQ7C8pn b/vue-app/public/ipfs/QmRh7y71JRvNT1EoUz2YN2LYhHTA6HtiFiWtGrkWQ7C8pn new file mode 100644 index 000000000..113abecaa Binary files /dev/null and b/vue-app/public/ipfs/QmRh7y71JRvNT1EoUz2YN2LYhHTA6HtiFiWtGrkWQ7C8pn differ diff --git a/vue-app/public/ipfs/QmRu5WHwiBQr5wqDZuACUzZcSwrVEzVbGM56WAW6JgSM8T b/vue-app/public/ipfs/QmRu5WHwiBQr5wqDZuACUzZcSwrVEzVbGM56WAW6JgSM8T new file mode 100644 index 000000000..125d78132 Binary files /dev/null and b/vue-app/public/ipfs/QmRu5WHwiBQr5wqDZuACUzZcSwrVEzVbGM56WAW6JgSM8T differ diff --git a/vue-app/public/ipfs/QmS9aZvVLBpbjvSgh2jUFp6GZXsMAs1wjauxZCJLfZBdAq b/vue-app/public/ipfs/QmS9aZvVLBpbjvSgh2jUFp6GZXsMAs1wjauxZCJLfZBdAq new file mode 100644 index 000000000..3bc692c86 Binary files /dev/null and b/vue-app/public/ipfs/QmS9aZvVLBpbjvSgh2jUFp6GZXsMAs1wjauxZCJLfZBdAq differ diff --git a/vue-app/public/ipfs/QmSLdjs9c8HefXWKC8Yqd3LPypC16SnRF7LBPGJwgavN8G b/vue-app/public/ipfs/QmSLdjs9c8HefXWKC8Yqd3LPypC16SnRF7LBPGJwgavN8G new file mode 100644 index 000000000..22aaca71a Binary files /dev/null and b/vue-app/public/ipfs/QmSLdjs9c8HefXWKC8Yqd3LPypC16SnRF7LBPGJwgavN8G differ diff --git a/vue-app/public/ipfs/QmSNVdMs59p5b7kzzXBdHR59gMPjCJkLukFFgtYTWwbitA b/vue-app/public/ipfs/QmSNVdMs59p5b7kzzXBdHR59gMPjCJkLukFFgtYTWwbitA new file mode 100644 index 000000000..df2e56e1e Binary files /dev/null and b/vue-app/public/ipfs/QmSNVdMs59p5b7kzzXBdHR59gMPjCJkLukFFgtYTWwbitA differ diff --git a/vue-app/public/ipfs/QmSQMXU8123x8LrgZtjN3BQkwg1ajBEhzgU4De8g3Pi3hg b/vue-app/public/ipfs/QmSQMXU8123x8LrgZtjN3BQkwg1ajBEhzgU4De8g3Pi3hg new file mode 100644 index 000000000..b31c805d8 Binary files /dev/null and b/vue-app/public/ipfs/QmSQMXU8123x8LrgZtjN3BQkwg1ajBEhzgU4De8g3Pi3hg differ diff --git a/vue-app/public/ipfs/QmScocB7kegnUwwrvexrBcdky71zGKQRwBZnVKFi2KaBm5 b/vue-app/public/ipfs/QmScocB7kegnUwwrvexrBcdky71zGKQRwBZnVKFi2KaBm5 new file mode 100644 index 000000000..228258d97 Binary files /dev/null and b/vue-app/public/ipfs/QmScocB7kegnUwwrvexrBcdky71zGKQRwBZnVKFi2KaBm5 differ diff --git a/vue-app/public/ipfs/QmSf8PdWTyse11xvEePBmMEsxYjppnMMXwNcN4124yhEsB b/vue-app/public/ipfs/QmSf8PdWTyse11xvEePBmMEsxYjppnMMXwNcN4124yhEsB new file mode 100644 index 000000000..f25fb841a Binary files /dev/null and b/vue-app/public/ipfs/QmSf8PdWTyse11xvEePBmMEsxYjppnMMXwNcN4124yhEsB differ diff --git a/vue-app/public/ipfs/QmSh8nMamVNXejbG4UrH45w3o1BYJK3tVZhmaxkEpqofkT b/vue-app/public/ipfs/QmSh8nMamVNXejbG4UrH45w3o1BYJK3tVZhmaxkEpqofkT new file mode 100644 index 000000000..090887ca5 Binary files /dev/null and b/vue-app/public/ipfs/QmSh8nMamVNXejbG4UrH45w3o1BYJK3tVZhmaxkEpqofkT differ diff --git a/vue-app/public/ipfs/QmSkvLe9EvmvrSKepJvWCktmieMgaF9ricmaWdB7KMRT2n b/vue-app/public/ipfs/QmSkvLe9EvmvrSKepJvWCktmieMgaF9ricmaWdB7KMRT2n new file mode 100644 index 000000000..81056a057 Binary files /dev/null and b/vue-app/public/ipfs/QmSkvLe9EvmvrSKepJvWCktmieMgaF9ricmaWdB7KMRT2n differ diff --git a/vue-app/public/ipfs/QmSoqxQaWKFzkqKyL4bfmBf18k7j8yVWWbMppzJnfWniLa b/vue-app/public/ipfs/QmSoqxQaWKFzkqKyL4bfmBf18k7j8yVWWbMppzJnfWniLa new file mode 100644 index 000000000..593d5e5d6 Binary files /dev/null and b/vue-app/public/ipfs/QmSoqxQaWKFzkqKyL4bfmBf18k7j8yVWWbMppzJnfWniLa differ diff --git a/vue-app/public/ipfs/QmSwsZVnLUiqJMHyAfvbBf19PSNdpg89y6XUWyezJcTa1T b/vue-app/public/ipfs/QmSwsZVnLUiqJMHyAfvbBf19PSNdpg89y6XUWyezJcTa1T new file mode 100644 index 000000000..1093ec761 Binary files /dev/null and b/vue-app/public/ipfs/QmSwsZVnLUiqJMHyAfvbBf19PSNdpg89y6XUWyezJcTa1T differ diff --git a/vue-app/public/ipfs/QmSzC2gzXbmqew1cfde3dY5bGac5NK5XumaaxrggLAj9M2 b/vue-app/public/ipfs/QmSzC2gzXbmqew1cfde3dY5bGac5NK5XumaaxrggLAj9M2 new file mode 100644 index 000000000..58cbf101a Binary files /dev/null and b/vue-app/public/ipfs/QmSzC2gzXbmqew1cfde3dY5bGac5NK5XumaaxrggLAj9M2 differ diff --git a/vue-app/public/ipfs/QmT1LfDenizeB8c6D6FHb8d1hifHMXpYvXjLtySdMBSH9Y b/vue-app/public/ipfs/QmT1LfDenizeB8c6D6FHb8d1hifHMXpYvXjLtySdMBSH9Y new file mode 100644 index 000000000..dfaff9d80 Binary files /dev/null and b/vue-app/public/ipfs/QmT1LfDenizeB8c6D6FHb8d1hifHMXpYvXjLtySdMBSH9Y differ diff --git a/vue-app/public/ipfs/QmTDti7RV7RwRRs5yKj5DMD32K8eohqWdMPJiA1HUhRaKq b/vue-app/public/ipfs/QmTDti7RV7RwRRs5yKj5DMD32K8eohqWdMPJiA1HUhRaKq new file mode 100644 index 000000000..eb0a75c0b Binary files /dev/null and b/vue-app/public/ipfs/QmTDti7RV7RwRRs5yKj5DMD32K8eohqWdMPJiA1HUhRaKq differ diff --git a/vue-app/public/ipfs/QmTKqMwj3gYjzsfVh6esaErNxoBckau2CeyVmoPgk9T9Py b/vue-app/public/ipfs/QmTKqMwj3gYjzsfVh6esaErNxoBckau2CeyVmoPgk9T9Py new file mode 100644 index 000000000..bb5010937 Binary files /dev/null and b/vue-app/public/ipfs/QmTKqMwj3gYjzsfVh6esaErNxoBckau2CeyVmoPgk9T9Py differ diff --git a/vue-app/public/ipfs/QmTLRpSieL5Yqv3cFoyJ2Cmq8rg8QjBfeXgR3BN2oA8wnw b/vue-app/public/ipfs/QmTLRpSieL5Yqv3cFoyJ2Cmq8rg8QjBfeXgR3BN2oA8wnw new file mode 100644 index 000000000..3d41c58e1 Binary files /dev/null and b/vue-app/public/ipfs/QmTLRpSieL5Yqv3cFoyJ2Cmq8rg8QjBfeXgR3BN2oA8wnw differ diff --git a/vue-app/public/ipfs/QmTNWTV9DY8tbgLfHDbivHQhKaVaX3P3iLG7SApvrKjrAC b/vue-app/public/ipfs/QmTNWTV9DY8tbgLfHDbivHQhKaVaX3P3iLG7SApvrKjrAC new file mode 100644 index 000000000..4327e9dd8 Binary files /dev/null and b/vue-app/public/ipfs/QmTNWTV9DY8tbgLfHDbivHQhKaVaX3P3iLG7SApvrKjrAC differ diff --git a/vue-app/public/ipfs/QmTQGyqi4McAcHNgRHweEVEfgDXhdBRtjJhZjUJb3Wo37k b/vue-app/public/ipfs/QmTQGyqi4McAcHNgRHweEVEfgDXhdBRtjJhZjUJb3Wo37k new file mode 100644 index 000000000..1910788c9 Binary files /dev/null and b/vue-app/public/ipfs/QmTQGyqi4McAcHNgRHweEVEfgDXhdBRtjJhZjUJb3Wo37k differ diff --git a/vue-app/public/ipfs/QmTTgVWPhqv5mETP96DZSFifGDMciR4MWWftL7q6CagJCy b/vue-app/public/ipfs/QmTTgVWPhqv5mETP96DZSFifGDMciR4MWWftL7q6CagJCy new file mode 100644 index 000000000..fe530b9b2 Binary files /dev/null and b/vue-app/public/ipfs/QmTTgVWPhqv5mETP96DZSFifGDMciR4MWWftL7q6CagJCy differ diff --git a/vue-app/public/ipfs/QmTbvZZQv61jWnRmsJTti6Zq17YPECmju2FChhE4nWk3si b/vue-app/public/ipfs/QmTbvZZQv61jWnRmsJTti6Zq17YPECmju2FChhE4nWk3si new file mode 100644 index 000000000..0f102201a Binary files /dev/null and b/vue-app/public/ipfs/QmTbvZZQv61jWnRmsJTti6Zq17YPECmju2FChhE4nWk3si differ diff --git a/vue-app/public/ipfs/QmTcqckCvGMbyTDvzqRJXwvPEo6iQCtYSTN3Xzu9uRSfSJ b/vue-app/public/ipfs/QmTcqckCvGMbyTDvzqRJXwvPEo6iQCtYSTN3Xzu9uRSfSJ new file mode 100644 index 000000000..f517a7829 Binary files /dev/null and b/vue-app/public/ipfs/QmTcqckCvGMbyTDvzqRJXwvPEo6iQCtYSTN3Xzu9uRSfSJ differ diff --git a/vue-app/public/ipfs/QmTcyF2wBukJnfSJ4faYDRuGT49dAPNVkvFLzVNpWtT2FV b/vue-app/public/ipfs/QmTcyF2wBukJnfSJ4faYDRuGT49dAPNVkvFLzVNpWtT2FV new file mode 100644 index 000000000..0458e97df Binary files /dev/null and b/vue-app/public/ipfs/QmTcyF2wBukJnfSJ4faYDRuGT49dAPNVkvFLzVNpWtT2FV differ diff --git a/vue-app/public/ipfs/QmTqm4yETF5GFgaJ3K2MVjkkjGK9jwC4T2H4RSwkqDMfsL b/vue-app/public/ipfs/QmTqm4yETF5GFgaJ3K2MVjkkjGK9jwC4T2H4RSwkqDMfsL new file mode 100644 index 000000000..c47a9d860 Binary files /dev/null and b/vue-app/public/ipfs/QmTqm4yETF5GFgaJ3K2MVjkkjGK9jwC4T2H4RSwkqDMfsL differ diff --git a/vue-app/public/ipfs/QmTuWUzcAfStShAaJq7jmxcDJAqTtRQGJv9y1uJJ6B13Kp b/vue-app/public/ipfs/QmTuWUzcAfStShAaJq7jmxcDJAqTtRQGJv9y1uJJ6B13Kp new file mode 100644 index 000000000..11f7fbec9 Binary files /dev/null and b/vue-app/public/ipfs/QmTuWUzcAfStShAaJq7jmxcDJAqTtRQGJv9y1uJJ6B13Kp differ diff --git a/vue-app/public/ipfs/QmTvjaG2wC4R91pdWUGfnBdx3J4YASS8CViEWNwhB972X3 b/vue-app/public/ipfs/QmTvjaG2wC4R91pdWUGfnBdx3J4YASS8CViEWNwhB972X3 new file mode 100644 index 000000000..75ec8b303 Binary files /dev/null and b/vue-app/public/ipfs/QmTvjaG2wC4R91pdWUGfnBdx3J4YASS8CViEWNwhB972X3 differ diff --git a/vue-app/public/ipfs/QmU5QJJkpPPE1LaCPhNktWJtEMeNTes1NGf9AQL1XuCQv5 b/vue-app/public/ipfs/QmU5QJJkpPPE1LaCPhNktWJtEMeNTes1NGf9AQL1XuCQv5 new file mode 100644 index 000000000..391e02733 Binary files /dev/null and b/vue-app/public/ipfs/QmU5QJJkpPPE1LaCPhNktWJtEMeNTes1NGf9AQL1XuCQv5 differ diff --git a/vue-app/public/ipfs/QmUKgmgjm4SNZQBHZcvDGZ2PDz3942TsawUJK2qJnsUX1s b/vue-app/public/ipfs/QmUKgmgjm4SNZQBHZcvDGZ2PDz3942TsawUJK2qJnsUX1s new file mode 100644 index 000000000..5b906afab Binary files /dev/null and b/vue-app/public/ipfs/QmUKgmgjm4SNZQBHZcvDGZ2PDz3942TsawUJK2qJnsUX1s differ diff --git a/vue-app/public/ipfs/QmUPPgqhkXepyun1TjvW9FbhKgYHBU9DFHr4C4zDAfcwnM b/vue-app/public/ipfs/QmUPPgqhkXepyun1TjvW9FbhKgYHBU9DFHr4C4zDAfcwnM new file mode 100644 index 000000000..55b46a0b5 Binary files /dev/null and b/vue-app/public/ipfs/QmUPPgqhkXepyun1TjvW9FbhKgYHBU9DFHr4C4zDAfcwnM differ diff --git a/vue-app/public/ipfs/QmUkkpWrd6J6zDUqV23y1inB7LaBdggjuh1oEF4BBPhqsW b/vue-app/public/ipfs/QmUkkpWrd6J6zDUqV23y1inB7LaBdggjuh1oEF4BBPhqsW new file mode 100644 index 000000000..5d2aad342 Binary files /dev/null and b/vue-app/public/ipfs/QmUkkpWrd6J6zDUqV23y1inB7LaBdggjuh1oEF4BBPhqsW differ diff --git a/vue-app/public/ipfs/QmUttoNppB5HJHqAijvyUtcekeCxK9kyq27ULCN4pLi6Nn b/vue-app/public/ipfs/QmUttoNppB5HJHqAijvyUtcekeCxK9kyq27ULCN4pLi6Nn new file mode 100644 index 000000000..99fb0f240 Binary files /dev/null and b/vue-app/public/ipfs/QmUttoNppB5HJHqAijvyUtcekeCxK9kyq27ULCN4pLi6Nn differ diff --git a/vue-app/public/ipfs/QmUw7KPJEjutM86esfTY4yRdcNGJ3w2Bmnm2EwWoh7RmHn b/vue-app/public/ipfs/QmUw7KPJEjutM86esfTY4yRdcNGJ3w2Bmnm2EwWoh7RmHn new file mode 100644 index 000000000..443eecb4b Binary files /dev/null and b/vue-app/public/ipfs/QmUw7KPJEjutM86esfTY4yRdcNGJ3w2Bmnm2EwWoh7RmHn differ diff --git a/vue-app/public/ipfs/QmUy14RKGxkrEYzaaas5PS1Kb8q3JGCadKDbUUaouiPGAT b/vue-app/public/ipfs/QmUy14RKGxkrEYzaaas5PS1Kb8q3JGCadKDbUUaouiPGAT new file mode 100644 index 000000000..c949eabfe Binary files /dev/null and b/vue-app/public/ipfs/QmUy14RKGxkrEYzaaas5PS1Kb8q3JGCadKDbUUaouiPGAT differ diff --git a/vue-app/public/ipfs/QmVJFhtfTpiVZzhEsBqvuoaXnz7FKWFZARgehP87psFxFd b/vue-app/public/ipfs/QmVJFhtfTpiVZzhEsBqvuoaXnz7FKWFZARgehP87psFxFd new file mode 100644 index 000000000..32958e752 Binary files /dev/null and b/vue-app/public/ipfs/QmVJFhtfTpiVZzhEsBqvuoaXnz7FKWFZARgehP87psFxFd differ diff --git a/vue-app/public/ipfs/QmVLLyW5DHo3mr1cWA3uTmZj5raNzEdrD3QqQFiomQ8zUW b/vue-app/public/ipfs/QmVLLyW5DHo3mr1cWA3uTmZj5raNzEdrD3QqQFiomQ8zUW new file mode 100644 index 000000000..dc1e764f3 Binary files /dev/null and b/vue-app/public/ipfs/QmVLLyW5DHo3mr1cWA3uTmZj5raNzEdrD3QqQFiomQ8zUW differ diff --git a/vue-app/public/ipfs/QmVMRVU92N26frZraX3AtBLKa8SxjK81jDHeEUJkdbZ6RM b/vue-app/public/ipfs/QmVMRVU92N26frZraX3AtBLKa8SxjK81jDHeEUJkdbZ6RM new file mode 100644 index 000000000..93e15aae9 Binary files /dev/null and b/vue-app/public/ipfs/QmVMRVU92N26frZraX3AtBLKa8SxjK81jDHeEUJkdbZ6RM differ diff --git a/vue-app/public/ipfs/QmVNffUtHXYrxCv2izj3vSrmLiwvooug2VPzyvUc5WA1na b/vue-app/public/ipfs/QmVNffUtHXYrxCv2izj3vSrmLiwvooug2VPzyvUc5WA1na new file mode 100644 index 000000000..aae621012 Binary files /dev/null and b/vue-app/public/ipfs/QmVNffUtHXYrxCv2izj3vSrmLiwvooug2VPzyvUc5WA1na differ diff --git a/vue-app/public/ipfs/QmVRJPNVVXvcPckSd7hcZz5YhZGkQxZ9TFpA8kP7eaZu7r b/vue-app/public/ipfs/QmVRJPNVVXvcPckSd7hcZz5YhZGkQxZ9TFpA8kP7eaZu7r new file mode 100644 index 000000000..29c499932 Binary files /dev/null and b/vue-app/public/ipfs/QmVRJPNVVXvcPckSd7hcZz5YhZGkQxZ9TFpA8kP7eaZu7r differ diff --git a/vue-app/public/ipfs/QmVbsXEfsYdjTytzLmMVCiGYRvzDkpPhqEerLJn1JMkopD b/vue-app/public/ipfs/QmVbsXEfsYdjTytzLmMVCiGYRvzDkpPhqEerLJn1JMkopD new file mode 100644 index 000000000..20648e696 Binary files /dev/null and b/vue-app/public/ipfs/QmVbsXEfsYdjTytzLmMVCiGYRvzDkpPhqEerLJn1JMkopD differ diff --git a/vue-app/public/ipfs/QmVeP6JQ7jq8M5pFWHDYwGC9vmiE2GD7aePktKSNBkvnM2 b/vue-app/public/ipfs/QmVeP6JQ7jq8M5pFWHDYwGC9vmiE2GD7aePktKSNBkvnM2 new file mode 100644 index 000000000..926b5ef98 Binary files /dev/null and b/vue-app/public/ipfs/QmVeP6JQ7jq8M5pFWHDYwGC9vmiE2GD7aePktKSNBkvnM2 differ diff --git a/vue-app/public/ipfs/QmW33A6rBCoGHW1w8M7W5f1Qc5gMnrHJEDjxbmVwsDZ4hT b/vue-app/public/ipfs/QmW33A6rBCoGHW1w8M7W5f1Qc5gMnrHJEDjxbmVwsDZ4hT new file mode 100644 index 000000000..388ce1d16 Binary files /dev/null and b/vue-app/public/ipfs/QmW33A6rBCoGHW1w8M7W5f1Qc5gMnrHJEDjxbmVwsDZ4hT differ diff --git a/vue-app/public/ipfs/QmWEVC8b3DWwGjMgYMhcUPi4z5YmUA5tAjHxJd5QzBhC7S b/vue-app/public/ipfs/QmWEVC8b3DWwGjMgYMhcUPi4z5YmUA5tAjHxJd5QzBhC7S new file mode 100644 index 000000000..6587bbf6f Binary files /dev/null and b/vue-app/public/ipfs/QmWEVC8b3DWwGjMgYMhcUPi4z5YmUA5tAjHxJd5QzBhC7S differ diff --git a/vue-app/public/ipfs/QmWL9MRWoyLCmdVZpMr6mo3pYRX6KVW4h73hDggjevoZ52 b/vue-app/public/ipfs/QmWL9MRWoyLCmdVZpMr6mo3pYRX6KVW4h73hDggjevoZ52 new file mode 100644 index 000000000..dd87acf97 Binary files /dev/null and b/vue-app/public/ipfs/QmWL9MRWoyLCmdVZpMr6mo3pYRX6KVW4h73hDggjevoZ52 differ diff --git a/vue-app/public/ipfs/QmWPEKWoFRZgEC6QW86XXqpn8F5AoSaZybVQf7tM3sFHwr b/vue-app/public/ipfs/QmWPEKWoFRZgEC6QW86XXqpn8F5AoSaZybVQf7tM3sFHwr new file mode 100644 index 000000000..e86b31a3e Binary files /dev/null and b/vue-app/public/ipfs/QmWPEKWoFRZgEC6QW86XXqpn8F5AoSaZybVQf7tM3sFHwr differ diff --git a/vue-app/public/ipfs/QmWYG7GNrDaHTXZ4mZcTPUefmAXeGrK36fzfdAodzYdemB b/vue-app/public/ipfs/QmWYG7GNrDaHTXZ4mZcTPUefmAXeGrK36fzfdAodzYdemB new file mode 100644 index 000000000..1d9d608b4 Binary files /dev/null and b/vue-app/public/ipfs/QmWYG7GNrDaHTXZ4mZcTPUefmAXeGrK36fzfdAodzYdemB differ diff --git a/vue-app/public/ipfs/QmWZg9WcxkAFv6sPCbEMdyU5XHzeLtWd31cLTAsccwaK7T b/vue-app/public/ipfs/QmWZg9WcxkAFv6sPCbEMdyU5XHzeLtWd31cLTAsccwaK7T new file mode 100644 index 000000000..ae4635b72 Binary files /dev/null and b/vue-app/public/ipfs/QmWZg9WcxkAFv6sPCbEMdyU5XHzeLtWd31cLTAsccwaK7T differ diff --git a/vue-app/public/ipfs/QmWb1fpPQC34GLpm2FppuxoCnpAuBoGhoFMmgukX3h275F b/vue-app/public/ipfs/QmWb1fpPQC34GLpm2FppuxoCnpAuBoGhoFMmgukX3h275F new file mode 100644 index 000000000..faaa91f85 Binary files /dev/null and b/vue-app/public/ipfs/QmWb1fpPQC34GLpm2FppuxoCnpAuBoGhoFMmgukX3h275F differ diff --git a/vue-app/public/ipfs/QmWjzaN4QSs2Rzs66qc4LiJ4VbQCuSAuads6xoNub89DD8 b/vue-app/public/ipfs/QmWjzaN4QSs2Rzs66qc4LiJ4VbQCuSAuads6xoNub89DD8 new file mode 100644 index 000000000..1f4704f98 Binary files /dev/null and b/vue-app/public/ipfs/QmWjzaN4QSs2Rzs66qc4LiJ4VbQCuSAuads6xoNub89DD8 differ diff --git a/vue-app/public/ipfs/QmWzgGL1JbSWyDopjqDyPX6e8JuyyDmf9UZWtpUfPdpXMA b/vue-app/public/ipfs/QmWzgGL1JbSWyDopjqDyPX6e8JuyyDmf9UZWtpUfPdpXMA new file mode 100644 index 000000000..cd3cfc1ec Binary files /dev/null and b/vue-app/public/ipfs/QmWzgGL1JbSWyDopjqDyPX6e8JuyyDmf9UZWtpUfPdpXMA differ diff --git a/vue-app/public/ipfs/QmX19u7TYEpL8yYqkM5HMB4S6P4btXjjtJ6ZyGcz3wmCv5 b/vue-app/public/ipfs/QmX19u7TYEpL8yYqkM5HMB4S6P4btXjjtJ6ZyGcz3wmCv5 new file mode 100644 index 000000000..cac44bff5 Binary files /dev/null and b/vue-app/public/ipfs/QmX19u7TYEpL8yYqkM5HMB4S6P4btXjjtJ6ZyGcz3wmCv5 differ diff --git a/vue-app/public/ipfs/QmX1QNGwBfUYvGK3mdEEHAKMkFkkg8J37vpBsDC4JAyBAd b/vue-app/public/ipfs/QmX1QNGwBfUYvGK3mdEEHAKMkFkkg8J37vpBsDC4JAyBAd new file mode 100644 index 000000000..fda8f744b Binary files /dev/null and b/vue-app/public/ipfs/QmX1QNGwBfUYvGK3mdEEHAKMkFkkg8J37vpBsDC4JAyBAd differ diff --git a/vue-app/public/ipfs/QmXMRLbPZXfsw9jMo7wj4SfK6NLe1Gwtdpe9e32ySB3BYh b/vue-app/public/ipfs/QmXMRLbPZXfsw9jMo7wj4SfK6NLe1Gwtdpe9e32ySB3BYh new file mode 100644 index 000000000..e1d71c634 Binary files /dev/null and b/vue-app/public/ipfs/QmXMRLbPZXfsw9jMo7wj4SfK6NLe1Gwtdpe9e32ySB3BYh differ diff --git a/vue-app/public/ipfs/QmXMpyiVfkj9HZ7jnNfPoTsx9xA1BvJCg8Jf3zRF727xrg b/vue-app/public/ipfs/QmXMpyiVfkj9HZ7jnNfPoTsx9xA1BvJCg8Jf3zRF727xrg new file mode 100644 index 000000000..8aa9b71e4 Binary files /dev/null and b/vue-app/public/ipfs/QmXMpyiVfkj9HZ7jnNfPoTsx9xA1BvJCg8Jf3zRF727xrg differ diff --git a/vue-app/public/ipfs/QmXRViLZhigCReJybzQhcUnXNeF8dbiDzz8y7Ki511zTTu b/vue-app/public/ipfs/QmXRViLZhigCReJybzQhcUnXNeF8dbiDzz8y7Ki511zTTu new file mode 100644 index 000000000..4c15bd0d3 Binary files /dev/null and b/vue-app/public/ipfs/QmXRViLZhigCReJybzQhcUnXNeF8dbiDzz8y7Ki511zTTu differ diff --git a/vue-app/public/ipfs/QmXbqL9YshufxnuH4JFJkpKBSRSMUe7YQ3ALqAY17RhfWe b/vue-app/public/ipfs/QmXbqL9YshufxnuH4JFJkpKBSRSMUe7YQ3ALqAY17RhfWe new file mode 100644 index 000000000..84bb1b209 Binary files /dev/null and b/vue-app/public/ipfs/QmXbqL9YshufxnuH4JFJkpKBSRSMUe7YQ3ALqAY17RhfWe differ diff --git a/vue-app/public/ipfs/QmXc3mye1V872YR8RBAKAWSP8tcYyPsKVkD2kbVhzXFYaV b/vue-app/public/ipfs/QmXc3mye1V872YR8RBAKAWSP8tcYyPsKVkD2kbVhzXFYaV new file mode 100644 index 000000000..4779e5e07 Binary files /dev/null and b/vue-app/public/ipfs/QmXc3mye1V872YR8RBAKAWSP8tcYyPsKVkD2kbVhzXFYaV differ diff --git a/vue-app/public/ipfs/QmXjnfbGgzdMVX7eu6FyJZyx7udgsRSWRut2aJWgw3i2iH b/vue-app/public/ipfs/QmXjnfbGgzdMVX7eu6FyJZyx7udgsRSWRut2aJWgw3i2iH new file mode 100644 index 000000000..3248d435e Binary files /dev/null and b/vue-app/public/ipfs/QmXjnfbGgzdMVX7eu6FyJZyx7udgsRSWRut2aJWgw3i2iH differ diff --git a/vue-app/public/ipfs/QmXkEJ7WBmWk78qmj1nYqPSnNfXxCNbs7p3umwJwNEdJe6 b/vue-app/public/ipfs/QmXkEJ7WBmWk78qmj1nYqPSnNfXxCNbs7p3umwJwNEdJe6 new file mode 100644 index 000000000..9c6596cc0 Binary files /dev/null and b/vue-app/public/ipfs/QmXkEJ7WBmWk78qmj1nYqPSnNfXxCNbs7p3umwJwNEdJe6 differ diff --git a/vue-app/public/ipfs/QmY7M3VWsTiNcPbMC3XNPuE2dsrUXzBtbrSgCsKkhjC2Rr b/vue-app/public/ipfs/QmY7M3VWsTiNcPbMC3XNPuE2dsrUXzBtbrSgCsKkhjC2Rr new file mode 100644 index 000000000..e70552d89 Binary files /dev/null and b/vue-app/public/ipfs/QmY7M3VWsTiNcPbMC3XNPuE2dsrUXzBtbrSgCsKkhjC2Rr differ diff --git a/vue-app/public/ipfs/QmY8Dmy4ngFa9rjdfBaBYNL7DumP7Jx2CApAB91cZamVF6 b/vue-app/public/ipfs/QmY8Dmy4ngFa9rjdfBaBYNL7DumP7Jx2CApAB91cZamVF6 new file mode 100644 index 000000000..5f15e8a2f Binary files /dev/null and b/vue-app/public/ipfs/QmY8Dmy4ngFa9rjdfBaBYNL7DumP7Jx2CApAB91cZamVF6 differ diff --git a/vue-app/public/ipfs/QmYYJkx9aKxbSv6atjo8vXTmDLjyRZ1xT96RuH47czEN1P b/vue-app/public/ipfs/QmYYJkx9aKxbSv6atjo8vXTmDLjyRZ1xT96RuH47czEN1P new file mode 100644 index 000000000..a1e8ebe1e Binary files /dev/null and b/vue-app/public/ipfs/QmYYJkx9aKxbSv6atjo8vXTmDLjyRZ1xT96RuH47czEN1P differ diff --git a/vue-app/public/ipfs/QmYYXncKFnukSAp6jdJo8vUtpU7ddL2CMqbCXh5s3bSMkD b/vue-app/public/ipfs/QmYYXncKFnukSAp6jdJo8vUtpU7ddL2CMqbCXh5s3bSMkD new file mode 100644 index 000000000..565b40d97 Binary files /dev/null and b/vue-app/public/ipfs/QmYYXncKFnukSAp6jdJo8vUtpU7ddL2CMqbCXh5s3bSMkD differ diff --git a/vue-app/public/ipfs/QmYbN2Npty3dcTckDw4tTCjmEYXni9HaqM2htq15Tp41Mp b/vue-app/public/ipfs/QmYbN2Npty3dcTckDw4tTCjmEYXni9HaqM2htq15Tp41Mp new file mode 100644 index 000000000..3fb47cb76 Binary files /dev/null and b/vue-app/public/ipfs/QmYbN2Npty3dcTckDw4tTCjmEYXni9HaqM2htq15Tp41Mp differ diff --git a/vue-app/public/ipfs/QmYdP59aZVrVahSZqSPiMsPrBXcqE8zMsxvdKh5DidrHC2 b/vue-app/public/ipfs/QmYdP59aZVrVahSZqSPiMsPrBXcqE8zMsxvdKh5DidrHC2 new file mode 100644 index 000000000..24e150404 Binary files /dev/null and b/vue-app/public/ipfs/QmYdP59aZVrVahSZqSPiMsPrBXcqE8zMsxvdKh5DidrHC2 differ diff --git a/vue-app/public/ipfs/QmYtMmn9DjTxHzm9sUmzF8UQUMH2hV8K1DtstD3FUMXFuV b/vue-app/public/ipfs/QmYtMmn9DjTxHzm9sUmzF8UQUMH2hV8K1DtstD3FUMXFuV new file mode 100644 index 000000000..9190e8729 Binary files /dev/null and b/vue-app/public/ipfs/QmYtMmn9DjTxHzm9sUmzF8UQUMH2hV8K1DtstD3FUMXFuV differ diff --git a/vue-app/public/ipfs/QmYxWSMdrDmQTPuh1GReRrtFNK1w5awnhdebzxUPm7QWLG b/vue-app/public/ipfs/QmYxWSMdrDmQTPuh1GReRrtFNK1w5awnhdebzxUPm7QWLG new file mode 100644 index 000000000..5d24d42ce Binary files /dev/null and b/vue-app/public/ipfs/QmYxWSMdrDmQTPuh1GReRrtFNK1w5awnhdebzxUPm7QWLG differ diff --git a/vue-app/public/ipfs/QmYzc2qjkCw2Lp1LSjv4C8yfw6FKgUSdhDoRcWyFo1kYVG b/vue-app/public/ipfs/QmYzc2qjkCw2Lp1LSjv4C8yfw6FKgUSdhDoRcWyFo1kYVG new file mode 100644 index 000000000..9aa3b4d0b Binary files /dev/null and b/vue-app/public/ipfs/QmYzc2qjkCw2Lp1LSjv4C8yfw6FKgUSdhDoRcWyFo1kYVG differ diff --git a/vue-app/public/ipfs/QmZ3BS7StxB1eoE4zhnqMLLg6xEgRUJ1nQk1MBPY2NCzVR b/vue-app/public/ipfs/QmZ3BS7StxB1eoE4zhnqMLLg6xEgRUJ1nQk1MBPY2NCzVR new file mode 100644 index 000000000..ed7987000 Binary files /dev/null and b/vue-app/public/ipfs/QmZ3BS7StxB1eoE4zhnqMLLg6xEgRUJ1nQk1MBPY2NCzVR differ diff --git a/vue-app/public/ipfs/QmZ4v4G6E9f4E2E74qrmDxXz3EKmLEoaxVAmQeaEzQF1Rr b/vue-app/public/ipfs/QmZ4v4G6E9f4E2E74qrmDxXz3EKmLEoaxVAmQeaEzQF1Rr new file mode 100644 index 000000000..8ea5de49a Binary files /dev/null and b/vue-app/public/ipfs/QmZ4v4G6E9f4E2E74qrmDxXz3EKmLEoaxVAmQeaEzQF1Rr differ diff --git a/vue-app/public/ipfs/QmZ5mUduYPENj52ZhzP8MDvJ1WDd15ULf1LR9Ps5N2CAeH b/vue-app/public/ipfs/QmZ5mUduYPENj52ZhzP8MDvJ1WDd15ULf1LR9Ps5N2CAeH new file mode 100644 index 000000000..70256176b Binary files /dev/null and b/vue-app/public/ipfs/QmZ5mUduYPENj52ZhzP8MDvJ1WDd15ULf1LR9Ps5N2CAeH differ diff --git a/vue-app/public/ipfs/QmZADr6FsyJQe4p9ynZXMozjsjuUEgWErBrbsJ7Ud1zMCD b/vue-app/public/ipfs/QmZADr6FsyJQe4p9ynZXMozjsjuUEgWErBrbsJ7Ud1zMCD new file mode 100644 index 000000000..6f660e96c Binary files /dev/null and b/vue-app/public/ipfs/QmZADr6FsyJQe4p9ynZXMozjsjuUEgWErBrbsJ7Ud1zMCD differ diff --git a/vue-app/public/ipfs/QmZBhXDzL34iAbVB6UDLCXTcV5kVLeyH4rurqeCKeFYs18 b/vue-app/public/ipfs/QmZBhXDzL34iAbVB6UDLCXTcV5kVLeyH4rurqeCKeFYs18 new file mode 100644 index 000000000..f5ae28292 Binary files /dev/null and b/vue-app/public/ipfs/QmZBhXDzL34iAbVB6UDLCXTcV5kVLeyH4rurqeCKeFYs18 differ diff --git a/vue-app/public/ipfs/QmZNiwFQ9oRDtZsKPHgksSbxsF6JaAUwE7ZxwFrqSHAy7J b/vue-app/public/ipfs/QmZNiwFQ9oRDtZsKPHgksSbxsF6JaAUwE7ZxwFrqSHAy7J new file mode 100644 index 000000000..2c1dabba7 Binary files /dev/null and b/vue-app/public/ipfs/QmZNiwFQ9oRDtZsKPHgksSbxsF6JaAUwE7ZxwFrqSHAy7J differ diff --git a/vue-app/public/ipfs/QmZQJNDXshnyj2i561cDRkZrVeRec7839T7fTLH4sMdMaT b/vue-app/public/ipfs/QmZQJNDXshnyj2i561cDRkZrVeRec7839T7fTLH4sMdMaT new file mode 100644 index 000000000..e9368b7f3 Binary files /dev/null and b/vue-app/public/ipfs/QmZQJNDXshnyj2i561cDRkZrVeRec7839T7fTLH4sMdMaT differ diff --git a/vue-app/public/ipfs/QmZQq8TyxVvqrrEKfhMQBpnY2WnP5vrvZ55KqU2HCevEcy b/vue-app/public/ipfs/QmZQq8TyxVvqrrEKfhMQBpnY2WnP5vrvZ55KqU2HCevEcy new file mode 100644 index 000000000..3fa6a97b9 Binary files /dev/null and b/vue-app/public/ipfs/QmZQq8TyxVvqrrEKfhMQBpnY2WnP5vrvZ55KqU2HCevEcy differ diff --git a/vue-app/public/ipfs/QmaJ4SvtjiXHXHJLoFXEiAZHY1Bic5wThWgt1pqmaoa6wp b/vue-app/public/ipfs/QmaJ4SvtjiXHXHJLoFXEiAZHY1Bic5wThWgt1pqmaoa6wp new file mode 100644 index 000000000..7e8d8f412 Binary files /dev/null and b/vue-app/public/ipfs/QmaJ4SvtjiXHXHJLoFXEiAZHY1Bic5wThWgt1pqmaoa6wp differ diff --git a/vue-app/public/ipfs/QmaMM2Bc3bqSVeuB2jFokJak3YbdgUtWhhAnGxc1M7bUv3 b/vue-app/public/ipfs/QmaMM2Bc3bqSVeuB2jFokJak3YbdgUtWhhAnGxc1M7bUv3 new file mode 100644 index 000000000..6e1ab25f8 Binary files /dev/null and b/vue-app/public/ipfs/QmaMM2Bc3bqSVeuB2jFokJak3YbdgUtWhhAnGxc1M7bUv3 differ diff --git a/vue-app/public/ipfs/QmaPTp9kiG75cujavu2SFPEXwQYSFLreqMPUnBeU8X3gVW b/vue-app/public/ipfs/QmaPTp9kiG75cujavu2SFPEXwQYSFLreqMPUnBeU8X3gVW new file mode 100644 index 000000000..1af480099 Binary files /dev/null and b/vue-app/public/ipfs/QmaPTp9kiG75cujavu2SFPEXwQYSFLreqMPUnBeU8X3gVW differ diff --git a/vue-app/public/ipfs/QmaWqbmX11fHj3WUu8jfhxDrahxZ4AUNCTTassmpXf8jrx b/vue-app/public/ipfs/QmaWqbmX11fHj3WUu8jfhxDrahxZ4AUNCTTassmpXf8jrx new file mode 100644 index 000000000..b766461e1 Binary files /dev/null and b/vue-app/public/ipfs/QmaWqbmX11fHj3WUu8jfhxDrahxZ4AUNCTTassmpXf8jrx differ diff --git a/vue-app/public/ipfs/QmagXy7qexAKrP7otRSBdfPd6GVVahkLtdSU8BBD7dL8aN b/vue-app/public/ipfs/QmagXy7qexAKrP7otRSBdfPd6GVVahkLtdSU8BBD7dL8aN new file mode 100644 index 000000000..118d16f47 Binary files /dev/null and b/vue-app/public/ipfs/QmagXy7qexAKrP7otRSBdfPd6GVVahkLtdSU8BBD7dL8aN differ diff --git a/vue-app/public/ipfs/Qmaiu4jPLLHJfXMCT6BR1dt24EsgjQD4t7N4yuVnrMPCqD b/vue-app/public/ipfs/Qmaiu4jPLLHJfXMCT6BR1dt24EsgjQD4t7N4yuVnrMPCqD new file mode 100644 index 000000000..220616d9f Binary files /dev/null and b/vue-app/public/ipfs/Qmaiu4jPLLHJfXMCT6BR1dt24EsgjQD4t7N4yuVnrMPCqD differ diff --git a/vue-app/public/ipfs/QmaxsujU7DoD4kaN4JVzVietj4FFcyE6fxoAqNaMU4fd2B b/vue-app/public/ipfs/QmaxsujU7DoD4kaN4JVzVietj4FFcyE6fxoAqNaMU4fd2B new file mode 100644 index 000000000..e9a52e604 Binary files /dev/null and b/vue-app/public/ipfs/QmaxsujU7DoD4kaN4JVzVietj4FFcyE6fxoAqNaMU4fd2B differ diff --git a/vue-app/public/ipfs/Qmb17ZzzBSDBuhtuFH85uu6YdMNE3fhjoykGbUP2StSFWc b/vue-app/public/ipfs/Qmb17ZzzBSDBuhtuFH85uu6YdMNE3fhjoykGbUP2StSFWc new file mode 100644 index 000000000..def147b16 Binary files /dev/null and b/vue-app/public/ipfs/Qmb17ZzzBSDBuhtuFH85uu6YdMNE3fhjoykGbUP2StSFWc differ diff --git a/vue-app/public/ipfs/QmbAQSqKd1j53fLgZsoq8Ty8ffwHAgqUdCjXfdPAyJqiof b/vue-app/public/ipfs/QmbAQSqKd1j53fLgZsoq8Ty8ffwHAgqUdCjXfdPAyJqiof new file mode 100644 index 000000000..2186c16ee Binary files /dev/null and b/vue-app/public/ipfs/QmbAQSqKd1j53fLgZsoq8Ty8ffwHAgqUdCjXfdPAyJqiof differ diff --git a/vue-app/public/ipfs/QmbD6Qh1oVMXfvGG4PnBJKW4GrDh2Rim9pqMSDG8UotisV b/vue-app/public/ipfs/QmbD6Qh1oVMXfvGG4PnBJKW4GrDh2Rim9pqMSDG8UotisV new file mode 100644 index 000000000..bcb54f5be Binary files /dev/null and b/vue-app/public/ipfs/QmbD6Qh1oVMXfvGG4PnBJKW4GrDh2Rim9pqMSDG8UotisV differ diff --git a/vue-app/public/ipfs/QmbKPWSYSjKmQi7yx5o77mYyEBxXfJmQRRjSumdUBrqJJ2 b/vue-app/public/ipfs/QmbKPWSYSjKmQi7yx5o77mYyEBxXfJmQRRjSumdUBrqJJ2 new file mode 100644 index 000000000..6fd63bf5f Binary files /dev/null and b/vue-app/public/ipfs/QmbKPWSYSjKmQi7yx5o77mYyEBxXfJmQRRjSumdUBrqJJ2 differ diff --git a/vue-app/public/ipfs/QmbMzJ4U8omXJGeA6f4hgbULxTk2kcEFhLzRsunTSP873r b/vue-app/public/ipfs/QmbMzJ4U8omXJGeA6f4hgbULxTk2kcEFhLzRsunTSP873r new file mode 100644 index 000000000..35fbb1312 Binary files /dev/null and b/vue-app/public/ipfs/QmbMzJ4U8omXJGeA6f4hgbULxTk2kcEFhLzRsunTSP873r differ diff --git a/vue-app/public/ipfs/QmbSKtKYbSrxQmw78y8nib84VPhyscRAFgbEfhmP2DgvZV b/vue-app/public/ipfs/QmbSKtKYbSrxQmw78y8nib84VPhyscRAFgbEfhmP2DgvZV new file mode 100644 index 000000000..ab7623c1a Binary files /dev/null and b/vue-app/public/ipfs/QmbSKtKYbSrxQmw78y8nib84VPhyscRAFgbEfhmP2DgvZV differ diff --git a/vue-app/public/ipfs/QmbVLjeZztWCAs5VZRCXANC7bFceS8ydWd1dkkJnh7VhoX b/vue-app/public/ipfs/QmbVLjeZztWCAs5VZRCXANC7bFceS8ydWd1dkkJnh7VhoX new file mode 100644 index 000000000..f9f77260c Binary files /dev/null and b/vue-app/public/ipfs/QmbVLjeZztWCAs5VZRCXANC7bFceS8ydWd1dkkJnh7VhoX differ diff --git a/vue-app/public/ipfs/QmbYXLJwVgz7LHVmRRVmPBWNryV3UuRTEnzmD32VJHKfKA b/vue-app/public/ipfs/QmbYXLJwVgz7LHVmRRVmPBWNryV3UuRTEnzmD32VJHKfKA new file mode 100644 index 000000000..1132ec174 Binary files /dev/null and b/vue-app/public/ipfs/QmbYXLJwVgz7LHVmRRVmPBWNryV3UuRTEnzmD32VJHKfKA differ diff --git a/vue-app/public/ipfs/QmbatPUFvSGofPnYrS2Ho8KGQJ9JZKRyzYtuw1gyBSnkqN b/vue-app/public/ipfs/QmbatPUFvSGofPnYrS2Ho8KGQJ9JZKRyzYtuw1gyBSnkqN new file mode 100644 index 000000000..386208854 Binary files /dev/null and b/vue-app/public/ipfs/QmbatPUFvSGofPnYrS2Ho8KGQJ9JZKRyzYtuw1gyBSnkqN differ diff --git a/vue-app/public/ipfs/Qmbhkp1ZcR5stu3n6VUTgYGV3gka2WDamph22WtMH7SnPL b/vue-app/public/ipfs/Qmbhkp1ZcR5stu3n6VUTgYGV3gka2WDamph22WtMH7SnPL new file mode 100644 index 000000000..1f834b6bb Binary files /dev/null and b/vue-app/public/ipfs/Qmbhkp1ZcR5stu3n6VUTgYGV3gka2WDamph22WtMH7SnPL differ diff --git a/vue-app/public/ipfs/QmbjXwkSn3TWBD14ygTmksq6XwY2uof9D2btAcRHKovywm b/vue-app/public/ipfs/QmbjXwkSn3TWBD14ygTmksq6XwY2uof9D2btAcRHKovywm new file mode 100644 index 000000000..895ceebde Binary files /dev/null and b/vue-app/public/ipfs/QmbjXwkSn3TWBD14ygTmksq6XwY2uof9D2btAcRHKovywm differ diff --git a/vue-app/public/ipfs/Qmbv1Ewpsc5fdokTdStLnrVqEH3zjBNCV9DswHxDRGApqm b/vue-app/public/ipfs/Qmbv1Ewpsc5fdokTdStLnrVqEH3zjBNCV9DswHxDRGApqm new file mode 100644 index 000000000..f8625dbda Binary files /dev/null and b/vue-app/public/ipfs/Qmbv1Ewpsc5fdokTdStLnrVqEH3zjBNCV9DswHxDRGApqm differ diff --git a/vue-app/public/ipfs/QmbzrpoWNr4egScJgaE5X5fqztDgqNmxgr8iL17kUWN548 b/vue-app/public/ipfs/QmbzrpoWNr4egScJgaE5X5fqztDgqNmxgr8iL17kUWN548 new file mode 100644 index 000000000..0ba127474 Binary files /dev/null and b/vue-app/public/ipfs/QmbzrpoWNr4egScJgaE5X5fqztDgqNmxgr8iL17kUWN548 differ diff --git a/vue-app/public/ipfs/Qmc9LBjLxcDwhkAPqWxi3YEBjzKsL21JAqfRr65NAS67xw b/vue-app/public/ipfs/Qmc9LBjLxcDwhkAPqWxi3YEBjzKsL21JAqfRr65NAS67xw new file mode 100644 index 000000000..cb25b48ee Binary files /dev/null and b/vue-app/public/ipfs/Qmc9LBjLxcDwhkAPqWxi3YEBjzKsL21JAqfRr65NAS67xw differ diff --git a/vue-app/public/ipfs/QmcBD7iiiaRbPvW6y9dyw6pJJiaWumEUk2cTGnAh4dDaUG b/vue-app/public/ipfs/QmcBD7iiiaRbPvW6y9dyw6pJJiaWumEUk2cTGnAh4dDaUG new file mode 100644 index 000000000..6aa3b9917 Binary files /dev/null and b/vue-app/public/ipfs/QmcBD7iiiaRbPvW6y9dyw6pJJiaWumEUk2cTGnAh4dDaUG differ diff --git a/vue-app/public/ipfs/QmcCKobPeXruvwZsB5KYdJcjZfmw4EuWxhewsJi2YpqrsP b/vue-app/public/ipfs/QmcCKobPeXruvwZsB5KYdJcjZfmw4EuWxhewsJi2YpqrsP new file mode 100644 index 000000000..11b175660 Binary files /dev/null and b/vue-app/public/ipfs/QmcCKobPeXruvwZsB5KYdJcjZfmw4EuWxhewsJi2YpqrsP differ diff --git a/vue-app/public/ipfs/QmcFEa7UDXFPh1SKDNGayNyRMCHkkr4onMQztDvgkQEXRU b/vue-app/public/ipfs/QmcFEa7UDXFPh1SKDNGayNyRMCHkkr4onMQztDvgkQEXRU new file mode 100644 index 000000000..35e47cb4c Binary files /dev/null and b/vue-app/public/ipfs/QmcFEa7UDXFPh1SKDNGayNyRMCHkkr4onMQztDvgkQEXRU differ diff --git a/vue-app/public/ipfs/QmcvMMXA29RAaYf8Snd7Xtw9QeV6yeHDJDBt7F27AA64y3 b/vue-app/public/ipfs/QmcvMMXA29RAaYf8Snd7Xtw9QeV6yeHDJDBt7F27AA64y3 new file mode 100644 index 000000000..1b57b9b89 Binary files /dev/null and b/vue-app/public/ipfs/QmcvMMXA29RAaYf8Snd7Xtw9QeV6yeHDJDBt7F27AA64y3 differ diff --git a/vue-app/public/ipfs/Qmd3J3a5S7aJ5RtvYWuoMQ1twCo3hwjjRVpr8xX19BXRkK b/vue-app/public/ipfs/Qmd3J3a5S7aJ5RtvYWuoMQ1twCo3hwjjRVpr8xX19BXRkK new file mode 100644 index 000000000..2328c8df9 Binary files /dev/null and b/vue-app/public/ipfs/Qmd3J3a5S7aJ5RtvYWuoMQ1twCo3hwjjRVpr8xX19BXRkK differ diff --git a/vue-app/public/ipfs/Qmd5FrGa7UDfVcmVXnwGxEbv9kJtrAzgzevnzPqbsrMfNP b/vue-app/public/ipfs/Qmd5FrGa7UDfVcmVXnwGxEbv9kJtrAzgzevnzPqbsrMfNP new file mode 100644 index 000000000..275fed3e2 Binary files /dev/null and b/vue-app/public/ipfs/Qmd5FrGa7UDfVcmVXnwGxEbv9kJtrAzgzevnzPqbsrMfNP differ diff --git a/vue-app/public/ipfs/Qmd7apiXs5Zfuun5BYvpr3SYtWHSR3ieFr7DomTUM3PJ1X b/vue-app/public/ipfs/Qmd7apiXs5Zfuun5BYvpr3SYtWHSR3ieFr7DomTUM3PJ1X new file mode 100644 index 000000000..29afe964a Binary files /dev/null and b/vue-app/public/ipfs/Qmd7apiXs5Zfuun5BYvpr3SYtWHSR3ieFr7DomTUM3PJ1X differ diff --git a/vue-app/public/ipfs/Qmd9iHJVMxeLhTLHNDMRPCszMFWnzNQ534fMHvJYbuCE6r b/vue-app/public/ipfs/Qmd9iHJVMxeLhTLHNDMRPCszMFWnzNQ534fMHvJYbuCE6r new file mode 100644 index 000000000..3d36ca63e Binary files /dev/null and b/vue-app/public/ipfs/Qmd9iHJVMxeLhTLHNDMRPCszMFWnzNQ534fMHvJYbuCE6r differ diff --git a/vue-app/public/ipfs/QmdC7knhXZPB2iWfhF4SrQ5qkZFLFshehM1uMy3m7SJ7yG b/vue-app/public/ipfs/QmdC7knhXZPB2iWfhF4SrQ5qkZFLFshehM1uMy3m7SJ7yG new file mode 100644 index 000000000..ed82355c5 Binary files /dev/null and b/vue-app/public/ipfs/QmdC7knhXZPB2iWfhF4SrQ5qkZFLFshehM1uMy3m7SJ7yG differ diff --git a/vue-app/public/ipfs/QmdEBVmj779Ui5JUHDNLZ5wfWSxgm7gCQR6uBbQWdZv8tH b/vue-app/public/ipfs/QmdEBVmj779Ui5JUHDNLZ5wfWSxgm7gCQR6uBbQWdZv8tH new file mode 100644 index 000000000..c9ab7967b Binary files /dev/null and b/vue-app/public/ipfs/QmdEBVmj779Ui5JUHDNLZ5wfWSxgm7gCQR6uBbQWdZv8tH differ diff --git a/vue-app/public/ipfs/QmdZT8GyRChyteoDvpi6krqvJgVUXcNF6nGwdMA8yPJUwA b/vue-app/public/ipfs/QmdZT8GyRChyteoDvpi6krqvJgVUXcNF6nGwdMA8yPJUwA new file mode 100644 index 000000000..d1d12aaca Binary files /dev/null and b/vue-app/public/ipfs/QmdZT8GyRChyteoDvpi6krqvJgVUXcNF6nGwdMA8yPJUwA differ diff --git a/vue-app/public/ipfs/QmdZz3h9AyN5JS21vk314t8PE4b87pD16XfoHfCffcFYgH b/vue-app/public/ipfs/QmdZz3h9AyN5JS21vk314t8PE4b87pD16XfoHfCffcFYgH new file mode 100644 index 000000000..14e9f1ed7 Binary files /dev/null and b/vue-app/public/ipfs/QmdZz3h9AyN5JS21vk314t8PE4b87pD16XfoHfCffcFYgH differ diff --git a/vue-app/public/ipfs/QmddXJfXL5bz5sJ5b2CRoJ1ccATKWAX79PChwBuwCGGPfu b/vue-app/public/ipfs/QmddXJfXL5bz5sJ5b2CRoJ1ccATKWAX79PChwBuwCGGPfu new file mode 100644 index 000000000..85e220337 Binary files /dev/null and b/vue-app/public/ipfs/QmddXJfXL5bz5sJ5b2CRoJ1ccATKWAX79PChwBuwCGGPfu differ diff --git a/vue-app/public/ipfs/QmdfVbH6CVkmj2HdnFZz5uRuSB4KfhuLnPogSNAqZKGwGb b/vue-app/public/ipfs/QmdfVbH6CVkmj2HdnFZz5uRuSB4KfhuLnPogSNAqZKGwGb new file mode 100644 index 000000000..ec27024c3 Binary files /dev/null and b/vue-app/public/ipfs/QmdfVbH6CVkmj2HdnFZz5uRuSB4KfhuLnPogSNAqZKGwGb differ diff --git a/vue-app/public/ipfs/QmeDnjVuCrvu33gY2iW2TP93RxnZbjLf16BAoJwyhS8ibb b/vue-app/public/ipfs/QmeDnjVuCrvu33gY2iW2TP93RxnZbjLf16BAoJwyhS8ibb new file mode 100644 index 000000000..8869d2fb0 Binary files /dev/null and b/vue-app/public/ipfs/QmeDnjVuCrvu33gY2iW2TP93RxnZbjLf16BAoJwyhS8ibb differ diff --git a/vue-app/public/ipfs/QmeGuXQURtAajccdTePCn7tZtceLA3dDFs52XCwGNoA36K b/vue-app/public/ipfs/QmeGuXQURtAajccdTePCn7tZtceLA3dDFs52XCwGNoA36K new file mode 100644 index 000000000..65b4e1c9e Binary files /dev/null and b/vue-app/public/ipfs/QmeGuXQURtAajccdTePCn7tZtceLA3dDFs52XCwGNoA36K differ diff --git a/vue-app/public/ipfs/QmefekA2he8oga1wNxHUqBZBYSsLDAaZSf3Afa3X5LMbTc b/vue-app/public/ipfs/QmefekA2he8oga1wNxHUqBZBYSsLDAaZSf3Afa3X5LMbTc new file mode 100644 index 000000000..a4214157f Binary files /dev/null and b/vue-app/public/ipfs/QmefekA2he8oga1wNxHUqBZBYSsLDAaZSf3Afa3X5LMbTc differ diff --git a/vue-app/public/ipfs/QmeqAv3bnEbDEG442xE4HgesxSDP1a1ujWpdginoAXiMzh b/vue-app/public/ipfs/QmeqAv3bnEbDEG442xE4HgesxSDP1a1ujWpdginoAXiMzh new file mode 100644 index 000000000..b4553bbc0 Binary files /dev/null and b/vue-app/public/ipfs/QmeqAv3bnEbDEG442xE4HgesxSDP1a1ujWpdginoAXiMzh differ diff --git a/vue-app/public/ipfs/Qmf35JijK8syF2MhGDtvpRs2Qi7WreaDdAQhXUbvmakczt b/vue-app/public/ipfs/Qmf35JijK8syF2MhGDtvpRs2Qi7WreaDdAQhXUbvmakczt new file mode 100644 index 000000000..8a1af724a Binary files /dev/null and b/vue-app/public/ipfs/Qmf35JijK8syF2MhGDtvpRs2Qi7WreaDdAQhXUbvmakczt differ diff --git a/vue-app/public/ipfs/QmfDzxBjJdKhgNEPGpxu945n97pKPyYFGc8J7PPZTJcP4c b/vue-app/public/ipfs/QmfDzxBjJdKhgNEPGpxu945n97pKPyYFGc8J7PPZTJcP4c new file mode 100644 index 000000000..0105cabf7 Binary files /dev/null and b/vue-app/public/ipfs/QmfDzxBjJdKhgNEPGpxu945n97pKPyYFGc8J7PPZTJcP4c differ diff --git a/vue-app/public/ipfs/QmfJLqJYneNeKn51bDpC3cBGewiMtNiWZhgeQDDG4ALmhy b/vue-app/public/ipfs/QmfJLqJYneNeKn51bDpC3cBGewiMtNiWZhgeQDDG4ALmhy new file mode 100644 index 000000000..f474abd6d Binary files /dev/null and b/vue-app/public/ipfs/QmfJLqJYneNeKn51bDpC3cBGewiMtNiWZhgeQDDG4ALmhy differ diff --git a/vue-app/public/ipfs/QmfJNnDQVsitX6cWkYLBtYWpdBSjq7RZDbHZGebmsMJXE4 b/vue-app/public/ipfs/QmfJNnDQVsitX6cWkYLBtYWpdBSjq7RZDbHZGebmsMJXE4 new file mode 100644 index 000000000..8220553fd Binary files /dev/null and b/vue-app/public/ipfs/QmfJNnDQVsitX6cWkYLBtYWpdBSjq7RZDbHZGebmsMJXE4 differ diff --git a/vue-app/public/ipfs/QmfLHWB3ZtCa5bcB4MoehXStZoJG4jrFmhfuj1wQvMK4ee b/vue-app/public/ipfs/QmfLHWB3ZtCa5bcB4MoehXStZoJG4jrFmhfuj1wQvMK4ee new file mode 100644 index 000000000..a16edf9a7 Binary files /dev/null and b/vue-app/public/ipfs/QmfLHWB3ZtCa5bcB4MoehXStZoJG4jrFmhfuj1wQvMK4ee differ diff --git a/vue-app/public/ipfs/QmfUAzUAmKgaVvCw7VRpNKPDpzgwR2uTGHknHUknh3WPVh b/vue-app/public/ipfs/QmfUAzUAmKgaVvCw7VRpNKPDpzgwR2uTGHknHUknh3WPVh new file mode 100644 index 000000000..3aa5156d4 Binary files /dev/null and b/vue-app/public/ipfs/QmfUAzUAmKgaVvCw7VRpNKPDpzgwR2uTGHknHUknh3WPVh differ diff --git a/vue-app/src/api/projects.ts b/vue-app/src/api/projects.ts index 22b4a3089..323ed0f6c 100644 --- a/vue-app/src/api/projects.ts +++ b/vue-app/src/api/projects.ts @@ -15,9 +15,8 @@ export interface LeaderboardProject { id: string // Address or another ID depending on registry implementation name: string index: number - bannerImageUrl?: string - thumbnailImageUrl?: string - imageUrl?: string + bannerImageHash?: string + thumbnailImageHash?: string allocatedAmount: bigint votes: bigint donation: bigint @@ -40,9 +39,8 @@ export interface Project { websiteUrl?: string twitterUrl?: string discordUrl?: string - bannerImageUrl?: string - thumbnailImageUrl?: string - imageUrl?: string // TODO remove + bannerImageHash?: string + thumbnailImageHash?: string index: number isHidden: boolean // Hidden from the list (does not participate in round) isLocked: boolean // Visible, but contributions are not allowed @@ -54,17 +52,33 @@ export interface Project { export async function getRecipientRegistryAddress(roundAddress: string | null): Promise { if (roundAddress !== null) { const fundingRound = new Contract(roundAddress, FundingRound, provider) - return await fundingRound.recipientRegistry() + return await fundingRound.recipientRegistry().catch(() => null) } else { - return await clrFundContract.recipientRegistry() + return await clrFundContract.recipientRegistry().catch(() => null) } } -export async function getProjects(registryAddress: string, startTime?: number, endTime?: number): Promise { +/** + * Get all the projects added between the start and end time + * @returns List of projects + */ +export async function getProjects({ + registryAddress, + fundingRoundAddress, + network, + startTime, + endTime, +}: { + registryAddress: string + fundingRoundAddress?: string + network?: string + startTime?: number + endTime?: number +}): Promise { if (recipientRegistryType === 'simple') { return await SimpleRegistry.getProjects(registryAddress, startTime, endTime) } else if (recipientRegistryType === 'optimistic') { - return await OptimisticRegistry.getProjects(registryAddress, startTime, endTime) + return await OptimisticRegistry.getProjects({ registryAddress, fundingRoundAddress, network, startTime, endTime }) } else if (recipientRegistryType === 'kleros') { return await KlerosRegistry.getProjects(registryAddress, startTime, endTime) } else { @@ -82,11 +96,21 @@ export async function getProjects(registryAddress: string, startTime?: number, e * @param filter filter result by locked or verified status * @returns project information */ -export async function getProject(registryAddress: string, recipientId: string, filter = true): Promise { +export async function getProject({ + registryAddress, + fundingRoundAddress, + recipientId, + filter = true, +}: { + registryAddress: string + fundingRoundAddress?: string + recipientId: string + filter: boolean +}): Promise { if (recipientRegistryType === 'simple') { return await SimpleRegistry.getProject(registryAddress, recipientId) } else if (recipientRegistryType === 'optimistic') { - return await OptimisticRegistry.getProject(recipientId, filter) + return await OptimisticRegistry.getProject({ fundingRoundAddress, recipientId, filter }) } else if (recipientRegistryType === 'kleros') { return await KlerosRegistry.getProject(registryAddress, recipientId) } else { @@ -140,17 +164,13 @@ export async function getProjectByIndex( metadata = {} } - const thumbnailImageUrl = metadata.thumbnailImageHash - ? `${ipfsGatewayUrl}/ipfs/${metadata.thumbnailImageHash}` - : `${ipfsGatewayUrl}/ipfs/${metadata.imageUrl}` - return { id: recipient.id, address: recipient.recipientAddress || '', name: metadata.name, description: metadata.description, tagline: metadata.tagline, - thumbnailImageUrl, + thumbnailImageHash: metadata.thumbnailImageHash || metadata.imageHash, index: recipient.recipientIndex, } } @@ -188,12 +208,12 @@ export async function getRecipientIdByHash(transactionHash: string): Promise project.id === projectId) const metadata = project.metadata - const thumbnailHash = metadata.thumbnailImageHash || metadata.imageHash - const thumbnailImageUrl = thumbnailHash ? `${ipfsGatewayUrl}/ipfs/${thumbnailHash}` : undefined - const bannerHash = metadata.bannerImageHash || metadata.imageHash - const bannerImageUrl = bannerHash ? `${ipfsGatewayUrl}/ipfs/${bannerHash}` : undefined + const thumbnailImageHash = metadata.thumbnailImageHash || metadata.imageHash + const bannerImageHash = metadata.bannerImageHash || metadata.imageHash return { id: project.id, @@ -234,8 +252,8 @@ export async function getLeaderboardProject( websiteUrl: metadata.websiteUrl, twitterUrl: metadata.twitterUrl, discordUrl: metadata.discordUrl, - thumbnailImageUrl, - bannerImageUrl, + thumbnailImageHash, + bannerImageHash, index: project.recipientIndex, isHidden: false, // always show leaderboard project isLocked: true, // Visible, but contributions are not allowed @@ -260,8 +278,8 @@ export function formToProjectInterface(data: RecipientApplicationData): Project websiteUrl: links.website, twitterUrl: links.twitter, discordUrl: links.discord, - bannerImageUrl: `${ipfsGatewayUrl}/ipfs/${image.bannerHash}`, - thumbnailImageUrl: `${ipfsGatewayUrl}/ipfs/${image.thumbnailHash}`, + bannerImageHash: image.bannerHash, + thumbnailImageHash: image.thumbnailHash, index: 0, isHidden: false, isLocked: true, @@ -290,9 +308,8 @@ export function staticDataToProjectInterface(project: any): Project { websiteUrl: project.metadata.websiteUrl, twitterUrl: project.metadata.twitterUrl, discordUrl: project.discordUrl, - imageUrl: `${ipfsGatewayUrl}/ipfs/${project.metadata.imageHash}`, - bannerImageUrl: `${ipfsGatewayUrl}/ipfs/${project.metadata.bannerImageHash}`, - thumbnailImageUrl: `${ipfsGatewayUrl}/ipfs/${project.metadata.thumbnailImageHash}`, + bannerImageHash: project.metadata.bannerImageHash || project.metadata.imageHash, + thumbnailImageHash: project.metadata.thumbnailImageHash || project.metadata.imageHash, index: project.recipientIndex, isHidden: project.state !== 'Accepted', isLocked: false, diff --git a/vue-app/src/api/recipient-registry-kleros.ts b/vue-app/src/api/recipient-registry-kleros.ts index 7ab229938..943a6e149 100644 --- a/vue-app/src/api/recipient-registry-kleros.ts +++ b/vue-app/src/api/recipient-registry-kleros.ts @@ -39,7 +39,7 @@ function decodeTcrItemData( address: string name: string description: string - imageUrl: string + imageHash: string } { // Disable console.error to ignore parser errors /* eslint-disable no-console */ @@ -52,7 +52,7 @@ function decodeTcrItemData( address: decodedMetadata[1] as string, name: decodedMetadata[0] as string, description: decodedMetadata[3] as string, - imageUrl: `${ipfsGatewayUrl}${decodedMetadata[2]}`, + imageHash: decodedMetadata[2] as string, } } diff --git a/vue-app/src/api/recipient-registry-optimistic.ts b/vue-app/src/api/recipient-registry-optimistic.ts index 9963d9f77..8a2f5b054 100644 --- a/vue-app/src/api/recipient-registry-optimistic.ts +++ b/vue-app/src/api/recipient-registry-optimistic.ts @@ -12,7 +12,7 @@ import { hasDateElapsed } from '@/utils/dates' import type { RegistryInfo, RecipientApplicationData } from './types' import { formToRecipientData } from './recipient' import { isSameAddress } from '@/utils/accounts' -import { findStaticRound } from './round' +import { findStaticRound, getStaticRoundInfo } from './round' async function getRegistryInfo(registryAddress: string): Promise { const registry = new Contract(registryAddress, OptimisticRecipientRegistry, provider) @@ -72,8 +72,8 @@ export enum RequestStatus { interface RecipientMetadata { name: string description: string - imageUrl: string - thumbnailImageUrl: string + imageHash: string + thumbnailImageHash: string } export interface Request { @@ -220,10 +220,8 @@ export async function getRequests(registryInfo: RegistryInfo, registryAddress: s metadata = { name, description, - imageUrl: `${ipfsGatewayUrl}/ipfs/${imageHash}`, - thumbnailImageUrl: thumbnailImageHash - ? `${ipfsGatewayUrl}/ipfs/${thumbnailImageHash}` - : `${ipfsGatewayUrl}/ipfs/${imageHash}`, + imageHash: imageHash, + thumbnailImageHash: thumbnailImageHash, } } @@ -278,9 +276,6 @@ function decodeProject(recipient: Partial): Project { const metadata = JSON.parse(recipient.recipientMetadata || '') - // imageUrl is the legacy form property - fall back to this if bannerImageHash or thumbnailImageHash don't exist - const imageUrl = `${ipfsGatewayUrl}/ipfs/${metadata.imageHash}` - let requester if (recipient.requester) { requester = recipient.requester @@ -292,7 +287,6 @@ function decodeProject(recipient: Partial): Project { requester, name: metadata.name, description: metadata.description, - imageUrl, // Only unregistered project can have invalid index 0 index: 0, isHidden: false, @@ -311,19 +305,41 @@ function decodeProject(recipient: Partial): Project { websiteUrl: metadata.websiteUrl, twitterUrl: metadata.twitterUrl, discordUrl: metadata.discordUrl, - bannerImageUrl: metadata.bannerImageHash ? `${ipfsGatewayUrl}/ipfs/${metadata.bannerImageHash}` : imageUrl, - thumbnailImageUrl: metadata.thumbnailImageHash ? `${ipfsGatewayUrl}/ipfs/${metadata.thumbnailImageHash}` : imageUrl, + bannerImageHash: metadata.bannerImageHash || metadata.imageHash, + thumbnailImageHash: metadata.thumbnailImageHash || metadata.imageHash, } } -export async function getProjects(registryAddress: string, startTime?: number, endTime?: number): Promise { +/** + * Get a list of projects created between the start time and end time + * @param registryAddress The recipient registry address + * @param fundingRoundAddress The funding round address to search in the static rounds + * @returns List of projects + */ +export async function getProjects({ + registryAddress, + fundingRoundAddress, + network, + startTime, + endTime, +}: { + registryAddress: string + fundingRoundAddress?: string + network?: string + startTime?: number + endTime?: number +}): Promise { let data: GetRecipientsQuery try { data = await sdk.GetRecipients({ registryAddress: registryAddress.toLowerCase(), }) } catch { - return [] + if (!fundingRoundAddress) { + return [] + } + const _round = await getStaticRoundInfo(fundingRoundAddress, network) + return _round?.projects || [] } if (!data.recipients.length) { @@ -389,14 +405,22 @@ export async function getProjects(registryAddress: string, startTime?: number, e /** * Find the project from the static round file * @param projectId The project id + * @param fundingRoundAddress The funding round address * @param filter Filter the project if it's deleted */ -async function findStaticProject(projectId: string, filter: boolean): Promise { +async function findStaticProject({ + projectId, + fundingRoundAddress, + filter, +}: { + fundingRoundAddress?: string + projectId: string + filter: boolean +}): Promise { let project: Project | null = null try { - const fundingRoundAddress = await clrFundContract.getCurrentRound() - const network = chain.label.toLowerCase() - const round = await findStaticRound(fundingRoundAddress, network) + const roundAddress = fundingRoundAddress ?? (await clrFundContract.getCurrentRound()) + const round = await findStaticRound(roundAddress) if (round?.projects) { const staticProject = round.projects.find(project => project.id === projectId) if (staticProject) { @@ -418,10 +442,19 @@ async function findStaticProject(projectId: string, filter: boolean): Promise { +export async function getProject({ + recipientId, + fundingRoundAddress, + filter = true, +}: { + recipientId: string + fundingRoundAddress?: string + filter: boolean +}): Promise { if (!isHexString(recipientId, 32)) { return null } @@ -432,7 +465,7 @@ export async function getProject(recipientId: string, filter = true): Promise { - const fundingRound = new Contract(fundingRoundAddress, FundingRound, provider) - const tallyHash = await fundingRound.tallyHash() - const response = await fetch(`${ipfsGatewayUrl}/ipfs/${tallyHash}`) - return await response.json() +export async function getTally(fundingRoundAddress: string): Promise { + let tally: Tally | null = null + + try { + // try to get the tally file statically first, if not found, try the IPFS gateway + const round = await findStaticRound(fundingRoundAddress, chain.name) + if (round?.tally) { + tally = round.tally + + // field name changes from MACI v0 to v1 + if (tally.totalVoiceCredits) { + tally.totalSpentVoiceCredits = tally.totalVoiceCredits + } + if (tally.totalVoiceCreditsPerVoteOption) { + tally.perVOSpentVoiceCredits = tally.totalVoiceCreditsPerVoteOption + } + } + } catch { + // ignore error and try to get the tally file from Ipfs gateway + } + + if (!tally) { + try { + const fundingRound = new Contract(fundingRoundAddress, FundingRound, provider) + const tallyHash = await fundingRound.tallyHash() + const response = await fetch(getIpfsUrl(tallyHash) || '') + return await response.json() + } catch { + // ignore error and return null + } + } + + return tally } diff --git a/vue-app/src/components.d.ts b/vue-app/src/components.d.ts index 5f037b3de..0dedd963b 100644 --- a/vue-app/src/components.d.ts +++ b/vue-app/src/components.d.ts @@ -8,7 +8,6 @@ export {} declare module '@vue/runtime-core' { export interface GlobalComponents { Accordion: typeof import('./components/Accordion.vue')['default'] - ActiveApp: typeof import('./components/ActiveApp.vue')['default'] AddToCartButton: typeof import('./components/AddToCartButton.vue')['default'] BackLink: typeof import('./components/BackLink.vue')['default'] BalanceItem: typeof import('./components/BalanceItem.vue')['default'] @@ -36,6 +35,7 @@ declare module '@vue/runtime-core' { Info: typeof import('./components/Info.vue')['default'] InputButton: typeof import('./components/InputButton.vue')['default'] IpfsCopyWidget: typeof import('./components/IpfsCopyWidget.vue')['default'] + IpfsImage: typeof import('./components/IpfsImage.vue')['default'] IpfsImageUpload: typeof import('./components/IpfsImageUpload.vue')['default'] LayoutSteps: typeof import('./components/LayoutSteps.vue')['default'] LeaderboardDetailView: typeof import('./components/LeaderboardDetailView.vue')['default'] @@ -57,7 +57,6 @@ declare module '@vue/runtime-core' { RouterLink: typeof import('vue-router')['RouterLink'] RouterView: typeof import('vue-router')['RouterView'] SignatureModal: typeof import('./components/SignatureModal.vue')['default'] - StaticApp: typeof import('./components/StaticApp.vue')['default'] TimeLeft: typeof import('./components/TimeLeft.vue')['default'] Transaction: typeof import('./components/Transaction.vue')['default'] TransactionModal: typeof import('./components/TransactionModal.vue')['default'] diff --git a/vue-app/src/components/CartItems.vue b/vue-app/src/components/CartItems.vue index 915a09f58..e2081542e 100644 --- a/vue-app/src/components/CartItems.vue +++ b/vue-app/src/components/CartItems.vue @@ -10,7 +10,7 @@ >
- + {{ item.name }} diff --git a/vue-app/src/components/IpfsImage.vue b/vue-app/src/components/IpfsImage.vue new file mode 100644 index 000000000..4cd531311 --- /dev/null +++ b/vue-app/src/components/IpfsImage.vue @@ -0,0 +1,37 @@ +