From ac1c5bb703f0361e69a28fe1cda1b3fd29b3b29e Mon Sep 17 00:00:00 2001 From: Shunsuke Kano Date: Tue, 13 Feb 2024 09:47:43 -0500 Subject: [PATCH 01/31] Create Sports-Pickem.md --- applications/Sports-Pickem.md | 421 ++++++++++++++++++++++++++++++++++ 1 file changed, 421 insertions(+) create mode 100644 applications/Sports-Pickem.md diff --git a/applications/Sports-Pickem.md b/applications/Sports-Pickem.md new file mode 100644 index 00000000..c92ab723 --- /dev/null +++ b/applications/Sports-Pickem.md @@ -0,0 +1,421 @@ +#Mintbase Grant Proposal + +- Project Name: Sports Pick'em +- Company Name: TENAMINT +- Payment Address: bstt.near +- Grant Level: 2 +- [Deck Link](https://drive.google.com/file/d/1VYaIq1BaJJ2A7r9JUvZFcIovBGXemnLb/view?usp=share_link): [https://drive.google.com/file/d/1VYaIq1BaJJ2A7r9JUvZFcIovBGXemnLb/view?usp=share\_link](https://drive.google.com/file/d/1VYaIq1BaJJ2A7r9JUvZFcIovBGXemnLb/view?usp=share_link) + +###Project Overview + +Project Description: **TENAMINT Sports Pick'em Game and Digital Collectibles** + +Introduce a groundbreaking era of sports gaming, inviting fans to actively participate in the exhilaration of sports fandom through the dynamic Sports Pick'em game. Engage by selecting winners in this free-to-play game, earning rewards, and collecting integrated sports collectibles. + +The envisioned product is crafted to transform into token-gated fan hubs, facilitating fan engagement throughout the pre-game, in-game, and post-game phases. The fan-centric approach and product features are tailored to resonate with the modern fan that seeks alternative and dynamic fan experiences that extend beyond simply watching the game. + +The game, rewards, collectibles, and upcoming product additions are intricately crafted to offer value in league partnerships, delivering exclusive content, digital collectibles, fan tokens and IRL activations. This approach fosters a vibrant ecosystem of sports enthusiasts, resulting in heightened fan experiences, strengthened league-to-fan relationships, and a compelling avenue for web3 fan-base adoption. + +####Key Features and Rewards: + +- **Pick'em Game:** + - Introduces dynamic live match prediction within Sports Pick'em. + - Users predict scores, player performances, and key play outcomes. + - Offers immediate rewards for correct predictions (points or tokens). + - Rewards can be redeemed for exclusive NFTs, fan experiences, or merchandise. +- **Collectables:** + - NFTs are a core aspect of the Pick'em game and can be used to enhance rewards in the Pick'em game and synergize with other games. + - Collectibles feature challenges that can be completed for further rewards. + - Collectibles are intended to be league partner/team partner specific + - Collectibles can be redeemed in exchange for rewards creating a loop +- **Marketplace:** + - Mintbase as the secondary marketplace for TENAMINT and partner digital collectibles. + - Enables wider audience reach and focus on program aspects. + - Partnership with Mintbase for featured listings enhances exposure. +- **Rewards:** + - Pick'em contest winners receive reward tokens. + - Tokens can be used within the platform or exchanged. + - Redeemable for digital collectibles, IRL experiences, and merchandise. +- **In-Game Engagement with Mintbase:** + - "Mint Your Moment" feature captures fan experiences at games with the NFT Minter + + +####Project Details + +- **Figma Exports:** + - [https://drive.google.com/drive/folders/1-rek75CWt7GZhEPEWXRKxfW2pQ7xgPIo?usp=share\_link](https://drive.google.com/drive/folders/1-rek75CWt7GZhEPEWXRKxfW2pQ7xgPIo?usp=share_link) +- **Exploratory/Early Staging Site:** + - [https://basketball-pickem-app.vercel.app/](https://basketball-pickem-app.vercel.app/) +- **Data Models** + - Data Model 1 (Research: User Flow Preliminary Conceptualization) + - [https://drive.google.com/file/d/1iCfI1y4dS4LQlhaMdx5paqJbsukCDHXm/view?usp=share\_link](https://drive.google.com/file/d/1iCfI1y4dS4LQlhaMdx5paqJbsukCDHXm/view?usp=share_link) + - Data Model 2 (Research: Token Interconnectivity Preliminary Conceptulization ) + - [https://drive.google.com/file/d/1slCt0Iz0pLFRpbtcstNFMM13rdc6Axvz/view?usp=share\_link](https://drive.google.com/file/d/1slCt0Iz0pLFRpbtcstNFMM13rdc6Axvz/view?usp=share_link) + - Architecture Model + - [https://drive.google.com/file/d/1pg3gqbdVOpssSn9sB0beQ\_FGDmX\_8v1I/view?usp=sharing](https://drive.google.com/file/d/1pg3gqbdVOpssSn9sB0beQ_FGDmX_8v1I/view?usp=sharing) + +####Tech-Stack, Architecture, and Components + +- TENAMINT Digital & Pick'em Game: + - Front-End: + - Design Tools: + - Figma (UI) + - Adobe Suite (Graph/Vector Design) + - Styling: + - Tailwind CSS for utility-first styling + - Tailwind UI, NextUI, Chakra UI for component libraries + - Storybook for UI component development + - Login Authentication + - Firebase Auth for authentication + - Mintbase Social Authentication + - Email Notification + - Firebase Auth for email notification + - js for server-side functionality + - Framework + - js for React-based web applications with server-side rendering and static site generation and flexibility. + - Hosting: + - Vercel for optimized Next.js hosting with serverless functions + + - Backend + - Database Requirements: + - Primary: Firebase + - Alternatively: MySQL or MongoDB + - Backend Hosting: + - Primary: Google Cloud Platform (GCP) for cloud services + - Decentralized Storage: Arweave and NFTStorage + - Additional Cloud Infrastructure: Digital Ocean + - Scaling Considerations: + - Utilize serverless architectures and content delivery networks (CDNs) + - Implement dynamic scaling of backend services + - Integrate NEAR blockchain technologies for efficient scaling and ecosystem integration + - Ensure high availability and fast content delivery under varying loads + - CI/CD Implementation: + - GitHub Actions used for Continuous Integration/Continuous Deployment and to automate software build, test, and deployment processes + - Data Models / API Specifications: + - RESTful APIs or GraphQL endpoints for core functionality + - Sports Data Provider: Genius Sports or Other + - Documentation: + - Comprehensive documentation for core components, protocols, and architecture + - Include integration details with sports data provider or similar for real-time data retrieval + - Blockchain + - NEAR network for blockchain functionality + - NEPs + - NEP141 (FT) + - Rewards + - NEP171 (NFT) + - Collectibles + - NEP245 (MTS) + - Marketplace + - NFT: Mintbase Marketplace Integration + - Merchandise E-Commerce: Droplinked + - Blockchain Indexer + - GraphQL API for blockchain indexer + - Wallet: + - NEAR Wallet Selector + - Mintbase Wallet, HERE, and others + - Tenamint Wallet App + - Powered by Mintbase Wallet + - Potential for direct to marketplace/rewards integration + +###Ecosystem Fit + +####Where and How TENAMINT Digital and Gaming fits into the Ecosystem: + + - Mintbase: + - Mintbase Wallet + - User friendly and streamlined user onboarding + - Passkey/Biometric Sign-in + - Social Auth Options + - Marketplace + - Primary Release Page (Collectible Packs) + - Secondary Marketplace + - Categorized by Sport, League, Team, Athlete byLeague\>Team\>Athlete + - Stripe Integration + - Payments to be processed in a variety of formats including NEAR and FIAT via Mintbase Stripe integration. + - NFT Minter: + - "Mint Your Moment" is a powerful way for TENAMINT to enable user-generated content providing data points for partner fan engagement and providing proof-of-watch metrics. This can be used whether at the game or tuning in from home. Fans can now seamlessly capture and immortalize their favorite game moments and easily share their fan perspective with other fanatics, earn rewards, and be showcased on screen during the game. + - AffiliateDirect + - Utilizing the Mintbase AffiliateDirect referral system allows TENAMINT to engage fans and influencers to generate a personalized affiliate link to earn rewards and foster active promotion and community collaboration. + - Indexer + - Utilization of GraphQL Indexer for efficient user data tracking, swiftly determining token ownership, royalties, and other critical information. This enhances platform dynamics, providing valuable insights into user behavior. + + - NEAR + - Leading Sports Gaming and Collectibles on NEAR + - TENAMINT aims to position itself as a pioneering force in the Web3 ecosystem, specifically targeting the sports entertainment and collectibles sector with an emphasis on creative, interconnected, and fan-first products. + - The products intertwine to introduce an innovative approach to sports gaming with free-to-play predictive gaming, fan engagement, league partnerships, and integrated collectibles with utility. + - The integration of NFTs as a core element in the Pick'em game adds a unique layer to the user experience, providing enhanced rewards, integrating challenges, and creating a fan-engagement ecosystem that encourages consistent activity pre-game, during the game, and post-game. + + - The Power of Sport Driven Web3 Adoption + - Recognizing the vast market potential of sports, TENAMINT strategically taps into the historical significance of sports as a driving force for Web3 adoption. + - In the realm of Web3 adoption, sports enthusiasts present a particularly engaged and passionate user base. TENAMINT aims not only to capture this existing audience but also to showcase how the intersection of sports and blockchain technology can drive widespread adoption. + - As NEAR becomes the foundation for this innovative sports-centric platform, there is a symbiotic relationship as TENAMINT benefits from the scalability of NEAR but also contributes to the growth of the NEAR ecosystem + - The proposed products aim to demonstrate the impact of fan-first products and seamless integration with user-experience focused blockchain technology. + - Building for League Partnerships + - The proposed products are conceptualized with sports league research and feedback with the goal of utilizing its technological developments as a catalyst for strategic league and team partnerships. + - By forging alliances with sports entities, TENAMINT aims to bring entire fan-bases into its ecosystem, creating a collaborative space where sports enthusiasts can engage with their favorite teams and leagues through innovative digital experiences and collectibles. + - IRL activations and use-cases + - The proposed products and developments are designed with in-arena and other IRL use-cases in mind. + - For example, the "Mint Your Moment" feature, capturing fan experiences at games and immortalizing them as NFTs on the NEAR blockchain, not only advances Web3 technology but also provides a tangible connection between the digital and physical worlds. + - TENAMINT's commitment to bridging the digital-physical gap sets it apart as a holistic and immersive experience within the sports and gaming ecosystem. + +####Target Audience and Needs Met: + +- Target Audience: + - Sports Leagues and Teams: + - Providing fan experience solutions through partnerships that enable TENAMINT to revolutionize the fan experience for leagues through immersive games, collectibles, and rewards that cater to the evolving needs of the next generation of fans. + - Sports Enthusiasts: + - Designed to appeal to fans of all sports, leagues, teams, players regardless of their experience with web3 + - Collectibles Enthusiasts: + - Sports Collectibles: Engaging collectors who appreciate sports collectibles whether digital or physical + - Digital Collectibles: Catering to the growing community of NFT collectors, providing exclusive sports-related digital assets on the blockchain. + - Blockchain Enthusiasts: + - Attracting individuals interested in blockchain technology and its applications, introducing them to on-chain fantasy sports and collectibles. + - Gamers: + - Fantasy Sports Players: Captivating the interest of fantasy sports enthusiasts who relish strategic team-building, decision-making, challenges, and spirited competition. The engagement of these dedicated players is set to escalate with the rollout of additional game formats. + - Web3 Gamers: Addressing the needs of gamers within the Web3 space who are seeking blockchain enabled games + - Play-to-Earn Gamers: Built with an emphasis on rewards to attract those actively seeking games with play-to-earn features. + +- Audience Needs Met by the Project + - Sports Leagues and Teams: + - Need: Enhanced Fan Engagement + - Solution: Through strategic partnerships, TENAMINT revolutionizes the fan experience for sports leagues with immersive games, collectibles, and rewards, meeting the evolving expectations of the next generation of fans. + - The goal (with reference to league needs) is to build technology that transforms sports engagement through data-driven insights and advanced sport technology. It monitors fan interactions with NFTs and fantasy leagues, providing crucial analyses of preferences, demographics, and digital asset performance. The platform can provide insights relating to fan acquisition, retention, behaviors, and data, empowering leagues with data for informed decision-making. This solution can help leagues navigate the dynamic landscape of evolving fan engagement. + - Sports Enthusiasts: + - Need: Immersive Fan Experience + - Solution: Creating an all-encompassing fan experience through creation of gaming options, official collectibles, rewards, more as a part of a fan-first ecosystem. These offerings resonate with fans across diverse sports, leagues, teams, and players, ensuring inclusivity and enjoyment, irrespective of their familiarity with Web3 technologies. + - Collectibles Enthusiasts: + - Need: Engaging Collectibles Experience + - Solution: Crafting captivating collectibles experiences by introducing exclusive collectibles that directly connect fans to their favorite teams and players.. These digital collectibles provide utility, enhancing rewards in games and addressing the evolving needs of fans. + - Gamers: + - Need: Engaging Gaming Experiences + - Solution: For fantasy sports players, TENAMINT provides a platform for pick'em and fantasy sports based competition with a play-to-earn rewards system that connects fans to their favorite leagues, teams, and players. + - Solution: Fantasy sports on the blockchain offer benefits such as enhanced transparency, immutable records, global accessibility, reduced fees, ownership of digital assets, and smart contract automation, ensuring fairness, security, and a more engaging user experience. + - Solution: For play-to-earn gamers, the emphasis is on rewarding gameplay experiences, creating a dynamic and incentivized gaming environment. + + +####Similar Projects in NEAR Ecosystems: + +- Playible also offers a fantasy sports focused product but with a different approach to the space. +- SailGP has a officially licensed league NFT on built on NEAR from previous Seasons +- Dropt has a loyalty platform related to sports advertising and sponsorship +- Details pending TBA: The NEAR Foundation will become the ICC's official blockchain partner. + + +###Team + +#### + Team members + +- Nadir Chaudhry +- Sal Chaudhry +- Alex Astrum +- Shawn Bender +- Shunsuke Kano +- Walt Yao + +####Contact + +- Sal Chaudhry +- [office@tenamint.com](mailto:office@tenamint.com) +- [https://www.linkedin.com/in/salchaudhry](https://www.linkedin.com/in/salchaudhry/?originalSubdomain=ca) + +####Legal Structure + + - Registered Legal Entity + - Ball Street Technologies Inc. + - Registered Address: + - 408-146 Fort York Blvd., + - Toronto, ON, Canada + - M5V0E1 + +####Team Experience + +- TENAMINT: + - [www.tenamint.com/](http://www.tenamint.com/phygital) + - [https://app.tenamint.com/](https://app.tenamint.com/) + - TENAMINT leads the way in shaping the future of sports fan experiences, bringing immersive fantasy sports with play-to-earn rewards in addition to utility driven collectibles, and other fan-first offerings to a global audience. From fantasy sports gaming and digital collectibles to real-world activations, our products seamlessly converge, redefining fan engagement through a harmonious blend of blockchain technology, enticing rewards, and unparalleled fan experiences. This innovative approach extends beyond the digital realm, fostering real-world activations that not only fortify fan loyalty but also spearhead the evolution of interactive fan experiences. + - Accelerators and similar programs: + - NEAR HZN1, Innovation Boost Zone, Accelerator Centre, Founder Institute, etc. + +####Team Links: + +- TENAMINT: + - [https://github.com/TENAMINT](https://github.com/TENAMINT) + - [https://www.linkedin.com/company/73837227/admin/feed/posts/](https://www.linkedin.com/company/73837227/admin/feed/posts/) + - Nadir + - [https://www.linkedin.com/in/nadirchaudhry/](https://www.linkedin.com/in/nadirchaudhry/) + - Sal + - [https://github.com/Salikc9](https://github.com/Salikc9) + - [https://www.linkedin.com/in/salchaudhry/](https://www.linkedin.com/in/salchaudhry/?originalSubdomain=ca) + - Alex: + - [https://github.com/alexastrum](https://github.com/alexastrum) + - [https://www.linkedin.com/in/alexastrum/](https://www.linkedin.com/in/alexastrum/?originalSubdomain=ca) + - Shunsuke: + - [https://github.com/ShunsukeKano](https://github.com/ShunsukeKano) + - [https://www.linkedin.com/in/shunsuke-kano/](https://www.linkedin.com/in/shunsuke-kano/) + - Walt: + - [https://github.com/yaozakai](https://github.com/yaozakai?tab=repositories) + - [https://www.linkedin.com/in/waltyao/](https://www.linkedin.com/in/waltyao/) + - Shawn: + - [https://github.com/Benz222](https://github.com/Benz222) + +###Development Status + +If you've already started implementing your project or it is part of a larger repository, please provide a link and a description of the code here. In any case, please provide some documentation on the research and other work you have conducted before applying. This could be: + +####Wireframes, Mock-ups, Other: + +- Figma Mockup: + - [https://www.figma.com/proto/5ivxRYoqK2KHjKHhCht8up/TENAMINT-Pick'em?type=design&node-id=1300-2012&t=N4dCS0wkNofN63Fx-0&scaling=min-zoom&page-id=0%3A1&starting-point-node-id=1300%3A2012&show-proto-sidebar=1](https://www.figma.com/proto/5ivxRYoqK2KHjKHhCht8up/TENAMINT-Pick'em?type=design&node-id=1300-2012&t=N4dCS0wkNofN63Fx-0&scaling=min-zoom&page-id=0%3A1&starting-point-node-id=1300%3A2012&show-proto-sidebar=1) +- Early Staging Site: + - [https://basketball-pickem-app.vercel.app/](https://basketball-pickem-app.vercel.app/) +- Data & Architecture Models + - [https://drive.google.com/drive/folders/1-jmuOf-ubdDAY0ADfsPTALMGNEDnXYgc?usp=sharing](https://drive.google.com/drive/folders/1-jmuOf-ubdDAY0ADfsPTALMGNEDnXYgc?usp=sharing) +- Other Products: [https://tenamint.com/phygital](https://tenamint.com/phygital) +- _Note: A team development submission was submitted to abstraction hacks which featured some high-level concepts discussed in this proposal._ + +####Research Done: + +- Engagement with League Executives: In-depth conversations and consultations have taken place with league executives to gain valuable insights into their specific needs and identify emerging opportunities within the industry. +- Comprehensive Review and Audit: Rigorous examination and audit of fantasy sports gaming products, pick'em games, and sports collectibles have been undertaken. This comprehensive review ensures a thorough understanding of the current landscape and identifies areas for innovation and improvement. +- Market Research with Collectors: Valuable perspectives on the future of sport collectibles have been gathered through extensive in-person research with physical sport card collectors. This direct interaction has provided nuanced insights into the preferences and expectations of collectors in the evolving market. +- Industry Specialization: The co-founder brings a wealth of expertise to the project, grounded in an educational background specializing in sport business. Emphasizing fan experience and sport technology, the co-founder adopts a strategic and thoroughly researched approach to advancements in sports innovation and fan engagement. +- Other Relevant Experiences: A lifetime dedicated to being a team of passionate enthusiasts, including roles as die-hard fans, fantasy sports players, league commissioners, and collectors of both digital and physical sports collectibles, has provided a unique and holistic perspective. This firsthand experience enriches the project with a deep understanding of user expectations and industry dynamics. + +####Relevant Conversations: Mintbase + +- Paul via Zoom Call - September 2023 + - Discussion Regarding: TENAMINT and Mintbase Grant +- Nate at NEARCON 2023 - November 2023 + - Discussion Regarding: MTS, TENAMINT, and Future Opportunities + + +###Milestones and Product Roadmap + +####Overview — Milestone Summary + +- Estimated Duration: 4.5 months +- FTE: 3 +- Costs: $50,000 USD + +####Milestone 1 — Sports Pick'em Game + +- Estimated Duration: 1.5 months +- FTE: 3 +- Costs: $15,000 USD +- Deliverables: + + - Game: + - Mechanics Research and Refinement + - UX/UI Design and Prototyping + - Pick'em Game Development + - Integrations + - Onboarding + - Wallet Integration + - Data Provider Integration + - Smart Contracts + - Release: Game Beta + - Rewards and Rewards Marketplace: + - Planning + - Research + - UX/UI Design and Prototyping + - Mechanics + - Testing, Feedback, and Improvements: + - Testing + - Design Feedback Improvements + - Experience Feedback Improvements + - Mechanics Feedback Improvements + - Documentation Update + +####Milestone 2 — Rewards Development, Release, and Refinement + +Duration: 1.5 months + +- FTE: 3 +- Costs: $15,000 USD +- Deliverables: + + - Rewards and Rewards Marketplace: + - Design + - Utility + - Mechanics + - Smart Contracts + - Integrations + - Release: Rewards Marketplace + - Rewards & Game Integration + - Affiliate Program Integration + - NFT Planning: + - Planning + - Research + - Design and Prototyping + - Mechanics + - Testing, Feedback, and Improvements: + - Testing + - Design Feedback Improvements + - Experience Feedback Improvements + - Mechanics Feedback Improvements + - Documentation Update + +####Milestone 3 — NFT Release, Integration, & Development + +- Estimated Duration: 1.5 Months +- FTE: 3 +- Costs: $20,000 USD +- Deliverables: + + - NFT + - Pre-Release + - Official Release (V0 or V1 - Dependent on BD Variables) + - Primary Marketplace Open + - Secondary Marketplace Open + - Challenges + - Stripe Connection + - Game Integration + - Rewards Integration + - NFT Minter ("Mint Your Moment") + - IRL Activation Beta + - Game + - NFT Minter + - Testing, Feedback, and Improvements: + - Testing + - Design Feedback Improvements + - Experience Feedback Improvements + - Mechanics Feedback Improvements + - Documentation Update + +###Future Plans + +- **Short-Term:** In the short-term, our primary objectives include the integration of merchandise E-Commerce for the Rewards Marketplace, along with the implementation of social share features and the introduction of a bracket game to enhance user engagement. Additionally, we aim to execute our Go-To-Market (GTM) plan, focusing on strategic partnerships and the execution of seamless IRL activations in arena venues. + +- **Mid-Term:** Moving into the mid-term, we plan to develop and expand our product line to include more strategic and in-depth game formats such as a Daily Fantasy Sports (DFS) style game and eventually a season-long format. Our emphasis during this phase will also involve establishing dedicated fan hubs for leagues, teams, and athletes. We also plan to integrate our product on the BOS and continue with the execution of our GTM plan in sync with our partners. + +- **Long-Term:** Looking towards the long-term, our strategic vision includes the launch of fan tokens, with token gated channels, marketplaces, experiences and hubs. We plan to execute the pre-release and launch of the upcoming TENAMINT token, aiming to position it at the core of a fan-centric, sports-oriented, and gaming ecosystem formed by these products. If required, we will also consider multi-chain integrations and support in the long-term. Additional long-term goals involve increased collectible product lines through added partnerships. + +- **Note:** In the future we aim to eventually continue development towards advancing and improving Phygital/RWA releases and technologies by integrating and leveraging our newer product lines. Pre-developed and qualified userbases may eventually provide lead-generation for the Phygital/RWA products. Partnerships that align with the TENAMINT Phygital vision will also be considered as we recognize the trends and long-term potential of RWA-backed collectibles, fractional ownership, and other core concepts we had previously prioritized. It's essential to highlight that as mentioned in previous discussions with the Mintbase team, the Multi-Token Standard (MTS) is intricately connected to the TENAMINT Phygital product line and we'd like to explore Mintbase integration for this initiative in the future once our new product line priorities are successfully released and established. + +###Additional Information + +How did you hear about the Grants Program? + +- Mintbase team members: + - Nate G. + - Paul K. + + +Here you can also add any additional information that you think is relevant to this application but isn't part of it already, such as: + +- Work you have already done. + + - Tenamint Phygital + - Fractional & RWA-backed collectible cards + - ~$40,000 RWA Assets Listed + - Established + - Partnerships + - Accelerator Programs + - HZN, Accelerator Centre, Founder Institute, etc. + - $40,000+ Listed Assets + - MTS NEP Contributions + - Pre-Seed Fundraise in Early 2022 + - Grants + - NF Grant (2022 Builder & Quick-Starter Grants) + From 7dc1bc5d7489d7657b050b321a7dd178b148eba4 Mon Sep 17 00:00:00 2001 From: Shunsuke Kano Date: Tue, 13 Feb 2024 09:50:11 -0500 Subject: [PATCH 02/31] Update Sports-Pickem.md --- applications/Sports-Pickem.md | 50 +++++++++++++++++------------------ 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/applications/Sports-Pickem.md b/applications/Sports-Pickem.md index c92ab723..0ee98221 100644 --- a/applications/Sports-Pickem.md +++ b/applications/Sports-Pickem.md @@ -1,4 +1,4 @@ -#Mintbase Grant Proposal +# Mintbase Grant Proposal - Project Name: Sports Pick'em - Company Name: TENAMINT @@ -6,7 +6,7 @@ - Grant Level: 2 - [Deck Link](https://drive.google.com/file/d/1VYaIq1BaJJ2A7r9JUvZFcIovBGXemnLb/view?usp=share_link): [https://drive.google.com/file/d/1VYaIq1BaJJ2A7r9JUvZFcIovBGXemnLb/view?usp=share\_link](https://drive.google.com/file/d/1VYaIq1BaJJ2A7r9JUvZFcIovBGXemnLb/view?usp=share_link) -###Project Overview +### Project Overview Project Description: **TENAMINT Sports Pick'em Game and Digital Collectibles** @@ -16,7 +16,7 @@ The envisioned product is crafted to transform into token-gated fan hubs, facili The game, rewards, collectibles, and upcoming product additions are intricately crafted to offer value in league partnerships, delivering exclusive content, digital collectibles, fan tokens and IRL activations. This approach fosters a vibrant ecosystem of sports enthusiasts, resulting in heightened fan experiences, strengthened league-to-fan relationships, and a compelling avenue for web3 fan-base adoption. -####Key Features and Rewards: +#### Key Features and Rewards: - **Pick'em Game:** - Introduces dynamic live match prediction within Sports Pick'em. @@ -40,7 +40,7 @@ The game, rewards, collectibles, and upcoming product additions are intricately - "Mint Your Moment" feature captures fan experiences at games with the NFT Minter -####Project Details +#### Project Details - **Figma Exports:** - [https://drive.google.com/drive/folders/1-rek75CWt7GZhEPEWXRKxfW2pQ7xgPIo?usp=share\_link](https://drive.google.com/drive/folders/1-rek75CWt7GZhEPEWXRKxfW2pQ7xgPIo?usp=share_link) @@ -54,7 +54,7 @@ The game, rewards, collectibles, and upcoming product additions are intricately - Architecture Model - [https://drive.google.com/file/d/1pg3gqbdVOpssSn9sB0beQ\_FGDmX\_8v1I/view?usp=sharing](https://drive.google.com/file/d/1pg3gqbdVOpssSn9sB0beQ_FGDmX_8v1I/view?usp=sharing) -####Tech-Stack, Architecture, and Components +#### Tech-Stack, Architecture, and Components - TENAMINT Digital & Pick'em Game: - Front-End: @@ -117,9 +117,9 @@ The game, rewards, collectibles, and upcoming product additions are intricately - Powered by Mintbase Wallet - Potential for direct to marketplace/rewards integration -###Ecosystem Fit +### Ecosystem Fit -####Where and How TENAMINT Digital and Gaming fits into the Ecosystem: +#### Where and How TENAMINT Digital and Gaming fits into the Ecosystem: - Mintbase: - Mintbase Wallet @@ -158,7 +158,7 @@ The game, rewards, collectibles, and upcoming product additions are intricately - For example, the "Mint Your Moment" feature, capturing fan experiences at games and immortalizing them as NFTs on the NEAR blockchain, not only advances Web3 technology but also provides a tangible connection between the digital and physical worlds. - TENAMINT's commitment to bridging the digital-physical gap sets it apart as a holistic and immersive experience within the sports and gaming ecosystem. -####Target Audience and Needs Met: +#### Target Audience and Needs Met: - Target Audience: - Sports Leagues and Teams: @@ -193,7 +193,7 @@ The game, rewards, collectibles, and upcoming product additions are intricately - Solution: For play-to-earn gamers, the emphasis is on rewarding gameplay experiences, creating a dynamic and incentivized gaming environment. -####Similar Projects in NEAR Ecosystems: +#### Similar Projects in NEAR Ecosystems: - Playible also offers a fantasy sports focused product but with a different approach to the space. - SailGP has a officially licensed league NFT on built on NEAR from previous Seasons @@ -201,7 +201,7 @@ The game, rewards, collectibles, and upcoming product additions are intricately - Details pending TBA: The NEAR Foundation will become the ICC's official blockchain partner. -###Team +### Team #### Team members @@ -213,13 +213,13 @@ The game, rewards, collectibles, and upcoming product additions are intricately - Shunsuke Kano - Walt Yao -####Contact +#### Contact - Sal Chaudhry - [office@tenamint.com](mailto:office@tenamint.com) - [https://www.linkedin.com/in/salchaudhry](https://www.linkedin.com/in/salchaudhry/?originalSubdomain=ca) -####Legal Structure +#### Legal Structure - Registered Legal Entity - Ball Street Technologies Inc. @@ -228,7 +228,7 @@ The game, rewards, collectibles, and upcoming product additions are intricately - Toronto, ON, Canada - M5V0E1 -####Team Experience +#### Team Experience - TENAMINT: - [www.tenamint.com/](http://www.tenamint.com/phygital) @@ -237,7 +237,7 @@ The game, rewards, collectibles, and upcoming product additions are intricately - Accelerators and similar programs: - NEAR HZN1, Innovation Boost Zone, Accelerator Centre, Founder Institute, etc. -####Team Links: +#### Team Links: - TENAMINT: - [https://github.com/TENAMINT](https://github.com/TENAMINT) @@ -259,11 +259,11 @@ The game, rewards, collectibles, and upcoming product additions are intricately - Shawn: - [https://github.com/Benz222](https://github.com/Benz222) -###Development Status +### Development Status If you've already started implementing your project or it is part of a larger repository, please provide a link and a description of the code here. In any case, please provide some documentation on the research and other work you have conducted before applying. This could be: -####Wireframes, Mock-ups, Other: +#### Wireframes, Mock-ups, Other: - Figma Mockup: - [https://www.figma.com/proto/5ivxRYoqK2KHjKHhCht8up/TENAMINT-Pick'em?type=design&node-id=1300-2012&t=N4dCS0wkNofN63Fx-0&scaling=min-zoom&page-id=0%3A1&starting-point-node-id=1300%3A2012&show-proto-sidebar=1](https://www.figma.com/proto/5ivxRYoqK2KHjKHhCht8up/TENAMINT-Pick'em?type=design&node-id=1300-2012&t=N4dCS0wkNofN63Fx-0&scaling=min-zoom&page-id=0%3A1&starting-point-node-id=1300%3A2012&show-proto-sidebar=1) @@ -274,7 +274,7 @@ If you've already started implementing your project or it is part of a larger re - Other Products: [https://tenamint.com/phygital](https://tenamint.com/phygital) - _Note: A team development submission was submitted to abstraction hacks which featured some high-level concepts discussed in this proposal._ -####Research Done: +#### Research Done: - Engagement with League Executives: In-depth conversations and consultations have taken place with league executives to gain valuable insights into their specific needs and identify emerging opportunities within the industry. - Comprehensive Review and Audit: Rigorous examination and audit of fantasy sports gaming products, pick'em games, and sports collectibles have been undertaken. This comprehensive review ensures a thorough understanding of the current landscape and identifies areas for innovation and improvement. @@ -282,7 +282,7 @@ If you've already started implementing your project or it is part of a larger re - Industry Specialization: The co-founder brings a wealth of expertise to the project, grounded in an educational background specializing in sport business. Emphasizing fan experience and sport technology, the co-founder adopts a strategic and thoroughly researched approach to advancements in sports innovation and fan engagement. - Other Relevant Experiences: A lifetime dedicated to being a team of passionate enthusiasts, including roles as die-hard fans, fantasy sports players, league commissioners, and collectors of both digital and physical sports collectibles, has provided a unique and holistic perspective. This firsthand experience enriches the project with a deep understanding of user expectations and industry dynamics. -####Relevant Conversations: Mintbase +#### Relevant Conversations: Mintbase - Paul via Zoom Call - September 2023 - Discussion Regarding: TENAMINT and Mintbase Grant @@ -290,15 +290,15 @@ If you've already started implementing your project or it is part of a larger re - Discussion Regarding: MTS, TENAMINT, and Future Opportunities -###Milestones and Product Roadmap +### Milestones and Product Roadmap -####Overview — Milestone Summary +#### Overview — Milestone Summary - Estimated Duration: 4.5 months - FTE: 3 - Costs: $50,000 USD -####Milestone 1 — Sports Pick'em Game +#### Milestone 1 — Sports Pick'em Game - Estimated Duration: 1.5 months - FTE: 3 @@ -327,7 +327,7 @@ If you've already started implementing your project or it is part of a larger re - Mechanics Feedback Improvements - Documentation Update -####Milestone 2 — Rewards Development, Release, and Refinement +#### Milestone 2 — Rewards Development, Release, and Refinement Duration: 1.5 months @@ -356,7 +356,7 @@ Duration: 1.5 months - Mechanics Feedback Improvements - Documentation Update -####Milestone 3 — NFT Release, Integration, & Development +#### Milestone 3 — NFT Release, Integration, & Development - Estimated Duration: 1.5 Months - FTE: 3 @@ -383,7 +383,7 @@ Duration: 1.5 months - Mechanics Feedback Improvements - Documentation Update -###Future Plans +### Future Plans - **Short-Term:** In the short-term, our primary objectives include the integration of merchandise E-Commerce for the Rewards Marketplace, along with the implementation of social share features and the introduction of a bracket game to enhance user engagement. Additionally, we aim to execute our Go-To-Market (GTM) plan, focusing on strategic partnerships and the execution of seamless IRL activations in arena venues. @@ -393,7 +393,7 @@ Duration: 1.5 months - **Note:** In the future we aim to eventually continue development towards advancing and improving Phygital/RWA releases and technologies by integrating and leveraging our newer product lines. Pre-developed and qualified userbases may eventually provide lead-generation for the Phygital/RWA products. Partnerships that align with the TENAMINT Phygital vision will also be considered as we recognize the trends and long-term potential of RWA-backed collectibles, fractional ownership, and other core concepts we had previously prioritized. It's essential to highlight that as mentioned in previous discussions with the Mintbase team, the Multi-Token Standard (MTS) is intricately connected to the TENAMINT Phygital product line and we'd like to explore Mintbase integration for this initiative in the future once our new product line priorities are successfully released and established. -###Additional Information +### Additional Information How did you hear about the Grants Program? From 975b5cf3728a5896c9e75574ab49258e362e998f Mon Sep 17 00:00:00 2001 From: Shunsuke Kano Date: Fri, 15 Mar 2024 14:10:01 -0400 Subject: [PATCH 03/31] Update Sports-Pickem.md --- applications/Sports-Pickem.md | 817 +++++++++++++++++----------------- 1 file changed, 410 insertions(+), 407 deletions(-) diff --git a/applications/Sports-Pickem.md b/applications/Sports-Pickem.md index 0ee98221..7d6d4d8e 100644 --- a/applications/Sports-Pickem.md +++ b/applications/Sports-Pickem.md @@ -1,421 +1,424 @@ # Mintbase Grant Proposal -- Project Name: Sports Pick'em -- Company Name: TENAMINT -- Payment Address: bstt.near -- Grant Level: 2 -- [Deck Link](https://drive.google.com/file/d/1VYaIq1BaJJ2A7r9JUvZFcIovBGXemnLb/view?usp=share_link): [https://drive.google.com/file/d/1VYaIq1BaJJ2A7r9JUvZFcIovBGXemnLb/view?usp=share\_link](https://drive.google.com/file/d/1VYaIq1BaJJ2A7r9JUvZFcIovBGXemnLb/view?usp=share_link) - -### Project Overview - -Project Description: **TENAMINT Sports Pick'em Game and Digital Collectibles** - -Introduce a groundbreaking era of sports gaming, inviting fans to actively participate in the exhilaration of sports fandom through the dynamic Sports Pick'em game. Engage by selecting winners in this free-to-play game, earning rewards, and collecting integrated sports collectibles. - -The envisioned product is crafted to transform into token-gated fan hubs, facilitating fan engagement throughout the pre-game, in-game, and post-game phases. The fan-centric approach and product features are tailored to resonate with the modern fan that seeks alternative and dynamic fan experiences that extend beyond simply watching the game. - -The game, rewards, collectibles, and upcoming product additions are intricately crafted to offer value in league partnerships, delivering exclusive content, digital collectibles, fan tokens and IRL activations. This approach fosters a vibrant ecosystem of sports enthusiasts, resulting in heightened fan experiences, strengthened league-to-fan relationships, and a compelling avenue for web3 fan-base adoption. - -#### Key Features and Rewards: - -- **Pick'em Game:** - - Introduces dynamic live match prediction within Sports Pick'em. - - Users predict scores, player performances, and key play outcomes. - - Offers immediate rewards for correct predictions (points or tokens). - - Rewards can be redeemed for exclusive NFTs, fan experiences, or merchandise. -- **Collectables:** - - NFTs are a core aspect of the Pick'em game and can be used to enhance rewards in the Pick'em game and synergize with other games. - - Collectibles feature challenges that can be completed for further rewards. - - Collectibles are intended to be league partner/team partner specific - - Collectibles can be redeemed in exchange for rewards creating a loop -- **Marketplace:** - - Mintbase as the secondary marketplace for TENAMINT and partner digital collectibles. - - Enables wider audience reach and focus on program aspects. - - Partnership with Mintbase for featured listings enhances exposure. -- **Rewards:** - - Pick'em contest winners receive reward tokens. - - Tokens can be used within the platform or exchanged. - - Redeemable for digital collectibles, IRL experiences, and merchandise. -- **In-Game Engagement with Mintbase:** - - "Mint Your Moment" feature captures fan experiences at games with the NFT Minter - - -#### Project Details - -- **Figma Exports:** - - [https://drive.google.com/drive/folders/1-rek75CWt7GZhEPEWXRKxfW2pQ7xgPIo?usp=share\_link](https://drive.google.com/drive/folders/1-rek75CWt7GZhEPEWXRKxfW2pQ7xgPIo?usp=share_link) -- **Exploratory/Early Staging Site:** - - [https://basketball-pickem-app.vercel.app/](https://basketball-pickem-app.vercel.app/) -- **Data Models** - - Data Model 1 (Research: User Flow Preliminary Conceptualization) - - [https://drive.google.com/file/d/1iCfI1y4dS4LQlhaMdx5paqJbsukCDHXm/view?usp=share\_link](https://drive.google.com/file/d/1iCfI1y4dS4LQlhaMdx5paqJbsukCDHXm/view?usp=share_link) - - Data Model 2 (Research: Token Interconnectivity Preliminary Conceptulization ) - - [https://drive.google.com/file/d/1slCt0Iz0pLFRpbtcstNFMM13rdc6Axvz/view?usp=share\_link](https://drive.google.com/file/d/1slCt0Iz0pLFRpbtcstNFMM13rdc6Axvz/view?usp=share_link) - - Architecture Model - - [https://drive.google.com/file/d/1pg3gqbdVOpssSn9sB0beQ\_FGDmX\_8v1I/view?usp=sharing](https://drive.google.com/file/d/1pg3gqbdVOpssSn9sB0beQ_FGDmX_8v1I/view?usp=sharing) - -#### Tech-Stack, Architecture, and Components - -- TENAMINT Digital & Pick'em Game: - - Front-End: - - Design Tools: - - Figma (UI) - - Adobe Suite (Graph/Vector Design) - - Styling: - - Tailwind CSS for utility-first styling - - Tailwind UI, NextUI, Chakra UI for component libraries - - Storybook for UI component development - - Login Authentication - - Firebase Auth for authentication - - Mintbase Social Authentication - - Email Notification - - Firebase Auth for email notification - - js for server-side functionality - - Framework - - js for React-based web applications with server-side rendering and static site generation and flexibility. - - Hosting: - - Vercel for optimized Next.js hosting with serverless functions - - - Backend - - Database Requirements: - - Primary: Firebase - - Alternatively: MySQL or MongoDB - - Backend Hosting: - - Primary: Google Cloud Platform (GCP) for cloud services - - Decentralized Storage: Arweave and NFTStorage - - Additional Cloud Infrastructure: Digital Ocean - - Scaling Considerations: - - Utilize serverless architectures and content delivery networks (CDNs) - - Implement dynamic scaling of backend services - - Integrate NEAR blockchain technologies for efficient scaling and ecosystem integration - - Ensure high availability and fast content delivery under varying loads - - CI/CD Implementation: - - GitHub Actions used for Continuous Integration/Continuous Deployment and to automate software build, test, and deployment processes - - Data Models / API Specifications: - - RESTful APIs or GraphQL endpoints for core functionality - - Sports Data Provider: Genius Sports or Other - - Documentation: - - Comprehensive documentation for core components, protocols, and architecture - - Include integration details with sports data provider or similar for real-time data retrieval - - Blockchain - - NEAR network for blockchain functionality - - NEPs - - NEP141 (FT) - - Rewards - - NEP171 (NFT) - - Collectibles - - NEP245 (MTS) - - Marketplace - - NFT: Mintbase Marketplace Integration - - Merchandise E-Commerce: Droplinked - - Blockchain Indexer - - GraphQL API for blockchain indexer - - Wallet: - - NEAR Wallet Selector - - Mintbase Wallet, HERE, and others - - Tenamint Wallet App - - Powered by Mintbase Wallet - - Potential for direct to marketplace/rewards integration - -### Ecosystem Fit - -#### Where and How TENAMINT Digital and Gaming fits into the Ecosystem: - - - Mintbase: - - Mintbase Wallet - - User friendly and streamlined user onboarding - - Passkey/Biometric Sign-in - - Social Auth Options - - Marketplace - - Primary Release Page (Collectible Packs) - - Secondary Marketplace - - Categorized by Sport, League, Team, Athlete byLeague\>Team\>Athlete - - Stripe Integration - - Payments to be processed in a variety of formats including NEAR and FIAT via Mintbase Stripe integration. - - NFT Minter: - - "Mint Your Moment" is a powerful way for TENAMINT to enable user-generated content providing data points for partner fan engagement and providing proof-of-watch metrics. This can be used whether at the game or tuning in from home. Fans can now seamlessly capture and immortalize their favorite game moments and easily share their fan perspective with other fanatics, earn rewards, and be showcased on screen during the game. - - AffiliateDirect - - Utilizing the Mintbase AffiliateDirect referral system allows TENAMINT to engage fans and influencers to generate a personalized affiliate link to earn rewards and foster active promotion and community collaboration. - - Indexer - - Utilization of GraphQL Indexer for efficient user data tracking, swiftly determining token ownership, royalties, and other critical information. This enhances platform dynamics, providing valuable insights into user behavior. - - - NEAR - - Leading Sports Gaming and Collectibles on NEAR - - TENAMINT aims to position itself as a pioneering force in the Web3 ecosystem, specifically targeting the sports entertainment and collectibles sector with an emphasis on creative, interconnected, and fan-first products. - - The products intertwine to introduce an innovative approach to sports gaming with free-to-play predictive gaming, fan engagement, league partnerships, and integrated collectibles with utility. - - The integration of NFTs as a core element in the Pick'em game adds a unique layer to the user experience, providing enhanced rewards, integrating challenges, and creating a fan-engagement ecosystem that encourages consistent activity pre-game, during the game, and post-game. - - - The Power of Sport Driven Web3 Adoption - - Recognizing the vast market potential of sports, TENAMINT strategically taps into the historical significance of sports as a driving force for Web3 adoption. - - In the realm of Web3 adoption, sports enthusiasts present a particularly engaged and passionate user base. TENAMINT aims not only to capture this existing audience but also to showcase how the intersection of sports and blockchain technology can drive widespread adoption. - - As NEAR becomes the foundation for this innovative sports-centric platform, there is a symbiotic relationship as TENAMINT benefits from the scalability of NEAR but also contributes to the growth of the NEAR ecosystem - - The proposed products aim to demonstrate the impact of fan-first products and seamless integration with user-experience focused blockchain technology. - - Building for League Partnerships - - The proposed products are conceptualized with sports league research and feedback with the goal of utilizing its technological developments as a catalyst for strategic league and team partnerships. - - By forging alliances with sports entities, TENAMINT aims to bring entire fan-bases into its ecosystem, creating a collaborative space where sports enthusiasts can engage with their favorite teams and leagues through innovative digital experiences and collectibles. - - IRL activations and use-cases - - The proposed products and developments are designed with in-arena and other IRL use-cases in mind. - - For example, the "Mint Your Moment" feature, capturing fan experiences at games and immortalizing them as NFTs on the NEAR blockchain, not only advances Web3 technology but also provides a tangible connection between the digital and physical worlds. - - TENAMINT's commitment to bridging the digital-physical gap sets it apart as a holistic and immersive experience within the sports and gaming ecosystem. - -#### Target Audience and Needs Met: - -- Target Audience: - - Sports Leagues and Teams: - - Providing fan experience solutions through partnerships that enable TENAMINT to revolutionize the fan experience for leagues through immersive games, collectibles, and rewards that cater to the evolving needs of the next generation of fans. - - Sports Enthusiasts: - - Designed to appeal to fans of all sports, leagues, teams, players regardless of their experience with web3 - - Collectibles Enthusiasts: - - Sports Collectibles: Engaging collectors who appreciate sports collectibles whether digital or physical - - Digital Collectibles: Catering to the growing community of NFT collectors, providing exclusive sports-related digital assets on the blockchain. - - Blockchain Enthusiasts: - - Attracting individuals interested in blockchain technology and its applications, introducing them to on-chain fantasy sports and collectibles. - - Gamers: - - Fantasy Sports Players: Captivating the interest of fantasy sports enthusiasts who relish strategic team-building, decision-making, challenges, and spirited competition. The engagement of these dedicated players is set to escalate with the rollout of additional game formats. - - Web3 Gamers: Addressing the needs of gamers within the Web3 space who are seeking blockchain enabled games - - Play-to-Earn Gamers: Built with an emphasis on rewards to attract those actively seeking games with play-to-earn features. - -- Audience Needs Met by the Project - - Sports Leagues and Teams: - - Need: Enhanced Fan Engagement - - Solution: Through strategic partnerships, TENAMINT revolutionizes the fan experience for sports leagues with immersive games, collectibles, and rewards, meeting the evolving expectations of the next generation of fans. - - The goal (with reference to league needs) is to build technology that transforms sports engagement through data-driven insights and advanced sport technology. It monitors fan interactions with NFTs and fantasy leagues, providing crucial analyses of preferences, demographics, and digital asset performance. The platform can provide insights relating to fan acquisition, retention, behaviors, and data, empowering leagues with data for informed decision-making. This solution can help leagues navigate the dynamic landscape of evolving fan engagement. - - Sports Enthusiasts: - - Need: Immersive Fan Experience - - Solution: Creating an all-encompassing fan experience through creation of gaming options, official collectibles, rewards, more as a part of a fan-first ecosystem. These offerings resonate with fans across diverse sports, leagues, teams, and players, ensuring inclusivity and enjoyment, irrespective of their familiarity with Web3 technologies. - - Collectibles Enthusiasts: - - Need: Engaging Collectibles Experience - - Solution: Crafting captivating collectibles experiences by introducing exclusive collectibles that directly connect fans to their favorite teams and players.. These digital collectibles provide utility, enhancing rewards in games and addressing the evolving needs of fans. - - Gamers: - - Need: Engaging Gaming Experiences - - Solution: For fantasy sports players, TENAMINT provides a platform for pick'em and fantasy sports based competition with a play-to-earn rewards system that connects fans to their favorite leagues, teams, and players. - - Solution: Fantasy sports on the blockchain offer benefits such as enhanced transparency, immutable records, global accessibility, reduced fees, ownership of digital assets, and smart contract automation, ensuring fairness, security, and a more engaging user experience. - - Solution: For play-to-earn gamers, the emphasis is on rewarding gameplay experiences, creating a dynamic and incentivized gaming environment. - - -#### Similar Projects in NEAR Ecosystems: - -- Playible also offers a fantasy sports focused product but with a different approach to the space. -- SailGP has a officially licensed league NFT on built on NEAR from previous Seasons -- Dropt has a loyalty platform related to sports advertising and sponsorship -- Details pending TBA: The NEAR Foundation will become the ICC's official blockchain partner. - - -### Team - -#### - Team members - -- Nadir Chaudhry -- Sal Chaudhry -- Alex Astrum -- Shawn Bender -- Shunsuke Kano -- Walt Yao - -#### Contact - -- Sal Chaudhry -- [office@tenamint.com](mailto:office@tenamint.com) -- [https://www.linkedin.com/in/salchaudhry](https://www.linkedin.com/in/salchaudhry/?originalSubdomain=ca) - -#### Legal Structure - - - Registered Legal Entity - - Ball Street Technologies Inc. - - Registered Address: - - 408-146 Fort York Blvd., - - Toronto, ON, Canada - - M5V0E1 - -#### Team Experience - -- TENAMINT: - - [www.tenamint.com/](http://www.tenamint.com/phygital) - - [https://app.tenamint.com/](https://app.tenamint.com/) - - TENAMINT leads the way in shaping the future of sports fan experiences, bringing immersive fantasy sports with play-to-earn rewards in addition to utility driven collectibles, and other fan-first offerings to a global audience. From fantasy sports gaming and digital collectibles to real-world activations, our products seamlessly converge, redefining fan engagement through a harmonious blend of blockchain technology, enticing rewards, and unparalleled fan experiences. This innovative approach extends beyond the digital realm, fostering real-world activations that not only fortify fan loyalty but also spearhead the evolution of interactive fan experiences. - - Accelerators and similar programs: - - NEAR HZN1, Innovation Boost Zone, Accelerator Centre, Founder Institute, etc. - -#### Team Links: - -- TENAMINT: - - [https://github.com/TENAMINT](https://github.com/TENAMINT) - - [https://www.linkedin.com/company/73837227/admin/feed/posts/](https://www.linkedin.com/company/73837227/admin/feed/posts/) - - Nadir - - [https://www.linkedin.com/in/nadirchaudhry/](https://www.linkedin.com/in/nadirchaudhry/) - - Sal - - [https://github.com/Salikc9](https://github.com/Salikc9) - - [https://www.linkedin.com/in/salchaudhry/](https://www.linkedin.com/in/salchaudhry/?originalSubdomain=ca) - - Alex: - - [https://github.com/alexastrum](https://github.com/alexastrum) - - [https://www.linkedin.com/in/alexastrum/](https://www.linkedin.com/in/alexastrum/?originalSubdomain=ca) - - Shunsuke: - - [https://github.com/ShunsukeKano](https://github.com/ShunsukeKano) - - [https://www.linkedin.com/in/shunsuke-kano/](https://www.linkedin.com/in/shunsuke-kano/) - - Walt: - - [https://github.com/yaozakai](https://github.com/yaozakai?tab=repositories) - - [https://www.linkedin.com/in/waltyao/](https://www.linkedin.com/in/waltyao/) - - Shawn: - - [https://github.com/Benz222](https://github.com/Benz222) - -### Development Status - -If you've already started implementing your project or it is part of a larger repository, please provide a link and a description of the code here. In any case, please provide some documentation on the research and other work you have conducted before applying. This could be: - -#### Wireframes, Mock-ups, Other: - -- Figma Mockup: - - [https://www.figma.com/proto/5ivxRYoqK2KHjKHhCht8up/TENAMINT-Pick'em?type=design&node-id=1300-2012&t=N4dCS0wkNofN63Fx-0&scaling=min-zoom&page-id=0%3A1&starting-point-node-id=1300%3A2012&show-proto-sidebar=1](https://www.figma.com/proto/5ivxRYoqK2KHjKHhCht8up/TENAMINT-Pick'em?type=design&node-id=1300-2012&t=N4dCS0wkNofN63Fx-0&scaling=min-zoom&page-id=0%3A1&starting-point-node-id=1300%3A2012&show-proto-sidebar=1) -- Early Staging Site: - - [https://basketball-pickem-app.vercel.app/](https://basketball-pickem-app.vercel.app/) -- Data & Architecture Models - - [https://drive.google.com/drive/folders/1-jmuOf-ubdDAY0ADfsPTALMGNEDnXYgc?usp=sharing](https://drive.google.com/drive/folders/1-jmuOf-ubdDAY0ADfsPTALMGNEDnXYgc?usp=sharing) -- Other Products: [https://tenamint.com/phygital](https://tenamint.com/phygital) -- _Note: A team development submission was submitted to abstraction hacks which featured some high-level concepts discussed in this proposal._ - -#### Research Done: +## Project Name: TENAMINT Fan Engagement Templates: Pick'em, Rewards, and Challenges +**Company Name:** TENAMINT +**Payment Address:** bstt.near +**Grant Level:** 2 + +## Project Overview + +### Project Description + +TENAMINT Fan Engagement Templates: Pick'em, Rewards, and Challenges. +The game, rewards, collectibles, and upcoming product additions are intricately crafted to offer value in league partnerships, delivering exclusive content, digital collectibles, fan tokens, and IRL activations. This approach fosters a vibrant ecosystem of sports enthusiasts, resulting in heightened fan experiences, strengthened league-to-fan relationships, and a compelling avenue for web3 fan-base adoption. In addition to the release of these elements, the deliverables also include 3 related Mintbase templates to ensure that builders in the near and mintbase ecosystem can build NFT Challenges, Reward Programs, and use Pick’em templates to gamify aspects of their project. + +#### Key Features and Rewards + +**Pick'em Game:** +- Introduces dynamic live match prediction within Sports Pick'em. +- Users predict scores, player performances, and key play outcomes. +- Offers immediate rewards for correct predictions (points or tokens). +- Rewards can be redeemed for exclusive NFTs, fan experiences, or merchandise. +- Mintbase Pick’em Template. + +**Collectables:** +- NFTs are a core aspect of the Pick'em game and can be used to enhance rewards in the Pick'em game and synergize with other games. +- Collectibles feature challenges that can be completed for further rewards. +- Collectibles are intended to be league partner/team partner specific. +- Collectibles can be redeemed in exchange for rewards creating a loop. +- Mintbase NFT Challenges Template. + +**Rewards:** +- Pick'em contest winners receive reward tokens. +- Tokens can be used within the platform or exchanged. +- Redeemable for digital collectibles, IRL experiences, and merchandise. +- Mintbase Rewards Template +**In-Game Engagement with Mintbase:** +- "Mint Your Moment" feature captures fan experiences at games with the NFT Minter. + +## Project Details + +- **Figma Exports:** [Figma Exports](https://drive.google.com/drive/folders/1-rek75CWt7GZhEPEWXRKxfW2pQ7xgPIo?usp=share_link) +- **Exploratory/Early Staging Site:** [Basketball Pick'em App](https://basketball-pickem-app.vercel.app/) +- **Data Models:** + - [Data Model 1 (User Flow Preliminary Conceptualization)](https://drive.google.com/file/d/1iCfI1y4dS4LQlhaMdx5paqJbsukCDHXm/view?usp=share_link) + - [Data Model 2 (Token Interconnectivity Preliminary Conceptulization)](https://drive.google.com/file/d/1slCt0Iz0pLFRpbtcstNFMM13rdc6Axvz/view?usp=share_link) +- **Architecture Model:** [Architecture Model](https://drive.google.com/file/d/1pg3gqbdVOpssSn9sB0beQ_FGDmX_8v1I/view?usp=sharing) + +## Tech-Stack, Architecture, and Components + +### TENAMINT Digital & Pick'em Game + +**Front-End:** +- Design Tools: Figma (UI), Adobe Suite (Graph/Vector Design) +- Styling: Tailwind CSS for utility-first styling, Tailwind UI, NextUI, Chakra UI for component libraries, Storybook for UI component development +- Login Authentication: Firebase Auth for authentication, Mintbase Social Authentication +- Email Notification: Firebase Auth for email notification, js for server-side functionality +- Framework: js for React-based web applications with server-side rendering and static site generation and flexibility. +- Hosting: Vercel for optimized Next.js hosting with serverless functions + +**Backend:** +- Database Requirements: Primary: Firebase; Alternatively: MySQL or MongoDB +- Backend Hosting: Primary: Google Cloud Platform (GCP) for cloud services +- Decentralized Storage: Arweave and NFTStorage +- Additional Cloud Infrastructure: Digital Ocean +- Scaling Considerations: Utilize serverless architectures and content delivery networks (CDNs), Implement dynamic scaling of backend services, Integrate NEAR blockchain technologies for efficient scaling and ecosystem integration +- CI/CD Implementation: GitHub Actions used for Continuous Integration/Continuous Deployment and to automate software build, test, and deployment processes +- Data Models / API Specifications: RESTful APIs or GraphQL endpoints for core functionality, Sports Data Provider: Genius Sports or Other +- Documentation: Comprehensive documentation for core components, protocols, and architecture, Include integration details with sports data provider or similar for real-time data retrieval + +**Blockchain:** +- NEAR network for blockchain functionality +- NEPs: NEP141 (FT) Rewards, NEP171 (NFT) Collectibles, NEP245 (MTS) +- Marketplace: NFT: Mintbase Marketplace Integration, Merchandise E-Commerce: Droplinked +- Blockchain Indexer: GraphQL API for blockchain indexer +- Wallet: NEAR Wallet Selector, Mintbase Wallet, HERE, and others, Tenamint Wallet App powered by Mintbase Wallet, Potential for direct to marketplace/rewards integration + +## Ecosystem Fit + +Where and How TENAMINT fits into the Ecosystem: + +**Mintbase:** +- Mintbase Wallet: User-friendly and streamlined user onboarding, Passkey/Biometric Sign-in, Social Auth Options +- Templates: Mintbase Rewards Template, Mintbase Pick’em Template, Mintbase NFT Challenges Template +- NFT Minter: "Mint Your Moment" implementation designed for IRL events +- Indexer: Utilization of GraphQL Indexer for efficient user data tracking + +**NEAR:** +- Leading Sports Gaming and Collectibles on NEAR +- The products intertwine to introduce an innovative approach to sports gaming with free-to-play predictive gaming, fan engagement, league partnerships, and integrated collectibles with utility. +- TENAMINT aims to position itself as a pioneering force in the Web3 ecosystem, specifically targeting the sports entertainment and collectibles sector with an emphasis on creative, interconnected, and fan-first products. + +## Target Audience and Needs Met + +**Target Audience:** +- Sports Leagues and Teams +- Sports Enthusiasts +- Collectibles Enthusiasts +- Blockchain Enthusiasts +- Gamers + +**Audience Needs Met by the Project:** +- Enhanced Fan Engagement +- Immersive Fan Experience +- Engaging Collectibles Experience +- Engaging Gaming Experiences + +## Similar Projects in NEAR Ecosystems + +- Playible +- SailGP +- Dropt +- NEAR Foundation (Details pending TBA) + +## Team + +### Primary Contact + +Sal Chaudhry +Email: [office@tenamint.com](mailto:office@tenamint.com) +LinkedIn: [https://www.linkedin.com/in/salchaudhry](https://www.linkedin.com/in/salchaudhry) + +### Legal Structure + +Registered Legal Entity: Ball Street Technologies Inc. +Registered Address: 408-146 Fort York Blvd., Toronto, ON, Canada M5V0E1 + +### Team Experience + +TENAMINT: [Website](www.tenamint.com/), [App](https://app.tenamint.com/) +TENAMINT leads the way in shaping the future of sports fan experiences, bringing immersive fantasy sports with play-to-earn rewards in addition to utility-driven collectibles, and other fan-first offerings to a global audience. From fantasy sports gaming and digital collectibles to real-world activations, our products seamlessly converge, redefining fan engagement through a harmonious blend of blockchain technology, enticing rewards, and unparalleled fan experiences. This innovative approach extends beyond the digital realm, fostering real-world activations that not only fortify fan loyalty but also spearhead the evolution of interactive fan experiences. + +### Accelerators and similar programs + +NEAR HZN1, Innovation Boost Zone, Accelerator Centre, Founder Institute, etc. + +### Team Links + +**TENAMINT:** +- [GitHub](https://github.com/TENAMINT) +- [LinkedIn](https://www.linkedin.com/company/73837227/admin/feed/posts/) + +**Individual Team Members:** +- Nadir: [LinkedIn](https://www.linkedin.com/in/nadirchaudhry/) +- Sal: [GitHub](https://github.com/Salikc9), [LinkedIn](https://www.linkedin.com/in/salchaudhry/) +- Alex: [GitHub](https://github.com/alexastrum), [LinkedIn](https://www.linkedin.com/in/alexastrum/) +- Shunsuke: [GitHub](https://github.com/ShunsukeKano), [LinkedIn](https://www.linkedin.com/in/shunsuke-kano/) +- Walt: [GitHub](https://github.com/yaozakai), [LinkedIn](https://www.linkedin.com/in/waltyao/) +- Shawn: [GitHub](https://github.com/Benz222) + +## Development Status + +**Wireframes, Mock-ups, Other:** +- Figma Mockup: [TENAMINT Pick'em](https://www.figma.com/proto/5ivxRYoqK2KHjKHhCht8up/TENAMINT-Pick'em?type=design&node-id=1300-2012&t=N4dCS0wkNofN63Fx-0&scaling=min-zoom&page-id=0%3A1&starting-point-node-id=1300%3A2012&show-proto-sidebar=1) +- Early Staging Site: [Basketball Pick'em App](https://basketball-pickem-app.vercel.app/) +- Data & Architecture Models: [Google Drive Link](https://drive.google.com/drive/folders/1-jmuOf-ubdDAY0ADfsPTALMGNEDnXYgc?usp=sharing) +- Other Products: [TENAMINT Phygital](https://tenamint.com/phygital) + +**Research Done:** - Engagement with League Executives: In-depth conversations and consultations have taken place with league executives to gain valuable insights into their specific needs and identify emerging opportunities within the industry. - Comprehensive Review and Audit: Rigorous examination and audit of fantasy sports gaming products, pick'em games, and sports collectibles have been undertaken. This comprehensive review ensures a thorough understanding of the current landscape and identifies areas for innovation and improvement. - Market Research with Collectors: Valuable perspectives on the future of sport collectibles have been gathered through extensive in-person research with physical sport card collectors. This direct interaction has provided nuanced insights into the preferences and expectations of collectors in the evolving market. - Industry Specialization: The co-founder brings a wealth of expertise to the project, grounded in an educational background specializing in sport business. Emphasizing fan experience and sport technology, the co-founder adopts a strategic and thoroughly researched approach to advancements in sports innovation and fan engagement. - Other Relevant Experiences: A lifetime dedicated to being a team of passionate enthusiasts, including roles as die-hard fans, fantasy sports players, league commissioners, and collectors of both digital and physical sports collectibles, has provided a unique and holistic perspective. This firsthand experience enriches the project with a deep understanding of user expectations and industry dynamics. +- Mintbase Products, Documentation, Templates, and opportunities for open-source templates. -#### Relevant Conversations: Mintbase - +**Relevant Conversations with Mintbase:** - Paul via Zoom Call - September 2023 - - Discussion Regarding: TENAMINT and Mintbase Grant - Nate at NEARCON 2023 - November 2023 - - Discussion Regarding: MTS, TENAMINT, and Future Opportunities - - -### Milestones and Product Roadmap - -#### Overview — Milestone Summary - -- Estimated Duration: 4.5 months -- FTE: 3 -- Costs: $50,000 USD - -#### Milestone 1 — Sports Pick'em Game - -- Estimated Duration: 1.5 months -- FTE: 3 -- Costs: $15,000 USD -- Deliverables: - - - Game: - - Mechanics Research and Refinement - - UX/UI Design and Prototyping - - Pick'em Game Development - - Integrations - - Onboarding - - Wallet Integration - - Data Provider Integration - - Smart Contracts - - Release: Game Beta - - Rewards and Rewards Marketplace: - - Planning - - Research - - UX/UI Design and Prototyping - - Mechanics - - Testing, Feedback, and Improvements: - - Testing - - Design Feedback Improvements - - Experience Feedback Improvements - - Mechanics Feedback Improvements - - Documentation Update - -#### Milestone 2 — Rewards Development, Release, and Refinement - -Duration: 1.5 months - -- FTE: 3 -- Costs: $15,000 USD -- Deliverables: - - - Rewards and Rewards Marketplace: - - Design - - Utility - - Mechanics - - Smart Contracts - - Integrations - - Release: Rewards Marketplace - - Rewards & Game Integration - - Affiliate Program Integration - - NFT Planning: - - Planning - - Research - - Design and Prototyping - - Mechanics - - Testing, Feedback, and Improvements: - - Testing - - Design Feedback Improvements - - Experience Feedback Improvements - - Mechanics Feedback Improvements - - Documentation Update - -#### Milestone 3 — NFT Release, Integration, & Development - -- Estimated Duration: 1.5 Months -- FTE: 3 -- Costs: $20,000 USD -- Deliverables: - - - NFT - - Pre-Release - - Official Release (V0 or V1 - Dependent on BD Variables) - - Primary Marketplace Open - - Secondary Marketplace Open - - Challenges - - Stripe Connection - - Game Integration - - Rewards Integration - - NFT Minter ("Mint Your Moment") - - IRL Activation Beta - - Game - - NFT Minter - - Testing, Feedback, and Improvements: - - Testing - - Design Feedback Improvements - - Experience Feedback Improvements - - Mechanics Feedback Improvements - - Documentation Update - -### Future Plans - -- **Short-Term:** In the short-term, our primary objectives include the integration of merchandise E-Commerce for the Rewards Marketplace, along with the implementation of social share features and the introduction of a bracket game to enhance user engagement. Additionally, we aim to execute our Go-To-Market (GTM) plan, focusing on strategic partnerships and the execution of seamless IRL activations in arena venues. - -- **Mid-Term:** Moving into the mid-term, we plan to develop and expand our product line to include more strategic and in-depth game formats such as a Daily Fantasy Sports (DFS) style game and eventually a season-long format. Our emphasis during this phase will also involve establishing dedicated fan hubs for leagues, teams, and athletes. We also plan to integrate our product on the BOS and continue with the execution of our GTM plan in sync with our partners. - -- **Long-Term:** Looking towards the long-term, our strategic vision includes the launch of fan tokens, with token gated channels, marketplaces, experiences and hubs. We plan to execute the pre-release and launch of the upcoming TENAMINT token, aiming to position it at the core of a fan-centric, sports-oriented, and gaming ecosystem formed by these products. If required, we will also consider multi-chain integrations and support in the long-term. Additional long-term goals involve increased collectible product lines through added partnerships. - -- **Note:** In the future we aim to eventually continue development towards advancing and improving Phygital/RWA releases and technologies by integrating and leveraging our newer product lines. Pre-developed and qualified userbases may eventually provide lead-generation for the Phygital/RWA products. Partnerships that align with the TENAMINT Phygital vision will also be considered as we recognize the trends and long-term potential of RWA-backed collectibles, fractional ownership, and other core concepts we had previously prioritized. It's essential to highlight that as mentioned in previous discussions with the Mintbase team, the Multi-Token Standard (MTS) is intricately connected to the TENAMINT Phygital product line and we'd like to explore Mintbase integration for this initiative in the future once our new product line priorities are successfully released and established. - -### Additional Information - -How did you hear about the Grants Program? - -- Mintbase team members: +- Paul & Micro February/March 2024 + +## Milestones and Product Roadmap + +**Overview — Milestone Summary** + +Estimated Duration: 4.5 months +FTE: 3 +Costs: $50,000 USD +Note: order of Milestone Delivery may change + +### Milestone 1 — Sports Pick'em Game + + **Estimated Duration:** 1.5 months + **FTE:** 3 + **Costs:** $15,000 USD + **Mintbase Pick’em Template:** + **Deliverables:** + - License | MIT + - Documentation | We will provide both inline documentation of the code and a basic tutorial that explains how a user can create a simple ‘Pick’Em’ that can be used for a game, polling, or other creative uses. + - Docker | We will provide a Dockerfile(s) that can be used to test all the functionality delivered with this milestone. + - Article & Video | We will publish an article and video explaining the full rewards concept and walkthrough. + - Mintbase Template | We will create a template that will enable users to craft their unique Pick’Em Scenarios. + - TENAMINT Implementation | Pick'em Game + - Sport’s Pick’em Game Release + - Documentation: Comprehensive documentation covering all aspects + - Design: Engaging and intuitive design elements + - Mechanics: Fundamental game mechanics for an immersive experience + - Smart Contracts: Implementation and deployment details + - Integrations: Integration with other platforms and services for enhanced functionality + + + +### Milestone 2 — TENAMINT Rewards and Mintbase Rewards Template + + **Duration:** 1.5 months + **FTE:** 3 + **Costs:** $15,000 USD + **Mintbase Pick’em Template:** + **Deliverables:** + - License | MIT + - Documentation | We will provide both inline documentation of the code and a basic tutorial that explains how a user can create a personalized Reward Token. + - Docker | We will provide a Dockerfile(s) that can be used to test all the functionality delivered with this milestone. + - Article & Video | We will publish an article and video explaining the full rewards concept and walkthrough. + - Mintbase Template | We will create a template that empowers users to create their personalized Reward Token. + - TENAMINT Implementation | Rewards + - Deliverables: Rewards Implementation with Rewards Marketplace Features + - Documentation: Complete coverage of all aspects + - Design: Aesthetic and functional design elements + - Mechanics: Core operational mechanics + - Smart Contracts: Deployment and functionality + - Integrations: Seamless integration with existing systems and services + + +### Milestone 3 — TENAMINT NFT Challenge and Mintbase NFT Challenge Template + + **Estimated Duration:** 1.5 Months + **FTE:** 3 + **Costs:** $20,000 USD + **Mintbase NFT Challenge Template:** + **Deliverables:** + - License | MIT + - Documentation | We will provide both inline documentation of the code and a basic tutorial that explains how a user can create a “NFT Challenge” through the creation of a ‘check-list’ of NFTs that are to be collected. + - Docker | We will provide a Dockerfile(s) that can be used to test all the functionality delivered with this milestone. + - Article & Video | We will publish an article and video explaining the full rewards concept and walkthrough. + - Mintbase Template | We will create a versatile template empowering users to craft their unique NFT Challenges. + - TENAMINT Implementation | NFT & Challenges + - NFTs & Challenges Release (V0 or V1 - Dependent on Business Development Variables) + - Primary Marketplace: Open + - Secondary Marketplace: Open + - NFT Challenge Integration + - NFT Minter ("Mint Your Moment") & In-Real-Life (IRL) Activation + - Beta Testing, Feedback, and Improvements + + +## Mintabase Templates Technical Approach and Preliminary Notes + + ### Milestone 1 — Mintbase Pick’em Template: + + The objective of this internal high-level overview is to outline the implementation approach for building a Pick'Em template on NEAR via Mintbase. The goal is to create an engaging and versatile smart contract that allows users to participate in Pick'Em scenarios, associating potential outcomes with corresponding airdrops. The contract should seamlessly interact with NEAR infrastructure, validate user picks, and integrate with a rewards payer for token distribution. + + + **Preliminary Notes on Technical Approach: Pick’em Template Implementation** + + **Contract Structure:** + 1. Modularity and Extensibility: + - Components are modular, allowing for easy addition or modification of functionalities. + - Contracts can be extended to accommodate new features or integrate with other contracts seamlessly. + + 2. State Variables: + - Well-defined state variables encapsulate essential information such as user balances, task completion status, and reward distribution details. + - Variables are organized in a structured manner for clarity and efficient access. + + **Contract Methods:** + 1. Singular Validation: + - A method is implemented to facilitate singular validation through Zk.proof or assigned transactions. + - Validators or oracles utilize this method to confirm the completion of specific tasks by users before triggering reward distribution. + + 2. Security Measures: + - Methods are designed with security in mind, incorporating measures to prevent unauthorized access, tampering, or malicious activities. + - Permission settings and access controls are implemented to restrict certain actions to authorized entities. + + 3. Transparency: + - The contract methods provide clear and transparent processes for task validation and reward distribution. + - Event logging ensures a transparent record of completed tasks, helping in auditing and accountability. + + 4. Integration with Minter and Token Drop: + - Seamless integration with Mintbase is achieved through well-defined methods for token creation and distribution. + - The contract can efficiently mint new reward tokens based on predefined criteria and distribute them to users who successfully complete incentivized tasks. + + **Interaction with Rewards Payer:** + The contract interacts seamlessly with the Rewards Payer, which could be an external entity responsible for validating tasks and distributing rewards. Validators or oracles can utilize the contract's methods to verify task completion, ensuring a secure and tamper-proof process for rewarding users. + + **Testing:** + Documentation and instruction provided for a comprehensive testing environment. Documentation and Tutorial will be created to guide users through use of the template. + + **Versatility:** + The template's versatility is a key highlight, enabling users to configure and enhance their rewards by assigning values to incentivized actions. Whether it's related to NFT collections, check-ins, game participation, or referrals, the Rewards Token template empowers users to tailor their incentivization strategies according to their specific use cases. + + +### Milestone 2 — Mintbase Rewards Template: + + The objective of this Rewards Token implementation is to provide an easy to use and versatile NEP-141 rewards smart contract template via Mintbase. This template allows users to create personalized Reward Tokens that can be utilized for various purposes, such as measuring activity, loyalty, performance, or other values. The focus is on encouraging user involvement in Pick'em games, NFT challenges, or any incentivized actions, enhancing engagement and participation. + + **Preliminary Notes on Technical Approach: Rewards Template Implementation** + + **Contract Structure:** + 1. NEP-141 Standard Compliance: + - Design the smart contract to comply with the NEP-141 standard for fungible tokens on the NEAR protocol. + - Implement core functionalities such as `total_supply()`, `balance_of(account)`, `transfer(sender, receiver, amount)`, and other standard methods. + + 2. Zk.proof Integration: + - Leverage Zk.proof capabilities for zero-knowledge proof implementations. + - Incorporate Zk.proof into the contract logic to ensure secure and private validations of completed tasks + + 3. Mintbase Integration: + - Establish a seamless integration with Mintbase, utilizing the Mintbase API for creating and managing Reward Tokens. + - Configure the contract to support Mintbase's marketplace functionalities, enabling users to mint, trade, and interact with their Reward Tokens directly through Mintbase. + + **Contract Methods:** + 1. NEP-141 Standard Methods: + - Implement the standard NEP-141 methods for the Reward Token contract, allowing users to create, transfer, and manage their tokens with ease. + - Ensure that the contract adheres to the fungible token specifications outlined in the NEP-141 standard. + + 2. Zk.proof-enabled Validation: + - Develop methods for task completion validation, incorporating Zk.proof to secure the validation process. + - Utilize zero-knowledge proofs to verify that a task has been completed without exposing the details of the task on the blockchain. + + 3. Singular Validation through Oracles/Validators: + - Establish a mechanism for singular validation using oracles or validators on the NEAR platform. + - Design the contract to trigger validation requests to external oracles or validators, ensuring an additional layer of reliability in confirming completed tasks. + + **Testing:** + Documentation and instruction provided for a comprehensive testing environment Documentation and Tutorial will be created to guide users through the use of the template. + + **Versatility:** + The template's design intends to emphasize versatility, allowing users to configure rewards for incentivizing user actions. + +### Milestone 3 — Mintbase NFT Challenge Template: + + The goal is to develop a versatile NFT Challenge template on the NEAR blockchain through Mintbase, facilitating the creation of unique NFT challenges with customizable requirements and rewarding outcomes. + + **Preliminary Notes on Technical Approach: NFT Challenge Template Implementation** + + For collectors, NFT challenges present collection tasks with rewarding outcomes. Earn exclusive NFTs specifically tailored for those who successfully complete the challenge. + + **Objective:** + The goal is to develop a versatile NFT Challenge template on the NEAR blockchain through Mintbase, facilitating the creation of unique challenges with customizable requirements and rewarding outcomes. + + **Technical Approach for NFT Challenge Contract** + + **Contract Structure:** + 1. Initialization: + - The contract is designed with three states: Configuration, Claiming, and Finished. + - Initialization includes setting challenge parameters and defining required NFTs with associated contract addresses. + + 2. Configuration State: + - Parameters like start time, duration, and claiming window status are tracked internally. + - Utilizes NEAR Smart Contract functionality to initialize the challenge. + + 3. Claiming State: + - Activation via the unlock mechanism, transitioning from Configuration. + - Asynchronous claiming window for collectors to submit NFTs. + - NEAR runtime environment used to handle asynchronous actions. + + 4. Cross-Check Mechanism: + - Implemented in the claim_rewards method during Claiming State. + - Ensures uniqueness of provided NFTs, preventing reuse. + + 5. Finished State: + - Triggered post-claiming window closure. + - Cleanup operations and challenge finalization are executed. + - NEAR contract state is adjusted, and further interactions are prevented by locking down the contract. + + **Contract Methods:** + 1. configure_nfts: + - NEAR Smart Contract method allowing the setting of required NFTs during Configuration State. + - Parameters updated in the contract state. + + 2. unlock_challenge: + - NEAR method transitioning the contract from Configuration to Claiming State. + - Activates the asynchronous claiming window. + + 3. claim_rewards: + - NEAR method for collectors to claim rewards during Claiming State. + - Employs cross-checks to ensure NFT uniqueness before processing rewards. + + 4. finish_challenge: + - NEAR method transitioning the contract from Claiming to Finished State. + - Executed cleanup operations and locks down the contract to prevent further interactions. + + **Testing:** + Documentation and instruction provided for a comprehensive testing environment Documentation and Tutorial will be created to guide users through the use of the template. + + **Versatility:** + - The template design prioritizes configurability, allowing users to tailor challenges with diverse collectibles and set specific completion circumstances and conditions. + + +## TENAMINT Future Plans + +**Organizational Roadmap and Future Plans** + +- Short-Term: In the short-term, our primary objectives include the integration of merchandise E-Commerce for the Rewards Marketplace, along with the implementation of social share features and the introduction of a bracket game to enhance user engagement. Additionally, we aim to execute our Go-To-Market (GTM) plan, focusing on strategic partnerships and the execution of seamless IRL activations in arena venues. + + +- Mid-Term: Moving into the mid-term, we plan to develop and expand our product line to include more strategic and in-depth game formats such as a Daily Fantasy Sports (DFS) style game and eventually a season-long format. Our emphasis during this phase will also involve establishing dedicated fan hubs for leagues, teams, and athletes. We also plan to integrate our product on the BOS and continue with the execution of our GTM plan in sync with our partners. + + +- Long-Term: Looking towards the long-term, our strategic vision includes the launch of fan tokens, with token gated channels, marketplaces, experiences and hubs. We plan to execute the pre-release and launch of the upcoming TENAMINT token, aiming to position it at the core of a fan-centric, sports-oriented, and gaming ecosystem formed by these products. If required, we will also consider multi-chain integrations and support in the long-term. Additional long-term goals involve increased collectible product lines through added partnerships. + + +- Note: In the future we aim to eventually continue development towards advancing and improving Phygital/RWA releases and technologies by integrating and leveraging our newer product lines. Pre-developed and qualified user bases may eventually provide lead-generation for the Phygital/RWA products. Partnerships that align with the TENAMINT Phygital vision will also be considered as we recognize the trends and long-term potential of RWA-backed collectibles, fractional ownership, and other core concepts we had previously prioritized. It's essential to highlight that as mentioned in previous discussions with the Mintbase team, the Multi-Token Standard (MTS) is intricately connected to the TENAMINT Phygital product line and we'd like to explore Mintbase integration for this initiative in the future once our new product line priorities are successfully released and established. + +## Additional Information + +**How did you hear about the Grants Program?** + +Mintbase team members: - Nate G. - Paul K. - -Here you can also add any additional information that you think is relevant to this application but isn't part of it already, such as: - -- Work you have already done. - - - Tenamint Phygital - - Fractional & RWA-backed collectible cards - - ~$40,000 RWA Assets Listed - - Established - - Partnerships - - Accelerator Programs - - HZN, Accelerator Centre, Founder Institute, etc. - - $40,000+ Listed Assets - - MTS NEP Contributions - - Pre-Seed Fundraise in Early 2022 - - Grants - - NF Grant (2022 Builder & Quick-Starter Grants) - +**Work you have already done:** + +Tenamint Phygital +- **Fractional & RWA-backed Collectible Cards** + - ~$40,000 RWA Assets Listed +- **Established** + - Partnerships + - Accelerator Programs + - HZN, Accelerator Centre, Founder Institute, etc. + - $40,000+ Listed Assets + - MTS NEP Contributions +- **Pre-Seed Fundraise in Early 2022** +- **Grants** + - NF Grant (2022 Builder & Quick-Starter Grants) From 11d999adcb5e865efe15ff3da5b916a262594944 Mon Sep 17 00:00:00 2001 From: Shunsuke Kano Date: Fri, 15 Mar 2024 14:12:14 -0400 Subject: [PATCH 04/31] Update Sports-Pickem.md --- applications/Sports-Pickem.md | 264 +++++++++++++++++----------------- 1 file changed, 132 insertions(+), 132 deletions(-) diff --git a/applications/Sports-Pickem.md b/applications/Sports-Pickem.md index 7d6d4d8e..3a0edaab 100644 --- a/applications/Sports-Pickem.md +++ b/applications/Sports-Pickem.md @@ -244,145 +244,145 @@ Note: order of Milestone Delivery may change ## Mintabase Templates Technical Approach and Preliminary Notes - ### Milestone 1 — Mintbase Pick’em Template: - - The objective of this internal high-level overview is to outline the implementation approach for building a Pick'Em template on NEAR via Mintbase. The goal is to create an engaging and versatile smart contract that allows users to participate in Pick'Em scenarios, associating potential outcomes with corresponding airdrops. The contract should seamlessly interact with NEAR infrastructure, validate user picks, and integrate with a rewards payer for token distribution. - - - **Preliminary Notes on Technical Approach: Pick’em Template Implementation** - - **Contract Structure:** - 1. Modularity and Extensibility: - - Components are modular, allowing for easy addition or modification of functionalities. - - Contracts can be extended to accommodate new features or integrate with other contracts seamlessly. - - 2. State Variables: - - Well-defined state variables encapsulate essential information such as user balances, task completion status, and reward distribution details. - - Variables are organized in a structured manner for clarity and efficient access. - - **Contract Methods:** - 1. Singular Validation: - - A method is implemented to facilitate singular validation through Zk.proof or assigned transactions. - - Validators or oracles utilize this method to confirm the completion of specific tasks by users before triggering reward distribution. - - 2. Security Measures: - - Methods are designed with security in mind, incorporating measures to prevent unauthorized access, tampering, or malicious activities. - - Permission settings and access controls are implemented to restrict certain actions to authorized entities. - - 3. Transparency: - - The contract methods provide clear and transparent processes for task validation and reward distribution. - - Event logging ensures a transparent record of completed tasks, helping in auditing and accountability. - - 4. Integration with Minter and Token Drop: - - Seamless integration with Mintbase is achieved through well-defined methods for token creation and distribution. - - The contract can efficiently mint new reward tokens based on predefined criteria and distribute them to users who successfully complete incentivized tasks. - - **Interaction with Rewards Payer:** - The contract interacts seamlessly with the Rewards Payer, which could be an external entity responsible for validating tasks and distributing rewards. Validators or oracles can utilize the contract's methods to verify task completion, ensuring a secure and tamper-proof process for rewarding users. - - **Testing:** - Documentation and instruction provided for a comprehensive testing environment. Documentation and Tutorial will be created to guide users through use of the template. - - **Versatility:** - The template's versatility is a key highlight, enabling users to configure and enhance their rewards by assigning values to incentivized actions. Whether it's related to NFT collections, check-ins, game participation, or referrals, the Rewards Token template empowers users to tailor their incentivization strategies according to their specific use cases. +### Milestone 1 — Mintbase Pick’em Template: + +The objective of this internal high-level overview is to outline the implementation approach for building a Pick'Em template on NEAR via Mintbase. The goal is to create an engaging and versatile smart contract that allows users to participate in Pick'Em scenarios, associating potential outcomes with corresponding airdrops. The contract should seamlessly interact with NEAR infrastructure, validate user picks, and integrate with a rewards payer for token distribution. + + +**Preliminary Notes on Technical Approach: Pick’em Template Implementation** + +**Contract Structure:** +1. Modularity and Extensibility: + - Components are modular, allowing for easy addition or modification of functionalities. + - Contracts can be extended to accommodate new features or integrate with other contracts seamlessly. + +2. State Variables: + - Well-defined state variables encapsulate essential information such as user balances, task completion status, and reward distribution details. + - Variables are organized in a structured manner for clarity and efficient access. + +**Contract Methods:** +1. Singular Validation: + - A method is implemented to facilitate singular validation through Zk.proof or assigned transactions. + - Validators or oracles utilize this method to confirm the completion of specific tasks by users before triggering reward distribution. + +2. Security Measures: + - Methods are designed with security in mind, incorporating measures to prevent unauthorized access, tampering, or malicious activities. + - Permission settings and access controls are implemented to restrict certain actions to authorized entities. + +3. Transparency: + - The contract methods provide clear and transparent processes for task validation and reward distribution. + - Event logging ensures a transparent record of completed tasks, helping in auditing and accountability. + +4. Integration with Minter and Token Drop: + - Seamless integration with Mintbase is achieved through well-defined methods for token creation and distribution. + - The contract can efficiently mint new reward tokens based on predefined criteria and distribute them to users who successfully complete incentivized tasks. + +**Interaction with Rewards Payer:** +The contract interacts seamlessly with the Rewards Payer, which could be an external entity responsible for validating tasks and distributing rewards. Validators or oracles can utilize the contract's methods to verify task completion, ensuring a secure and tamper-proof process for rewarding users. + +**Testing:** +Documentation and instruction provided for a comprehensive testing environment. Documentation and Tutorial will be created to guide users through use of the template. + +**Versatility:** +The template's versatility is a key highlight, enabling users to configure and enhance their rewards by assigning values to incentivized actions. Whether it's related to NFT collections, check-ins, game participation, or referrals, the Rewards Token template empowers users to tailor their incentivization strategies according to their specific use cases. ### Milestone 2 — Mintbase Rewards Template: - The objective of this Rewards Token implementation is to provide an easy to use and versatile NEP-141 rewards smart contract template via Mintbase. This template allows users to create personalized Reward Tokens that can be utilized for various purposes, such as measuring activity, loyalty, performance, or other values. The focus is on encouraging user involvement in Pick'em games, NFT challenges, or any incentivized actions, enhancing engagement and participation. - - **Preliminary Notes on Technical Approach: Rewards Template Implementation** - - **Contract Structure:** - 1. NEP-141 Standard Compliance: - - Design the smart contract to comply with the NEP-141 standard for fungible tokens on the NEAR protocol. - - Implement core functionalities such as `total_supply()`, `balance_of(account)`, `transfer(sender, receiver, amount)`, and other standard methods. - - 2. Zk.proof Integration: - - Leverage Zk.proof capabilities for zero-knowledge proof implementations. - - Incorporate Zk.proof into the contract logic to ensure secure and private validations of completed tasks - - 3. Mintbase Integration: - - Establish a seamless integration with Mintbase, utilizing the Mintbase API for creating and managing Reward Tokens. - - Configure the contract to support Mintbase's marketplace functionalities, enabling users to mint, trade, and interact with their Reward Tokens directly through Mintbase. - - **Contract Methods:** - 1. NEP-141 Standard Methods: - - Implement the standard NEP-141 methods for the Reward Token contract, allowing users to create, transfer, and manage their tokens with ease. - - Ensure that the contract adheres to the fungible token specifications outlined in the NEP-141 standard. - - 2. Zk.proof-enabled Validation: - - Develop methods for task completion validation, incorporating Zk.proof to secure the validation process. - - Utilize zero-knowledge proofs to verify that a task has been completed without exposing the details of the task on the blockchain. - - 3. Singular Validation through Oracles/Validators: - - Establish a mechanism for singular validation using oracles or validators on the NEAR platform. - - Design the contract to trigger validation requests to external oracles or validators, ensuring an additional layer of reliability in confirming completed tasks. - - **Testing:** - Documentation and instruction provided for a comprehensive testing environment Documentation and Tutorial will be created to guide users through the use of the template. - - **Versatility:** - The template's design intends to emphasize versatility, allowing users to configure rewards for incentivizing user actions. +The objective of this Rewards Token implementation is to provide an easy to use and versatile NEP-141 rewards smart contract template via Mintbase. This template allows users to create personalized Reward Tokens that can be utilized for various purposes, such as measuring activity, loyalty, performance, or other values. The focus is on encouraging user involvement in Pick'em games, NFT challenges, or any incentivized actions, enhancing engagement and participation. + +**Preliminary Notes on Technical Approach: Rewards Template Implementation** + +**Contract Structure:** +1. NEP-141 Standard Compliance: + - Design the smart contract to comply with the NEP-141 standard for fungible tokens on the NEAR protocol. + - Implement core functionalities such as `total_supply()`, `balance_of(account)`, `transfer(sender, receiver, amount)`, and other standard methods. + +2. Zk.proof Integration: + - Leverage Zk.proof capabilities for zero-knowledge proof implementations. + - Incorporate Zk.proof into the contract logic to ensure secure and private validations of completed tasks + +3. Mintbase Integration: + - Establish a seamless integration with Mintbase, utilizing the Mintbase API for creating and managing Reward Tokens. + - Configure the contract to support Mintbase's marketplace functionalities, enabling users to mint, trade, and interact with their Reward Tokens directly through Mintbase. + +**Contract Methods:** +1. NEP-141 Standard Methods: + - Implement the standard NEP-141 methods for the Reward Token contract, allowing users to create, transfer, and manage their tokens with ease. + - Ensure that the contract adheres to the fungible token specifications outlined in the NEP-141 standard. + +2. Zk.proof-enabled Validation: + - Develop methods for task completion validation, incorporating Zk.proof to secure the validation process. + - Utilize zero-knowledge proofs to verify that a task has been completed without exposing the details of the task on the blockchain. + +3. Singular Validation through Oracles/Validators: + - Establish a mechanism for singular validation using oracles or validators on the NEAR platform. + - Design the contract to trigger validation requests to external oracles or validators, ensuring an additional layer of reliability in confirming completed tasks. + +**Testing:** +Documentation and instruction provided for a comprehensive testing environment Documentation and Tutorial will be created to guide users through the use of the template. + +**Versatility:** +The template's design intends to emphasize versatility, allowing users to configure rewards for incentivizing user actions. ### Milestone 3 — Mintbase NFT Challenge Template: - The goal is to develop a versatile NFT Challenge template on the NEAR blockchain through Mintbase, facilitating the creation of unique NFT challenges with customizable requirements and rewarding outcomes. - - **Preliminary Notes on Technical Approach: NFT Challenge Template Implementation** - - For collectors, NFT challenges present collection tasks with rewarding outcomes. Earn exclusive NFTs specifically tailored for those who successfully complete the challenge. - - **Objective:** - The goal is to develop a versatile NFT Challenge template on the NEAR blockchain through Mintbase, facilitating the creation of unique challenges with customizable requirements and rewarding outcomes. - - **Technical Approach for NFT Challenge Contract** - - **Contract Structure:** - 1. Initialization: - - The contract is designed with three states: Configuration, Claiming, and Finished. - - Initialization includes setting challenge parameters and defining required NFTs with associated contract addresses. - - 2. Configuration State: - - Parameters like start time, duration, and claiming window status are tracked internally. - - Utilizes NEAR Smart Contract functionality to initialize the challenge. - - 3. Claiming State: - - Activation via the unlock mechanism, transitioning from Configuration. - - Asynchronous claiming window for collectors to submit NFTs. - - NEAR runtime environment used to handle asynchronous actions. - - 4. Cross-Check Mechanism: - - Implemented in the claim_rewards method during Claiming State. - - Ensures uniqueness of provided NFTs, preventing reuse. - - 5. Finished State: - - Triggered post-claiming window closure. - - Cleanup operations and challenge finalization are executed. - - NEAR contract state is adjusted, and further interactions are prevented by locking down the contract. - - **Contract Methods:** - 1. configure_nfts: - - NEAR Smart Contract method allowing the setting of required NFTs during Configuration State. - - Parameters updated in the contract state. - - 2. unlock_challenge: - - NEAR method transitioning the contract from Configuration to Claiming State. - - Activates the asynchronous claiming window. - - 3. claim_rewards: - - NEAR method for collectors to claim rewards during Claiming State. - - Employs cross-checks to ensure NFT uniqueness before processing rewards. - - 4. finish_challenge: - - NEAR method transitioning the contract from Claiming to Finished State. - - Executed cleanup operations and locks down the contract to prevent further interactions. - - **Testing:** - Documentation and instruction provided for a comprehensive testing environment Documentation and Tutorial will be created to guide users through the use of the template. - - **Versatility:** - - The template design prioritizes configurability, allowing users to tailor challenges with diverse collectibles and set specific completion circumstances and conditions. +The goal is to develop a versatile NFT Challenge template on the NEAR blockchain through Mintbase, facilitating the creation of unique NFT challenges with customizable requirements and rewarding outcomes. + +**Preliminary Notes on Technical Approach: NFT Challenge Template Implementation** + +For collectors, NFT challenges present collection tasks with rewarding outcomes. Earn exclusive NFTs specifically tailored for those who successfully complete the challenge. + +**Objective:** +The goal is to develop a versatile NFT Challenge template on the NEAR blockchain through Mintbase, facilitating the creation of unique challenges with customizable requirements and rewarding outcomes. + +**Technical Approach for NFT Challenge Contract** + +**Contract Structure:** +1. Initialization: + - The contract is designed with three states: Configuration, Claiming, and Finished. + - Initialization includes setting challenge parameters and defining required NFTs with associated contract addresses. + +2. Configuration State: + - Parameters like start time, duration, and claiming window status are tracked internally. + - Utilizes NEAR Smart Contract functionality to initialize the challenge. + +3. Claiming State: + - Activation via the unlock mechanism, transitioning from Configuration. + - Asynchronous claiming window for collectors to submit NFTs. + - NEAR runtime environment used to handle asynchronous actions. + +4. Cross-Check Mechanism: + - Implemented in the claim_rewards method during Claiming State. + - Ensures uniqueness of provided NFTs, preventing reuse. + +5. Finished State: + - Triggered post-claiming window closure. + - Cleanup operations and challenge finalization are executed. + - NEAR contract state is adjusted, and further interactions are prevented by locking down the contract. + +**Contract Methods:** +1. configure_nfts: + - NEAR Smart Contract method allowing the setting of required NFTs during Configuration State. + - Parameters updated in the contract state. + +2. unlock_challenge: + - NEAR method transitioning the contract from Configuration to Claiming State. + - Activates the asynchronous claiming window. + +3. claim_rewards: + - NEAR method for collectors to claim rewards during Claiming State. + - Employs cross-checks to ensure NFT uniqueness before processing rewards. + +4. finish_challenge: + - NEAR method transitioning the contract from Claiming to Finished State. + - Executed cleanup operations and locks down the contract to prevent further interactions. + +**Testing:** +Documentation and instruction provided for a comprehensive testing environment Documentation and Tutorial will be created to guide users through the use of the template. + +**Versatility:** +- The template design prioritizes configurability, allowing users to tailor challenges with diverse collectibles and set specific completion circumstances and conditions. ## TENAMINT Future Plans From 3784213b257f1dcd17c8766239d3b1f01290d386 Mon Sep 17 00:00:00 2001 From: SalShuttlesworth <99446355+Salikc9@users.noreply.github.com> Date: Fri, 26 Apr 2024 15:00:52 -0400 Subject: [PATCH 05/31] Update Sports-Pickem.md --- applications/Sports-Pickem.md | 286 +++++++++------------------------- 1 file changed, 71 insertions(+), 215 deletions(-) diff --git a/applications/Sports-Pickem.md b/applications/Sports-Pickem.md index 3a0edaab..c7798b5c 100644 --- a/applications/Sports-Pickem.md +++ b/applications/Sports-Pickem.md @@ -7,44 +7,20 @@ ## Project Overview -### Project Description - -TENAMINT Fan Engagement Templates: Pick'em, Rewards, and Challenges. -The game, rewards, collectibles, and upcoming product additions are intricately crafted to offer value in league partnerships, delivering exclusive content, digital collectibles, fan tokens, and IRL activations. This approach fosters a vibrant ecosystem of sports enthusiasts, resulting in heightened fan experiences, strengthened league-to-fan relationships, and a compelling avenue for web3 fan-base adoption. In addition to the release of these elements, the deliverables also include 3 related Mintbase templates to ensure that builders in the near and mintbase ecosystem can build NFT Challenges, Reward Programs, and use Pick’em templates to gamify aspects of their project. - -#### Key Features and Rewards - -**Pick'em Game:** -- Introduces dynamic live match prediction within Sports Pick'em. -- Users predict scores, player performances, and key play outcomes. -- Offers immediate rewards for correct predictions (points or tokens). -- Rewards can be redeemed for exclusive NFTs, fan experiences, or merchandise. -- Mintbase Pick’em Template. +TENAMINT is dedicated to crafting innovative products and resources tailored to enhance the engagement of collectors and sports enthusiasts. Our mission is to elevate fan experiences, fortify connections between leagues and fans, and pioneer the integration of web3 technologies into fan communities. -**Collectables:** -- NFTs are a core aspect of the Pick'em game and can be used to enhance rewards in the Pick'em game and synergize with other games. -- Collectibles feature challenges that can be completed for further rewards. -- Collectibles are intended to be league partner/team partner specific. -- Collectibles can be redeemed in exchange for rewards creating a loop. -- Mintbase NFT Challenges Template. - -**Rewards:** -- Pick'em contest winners receive reward tokens. -- Tokens can be used within the platform or exchanged. -- Redeemable for digital collectibles, IRL experiences, and merchandise. -- Mintbase Rewards Template +### Project Description -**In-Game Engagement with Mintbase:** -- "Mint Your Moment" feature captures fan experiences at games with the NFT Minter. +This grant proposal outlines our commitment to developing Mintbase templates, specifically designed to empower creatives and developers within the NEAR and Mintbase ecosystem. These templates will facilitate the creation of NFT Challenges, adding gamification elements to various projects. Drawing inspiration from sports-related challenges, these templates will incentivize collectors with rewards for completing collections or themed sets. Moreover, they will introduce opportunities to merge collectibles, unlocking exclusive unified or super collectibles reserved for those who fulfill specific requirements. -## Project Details +#### Key Features and Benefits -- **Figma Exports:** [Figma Exports](https://drive.google.com/drive/folders/1-rek75CWt7GZhEPEWXRKxfW2pQ7xgPIo?usp=share_link) -- **Exploratory/Early Staging Site:** [Basketball Pick'em App](https://basketball-pickem-app.vercel.app/) -- **Data Models:** - - [Data Model 1 (User Flow Preliminary Conceptualization)](https://drive.google.com/file/d/1iCfI1y4dS4LQlhaMdx5paqJbsukCDHXm/view?usp=share_link) - - [Data Model 2 (Token Interconnectivity Preliminary Conceptulization)](https://drive.google.com/file/d/1slCt0Iz0pLFRpbtcstNFMM13rdc6Axvz/view?usp=share_link) -- **Architecture Model:** [Architecture Model](https://drive.google.com/file/d/1pg3gqbdVOpssSn9sB0beQ_FGDmX_8v1I/view?usp=sharing) +Key Features and Benefits +- Customizable Mintbase Template: Tailored NFT Challenges to suit project needs and objectives +- Gamification Elements: Infuse projects with gamified experiences, enhancing user engagement and interaction. +- Reward System: Incentivize collectors with rewards for completing collections or themed sets, fostering a sense of accomplishment and loyalty. +- Merge Mechanics: Introduce opportunities for collectors to combine collectibles, unlocking exclusive unified or super collectibles as a testament to their dedication. +- Exclusive Benefits: Offer exclusive rewards and privileges to participants who meet specific challenge requirements, cultivating a vibrant and dedicated fan community. ## Tech-Stack, Architecture, and Components @@ -71,9 +47,9 @@ The game, rewards, collectibles, and upcoming product additions are intricately **Blockchain:** - NEAR network for blockchain functionality - NEPs: NEP141 (FT) Rewards, NEP171 (NFT) Collectibles, NEP245 (MTS) -- Marketplace: NFT: Mintbase Marketplace Integration, Merchandise E-Commerce: Droplinked +- Marketplace: NFT: Mintbase Marketplace Integration - Blockchain Indexer: GraphQL API for blockchain indexer -- Wallet: NEAR Wallet Selector, Mintbase Wallet, HERE, and others, Tenamint Wallet App powered by Mintbase Wallet, Potential for direct to marketplace/rewards integration +- Wallet: Mintbase Wallet, NEAR Wallet Selector, HERE, and others ## Ecosystem Fit @@ -81,14 +57,20 @@ Where and How TENAMINT fits into the Ecosystem: **Mintbase:** - Mintbase Wallet: User-friendly and streamlined user onboarding, Passkey/Biometric Sign-in, Social Auth Options -- Templates: Mintbase Rewards Template, Mintbase Pick’em Template, Mintbase NFT Challenges Template -- NFT Minter: "Mint Your Moment" implementation designed for IRL events +- Templates: Creation of Mintbase NFT Challenge Template - Indexer: Utilization of GraphQL Indexer for efficient user data tracking +- Sports collectibles +- TCG type collectibles (and Experiences) amplified by challenges +- Future implementations of RWA collectibles (Asset-Backed) +- Future use of NFT Minter: "Mint Your Moment" implementation designed for IRL events +- Mintbase minted game submissions (ex. Bracket Challenge) **NEAR:** -- Leading Sports Gaming and Collectibles on NEAR -- The products intertwine to introduce an innovative approach to sports gaming with free-to-play predictive gaming, fan engagement, league partnerships, and integrated collectibles with utility. +- TENAMINT aims to be an industry leader for Sports, Gaming, and Collectibles on NEAR and beyond +- The products intertwine to introduce an innovative approach to sports gaming with free-to-play predictive gaming, fan engagement, league partnerships, and integrating collectibles with utility. - TENAMINT aims to position itself as a pioneering force in the Web3 ecosystem, specifically targeting the sports entertainment and collectibles sector with an emphasis on creative, interconnected, and fan-first products. +- Developed templates will allow for creatives, builders, and more to create NFT challenges and incentivize collectors by providing more depth and interactive elements relating to their collections on NEAR. + ## Target Audience and Needs Met @@ -98,27 +80,25 @@ Where and How TENAMINT fits into the Ecosystem: - Collectibles Enthusiasts - Blockchain Enthusiasts - Gamers +- Builders +- Creatives +- Artists +- IP Partners + **Audience Needs Met by the Project:** -- Enhanced Fan Engagement -- Immersive Fan Experience - Engaging Collectibles Experience - Engaging Gaming Experiences - -## Similar Projects in NEAR Ecosystems - -- Playible -- SailGP -- Dropt -- NEAR Foundation (Details pending TBA) +- Enhanced Fan Engagement +- Immersive Fan Experience ## Team ### Primary Contact -Sal Chaudhry -Email: [office@tenamint.com](mailto:office@tenamint.com) -LinkedIn: [https://www.linkedin.com/in/salchaudhry](https://www.linkedin.com/in/salchaudhry) +- Sal Chaudhry +- Email: [office@tenamint.com](mailto:office@tenamint.com) +- LinkedIn: [https://www.linkedin.com/in/salchaudhry](https://www.linkedin.com/in/salchaudhry) ### Legal Structure @@ -127,7 +107,7 @@ Registered Address: 408-146 Fort York Blvd., Toronto, ON, Canada M5V0E1 ### Team Experience -TENAMINT: [Website](www.tenamint.com/), [App](https://app.tenamint.com/) +TENAMINT: [Website](www.tenamint.com/) TENAMINT leads the way in shaping the future of sports fan experiences, bringing immersive fantasy sports with play-to-earn rewards in addition to utility-driven collectibles, and other fan-first offerings to a global audience. From fantasy sports gaming and digital collectibles to real-world activations, our products seamlessly converge, redefining fan engagement through a harmonious blend of blockchain technology, enticing rewards, and unparalleled fan experiences. This innovative approach extends beyond the digital realm, fostering real-world activations that not only fortify fan loyalty but also spearhead the evolution of interactive fan experiences. ### Accelerators and similar programs @@ -141,20 +121,25 @@ NEAR HZN1, Innovation Boost Zone, Accelerator Centre, Founder Institute, etc. - [LinkedIn](https://www.linkedin.com/company/73837227/admin/feed/posts/) **Individual Team Members:** -- Nadir: [LinkedIn](https://www.linkedin.com/in/nadirchaudhry/) +- Nadir: [GitHub](https://github.com/0xNadir), [LinkedIn](https://www.linkedin.com/in/nadirchaudhry/) - Sal: [GitHub](https://github.com/Salikc9), [LinkedIn](https://www.linkedin.com/in/salchaudhry/) - Alex: [GitHub](https://github.com/alexastrum), [LinkedIn](https://www.linkedin.com/in/alexastrum/) -- Shunsuke: [GitHub](https://github.com/ShunsukeKano), [LinkedIn](https://www.linkedin.com/in/shunsuke-kano/) -- Walt: [GitHub](https://github.com/yaozakai), [LinkedIn](https://www.linkedin.com/in/waltyao/) - Shawn: [GitHub](https://github.com/Benz222) +- Walt: [GitHub](https://github.com/yaozakai), [LinkedIn](https://www.linkedin.com/in/waltyao/) +- Wasim: [GitHub](https://github.com/wasim162010), [LinkedIn](https://www.linkedin.com/in/wasim-bari) + ## Development Status **Wireframes, Mock-ups, Other:** +- [Folder](https://drive.google.com/drive/folders/1-jmuOf-ubdDAY0ADfsPTALMGNEDnXYgc?usp=share_link) +- NFT Challenges: [Notes](https://drive.google.com/file/d/1gESUU2Zu9C9ZaO7wJNrQQ_VNsPa5JwsY/view?usp=sharing) - Figma Mockup: [TENAMINT Pick'em](https://www.figma.com/proto/5ivxRYoqK2KHjKHhCht8up/TENAMINT-Pick'em?type=design&node-id=1300-2012&t=N4dCS0wkNofN63Fx-0&scaling=min-zoom&page-id=0%3A1&starting-point-node-id=1300%3A2012&show-proto-sidebar=1) - Early Staging Site: [Basketball Pick'em App](https://basketball-pickem-app.vercel.app/) - Data & Architecture Models: [Google Drive Link](https://drive.google.com/drive/folders/1-jmuOf-ubdDAY0ADfsPTALMGNEDnXYgc?usp=sharing) - Other Products: [TENAMINT Phygital](https://tenamint.com/phygital) +- Bracket Challenge: [Bracket Challenge](https://bracket.tenamint.com/) +- Telegram App (alpha): [Telegram App](https://t.me/TENAMINT_bot) **Research Done:** - Engagement with League Executives: In-depth conversations and consultations have taken place with league executives to gain valuable insights into their specific needs and identify emerging opportunities within the industry. @@ -163,180 +148,45 @@ NEAR HZN1, Innovation Boost Zone, Accelerator Centre, Founder Institute, etc. - Industry Specialization: The co-founder brings a wealth of expertise to the project, grounded in an educational background specializing in sport business. Emphasizing fan experience and sport technology, the co-founder adopts a strategic and thoroughly researched approach to advancements in sports innovation and fan engagement. - Other Relevant Experiences: A lifetime dedicated to being a team of passionate enthusiasts, including roles as die-hard fans, fantasy sports players, league commissioners, and collectors of both digital and physical sports collectibles, has provided a unique and holistic perspective. This firsthand experience enriches the project with a deep understanding of user expectations and industry dynamics. - Mintbase Products, Documentation, Templates, and opportunities for open-source templates. +- Discussions with Mintbase team (Paul & Luis) -**Relevant Conversations with Mintbase:** -- Paul via Zoom Call - September 2023 -- Nate at NEARCON 2023 - November 2023 -- Paul & Micro February/March 2024 - -## Milestones and Product Roadmap +## Milestones and Roadmap **Overview — Milestone Summary** -Estimated Duration: 4.5 months +Estimated Duration: 1.5 months FTE: 3 -Costs: $50,000 USD -Note: order of Milestone Delivery may change - -### Milestone 1 — Sports Pick'em Game - - **Estimated Duration:** 1.5 months - **FTE:** 3 - **Costs:** $15,000 USD - **Mintbase Pick’em Template:** - **Deliverables:** - - License | MIT - - Documentation | We will provide both inline documentation of the code and a basic tutorial that explains how a user can create a simple ‘Pick’Em’ that can be used for a game, polling, or other creative uses. - - Docker | We will provide a Dockerfile(s) that can be used to test all the functionality delivered with this milestone. - - Article & Video | We will publish an article and video explaining the full rewards concept and walkthrough. - - Mintbase Template | We will create a template that will enable users to craft their unique Pick’Em Scenarios. - - TENAMINT Implementation | Pick'em Game - - Sport’s Pick’em Game Release - - Documentation: Comprehensive documentation covering all aspects - - Design: Engaging and intuitive design elements - - Mechanics: Fundamental game mechanics for an immersive experience - - Smart Contracts: Implementation and deployment details - - Integrations: Integration with other platforms and services for enhanced functionality - +Costs: $20,000 USD -### Milestone 2 — TENAMINT Rewards and Mintbase Rewards Template - - **Duration:** 1.5 months - **FTE:** 3 - **Costs:** $15,000 USD - **Mintbase Pick’em Template:** - **Deliverables:** - - License | MIT - - Documentation | We will provide both inline documentation of the code and a basic tutorial that explains how a user can create a personalized Reward Token. - - Docker | We will provide a Dockerfile(s) that can be used to test all the functionality delivered with this milestone. - - Article & Video | We will publish an article and video explaining the full rewards concept and walkthrough. - - Mintbase Template | We will create a template that empowers users to create their personalized Reward Token. - - TENAMINT Implementation | Rewards - - Deliverables: Rewards Implementation with Rewards Marketplace Features - - Documentation: Complete coverage of all aspects - - Design: Aesthetic and functional design elements - - Mechanics: Core operational mechanics - - Smart Contracts: Deployment and functionality - - Integrations: Seamless integration with existing systems and services - - -### Milestone 3 — TENAMINT NFT Challenge and Mintbase NFT Challenge Template +### Milestone 1 — TENAMINT NFT Challenge and Mintbase NFT Challenge Template **Estimated Duration:** 1.5 Months **FTE:** 3 **Costs:** $20,000 USD **Mintbase NFT Challenge Template:** **Deliverables:** - - License | MIT - - Documentation | We will provide both inline documentation of the code and a basic tutorial that explains how a user can create a “NFT Challenge” through the creation of a ‘check-list’ of NFTs that are to be collected. - - Docker | We will provide a Dockerfile(s) that can be used to test all the functionality delivered with this milestone. - - Article & Video | We will publish an article and video explaining the full rewards concept and walkthrough. - - Mintbase Template | We will create a versatile template empowering users to craft their unique NFT Challenges. - - TENAMINT Implementation | NFT & Challenges - - NFTs & Challenges Release (V0 or V1 - Dependent on Business Development Variables) - - Primary Marketplace: Open - - Secondary Marketplace: Open - - NFT Challenge Integration - - NFT Minter ("Mint Your Moment") & In-Real-Life (IRL) Activation - - Beta Testing, Feedback, and Improvements - - -## Mintabase Templates Technical Approach and Preliminary Notes - -### Milestone 1 — Mintbase Pick’em Template: - -The objective of this internal high-level overview is to outline the implementation approach for building a Pick'Em template on NEAR via Mintbase. The goal is to create an engaging and versatile smart contract that allows users to participate in Pick'Em scenarios, associating potential outcomes with corresponding airdrops. The contract should seamlessly interact with NEAR infrastructure, validate user picks, and integrate with a rewards payer for token distribution. +| Number | Deliverable | Specification | +| -----: | ----------- | ------------- | +| 0a. | License | MIT | +| 0b. | Documentation | We will provide both inline documentation of the code and a basic tutorial that explains how a user can create a “NFT Challenge” through the creation of challenge requirements, circumstances, and rewards | +| 0c. | Testing Guide | Core functions will be fully covered by unit tests to ensure functionality and robustness. In the guide, we will describe how to run these tests. | +| 0d. | Docker | We will provide a Dockerfile(s) that can be used to test all the functionality delivered with this milestone. | +| 0e. | Article + Video | We will publish an article and video explaining the full nft challenge concept and walkthrough. | +| 1. | Mintbase Template: NFT Challenges | We will create a versatile template empowering users to craft their unique NFT Challenges. Template and deliverables will include customization elements empowering creators with the ability to choose all variable elements relating to the challenges. Template will be designed for ease of use.| +| 2. | TENAMINT Implementation | TENAMINT Challenge Examples (illustrating features, options, and functionality through primary/secondary marketplace. Documentation for Beta Testing, Feedback, and Improvements. | -**Preliminary Notes on Technical Approach: Pick’em Template Implementation** -**Contract Structure:** -1. Modularity and Extensibility: - - Components are modular, allowing for easy addition or modification of functionalities. - - Contracts can be extended to accommodate new features or integrate with other contracts seamlessly. - -2. State Variables: - - Well-defined state variables encapsulate essential information such as user balances, task completion status, and reward distribution details. - - Variables are organized in a structured manner for clarity and efficient access. - -**Contract Methods:** -1. Singular Validation: - - A method is implemented to facilitate singular validation through Zk.proof or assigned transactions. - - Validators or oracles utilize this method to confirm the completion of specific tasks by users before triggering reward distribution. - -2. Security Measures: - - Methods are designed with security in mind, incorporating measures to prevent unauthorized access, tampering, or malicious activities. - - Permission settings and access controls are implemented to restrict certain actions to authorized entities. - -3. Transparency: - - The contract methods provide clear and transparent processes for task validation and reward distribution. - - Event logging ensures a transparent record of completed tasks, helping in auditing and accountability. - -4. Integration with Minter and Token Drop: - - Seamless integration with Mintbase is achieved through well-defined methods for token creation and distribution. - - The contract can efficiently mint new reward tokens based on predefined criteria and distribute them to users who successfully complete incentivized tasks. - -**Interaction with Rewards Payer:** -The contract interacts seamlessly with the Rewards Payer, which could be an external entity responsible for validating tasks and distributing rewards. Validators or oracles can utilize the contract's methods to verify task completion, ensuring a secure and tamper-proof process for rewarding users. - -**Testing:** -Documentation and instruction provided for a comprehensive testing environment. Documentation and Tutorial will be created to guide users through use of the template. - -**Versatility:** -The template's versatility is a key highlight, enabling users to configure and enhance their rewards by assigning values to incentivized actions. Whether it's related to NFT collections, check-ins, game participation, or referrals, the Rewards Token template empowers users to tailor their incentivization strategies according to their specific use cases. - - -### Milestone 2 — Mintbase Rewards Template: - -The objective of this Rewards Token implementation is to provide an easy to use and versatile NEP-141 rewards smart contract template via Mintbase. This template allows users to create personalized Reward Tokens that can be utilized for various purposes, such as measuring activity, loyalty, performance, or other values. The focus is on encouraging user involvement in Pick'em games, NFT challenges, or any incentivized actions, enhancing engagement and participation. - -**Preliminary Notes on Technical Approach: Rewards Template Implementation** +## Mintbase NFT Challenge Template - Technical Approach and Preliminary Notes -**Contract Structure:** -1. NEP-141 Standard Compliance: - - Design the smart contract to comply with the NEP-141 standard for fungible tokens on the NEAR protocol. - - Implement core functionalities such as `total_supply()`, `balance_of(account)`, `transfer(sender, receiver, amount)`, and other standard methods. - -2. Zk.proof Integration: - - Leverage Zk.proof capabilities for zero-knowledge proof implementations. - - Incorporate Zk.proof into the contract logic to ensure secure and private validations of completed tasks - -3. Mintbase Integration: - - Establish a seamless integration with Mintbase, utilizing the Mintbase API for creating and managing Reward Tokens. - - Configure the contract to support Mintbase's marketplace functionalities, enabling users to mint, trade, and interact with their Reward Tokens directly through Mintbase. - -**Contract Methods:** -1. NEP-141 Standard Methods: - - Implement the standard NEP-141 methods for the Reward Token contract, allowing users to create, transfer, and manage their tokens with ease. - - Ensure that the contract adheres to the fungible token specifications outlined in the NEP-141 standard. - -2. Zk.proof-enabled Validation: - - Develop methods for task completion validation, incorporating Zk.proof to secure the validation process. - - Utilize zero-knowledge proofs to verify that a task has been completed without exposing the details of the task on the blockchain. +The goal is to develop a versatile NFT Challenge template on the NEAR blockchain through Mintbase, facilitating the creation of unique NFT challenges with customizable requirements and rewarding outcomes. -3. Singular Validation through Oracles/Validators: - - Establish a mechanism for singular validation using oracles or validators on the NEAR platform. - - Design the contract to trigger validation requests to external oracles or validators, ensuring an additional layer of reliability in confirming completed tasks. +For collectors, NFT challenges present collection tasks with rewarding outcomes. Earn exclusive NFTs specifically tailored for those who successfully complete the challenge. We envision this a variety of customization options that draw inspiration from sports collectibles and TCG collectibles. In sports collectibles, it's ideal for rewards to be provided in addition to keeping the requirements for the reward. In some TCG examples, the reward should 'replace' the required collectibles as they build towards the 'super' collectible (the Exodia Example). We recognize that additional types of challenges/rewards (with different technical approaches) may be uncovered and considered through the development process. -**Testing:** -Documentation and instruction provided for a comprehensive testing environment Documentation and Tutorial will be created to guide users through the use of the template. - -**Versatility:** -The template's design intends to emphasize versatility, allowing users to configure rewards for incentivizing user actions. +Objective: The goal is to develop a versatile NFT Challenge template on the NEAR blockchain through Mintbase, facilitating the creation of unique challenges with customizable requirements and rewarding outcomes. -### Milestone 3 — Mintbase NFT Challenge Template: - -The goal is to develop a versatile NFT Challenge template on the NEAR blockchain through Mintbase, facilitating the creation of unique NFT challenges with customizable requirements and rewarding outcomes. - -**Preliminary Notes on Technical Approach: NFT Challenge Template Implementation** - -For collectors, NFT challenges present collection tasks with rewarding outcomes. Earn exclusive NFTs specifically tailored for those who successfully complete the challenge. - -**Objective:** -The goal is to develop a versatile NFT Challenge template on the NEAR blockchain through Mintbase, facilitating the creation of unique challenges with customizable requirements and rewarding outcomes. - -**Technical Approach for NFT Challenge Contract** +**Potential Technical Approach for NFT Challenges and Template** **Contract Structure:** 1. Initialization: @@ -354,7 +204,7 @@ The goal is to develop a versatile NFT Challenge template on the NEAR blockchain 4. Cross-Check Mechanism: - Implemented in the claim_rewards method during Claiming State. - - Ensures uniqueness of provided NFTs, preventing reuse. + - Ensures uniqueness of provided NFTs, preventing reuse (or as configured) 5. Finished State: - Triggered post-claiming window closure. @@ -378,18 +228,19 @@ The goal is to develop a versatile NFT Challenge template on the NEAR blockchain - NEAR method transitioning the contract from Claiming to Finished State. - Executed cleanup operations and locks down the contract to prevent further interactions. +Note: Technical approach may be adjusted to best suit deliverables and customization options. Additionally, any marketplace and NFT display considerations will be taken into account throughout the development and template design process. + **Testing:** -Documentation and instruction provided for a comprehensive testing environment Documentation and Tutorial will be created to guide users through the use of the template. +Documentation and instruction provided for a comprehensive testing environment. Documentation and Tutorials will also be created to guide users through the use of the template. **Versatility:** -- The template design prioritizes configurability, allowing users to tailor challenges with diverse collectibles and set specific completion circumstances and conditions. - +- The template design prioritizes configurability and ease of use, allowing users to easily tailor challenges with diverse collectibles and set specific completion circumstances and conditions. ## TENAMINT Future Plans **Organizational Roadmap and Future Plans** -- Short-Term: In the short-term, our primary objectives include the integration of merchandise E-Commerce for the Rewards Marketplace, along with the implementation of social share features and the introduction of a bracket game to enhance user engagement. Additionally, we aim to execute our Go-To-Market (GTM) plan, focusing on strategic partnerships and the execution of seamless IRL activations in arena venues. +- Short-Term: In the short-term, our primary objectives include the launch of a telegram app allowing users to take part in daily sport related activities that provide them with the potential to earn reward points that can soon be utilized on a marketplace. - Mid-Term: Moving into the mid-term, we plan to develop and expand our product line to include more strategic and in-depth game formats such as a Daily Fantasy Sports (DFS) style game and eventually a season-long format. Our emphasis during this phase will also involve establishing dedicated fan hubs for leagues, teams, and athletes. We also plan to integrate our product on the BOS and continue with the execution of our GTM plan in sync with our partners. @@ -400,6 +251,8 @@ Documentation and instruction provided for a comprehensive testing environment D - Note: In the future we aim to eventually continue development towards advancing and improving Phygital/RWA releases and technologies by integrating and leveraging our newer product lines. Pre-developed and qualified user bases may eventually provide lead-generation for the Phygital/RWA products. Partnerships that align with the TENAMINT Phygital vision will also be considered as we recognize the trends and long-term potential of RWA-backed collectibles, fractional ownership, and other core concepts we had previously prioritized. It's essential to highlight that as mentioned in previous discussions with the Mintbase team, the Multi-Token Standard (MTS) is intricately connected to the TENAMINT Phygital product line and we'd like to explore Mintbase integration for this initiative in the future once our new product line priorities are successfully released and established. +- Other Templates: We have previously identified other potential templates that may be valuable to the ecosystem in the future. These templates may be proposed following the completion of this submission. + ## Additional Information **How did you hear about the Grants Program?** @@ -422,3 +275,6 @@ Tenamint Phygital - **Pre-Seed Fundraise in Early 2022** - **Grants** - NF Grant (2022 Builder & Quick-Starter Grants) +- **Games** + - Bracket Challenge and Final Four Game + - Telegram Pick'em App (In Development) From b1bc052630a2834087aeff7887a983363799a2d4 Mon Sep 17 00:00:00 2001 From: SalShuttlesworth <99446355+Salikc9@users.noreply.github.com> Date: Fri, 26 Apr 2024 15:02:00 -0400 Subject: [PATCH 06/31] Rename Sports-Pickem.md to TENAMINT.md --- applications/{Sports-Pickem.md => TENAMINT.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename applications/{Sports-Pickem.md => TENAMINT.md} (100%) diff --git a/applications/Sports-Pickem.md b/applications/TENAMINT.md similarity index 100% rename from applications/Sports-Pickem.md rename to applications/TENAMINT.md From beafc87ab27519f6883a82c38a3e90365c78fadb Mon Sep 17 00:00:00 2001 From: SalShuttlesworth <99446355+Salikc9@users.noreply.github.com> Date: Wed, 8 May 2024 12:37:21 -0400 Subject: [PATCH 07/31] Update TENAMINT.md Updated project name within proposal to correctly reflect previously approved/discussed change from 3 proposed templates to 1 (NFT Challenge) --- applications/TENAMINT.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/applications/TENAMINT.md b/applications/TENAMINT.md index c7798b5c..fbe05b9b 100644 --- a/applications/TENAMINT.md +++ b/applications/TENAMINT.md @@ -1,6 +1,6 @@ # Mintbase Grant Proposal -## Project Name: TENAMINT Fan Engagement Templates: Pick'em, Rewards, and Challenges +## Project Name: TENAMINT NFT Challenge Template **Company Name:** TENAMINT **Payment Address:** bstt.near **Grant Level:** 2 From 7bb315ea0cc44ae2a9b6db2e8f20112a7adac977 Mon Sep 17 00:00:00 2001 From: SalShuttlesworth <99446355+Salikc9@users.noreply.github.com> Date: Wed, 26 Jun 2024 11:02:00 -0400 Subject: [PATCH 08/31] Add files via upload --- submissions/nft-challenge-factory-main.zip | Bin 0 -> 145832 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 submissions/nft-challenge-factory-main.zip diff --git a/submissions/nft-challenge-factory-main.zip b/submissions/nft-challenge-factory-main.zip new file mode 100644 index 0000000000000000000000000000000000000000..7ebc5609cfef5b0c81051e33a06c2ce68c7f6e8c GIT binary patch literal 145832 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 OvI_+26~s(-K>q{TpvPDM literal 0 HcmV?d00001 From 66576c64de56331d6be2285aeb8d9533ff26822a Mon Sep 17 00:00:00 2001 From: SalShuttlesworth <99446355+Salikc9@users.noreply.github.com> Date: Wed, 26 Jun 2024 11:04:58 -0400 Subject: [PATCH 09/31] Delete submissions/nft-challenge-factory-main.zip --- submissions/nft-challenge-factory-main.zip | Bin 145832 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 submissions/nft-challenge-factory-main.zip diff --git a/submissions/nft-challenge-factory-main.zip b/submissions/nft-challenge-factory-main.zip deleted file mode 100644 index 7ebc5609cfef5b0c81051e33a06c2ce68c7f6e8c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 145832 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 OvI_+26~s(-K>q{TpvPDM From 46249be58421abfa187a44b14f722f2e1ca791d1 Mon Sep 17 00:00:00 2001 From: SalShuttlesworth <99446355+Salikc9@users.noreply.github.com> Date: Wed, 26 Jun 2024 11:06:12 -0400 Subject: [PATCH 10/31] Create nft-challenge-factory --- submissions/NFT Challenge Template/nft-challenge-factory | 1 + 1 file changed, 1 insertion(+) create mode 100644 submissions/NFT Challenge Template/nft-challenge-factory diff --git a/submissions/NFT Challenge Template/nft-challenge-factory b/submissions/NFT Challenge Template/nft-challenge-factory new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/submissions/NFT Challenge Template/nft-challenge-factory @@ -0,0 +1 @@ + From 4f350eaee1043dce3b21deb398407a759938c6ef Mon Sep 17 00:00:00 2001 From: SalShuttlesworth <99446355+Salikc9@users.noreply.github.com> Date: Wed, 26 Jun 2024 11:07:44 -0400 Subject: [PATCH 11/31] Delete submissions/NFT Challenge Template/nft-challenge-factory --- submissions/NFT Challenge Template/nft-challenge-factory | 1 - 1 file changed, 1 deletion(-) delete mode 100644 submissions/NFT Challenge Template/nft-challenge-factory diff --git a/submissions/NFT Challenge Template/nft-challenge-factory b/submissions/NFT Challenge Template/nft-challenge-factory deleted file mode 100644 index 8b137891..00000000 --- a/submissions/NFT Challenge Template/nft-challenge-factory +++ /dev/null @@ -1 +0,0 @@ - From 0c1ce53d25848074bd33c7ce67abae5a543f90cf Mon Sep 17 00:00:00 2001 From: SalShuttlesworth <99446355+Salikc9@users.noreply.github.com> Date: Wed, 26 Jun 2024 11:08:40 -0400 Subject: [PATCH 12/31] Create README --- .../NFT Challenge Template/nft-challenge-factory-main/README | 1 + 1 file changed, 1 insertion(+) create mode 100644 submissions/NFT Challenge Template/nft-challenge-factory-main/README diff --git a/submissions/NFT Challenge Template/nft-challenge-factory-main/README b/submissions/NFT Challenge Template/nft-challenge-factory-main/README new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/submissions/NFT Challenge Template/nft-challenge-factory-main/README @@ -0,0 +1 @@ + From 4fec7a8b372a39f03ad869950856be7e44cd795b Mon Sep 17 00:00:00 2001 From: SalShuttlesworth <99446355+Salikc9@users.noreply.github.com> Date: Wed, 26 Jun 2024 11:09:06 -0400 Subject: [PATCH 13/31] Create README --- submissions/NFT Challenge Template/nft-challenge-main/README | 1 + 1 file changed, 1 insertion(+) create mode 100644 submissions/NFT Challenge Template/nft-challenge-main/README diff --git a/submissions/NFT Challenge Template/nft-challenge-main/README b/submissions/NFT Challenge Template/nft-challenge-main/README new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/submissions/NFT Challenge Template/nft-challenge-main/README @@ -0,0 +1 @@ + From cca279d23bc2c485efa87f408fc76b3831f9d1cb Mon Sep 17 00:00:00 2001 From: SalShuttlesworth <99446355+Salikc9@users.noreply.github.com> Date: Wed, 26 Jun 2024 11:10:09 -0400 Subject: [PATCH 14/31] Create README --- .../NFT Challenge Template/nft-challenge-template-fe/README | 1 + 1 file changed, 1 insertion(+) create mode 100644 submissions/NFT Challenge Template/nft-challenge-template-fe/README diff --git a/submissions/NFT Challenge Template/nft-challenge-template-fe/README b/submissions/NFT Challenge Template/nft-challenge-template-fe/README new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/submissions/NFT Challenge Template/nft-challenge-template-fe/README @@ -0,0 +1 @@ + From 5ada3b5424eaabc60bdbffa926f7d82b08ce88dc Mon Sep 17 00:00:00 2001 From: SalShuttlesworth <99446355+Salikc9@users.noreply.github.com> Date: Wed, 26 Jun 2024 11:10:48 -0400 Subject: [PATCH 15/31] Update README --- .../nft-challenge-template-fe/README | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/submissions/NFT Challenge Template/nft-challenge-template-fe/README b/submissions/NFT Challenge Template/nft-challenge-template-fe/README index 8b137891..9567db10 100644 --- a/submissions/NFT Challenge Template/nft-challenge-template-fe/README +++ b/submissions/NFT Challenge Template/nft-challenge-template-fe/README @@ -1 +1,49 @@ +# NFT Challenge Template +Generate blockchain challenges that validate if users have all the challenge pieces! Capabilities include burning challenge pieces on completion, as well as minting a reward piece on completion. Users can also set an expiration date for their challenge, as well as set the maximum amount of winners for the challenge. + +[![Demo](https://img.shields.io/badge/Demo-Visit%20Demo-brightgreen)](https://nft-challenge-creator.vercel.app/) + + +## Important: +If you plan on burning challenge NFTs on completion, make sure users who try to complete the challenge **give the challenge contract transfer approval for their challenge piece NFTs**, so that the challenge contract can burn them. +If you plan on minting the reward NFT through the challenge contract, ensure you make the **challenge contract a minter of the reward NFT contract**. + + + +## Run the project + + yarn install + + yarn run dev + +Open [http://localhost:3000](http://localhost:3000) with your browser to see the result. + +We have set the environment variables necessary to get the template working on testnet right out of the box for you in the `env.example` file, simply rename it `env.local` and you'll be good to go! If you want to use the template on mainnet or have your own deployed challenge factory contract, change the environment variable values as desired. + +## Demo videos +[Demo Video Part 1](https://drive.google.com/file/d/1-bRR35WkdvPea_CV7A29NWSJ_wWAGqBn/view?usp=sharing) + + + +[Demo Video Part 2](https://drive.google.com/file/d/1oxsuym7PGw_IojSCQH6prk1IpT-r2dpW/view?usp=sharing) + +Below is an example of a test challenge which was created to illustrate this template: + +NFT Challenge Page: [https://nft-challenge-creator.vercel.app/challenges/tenamint-blackdragon1?transactionHashes=EpU3RWCnWTuXetECqdJQQ48XTBKGRUZZzrUjEziwNPBx](https://nft-challenge-creator.vercel.app/challenges/tenamint-blackdragon1?transactionHashes=EpU3RWCnWTuXetECqdJQQ48XTBKGRUZZzrUjEziwNPBx) + Challenge NFT 1: [[https://testnet.mintbase.xyz/contract/tmxbdxbaseball.mintspace2.testnet/nfts/all/0](https://testnet.mintbase.xyz/contract/tmxbdxbaseball.mintspace2.testnet/nfts/all/0)] + Challenge NFT 2: [[https://testnet.mintbase.xyz/contract/tmxbdxhockey.mintspace2.testnet/nfts/all/0](https://testnet.mintbase.xyz/contract/tmxbdxhockey.mintspace2.testnet/nfts/all/0)] + Challenge NFT 3: [[https://testnet.mintbase.xyz/contract/tmxbdxbasketball.mintspace2.testnet/nfts/all/0](https://testnet.mintbase.xyz/contract/tmxbdxbasketball.mintspace2.testnet/nfts/all/0)] + +Claim all 3 and then visit this link to complete the challenge claim your reward NFT: +[[https://nft-challenge-creator.vercel.app/challenges/tenamint-blackdragon1?transactionHashes=EpU3RWCnWTuXetECqdJQQ48XTBKGRUZZzrUjEziwNPBx](https://nft-challenge-creator.vercel.app/challenges/tenamint-blackdragon1?transactionHashes=EpU3RWCnWTuXetECqdJQQ48XTBKGRUZZzrUjEziwNPBx)] + +## Notes on Using V0 for AI generated components + +A lot of the components for this template uses components generated by [v0](https://v0.dev), an AI frontend component generator. Here's a list of components I generated for this project, you can play around with the prompts to modify the components. + +- [Choosing a reward NFT](https://v0.dev/t/VjZbaEsFCvv) +- [Choosing number of challenge nfts and current challenge info](https://v0.dev/r/2WXHinKdaFF) +- [Choosing termination details](https://v0.dev/r/gsYzCa15AWT) +- [Network Toggle](https://v0.dev/r/Tyu9vrlRBxZ) +- [NFT Challenge page](https://v0.dev/r/BRmDtqSddRR) From 9e6ab6b2ef762b0405dba3958647e727c0cfe741 Mon Sep 17 00:00:00 2001 From: SalShuttlesworth <99446355+Salikc9@users.noreply.github.com> Date: Wed, 26 Jun 2024 11:11:26 -0400 Subject: [PATCH 16/31] Update README --- .../nft-challenge-factory-main/README | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/submissions/NFT Challenge Template/nft-challenge-factory-main/README b/submissions/NFT Challenge Template/nft-challenge-factory-main/README index 8b137891..2d1e96dc 100644 --- a/submissions/NFT Challenge Template/nft-challenge-factory-main/README +++ b/submissions/NFT Challenge Template/nft-challenge-factory-main/README @@ -1 +1,42 @@ +# nft-challenge-factory +A factory smart contract for creating NFT challenges, the factory keeps track of nft challenges it's created. Note, if you make any changes to the [challenge contract](https://github.com/TENAMINT/nft-challenge), you'll need to +get the compiled `target/wasm32-unknown-unknown/release/nft_challenge.wasm` file within the [challenge contract repo](https://github.com/TENAMINT/nft-challenge) after building and replace the existing `nft-challenge.wasm` file at `wasm/nft-challenge.wasm` location in this repo. Note you need to rename `nft_challenge.wasm` to `nft-challenge.wasm` as well. + +## Important: +The challenges generated will be at the account id `{ID_PREFIX}.{ID OF THIS FACTORY CONTRACT}` For example if I created a challenge with the id prefix of my-challenge, and the challenge factory contract was deployed at challenge-factory.testnet, then the challenge contract would be deployed at account `my-challenge.challenge-factory.testnet` + + +## How to Build Locally? + +Install [`cargo-near`](https://github.com/near/cargo-near) and run: + +```bash +cargo near build +``` + +## How to Test Locally? + +```bash +cargo test +``` + +## How to Deploy? + +Deployment is automated with GitHub Actions CI/CD pipeline. +To deploy manually, install [`cargo-near`](https://github.com/near/cargo-near) and run: + +```bash +cargo near deploy +``` + +## Useful Links + +- [cargo-near](https://github.com/near/cargo-near) - NEAR smart contract development toolkit for Rust +- [near CLI](https://near.cli.rs) - Iteract with NEAR blockchain from command line +- [NEAR Rust SDK Documentation](https://docs.near.org/sdk/rust/introduction) +- [NEAR Documentation](https://docs.near.org) +- [NEAR StackOverflow](https://stackoverflow.com/questions/tagged/nearprotocol) +- [NEAR Discord](https://near.chat) +- [NEAR Telegram Developers Community Group](https://t.me/neardev) +- NEAR DevHub: [Telegram](https://t.me/neardevhub), [Twitter](https://twitter.com/neardevhub) From d55ecf23ee7f8707049216863714975a91110c10 Mon Sep 17 00:00:00 2001 From: SalShuttlesworth <99446355+Salikc9@users.noreply.github.com> Date: Wed, 26 Jun 2024 11:12:22 -0400 Subject: [PATCH 17/31] Update README --- .../nft-challenge-main/README | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/submissions/NFT Challenge Template/nft-challenge-main/README b/submissions/NFT Challenge Template/nft-challenge-main/README index 8b137891..3152fb70 100644 --- a/submissions/NFT Challenge Template/nft-challenge-main/README +++ b/submissions/NFT Challenge Template/nft-challenge-main/README @@ -1 +1,43 @@ +# nft-challenge + +Smart contract for NFT challenges. NFT Challenges are ways to reward users NFTs(or even RWAs) for completing challenges, where challenge "components" are represented as NFTS they've collected. Once they collect all challenge piece NFTs, their eligible to complete the challenge and be marked as a winner! + +## Important: +If you plan on burning challenge NFTs on completion, make sure users who try to complete the challenge **give the challenge contract transfer approval for their challenge piece NFTs**, so that the challenge contract can burn them. +If you plan on minting the reward NFT through the challenge contract, ensure you make the **challenge contract a minter of the reward NFT contract**. + + +## How to Build Locally? + +Install [`cargo-near`](https://github.com/near/cargo-near) and run: + +```bash +cargo near build +``` + +## How to Test Locally? + +```bash +cargo test +``` + +## How to Deploy? + +Deployment is automated with GitHub Actions CI/CD pipeline. +To deploy manually, install [`cargo-near`](https://github.com/near/cargo-near) and run: + +```bash +cargo near deploy +``` + +## Useful Links + +- [cargo-near](https://github.com/near/cargo-near) - NEAR smart contract development toolkit for Rust +- [near CLI](https://near.cli.rs) - Iteract with NEAR blockchain from command line +- [NEAR Rust SDK Documentation](https://docs.near.org/sdk/rust/introduction) +- [NEAR Documentation](https://docs.near.org) +- [NEAR StackOverflow](https://stackoverflow.com/questions/tagged/nearprotocol) +- [NEAR Discord](https://near.chat) +- [NEAR Telegram Developers Community Group](https://t.me/neardev) +- NEAR DevHub: [Telegram](https://t.me/neardevhub), [Twitter](https://twitter.com/neardevhub) From cf7be219143a152067fa5ba9fa16e02f37967daa Mon Sep 17 00:00:00 2001 From: SalShuttlesworth <99446355+Salikc9@users.noreply.github.com> Date: Wed, 26 Jun 2024 11:13:21 -0400 Subject: [PATCH 18/31] Add files via upload --- .../nft-challenge-factory-main/README.md | 49 + .../components.json | 16 + .../next.config.mjs | 4 + .../nft-challenge-factory-main/package.json | 58 + .../postcss.config.mjs | 8 + .../tailwind.config.ts | 20 + .../nft-challenge-factory-main/tsconfig.json | 27 + .../nft-challenge-factory-main/yarn.lock | 5557 +++++++++++++++++ 8 files changed, 5739 insertions(+) create mode 100644 submissions/NFT Challenge Template/nft-challenge-factory-main/README.md create mode 100644 submissions/NFT Challenge Template/nft-challenge-factory-main/components.json create mode 100644 submissions/NFT Challenge Template/nft-challenge-factory-main/next.config.mjs create mode 100644 submissions/NFT Challenge Template/nft-challenge-factory-main/package.json create mode 100644 submissions/NFT Challenge Template/nft-challenge-factory-main/postcss.config.mjs create mode 100644 submissions/NFT Challenge Template/nft-challenge-factory-main/tailwind.config.ts create mode 100644 submissions/NFT Challenge Template/nft-challenge-factory-main/tsconfig.json create mode 100644 submissions/NFT Challenge Template/nft-challenge-factory-main/yarn.lock diff --git a/submissions/NFT Challenge Template/nft-challenge-factory-main/README.md b/submissions/NFT Challenge Template/nft-challenge-factory-main/README.md new file mode 100644 index 00000000..9567db10 --- /dev/null +++ b/submissions/NFT Challenge Template/nft-challenge-factory-main/README.md @@ -0,0 +1,49 @@ +# NFT Challenge Template + +Generate blockchain challenges that validate if users have all the challenge pieces! Capabilities include burning challenge pieces on completion, as well as minting a reward piece on completion. Users can also set an expiration date for their challenge, as well as set the maximum amount of winners for the challenge. + +[![Demo](https://img.shields.io/badge/Demo-Visit%20Demo-brightgreen)](https://nft-challenge-creator.vercel.app/) + + +## Important: +If you plan on burning challenge NFTs on completion, make sure users who try to complete the challenge **give the challenge contract transfer approval for their challenge piece NFTs**, so that the challenge contract can burn them. +If you plan on minting the reward NFT through the challenge contract, ensure you make the **challenge contract a minter of the reward NFT contract**. + + + +## Run the project + + yarn install + + yarn run dev + +Open [http://localhost:3000](http://localhost:3000) with your browser to see the result. + +We have set the environment variables necessary to get the template working on testnet right out of the box for you in the `env.example` file, simply rename it `env.local` and you'll be good to go! If you want to use the template on mainnet or have your own deployed challenge factory contract, change the environment variable values as desired. + +## Demo videos +[Demo Video Part 1](https://drive.google.com/file/d/1-bRR35WkdvPea_CV7A29NWSJ_wWAGqBn/view?usp=sharing) + + + +[Demo Video Part 2](https://drive.google.com/file/d/1oxsuym7PGw_IojSCQH6prk1IpT-r2dpW/view?usp=sharing) + +Below is an example of a test challenge which was created to illustrate this template: + +NFT Challenge Page: [https://nft-challenge-creator.vercel.app/challenges/tenamint-blackdragon1?transactionHashes=EpU3RWCnWTuXetECqdJQQ48XTBKGRUZZzrUjEziwNPBx](https://nft-challenge-creator.vercel.app/challenges/tenamint-blackdragon1?transactionHashes=EpU3RWCnWTuXetECqdJQQ48XTBKGRUZZzrUjEziwNPBx) + Challenge NFT 1: [[https://testnet.mintbase.xyz/contract/tmxbdxbaseball.mintspace2.testnet/nfts/all/0](https://testnet.mintbase.xyz/contract/tmxbdxbaseball.mintspace2.testnet/nfts/all/0)] + Challenge NFT 2: [[https://testnet.mintbase.xyz/contract/tmxbdxhockey.mintspace2.testnet/nfts/all/0](https://testnet.mintbase.xyz/contract/tmxbdxhockey.mintspace2.testnet/nfts/all/0)] + Challenge NFT 3: [[https://testnet.mintbase.xyz/contract/tmxbdxbasketball.mintspace2.testnet/nfts/all/0](https://testnet.mintbase.xyz/contract/tmxbdxbasketball.mintspace2.testnet/nfts/all/0)] + +Claim all 3 and then visit this link to complete the challenge claim your reward NFT: +[[https://nft-challenge-creator.vercel.app/challenges/tenamint-blackdragon1?transactionHashes=EpU3RWCnWTuXetECqdJQQ48XTBKGRUZZzrUjEziwNPBx](https://nft-challenge-creator.vercel.app/challenges/tenamint-blackdragon1?transactionHashes=EpU3RWCnWTuXetECqdJQQ48XTBKGRUZZzrUjEziwNPBx)] + +## Notes on Using V0 for AI generated components + +A lot of the components for this template uses components generated by [v0](https://v0.dev), an AI frontend component generator. Here's a list of components I generated for this project, you can play around with the prompts to modify the components. + +- [Choosing a reward NFT](https://v0.dev/t/VjZbaEsFCvv) +- [Choosing number of challenge nfts and current challenge info](https://v0.dev/r/2WXHinKdaFF) +- [Choosing termination details](https://v0.dev/r/gsYzCa15AWT) +- [Network Toggle](https://v0.dev/r/Tyu9vrlRBxZ) +- [NFT Challenge page](https://v0.dev/r/BRmDtqSddRR) diff --git a/submissions/NFT Challenge Template/nft-challenge-factory-main/components.json b/submissions/NFT Challenge Template/nft-challenge-factory-main/components.json new file mode 100644 index 00000000..dae32f96 --- /dev/null +++ b/submissions/NFT Challenge Template/nft-challenge-factory-main/components.json @@ -0,0 +1,16 @@ +{ + "$schema": "https://ui.shadcn.com/schema.json", + "style": "default", + "rsc": true, + "tsx": true, + "tailwind": { + "config": "tailwind.config.ts", + "css": "app/globals.css", + "baseColor": "gray", + "cssVariables": false + }, + "aliases": { + "utils": "@/lib/utils", + "components": "@/components" + } +} diff --git a/submissions/NFT Challenge Template/nft-challenge-factory-main/next.config.mjs b/submissions/NFT Challenge Template/nft-challenge-factory-main/next.config.mjs new file mode 100644 index 00000000..4678774e --- /dev/null +++ b/submissions/NFT Challenge Template/nft-challenge-factory-main/next.config.mjs @@ -0,0 +1,4 @@ +/** @type {import('next').NextConfig} */ +const nextConfig = {}; + +export default nextConfig; diff --git a/submissions/NFT Challenge Template/nft-challenge-factory-main/package.json b/submissions/NFT Challenge Template/nft-challenge-factory-main/package.json new file mode 100644 index 00000000..322debc4 --- /dev/null +++ b/submissions/NFT Challenge Template/nft-challenge-factory-main/package.json @@ -0,0 +1,58 @@ +{ + "name": "nft-challenge-creator", + "version": "0.1.0", + "private": true, + "scripts": { + "dev": "next dev", + "build": "next build", + "start": "next start", + "lint": "next lint" + }, + "dependencies": { + "@mintbase-js/data": "^0.6.0-beta.4", + "@mintbase-js/react": "^0.6.0-beta.5", + "@mintbase-js/sdk": "^0.6.0-beta.5", + "@mintbase-js/wallet": "^0.6.0-beta.5", + "@near-wallet-selector/core": "^8.9.7", + "@near-wallet-selector/meteor-wallet": "^8.9.7", + "@near-wallet-selector/my-near-wallet": "^8.9.7", + "@near-wallet-selector/near-wallet": "^8.9.3", + "@radix-ui/react-checkbox": "^1.0.4", + "@radix-ui/react-icons": "^1.3.0", + "@radix-ui/react-label": "^2.0.2", + "@radix-ui/react-popover": "^1.0.7", + "@radix-ui/react-select": "^2.0.0", + "@radix-ui/react-slot": "^1.0.2", + "@radix-ui/react-toggle": "^1.0.3", + "bignumber.js": "^9.1.2", + "class-variance-authority": "^0.7.0", + "clsx": "^2.1.1", + "date-fns": "^3.6.0", + "dotenv": "^16.4.5", + "embla-carousel-react": "^8.1.3", + "graphql": "^16.8.1", + "i": "^0.3.7", + "lodash": "^4.17.21", + "lucide-react": "^0.378.0", + "mongodb": "^6.6.2", + "near-api-js": "^4.0.1", + "next": "14.2.3", + "npm": "^10.8.0", + "react": "^18", + "react-day-picker": "^8.10.1", + "react-dom": "^18", + "tailwind-merge": "^2.3.0", + "tailwindcss-animate": "^1.0.7" + }, + "devDependencies": { + "@types/lodash": "^4.17.4", + "@types/node": "^20", + "@types/react": "^18", + "@types/react-dom": "^18", + "eslint": "^8", + "eslint-config-next": "14.2.3", + "postcss": "^8", + "tailwindcss": "^3.4.1", + "typescript": "^5" + } +} diff --git a/submissions/NFT Challenge Template/nft-challenge-factory-main/postcss.config.mjs b/submissions/NFT Challenge Template/nft-challenge-factory-main/postcss.config.mjs new file mode 100644 index 00000000..1a69fd2a --- /dev/null +++ b/submissions/NFT Challenge Template/nft-challenge-factory-main/postcss.config.mjs @@ -0,0 +1,8 @@ +/** @type {import('postcss-load-config').Config} */ +const config = { + plugins: { + tailwindcss: {}, + }, +}; + +export default config; diff --git a/submissions/NFT Challenge Template/nft-challenge-factory-main/tailwind.config.ts b/submissions/NFT Challenge Template/nft-challenge-factory-main/tailwind.config.ts new file mode 100644 index 00000000..16660ace --- /dev/null +++ b/submissions/NFT Challenge Template/nft-challenge-factory-main/tailwind.config.ts @@ -0,0 +1,20 @@ +import type { Config } from "tailwindcss"; + +const config: Config = { + content: [ + "./pages/**/*.{js,ts,jsx,tsx,mdx}", + "./components/**/*.{js,ts,jsx,tsx,mdx}", + "./app/**/*.{js,ts,jsx,tsx,mdx}", + ], + theme: { + extend: { + backgroundImage: { + "gradient-radial": "radial-gradient(var(--tw-gradient-stops))", + "gradient-conic": + "conic-gradient(from 180deg at 50% 50%, var(--tw-gradient-stops))", + }, + }, + }, + plugins: [require("tailwindcss-animate")], +}; +export default config; diff --git a/submissions/NFT Challenge Template/nft-challenge-factory-main/tsconfig.json b/submissions/NFT Challenge Template/nft-challenge-factory-main/tsconfig.json new file mode 100644 index 00000000..0c80f79e --- /dev/null +++ b/submissions/NFT Challenge Template/nft-challenge-factory-main/tsconfig.json @@ -0,0 +1,27 @@ +{ + "compilerOptions": { + "lib": ["dom", "dom.iterable", "esnext"], + "allowJs": true, + "skipLibCheck": true, + "strict": true, + "noEmit": true, + "esModuleInterop": true, + "module": "esnext", + "moduleResolution": "bundler", + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "preserve", + "incremental": true, + "target": "es2015", + "plugins": [ + { + "name": "next" + } + ], + "paths": { + "@/*": ["./*"] + } + }, + "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"], + "exclude": ["node_modules"] +} diff --git a/submissions/NFT Challenge Template/nft-challenge-factory-main/yarn.lock b/submissions/NFT Challenge Template/nft-challenge-factory-main/yarn.lock new file mode 100644 index 00000000..c4c41172 --- /dev/null +++ b/submissions/NFT Challenge Template/nft-challenge-factory-main/yarn.lock @@ -0,0 +1,5557 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@alloc/quick-lru@^5.2.0": + version "5.2.0" + resolved "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz" + integrity sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw== + +"@babel/runtime@^7.13.10", "@babel/runtime@^7.23.2", "@babel/runtime@^7.24.1": + version "7.24.5" + resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.5.tgz" + integrity sha512-Nms86NXrsaeU9vbBJKni6gXiEXZ4CVpYVzEjDH9Sb8vmZ3UljyA1GSOJl/6LGPO8EHLuSF9H+IxNXHPX8QHJ4g== + dependencies: + regenerator-runtime "^0.14.0" + +"@eslint-community/eslint-utils@^4.2.0": + version "4.4.0" + resolved "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz" + integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== + dependencies: + eslint-visitor-keys "^3.3.0" + +"@eslint-community/regexpp@^4.6.1": + version "4.10.0" + resolved "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz" + integrity sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA== + +"@eslint/eslintrc@^2.1.4": + version "2.1.4" + resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz" + integrity sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ== + dependencies: + ajv "^6.12.4" + debug "^4.3.2" + espree "^9.6.0" + globals "^13.19.0" + ignore "^5.2.0" + import-fresh "^3.2.1" + js-yaml "^4.1.0" + minimatch "^3.1.2" + strip-json-comments "^3.1.1" + +"@eslint/js@8.57.0": + version "8.57.0" + resolved "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz" + integrity sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g== + +"@floating-ui/core@^1.0.0": + version "1.6.1" + resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.6.1.tgz#a4e6fef1b069cda533cbc7a4998c083a37f37573" + integrity sha512-42UH54oPZHPdRHdw6BgoBD6cg/eVTmVrFcgeRDM3jbO7uxSoipVcmcIGFcA5jmOHO5apcyvBhkSKES3fQJnu7A== + dependencies: + "@floating-ui/utils" "^0.2.0" + +"@floating-ui/dom@^1.0.0": + version "1.6.5" + resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.6.5.tgz#323f065c003f1d3ecf0ff16d2c2c4d38979f4cb9" + integrity sha512-Nsdud2X65Dz+1RHjAIP0t8z5e2ff/IRbei6BqFrl1urT8sDVzM1HMQ+R0XcU5ceRfyO3I6ayeqIfh+6Wb8LGTw== + dependencies: + "@floating-ui/core" "^1.0.0" + "@floating-ui/utils" "^0.2.0" + +"@floating-ui/react-dom@^2.0.0": + version "2.0.9" + resolved "https://registry.yarnpkg.com/@floating-ui/react-dom/-/react-dom-2.0.9.tgz#264ba8b061000baa132b5910f0427a6acf7ad7ce" + integrity sha512-q0umO0+LQK4+p6aGyvzASqKbKOJcAHJ7ycE9CuUvfx3s9zTHWmGJTPOIlM/hmSBfUfg/XfY5YhLBLR/LHwShQQ== + dependencies: + "@floating-ui/dom" "^1.0.0" + +"@floating-ui/utils@^0.2.0": + version "0.2.2" + resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.2.2.tgz#d8bae93ac8b815b2bd7a98078cf91e2724ef11e5" + integrity sha512-J4yDIIthosAsRZ5CPYP/jQvUAQtlZTTD/4suA08/FEnlxqW3sKS9iAhgsa9VYLZ6vDHn/ixJgIqRQPotoBjxIw== + +"@graphql-typed-document-node/core@^3.1.1": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@graphql-typed-document-node/core/-/core-3.2.0.tgz#5f3d96ec6b2354ad6d8a28bf216a1d97b5426861" + integrity sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ== + +"@here-wallet/core@1.5.1": + version "1.5.1" + resolved "https://registry.yarnpkg.com/@here-wallet/core/-/core-1.5.1.tgz#618db9de547bfaed5229100002357663fcee5d77" + integrity sha512-gCzB27k0QfviyJQUhxqX3kAH3g3mRHb6B5RJdUhX9tTsLlPW6AMV/PJiYBudPCt0EeyeyU4i8kEh223ACHXOjw== + dependencies: + sha1 "^1.1.1" + uuid4 "2.0.3" + +"@humanwhocodes/config-array@^0.11.14": + version "0.11.14" + resolved "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz" + integrity sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg== + dependencies: + "@humanwhocodes/object-schema" "^2.0.2" + debug "^4.3.1" + minimatch "^3.0.5" + +"@humanwhocodes/module-importer@^1.0.1": + version "1.0.1" + resolved "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz" + integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== + +"@humanwhocodes/object-schema@^2.0.2": + version "2.0.3" + resolved "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz" + integrity sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA== + +"@isaacs/cliui@^8.0.2": + version "8.0.2" + resolved "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz" + integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== + dependencies: + string-width "^5.1.2" + string-width-cjs "npm:string-width@^4.2.0" + strip-ansi "^7.0.1" + strip-ansi-cjs "npm:strip-ansi@^6.0.1" + wrap-ansi "^8.1.0" + wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" + +"@isaacs/string-locale-compare@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@isaacs/string-locale-compare/-/string-locale-compare-1.1.0.tgz#291c227e93fd407a96ecd59879a35809120e432b" + integrity sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ== + +"@jridgewell/gen-mapping@^0.3.2": + version "0.3.5" + resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz" + integrity sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg== + dependencies: + "@jridgewell/set-array" "^1.2.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.24" + +"@jridgewell/resolve-uri@^3.1.0": + version "3.1.2" + resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz" + integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== + +"@jridgewell/set-array@^1.2.1": + version "1.2.1" + resolved "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz" + integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A== + +"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14": + version "1.4.15" + resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz" + integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== + +"@jridgewell/trace-mapping@^0.3.24": + version "0.3.25" + resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz" + integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== + dependencies: + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" + +"@meteorwallet/sdk@1.0.9": + version "1.0.9" + resolved "https://registry.yarnpkg.com/@meteorwallet/sdk/-/sdk-1.0.9.tgz#d10d41ca81a81673379ba43a9ddf2d23b1b4503a" + integrity sha512-frJM+rwmx18MCVsfHn0O8oaJfB41BqaXW6cyhZ3EtMw3b87DUJyfSuJi9K0HQl7oGG0+wvMZOKRBVVcMiZzoDg== + dependencies: + borsh "^0.7.0" + nanoid "3.3.6" + query-string "^7.1.3" + +"@mintbase-js/data@^0.6.0-beta.4": + version "0.6.0-beta.4" + resolved "https://registry.yarnpkg.com/@mintbase-js/data/-/data-0.6.0-beta.4.tgz#cd294ffe38b8ba3fb113d595b2539a851e49770b" + integrity sha512-C1q9qrRjc5o8sGfbgP6NaskGIW61kPiCLSni2nbKlzZNSgo4ZRK0ri8o1pZmmM0ZyMJ6AOgbhTWb2YZ+U0byEQ== + dependencies: + "@mintbase-js/sdk" "^0.5.2-beta.0" + cross-fetch "^4.0.0" + graphql-request "^5.2.0" + +"@mintbase-js/react@^0.6.0-beta.5": + version "0.6.0-beta.5" + resolved "https://registry.yarnpkg.com/@mintbase-js/react/-/react-0.6.0-beta.5.tgz#138af1ecbc305746f77dedde95084bafb30e1ef5" + integrity sha512-i+3ln2nJQ3WG5805oS7ZO5pgixWwbb9PWRxGwagy7A4HY5+I0yZ8sTquQTgI48lCtZAcphj2wDnAeC67S/9ImQ== + dependencies: + "@mintbase-js/wallet" "0.6.0-beta.3" + "@near-wallet-selector/core" "8.9.3" + "@near-wallet-selector/here-wallet" "8.9.3" + "@near-wallet-selector/meteor-wallet" "8.9.3" + "@near-wallet-selector/modal-ui" "8.9.3" + "@near-wallet-selector/my-near-wallet" "8.9.3" + react "^18.2.0" + react-dom "^18.2.0" + +"@mintbase-js/sdk@^0.5.2-beta.0": + version "0.5.2-v0.5.3-beta.0-94da14c.0" + resolved "https://registry.yarnpkg.com/@mintbase-js/sdk/-/sdk-0.5.2-v0.5.3-beta.0-94da14c.0.tgz#23adb1f0e6ede1119416335e559edd682a37e392" + integrity sha512-PIdw9buRyxGre1UqBJAq0gHssz4YrLo2kzeYnsqYC0htktFLfjXaPuv4/NF7aEqINpXo9LFz1MTaFaFxC0eIzA== + dependencies: + bn.js "5.2.1" + near-api-js "^2.1.4" + +"@mintbase-js/sdk@^0.6.0-beta.5": + version "0.6.0-beta.5" + resolved "https://registry.yarnpkg.com/@mintbase-js/sdk/-/sdk-0.6.0-beta.5.tgz#4f6baf607387e562871c083014cfc8dd0c549993" + integrity sha512-0wKHY87p8kntcuiOjJI+vi6ibvDMFRQwTP5qdL3vhdXTHp9NBAv99u2fPsOenNF6QxdKPXRZkhyGWEEHGRVDsw== + dependencies: + bn.js "5.2.1" + near-api-js "^2.1.4" + +"@mintbase-js/wallet@0.6.0-beta.3": + version "0.6.0-beta.3" + resolved "https://registry.yarnpkg.com/@mintbase-js/wallet/-/wallet-0.6.0-beta.3.tgz#31ee107f2cf888fa120e8ca07f47e5dcd278ca26" + integrity sha512-fzkqS3LDnSHB4YG0ync8JRuv+xQlMOzcu0btpAN8SC1hZNGUak0BTXBiNxKZQTeuH/DL+6ghh+t9VzJknOorhA== + dependencies: + "@near-wallet-selector/core" "8.9.5" + "@near-wallet-selector/wallet-utils" "^8.9.5" + bn.js "^5.2.1" + near-api-js "^2.1.3" + +"@mintbase-js/wallet@^0.6.0-beta.5": + version "0.6.0-beta.5" + resolved "https://registry.yarnpkg.com/@mintbase-js/wallet/-/wallet-0.6.0-beta.5.tgz#5014af83a1a0eb8b45e282c1019b97fbbba616b0" + integrity sha512-CRF512T6uMlpVvAwBULDefPeQTtX/ruhEm3bJWSIlWurdUaPyJ3JajJ7IPlQNaxMmPu5Jrn0/k9ke5+ZjViPpg== + dependencies: + "@near-wallet-selector/core" "8.9.5" + "@near-wallet-selector/wallet-utils" "^8.9.5" + bn.js "^5.2.1" + near-api-js "^2.1.3" + +"@mongodb-js/saslprep@^1.1.5": + version "1.1.7" + resolved "https://registry.yarnpkg.com/@mongodb-js/saslprep/-/saslprep-1.1.7.tgz#d1700facfd6916c50c2c88fd6d48d363a56c702f" + integrity sha512-dCHW/oEX0KJ4NjDULBo3JiOaK5+6axtpBbS+ao2ZInoAL9/YRQLhXzSNAFz7hP4nzLkIqsfYAK/PDE3+XHny0Q== + dependencies: + sparse-bitfield "^3.0.3" + +"@near-js/accounts@0.1.4": + version "0.1.4" + resolved "https://registry.yarnpkg.com/@near-js/accounts/-/accounts-0.1.4.tgz#ff557dc65c5064ee4ac2dbfdd39aa3e35ae4d222" + integrity sha512-zHFmL4OUZ4qHXOE+dDBkYgTNHLWC5RmYUVp9LiuGciO5zFPp7WlxmowJL0QjgXqV1w+dNXq3mgmkfAgYVS8Xjw== + dependencies: + "@near-js/crypto" "0.0.5" + "@near-js/providers" "0.0.7" + "@near-js/signers" "0.0.5" + "@near-js/transactions" "0.2.1" + "@near-js/types" "0.0.4" + "@near-js/utils" "0.0.4" + ajv "^8.11.2" + ajv-formats "^2.1.1" + bn.js "5.2.1" + borsh "^0.7.0" + depd "^2.0.0" + near-abi "0.1.1" + +"@near-js/accounts@1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@near-js/accounts/-/accounts-1.2.0.tgz#d0ffe0ddd976c04b0f27122d4bd737202fb82747" + integrity sha512-0D/Tl7i2rqqVydGwu9zWBFOk6P7t4Zs2Gfo7l+8jNjOoioYsH/YCWaOheoH7SVu4wQ3xP9YEyjvZ8JL6xzYyHA== + dependencies: + "@near-js/crypto" "1.2.3" + "@near-js/providers" "0.2.1" + "@near-js/signers" "0.1.3" + "@near-js/transactions" "1.2.1" + "@near-js/types" "0.2.0" + "@near-js/utils" "0.2.1" + borsh "1.0.0" + depd "2.0.0" + is-my-json-valid "^2.20.6" + lru_map "0.4.1" + near-abi "0.1.1" + +"@near-js/crypto@0.0.5": + version "0.0.5" + resolved "https://registry.yarnpkg.com/@near-js/crypto/-/crypto-0.0.5.tgz#3191cdc8dcdba572bdead482b5d38f364bdcc2a0" + integrity sha512-nbQ971iYES5Spiolt+p568gNuZ//HeMHm3qqT3xT+i8ZzgbC//l6oRf48SUVTPAboQ1TJ5dW/NqcxOY0pe7b4g== + dependencies: + "@near-js/types" "0.0.4" + bn.js "5.2.1" + borsh "^0.7.0" + tweetnacl "^1.0.1" + +"@near-js/crypto@1.2.3": + version "1.2.3" + resolved "https://registry.yarnpkg.com/@near-js/crypto/-/crypto-1.2.3.tgz#ba318d77b9eed79ef92a86f7a2c84562cb2f6b9d" + integrity sha512-BuNE+tdcxwImxktFtuAxLiVejFDtn1X92kejcDcYc6f7e0ku9yMntdw98LMb+5ls+xlRuF1UDoi/hUF1LPVpyQ== + dependencies: + "@near-js/types" "0.2.0" + "@near-js/utils" "0.2.1" + "@noble/curves" "1.2.0" + borsh "1.0.0" + randombytes "2.1.0" + +"@near-js/keystores-browser@0.0.11": + version "0.0.11" + resolved "https://registry.yarnpkg.com/@near-js/keystores-browser/-/keystores-browser-0.0.11.tgz#dc0dab662fb2045f978fe1c725f03f0fd11f8267" + integrity sha512-AQ86ST+keKjM5iektKLXu3q94lN8pG6R/LXVoIgm5/hi63n2QzhAd0XlUj9fcyPrfoGOckwUu6pFtXPbveBypw== + dependencies: + "@near-js/crypto" "1.2.3" + "@near-js/keystores" "0.0.11" + +"@near-js/keystores-browser@0.0.5": + version "0.0.5" + resolved "https://registry.yarnpkg.com/@near-js/keystores-browser/-/keystores-browser-0.0.5.tgz#7e94181ca5c4fbad8b8e67cda16888b4ccafae61" + integrity sha512-mHF3Vcvsr7xnkaM/reOyxtykbE3OWKV6vQzqyTH2tZYT2OTEnj0KhRT9BCFC0Ra67K1zQLbg49Yc/kDCc5qupA== + dependencies: + "@near-js/crypto" "0.0.5" + "@near-js/keystores" "0.0.5" + +"@near-js/keystores-node@0.0.11": + version "0.0.11" + resolved "https://registry.yarnpkg.com/@near-js/keystores-node/-/keystores-node-0.0.11.tgz#b711c6fc0451d4115936734690e08de51e440ef4" + integrity sha512-KeBl7oL8AwUwTilYPV3apEcL1P+UMAGJQvmkEFl9lyK7mftyjogehdqjqFREAdQpR+4jX5NXvU8ZJIShebK3ZA== + dependencies: + "@near-js/crypto" "1.2.3" + "@near-js/keystores" "0.0.11" + +"@near-js/keystores-node@0.0.5": + version "0.0.5" + resolved "https://registry.yarnpkg.com/@near-js/keystores-node/-/keystores-node-0.0.5.tgz#f474dabbb84590896dd8861bb33a7304580e0d99" + integrity sha512-BYmWyGNydfAqi7eYA1Jo8zULL13cxejD2VBr0BBIXx5bJ+BO4TLecsY1xdTBEq06jyWXHa7kV4h8BJzAjvpTLg== + dependencies: + "@near-js/crypto" "0.0.5" + "@near-js/keystores" "0.0.5" + +"@near-js/keystores@0.0.11": + version "0.0.11" + resolved "https://registry.yarnpkg.com/@near-js/keystores/-/keystores-0.0.11.tgz#570c70c4c5bb6ba64a94b8bff4cc71cc23265aec" + integrity sha512-B/VkSNIT8vxMozDbK9O54YQGa4JT/rFnB0W+0cN3na38sQHdvzK015X2RHK8mfS0isP/iIT9QzIQtYZcI3M83Q== + dependencies: + "@near-js/crypto" "1.2.3" + "@near-js/types" "0.2.0" + +"@near-js/keystores@0.0.5": + version "0.0.5" + resolved "https://registry.yarnpkg.com/@near-js/keystores/-/keystores-0.0.5.tgz#44ec009b23c552809b6f9bc9a83632f79de4112b" + integrity sha512-kxqV+gw/3L8/axe9prhlU+M0hfybkxX54xfI0EEpWP2QiUV+qw+jkKolYIbdk5tdEZrGf9jHawh1yFtwP7APPQ== + dependencies: + "@near-js/crypto" "0.0.5" + "@near-js/types" "0.0.4" + +"@near-js/providers@0.0.7": + version "0.0.7" + resolved "https://registry.yarnpkg.com/@near-js/providers/-/providers-0.0.7.tgz#b2189e5d14d1afb1798c91c59e6dfb9bb476f46b" + integrity sha512-qj16Ey+vSw7lHE85xW+ykYJoLPr4A6Q/TsfpwhJLS6zBInSC6sKVqPO1L8bK4VA/yB7V7JJPor9UVCWgRXdNEA== + dependencies: + "@near-js/transactions" "0.2.1" + "@near-js/types" "0.0.4" + "@near-js/utils" "0.0.4" + bn.js "5.2.1" + borsh "^0.7.0" + http-errors "^1.7.2" + optionalDependencies: + node-fetch "^2.6.1" + +"@near-js/providers@0.2.1": + version "0.2.1" + resolved "https://registry.yarnpkg.com/@near-js/providers/-/providers-0.2.1.tgz#1d195638b07fd542e202a61dd8c571034ec7cd62" + integrity sha512-F5ZVlXynGopg3BjK3ihyA28tnOk/cM7kUhc/bw5aJg+m+oa1yuBkaAp9JbihagbLZpWOZiDJmkrdkpvTvQlHag== + dependencies: + "@near-js/transactions" "1.2.1" + "@near-js/types" "0.2.0" + "@near-js/utils" "0.2.1" + borsh "1.0.0" + http-errors "1.7.2" + optionalDependencies: + node-fetch "2.6.7" + +"@near-js/signers@0.0.5": + version "0.0.5" + resolved "https://registry.yarnpkg.com/@near-js/signers/-/signers-0.0.5.tgz#f3f946440314bf039dd32154928163ceaec8bedb" + integrity sha512-XJjYYatehxHakHa7WAoiQ8uIBSWBR2EnO4GzlIe8qpWL+LoH4t68MSezC1HwT546y9YHIvePjwDrBeYk8mg20w== + dependencies: + "@near-js/crypto" "0.0.5" + "@near-js/keystores" "0.0.5" + js-sha256 "^0.9.0" + +"@near-js/signers@0.1.3": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@near-js/signers/-/signers-0.1.3.tgz#7ac9c630536457c3cd94c4faf901b7033a76b6bc" + integrity sha512-Eim6ZsQUgsaSzi+oyR9cQesOO2QcZmhK+tawZan1vni8y+JvKnSH6r3krzbtvKWqIlx/kJ+PsIV74YIxPY5Uhw== + dependencies: + "@near-js/crypto" "1.2.3" + "@near-js/keystores" "0.0.11" + "@noble/hashes" "1.3.3" + +"@near-js/transactions@0.2.1": + version "0.2.1" + resolved "https://registry.yarnpkg.com/@near-js/transactions/-/transactions-0.2.1.tgz#ab6d246e94e6f64b4e5a651fe6e9de03dd573521" + integrity sha512-V9tXzkICDPruSxihKXkBhUgsI4uvW7TwXlnZS2GZpPsFFiIUeGrso0wo4uiQwB6miFA5q6fKaAtQa4F2v1s+zg== + dependencies: + "@near-js/crypto" "0.0.5" + "@near-js/signers" "0.0.5" + "@near-js/types" "0.0.4" + "@near-js/utils" "0.0.4" + bn.js "5.2.1" + borsh "^0.7.0" + js-sha256 "^0.9.0" + +"@near-js/transactions@1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@near-js/transactions/-/transactions-1.2.1.tgz#f9a304cd2a35f292557c3764473127b231c06892" + integrity sha512-w2EXgTRXJ+Zxqh8lVnQuRnpCEm6Cq7NxqAcfH6x0BPuSXye5kR9d0n2ut8AGkSXWeooKKEUnDhi6UcXadfoerg== + dependencies: + "@near-js/crypto" "1.2.3" + "@near-js/signers" "0.1.3" + "@near-js/types" "0.2.0" + "@near-js/utils" "0.2.1" + "@noble/hashes" "1.3.3" + borsh "1.0.0" + +"@near-js/types@0.0.4": + version "0.0.4" + resolved "https://registry.yarnpkg.com/@near-js/types/-/types-0.0.4.tgz#d941689df41c850aeeeaeb9d498418acec515404" + integrity sha512-8TTMbLMnmyG06R5YKWuS/qFG1tOA3/9lX4NgBqQPsvaWmDsa+D+QwOkrEHDegped0ZHQwcjAXjKML1S1TyGYKg== + dependencies: + bn.js "5.2.1" + +"@near-js/types@0.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/@near-js/types/-/types-0.2.0.tgz#5370c3e9230103222b2827dbd6370f03c4e996d1" + integrity sha512-pTahjni0+PzStseFtnnI9nqmh+ZrHqBqeERo3B3OCXUC/qEie0ZSBMSMt80SgqnaGAy5/CqkCLO9zOx1gA8Cwg== + +"@near-js/utils@0.0.4": + version "0.0.4" + resolved "https://registry.yarnpkg.com/@near-js/utils/-/utils-0.0.4.tgz#1a387f81974ebbfa4521c92590232be97e3335dd" + integrity sha512-mPUEPJbTCMicGitjEGvQqOe8AS7O4KkRCxqd0xuE/X6gXF1jz1pYMZn4lNUeUz2C84YnVSGLAM0o9zcN6Y4hiA== + dependencies: + "@near-js/types" "0.0.4" + bn.js "5.2.1" + depd "^2.0.0" + mustache "^4.0.0" + +"@near-js/utils@0.2.1": + version "0.2.1" + resolved "https://registry.yarnpkg.com/@near-js/utils/-/utils-0.2.1.tgz#6798cf8c3a6ed8057da002401e24409c49454a82" + integrity sha512-u7yR1fmxIcYoiITR1spTvqciXbMXNvlrmRcneNt9DWeQP7yPdbCQtRB7lMN2KI7ONkUf3U7xiheQDDmk2vFI0w== + dependencies: + "@near-js/types" "0.2.0" + bs58 "4.0.0" + depd "2.0.0" + mustache "4.0.0" + +"@near-js/wallet-account@0.0.7": + version "0.0.7" + resolved "https://registry.yarnpkg.com/@near-js/wallet-account/-/wallet-account-0.0.7.tgz#efa6738114171b2a6e40e8b35a8194b7cf86c11e" + integrity sha512-tmRyieG/wHmuNkg/WGFyKD6iH6atHPbY0rZ5OjOIiteuhZEPgp+z8OBpiQ4qumTa63q46aj/QVSQL0J3+JmBfw== + dependencies: + "@near-js/accounts" "0.1.4" + "@near-js/crypto" "0.0.5" + "@near-js/keystores" "0.0.5" + "@near-js/signers" "0.0.5" + "@near-js/transactions" "0.2.1" + "@near-js/types" "0.0.4" + "@near-js/utils" "0.0.4" + bn.js "5.2.1" + borsh "^0.7.0" + +"@near-js/wallet-account@1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@near-js/wallet-account/-/wallet-account-1.2.1.tgz#f94ebd9c0e58e437045e17467c283d692c3ad6e4" + integrity sha512-T1k15LN9YIgz1Ca3u76GFxtyDSSKNeBTqEKOJZiOMPse9HjXeiI/ycrOVzmEG/a+ZJ5tipQwcDDChUsY4nTQ1w== + dependencies: + "@near-js/accounts" "1.2.0" + "@near-js/crypto" "1.2.3" + "@near-js/keystores" "0.0.11" + "@near-js/providers" "0.2.1" + "@near-js/signers" "0.1.3" + "@near-js/transactions" "1.2.1" + "@near-js/types" "0.2.0" + "@near-js/utils" "0.2.1" + borsh "1.0.0" + +"@near-wallet-selector/core@8.9.3": + version "8.9.3" + resolved "https://registry.yarnpkg.com/@near-wallet-selector/core/-/core-8.9.3.tgz#ac15ef869da4762d8337552a9f63b9b3a76245ed" + integrity sha512-Mjmos4ska8eHwU/tGiWdAY+hHrFRSIpsmLYEfWuO/Uh1bWbJVueyKI7OGxbyWEOL1GJw1J5rx+MzXRS+U3fJow== + dependencies: + borsh "0.7.0" + events "3.3.0" + js-sha256 "0.9.0" + rxjs "7.8.1" + +"@near-wallet-selector/core@8.9.5": + version "8.9.5" + resolved "https://registry.yarnpkg.com/@near-wallet-selector/core/-/core-8.9.5.tgz#15e49f17252ee4e54a1c9719b8c2b98fd71aae74" + integrity sha512-wJiCL8M7z6tkNMY5H4n63/SZCmlW0Z15H6R1biWgpRuMDlVjhQOzxrmQggb1jbK4nYkzXyARNKyPh2gcRUuS+w== + dependencies: + borsh "0.7.0" + events "3.3.0" + js-sha256 "0.9.0" + rxjs "7.8.1" + +"@near-wallet-selector/core@8.9.7", "@near-wallet-selector/core@^8.9.7": + version "8.9.7" + resolved "https://registry.yarnpkg.com/@near-wallet-selector/core/-/core-8.9.7.tgz#d55cb97b8d4932f1bd786805c3365205cd084b61" + integrity sha512-WFAtNrA/w7gnobKmHGEqV4r/RtDM1QTf33TF0Kaf/1nK5jBNNyoYldyAPnbP08t1S+IbbVJ9NcWW3P7hdXe4Lg== + dependencies: + borsh "0.7.0" + events "3.3.0" + js-sha256 "0.9.0" + rxjs "7.8.1" + +"@near-wallet-selector/here-wallet@8.9.3": + version "8.9.3" + resolved "https://registry.yarnpkg.com/@near-wallet-selector/here-wallet/-/here-wallet-8.9.3.tgz#9879a78be88c208189822ce71310e45989745b5c" + integrity sha512-y7vLNuzIkMWZSRcj0v7Ass2IVAEE2GFlpTc1MjrwXdJ0IL1SDLGntGk2A9dQ+0Iu9kACSmacyRUBXIggZV6NpA== + dependencies: + "@here-wallet/core" "1.5.1" + "@near-wallet-selector/core" "8.9.3" + bn.js "5.2.1" + +"@near-wallet-selector/meteor-wallet@8.9.3": + version "8.9.3" + resolved "https://registry.yarnpkg.com/@near-wallet-selector/meteor-wallet/-/meteor-wallet-8.9.3.tgz#46ab036c70fdab9519f43f7018ae1da38c85107b" + integrity sha512-mYfDJ9U5MSxy8LQj6JZTD6XT4NaLqzz9+8BGT1/QW7wGEMCODL6WJJBT7nPDnnXxWT6BtiBaoGJcnMEhV43GSQ== + dependencies: + "@meteorwallet/sdk" "1.0.9" + "@near-wallet-selector/core" "8.9.3" + +"@near-wallet-selector/meteor-wallet@^8.9.7": + version "8.9.7" + resolved "https://registry.yarnpkg.com/@near-wallet-selector/meteor-wallet/-/meteor-wallet-8.9.7.tgz#ff3266e40cff5db3ef1df5860182a06ff1167149" + integrity sha512-8jWhUZAj1YTMeHYUnDkB00BdF7x+awDbb4bFSMcOFsqGuhp6qvAIp/Uo57kF11bntrb3Xrj8NNpsEhvC+Tx1EA== + dependencies: + "@meteorwallet/sdk" "1.0.9" + "@near-wallet-selector/core" "8.9.7" + +"@near-wallet-selector/modal-ui@8.9.3": + version "8.9.3" + resolved "https://registry.yarnpkg.com/@near-wallet-selector/modal-ui/-/modal-ui-8.9.3.tgz#eb0a52ca411828c67e40d03dcf069c60d69c9b59" + integrity sha512-jxRssW9trlqqvK9dde7Nx0hfPMOjoO+RGmFTY1V3+yth1k1pHNC67lXM49WuNTrDqiyXcI/SvkDq/5mPMbUx6Q== + dependencies: + "@near-wallet-selector/core" "8.9.3" + copy-to-clipboard "3.3.3" + qrcode "1.5.3" + react "18.2.0" + react-dom "18.2.0" + +"@near-wallet-selector/my-near-wallet@8.9.3": + version "8.9.3" + resolved "https://registry.yarnpkg.com/@near-wallet-selector/my-near-wallet/-/my-near-wallet-8.9.3.tgz#0b6c04541610a9826d1fe9c09ac33ec1b48ab789" + integrity sha512-26TsvJ8YxqFqD21tSrj/f9qIPNxHYPU+YFEvbnAGcZL3VV/+BTbyIM8OnFP5H3KdtW0Wcc33PDoDyeidEqdTvQ== + dependencies: + "@near-wallet-selector/core" "8.9.3" + "@near-wallet-selector/wallet-utils" "8.9.3" + +"@near-wallet-selector/my-near-wallet@^8.9.7": + version "8.9.7" + resolved "https://registry.yarnpkg.com/@near-wallet-selector/my-near-wallet/-/my-near-wallet-8.9.7.tgz#0107e51010339a1bf0f6e6b5b1a8844f1b3140db" + integrity sha512-bAoVTWxRyU1km8v7e6yjUgnPVZ9QpcM+lAl9oQWc1mEh0Jz+97PCymgBJH5NamGopmFfcaE1yGIri5ra9SWuyA== + dependencies: + "@near-wallet-selector/core" "8.9.7" + "@near-wallet-selector/wallet-utils" "8.9.7" + +"@near-wallet-selector/near-wallet@^8.9.3": + version "8.9.3" + resolved "https://registry.yarnpkg.com/@near-wallet-selector/near-wallet/-/near-wallet-8.9.3.tgz#3a808d6ad000053e2bc5f6de4057611f3ba850c1" + integrity sha512-1eVCoJ0L+DjmlinTKe664cXHDZbV+r5BE1sCxJvSlcYCIw8HKXZfllmEXAKDONHsC+2MdSifWeBnX9cuQAuqeQ== + dependencies: + "@near-wallet-selector/core" "8.9.3" + "@near-wallet-selector/my-near-wallet" "8.9.3" + +"@near-wallet-selector/wallet-utils@8.9.3": + version "8.9.3" + resolved "https://registry.yarnpkg.com/@near-wallet-selector/wallet-utils/-/wallet-utils-8.9.3.tgz#3b043d063d41dddd419bfe6431f7f2326c97a848" + integrity sha512-CGAM1Ocz+nUI03rxSTNnHHx9K8gvqFrCI63Y1yIUNSI/EyRXJKvWUJCyGMBCjzEqcL5fh0qMzcGm9ThSgXOwOA== + dependencies: + "@near-wallet-selector/core" "8.9.3" + bn.js "5.2.1" + +"@near-wallet-selector/wallet-utils@8.9.7", "@near-wallet-selector/wallet-utils@^8.9.5": + version "8.9.7" + resolved "https://registry.yarnpkg.com/@near-wallet-selector/wallet-utils/-/wallet-utils-8.9.7.tgz#8a0d8f611820301a758ebb5321ba83b4812f42e9" + integrity sha512-hVNF8z2EK8FPMaH2V2RIpJRT3CSIo8Epq6ysRRHVPFCXnqDjHfTWe39WYi4uAZldeCMCLQeRm5y8YL5QiAL3ig== + dependencies: + "@near-wallet-selector/core" "8.9.7" + bn.js "5.2.1" + +"@next/env@14.2.3": + version "14.2.3" + resolved "https://registry.npmjs.org/@next/env/-/env-14.2.3.tgz" + integrity sha512-W7fd7IbkfmeeY2gXrzJYDx8D2lWKbVoTIj1o1ScPHNzvp30s1AuoEFSdr39bC5sjxJaxTtq3OTCZboNp0lNWHA== + +"@next/eslint-plugin-next@14.2.3": + version "14.2.3" + resolved "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-14.2.3.tgz" + integrity sha512-L3oDricIIjgj1AVnRdRor21gI7mShlSwU/1ZGHmqM3LzHhXXhdkrfeNY5zif25Bi5Dd7fiJHsbhoZCHfXYvlAw== + dependencies: + glob "10.3.10" + +"@next/swc-darwin-arm64@14.2.3": + version "14.2.3" + resolved "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.3.tgz" + integrity sha512-3pEYo/RaGqPP0YzwnlmPN2puaF2WMLM3apt5jLW2fFdXD9+pqcoTzRk+iZsf8ta7+quAe4Q6Ms0nR0SFGFdS1A== + +"@next/swc-darwin-x64@14.2.3": + version "14.2.3" + resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.3.tgz#a3f8af05b5f9a52ac3082e66ac29e125ab1d7b9c" + integrity sha512-6adp7waE6P1TYFSXpY366xwsOnEXM+y1kgRpjSRVI2CBDOcbRjsJ67Z6EgKIqWIue52d2q/Mx8g9MszARj8IEA== + +"@next/swc-linux-arm64-gnu@14.2.3": + version "14.2.3" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.3.tgz#4e63f43879285b52554bfd39e6e0cc78a9b27bbf" + integrity sha512-cuzCE/1G0ZSnTAHJPUT1rPgQx1w5tzSX7POXSLaS7w2nIUJUD+e25QoXD/hMfxbsT9rslEXugWypJMILBj/QsA== + +"@next/swc-linux-arm64-musl@14.2.3": + version "14.2.3" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.3.tgz#ebdaed26214448b1e6f2c3e8b3cd29bfba387990" + integrity sha512-0D4/oMM2Y9Ta3nGuCcQN8jjJjmDPYpHX9OJzqk42NZGJocU2MqhBq5tWkJrUQOQY9N+In9xOdymzapM09GeiZw== + +"@next/swc-linux-x64-gnu@14.2.3": + version "14.2.3" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.3.tgz#19e3bcc137c3b582a1ab867106817e5c90a20593" + integrity sha512-ENPiNnBNDInBLyUU5ii8PMQh+4XLr4pG51tOp6aJ9xqFQ2iRI6IH0Ds2yJkAzNV1CfyagcyzPfROMViS2wOZ9w== + +"@next/swc-linux-x64-musl@14.2.3": + version "14.2.3" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.3.tgz#794a539b98e064169cf0ff7741b2a4fb16adec7d" + integrity sha512-BTAbq0LnCbF5MtoM7I/9UeUu/8ZBY0i8SFjUMCbPDOLv+un67e2JgyN4pmgfXBwy/I+RHu8q+k+MCkDN6P9ViQ== + +"@next/swc-win32-arm64-msvc@14.2.3": + version "14.2.3" + resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.3.tgz#eda9fa0fbf1ff9113e87ac2668ee67ce9e5add5a" + integrity sha512-AEHIw/dhAMLNFJFJIJIyOFDzrzI5bAjI9J26gbO5xhAKHYTZ9Or04BesFPXiAYXDNdrwTP2dQceYA4dL1geu8A== + +"@next/swc-win32-ia32-msvc@14.2.3": + version "14.2.3" + resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.3.tgz#7c1190e3f640ab16580c6bdbd7d0e766b9920457" + integrity sha512-vga40n1q6aYb0CLrM+eEmisfKCR45ixQYXuBXxOOmmoV8sYST9k7E3US32FsY+CkkF7NtzdcebiFT4CHuMSyZw== + +"@next/swc-win32-x64-msvc@14.2.3": + version "14.2.3" + resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.3.tgz#2be4e39ee25bfbd85be78eea17c0e7751dc4323c" + integrity sha512-Q1/zm43RWynxrO7lW4ehciQVj+5ePBhOK+/K2P7pLFX3JaJ/IZVC69SHidrmZSOkqz7ECIOhhy7XhAFG4JYyHA== + +"@noble/curves@1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.2.0.tgz#92d7e12e4e49b23105a2555c6984d41733d65c35" + integrity sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw== + dependencies: + "@noble/hashes" "1.3.2" + +"@noble/hashes@1.3.2": + version "1.3.2" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.2.tgz#6f26dbc8fbc7205873ce3cee2f690eba0d421b39" + integrity sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ== + +"@noble/hashes@1.3.3": + version "1.3.3" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.3.tgz#39908da56a4adc270147bb07968bf3b16cfe1699" + integrity sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA== + +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + +"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": + version "1.2.8" + resolved "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + +"@npmcli/agent@^2.0.0": + version "2.2.2" + resolved "https://registry.yarnpkg.com/@npmcli/agent/-/agent-2.2.2.tgz#967604918e62f620a648c7975461c9c9e74fc5d5" + integrity sha512-OrcNPXdpSl9UX7qPVRWbmWMCSXrcDa2M9DvrbOTj7ao1S4PlqVFYv9/yLKMkrJKZ/V5A/kDBC690or307i26Og== + dependencies: + agent-base "^7.1.0" + http-proxy-agent "^7.0.0" + https-proxy-agent "^7.0.1" + lru-cache "^10.0.1" + socks-proxy-agent "^8.0.3" + +"@npmcli/arborist@^7.5.2": + version "7.5.2" + resolved "https://registry.yarnpkg.com/@npmcli/arborist/-/arborist-7.5.2.tgz#0a1b86d9dce852391ce86314c0d4f2172723bb27" + integrity sha512-V0zqhdnK9Av3qSIbhYs2O+7HAJPSGhqBkNP6624iSVke2J2JKY306V5Czwul+tc2Xnq6SDEKe8v+frLeKJ4aeA== + dependencies: + "@isaacs/string-locale-compare" "^1.1.0" + "@npmcli/fs" "^3.1.1" + "@npmcli/installed-package-contents" "^2.1.0" + "@npmcli/map-workspaces" "^3.0.2" + "@npmcli/metavuln-calculator" "^7.1.1" + "@npmcli/name-from-folder" "^2.0.0" + "@npmcli/node-gyp" "^3.0.0" + "@npmcli/package-json" "^5.1.0" + "@npmcli/query" "^3.1.0" + "@npmcli/redact" "^2.0.0" + "@npmcli/run-script" "^8.1.0" + bin-links "^4.0.4" + cacache "^18.0.3" + common-ancestor-path "^1.0.1" + hosted-git-info "^7.0.2" + json-parse-even-better-errors "^3.0.2" + json-stringify-nice "^1.1.4" + lru-cache "^10.2.2" + minimatch "^9.0.4" + nopt "^7.2.1" + npm-install-checks "^6.2.0" + npm-package-arg "^11.0.2" + npm-pick-manifest "^9.0.1" + npm-registry-fetch "^17.0.1" + pacote "^18.0.6" + parse-conflict-json "^3.0.0" + proc-log "^4.2.0" + proggy "^2.0.0" + promise-all-reject-late "^1.0.0" + promise-call-limit "^3.0.1" + read-package-json-fast "^3.0.2" + semver "^7.3.7" + ssri "^10.0.6" + treeverse "^3.0.0" + walk-up-path "^3.0.1" + +"@npmcli/config@^8.3.2": + version "8.3.2" + resolved "https://registry.yarnpkg.com/@npmcli/config/-/config-8.3.2.tgz#0fc36ab61a07df3bbe4ef4988c1db872b8ba1137" + integrity sha512-IMzf+fhRXibqh9mBwXK/QFIr97SAlZjfwsWPEz/2pST1cE9k9LcwznO7aDNXJoMrDjxPHZmb2bAAKASsa6EedA== + dependencies: + "@npmcli/map-workspaces" "^3.0.2" + ci-info "^4.0.0" + ini "^4.1.2" + nopt "^7.2.1" + proc-log "^4.2.0" + read-package-json-fast "^3.0.2" + semver "^7.3.5" + walk-up-path "^3.0.1" + +"@npmcli/fs@^3.1.0", "@npmcli/fs@^3.1.1": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@npmcli/fs/-/fs-3.1.1.tgz#59cdaa5adca95d135fc00f2bb53f5771575ce726" + integrity sha512-q9CRWjpHCMIh5sVyefoD1cA7PkvILqCZsnSOEUUivORLjxCO/Irmue2DprETiNgEqktDBZaM1Bi+jrarx1XdCg== + dependencies: + semver "^7.3.5" + +"@npmcli/git@^5.0.0", "@npmcli/git@^5.0.7": + version "5.0.7" + resolved "https://registry.yarnpkg.com/@npmcli/git/-/git-5.0.7.tgz#7ff675e33b4dc0b0adb1f0c4aa302109efc06463" + integrity sha512-WaOVvto604d5IpdCRV2KjQu8PzkfE96d50CQGKgywXh2GxXmDeUO5EWcBC4V57uFyrNqx83+MewuJh3WTR3xPA== + dependencies: + "@npmcli/promise-spawn" "^7.0.0" + lru-cache "^10.0.1" + npm-pick-manifest "^9.0.0" + proc-log "^4.0.0" + promise-inflight "^1.0.1" + promise-retry "^2.0.1" + semver "^7.3.5" + which "^4.0.0" + +"@npmcli/installed-package-contents@^2.0.1", "@npmcli/installed-package-contents@^2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@npmcli/installed-package-contents/-/installed-package-contents-2.1.0.tgz#63048e5f6e40947a3a88dcbcb4fd9b76fdd37c17" + integrity sha512-c8UuGLeZpm69BryRykLuKRyKFZYJsZSCT4aVY5ds4omyZqJ172ApzgfKJ5eV/r3HgLdUYgFVe54KSFVjKoe27w== + dependencies: + npm-bundled "^3.0.0" + npm-normalize-package-bin "^3.0.0" + +"@npmcli/map-workspaces@^3.0.2", "@npmcli/map-workspaces@^3.0.6": + version "3.0.6" + resolved "https://registry.yarnpkg.com/@npmcli/map-workspaces/-/map-workspaces-3.0.6.tgz#27dc06c20c35ef01e45a08909cab9cb3da08cea6" + integrity sha512-tkYs0OYnzQm6iIRdfy+LcLBjcKuQCeE5YLb8KnrIlutJfheNaPvPpgoFEyEFgbjzl5PLZ3IA/BWAwRU0eHuQDA== + dependencies: + "@npmcli/name-from-folder" "^2.0.0" + glob "^10.2.2" + minimatch "^9.0.0" + read-package-json-fast "^3.0.0" + +"@npmcli/metavuln-calculator@^7.1.1": + version "7.1.1" + resolved "https://registry.yarnpkg.com/@npmcli/metavuln-calculator/-/metavuln-calculator-7.1.1.tgz#4d3b6c3192f72bc8ad59476de0da939c33877fcf" + integrity sha512-Nkxf96V0lAx3HCpVda7Vw4P23RILgdi/5K1fmj2tZkWIYLpXAN8k2UVVOsW16TsS5F8Ws2I7Cm+PU1/rsVF47g== + dependencies: + cacache "^18.0.0" + json-parse-even-better-errors "^3.0.0" + pacote "^18.0.0" + proc-log "^4.1.0" + semver "^7.3.5" + +"@npmcli/name-from-folder@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@npmcli/name-from-folder/-/name-from-folder-2.0.0.tgz#c44d3a7c6d5c184bb6036f4d5995eee298945815" + integrity sha512-pwK+BfEBZJbKdNYpHHRTNBwBoqrN/iIMO0AiGvYsp3Hoaq0WbgGSWQR6SCldZovoDpY3yje5lkFUe6gsDgJ2vg== + +"@npmcli/node-gyp@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@npmcli/node-gyp/-/node-gyp-3.0.0.tgz#101b2d0490ef1aa20ed460e4c0813f0db560545a" + integrity sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA== + +"@npmcli/package-json@^5.0.0", "@npmcli/package-json@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@npmcli/package-json/-/package-json-5.1.0.tgz#10d117b5fb175acc14c70901a151c52deffc843e" + integrity sha512-1aL4TuVrLS9sf8quCLerU3H9J4vtCtgu8VauYozrmEyU57i/EdKleCnsQ7vpnABIH6c9mnTxcH5sFkO3BlV8wQ== + dependencies: + "@npmcli/git" "^5.0.0" + glob "^10.2.2" + hosted-git-info "^7.0.0" + json-parse-even-better-errors "^3.0.0" + normalize-package-data "^6.0.0" + proc-log "^4.0.0" + semver "^7.5.3" + +"@npmcli/promise-spawn@^7.0.0", "@npmcli/promise-spawn@^7.0.2": + version "7.0.2" + resolved "https://registry.yarnpkg.com/@npmcli/promise-spawn/-/promise-spawn-7.0.2.tgz#1d53d34ffeb5d151bfa8ec661bcccda8bbdfd532" + integrity sha512-xhfYPXoV5Dy4UkY0D+v2KkwvnDfiA/8Mt3sWCGI/hM03NsYIH8ZaG6QzS9x7pje5vHZBZJ2v6VRFVTWACnqcmQ== + dependencies: + which "^4.0.0" + +"@npmcli/query@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@npmcli/query/-/query-3.1.0.tgz#bc202c59e122a06cf8acab91c795edda2cdad42c" + integrity sha512-C/iR0tk7KSKGldibYIB9x8GtO/0Bd0I2mhOaDb8ucQL/bQVTmGoeREaFj64Z5+iCBRf3dQfed0CjJL7I8iTkiQ== + dependencies: + postcss-selector-parser "^6.0.10" + +"@npmcli/redact@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@npmcli/redact/-/redact-2.0.0.tgz#72f9689e87bd0ce419c35e75b8470ce8ac9e14f0" + integrity sha512-SEjCPAVHWYUIQR+Yn03kJmrJjZDtJLYpj300m3HV9OTRZNpC5YpbMsM3eTkECyT4aWj8lDr9WeY6TWefpubtYQ== + +"@npmcli/run-script@^8.0.0", "@npmcli/run-script@^8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@npmcli/run-script/-/run-script-8.1.0.tgz#a563e5e29b1ca4e648a6b1bbbfe7220b4bfe39fc" + integrity sha512-y7efHHwghQfk28G2z3tlZ67pLG0XdfYbcVG26r7YIXALRsrVQcTq4/tdenSmdOrEsNahIYA/eh8aEVROWGFUDg== + dependencies: + "@npmcli/node-gyp" "^3.0.0" + "@npmcli/package-json" "^5.0.0" + "@npmcli/promise-spawn" "^7.0.0" + node-gyp "^10.0.0" + proc-log "^4.0.0" + which "^4.0.0" + +"@pkgjs/parseargs@^0.11.0": + version "0.11.0" + resolved "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz" + integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== + +"@radix-ui/number@1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@radix-ui/number/-/number-1.0.1.tgz#644161a3557f46ed38a042acf4a770e826021674" + integrity sha512-T5gIdVO2mmPW3NNhjNgEP3cqMXjXL9UbO0BzWcXfvdBs+BohbQxvd/K5hSVKmn9/lbTdsQVKbUcP5WLCwvUbBg== + dependencies: + "@babel/runtime" "^7.13.10" + +"@radix-ui/primitive@1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@radix-ui/primitive/-/primitive-1.0.1.tgz#e46f9958b35d10e9f6dc71c497305c22e3e55dbd" + integrity sha512-yQ8oGX2GVsEYMWGxcovu1uGWPCxV5BFfeeYxqPmuAzUyLT9qmaMXSAhXpb0WrspIeqYzdJpkh2vHModJPgRIaw== + dependencies: + "@babel/runtime" "^7.13.10" + +"@radix-ui/react-arrow@1.0.3": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@radix-ui/react-arrow/-/react-arrow-1.0.3.tgz#c24f7968996ed934d57fe6cde5d6ec7266e1d25d" + integrity sha512-wSP+pHsB/jQRaL6voubsQ/ZlrGBHHrOjmBnr19hxYgtS0WvAFwZhK2WP/YY5yF9uKECCEEDGxuLxq1NBK51wFA== + dependencies: + "@babel/runtime" "^7.13.10" + "@radix-ui/react-primitive" "1.0.3" + +"@radix-ui/react-checkbox@^1.0.4": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@radix-ui/react-checkbox/-/react-checkbox-1.0.4.tgz#98f22c38d5010dd6df4c5744cac74087e3275f4b" + integrity sha512-CBuGQa52aAYnADZVt/KBQzXrwx6TqnlwtcIPGtVt5JkkzQwMOLJjPukimhfKEr4GQNd43C+djUh5Ikopj8pSLg== + dependencies: + "@babel/runtime" "^7.13.10" + "@radix-ui/primitive" "1.0.1" + "@radix-ui/react-compose-refs" "1.0.1" + "@radix-ui/react-context" "1.0.1" + "@radix-ui/react-presence" "1.0.1" + "@radix-ui/react-primitive" "1.0.3" + "@radix-ui/react-use-controllable-state" "1.0.1" + "@radix-ui/react-use-previous" "1.0.1" + "@radix-ui/react-use-size" "1.0.1" + +"@radix-ui/react-collection@1.0.3": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@radix-ui/react-collection/-/react-collection-1.0.3.tgz#9595a66e09026187524a36c6e7e9c7d286469159" + integrity sha512-3SzW+0PW7yBBoQlT8wNcGtaxaD0XSu0uLUFgrtHY08Acx05TaHaOmVLR73c0j/cqpDy53KBMO7s0dx2wmOIDIA== + dependencies: + "@babel/runtime" "^7.13.10" + "@radix-ui/react-compose-refs" "1.0.1" + "@radix-ui/react-context" "1.0.1" + "@radix-ui/react-primitive" "1.0.3" + "@radix-ui/react-slot" "1.0.2" + +"@radix-ui/react-compose-refs@1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@radix-ui/react-compose-refs/-/react-compose-refs-1.0.1.tgz#7ed868b66946aa6030e580b1ffca386dd4d21989" + integrity sha512-fDSBgd44FKHa1FRMU59qBMPFcl2PZE+2nmqunj+BWFyYYjnhIDWL2ItDs3rrbJDQOtzt5nIebLCQc4QRfz6LJw== + dependencies: + "@babel/runtime" "^7.13.10" + +"@radix-ui/react-context@1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@radix-ui/react-context/-/react-context-1.0.1.tgz#fe46e67c96b240de59187dcb7a1a50ce3e2ec00c" + integrity sha512-ebbrdFoYTcuZ0v4wG5tedGnp9tzcV8awzsxYph7gXUyvnNLuTIcCk1q17JEbnVhXAKG9oX3KtchwiMIAYp9NLg== + dependencies: + "@babel/runtime" "^7.13.10" + +"@radix-ui/react-direction@1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@radix-ui/react-direction/-/react-direction-1.0.1.tgz#9cb61bf2ccf568f3421422d182637b7f47596c9b" + integrity sha512-RXcvnXgyvYvBEOhCBuddKecVkoMiI10Jcm5cTI7abJRAHYfFxeu+FBQs/DvdxSYucxR5mna0dNsL6QFlds5TMA== + dependencies: + "@babel/runtime" "^7.13.10" + +"@radix-ui/react-dismissable-layer@1.0.5": + version "1.0.5" + resolved "https://registry.yarnpkg.com/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.0.5.tgz#3f98425b82b9068dfbab5db5fff3df6ebf48b9d4" + integrity sha512-aJeDjQhywg9LBu2t/At58hCvr7pEm0o2Ke1x33B+MhjNmmZ17sy4KImo0KPLgsnc/zN7GPdce8Cnn0SWvwZO7g== + dependencies: + "@babel/runtime" "^7.13.10" + "@radix-ui/primitive" "1.0.1" + "@radix-ui/react-compose-refs" "1.0.1" + "@radix-ui/react-primitive" "1.0.3" + "@radix-ui/react-use-callback-ref" "1.0.1" + "@radix-ui/react-use-escape-keydown" "1.0.3" + +"@radix-ui/react-focus-guards@1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@radix-ui/react-focus-guards/-/react-focus-guards-1.0.1.tgz#1ea7e32092216b946397866199d892f71f7f98ad" + integrity sha512-Rect2dWbQ8waGzhMavsIbmSVCgYxkXLxxR3ZvCX79JOglzdEy4JXMb98lq4hPxUbLr77nP0UOGf4rcMU+s1pUA== + dependencies: + "@babel/runtime" "^7.13.10" + +"@radix-ui/react-focus-scope@1.0.4": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@radix-ui/react-focus-scope/-/react-focus-scope-1.0.4.tgz#2ac45fce8c5bb33eb18419cdc1905ef4f1906525" + integrity sha512-sL04Mgvf+FmyvZeYfNu1EPAaaxD+aw7cYeIB9L9Fvq8+urhltTRaEo5ysKOpHuKPclsZcSUMKlN05x4u+CINpA== + dependencies: + "@babel/runtime" "^7.13.10" + "@radix-ui/react-compose-refs" "1.0.1" + "@radix-ui/react-primitive" "1.0.3" + "@radix-ui/react-use-callback-ref" "1.0.1" + +"@radix-ui/react-icons@^1.3.0": + version "1.3.0" + resolved "https://registry.npmjs.org/@radix-ui/react-icons/-/react-icons-1.3.0.tgz" + integrity sha512-jQxj/0LKgp+j9BiTXz3O3sgs26RNet2iLWmsPyRz2SIcR4q/4SbazXfnYwbAr+vLYKSfc7qxzyGQA1HLlYiuNw== + +"@radix-ui/react-id@1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@radix-ui/react-id/-/react-id-1.0.1.tgz#73cdc181f650e4df24f0b6a5b7aa426b912c88c0" + integrity sha512-tI7sT/kqYp8p96yGWY1OAnLHrqDgzHefRBKQ2YAkBS5ja7QLcZ9Z/uY7bEjPUatf8RomoXM8/1sMj1IJaE5UzQ== + dependencies: + "@babel/runtime" "^7.13.10" + "@radix-ui/react-use-layout-effect" "1.0.1" + +"@radix-ui/react-label@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@radix-ui/react-label/-/react-label-2.0.2.tgz#9c72f1d334aac996fdc27b48a8bdddd82108fb6d" + integrity sha512-N5ehvlM7qoTLx7nWPodsPYPgMzA5WM8zZChQg8nyFJKnDO5WHdba1vv5/H6IO5LtJMfD2Q3wh1qHFGNtK0w3bQ== + dependencies: + "@babel/runtime" "^7.13.10" + "@radix-ui/react-primitive" "1.0.3" + +"@radix-ui/react-popover@^1.0.7": + version "1.0.7" + resolved "https://registry.yarnpkg.com/@radix-ui/react-popover/-/react-popover-1.0.7.tgz#23eb7e3327330cb75ec7b4092d685398c1654e3c" + integrity sha512-shtvVnlsxT6faMnK/a7n0wptwBD23xc1Z5mdrtKLwVEfsEMXodS0r5s0/g5P0hX//EKYZS2sxUjqfzlg52ZSnQ== + dependencies: + "@babel/runtime" "^7.13.10" + "@radix-ui/primitive" "1.0.1" + "@radix-ui/react-compose-refs" "1.0.1" + "@radix-ui/react-context" "1.0.1" + "@radix-ui/react-dismissable-layer" "1.0.5" + "@radix-ui/react-focus-guards" "1.0.1" + "@radix-ui/react-focus-scope" "1.0.4" + "@radix-ui/react-id" "1.0.1" + "@radix-ui/react-popper" "1.1.3" + "@radix-ui/react-portal" "1.0.4" + "@radix-ui/react-presence" "1.0.1" + "@radix-ui/react-primitive" "1.0.3" + "@radix-ui/react-slot" "1.0.2" + "@radix-ui/react-use-controllable-state" "1.0.1" + aria-hidden "^1.1.1" + react-remove-scroll "2.5.5" + +"@radix-ui/react-popper@1.1.3": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@radix-ui/react-popper/-/react-popper-1.1.3.tgz#24c03f527e7ac348fabf18c89795d85d21b00b42" + integrity sha512-cKpopj/5RHZWjrbF2846jBNacjQVwkP068DfmgrNJXpvVWrOvlAmE9xSiy5OqeE+Gi8D9fP+oDhUnPqNMY8/5w== + dependencies: + "@babel/runtime" "^7.13.10" + "@floating-ui/react-dom" "^2.0.0" + "@radix-ui/react-arrow" "1.0.3" + "@radix-ui/react-compose-refs" "1.0.1" + "@radix-ui/react-context" "1.0.1" + "@radix-ui/react-primitive" "1.0.3" + "@radix-ui/react-use-callback-ref" "1.0.1" + "@radix-ui/react-use-layout-effect" "1.0.1" + "@radix-ui/react-use-rect" "1.0.1" + "@radix-ui/react-use-size" "1.0.1" + "@radix-ui/rect" "1.0.1" + +"@radix-ui/react-portal@1.0.4": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@radix-ui/react-portal/-/react-portal-1.0.4.tgz#df4bfd353db3b1e84e639e9c63a5f2565fb00e15" + integrity sha512-Qki+C/EuGUVCQTOTD5vzJzJuMUlewbzuKyUy+/iHM2uwGiru9gZeBJtHAPKAEkB5KWGi9mP/CHKcY0wt1aW45Q== + dependencies: + "@babel/runtime" "^7.13.10" + "@radix-ui/react-primitive" "1.0.3" + +"@radix-ui/react-presence@1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@radix-ui/react-presence/-/react-presence-1.0.1.tgz#491990ba913b8e2a5db1b06b203cb24b5cdef9ba" + integrity sha512-UXLW4UAbIY5ZjcvzjfRFo5gxva8QirC9hF7wRE4U5gz+TP0DbRk+//qyuAQ1McDxBt1xNMBTaciFGvEmJvAZCg== + dependencies: + "@babel/runtime" "^7.13.10" + "@radix-ui/react-compose-refs" "1.0.1" + "@radix-ui/react-use-layout-effect" "1.0.1" + +"@radix-ui/react-primitive@1.0.3": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@radix-ui/react-primitive/-/react-primitive-1.0.3.tgz#d49ea0f3f0b2fe3ab1cb5667eb03e8b843b914d0" + integrity sha512-yi58uVyoAcK/Nq1inRY56ZSjKypBNKTa/1mcL8qdl6oJeEaDbOldlzrGn7P6Q3Id5d+SYNGc5AJgc4vGhjs5+g== + dependencies: + "@babel/runtime" "^7.13.10" + "@radix-ui/react-slot" "1.0.2" + +"@radix-ui/react-select@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@radix-ui/react-select/-/react-select-2.0.0.tgz#a3511792a51a7018d6559357323a7f52e0e38887" + integrity sha512-RH5b7af4oHtkcHS7pG6Sgv5rk5Wxa7XI8W5gvB1N/yiuDGZxko1ynvOiVhFM7Cis2A8zxF9bTOUVbRDzPepe6w== + dependencies: + "@babel/runtime" "^7.13.10" + "@radix-ui/number" "1.0.1" + "@radix-ui/primitive" "1.0.1" + "@radix-ui/react-collection" "1.0.3" + "@radix-ui/react-compose-refs" "1.0.1" + "@radix-ui/react-context" "1.0.1" + "@radix-ui/react-direction" "1.0.1" + "@radix-ui/react-dismissable-layer" "1.0.5" + "@radix-ui/react-focus-guards" "1.0.1" + "@radix-ui/react-focus-scope" "1.0.4" + "@radix-ui/react-id" "1.0.1" + "@radix-ui/react-popper" "1.1.3" + "@radix-ui/react-portal" "1.0.4" + "@radix-ui/react-primitive" "1.0.3" + "@radix-ui/react-slot" "1.0.2" + "@radix-ui/react-use-callback-ref" "1.0.1" + "@radix-ui/react-use-controllable-state" "1.0.1" + "@radix-ui/react-use-layout-effect" "1.0.1" + "@radix-ui/react-use-previous" "1.0.1" + "@radix-ui/react-visually-hidden" "1.0.3" + aria-hidden "^1.1.1" + react-remove-scroll "2.5.5" + +"@radix-ui/react-slot@1.0.2", "@radix-ui/react-slot@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@radix-ui/react-slot/-/react-slot-1.0.2.tgz#a9ff4423eade67f501ffb32ec22064bc9d3099ab" + integrity sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg== + dependencies: + "@babel/runtime" "^7.13.10" + "@radix-ui/react-compose-refs" "1.0.1" + +"@radix-ui/react-toggle@^1.0.3": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@radix-ui/react-toggle/-/react-toggle-1.0.3.tgz#aecb2945630d1dc5c512997556c57aba894e539e" + integrity sha512-Pkqg3+Bc98ftZGsl60CLANXQBBQ4W3mTFS9EJvNxKMZ7magklKV69/id1mlAlOFDDfHvlCms0fx8fA4CMKDJHg== + dependencies: + "@babel/runtime" "^7.13.10" + "@radix-ui/primitive" "1.0.1" + "@radix-ui/react-primitive" "1.0.3" + "@radix-ui/react-use-controllable-state" "1.0.1" + +"@radix-ui/react-use-callback-ref@1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.0.1.tgz#f4bb1f27f2023c984e6534317ebc411fc181107a" + integrity sha512-D94LjX4Sp0xJFVaoQOd3OO9k7tpBYNOXdVhkltUbGv2Qb9OXdrg/CpsjlZv7ia14Sylv398LswWBVVu5nqKzAQ== + dependencies: + "@babel/runtime" "^7.13.10" + +"@radix-ui/react-use-controllable-state@1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.0.1.tgz#ecd2ced34e6330caf89a82854aa2f77e07440286" + integrity sha512-Svl5GY5FQeN758fWKrjM6Qb7asvXeiZltlT4U2gVfl8Gx5UAv2sMR0LWo8yhsIZh2oQ0eFdZ59aoOOMV7b47VA== + dependencies: + "@babel/runtime" "^7.13.10" + "@radix-ui/react-use-callback-ref" "1.0.1" + +"@radix-ui/react-use-escape-keydown@1.0.3": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.0.3.tgz#217b840c250541609c66f67ed7bab2b733620755" + integrity sha512-vyL82j40hcFicA+M4Ex7hVkB9vHgSse1ZWomAqV2Je3RleKGO5iM8KMOEtfoSB0PnIelMd2lATjTGMYqN5ylTg== + dependencies: + "@babel/runtime" "^7.13.10" + "@radix-ui/react-use-callback-ref" "1.0.1" + +"@radix-ui/react-use-layout-effect@1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.0.1.tgz#be8c7bc809b0c8934acf6657b577daf948a75399" + integrity sha512-v/5RegiJWYdoCvMnITBkNNx6bCj20fiaJnWtRkU18yITptraXjffz5Qbn05uOiQnOvi+dbkznkoaMltz1GnszQ== + dependencies: + "@babel/runtime" "^7.13.10" + +"@radix-ui/react-use-previous@1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@radix-ui/react-use-previous/-/react-use-previous-1.0.1.tgz#b595c087b07317a4f143696c6a01de43b0d0ec66" + integrity sha512-cV5La9DPwiQ7S0gf/0qiD6YgNqM5Fk97Kdrlc5yBcrF3jyEZQwm7vYFqMo4IfeHgJXsRaMvLABFtd0OVEmZhDw== + dependencies: + "@babel/runtime" "^7.13.10" + +"@radix-ui/react-use-rect@1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@radix-ui/react-use-rect/-/react-use-rect-1.0.1.tgz#fde50b3bb9fd08f4a1cd204572e5943c244fcec2" + integrity sha512-Cq5DLuSiuYVKNU8orzJMbl15TXilTnJKUCltMVQg53BQOF1/C5toAaGrowkgksdBQ9H+SRL23g0HDmg9tvmxXw== + dependencies: + "@babel/runtime" "^7.13.10" + "@radix-ui/rect" "1.0.1" + +"@radix-ui/react-use-size@1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@radix-ui/react-use-size/-/react-use-size-1.0.1.tgz#1c5f5fea940a7d7ade77694bb98116fb49f870b2" + integrity sha512-ibay+VqrgcaI6veAojjofPATwledXiSmX+C0KrBk/xgpX9rBzPV3OsfwlhQdUOFbh+LKQorLYT+xTXW9V8yd0g== + dependencies: + "@babel/runtime" "^7.13.10" + "@radix-ui/react-use-layout-effect" "1.0.1" + +"@radix-ui/react-visually-hidden@1.0.3": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.0.3.tgz#51aed9dd0fe5abcad7dee2a234ad36106a6984ac" + integrity sha512-D4w41yN5YRKtu464TLnByKzMDG/JlMPHtfZgQAu9v6mNakUqGUI9vUrfQKz8NK41VMm/xbZbh76NUTVtIYqOMA== + dependencies: + "@babel/runtime" "^7.13.10" + "@radix-ui/react-primitive" "1.0.3" + +"@radix-ui/rect@1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@radix-ui/rect/-/rect-1.0.1.tgz#bf8e7d947671996da2e30f4904ece343bc4a883f" + integrity sha512-fyrgCaedtvMg9NK3en0pnOYJdtfwxUcNolezkNPUsoX57X8oQk+NkqcvzHXD2uKNij6GXmWU9NDru2IWjrO4BQ== + dependencies: + "@babel/runtime" "^7.13.10" + +"@rushstack/eslint-patch@^1.3.3": + version "1.10.2" + resolved "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.10.2.tgz" + integrity sha512-hw437iINopmQuxWPSUEvqE56NCPsiU8N4AYtfHmJFckclktzK9YQJieD3XkDCDH4OjL+C7zgPUh73R/nrcHrqw== + +"@sigstore/bundle@^2.3.2": + version "2.3.2" + resolved "https://registry.yarnpkg.com/@sigstore/bundle/-/bundle-2.3.2.tgz#ad4dbb95d665405fd4a7a02c8a073dbd01e4e95e" + integrity sha512-wueKWDk70QixNLB363yHc2D2ItTgYiMTdPwK8D9dKQMR3ZQ0c35IxP5xnwQ8cNLoCgCRcHf14kE+CLIvNX1zmA== + dependencies: + "@sigstore/protobuf-specs" "^0.3.2" + +"@sigstore/core@^1.0.0", "@sigstore/core@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@sigstore/core/-/core-1.1.0.tgz#5583d8f7ffe599fa0a89f2bf289301a5af262380" + integrity sha512-JzBqdVIyqm2FRQCulY6nbQzMpJJpSiJ8XXWMhtOX9eKgaXXpfNOF53lzQEjIydlStnd/eFtuC1dW4VYdD93oRg== + +"@sigstore/protobuf-specs@^0.3.2": + version "0.3.2" + resolved "https://registry.yarnpkg.com/@sigstore/protobuf-specs/-/protobuf-specs-0.3.2.tgz#5becf88e494a920f548d0163e2978f81b44b7d6f" + integrity sha512-c6B0ehIWxMI8wiS/bj6rHMPqeFvngFV7cDU/MY+B16P9Z3Mp9k8L93eYZ7BYzSickzuqAQqAq0V956b3Ju6mLw== + +"@sigstore/sign@^2.3.2": + version "2.3.2" + resolved "https://registry.yarnpkg.com/@sigstore/sign/-/sign-2.3.2.tgz#d3d01e56d03af96fd5c3a9b9897516b1233fc1c4" + integrity sha512-5Vz5dPVuunIIvC5vBb0APwo7qKA4G9yM48kPWJT+OEERs40md5GoUR1yedwpekWZ4m0Hhw44m6zU+ObsON+iDA== + dependencies: + "@sigstore/bundle" "^2.3.2" + "@sigstore/core" "^1.0.0" + "@sigstore/protobuf-specs" "^0.3.2" + make-fetch-happen "^13.0.1" + proc-log "^4.2.0" + promise-retry "^2.0.1" + +"@sigstore/tuf@^2.3.3", "@sigstore/tuf@^2.3.4": + version "2.3.4" + resolved "https://registry.yarnpkg.com/@sigstore/tuf/-/tuf-2.3.4.tgz#da1d2a20144f3b87c0172920cbc8dcc7851ca27c" + integrity sha512-44vtsveTPUpqhm9NCrbU8CWLe3Vck2HO1PNLw7RIajbB7xhtn5RBPm1VNSCMwqGYHhDsBJG8gDF0q4lgydsJvw== + dependencies: + "@sigstore/protobuf-specs" "^0.3.2" + tuf-js "^2.2.1" + +"@sigstore/verify@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@sigstore/verify/-/verify-1.2.1.tgz#c7e60241b432890dcb8bd8322427f6062ef819e1" + integrity sha512-8iKx79/F73DKbGfRf7+t4dqrc0bRr0thdPrxAtCKWRm/F0tG71i6O1rvlnScncJLLBZHn3h8M3c1BSUAb9yu8g== + dependencies: + "@sigstore/bundle" "^2.3.2" + "@sigstore/core" "^1.1.0" + "@sigstore/protobuf-specs" "^0.3.2" + +"@swc/counter@^0.1.3": + version "0.1.3" + resolved "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz" + integrity sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ== + +"@swc/helpers@0.5.5": + version "0.5.5" + resolved "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.5.tgz" + integrity sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A== + dependencies: + "@swc/counter" "^0.1.3" + tslib "^2.4.0" + +"@tufjs/canonical-json@2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@tufjs/canonical-json/-/canonical-json-2.0.0.tgz#a52f61a3d7374833fca945b2549bc30a2dd40d0a" + integrity sha512-yVtV8zsdo8qFHe+/3kw81dSLyF7D576A5cCFCi4X7B39tWT7SekaEFUnvnWJHz+9qO7qJTah1JbrDjWKqFtdWA== + +"@tufjs/models@2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@tufjs/models/-/models-2.0.1.tgz#e429714e753b6c2469af3212e7f320a6973c2812" + integrity sha512-92F7/SFyufn4DXsha9+QfKnN03JGqtMFMXgSHbZOo8JG59WkTni7UzAouNQDf7AuP9OAMxVOPQcqG3sB7w+kkg== + dependencies: + "@tufjs/canonical-json" "2.0.0" + minimatch "^9.0.4" + +"@types/json-schema@^7.0.11": + version "7.0.15" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" + integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== + +"@types/json5@^0.0.29": + version "0.0.29" + resolved "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz" + integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== + +"@types/lodash@^4.17.4": + version "4.17.4" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.17.4.tgz#0303b64958ee070059e3a7184048a55159fe20b7" + integrity sha512-wYCP26ZLxaT3R39kiN2+HcJ4kTd3U1waI/cY7ivWYqFP6pW3ZNpvi6Wd6PHZx7T/t8z0vlkXMg3QYLa7DZ/IJQ== + +"@types/node@^20": + version "20.12.11" + resolved "https://registry.npmjs.org/@types/node/-/node-20.12.11.tgz" + integrity sha512-vDg9PZ/zi+Nqp6boSOT7plNuthRugEKixDv5sFTIpkE89MmNtEArAShI4mxuX2+UrLEe9pxC1vm2cjm9YlWbJw== + dependencies: + undici-types "~5.26.4" + +"@types/prop-types@*": + version "15.7.12" + resolved "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.12.tgz" + integrity sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q== + +"@types/react-dom@^18": + version "18.3.0" + resolved "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.0.tgz" + integrity sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg== + dependencies: + "@types/react" "*" + +"@types/react@*", "@types/react@^18": + version "18.3.1" + resolved "https://registry.npmjs.org/@types/react/-/react-18.3.1.tgz" + integrity sha512-V0kuGBX3+prX+DQ/7r2qsv1NsdfnCLnTgnRJ1pYnxykBhGMz+qj+box5lq7XsO5mtZsBqpjwwTu/7wszPfMBcw== + dependencies: + "@types/prop-types" "*" + csstype "^3.0.2" + +"@types/webidl-conversions@*": + version "7.0.3" + resolved "https://registry.yarnpkg.com/@types/webidl-conversions/-/webidl-conversions-7.0.3.tgz#1306dbfa53768bcbcfc95a1c8cde367975581859" + integrity sha512-CiJJvcRtIgzadHCYXw7dqEnMNRjhGZlYK05Mj9OyktqV8uVT8fD2BFOB7S1uwBE3Kj2Z+4UyPmFw/Ixgw/LAlA== + +"@types/whatwg-url@^11.0.2": + version "11.0.5" + resolved "https://registry.yarnpkg.com/@types/whatwg-url/-/whatwg-url-11.0.5.tgz#aaa2546e60f0c99209ca13360c32c78caf2c409f" + integrity sha512-coYR071JRaHa+xoEvvYqvnIHaVqaYrLPbsufM9BF63HkwI5Lgmy2QR8Q5K/lYDYo5AK82wOvSOS0UsLTpTG7uQ== + dependencies: + "@types/webidl-conversions" "*" + +"@typescript-eslint/parser@^5.4.2 || ^6.0.0 || 7.0.0 - 7.2.0": + version "7.2.0" + resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.2.0.tgz" + integrity sha512-5FKsVcHTk6TafQKQbuIVkXq58Fnbkd2wDL4LB7AURN7RUOu1utVP+G8+6u3ZhEroW3DF6hyo3ZEXxgKgp4KeCg== + dependencies: + "@typescript-eslint/scope-manager" "7.2.0" + "@typescript-eslint/types" "7.2.0" + "@typescript-eslint/typescript-estree" "7.2.0" + "@typescript-eslint/visitor-keys" "7.2.0" + debug "^4.3.4" + +"@typescript-eslint/scope-manager@7.2.0": + version "7.2.0" + resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.2.0.tgz" + integrity sha512-Qh976RbQM/fYtjx9hs4XkayYujB/aPwglw2choHmf3zBjB4qOywWSdt9+KLRdHubGcoSwBnXUH2sR3hkyaERRg== + dependencies: + "@typescript-eslint/types" "7.2.0" + "@typescript-eslint/visitor-keys" "7.2.0" + +"@typescript-eslint/types@7.2.0": + version "7.2.0" + resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.2.0.tgz" + integrity sha512-XFtUHPI/abFhm4cbCDc5Ykc8npOKBSJePY3a3s+lwumt7XWJuzP5cZcfZ610MIPHjQjNsOLlYK8ASPaNG8UiyA== + +"@typescript-eslint/typescript-estree@7.2.0": + version "7.2.0" + resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.2.0.tgz" + integrity sha512-cyxS5WQQCoBwSakpMrvMXuMDEbhOo9bNHHrNcEWis6XHx6KF518tkF1wBvKIn/tpq5ZpUYK7Bdklu8qY0MsFIA== + dependencies: + "@typescript-eslint/types" "7.2.0" + "@typescript-eslint/visitor-keys" "7.2.0" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + minimatch "9.0.3" + semver "^7.5.4" + ts-api-utils "^1.0.1" + +"@typescript-eslint/visitor-keys@7.2.0": + version "7.2.0" + resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.2.0.tgz" + integrity sha512-c6EIQRHhcpl6+tO8EMR+kjkkV+ugUNXOmeASA1rlzkd8EPIriavpWoiEz1HR/VLhbVIdhqnV6E7JZm00cBDx2A== + dependencies: + "@typescript-eslint/types" "7.2.0" + eslint-visitor-keys "^3.4.1" + +"@ungap/structured-clone@^1.2.0": + version "1.2.0" + resolved "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz" + integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== + +abbrev@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-2.0.0.tgz#cf59829b8b4f03f89dda2771cb7f3653828c89bf" + integrity sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ== + +acorn-jsx@^5.3.2: + version "5.3.2" + resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== + +acorn@^8.9.0: + version "8.11.3" + resolved "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz" + integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg== + +agent-base@^7.0.2, agent-base@^7.1.0, agent-base@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-7.1.1.tgz#bdbded7dfb096b751a2a087eeeb9664725b2e317" + integrity sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA== + dependencies: + debug "^4.3.4" + +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-formats@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-2.1.1.tgz#6e669400659eb74973bbf2e33327180a0996b520" + integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA== + dependencies: + ajv "^8.0.0" + +ajv@^6.12.4: + version "6.12.6" + resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" + 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" + +ajv@^8.0.0, ajv@^8.11.2: + version "8.13.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.13.0.tgz#a3939eaec9fb80d217ddf0c3376948c023f28c91" + integrity sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA== + dependencies: + fast-deep-equal "^3.1.3" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.4.1" + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-regex@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz" + integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +ansi-styles@^6.1.0: + version "6.2.1" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz" + integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== + +any-promise@^1.0.0: + version "1.3.0" + resolved "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz" + integrity sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A== + +anymatch@~3.1.2: + version "3.1.3" + resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +aproba@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc" + integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== + +archy@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" + integrity sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw== + +arg@^5.0.2: + version "5.0.2" + resolved "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz" + integrity sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg== + +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + +aria-hidden@^1.1.1: + version "1.2.4" + resolved "https://registry.yarnpkg.com/aria-hidden/-/aria-hidden-1.2.4.tgz#b78e383fdbc04d05762c78b4a25a501e736c4522" + integrity sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A== + dependencies: + tslib "^2.0.0" + +aria-query@^5.3.0: + version "5.3.0" + resolved "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz" + integrity sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A== + dependencies: + dequal "^2.0.3" + +array-buffer-byte-length@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz" + integrity sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg== + dependencies: + call-bind "^1.0.5" + is-array-buffer "^3.0.4" + +array-includes@^3.1.6, array-includes@^3.1.7: + version "3.1.8" + resolved "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz" + integrity sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.2" + es-object-atoms "^1.0.0" + get-intrinsic "^1.2.4" + is-string "^1.0.7" + +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + +array.prototype.findlast@^1.2.4: + version "1.2.5" + resolved "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz" + integrity sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.2" + es-errors "^1.3.0" + es-object-atoms "^1.0.0" + es-shim-unscopables "^1.0.2" + +array.prototype.findlastindex@^1.2.3: + version "1.2.5" + resolved "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz" + integrity sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.2" + es-errors "^1.3.0" + es-object-atoms "^1.0.0" + es-shim-unscopables "^1.0.2" + +array.prototype.flat@^1.3.1, array.prototype.flat@^1.3.2: + version "1.3.2" + resolved "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz" + integrity sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + es-shim-unscopables "^1.0.0" + +array.prototype.flatmap@^1.3.2: + version "1.3.2" + resolved "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz" + integrity sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + es-shim-unscopables "^1.0.0" + +array.prototype.toreversed@^1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/array.prototype.toreversed/-/array.prototype.toreversed-1.1.2.tgz" + integrity sha512-wwDCoT4Ck4Cz7sLtgUmzR5UV3YF5mFHUlbChCzZBQZ+0m2cl/DH3tKgvphv1nKgFsJ48oCSg6p91q2Vm0I/ZMA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + es-shim-unscopables "^1.0.0" + +array.prototype.tosorted@^1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.3.tgz" + integrity sha512-/DdH4TiTmOKzyQbp/eadcCVexiCb36xJg7HshYOYJnNZFDj33GEv0P7GxsynpShhq4OLYJzbGcBDkLsDt7MnNg== + dependencies: + call-bind "^1.0.5" + define-properties "^1.2.1" + es-abstract "^1.22.3" + es-errors "^1.1.0" + es-shim-unscopables "^1.0.2" + +arraybuffer.prototype.slice@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz" + integrity sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A== + dependencies: + array-buffer-byte-length "^1.0.1" + call-bind "^1.0.5" + define-properties "^1.2.1" + es-abstract "^1.22.3" + es-errors "^1.2.1" + get-intrinsic "^1.2.3" + is-array-buffer "^3.0.4" + is-shared-array-buffer "^1.0.2" + +ast-types-flow@^0.0.8: + version "0.0.8" + resolved "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz" + integrity sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ== + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== + +available-typed-arrays@^1.0.7: + version "1.0.7" + resolved "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz" + integrity sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ== + dependencies: + possible-typed-array-names "^1.0.0" + +axe-core@=4.7.0: + version "4.7.0" + resolved "https://registry.npmjs.org/axe-core/-/axe-core-4.7.0.tgz" + integrity sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ== + +axobject-query@^3.2.1: + version "3.2.1" + resolved "https://registry.npmjs.org/axobject-query/-/axobject-query-3.2.1.tgz" + integrity sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg== + dependencies: + dequal "^2.0.3" + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +base-x@^2.0.1: + version "2.0.6" + resolved "https://registry.yarnpkg.com/base-x/-/base-x-2.0.6.tgz#4582a91ebcec99ee06f4e4032030b0cf1c2941d8" + integrity sha512-UAmjxz9KbK+YIi66xej+pZVo/vxUOh49ubEvZW5egCbxhur05pBb+hwuireQwKO4nDpsNm64/jEei17LEpsr5g== + dependencies: + safe-buffer "^5.0.1" + +base-x@^3.0.2: + 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" + +bignumber.js@^9.1.2: + version "9.1.2" + resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.1.2.tgz#b7c4242259c008903b13707983b5f4bbd31eda0c" + integrity sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug== + +bin-links@^4.0.4: + version "4.0.4" + resolved "https://registry.yarnpkg.com/bin-links/-/bin-links-4.0.4.tgz#c3565832b8e287c85f109a02a17027d152a58a63" + integrity sha512-cMtq4W5ZsEwcutJrVId+a/tjt8GSbS+h0oNkdl6+6rBuEv8Ot33Bevj5KPm40t309zuhVic8NjpuL42QCiJWWA== + dependencies: + cmd-shim "^6.0.0" + npm-normalize-package-bin "^3.0.0" + read-cmd-shim "^4.0.0" + write-file-atomic "^5.0.0" + +binary-extensions@^2.0.0, binary-extensions@^2.3.0: + version "2.3.0" + resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz" + integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw== + +bn.js@5.2.1, bn.js@^5.2.0, bn.js@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" + integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== + +borsh@0.7.0, borsh@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/borsh/-/borsh-0.7.0.tgz#6e9560d719d86d90dc589bca60ffc8a6c51fec2a" + integrity sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA== + dependencies: + bn.js "^5.2.0" + bs58 "^4.0.0" + text-encoding-utf-8 "^1.0.2" + +borsh@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/borsh/-/borsh-1.0.0.tgz#b564c8cc8f7a91e3772b9aef9e07f62b84213c1f" + integrity sha512-fSVWzzemnyfF89EPwlUNsrS5swF5CrtiN4e+h0/lLf4dz2he4L3ndM20PS9wj7ICSkXJe/TQUHdaPTq15b1mNQ== + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +brace-expansion@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== + dependencies: + balanced-match "^1.0.0" + +braces@^3.0.2, braces@~3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +bs58@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/bs58/-/bs58-4.0.0.tgz#65f5deaf6d74e6135a99f763ca6209ab424b9172" + integrity sha512-/jcGuUuSebyxwLLfKrbKnCJttxRf9PM51EnHTwmFKBxl4z1SGkoAhrfd6uZKE0dcjQTfm6XzTP8DPr1tzE4KIw== + dependencies: + base-x "^2.0.1" + +bs58@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/bs58/-/bs58-4.0.1.tgz#be161e76c354f6f788ae4071f63f34e8c4f0a42a" + integrity sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw== + dependencies: + base-x "^3.0.2" + +bson@^6.7.0: + version "6.7.0" + resolved "https://registry.yarnpkg.com/bson/-/bson-6.7.0.tgz#51973b132cdc424c8372fda3cb43e3e3e2ae2227" + integrity sha512-w2IquM5mYzYZv6rs3uN2DZTOBe2a0zXLj53TGDqwF4l6Sz/XsISrisXOJihArF9+BZ6Cq/GjVht7Sjfmri7ytQ== + +busboy@1.6.0: + version "1.6.0" + resolved "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz" + integrity sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA== + dependencies: + streamsearch "^1.1.0" + +cacache@^18.0.0, cacache@^18.0.3: + version "18.0.3" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-18.0.3.tgz#864e2c18414e1e141ae8763f31e46c2cb96d1b21" + integrity sha512-qXCd4rh6I07cnDqh8V48/94Tc/WSfj+o3Gn6NZ0aZovS255bUx8O13uKxRFd2eWG0xgsco7+YItQNPaa5E85hg== + dependencies: + "@npmcli/fs" "^3.1.0" + fs-minipass "^3.0.0" + glob "^10.2.2" + lru-cache "^10.0.1" + minipass "^7.0.3" + minipass-collect "^2.0.1" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.4" + p-map "^4.0.0" + ssri "^10.0.0" + tar "^6.1.11" + unique-filename "^3.0.0" + +call-bind@^1.0.2, call-bind@^1.0.5, call-bind@^1.0.6, call-bind@^1.0.7: + version "1.0.7" + resolved "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz" + integrity sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w== + dependencies: + es-define-property "^1.0.0" + es-errors "^1.3.0" + function-bind "^1.1.2" + get-intrinsic "^1.2.4" + set-function-length "^1.2.1" + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +camelcase-css@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz" + integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA== + +camelcase@^5.0.0: + version "5.3.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +caniuse-lite@^1.0.30001579: + version "1.0.30001616" + resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001616.tgz" + integrity sha512-RHVYKov7IcdNjVHJFNY/78RdG4oGVjbayxv8u5IO74Wv7Hlq4PnJE6mo/OjFijjVFNy5ijnCt6H3IIo4t+wfEw== + +capability@^0.2.5: + version "0.2.5" + resolved "https://registry.yarnpkg.com/capability/-/capability-0.2.5.tgz#51ad87353f1936ffd77f2f21c74633a4dea88801" + integrity sha512-rsJZYVCgXd08sPqwmaIqjAd5SUTfonV0z/gDJ8D6cN8wQphky1kkAYEqQ+hmDxTw7UihvBfjUVUSY+DBEe44jg== + +chalk@^4.0.0: + version "4.1.2" + resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chalk@^5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.3.0.tgz#67c20a7ebef70e7f3970a01f90fa210cb6860385" + integrity sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w== + +"charenc@>= 0.0.1": + version "0.0.2" + resolved "https://registry.yarnpkg.com/charenc/-/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667" + integrity sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA== + +chokidar@^3.5.3: + version "3.6.0" + resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz" + integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== + 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" + +chownr@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" + integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== + +ci-info@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-4.0.0.tgz#65466f8b280fc019b9f50a5388115d17a63a44f2" + integrity sha512-TdHqgGf9odd8SXNuxtUBVx8Nv+qZOejE6qyqiy5NtbYYQOeFa6zmHkxlPzmaLxWWHsU6nJmB7AETdVPi+2NBUg== + +cidr-regex@^4.0.4: + version "4.0.5" + resolved "https://registry.yarnpkg.com/cidr-regex/-/cidr-regex-4.0.5.tgz#c90181992feb60ce28b8cc7590970ab94ab1060a" + integrity sha512-gljhROSwEnEvC+2lKqfkv1dU2v46h8Cwob19LlfGeGRMDLuwFD5+3D6+/vaa9/QrVLDASiSQ2OYQwzzjQ5I57A== + dependencies: + ip-regex "^5.0.0" + +class-variance-authority@^0.7.0: + version "0.7.0" + resolved "https://registry.npmjs.org/class-variance-authority/-/class-variance-authority-0.7.0.tgz" + integrity sha512-jFI8IQw4hczaL4ALINxqLEXQbWcNjoSkloa4IaufXCJr6QawJyw7tuRysRsrE8w2p/4gGaxKIt/hX3qz/IbD1A== + dependencies: + clsx "2.0.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-columns@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cli-columns/-/cli-columns-4.0.0.tgz#9fe4d65975238d55218c41bd2ed296a7fa555646" + integrity sha512-XW2Vg+w+L9on9wtwKpyzluIPCWXjaBahI7mTcYjx+BVIYD9c3yqcv/yKC7CmdCZat4rq2yiE1UMSJC5ivKfMtQ== + dependencies: + string-width "^4.2.3" + strip-ansi "^6.0.1" + +client-only@0.0.1: + version "0.0.1" + resolved "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz" + integrity sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA== + +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" + +clsx@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/clsx/-/clsx-2.0.0.tgz" + integrity sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q== + +clsx@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz" + integrity sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA== + +cmd-shim@^6.0.0: + version "6.0.3" + resolved "https://registry.yarnpkg.com/cmd-shim/-/cmd-shim-6.0.3.tgz#c491e9656594ba17ac83c4bd931590a9d6e26033" + integrity sha512-FMabTRlc5t5zjdenF6mS0MBeFZm0XqHqeOkcskKFb/LYCcRQ5fVgLOHVc4Lq9CqABd9zhjwPjMBCJvMCziSVtA== + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +combined-stream@^1.0.8: + 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@^4.0.0: + version "4.1.1" + resolved "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz" + integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== + +common-ancestor-path@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/common-ancestor-path/-/common-ancestor-path-1.0.1.tgz#4f7d2d1394d91b7abdf51871c62f71eadb0182a7" + integrity sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w== + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + +copy-to-clipboard@3.3.3: + version "3.3.3" + resolved "https://registry.yarnpkg.com/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz#55ac43a1db8ae639a4bd99511c148cdd1b83a1b0" + integrity sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA== + dependencies: + toggle-selection "^1.0.6" + +cross-fetch@^3.1.5: + version "3.1.8" + resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.8.tgz#0327eba65fd68a7d119f8fb2bf9334a1a7956f82" + integrity sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg== + dependencies: + node-fetch "^2.6.12" + +cross-fetch@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-4.0.0.tgz#f037aef1580bb3a1a35164ea2a848ba81b445983" + integrity sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g== + dependencies: + node-fetch "^2.6.12" + +cross-spawn@^7.0.0, cross-spawn@^7.0.2: + version "7.0.3" + resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +"crypt@>= 0.0.1": + version "0.0.2" + resolved "https://registry.yarnpkg.com/crypt/-/crypt-0.0.2.tgz#88d7ff7ec0dfb86f713dc87bbb42d044d3e6c41b" + integrity sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow== + +cssesc@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz" + integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== + +csstype@^3.0.2: + version "3.1.3" + resolved "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz" + integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== + +damerau-levenshtein@^1.0.8: + version "1.0.8" + resolved "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz" + integrity sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA== + +data-view-buffer@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz" + integrity sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA== + dependencies: + call-bind "^1.0.6" + es-errors "^1.3.0" + is-data-view "^1.0.1" + +data-view-byte-length@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz" + integrity sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ== + dependencies: + call-bind "^1.0.7" + es-errors "^1.3.0" + is-data-view "^1.0.1" + +data-view-byte-offset@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz" + integrity sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA== + dependencies: + call-bind "^1.0.6" + es-errors "^1.3.0" + is-data-view "^1.0.1" + +date-fns@^3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-3.6.0.tgz#f20ca4fe94f8b754951b24240676e8618c0206bf" + integrity sha512-fRHTG8g/Gif+kSh50gaGEdToemgfj74aRX3swtiouboip5JDLAyDE9F11nHMIcvOaXeOC6D7SpNhi7uFyB7Uww== + +debug@4, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: + version "4.3.4" + resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + +debug@^3.2.7: + version "3.2.7" + resolved "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== + dependencies: + ms "^2.1.1" + +decamelize@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== + +decode-uri-component@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9" + integrity sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ== + +deep-is@^0.1.3: + version "0.1.4" + resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz" + integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== + +define-data-property@^1.0.1, define-data-property@^1.1.4: + version "1.1.4" + resolved "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz" + integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A== + dependencies: + es-define-property "^1.0.0" + es-errors "^1.3.0" + gopd "^1.0.1" + +define-properties@^1.2.0, define-properties@^1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz" + integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== + dependencies: + define-data-property "^1.0.1" + has-property-descriptors "^1.0.0" + object-keys "^1.1.1" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== + +depd@2.0.0, depd@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" + integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== + +depd@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== + +dequal@^2.0.3: + version "2.0.3" + resolved "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz" + integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA== + +detect-node-es@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/detect-node-es/-/detect-node-es-1.1.0.tgz#163acdf643330caa0b4cd7c21e7ee7755d6fa493" + integrity sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ== + +didyoumean@^1.2.2: + version "1.2.2" + resolved "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz" + integrity sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw== + +diff@^5.1.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-5.2.0.tgz#26ded047cd1179b78b9537d5ef725503ce1ae531" + integrity sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A== + +dijkstrajs@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/dijkstrajs/-/dijkstrajs-1.0.3.tgz#4c8dbdea1f0f6478bff94d9c49c784d623e4fc23" + integrity sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA== + +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + +dlv@^1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz" + integrity sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA== + +doctrine@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz" + integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== + dependencies: + esutils "^2.0.2" + +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + dependencies: + esutils "^2.0.2" + +dotenv@^16.4.5: + version "16.4.5" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.4.5.tgz#cdd3b3b604cb327e286b4762e13502f717cb099f" + integrity sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg== + +eastasianwidth@^0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz" + integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== + +embla-carousel-react@^8.1.3: + version "8.1.3" + resolved "https://registry.yarnpkg.com/embla-carousel-react/-/embla-carousel-react-8.1.3.tgz#a07770eee003a56dfe2fa55304b48892cc00c013" + integrity sha512-YrezDPgxPDKa+OKMhSrwuPEU2OgF5147vFW473EWT3bx9DETV3W/RyWTxq0/2pf3M4VXkjqFNbS/W1xM8lTaVg== + dependencies: + embla-carousel "8.1.3" + embla-carousel-reactive-utils "8.1.3" + +embla-carousel-reactive-utils@8.1.3: + version "8.1.3" + resolved "https://registry.yarnpkg.com/embla-carousel-reactive-utils/-/embla-carousel-reactive-utils-8.1.3.tgz#b4e7d439ab6aefb9554b14198e567e919b52f167" + integrity sha512-D8tAK6NRQVEubMWb+b/BJ3VvGPsbEeEFOBM6cCCwfiyfLzNlacOAt0q2dtUEA9DbGxeWkB8ExgXzFRxhGV2Hig== + +embla-carousel@8.1.3: + version "8.1.3" + resolved "https://registry.yarnpkg.com/embla-carousel/-/embla-carousel-8.1.3.tgz#d086738ee529e59815dae4e2ecd9ee37c47ffc1a" + integrity sha512-GiRpKtzidV3v50oVMly8S+D7iE1r96ttt7fSlvtyKHoSkzrAnVcu8fX3c4j8Ol2hZSQlVfDqDIqdrFPs0u5TWQ== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +emoji-regex@^9.2.2: + version "9.2.2" + resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz" + integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== + +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== + +encoding@^0.1.13: + version "0.1.13" + resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" + integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== + dependencies: + iconv-lite "^0.6.2" + +enhanced-resolve@^5.12.0: + version "5.16.1" + resolved "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.16.1.tgz" + integrity sha512-4U5pNsuDl0EhuZpq46M5xPslstkviJuhrdobaRDBk2Jy2KO37FDAJl4lb2KlNabxT0m4MTK2UHNrsAcphE8nyw== + dependencies: + graceful-fs "^4.2.4" + tapable "^2.2.0" + +env-paths@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" + integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== + +err-code@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/err-code/-/err-code-2.0.3.tgz#23c2f3b756ffdfc608d30e27c9a941024807e7f9" + integrity sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA== + +error-polyfill@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/error-polyfill/-/error-polyfill-0.1.3.tgz#df848b61ad8834f7a5db69a70b9913df86721d15" + integrity sha512-XHJk60ufE+TG/ydwp4lilOog549iiQF2OAPhkk9DdiYWMrltz5yhDz/xnKuenNwP7gy3dsibssO5QpVhkrSzzg== + dependencies: + capability "^0.2.5" + o3 "^1.0.3" + u3 "^0.1.1" + +es-abstract@^1.22.1, es-abstract@^1.22.3, es-abstract@^1.23.0, es-abstract@^1.23.1, es-abstract@^1.23.2, es-abstract@^1.23.3: + version "1.23.3" + resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz" + integrity sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A== + dependencies: + array-buffer-byte-length "^1.0.1" + arraybuffer.prototype.slice "^1.0.3" + available-typed-arrays "^1.0.7" + call-bind "^1.0.7" + data-view-buffer "^1.0.1" + data-view-byte-length "^1.0.1" + data-view-byte-offset "^1.0.0" + es-define-property "^1.0.0" + es-errors "^1.3.0" + es-object-atoms "^1.0.0" + es-set-tostringtag "^2.0.3" + es-to-primitive "^1.2.1" + function.prototype.name "^1.1.6" + get-intrinsic "^1.2.4" + get-symbol-description "^1.0.2" + globalthis "^1.0.3" + gopd "^1.0.1" + has-property-descriptors "^1.0.2" + has-proto "^1.0.3" + has-symbols "^1.0.3" + hasown "^2.0.2" + internal-slot "^1.0.7" + is-array-buffer "^3.0.4" + is-callable "^1.2.7" + is-data-view "^1.0.1" + is-negative-zero "^2.0.3" + is-regex "^1.1.4" + is-shared-array-buffer "^1.0.3" + is-string "^1.0.7" + is-typed-array "^1.1.13" + is-weakref "^1.0.2" + object-inspect "^1.13.1" + object-keys "^1.1.1" + object.assign "^4.1.5" + regexp.prototype.flags "^1.5.2" + safe-array-concat "^1.1.2" + safe-regex-test "^1.0.3" + string.prototype.trim "^1.2.9" + string.prototype.trimend "^1.0.8" + string.prototype.trimstart "^1.0.8" + typed-array-buffer "^1.0.2" + typed-array-byte-length "^1.0.1" + typed-array-byte-offset "^1.0.2" + typed-array-length "^1.0.6" + unbox-primitive "^1.0.2" + which-typed-array "^1.1.15" + +es-define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz" + integrity sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ== + dependencies: + get-intrinsic "^1.2.4" + +es-errors@^1.1.0, es-errors@^1.2.1, es-errors@^1.3.0: + version "1.3.0" + resolved "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz" + integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== + +es-iterator-helpers@^1.0.15, es-iterator-helpers@^1.0.17: + version "1.0.19" + resolved "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.19.tgz" + integrity sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.3" + es-errors "^1.3.0" + es-set-tostringtag "^2.0.3" + function-bind "^1.1.2" + get-intrinsic "^1.2.4" + globalthis "^1.0.3" + has-property-descriptors "^1.0.2" + has-proto "^1.0.3" + has-symbols "^1.0.3" + internal-slot "^1.0.7" + iterator.prototype "^1.1.2" + safe-array-concat "^1.1.2" + +es-object-atoms@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz" + integrity sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw== + dependencies: + es-errors "^1.3.0" + +es-set-tostringtag@^2.0.3: + version "2.0.3" + resolved "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz" + integrity sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ== + dependencies: + get-intrinsic "^1.2.4" + has-tostringtag "^1.0.2" + hasown "^2.0.1" + +es-shim-unscopables@^1.0.0, es-shim-unscopables@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz" + integrity sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw== + dependencies: + hasown "^2.0.0" + +es-to-primitive@^1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + +eslint-config-next@14.2.3: + version "14.2.3" + resolved "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-14.2.3.tgz" + integrity sha512-ZkNztm3Q7hjqvB1rRlOX8P9E/cXRL9ajRcs8jufEtwMfTVYRqnmtnaSu57QqHyBlovMuiB8LEzfLBkh5RYV6Fg== + dependencies: + "@next/eslint-plugin-next" "14.2.3" + "@rushstack/eslint-patch" "^1.3.3" + "@typescript-eslint/parser" "^5.4.2 || ^6.0.0 || 7.0.0 - 7.2.0" + eslint-import-resolver-node "^0.3.6" + eslint-import-resolver-typescript "^3.5.2" + eslint-plugin-import "^2.28.1" + eslint-plugin-jsx-a11y "^6.7.1" + eslint-plugin-react "^7.33.2" + eslint-plugin-react-hooks "^4.5.0 || 5.0.0-canary-7118f5dd7-20230705" + +eslint-import-resolver-node@^0.3.6, eslint-import-resolver-node@^0.3.9: + version "0.3.9" + resolved "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz" + integrity sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g== + dependencies: + debug "^3.2.7" + is-core-module "^2.13.0" + resolve "^1.22.4" + +eslint-import-resolver-typescript@^3.5.2: + version "3.6.1" + resolved "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.6.1.tgz" + integrity sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg== + dependencies: + debug "^4.3.4" + enhanced-resolve "^5.12.0" + eslint-module-utils "^2.7.4" + fast-glob "^3.3.1" + get-tsconfig "^4.5.0" + is-core-module "^2.11.0" + is-glob "^4.0.3" + +eslint-module-utils@^2.7.4, eslint-module-utils@^2.8.0: + version "2.8.1" + resolved "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz" + integrity sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q== + dependencies: + debug "^3.2.7" + +eslint-plugin-import@^2.28.1: + version "2.29.1" + resolved "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz" + integrity sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw== + dependencies: + array-includes "^3.1.7" + array.prototype.findlastindex "^1.2.3" + array.prototype.flat "^1.3.2" + array.prototype.flatmap "^1.3.2" + debug "^3.2.7" + doctrine "^2.1.0" + eslint-import-resolver-node "^0.3.9" + eslint-module-utils "^2.8.0" + hasown "^2.0.0" + is-core-module "^2.13.1" + is-glob "^4.0.3" + minimatch "^3.1.2" + object.fromentries "^2.0.7" + object.groupby "^1.0.1" + object.values "^1.1.7" + semver "^6.3.1" + tsconfig-paths "^3.15.0" + +eslint-plugin-jsx-a11y@^6.7.1: + version "6.8.0" + resolved "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.8.0.tgz" + integrity sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA== + dependencies: + "@babel/runtime" "^7.23.2" + aria-query "^5.3.0" + array-includes "^3.1.7" + array.prototype.flatmap "^1.3.2" + ast-types-flow "^0.0.8" + axe-core "=4.7.0" + axobject-query "^3.2.1" + damerau-levenshtein "^1.0.8" + emoji-regex "^9.2.2" + es-iterator-helpers "^1.0.15" + hasown "^2.0.0" + jsx-ast-utils "^3.3.5" + language-tags "^1.0.9" + minimatch "^3.1.2" + object.entries "^1.1.7" + object.fromentries "^2.0.7" + +"eslint-plugin-react-hooks@^4.5.0 || 5.0.0-canary-7118f5dd7-20230705": + version "4.6.2" + resolved "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz" + integrity sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ== + +eslint-plugin-react@^7.33.2: + version "7.34.1" + resolved "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.34.1.tgz" + integrity sha512-N97CxlouPT1AHt8Jn0mhhN2RrADlUAsk1/atcT2KyA/l9Q/E6ll7OIGwNumFmWfZ9skV3XXccYS19h80rHtgkw== + dependencies: + array-includes "^3.1.7" + array.prototype.findlast "^1.2.4" + array.prototype.flatmap "^1.3.2" + array.prototype.toreversed "^1.1.2" + array.prototype.tosorted "^1.1.3" + doctrine "^2.1.0" + es-iterator-helpers "^1.0.17" + estraverse "^5.3.0" + jsx-ast-utils "^2.4.1 || ^3.0.0" + minimatch "^3.1.2" + object.entries "^1.1.7" + object.fromentries "^2.0.7" + object.hasown "^1.1.3" + object.values "^1.1.7" + prop-types "^15.8.1" + resolve "^2.0.0-next.5" + semver "^6.3.1" + string.prototype.matchall "^4.0.10" + +eslint-scope@^7.2.2: + version "7.2.2" + resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz" + integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== + dependencies: + esrecurse "^4.3.0" + estraverse "^5.2.0" + +eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: + version "3.4.3" + resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz" + integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== + +eslint@^8: + version "8.57.0" + resolved "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz" + integrity sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ== + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@eslint-community/regexpp" "^4.6.1" + "@eslint/eslintrc" "^2.1.4" + "@eslint/js" "8.57.0" + "@humanwhocodes/config-array" "^0.11.14" + "@humanwhocodes/module-importer" "^1.0.1" + "@nodelib/fs.walk" "^1.2.8" + "@ungap/structured-clone" "^1.2.0" + ajv "^6.12.4" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.3.2" + doctrine "^3.0.0" + escape-string-regexp "^4.0.0" + eslint-scope "^7.2.2" + eslint-visitor-keys "^3.4.3" + espree "^9.6.1" + esquery "^1.4.2" + esutils "^2.0.2" + fast-deep-equal "^3.1.3" + file-entry-cache "^6.0.1" + find-up "^5.0.0" + glob-parent "^6.0.2" + globals "^13.19.0" + graphemer "^1.4.0" + ignore "^5.2.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + is-path-inside "^3.0.3" + js-yaml "^4.1.0" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" + lodash.merge "^4.6.2" + minimatch "^3.1.2" + natural-compare "^1.4.0" + optionator "^0.9.3" + strip-ansi "^6.0.1" + text-table "^0.2.0" + +espree@^9.6.0, espree@^9.6.1: + version "9.6.1" + resolved "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz" + integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== + dependencies: + acorn "^8.9.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^3.4.1" + +esquery@^1.4.2: + version "1.5.0" + resolved "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz" + integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== + dependencies: + estraverse "^5.1.0" + +esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0: + version "5.3.0" + resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +events@3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" + integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== + +exponential-backoff@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/exponential-backoff/-/exponential-backoff-3.1.1.tgz#64ac7526fe341ab18a39016cd22c787d01e00bf6" + integrity sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw== + +extract-files@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/extract-files/-/extract-files-9.0.0.tgz#8a7744f2437f81f5ed3250ed9f1550de902fe54a" + integrity sha512-CvdFfHkC95B4bBBk36hcEmvdR2awOdhhVUYH6S/zrVj3477zven/fJMYg7121h4T1xHZC+tetUpubpAhxwI7hQ== + +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: + version "3.1.3" + resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-glob@^3.2.9, fast-glob@^3.3.0, fast-glob@^3.3.1: + version "3.3.2" + resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz" + integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + +fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-levenshtein@^2.0.6: + version "2.0.6" + resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz" + integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== + +fastest-levenshtein@^1.0.16: + version "1.0.16" + resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz#210e61b6ff181de91ea9b3d1b84fdedd47e034e5" + integrity sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg== + +fastq@^1.6.0: + version "1.17.1" + resolved "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz" + integrity sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w== + dependencies: + reusify "^1.0.4" + +file-entry-cache@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz" + integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== + dependencies: + flat-cache "^3.0.4" + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz" + 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 sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ== + +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@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + +flat-cache@^3.0.4: + version "3.2.0" + resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz" + integrity sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw== + dependencies: + flatted "^3.2.9" + keyv "^4.5.3" + rimraf "^3.0.2" + +flatted@^3.2.9: + version "3.3.1" + resolved "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz" + integrity sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw== + +for-each@^0.3.3: + version "0.3.3" + resolved "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz" + integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== + dependencies: + is-callable "^1.1.3" + +foreground-child@^3.1.0: + version "3.1.1" + resolved "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz" + integrity sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg== + dependencies: + cross-spawn "^7.0.0" + signal-exit "^4.0.1" + +form-data@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" + integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + +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-minipass@^3.0.0, fs-minipass@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-3.0.3.tgz#79a85981c4dc120065e96f62086bf6f9dc26cc54" + integrity sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw== + dependencies: + minipass "^7.0.3" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + +fsevents@~2.3.2: + version "2.3.3" + resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== + +function-bind@^1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== + +function.prototype.name@^1.1.5, function.prototype.name@^1.1.6: + version "1.1.6" + resolved "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz" + integrity sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + functions-have-names "^1.2.3" + +functions-have-names@^1.2.3: + version "1.2.3" + resolved "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz" + integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== + +generate-function@^2.0.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.3.1.tgz#f069617690c10c868e73b8465746764f97c3479f" + integrity sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ== + dependencies: + is-property "^1.0.2" + +generate-object-property@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/generate-object-property/-/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0" + integrity sha512-TuOwZWgJ2VAMEGJvAyPWvpqxSANF0LDpmyHauMjFYzaACvn+QTT/AZomvPCzVBV7yDN3OmwHQ5OvHaeLKre3JQ== + dependencies: + is-property "^1.0.0" + +get-caller-file@^2.0.1: + 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.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.3, get-intrinsic@^1.2.4: + version "1.2.4" + resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz" + integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ== + dependencies: + es-errors "^1.3.0" + function-bind "^1.1.2" + has-proto "^1.0.1" + has-symbols "^1.0.3" + hasown "^2.0.0" + +get-nonce@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/get-nonce/-/get-nonce-1.0.1.tgz#fdf3f0278073820d2ce9426c18f07481b1e0cdf3" + integrity sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q== + +get-symbol-description@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz" + integrity sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg== + dependencies: + call-bind "^1.0.5" + es-errors "^1.3.0" + get-intrinsic "^1.2.4" + +get-tsconfig@^4.5.0: + version "4.7.4" + resolved "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.4.tgz" + integrity sha512-ofbkKj+0pjXjhejr007J/fLf+sW+8H7K5GCm+msC8q3IpvgjobpyPqSRFemNyIMxklC0zeJpi7VDFna19FacvQ== + dependencies: + resolve-pkg-maps "^1.0.0" + +glob-parent@^5.1.2, glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob-parent@^6.0.2: + version "6.0.2" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz" + integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== + dependencies: + is-glob "^4.0.3" + +glob@10.3.10: + version "10.3.10" + resolved "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz" + integrity sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g== + dependencies: + foreground-child "^3.1.0" + jackspeak "^2.3.5" + minimatch "^9.0.1" + minipass "^5.0.0 || ^6.0.2 || ^7.0.0" + path-scurry "^1.10.1" + +glob@^10.2.2, glob@^10.3.15: + version "10.3.15" + resolved "https://registry.yarnpkg.com/glob/-/glob-10.3.15.tgz#e72bc61bc3038c90605f5dd48543dc67aaf3b50d" + integrity sha512-0c6RlJt1TICLyvJYIApxb8GsXoai0KUP7AxKKAtsYXdgJR1mGEUa7DgwShbdk1nly0PYoZj01xd4hzbq3fsjpw== + dependencies: + foreground-child "^3.1.0" + jackspeak "^2.3.6" + minimatch "^9.0.1" + minipass "^7.0.4" + path-scurry "^1.11.0" + +glob@^10.3.10: + version "10.3.12" + resolved "https://registry.npmjs.org/glob/-/glob-10.3.12.tgz" + integrity sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg== + dependencies: + foreground-child "^3.1.0" + jackspeak "^2.3.6" + minimatch "^9.0.1" + minipass "^7.0.4" + path-scurry "^1.10.2" + +glob@^7.1.3: + version "7.2.3" + resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + +globals@^13.19.0: + version "13.24.0" + resolved "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz" + integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ== + dependencies: + type-fest "^0.20.2" + +globalthis@^1.0.3: + version "1.0.4" + resolved "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz" + integrity sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ== + dependencies: + define-properties "^1.2.1" + gopd "^1.0.1" + +globby@^11.1.0: + version "11.1.0" + resolved "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz" + integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.2.9" + ignore "^5.2.0" + merge2 "^1.4.1" + slash "^3.0.0" + +gopd@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz" + integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== + dependencies: + get-intrinsic "^1.1.3" + +graceful-fs@^4.2.11, graceful-fs@^4.2.4, graceful-fs@^4.2.6: + version "4.2.11" + resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== + +graphemer@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz" + integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== + +graphql-request@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/graphql-request/-/graphql-request-5.2.0.tgz#a05fb54a517d91bb2d7aefa17ade4523dc5ebdca" + integrity sha512-pLhKIvnMyBERL0dtFI3medKqWOz/RhHdcgbZ+hMMIb32mEPa5MJSzS4AuXxfI4sRAu6JVVk5tvXuGfCWl9JYWQ== + dependencies: + "@graphql-typed-document-node/core" "^3.1.1" + cross-fetch "^3.1.5" + extract-files "^9.0.0" + form-data "^3.0.0" + +graphql@^16.8.1: + version "16.8.1" + resolved "https://registry.yarnpkg.com/graphql/-/graphql-16.8.1.tgz#1930a965bef1170603702acdb68aedd3f3cf6f07" + integrity sha512-59LZHPdGZVh695Ud9lRzPBVTtlX9ZCV150Er2W43ro37wVof0ctenSaskPPjN7lVTIN8mSZt8PHUNKZuNQUuxw== + +has-bigints@^1.0.1, has-bigints@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz" + integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-property-descriptors@^1.0.0, has-property-descriptors@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz" + integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg== + dependencies: + es-define-property "^1.0.0" + +has-proto@^1.0.1, has-proto@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz" + integrity sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q== + +has-symbols@^1.0.2, has-symbols@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz" + integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== + +has-tostringtag@^1.0.0, has-tostringtag@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz" + integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw== + dependencies: + has-symbols "^1.0.3" + +hasown@^2.0.0, hasown@^2.0.1, hasown@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz" + integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== + dependencies: + function-bind "^1.1.2" + +hosted-git-info@^7.0.0, hosted-git-info@^7.0.2: + version "7.0.2" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-7.0.2.tgz#9b751acac097757667f30114607ef7b661ff4f17" + integrity sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w== + dependencies: + lru-cache "^10.0.1" + +http-cache-semantics@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz#abe02fcb2985460bf0323be664436ec3476a6d5a" + integrity sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ== + +http-errors@1.7.2: + version "1.7.2" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f" + integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg== + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.1" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.0" + +http-errors@^1.7.2: + 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-proxy-agent@^7.0.0: + version "7.0.2" + resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz#9a8b1f246866c028509486585f62b8f2c18c270e" + integrity sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig== + dependencies: + agent-base "^7.1.0" + debug "^4.3.4" + +https-proxy-agent@^7.0.1: + version "7.0.4" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz#8e97b841a029ad8ddc8731f26595bad868cb4168" + integrity sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg== + dependencies: + agent-base "^7.0.2" + debug "4" + +i@^0.3.7: + version "0.3.7" + resolved "https://registry.yarnpkg.com/i/-/i-0.3.7.tgz#2a7437a923d59c14b17243dc63a549af24d85799" + integrity sha512-FYz4wlXgkQwIPqhzC5TdNMLSE5+GS1IIDJZY/1ZiEPCT2S3COUVZeT5OW4BmW4r5LHLQuOosSwsvnroG9GR59Q== + +iconv-lite@^0.6.2: + version "0.6.3" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" + integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== + dependencies: + safer-buffer ">= 2.1.2 < 3.0.0" + +ignore-walk@^6.0.4: + version "6.0.5" + resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-6.0.5.tgz#ef8d61eab7da169078723d1f82833b36e200b0dd" + integrity sha512-VuuG0wCnjhnylG1ABXT3dAuIpTNDs/G8jlpmwXY03fXoXy/8ZK8/T+hMzt8L4WnrLCJgdybqgPagnF/f97cg3A== + dependencies: + minimatch "^9.0.0" + +ignore@^5.2.0: + version "5.3.1" + resolved "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz" + integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw== + +import-fresh@^3.2.1: + version "3.3.0" + resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz" + integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== + +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== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@2.0.4: + version "2.0.4" + resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +inherits@2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + integrity sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw== + +ini@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/ini/-/ini-4.1.2.tgz#7f646dbd9caea595e61f88ef60bfff8b01f8130a" + integrity sha512-AMB1mvwR1pyBFY/nSevUX6y8nJWS63/SzUKD3JyQn97s4xgIdgQPT75IRouIiBAN4yLQBUShNYVW0+UG25daCw== + +init-package-json@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/init-package-json/-/init-package-json-6.0.3.tgz#2552fba75b6eed2495dc97f44183e2e5a5bcf8b0" + integrity sha512-Zfeb5ol+H+eqJWHTaGca9BovufyGeIfr4zaaBorPmJBMrJ+KBnN+kQx2ZtXdsotUTgldHmHQV44xvUWOUA7E2w== + dependencies: + "@npmcli/package-json" "^5.0.0" + npm-package-arg "^11.0.0" + promzard "^1.0.0" + read "^3.0.1" + semver "^7.3.5" + validate-npm-package-license "^3.0.4" + validate-npm-package-name "^5.0.0" + +internal-slot@^1.0.7: + version "1.0.7" + resolved "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz" + integrity sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g== + dependencies: + es-errors "^1.3.0" + hasown "^2.0.0" + side-channel "^1.0.4" + +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-address@^9.0.5: + version "9.0.5" + resolved "https://registry.yarnpkg.com/ip-address/-/ip-address-9.0.5.tgz#117a960819b08780c3bd1f14ef3c1cc1d3f3ea5a" + integrity sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g== + dependencies: + jsbn "1.1.0" + sprintf-js "^1.1.3" + +ip-regex@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-5.0.0.tgz#cd313b2ae9c80c07bd3851e12bf4fa4dc5480632" + integrity sha512-fOCG6lhoKKakwv+C6KdsOnGvgXnmgfmp0myi3bcNwj3qfwPAxRKWEuFhvEFF7ceYIz6+1jRZ+yguLFAmUNPEfw== + +is-array-buffer@^3.0.4: + version "3.0.4" + resolved "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz" + integrity sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.2.1" + +is-async-function@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz" + integrity sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA== + dependencies: + has-tostringtag "^1.0.0" + +is-bigint@^1.0.1: + version "1.0.4" + resolved "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz" + integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== + dependencies: + has-bigints "^1.0.1" + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-boolean-object@^1.1.0: + version "1.1.2" + resolved "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz" + integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: + version "1.2.7" + resolved "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz" + integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== + +is-cidr@^5.0.5: + version "5.0.5" + resolved "https://registry.yarnpkg.com/is-cidr/-/is-cidr-5.0.5.tgz#6898e3e84a320cecaa505654b33463399baf9e8e" + integrity sha512-zDlCvz2v8dBpumuGD4/fc7wzFKY6UYOvFW29JWSstdJoByGN3TKwS0tFA9VWc7DM01VOVOn/DaR84D8Mihp9Rg== + dependencies: + cidr-regex "^4.0.4" + +is-core-module@^2.11.0, is-core-module@^2.13.0, is-core-module@^2.13.1, is-core-module@^2.8.1: + version "2.13.1" + resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz" + integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== + dependencies: + hasown "^2.0.0" + +is-data-view@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz" + integrity sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w== + dependencies: + is-typed-array "^1.1.13" + +is-date-object@^1.0.1, is-date-object@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz" + integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== + dependencies: + has-tostringtag "^1.0.0" + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-finalizationregistry@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz" + integrity sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw== + dependencies: + call-bind "^1.0.2" + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-generator-function@^1.0.10: + version "1.0.10" + resolved "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz" + integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A== + dependencies: + has-tostringtag "^1.0.0" + +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: + version "4.0.3" + resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-lambda@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-lambda/-/is-lambda-1.0.1.tgz#3d9877899e6a53efc0160504cde15f82e6f061d5" + integrity sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ== + +is-map@^2.0.3: + version "2.0.3" + resolved "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz" + integrity sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw== + +is-my-ip-valid@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-my-ip-valid/-/is-my-ip-valid-1.0.1.tgz#f7220d1146257c98672e6fba097a9f3f2d348442" + integrity sha512-jxc8cBcOWbNK2i2aTkCZP6i7wkHF1bqKFrwEHuN5Jtg5BSaZHUZQ/JTOJwoV41YvHnOaRyWWh72T/KvfNz9DJg== + +is-my-json-valid@^2.20.6: + version "2.20.6" + resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.20.6.tgz#a9d89e56a36493c77bda1440d69ae0dc46a08387" + integrity sha512-1JQwulVNjx8UqkPE/bqDaxtH4PXCe/2VRh/y3p99heOV87HG4Id5/VfDswd+YiAfHcRTfDlWgISycnHuhZq1aw== + dependencies: + generate-function "^2.0.0" + generate-object-property "^1.1.0" + is-my-ip-valid "^1.0.0" + jsonpointer "^5.0.0" + xtend "^4.0.0" + +is-negative-zero@^2.0.3: + version "2.0.3" + resolved "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz" + integrity sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw== + +is-number-object@^1.0.4: + version "1.0.7" + resolved "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz" + integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== + dependencies: + has-tostringtag "^1.0.0" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-path-inside@^3.0.3: + version "3.0.3" + resolved "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz" + integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== + +is-property@^1.0.0, is-property@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84" + integrity sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g== + +is-regex@^1.1.4: + version "1.1.4" + resolved "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz" + integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-set@^2.0.3: + version "2.0.3" + resolved "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz" + integrity sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg== + +is-shared-array-buffer@^1.0.2, is-shared-array-buffer@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz" + integrity sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg== + dependencies: + call-bind "^1.0.7" + +is-string@^1.0.5, is-string@^1.0.7: + version "1.0.7" + resolved "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz" + 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.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz" + integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== + dependencies: + has-symbols "^1.0.2" + +is-typed-array@^1.1.13: + version "1.1.13" + resolved "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz" + integrity sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw== + dependencies: + which-typed-array "^1.1.14" + +is-weakmap@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz" + integrity sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w== + +is-weakref@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz" + integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== + dependencies: + call-bind "^1.0.2" + +is-weakset@^2.0.3: + version "2.0.3" + resolved "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.3.tgz" + integrity sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ== + dependencies: + call-bind "^1.0.7" + get-intrinsic "^1.2.4" + +isarray@^2.0.5: + version "2.0.5" + resolved "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz" + integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +isexe@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-3.1.1.tgz#4a407e2bd78ddfb14bea0c27c6f7072dde775f0d" + integrity sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ== + +iterator.prototype@^1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz" + integrity sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w== + dependencies: + define-properties "^1.2.1" + get-intrinsic "^1.2.1" + has-symbols "^1.0.3" + reflect.getprototypeof "^1.0.4" + set-function-name "^2.0.1" + +jackspeak@^2.3.5, jackspeak@^2.3.6: + version "2.3.6" + resolved "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz" + integrity sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ== + dependencies: + "@isaacs/cliui" "^8.0.2" + optionalDependencies: + "@pkgjs/parseargs" "^0.11.0" + +jiti@^1.21.0: + version "1.21.0" + resolved "https://registry.npmjs.org/jiti/-/jiti-1.21.0.tgz" + integrity sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q== + +js-sha256@0.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-tokens@^3.0.0 || ^4.0.0": + version "4.0.0" + resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + +jsbn@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-1.1.0.tgz#b01307cb29b618a1ed26ec79e911f803c4da0040" + integrity sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A== + +json-buffer@3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz" + integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== + +json-parse-even-better-errors@^3.0.0, json-parse-even-better-errors@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.2.tgz#b43d35e89c0f3be6b5fbbe9dc6c82467b30c28da" + integrity sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ== + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-schema-traverse@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" + integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz" + integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== + +json-stringify-nice@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/json-stringify-nice/-/json-stringify-nice-1.1.4.tgz#2c937962b80181d3f317dd39aa323e14f5a60a67" + integrity sha512-5Z5RFW63yxReJ7vANgW6eZFGWaQvnPE3WNmZoOJrSkGju2etKA2L5rrOa1sm877TVTFt57A80BH1bArcmlLfPw== + +json5@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz" + integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA== + dependencies: + minimist "^1.2.0" + +jsonparse@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" + integrity sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg== + +jsonpointer@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-5.0.1.tgz#2110e0af0900fd37467b5907ecd13a7884a1b559" + integrity sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ== + +"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.3.5: + version "3.3.5" + resolved "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz" + integrity sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ== + dependencies: + array-includes "^3.1.6" + array.prototype.flat "^1.3.1" + object.assign "^4.1.4" + object.values "^1.1.6" + +just-diff-apply@^5.2.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/just-diff-apply/-/just-diff-apply-5.5.0.tgz#771c2ca9fa69f3d2b54e7c3f5c1dfcbcc47f9f0f" + integrity sha512-OYTthRfSh55WOItVqwpefPtNt2VdKsq5AnAK6apdtR6yCH8pr0CmSr710J0Mf+WdQy7K/OzMy7K2MgAfdQURDw== + +just-diff@^6.0.0: + version "6.0.2" + resolved "https://registry.yarnpkg.com/just-diff/-/just-diff-6.0.2.tgz#03b65908543ac0521caf6d8eb85035f7d27ea285" + integrity sha512-S59eriX5u3/QhMNq3v/gm8Kd0w8OS6Tz2FS1NG4blv+z0MuQcBRJyFWjdovM0Rad4/P4aUPFtnkNjMjyMlMSYA== + +keyv@^4.5.3: + version "4.5.4" + resolved "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz" + integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== + dependencies: + json-buffer "3.0.1" + +language-subtag-registry@^0.3.20: + version "0.3.22" + resolved "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz" + integrity sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w== + +language-tags@^1.0.9: + version "1.0.9" + resolved "https://registry.npmjs.org/language-tags/-/language-tags-1.0.9.tgz" + integrity sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA== + dependencies: + language-subtag-registry "^0.3.20" + +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + dependencies: + prelude-ls "^1.2.1" + type-check "~0.4.0" + +libnpmaccess@^8.0.6: + version "8.0.6" + resolved "https://registry.yarnpkg.com/libnpmaccess/-/libnpmaccess-8.0.6.tgz#73be4c236258babc0a0bca6d3b6a93a6adf937cf" + integrity sha512-uM8DHDEfYG6G5gVivVl+yQd4pH3uRclHC59lzIbSvy7b5FEwR+mU49Zq1jEyRtRFv7+M99mUW9S0wL/4laT4lw== + dependencies: + npm-package-arg "^11.0.2" + npm-registry-fetch "^17.0.1" + +libnpmdiff@^6.1.2: + version "6.1.2" + resolved "https://registry.yarnpkg.com/libnpmdiff/-/libnpmdiff-6.1.2.tgz#1c7b78528e91cd001213faa73756e02bfb04a92b" + integrity sha512-cyGmfI9RsAugdbWWSE9eH7tj5/igcRJHFNksIevwXn6mobu+Kna2uX8uWgmlpu90Bg23nPW2rtSJIbGi7IPhyg== + dependencies: + "@npmcli/arborist" "^7.5.2" + "@npmcli/installed-package-contents" "^2.1.0" + binary-extensions "^2.3.0" + diff "^5.1.0" + minimatch "^9.0.4" + npm-package-arg "^11.0.2" + pacote "^18.0.6" + tar "^6.2.1" + +libnpmexec@^8.1.1: + version "8.1.1" + resolved "https://registry.yarnpkg.com/libnpmexec/-/libnpmexec-8.1.1.tgz#d9ab835031324b37b9c70973b7465ebdc414d98f" + integrity sha512-KGXr+4WvaMNqU27z0qICbFz2EKzYWrcxWoHKWmSX3A1UyEeuLFc86Pie6cbCs5JeKN8TMVyLBJ9z25PHh458eg== + dependencies: + "@npmcli/arborist" "^7.5.2" + "@npmcli/run-script" "^8.1.0" + ci-info "^4.0.0" + npm-package-arg "^11.0.2" + pacote "^18.0.6" + proc-log "^4.2.0" + read "^3.0.1" + read-package-json-fast "^3.0.2" + semver "^7.3.7" + walk-up-path "^3.0.1" + +libnpmfund@^5.0.10: + version "5.0.10" + resolved "https://registry.yarnpkg.com/libnpmfund/-/libnpmfund-5.0.10.tgz#20bc0c5bbb773f63728a5c91f360219538499ecb" + integrity sha512-WkjxfGC7sdGD7lXYsVNKi3NogROJMTeIFRgFicd0UxEk2eI0CKSC8Tcn5zuazmZse1/Jg0AWHoSgJWpy+0ZXvg== + dependencies: + "@npmcli/arborist" "^7.5.2" + +libnpmhook@^10.0.5: + version "10.0.5" + resolved "https://registry.yarnpkg.com/libnpmhook/-/libnpmhook-10.0.5.tgz#22cbaf43b20ab56a797c19d254af0cf2ffb5c985" + integrity sha512-XulT+N/s3o9oFlIq6pGRv3OG2qR1NVRbVQOKLchycDwyf16RZA3oXbeEgs2H3oE7hRZPUMBZqsalQXMMPal3cQ== + dependencies: + aproba "^2.0.0" + npm-registry-fetch "^17.0.1" + +libnpmorg@^6.0.6: + version "6.0.6" + resolved "https://registry.yarnpkg.com/libnpmorg/-/libnpmorg-6.0.6.tgz#657c5e8b51447bb772d7d1d09c3a13693ce867b7" + integrity sha512-4MVxsAS4H2z7su/sU0GsrirfBm4ssfqPRSDvoZ8qmRw58kEWJ0qE0cQ2VilRlFgCWKzKPhfoPeyNPyxBTnOusA== + dependencies: + aproba "^2.0.0" + npm-registry-fetch "^17.0.1" + +libnpmpack@^7.0.2: + version "7.0.2" + resolved "https://registry.yarnpkg.com/libnpmpack/-/libnpmpack-7.0.2.tgz#0c67a8df79ebbc4de58958df538135cc66f09e40" + integrity sha512-hVtWu8P7JIl6SHGoVvECRp2Y+5qHeaUhTLzHpMAPi4iG9dFnY9YgitrAAMfUA/qZhLEvuD+KoYJ04mM7chXt+Q== + dependencies: + "@npmcli/arborist" "^7.5.2" + "@npmcli/run-script" "^8.1.0" + npm-package-arg "^11.0.2" + pacote "^18.0.6" + +libnpmpublish@^9.0.8: + version "9.0.8" + resolved "https://registry.yarnpkg.com/libnpmpublish/-/libnpmpublish-9.0.8.tgz#ae56e77b8418b704e25868b214ae6127d03f6069" + integrity sha512-sIsWBSAT7ugDPrV72/Js1vYpZBZuOqlMOOZmpXh2Mn5Tjh4Ycv3qYQGHX19g5wdOuQw4wgluSzF/z7EFSO084g== + dependencies: + ci-info "^4.0.0" + normalize-package-data "^6.0.1" + npm-package-arg "^11.0.2" + npm-registry-fetch "^17.0.1" + proc-log "^4.2.0" + semver "^7.3.7" + sigstore "^2.2.0" + ssri "^10.0.6" + +libnpmsearch@^7.0.5: + version "7.0.5" + resolved "https://registry.yarnpkg.com/libnpmsearch/-/libnpmsearch-7.0.5.tgz#abd376aaf613b6bde176640d35956fa5fc0d1945" + integrity sha512-GSwFPsPfHsOgWM1bTArG+zSmax5ghqCKh81296/rWLw9nBgBWwHj1MJSZ68SfkjAXgMcr34dHzlKJZjRDIjSNQ== + dependencies: + npm-registry-fetch "^17.0.1" + +libnpmteam@^6.0.5: + version "6.0.5" + resolved "https://registry.yarnpkg.com/libnpmteam/-/libnpmteam-6.0.5.tgz#95cb341806bc23d137478ad1d30bb353efda2711" + integrity sha512-iJW4Cq42GMqMwZEV+Mx8ZLj0Np5kGXQ9P/BAekHjIpYC1v3/vJqbmfJkzkwFvGxEhUotmx+xpLChZCDJ7c3rxA== + dependencies: + aproba "^2.0.0" + npm-registry-fetch "^17.0.1" + +libnpmversion@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/libnpmversion/-/libnpmversion-6.0.2.tgz#55757f71ed9d4c5f7ef999f8abbd5697ef17567d" + integrity sha512-rbc4saGNaXeLMvby8Ta5sOgOXQTrYIXxg+MaA7Uy2wMhESb5ugIfkXJPfgMwLOxQ3o+xDFzNhul6KLjsCyV4tA== + dependencies: + "@npmcli/git" "^5.0.7" + "@npmcli/run-script" "^8.1.0" + json-parse-even-better-errors "^3.0.2" + proc-log "^4.2.0" + semver "^7.3.7" + +lilconfig@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz" + integrity sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ== + +lilconfig@^3.0.0: + version "3.1.1" + resolved "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.1.tgz" + integrity sha512-O18pf7nyvHTckunPWCV1XUNXU1piu01y2b7ATJ0ppkUkk8ocqVWBrYjJBCwHDjD/ZWcfyrA0P4gKhzWGi5EINQ== + +lines-and-columns@^1.1.6: + version "1.2.4" + resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz" + integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== + +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" + +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" + +lodash.merge@^4.6.2: + version "4.6.2" + resolved "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + +lodash@^4.17.21: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + +lru-cache@^10.0.1, lru-cache@^10.2.0, lru-cache@^10.2.2: + version "10.2.2" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz" + integrity sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ== + +lru_map@0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/lru_map/-/lru_map-0.4.1.tgz#f7b4046283c79fb7370c36f8fca6aee4324b0a98" + integrity sha512-I+lBvqMMFfqaV8CJCISjI3wbjmwVu/VyOoU7+qtu9d7ioW5klMgsTTiUOUp+DJvfTTzKXoPbyC6YfgkNcyPSOg== + +lucide-react@^0.378.0: + version "0.378.0" + resolved "https://registry.npmjs.org/lucide-react/-/lucide-react-0.378.0.tgz" + integrity sha512-u6EPU8juLUk9ytRcyapkWI18epAv3RU+6+TC23ivjR0e+glWKBobFeSgRwOIJihzktILQuy6E0E80P2jVTDR5g== + +make-fetch-happen@^13.0.0, make-fetch-happen@^13.0.1: + version "13.0.1" + resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-13.0.1.tgz#273ba2f78f45e1f3a6dca91cede87d9fa4821e36" + integrity sha512-cKTUFc/rbKUd/9meOvgrpJ2WrNzymt6jfRDdwg5UCnVzv9dTpEj9JS5m3wtziXVCjluIXyL8pcaukYqezIzZQA== + dependencies: + "@npmcli/agent" "^2.0.0" + cacache "^18.0.0" + http-cache-semantics "^4.1.1" + is-lambda "^1.0.1" + minipass "^7.0.2" + minipass-fetch "^3.0.0" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.4" + negotiator "^0.6.3" + proc-log "^4.2.0" + promise-retry "^2.0.1" + ssri "^10.0.0" + +memory-pager@^1.0.2: + version "1.5.0" + resolved "https://registry.yarnpkg.com/memory-pager/-/memory-pager-1.5.0.tgz#d8751655d22d384682741c972f2c3d6dfa3e66b5" + integrity sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg== + +merge2@^1.3.0, merge2@^1.4.1: + version "1.4.1" + resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +micromatch@^4.0.4, micromatch@^4.0.5: + version "4.0.5" + resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz" + integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== + dependencies: + braces "^3.0.2" + picomatch "^2.3.1" + +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@^2.1.12: + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +minimatch@9.0.3: + version "9.0.3" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz" + integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg== + dependencies: + brace-expansion "^2.0.1" + +minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: + version "3.1.2" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +minimatch@^9.0.0, minimatch@^9.0.1, minimatch@^9.0.4: + version "9.0.4" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz" + integrity sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw== + dependencies: + brace-expansion "^2.0.1" + +minimist@^1.2.0, minimist@^1.2.6: + version "1.2.8" + resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz" + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== + +minipass-collect@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-2.0.1.tgz#1621bc77e12258a12c60d34e2276ec5c20680863" + integrity sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw== + dependencies: + minipass "^7.0.3" + +minipass-fetch@^3.0.0: + version "3.0.5" + resolved "https://registry.yarnpkg.com/minipass-fetch/-/minipass-fetch-3.0.5.tgz#f0f97e40580affc4a35cc4a1349f05ae36cb1e4c" + integrity sha512-2N8elDQAtSnFV0Dk7gt15KHsS0Fyz6CbYZ360h0WTYV1Ty46li3rAXVOQj1THMNLdmrD9Vt5pBPtWtVkpwGBqg== + dependencies: + minipass "^7.0.3" + minipass-sized "^1.0.3" + minizlib "^2.1.2" + optionalDependencies: + encoding "^0.1.13" + +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-json-stream@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz#7edbb92588fbfc2ff1db2fc10397acb7b6b44aa7" + integrity sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg== + dependencies: + jsonparse "^1.3.1" + minipass "^3.0.0" + +minipass-pipeline@^1.2.4: + 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-sized@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/minipass-sized/-/minipass-sized-1.0.3.tgz#70ee5a7c5052070afacfbc22977ea79def353b70" + integrity sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g== + dependencies: + minipass "^3.0.0" + +minipass@^3.0.0: + version "3.3.6" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.3.6.tgz#7bba384db3a1520d18c9c0e5251c3444e95dd94a" + integrity sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw== + dependencies: + yallist "^4.0.0" + +minipass@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-5.0.0.tgz#3e9788ffb90b694a5d0ec94479a45b5d8738133d" + integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ== + +"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.0.4: + version "7.1.0" + resolved "https://registry.npmjs.org/minipass/-/minipass-7.1.0.tgz" + integrity sha512-oGZRv2OT1lO2UF1zUcwdTb3wqUwI0kBGTgt/T7OdSj6M6N5m3o5uPf0AIW6lVxGGoiWUR7e2AwTE+xiwK8WQig== + +minipass@^7.0.2, minipass@^7.0.3, minipass@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.1.tgz#f7f85aff59aa22f110b20e27692465cf3bf89481" + integrity sha512-UZ7eQ+h8ywIRAW1hIEl2AqdwzJucU/Kp59+8kkZeSvafXhZjul247BvIJjEVFVeON6d7lM46XX1HXCduKAS8VA== + +minizlib@^2.1.1, minizlib@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" + integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== + dependencies: + minipass "^3.0.0" + yallist "^4.0.0" + +mkdirp@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + +mongodb-connection-string-url@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/mongodb-connection-string-url/-/mongodb-connection-string-url-3.0.1.tgz#c13e6ac284ae401752ebafdb8cd7f16c6723b141" + integrity sha512-XqMGwRX0Lgn05TDB4PyG2h2kKO/FfWJyCzYQbIhXUxz7ETt0I/FqHjUeqj37irJ+Dl1ZtU82uYyj14u2XsZKfg== + dependencies: + "@types/whatwg-url" "^11.0.2" + whatwg-url "^13.0.0" + +mongodb@^6.6.2: + version "6.6.2" + resolved "https://registry.yarnpkg.com/mongodb/-/mongodb-6.6.2.tgz#7ecdd788e9162f6c5726cef40bdd2813cc01e56c" + integrity sha512-ZF9Ugo2JCG/GfR7DEb4ypfyJJyiKbg5qBYKRintebj8+DNS33CyGMkWbrS9lara+u+h+yEOGSRiLhFO/g1s1aw== + dependencies: + "@mongodb-js/saslprep" "^1.1.5" + bson "^6.7.0" + mongodb-connection-string-url "^3.0.0" + +ms@2.1.2: + version "2.1.2" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +ms@^2.1.1, ms@^2.1.2: + version "2.1.3" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +mustache@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/mustache/-/mustache-4.0.0.tgz#7f02465dbb5b435859d154831c032acdfbbefb31" + integrity sha512-FJgjyX/IVkbXBXYUwH+OYwQKqWpFPLaLVESd70yHjSDunwzV2hZOoTBvPf4KLoxesUzzyfTH6F784Uqd7Wm5yA== + +mustache@^4.0.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/mustache/-/mustache-4.2.0.tgz#e5892324d60a12ec9c2a73359edca52972bf6f64" + integrity sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ== + +mute-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-1.0.0.tgz#e31bd9fe62f0aed23520aa4324ea6671531e013e" + integrity sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA== + +mz@^2.7.0: + version "2.7.0" + resolved "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz" + integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q== + dependencies: + any-promise "^1.0.0" + object-assign "^4.0.1" + thenify-all "^1.0.0" + +nanoid@3.3.6: + version "3.3.6" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c" + integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== + +nanoid@^3.3.6, nanoid@^3.3.7: + version "3.3.7" + resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz" + integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz" + integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== + +near-abi@0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/near-abi/-/near-abi-0.1.1.tgz#b7ead408ca4ad11de4fe3e595d30a7a8bc5307e0" + integrity sha512-RVDI8O+KVxRpC3KycJ1bpfVj9Zv+xvq9PlW1yIFl46GhrnLw83/72HqHGjGDjQ8DtltkcpSjY9X3YIGZ+1QyzQ== + dependencies: + "@types/json-schema" "^7.0.11" + +near-api-js@^2.1.3, near-api-js@^2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/near-api-js/-/near-api-js-2.1.4.tgz#562bb7047bf3699fbdf78f9a6620366069ad7cd9" + integrity sha512-e1XicyvJvQMtu7qrG8oWyAdjHJJCoy+cvbW6h2Dky4yj7vC85omQz/x7IgKl71VhzDj2/TGUwjTVESp6NSe75A== + dependencies: + "@near-js/accounts" "0.1.4" + "@near-js/crypto" "0.0.5" + "@near-js/keystores" "0.0.5" + "@near-js/keystores-browser" "0.0.5" + "@near-js/keystores-node" "0.0.5" + "@near-js/providers" "0.0.7" + "@near-js/signers" "0.0.5" + "@near-js/transactions" "0.2.1" + "@near-js/types" "0.0.4" + "@near-js/utils" "0.0.4" + "@near-js/wallet-account" "0.0.7" + ajv "^8.11.2" + ajv-formats "^2.1.1" + bn.js "5.2.1" + borsh "^0.7.0" + depd "^2.0.0" + error-polyfill "^0.1.3" + http-errors "^1.7.2" + near-abi "0.1.1" + node-fetch "^2.6.1" + tweetnacl "^1.0.1" + +near-api-js@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/near-api-js/-/near-api-js-4.0.1.tgz#ac99ef0fc11f24a733ba9c93bd7f094311f891dd" + integrity sha512-lBLgxhXhY7M05UI0ppBOzfArkMCXRvtKiHVgpxrSqN/mp3WCcWV5C+Y/dwx9U6JtaNG8UWxrvB8kHqKyWGeisw== + dependencies: + "@near-js/accounts" "1.2.0" + "@near-js/crypto" "1.2.3" + "@near-js/keystores" "0.0.11" + "@near-js/keystores-browser" "0.0.11" + "@near-js/keystores-node" "0.0.11" + "@near-js/providers" "0.2.1" + "@near-js/signers" "0.1.3" + "@near-js/transactions" "1.2.1" + "@near-js/types" "0.2.0" + "@near-js/utils" "0.2.1" + "@near-js/wallet-account" "1.2.1" + "@noble/curves" "1.2.0" + borsh "1.0.0" + depd "2.0.0" + http-errors "1.7.2" + near-abi "0.1.1" + node-fetch "2.6.7" + +negotiator@^0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" + integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== + +next@14.2.3: + version "14.2.3" + resolved "https://registry.npmjs.org/next/-/next-14.2.3.tgz" + integrity sha512-dowFkFTR8v79NPJO4QsBUtxv0g9BrS/phluVpMAt2ku7H+cbcBJlopXjkWlwxrk/xGqMemr7JkGPGemPrLLX7A== + dependencies: + "@next/env" "14.2.3" + "@swc/helpers" "0.5.5" + busboy "1.6.0" + caniuse-lite "^1.0.30001579" + graceful-fs "^4.2.11" + postcss "8.4.31" + styled-jsx "5.1.1" + optionalDependencies: + "@next/swc-darwin-arm64" "14.2.3" + "@next/swc-darwin-x64" "14.2.3" + "@next/swc-linux-arm64-gnu" "14.2.3" + "@next/swc-linux-arm64-musl" "14.2.3" + "@next/swc-linux-x64-gnu" "14.2.3" + "@next/swc-linux-x64-musl" "14.2.3" + "@next/swc-win32-arm64-msvc" "14.2.3" + "@next/swc-win32-ia32-msvc" "14.2.3" + "@next/swc-win32-x64-msvc" "14.2.3" + +node-fetch@2.6.7: + version "2.6.7" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" + integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== + dependencies: + whatwg-url "^5.0.0" + +node-fetch@^2.6.1, node-fetch@^2.6.12: + version "2.7.0" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" + integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== + dependencies: + whatwg-url "^5.0.0" + +node-gyp@^10.0.0, node-gyp@^10.1.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-10.1.0.tgz#75e6f223f2acb4026866c26a2ead6aab75a8ca7e" + integrity sha512-B4J5M1cABxPc5PwfjhbV5hoy2DP9p8lFXASnEN6hugXOa61416tnTZ29x9sSwAd0o99XNIcpvDDy1swAExsVKA== + dependencies: + env-paths "^2.2.0" + exponential-backoff "^3.1.1" + glob "^10.3.10" + graceful-fs "^4.2.6" + make-fetch-happen "^13.0.0" + nopt "^7.0.0" + proc-log "^3.0.0" + semver "^7.3.5" + tar "^6.1.2" + which "^4.0.0" + +nopt@^7.0.0, nopt@^7.2.1: + version "7.2.1" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-7.2.1.tgz#1cac0eab9b8e97c9093338446eddd40b2c8ca1e7" + integrity sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w== + dependencies: + abbrev "^2.0.0" + +normalize-package-data@^6.0.0, normalize-package-data@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-6.0.1.tgz#fa69e9452210f0fabf4d79ee08d0c2870c51ed88" + integrity sha512-6rvCfeRW+OEZagAB4lMLSNuTNYZWLVtKccK79VSTf//yTY5VOCgcpH80O+bZK8Neps7pUnd5G+QlMg1yV/2iZQ== + dependencies: + hosted-git-info "^7.0.0" + is-core-module "^2.8.1" + semver "^7.3.5" + validate-npm-package-license "^3.0.4" + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +npm-audit-report@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/npm-audit-report/-/npm-audit-report-5.0.0.tgz#83ac14aeff249484bde81eff53c3771d5048cf95" + integrity sha512-EkXrzat7zERmUhHaoren1YhTxFwsOu5jypE84k6632SXTHcQE1z8V51GC6GVZt8LxkC+tbBcKMUBZAgk8SUSbw== + +npm-bundled@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-3.0.1.tgz#cca73e15560237696254b10170d8f86dad62da25" + integrity sha512-+AvaheE/ww1JEwRHOrn4WHNzOxGtVp+adrg2AeZS/7KuxGUYFuBta98wYpfHBbJp6Tg6j1NKSEVHNcfZzJHQwQ== + dependencies: + npm-normalize-package-bin "^3.0.0" + +npm-install-checks@^6.0.0, npm-install-checks@^6.2.0, npm-install-checks@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/npm-install-checks/-/npm-install-checks-6.3.0.tgz#046552d8920e801fa9f919cad569545d60e826fe" + integrity sha512-W29RiK/xtpCGqn6f3ixfRYGk+zRyr+Ew9F2E20BfXxT5/euLdA/Nm7fO7OeTGuAmTs30cpgInyJ0cYe708YTZw== + dependencies: + semver "^7.1.1" + +npm-normalize-package-bin@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-3.0.1.tgz#25447e32a9a7de1f51362c61a559233b89947832" + integrity sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ== + +npm-package-arg@^11.0.0, npm-package-arg@^11.0.2: + version "11.0.2" + resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-11.0.2.tgz#1ef8006c4a9e9204ddde403035f7ff7d718251ca" + integrity sha512-IGN0IAwmhDJwy13Wc8k+4PEbTPhpJnMtfR53ZbOyjkvmEcLS4nCwp6mvMWjS5sUjeiW3mpx6cHmuhKEu9XmcQw== + dependencies: + hosted-git-info "^7.0.0" + proc-log "^4.0.0" + semver "^7.3.5" + validate-npm-package-name "^5.0.0" + +npm-packlist@^8.0.0: + version "8.0.2" + resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-8.0.2.tgz#5b8d1d906d96d21c85ebbeed2cf54147477c8478" + integrity sha512-shYrPFIS/JLP4oQmAwDyk5HcyysKW8/JLTEA32S0Z5TzvpaeeX2yMFfoK1fjEBnCBvVyIB/Jj/GBFdm0wsgzbA== + dependencies: + ignore-walk "^6.0.4" + +npm-pick-manifest@^9.0.0, npm-pick-manifest@^9.0.1: + version "9.0.1" + resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-9.0.1.tgz#c90658bd726fe5bca9d2869f3e99359b8fcda046" + integrity sha512-Udm1f0l2nXb3wxDpKjfohwgdFUSV50UVwzEIpDXVsbDMXVIEF81a/i0UhuQbhrPMMmdiq3+YMFLFIRVLs3hxQw== + dependencies: + npm-install-checks "^6.0.0" + npm-normalize-package-bin "^3.0.0" + npm-package-arg "^11.0.0" + semver "^7.3.5" + +npm-profile@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/npm-profile/-/npm-profile-10.0.0.tgz#3fe941f487dde6686faff5e6b222bf92d38a3edd" + integrity sha512-DXnge3nHYnEnPxmVd/kPmgcXKXwVUqFihGnU+EJUiu5mIOs3awq6zEm0rRp3kSQNhFsoqdLu8L1TIfRyeBOCog== + dependencies: + npm-registry-fetch "^17.0.1" + proc-log "^4.0.0" + +npm-registry-fetch@^17.0.0, npm-registry-fetch@^17.0.1: + version "17.0.1" + resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-17.0.1.tgz#c13cfd4c022713f09d23af5fba8b6ec59a17609e" + integrity sha512-fLu9MTdZTlJAHUek/VLklE6EpIiP3VZpTiuN7OOMCt2Sd67NCpSEetMaxHHEZiZxllp8ZLsUpvbEszqTFEc+wA== + dependencies: + "@npmcli/redact" "^2.0.0" + make-fetch-happen "^13.0.0" + minipass "^7.0.2" + minipass-fetch "^3.0.0" + minipass-json-stream "^1.0.1" + minizlib "^2.1.2" + npm-package-arg "^11.0.0" + proc-log "^4.0.0" + +npm-user-validate@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/npm-user-validate/-/npm-user-validate-2.0.1.tgz#097afbf0a2351e2a8f478f1ba07960b368f2a25c" + integrity sha512-d17PKaF2h8LSGFl5j4b1gHOJt1fgH7YUcCm1kNSJvaLWWKXlBsuUvx0bBEkr0qhsVA9XP5LtRZ83hdlhm2QkgA== + +npm@^10.8.0: + version "10.8.0" + resolved "https://registry.yarnpkg.com/npm/-/npm-10.8.0.tgz#f5a017649e934a59eba54af2ea908465eb830a8f" + integrity sha512-wh93uRczgp7HDnPMiLXcCkv2hagdJS0zJ9KT/31d0FoXP02+qgN2AOwpaW85fxRWkinl2rELfPw+CjBXW48/jQ== + dependencies: + "@isaacs/string-locale-compare" "^1.1.0" + "@npmcli/arborist" "^7.5.2" + "@npmcli/config" "^8.3.2" + "@npmcli/fs" "^3.1.1" + "@npmcli/map-workspaces" "^3.0.6" + "@npmcli/package-json" "^5.1.0" + "@npmcli/promise-spawn" "^7.0.2" + "@npmcli/redact" "^2.0.0" + "@npmcli/run-script" "^8.1.0" + "@sigstore/tuf" "^2.3.3" + abbrev "^2.0.0" + archy "~1.0.0" + cacache "^18.0.3" + chalk "^5.3.0" + ci-info "^4.0.0" + cli-columns "^4.0.0" + fastest-levenshtein "^1.0.16" + fs-minipass "^3.0.3" + glob "^10.3.15" + graceful-fs "^4.2.11" + hosted-git-info "^7.0.2" + ini "^4.1.2" + init-package-json "^6.0.3" + is-cidr "^5.0.5" + json-parse-even-better-errors "^3.0.2" + libnpmaccess "^8.0.6" + libnpmdiff "^6.1.2" + libnpmexec "^8.1.1" + libnpmfund "^5.0.10" + libnpmhook "^10.0.5" + libnpmorg "^6.0.6" + libnpmpack "^7.0.2" + libnpmpublish "^9.0.8" + libnpmsearch "^7.0.5" + libnpmteam "^6.0.5" + libnpmversion "^6.0.2" + make-fetch-happen "^13.0.1" + minimatch "^9.0.4" + minipass "^7.1.1" + minipass-pipeline "^1.2.4" + ms "^2.1.2" + node-gyp "^10.1.0" + nopt "^7.2.1" + normalize-package-data "^6.0.1" + npm-audit-report "^5.0.0" + npm-install-checks "^6.3.0" + npm-package-arg "^11.0.2" + npm-pick-manifest "^9.0.1" + npm-profile "^10.0.0" + npm-registry-fetch "^17.0.1" + npm-user-validate "^2.0.1" + p-map "^4.0.0" + pacote "^18.0.6" + parse-conflict-json "^3.0.1" + proc-log "^4.2.0" + qrcode-terminal "^0.12.0" + read "^3.0.1" + semver "^7.6.2" + spdx-expression-parse "^4.0.0" + ssri "^10.0.6" + supports-color "^9.4.0" + tar "^6.2.1" + text-table "~0.2.0" + tiny-relative-date "^1.3.0" + treeverse "^3.0.0" + validate-npm-package-name "^5.0.1" + which "^4.0.0" + write-file-atomic "^5.0.1" + +o3@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/o3/-/o3-1.0.3.tgz#192ce877a882dfa6751f0412a865fafb2da1dac0" + integrity sha512-f+4n+vC6s4ysy7YO7O2gslWZBUu8Qj2i2OUJOvjRxQva7jVjYjB29jrr9NCjmxZQR0gzrOcv1RnqoYOeMs5VRQ== + dependencies: + capability "^0.2.5" + +object-assign@^4.0.1, object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" + integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== + +object-hash@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz" + integrity sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw== + +object-inspect@^1.13.1: + version "1.13.1" + resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz" + integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ== + +object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object.assign@^4.1.4, object.assign@^4.1.5: + version "4.1.5" + resolved "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz" + integrity sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ== + dependencies: + call-bind "^1.0.5" + define-properties "^1.2.1" + has-symbols "^1.0.3" + object-keys "^1.1.1" + +object.entries@^1.1.7: + version "1.1.8" + resolved "https://registry.npmjs.org/object.entries/-/object.entries-1.1.8.tgz" + integrity sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-object-atoms "^1.0.0" + +object.fromentries@^2.0.7: + version "2.0.8" + resolved "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz" + integrity sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.2" + es-object-atoms "^1.0.0" + +object.groupby@^1.0.1: + version "1.0.3" + resolved "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz" + integrity sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.2" + +object.hasown@^1.1.3: + version "1.1.4" + resolved "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.4.tgz" + integrity sha512-FZ9LZt9/RHzGySlBARE3VF+gE26TxR38SdmqOqliuTnl9wrKulaQs+4dee1V+Io8VfxqzAfHu6YuRgUy8OHoTg== + dependencies: + define-properties "^1.2.1" + es-abstract "^1.23.2" + es-object-atoms "^1.0.0" + +object.values@^1.1.6, object.values@^1.1.7: + version "1.2.0" + resolved "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz" + integrity sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-object-atoms "^1.0.0" + +once@^1.3.0: + version "1.4.0" + resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + +optionator@^0.9.3: + version "0.9.4" + resolved "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz" + integrity sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g== + dependencies: + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" + word-wrap "^1.2.5" + +p-limit@^2.2.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-limit@^3.0.2: + version "3.1.0" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.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-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" + +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-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== + +pacote@^18.0.0, pacote@^18.0.6: + version "18.0.6" + resolved "https://registry.yarnpkg.com/pacote/-/pacote-18.0.6.tgz#ac28495e24f4cf802ef911d792335e378e86fac7" + integrity sha512-+eK3G27SMwsB8kLIuj4h1FUhHtwiEUo21Tw8wNjmvdlpOEr613edv+8FUsTj/4F/VN5ywGE19X18N7CC2EJk6A== + dependencies: + "@npmcli/git" "^5.0.0" + "@npmcli/installed-package-contents" "^2.0.1" + "@npmcli/package-json" "^5.1.0" + "@npmcli/promise-spawn" "^7.0.0" + "@npmcli/run-script" "^8.0.0" + cacache "^18.0.0" + fs-minipass "^3.0.0" + minipass "^7.0.2" + npm-package-arg "^11.0.0" + npm-packlist "^8.0.0" + npm-pick-manifest "^9.0.0" + npm-registry-fetch "^17.0.0" + proc-log "^4.0.0" + promise-retry "^2.0.1" + sigstore "^2.2.0" + ssri "^10.0.0" + tar "^6.1.11" + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +parse-conflict-json@^3.0.0, parse-conflict-json@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/parse-conflict-json/-/parse-conflict-json-3.0.1.tgz#67dc55312781e62aa2ddb91452c7606d1969960c" + integrity sha512-01TvEktc68vwbJOtWZluyWeVGWjP+bZwXtPDMQVbBKzbJ/vZBif0L69KH1+cHv1SZ6e0FKLvjyHe8mqsIqYOmw== + dependencies: + json-parse-even-better-errors "^3.0.0" + just-diff "^6.0.0" + just-diff-apply "^5.2.0" + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + +path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +path-scurry@^1.10.1, path-scurry@^1.10.2: + version "1.10.2" + resolved "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.2.tgz" + integrity sha512-7xTavNy5RQXnsjANvVvMkEjvloOinkAjv/Z6Ildz9v2RinZ4SBKTWFOVRbaF8p0vpHnyjV/UwNDdKuUv6M5qcA== + dependencies: + lru-cache "^10.2.0" + minipass "^5.0.0 || ^6.0.2 || ^7.0.0" + +path-scurry@^1.11.0: + version "1.11.1" + resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.11.1.tgz#7960a668888594a0720b12a911d1a742ab9f11d2" + integrity sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA== + dependencies: + lru-cache "^10.2.0" + minipass "^5.0.0 || ^6.0.2 || ^7.0.0" + +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +picocolors@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz" + integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== + +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +pify@^2.3.0: + version "2.3.0" + resolved "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz" + integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== + +pirates@^4.0.1: + version "4.0.6" + resolved "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz" + integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg== + +pngjs@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-5.0.0.tgz#e79dd2b215767fd9c04561c01236df960bce7fbb" + integrity sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw== + +possible-typed-array-names@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz" + integrity sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q== + +postcss-import@^15.1.0: + version "15.1.0" + resolved "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz" + integrity sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew== + dependencies: + postcss-value-parser "^4.0.0" + read-cache "^1.0.0" + resolve "^1.1.7" + +postcss-js@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz" + integrity sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw== + dependencies: + camelcase-css "^2.0.1" + +postcss-load-config@^4.0.1: + version "4.0.2" + resolved "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz" + integrity sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ== + dependencies: + lilconfig "^3.0.0" + yaml "^2.3.4" + +postcss-nested@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.1.tgz" + integrity sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ== + dependencies: + postcss-selector-parser "^6.0.11" + +postcss-selector-parser@^6.0.10, postcss-selector-parser@^6.0.11: + version "6.0.16" + resolved "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.16.tgz" + integrity sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw== + dependencies: + cssesc "^3.0.0" + util-deprecate "^1.0.2" + +postcss-value-parser@^4.0.0: + version "4.2.0" + resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz" + integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== + +postcss@8.4.31: + version "8.4.31" + resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz" + integrity sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ== + dependencies: + nanoid "^3.3.6" + picocolors "^1.0.0" + source-map-js "^1.0.2" + +postcss@^8, postcss@^8.4.23: + version "8.4.38" + resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz" + integrity sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A== + dependencies: + nanoid "^3.3.7" + picocolors "^1.0.0" + source-map-js "^1.2.0" + +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + +proc-log@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/proc-log/-/proc-log-3.0.0.tgz#fb05ef83ccd64fd7b20bbe9c8c1070fc08338dd8" + integrity sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A== + +proc-log@^4.0.0, proc-log@^4.1.0, proc-log@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/proc-log/-/proc-log-4.2.0.tgz#b6f461e4026e75fdfe228b265e9f7a00779d7034" + integrity sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA== + +proggy@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/proggy/-/proggy-2.0.0.tgz#154bb0e41d3125b518ef6c79782455c2c47d94e1" + integrity sha512-69agxLtnI8xBs9gUGqEnK26UfiexpHy+KUpBQWabiytQjnn5wFY8rklAi7GRfABIuPNnQ/ik48+LGLkYYJcy4A== + +promise-all-reject-late@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/promise-all-reject-late/-/promise-all-reject-late-1.0.1.tgz#f8ebf13483e5ca91ad809ccc2fcf25f26f8643c2" + integrity sha512-vuf0Lf0lOxyQREH7GDIOUMLS7kz+gs8i6B+Yi8dC68a2sychGrHTJYghMBD6k7eUcH0H5P73EckCA48xijWqXw== + +promise-call-limit@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/promise-call-limit/-/promise-call-limit-3.0.1.tgz#3570f7a3f2aaaf8e703623a552cd74749688cf19" + integrity sha512-utl+0x8gIDasV5X+PI5qWEPqH6fJS0pFtQ/4gZ95xfEFb/89dmh+/b895TbFDBLiafBvxD/PGTKfvxl4kH/pQg== + +promise-inflight@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" + integrity sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g== + +promise-retry@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/promise-retry/-/promise-retry-2.0.1.tgz#ff747a13620ab57ba688f5fc67855410c370da22" + integrity sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g== + dependencies: + err-code "^2.0.2" + retry "^0.12.0" + +promzard@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/promzard/-/promzard-1.0.2.tgz#2226e7c6508b1da3471008ae17066a7c3251e660" + integrity sha512-2FPputGL+mP3jJ3UZg/Dl9YOkovB7DX0oOr+ck5QbZ5MtORtds8k/BZdn+02peDLI8/YWbmzx34k5fA+fHvCVQ== + dependencies: + read "^3.0.1" + +prop-types@^15.8.1: + version "15.8.1" + resolved "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz" + integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== + dependencies: + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.13.1" + +punycode@^2.1.0, punycode@^2.3.0: + version "2.3.1" + resolved "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz" + integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== + +qrcode-terminal@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/qrcode-terminal/-/qrcode-terminal-0.12.0.tgz#bb5b699ef7f9f0505092a3748be4464fe71b5819" + integrity sha512-EXtzRZmC+YGmGlDFbXKxQiMZNwCLEO6BANKXG4iCtSIM0yqc/pappSx3RIKr4r0uh5JsBckOXeKrB3Iz7mdQpQ== + +qrcode@1.5.3: + version "1.5.3" + resolved "https://registry.yarnpkg.com/qrcode/-/qrcode-1.5.3.tgz#03afa80912c0dccf12bc93f615a535aad1066170" + integrity sha512-puyri6ApkEHYiVl4CFzo1tDkAZ+ATcnbJrJ6RiBM1Fhctdn/ix9MTE3hRph33omisEbC/2fcfemsseiKgBPKZg== + dependencies: + dijkstrajs "^1.0.1" + encode-utf8 "^1.0.3" + pngjs "^5.0.0" + yargs "^15.3.1" + +query-string@^7.1.3: + version "7.1.3" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-7.1.3.tgz#a1cf90e994abb113a325804a972d98276fe02328" + integrity sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg== + dependencies: + decode-uri-component "^0.2.2" + filter-obj "^1.1.0" + split-on-first "^1.0.0" + strict-uri-encode "^2.0.0" + +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +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" + +react-day-picker@^8.10.1: + version "8.10.1" + resolved "https://registry.yarnpkg.com/react-day-picker/-/react-day-picker-8.10.1.tgz#4762ec298865919b93ec09ba69621580835b8e80" + integrity sha512-TMx7fNbhLk15eqcMt+7Z7S2KF7mfTId/XJDjKE8f+IUcFn0l08/kI4FiYTL/0yuOLmEcbR4Fwe3GJf/NiiMnPA== + +react-dom@18.2.0: + version "18.2.0" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.2.0.tgz#22aaf38708db2674ed9ada224ca4aa708d821e3d" + integrity sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g== + dependencies: + loose-envify "^1.1.0" + scheduler "^0.23.0" + +react-dom@^18, react-dom@^18.2.0: + version "18.3.1" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.3.1.tgz#c2265d79511b57d479b3dd3fdfa51536494c5cb4" + integrity sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw== + dependencies: + loose-envify "^1.1.0" + scheduler "^0.23.2" + +react-is@^16.13.1: + version "16.13.1" + resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz" + integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== + +react-remove-scroll-bar@^2.3.3: + version "2.3.6" + resolved "https://registry.yarnpkg.com/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.6.tgz#3e585e9d163be84a010180b18721e851ac81a29c" + integrity sha512-DtSYaao4mBmX+HDo5YWYdBWQwYIQQshUV/dVxFxK+KM26Wjwp1gZ6rv6OC3oujI6Bfu6Xyg3TwK533AQutsn/g== + dependencies: + react-style-singleton "^2.2.1" + tslib "^2.0.0" + +react-remove-scroll@2.5.5: + version "2.5.5" + resolved "https://registry.yarnpkg.com/react-remove-scroll/-/react-remove-scroll-2.5.5.tgz#1e31a1260df08887a8a0e46d09271b52b3a37e77" + integrity sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw== + dependencies: + react-remove-scroll-bar "^2.3.3" + react-style-singleton "^2.2.1" + tslib "^2.1.0" + use-callback-ref "^1.3.0" + use-sidecar "^1.1.2" + +react-style-singleton@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/react-style-singleton/-/react-style-singleton-2.2.1.tgz#f99e420492b2d8f34d38308ff660b60d0b1205b4" + integrity sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g== + dependencies: + get-nonce "^1.0.0" + invariant "^2.2.4" + tslib "^2.0.0" + +react@18.2.0: + version "18.2.0" + resolved "https://registry.yarnpkg.com/react/-/react-18.2.0.tgz#555bd98592883255fa00de14f1151a917b5d77d5" + integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ== + dependencies: + loose-envify "^1.1.0" + +react@^18, react@^18.2.0: + version "18.3.1" + resolved "https://registry.yarnpkg.com/react/-/react-18.3.1.tgz#49ab892009c53933625bd16b2533fc754cab2891" + integrity sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ== + dependencies: + loose-envify "^1.1.0" + +read-cache@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz" + integrity sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA== + dependencies: + pify "^2.3.0" + +read-cmd-shim@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/read-cmd-shim/-/read-cmd-shim-4.0.0.tgz#640a08b473a49043e394ae0c7a34dd822c73b9bb" + integrity sha512-yILWifhaSEEytfXI76kB9xEEiG1AiozaCJZ83A87ytjRiN+jVibXjedjCRNjoZviinhG+4UkalO3mWTd8u5O0Q== + +read-package-json-fast@^3.0.0, read-package-json-fast@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/read-package-json-fast/-/read-package-json-fast-3.0.2.tgz#394908a9725dc7a5f14e70c8e7556dff1d2b1049" + integrity sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw== + dependencies: + json-parse-even-better-errors "^3.0.0" + npm-normalize-package-bin "^3.0.0" + +read@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/read/-/read-3.0.1.tgz#926808f0f7c83fa95f1ef33c0e2c09dbb28fd192" + integrity sha512-SLBrDU/Srs/9EoWhU5GdbAoxG1GzpQHo/6qiGItaoLJ1thmYpcNIM1qISEUvyHBzfGlWIyd6p2DNi1oV1VmAuw== + dependencies: + mute-stream "^1.0.0" + +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + +reflect.getprototypeof@^1.0.4: + version "1.0.6" + resolved "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.6.tgz" + integrity sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.1" + es-errors "^1.3.0" + get-intrinsic "^1.2.4" + globalthis "^1.0.3" + which-builtin-type "^1.1.3" + +regenerator-runtime@^0.14.0: + version "0.14.1" + resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz" + integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw== + +regexp.prototype.flags@^1.5.2: + version "1.5.2" + resolved "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz" + integrity sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw== + dependencies: + call-bind "^1.0.6" + define-properties "^1.2.1" + es-errors "^1.3.0" + set-function-name "^2.0.1" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== + +require-from-string@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + +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== + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +resolve-pkg-maps@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz" + integrity sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw== + +resolve@^1.1.7, resolve@^1.22.2, resolve@^1.22.4: + version "1.22.8" + resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz" + integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== + dependencies: + is-core-module "^2.13.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +resolve@^2.0.0-next.5: + version "2.0.0-next.5" + resolved "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz" + integrity sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA== + dependencies: + is-core-module "^2.13.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +retry@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" + integrity sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow== + +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + +rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + +rxjs@7.8.1: + version "7.8.1" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.1.tgz#6f6f3d99ea8044291efd92e7c7fcf562c4057543" + integrity sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg== + dependencies: + tslib "^2.1.0" + +safe-array-concat@^1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz" + integrity sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q== + dependencies: + call-bind "^1.0.7" + get-intrinsic "^1.2.4" + has-symbols "^1.0.3" + isarray "^2.0.5" + +safe-buffer@^5.0.1, safe-buffer@^5.1.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-regex-test@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz" + integrity sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw== + dependencies: + call-bind "^1.0.6" + es-errors "^1.3.0" + is-regex "^1.1.4" + +"safer-buffer@>= 2.1.2 < 3.0.0": + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +scheduler@^0.23.0, scheduler@^0.23.2: + version "0.23.2" + resolved "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz" + integrity sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ== + dependencies: + loose-envify "^1.1.0" + +semver@^6.3.1: + version "6.3.1" + resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== + +semver@^7.1.1, semver@^7.3.5, semver@^7.3.7, semver@^7.5.3, semver@^7.6.2: + version "7.6.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.2.tgz#1e3b34759f896e8f14d6134732ce798aeb0c6e13" + integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w== + +semver@^7.5.4: + version "7.6.1" + resolved "https://registry.npmjs.org/semver/-/semver-7.6.1.tgz" + integrity sha512-f/vbBsu+fOiYt+lmwZV0rVwJScl46HppnOA1ZvIuBWKOTlllpyJ3bfVax76/OrhCH38dyxoDIA8K7uB963IYgA== + +set-blocking@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== + +set-function-length@^1.2.1: + version "1.2.2" + resolved "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz" + integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg== + dependencies: + define-data-property "^1.1.4" + es-errors "^1.3.0" + function-bind "^1.1.2" + get-intrinsic "^1.2.4" + gopd "^1.0.1" + has-property-descriptors "^1.0.2" + +set-function-name@^2.0.1, set-function-name@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz" + integrity sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ== + dependencies: + define-data-property "^1.1.4" + es-errors "^1.3.0" + functions-have-names "^1.2.3" + has-property-descriptors "^1.0.2" + +setprototypeof@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" + integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== + +setprototypeof@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" + integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== + +sha1@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/sha1/-/sha1-1.1.1.tgz#addaa7a93168f393f19eb2b15091618e2700f848" + integrity sha512-dZBS6OrMjtgVkopB1Gmo4RQCDKiZsqcpAQpkV/aaj+FCrCg8r4I4qMkDPQjBgLIxlmu9k4nUbWq6ohXahOneYA== + dependencies: + charenc ">= 0.0.1" + crypt ">= 0.0.1" + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +side-channel@^1.0.4, side-channel@^1.0.6: + version "1.0.6" + resolved "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz" + integrity sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA== + dependencies: + call-bind "^1.0.7" + es-errors "^1.3.0" + get-intrinsic "^1.2.4" + object-inspect "^1.13.1" + +signal-exit@^4.0.1: + version "4.1.0" + resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz" + integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== + +sigstore@^2.2.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/sigstore/-/sigstore-2.3.1.tgz#0755dd2cc4820f2e922506da54d3d628e13bfa39" + integrity sha512-8G+/XDU8wNsJOQS5ysDVO0Etg9/2uA5gR9l4ZwijjlwxBcrU6RPfwi2+jJmbP+Ap1Hlp/nVAaEO4Fj22/SL2gQ== + dependencies: + "@sigstore/bundle" "^2.3.2" + "@sigstore/core" "^1.0.0" + "@sigstore/protobuf-specs" "^0.3.2" + "@sigstore/sign" "^2.3.2" + "@sigstore/tuf" "^2.3.4" + "@sigstore/verify" "^1.2.1" + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +smart-buffer@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" + integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg== + +socks-proxy-agent@^8.0.3: + version "8.0.3" + resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-8.0.3.tgz#6b2da3d77364fde6292e810b496cb70440b9b89d" + integrity sha512-VNegTZKhuGq5vSD6XNKlbqWhyt/40CgoEw8XxD6dhnm8Jq9IEa3nIa4HwnM8XOqU0CdB0BwWVXusqiFXfHB3+A== + dependencies: + agent-base "^7.1.1" + debug "^4.3.4" + socks "^2.7.1" + +socks@^2.7.1: + version "2.8.3" + resolved "https://registry.yarnpkg.com/socks/-/socks-2.8.3.tgz#1ebd0f09c52ba95a09750afe3f3f9f724a800cb5" + integrity sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw== + dependencies: + ip-address "^9.0.5" + smart-buffer "^4.2.0" + +source-map-js@^1.0.2, source-map-js@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz" + integrity sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg== + +sparse-bitfield@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz#ff4ae6e68656056ba4b3e792ab3334d38273ca11" + integrity sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ== + dependencies: + memory-pager "^1.0.2" + +spdx-correct@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.2.0.tgz#4f5ab0668f0059e34f9c00dce331784a12de4e9c" + integrity sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA== + dependencies: + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" + +spdx-exceptions@^2.1.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz#5d607d27fc806f66d7b64a766650fa890f04ed66" + integrity sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w== + +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-expression-parse@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-4.0.0.tgz#a23af9f3132115465dac215c099303e4ceac5794" + integrity sha512-Clya5JIij/7C6bRR22+tnGXbc4VKlibKSVj2iHvVeX5iMW7s1SIQlqu699JkODJJIhh/pUu8L0/VLh8xflD+LQ== + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + +spdx-license-ids@^3.0.0: + version "3.0.17" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.17.tgz#887da8aa73218e51a1d917502d79863161a93f9c" + integrity sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg== + +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== + +sprintf-js@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.3.tgz#4914b903a2f8b685d17fdf78a70e917e872e444a" + integrity sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA== + +ssri@^10.0.0, ssri@^10.0.6: + version "10.0.6" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-10.0.6.tgz#a8aade2de60ba2bce8688e3fa349bad05c7dc1e5" + integrity sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ== + dependencies: + minipass "^7.0.3" + +"statuses@>= 1.5.0 < 2": + version "1.5.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" + integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== + +streamsearch@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz" + integrity sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg== + +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 sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ== + +"string-width-cjs@npm:string-width@^4.2.0": + version "4.2.3" + resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" + 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-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: + 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-width@^5.0.1, string-width@^5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz" + integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== + dependencies: + eastasianwidth "^0.2.0" + emoji-regex "^9.2.2" + strip-ansi "^7.0.1" + +string.prototype.matchall@^4.0.10: + version "4.0.11" + resolved "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.11.tgz" + integrity sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.2" + es-errors "^1.3.0" + es-object-atoms "^1.0.0" + get-intrinsic "^1.2.4" + gopd "^1.0.1" + has-symbols "^1.0.3" + internal-slot "^1.0.7" + regexp.prototype.flags "^1.5.2" + set-function-name "^2.0.2" + side-channel "^1.0.6" + +string.prototype.trim@^1.2.9: + version "1.2.9" + resolved "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz" + integrity sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.0" + es-object-atoms "^1.0.0" + +string.prototype.trimend@^1.0.8: + version "1.0.8" + resolved "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz" + integrity sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-object-atoms "^1.0.0" + +string.prototype.trimstart@^1.0.8: + version "1.0.8" + resolved "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz" + integrity sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-object-atoms "^1.0.0" + +"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-ansi@^7.0.1: + version "7.1.0" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz" + integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== + dependencies: + ansi-regex "^6.0.1" + +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz" + integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== + +strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +styled-jsx@5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.1.tgz" + integrity sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw== + dependencies: + client-only "0.0.1" + +sucrase@^3.32.0: + version "3.35.0" + resolved "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz" + integrity sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA== + dependencies: + "@jridgewell/gen-mapping" "^0.3.2" + commander "^4.0.0" + glob "^10.3.10" + lines-and-columns "^1.1.6" + mz "^2.7.0" + pirates "^4.0.1" + ts-interface-checker "^0.1.9" + +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +supports-color@^9.4.0: + version "9.4.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-9.4.0.tgz#17bfcf686288f531db3dea3215510621ccb55954" + integrity sha512-VL+lNrEoIXww1coLPOmiEmK/0sGigko5COxI09KzHc2VJXJsQ37UaQ+8quuxjDeA7+KnLGTWRyOXSLLR2Wb4jw== + +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + +tailwind-merge@^2.3.0: + version "2.3.0" + resolved "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-2.3.0.tgz" + integrity sha512-vkYrLpIP+lgR0tQCG6AP7zZXCTLc1Lnv/CCRT3BqJ9CZ3ui2++GPaGb1x/ILsINIMSYqqvrpqjUFsMNLlW99EA== + dependencies: + "@babel/runtime" "^7.24.1" + +tailwindcss-animate@^1.0.7: + version "1.0.7" + resolved "https://registry.npmjs.org/tailwindcss-animate/-/tailwindcss-animate-1.0.7.tgz" + integrity sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA== + +tailwindcss@^3.4.1: + version "3.4.3" + resolved "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.3.tgz" + integrity sha512-U7sxQk/n397Bmx4JHbJx/iSOOv5G+II3f1kpLpY2QeUv5DcPdcTsYLlusZfq1NthHS1c1cZoyFmmkex1rzke0A== + dependencies: + "@alloc/quick-lru" "^5.2.0" + arg "^5.0.2" + chokidar "^3.5.3" + didyoumean "^1.2.2" + dlv "^1.1.3" + fast-glob "^3.3.0" + glob-parent "^6.0.2" + is-glob "^4.0.3" + jiti "^1.21.0" + lilconfig "^2.1.0" + micromatch "^4.0.5" + normalize-path "^3.0.0" + object-hash "^3.0.0" + picocolors "^1.0.0" + postcss "^8.4.23" + postcss-import "^15.1.0" + postcss-js "^4.0.1" + postcss-load-config "^4.0.1" + postcss-nested "^6.0.1" + postcss-selector-parser "^6.0.11" + resolve "^1.22.2" + sucrase "^3.32.0" + +tapable@^2.2.0: + version "2.2.1" + resolved "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz" + integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== + +tar@^6.1.11, tar@^6.1.2, tar@^6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/tar/-/tar-6.2.1.tgz#717549c541bc3c2af15751bea94b1dd068d4b03a" + integrity sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A== + dependencies: + chownr "^2.0.0" + fs-minipass "^2.0.0" + minipass "^5.0.0" + minizlib "^2.1.1" + mkdirp "^1.0.3" + yallist "^4.0.0" + +text-encoding-utf-8@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/text-encoding-utf-8/-/text-encoding-utf-8-1.0.2.tgz#585b62197b0ae437e3c7b5d0af27ac1021e10d13" + integrity sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg== + +text-table@^0.2.0, text-table@~0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz" + integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== + +thenify-all@^1.0.0: + version "1.6.0" + resolved "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz" + integrity sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA== + dependencies: + thenify ">= 3.1.0 < 4" + +"thenify@>= 3.1.0 < 4": + version "3.3.1" + resolved "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz" + integrity sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw== + dependencies: + any-promise "^1.0.0" + +tiny-relative-date@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/tiny-relative-date/-/tiny-relative-date-1.3.0.tgz#fa08aad501ed730f31cc043181d995c39a935e07" + integrity sha512-MOQHpzllWxDCHHaDno30hhLfbouoYlOI8YlMNtvKe1zXbjEVhbcEovQxvZrPvtiYW630GQDoMMarCnjfyfHA+A== + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.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 sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ== + +toidentifier@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" + integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== + +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== + +tr46@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-4.1.1.tgz#281a758dcc82aeb4fe38c7dfe4d11a395aac8469" + integrity sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw== + dependencies: + punycode "^2.3.0" + +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== + +treeverse@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/treeverse/-/treeverse-3.0.0.tgz#dd82de9eb602115c6ebd77a574aae67003cb48c8" + integrity sha512-gcANaAnd2QDZFmHFEOF4k7uc1J/6a6z3DJMd/QwEyxLoKGiptJRwid582r7QIsFlFMIZ3SnxfS52S4hm2DHkuQ== + +ts-api-utils@^1.0.1: + version "1.3.0" + resolved "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz" + integrity sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ== + +ts-interface-checker@^0.1.9: + version "0.1.13" + resolved "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz" + integrity sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA== + +tsconfig-paths@^3.15.0: + version "3.15.0" + resolved "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz" + integrity sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg== + dependencies: + "@types/json5" "^0.0.29" + json5 "^1.0.2" + minimist "^1.2.6" + strip-bom "^3.0.0" + +tslib@^2.0.0, tslib@^2.1.0, tslib@^2.4.0: + version "2.6.2" + resolved "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz" + integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== + +tuf-js@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/tuf-js/-/tuf-js-2.2.1.tgz#fdd8794b644af1a75c7aaa2b197ddffeb2911b56" + integrity sha512-GwIJau9XaA8nLVbUXsN3IlFi7WmQ48gBUrl3FTkkL/XLu/POhBzfmX9hd33FNMX1qAsfl6ozO1iMmW9NC8YniA== + dependencies: + "@tufjs/models" "2.0.1" + debug "^4.3.4" + make-fetch-happen "^13.0.1" + +tweetnacl@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-1.0.3.tgz#ac0af71680458d8a6378d0d0d050ab1407d35596" + integrity sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw== + +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== + dependencies: + prelude-ls "^1.2.1" + +type-fest@^0.20.2: + version "0.20.2" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz" + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== + +typed-array-buffer@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz" + integrity sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ== + dependencies: + call-bind "^1.0.7" + es-errors "^1.3.0" + is-typed-array "^1.1.13" + +typed-array-byte-length@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz" + integrity sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw== + dependencies: + call-bind "^1.0.7" + for-each "^0.3.3" + gopd "^1.0.1" + has-proto "^1.0.3" + is-typed-array "^1.1.13" + +typed-array-byte-offset@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz" + integrity sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA== + dependencies: + available-typed-arrays "^1.0.7" + call-bind "^1.0.7" + for-each "^0.3.3" + gopd "^1.0.1" + has-proto "^1.0.3" + is-typed-array "^1.1.13" + +typed-array-length@^1.0.6: + version "1.0.6" + resolved "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz" + integrity sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g== + dependencies: + call-bind "^1.0.7" + for-each "^0.3.3" + gopd "^1.0.1" + has-proto "^1.0.3" + is-typed-array "^1.1.13" + possible-typed-array-names "^1.0.0" + +typescript@^5: + version "5.4.5" + resolved "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz" + integrity sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ== + +u3@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/u3/-/u3-0.1.1.tgz#5f52044f42ee76cd8de33148829e14528494b73b" + integrity sha512-+J5D5ir763y+Am/QY6hXNRlwljIeRMZMGs0cT6qqZVVzzT3X3nFPXVyPOFRMOR4kupB0T8JnCdpWdp6Q/iXn3w== + +unbox-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz" + integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== + dependencies: + call-bind "^1.0.2" + has-bigints "^1.0.2" + has-symbols "^1.0.3" + which-boxed-primitive "^1.0.2" + +undici-types@~5.26.4: + version "5.26.5" + resolved "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz" + integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== + +unique-filename@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-3.0.0.tgz#48ba7a5a16849f5080d26c760c86cf5cf05770ea" + integrity sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g== + dependencies: + unique-slug "^4.0.0" + +unique-slug@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-4.0.0.tgz#6bae6bb16be91351badd24cdce741f892a6532e3" + integrity sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ== + dependencies: + imurmurhash "^0.1.4" + +uri-js@^4.2.2, uri-js@^4.4.1: + version "4.4.1" + resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + +use-callback-ref@^1.3.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/use-callback-ref/-/use-callback-ref-1.3.2.tgz#6134c7f6ff76e2be0b56c809b17a650c942b1693" + integrity sha512-elOQwe6Q8gqZgDA8mrh44qRTQqpIHDcZ3hXTLjBe1i4ph8XpNJnO+aQf3NaG+lriLopI4HMx9VjQLfPQ6vhnoA== + dependencies: + tslib "^2.0.0" + +use-sidecar@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/use-sidecar/-/use-sidecar-1.1.2.tgz#2f43126ba2d7d7e117aa5855e5d8f0276dfe73c2" + integrity sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw== + dependencies: + detect-node-es "^1.1.0" + tslib "^2.0.0" + +util-deprecate@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + +uuid4@2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/uuid4/-/uuid4-2.0.3.tgz#241e5dfe1704a79c52e2aa40e7e581a5e7b01ab4" + integrity sha512-CTpAkEVXMNJl2ojgtpLXHgz23dh8z81u6/HEPiQFOvBc/c2pde6TVHmH4uwY0d/GLF3tb7+VDAj4+2eJaQSdZQ== + +validate-npm-package-license@^3.0.4: + 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" + +validate-npm-package-name@^5.0.0, validate-npm-package-name@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-5.0.1.tgz#a316573e9b49f3ccd90dbb6eb52b3f06c6d604e8" + integrity sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ== + +walk-up-path@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/walk-up-path/-/walk-up-path-3.0.1.tgz#c8d78d5375b4966c717eb17ada73dbd41490e886" + integrity sha512-9YlCL/ynK3CTlrSRrDxZvUauLzAswPCrsaCgilqFevUYpeEW0/3ScEjaa3kbW/T0ghhkEr7mv+fpjqn1Y1YuTA== + +webidl-conversions@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== + +webidl-conversions@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-7.0.0.tgz#256b4e1882be7debbf01d05f0aa2039778ea080a" + integrity sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g== + +whatwg-url@^13.0.0: + version "13.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-13.0.0.tgz#b7b536aca48306394a34e44bda8e99f332410f8f" + integrity sha512-9WWbymnqj57+XEuqADHrCJ2eSXzn8WXIW/YSGaZtb2WKAInQ6CHfaUUcTyyver0p8BDg5StLQq8h1vtZuwmOig== + dependencies: + tr46 "^4.1.1" + webidl-conversions "^7.0.0" + +whatwg-url@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" + integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== + dependencies: + tr46 "~0.0.3" + webidl-conversions "^3.0.0" + +which-boxed-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz" + 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-builtin-type@^1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.3.tgz" + integrity sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw== + dependencies: + function.prototype.name "^1.1.5" + has-tostringtag "^1.0.0" + is-async-function "^2.0.0" + is-date-object "^1.0.5" + is-finalizationregistry "^1.0.2" + is-generator-function "^1.0.10" + is-regex "^1.1.4" + is-weakref "^1.0.2" + isarray "^2.0.5" + which-boxed-primitive "^1.0.2" + which-collection "^1.0.1" + which-typed-array "^1.1.9" + +which-collection@^1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz" + integrity sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw== + dependencies: + is-map "^2.0.3" + is-set "^2.0.3" + is-weakmap "^2.0.2" + is-weakset "^2.0.3" + +which-module@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.1.tgz#776b1fe35d90aebe99e8ac15eb24093389a4a409" + integrity sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ== + +which-typed-array@^1.1.14, which-typed-array@^1.1.15, which-typed-array@^1.1.9: + version "1.1.15" + resolved "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz" + integrity sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA== + dependencies: + available-typed-arrays "^1.0.7" + call-bind "^1.0.7" + for-each "^0.3.3" + gopd "^1.0.1" + has-tostringtag "^1.0.2" + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +which@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/which/-/which-4.0.0.tgz#cd60b5e74503a3fbcfbf6cd6b4138a8bae644c1a" + integrity sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg== + dependencies: + isexe "^3.1.1" + +word-wrap@^1.2.5: + version "1.2.5" + resolved "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz" + integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== + +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": + version "7.0.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.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@^8.1.0: + version "8.1.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz" + integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== + dependencies: + ansi-styles "^6.1.0" + string-width "^5.0.1" + strip-ansi "^7.0.1" + +wrappy@1: + version "1.0.2" + resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + +write-file-atomic@^5.0.0, write-file-atomic@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-5.0.1.tgz#68df4717c55c6fa4281a7860b4c2ba0a6d2b11e7" + integrity sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw== + dependencies: + imurmurhash "^0.1.4" + signal-exit "^4.0.1" + +xtend@^4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + +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== + +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@^2.3.4: + version "2.4.2" + resolved "https://registry.npmjs.org/yaml/-/yaml-2.4.2.tgz" + integrity sha512-B3VqDZ+JAg1nZpaEmWtTXUlBneoGx6CPM9b0TENK6aoSu5t73dItudwdgmi6tHlIZZId4dZ9skcAQ2UbcyAeVA== + +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@^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" + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== From 5cd0d7accb7f9a820907674cd0b80089d4c3e583 Mon Sep 17 00:00:00 2001 From: SalShuttlesworth Date: Wed, 26 Jun 2024 11:19:56 -0400 Subject: [PATCH 19/31] Update NFT Challenge Submission --- .../nft-challenge-factory-main/Cargo.lock | 4602 ++++++++++++++ .../nft-challenge-factory-main/Cargo.toml | 35 + .../nft-challenge-factory-main/README | 42 - .../nft-challenge-factory-main/README.md | 63 +- .../rust-toolchain.toml | 4 + .../nft-challenge-factory-main/src/lib.rs | 163 + .../tests/test_basics.rs | 120 + .../wasm/nft-challenge.wasm | Bin 0 -> 278951 bytes .../nft-challenge-main/Cargo.lock | 4616 ++++++++++++++ .../nft-challenge-main/Cargo.toml | 38 + .../nft-challenge-main/{README => README.md} | 1 - .../nft-challenge-main/rust-toolchain.toml | 4 + .../nft-challenge-main/src/external.rs | 88 + .../nft-challenge-main/src/lib.rs | 709 +++ .../tests/mb-nft-v1/mb-nft-v1.wasm | Bin 0 -> 546345 bytes .../nft-challenge-main/tests/tests.rs | 818 +++ .../{README => README.md} | 0 .../nft-challenge-template-fe/app/actions.ts | 48 + .../app/challenges/[idPrefix]/page.tsx | 359 ++ .../app/create-challenge/page.tsx | 15 + .../nft-challenge-template-fe/app/favicon.ico | Bin 0 -> 25931 bytes .../nft-challenge-template-fe/app/globals.css | 33 + .../nft-challenge-template-fe/app/layout.tsx | 38 + .../nft-challenge-template-fe/app/page.tsx | 40 + .../nft-challenge-template-fe/components.json | 16 + .../components/ChallengeCreator.tsx | 265 + .../components/NearWalletSelector.tsx | 35 + .../components/Web3Toggle.tsx | 57 + .../components/carousel.tsx | 114 + .../components/forms/NFTForm.tsx | 120 + .../components/forms/RewardNFTForm.tsx | 134 + .../components/forms/TerminationRulesForm.tsx | 157 + .../forms/VictoryConditionsForm.tsx | 190 + .../components/ui/badge.tsx | 36 + .../components/ui/button.tsx | 56 + .../components/ui/calendar.tsx | 66 + .../components/ui/card.tsx | 79 + .../components/ui/carousel.tsx | 262 + .../components/ui/checkbox.tsx | 30 + .../components/ui/input.tsx | 25 + .../components/ui/label.tsx | 26 + .../components/ui/popover.tsx | 31 + .../components/ui/select.tsx | 160 + .../components/ui/textarea.tsx | 24 + .../components/ui/toggle.tsx | 40 + .../nft-challenge-template-fe/lib/utils.ts | 6 + .../nft-challenge-template-fe/next.config.mjs | 4 + .../nft-challenge-template-fe/package.json | 58 + .../postcss.config.mjs | 8 + .../nft-challenge-template-fe/public/next.svg | 1 + .../public/pixel-art-example.png | 5 + .../public/pixel-art-nft.png | 5 + .../public/placeholder-nft.svg | 5 + .../public/placeholder.svg | 1 + .../public/vercel.svg | 1 + .../tailwind.config.ts | 20 + .../toolkit/blockchain.ts | 29 + .../toolkit/graphql.ts | 64 + .../nft-challenge-template-fe/tsconfig.json | 27 + .../nft-challenge-template-fe/types/nft.ts | 65 + .../nft-challenge-template-fe/yarn.lock | 5557 +++++++++++++++++ 61 files changed, 19537 insertions(+), 78 deletions(-) create mode 100644 submissions/NFT Challenge Template/nft-challenge-factory-main/Cargo.lock create mode 100644 submissions/NFT Challenge Template/nft-challenge-factory-main/Cargo.toml delete mode 100644 submissions/NFT Challenge Template/nft-challenge-factory-main/README create mode 100644 submissions/NFT Challenge Template/nft-challenge-factory-main/rust-toolchain.toml create mode 100644 submissions/NFT Challenge Template/nft-challenge-factory-main/src/lib.rs create mode 100644 submissions/NFT Challenge Template/nft-challenge-factory-main/tests/test_basics.rs create mode 100755 submissions/NFT Challenge Template/nft-challenge-factory-main/wasm/nft-challenge.wasm create mode 100644 submissions/NFT Challenge Template/nft-challenge-main/Cargo.lock create mode 100644 submissions/NFT Challenge Template/nft-challenge-main/Cargo.toml rename submissions/NFT Challenge Template/nft-challenge-main/{README => README.md} (99%) create mode 100644 submissions/NFT Challenge Template/nft-challenge-main/rust-toolchain.toml create mode 100644 submissions/NFT Challenge Template/nft-challenge-main/src/external.rs create mode 100644 submissions/NFT Challenge Template/nft-challenge-main/src/lib.rs create mode 100755 submissions/NFT Challenge Template/nft-challenge-main/tests/mb-nft-v1/mb-nft-v1.wasm create mode 100644 submissions/NFT Challenge Template/nft-challenge-main/tests/tests.rs rename submissions/NFT Challenge Template/nft-challenge-template-fe/{README => README.md} (100%) create mode 100644 submissions/NFT Challenge Template/nft-challenge-template-fe/app/actions.ts create mode 100644 submissions/NFT Challenge Template/nft-challenge-template-fe/app/challenges/[idPrefix]/page.tsx create mode 100644 submissions/NFT Challenge Template/nft-challenge-template-fe/app/create-challenge/page.tsx create mode 100644 submissions/NFT Challenge Template/nft-challenge-template-fe/app/favicon.ico create mode 100644 submissions/NFT Challenge Template/nft-challenge-template-fe/app/globals.css create mode 100644 submissions/NFT Challenge Template/nft-challenge-template-fe/app/layout.tsx create mode 100644 submissions/NFT Challenge Template/nft-challenge-template-fe/app/page.tsx create mode 100644 submissions/NFT Challenge Template/nft-challenge-template-fe/components.json create mode 100644 submissions/NFT Challenge Template/nft-challenge-template-fe/components/ChallengeCreator.tsx create mode 100644 submissions/NFT Challenge Template/nft-challenge-template-fe/components/NearWalletSelector.tsx create mode 100644 submissions/NFT Challenge Template/nft-challenge-template-fe/components/Web3Toggle.tsx create mode 100644 submissions/NFT Challenge Template/nft-challenge-template-fe/components/carousel.tsx create mode 100644 submissions/NFT Challenge Template/nft-challenge-template-fe/components/forms/NFTForm.tsx create mode 100644 submissions/NFT Challenge Template/nft-challenge-template-fe/components/forms/RewardNFTForm.tsx create mode 100644 submissions/NFT Challenge Template/nft-challenge-template-fe/components/forms/TerminationRulesForm.tsx create mode 100644 submissions/NFT Challenge Template/nft-challenge-template-fe/components/forms/VictoryConditionsForm.tsx create mode 100644 submissions/NFT Challenge Template/nft-challenge-template-fe/components/ui/badge.tsx create mode 100644 submissions/NFT Challenge Template/nft-challenge-template-fe/components/ui/button.tsx create mode 100644 submissions/NFT Challenge Template/nft-challenge-template-fe/components/ui/calendar.tsx create mode 100644 submissions/NFT Challenge Template/nft-challenge-template-fe/components/ui/card.tsx create mode 100644 submissions/NFT Challenge Template/nft-challenge-template-fe/components/ui/carousel.tsx create mode 100644 submissions/NFT Challenge Template/nft-challenge-template-fe/components/ui/checkbox.tsx create mode 100644 submissions/NFT Challenge Template/nft-challenge-template-fe/components/ui/input.tsx create mode 100644 submissions/NFT Challenge Template/nft-challenge-template-fe/components/ui/label.tsx create mode 100644 submissions/NFT Challenge Template/nft-challenge-template-fe/components/ui/popover.tsx create mode 100644 submissions/NFT Challenge Template/nft-challenge-template-fe/components/ui/select.tsx create mode 100644 submissions/NFT Challenge Template/nft-challenge-template-fe/components/ui/textarea.tsx create mode 100644 submissions/NFT Challenge Template/nft-challenge-template-fe/components/ui/toggle.tsx create mode 100644 submissions/NFT Challenge Template/nft-challenge-template-fe/lib/utils.ts create mode 100644 submissions/NFT Challenge Template/nft-challenge-template-fe/next.config.mjs create mode 100644 submissions/NFT Challenge Template/nft-challenge-template-fe/package.json create mode 100644 submissions/NFT Challenge Template/nft-challenge-template-fe/postcss.config.mjs create mode 100644 submissions/NFT Challenge Template/nft-challenge-template-fe/public/next.svg create mode 100644 submissions/NFT Challenge Template/nft-challenge-template-fe/public/pixel-art-example.png create mode 100644 submissions/NFT Challenge Template/nft-challenge-template-fe/public/pixel-art-nft.png create mode 100644 submissions/NFT Challenge Template/nft-challenge-template-fe/public/placeholder-nft.svg create mode 100644 submissions/NFT Challenge Template/nft-challenge-template-fe/public/placeholder.svg create mode 100644 submissions/NFT Challenge Template/nft-challenge-template-fe/public/vercel.svg create mode 100644 submissions/NFT Challenge Template/nft-challenge-template-fe/tailwind.config.ts create mode 100644 submissions/NFT Challenge Template/nft-challenge-template-fe/toolkit/blockchain.ts create mode 100644 submissions/NFT Challenge Template/nft-challenge-template-fe/toolkit/graphql.ts create mode 100644 submissions/NFT Challenge Template/nft-challenge-template-fe/tsconfig.json create mode 100644 submissions/NFT Challenge Template/nft-challenge-template-fe/types/nft.ts create mode 100644 submissions/NFT Challenge Template/nft-challenge-template-fe/yarn.lock diff --git a/submissions/NFT Challenge Template/nft-challenge-factory-main/Cargo.lock b/submissions/NFT Challenge Template/nft-challenge-factory-main/Cargo.lock new file mode 100644 index 00000000..c0e18fd3 --- /dev/null +++ b/submissions/NFT Challenge Template/nft-challenge-factory-main/Cargo.lock @@ -0,0 +1,4602 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "Inflector" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" + +[[package]] +name = "actix" +version = "0.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb72882332b6d6282f428b77ba0358cb2687e61a6f6df6a6d3871e8a177c2d4f" +dependencies = [ + "actix-macros", + "actix-rt", + "actix_derive", + "bitflags 2.5.0", + "bytes", + "crossbeam-channel", + "futures-core", + "futures-sink", + "futures-task", + "futures-util", + "log", + "once_cell", + "parking_lot", + "pin-project-lite", + "smallvec", + "tokio", + "tokio-util 0.7.11", +] + +[[package]] +name = "actix-macros" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e01ed3140b2f8d422c68afa1ed2e85d996ea619c988ac834d255db32138655cb" +dependencies = [ + "quote", + "syn 2.0.63", +] + +[[package]] +name = "actix-rt" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28f32d40287d3f402ae0028a9d54bef51af15c8769492826a69d28f81893151d" +dependencies = [ + "futures-core", + "tokio", +] + +[[package]] +name = "actix_derive" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c7db3d5a9718568e4cf4a537cfd7070e6e6ff7481510d0237fb529ac850f6d3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.63", +] + +[[package]] +name = "addr2line" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" +dependencies = [ + "gimli 0.28.1", +] + +[[package]] +name = "adler" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" + +[[package]] +name = "aes" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" +dependencies = [ + "cfg-if 1.0.0", + "cipher 0.4.4", + "cpufeatures", +] + +[[package]] +name = "ahash" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "891477e0c6a8957309ee5c45a6368af3ae14bb510732d2684ffa19af310920f9" +dependencies = [ + "getrandom 0.2.15", + "once_cell", + "version_check", +] + +[[package]] +name = "aho-corasick" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +dependencies = [ + "memchr", +] + +[[package]] +name = "android-tzdata" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + +[[package]] +name = "anstream" +version = "0.6.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "418c75fa768af9c03be99d17643f93f79bbba589895012a80e3452a19ddda15b" +dependencies = [ + "anstyle", + "anstyle-parse", + "anstyle-query", + "anstyle-wincon", + "colorchoice", + "is_terminal_polyfill", + "utf8parse", +] + +[[package]] +name = "anstyle" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "038dfcf04a5feb68e9c60b21c9625a54c2c0616e79b72b0fd87075a056ae1d1b" + +[[package]] +name = "anstyle-parse" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c03a11a9034d92058ceb6ee011ce58af4a9bf61491aa7e1e59ecd24bd40d22d4" +dependencies = [ + "utf8parse", +] + +[[package]] +name = "anstyle-query" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a64c907d4e79225ac72e2a354c9ce84d50ebb4586dee56c82b3ee73004f537f5" +dependencies = [ + "windows-sys 0.52.0", +] + +[[package]] +name = "anstyle-wincon" +version = "3.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61a38449feb7068f52bb06c12759005cf459ee52bb4adc1d5a7c4322d716fb19" +dependencies = [ + "anstyle", + "windows-sys 0.52.0", +] + +[[package]] +name = "anyhow" +version = "1.0.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25bdb32cbbdce2b519a9cd7df3a678443100e265d5e25ca763b7572a5104f5f3" + +[[package]] +name = "arbitrary" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d5a26814d8dcb93b0e5a0ff3c6d80a8843bafb21b39e8e18a6f05471870e110" +dependencies = [ + "derive_arbitrary", +] + +[[package]] +name = "arrayvec" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" + +[[package]] +name = "assert_matches" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b34d609dfbaf33d6889b2b7106d3ca345eacad44200913df5ba02bfd31d2ba9" + +[[package]] +name = "async-stream" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd56dd203fef61ac097dd65721a419ddccb106b2d2b70ba60a6b529f03961a51" +dependencies = [ + "async-stream-impl", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-stream-impl" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.63", +] + +[[package]] +name = "async-trait" +version = "0.1.80" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6fa2087f2753a7da8cc1c0dbfcf89579dd57458e36769de5ac750b4671737ca" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.63", +] + +[[package]] +name = "atty" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" +dependencies = [ + "hermit-abi 0.1.19", + "libc", + "winapi", +] + +[[package]] +name = "autocfg" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" + +[[package]] +name = "backtrace" +version = "0.3.71" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26b05800d2e817c8b3b4b54abd461726265fa9789ae34330622f2db9ee696f9d" +dependencies = [ + "addr2line", + "cc", + "cfg-if 1.0.0", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", +] + +[[package]] +name = "base64" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" + +[[package]] +name = "base64" +version = "0.21.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" + +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "base64ct" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" + +[[package]] +name = "binary-install" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93bff426ff93f3610dd2b946f3eb8cb2d1285ca8682834d43be531a3f93db2ff" +dependencies = [ + "anyhow", + "dirs-next", + "flate2", + "fs2", + "hex", + "is_executable", + "siphasher", + "tar", + "ureq", + "zip 0.6.6", +] + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1" + +[[package]] +name = "bitvec" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" +dependencies = [ + "funty", + "radium", + "tap", + "wyz", +] + +[[package]] +name = "blake2" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a4e37d16930f5459780f5621038b6382b9bb37c19016f39fb6b5808d831f174" +dependencies = [ + "crypto-mac", + "digest 0.9.0", + "opaque-debug", +] + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "borsh" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15bf3650200d8bffa99015595e10f1fbd17de07abbc25bb067da79e769939bfa" +dependencies = [ + "borsh-derive 0.9.3", + "hashbrown 0.11.2", +] + +[[package]] +name = "borsh" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbe5b10e214954177fb1dc9fbd20a1a2608fe99e6c832033bdc7cea287a20d77" +dependencies = [ + "borsh-derive 1.5.0", + "cfg_aliases", +] + +[[package]] +name = "borsh-derive" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6441c552f230375d18e3cc377677914d2ca2b0d36e52129fe15450a2dce46775" +dependencies = [ + "borsh-derive-internal", + "borsh-schema-derive-internal", + "proc-macro-crate 0.1.5", + "proc-macro2", + "syn 1.0.109", +] + +[[package]] +name = "borsh-derive" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7a8646f94ab393e43e8b35a2558b1624bed28b97ee09c5d15456e3c9463f46d" +dependencies = [ + "once_cell", + "proc-macro-crate 3.1.0", + "proc-macro2", + "quote", + "syn 2.0.63", + "syn_derive", +] + +[[package]] +name = "borsh-derive-internal" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5449c28a7b352f2d1e592a8a28bf139bc71afb0764a14f3c02500935d8c44065" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "borsh-schema-derive-internal" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdbd5696d8bfa21d53d9fe39a714a18538bad11492a42d066dbbc395fb1951c0" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "brownstone" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "030ea61398f34f1395ccbeb046fb68c87b631d1f34567fed0f0f11fa35d18d8d" +dependencies = [ + "arrayvec", +] + +[[package]] +name = "bs58" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "771fe0050b883fcc3ea2359b1a96bcfbc090b7116eae7c3c512c7a083fdf23d3" + +[[package]] +name = "bs58" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf88ba1141d185c399bee5288d850d63b8369520c1eafc32a0430b5b6c287bf4" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "bumpalo" +version = "3.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "bytes" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9" + +[[package]] +name = "bytesize" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3e368af43e418a04d52505cf3dbc23dda4e3407ae2fa99fd0e4f308ce546acc" +dependencies = [ + "serde", +] + +[[package]] +name = "bzip2" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bdb116a6ef3f6c3698828873ad02c3014b3c85cadb88496095628e3ef1e347f8" +dependencies = [ + "bzip2-sys", + "libc", +] + +[[package]] +name = "bzip2-sys" +version = "0.1.11+1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "736a955f3fa7875102d57c82b8cac37ec45224a07fd32d58f9f7a186b6cd4cdc" +dependencies = [ + "cc", + "libc", + "pkg-config", +] + +[[package]] +name = "c2-chacha" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d27dae93fe7b1e0424dc57179ac396908c26b035a87234809f5c4dfd1b47dc80" +dependencies = [ + "cipher 0.2.5", + "ppv-lite86", +] + +[[package]] +name = "camino" +version = "1.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c59e92b5a388f549b863a7bea62612c09f24c8393560709a54558a9abdfb3b9c" +dependencies = [ + "serde", +] + +[[package]] +name = "cargo-near" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f73eb01da3b6737778d2006645533e75563d1080c64bf714bfb88d3fb0ac09b" +dependencies = [ + "anyhow", + "atty", + "bs58 0.4.0", + "camino", + "cargo_metadata 0.14.2", + "clap 3.2.25", + "colored", + "env_logger", + "libloading", + "log", + "near-abi", + "rustc_version", + "schemars", + "serde_json", + "sha2", + "symbolic-debuginfo", + "zstd", +] + +[[package]] +name = "cargo-platform" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24b1f0365a6c6bb4020cd05806fd0d33c44d38046b8bd7f0e40814b9763cabfc" +dependencies = [ + "serde", +] + +[[package]] +name = "cargo_metadata" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4acbb09d9ee8e23699b9634375c72795d095bf268439da88562cf9b501f181fa" +dependencies = [ + "camino", + "cargo-platform", + "semver", + "serde", + "serde_json", +] + +[[package]] +name = "cargo_metadata" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d886547e41f740c616ae73108f6eb70afe6d940c7bc697cb30f13daec073037" +dependencies = [ + "camino", + "cargo-platform", + "semver", + "serde", + "serde_json", + "thiserror", +] + +[[package]] +name = "cc" +version = "1.0.97" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "099a5357d84c4c61eb35fc8eafa9a79a902c2f76911e5747ced4e032edd8d9b4" +dependencies = [ + "jobserver", + "libc", + "once_cell", +] + +[[package]] +name = "cfg-if" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "cfg_aliases" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" + +[[package]] +name = "chrono" +version = "0.4.38" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" +dependencies = [ + "android-tzdata", + "iana-time-zone", + "js-sys", + "num-traits", + "serde", + "wasm-bindgen", + "windows-targets 0.52.5", +] + +[[package]] +name = "cipher" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12f8e7987cbd042a63249497f41aed09f8e65add917ea6566effbc56578d6801" +dependencies = [ + "generic-array", +] + +[[package]] +name = "cipher" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" +dependencies = [ + "crypto-common", + "inout", +] + +[[package]] +name = "clap" +version = "3.2.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ea181bf566f71cb9a5d17a59e1871af638180a18fb0035c92ae62b705207123" +dependencies = [ + "atty", + "bitflags 1.3.2", + "clap_derive 3.2.25", + "clap_lex 0.2.4", + "indexmap 1.9.3", + "once_cell", + "strsim 0.10.0", + "termcolor", + "textwrap", +] + +[[package]] +name = "clap" +version = "4.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90bc066a67923782aa8515dbaea16946c5bcc5addbd668bb80af688e53e548a0" +dependencies = [ + "clap_builder", + "clap_derive 4.5.4", +] + +[[package]] +name = "clap_builder" +version = "4.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae129e2e766ae0ec03484e609954119f123cc1fe650337e155d03b022f24f7b4" +dependencies = [ + "anstream", + "anstyle", + "clap_lex 0.7.0", + "strsim 0.11.1", +] + +[[package]] +name = "clap_derive" +version = "3.2.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae6371b8bdc8b7d3959e9cf7b22d4435ef3e79e138688421ec654acf8c81b008" +dependencies = [ + "heck 0.4.1", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "clap_derive" +version = "4.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "528131438037fd55894f62d6e9f068b8f45ac57ffa77517819645d10aed04f64" +dependencies = [ + "heck 0.5.0", + "proc-macro2", + "quote", + "syn 2.0.63", +] + +[[package]] +name = "clap_lex" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5" +dependencies = [ + "os_str_bytes", +] + +[[package]] +name = "clap_lex" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "98cc8fbded0c607b7ba9dd60cd98df59af97e84d24e49c8557331cfc26d301ce" + +[[package]] +name = "colorchoice" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b6a852b24ab71dffc585bcb46eaf7959d175cb865a7152e35b348d1b2960422" + +[[package]] +name = "colored" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cbf2150cce219b664a8a70df7a1f933836724b503f8a413af9365b4dcc4d90b8" +dependencies = [ + "lazy_static", + "windows-sys 0.48.0", +] + +[[package]] +name = "constant_time_eq" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" + +[[package]] +name = "convert_case" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" + +[[package]] +name = "core-foundation" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" + +[[package]] +name = "cpufeatures" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" +dependencies = [ + "libc", +] + +[[package]] +name = "crc32fast" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3855a8a784b474f333699ef2bbca9db2c4a1f6d9088a90a2d25b1eb53111eaa" +dependencies = [ + "cfg-if 1.0.0", +] + +[[package]] +name = "crossbeam-channel" +version = "0.5.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab3db02a9c5b5121e1e42fbdb1aeb65f5e02624cc58c43f2884c6ccac0b82f95" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345" + +[[package]] +name = "crunchy" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "crypto-mac" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b584a330336237c1eecd3e94266efb216c56ed91225d634cb2991c5f3fd1aeab" +dependencies = [ + "generic-array", + "subtle", +] + +[[package]] +name = "curve25519-dalek" +version = "4.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a677b8922c94e01bdbb12126b0bc852f00447528dee1782229af9c720c3f348" +dependencies = [ + "cfg-if 1.0.0", + "cpufeatures", + "curve25519-dalek-derive", + "digest 0.10.7", + "fiat-crypto", + "platforms", + "rand_core 0.6.4", + "rustc_version", + "subtle", + "zeroize", +] + +[[package]] +name = "curve25519-dalek-derive" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.63", +] + +[[package]] +name = "darling" +version = "0.20.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54e36fcd13ed84ffdfda6f5be89b31287cbb80c439841fe69e04841435464391" +dependencies = [ + "darling_core", + "darling_macro", +] + +[[package]] +name = "darling_core" +version = "0.20.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c2cf1c23a687a1feeb728783b993c4e1ad83d99f351801977dd809b48d0a70f" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim 0.10.0", + "syn 2.0.63", +] + +[[package]] +name = "darling_macro" +version = "0.20.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a668eda54683121533a393014d8692171709ff57a7d61f187b6e782719f8933f" +dependencies = [ + "darling_core", + "quote", + "syn 2.0.63", +] + +[[package]] +name = "debugid" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6ee87af31d84ef885378aebca32be3d682b0e0dc119d5b4860a2c5bb5046730" +dependencies = [ + "uuid", +] + +[[package]] +name = "deranged" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" +dependencies = [ + "powerfmt", + "serde", +] + +[[package]] +name = "derive_arbitrary" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67e77553c4162a157adbf834ebae5b415acbecbeafc7a74b0e886657506a7611" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.63", +] + +[[package]] +name = "derive_more" +version = "0.99.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321" +dependencies = [ + "convert_case", + "proc-macro2", + "quote", + "rustc_version", + "syn 1.0.109", +] + +[[package]] +name = "digest" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" +dependencies = [ + "generic-array", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "crypto-common", + "subtle", +] + +[[package]] +name = "dirs-next" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1" +dependencies = [ + "cfg-if 1.0.0", + "dirs-sys-next", +] + +[[package]] +name = "dirs-sys-next" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" +dependencies = [ + "libc", + "redox_users", + "winapi", +] + +[[package]] +name = "dmsort" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0bc8fbe9441c17c9f46f75dfe27fa1ddb6c68a461ccaed0481419219d4f10d3" + +[[package]] +name = "dyn-clone" +version = "1.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d6ef0072f8a535281e4876be788938b528e9a1d43900b82c2569af7da799125" + +[[package]] +name = "easy-ext" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53aff6fdc1b181225acdcb5b14c47106726fd8e486707315b1b138baed68ee31" + +[[package]] +name = "ed25519" +version = "2.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53" +dependencies = [ + "signature", +] + +[[package]] +name = "ed25519-dalek" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a3daa8e81a3963a60642bcc1f90a670680bd4a77535faa384e9d1c79d620871" +dependencies = [ + "curve25519-dalek", + "ed25519", + "rand_core 0.6.4", + "sha2", + "subtle", +] + +[[package]] +name = "either" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a47c1c47d2f5964e29c61246e81db715514cd532db6b5116a25ea3c03d6780a2" + +[[package]] +name = "elementtree" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f6319c9433cf1e95c60c8533978bccf0614f27f03bb4e514253468eeeaa7fe3" +dependencies = [ + "string_cache", + "xml-rs", +] + +[[package]] +name = "encoding_rs" +version = "0.8.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59" +dependencies = [ + "cfg-if 1.0.0", +] + +[[package]] +name = "enum-map" +version = "2.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6866f3bfdf8207509a033af1a75a7b08abda06bbaaeae6669323fd5a097df2e9" +dependencies = [ + "enum-map-derive", +] + +[[package]] +name = "enum-map-derive" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f282cfdfe92516eb26c2af8589c274c7c17681f5ecc03c18255fe741c6aa64eb" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.63", +] + +[[package]] +name = "env_logger" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a12e6657c4c97ebab115a42dcee77225f7f482cdd841cf7088c657a42e9e00e7" +dependencies = [ + "atty", + "humantime", + "log", + "regex", + "termcolor", +] + +[[package]] +name = "equivalent" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" + +[[package]] +name = "errno" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "fallible-iterator" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7" + +[[package]] +name = "fastrand" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" + +[[package]] +name = "fiat-crypto" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" + +[[package]] +name = "filetime" +version = "0.2.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ee447700ac8aa0b2f2bd7bc4462ad686ba06baa6727ac149a2d6277f0d240fd" +dependencies = [ + "cfg-if 1.0.0", + "libc", + "redox_syscall 0.4.1", + "windows-sys 0.52.0", +] + +[[package]] +name = "fixed-hash" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfcf0ed7fe52a17a03854ec54a9f76d6d84508d1c0e66bc1793301c73fc8493c" +dependencies = [ + "static_assertions", +] + +[[package]] +name = "fixedbitset" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" + +[[package]] +name = "flate2" +version = "1.0.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f54427cfd1c7829e2a139fcefea601bf088ebca651d2bf53ebc600eac295dae" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foreign-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +dependencies = [ + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + +[[package]] +name = "form_urlencoded" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "fs2" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9564fc758e15025b46aa6643b1b77d047d1a56a1aea6e01002ac0c7026876213" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "funty" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" + +[[package]] +name = "futures" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" + +[[package]] +name = "futures-executor" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" + +[[package]] +name = "futures-sink" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" + +[[package]] +name = "futures-task" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" + +[[package]] +name = "futures-util" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "getrandom" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" +dependencies = [ + "cfg-if 1.0.0", + "libc", + "wasi 0.9.0+wasi-snapshot-preview1", +] + +[[package]] +name = "getrandom" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" +dependencies = [ + "cfg-if 1.0.0", + "libc", + "wasi 0.11.0+wasi-snapshot-preview1", +] + +[[package]] +name = "gimli" +version = "0.26.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22030e2c5a68ec659fde1e949a745124b48e6fa8b045b7ed5bd1fe4ccc5c4e5d" +dependencies = [ + "fallible-iterator", + "stable_deref_trait", +] + +[[package]] +name = "gimli" +version = "0.28.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" + +[[package]] +name = "goblin" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7666983ed0dd8d21a6f6576ee00053ca0926fb281a5522577a4dbd0f1b54143" +dependencies = [ + "log", + "plain", + "scroll 0.11.0", +] + +[[package]] +name = "h2" +version = "0.3.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8" +dependencies = [ + "bytes", + "fnv", + "futures-core", + "futures-sink", + "futures-util", + "http", + "indexmap 2.2.6", + "slab", + "tokio", + "tokio-util 0.7.11", + "tracing", +] + +[[package]] +name = "hashbrown" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e" +dependencies = [ + "ahash", +] + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" + +[[package]] +name = "hashbrown" +version = "0.14.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" + +[[package]] +name = "heck" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c" +dependencies = [ + "unicode-segmentation", +] + +[[package]] +name = "heck" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" + +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + +[[package]] +name = "hermit-abi" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" +dependencies = [ + "libc", +] + +[[package]] +name = "hermit-abi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" +dependencies = [ + "serde", +] + +[[package]] +name = "hmac" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +dependencies = [ + "digest 0.10.7", +] + +[[package]] +name = "home" +version = "0.5.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5" +dependencies = [ + "windows-sys 0.52.0", +] + +[[package]] +name = "http" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http-body" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" +dependencies = [ + "bytes", + "http", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" + +[[package]] +name = "httpdate" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" + +[[package]] +name = "humantime" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" + +[[package]] +name = "hyper" +version = "0.14.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf96e135eb83a2a8ddf766e426a841d8ddd7449d5f00d34ea02b41d2f19eef80" +dependencies = [ + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "socket2", + "tokio", + "tower-service", + "tracing", + "want", +] + +[[package]] +name = "hyper-timeout" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbb958482e8c7be4bc3cf272a766a2b0bf1a6755e7a6ae777f017a31d11b13b1" +dependencies = [ + "hyper", + "pin-project-lite", + "tokio", + "tokio-io-timeout", +] + +[[package]] +name = "hyper-tls" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" +dependencies = [ + "bytes", + "hyper", + "native-tls", + "tokio", + "tokio-native-tls", +] + +[[package]] +name = "iana-time-zone" +version = "0.1.60" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "wasm-bindgen", + "windows-core", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + +[[package]] +name = "idna" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" +dependencies = [ + "unicode-bidi", + "unicode-normalization", +] + +[[package]] +name = "indent_write" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0cfe9645a18782869361d9c8732246be7b410ad4e919d3609ebabdac00ba12c3" + +[[package]] +name = "indexmap" +version = "1.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +dependencies = [ + "autocfg", + "hashbrown 0.12.3", + "serde", +] + +[[package]] +name = "indexmap" +version = "2.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" +dependencies = [ + "equivalent", + "hashbrown 0.14.5", + "serde", +] + +[[package]] +name = "inout" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" +dependencies = [ + "generic-array", +] + +[[package]] +name = "ipnet" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" + +[[package]] +name = "is_executable" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "302d553b8abc8187beb7d663e34c065ac4570b273bc9511a50e940e99409c577" +dependencies = [ + "winapi", +] + +[[package]] +name = "is_terminal_polyfill" +version = "1.70.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8478577c03552c21db0e2724ffb8986a5ce7af88107e6be5d2ee6e158c12800" + +[[package]] +name = "itertools" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" + +[[package]] +name = "jobserver" +version = "0.1.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2b099aaa34a9751c5bf0878add70444e1ed2dd73f347be99003d4577277de6e" +dependencies = [ + "libc", +] + +[[package]] +name = "joinery" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72167d68f5fce3b8655487b8038691a3c9984ee769590f93f2a631f4ad64e4f5" + +[[package]] +name = "js-sys" +version = "0.3.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" +dependencies = [ + "wasm-bindgen", +] + +[[package]] +name = "json-patch" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec9ad60d674508f3ca8f380a928cfe7b096bc729c4e2dbfe3852bc45da3ab30b" +dependencies = [ + "serde", + "serde_json", + "thiserror", +] + +[[package]] +name = "json_comments" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9dbbfed4e59ba9750e15ba154fdfd9329cee16ff3df539c2666b70f58cc32105" + +[[package]] +name = "keccak" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecc2af9a1119c51f12a14607e783cb977bde58bc069ff0c3da1095e635d70654" +dependencies = [ + "cpufeatures", +] + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +dependencies = [ + "spin 0.5.2", +] + +[[package]] +name = "lazycell" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" + +[[package]] +name = "libc" +version = "0.2.154" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae743338b92ff9146ce83992f766a31066a91a8c84a45e0e9f21e7cf6de6d346" + +[[package]] +name = "libloading" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" +dependencies = [ + "cfg-if 1.0.0", + "winapi", +] + +[[package]] +name = "libredox" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" +dependencies = [ + "bitflags 2.5.0", + "libc", +] + +[[package]] +name = "linux-raw-sys" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c" + +[[package]] +name = "lock_api" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" + +[[package]] +name = "matchers" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" +dependencies = [ + "regex-automata 0.1.10", +] + +[[package]] +name = "memchr" +version = "2.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d" + +[[package]] +name = "memmap2" +version = "0.5.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83faa42c0a078c393f6b29d5db232d8be22776a891f8f56e5284faee4a20b327" +dependencies = [ + "libc", +] + +[[package]] +name = "memoffset" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d61c719bcfbcf5d62b3a09efa6088de8c54bc0bfcd3ea7ae39fcc186108b8de1" +dependencies = [ + "autocfg", +] + +[[package]] +name = "memory_units" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8452105ba047068f40ff7093dd1d9da90898e63dd61736462e9cdda6a90ad3c3" + +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + +[[package]] +name = "miniz_oxide" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d811f3e15f28568be3407c8e7fdb6514c1cda3cb30683f15b6a1a1dc4ea14a7" +dependencies = [ + "adler", +] + +[[package]] +name = "mio" +version = "0.8.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" +dependencies = [ + "libc", + "wasi 0.11.0+wasi-snapshot-preview1", + "windows-sys 0.48.0", +] + +[[package]] +name = "multimap" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5ce46fe64a9d73be07dcbe690a38ce1b293be448fd8ce1e6c1b8062c9f72c6a" + +[[package]] +name = "native-tls" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07226173c32f2926027b63cce4bcd8076c3552846cbe7925f3aaffeac0a3b92e" +dependencies = [ + "lazy_static", + "libc", + "log", + "openssl", + "openssl-probe", + "openssl-sys", + "schannel", + "security-framework", + "security-framework-sys", + "tempfile", +] + +[[package]] +name = "near-abi" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "885db39b08518fa700b73fa2214e8adbbfba316ba82dd510f50519173eadaf73" +dependencies = [ + "borsh 0.9.3", + "schemars", + "semver", + "serde", +] + +[[package]] +name = "near-account-id" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35cbb989542587b47205e608324ddd391f0cee1c22b4b64ae49f458334b95907" +dependencies = [ + "borsh 1.5.0", + "serde", +] + +[[package]] +name = "near-chain-configs" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d05e5a8ace81c09d7eb165dffc1742358a021b2fa761f2160943305f83216003" +dependencies = [ + "anyhow", + "bytesize", + "chrono", + "derive_more", + "near-config-utils", + "near-crypto", + "near-parameters", + "near-primitives", + "num-rational", + "once_cell", + "serde", + "serde_json", + "sha2", + "smart-default", + "tracing", +] + +[[package]] +name = "near-config-utils" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ae1eaab1d545a9be7a55b6ef09f365c2017f93a03063547591d12c0c6d27e58" +dependencies = [ + "anyhow", + "json_comments", + "thiserror", + "tracing", +] + +[[package]] +name = "near-crypto" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2991d2912218a80ec0733ac87f84fa803accea105611eea209d4419271957667" +dependencies = [ + "blake2", + "borsh 1.5.0", + "bs58 0.4.0", + "c2-chacha", + "curve25519-dalek", + "derive_more", + "ed25519-dalek", + "hex", + "near-account-id", + "near-config-utils", + "near-stdx", + "once_cell", + "primitive-types", + "rand 0.7.3", + "secp256k1", + "serde", + "serde_json", + "subtle", + "thiserror", +] + +[[package]] +name = "near-fmt" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7d998dfc1e04001608899b2498ad5a782c7d036b73769d510de21964db99286" +dependencies = [ + "near-primitives-core", +] + +[[package]] +name = "near-gas" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14e75c875026229902d065e4435804497337b631ec69ba746b102954273e9ad1" +dependencies = [ + "borsh 1.5.0", + "schemars", + "serde", +] + +[[package]] +name = "near-jsonrpc-client" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18ad81e015f7aced8925d5b9ba3f369b36da9575c15812cfd0786bc1213284ca" +dependencies = [ + "borsh 1.5.0", + "lazy_static", + "log", + "near-chain-configs", + "near-crypto", + "near-jsonrpc-primitives", + "near-primitives", + "reqwest", + "serde", + "serde_json", + "thiserror", +] + +[[package]] +name = "near-jsonrpc-primitives" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0ce745e954ae776eef05957602e638ee9581106a3675946fb43c2fe7e38ef03" +dependencies = [ + "arbitrary", + "near-chain-configs", + "near-crypto", + "near-primitives", + "near-rpc-error-macro", + "serde", + "serde_json", + "thiserror", +] + +[[package]] +name = "near-o11y" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d20762631bc8253030013bbae9b5f0542691edc1aa6722f1e8141cc9b928ae5b" +dependencies = [ + "actix", + "base64 0.21.7", + "clap 4.5.4", + "near-crypto", + "near-fmt", + "near-primitives-core", + "once_cell", + "opentelemetry", + "opentelemetry-otlp", + "opentelemetry-semantic-conventions", + "prometheus", + "serde", + "serde_json", + "strum 0.24.1", + "thiserror", + "tokio", + "tracing", + "tracing-appender", + "tracing-opentelemetry", + "tracing-subscriber", +] + +[[package]] +name = "near-parameters" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e9f16a59b6c3e69b0585be951af6fe42a0ba86c0e207cb8c63badd19efd16680" +dependencies = [ + "assert_matches", + "borsh 1.5.0", + "enum-map", + "near-account-id", + "near-primitives-core", + "num-rational", + "serde", + "serde_repr", + "serde_yaml", + "strum 0.24.1", + "thiserror", +] + +[[package]] +name = "near-primitives" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0462b067732132babcc89d5577db3bfcb0a1bcfbaaed3f2db4c11cd033666314" +dependencies = [ + "arbitrary", + "base64 0.21.7", + "borsh 1.5.0", + "bytesize", + "cfg-if 1.0.0", + "chrono", + "derive_more", + "easy-ext", + "enum-map", + "hex", + "near-crypto", + "near-fmt", + "near-o11y", + "near-parameters", + "near-primitives-core", + "near-rpc-error-macro", + "near-stdx", + "near-vm-runner", + "num-rational", + "once_cell", + "primitive-types", + "rand 0.8.5", + "rand_chacha 0.3.1", + "reed-solomon-erasure", + "serde", + "serde_json", + "serde_with", + "serde_yaml", + "sha3", + "smart-default", + "strum 0.24.1", + "thiserror", + "time", + "tracing", +] + +[[package]] +name = "near-primitives-core" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8443eb718606f572c438be6321a097a8ebd69f8e48d953885b4f16601af88225" +dependencies = [ + "arbitrary", + "base64 0.21.7", + "borsh 1.5.0", + "bs58 0.4.0", + "derive_more", + "enum-map", + "near-account-id", + "num-rational", + "serde", + "serde_repr", + "serde_with", + "sha2", + "strum 0.24.1", + "thiserror", +] + +[[package]] +name = "near-rpc-error-core" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80fca203c51edd9595ec14db1d13359fb9ede32314990bf296b6c5c4502f6ab7" +dependencies = [ + "quote", + "serde", + "syn 2.0.63", +] + +[[package]] +name = "near-rpc-error-macro" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "897a445de2102f6732c8a185d922f5e3bf7fd0a41243ce40854df2197237f799" +dependencies = [ + "fs2", + "near-rpc-error-core", + "serde", + "syn 2.0.63", +] + +[[package]] +name = "near-sandbox-utils" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2de216bb0152bfb64f59016d9e6a5b1ac56dd85f729e5fde08461571e2182c8f" +dependencies = [ + "anyhow", + "binary-install", + "chrono", + "fs2", + "home", + "tokio", +] + +[[package]] +name = "near-sdk" +version = "5.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "520234cfdf04a805ac2f04715889d096eb83fdd5b99ca7d0f8027ae473f891a8" +dependencies = [ + "base64 0.21.7", + "borsh 1.5.0", + "bs58 0.5.1", + "near-account-id", + "near-crypto", + "near-gas", + "near-parameters", + "near-primitives", + "near-primitives-core", + "near-sdk-macros", + "near-sys", + "near-token", + "near-vm-runner", + "once_cell", + "serde", + "serde_json", + "wee_alloc", +] + +[[package]] +name = "near-sdk-macros" +version = "5.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee2fe3fc30068c5f20e89b0985d6104c5cc1c6742dbc6efbf352be4189b9bbf7" +dependencies = [ + "Inflector", + "darling", + "proc-macro2", + "quote", + "serde", + "serde_json", + "strum 0.26.2", + "strum_macros 0.26.2", + "syn 2.0.63", +] + +[[package]] +name = "near-stdx" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "855fd5540e3b4ff6fedf12aba2db1ee4b371b36f465da1363a6d022b27cb43b8" + +[[package]] +name = "near-sys" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "397688591acf8d3ebf2c2485ba32d4b24fc10aad5334e3ad8ec0b7179bfdf06b" + +[[package]] +name = "near-token" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b68f3f8a2409f72b43efdbeff8e820b81e70824c49fee8572979d789d1683fb" +dependencies = [ + "borsh 1.5.0", + "serde", +] + +[[package]] +name = "near-vm-runner" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c56c80bdb1954808f59bd36a9112377197b38d424991383bf05f52d0fe2e0da5" +dependencies = [ + "base64 0.21.7", + "borsh 1.5.0", + "ed25519-dalek", + "enum-map", + "memoffset", + "near-crypto", + "near-parameters", + "near-primitives-core", + "near-stdx", + "num-rational", + "once_cell", + "prefix-sum-vec", + "ripemd", + "serde", + "serde_repr", + "serde_with", + "sha2", + "sha3", + "strum 0.24.1", + "thiserror", + "tracing", + "zeropool-bn", +] + +[[package]] +name = "near-workspaces" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3e597da87d0c1a722e23efb8c24ae42a0ad99a15f37101dad45c15defb051c1" +dependencies = [ + "async-trait", + "base64 0.21.7", + "bs58 0.5.1", + "cargo-near", + "cargo_metadata 0.18.1", + "chrono", + "fs2", + "json-patch", + "libc", + "near-account-id", + "near-crypto", + "near-gas", + "near-jsonrpc-client", + "near-jsonrpc-primitives", + "near-primitives", + "near-sandbox-utils", + "near-token", + "rand 0.8.5", + "reqwest", + "serde", + "serde_json", + "sha2", + "tempfile", + "thiserror", + "tokio", + "tokio-retry", + "tracing", + "url", +] + +[[package]] +name = "new_debug_unreachable" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" + +[[package]] +name = "nft-challenger-generator" +version = "0.1.0" +dependencies = [ + "borsh 1.5.0", + "near-sdk", + "near-workspaces", + "serde", + "serde_json", + "tokio", +] + +[[package]] +name = "nom" +version = "7.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] + +[[package]] +name = "nom-supreme" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aadc66631948f6b65da03be4c4cd8bd104d481697ecbb9bbd65719b1ec60bc9f" +dependencies = [ + "brownstone", + "indent_write", + "joinery", + "memchr", + "nom", +] + +[[package]] +name = "nu-ansi-term" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" +dependencies = [ + "overload", + "winapi", +] + +[[package]] +name = "num-bigint" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f6f7833f2cbf2360a6cfd58cd41a53aa7a90bd4c202f5b1c7dd2ed73c57b2c3" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-conv" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" + +[[package]] +name = "num-integer" +version = "0.1.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-rational" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12ac428b1cb17fce6f731001d307d351ec70a6d202fc2e60f7d4c5e42d8f4f07" +dependencies = [ + "autocfg", + "num-bigint", + "num-integer", + "num-traits", + "serde", +] + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", +] + +[[package]] +name = "num_cpus" +version = "1.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" +dependencies = [ + "hermit-abi 0.3.9", + "libc", +] + +[[package]] +name = "object" +version = "0.32.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" +dependencies = [ + "memchr", +] + +[[package]] +name = "once_cell" +version = "1.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" + +[[package]] +name = "opaque-debug" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" + +[[package]] +name = "openssl" +version = "0.10.64" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95a0481286a310808298130d22dd1fef0fa571e05a8f44ec801801e84b216b1f" +dependencies = [ + "bitflags 2.5.0", + "cfg-if 1.0.0", + "foreign-types", + "libc", + "once_cell", + "openssl-macros", + "openssl-sys", +] + +[[package]] +name = "openssl-macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.63", +] + +[[package]] +name = "openssl-probe" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" + +[[package]] +name = "openssl-sys" +version = "0.9.102" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c597637d56fbc83893a35eb0dd04b2b8e7a50c91e64e9493e398b5df4fb45fa2" +dependencies = [ + "cc", + "libc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "opentelemetry" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6105e89802af13fdf48c49d7646d3b533a70e536d818aae7e78ba0433d01acb8" +dependencies = [ + "async-trait", + "crossbeam-channel", + "futures-channel", + "futures-executor", + "futures-util", + "js-sys", + "lazy_static", + "percent-encoding", + "pin-project", + "rand 0.8.5", + "thiserror", + "tokio", + "tokio-stream", +] + +[[package]] +name = "opentelemetry-otlp" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d1a6ca9de4c8b00aa7f1a153bd76cb263287155cec642680d79d98706f3d28a" +dependencies = [ + "async-trait", + "futures", + "futures-util", + "http", + "opentelemetry", + "prost", + "thiserror", + "tokio", + "tonic", + "tonic-build", +] + +[[package]] +name = "opentelemetry-semantic-conventions" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "985cc35d832d412224b2cffe2f9194b1b89b6aa5d0bef76d080dce09d90e62bd" +dependencies = [ + "opentelemetry", +] + +[[package]] +name = "os_str_bytes" +version = "6.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2355d85b9a3786f481747ced0e0ff2ba35213a1f9bd406ed906554d7af805a1" + +[[package]] +name = "overload" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" + +[[package]] +name = "parking_lot" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e4af0ca4f6caed20e900d564c242b8e5d4903fdacf31d3daf527b66fe6f42fb" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" +dependencies = [ + "cfg-if 1.0.0", + "libc", + "redox_syscall 0.5.1", + "smallvec", + "windows-targets 0.52.5", +] + +[[package]] +name = "password-hash" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7676374caaee8a325c9e7a2ae557f216c5563a171d6997b0ef8a65af35147700" +dependencies = [ + "base64ct", + "rand_core 0.6.4", + "subtle", +] + +[[package]] +name = "pbkdf2" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917" +dependencies = [ + "digest 0.10.7", + "hmac", + "password-hash", + "sha2", +] + +[[package]] +name = "pdb" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13f4d162ecaaa1467de5afbe62d597757b674b51da8bb4e587430c5fdb2af7aa" +dependencies = [ + "fallible-iterator", + "scroll 0.10.2", + "uuid", +] + +[[package]] +name = "percent-encoding" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" + +[[package]] +name = "petgraph" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" +dependencies = [ + "fixedbitset", + "indexmap 2.2.6", +] + +[[package]] +name = "phf_shared" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096" +dependencies = [ + "siphasher", +] + +[[package]] +name = "pin-project" +version = "1.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.63", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "pkg-config" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" + +[[package]] +name = "plain" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6" + +[[package]] +name = "platforms" +version = "3.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db23d408679286588f4d4644f965003d056e3dd5abcaaa938116871d7ce2fee7" + +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + +[[package]] +name = "ppv-lite86" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" + +[[package]] +name = "precomputed-hash" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" + +[[package]] +name = "prefix-sum-vec" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa06bd51638b6e76ac9ba9b6afb4164fa647bd2916d722f2623fbb6d1ed8bdba" + +[[package]] +name = "primitive-types" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05e4722c697a58a99d5d06a08c30821d7c082a4632198de1eaa5a6c22ef42373" +dependencies = [ + "fixed-hash", + "uint", +] + +[[package]] +name = "proc-macro-crate" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785" +dependencies = [ + "toml", +] + +[[package]] +name = "proc-macro-crate" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284" +dependencies = [ + "toml_edit", +] + +[[package]] +name = "proc-macro-error" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +dependencies = [ + "proc-macro-error-attr", + "proc-macro2", + "quote", + "syn 1.0.109", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +dependencies = [ + "proc-macro2", + "quote", + "version_check", +] + +[[package]] +name = "proc-macro2" +version = "1.0.82" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ad3d49ab951a01fbaafe34f2ec74122942fe18a3f9814c3268f1bb72042131b" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "prometheus" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d33c28a30771f7f96db69893f78b857f7450d7e0237e9c8fc6427a81bae7ed1" +dependencies = [ + "cfg-if 1.0.0", + "fnv", + "lazy_static", + "memchr", + "parking_lot", + "protobuf", + "thiserror", +] + +[[package]] +name = "prost" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "444879275cb4fd84958b1a1d5420d15e6fcf7c235fe47f053c9c2a80aceb6001" +dependencies = [ + "bytes", + "prost-derive", +] + +[[package]] +name = "prost-build" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62941722fb675d463659e49c4f3fe1fe792ff24fe5bbaa9c08cd3b98a1c354f5" +dependencies = [ + "bytes", + "heck 0.3.3", + "itertools", + "lazy_static", + "log", + "multimap", + "petgraph", + "prost", + "prost-types", + "regex", + "tempfile", + "which", +] + +[[package]] +name = "prost-derive" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9cc1a3263e07e0bf68e96268f37665207b49560d98739662cdfaae215c720fe" +dependencies = [ + "anyhow", + "itertools", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "prost-types" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "534b7a0e836e3c482d2693070f982e39e7611da9695d4d1f5a4b186b51faef0a" +dependencies = [ + "bytes", + "prost", +] + +[[package]] +name = "protobuf" +version = "2.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "106dd99e98437432fed6519dedecfade6a06a73bb7b2a1e019fdd2bee5778d94" + +[[package]] +name = "quote" +version = "1.0.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "radium" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" + +[[package]] +name = "rand" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" +dependencies = [ + "getrandom 0.1.16", + "libc", + "rand_chacha 0.2.2", + "rand_core 0.5.1", + "rand_hc", +] + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha 0.3.1", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" +dependencies = [ + "ppv-lite86", + "rand_core 0.5.1", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_core" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" +dependencies = [ + "getrandom 0.1.16", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom 0.2.15", +] + +[[package]] +name = "rand_hc" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" +dependencies = [ + "rand_core 0.5.1", +] + +[[package]] +name = "redox_syscall" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" +dependencies = [ + "bitflags 1.3.2", +] + +[[package]] +name = "redox_syscall" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "469052894dcb553421e483e4209ee581a45100d31b4018de03e5a7ad86374a7e" +dependencies = [ + "bitflags 2.5.0", +] + +[[package]] +name = "redox_users" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd283d9651eeda4b2a83a43c1c91b266c40fd76ecd39a50a8c630ae69dc72891" +dependencies = [ + "getrandom 0.2.15", + "libredox", + "thiserror", +] + +[[package]] +name = "reed-solomon-erasure" +version = "4.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a415a013dd7c5d4221382329a5a3482566da675737494935cbbbcdec04662f9d" +dependencies = [ + "smallvec", +] + +[[package]] +name = "regex" +version = "1.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c117dbdfde9c8308975b6a18d71f3f385c89461f7b3fb054288ecf2a2058ba4c" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata 0.4.6", + "regex-syntax 0.8.3", +] + +[[package]] +name = "regex-automata" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" +dependencies = [ + "regex-syntax 0.6.29", +] + +[[package]] +name = "regex-automata" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax 0.8.3", +] + +[[package]] +name = "regex-syntax" +version = "0.6.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" + +[[package]] +name = "regex-syntax" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adad44e29e4c806119491a7f06f03de4d1af22c3a680dd47f1e6e179439d1f56" + +[[package]] +name = "reqwest" +version = "0.11.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62" +dependencies = [ + "base64 0.21.7", + "bytes", + "encoding_rs", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "hyper", + "hyper-tls", + "ipnet", + "js-sys", + "log", + "mime", + "native-tls", + "once_cell", + "percent-encoding", + "pin-project-lite", + "rustls-pemfile", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper", + "system-configuration", + "tokio", + "tokio-native-tls", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "winreg", +] + +[[package]] +name = "ring" +version = "0.17.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" +dependencies = [ + "cc", + "cfg-if 1.0.0", + "getrandom 0.2.15", + "libc", + "spin 0.9.8", + "untrusted", + "windows-sys 0.52.0", +] + +[[package]] +name = "ripemd" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd124222d17ad93a644ed9d011a40f4fb64aa54275c08cc216524a9ea82fb09f" +dependencies = [ + "digest 0.10.7", +] + +[[package]] +name = "rustc-demangle" +version = "0.1.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" + +[[package]] +name = "rustc-hex" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6" + +[[package]] +name = "rustc_version" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +dependencies = [ + "semver", +] + +[[package]] +name = "rustix" +version = "0.38.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" +dependencies = [ + "bitflags 2.5.0", + "errno", + "libc", + "linux-raw-sys", + "windows-sys 0.52.0", +] + +[[package]] +name = "rustls" +version = "0.22.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf4ef73721ac7bcd79b2b315da7779d8fc09718c6b3d2d1b2d94850eb8c18432" +dependencies = [ + "log", + "ring", + "rustls-pki-types", + "rustls-webpki", + "subtle", + "zeroize", +] + +[[package]] +name = "rustls-pemfile" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" +dependencies = [ + "base64 0.21.7", +] + +[[package]] +name = "rustls-pki-types" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "976295e77ce332211c0d24d92c0e83e50f5c5f046d11082cea19f3df13a3562d" + +[[package]] +name = "rustls-webpki" +version = "0.102.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3bce581c0dd41bce533ce695a1437fa16a7ab5ac3ccfa99fe1a620a7885eabf" +dependencies = [ + "ring", + "rustls-pki-types", + "untrusted", +] + +[[package]] +name = "rustversion" +version = "1.0.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "092474d1a01ea8278f69e6a358998405fae5b8b963ddaeb2b0b04a128bf1dfb0" + +[[package]] +name = "ryu" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" + +[[package]] +name = "schannel" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbc91545643bcf3a0bbb6569265615222618bdf33ce4ffbbd13c4bbd4c093534" +dependencies = [ + "windows-sys 0.52.0", +] + +[[package]] +name = "schemars" +version = "0.8.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc6e7ed6919cb46507fb01ff1654309219f62b4d603822501b0b80d42f6f21ef" +dependencies = [ + "dyn-clone", + "schemars_derive", + "serde", + "serde_json", +] + +[[package]] +name = "schemars_derive" +version = "0.8.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "185f2b7aa7e02d418e453790dde16890256bbd2bcd04b7dc5348811052b53f49" +dependencies = [ + "proc-macro2", + "quote", + "serde_derive_internals", + "syn 2.0.63", +] + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "scroll" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fda28d4b4830b807a8b43f7b0e6b5df875311b3e7621d84577188c175b6ec1ec" + +[[package]] +name = "scroll" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04c565b551bafbef4157586fa379538366e4385d42082f255bfd96e4fe8519da" +dependencies = [ + "scroll_derive", +] + +[[package]] +name = "scroll_derive" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1db149f81d46d2deba7cd3c50772474707729550221e69588478ebf9ada425ae" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.63", +] + +[[package]] +name = "secp256k1" +version = "0.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25996b82292a7a57ed3508f052cfff8640d38d32018784acd714758b43da9c8f" +dependencies = [ + "rand 0.8.5", + "secp256k1-sys", +] + +[[package]] +name = "secp256k1-sys" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70a129b9e9efbfb223753b9163c4ab3b13cff7fd9c7f010fbac25ab4099fa07e" +dependencies = [ + "cc", +] + +[[package]] +name = "security-framework" +version = "2.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c627723fd09706bacdb5cf41499e95098555af3c3c29d014dc3c458ef6be11c0" +dependencies = [ + "bitflags 2.5.0", + "core-foundation", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework-sys" +version = "2.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "317936bbbd05227752583946b9e66d7ce3b489f84e11a94a510b4437fef407d7" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "semver" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" +dependencies = [ + "serde", +] + +[[package]] +name = "serde" +version = "1.0.201" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "780f1cebed1629e4753a1a38a3c72d30b97ec044f0aef68cb26650a3c5cf363c" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.201" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5e405930b9796f1c00bee880d03fc7e0bb4b9a11afc776885ffe84320da2865" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.63", +] + +[[package]] +name = "serde_derive_internals" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "330f01ce65a3a5fe59a60c82f3c9a024b573b8a6e875bd233fe5f934e71d54e3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.63", +] + +[[package]] +name = "serde_json" +version = "1.0.117" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "455182ea6142b14f93f4bc5320a2b31c1f266b66a4a5c858b013302a5d8cbfc3" +dependencies = [ + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serde_repr" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.63", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serde_with" +version = "3.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ad483d2ab0149d5a5ebcd9972a3852711e0153d863bf5a5d0391d28883c4a20" +dependencies = [ + "base64 0.22.1", + "chrono", + "hex", + "indexmap 1.9.3", + "indexmap 2.2.6", + "serde", + "serde_derive", + "serde_json", + "serde_with_macros", + "time", +] + +[[package]] +name = "serde_with_macros" +version = "3.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65569b702f41443e8bc8bbb1c5779bd0450bbe723b56198980e80ec45780bce2" +dependencies = [ + "darling", + "proc-macro2", + "quote", + "syn 2.0.63", +] + +[[package]] +name = "serde_yaml" +version = "0.9.34+deprecated" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" +dependencies = [ + "indexmap 2.2.6", + "itoa", + "ryu", + "serde", + "unsafe-libyaml", +] + +[[package]] +name = "sha1" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" +dependencies = [ + "cfg-if 1.0.0", + "cpufeatures", + "digest 0.10.7", +] + +[[package]] +name = "sha2" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" +dependencies = [ + "cfg-if 1.0.0", + "cpufeatures", + "digest 0.10.7", +] + +[[package]] +name = "sha3" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" +dependencies = [ + "digest 0.10.7", + "keccak", +] + +[[package]] +name = "sharded-slab" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" +dependencies = [ + "lazy_static", +] + +[[package]] +name = "signal-hook-registry" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" +dependencies = [ + "libc", +] + +[[package]] +name = "signature" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" + +[[package]] +name = "siphasher" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" + +[[package]] +name = "slab" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" +dependencies = [ + "autocfg", +] + +[[package]] +name = "smallvec" +version = "1.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" + +[[package]] +name = "smart-default" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "133659a15339456eeeb07572eb02a91c91e9815e9cbc89566944d2c8d3efdbf6" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "socket2" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "spin" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" + +[[package]] +name = "spin" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" + +[[package]] +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + +[[package]] +name = "string_cache" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f91138e76242f575eb1d3b38b4f1362f10d3a43f47d182a5b359af488a02293b" +dependencies = [ + "new_debug_unreachable", + "once_cell", + "parking_lot", + "phf_shared", + "precomputed-hash", + "serde", +] + +[[package]] +name = "strsim" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" + +[[package]] +name = "strsim" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" + +[[package]] +name = "strum" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "063e6045c0e62079840579a7e47a355ae92f60eb74daaf156fb1e84ba164e63f" +dependencies = [ + "strum_macros 0.24.3", +] + +[[package]] +name = "strum" +version = "0.26.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d8cec3501a5194c432b2b7976db6b7d10ec95c253208b45f83f7136aa985e29" + +[[package]] +name = "strum_macros" +version = "0.24.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e385be0d24f186b4ce2f9982191e7101bb737312ad61c1f2f984f34bcf85d59" +dependencies = [ + "heck 0.4.1", + "proc-macro2", + "quote", + "rustversion", + "syn 1.0.109", +] + +[[package]] +name = "strum_macros" +version = "0.26.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6cf59daf282c0a494ba14fd21610a0325f9f90ec9d1231dea26bcb1d696c946" +dependencies = [ + "heck 0.4.1", + "proc-macro2", + "quote", + "rustversion", + "syn 2.0.63", +] + +[[package]] +name = "subtle" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" + +[[package]] +name = "symbolic-common" +version = "8.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f551f902d5642e58039aee6a9021a61037926af96e071816361644983966f540" +dependencies = [ + "debugid", + "memmap2", + "stable_deref_trait", + "uuid", +] + +[[package]] +name = "symbolic-debuginfo" +version = "8.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1165dabf9fc1d6bb6819c2c0e27c8dd0e3068d2c53cf186d319788e96517f0d6" +dependencies = [ + "bitvec", + "dmsort", + "elementtree", + "fallible-iterator", + "flate2", + "gimli 0.26.2", + "goblin", + "lazy_static", + "lazycell", + "nom", + "nom-supreme", + "parking_lot", + "pdb", + "regex", + "scroll 0.11.0", + "serde", + "serde_json", + "smallvec", + "symbolic-common", + "thiserror", + "wasmparser", + "zip 0.5.13", +] + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.63" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf5be731623ca1a1fb7d8be6f261a3be6d3e2337b8a1f97be944d020c8fcb704" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn_derive" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1329189c02ff984e9736652b1631330da25eaa6bc639089ed4915d25446cbe7b" +dependencies = [ + "proc-macro-error", + "proc-macro2", + "quote", + "syn 2.0.63", +] + +[[package]] +name = "sync_wrapper" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" + +[[package]] +name = "system-configuration" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" +dependencies = [ + "bitflags 1.3.2", + "core-foundation", + "system-configuration-sys", +] + +[[package]] +name = "system-configuration-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "tap" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" + +[[package]] +name = "tar" +version = "0.4.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b16afcea1f22891c49a00c751c7b63b2233284064f11a200fc624137c51e2ddb" +dependencies = [ + "filetime", + "libc", + "xattr", +] + +[[package]] +name = "tempfile" +version = "3.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1" +dependencies = [ + "cfg-if 1.0.0", + "fastrand", + "rustix", + "windows-sys 0.52.0", +] + +[[package]] +name = "termcolor" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "textwrap" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23d434d3f8967a09480fb04132ebe0a3e088c173e6d0ee7897abbdf4eab0f8b9" + +[[package]] +name = "thiserror" +version = "1.0.60" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "579e9083ca58dd9dcf91a9923bb9054071b9ebbd800b342194c9feb0ee89fc18" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.60" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2470041c06ec3ac1ab38d0356a6119054dedaea53e12fbefc0de730a1c08524" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.63", +] + +[[package]] +name = "thread_local" +version = "1.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" +dependencies = [ + "cfg-if 1.0.0", + "once_cell", +] + +[[package]] +name = "time" +version = "0.3.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" +dependencies = [ + "deranged", + "itoa", + "num-conv", + "powerfmt", + "serde", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" + +[[package]] +name = "time-macros" +version = "0.2.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf" +dependencies = [ + "num-conv", + "time-core", +] + +[[package]] +name = "tinyvec" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[package]] +name = "tokio" +version = "1.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1adbebffeca75fcfd058afa480fb6c0b81e165a0323f9c9d39c9697e37c46787" +dependencies = [ + "backtrace", + "bytes", + "libc", + "mio", + "num_cpus", + "parking_lot", + "pin-project-lite", + "signal-hook-registry", + "socket2", + "tokio-macros", + "windows-sys 0.48.0", +] + +[[package]] +name = "tokio-io-timeout" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30b74022ada614a1b4834de765f9bb43877f910cc8ce4be40e89042c9223a8bf" +dependencies = [ + "pin-project-lite", + "tokio", +] + +[[package]] +name = "tokio-macros" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.63", +] + +[[package]] +name = "tokio-native-tls" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" +dependencies = [ + "native-tls", + "tokio", +] + +[[package]] +name = "tokio-retry" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f57eb36ecbe0fc510036adff84824dd3c24bb781e21bfa67b69d556aa85214f" +dependencies = [ + "pin-project", + "rand 0.8.5", + "tokio", +] + +[[package]] +name = "tokio-stream" +version = "0.1.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "267ac89e0bec6e691e5813911606935d77c476ff49024f98abcea3e7b15e37af" +dependencies = [ + "futures-core", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "tokio-util" +version = "0.6.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36943ee01a6d67977dd3f84a5a1d2efeb4ada3a1ae771cadfaa535d9d9fc6507" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "log", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "tokio-util" +version = "0.7.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9cf6b47b3771c49ac75ad09a6162f53ad4b8088b76ac60e8ec1455b31a189fe1" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "toml" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_datetime" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1" + +[[package]] +name = "toml_edit" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1" +dependencies = [ + "indexmap 2.2.6", + "toml_datetime", + "winnow", +] + +[[package]] +name = "tonic" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff08f4649d10a70ffa3522ca559031285d8e421d727ac85c60825761818f5d0a" +dependencies = [ + "async-stream", + "async-trait", + "base64 0.13.1", + "bytes", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "hyper", + "hyper-timeout", + "percent-encoding", + "pin-project", + "prost", + "prost-derive", + "tokio", + "tokio-stream", + "tokio-util 0.6.10", + "tower", + "tower-layer", + "tower-service", + "tracing", + "tracing-futures", +] + +[[package]] +name = "tonic-build" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9403f1bafde247186684b230dc6f38b5cd514584e8bec1dd32514be4745fa757" +dependencies = [ + "proc-macro2", + "prost-build", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "tower" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" +dependencies = [ + "futures-core", + "futures-util", + "indexmap 1.9.3", + "pin-project", + "pin-project-lite", + "rand 0.8.5", + "slab", + "tokio", + "tokio-util 0.7.11", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tower-layer" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0" + +[[package]] +name = "tower-service" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" + +[[package]] +name = "tracing" +version = "0.1.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" +dependencies = [ + "log", + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-appender" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3566e8ce28cc0a3fe42519fc80e6b4c943cc4c8cef275620eb8dac2d3d4e06cf" +dependencies = [ + "crossbeam-channel", + "thiserror", + "time", + "tracing-subscriber", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.63", +] + +[[package]] +name = "tracing-core" +version = "0.1.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +dependencies = [ + "once_cell", + "valuable", +] + +[[package]] +name = "tracing-futures" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97d095ae15e245a057c8e8451bab9b3ee1e1f68e9ba2b4fbc18d0ac5237835f2" +dependencies = [ + "pin-project", + "tracing", +] + +[[package]] +name = "tracing-log" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f751112709b4e791d8ce53e32c4ed2d353565a795ce84da2285393f41557bdf2" +dependencies = [ + "log", + "once_cell", + "tracing-core", +] + +[[package]] +name = "tracing-log" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" +dependencies = [ + "log", + "once_cell", + "tracing-core", +] + +[[package]] +name = "tracing-opentelemetry" +version = "0.17.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbbe89715c1dbbb790059e2565353978564924ee85017b5fff365c872ff6721f" +dependencies = [ + "once_cell", + "opentelemetry", + "tracing", + "tracing-core", + "tracing-log 0.1.4", + "tracing-subscriber", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" +dependencies = [ + "matchers", + "nu-ansi-term", + "once_cell", + "regex", + "sharded-slab", + "smallvec", + "thread_local", + "tracing", + "tracing-core", + "tracing-log 0.2.0", +] + +[[package]] +name = "try-lock" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" + +[[package]] +name = "typenum" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" + +[[package]] +name = "uint" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76f64bba2c53b04fcab63c01a7d7427eadc821e3bc48c34dc9ba29c501164b52" +dependencies = [ + "byteorder", + "crunchy", + "hex", + "static_assertions", +] + +[[package]] +name = "unicode-bidi" +version = "0.3.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" + +[[package]] +name = "unicode-ident" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" + +[[package]] +name = "unicode-normalization" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "unicode-segmentation" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202" + +[[package]] +name = "unsafe-libyaml" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "673aac59facbab8a9007c7f6108d11f63b603f7cabff99fabf650fea5c32b861" + +[[package]] +name = "untrusted" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" + +[[package]] +name = "ureq" +version = "2.9.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d11a831e3c0b56e438a28308e7c810799e3c118417f342d30ecec080105395cd" +dependencies = [ + "base64 0.22.1", + "flate2", + "log", + "once_cell", + "rustls", + "rustls-pki-types", + "rustls-webpki", + "url", + "webpki-roots", +] + +[[package]] +name = "url" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", + "serde", +] + +[[package]] +name = "utf8parse" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" + +[[package]] +name = "uuid" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" + +[[package]] +name = "valuable" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" + +[[package]] +name = "vcpkg" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + +[[package]] +name = "version_check" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" + +[[package]] +name = "want" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" +dependencies = [ + "try-lock", +] + +[[package]] +name = "wasi" +version = "0.9.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "wasm-bindgen" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" +dependencies = [ + "cfg-if 1.0.0", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" +dependencies = [ + "bumpalo", + "log", + "once_cell", + "proc-macro2", + "quote", + "syn 2.0.63", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.42" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76bc14366121efc8dbb487ab05bcc9d346b3b5ec0eaa76e46594cabbe51762c0" +dependencies = [ + "cfg-if 1.0.0", + "js-sys", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.63", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" + +[[package]] +name = "wasmparser" +version = "0.83.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "718ed7c55c2add6548cca3ddd6383d738cd73b892df400e96b9aa876f0141d7a" + +[[package]] +name = "web-sys" +version = "0.3.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77afa9a11836342370f4817622a2f0f418b134426d91a82dfb48f532d2ec13ef" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "webpki-roots" +version = "0.26.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3de34ae270483955a94f4b21bdaaeb83d508bb84a01435f393818edb0012009" +dependencies = [ + "rustls-pki-types", +] + +[[package]] +name = "wee_alloc" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbb3b5a6b2bb17cb6ad44a2e68a43e8d2722c997da10e928665c72ec6c0a0b8e" +dependencies = [ + "cfg-if 0.1.10", + "libc", + "memory_units", + "winapi", +] + +[[package]] +name = "which" +version = "4.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7" +dependencies = [ + "either", + "home", + "once_cell", + "rustix", +] + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d4cc384e1e73b93bafa6fb4f1df8c41695c8a91cf9c4c64358067d15a7b6c6b" +dependencies = [ + "windows-sys 0.52.0", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows-core" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" +dependencies = [ + "windows-targets 0.52.5", +] + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets 0.48.5", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.5", +] + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", +] + +[[package]] +name = "windows-targets" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb" +dependencies = [ + "windows_aarch64_gnullvm 0.52.5", + "windows_aarch64_msvc 0.52.5", + "windows_i686_gnu 0.52.5", + "windows_i686_gnullvm", + "windows_i686_msvc 0.52.5", + "windows_x86_64_gnu 0.52.5", + "windows_x86_64_gnullvm 0.52.5", + "windows_x86_64_msvc 0.52.5", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0" + +[[package]] +name = "winnow" +version = "0.5.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" +dependencies = [ + "memchr", +] + +[[package]] +name = "winreg" +version = "0.50.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" +dependencies = [ + "cfg-if 1.0.0", + "windows-sys 0.48.0", +] + +[[package]] +name = "wyz" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" +dependencies = [ + "tap", +] + +[[package]] +name = "xattr" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8da84f1a25939b27f6820d92aed108f83ff920fdf11a7b19366c27c4cda81d4f" +dependencies = [ + "libc", + "linux-raw-sys", + "rustix", +] + +[[package]] +name = "xml-rs" +version = "0.8.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "791978798f0597cfc70478424c2b4fdc2b7a8024aaff78497ef00f24ef674193" + +[[package]] +name = "zeroize" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "525b4ec142c6b68a2d10f01f7bbf6755599ca3f81ea53b8431b7dd348f5fdb2d" + +[[package]] +name = "zeropool-bn" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71e61de68ede9ffdd69c01664f65a178c5188b73f78faa21f0936016a888ff7c" +dependencies = [ + "byteorder", + "crunchy", + "lazy_static", + "rand 0.8.5", + "rustc-hex", +] + +[[package]] +name = "zip" +version = "0.5.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93ab48844d61251bb3835145c521d88aa4031d7139e8485990f60ca911fa0815" +dependencies = [ + "byteorder", + "crc32fast", + "flate2", + "thiserror", +] + +[[package]] +name = "zip" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "760394e246e4c28189f19d488c058bf16f564016aefac5d32bb1f3b51d5e9261" +dependencies = [ + "aes", + "byteorder", + "bzip2", + "constant_time_eq", + "crc32fast", + "crossbeam-utils", + "flate2", + "hmac", + "pbkdf2", + "sha1", + "time", + "zstd", +] + +[[package]] +name = "zstd" +version = "0.11.2+zstd.1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20cc960326ece64f010d2d2107537f26dc589a6573a316bd5b1dba685fa5fde4" +dependencies = [ + "zstd-safe", +] + +[[package]] +name = "zstd-safe" +version = "5.0.2+zstd.1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d2a5585e04f9eea4b2a3d1eca508c4dee9592a89ef6f450c11719da0726f4db" +dependencies = [ + "libc", + "zstd-sys", +] + +[[package]] +name = "zstd-sys" +version = "2.0.10+zstd.1.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c253a4914af5bafc8fa8c86ee400827e83cf6ec01195ec1f1ed8441bf00d65aa" +dependencies = [ + "cc", + "pkg-config", +] diff --git a/submissions/NFT Challenge Template/nft-challenge-factory-main/Cargo.toml b/submissions/NFT Challenge Template/nft-challenge-factory-main/Cargo.toml new file mode 100644 index 00000000..f82a4463 --- /dev/null +++ b/submissions/NFT Challenge Template/nft-challenge-factory-main/Cargo.toml @@ -0,0 +1,35 @@ +[package] +name = "nft-challenger-generator" +description = "cargo-near-new-project-description" +version = "0.1.0" +edition = "2021" +# TODO: Fill out the repository field to help NEAR ecosystem tools to discover your project. +# NEP-0330 is automatically implemented for all contracts built with https://github.com/near/cargo-near. +# Link to the repository will be available via `contract_source_metadata` view-function. +#repository = "https://github.com/xxx/xxx" + +[lib] +crate-type = ["cdylib", "rlib"] + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html +[dependencies] +borsh = "1.5.0" +near-sdk = "5.1.0" +serde = { version = "1", features = ["derive"] } +serde_json = { version = "1.0.91", features = ["arbitrary_precision"] } + +[dev-dependencies] +near-sdk = { version = "5.1.0", features = ["unit-testing"] } +near-workspaces = { version = "0.10.0", features = ["unstable"] } +tokio = { version = "1.12.0", features = ["full"] } +serde_json = "1" + +[profile.release] +codegen-units = 1 +# Tell `rustc` to optimize for small code size. +opt-level = "z" +lto = true +debug = false +panic = "abort" +# Opt into extra safety checks on arithmetic operations https://stackoverflow.com/a/64136471/249801 +overflow-checks = true diff --git a/submissions/NFT Challenge Template/nft-challenge-factory-main/README b/submissions/NFT Challenge Template/nft-challenge-factory-main/README deleted file mode 100644 index 2d1e96dc..00000000 --- a/submissions/NFT Challenge Template/nft-challenge-factory-main/README +++ /dev/null @@ -1,42 +0,0 @@ -# nft-challenge-factory - -A factory smart contract for creating NFT challenges, the factory keeps track of nft challenges it's created. Note, if you make any changes to the [challenge contract](https://github.com/TENAMINT/nft-challenge), you'll need to -get the compiled `target/wasm32-unknown-unknown/release/nft_challenge.wasm` file within the [challenge contract repo](https://github.com/TENAMINT/nft-challenge) after building and replace the existing `nft-challenge.wasm` file at `wasm/nft-challenge.wasm` location in this repo. Note you need to rename `nft_challenge.wasm` to `nft-challenge.wasm` as well. - -## Important: -The challenges generated will be at the account id `{ID_PREFIX}.{ID OF THIS FACTORY CONTRACT}` For example if I created a challenge with the id prefix of my-challenge, and the challenge factory contract was deployed at challenge-factory.testnet, then the challenge contract would be deployed at account `my-challenge.challenge-factory.testnet` - - -## How to Build Locally? - -Install [`cargo-near`](https://github.com/near/cargo-near) and run: - -```bash -cargo near build -``` - -## How to Test Locally? - -```bash -cargo test -``` - -## How to Deploy? - -Deployment is automated with GitHub Actions CI/CD pipeline. -To deploy manually, install [`cargo-near`](https://github.com/near/cargo-near) and run: - -```bash -cargo near deploy -``` - -## Useful Links - -- [cargo-near](https://github.com/near/cargo-near) - NEAR smart contract development toolkit for Rust -- [near CLI](https://near.cli.rs) - Iteract with NEAR blockchain from command line -- [NEAR Rust SDK Documentation](https://docs.near.org/sdk/rust/introduction) -- [NEAR Documentation](https://docs.near.org) -- [NEAR StackOverflow](https://stackoverflow.com/questions/tagged/nearprotocol) -- [NEAR Discord](https://near.chat) -- [NEAR Telegram Developers Community Group](https://t.me/neardev) -- NEAR DevHub: [Telegram](https://t.me/neardevhub), [Twitter](https://twitter.com/neardevhub) diff --git a/submissions/NFT Challenge Template/nft-challenge-factory-main/README.md b/submissions/NFT Challenge Template/nft-challenge-factory-main/README.md index 9567db10..2d1e96dc 100644 --- a/submissions/NFT Challenge Template/nft-challenge-factory-main/README.md +++ b/submissions/NFT Challenge Template/nft-challenge-factory-main/README.md @@ -1,49 +1,42 @@ -# NFT Challenge Template - -Generate blockchain challenges that validate if users have all the challenge pieces! Capabilities include burning challenge pieces on completion, as well as minting a reward piece on completion. Users can also set an expiration date for their challenge, as well as set the maximum amount of winners for the challenge. - -[![Demo](https://img.shields.io/badge/Demo-Visit%20Demo-brightgreen)](https://nft-challenge-creator.vercel.app/) +# nft-challenge-factory +A factory smart contract for creating NFT challenges, the factory keeps track of nft challenges it's created. Note, if you make any changes to the [challenge contract](https://github.com/TENAMINT/nft-challenge), you'll need to +get the compiled `target/wasm32-unknown-unknown/release/nft_challenge.wasm` file within the [challenge contract repo](https://github.com/TENAMINT/nft-challenge) after building and replace the existing `nft-challenge.wasm` file at `wasm/nft-challenge.wasm` location in this repo. Note you need to rename `nft_challenge.wasm` to `nft-challenge.wasm` as well. ## Important: -If you plan on burning challenge NFTs on completion, make sure users who try to complete the challenge **give the challenge contract transfer approval for their challenge piece NFTs**, so that the challenge contract can burn them. -If you plan on minting the reward NFT through the challenge contract, ensure you make the **challenge contract a minter of the reward NFT contract**. - - - -## Run the project - - yarn install - - yarn run dev - -Open [http://localhost:3000](http://localhost:3000) with your browser to see the result. +The challenges generated will be at the account id `{ID_PREFIX}.{ID OF THIS FACTORY CONTRACT}` For example if I created a challenge with the id prefix of my-challenge, and the challenge factory contract was deployed at challenge-factory.testnet, then the challenge contract would be deployed at account `my-challenge.challenge-factory.testnet` -We have set the environment variables necessary to get the template working on testnet right out of the box for you in the `env.example` file, simply rename it `env.local` and you'll be good to go! If you want to use the template on mainnet or have your own deployed challenge factory contract, change the environment variable values as desired. -## Demo videos -[Demo Video Part 1](https://drive.google.com/file/d/1-bRR35WkdvPea_CV7A29NWSJ_wWAGqBn/view?usp=sharing) +## How to Build Locally? +Install [`cargo-near`](https://github.com/near/cargo-near) and run: +```bash +cargo near build +``` -[Demo Video Part 2](https://drive.google.com/file/d/1oxsuym7PGw_IojSCQH6prk1IpT-r2dpW/view?usp=sharing) +## How to Test Locally? -Below is an example of a test challenge which was created to illustrate this template: +```bash +cargo test +``` -NFT Challenge Page: [https://nft-challenge-creator.vercel.app/challenges/tenamint-blackdragon1?transactionHashes=EpU3RWCnWTuXetECqdJQQ48XTBKGRUZZzrUjEziwNPBx](https://nft-challenge-creator.vercel.app/challenges/tenamint-blackdragon1?transactionHashes=EpU3RWCnWTuXetECqdJQQ48XTBKGRUZZzrUjEziwNPBx) - Challenge NFT 1: [[https://testnet.mintbase.xyz/contract/tmxbdxbaseball.mintspace2.testnet/nfts/all/0](https://testnet.mintbase.xyz/contract/tmxbdxbaseball.mintspace2.testnet/nfts/all/0)] - Challenge NFT 2: [[https://testnet.mintbase.xyz/contract/tmxbdxhockey.mintspace2.testnet/nfts/all/0](https://testnet.mintbase.xyz/contract/tmxbdxhockey.mintspace2.testnet/nfts/all/0)] - Challenge NFT 3: [[https://testnet.mintbase.xyz/contract/tmxbdxbasketball.mintspace2.testnet/nfts/all/0](https://testnet.mintbase.xyz/contract/tmxbdxbasketball.mintspace2.testnet/nfts/all/0)] +## How to Deploy? -Claim all 3 and then visit this link to complete the challenge claim your reward NFT: -[[https://nft-challenge-creator.vercel.app/challenges/tenamint-blackdragon1?transactionHashes=EpU3RWCnWTuXetECqdJQQ48XTBKGRUZZzrUjEziwNPBx](https://nft-challenge-creator.vercel.app/challenges/tenamint-blackdragon1?transactionHashes=EpU3RWCnWTuXetECqdJQQ48XTBKGRUZZzrUjEziwNPBx)] +Deployment is automated with GitHub Actions CI/CD pipeline. +To deploy manually, install [`cargo-near`](https://github.com/near/cargo-near) and run: -## Notes on Using V0 for AI generated components +```bash +cargo near deploy +``` -A lot of the components for this template uses components generated by [v0](https://v0.dev), an AI frontend component generator. Here's a list of components I generated for this project, you can play around with the prompts to modify the components. +## Useful Links -- [Choosing a reward NFT](https://v0.dev/t/VjZbaEsFCvv) -- [Choosing number of challenge nfts and current challenge info](https://v0.dev/r/2WXHinKdaFF) -- [Choosing termination details](https://v0.dev/r/gsYzCa15AWT) -- [Network Toggle](https://v0.dev/r/Tyu9vrlRBxZ) -- [NFT Challenge page](https://v0.dev/r/BRmDtqSddRR) +- [cargo-near](https://github.com/near/cargo-near) - NEAR smart contract development toolkit for Rust +- [near CLI](https://near.cli.rs) - Iteract with NEAR blockchain from command line +- [NEAR Rust SDK Documentation](https://docs.near.org/sdk/rust/introduction) +- [NEAR Documentation](https://docs.near.org) +- [NEAR StackOverflow](https://stackoverflow.com/questions/tagged/nearprotocol) +- [NEAR Discord](https://near.chat) +- [NEAR Telegram Developers Community Group](https://t.me/neardev) +- NEAR DevHub: [Telegram](https://t.me/neardevhub), [Twitter](https://twitter.com/neardevhub) diff --git a/submissions/NFT Challenge Template/nft-challenge-factory-main/rust-toolchain.toml b/submissions/NFT Challenge Template/nft-challenge-factory-main/rust-toolchain.toml new file mode 100644 index 00000000..a82ade34 --- /dev/null +++ b/submissions/NFT Challenge Template/nft-challenge-factory-main/rust-toolchain.toml @@ -0,0 +1,4 @@ +[toolchain] +channel = "stable" +components = ["rustfmt"] +targets = ["wasm32-unknown-unknown"] diff --git a/submissions/NFT Challenge Template/nft-challenge-factory-main/src/lib.rs b/submissions/NFT Challenge Template/nft-challenge-factory-main/src/lib.rs new file mode 100644 index 00000000..2e79b48c --- /dev/null +++ b/submissions/NFT Challenge Template/nft-challenge-factory-main/src/lib.rs @@ -0,0 +1,163 @@ +use std::str::FromStr; + +use near_sdk::{ + borsh::{self, BorshDeserialize, BorshSerialize}, + json_types::Base64VecU8, + log, near, + serde::{Deserialize, Serialize}, + serde_json::json, + AccountId, Gas, NearToken, Promise, +}; + +use near_sdk::{env, store::LookupSet}; + +// Cost per byte of storage +pub const YOCTO_PER_BYTE: u128 = 10_000_000_000_000_000_000; + +const fn bytes_to_stake(bytes: u128) -> u128 { + (bytes as u128) * YOCTO_PER_BYTE +} + +#[derive(Clone, Debug, Deserialize, Serialize, BorshDeserialize, BorshSerialize)] +pub struct NFTTokenMetadata { + /// the Title for this token. ex. "Arch Nemesis: Mail Carrier" or "Parcel 5055" + pub title: Option, + /// free-form description of this token. + pub description: Option, + /// URL to associated media, preferably to decentralized, content-addressed storage + pub media: Option, + /// Base64-encoded sha256 hash of content referenced by the `media` field. + /// Required if `media` is included. + pub media_hash: Option, + /// number of copies of this set of metadata in existence when token was minted. + pub copies: Option, + /// ISO 8601 datetime when token expires. + pub expires_at: Option, + /// ISO 8601 datetime when token starts being valid. + pub starts_at: Option, + /// When token was last updated, Unix epoch in milliseconds + pub extra: Option, + /// URL to an off-chain JSON file with more info. The Mintbase Indexer refers + /// to this field as `thing_id` or sometimes, `meta_id`. + pub reference: Option, + /// Base64-encoded sha256 hash of JSON from reference field. Required if + /// `reference` is included. + pub reference_hash: Option, +} + +#[near(contract_state)] +pub struct ChallengeFactory { + pub challenges: LookupSet, +} + +impl Default for ChallengeFactory { + fn default() -> Self { + Self { + challenges: LookupSet::new(b"a".to_vec()), + } + } +} + +// Implement the contract structure +#[near] +impl ChallengeFactory { + /// If a `Challenge` with `challenge_id` has been produced by this `Factory`, return `true`. + pub fn challenge_exists(&self, store_id: String) -> bool { + self.challenges.contains(&store_id) + } + + /// Panics if a store with the requested ID already exists + pub fn assert_no_challenge_with_id(&self, store_id: String) { + assert!( + !self.challenge_exists(store_id), + "Challenge with that ID already exists" + ); + } + + #[payable] + pub fn create_challenge( + &mut self, + id_prefix: String, + name: String, + description: String, + media_link: String, + reward_nft_id: String, + challenge_nft_ids: std::vec::Vec, + burn_challenge_piece_on_claim: Vec, + _expiration_date_in_ns: String, + _winner_limit: String, + creator_can_update: bool, + // only necessary if contract will be minting the reward nft + reward_nft_metadata: NFTTokenMetadata, + ) -> Promise { + log!("Creating challenge: {}", name); + assert!( + env::attached_deposit().as_yoctonear() >= bytes_to_stake(100_000), + "To cover the storage required for your store, you need to attach at least {} yoctoNEAR to this transaction.", + bytes_to_stake(100_000) + ); + self.assert_no_challenge_with_id(name.clone()); + let formatted_challenge_id = format!("{}.{}", id_prefix, env::current_account_id()); + let challenge_account_id = AccountId::from_str(&formatted_challenge_id).unwrap(); + let winner_limit: u64 = _winner_limit.parse().unwrap(); + let expiration_date_in_ns: u64 = _expiration_date_in_ns.parse().unwrap(); + + self.challenges.insert(id_prefix.clone()); + Promise::new(challenge_account_id.clone()) + .create_account() + .transfer(NearToken::from_yoctonear(bytes_to_stake(800_000))) + .deploy_contract(include_bytes!("../wasm/nft-challenge.wasm").to_vec()) + .function_call( + String::from("new"), + json!({ + "owner_id": env::predecessor_account_id(), + "name":name, + "description":description, + "media_link":media_link, + "reward_nft_id":reward_nft_id, + "_challenge_nft_ids": challenge_nft_ids, + "_burn_challenge_piece_on_claim": burn_challenge_piece_on_claim, + "expiration_date_in_ns": expiration_date_in_ns, + "winner_limit": winner_limit, + "creator_can_update": creator_can_update, + "reward_nft_metadata": reward_nft_metadata + }) + .to_string() + .into_bytes(), + // TODO: Get better gas estimates + NearToken::from_near(0), + Gas::from_tgas(5), + ) + .then( + Self::ext(env::current_account_id()) + .with_static_gas(Gas::from_tgas(5)) + .create_challenge_callback(id_prefix), + ) + } + + #[private] + pub fn create_challenge_callback( + &mut self, + id_prefix: String, + #[callback_result] call_result: Result<(), near_sdk::PromiseError>, + ) { + if call_result.is_err() { + panic!("There was an error creating the challenge"); + } else { + self.challenges.insert(id_prefix); + } + } +} + +#[cfg(test)] +mod tests { + use super::*; + #[test] + #[should_panic(expected = "Challenge with that ID already exists")] + fn get_default_greeting() { + let mut contract = ChallengeFactory::default(); + contract.assert_no_challenge_with_id("test".to_string()); + contract.challenges.insert("test".to_string()); + contract.assert_no_challenge_with_id("test".to_string()); + } +} diff --git a/submissions/NFT Challenge Template/nft-challenge-factory-main/tests/test_basics.rs b/submissions/NFT Challenge Template/nft-challenge-factory-main/tests/test_basics.rs new file mode 100644 index 00000000..f9787308 --- /dev/null +++ b/submissions/NFT Challenge Template/nft-challenge-factory-main/tests/test_basics.rs @@ -0,0 +1,120 @@ +use std::str::FromStr; + +use near_sdk::{AccountId, NearToken}; +use nft_challenger_generator::NFTTokenMetadata; +use serde::{Deserialize, Serialize}; +use serde_json::json; + +#[derive(Clone, Debug, Deserialize, Serialize)] +pub struct ChallengeMetaData { + // The owner of this NFT Challenge + pub owner_id: String, + // The name for this challenge. + pub name: String, + // Free-form description of this challenge. + pub description: String, + // URL to associated media, preferably to decentralized, content-addressed storage + pub media_link: Option, + // The id of the reward NFT. + pub reward_nft_id: String, + // Metadata for the reward token NFT. Only necessary if we mint the nft. + pub reward_nft_metadata: NFTTokenMetadata, + // Ids of the challenge nfts that are part of this challenge. + pub challenge_nft_ids: Vec, + // The expiration date of this challenge, expressed as a nano second timestamp. + pub expiration_date_in_ns: u64, + // Maximum number of winners for this challenge. + pub winner_limit: u64, + // Number of winners for this challenge. + pub winners_count: u64, + // Whether the challenge is completed or not. + pub challenge_completed: bool, + // Whether the creator of this challenge can update the challenge status. + pub creator_can_update: bool, +} + +#[tokio::test] +async fn test_can_create_challenge() -> Result<(), Box> { + let sandbox = near_workspaces::sandbox().await?; + let contract_wasm = near_workspaces::compile_project("./").await?; + + let contract = sandbox.dev_deploy(&contract_wasm).await?; + + let user_account = sandbox.dev_create_account().await?; + + let challenge_creation_outcome = user_account + .call(contract.id(), "create_challenge") + .args_json(json!({ + "id_prefix": "test-challenge", + "name": "Test Challenge!", + "description": "A test description", + "media_link": "A fake media link", + "reward_nft_id": "reward-nft-id", + "challenge_nft_ids": vec!["challenge-nft-id"], + "burn_challenge_piece_on_claim": vec![true], + "_expiration_date_in_ns": "9007199254740991", + "_winner_limit": "100", + "creator_can_update": true, + "reward_nft_metadata": NFTTokenMetadata{ + title: Some("Test Token".to_string()), + description: Some("Test Token Desc".to_string()), + media: Some("media link".to_string()), + copies: Some(1), + media_hash: None, + expires_at: None, + starts_at: None, + extra: None, + reference: None, + reference_hash: None, + }, + })) + .max_gas() + .deposit(NearToken::from_near(1)) + .transact() + .await?; + + assert!(challenge_creation_outcome.is_success()); + + let outcome_challenge_exists = contract + .view("challenge_exists") + .args_json(json!({ + "store_id":"test-challenge" + })) + .await?; + + assert!(outcome_challenge_exists.json::().unwrap()); + let mut id_prefix = "test-challenge.".to_string(); + id_prefix.push_str(contract.id().as_str()); + let metadata_call = sandbox + .view( + &AccountId::from_str(id_prefix.as_str()).unwrap(), + "get_challenge_metadata", + ) + .await?; + let metadata: ChallengeMetaData = metadata_call.json().unwrap(); + assert_eq!(metadata.owner_id, user_account.id().to_string()); + assert_eq!(metadata.name, "Test Challenge!"); + assert_eq!(metadata.description, "A test description"); + assert_eq!(metadata.media_link, Some("A fake media link".to_string())); + assert_eq!(metadata.reward_nft_id, "reward-nft-id"); + assert_eq!(metadata.challenge_nft_ids, vec!["challenge-nft-id"]); + assert_eq!(metadata.expiration_date_in_ns, 9007199254740991); + assert_eq!(metadata.winner_limit, 100); + assert_eq!(metadata.winners_count, 0); + assert_eq!(metadata.challenge_completed, false); + assert_eq!(metadata.creator_can_update, true); + assert_eq!( + metadata.reward_nft_metadata.title, + Some("Test Token".to_string()) + ); + assert_eq!( + metadata.reward_nft_metadata.description, + Some("Test Token Desc".to_string()) + ); + assert_eq!( + metadata.reward_nft_metadata.media, + Some("media link".to_string()) + ); + + Ok(()) +} diff --git a/submissions/NFT Challenge Template/nft-challenge-factory-main/wasm/nft-challenge.wasm b/submissions/NFT Challenge Template/nft-challenge-factory-main/wasm/nft-challenge.wasm new file mode 100755 index 0000000000000000000000000000000000000000..3e7b6ea147797af976e8a97060692f4243948164 GIT binary patch literal 278951 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 literal 0 HcmV?d00001 diff --git a/submissions/NFT Challenge Template/nft-challenge-main/Cargo.lock b/submissions/NFT Challenge Template/nft-challenge-main/Cargo.lock new file mode 100644 index 00000000..74a67aa9 --- /dev/null +++ b/submissions/NFT Challenge Template/nft-challenge-main/Cargo.lock @@ -0,0 +1,4616 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "Inflector" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" + +[[package]] +name = "actix" +version = "0.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb72882332b6d6282f428b77ba0358cb2687e61a6f6df6a6d3871e8a177c2d4f" +dependencies = [ + "actix-macros", + "actix-rt", + "actix_derive", + "bitflags 2.5.0", + "bytes", + "crossbeam-channel", + "futures-core", + "futures-sink", + "futures-task", + "futures-util", + "log", + "once_cell", + "parking_lot", + "pin-project-lite", + "smallvec", + "tokio", + "tokio-util 0.7.11", +] + +[[package]] +name = "actix-macros" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e01ed3140b2f8d422c68afa1ed2e85d996ea619c988ac834d255db32138655cb" +dependencies = [ + "quote", + "syn 2.0.63", +] + +[[package]] +name = "actix-rt" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28f32d40287d3f402ae0028a9d54bef51af15c8769492826a69d28f81893151d" +dependencies = [ + "futures-core", + "tokio", +] + +[[package]] +name = "actix_derive" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c7db3d5a9718568e4cf4a537cfd7070e6e6ff7481510d0237fb529ac850f6d3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.63", +] + +[[package]] +name = "addr2line" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" +dependencies = [ + "gimli 0.28.1", +] + +[[package]] +name = "adler" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" + +[[package]] +name = "aes" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" +dependencies = [ + "cfg-if 1.0.0", + "cipher 0.4.4", + "cpufeatures", +] + +[[package]] +name = "ahash" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "891477e0c6a8957309ee5c45a6368af3ae14bb510732d2684ffa19af310920f9" +dependencies = [ + "getrandom 0.2.15", + "once_cell", + "version_check", +] + +[[package]] +name = "aho-corasick" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +dependencies = [ + "memchr", +] + +[[package]] +name = "android-tzdata" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + +[[package]] +name = "anstream" +version = "0.6.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "418c75fa768af9c03be99d17643f93f79bbba589895012a80e3452a19ddda15b" +dependencies = [ + "anstyle", + "anstyle-parse", + "anstyle-query", + "anstyle-wincon", + "colorchoice", + "is_terminal_polyfill", + "utf8parse", +] + +[[package]] +name = "anstyle" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "038dfcf04a5feb68e9c60b21c9625a54c2c0616e79b72b0fd87075a056ae1d1b" + +[[package]] +name = "anstyle-parse" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c03a11a9034d92058ceb6ee011ce58af4a9bf61491aa7e1e59ecd24bd40d22d4" +dependencies = [ + "utf8parse", +] + +[[package]] +name = "anstyle-query" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a64c907d4e79225ac72e2a354c9ce84d50ebb4586dee56c82b3ee73004f537f5" +dependencies = [ + "windows-sys 0.52.0", +] + +[[package]] +name = "anstyle-wincon" +version = "3.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61a38449feb7068f52bb06c12759005cf459ee52bb4adc1d5a7c4322d716fb19" +dependencies = [ + "anstyle", + "windows-sys 0.52.0", +] + +[[package]] +name = "anyhow" +version = "1.0.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25bdb32cbbdce2b519a9cd7df3a678443100e265d5e25ca763b7572a5104f5f3" + +[[package]] +name = "arbitrary" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d5a26814d8dcb93b0e5a0ff3c6d80a8843bafb21b39e8e18a6f05471870e110" +dependencies = [ + "derive_arbitrary", +] + +[[package]] +name = "arrayvec" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" + +[[package]] +name = "assert_matches" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b34d609dfbaf33d6889b2b7106d3ca345eacad44200913df5ba02bfd31d2ba9" + +[[package]] +name = "async-stream" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd56dd203fef61ac097dd65721a419ddccb106b2d2b70ba60a6b529f03961a51" +dependencies = [ + "async-stream-impl", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-stream-impl" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.63", +] + +[[package]] +name = "async-trait" +version = "0.1.80" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6fa2087f2753a7da8cc1c0dbfcf89579dd57458e36769de5ac750b4671737ca" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.63", +] + +[[package]] +name = "atty" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" +dependencies = [ + "hermit-abi 0.1.19", + "libc", + "winapi", +] + +[[package]] +name = "autocfg" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" + +[[package]] +name = "backtrace" +version = "0.3.71" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26b05800d2e817c8b3b4b54abd461726265fa9789ae34330622f2db9ee696f9d" +dependencies = [ + "addr2line", + "cc", + "cfg-if 1.0.0", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", +] + +[[package]] +name = "base64" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" + +[[package]] +name = "base64" +version = "0.21.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" + +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "base64ct" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" + +[[package]] +name = "binary-install" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93bff426ff93f3610dd2b946f3eb8cb2d1285ca8682834d43be531a3f93db2ff" +dependencies = [ + "anyhow", + "dirs-next", + "flate2", + "fs2", + "hex", + "is_executable", + "siphasher", + "tar", + "ureq", + "zip 0.6.6", +] + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1" + +[[package]] +name = "bitvec" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" +dependencies = [ + "funty", + "radium", + "tap", + "wyz", +] + +[[package]] +name = "blake2" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a4e37d16930f5459780f5621038b6382b9bb37c19016f39fb6b5808d831f174" +dependencies = [ + "crypto-mac", + "digest 0.9.0", + "opaque-debug", +] + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "borsh" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15bf3650200d8bffa99015595e10f1fbd17de07abbc25bb067da79e769939bfa" +dependencies = [ + "borsh-derive 0.9.3", + "hashbrown 0.11.2", +] + +[[package]] +name = "borsh" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbe5b10e214954177fb1dc9fbd20a1a2608fe99e6c832033bdc7cea287a20d77" +dependencies = [ + "borsh-derive 1.5.0", + "cfg_aliases", +] + +[[package]] +name = "borsh-derive" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6441c552f230375d18e3cc377677914d2ca2b0d36e52129fe15450a2dce46775" +dependencies = [ + "borsh-derive-internal", + "borsh-schema-derive-internal", + "proc-macro-crate 0.1.5", + "proc-macro2", + "syn 1.0.109", +] + +[[package]] +name = "borsh-derive" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7a8646f94ab393e43e8b35a2558b1624bed28b97ee09c5d15456e3c9463f46d" +dependencies = [ + "once_cell", + "proc-macro-crate 3.1.0", + "proc-macro2", + "quote", + "syn 2.0.63", + "syn_derive", +] + +[[package]] +name = "borsh-derive-internal" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5449c28a7b352f2d1e592a8a28bf139bc71afb0764a14f3c02500935d8c44065" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "borsh-schema-derive-internal" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdbd5696d8bfa21d53d9fe39a714a18538bad11492a42d066dbbc395fb1951c0" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "brownstone" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "030ea61398f34f1395ccbeb046fb68c87b631d1f34567fed0f0f11fa35d18d8d" +dependencies = [ + "arrayvec", +] + +[[package]] +name = "bs58" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "771fe0050b883fcc3ea2359b1a96bcfbc090b7116eae7c3c512c7a083fdf23d3" + +[[package]] +name = "bs58" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf88ba1141d185c399bee5288d850d63b8369520c1eafc32a0430b5b6c287bf4" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "bumpalo" +version = "3.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "bytes" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9" + +[[package]] +name = "bytesize" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3e368af43e418a04d52505cf3dbc23dda4e3407ae2fa99fd0e4f308ce546acc" +dependencies = [ + "serde", +] + +[[package]] +name = "bzip2" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bdb116a6ef3f6c3698828873ad02c3014b3c85cadb88496095628e3ef1e347f8" +dependencies = [ + "bzip2-sys", + "libc", +] + +[[package]] +name = "bzip2-sys" +version = "0.1.11+1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "736a955f3fa7875102d57c82b8cac37ec45224a07fd32d58f9f7a186b6cd4cdc" +dependencies = [ + "cc", + "libc", + "pkg-config", +] + +[[package]] +name = "c2-chacha" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d27dae93fe7b1e0424dc57179ac396908c26b035a87234809f5c4dfd1b47dc80" +dependencies = [ + "cipher 0.2.5", + "ppv-lite86", +] + +[[package]] +name = "camino" +version = "1.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c59e92b5a388f549b863a7bea62612c09f24c8393560709a54558a9abdfb3b9c" +dependencies = [ + "serde", +] + +[[package]] +name = "cargo-near" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f73eb01da3b6737778d2006645533e75563d1080c64bf714bfb88d3fb0ac09b" +dependencies = [ + "anyhow", + "atty", + "bs58 0.4.0", + "camino", + "cargo_metadata 0.14.2", + "clap 3.2.25", + "colored", + "env_logger", + "libloading", + "log", + "near-abi", + "rustc_version", + "schemars", + "serde_json", + "sha2", + "symbolic-debuginfo", + "zstd", +] + +[[package]] +name = "cargo-platform" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24b1f0365a6c6bb4020cd05806fd0d33c44d38046b8bd7f0e40814b9763cabfc" +dependencies = [ + "serde", +] + +[[package]] +name = "cargo_metadata" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4acbb09d9ee8e23699b9634375c72795d095bf268439da88562cf9b501f181fa" +dependencies = [ + "camino", + "cargo-platform", + "semver", + "serde", + "serde_json", +] + +[[package]] +name = "cargo_metadata" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d886547e41f740c616ae73108f6eb70afe6d940c7bc697cb30f13daec073037" +dependencies = [ + "camino", + "cargo-platform", + "semver", + "serde", + "serde_json", + "thiserror", +] + +[[package]] +name = "cc" +version = "1.0.97" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "099a5357d84c4c61eb35fc8eafa9a79a902c2f76911e5747ced4e032edd8d9b4" +dependencies = [ + "jobserver", + "libc", + "once_cell", +] + +[[package]] +name = "cfg-if" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "cfg_aliases" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" + +[[package]] +name = "chrono" +version = "0.4.38" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" +dependencies = [ + "android-tzdata", + "iana-time-zone", + "js-sys", + "num-traits", + "serde", + "wasm-bindgen", + "windows-targets 0.52.5", +] + +[[package]] +name = "cipher" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12f8e7987cbd042a63249497f41aed09f8e65add917ea6566effbc56578d6801" +dependencies = [ + "generic-array", +] + +[[package]] +name = "cipher" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" +dependencies = [ + "crypto-common", + "inout", +] + +[[package]] +name = "clap" +version = "3.2.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ea181bf566f71cb9a5d17a59e1871af638180a18fb0035c92ae62b705207123" +dependencies = [ + "atty", + "bitflags 1.3.2", + "clap_derive 3.2.25", + "clap_lex 0.2.4", + "indexmap 1.9.3", + "once_cell", + "strsim 0.10.0", + "termcolor", + "textwrap", +] + +[[package]] +name = "clap" +version = "4.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90bc066a67923782aa8515dbaea16946c5bcc5addbd668bb80af688e53e548a0" +dependencies = [ + "clap_builder", + "clap_derive 4.5.4", +] + +[[package]] +name = "clap_builder" +version = "4.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae129e2e766ae0ec03484e609954119f123cc1fe650337e155d03b022f24f7b4" +dependencies = [ + "anstream", + "anstyle", + "clap_lex 0.7.0", + "strsim 0.11.1", +] + +[[package]] +name = "clap_derive" +version = "3.2.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae6371b8bdc8b7d3959e9cf7b22d4435ef3e79e138688421ec654acf8c81b008" +dependencies = [ + "heck 0.4.1", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "clap_derive" +version = "4.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "528131438037fd55894f62d6e9f068b8f45ac57ffa77517819645d10aed04f64" +dependencies = [ + "heck 0.5.0", + "proc-macro2", + "quote", + "syn 2.0.63", +] + +[[package]] +name = "clap_lex" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5" +dependencies = [ + "os_str_bytes", +] + +[[package]] +name = "clap_lex" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "98cc8fbded0c607b7ba9dd60cd98df59af97e84d24e49c8557331cfc26d301ce" + +[[package]] +name = "colorchoice" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b6a852b24ab71dffc585bcb46eaf7959d175cb865a7152e35b348d1b2960422" + +[[package]] +name = "colored" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cbf2150cce219b664a8a70df7a1f933836724b503f8a413af9365b4dcc4d90b8" +dependencies = [ + "lazy_static", + "windows-sys 0.48.0", +] + +[[package]] +name = "constant_time_eq" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" + +[[package]] +name = "convert_case" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" + +[[package]] +name = "core-foundation" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" + +[[package]] +name = "cpufeatures" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" +dependencies = [ + "libc", +] + +[[package]] +name = "crc32fast" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3855a8a784b474f333699ef2bbca9db2c4a1f6d9088a90a2d25b1eb53111eaa" +dependencies = [ + "cfg-if 1.0.0", +] + +[[package]] +name = "crossbeam-channel" +version = "0.5.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab3db02a9c5b5121e1e42fbdb1aeb65f5e02624cc58c43f2884c6ccac0b82f95" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345" + +[[package]] +name = "crunchy" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "crypto-mac" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b584a330336237c1eecd3e94266efb216c56ed91225d634cb2991c5f3fd1aeab" +dependencies = [ + "generic-array", + "subtle", +] + +[[package]] +name = "curve25519-dalek" +version = "4.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a677b8922c94e01bdbb12126b0bc852f00447528dee1782229af9c720c3f348" +dependencies = [ + "cfg-if 1.0.0", + "cpufeatures", + "curve25519-dalek-derive", + "digest 0.10.7", + "fiat-crypto", + "platforms", + "rand_core 0.6.4", + "rustc_version", + "subtle", + "zeroize", +] + +[[package]] +name = "curve25519-dalek-derive" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.63", +] + +[[package]] +name = "darling" +version = "0.20.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54e36fcd13ed84ffdfda6f5be89b31287cbb80c439841fe69e04841435464391" +dependencies = [ + "darling_core", + "darling_macro", +] + +[[package]] +name = "darling_core" +version = "0.20.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c2cf1c23a687a1feeb728783b993c4e1ad83d99f351801977dd809b48d0a70f" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim 0.10.0", + "syn 2.0.63", +] + +[[package]] +name = "darling_macro" +version = "0.20.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a668eda54683121533a393014d8692171709ff57a7d61f187b6e782719f8933f" +dependencies = [ + "darling_core", + "quote", + "syn 2.0.63", +] + +[[package]] +name = "debugid" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6ee87af31d84ef885378aebca32be3d682b0e0dc119d5b4860a2c5bb5046730" +dependencies = [ + "uuid", +] + +[[package]] +name = "deranged" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" +dependencies = [ + "powerfmt", + "serde", +] + +[[package]] +name = "derive_arbitrary" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67e77553c4162a157adbf834ebae5b415acbecbeafc7a74b0e886657506a7611" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.63", +] + +[[package]] +name = "derive_more" +version = "0.99.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321" +dependencies = [ + "convert_case", + "proc-macro2", + "quote", + "rustc_version", + "syn 1.0.109", +] + +[[package]] +name = "digest" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" +dependencies = [ + "generic-array", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "crypto-common", + "subtle", +] + +[[package]] +name = "dirs-next" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1" +dependencies = [ + "cfg-if 1.0.0", + "dirs-sys-next", +] + +[[package]] +name = "dirs-sys-next" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" +dependencies = [ + "libc", + "redox_users", + "winapi", +] + +[[package]] +name = "dmsort" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0bc8fbe9441c17c9f46f75dfe27fa1ddb6c68a461ccaed0481419219d4f10d3" + +[[package]] +name = "dyn-clone" +version = "1.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d6ef0072f8a535281e4876be788938b528e9a1d43900b82c2569af7da799125" + +[[package]] +name = "easy-ext" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53aff6fdc1b181225acdcb5b14c47106726fd8e486707315b1b138baed68ee31" + +[[package]] +name = "ed25519" +version = "2.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53" +dependencies = [ + "signature", +] + +[[package]] +name = "ed25519-dalek" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a3daa8e81a3963a60642bcc1f90a670680bd4a77535faa384e9d1c79d620871" +dependencies = [ + "curve25519-dalek", + "ed25519", + "rand_core 0.6.4", + "sha2", + "subtle", +] + +[[package]] +name = "either" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a47c1c47d2f5964e29c61246e81db715514cd532db6b5116a25ea3c03d6780a2" + +[[package]] +name = "elementtree" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f6319c9433cf1e95c60c8533978bccf0614f27f03bb4e514253468eeeaa7fe3" +dependencies = [ + "string_cache", + "xml-rs", +] + +[[package]] +name = "encoding_rs" +version = "0.8.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59" +dependencies = [ + "cfg-if 1.0.0", +] + +[[package]] +name = "enum-map" +version = "2.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6866f3bfdf8207509a033af1a75a7b08abda06bbaaeae6669323fd5a097df2e9" +dependencies = [ + "enum-map-derive", +] + +[[package]] +name = "enum-map-derive" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f282cfdfe92516eb26c2af8589c274c7c17681f5ecc03c18255fe741c6aa64eb" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.63", +] + +[[package]] +name = "env_logger" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a12e6657c4c97ebab115a42dcee77225f7f482cdd841cf7088c657a42e9e00e7" +dependencies = [ + "atty", + "humantime", + "log", + "regex", + "termcolor", +] + +[[package]] +name = "equivalent" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" + +[[package]] +name = "errno" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "fallible-iterator" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7" + +[[package]] +name = "fastrand" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" + +[[package]] +name = "fiat-crypto" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" + +[[package]] +name = "filetime" +version = "0.2.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ee447700ac8aa0b2f2bd7bc4462ad686ba06baa6727ac149a2d6277f0d240fd" +dependencies = [ + "cfg-if 1.0.0", + "libc", + "redox_syscall 0.4.1", + "windows-sys 0.52.0", +] + +[[package]] +name = "fixed-hash" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfcf0ed7fe52a17a03854ec54a9f76d6d84508d1c0e66bc1793301c73fc8493c" +dependencies = [ + "static_assertions", +] + +[[package]] +name = "fixedbitset" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" + +[[package]] +name = "flate2" +version = "1.0.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f54427cfd1c7829e2a139fcefea601bf088ebca651d2bf53ebc600eac295dae" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foreign-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +dependencies = [ + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + +[[package]] +name = "form_urlencoded" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "fs2" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9564fc758e15025b46aa6643b1b77d047d1a56a1aea6e01002ac0c7026876213" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "funty" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" + +[[package]] +name = "futures" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" + +[[package]] +name = "futures-executor" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" + +[[package]] +name = "futures-macro" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.63", +] + +[[package]] +name = "futures-sink" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" + +[[package]] +name = "futures-task" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" + +[[package]] +name = "futures-util" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "getrandom" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" +dependencies = [ + "cfg-if 1.0.0", + "libc", + "wasi 0.9.0+wasi-snapshot-preview1", +] + +[[package]] +name = "getrandom" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" +dependencies = [ + "cfg-if 1.0.0", + "libc", + "wasi 0.11.0+wasi-snapshot-preview1", +] + +[[package]] +name = "gimli" +version = "0.26.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22030e2c5a68ec659fde1e949a745124b48e6fa8b045b7ed5bd1fe4ccc5c4e5d" +dependencies = [ + "fallible-iterator", + "stable_deref_trait", +] + +[[package]] +name = "gimli" +version = "0.28.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" + +[[package]] +name = "goblin" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7666983ed0dd8d21a6f6576ee00053ca0926fb281a5522577a4dbd0f1b54143" +dependencies = [ + "log", + "plain", + "scroll 0.11.0", +] + +[[package]] +name = "h2" +version = "0.3.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8" +dependencies = [ + "bytes", + "fnv", + "futures-core", + "futures-sink", + "futures-util", + "http", + "indexmap 2.2.6", + "slab", + "tokio", + "tokio-util 0.7.11", + "tracing", +] + +[[package]] +name = "hashbrown" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e" +dependencies = [ + "ahash", +] + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" + +[[package]] +name = "hashbrown" +version = "0.14.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" + +[[package]] +name = "heck" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c" +dependencies = [ + "unicode-segmentation", +] + +[[package]] +name = "heck" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" + +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + +[[package]] +name = "hermit-abi" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" +dependencies = [ + "libc", +] + +[[package]] +name = "hermit-abi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" +dependencies = [ + "serde", +] + +[[package]] +name = "hmac" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +dependencies = [ + "digest 0.10.7", +] + +[[package]] +name = "home" +version = "0.5.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5" +dependencies = [ + "windows-sys 0.52.0", +] + +[[package]] +name = "http" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http-body" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" +dependencies = [ + "bytes", + "http", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" + +[[package]] +name = "httpdate" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" + +[[package]] +name = "humantime" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" + +[[package]] +name = "hyper" +version = "0.14.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf96e135eb83a2a8ddf766e426a841d8ddd7449d5f00d34ea02b41d2f19eef80" +dependencies = [ + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "socket2", + "tokio", + "tower-service", + "tracing", + "want", +] + +[[package]] +name = "hyper-timeout" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbb958482e8c7be4bc3cf272a766a2b0bf1a6755e7a6ae777f017a31d11b13b1" +dependencies = [ + "hyper", + "pin-project-lite", + "tokio", + "tokio-io-timeout", +] + +[[package]] +name = "hyper-tls" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" +dependencies = [ + "bytes", + "hyper", + "native-tls", + "tokio", + "tokio-native-tls", +] + +[[package]] +name = "iana-time-zone" +version = "0.1.60" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "wasm-bindgen", + "windows-core", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + +[[package]] +name = "idna" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" +dependencies = [ + "unicode-bidi", + "unicode-normalization", +] + +[[package]] +name = "indent_write" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0cfe9645a18782869361d9c8732246be7b410ad4e919d3609ebabdac00ba12c3" + +[[package]] +name = "indexmap" +version = "1.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +dependencies = [ + "autocfg", + "hashbrown 0.12.3", + "serde", +] + +[[package]] +name = "indexmap" +version = "2.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" +dependencies = [ + "equivalent", + "hashbrown 0.14.5", + "serde", +] + +[[package]] +name = "inout" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" +dependencies = [ + "generic-array", +] + +[[package]] +name = "ipnet" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" + +[[package]] +name = "is_executable" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "302d553b8abc8187beb7d663e34c065ac4570b273bc9511a50e940e99409c577" +dependencies = [ + "winapi", +] + +[[package]] +name = "is_terminal_polyfill" +version = "1.70.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8478577c03552c21db0e2724ffb8986a5ce7af88107e6be5d2ee6e158c12800" + +[[package]] +name = "itertools" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" + +[[package]] +name = "jobserver" +version = "0.1.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2b099aaa34a9751c5bf0878add70444e1ed2dd73f347be99003d4577277de6e" +dependencies = [ + "libc", +] + +[[package]] +name = "joinery" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72167d68f5fce3b8655487b8038691a3c9984ee769590f93f2a631f4ad64e4f5" + +[[package]] +name = "js-sys" +version = "0.3.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" +dependencies = [ + "wasm-bindgen", +] + +[[package]] +name = "json-patch" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec9ad60d674508f3ca8f380a928cfe7b096bc729c4e2dbfe3852bc45da3ab30b" +dependencies = [ + "serde", + "serde_json", + "thiserror", +] + +[[package]] +name = "json_comments" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9dbbfed4e59ba9750e15ba154fdfd9329cee16ff3df539c2666b70f58cc32105" + +[[package]] +name = "keccak" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecc2af9a1119c51f12a14607e783cb977bde58bc069ff0c3da1095e635d70654" +dependencies = [ + "cpufeatures", +] + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +dependencies = [ + "spin 0.5.2", +] + +[[package]] +name = "lazycell" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" + +[[package]] +name = "libc" +version = "0.2.154" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae743338b92ff9146ce83992f766a31066a91a8c84a45e0e9f21e7cf6de6d346" + +[[package]] +name = "libloading" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" +dependencies = [ + "cfg-if 1.0.0", + "winapi", +] + +[[package]] +name = "libredox" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" +dependencies = [ + "bitflags 2.5.0", + "libc", +] + +[[package]] +name = "linux-raw-sys" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c" + +[[package]] +name = "lock_api" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" + +[[package]] +name = "matchers" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" +dependencies = [ + "regex-automata 0.1.10", +] + +[[package]] +name = "memchr" +version = "2.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d" + +[[package]] +name = "memmap2" +version = "0.5.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83faa42c0a078c393f6b29d5db232d8be22776a891f8f56e5284faee4a20b327" +dependencies = [ + "libc", +] + +[[package]] +name = "memoffset" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d61c719bcfbcf5d62b3a09efa6088de8c54bc0bfcd3ea7ae39fcc186108b8de1" +dependencies = [ + "autocfg", +] + +[[package]] +name = "memory_units" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8452105ba047068f40ff7093dd1d9da90898e63dd61736462e9cdda6a90ad3c3" + +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + +[[package]] +name = "miniz_oxide" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d811f3e15f28568be3407c8e7fdb6514c1cda3cb30683f15b6a1a1dc4ea14a7" +dependencies = [ + "adler", +] + +[[package]] +name = "mio" +version = "0.8.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" +dependencies = [ + "libc", + "wasi 0.11.0+wasi-snapshot-preview1", + "windows-sys 0.48.0", +] + +[[package]] +name = "multimap" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5ce46fe64a9d73be07dcbe690a38ce1b293be448fd8ce1e6c1b8062c9f72c6a" + +[[package]] +name = "native-tls" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07226173c32f2926027b63cce4bcd8076c3552846cbe7925f3aaffeac0a3b92e" +dependencies = [ + "lazy_static", + "libc", + "log", + "openssl", + "openssl-probe", + "openssl-sys", + "schannel", + "security-framework", + "security-framework-sys", + "tempfile", +] + +[[package]] +name = "near-abi" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "885db39b08518fa700b73fa2214e8adbbfba316ba82dd510f50519173eadaf73" +dependencies = [ + "borsh 0.9.3", + "schemars", + "semver", + "serde", +] + +[[package]] +name = "near-account-id" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35cbb989542587b47205e608324ddd391f0cee1c22b4b64ae49f458334b95907" +dependencies = [ + "borsh 1.5.0", + "serde", +] + +[[package]] +name = "near-chain-configs" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d05e5a8ace81c09d7eb165dffc1742358a021b2fa761f2160943305f83216003" +dependencies = [ + "anyhow", + "bytesize", + "chrono", + "derive_more", + "near-config-utils", + "near-crypto", + "near-parameters", + "near-primitives", + "num-rational", + "once_cell", + "serde", + "serde_json", + "sha2", + "smart-default", + "tracing", +] + +[[package]] +name = "near-config-utils" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ae1eaab1d545a9be7a55b6ef09f365c2017f93a03063547591d12c0c6d27e58" +dependencies = [ + "anyhow", + "json_comments", + "thiserror", + "tracing", +] + +[[package]] +name = "near-crypto" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2991d2912218a80ec0733ac87f84fa803accea105611eea209d4419271957667" +dependencies = [ + "blake2", + "borsh 1.5.0", + "bs58 0.4.0", + "c2-chacha", + "curve25519-dalek", + "derive_more", + "ed25519-dalek", + "hex", + "near-account-id", + "near-config-utils", + "near-stdx", + "once_cell", + "primitive-types", + "rand 0.7.3", + "secp256k1", + "serde", + "serde_json", + "subtle", + "thiserror", +] + +[[package]] +name = "near-fmt" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7d998dfc1e04001608899b2498ad5a782c7d036b73769d510de21964db99286" +dependencies = [ + "near-primitives-core", +] + +[[package]] +name = "near-gas" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14e75c875026229902d065e4435804497337b631ec69ba746b102954273e9ad1" +dependencies = [ + "borsh 1.5.0", + "schemars", + "serde", +] + +[[package]] +name = "near-jsonrpc-client" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18ad81e015f7aced8925d5b9ba3f369b36da9575c15812cfd0786bc1213284ca" +dependencies = [ + "borsh 1.5.0", + "lazy_static", + "log", + "near-chain-configs", + "near-crypto", + "near-jsonrpc-primitives", + "near-primitives", + "reqwest", + "serde", + "serde_json", + "thiserror", +] + +[[package]] +name = "near-jsonrpc-primitives" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0ce745e954ae776eef05957602e638ee9581106a3675946fb43c2fe7e38ef03" +dependencies = [ + "arbitrary", + "near-chain-configs", + "near-crypto", + "near-primitives", + "near-rpc-error-macro", + "serde", + "serde_json", + "thiserror", +] + +[[package]] +name = "near-o11y" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d20762631bc8253030013bbae9b5f0542691edc1aa6722f1e8141cc9b928ae5b" +dependencies = [ + "actix", + "base64 0.21.7", + "clap 4.5.4", + "near-crypto", + "near-fmt", + "near-primitives-core", + "once_cell", + "opentelemetry", + "opentelemetry-otlp", + "opentelemetry-semantic-conventions", + "prometheus", + "serde", + "serde_json", + "strum 0.24.1", + "thiserror", + "tokio", + "tracing", + "tracing-appender", + "tracing-opentelemetry", + "tracing-subscriber", +] + +[[package]] +name = "near-parameters" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e9f16a59b6c3e69b0585be951af6fe42a0ba86c0e207cb8c63badd19efd16680" +dependencies = [ + "assert_matches", + "borsh 1.5.0", + "enum-map", + "near-account-id", + "near-primitives-core", + "num-rational", + "serde", + "serde_repr", + "serde_yaml", + "strum 0.24.1", + "thiserror", +] + +[[package]] +name = "near-primitives" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0462b067732132babcc89d5577db3bfcb0a1bcfbaaed3f2db4c11cd033666314" +dependencies = [ + "arbitrary", + "base64 0.21.7", + "borsh 1.5.0", + "bytesize", + "cfg-if 1.0.0", + "chrono", + "derive_more", + "easy-ext", + "enum-map", + "hex", + "near-crypto", + "near-fmt", + "near-o11y", + "near-parameters", + "near-primitives-core", + "near-rpc-error-macro", + "near-stdx", + "near-vm-runner", + "num-rational", + "once_cell", + "primitive-types", + "rand 0.8.5", + "rand_chacha 0.3.1", + "reed-solomon-erasure", + "serde", + "serde_json", + "serde_with", + "serde_yaml", + "sha3", + "smart-default", + "strum 0.24.1", + "thiserror", + "time", + "tracing", +] + +[[package]] +name = "near-primitives-core" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8443eb718606f572c438be6321a097a8ebd69f8e48d953885b4f16601af88225" +dependencies = [ + "arbitrary", + "base64 0.21.7", + "borsh 1.5.0", + "bs58 0.4.0", + "derive_more", + "enum-map", + "near-account-id", + "num-rational", + "serde", + "serde_repr", + "serde_with", + "sha2", + "strum 0.24.1", + "thiserror", +] + +[[package]] +name = "near-rpc-error-core" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80fca203c51edd9595ec14db1d13359fb9ede32314990bf296b6c5c4502f6ab7" +dependencies = [ + "quote", + "serde", + "syn 2.0.63", +] + +[[package]] +name = "near-rpc-error-macro" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "897a445de2102f6732c8a185d922f5e3bf7fd0a41243ce40854df2197237f799" +dependencies = [ + "fs2", + "near-rpc-error-core", + "serde", + "syn 2.0.63", +] + +[[package]] +name = "near-sandbox-utils" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2de216bb0152bfb64f59016d9e6a5b1ac56dd85f729e5fde08461571e2182c8f" +dependencies = [ + "anyhow", + "binary-install", + "chrono", + "fs2", + "home", + "tokio", +] + +[[package]] +name = "near-sdk" +version = "5.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "520234cfdf04a805ac2f04715889d096eb83fdd5b99ca7d0f8027ae473f891a8" +dependencies = [ + "base64 0.21.7", + "borsh 1.5.0", + "bs58 0.5.1", + "near-account-id", + "near-crypto", + "near-gas", + "near-parameters", + "near-primitives", + "near-primitives-core", + "near-sdk-macros", + "near-sys", + "near-token", + "near-vm-runner", + "once_cell", + "serde", + "serde_json", + "wee_alloc", +] + +[[package]] +name = "near-sdk-macros" +version = "5.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee2fe3fc30068c5f20e89b0985d6104c5cc1c6742dbc6efbf352be4189b9bbf7" +dependencies = [ + "Inflector", + "darling", + "proc-macro2", + "quote", + "serde", + "serde_json", + "strum 0.26.2", + "strum_macros 0.26.2", + "syn 2.0.63", +] + +[[package]] +name = "near-stdx" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "855fd5540e3b4ff6fedf12aba2db1ee4b371b36f465da1363a6d022b27cb43b8" + +[[package]] +name = "near-sys" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "397688591acf8d3ebf2c2485ba32d4b24fc10aad5334e3ad8ec0b7179bfdf06b" + +[[package]] +name = "near-token" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b68f3f8a2409f72b43efdbeff8e820b81e70824c49fee8572979d789d1683fb" +dependencies = [ + "borsh 1.5.0", + "serde", +] + +[[package]] +name = "near-vm-runner" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c56c80bdb1954808f59bd36a9112377197b38d424991383bf05f52d0fe2e0da5" +dependencies = [ + "base64 0.21.7", + "borsh 1.5.0", + "ed25519-dalek", + "enum-map", + "memoffset", + "near-crypto", + "near-parameters", + "near-primitives-core", + "near-stdx", + "num-rational", + "once_cell", + "prefix-sum-vec", + "ripemd", + "serde", + "serde_repr", + "serde_with", + "sha2", + "sha3", + "strum 0.24.1", + "thiserror", + "tracing", + "zeropool-bn", +] + +[[package]] +name = "near-workspaces" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3e597da87d0c1a722e23efb8c24ae42a0ad99a15f37101dad45c15defb051c1" +dependencies = [ + "async-trait", + "base64 0.21.7", + "bs58 0.5.1", + "cargo-near", + "cargo_metadata 0.18.1", + "chrono", + "fs2", + "json-patch", + "libc", + "near-account-id", + "near-crypto", + "near-gas", + "near-jsonrpc-client", + "near-jsonrpc-primitives", + "near-primitives", + "near-sandbox-utils", + "near-token", + "rand 0.8.5", + "reqwest", + "serde", + "serde_json", + "sha2", + "tempfile", + "thiserror", + "tokio", + "tokio-retry", + "tracing", + "url", +] + +[[package]] +name = "new_debug_unreachable" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" + +[[package]] +name = "nft-challenge" +version = "0.1.0" +dependencies = [ + "borsh 1.5.0", + "futures", + "near-sdk", + "near-workspaces", + "serde", + "serde_json", + "tokio", +] + +[[package]] +name = "nom" +version = "7.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] + +[[package]] +name = "nom-supreme" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aadc66631948f6b65da03be4c4cd8bd104d481697ecbb9bbd65719b1ec60bc9f" +dependencies = [ + "brownstone", + "indent_write", + "joinery", + "memchr", + "nom", +] + +[[package]] +name = "nu-ansi-term" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" +dependencies = [ + "overload", + "winapi", +] + +[[package]] +name = "num-bigint" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f6f7833f2cbf2360a6cfd58cd41a53aa7a90bd4c202f5b1c7dd2ed73c57b2c3" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-conv" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" + +[[package]] +name = "num-integer" +version = "0.1.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-rational" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12ac428b1cb17fce6f731001d307d351ec70a6d202fc2e60f7d4c5e42d8f4f07" +dependencies = [ + "autocfg", + "num-bigint", + "num-integer", + "num-traits", + "serde", +] + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", +] + +[[package]] +name = "num_cpus" +version = "1.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" +dependencies = [ + "hermit-abi 0.3.9", + "libc", +] + +[[package]] +name = "object" +version = "0.32.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" +dependencies = [ + "memchr", +] + +[[package]] +name = "once_cell" +version = "1.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" + +[[package]] +name = "opaque-debug" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" + +[[package]] +name = "openssl" +version = "0.10.64" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95a0481286a310808298130d22dd1fef0fa571e05a8f44ec801801e84b216b1f" +dependencies = [ + "bitflags 2.5.0", + "cfg-if 1.0.0", + "foreign-types", + "libc", + "once_cell", + "openssl-macros", + "openssl-sys", +] + +[[package]] +name = "openssl-macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.63", +] + +[[package]] +name = "openssl-probe" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" + +[[package]] +name = "openssl-sys" +version = "0.9.102" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c597637d56fbc83893a35eb0dd04b2b8e7a50c91e64e9493e398b5df4fb45fa2" +dependencies = [ + "cc", + "libc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "opentelemetry" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6105e89802af13fdf48c49d7646d3b533a70e536d818aae7e78ba0433d01acb8" +dependencies = [ + "async-trait", + "crossbeam-channel", + "futures-channel", + "futures-executor", + "futures-util", + "js-sys", + "lazy_static", + "percent-encoding", + "pin-project", + "rand 0.8.5", + "thiserror", + "tokio", + "tokio-stream", +] + +[[package]] +name = "opentelemetry-otlp" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d1a6ca9de4c8b00aa7f1a153bd76cb263287155cec642680d79d98706f3d28a" +dependencies = [ + "async-trait", + "futures", + "futures-util", + "http", + "opentelemetry", + "prost", + "thiserror", + "tokio", + "tonic", + "tonic-build", +] + +[[package]] +name = "opentelemetry-semantic-conventions" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "985cc35d832d412224b2cffe2f9194b1b89b6aa5d0bef76d080dce09d90e62bd" +dependencies = [ + "opentelemetry", +] + +[[package]] +name = "os_str_bytes" +version = "6.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2355d85b9a3786f481747ced0e0ff2ba35213a1f9bd406ed906554d7af805a1" + +[[package]] +name = "overload" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" + +[[package]] +name = "parking_lot" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e4af0ca4f6caed20e900d564c242b8e5d4903fdacf31d3daf527b66fe6f42fb" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" +dependencies = [ + "cfg-if 1.0.0", + "libc", + "redox_syscall 0.5.1", + "smallvec", + "windows-targets 0.52.5", +] + +[[package]] +name = "password-hash" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7676374caaee8a325c9e7a2ae557f216c5563a171d6997b0ef8a65af35147700" +dependencies = [ + "base64ct", + "rand_core 0.6.4", + "subtle", +] + +[[package]] +name = "pbkdf2" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917" +dependencies = [ + "digest 0.10.7", + "hmac", + "password-hash", + "sha2", +] + +[[package]] +name = "pdb" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13f4d162ecaaa1467de5afbe62d597757b674b51da8bb4e587430c5fdb2af7aa" +dependencies = [ + "fallible-iterator", + "scroll 0.10.2", + "uuid", +] + +[[package]] +name = "percent-encoding" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" + +[[package]] +name = "petgraph" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" +dependencies = [ + "fixedbitset", + "indexmap 2.2.6", +] + +[[package]] +name = "phf_shared" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096" +dependencies = [ + "siphasher", +] + +[[package]] +name = "pin-project" +version = "1.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.63", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "pkg-config" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" + +[[package]] +name = "plain" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6" + +[[package]] +name = "platforms" +version = "3.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db23d408679286588f4d4644f965003d056e3dd5abcaaa938116871d7ce2fee7" + +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + +[[package]] +name = "ppv-lite86" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" + +[[package]] +name = "precomputed-hash" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" + +[[package]] +name = "prefix-sum-vec" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa06bd51638b6e76ac9ba9b6afb4164fa647bd2916d722f2623fbb6d1ed8bdba" + +[[package]] +name = "primitive-types" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05e4722c697a58a99d5d06a08c30821d7c082a4632198de1eaa5a6c22ef42373" +dependencies = [ + "fixed-hash", + "uint", +] + +[[package]] +name = "proc-macro-crate" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785" +dependencies = [ + "toml", +] + +[[package]] +name = "proc-macro-crate" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284" +dependencies = [ + "toml_edit", +] + +[[package]] +name = "proc-macro-error" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +dependencies = [ + "proc-macro-error-attr", + "proc-macro2", + "quote", + "syn 1.0.109", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +dependencies = [ + "proc-macro2", + "quote", + "version_check", +] + +[[package]] +name = "proc-macro2" +version = "1.0.82" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ad3d49ab951a01fbaafe34f2ec74122942fe18a3f9814c3268f1bb72042131b" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "prometheus" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d33c28a30771f7f96db69893f78b857f7450d7e0237e9c8fc6427a81bae7ed1" +dependencies = [ + "cfg-if 1.0.0", + "fnv", + "lazy_static", + "memchr", + "parking_lot", + "protobuf", + "thiserror", +] + +[[package]] +name = "prost" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "444879275cb4fd84958b1a1d5420d15e6fcf7c235fe47f053c9c2a80aceb6001" +dependencies = [ + "bytes", + "prost-derive", +] + +[[package]] +name = "prost-build" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62941722fb675d463659e49c4f3fe1fe792ff24fe5bbaa9c08cd3b98a1c354f5" +dependencies = [ + "bytes", + "heck 0.3.3", + "itertools", + "lazy_static", + "log", + "multimap", + "petgraph", + "prost", + "prost-types", + "regex", + "tempfile", + "which", +] + +[[package]] +name = "prost-derive" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9cc1a3263e07e0bf68e96268f37665207b49560d98739662cdfaae215c720fe" +dependencies = [ + "anyhow", + "itertools", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "prost-types" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "534b7a0e836e3c482d2693070f982e39e7611da9695d4d1f5a4b186b51faef0a" +dependencies = [ + "bytes", + "prost", +] + +[[package]] +name = "protobuf" +version = "2.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "106dd99e98437432fed6519dedecfade6a06a73bb7b2a1e019fdd2bee5778d94" + +[[package]] +name = "quote" +version = "1.0.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "radium" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" + +[[package]] +name = "rand" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" +dependencies = [ + "getrandom 0.1.16", + "libc", + "rand_chacha 0.2.2", + "rand_core 0.5.1", + "rand_hc", +] + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha 0.3.1", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" +dependencies = [ + "ppv-lite86", + "rand_core 0.5.1", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_core" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" +dependencies = [ + "getrandom 0.1.16", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom 0.2.15", +] + +[[package]] +name = "rand_hc" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" +dependencies = [ + "rand_core 0.5.1", +] + +[[package]] +name = "redox_syscall" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" +dependencies = [ + "bitflags 1.3.2", +] + +[[package]] +name = "redox_syscall" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "469052894dcb553421e483e4209ee581a45100d31b4018de03e5a7ad86374a7e" +dependencies = [ + "bitflags 2.5.0", +] + +[[package]] +name = "redox_users" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd283d9651eeda4b2a83a43c1c91b266c40fd76ecd39a50a8c630ae69dc72891" +dependencies = [ + "getrandom 0.2.15", + "libredox", + "thiserror", +] + +[[package]] +name = "reed-solomon-erasure" +version = "4.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a415a013dd7c5d4221382329a5a3482566da675737494935cbbbcdec04662f9d" +dependencies = [ + "smallvec", +] + +[[package]] +name = "regex" +version = "1.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c117dbdfde9c8308975b6a18d71f3f385c89461f7b3fb054288ecf2a2058ba4c" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata 0.4.6", + "regex-syntax 0.8.3", +] + +[[package]] +name = "regex-automata" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" +dependencies = [ + "regex-syntax 0.6.29", +] + +[[package]] +name = "regex-automata" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax 0.8.3", +] + +[[package]] +name = "regex-syntax" +version = "0.6.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" + +[[package]] +name = "regex-syntax" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adad44e29e4c806119491a7f06f03de4d1af22c3a680dd47f1e6e179439d1f56" + +[[package]] +name = "reqwest" +version = "0.11.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62" +dependencies = [ + "base64 0.21.7", + "bytes", + "encoding_rs", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "hyper", + "hyper-tls", + "ipnet", + "js-sys", + "log", + "mime", + "native-tls", + "once_cell", + "percent-encoding", + "pin-project-lite", + "rustls-pemfile", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper", + "system-configuration", + "tokio", + "tokio-native-tls", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "winreg", +] + +[[package]] +name = "ring" +version = "0.17.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" +dependencies = [ + "cc", + "cfg-if 1.0.0", + "getrandom 0.2.15", + "libc", + "spin 0.9.8", + "untrusted", + "windows-sys 0.52.0", +] + +[[package]] +name = "ripemd" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd124222d17ad93a644ed9d011a40f4fb64aa54275c08cc216524a9ea82fb09f" +dependencies = [ + "digest 0.10.7", +] + +[[package]] +name = "rustc-demangle" +version = "0.1.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" + +[[package]] +name = "rustc-hex" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6" + +[[package]] +name = "rustc_version" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +dependencies = [ + "semver", +] + +[[package]] +name = "rustix" +version = "0.38.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" +dependencies = [ + "bitflags 2.5.0", + "errno", + "libc", + "linux-raw-sys", + "windows-sys 0.52.0", +] + +[[package]] +name = "rustls" +version = "0.22.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf4ef73721ac7bcd79b2b315da7779d8fc09718c6b3d2d1b2d94850eb8c18432" +dependencies = [ + "log", + "ring", + "rustls-pki-types", + "rustls-webpki", + "subtle", + "zeroize", +] + +[[package]] +name = "rustls-pemfile" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" +dependencies = [ + "base64 0.21.7", +] + +[[package]] +name = "rustls-pki-types" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "976295e77ce332211c0d24d92c0e83e50f5c5f046d11082cea19f3df13a3562d" + +[[package]] +name = "rustls-webpki" +version = "0.102.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3bce581c0dd41bce533ce695a1437fa16a7ab5ac3ccfa99fe1a620a7885eabf" +dependencies = [ + "ring", + "rustls-pki-types", + "untrusted", +] + +[[package]] +name = "rustversion" +version = "1.0.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "092474d1a01ea8278f69e6a358998405fae5b8b963ddaeb2b0b04a128bf1dfb0" + +[[package]] +name = "ryu" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" + +[[package]] +name = "schannel" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbc91545643bcf3a0bbb6569265615222618bdf33ce4ffbbd13c4bbd4c093534" +dependencies = [ + "windows-sys 0.52.0", +] + +[[package]] +name = "schemars" +version = "0.8.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc6e7ed6919cb46507fb01ff1654309219f62b4d603822501b0b80d42f6f21ef" +dependencies = [ + "dyn-clone", + "schemars_derive", + "serde", + "serde_json", +] + +[[package]] +name = "schemars_derive" +version = "0.8.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "185f2b7aa7e02d418e453790dde16890256bbd2bcd04b7dc5348811052b53f49" +dependencies = [ + "proc-macro2", + "quote", + "serde_derive_internals", + "syn 2.0.63", +] + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "scroll" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fda28d4b4830b807a8b43f7b0e6b5df875311b3e7621d84577188c175b6ec1ec" + +[[package]] +name = "scroll" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04c565b551bafbef4157586fa379538366e4385d42082f255bfd96e4fe8519da" +dependencies = [ + "scroll_derive", +] + +[[package]] +name = "scroll_derive" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1db149f81d46d2deba7cd3c50772474707729550221e69588478ebf9ada425ae" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.63", +] + +[[package]] +name = "secp256k1" +version = "0.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25996b82292a7a57ed3508f052cfff8640d38d32018784acd714758b43da9c8f" +dependencies = [ + "rand 0.8.5", + "secp256k1-sys", +] + +[[package]] +name = "secp256k1-sys" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70a129b9e9efbfb223753b9163c4ab3b13cff7fd9c7f010fbac25ab4099fa07e" +dependencies = [ + "cc", +] + +[[package]] +name = "security-framework" +version = "2.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c627723fd09706bacdb5cf41499e95098555af3c3c29d014dc3c458ef6be11c0" +dependencies = [ + "bitflags 2.5.0", + "core-foundation", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework-sys" +version = "2.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "317936bbbd05227752583946b9e66d7ce3b489f84e11a94a510b4437fef407d7" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "semver" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" +dependencies = [ + "serde", +] + +[[package]] +name = "serde" +version = "1.0.201" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "780f1cebed1629e4753a1a38a3c72d30b97ec044f0aef68cb26650a3c5cf363c" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.201" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5e405930b9796f1c00bee880d03fc7e0bb4b9a11afc776885ffe84320da2865" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.63", +] + +[[package]] +name = "serde_derive_internals" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "330f01ce65a3a5fe59a60c82f3c9a024b573b8a6e875bd233fe5f934e71d54e3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.63", +] + +[[package]] +name = "serde_json" +version = "1.0.117" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "455182ea6142b14f93f4bc5320a2b31c1f266b66a4a5c858b013302a5d8cbfc3" +dependencies = [ + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serde_repr" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.63", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serde_with" +version = "3.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ad483d2ab0149d5a5ebcd9972a3852711e0153d863bf5a5d0391d28883c4a20" +dependencies = [ + "base64 0.22.1", + "chrono", + "hex", + "indexmap 1.9.3", + "indexmap 2.2.6", + "serde", + "serde_derive", + "serde_json", + "serde_with_macros", + "time", +] + +[[package]] +name = "serde_with_macros" +version = "3.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65569b702f41443e8bc8bbb1c5779bd0450bbe723b56198980e80ec45780bce2" +dependencies = [ + "darling", + "proc-macro2", + "quote", + "syn 2.0.63", +] + +[[package]] +name = "serde_yaml" +version = "0.9.34+deprecated" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" +dependencies = [ + "indexmap 2.2.6", + "itoa", + "ryu", + "serde", + "unsafe-libyaml", +] + +[[package]] +name = "sha1" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" +dependencies = [ + "cfg-if 1.0.0", + "cpufeatures", + "digest 0.10.7", +] + +[[package]] +name = "sha2" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" +dependencies = [ + "cfg-if 1.0.0", + "cpufeatures", + "digest 0.10.7", +] + +[[package]] +name = "sha3" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" +dependencies = [ + "digest 0.10.7", + "keccak", +] + +[[package]] +name = "sharded-slab" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" +dependencies = [ + "lazy_static", +] + +[[package]] +name = "signal-hook-registry" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" +dependencies = [ + "libc", +] + +[[package]] +name = "signature" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" + +[[package]] +name = "siphasher" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" + +[[package]] +name = "slab" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" +dependencies = [ + "autocfg", +] + +[[package]] +name = "smallvec" +version = "1.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" + +[[package]] +name = "smart-default" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "133659a15339456eeeb07572eb02a91c91e9815e9cbc89566944d2c8d3efdbf6" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "socket2" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "spin" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" + +[[package]] +name = "spin" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" + +[[package]] +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + +[[package]] +name = "string_cache" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f91138e76242f575eb1d3b38b4f1362f10d3a43f47d182a5b359af488a02293b" +dependencies = [ + "new_debug_unreachable", + "once_cell", + "parking_lot", + "phf_shared", + "precomputed-hash", + "serde", +] + +[[package]] +name = "strsim" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" + +[[package]] +name = "strsim" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" + +[[package]] +name = "strum" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "063e6045c0e62079840579a7e47a355ae92f60eb74daaf156fb1e84ba164e63f" +dependencies = [ + "strum_macros 0.24.3", +] + +[[package]] +name = "strum" +version = "0.26.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d8cec3501a5194c432b2b7976db6b7d10ec95c253208b45f83f7136aa985e29" + +[[package]] +name = "strum_macros" +version = "0.24.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e385be0d24f186b4ce2f9982191e7101bb737312ad61c1f2f984f34bcf85d59" +dependencies = [ + "heck 0.4.1", + "proc-macro2", + "quote", + "rustversion", + "syn 1.0.109", +] + +[[package]] +name = "strum_macros" +version = "0.26.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6cf59daf282c0a494ba14fd21610a0325f9f90ec9d1231dea26bcb1d696c946" +dependencies = [ + "heck 0.4.1", + "proc-macro2", + "quote", + "rustversion", + "syn 2.0.63", +] + +[[package]] +name = "subtle" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" + +[[package]] +name = "symbolic-common" +version = "8.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f551f902d5642e58039aee6a9021a61037926af96e071816361644983966f540" +dependencies = [ + "debugid", + "memmap2", + "stable_deref_trait", + "uuid", +] + +[[package]] +name = "symbolic-debuginfo" +version = "8.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1165dabf9fc1d6bb6819c2c0e27c8dd0e3068d2c53cf186d319788e96517f0d6" +dependencies = [ + "bitvec", + "dmsort", + "elementtree", + "fallible-iterator", + "flate2", + "gimli 0.26.2", + "goblin", + "lazy_static", + "lazycell", + "nom", + "nom-supreme", + "parking_lot", + "pdb", + "regex", + "scroll 0.11.0", + "serde", + "serde_json", + "smallvec", + "symbolic-common", + "thiserror", + "wasmparser", + "zip 0.5.13", +] + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.63" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf5be731623ca1a1fb7d8be6f261a3be6d3e2337b8a1f97be944d020c8fcb704" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn_derive" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1329189c02ff984e9736652b1631330da25eaa6bc639089ed4915d25446cbe7b" +dependencies = [ + "proc-macro-error", + "proc-macro2", + "quote", + "syn 2.0.63", +] + +[[package]] +name = "sync_wrapper" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" + +[[package]] +name = "system-configuration" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" +dependencies = [ + "bitflags 1.3.2", + "core-foundation", + "system-configuration-sys", +] + +[[package]] +name = "system-configuration-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "tap" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" + +[[package]] +name = "tar" +version = "0.4.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b16afcea1f22891c49a00c751c7b63b2233284064f11a200fc624137c51e2ddb" +dependencies = [ + "filetime", + "libc", + "xattr", +] + +[[package]] +name = "tempfile" +version = "3.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1" +dependencies = [ + "cfg-if 1.0.0", + "fastrand", + "rustix", + "windows-sys 0.52.0", +] + +[[package]] +name = "termcolor" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "textwrap" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23d434d3f8967a09480fb04132ebe0a3e088c173e6d0ee7897abbdf4eab0f8b9" + +[[package]] +name = "thiserror" +version = "1.0.60" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "579e9083ca58dd9dcf91a9923bb9054071b9ebbd800b342194c9feb0ee89fc18" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.60" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2470041c06ec3ac1ab38d0356a6119054dedaea53e12fbefc0de730a1c08524" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.63", +] + +[[package]] +name = "thread_local" +version = "1.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" +dependencies = [ + "cfg-if 1.0.0", + "once_cell", +] + +[[package]] +name = "time" +version = "0.3.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" +dependencies = [ + "deranged", + "itoa", + "num-conv", + "powerfmt", + "serde", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" + +[[package]] +name = "time-macros" +version = "0.2.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf" +dependencies = [ + "num-conv", + "time-core", +] + +[[package]] +name = "tinyvec" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[package]] +name = "tokio" +version = "1.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1adbebffeca75fcfd058afa480fb6c0b81e165a0323f9c9d39c9697e37c46787" +dependencies = [ + "backtrace", + "bytes", + "libc", + "mio", + "num_cpus", + "parking_lot", + "pin-project-lite", + "signal-hook-registry", + "socket2", + "tokio-macros", + "windows-sys 0.48.0", +] + +[[package]] +name = "tokio-io-timeout" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30b74022ada614a1b4834de765f9bb43877f910cc8ce4be40e89042c9223a8bf" +dependencies = [ + "pin-project-lite", + "tokio", +] + +[[package]] +name = "tokio-macros" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.63", +] + +[[package]] +name = "tokio-native-tls" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" +dependencies = [ + "native-tls", + "tokio", +] + +[[package]] +name = "tokio-retry" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f57eb36ecbe0fc510036adff84824dd3c24bb781e21bfa67b69d556aa85214f" +dependencies = [ + "pin-project", + "rand 0.8.5", + "tokio", +] + +[[package]] +name = "tokio-stream" +version = "0.1.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "267ac89e0bec6e691e5813911606935d77c476ff49024f98abcea3e7b15e37af" +dependencies = [ + "futures-core", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "tokio-util" +version = "0.6.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36943ee01a6d67977dd3f84a5a1d2efeb4ada3a1ae771cadfaa535d9d9fc6507" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "log", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "tokio-util" +version = "0.7.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9cf6b47b3771c49ac75ad09a6162f53ad4b8088b76ac60e8ec1455b31a189fe1" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "toml" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_datetime" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1" + +[[package]] +name = "toml_edit" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1" +dependencies = [ + "indexmap 2.2.6", + "toml_datetime", + "winnow", +] + +[[package]] +name = "tonic" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff08f4649d10a70ffa3522ca559031285d8e421d727ac85c60825761818f5d0a" +dependencies = [ + "async-stream", + "async-trait", + "base64 0.13.1", + "bytes", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "hyper", + "hyper-timeout", + "percent-encoding", + "pin-project", + "prost", + "prost-derive", + "tokio", + "tokio-stream", + "tokio-util 0.6.10", + "tower", + "tower-layer", + "tower-service", + "tracing", + "tracing-futures", +] + +[[package]] +name = "tonic-build" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9403f1bafde247186684b230dc6f38b5cd514584e8bec1dd32514be4745fa757" +dependencies = [ + "proc-macro2", + "prost-build", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "tower" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" +dependencies = [ + "futures-core", + "futures-util", + "indexmap 1.9.3", + "pin-project", + "pin-project-lite", + "rand 0.8.5", + "slab", + "tokio", + "tokio-util 0.7.11", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tower-layer" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0" + +[[package]] +name = "tower-service" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" + +[[package]] +name = "tracing" +version = "0.1.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" +dependencies = [ + "log", + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-appender" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3566e8ce28cc0a3fe42519fc80e6b4c943cc4c8cef275620eb8dac2d3d4e06cf" +dependencies = [ + "crossbeam-channel", + "thiserror", + "time", + "tracing-subscriber", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.63", +] + +[[package]] +name = "tracing-core" +version = "0.1.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +dependencies = [ + "once_cell", + "valuable", +] + +[[package]] +name = "tracing-futures" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97d095ae15e245a057c8e8451bab9b3ee1e1f68e9ba2b4fbc18d0ac5237835f2" +dependencies = [ + "pin-project", + "tracing", +] + +[[package]] +name = "tracing-log" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f751112709b4e791d8ce53e32c4ed2d353565a795ce84da2285393f41557bdf2" +dependencies = [ + "log", + "once_cell", + "tracing-core", +] + +[[package]] +name = "tracing-log" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" +dependencies = [ + "log", + "once_cell", + "tracing-core", +] + +[[package]] +name = "tracing-opentelemetry" +version = "0.17.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbbe89715c1dbbb790059e2565353978564924ee85017b5fff365c872ff6721f" +dependencies = [ + "once_cell", + "opentelemetry", + "tracing", + "tracing-core", + "tracing-log 0.1.4", + "tracing-subscriber", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" +dependencies = [ + "matchers", + "nu-ansi-term", + "once_cell", + "regex", + "sharded-slab", + "smallvec", + "thread_local", + "tracing", + "tracing-core", + "tracing-log 0.2.0", +] + +[[package]] +name = "try-lock" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" + +[[package]] +name = "typenum" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" + +[[package]] +name = "uint" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76f64bba2c53b04fcab63c01a7d7427eadc821e3bc48c34dc9ba29c501164b52" +dependencies = [ + "byteorder", + "crunchy", + "hex", + "static_assertions", +] + +[[package]] +name = "unicode-bidi" +version = "0.3.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" + +[[package]] +name = "unicode-ident" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" + +[[package]] +name = "unicode-normalization" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "unicode-segmentation" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202" + +[[package]] +name = "unsafe-libyaml" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "673aac59facbab8a9007c7f6108d11f63b603f7cabff99fabf650fea5c32b861" + +[[package]] +name = "untrusted" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" + +[[package]] +name = "ureq" +version = "2.9.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d11a831e3c0b56e438a28308e7c810799e3c118417f342d30ecec080105395cd" +dependencies = [ + "base64 0.22.1", + "flate2", + "log", + "once_cell", + "rustls", + "rustls-pki-types", + "rustls-webpki", + "url", + "webpki-roots", +] + +[[package]] +name = "url" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", + "serde", +] + +[[package]] +name = "utf8parse" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" + +[[package]] +name = "uuid" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" + +[[package]] +name = "valuable" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" + +[[package]] +name = "vcpkg" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + +[[package]] +name = "version_check" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" + +[[package]] +name = "want" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" +dependencies = [ + "try-lock", +] + +[[package]] +name = "wasi" +version = "0.9.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "wasm-bindgen" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" +dependencies = [ + "cfg-if 1.0.0", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" +dependencies = [ + "bumpalo", + "log", + "once_cell", + "proc-macro2", + "quote", + "syn 2.0.63", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.42" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76bc14366121efc8dbb487ab05bcc9d346b3b5ec0eaa76e46594cabbe51762c0" +dependencies = [ + "cfg-if 1.0.0", + "js-sys", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.63", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" + +[[package]] +name = "wasmparser" +version = "0.83.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "718ed7c55c2add6548cca3ddd6383d738cd73b892df400e96b9aa876f0141d7a" + +[[package]] +name = "web-sys" +version = "0.3.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77afa9a11836342370f4817622a2f0f418b134426d91a82dfb48f532d2ec13ef" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "webpki-roots" +version = "0.26.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3de34ae270483955a94f4b21bdaaeb83d508bb84a01435f393818edb0012009" +dependencies = [ + "rustls-pki-types", +] + +[[package]] +name = "wee_alloc" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbb3b5a6b2bb17cb6ad44a2e68a43e8d2722c997da10e928665c72ec6c0a0b8e" +dependencies = [ + "cfg-if 0.1.10", + "libc", + "memory_units", + "winapi", +] + +[[package]] +name = "which" +version = "4.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7" +dependencies = [ + "either", + "home", + "once_cell", + "rustix", +] + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d4cc384e1e73b93bafa6fb4f1df8c41695c8a91cf9c4c64358067d15a7b6c6b" +dependencies = [ + "windows-sys 0.52.0", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows-core" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" +dependencies = [ + "windows-targets 0.52.5", +] + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets 0.48.5", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.5", +] + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", +] + +[[package]] +name = "windows-targets" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb" +dependencies = [ + "windows_aarch64_gnullvm 0.52.5", + "windows_aarch64_msvc 0.52.5", + "windows_i686_gnu 0.52.5", + "windows_i686_gnullvm", + "windows_i686_msvc 0.52.5", + "windows_x86_64_gnu 0.52.5", + "windows_x86_64_gnullvm 0.52.5", + "windows_x86_64_msvc 0.52.5", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0" + +[[package]] +name = "winnow" +version = "0.5.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" +dependencies = [ + "memchr", +] + +[[package]] +name = "winreg" +version = "0.50.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" +dependencies = [ + "cfg-if 1.0.0", + "windows-sys 0.48.0", +] + +[[package]] +name = "wyz" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" +dependencies = [ + "tap", +] + +[[package]] +name = "xattr" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8da84f1a25939b27f6820d92aed108f83ff920fdf11a7b19366c27c4cda81d4f" +dependencies = [ + "libc", + "linux-raw-sys", + "rustix", +] + +[[package]] +name = "xml-rs" +version = "0.8.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "791978798f0597cfc70478424c2b4fdc2b7a8024aaff78497ef00f24ef674193" + +[[package]] +name = "zeroize" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "525b4ec142c6b68a2d10f01f7bbf6755599ca3f81ea53b8431b7dd348f5fdb2d" + +[[package]] +name = "zeropool-bn" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71e61de68ede9ffdd69c01664f65a178c5188b73f78faa21f0936016a888ff7c" +dependencies = [ + "byteorder", + "crunchy", + "lazy_static", + "rand 0.8.5", + "rustc-hex", +] + +[[package]] +name = "zip" +version = "0.5.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93ab48844d61251bb3835145c521d88aa4031d7139e8485990f60ca911fa0815" +dependencies = [ + "byteorder", + "crc32fast", + "flate2", + "thiserror", +] + +[[package]] +name = "zip" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "760394e246e4c28189f19d488c058bf16f564016aefac5d32bb1f3b51d5e9261" +dependencies = [ + "aes", + "byteorder", + "bzip2", + "constant_time_eq", + "crc32fast", + "crossbeam-utils", + "flate2", + "hmac", + "pbkdf2", + "sha1", + "time", + "zstd", +] + +[[package]] +name = "zstd" +version = "0.11.2+zstd.1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20cc960326ece64f010d2d2107537f26dc589a6573a316bd5b1dba685fa5fde4" +dependencies = [ + "zstd-safe", +] + +[[package]] +name = "zstd-safe" +version = "5.0.2+zstd.1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d2a5585e04f9eea4b2a3d1eca508c4dee9592a89ef6f450c11719da0726f4db" +dependencies = [ + "libc", + "zstd-sys", +] + +[[package]] +name = "zstd-sys" +version = "2.0.10+zstd.1.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c253a4914af5bafc8fa8c86ee400827e83cf6ec01195ec1f1ed8441bf00d65aa" +dependencies = [ + "cc", + "pkg-config", +] diff --git a/submissions/NFT Challenge Template/nft-challenge-main/Cargo.toml b/submissions/NFT Challenge Template/nft-challenge-main/Cargo.toml new file mode 100644 index 00000000..6be21607 --- /dev/null +++ b/submissions/NFT Challenge Template/nft-challenge-main/Cargo.toml @@ -0,0 +1,38 @@ +[package] +name = "nft-challenge" +description = "cargo-near-new-project-description" +version = "0.1.0" +edition = "2021" +# TODO: Fill out the repository field to help NEAR ecosystem tools to discover your project. +# NEP-0330 is automatically implemented for all contracts built with https://github.com/near/cargo-near. +# Link to the repository will be available via `contract_source_metadata` view-function. +#repository = "https://github.com/xxx/xxx" + +[lib] +crate-type = ["cdylib", "rlib"] + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html +[dependencies] +borsh = "1.5.0" +futures = "0.3.30" +near-sdk = "5.1.0" +serde = { version = "1", features = ["derive"] } +serde_json = { version = "1.0.91", features = ["arbitrary_precision"] } +tokio = "1.12.0" + + +[dev-dependencies] +near-sdk = { version = "5.1.0", features = ["unit-testing"] } +near-workspaces = { version = "0.10.0", features = ["unstable"] } +tokio = { version = "1.12.0", features = ["full"] } +serde_json = "1" + +[profile.release] +codegen-units = 1 +# Tell `rustc` to optimize for small code size. +opt-level = "z" +lto = true +debug = false +panic = "abort" +# Opt into extra safety checks on arithmetic operations https://stackoverflow.com/a/64136471/249801 +overflow-checks = true diff --git a/submissions/NFT Challenge Template/nft-challenge-main/README b/submissions/NFT Challenge Template/nft-challenge-main/README.md similarity index 99% rename from submissions/NFT Challenge Template/nft-challenge-main/README rename to submissions/NFT Challenge Template/nft-challenge-main/README.md index 3152fb70..9c0c1211 100644 --- a/submissions/NFT Challenge Template/nft-challenge-main/README +++ b/submissions/NFT Challenge Template/nft-challenge-main/README.md @@ -40,4 +40,3 @@ cargo near deploy - [NEAR Discord](https://near.chat) - [NEAR Telegram Developers Community Group](https://t.me/neardev) - NEAR DevHub: [Telegram](https://t.me/neardevhub), [Twitter](https://twitter.com/neardevhub) - diff --git a/submissions/NFT Challenge Template/nft-challenge-main/rust-toolchain.toml b/submissions/NFT Challenge Template/nft-challenge-main/rust-toolchain.toml new file mode 100644 index 00000000..a82ade34 --- /dev/null +++ b/submissions/NFT Challenge Template/nft-challenge-main/rust-toolchain.toml @@ -0,0 +1,4 @@ +[toolchain] +channel = "stable" +components = ["rustfmt"] +targets = ["wasm32-unknown-unknown"] diff --git a/submissions/NFT Challenge Template/nft-challenge-main/src/external.rs b/submissions/NFT Challenge Template/nft-challenge-main/src/external.rs new file mode 100644 index 00000000..f8b9d042 --- /dev/null +++ b/submissions/NFT Challenge Template/nft-challenge-main/src/external.rs @@ -0,0 +1,88 @@ +use near_sdk::{ + borsh::{self, BorshDeserialize, BorshSerialize}, + ext_contract, + json_types::Base64VecU8, + serde::{Deserialize, Serialize}, + AccountId, PromiseOrValue, +}; + +use std::collections::HashMap; + +// Mintbase's TokenMetadata structure. +#[derive(Clone, Debug, Deserialize, Serialize, BorshDeserialize, BorshSerialize)] +pub struct NFTTokenMetadata { + /// The Title for this token. ex. "Arch Nemesis: Mail Carrier" or "Parcel 5055" + pub title: Option, + /// Free-form description of this token. + pub description: Option, + /// URL to associated media, preferably to decentralized, content-addressed storage + pub media: Option, + /// Base64-encoded sha256 hash of content referenced by the `media` field. + /// Required if `media` is included. + pub media_hash: Option, + /// number of copies of this set of metadata in existence when token was minted. + pub copies: Option, + /// ISO 8601 datetime when token expires. + pub expires_at: Option, + /// ISO 8601 datetime when token starts being valid. + pub starts_at: Option, + /// When token was last updated, Unix epoch in milliseconds + pub extra: Option, + /// URL to an off-chain JSON file with more info. The Mintbase Indexer refers + /// to this field as `thing_id` or sometimes, `meta_id`. + pub reference: Option, + /// Base64-encoded sha256 hash of JSON from reference field. Required if + /// `reference` is included. + pub reference_hash: Option, +} + +/// https://github.com/near/NEPs/blob/master/specs/Standards/NonFungibleToken/Core.md +#[derive(Clone, Debug, Deserialize, Serialize)] +pub struct TokenCompliant { + pub token_id: String, +} + +pub type SplitBetweenUnparsed = HashMap; + +#[derive(Deserialize, Serialize)] +pub struct RoyaltyArgs { + pub split_between: SplitBetweenUnparsed, + pub percentage: u32, +} + +#[ext_contract(mintbase_nft)] +pub trait MintbaseNft { + fn check_is_minter(&self, account_id: near_sdk::AccountId) -> bool; + + fn nft_tokens_for_owner( + &self, + account_id: AccountId, + from_index: Option, + limit: Option, + ) -> Vec; + + fn nft_batch_mint( + &mut self, + owner_id: near_sdk::AccountId, + metadata: NFTTokenMetadata, + num_to_mint: u64, + royalty_args: Option, + split_owners: Option, + ) -> PromiseOrValue<()>; + + fn nft_batch_burn(&mut self, token_ids: Vec); + + fn nft_approval_id( + &self, + token_id: near_sdk::json_types::U64, + account_id: AccountId, + ) -> Option; + + fn nft_transfer( + &mut self, + receiver_id: AccountId, + token_id: near_sdk::json_types::U64, + approval_id: u64, + memo: Option, + ); +} diff --git a/submissions/NFT Challenge Template/nft-challenge-main/src/lib.rs b/submissions/NFT Challenge Template/nft-challenge-main/src/lib.rs new file mode 100644 index 00000000..aa14880b --- /dev/null +++ b/submissions/NFT Challenge Template/nft-challenge-main/src/lib.rs @@ -0,0 +1,709 @@ +use std::process::{ExitCode, Termination}; + +use near_sdk::{ + env, + json_types::U64, + log, near, + serde::{Deserialize, Serialize}, + store::{LookupMap, LookupSet, Vector}, + AccountId, Gas, NearToken, PanicOnDefault, Promise, PromiseResult, +}; +pub mod external; +pub use crate::external::*; + +impl Termination for Contract { + fn report(self) -> std::process::ExitCode { + ExitCode::SUCCESS + } +} +pub struct TransferTokenArgs { + token_id: U64, + approval_id: u64, + nft_id: String, +} + +#[derive(Clone, Debug, Deserialize, Serialize)] +pub struct ChallengeMetaData { + // The owner of this NFT Challenge + pub owner_id: String, + // The name for this challenge. + pub name: String, + // Free-form description of this challenge. + pub description: String, + // URL to associated media, preferably to decentralized, content-addressed storage + pub media_link: Option, + // The id of the reward NFT. + pub reward_nft_id: String, + // Metadata for the reward token NFT. Only necessary if we mint the nft. + pub reward_nft_metadata: NFTTokenMetadata, + // Ids of the challenge nfts that are part of this challenge. + pub challenge_nft_ids: Vec, + // Whether to burn the challenge piece at the associated index when claiming. + pub burn_challenge_piece_on_claim: Vec, + // The expiration date of this challenge, expressed as a nano second timestamp. + pub expiration_date_in_ns: u64, + // Maximum number of winners for this challenge. + pub winner_limit: u64, + // Number of winners for this challenge. + pub winners_count: u64, + // Whether the challenge is completed or not. + pub challenge_completed: bool, + // Whether the creator of this challenge can update the challenge status. + pub creator_can_update: bool, +} + +// Define the contract structure +#[near(contract_state)] +#[derive(PanicOnDefault)] +pub struct Contract { + // The owner of this NFT Challenge + owner_id: String, + // The creator of this NFT Challenge + creator_id: String, + // The name for this challenge. + name: String, + // Free-form description of this challenge. + description: String, + // URL to associated media, preferably to decentralized, content-addressed storage + media_link: String, + // The id of the reward NFT. + reward_nft_id: String, + // Metadata for the reward token NFT. Only necessary if we mint the nft. + reward_nft_metadata: NFTTokenMetadata, + // Ids of the challenge nfts that are part of this challenge. + challenge_nft_ids: Vector, + // Whether to burn the challenge piece at the associated index when claiming. + burn_challenge_piece_on_claim: Vector, + // The expiration date of this challenge, expressed as a nano second timestamp. + expiration_date_in_ns: u64, + // Maximum number of winners for this challenge. + winner_limit: u64, + // Current number of winners for this challenge. + winner_count: u64, + // The list of winners for this challenge. This is a map and not a set + // in case we want to let winners win multiple times. + winners: LookupMap, + // The number of potential winners left for this challenge, it includes + // accounts currently going through the claim process, to ensure we don't + // have more winners than the winner limit. + potential_winners_left: u64, + // Whether the challenge is completed or not. + challenge_completed: bool, + // Whether the creator of this challenge can update the challenge status. + creator_can_update: bool, +} + +// Implement the contract structure +#[near] +impl Contract { + #[init] + pub fn new( + owner_id: String, + name: String, + description: String, + media_link: String, + reward_nft_id: String, + _challenge_nft_ids: std::vec::Vec, + _burn_challenge_piece_on_claim: std::vec::Vec, + expiration_date_in_ns: u64, + winner_limit: u64, + creator_can_update: bool, + reward_nft_metadata: NFTTokenMetadata, + ) -> Self { + assert!( + env::is_valid_account_id(owner_id.as_bytes()), + "Owner's account ID is invalid", + ); + assert_eq!( + _challenge_nft_ids.len(), + _burn_challenge_piece_on_claim.len(), + "The challenge nft ids and burn challenge piece on claim must be the same length" + ); + assert!( + _challenge_nft_ids.len() > 0, + "Challenge must have at least 1 challenge NFT" + ); + let mut challenge_nft_ids_set = LookupSet::new(b"t"); + let mut challenge_nft_ids = Vector::new(b"a"); + let mut burn_challenge_piece_on_claim = Vector::new(b"c"); + for i in 0.._challenge_nft_ids.len() { + if challenge_nft_ids_set.contains(&_challenge_nft_ids[i]) { + panic!("Challenge NFT ids must be unique"); + } + challenge_nft_ids.push(_challenge_nft_ids[i].clone()); + challenge_nft_ids_set.insert(&_challenge_nft_ids[i]); + burn_challenge_piece_on_claim.push(_burn_challenge_piece_on_claim[i]); + } + + Self { + owner_id, + creator_id: env::predecessor_account_id().to_string(), + name, + description, + media_link, + reward_nft_id, + challenge_nft_ids, + burn_challenge_piece_on_claim, + expiration_date_in_ns, + winner_limit, + challenge_completed: false, + winner_count: 0, + potential_winners_left: winner_limit, + winners: LookupMap::new(b"z"), + reward_nft_metadata, + creator_can_update, + } + } + + // -------------------------- view methods --------------------------- + pub fn get_challenge_metadata(&self) -> ChallengeMetaData { + let mut challenge_list = Vec::new(); + let mut challenge_burn_list = Vec::new(); + for i in 0..self.challenge_nft_ids.len() { + challenge_list.push(self.challenge_nft_ids[i].clone()); + challenge_burn_list.push(self.burn_challenge_piece_on_claim[i]); + } + ChallengeMetaData { + owner_id: self.owner_id.clone(), + name: self.name.clone(), + description: self.description.clone(), + media_link: Some(self.media_link.clone()), + reward_nft_id: self.reward_nft_id.clone(), + challenge_nft_ids: challenge_list, + burn_challenge_piece_on_claim: challenge_burn_list, + expiration_date_in_ns: self.expiration_date_in_ns, + winner_limit: self.winner_limit, + challenge_completed: self.challenge_completed, + winners_count: self.winner_count, + reward_nft_metadata: self.reward_nft_metadata.clone(), + creator_can_update: self.creator_can_update, + } + } + + // Show the current owner of this NFT Challenge + pub fn get_owner_id(&self) -> String { + self.owner_id.clone() + } + + pub fn is_challenge_expired(&self) -> bool { + println!( + "Checking if challenge is expired {}", + env::block_timestamp(), + ); + env::block_timestamp() >= self.expiration_date_in_ns + } + + pub fn potential_winners_left(&self) -> u64 { + self.potential_winners_left + } + + pub fn is_account_winner(&self, account_id: AccountId) -> bool { + self.winners.contains_key(&account_id) + } + + pub fn is_challenge_complete(&self) -> bool { + self.challenge_completed + } + + // -------------------------- change methods --------------------------- + #[payable] + pub fn mint_nft(&mut self) -> Promise { + assert!( + self.is_account_winner(env::predecessor_account_id()), + "You must win the challenge to mint the NFT" + ); + assert!( + // Approximate minting fee for a single NFT. + env::attached_deposit().as_millinear() >= 54, + "To cover minting fees, you need to attach at least {} millinear to this transaction.", + 54 + ); + let promise = mintbase_nft::ext(self.reward_nft_id.parse().unwrap()) + .with_static_gas(Gas::from_tgas(5)) + .with_attached_deposit(NearToken::from_millinear(54)) + .nft_batch_mint( + env::predecessor_account_id(), + self.reward_nft_metadata.clone(), + 1, + None, + None, + ); + + return promise.then( + Self::ext(env::current_account_id()) + .with_static_gas(Gas::from_tgas(5)) + .mint_nft_callback(), + ); + } + + #[payable] + pub fn initiate_claim(&mut self) -> Promise { + // Need 2 YOCOTNEAR per challenge NFT to claim the challenge. + if env::attached_deposit().as_yoctonear() < (self.challenge_nft_ids.len() * 2).into() { + panic!( + "You must attach at least {} YOCTONEAR to claim the challenge", + self.challenge_nft_ids.len() + ); + } + + if self.potential_winners_left == 0 { + panic!("Challenge currently at max potential winners"); + } + + if self.winner_count >= self.winner_limit { + panic!("Challenge is not accepting any more winners"); + } + + if self.challenge_completed { + panic!("Challenge is over"); + } + + if self.ensure_challenge_not_expired() { + panic!("Challenge is expired"); + } + + if self.is_account_winner(env::predecessor_account_id()) { + panic!("You have already won this challenge"); + } + + // To ensure we don't have more winners than the winner limit. + self.decrement_winners(); + + let challenge_nft_ownership_promises: Vec = self + .challenge_nft_ids + .iter() + .map(|x| { + mintbase_nft::ext(x.parse().unwrap()) + .with_static_gas(Gas::from_tgas(5)) + .nft_tokens_for_owner(env::predecessor_account_id(), None, None) + }) + .collect(); + let compiled_promise = challenge_nft_ownership_promises + .into_iter() + .reduce(|a, b| a.and(b)); + + match compiled_promise { + Some(x) => x.then( + Self::ext(env::current_account_id()) + .with_static_gas(Gas::from_tgas(5)) + .on_claim( + env::predecessor_account_id(), + self.challenge_nft_ids.len().into(), + ), + ), + // Should never hit because we always have at least 1 challenge + None => panic!("Error in the challenge nft ownership promises"), + } + } + + #[private] + pub fn on_claim(&mut self, winner_id: AccountId, number_promises: u64) -> Promise { + let mut token_ids_to_burn: Vec = vec![]; + let res: Vec = (0..number_promises) + .map(|index| { + let result: PromiseResult = env::promise_result(index); + + match result { + PromiseResult::Failed => false, + PromiseResult::Successful(value) => { + if let Ok(message) = + near_sdk::serde_json::from_slice::>(&value) + { + if message.len() != 0 { + if self.burn_challenge_piece_on_claim[index as u32] { + token_ids_to_burn + .push(U64(message[0].token_id.parse().unwrap())); + } + true + } else { + false + } + } else { + false + } + } + } + }) + .collect(); + for i in 0..res.len() { + if res[i] == false { + self.increment_winners(); + log!( + "Account does not own any of the challenge nfts at index {}", + i + ); + return Promise::new(env::current_account_id()).as_return(); + } + } + if token_ids_to_burn.len() == 0 { + // Complete the claim process here since we have verified they + // own all challenge nfts and we do not need to burn any. + self.winner_count += 1; + self.winners.insert(winner_id, 1); + return Promise::new(env::current_account_id()).as_return(); + } + + self.have_approvals_for_transfers(winner_id, token_ids_to_burn) + } + + #[payable] + #[private] + pub fn have_approvals_for_transfers( + &mut self, + winner_id: AccountId, + token_ids: Vec, + ) -> Promise { + let mut is_approved_promises: Vec = vec![]; + for i in 0..self.burn_challenge_piece_on_claim.len() { + is_approved_promises.push( + mintbase_nft::ext( + self.challenge_nft_ids[i.try_into().unwrap()] + .parse() + .unwrap(), + ) + .with_static_gas(Gas::from_tgas(1)) + .nft_approval_id(token_ids[i as usize], env::current_account_id()), + ); + } + let compiled_promise = is_approved_promises.into_iter().reduce(|a, b| a.and(b)); + if compiled_promise.is_none() { + panic!("No nfts to check approval for. Should not have reached here."); + } else { + compiled_promise.unwrap().then( + Self::ext(env::current_account_id()) + .with_static_gas(Gas::from_tgas(token_ids.len() as u64 * 15)) + .on_approval_check(winner_id, token_ids), + ) + } + } + + #[payable] + #[private] + pub fn on_approval_check(&mut self, winner_id: AccountId, token_ids: Vec) -> Promise { + let approvals : Vec> = (0..token_ids.len()) + .map(|index| { + let result: PromiseResult = env::promise_result(index as u64); + match result { + PromiseResult::Failed => { + log!( + "You must grant transfer approval for the challenge NFT at index {} for us to burn it", + index + ); + None + }, + PromiseResult::Successful(value) => { + if let Ok(message) = + near_sdk::serde_json::from_slice::(&value) + { + Some(message) + } else { + log!("Unable to get approval id for NFT at {}",index); + None + } + } + } + }) + .collect(); + for i in 0..approvals.len() { + if approvals[i] == None { + self.increment_winners(); + return Promise::new(env::current_account_id()).as_return(); + } + } + // Transfer nfts to this contract so we can burn them + let mut transfer_promises: Vec = vec![]; + for i in 0..self.burn_challenge_piece_on_claim.len() { + transfer_promises.push( + mintbase_nft::ext( + self.challenge_nft_ids[i.try_into().unwrap()] + .parse() + .unwrap(), + ) + .with_static_gas(Gas::from_tgas(2)) + .with_attached_deposit(NearToken::from_yoctonear(1)) + .nft_transfer( + env::current_account_id(), + token_ids[i as usize], + approvals[i as usize].unwrap(), + None, + ), + ); + } + let compiled_promise = transfer_promises.into_iter().reduce(|a, b| a.and(b)); + if compiled_promise.is_none() { + panic!("No nfts to transfer. Should not have reached here."); + } else { + compiled_promise.unwrap().then( + Self::ext(env::current_account_id()) + .with_static_gas(Gas::from_tgas(token_ids.len() as u64 * 10)) + .burn_nfts(winner_id, token_ids, approvals), + ) + } + } + + #[payable] + #[private] + pub fn burn_nfts( + &mut self, + winner_id: AccountId, + token_ids: Vec, + approvals: Vec>, + ) -> Promise { + let mut challenge_nfts_to_burn: Vec = vec![]; + for i in 0..self.burn_challenge_piece_on_claim.len() { + if self.burn_challenge_piece_on_claim[i] { + challenge_nfts_to_burn.push(self.challenge_nft_ids[i.try_into().unwrap()].clone()); + } + } + + let mut unsuccessful_token_id_transfers: Vec = vec![]; + for i in 0..token_ids.len() { + let result: PromiseResult = env::promise_result(i as u64); + match result { + PromiseResult::Failed => { + log!( + "There was an error transferring the challenge NFT at index {}", + i + ); + unsuccessful_token_id_transfers.push(TransferTokenArgs { + token_id: token_ids[i].clone(), + approval_id: approvals[i as usize].unwrap(), + nft_id: challenge_nfts_to_burn[i].clone(), + }); + } + PromiseResult::Successful(_) => { + log!("NFT transferred successfully at index {}", i); + } + } + } + // Refund the transferred nfts, since we weren't able to + // transfer all challenge nfts that needed to be burned to this contract. + let mut transfer_refund: Vec = vec![]; + for i in 0..unsuccessful_token_id_transfers.len() { + transfer_refund.push( + mintbase_nft::ext( + unsuccessful_token_id_transfers[i as usize] + .nft_id + .parse() + .unwrap(), + ) + .with_static_gas(Gas::from_tgas(2)) + .with_attached_deposit(NearToken::from_yoctonear(1)) + .nft_transfer( + winner_id.clone(), + unsuccessful_token_id_transfers[i as usize].token_id, + unsuccessful_token_id_transfers[i as usize].approval_id, + None, + ), + ); + } + let transfer_refund_promise = transfer_refund.into_iter().reduce(|a, b| a.and(b)); + if transfer_refund_promise.is_some() { + log!("Refunding NFTs"); + self.increment_winners(); + return transfer_refund_promise.unwrap(); + } + let mut burn_promises: Vec = vec![]; + for i in 0..self.burn_challenge_piece_on_claim.len() { + burn_promises.push( + mintbase_nft::ext( + self.challenge_nft_ids[i.try_into().unwrap()] + .parse() + .unwrap(), + ) + .with_static_gas(Gas::from_tgas(2)) + .with_attached_deposit(NearToken::from_yoctonear(1)) + .nft_batch_burn(vec![token_ids[i as usize].clone()]), + ); + } + let burn_count = burn_promises.len() as u64; // Convert usize to u64 + let compiled_promise = burn_promises.into_iter().reduce(|a, b| a.and(b)); + if compiled_promise.is_none() { + panic!("No nfts to burn. Should not have reached here."); + } else { + compiled_promise.unwrap().then( + Self::ext(env::current_account_id()) + .with_static_gas(Gas::from_tgas(1)) + .on_burn_nfts(winner_id, burn_count), + ) + } + } + + #[private] + pub fn on_burn_nfts(&mut self, winner_id: AccountId, number_promises: u64) -> bool { + for index in 0..number_promises { + // env::promise_result(i) has the result of the i-th call + let result: PromiseResult = env::promise_result(index); + if result == PromiseResult::Failed {} + match result { + PromiseResult::Failed => { + log!( + "There was an error burning the challenge NFT at index {}", + index + ); + } + PromiseResult::Successful(_) => { + log!("NFT burned successfully at index {}", index); + } + } + } + // Even if burn failed we want to increment winners and mark them down + // as a winner, since the contract now owns all the challenge NFTs, and + // the user has none. This is to prevent them from claiming again, an + // unofficial burn. + self.winner_count += 1; + self.winners.insert(winner_id, 1); + true + } + + pub fn update_challenge_completion_status(&mut self, is_complete: bool) { + self.assert_challenge_owner(); + if self.creator_can_update { + self.challenge_completed = is_complete; + } else { + panic!("The creator cannot update the completion status of this challenge"); + } + } + + pub fn ensure_challenge_not_expired(&mut self) -> bool { + if env::block_timestamp() > self.expiration_date_in_ns { + self.challenge_completed = true; + } + self.challenge_completed + } + + // -------------------------- private methods --------------------------- + #[private] + pub fn mint_nft_callback( + &self, + #[callback_result] call_result: Result<(), near_sdk::PromiseError>, + ) { + if call_result.is_err() { + panic!("There was an error minting the NFT"); + } + } + + // -------------------------- internal methods --------------------------- + fn decrement_winners(&mut self) { + self.potential_winners_left -= 1; + } + + fn increment_winners(&mut self) { + self.potential_winners_left += 1; + } + + fn assert_challenge_owner(&self) { + assert!( + self.owner_id == env::predecessor_account_id(), + "This method can only be called by the challenge owner" + ); + } +} + +/* + * The rest of this file holds the inline tests for the code above + * Learn more about Rust tests: https://doc.rust-lang.org/book/ch11-01-writing-tests.html + */ +#[cfg(test)] +mod tests { + use std::str::FromStr; + + use super::*; + #[test] + #[should_panic] + fn default_nft_challenge() { + Contract::default(); + } + + #[test] + fn new() -> Contract { + Contract::new( + "owner_id".to_string(), + "name".to_string(), + "description".to_string(), + "media_link".to_string(), + "reward_nft".to_string(), + vec![ + "challenge_nft_id1".to_string(), + "challenge_nft_id2".to_string(), + ], + vec![true, false], + 1000000000000, + 1, + true, + NFTTokenMetadata { + title: None, + description: None, + media: None, + copies: None, + expires_at: None, + starts_at: None, + extra: None, + reference: None, + reference_hash: None, + media_hash: None, + }, + ) + } + + #[test] + fn get_challenge_metadata() { + let challenge = new(); + let metadata = challenge.get_challenge_metadata(); + assert_eq!(metadata.owner_id, "owner_id"); + assert_eq!(metadata.name, "name"); + assert_eq!(metadata.description, "description"); + assert_eq!(metadata.media_link.unwrap(), "media_link"); + assert_eq!(metadata.reward_nft_id, "reward_nft"); + assert_eq!(metadata.challenge_nft_ids[0], "challenge_nft_id1"); + assert_eq!(metadata.challenge_nft_ids[1], "challenge_nft_id2"); + assert_eq!(metadata.burn_challenge_piece_on_claim[0], true); + assert_eq!(metadata.burn_challenge_piece_on_claim[1], false); + assert_eq!(metadata.challenge_nft_ids.len(), 2); + assert_eq!(metadata.expiration_date_in_ns, 1000000000000); + assert_eq!(metadata.winner_limit, 1); + assert_eq!(metadata.challenge_completed, false); + assert_eq!(metadata.winners_count, 0); + } + + #[test] + fn get_owner_id() { + let challenge = new(); + assert_eq!(challenge.get_owner_id(), "owner_id"); + } + + #[test] + fn is_challenge_expired() { + let mut challenge = new(); + assert_eq!(challenge.is_challenge_expired(), false); + challenge.challenge_completed = true; + challenge.expiration_date_in_ns = 0; + assert_eq!(challenge.is_challenge_expired(), true); + } + + #[test] + fn potential_winners_left() { + let mut challenge = new(); + assert_eq!(challenge.potential_winners_left(), 1); + challenge.decrement_winners(); + assert_eq!(challenge.potential_winners_left(), 0); + challenge.increment_winners(); + assert_eq!(challenge.potential_winners_left(), 1); + } + + #[test] + fn is_account_winner() { + let mut challenge = new(); + assert_eq!( + challenge.is_account_winner(AccountId::from_str("account_id").unwrap()), + false + ); + challenge + .winners + .insert(AccountId::from_str("account_id").unwrap(), 1); + assert_eq!( + challenge.is_account_winner(AccountId::from_str("account_id").unwrap()), + true + ); + } +} diff --git a/submissions/NFT Challenge Template/nft-challenge-main/tests/mb-nft-v1/mb-nft-v1.wasm b/submissions/NFT Challenge Template/nft-challenge-main/tests/mb-nft-v1/mb-nft-v1.wasm new file mode 100755 index 0000000000000000000000000000000000000000..8594871c244c06dac9c973720bfc89b4584c9cee GIT binary patch literal 546345 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 P&ja=Wz697|4fX#3{`xH( literal 0 HcmV?d00001 diff --git a/submissions/NFT Challenge Template/nft-challenge-main/tests/tests.rs b/submissions/NFT Challenge Template/nft-challenge-main/tests/tests.rs new file mode 100644 index 00000000..75d40cf3 --- /dev/null +++ b/submissions/NFT Challenge Template/nft-challenge-main/tests/tests.rs @@ -0,0 +1,818 @@ +use near_sdk::{json_types::Base64VecU8, log}; +use near_sdk::{AccountId, Gas, NearToken}; +use near_workspaces::error::Error; +use near_workspaces::network::Sandbox; +use near_workspaces::result::ExecutionFinalResult; +use near_workspaces::{Contract, Worker}; +use nft_challenge::{ + ChallengeMetaData, NFTTokenMetadata, RoyaltyArgs, SplitBetweenUnparsed, TokenCompliant, +}; + +use serde_json::json; +use std::time::SystemTime; + +const SECONDS_IN_DAY: u64 = 86400; +const NS_IN_SECONDS: u64 = 1000000000; + +#[derive(Clone, Debug, serde::Deserialize, serde::Serialize)] +pub struct NFTContractMetadata { + /// a version like "nft-1.0.0" + pub spec: String, + /// Subaccount of this `Store`. `Factory` is the super-account. + pub name: String, + /// Symbol of the Store. Up to 6 chars. + pub symbol: String, + /// a small image associated with this `Store`. + pub icon: Option, + /// Centralized gateway known to have reliable access to decentralized storage + /// assets referenced by `reference` or `media` URLs + pub base_uri: Option, + /// URL to a JSON file with more info + pub reference: Option, + /// Base64-encoded sha256 hash of the JSON file pointed at by the reference + /// field. Required if `reference` is included. + pub reference_hash: Option, +} + +async fn create_challenge( + challenge_nft_ids: Vec, + burn_challenge_nft: Vec, + reward_nft_id: String, + winner_limit: u64, + owner_id: AccountId, + sandbox: &Worker, +) -> Result> { + let contract_wasm = near_workspaces::compile_project("./").await?; + + let contract = sandbox.dev_deploy(&contract_wasm).await?; + + let user_account = sandbox.dev_create_account().await?; + + let duration_since_epoch = SystemTime::now() + .duration_since(SystemTime::UNIX_EPOCH) + .unwrap(); + let timestamp_nanos = duration_since_epoch.as_nanos() as u64 + SECONDS_IN_DAY * NS_IN_SECONDS; + + let outcome = user_account + .call(contract.id(), "new") + .args_json(json!({ + "owner_id":owner_id.to_string(), + "name": "Test challenge".to_string(), + "description": "A description for a test chalenge", + "media_link": "A link to an image!", + "reward_nft_id": reward_nft_id, + "_challenge_nft_ids": challenge_nft_ids, + "_burn_challenge_piece_on_claim":burn_challenge_nft, + "expiration_date_in_ns": timestamp_nanos as u64, + "winner_limit": winner_limit, + "creator_can_update": true, + "reward_nft_metadata": NFTTokenMetadata{ + title: Some("Reward NFT".to_string()), + description: Some("A description for a reward NFT".to_string()), + media: Some("A link to an image!".to_string()), + media_hash: None, + copies: None, + expires_at: None, + starts_at: None, + extra: None, + reference: None, + reference_hash: None, + }, + })) + .max_gas() + .transact() + .await?; + log!( + "Failures after creating challenge: {:?}", + outcome.failures() + ); + + let metadata_call = contract.view("get_challenge_metadata").await?; + let metadata: ChallengeMetaData = metadata_call.json().unwrap(); + log!("Challenge Metadata: {:?}", metadata); + assert!(metadata.owner_id == owner_id.to_string()); + assert!(metadata.name == "Test challenge"); + assert!(metadata.description == "A description for a test chalenge"); + assert!(metadata.media_link == Some("A link to an image!".to_string())); + assert!(metadata.reward_nft_id == reward_nft_id); + assert!(metadata.challenge_nft_ids == challenge_nft_ids); + assert!(metadata.expiration_date_in_ns == timestamp_nanos as u64); + assert!(metadata.winner_limit == winner_limit); + assert!(metadata.reward_nft_metadata.title == Some("Reward NFT".to_string())); + assert!( + metadata.reward_nft_metadata.description + == Some("A description for a reward NFT".to_string()) + ); + assert!(metadata.reward_nft_metadata.media == Some("A link to an image!".to_string())); + assert!(metadata.creator_can_update); + + assert!(outcome.is_success()); + log!("Created challenge successfully!"); + Ok(contract) +} + +async fn create_nfts( + owner_id: AccountId, + nft_ids: Vec<&str>, + sandbox: &Worker, +) -> Result, Box> { + let mut deployed_contracts: Vec = Vec::new(); + let user_account = sandbox.dev_create_account().await?; + for el in nft_ids.iter() { + let contract_wasm = sandbox + .dev_deploy(include_bytes!("./mb-nft-v1/mb-nft-v1.wasm")) + .await?; + + let outcome = user_account + .call(contract_wasm.id(), "new") + .args_json(json!({ + "metadata":NFTContractMetadata { + spec: "nft-1.0.0".to_string(), + name: (*el).to_string(), + symbol: "CH0".to_string(), + icon: None, + base_uri: None, + reference: None, + reference_hash: None, + }, + "owner_id":owner_id, + })) + .max_gas() + .transact() + .await?; + assert!(outcome.is_success()); + deployed_contracts.push(contract_wasm); + } + log!("Deployed NFTs: {:?}", nft_ids); + Ok(deployed_contracts) +} + +#[tokio::test] +async fn test_complete_challenge_without_all_pieces() -> Result<(), Box> { + let sandbox = near_workspaces::sandbox().await?; + let user_account = sandbox.dev_create_account().await?; + // Don't need to make reward nft since we won't be successfully completing + // a challenge here. + let nft_ids = vec!["challenge-nft-1", "challenge-nft-2"]; + let nfts = create_nfts(user_account.id().clone(), nft_ids, &sandbox).await?; + let mut challenge_nft_ids: Vec = vec![]; + + for nft in nfts.iter() { + challenge_nft_ids.push(nft.id().to_string()); + } + + let challenge_contract = create_challenge( + challenge_nft_ids, + vec![false, false], + "reward-nft".to_string(), + 1, + user_account.id().clone(), + &sandbox, + ) + .await?; + + let outcome_with_none = user_account + .call(challenge_contract.id(), "initiate_claim") + .max_gas() + .deposit(NearToken::from_near(1)) + .transact() + .await?; + + log!("The original outcome: {:?}", outcome_with_none.logs()); + + assert!(outcome_with_none + .logs() + .last() + .unwrap() + .contains("Account does not own any of the challenge nfts at index 0")); + + // Try with some but not all pieces. + let mint_outcome = user_account + .call(nfts[0].id(), "nft_batch_mint") + .args_json(json!({ + "owner_id": user_account.id().clone(), + "metadata":NFTTokenMetadata { + title: Some("Challenge NFT 1".to_string()), + description: Some("A description for a challenge NFT".to_string()), + media: Some("A link to an image!".to_string()), + media_hash: None, + copies: None, + expires_at: None, + starts_at: None, + extra: None, + reference: None, + reference_hash: None, + }, + "num_to_mint": 1, + "royalty_args": None::, + "split_owners": None::, + })) + .deposit(NearToken::from_near(1)) + .max_gas() + .transact() + .await?; + assert!(mint_outcome.is_success()); + + let outcome_with_some_challenge_pieces = user_account + .call(challenge_contract.id(), "initiate_claim") + .max_gas() + .deposit(NearToken::from_near(1)) + .transact() + .await?; + assert!(outcome_with_some_challenge_pieces + .logs() + .last() + .unwrap() + .contains("Account does not own any of the challenge nfts at index 1")); + Ok(()) +} + +#[tokio::test] +async fn test_complete_challenge_with_max_potential_winners( +) -> Result<(), Box> { + let sandbox = near_workspaces::sandbox().await?; + let user_account0 = sandbox.dev_create_account().await?; + let user_account1 = sandbox.dev_create_account().await?; + let nft_ids = vec!["challenge-nft-1", "reward-nft"]; + let mut nfts = create_nfts(user_account0.id().clone(), nft_ids, &sandbox).await?; + let mut challenge_nft_ids: Vec = vec![]; + let reward_nft_id = nfts.pop().unwrap().id().to_string(); + for nft in nfts.iter() { + challenge_nft_ids.push(nft.id().to_string()); + } + + let challenge_contract = create_challenge( + challenge_nft_ids, + vec![false], + reward_nft_id, + 1, + user_account0.id().clone(), + &sandbox, + ) + .await?; + + let metadata_call = challenge_contract.view("get_challenge_metadata").await?; + let metadata: ChallengeMetaData = metadata_call.json().unwrap(); + + // Mint challenge nfts. + let mint_outcome = user_account0 + .call(nfts[0].id(), "nft_batch_mint") + .args_json(json!({ + "owner_id": user_account0.id().clone(), + "metadata":metadata.reward_nft_metadata, + "num_to_mint": 1, + "royalty_args": None::, + "split_owners": None::, + })) + .deposit(NearToken::from_near(1)) + .max_gas() + .transact() + .await?; + + assert!(mint_outcome.is_success()); + + let mint_outcome = user_account0 + .call(nfts[0].id(), "nft_batch_mint") + .args_json(json!({ + "owner_id": user_account1.id().clone(), + "metadata":metadata.reward_nft_metadata, + "num_to_mint": 1, + "royalty_args": None::, + "split_owners": None::, + })) + .deposit(NearToken::from_near(1)) + .max_gas() + .transact() + .await?; + + assert!(mint_outcome.is_success()); + + let promise_for_account0 = user_account0 + .call(challenge_contract.id(), "initiate_claim") + .max_gas() + .deposit(NearToken::from_near(1)) + .transact(); + + let promise_for_account1 = user_account1 + .call(challenge_contract.id(), "initiate_claim") + .max_gas() + .deposit(NearToken::from_near(1)) + .transact(); + + // Create a race condition to ensure only one account wins. + let joint_promise: ( + Result, + Result, + ) = futures::join!(promise_for_account0, promise_for_account1); + let (outcome_for_account0, outcome_for_account1) = + (joint_promise.0.unwrap(), joint_promise.1.unwrap()); + + log!( + " Outcome for account 0: {:?}", + outcome_for_account0.failures() + ); + log!("Logs for account 0: {:?}", outcome_for_account0.logs()); + + log!( + " Outcome for account 1: {:?}", + outcome_for_account1.failures() + ); + log!("Logs for account 1: {:?}", outcome_for_account1.logs()); + + assert!(outcome_for_account0.is_success() || outcome_for_account1.is_success()); + assert!(!(outcome_for_account0.is_success() && outcome_for_account1.is_success())); + + let (winner_account, loser_account) = if outcome_for_account0.is_success() { + (user_account0, user_account1) + } else { + (user_account1, user_account0) + }; + + let winner_status_call = challenge_contract + .view("is_account_winner") + .args_json(json!({ + "account_id": winner_account.id() + })) + .await?; + let winner_status: bool = winner_status_call.json().unwrap(); + + assert!(winner_status); + + let winner_status_call = challenge_contract + .view("is_account_winner") + .args_json(json!({ + "account_id": loser_account.id() + })) + .await?; + + let winner_status: bool = winner_status_call.json().unwrap(); + assert!(!winner_status); + + let outcome_for_loser = loser_account + .call(challenge_contract.id(), "initiate_claim") + .max_gas() + .deposit(NearToken::from_near(1)) + .transact() + .await?; + + // Since challenge at max winners + assert!(outcome_for_loser.is_failure()); + + Ok(()) +} + +#[tokio::test] +async fn test_complete_challenge_already_complete() -> Result<(), Box> { + let sandbox = near_workspaces::sandbox().await?; + let user_account0 = sandbox.dev_create_account().await?; + let user_account1 = sandbox.dev_create_account().await?; + let nft_ids = vec!["challenge-nft-1", "reward-nft"]; + let mut nfts = create_nfts(user_account0.id().clone(), nft_ids, &sandbox).await?; + let mut challenge_nft_ids: Vec = vec![]; + let reward_nft_id = nfts.pop().unwrap().id().to_string(); + log!("NFTs: {:?}", challenge_nft_ids); + for nft in nfts.iter() { + challenge_nft_ids.push(nft.id().to_string()); + } + + let challenge_contract = create_challenge( + challenge_nft_ids, + vec![false], + reward_nft_id, + 2, + user_account0.id().clone(), + &sandbox, + ) + .await?; + + let metadata_call = challenge_contract.view("get_challenge_metadata").await?; + let metadata: ChallengeMetaData = metadata_call.json().unwrap(); + + let mint_outcome = user_account0 + .call(nfts[0].id(), "nft_batch_mint") + .args_json(json!({ + "owner_id": user_account0.id().clone(), + "metadata":metadata.reward_nft_metadata, + "num_to_mint": 1, + "royalty_args": None::, + "split_owners": None::, + })) + .deposit(NearToken::from_near(1)) + .max_gas() + .transact() + .await?; + + assert!(mint_outcome.is_success()); + + let mint_outcome = user_account0 + .call(nfts[0].id(), "nft_batch_mint") + .args_json(json!({ + "owner_id": user_account1.id().clone(), + "metadata":metadata.reward_nft_metadata, + "num_to_mint": 1, + "royalty_args": None::, + "split_owners": None::, + })) + .deposit(NearToken::from_near(1)) + .max_gas() + .transact() + .await?; + + assert!(mint_outcome.is_success()); + + let outcome_for_account0 = user_account0 + .call(challenge_contract.id(), "initiate_claim") + .max_gas() + .deposit(NearToken::from_near(1)) + .transact() + .await?; + + assert!(outcome_for_account0.is_success()); + + let account_0_winner_status_call = challenge_contract + .view("is_account_winner") + .args_json(json!({ + "account_id": user_account0.id() + })) + .await?; + let account_0_winner_status: bool = account_0_winner_status_call.json().unwrap(); + + assert!(account_0_winner_status); + + let outcome_for_account0_again = user_account0 + .call(challenge_contract.id(), "initiate_claim") + .max_gas() + .deposit(NearToken::from_near(1)) + .transact() + .await?; + + assert!(outcome_for_account0_again.is_failure()); + + let end_challenge_outcome = user_account0 + .call( + challenge_contract.id(), + "update_challenge_completion_status", + ) + .args_json(json!({ + "is_complete":true + })) + .max_gas() + .transact() + .await?; + + assert!(end_challenge_outcome.is_success()); + + let outcome_for_account1 = user_account1 + .call(challenge_contract.id(), "initiate_claim") + .max_gas() + .deposit(NearToken::from_near(1)) + .transact() + .await?; + assert!(outcome_for_account1.is_failure()); + Ok(()) +} + +#[tokio::test] +async fn test_end_challenge() -> Result<(), Box> { + let sandbox = near_workspaces::sandbox().await?; + let user_account0 = sandbox.dev_create_account().await?; + let user_account1 = sandbox.dev_create_account().await?; + + let challenge_contract = create_challenge( + vec!["challenge-nft-1".to_string()], + vec![false], + "reward-nft".to_string(), + 1, + user_account0.id().clone(), + &sandbox, + ) + .await?; + + let is_challenge_complete = challenge_contract.view("is_challenge_complete").await?; + let is_complete: bool = is_challenge_complete.json().unwrap(); + assert!(!is_complete); + + let end_challenge_outcome = user_account1 + .call( + challenge_contract.id(), + "update_challenge_completion_status", + ) + .args_json(json!({ + "is_complete":true + })) + .max_gas() + .transact() + .await?; + assert!(end_challenge_outcome.is_failure()); + + let end_challenge_outcome = user_account0 + .call( + challenge_contract.id(), + "update_challenge_completion_status", + ) + .args_json(json!({ + "is_complete":true + })) + .max_gas() + .transact() + .await?; + assert!(end_challenge_outcome.is_success()); + let is_complete_outcome = challenge_contract.view("is_challenge_complete").await?; + assert!(is_complete_outcome.json::().unwrap()); + Ok(()) +} + +#[tokio::test] +async fn test_mint_nft() -> Result<(), Box> { + let sandbox = near_workspaces::sandbox().await?; + let user_account0 = sandbox.dev_create_account().await?; + let nft_ids = vec!["challenge-nft-1", "reward-nft"]; + let mut nfts = create_nfts(user_account0.id().clone(), nft_ids, &sandbox).await?; + let mut challenge_nft_ids: Vec = vec![]; + let reward_nft = nfts.pop().unwrap(); + + for nft in nfts.iter() { + challenge_nft_ids.push(nft.id().to_string()); + } + + let challenge_contract = create_challenge( + challenge_nft_ids, + vec![false], + reward_nft.id().to_string(), + 1, + user_account0.id().clone(), + &sandbox, + ) + .await?; + + let metadata_call = challenge_contract.view("get_challenge_metadata").await?; + let metadata: ChallengeMetaData = metadata_call.json().unwrap(); + + let mint_outcome = user_account0 + .call(nfts[0].id(), "nft_batch_mint") + .args_json(json!({ + "owner_id": user_account0.id().clone(), + "metadata":metadata.reward_nft_metadata, + "num_to_mint": 1, + "royalty_args": None::, + "split_owners": None::, + })) + .deposit(NearToken::from_near(1)) + .max_gas() + .transact() + .await?; + + assert!(mint_outcome.is_success()); + + let outcome_for_account0 = user_account0 + .call(challenge_contract.id(), "initiate_claim") + .max_gas() + .deposit(NearToken::from_near(1)) + .transact() + .await?; + + assert!(outcome_for_account0.is_success()); + + let account_0_status_call = challenge_contract + .view("is_account_winner") + .args_json(json!({ + "account_id": user_account0.id() + })) + .await?; + let account_0_status: bool = account_0_status_call.json().unwrap(); + + assert!(account_0_status); + + let change_minters_outcome = user_account0 + .call(reward_nft.id(), "batch_change_minters") + .args_json(json!({ + "grant": vec![challenge_contract.id()], + "revoke":None::>, + })) + .deposit(NearToken::from_yoctonear(1)) + .max_gas() + .transact() + .await?; + + assert!(change_minters_outcome.is_success()); + + let outcome_for_challenge_mint = user_account0 + .call(challenge_contract.id(), "mint_nft") + .deposit(NearToken::from_near(1)) + .max_gas() + .transact() + .await?; + assert!(outcome_for_challenge_mint.is_success()); + + let outcome_for_nfts_owned_by_user = user_account0 + .call(reward_nft.id(), "nft_tokens_for_owner") + .args_json(json!({ + "account_id": user_account0.id().clone(), + })) + .max_gas() + .transact() + .await?; + + assert!(outcome_for_nfts_owned_by_user.is_success()); + assert!( + outcome_for_nfts_owned_by_user + .json::>() + .unwrap() + .len() + == 1 + ); + + Ok(()) +} + +#[tokio::test] +async fn test_burn_nfts() -> Result<(), Box> { + let sandbox = near_workspaces::sandbox().await?; + let user_account0 = sandbox.dev_create_account().await?; + let nft_ids = vec!["challenge-nft-1", "challenge-nft-2", "reward-nft"]; + let mut nfts = create_nfts(user_account0.id().clone(), nft_ids, &sandbox).await?; + let mut challenge_nft_ids: Vec = vec![]; + let reward_nft = nfts.pop().unwrap(); + + for nft in nfts.iter() { + challenge_nft_ids.push(nft.id().to_string()); + } + + let challenge_contract = create_challenge( + challenge_nft_ids, + vec![true, true], + reward_nft.id().to_string(), + 1, + user_account0.id().clone(), + &sandbox, + ) + .await?; + + let metadata_call = challenge_contract.view("get_challenge_metadata").await?; + let metadata: ChallengeMetaData = metadata_call.json().unwrap(); + + let mut mint_outcome = user_account0 + .call(nfts[0].id(), "nft_batch_mint") + .args_json(json!({ + "owner_id": user_account0.id().clone(), + "metadata":metadata.reward_nft_metadata, + "num_to_mint": 1, + "royalty_args": None::, + "split_owners": None::, + })) + .deposit(NearToken::from_near(1)) + .max_gas() + .transact() + .await?; + + assert!(mint_outcome.is_success()); + + mint_outcome = user_account0 + .call(nfts[1].id(), "nft_batch_mint") + .args_json(json!({ + "owner_id": user_account0.id().clone(), + "metadata":metadata.reward_nft_metadata, + "num_to_mint": 1, + "royalty_args": None::, + "split_owners": None::, + })) + .deposit(NearToken::from_near(1)) + .max_gas() + .transact() + .await?; + + assert!(mint_outcome.is_success()); + + let outcome_for_nfts_owned_by_user = user_account0 + .call(nfts[0].id(), "nft_tokens_for_owner") + .args_json(json!({ + "account_id": user_account0.id().clone(), + })) + .max_gas() + .transact() + .await?; + + assert!(outcome_for_nfts_owned_by_user.is_success()); + + let mut token_id = outcome_for_nfts_owned_by_user + .json::>() + .unwrap()[0] + .token_id + .clone(); + + let mut give_approval_outcome = user_account0 + .call(nfts[0].id(), "nft_approve") + .args_json(json!({ + "token_id": token_id.clone(), + "account_id":challenge_contract.id(), + })) + .deposit(NearToken::from_millinear(8)) + .max_gas() + .transact() + .await?; + + assert!(give_approval_outcome.is_success()); + + let mut outcome_for_account0 = user_account0 + .call(challenge_contract.id(), "initiate_claim") + .max_gas() + .deposit(NearToken::from_yoctonear(4)) + .transact() + .await?; + + assert!(outcome_for_account0.is_success()); + + let mut account_0_status_call = challenge_contract + .view("is_account_winner") + .args_json(json!({ + "account_id": user_account0.id() + })) + .await?; + let mut account_0_status: bool = account_0_status_call.json().unwrap(); + // Should not be a winner since second challenge piece was not approved for + // transfer. + assert!(!account_0_status); + + let mut outcome_owning_challenge_pieces = user_account0 + .call(nfts[0].id(), "nft_tokens_for_owner") + .args_json(json!({ + "account_id": user_account0.id().clone(), + })) + .max_gas() + .transact() + .await?; + + assert!(outcome_owning_challenge_pieces.is_success()); + + outcome_owning_challenge_pieces = user_account0 + .call(nfts[1].id(), "nft_tokens_for_owner") + .args_json(json!({ + "account_id": user_account0.id().clone(), + })) + .max_gas() + .transact() + .await?; + + assert!(outcome_owning_challenge_pieces.is_success()); + + token_id = outcome_owning_challenge_pieces + .json::>() + .unwrap()[0] + .token_id + .clone(); + + give_approval_outcome = user_account0 + .call(nfts[1].id(), "nft_approve") + .args_json(json!({ + "token_id": token_id.clone(), + "account_id":challenge_contract.id(), + })) + .deposit(NearToken::from_millinear(8)) + .max_gas() + .transact() + .await?; + + assert!(give_approval_outcome.is_success()); + + outcome_for_account0 = user_account0 + .call(challenge_contract.id(), "initiate_claim") + .gas(Gas::from_tgas(300)) + .deposit(NearToken::from_yoctonear(4)) + .transact() + .await?; + + assert!(outcome_for_account0.is_success()); + + account_0_status_call = challenge_contract + .view("is_account_winner") + .args_json(json!({ + "account_id": user_account0.id() + })) + .await?; + account_0_status = account_0_status_call.json().unwrap(); + + assert!(account_0_status); + + outcome_owning_challenge_pieces = user_account0 + .call(nfts[0].id(), "nft_tokens_for_owner") + .args_json(json!({ + "account_id": user_account0.id().clone(), + })) + .max_gas() + .transact() + .await?; + + assert!(!outcome_owning_challenge_pieces.is_success()); + + outcome_owning_challenge_pieces = user_account0 + .call(nfts[1].id(), "nft_tokens_for_owner") + .args_json(json!({ + "account_id": user_account0.id().clone(), + })) + .max_gas() + .transact() + .await?; + + assert!(!outcome_owning_challenge_pieces.is_success()); + Ok(()) +} diff --git a/submissions/NFT Challenge Template/nft-challenge-template-fe/README b/submissions/NFT Challenge Template/nft-challenge-template-fe/README.md similarity index 100% rename from submissions/NFT Challenge Template/nft-challenge-template-fe/README rename to submissions/NFT Challenge Template/nft-challenge-template-fe/README.md diff --git a/submissions/NFT Challenge Template/nft-challenge-template-fe/app/actions.ts b/submissions/NFT Challenge Template/nft-challenge-template-fe/app/actions.ts new file mode 100644 index 00000000..cb6395d0 --- /dev/null +++ b/submissions/NFT Challenge Template/nft-challenge-template-fe/app/actions.ts @@ -0,0 +1,48 @@ +"use server"; + +import { MongoClient, ServerApiVersion } from "mongodb"; + +export async function create(account_id: String) { + try { + const uri = + "mongodb+srv://shakiran:uEc1J7Zx8plaiHdT@scavenger-hunt.mpwg8ad.mongodb.net/?retryWrites=true&w=majority&appName=scavenger-hunt"; + const options = { + serverApi: { + version: ServerApiVersion.v1, + strict: true, + deprecationErrors: true, + }, + }; + const client = await new MongoClient(uri, options).connect(); + const db = client.db("scavenger-hunt"); + const movies = await db.collection("winners").insertOne({ + account_id: account_id, + timeCreated: new Date().toString(), + }); + } catch (e) { + console.error(e); + } +} + +export async function getNumOfWinners() { + const uri = + "mongodb+srv://shakiran:uEc1J7Zx8plaiHdT@scavenger-hunt.mpwg8ad.mongodb.net/?retryWrites=true&w=majority&appName=scavenger-hunt"; + + const client = await new MongoClient(uri).connect(); + const db = client.db("scavenger-hunt"); + const count = await db.collection("winners").countDocuments(); + return count; +} + +export async function checkIfAccountIsWinner(account_id: String) { + const uri = + "mongodb+srv://shakiran:uEc1J7Zx8plaiHdT@scavenger-hunt.mpwg8ad.mongodb.net/?retryWrites=true&w=majority&appName=scavenger-hunt"; + + const client = await new MongoClient(uri).connect(); + const db = client.db("scavenger-hunt"); + const res = await db.collection("winners").findOne({ + account_id, + }); + + return res != null; +} diff --git a/submissions/NFT Challenge Template/nft-challenge-template-fe/app/challenges/[idPrefix]/page.tsx b/submissions/NFT Challenge Template/nft-challenge-template-fe/app/challenges/[idPrefix]/page.tsx new file mode 100644 index 00000000..49e29ae7 --- /dev/null +++ b/submissions/NFT Challenge Template/nft-challenge-template-fe/app/challenges/[idPrefix]/page.tsx @@ -0,0 +1,359 @@ +/** + * This code was generated by v0 by Vercel. + * @see https://v0.dev/t/N2cpRVYyb5X + * Documentation: https://v0.dev/docs#integrating-generated-code-into-your-nextjs-app + */ + +/** Add fonts into your Next.js project: + +import { Libre_Franklin } from 'next/font/google' + +libre_franklin({ + subsets: ['latin'], + display: 'swap', +}) + +To read more about using these font, please visit the Next.js documentation: +- App Directory: https://nextjs.org/docs/app/building-your-application/optimizing/fonts +- Pages Directory: https://nextjs.org/docs/pages/building-your-application/optimizing/fonts +**/ +"use client"; +import { useContext, useEffect, useState } from "react"; + +import { useParams, useSearchParams } from "next/navigation"; +import { Wallet, useMbWallet } from "@mintbase-js/react"; +import { NFTChallengeMetaData, NFTContract, RawNFTChallengeMetaData } from "@/types/nft"; +import { Account, Contract, Near, connect } from "near-api-js"; + +import { Badge } from "@/components/ui/badge"; +import { Button } from "../../../components/ui/button"; +import { NftContracts } from "@mintbase-js/data/lib/graphql/codegen/graphql"; +import { fetchNftContract, fetchNftContracts } from "@/toolkit/graphql"; + +import { SignMessageMethod } from "@near-wallet-selector/core/src/lib/wallet"; +import { NearWalletConnector } from "@/components/NearWalletSelector"; +import { MAX_INT } from "@/components/ChallengeCreator"; + +import { NetworkContext } from "@/toolkit/blockchain"; +import NFTCarousel from "@/components/carousel"; +import { Web3Toggle } from "@/components/Web3Toggle"; + +export default function NFTChallenge() { + const [challengeMetaData, setChallengeMetaData] = useState(); + const [rewardNftMetaData, setRewardNftMetaData] = useState(); + const [challengeNfts, setChallengeNfts] = useState>([]); + const [challengeNftsOwned, setChallengeNftsOwned] = useState>([]); + const [isWinner, setIsWinner] = useState(false); + const [loading, setLoading] = useState(false); + + const { isConnected, selector } = useMbWallet(); + const { network, challengeFactoryContractId, ...connectionConfig } = useContext(NetworkContext)!; + + const params = useParams<{ idPrefix: string }>()!; + const errorCode = useSearchParams()!.get("errorCode"); + const txHashes = useSearchParams()!.get("txHashes"); + + useEffect(() => { + (async () => { + const nearConnection = await connect(connectionConfig); + if (params.idPrefix) { + const contract = new Contract(nearConnection.connection, `${params.idPrefix}.${challengeFactoryContractId}`, { + viewMethods: ["get_challenge_metadata"], + changeMethods: [], + useLocalViewExecution: true, + }) as Contract & { + get_challenge_metadata: () => Promise; + }; + + const response = await contract.get_challenge_metadata(); + setChallengeMetaData({ + ...response, + // convert to milliseconds, consider using bignumber package + expirationDateInMs: + response.expiration_date_in_ns.toString() === MAX_INT ? null : response.expiration_date_in_ns / 1000000, + winnerLimit: response.winner_limit.toString() === MAX_INT ? null : response.winner_limit, + winnerCount: response.winners_count, + challengeNftIds: response.challenge_nft_ids, + challengeCompleted: response.challenge_completed, + rewardNftId: response.reward_nft_id, + mediaLink: response.media_link, + ownerId: response.owner_id, + }); + } + })(); + }, []); + + useEffect(() => { + (async () => { + if (challengeMetaData) { + let wallet: Wallet & SignMessageMethod; + let accounts: Account[]; + let nearConnection: Near; + if (isConnected) { + nearConnection = await connect(connectionConfig); + wallet = await selector.wallet(); + accounts = (await wallet.getAccounts()) as Account[]; + } + + const [rewardNft, challengeNfts, challengeNftsOwned] = await Promise.all([ + fetchNftContract(challengeMetaData.rewardNftId, network), + fetchNftContracts(challengeMetaData.challengeNftIds, network), + + Promise.all( + challengeMetaData.challengeNftIds.map(async (nft) => { + if (!isConnected) return []; + try { + const contract = new Contract(nearConnection.connection, `${nft}`, { + viewMethods: ["nft_tokens_for_owner"], + changeMethods: [], + useLocalViewExecution: true, + }) as Contract & { + // wrong return type, but we're just checking for existence right now + nft_tokens_for_owner: (args: { account_id: string }) => Promise; + }; + + const tokens = await contract.nft_tokens_for_owner({ + account_id: accounts[0].accountId, + }); + return tokens; + } catch (e) { + return []; + } + }) + ), + ]); + setRewardNftMetaData(rewardNft); + let modifiedchallengeNftIds = challengeNfts.map((nft, idx) => ({ + ...nft, + owned: challengeNftsOwned[idx].length > 0, + })); + + setChallengeNfts(modifiedchallengeNftIds); + setChallengeNftsOwned(challengeNftsOwned.flat()); + } + })(); + }, [challengeMetaData, isConnected, network, selector, connectionConfig]); + + useEffect(() => { + (async () => { + if (isConnected) { + setLoading(true); + const wallet = await selector.wallet(); + + const accounts = await wallet.getAccounts(); + + const nearConnection = await connect(connectionConfig); + const contract = new Contract(nearConnection.connection, `${params.idPrefix}.${challengeFactoryContractId}`, { + viewMethods: ["is_account_winner"], + changeMethods: [], + useLocalViewExecution: true, + }) as Contract & { + is_account_winner: (args: { account_id: string }) => Promise; + }; + const isWinner = await contract.is_account_winner({ account_id: accounts[0].accountId }); + setIsWinner(isWinner); + setLoading(false); + // fetch the user's NFTs + } else { + setIsWinner(false); + // show a message to connect wallet + } + })(); + }, [isConnected]); + + const submitEntry = async () => { + const wallet = await selector.wallet(); + + if (!isConnected) return; + + await wallet.signAndSendTransaction({ + receiverId: `${params.idPrefix}.${challengeFactoryContractId}`, + actions: [ + { + type: "FunctionCall", + params: { + methodName: "initiate_claim", + args: {}, + gas: "30000000000000", + deposit: (challengeNfts.length * 2).toString(), + }, + }, + ], + callbackUrl: `${window.location.origin}/challenges/${params.idPrefix}`, + }); + }; + + if (!challengeMetaData) return

; + + return ( + <> +
+ +
+
+
+
+ +

+ {challengeMetaData.name} Challenge +

+
+ +

+ {challengeMetaData.description} +

+
+
+ {isConnected ? ( +
+ + {challengeNftsOwned.length < challengeMetaData.challengeNftIds.length && ( +

Warning: You don't own all challenge nfts yet!

+ )} +
+ ) : ( +
+

+ Connect your wallet to submit an entry! +

+ + +
+ )} +
+ {isWinner ? ( +
+

+ Congrats, you've completed this challenge! +

+
+ ) : ( +

+ Make sure you have all challenge pieces before submitting your entry! +

+ )} + {errorCode && ( +
+

+ Unfortunately your entry wasn't accepted. + {txHashes && ( +

+ , you can view the transaction{" "} + + here + +

+ )} + Make sure the challenge isn't completed and you have all the pieces. +

+
+ )} +
+ {`${challengeMetaData.name} +
+
+
+
+
+
+
+

Challenge Details

+
+
+

Termination Date

+

+ {challengeMetaData.expirationDateInMs + ? new Date(challengeMetaData.expirationDateInMs).toLocaleString() + : "Never ends"} +

+
+
+

Challenge Pieces

+

{challengeMetaData.challengeNftIds.length}

+
+
+

Winners

+

{challengeMetaData.winnerCount}

+
+
+

Max winners

+

+ {challengeMetaData.winnerLimit ? challengeMetaData.winnerLimit : "Unlimited Winners"} +

+
+ +
+

Challenge Status

+ {challengeMetaData.challengeCompleted ? ( + Completed + ) : ( + Ongoing + )} +
+
+
+ + {rewardNftMetaData && ( +
+

About the Reward

+
+
+ {`${rewardNftMetaData.name} +
+

{rewardNftMetaData.name}

+

The reward for the challenge

+
+
+
+
+ )} +
+
+

Challenge fragments

+ +
+
+
+ + ); +} diff --git a/submissions/NFT Challenge Template/nft-challenge-template-fe/app/create-challenge/page.tsx b/submissions/NFT Challenge Template/nft-challenge-template-fe/app/create-challenge/page.tsx new file mode 100644 index 00000000..7f65a80b --- /dev/null +++ b/submissions/NFT Challenge Template/nft-challenge-template-fe/app/create-challenge/page.tsx @@ -0,0 +1,15 @@ +"use client"; +import ChallengeCreator from "@/components/ChallengeCreator"; +import { Web3Toggle } from "@/components/Web3Toggle"; + +export default function Home() { + return ( +
+
+ +

Create Your NFT Challenge

+ +
+
+ ); +} diff --git a/submissions/NFT Challenge Template/nft-challenge-template-fe/app/favicon.ico b/submissions/NFT Challenge Template/nft-challenge-template-fe/app/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..718d6fea4835ec2d246af9800eddb7ffb276240c GIT binary patch literal 25931 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 LrJugUA?W`A8`#=m literal 0 HcmV?d00001 diff --git a/submissions/NFT Challenge Template/nft-challenge-template-fe/app/globals.css b/submissions/NFT Challenge Template/nft-challenge-template-fe/app/globals.css new file mode 100644 index 00000000..875c01e8 --- /dev/null +++ b/submissions/NFT Challenge Template/nft-challenge-template-fe/app/globals.css @@ -0,0 +1,33 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; + +:root { + --foreground-rgb: 0, 0, 0; + --background-start-rgb: 214, 219, 220; + --background-end-rgb: 255, 255, 255; +} + +@media (prefers-color-scheme: dark) { + :root { + --foreground-rgb: 255, 255, 255; + --background-start-rgb: 0, 0, 0; + --background-end-rgb: 0, 0, 0; + } +} + +body { + color: rgb(var(--foreground-rgb)); + background: linear-gradient( + to bottom, + transparent, + rgb(var(--background-end-rgb)) + ) + rgb(var(--background-start-rgb)); +} + +@layer utilities { + .text-balance { + text-wrap: balance; + } +} diff --git a/submissions/NFT Challenge Template/nft-challenge-template-fe/app/layout.tsx b/submissions/NFT Challenge Template/nft-challenge-template-fe/app/layout.tsx new file mode 100644 index 00000000..7d4a5458 --- /dev/null +++ b/submissions/NFT Challenge Template/nft-challenge-template-fe/app/layout.tsx @@ -0,0 +1,38 @@ +"use client"; + +import { Inter } from "next/font/google"; +import "./globals.css"; +import "@near-wallet-selector/modal-ui/styles.css"; + +import { MintbaseWalletContextProvider } from "@mintbase-js/react"; +import { Suspense } from "react"; +import React from "react"; +import { CONNECTION_CONFIG, CONTRACT_ID, NETWORK, NetworkContext } from "@/toolkit/blockchain"; +import { Network } from "@mintbase-js/sdk"; + +const inter = Inter({ subsets: ["latin"] }); + +export default function RootLayout({ children }: { children: React.ReactNode }) { + const mbContext = { + network: (process.env.NEXT_PUBLIC_NETWORK || NETWORK) as Network, + callbackUrl: process.env.NEXT_PUBLIC_CALLBACK_URL || (typeof window !== "undefined" ? window.location.origin : ""), + challengeFactoryContractId: CONTRACT_ID!, + failureUrl: + process.env.NEXT_PUBLIC_FAILURE_URL || + (typeof window !== "undefined" ? `${window.location.origin}?success=false` : ""), + }; + + return ( + + + + +
+ Loading...
}>{children} + +
+ + +
+ ); +} diff --git a/submissions/NFT Challenge Template/nft-challenge-template-fe/app/page.tsx b/submissions/NFT Challenge Template/nft-challenge-template-fe/app/page.tsx new file mode 100644 index 00000000..5220dbce --- /dev/null +++ b/submissions/NFT Challenge Template/nft-challenge-template-fe/app/page.tsx @@ -0,0 +1,40 @@ +"use client"; + +import { useState } from "react"; + +import Link from "next/link"; +import { Input } from "@/components/ui/input"; +import { Button } from "@/components/ui/button"; + +export default function Home() { + const [challengeName, setChallengeName] = useState(""); + + return ( +
+
+

NFT Challenge Generator!

+ +

+ Generate an nft challenge + + {" "} + now! + +

+

Or

+ + setChallengeName(e.target.value)} + id="nft-id" + placeholder="Enter the the challenge id prefix" + /> + + + +
+
+ ); +} diff --git a/submissions/NFT Challenge Template/nft-challenge-template-fe/components.json b/submissions/NFT Challenge Template/nft-challenge-template-fe/components.json new file mode 100644 index 00000000..dae32f96 --- /dev/null +++ b/submissions/NFT Challenge Template/nft-challenge-template-fe/components.json @@ -0,0 +1,16 @@ +{ + "$schema": "https://ui.shadcn.com/schema.json", + "style": "default", + "rsc": true, + "tsx": true, + "tailwind": { + "config": "tailwind.config.ts", + "css": "app/globals.css", + "baseColor": "gray", + "cssVariables": false + }, + "aliases": { + "utils": "@/lib/utils", + "components": "@/components" + } +} diff --git a/submissions/NFT Challenge Template/nft-challenge-template-fe/components/ChallengeCreator.tsx b/submissions/NFT Challenge Template/nft-challenge-template-fe/components/ChallengeCreator.tsx new file mode 100644 index 00000000..240cb8e1 --- /dev/null +++ b/submissions/NFT Challenge Template/nft-challenge-template-fe/components/ChallengeCreator.tsx @@ -0,0 +1,265 @@ +import NFTForm from "@/components/forms/NFTForm"; +import { NFTContract, NFTMetaData } from "@/types/nft"; +import { useContext, useEffect, useState } from "react"; +import { VictoryConditionsForm } from "./forms/VictoryConditionsForm"; +import { TerminationRulesForm } from "./forms/TerminationRulesForm"; +import { Button } from "./ui/button"; +import { NearWalletConnector } from "./NearWalletSelector"; +import { useMbWallet } from "@mintbase-js/react"; +import RewardNFTForm from "./forms/RewardNFTForm"; +import { NetworkContext } from "@/toolkit/blockchain"; + +export enum Progress { + ChallengeDetails, + RewardNFTDetails, + SetChallenges, + SetTerminationRules, + CreateContract, + ChallengeCreated, +} + +export const MAX_INT = "18000000000000000000"; + +export default function ChallengeCreator() { + const [progress, setProgress] = useState(Progress.ChallengeDetails); + // Reward Info + const [rewardNft, setRewardNft] = useState(undefined); + const [rewardTitle, setRewardTitle] = useState(undefined); + const [rewardDesc, setRewardDesc] = useState(undefined); + const [rewardMediaLink, setRewardMediaLink] = useState(undefined); + + const [name, setName] = useState(undefined); + const [desc, setDesc] = useState(undefined); + const [idPrefix, setIdPrefix] = useState(undefined); + const [mediaLink, setMediaLink] = useState(undefined); + const [challengeNftIds, setChallengeNftIds] = useState>([""]); + const [burnChallengeNftId, setBurnChallengeNftId] = useState>([false]); + const [terminationDate, setTerminationDate] = useState(undefined); + const [creatorCanEndChallenge, setCreatorCanEndChallenge] = useState(false); + const [winnerCount, setWinnerCount] = useState(undefined); + const [maxProgress, setMaxProgress] = useState(Progress.ChallengeDetails); + const { isConnected, selector } = useMbWallet(); + const { challengeFactoryContractId } = useContext(NetworkContext)!; + + useEffect(() => { + if (rewardNft != null) { + setProgress(Progress.SetChallenges); + } + }, [rewardNft]); + + useEffect(() => { + if (progress > maxProgress) { + setMaxProgress(progress); + } + }, [progress]); + useEffect(() => { + if (!isConnected) { + setProgress(Progress.ChallengeDetails); + } + }); + + const onSubmit = async () => { + const wallet = await selector.wallet(); + if (!isConnected) return false; + + let terminationDateStr = terminationDate?.getTime().toString(); + if (terminationDate == null) { + terminationDateStr = MAX_INT.toString(); + } else { + terminationDateStr = terminationDateStr + "000000"; + } + + const args = { + id_prefix: idPrefix, + name, + description: desc, + media_link: mediaLink, + reward_nft_id: rewardNft!.id, + challenge_nft_ids: challengeNftIds, + _expiration_date_in_ns: terminationDateStr, + _winner_limit: winnerCount?.toString() || MAX_INT, + creator_can_update: creatorCanEndChallenge, + burn_challenge_piece_on_claim: burnChallengeNftId, + reward_nft_metadata: { + title: rewardTitle!, + description: rewardDesc!, + media: rewardMediaLink!, + } as NFTMetaData, + }; + + const res = await wallet.signAndSendTransaction({ + receiverId: challengeFactoryContractId, + actions: [ + { + type: "FunctionCall", + params: { + methodName: "create_challenge", + args, + gas: "90000000000000", + deposit: "1000000000000000000000000", + }, + }, + ], + callbackUrl: `${window.location.origin}/challenges/${idPrefix}`, + }); + + if (res != null) { + setProgress(Progress.ChallengeCreated); + } + }; + + const prefix = + progress > Progress.ChallengeDetails ? ( +
+ {mediaLink != null ? ( + NFT Icon + ) : ( + NFT Icon + )} +
+
{name}
+ +
+ {/* */} + Reward: {rewardNft?.name} +
+ {maxProgress >= Progress.SetChallenges && ( +
+ + {winnerCount == null ? "Unlimited" : winnerCount} winner{winnerCount && winnerCount > 1 ? "s" : ""} + +
+ )} + {challengeNftIds.length > 0 && ( +
+ + {challengeNftIds.length} Challenge{challengeNftIds.length > 1 ? "s" : ""} + +
+ )} + {maxProgress >= Progress.SetTerminationRules && ( +
+ {terminationDate != null ? `Ends on ${terminationDate.toLocaleString()}` : `Never ends`} +
+ )} + {maxProgress >= Progress.SetTerminationRules && ( +
+ Creator can{!creatorCanEndChallenge && "not"} end challenge +
+ )} +
+
+ ) : null; + + switch (progress) { + case Progress.ChallengeDetails: + return !isConnected ? ( +
+
You'll need to connect your NEAR wallet to create a challenge.
+ +
+ ) : ( +
+ {prefix} + +
+ ); + case Progress.RewardNFTDetails: + return ( +
+ {prefix} + +
+ ); + + case Progress.SetChallenges: + return ( +
+ {prefix} + +
+ ); + case Progress.SetTerminationRules: + return ( +
+ {prefix} + +
+ ); + case Progress.CreateContract: + return ( +
+ {prefix} +
+ + +
+
+ ); + case Progress.ChallengeCreated: + return ( +
+ {prefix} +
Congrats! You can find your challenge at
+
+ ); + } +} diff --git a/submissions/NFT Challenge Template/nft-challenge-template-fe/components/NearWalletSelector.tsx b/submissions/NFT Challenge Template/nft-challenge-template-fe/components/NearWalletSelector.tsx new file mode 100644 index 00000000..2152def4 --- /dev/null +++ b/submissions/NFT Challenge Template/nft-challenge-template-fe/components/NearWalletSelector.tsx @@ -0,0 +1,35 @@ +"use client"; +import { useMbWallet } from "@mintbase-js/react"; + +export const NearWalletConnector = () => { + const { isConnected, selector, connect, activeAccountId } = useMbWallet(); + + const handleSignout = async () => { + const wallet = await selector.wallet(); + // wallet.signAndSendTransaction(); + return wallet.signOut(); + }; + + const handleSignIn = async () => { + return connect(); + }; + + if (!isConnected) { + return ( + + ); + } + + return ( +
+

You are connected as {activeAccountId}

+
+ +
+
+ ); +}; diff --git a/submissions/NFT Challenge Template/nft-challenge-template-fe/components/Web3Toggle.tsx b/submissions/NFT Challenge Template/nft-challenge-template-fe/components/Web3Toggle.tsx new file mode 100644 index 00000000..aa938df6 --- /dev/null +++ b/submissions/NFT Challenge Template/nft-challenge-template-fe/components/Web3Toggle.tsx @@ -0,0 +1,57 @@ +/** + * This code was generated by v0 by Vercel. + * @see https://v0.dev/t/rwTSgVn5ARK + * Documentation: https://v0.dev/docs#integrating-generated-code-into-your-nextjs-app + */ + +/** Add fonts into your Next.js project: + +import { Inter } from 'next/font/google' + +inter({ + subsets: ['latin'], + display: 'swap', +}) + +To read more about using these font, please visit the Next.js documentation: +- App Directory: https://nextjs.org/docs/app/building-your-application/optimizing/fonts +- Pages Directory: https://nextjs.org/docs/pages/building-your-application/optimizing/fonts +**/ +import { useEffect, useState } from "react"; +import { Wallet, useMbWallet } from "@mintbase-js/react"; +import { Button } from "./ui/button"; + +export function Web3Toggle() { + const { isConnected, selector, activeAccountId, disconnect } = useMbWallet(); + + const [wallet, setWallet] = useState(null); + useEffect(() => { + (async () => { + if (isConnected) { + setWallet(await selector.wallet()); + } else { + setWallet(null); + } + })(); + }, [isConnected]); + + return ( +
+
+ {wallet != null && ( +
+

You are connected as {activeAccountId}

+ +
+ )} +
+
+ ); +} diff --git a/submissions/NFT Challenge Template/nft-challenge-template-fe/components/carousel.tsx b/submissions/NFT Challenge Template/nft-challenge-template-fe/components/carousel.tsx new file mode 100644 index 00000000..6dc5a84b --- /dev/null +++ b/submissions/NFT Challenge Template/nft-challenge-template-fe/components/carousel.tsx @@ -0,0 +1,114 @@ +"use client"; + +/** + * This code was generated by v0 by Vercel. + * @see https://v0.dev/t/GL15OXrq7lE + * Documentation: https://v0.dev/docs#integrating-generated-code-into-your-nextjs-app + */ + +/** Add fonts into your Next.js project: + +import { Inter } from 'next/font/google' + +inter({ + subsets: ['latin'], + display: 'swap', +}) + +To read more about using these font, please visit the Next.js documentation: +- App Directory: https://nextjs.org/docs/app/building-your-application/optimizing/fonts +- Pages Directory: https://nextjs.org/docs/pages/building-your-application/optimizing/fonts +**/ +import { CarouselItem, CarouselContent, CarouselPrevious, CarouselNext, Carousel } from "@/components/ui/carousel"; +import { NFTContract } from "@/types/nft"; +import { useState } from "react"; + +export default function NFTCarousel({ nfts }: { nfts: ReadonlyArray }) { + const [index, setIndex] = useState(0); + return ( + + + {nfts.map((nft) => ( + +
+ NFT +
+

+ + {nft.symbol}{" "} + +

+

{nft.name}

+ {nft.owned &&

You own this NFT!

} +
+
+
+ ))} +
+ index > 0 && setIndex(index + 1)} + className={`${ + index === 0 ? "hidden" : "" + } absolute left-4 top-1/2 -translate-y-1/2 rounded-full bg-white/50 p-2 shadow-md transition-all hover:bg-white dark:bg-gray-950/50 dark:hover:bg-gray-950`} + > + + + index < nfts.length - 1 && setIndex(index - 1)} + className={`${ + index === nfts.length - 1 ? "hidden" : "" + } absolute right-4 top-1/2 -translate-y-1/2 rounded-full bg-white/50 p-2 shadow-md transition-all hover:bg-white dark:bg-gray-950/50 dark:hover:bg-gray-950`} + > + + +
+ ); +} + +function ChevronLeftIcon(props: { className: string }) { + return ( + + + + ); +} + +function ChevronRightIcon(props: { className: string }) { + return ( + + + + ); +} diff --git a/submissions/NFT Challenge Template/nft-challenge-template-fe/components/forms/NFTForm.tsx b/submissions/NFT Challenge Template/nft-challenge-template-fe/components/forms/NFTForm.tsx new file mode 100644 index 00000000..92783429 --- /dev/null +++ b/submissions/NFT Challenge Template/nft-challenge-template-fe/components/forms/NFTForm.tsx @@ -0,0 +1,120 @@ +/** + * This code was generated by v0 by Vercel. + * @see https://v0.dev/t/wmouMaCO9ek + * Documentation: https://v0.dev/docs#integrating-generated-code-into-your-nextjs-app + */ + +/** Add fonts into your Next.js project: + +import { Inter } from 'next/font/google' + +inter({ + subsets: ['latin'], + display: 'swap', +}) + +To read more about using these font, please visit the Next.js documentation: +- App Directory: https://nextjs.org/docs/app/building-your-application/optimizing/fonts +- Pages Directory: https://nextjs.org/docs/pages/building-your-application/optimizing/fonts +**/ +"use client"; +import { Input } from "@/components/ui/input"; +import { Button } from "@/components/ui/button"; +import { Dispatch, SetStateAction } from "react"; +import { Progress } from "../ChallengeCreator"; + +export default function NFTForm({ + name, + setName, + desc, + setDesc, + idPrefix, + setIdPrefix, + mediaLink, + setMediaLink, + setProgress, +}: { + name: string | undefined; + setName: Dispatch>; + desc: string | undefined; + setDesc: Dispatch>; + idPrefix: string | undefined; + setIdPrefix: Dispatch>; + mediaLink: string | undefined; + setMediaLink: Dispatch>; + setProgress: Dispatch>; +}) { + const onSubmit = async () => { + if (!name || !desc || !mediaLink || !idPrefix) { + alert("Please fill all necessary details."); + return; + } + setProgress(Progress.RewardNFTDetails); + }; + return ( +
+
+

Choose your challenge details!

+

Enter some details about your challenge below.

+
+
+ +
+
+ setIdPrefix(e.target.value)} + id="id-prefix" + placeholder="Enter a prefix for the challenge ID" + /> +
+
+
+
+
+ +
+
+ setName(e.target.value)} + id="name" + placeholder="Enter a name for the challenge" + /> +
+
+
+ +
+ +
+
+ setDesc(e.target.value)} + id="desc" + placeholder="Enter a description for the challenge" + /> +
+
+
+
+ +
+
+ setMediaLink(e.target.value)} + id="media-link" + placeholder="A media link for the challenge" + /> +
+
+
+
+ +
+
+
+ ); +} diff --git a/submissions/NFT Challenge Template/nft-challenge-template-fe/components/forms/RewardNFTForm.tsx b/submissions/NFT Challenge Template/nft-challenge-template-fe/components/forms/RewardNFTForm.tsx new file mode 100644 index 00000000..141afd11 --- /dev/null +++ b/submissions/NFT Challenge Template/nft-challenge-template-fe/components/forms/RewardNFTForm.tsx @@ -0,0 +1,134 @@ +/** + * This code was generated by v0 by Vercel. + * @see https://v0.dev/t/wmouMaCO9ek + * Documentation: https://v0.dev/docs#integrating-generated-code-into-your-nextjs-app + */ + +/** Add fonts into your Next.js project: + +import { Inter } from 'next/font/google' + +inter({ + subsets: ['latin'], + display: 'swap', +}) + +To read more about using these font, please visit the Next.js documentation: +- App Directory: https://nextjs.org/docs/app/building-your-application/optimizing/fonts +- Pages Directory: https://nextjs.org/docs/pages/building-your-application/optimizing/fonts +**/ +"use client"; +import { Input } from "@/components/ui/input"; +import { Button } from "@/components/ui/button"; +import { Dispatch, SetStateAction, useContext, useState } from "react"; +import { NFTContract } from "@/types/nft"; +import { fetchNftContract } from "@/toolkit/graphql"; +import { Progress } from "../ChallengeCreator"; +import { NetworkContext } from "@/toolkit/blockchain"; + +export default function RewardNFTForm({ + rewardNft, + setRewardNft, + rewardTitle, + setRewardTitle, + rewardDescription, + setRewardDescription, + rewardMediaLink, + setRewardMediaLink, + setProgress, +}: { + rewardNft: NFTContract | undefined; + setRewardNft: Dispatch>; + rewardTitle: string | undefined; + setRewardTitle: Dispatch>; + rewardDescription: string | undefined; + setRewardDescription: Dispatch>; + rewardMediaLink: string | undefined; + setRewardMediaLink: Dispatch>; + setProgress: Dispatch>; +}) { + const [rewardNftId, setRewardNftId] = useState(rewardNft?.id || ""); + const { network } = useContext(NetworkContext)!; + + const onSubmit = async () => { + const nft = await fetchNftContract(rewardNftId, network); + if (nft == null) { + alert("NFT not found"); + return; + } + + setRewardNft(nft); + }; + + return ( +
+
+

Reward NFT Details

+

+ Enter some details about your reward NFT below. These fields are all only necessary if you plan on minting the + reward NFT through the challenge contract. +

+
+
+
+ +
+
+ setRewardNftId(e.target.value)} + id="nft-id" + placeholder="Enter the NFT ID" + /> +
+
+
+
+ +
+
+ setRewardTitle(e.target.value)} + id="rewardTitle" + placeholder="Enter a title for the reward nfts" + /> +
+
+
+
+ +
+
+ setRewardDescription(e.target.value)} + id="rewardDescription" + placeholder="Enter a description for the challenge" + /> +
+
+
+
+ +
+
+ setRewardMediaLink(e.target.value)} + id="mediaLink" + placeholder="Enter a description for the challenge" + /> +
+
+
+
+ + +
+
+
+ ); +} diff --git a/submissions/NFT Challenge Template/nft-challenge-template-fe/components/forms/TerminationRulesForm.tsx b/submissions/NFT Challenge Template/nft-challenge-template-fe/components/forms/TerminationRulesForm.tsx new file mode 100644 index 00000000..804be04f --- /dev/null +++ b/submissions/NFT Challenge Template/nft-challenge-template-fe/components/forms/TerminationRulesForm.tsx @@ -0,0 +1,157 @@ +/** + * This code was generated by v0 by Vercel. + * @see https://v0.dev/t/6CInJkpB3S5 + * Documentation: https://v0.dev/docs#integrating-generated-code-into-your-nextjs-app + */ + +/** Add fonts into your Next.js project: + +import { Inter } from 'next/font/google' + +inter({ + subsets: ['latin'], + display: 'swap', +}) + +To read more about using these font, please visit the Next.js documentation: +- App Directory: https://nextjs.org/docs/app/building-your-application/optimizing/fonts +- Pages Directory: https://nextjs.org/docs/pages/building-your-application/optimizing/fonts +**/ +import { PopoverTrigger, PopoverContent, Popover } from "@/components/ui/popover"; +import { Calendar } from "@/components/ui/calendar"; +import { Checkbox } from "@/components/ui/checkbox"; +import { Button } from "@/components/ui/button"; +import { Dispatch, SetStateAction } from "react"; +import { Progress } from "../ChallengeCreator"; + +export function TerminationRulesForm({ + setProgress, + creatorCanEndChallenge, + setCreatorCanEndChallenge, + terminationDate, + setTerminationDate, +}: { + setProgress: Dispatch>; + creatorCanEndChallenge: boolean; + setCreatorCanEndChallenge: Dispatch>; + terminationDate: Date | undefined; + setTerminationDate: Dispatch>; +}) { + return ( +
+
+
+

Termination Details

+

Fill out the details for the termination of this employee.

+
+
+ + { + if (terminationDate == null) { + const tomorrow = new Date(); + // add a day + tomorrow.setDate(tomorrow.getDate() + 1); + setTerminationDate(tomorrow); + } else { + setTerminationDate(undefined); + } + }} + id="create-can-end-challenge" + /> +
+
+ +
+ + + + + + { + setTerminationDate(e); + }} + initialFocus + mode="single" + /> + + +
+
+
+ + { + setCreatorCanEndChallenge(!creatorCanEndChallenge); + }} + id="create-can-end-challenge" + /> +
+
+
+ + +
+
+ ); +} + +interface CalendarDaysIconProps { + width?: string; + height?: string; + viewBox?: string; + fill?: string; + stroke?: string; + strokeWidth?: string; + className: string; +} + +function CalendarDaysIcon(props: CalendarDaysIconProps) { + return ( + + + + + + + + + + + + + ); +} diff --git a/submissions/NFT Challenge Template/nft-challenge-template-fe/components/forms/VictoryConditionsForm.tsx b/submissions/NFT Challenge Template/nft-challenge-template-fe/components/forms/VictoryConditionsForm.tsx new file mode 100644 index 00000000..d5fc2da9 --- /dev/null +++ b/submissions/NFT Challenge Template/nft-challenge-template-fe/components/forms/VictoryConditionsForm.tsx @@ -0,0 +1,190 @@ +/** + * This code was generated by v0 by Vercel. + * @see https://v0.dev/t/NIRtBytcueJ + * Documentation: https://v0.dev/docs#integrating-generated-code-into-your-nextjs-app + */ + +/** Add fonts into your Next.js project: + +import { Inter } from 'next/font/google' + +inter({ + subsets: ['latin'], + display: 'swap', +}) + +To read more about using these font, please visit the Next.js documentation: +- App Directory: https://nextjs.org/docs/app/building-your-application/optimizing/fonts +- Pages Directory: https://nextjs.org/docs/pages/building-your-application/optimizing/fonts +**/ + +import { Label } from "@/components/ui/label"; +import { SelectValue, SelectTrigger, SelectItem, SelectContent, Select } from "@/components/ui/select"; +import { Input } from "@/components/ui/input"; +import { Button } from "@/components/ui/button"; +import { Progress } from "../ChallengeCreator"; +import { Dispatch, SetStateAction, useState } from "react"; +import { Checkbox } from "../ui/checkbox"; + +export function VictoryConditionsForm({ + setProgress, + challengeNftIds, + setChallengeNftIds, + setWinnerCount, + winnerCount, + burnChallengeNftId, + setBurnChallengeNftId, +}: { + challengeNftIds: Array; + setChallengeNftIds: Dispatch>>; + setProgress: Dispatch>; + setWinnerCount: Dispatch>; + winnerCount: number | undefined; + burnChallengeNftId: Array; + setBurnChallengeNftId: Dispatch>>; +}) { + const [challengeCount, setChallengeCount] = useState(Math.max(challengeNftIds.length, 1)); + const [nftIds, setNftIds] = useState>(challengeNftIds); + const [burnNftOnClaim, setBurnNftOnClaim] = useState>(burnChallengeNftId); + + const onNext = async () => { + const filteredNftIds = nftIds.slice(0, challengeCount); + + if (filteredNftIds.length <= 0) { + alert("Please enter at least one challenge nft id."); + return; + } + if (filteredNftIds.length !== challengeCount || filteredNftIds.some((id) => id === "")) { + alert("Please enter all challenge nft ids."); + return; + } + + if (new Set(filteredNftIds).size !== filteredNftIds.length) { + alert("Please enter unique challenge nft ids."); + return; + } + + const typedBurnNftIds = burnNftOnClaim.slice(0, challengeCount).map((burn) => !!burn); + + if (typedBurnNftIds.length !== challengeCount) { + alert("Please indicate whether the challenge nft should be burned on claim."); + return; + } + setChallengeNftIds(filteredNftIds); + setBurnChallengeNftId(typedBurnNftIds); + setProgress(Progress.SetTerminationRules); + }; + return ( +
+
+

Choose your challenge's victory conditions

+

Enter the details for your challenges.

+
+ +
+ + +
+
+ + { + setWinnerCount(parseInt(e.target.value)); + setBurnNftOnClaim(burnNftOnClaim.fill(false, burnNftOnClaim.length, parseInt(e.target.value) || 0)); + }} + value={winnerCount} + type="number" + /> +
+
+ + setChallengeCount(parseInt(e.target.value) || 0)} + value={challengeCount} + type="number" + /> +
+
+ {challengeCount > 0 && + [...Array(challengeCount).keys()].map((num) => ( +
+
Challenge #{num + 1}
+
+ +
+ + { + let burnNftIdsCopy = [...burnNftOnClaim]; + burnNftIdsCopy[num] = checked.valueOf() as boolean; + setBurnNftOnClaim(burnNftIdsCopy); + }} + id="create-can-end-challenge" + /> +
+
+ { + let nftIdsCopy = [...nftIds]; + nftIdsCopy[num] = e.target.value; + setNftIds(nftIdsCopy); + }} + id="nft-id" + placeholder="Enter the NFT ID" + /> +
+ ))} +
+ + + +
+ ); +} diff --git a/submissions/NFT Challenge Template/nft-challenge-template-fe/components/ui/badge.tsx b/submissions/NFT Challenge Template/nft-challenge-template-fe/components/ui/badge.tsx new file mode 100644 index 00000000..66c82383 --- /dev/null +++ b/submissions/NFT Challenge Template/nft-challenge-template-fe/components/ui/badge.tsx @@ -0,0 +1,36 @@ +import * as React from "react" +import { cva, type VariantProps } from "class-variance-authority" + +import { cn } from "@/lib/utils" + +const badgeVariants = cva( + "inline-flex items-center rounded-full border border-gray-200 px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-gray-950 focus:ring-offset-2 dark:border-gray-800 dark:focus:ring-gray-300", + { + variants: { + variant: { + default: + "border-transparent bg-gray-900 text-gray-50 hover:bg-gray-900/80 dark:bg-gray-50 dark:text-gray-900 dark:hover:bg-gray-50/80", + secondary: + "border-transparent bg-gray-100 text-gray-900 hover:bg-gray-100/80 dark:bg-gray-800 dark:text-gray-50 dark:hover:bg-gray-800/80", + destructive: + "border-transparent bg-red-500 text-gray-50 hover:bg-red-500/80 dark:bg-red-900 dark:text-gray-50 dark:hover:bg-red-900/80", + outline: "text-gray-950 dark:text-gray-50", + }, + }, + defaultVariants: { + variant: "default", + }, + } +) + +export interface BadgeProps + extends React.HTMLAttributes, + VariantProps {} + +function Badge({ className, variant, ...props }: BadgeProps) { + return ( +
+ ) +} + +export { Badge, badgeVariants } diff --git a/submissions/NFT Challenge Template/nft-challenge-template-fe/components/ui/button.tsx b/submissions/NFT Challenge Template/nft-challenge-template-fe/components/ui/button.tsx new file mode 100644 index 00000000..effbb4df --- /dev/null +++ b/submissions/NFT Challenge Template/nft-challenge-template-fe/components/ui/button.tsx @@ -0,0 +1,56 @@ +import * as React from "react" +import { Slot } from "@radix-ui/react-slot" +import { cva, type VariantProps } from "class-variance-authority" + +import { cn } from "@/lib/utils" + +const buttonVariants = cva( + "inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-white transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-gray-950 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 dark:ring-offset-gray-950 dark:focus-visible:ring-gray-300", + { + variants: { + variant: { + default: "bg-gray-900 text-gray-50 hover:bg-gray-900/90 dark:bg-gray-50 dark:text-gray-900 dark:hover:bg-gray-50/90", + destructive: + "bg-red-500 text-gray-50 hover:bg-red-500/90 dark:bg-red-900 dark:text-gray-50 dark:hover:bg-red-900/90", + outline: + "border border-gray-200 bg-white hover:bg-gray-100 hover:text-gray-900 dark:border-gray-800 dark:bg-gray-950 dark:hover:bg-gray-800 dark:hover:text-gray-50", + secondary: + "bg-gray-100 text-gray-900 hover:bg-gray-100/80 dark:bg-gray-800 dark:text-gray-50 dark:hover:bg-gray-800/80", + ghost: "hover:bg-gray-100 hover:text-gray-900 dark:hover:bg-gray-800 dark:hover:text-gray-50", + link: "text-gray-900 underline-offset-4 hover:underline dark:text-gray-50", + }, + size: { + default: "h-10 px-4 py-2", + sm: "h-9 rounded-md px-3", + lg: "h-11 rounded-md px-8", + icon: "h-10 w-10", + }, + }, + defaultVariants: { + variant: "default", + size: "default", + }, + } +) + +export interface ButtonProps + extends React.ButtonHTMLAttributes, + VariantProps { + asChild?: boolean +} + +const Button = React.forwardRef( + ({ className, variant, size, asChild = false, ...props }, ref) => { + const Comp = asChild ? Slot : "button" + return ( + + ) + } +) +Button.displayName = "Button" + +export { Button, buttonVariants } diff --git a/submissions/NFT Challenge Template/nft-challenge-template-fe/components/ui/calendar.tsx b/submissions/NFT Challenge Template/nft-challenge-template-fe/components/ui/calendar.tsx new file mode 100644 index 00000000..d5a32e94 --- /dev/null +++ b/submissions/NFT Challenge Template/nft-challenge-template-fe/components/ui/calendar.tsx @@ -0,0 +1,66 @@ +"use client" + +import * as React from "react" +import { ChevronLeft, ChevronRight } from "lucide-react" +import { DayPicker } from "react-day-picker" + +import { cn } from "@/lib/utils" +import { buttonVariants } from "@/components/ui/button" + +export type CalendarProps = React.ComponentProps + +function Calendar({ + className, + classNames, + showOutsideDays = true, + ...props +}: CalendarProps) { + return ( + , + IconRight: ({ ...props }) => , + }} + {...props} + /> + ) +} +Calendar.displayName = "Calendar" + +export { Calendar } diff --git a/submissions/NFT Challenge Template/nft-challenge-template-fe/components/ui/card.tsx b/submissions/NFT Challenge Template/nft-challenge-template-fe/components/ui/card.tsx new file mode 100644 index 00000000..65119a16 --- /dev/null +++ b/submissions/NFT Challenge Template/nft-challenge-template-fe/components/ui/card.tsx @@ -0,0 +1,79 @@ +import * as React from "react" + +import { cn } from "@/lib/utils" + +const Card = React.forwardRef< + HTMLDivElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( +
+)) +Card.displayName = "Card" + +const CardHeader = React.forwardRef< + HTMLDivElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( +
+)) +CardHeader.displayName = "CardHeader" + +const CardTitle = React.forwardRef< + HTMLParagraphElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( +

+)) +CardTitle.displayName = "CardTitle" + +const CardDescription = React.forwardRef< + HTMLParagraphElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( +

+)) +CardDescription.displayName = "CardDescription" + +const CardContent = React.forwardRef< + HTMLDivElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( +

+)) +CardContent.displayName = "CardContent" + +const CardFooter = React.forwardRef< + HTMLDivElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( +
+)) +CardFooter.displayName = "CardFooter" + +export { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent } diff --git a/submissions/NFT Challenge Template/nft-challenge-template-fe/components/ui/carousel.tsx b/submissions/NFT Challenge Template/nft-challenge-template-fe/components/ui/carousel.tsx new file mode 100644 index 00000000..ec505d00 --- /dev/null +++ b/submissions/NFT Challenge Template/nft-challenge-template-fe/components/ui/carousel.tsx @@ -0,0 +1,262 @@ +"use client" + +import * as React from "react" +import useEmblaCarousel, { + type UseEmblaCarouselType, +} from "embla-carousel-react" +import { ArrowLeft, ArrowRight } from "lucide-react" + +import { cn } from "@/lib/utils" +import { Button } from "@/components/ui/button" + +type CarouselApi = UseEmblaCarouselType[1] +type UseCarouselParameters = Parameters +type CarouselOptions = UseCarouselParameters[0] +type CarouselPlugin = UseCarouselParameters[1] + +type CarouselProps = { + opts?: CarouselOptions + plugins?: CarouselPlugin + orientation?: "horizontal" | "vertical" + setApi?: (api: CarouselApi) => void +} + +type CarouselContextProps = { + carouselRef: ReturnType[0] + api: ReturnType[1] + scrollPrev: () => void + scrollNext: () => void + canScrollPrev: boolean + canScrollNext: boolean +} & CarouselProps + +const CarouselContext = React.createContext(null) + +function useCarousel() { + const context = React.useContext(CarouselContext) + + if (!context) { + throw new Error("useCarousel must be used within a ") + } + + return context +} + +const Carousel = React.forwardRef< + HTMLDivElement, + React.HTMLAttributes & CarouselProps +>( + ( + { + orientation = "horizontal", + opts, + setApi, + plugins, + className, + children, + ...props + }, + ref + ) => { + const [carouselRef, api] = useEmblaCarousel( + { + ...opts, + axis: orientation === "horizontal" ? "x" : "y", + }, + plugins + ) + const [canScrollPrev, setCanScrollPrev] = React.useState(false) + const [canScrollNext, setCanScrollNext] = React.useState(false) + + const onSelect = React.useCallback((api: CarouselApi) => { + if (!api) { + return + } + + setCanScrollPrev(api.canScrollPrev()) + setCanScrollNext(api.canScrollNext()) + }, []) + + const scrollPrev = React.useCallback(() => { + api?.scrollPrev() + }, [api]) + + const scrollNext = React.useCallback(() => { + api?.scrollNext() + }, [api]) + + const handleKeyDown = React.useCallback( + (event: React.KeyboardEvent) => { + if (event.key === "ArrowLeft") { + event.preventDefault() + scrollPrev() + } else if (event.key === "ArrowRight") { + event.preventDefault() + scrollNext() + } + }, + [scrollPrev, scrollNext] + ) + + React.useEffect(() => { + if (!api || !setApi) { + return + } + + setApi(api) + }, [api, setApi]) + + React.useEffect(() => { + if (!api) { + return + } + + onSelect(api) + api.on("reInit", onSelect) + api.on("select", onSelect) + + return () => { + api?.off("select", onSelect) + } + }, [api, onSelect]) + + return ( + +
+ {children} +
+
+ ) + } +) +Carousel.displayName = "Carousel" + +const CarouselContent = React.forwardRef< + HTMLDivElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => { + const { carouselRef, orientation } = useCarousel() + + return ( +
+
+
+ ) +}) +CarouselContent.displayName = "CarouselContent" + +const CarouselItem = React.forwardRef< + HTMLDivElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => { + const { orientation } = useCarousel() + + return ( +
+ ) +}) +CarouselItem.displayName = "CarouselItem" + +const CarouselPrevious = React.forwardRef< + HTMLButtonElement, + React.ComponentProps +>(({ className, variant = "outline", size = "icon", ...props }, ref) => { + const { orientation, scrollPrev, canScrollPrev } = useCarousel() + + return ( + + ) +}) +CarouselPrevious.displayName = "CarouselPrevious" + +const CarouselNext = React.forwardRef< + HTMLButtonElement, + React.ComponentProps +>(({ className, variant = "outline", size = "icon", ...props }, ref) => { + const { orientation, scrollNext, canScrollNext } = useCarousel() + + return ( + + ) +}) +CarouselNext.displayName = "CarouselNext" + +export { + type CarouselApi, + Carousel, + CarouselContent, + CarouselItem, + CarouselPrevious, + CarouselNext, +} diff --git a/submissions/NFT Challenge Template/nft-challenge-template-fe/components/ui/checkbox.tsx b/submissions/NFT Challenge Template/nft-challenge-template-fe/components/ui/checkbox.tsx new file mode 100644 index 00000000..a556f8e3 --- /dev/null +++ b/submissions/NFT Challenge Template/nft-challenge-template-fe/components/ui/checkbox.tsx @@ -0,0 +1,30 @@ +"use client" + +import * as React from "react" +import * as CheckboxPrimitive from "@radix-ui/react-checkbox" +import { Check } from "lucide-react" + +import { cn } from "@/lib/utils" + +const Checkbox = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + + + + + +)) +Checkbox.displayName = CheckboxPrimitive.Root.displayName + +export { Checkbox } diff --git a/submissions/NFT Challenge Template/nft-challenge-template-fe/components/ui/input.tsx b/submissions/NFT Challenge Template/nft-challenge-template-fe/components/ui/input.tsx new file mode 100644 index 00000000..aae15c80 --- /dev/null +++ b/submissions/NFT Challenge Template/nft-challenge-template-fe/components/ui/input.tsx @@ -0,0 +1,25 @@ +import * as React from "react" + +import { cn } from "@/lib/utils" + +export interface InputProps + extends React.InputHTMLAttributes {} + +const Input = React.forwardRef( + ({ className, type, ...props }, ref) => { + return ( + + ) + } +) +Input.displayName = "Input" + +export { Input } diff --git a/submissions/NFT Challenge Template/nft-challenge-template-fe/components/ui/label.tsx b/submissions/NFT Challenge Template/nft-challenge-template-fe/components/ui/label.tsx new file mode 100644 index 00000000..53418217 --- /dev/null +++ b/submissions/NFT Challenge Template/nft-challenge-template-fe/components/ui/label.tsx @@ -0,0 +1,26 @@ +"use client" + +import * as React from "react" +import * as LabelPrimitive from "@radix-ui/react-label" +import { cva, type VariantProps } from "class-variance-authority" + +import { cn } from "@/lib/utils" + +const labelVariants = cva( + "text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70" +) + +const Label = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef & + VariantProps +>(({ className, ...props }, ref) => ( + +)) +Label.displayName = LabelPrimitive.Root.displayName + +export { Label } diff --git a/submissions/NFT Challenge Template/nft-challenge-template-fe/components/ui/popover.tsx b/submissions/NFT Challenge Template/nft-challenge-template-fe/components/ui/popover.tsx new file mode 100644 index 00000000..ba4cf631 --- /dev/null +++ b/submissions/NFT Challenge Template/nft-challenge-template-fe/components/ui/popover.tsx @@ -0,0 +1,31 @@ +"use client" + +import * as React from "react" +import * as PopoverPrimitive from "@radix-ui/react-popover" + +import { cn } from "@/lib/utils" + +const Popover = PopoverPrimitive.Root + +const PopoverTrigger = PopoverPrimitive.Trigger + +const PopoverContent = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, align = "center", sideOffset = 4, ...props }, ref) => ( + + + +)) +PopoverContent.displayName = PopoverPrimitive.Content.displayName + +export { Popover, PopoverTrigger, PopoverContent } diff --git a/submissions/NFT Challenge Template/nft-challenge-template-fe/components/ui/select.tsx b/submissions/NFT Challenge Template/nft-challenge-template-fe/components/ui/select.tsx new file mode 100644 index 00000000..0d475102 --- /dev/null +++ b/submissions/NFT Challenge Template/nft-challenge-template-fe/components/ui/select.tsx @@ -0,0 +1,160 @@ +"use client" + +import * as React from "react" +import * as SelectPrimitive from "@radix-ui/react-select" +import { Check, ChevronDown, ChevronUp } from "lucide-react" + +import { cn } from "@/lib/utils" + +const Select = SelectPrimitive.Root + +const SelectGroup = SelectPrimitive.Group + +const SelectValue = SelectPrimitive.Value + +const SelectTrigger = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, children, ...props }, ref) => ( + span]:line-clamp-1 dark:border-gray-800 dark:bg-gray-950 dark:ring-offset-gray-950 dark:placeholder:text-gray-400 dark:focus:ring-gray-300", + className + )} + {...props} + > + {children} + + + + +)) +SelectTrigger.displayName = SelectPrimitive.Trigger.displayName + +const SelectScrollUpButton = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + + + +)) +SelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName + +const SelectScrollDownButton = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + + + +)) +SelectScrollDownButton.displayName = + SelectPrimitive.ScrollDownButton.displayName + +const SelectContent = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, children, position = "popper", ...props }, ref) => ( + + + + + {children} + + + + +)) +SelectContent.displayName = SelectPrimitive.Content.displayName + +const SelectLabel = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +SelectLabel.displayName = SelectPrimitive.Label.displayName + +const SelectItem = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, children, ...props }, ref) => ( + + + + + + + + {children} + +)) +SelectItem.displayName = SelectPrimitive.Item.displayName + +const SelectSeparator = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +SelectSeparator.displayName = SelectPrimitive.Separator.displayName + +export { + Select, + SelectGroup, + SelectValue, + SelectTrigger, + SelectContent, + SelectLabel, + SelectItem, + SelectSeparator, + SelectScrollUpButton, + SelectScrollDownButton, +} diff --git a/submissions/NFT Challenge Template/nft-challenge-template-fe/components/ui/textarea.tsx b/submissions/NFT Challenge Template/nft-challenge-template-fe/components/ui/textarea.tsx new file mode 100644 index 00000000..8e53612b --- /dev/null +++ b/submissions/NFT Challenge Template/nft-challenge-template-fe/components/ui/textarea.tsx @@ -0,0 +1,24 @@ +import * as React from "react" + +import { cn } from "@/lib/utils" + +export interface TextareaProps + extends React.TextareaHTMLAttributes {} + +const Textarea = React.forwardRef( + ({ className, ...props }, ref) => { + return ( +