From 3470063740854f10e88ecaa512d62de64fc0b151 Mon Sep 17 00:00:00 2001 From: Sorin Chis Date: Wed, 17 Dec 2025 14:48:55 +0200 Subject: [PATCH 01/16] add stake pool and epoch sections --- packages/yoroi-extension/app/Routes.js | 7 +- .../app/UI/features/staking/StakingRoot.tsx | 41 +++- .../common/components/EmptyWalletBanner.tsx | 84 +++++++ .../UI/features/staking/common/constants.ts | 1 + .../staking/common/hooks/useStrings.ts | 80 +++++++ .../UI/features/staking/common/types/index.ts | 40 +++- .../staking/module/StakingContextProvider.tsx | 62 +++++- .../app/UI/features/staking/module/state.ts | 6 + .../DelegatedStakePoolCard.tsx | 130 +++++++++++ .../StakePoolDelegated.tsx | 50 +++++ .../UndelegateButton.tsx | 206 ++++++++++++++++++ .../useCases/EpochProgress/EpochProgress.tsx | 47 ++++ .../EpochProgress/EpochProgressCard.tsx | 105 +++++++++ .../EpochProgress/EpochProgressWrapper.tsx | 62 ++++++ .../LegacyDialogs/LegacyDialogs.tsx.tsx | 77 +++++++ .../staking/useCases/PoolList/PoolList.tsx | 15 +- .../RewardsSummary/RewardHistoryGraph.tsx | 26 ++- .../RewardsSummary/RewardsSummaryCard.tsx | 20 +- .../RewardsSummary/WithdrawButton.tsx | 17 +- 19 files changed, 1034 insertions(+), 42 deletions(-) create mode 100644 packages/yoroi-extension/app/UI/features/staking/common/components/EmptyWalletBanner.tsx create mode 100644 packages/yoroi-extension/app/UI/features/staking/common/constants.ts create mode 100644 packages/yoroi-extension/app/UI/features/staking/useCases/DelegatedStakePoolInfo/DelegatedStakePoolCard.tsx create mode 100644 packages/yoroi-extension/app/UI/features/staking/useCases/DelegatedStakePoolInfo/StakePoolDelegated.tsx create mode 100644 packages/yoroi-extension/app/UI/features/staking/useCases/DelegatedStakePoolInfo/UndelegateButton.tsx create mode 100644 packages/yoroi-extension/app/UI/features/staking/useCases/EpochProgress/EpochProgress.tsx create mode 100644 packages/yoroi-extension/app/UI/features/staking/useCases/EpochProgress/EpochProgressCard.tsx create mode 100644 packages/yoroi-extension/app/UI/features/staking/useCases/EpochProgress/EpochProgressWrapper.tsx create mode 100644 packages/yoroi-extension/app/UI/features/staking/useCases/LegacyDialogs/LegacyDialogs.tsx.tsx diff --git a/packages/yoroi-extension/app/Routes.js b/packages/yoroi-extension/app/Routes.js index 1151cce577..3f85c62259 100644 --- a/packages/yoroi-extension/app/Routes.js +++ b/packages/yoroi-extension/app/Routes.js @@ -204,9 +204,7 @@ export const YoroiRoutes = (stores: StoresMap): Node => { }> } /> - }> - } /> - + }> } /> } /> @@ -256,6 +254,9 @@ export const YoroiRoutes = (stores: StoresMap): Node => { } /> } /> + }> + } /> + }> } /> } /> diff --git a/packages/yoroi-extension/app/UI/features/staking/StakingRoot.tsx b/packages/yoroi-extension/app/UI/features/staking/StakingRoot.tsx index e1ed080e87..6fc5ba8788 100644 --- a/packages/yoroi-extension/app/UI/features/staking/StakingRoot.tsx +++ b/packages/yoroi-extension/app/UI/features/staking/StakingRoot.tsx @@ -1,12 +1,49 @@ -import { Stack } from '@mui/material'; +import { Box, Stack, styled } from '@mui/material'; import { PoolList } from './useCases/PoolList/PoolList'; import { RewardsSummaryCard } from './useCases/RewardsSummary/RewardsSummaryCard'; +import { StakePoolDelegated } from './useCases/DelegatedStakePoolInfo/StakePoolDelegated'; +import EpochProgress from './useCases/EpochProgress/EpochProgress'; +import { LegacyDialogs } from './useCases/LegacyDialogs/LegacyDialogs.tsx'; +import { useStaking } from './module/StakingContextProvider'; +import BuySellDialog from '../../../components/buySell/BuySellDialog'; +import WalletEmptyBanner from './common/components/EmptyWalletBanner'; export const StakingRoot = () => { + const { isWalletWithNoFunds, selectedWallet, legacyUIDialogs } = useStaking(); + + if (isWalletWithNoFunds) { + return ( + legacyUIDialogs.open({ dialog: BuySellDialog })} + isTestnet={selectedWallet.isTestnet} + /> + ); + } return ( - + + + + + + + + ); }; + +const WrapperCards = styled(Box)({ + display: 'flex', + gap: '24px', + justifyContent: 'space-between', + marginBottom: '24px', +}); + +const RightCardsWrapper = styled(Box)({ + display: 'flex', + width: '100%', + flexDirection: 'column', + gap: '24px', +}); diff --git a/packages/yoroi-extension/app/UI/features/staking/common/components/EmptyWalletBanner.tsx b/packages/yoroi-extension/app/UI/features/staking/common/components/EmptyWalletBanner.tsx new file mode 100644 index 0000000000..04a25be106 --- /dev/null +++ b/packages/yoroi-extension/app/UI/features/staking/common/components/EmptyWalletBanner.tsx @@ -0,0 +1,84 @@ +import React from 'react'; +import { Box } from '@mui/system'; +import { Button, Stack, Typography } from '@mui/material'; +import { ReactComponent as CoverBg } from '../../assets/images/transaction/wallet-empty-banner.inline.svg'; +import { captureEvent } from '../../../../../../posthog'; +import { TESTNET_FAUCET } from '../constants'; +import { useStrings } from '../hooks/useStrings'; + +export type WalletEmptyBannerProps = { + onBuySellClick: () => void; + isTestnet: boolean; +}; + +const WalletEmptyBanner: React.FC = ({ isTestnet, onBuySellClick }) => { + const strings = useStrings(); + + const handleClick = () => { + if (isTestnet) { + window.open(TESTNET_FAUCET, '_blank'); + } else { + onBuySellClick(); + } + + captureEvent('Wallet Page Exchange Clicked'); + }; + + return ( + + theme.palette.ds.bg_gradient_1, + marginBottom: '40px', + borderRadius: '8px', + overflowY: 'hidden', + position: 'relative', + padding: '16px', + height: 'auto', + }} + id="wallet|staking-emptyWalletBanner-box" + > + + + + + + + {isTestnet ? strings.welcomeMessageTestnet : strings.welcomeMessage} + + + + {isTestnet ? strings.welcomeMessageSubtitleTestnet : strings.welcomeMessageSubtitle} + {isTestnet ? ( + <> +
+ {strings.welcomeMessageSubtitleTestnetExtra} + + ) : null} +
+
+ + + + +
+
+ ); +}; + +export default WalletEmptyBanner; diff --git a/packages/yoroi-extension/app/UI/features/staking/common/constants.ts b/packages/yoroi-extension/app/UI/features/staking/common/constants.ts new file mode 100644 index 0000000000..6bd1e15aec --- /dev/null +++ b/packages/yoroi-extension/app/UI/features/staking/common/constants.ts @@ -0,0 +1 @@ +export const TESTNET_FAUCET = 'https://docs.cardano.org/cardano-testnets/tools/faucet' diff --git a/packages/yoroi-extension/app/UI/features/staking/common/hooks/useStrings.ts b/packages/yoroi-extension/app/UI/features/staking/common/hooks/useStrings.ts index 4b7c6bbeb8..d2893a7fe4 100644 --- a/packages/yoroi-extension/app/UI/features/staking/common/hooks/useStrings.ts +++ b/packages/yoroi-extension/app/UI/features/staking/common/hooks/useStrings.ts @@ -48,6 +48,70 @@ export const messages = Object.freeze( id: 'global.labels.error', defaultMessage: '!!!Error', }, + stakePoolDelegated: { + id: 'wallet.dashboard.upcomingRewards.stakePoolDelegated', + defaultMessage: '!!!Stake Pool Delegated', + }, + roa30dLabel: { + id: 'wallet.staking.banner.roa30d', + defaultMessage: '!!!ROA 30d', + }, + poolSizeLabel: { + id: 'wallet.staking.pool.size', + defaultMessage: '!!!Pool size', + }, + poolSaturation: { + id: 'wallet.staking.pool.saturation', + defaultMessage: '!!!Saturation', + }, + updatePoolLabel: { + id: 'global.updatePool', + defaultMessage: '!!! UPDATE POOL', + }, + undelegatePool: { + id: 'transaction.review.undelegatePool', + defaultMessage: '!!!Unstake entire wallet balance from', + }, + undelegateLabel: { + id: 'global.labael.undelegate', + defaultMessage: '!!!Undelegate', + }, + deregisteringStakingKey: { + id: 'transaction.review.deregisteringStakingKey', + defaultMessage: '!!!Undelegating from the pool', + }, + epochProgress: { + id: 'wallet.staking.epochProgress', + defaultMessage: '!!!Epoch Progress', + }, + welcomeMessage: { + id: 'wallet.emptyWalletMessage', + defaultMessage: '!!!Your wallet is empty', + }, + welcomeMessageSubtitle: { + id: 'wallet.emptyWalletMessageSubtitle', + defaultMessage: '!!!Top up your wallet safely using our trusted partners', + }, + welcomeMessageTestnet: { + id: 'wallet.emptyWalletMessage.testnet', + defaultMessage: '!!!Learn Cardano with test ADA ⭐', + }, + welcomeMessageSubtitleTestnet: { + id: 'wallet.emptyWalletMessageSubtitle.testnet', + defaultMessage: '!!!Stake your test ADA by participating in our testnet staking program.', + }, + welcomeMessageSubtitleTestnetExtra: { + id: 'wallet.emptyWalletMessageSubtitle.testnetExtra', + defaultMessage: "!!!Get your TADA. It's your key to testing a new world of possibilities.", + }, + goToFaucetButton: { + id: 'wallet.emptyWalletMessage.goToFaucet', + defaultMessage: '!!!ADD TEST ADA', + }, + buyAda: { + id: 'button.buyAda', + defaultMessage: '!!!Buy ADA', + }, }) ); @@ -65,5 +129,21 @@ export const useStrings = () => { rewardValue: intl.formatMessage(messages.rewardValue), rewardsLabel: intl.formatMessage(messages.rewardsLabel), errorLabel: intl.formatMessage(messages.errorLabel), + stakePoolDelegated: intl.formatMessage(messages.stakePoolDelegated), + roa30dLabel: intl.formatMessage(messages.roa30dLabel), + poolSizeLabel: intl.formatMessage(messages.poolSizeLabel), + poolSaturation: intl.formatMessage(messages.poolSaturation), + updatePoolLabel: intl.formatMessage(messages.updatePoolLabel), + undelegatePool: intl.formatMessage(messages.undelegatePool), + undelegateLabel: intl.formatMessage(messages.undelegateLabel), + deregisteringStakingKey: intl.formatMessage(messages.deregisteringStakingKey), + epochProgress: intl.formatMessage(messages.epochProgress), + welcomeMessage: intl.formatMessage(messages.welcomeMessage), + welcomeMessageSubtitle: intl.formatMessage(messages.welcomeMessageSubtitle), + welcomeMessageTestnet: intl.formatMessage(messages.welcomeMessageTestnet), + welcomeMessageSubtitleTestnet: intl.formatMessage(messages.welcomeMessageSubtitleTestnet), + welcomeMessageSubtitleTestnetExtra: intl.formatMessage(messages.welcomeMessageSubtitleTestnetExtra), + goToFaucetButton: intl.formatMessage(messages.goToFaucetButton), + buyAda: intl.formatMessage(messages.buyAda), }).current; }; diff --git a/packages/yoroi-extension/app/UI/features/staking/common/types/index.ts b/packages/yoroi-extension/app/UI/features/staking/common/types/index.ts index 194977a615..df87b51f25 100644 --- a/packages/yoroi-extension/app/UI/features/staking/common/types/index.ts +++ b/packages/yoroi-extension/app/UI/features/staking/common/types/index.ts @@ -1,4 +1,4 @@ -// Define types +import type { ExplorerPoolInfo as PoolInfo } from '@emurgo/yoroi-lib'; export type StakingActions = {}; // Define state type @@ -13,6 +13,12 @@ export type StakingState = { historyGraphData: GraphData | null; primaryTokenInfo: any; toUnitOfAccount: (entry: any) => void | { currency: string; amount: string }; + defaultDelegatedAsset: any; + selectedWallet: any; + delegationStore: any; + legacyUIDialogs: any; + delegationRequests: any; + isWalletWithNoFunds: boolean; }; export interface GraphItems { @@ -33,3 +39,35 @@ export interface RewardsGraphData { export interface GraphData { readonly rewardsGraphData: RewardsGraphData; } + +export interface SocialLinks { + tw?: string; + fb?: string; + gh?: string; + tc?: string; + tg?: string; + di?: string; + yt?: string; + web?: string; + icon?: string; +} + +export interface PoolData { + id: string; + name: string; + ticker?: string; + avatar?: string | null; + roa?: string | null; + poolSize?: string | null; + share?: string | null; + websiteUrl?: string; + socialLinks?: SocialLinks; +} + +export interface PoolTransition { + currentPool?: PoolInfo | null; + deadlineMilliseconds?: number | null; + shouldShowTransitionFunnel: boolean; + suggestedPool?: PoolInfo | null; + deadlinePassed: boolean; +} diff --git a/packages/yoroi-extension/app/UI/features/staking/module/StakingContextProvider.tsx b/packages/yoroi-extension/app/UI/features/staking/module/StakingContextProvider.tsx index 241a5f49ad..de22c85a2e 100644 --- a/packages/yoroi-extension/app/UI/features/staking/module/StakingContextProvider.tsx +++ b/packages/yoroi-extension/app/UI/features/staking/module/StakingContextProvider.tsx @@ -7,7 +7,8 @@ import { generateGraphData } from '../common/helpers/graph'; import { GraphData } from '../common/types'; import { networkConfigs } from '../../../utils/network-config'; import { MultiToken } from '../../../../api/common/lib/MultiToken'; -import RewardHistoryDialog from '../../../../components/wallet/staking/dashboard-revamp/RewardHistoryDialog'; +import { getDefaultAssetByWallet } from '../../../../api/ada/lib/storage/database/prepackaged/networks'; +import { RustModule } from '../../../../api/ada/lib/cardanoCrypto/rustLoader'; const initialStakingProvider = { ...defaultStakingState, @@ -33,6 +34,9 @@ export const StakingContextProvider = observer(({ children, stores }: StakingPro const currentlyDelegating = stores.delegation.isCurrentlyDelegating(selectedWallet.publicDeriverId); const delegatedUtxo = stores.delegation.getDelegatedUtxoBalance(selectedWallet.publicDeriverId); const delegationRequests = delegationStore.getDelegationRequests(selectedWallet.publicDeriverId); + const currentPool = delegationStore.getDelegatedPoolId(selectedWallet.publicDeriverId); + const balance = selectedWallet.balance; + const isWalletWithNoFunds = balance != null && balance.getDefaultEntry().amount.isZero(); if (delegationRequests == null) { throw new Error(`Page opened for non-reward wallet`); @@ -85,23 +89,24 @@ export const StakingContextProvider = observer(({ children, stores }: StakingPro }; }; - const onOpenRewardList = () => { - stores.uiDialogs.open({ - dialog: RewardHistoryDialog, - }); - }; + const defaultDelegatedAsset = getDefaultAssetByWallet(selectedWallet); const initialState = { - selectedWallet: selectedWallet, + selectedWallet: selectedWallet, // TODO - to be replaced by hook - useSelectedWallet + delegationStore: delegationStore, // TODO - to be replaced by hook - useDelegation + legacyUIDialogs: stores.uiDialogs, // TODO - to be replaced by individual hooks - maybe create useUiDialogs hook until will remoeve mobx + stores: stores, // TODO - to be replaced by individual hooks - maybe create useStores hook until will remoeve mobx shouldHideBalance: profile.shouldHideBalance, tokenInfo: tokenInfoStore.tokenInfo, - stores: stores, totalRewards: delegatedRewards, totalDelegated: totalDelegated(), historyGraphData: graphData, primaryTokenInfo, toUnitOfAccount, - onOpenRewardList, + defaultDelegatedAsset, + currentPool, + delegationRequests, + isWalletWithNoFunds, }; const state = React.useMemo( @@ -109,10 +114,14 @@ export const StakingContextProvider = observer(({ children, stores }: StakingPro ...defaultStakingState, ...initialState, }), - [initialState] + [initialState, currentPool] ); - React.useEffect(() => {}, [stores]); + React.useEffect(() => { + const currentPool2 = delegationStore.getDelegatedPoolId(selectedWallet.publicDeriverId); + + console.log('currentPool222222222', { delegationStore, networkId, currentPool2, selectedWallet: selectedWallet }); + }, [currentPool, delegationStore, selectedWallet.publicDeriverId]); const actions = React.useRef({ getTokenInfo: genLookupOrFail(tokenInfoStore.tokenInfo), @@ -132,6 +141,7 @@ export const StakingContextProvider = observer(({ children, stores }: StakingPro export const useStaking = () => React.useContext(StakingContext) ?? console.log('useStaking: needs to be wrapped in a StakingProvider'); +// Legacy utility functions - to be moved refactored later export function formatValue(value: BigNumber): string { if (value.isZero()) { return '0'; @@ -145,3 +155,33 @@ export function formatValue(value: BigNumber): string { export function maybe(value: T | null | undefined, fn: (value: T) => R | null | undefined): R | null | undefined { return value == null ? undefined : fn(value); } + +export function roundTwoDecimal(num: number): string { + const fNum = Number(num); + return (Math.round(fNum * 100) / 100).toFixed(2); +} + +export function formatLovelacesHumanReadableShort(num: string): string { + const fNum = Number(num) / 1000000; // divided in 1,000,000 to convert from Lovelace to ADA + if (fNum >= 1e3) { + const units = ['k', 'M', 'B', 'T']; + // Divide to get SI Unit engineering style numbers (1e3,1e6,1e9, etc) + const unit = Math.floor((fNum.toFixed(0).length - 1) / 3) * 3; + // Calculate the remainder + const formattedNum = (fNum / Number(`1e${unit}`)).toFixed(2); + const unitname = units[Math.floor(unit / 3) - 1]; + return `${formattedNum}${unitname}`; + } + return fNum.toLocaleString(); +} + +export function roundOneDecimal(num: number): string { + const fNum = Number(num); + const number = Math.round(fNum * 10) / 10; + if (number === 0) return number.toFixed(1); + return number.toString(); +} + +export function poolIdHexToBech32(hex: string): string { + return RustModule.WasmScope(Module => Module.WalletV4.Ed25519KeyHash.from_hex(hex).to_bech32('pool')); +} diff --git a/packages/yoroi-extension/app/UI/features/staking/module/state.ts b/packages/yoroi-extension/app/UI/features/staking/module/state.ts index 5a19282614..1788066c46 100644 --- a/packages/yoroi-extension/app/UI/features/staking/module/state.ts +++ b/packages/yoroi-extension/app/UI/features/staking/module/state.ts @@ -12,6 +12,12 @@ export const defaultStakingState: StakingState = { historyGraphData: null, primaryTokenInfo: null, toUnitOfAccount: () => ({ currency: '', amount: '' }), + defaultDelegatedAsset: null, + selectedWallet: null, + delegationStore: null, + legacyUIDialogs: null, + delegationRequests: null, + isWalletWithNoFunds: false, }; // Define action handlers diff --git a/packages/yoroi-extension/app/UI/features/staking/useCases/DelegatedStakePoolInfo/DelegatedStakePoolCard.tsx b/packages/yoroi-extension/app/UI/features/staking/useCases/DelegatedStakePoolInfo/DelegatedStakePoolCard.tsx new file mode 100644 index 0000000000..a9a284f0ff --- /dev/null +++ b/packages/yoroi-extension/app/UI/features/staking/useCases/DelegatedStakePoolInfo/DelegatedStakePoolCard.tsx @@ -0,0 +1,130 @@ +import React from 'react'; +import { Box, Divider, Stack, styled, Typography } from '@mui/material'; +import { getAvatarFromPoolId } from '../../common/helpers'; +import { PoolData, PoolTransition } from '../../common/types'; +import { useStrings } from '../../common/hooks/useStrings'; +import { poolIdHexToBech32, useStaking } from '../../module/StakingContextProvider'; +import { truncateAddress } from '../../../../../utils/formatters'; +import { UndelegateButton } from './UndelegateButton'; + +export type DelegatedStakePoolCardProps = { + delegatedPool: PoolData; + poolTransition?: PoolTransition | null; + delegateToSpecificPool: (id: string | null) => void; +}; + +const DelegatedStakePoolCard: React.FC = ({ + delegatedPool, + poolTransition, + delegateToSpecificPool, +}) => { + const strings = useStrings(); + const { defaultDelegatedAsset } = useStaking(); + + const { id, name, ticker, poolSize, share, avatar, roa, socialLinks, websiteUrl } = delegatedPool || ({} as PoolData); + + const avatarGenerated = getAvatarFromPoolId(id); + + return ( + + + + {strings.stakePoolDelegated} + + + + + + + + + + + + + + + {ticker != null ? `[${ticker}]` : ''} {name && name !== '' ? name : truncateAddress(poolIdHexToBech32(id))} + + + + + + {roa != null && ( + + + {strings.roa30dLabel} + + + {roa} % + + + )} + + {poolSize != null && ( + + + {strings.poolSizeLabel} + + + {poolSize} {defaultDelegatedAsset.Metadata.ticker} + + + )} + + {share != null && ( + + + {strings.poolSaturation} + + + {share} % + + + )} + + + ); +}; + +export default DelegatedStakePoolCard; + +const Card = styled(Box)({ + borderRadius: '8px', + display: 'flex', + flexDirection: 'column', + justifyContent: 'flex-end', +}); + +const Wrapper = styled(Box)({ + display: 'flex', + padding: 24, +}); + +const AvatarWrapper = styled(Box)({ + width: '40px', + height: '40px', + minWidth: '40px', + marginRight: '12px', + borderRadius: '20px', + overflow: 'hidden', +}); + +const AvatarImg = styled('img')(({ theme }:any) => ({ + width: '100%', + background: theme.palette.ds.primary_100, + objectFit: 'scale-down', +})); diff --git a/packages/yoroi-extension/app/UI/features/staking/useCases/DelegatedStakePoolInfo/StakePoolDelegated.tsx b/packages/yoroi-extension/app/UI/features/staking/useCases/DelegatedStakePoolInfo/StakePoolDelegated.tsx new file mode 100644 index 0000000000..667145ee6f --- /dev/null +++ b/packages/yoroi-extension/app/UI/features/staking/useCases/DelegatedStakePoolInfo/StakePoolDelegated.tsx @@ -0,0 +1,50 @@ +import { ReactNode } from 'react'; +import { + formatLovelacesHumanReadableShort, + maybe, + roundOneDecimal, + roundTwoDecimal, + useStaking, +} from '../../module/StakingContextProvider'; +import DelegatedStakePoolCard from './DelegatedStakePoolCard'; +import { observer } from 'mobx-react'; + +export const StakePoolDelegated = observer((): ReactNode => { + const { delegationStore, selectedWallet } = useStaking(); + + const currentPool = delegationStore.getDelegatedPoolId(selectedWallet.publicDeriverId); + + console.log('currentPool', currentPool); + + if (currentPool == null) return null; + + const poolMeta = delegationStore.getLocalPoolInfo(selectedWallet.networkId, currentPool); + + const localRemote = delegationStore.getLocalRemotePoolInfo(selectedWallet.networkId, currentPool) ?? {}; + + const poolTransition = delegationStore.getPoolTransitionInfo(selectedWallet); + + const { stake, roa, saturation, pic } = localRemote; + + const delegatedPool = { + id: String(currentPool), + name: poolMeta?.info?.name ?? '', + avatar: pic, + roa: maybe(roa, x => roundTwoDecimal(Number(x))), + poolSize: maybe(stake, formatLovelacesHumanReadableShort), + share: maybe(saturation, s => roundOneDecimal(Number(s) * 100)), + websiteUrl: poolMeta?.info?.homepage, + ticker: poolMeta?.info?.ticker, + }; + return ( + => { + if (poolId != null) { + return delegationStore.createDelegationTransaction(poolId); + } + }} + /> + ); +}); diff --git a/packages/yoroi-extension/app/UI/features/staking/useCases/DelegatedStakePoolInfo/UndelegateButton.tsx b/packages/yoroi-extension/app/UI/features/staking/useCases/DelegatedStakePoolInfo/UndelegateButton.tsx new file mode 100644 index 0000000000..8345b739d8 --- /dev/null +++ b/packages/yoroi-extension/app/UI/features/staking/useCases/DelegatedStakePoolInfo/UndelegateButton.tsx @@ -0,0 +1,206 @@ +import { Box, Button, Link, Stack, Typography, styled } from '@mui/material'; +import BigNumber from 'bignumber.js'; +import { toSvg } from 'jdenticon'; + +import { useTxReviewModal } from '../../../transaction-review/module/ReviewTxProvider'; +import { asQuantity } from '../../../../utils/createCurrentWalletInfo'; +import { useStrings } from '../../common/hooks/useStrings'; +import { useStaking } from '../../module/StakingContextProvider'; +import { TransactionResult } from '../../../transaction-review/common/types'; + +export const UndelegateButton = ({ poolTransition, delegateToSpecificPool, poolId, poolName, socialMediaInfo }) => { + const { openTxReviewModal, startLoadingTxReview, stakeKeyDeposit, primaryTokenInfo, showTxResultModal, stakingRewards } = + useTxReviewModal(); + const { selectedWallet, stores } = useStaking(); + const strings = useStrings(); + const avatarSource = toSvg(poolId, 36, { padding: 0 }); + const avatarGenerated = `data:image/svg+xml;utf8,${encodeURIComponent(avatarSource)}`; + + if (poolTransition?.shouldShowTransitionFunnel) { + return ( + // @ts-ignore + delegateToSpecificPool(poolTransition.suggestedPool?.hash ?? '')}> + {strings.updatePoolLabel} + + ); + } + + const handleUndelegate = async () => { + stores.substores.ada.delegationTransaction.setShouldDeregister(true); + const unsignedTx = await stores.substores.ada.delegationTransaction.createWithdrawalTxForWallet({ wallet: selectedWallet }); + + openTxReviewModal({ + modalView: 'transactionReview', + submitTx: passswordInput => submitTx(passswordInput), + operations: { + components: [ + { + component: ( + + ), + duplicated: false, + }, + ], + kind: 'undelegate', + }, + unsignedTx: unsignedTx.unsignedTx, + }); + }; + + const submitTx = async password => { + const signRequest = stores.substores.ada.delegationTransaction.createWithdrawalTx.result; + if (signRequest == null) return; + + try { + startLoadingTxReview(); + + await stores.transactionProcessingStore.adaSendAndRefresh({ + wallet: stores.wallets.selected, + signRequest, + password, + callback: async () => {}, + }); + + showTxResultModal(TransactionResult.SUCCESS); + + // ampli.claimAdaTransactionSubmitted({ + // reward_amount: signRequest.withdrawals()[0]?.amount.getDefaultEntry().amount.toNumber(), + // }); + } catch (_error) { + showTxResultModal(TransactionResult.FAIL); + } + }; + + return ( + + {strings.undelegateLabel} + + ); +}; + +const OperationsDetails = ({ stakeKeyDeposit, avatarGenerated, poolName, socialMediaInfo, stakingRewards }) => { + const { socialLinks, websiteUrl } = socialMediaInfo ?? {}; + const urls = getSocialMediaLinks(socialLinks, websiteUrl); + const strings = useStrings(); + const link = websiteUrl ?? urls[0]; + + return ( + + + {strings.undelegatePool} + + + + + {link && ( + + {poolName} + + )} + + + + + {strings.deregisteringStakingKey} + {stakeKeyDeposit} + + + {strings.totalRewardsLabel} + {stakingRewards} + + + ); +}; + +export const getSocialMediaLink = (platform, handle) => { + const baseUrls = { + twitter: 'https://twitter.com/', + telegram: 'https://t.me/', + facebook: 'https://fb.me/', + youtube: 'https://youtube.com/', + twitch: 'https://twitch.com/', + discord: 'https://discord.gg/', + github: 'https://github.com/', + }; + + const baseUrl = baseUrls[platform]; + return baseUrl ? `${baseUrl}${handle}` : ''; +}; + +export const getSocialMediaLinks = (socialLinks, websiteUrl) => { + const urls: string[] = []; + + if (socialLinks?.tw) urls.push(getSocialMediaLink('twitter', socialLinks.tw)); + if (socialLinks?.tg) urls.push(getSocialMediaLink('telegram', socialLinks.tg)); + if (socialLinks?.fb) urls.push(getSocialMediaLink('facebook', socialLinks.fb)); + if (socialLinks?.yt) urls.push(getSocialMediaLink('youtube', socialLinks.yt)); + if (socialLinks?.tc) urls.push(getSocialMediaLink('twitch', socialLinks.tc)); + if (socialLinks?.di) urls.push(getSocialMediaLink('discord', socialLinks.di)); + if (socialLinks?.gh) urls.push(getSocialMediaLink('github', socialLinks.gh)); + + if (websiteUrl) urls.push(websiteUrl); + + return urls; +}; + +const UpdatePoolButton = styled(Button)(({ theme }: any) => ({ + minWidth: 'auto', + width: '140px', + marginLeft: 'auto', + background: theme.palette.ds.sys_magenta_500, + color: 'white', + height: '40px', + padding: '0px !important', + fontSize: '14px', + '&:hover': { + backgroundColor: theme.palette.ds.sys_magenta_500, + color: 'white', + }, +})); + +const UndelegateBtn = styled(Button)({ + minWidth: 'auto', + width: 'unset', + marginLeft: 'auto', +}); + +const StyledLink: any = styled(Link)(({ theme }: any) => ({ + marginRight: '5px', + color: 'inherit', + '& svg': { + '& path': { + fill: theme.palette.ds.el_gray_medium, + }, + }, +})); diff --git a/packages/yoroi-extension/app/UI/features/staking/useCases/EpochProgress/EpochProgress.tsx b/packages/yoroi-extension/app/UI/features/staking/useCases/EpochProgress/EpochProgress.tsx new file mode 100644 index 0000000000..54a79af4ba --- /dev/null +++ b/packages/yoroi-extension/app/UI/features/staking/useCases/EpochProgress/EpochProgress.tsx @@ -0,0 +1,47 @@ +import React from 'react'; +import moment from 'moment'; +import EpochProgressWrapper from './EpochProgressWrapper'; +import { useStaking } from '../../module/StakingContextProvider'; + +const EpochProgress: React.FC = () => { + const { stores, selectedWallet } = useStaking(); + const timeCalcRequests = stores.substores.ada.time.getTimeCalcRequests(selectedWallet); + const { toAbsoluteSlot, toRealTime, currentEpochLength } = timeCalcRequests.requests; + + const currTimeRequests = stores.substores.ada.time.getCurrentTimeRequests(selectedWallet); + const currentEpoch: number = currTimeRequests.currentEpoch; + + const epochLength = currentEpochLength(); + + const getDateFromEpoch = (epoch: number, returnEpochTime = false): string | Date => { + const epochTime = toRealTime({ + absoluteSlotNum: toAbsoluteSlot({ + epoch, + // Rewards are calculated at the start of the epoch but distributed at the end + slot: epochLength, + }), + }); + + return returnEpochTime ? epochTime : moment(epochTime).format('lll'); + }; + + const endEpochDate = getDateFromEpoch(currentEpoch) as string; + const endEpochDateTime = getDateFromEpoch(currentEpoch, true) as Date; + const previousEpochDate = getDateFromEpoch(currentEpoch - 1) as string; + + const percentage = Math.floor((100 * currTimeRequests.currentSlot) / epochLength); + + return ( + + ); +}; + +export default EpochProgress; diff --git a/packages/yoroi-extension/app/UI/features/staking/useCases/EpochProgress/EpochProgressCard.tsx b/packages/yoroi-extension/app/UI/features/staking/useCases/EpochProgress/EpochProgressCard.tsx new file mode 100644 index 0000000000..bb0c41234d --- /dev/null +++ b/packages/yoroi-extension/app/UI/features/staking/useCases/EpochProgress/EpochProgressCard.tsx @@ -0,0 +1,105 @@ +import React from 'react'; +import { Box, CircularProgress, Stack, Typography } from '@mui/material'; + +export interface EpochProgressCardProps { + percentage: number; + days: number; + currentEpoch: number; + startEpochDate: string | Date; + endEpochDate: string | Date; +} + +export const EpochProgressCard: React.FC = ({ + percentage, + days, + currentEpoch, + startEpochDate, + endEpochDate, +}) => { + return ( + + + + + + <Stack direction="row" gap={16} mt="50px" justifyContent="space-between"> + <LabelWithValue label="Epoch started at" value={startEpochDate} /> + <LabelWithValue label="Epoch ends at" value={endEpochDate} /> + </Stack> + </Stack> + </Stack> + </Box> + ); +}; + +interface TitleProps { + label: string; + value: string | number; +} + +const Title: React.FC<TitleProps> = ({ label, value }) => { + return ( + <Box> + <Typography fontWeight={500} color="ds.primary_600"> + {label}: {value} + </Typography> + </Box> + ); +}; + +interface InfoColumnProps { + label: string; + value: string | number | Date; +} + +const LabelWithValue: React.FC<InfoColumnProps> = ({ label, value }) => { + return ( + <Box minWidth="203px"> + <Typography sx={{ textTransform: 'uppercase' }} variant="caption" mb="4px" color="ds.gray_600"> + {label} + </Typography> + <Typography color="ds.gray_900">{value instanceof Date ? value.toString() : value}</Typography> + </Box> + ); +}; + +interface GraphProps { + value: number; + days: number; +} + +const Graph: React.FC<GraphProps> = ({ value, days }) => { + return ( + <Box mr="8px" position="relative" display="flex" justifyContent="center"> + <CircularProgress + size={120} + thickness={7} + variant="determinate" + value={value} + sx={{ + color: 'primary.600', + animationDuration: '550ms', + position: 'absolute', + zIndex: 1, + }} + /> + <CircularProgress size={120} thickness={7} variant="determinate" sx={{ color: 'ds.gray_100' }} value={100} /> + <Box + position="absolute" + sx={{ + top: '30%', + left: '50%', + transform: 'translate(-50%)', + textAlign: 'center', + }} + > + <Typography variant="h4" color="ds.gray_900"> + {value}% + </Typography> + <Typography variant="caption" fontSize="12px" color="ds.gray_600"> + {days} days + </Typography> + </Box> + </Box> + ); +}; diff --git a/packages/yoroi-extension/app/UI/features/staking/useCases/EpochProgress/EpochProgressWrapper.tsx b/packages/yoroi-extension/app/UI/features/staking/useCases/EpochProgress/EpochProgressWrapper.tsx new file mode 100644 index 0000000000..b1dda5d164 --- /dev/null +++ b/packages/yoroi-extension/app/UI/features/staking/useCases/EpochProgress/EpochProgressWrapper.tsx @@ -0,0 +1,62 @@ +import React from 'react'; +import { Box, Divider, styled, Typography } from '@mui/material'; +import moment from 'moment'; + +import { EpochProgressCard } from './EpochProgressCard'; +import { useStrings } from '../../common/hooks/useStrings'; + +export interface EpochProgressData { + currentEpoch: number; + startEpochDate: string | Date; + endEpochDate: string | Date; + endEpochDateTime: Date; + percentage: number; +} + +export interface EpochProgressWrapperProps { + epochProgress: EpochProgressData; +} + +const EpochProgressWrapper: React.FC<EpochProgressWrapperProps> = ({ epochProgress }) => { + const strings = useStrings(); + + // Days remaining + const days = moment(epochProgress.endEpochDateTime).diff(moment(), 'days'); + + return ( + <Card + sx={{ + border: '1px solid', + borderColor: 'ds.gray_200', + bgcolor: 'ds.bg_color_max', + }} + > + <Box sx={{ padding: '17px 24px' }}> + <Typography variant="h5" color="ds.text_gray_medium" fontWeight={500}> + {strings.epochProgress} + </Typography> + </Box> + + <Divider sx={{ borderColor: 'ds.gray_200' }} /> + + <Box sx={{ padding: '24px' }}> + <EpochProgressCard + percentage={epochProgress.percentage} + days={days} + currentEpoch={epochProgress.currentEpoch} + startEpochDate={epochProgress.startEpochDate} + endEpochDate={epochProgress.endEpochDate} + /> + </Box> + </Card> + ); +}; + +export default EpochProgressWrapper; + +const Card = styled(Box)({ + borderRadius: '8px', + flex: '1 1 100%', + display: 'flex', + flexDirection: 'column', +}); diff --git a/packages/yoroi-extension/app/UI/features/staking/useCases/LegacyDialogs/LegacyDialogs.tsx.tsx b/packages/yoroi-extension/app/UI/features/staking/useCases/LegacyDialogs/LegacyDialogs.tsx.tsx new file mode 100644 index 0000000000..6204069a16 --- /dev/null +++ b/packages/yoroi-extension/app/UI/features/staking/useCases/LegacyDialogs/LegacyDialogs.tsx.tsx @@ -0,0 +1,77 @@ +import { maybe, useStaking } from '../../module/StakingContextProvider'; +import OverviewModal from '../../../../../components/wallet/staking/dashboard-revamp/OverviewDialog'; +import { generateGraphData } from '../../common/helpers/graph'; +import { GovernanceParticipateDialog } from '../../../../../containers/wallet/dialogs/GovernanceParticipateDialog'; +import UnmangleTxDialogContainer from '../../../../../containers/transfer/UnmangleTxDialogContainer'; +import RewardHistoryDialog from '../../../../../components/wallet/staking/dashboard-revamp/RewardHistoryDialog'; +import { observer } from 'mobx-react'; + +export const LegacyDialogs = observer(() => { + const { legacyUIDialogs, stores, totalRewards, toUnitOfAccount, delegationRequests, selectedWallet } = useStaking(); + const errorIfPresent = maybe(delegationRequests.error, error => ({ error })); + + const showRewardAmount = errorIfPresent == null && stores.delegation.isExecutedDelegatedBalance(selectedWallet.publicDeriverId); + const isParticipatingToGovernance = stores.delegation.governanceStatus?.drepDelegation !== null; + const isStakeRegistered = stores.delegation.isStakeRegistered(selectedWallet.publicDeriverId); + + const onClose = () => { + legacyUIDialogs.closeActiveDialog(); + }; + + return ( + <div> + {legacyUIDialogs.isOpen(OverviewModal) ? ( + <OverviewModal + onClose={onClose} + getTokenInfo={genLookupOrFail(stores.tokenInfoStore.tokenInfo)} + totalRewards={showRewardAmount ? totalRewards : undefined} + shouldHideBalance={stores.profile.shouldHideBalance} + unitOfAccount={toUnitOfAccount} + withdrawRewards={ + isParticipatingToGovernance === false + ? () => { + legacyUIDialogs.open({ + dialog: GovernanceParticipateDialog, + }); + } + : isStakeRegistered + ? () => { + legacyUIDialogs.open({ + dialog: GovernanceParticipateDialog, + }); + } + : undefined + } + /> + ) : null} + {legacyUIDialogs.isOpen(GovernanceParticipateDialog) ? ( + <GovernanceParticipateDialog stores={stores} onClose={onClose} /> + ) : null} + {legacyUIDialogs.isOpen(UnmangleTxDialogContainer) ? <UnmangleTxDialogContainer stores={stores} onClose={onClose} /> : null} + {legacyUIDialogs.isOpen(RewardHistoryDialog) ? ( + <RewardHistoryDialog + onClose={onClose} + graphData={generateGraphData({ + delegationRequests, + currentEpoch: stores.substores.ada.time.getCurrentTimeRequests(selectedWallet).currentEpoch, + shouldHideBalance: stores.profile.shouldHideBalance, + getLocalPoolInfo: stores.delegation.getLocalPoolInfo, + tokenInfo: stores.tokenInfoStore.tokenInfo, + networkId: selectedWallet.networkId, + defaultTokenId: selectedWallet.defaultTokenId, + })} + /> + ) : null} + </div> + ); +}); + +export const genLookupOrFail = map => lookup => { + const tokenRow = map.get(lookup.networkId.toString())?.get(lookup.identifier); + + if (tokenRow == null) { + throw new Error(`genLookupOrFail: no token info for ${JSON.stringify(lookup)}`); + } + + return tokenRow; +}; diff --git a/packages/yoroi-extension/app/UI/features/staking/useCases/PoolList/PoolList.tsx b/packages/yoroi-extension/app/UI/features/staking/useCases/PoolList/PoolList.tsx index 73d5e63caf..b509690ad6 100644 --- a/packages/yoroi-extension/app/UI/features/staking/useCases/PoolList/PoolList.tsx +++ b/packages/yoroi-extension/app/UI/features/staking/useCases/PoolList/PoolList.tsx @@ -1,9 +1,20 @@ -import { Typography } from '@mui/material'; +// $FlowIgnore: suppressing this error +import CardanoStakingPage from '../../../../../containers/wallet/staking/CardanoStakingPage'; +import { useStaking } from '../../module/StakingContextProvider'; +import type { ConfigType } from '../../../../../../config/config-types'; + +// populated by ConfigWebpackPlugin +declare var CONFIG: ConfigType; export const PoolList = () => { + const { stores, delegationStore, selectedWallet } = useStaking(); return ( <div> - <Typography variant="h1">PoolList</Typography> + <CardanoStakingPage + stores={stores} + urlTemplate={CONFIG.poolExplorer.simpleTemplate} + poolTransition={delegationStore.getPoolTransitionInfo(selectedWallet)} + /> </div> ); }; diff --git a/packages/yoroi-extension/app/UI/features/staking/useCases/RewardsSummary/RewardHistoryGraph.tsx b/packages/yoroi-extension/app/UI/features/staking/useCases/RewardsSummary/RewardHistoryGraph.tsx index d38dc2e622..3e2f15ae17 100644 --- a/packages/yoroi-extension/app/UI/features/staking/useCases/RewardsSummary/RewardHistoryGraph.tsx +++ b/packages/yoroi-extension/app/UI/features/staking/useCases/RewardsSummary/RewardHistoryGraph.tsx @@ -2,15 +2,16 @@ import React from 'react'; import { Box, styled } from '@mui/system'; import { Button, CircularProgress, Stack, Typography } from '@mui/material'; import RewardGraphClean from './RewardGraphClean'; -// import VerticallyCenteredLayout from '../../../layout/VerticallyCenteredLayout'; // --- IGNORE --- import MuiAccordion, { AccordionProps as MuiAccordionProps } from '@mui/material/Accordion'; import MuiAccordionSummary, { AccordionSummaryProps as MuiAccordionSummaryProps } from '@mui/material/AccordionSummary'; import MuiAccordionDetails from '@mui/material/AccordionDetails'; import { getAvatarFromPoolId } from '../../common/helpers'; import { useStrings } from '../../common/hooks/useStrings'; import { GraphData } from '../../common/types'; +import { useStaking } from '../../module/StakingContextProvider'; -/* ---------- Types ---------- */ +import RewardHistoryDialog from '../../../../../components/wallet/staking/dashboard-revamp/RewardHistoryDialog'; +import { observer } from 'mobx-react'; type RewardHistoryEntry = { type: string; @@ -27,7 +28,6 @@ type RewardHistoryItemProps = { type RewardHistoryGraphProps = { graphData: GraphData; - onOpenRewardList: () => void; }; /* ---------- RewardHistoryItem ---------- */ @@ -138,12 +138,20 @@ const AccordionSummary = styled((props: MuiAccordionSummaryProps) => ( }, })); -const RewardHistoryGraph: React.FC<RewardHistoryGraphProps> = ({ graphData, onOpenRewardList }) => { +const RewardHistoryGraph: React.FC<RewardHistoryGraphProps> = observer(({ graphData }) => { const strings = useStrings(); + const { stores } = useStaking(); const { rewardsGraphData } = graphData; const rewardList = rewardsGraphData.items?.perEpochRewards; const title = strings.rewardHistoryLabel; + const onOpenRewardList = async () => { + console.log('OPENNNNNN222'); + stores.uiDialogs.open({ + dialog: RewardHistoryDialog, + }); + }; + return ( <Box p="24px" @@ -166,9 +174,13 @@ const RewardHistoryGraph: React.FC<RewardHistoryGraphProps> = ({ graphData, onOp </Typography> <Button // @ts-ignore - variant="primary" + variant="outlined" size="medium" - onClick={onOpenRewardList} + onClick={() => + stores.uiDialogs.open({ + dialog: RewardHistoryDialog, + }) + } sx={{ lineHeight: '21px' }} > {title} @@ -200,6 +212,6 @@ const RewardHistoryGraph: React.FC<RewardHistoryGraphProps> = ({ graphData, onOp )} </Box> ); -}; +}); export default RewardHistoryGraph; diff --git a/packages/yoroi-extension/app/UI/features/staking/useCases/RewardsSummary/RewardsSummaryCard.tsx b/packages/yoroi-extension/app/UI/features/staking/useCases/RewardsSummary/RewardsSummaryCard.tsx index 167ff0d993..6a3c00c8b2 100644 --- a/packages/yoroi-extension/app/UI/features/staking/useCases/RewardsSummary/RewardsSummaryCard.tsx +++ b/packages/yoroi-extension/app/UI/features/staking/useCases/RewardsSummary/RewardsSummaryCard.tsx @@ -1,4 +1,4 @@ -import React, { ReactNode } from 'react'; +import { ReactNode } from 'react'; import { Box, styled } from '@mui/system'; import { Divider, Typography } from '@mui/material'; // import loadingSpinnerStyles from '../dashboard/LoadingSpinner.scss' @@ -10,16 +10,8 @@ import { useStrings } from '../../common/hooks/useStrings'; import { maybe, useStaking } from '../../module/StakingContextProvider'; import { HIDDEN_AMOUNT } from '../../../../common/constants'; import { truncateToken } from '../../../../../utils/formatters'; -import { GraphData } from '../../common/types'; import { Icon } from '../../../../components'; -export type SummaryCardProps = { - onOpenRewardList: () => void; - unitOfAccount: (entry: any) => void | { currency: string; amount: string }; - graphData: GraphData; - stores: any; -}; - const StakingIconWrapper = styled(Box)(({ theme }) => ({ '& svg': { '& rect': { @@ -63,11 +55,10 @@ const InfoRow = styled(Box)({ const InfoDetails = styled(Box)({}); -export const RewardsSummaryCard: React.FC<SummaryCardProps> = () => { +export const RewardsSummaryCard = () => { const strings = useStrings(); const { getTokenInfo, onOpenRewardList, totalRewards, totalDelegated, shouldHideBalance, historyGraphData, toUnitOfAccount } = useStaking(); - const govStatusFetched = true; // TODO: get from governance provider const formatTokenEntry = (tokenEntry): ReactNode => { const tokenInfo = getTokenInfo(tokenEntry); @@ -106,8 +97,7 @@ export const RewardsSummaryCard: React.FC<SummaryCardProps> = () => { ); }; - // TODO: enable later - // const hasNoRewards = (token?: any | null): boolean => (totalRewards ? token?.getDefaultEntry()?.amount?.isZero() : true); + const hasNoRewards = token => maybe(token, t => t.getDefaultEntry()?.amount?.isZero?.()) ?? false; return ( <Card @@ -131,7 +121,7 @@ export const RewardsSummaryCard: React.FC<SummaryCardProps> = () => { {strings.rewardsSummary} </Typography> - <WithdrawButton govStatusFetched={govStatusFetched} isDisabled={totalRewards === undefined} /> + <WithdrawButton isDisabled={hasNoRewards(totalRewards)} /> </Box> <Divider sx={{ borderColor: 'ds.gray_200' }} /> @@ -186,7 +176,7 @@ export const RewardsSummaryCard: React.FC<SummaryCardProps> = () => { </InfoRow> </Box> - {historyGraphData && <RewardHistoryGraph onOpenRewardList={onOpenRewardList} graphData={historyGraphData} />} + {historyGraphData && <RewardHistoryGraph graphData={historyGraphData} />} </Card> ); }; diff --git a/packages/yoroi-extension/app/UI/features/staking/useCases/RewardsSummary/WithdrawButton.tsx b/packages/yoroi-extension/app/UI/features/staking/useCases/RewardsSummary/WithdrawButton.tsx index 6d191302d6..f701b27c7f 100644 --- a/packages/yoroi-extension/app/UI/features/staking/useCases/RewardsSummary/WithdrawButton.tsx +++ b/packages/yoroi-extension/app/UI/features/staking/useCases/RewardsSummary/WithdrawButton.tsx @@ -4,8 +4,11 @@ import { useTxReviewModal } from '../../../transaction-review/module/ReviewTxPro import { TransactionResult } from '../../../transaction-review/common/types'; import { useStrings } from '../../common/hooks/useStrings'; import { useStaking } from '../../module/StakingContextProvider'; +import React from 'react'; + +export const WithdrawButton = ({ isDisabled }) => { + const [govStatusFetched, setStatusFetched] = React.useState(false); -export const WithdrawButton = ({ govStatusFetched, isDisabled }) => { const { openTxReviewModal, stopLoadingTxReview, startLoadingTxReview, showTxResultModal } = useTxReviewModal(); const strings = useStrings(); const { stores } = useStaking(); @@ -14,6 +17,18 @@ export const WithdrawButton = ({ govStatusFetched, isDisabled }) => { const wallet = stores.wallets.selected; const isStakeRegistered = stores.delegation.isStakeRegistered(wallet.publicDeriverId); + React.useEffect(() => { + stores.delegation + .checkGovernanceStatus(wallet) + .then(() => { + setStatusFetched(true); + return null; + }) + .catch(e => { + console.error('Failed to fetch governance status', e); + }); + }, []); + const handleRewardsWithdrawal = async () => { if (!isParticipatingToGovernance) { stores.uiDialogs.open({ From 38c7131a4f4f34522eb8a2f13fd3bb56a5ad1112 Mon Sep 17 00:00:00 2001 From: Sorin Chis <kish.sorin@yahoo.com> Date: Wed, 17 Dec 2025 15:05:24 +0200 Subject: [PATCH 02/16] fix warnings --- .../app/UI/features/staking/common/constants.ts | 2 +- .../UI/features/staking/module/StakingContextProvider.tsx | 6 ------ .../DelegatedStakePoolInfo/DelegatedStakePoolCard.tsx | 2 +- .../useCases/DelegatedStakePoolInfo/UndelegateButton.tsx | 4 ---- .../staking/useCases/LegacyDialogs/LegacyDialogs.tsx.tsx | 2 +- .../staking/useCases/RewardsSummary/RewardsSummaryCard.tsx | 5 +---- 6 files changed, 4 insertions(+), 17 deletions(-) diff --git a/packages/yoroi-extension/app/UI/features/staking/common/constants.ts b/packages/yoroi-extension/app/UI/features/staking/common/constants.ts index 6bd1e15aec..2300950094 100644 --- a/packages/yoroi-extension/app/UI/features/staking/common/constants.ts +++ b/packages/yoroi-extension/app/UI/features/staking/common/constants.ts @@ -1 +1 @@ -export const TESTNET_FAUCET = 'https://docs.cardano.org/cardano-testnets/tools/faucet' +export const TESTNET_FAUCET = 'https://docs.cardano.org/cardano-testnets/tools/faucet'; diff --git a/packages/yoroi-extension/app/UI/features/staking/module/StakingContextProvider.tsx b/packages/yoroi-extension/app/UI/features/staking/module/StakingContextProvider.tsx index de22c85a2e..41ea16c8c3 100644 --- a/packages/yoroi-extension/app/UI/features/staking/module/StakingContextProvider.tsx +++ b/packages/yoroi-extension/app/UI/features/staking/module/StakingContextProvider.tsx @@ -117,12 +117,6 @@ export const StakingContextProvider = observer(({ children, stores }: StakingPro [initialState, currentPool] ); - React.useEffect(() => { - const currentPool2 = delegationStore.getDelegatedPoolId(selectedWallet.publicDeriverId); - - console.log('currentPool222222222', { delegationStore, networkId, currentPool2, selectedWallet: selectedWallet }); - }, [currentPool, delegationStore, selectedWallet.publicDeriverId]); - const actions = React.useRef({ getTokenInfo: genLookupOrFail(tokenInfoStore.tokenInfo), }).current; diff --git a/packages/yoroi-extension/app/UI/features/staking/useCases/DelegatedStakePoolInfo/DelegatedStakePoolCard.tsx b/packages/yoroi-extension/app/UI/features/staking/useCases/DelegatedStakePoolInfo/DelegatedStakePoolCard.tsx index a9a284f0ff..a19d277364 100644 --- a/packages/yoroi-extension/app/UI/features/staking/useCases/DelegatedStakePoolInfo/DelegatedStakePoolCard.tsx +++ b/packages/yoroi-extension/app/UI/features/staking/useCases/DelegatedStakePoolInfo/DelegatedStakePoolCard.tsx @@ -123,7 +123,7 @@ const AvatarWrapper = styled(Box)({ overflow: 'hidden', }); -const AvatarImg = styled('img')(({ theme }:any) => ({ +const AvatarImg = styled('img')(({ theme }: any) => ({ width: '100%', background: theme.palette.ds.primary_100, objectFit: 'scale-down', diff --git a/packages/yoroi-extension/app/UI/features/staking/useCases/DelegatedStakePoolInfo/UndelegateButton.tsx b/packages/yoroi-extension/app/UI/features/staking/useCases/DelegatedStakePoolInfo/UndelegateButton.tsx index 8345b739d8..66a3d2c733 100644 --- a/packages/yoroi-extension/app/UI/features/staking/useCases/DelegatedStakePoolInfo/UndelegateButton.tsx +++ b/packages/yoroi-extension/app/UI/features/staking/useCases/DelegatedStakePoolInfo/UndelegateButton.tsx @@ -70,10 +70,6 @@ export const UndelegateButton = ({ poolTransition, delegateToSpecificPool, poolI }); showTxResultModal(TransactionResult.SUCCESS); - - // ampli.claimAdaTransactionSubmitted({ - // reward_amount: signRequest.withdrawals()[0]?.amount.getDefaultEntry().amount.toNumber(), - // }); } catch (_error) { showTxResultModal(TransactionResult.FAIL); } diff --git a/packages/yoroi-extension/app/UI/features/staking/useCases/LegacyDialogs/LegacyDialogs.tsx.tsx b/packages/yoroi-extension/app/UI/features/staking/useCases/LegacyDialogs/LegacyDialogs.tsx.tsx index 6204069a16..790b834290 100644 --- a/packages/yoroi-extension/app/UI/features/staking/useCases/LegacyDialogs/LegacyDialogs.tsx.tsx +++ b/packages/yoroi-extension/app/UI/features/staking/useCases/LegacyDialogs/LegacyDialogs.tsx.tsx @@ -12,7 +12,7 @@ export const LegacyDialogs = observer(() => { const showRewardAmount = errorIfPresent == null && stores.delegation.isExecutedDelegatedBalance(selectedWallet.publicDeriverId); const isParticipatingToGovernance = stores.delegation.governanceStatus?.drepDelegation !== null; - const isStakeRegistered = stores.delegation.isStakeRegistered(selectedWallet.publicDeriverId); + const isStakeRegistered = stores.delegation.isStakeRegistered(selectedWallet.publicDeriverId); const onClose = () => { legacyUIDialogs.closeActiveDialog(); diff --git a/packages/yoroi-extension/app/UI/features/staking/useCases/RewardsSummary/RewardsSummaryCard.tsx b/packages/yoroi-extension/app/UI/features/staking/useCases/RewardsSummary/RewardsSummaryCard.tsx index 6a3c00c8b2..f7c8709370 100644 --- a/packages/yoroi-extension/app/UI/features/staking/useCases/RewardsSummary/RewardsSummaryCard.tsx +++ b/packages/yoroi-extension/app/UI/features/staking/useCases/RewardsSummary/RewardsSummaryCard.tsx @@ -1,8 +1,6 @@ import { ReactNode } from 'react'; import { Box, styled } from '@mui/system'; import { Divider, Typography } from '@mui/material'; -// import loadingSpinnerStyles from '../dashboard/LoadingSpinner.scss' -// import LoadingSpinner from '../../../widgets/LoadingSpinner' import RewardHistoryGraph from './RewardHistoryGraph'; import LoadingSpinner from '../../../../../components/widgets/LoadingSpinner'; import { WithdrawButton } from './WithdrawButton'; @@ -57,8 +55,7 @@ const InfoDetails = styled(Box)({}); export const RewardsSummaryCard = () => { const strings = useStrings(); - const { getTokenInfo, onOpenRewardList, totalRewards, totalDelegated, shouldHideBalance, historyGraphData, toUnitOfAccount } = - useStaking(); + const { getTokenInfo, totalRewards, totalDelegated, shouldHideBalance, historyGraphData, toUnitOfAccount } = useStaking(); const formatTokenEntry = (tokenEntry): ReactNode => { const tokenInfo = getTokenInfo(tokenEntry); From 03288ac29eab68315865100e7ecd874977ca5af6 Mon Sep 17 00:00:00 2001 From: Sorin Chis <kish.sorin@yahoo.com> Date: Wed, 17 Dec 2025 15:06:24 +0200 Subject: [PATCH 03/16] fix ts --- .../UI/features/governace/module/GovernanceContextProvider.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/yoroi-extension/app/UI/features/governace/module/GovernanceContextProvider.tsx b/packages/yoroi-extension/app/UI/features/governace/module/GovernanceContextProvider.tsx index 63304d9b30..4ba2a3721a 100644 --- a/packages/yoroi-extension/app/UI/features/governace/module/GovernanceContextProvider.tsx +++ b/packages/yoroi-extension/app/UI/features/governace/module/GovernanceContextProvider.tsx @@ -6,7 +6,6 @@ import { dRepNormalize } from '../../../../api/ada/lib/cardanoCrypto/utils'; import { unwrapStakingKey } from '../../../../api/ada/lib/storage/bridge/utils'; import { getPrivateStakingKey } from '../../../../api/thunk'; import { DREP_ALWAYS_ABSTAIN, DREP_ALWAYS_NO_CONFIDENCE } from '../common/constants'; -import { getFormattedPairingValue } from '../common/helpers'; import { useGovernanceManagerMaker } from '../common/hooks/useGovernanceManagerMaker'; import { GovernanceActionType, GovernanceReducer, defaultGovernanceActions, defaultGovernanceState } from './state'; From a1508554035f89a6e24229d1df799b7cfce2e15e Mon Sep 17 00:00:00 2001 From: Sorin Chis <kish.sorin@yahoo.com> Date: Wed, 17 Dec 2025 15:06:31 +0200 Subject: [PATCH 04/16] fix ts --- .../staking/useCases/RewardsSummary/RewardHistoryGraph.tsx | 7 ------- 1 file changed, 7 deletions(-) diff --git a/packages/yoroi-extension/app/UI/features/staking/useCases/RewardsSummary/RewardHistoryGraph.tsx b/packages/yoroi-extension/app/UI/features/staking/useCases/RewardsSummary/RewardHistoryGraph.tsx index 3e2f15ae17..d357d54b81 100644 --- a/packages/yoroi-extension/app/UI/features/staking/useCases/RewardsSummary/RewardHistoryGraph.tsx +++ b/packages/yoroi-extension/app/UI/features/staking/useCases/RewardsSummary/RewardHistoryGraph.tsx @@ -145,13 +145,6 @@ const RewardHistoryGraph: React.FC<RewardHistoryGraphProps> = observer(({ graphD const rewardList = rewardsGraphData.items?.perEpochRewards; const title = strings.rewardHistoryLabel; - const onOpenRewardList = async () => { - console.log('OPENNNNNN222'); - stores.uiDialogs.open({ - dialog: RewardHistoryDialog, - }); - }; - return ( <Box p="24px" From 563a7b9a436ca1cf8597990edf31ae62154151af Mon Sep 17 00:00:00 2001 From: Sorin Chis <kish.sorin@yahoo.com> Date: Wed, 17 Dec 2025 15:11:33 +0200 Subject: [PATCH 05/16] fix text --- .../app/UI/features/staking/common/hooks/useStrings.ts | 5 +++++ .../staking/useCases/RewardsSummary/RewardHistoryGraph.tsx | 3 ++- packages/yoroi-extension/app/i18n/locales/en-US.json | 1 + 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/packages/yoroi-extension/app/UI/features/staking/common/hooks/useStrings.ts b/packages/yoroi-extension/app/UI/features/staking/common/hooks/useStrings.ts index d2893a7fe4..35173e7f8f 100644 --- a/packages/yoroi-extension/app/UI/features/staking/common/hooks/useStrings.ts +++ b/packages/yoroi-extension/app/UI/features/staking/common/hooks/useStrings.ts @@ -112,6 +112,10 @@ export const messages = Object.freeze( id: 'button.buyAda', defaultMessage: '!!!Buy ADA', }, + stakePoolLabel: { + id: 'wallet.delegation.transaction.stakePoolLabel', + defaultMessage: '!!!Stake pool', + }, }) ); @@ -145,5 +149,6 @@ export const useStrings = () => { welcomeMessageSubtitleTestnetExtra: intl.formatMessage(messages.welcomeMessageSubtitleTestnetExtra), goToFaucetButton: intl.formatMessage(messages.goToFaucetButton), buyAda: intl.formatMessage(messages.buyAda), + stakePoolLabel: intl.formatMessage(messages.stakePoolLabel), }).current; }; diff --git a/packages/yoroi-extension/app/UI/features/staking/useCases/RewardsSummary/RewardHistoryGraph.tsx b/packages/yoroi-extension/app/UI/features/staking/useCases/RewardsSummary/RewardHistoryGraph.tsx index d357d54b81..fffe8a9c2d 100644 --- a/packages/yoroi-extension/app/UI/features/staking/useCases/RewardsSummary/RewardHistoryGraph.tsx +++ b/packages/yoroi-extension/app/UI/features/staking/useCases/RewardsSummary/RewardHistoryGraph.tsx @@ -33,6 +33,7 @@ type RewardHistoryGraphProps = { /* ---------- RewardHistoryItem ---------- */ export const RewardHistoryItem: React.FC<RewardHistoryItemProps> = ({ poolId, poolName, poolAvatar, historyList }) => { + const strings = useStrings(); const avatarGenerated = getAvatarFromPoolId(poolId); return ( @@ -41,7 +42,7 @@ export const RewardHistoryItem: React.FC<RewardHistoryItemProps> = ({ poolId, po <Box> <Box display="block"> <Typography component="div" color="var(--yoroi-palette-gray-600)"> - Stake Pool + {strings.stakePoolLabel} </Typography> </Box> <Box display="flex"> diff --git a/packages/yoroi-extension/app/i18n/locales/en-US.json b/packages/yoroi-extension/app/i18n/locales/en-US.json index 9ab97585de..c192873bdc 100644 --- a/packages/yoroi-extension/app/i18n/locales/en-US.json +++ b/packages/yoroi-extension/app/i18n/locales/en-US.json @@ -826,6 +826,7 @@ "wallet.delegation.transaction.explanationLine2": "You can switch to delegate to a different stake pool at any time", "wallet.delegation.transaction.explanationLine3": "You can cancel your delegation at any time", "wallet.delegation.transaction.generation": "Generating transaction", + "wallet.delegation.transaction.stakePoolLabel": "Stake pool", "wallet.delegation.transaction.stakePoolHash": "Stake pool id", "wallet.delegation.transaction.stakePoolName": "Stake pool name", "wallet.delegation.transaction.success.button.label": "Dashboard page", From 55b448cf01e83ce139e21f35870612aead64c822 Mon Sep 17 00:00:00 2001 From: Sorin Chis <kish.sorin@yahoo.com> Date: Wed, 17 Dec 2025 16:15:17 +0200 Subject: [PATCH 06/16] fix conditions --- .../app/UI/features/staking/StakingRoot.tsx | 32 +- .../common/components/EmptyWalletBanner.tsx | 2 +- .../components/wallet-empty-banner.inline.svg | 508 ++++++++++++++++++ .../UI/features/staking/common/types/index.ts | 1 + .../staking/module/StakingContextProvider.tsx | 1 + .../app/UI/features/staking/module/state.ts | 1 + 6 files changed, 528 insertions(+), 17 deletions(-) create mode 100644 packages/yoroi-extension/app/UI/features/staking/common/components/wallet-empty-banner.inline.svg diff --git a/packages/yoroi-extension/app/UI/features/staking/StakingRoot.tsx b/packages/yoroi-extension/app/UI/features/staking/StakingRoot.tsx index 6fc5ba8788..5119fb2700 100644 --- a/packages/yoroi-extension/app/UI/features/staking/StakingRoot.tsx +++ b/packages/yoroi-extension/app/UI/features/staking/StakingRoot.tsx @@ -9,25 +9,25 @@ import BuySellDialog from '../../../components/buySell/BuySellDialog'; import WalletEmptyBanner from './common/components/EmptyWalletBanner'; export const StakingRoot = () => { - const { isWalletWithNoFunds, selectedWallet, legacyUIDialogs } = useStaking(); + const { isWalletWithNoFunds, selectedWallet, legacyUIDialogs, currentlyDelegating } = useStaking(); - if (isWalletWithNoFunds) { - return ( - <WalletEmptyBanner - onBuySellClick={() => legacyUIDialogs.open({ dialog: BuySellDialog })} - isTestnet={selectedWallet.isTestnet} - /> - ); - } return ( <Stack> - <WrapperCards> - <RewardsSummaryCard /> - <RightCardsWrapper> - <StakePoolDelegated /> - <EpochProgress /> - </RightCardsWrapper> - </WrapperCards> + {isWalletWithNoFunds ? ( + <WalletEmptyBanner + onBuySellClick={() => legacyUIDialogs.open({ dialog: BuySellDialog })} + isTestnet={selectedWallet.isTestnet} + /> + ) : null} + {currentlyDelegating && ( + <WrapperCards> + <RewardsSummaryCard /> + <RightCardsWrapper> + <StakePoolDelegated /> + <EpochProgress /> + </RightCardsWrapper> + </WrapperCards> + )} <PoolList /> <LegacyDialogs /> </Stack> diff --git a/packages/yoroi-extension/app/UI/features/staking/common/components/EmptyWalletBanner.tsx b/packages/yoroi-extension/app/UI/features/staking/common/components/EmptyWalletBanner.tsx index 04a25be106..ab07a74f77 100644 --- a/packages/yoroi-extension/app/UI/features/staking/common/components/EmptyWalletBanner.tsx +++ b/packages/yoroi-extension/app/UI/features/staking/common/components/EmptyWalletBanner.tsx @@ -1,7 +1,7 @@ import React from 'react'; import { Box } from '@mui/system'; import { Button, Stack, Typography } from '@mui/material'; -import { ReactComponent as CoverBg } from '../../assets/images/transaction/wallet-empty-banner.inline.svg'; +import { ReactComponent as CoverBg } from './wallet-empty-banner.inline.svg'; import { captureEvent } from '../../../../../../posthog'; import { TESTNET_FAUCET } from '../constants'; import { useStrings } from '../hooks/useStrings'; diff --git a/packages/yoroi-extension/app/UI/features/staking/common/components/wallet-empty-banner.inline.svg b/packages/yoroi-extension/app/UI/features/staking/common/components/wallet-empty-banner.inline.svg new file mode 100644 index 0000000000..1aae9ef385 --- /dev/null +++ b/packages/yoroi-extension/app/UI/features/staking/common/components/wallet-empty-banner.inline.svg @@ -0,0 +1,508 @@ +<svg width="473" height="154" viewBox="0 0 473 154" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path d="M213.626 141.823L233.745 153.454M389.822 141.835L405.693 132.66M469.551 113.993C472.206 115.529 472.218 118.019 469.587 119.542L430.821 142.114C428.19 143.649 423.905 143.649 421.25 142.114L382.231 119.542C379.588 118.007 379.576 115.529 382.207 113.993L420.973 91.4221C423.604 89.8867 427.888 89.8867 430.531 91.4221L469.551 113.993ZM246.562 113.727C250.811 116.181 250.835 120.171 246.623 122.625L184.515 158.785C180.291 161.239 173.424 161.239 169.175 158.785L106.645 122.613C102.409 120.159 102.385 116.181 106.597 113.715L168.705 77.5554C172.917 75.1012 179.784 75.1012 184.032 77.5554L246.55 113.715L246.562 113.727ZM317.194 119.566C366.053 119.703 405.596 142.796 405.517 171.145C405.438 199.495 365.767 222.367 316.908 222.23C268.05 222.093 228.506 199 228.585 170.651C228.664 142.301 268.336 119.429 317.194 119.566Z" stroke="url(#paint0_linear_14238_54695)"/> +<path d="M462.767 115.25C462.767 115.25 462.767 115.371 462.743 115.42C462.743 115.468 462.718 115.516 462.706 115.565C462.694 115.625 462.682 115.674 462.658 115.734C462.646 115.782 462.622 115.819 462.598 115.867C462.574 115.927 462.55 115.976 462.513 116.036C462.489 116.073 462.465 116.121 462.441 116.157C462.405 116.218 462.356 116.29 462.308 116.351C462.284 116.387 462.248 116.423 462.224 116.459C462.151 116.544 462.079 116.629 461.994 116.713C461.97 116.737 461.934 116.774 461.91 116.798C461.862 116.846 461.801 116.895 461.741 116.931C461.693 116.967 461.644 117.016 461.584 117.052C461.524 117.1 461.451 117.136 461.391 117.185C461.318 117.233 461.258 117.269 461.186 117.318L429.866 135.549C429.697 135.646 429.528 135.73 429.347 135.815C429.299 135.839 429.239 135.863 429.191 135.887C429.046 135.948 428.913 135.996 428.756 136.044C428.708 136.057 428.647 136.081 428.599 136.093C428.503 136.117 428.406 136.153 428.322 136.177C428.249 136.202 428.177 136.214 428.104 136.238C428.008 136.262 427.899 136.286 427.803 136.298C427.73 136.31 427.67 136.323 427.597 136.335C427.392 136.371 427.187 136.395 426.97 136.419C426.91 136.419 426.837 136.419 426.777 136.431C426.656 136.431 426.535 136.456 426.403 136.456C426.318 136.456 426.246 136.456 426.161 136.456C426.065 136.456 425.956 136.456 425.86 136.456C425.775 136.456 425.691 136.456 425.606 136.456C425.509 136.456 425.425 136.456 425.328 136.443C425.244 136.443 425.159 136.431 425.075 136.419C424.978 136.419 424.894 136.395 424.797 136.383C424.713 136.383 424.628 136.359 424.556 136.347C424.459 136.335 424.363 136.31 424.266 136.298C424.194 136.286 424.122 136.274 424.037 136.25C423.916 136.226 423.808 136.202 423.699 136.165C423.639 136.153 423.578 136.129 423.518 136.117C423.313 136.057 423.12 135.996 422.927 135.924C422.903 135.924 422.878 135.899 422.854 135.887C422.601 135.778 422.347 135.67 422.118 135.537L390.594 117.306C389.52 116.689 388.976 115.867 388.988 115.045V116.834C388.988 117.656 389.52 118.466 390.594 119.095L422.118 137.326C422.347 137.459 422.601 137.58 422.854 137.677C422.866 137.677 422.891 137.689 422.903 137.701H422.927C423.12 137.773 423.313 137.846 423.518 137.894C423.53 137.894 423.554 137.894 423.566 137.906C423.615 137.918 423.663 137.93 423.711 137.943C423.82 137.967 423.941 138.003 424.049 138.027C424.085 138.027 424.109 138.039 424.134 138.051C424.182 138.051 424.23 138.063 424.266 138.076C424.363 138.088 424.459 138.112 424.556 138.124C424.592 138.124 424.628 138.136 424.677 138.148C424.725 138.148 424.761 138.148 424.81 138.16C424.906 138.16 424.991 138.184 425.087 138.196C425.135 138.196 425.172 138.196 425.22 138.208C425.256 138.208 425.304 138.208 425.341 138.208C425.437 138.208 425.522 138.208 425.618 138.221C425.666 138.221 425.715 138.221 425.751 138.221C425.787 138.221 425.823 138.221 425.86 138.221C425.956 138.221 426.065 138.221 426.161 138.221C426.21 138.221 426.258 138.221 426.306 138.221C426.33 138.221 426.366 138.221 426.391 138.221C426.511 138.221 426.632 138.208 426.765 138.196C426.813 138.196 426.861 138.196 426.91 138.196C426.922 138.196 426.934 138.196 426.958 138.196C427.163 138.172 427.38 138.148 427.573 138.112C427.573 138.112 427.597 138.112 427.61 138.112C427.67 138.112 427.73 138.088 427.791 138.076C427.887 138.051 427.996 138.039 428.092 138.015C428.165 138.003 428.237 137.979 428.31 137.955C428.406 137.93 428.503 137.906 428.587 137.87C428.611 137.87 428.623 137.87 428.647 137.858C428.684 137.858 428.708 137.834 428.744 137.822C428.889 137.773 429.034 137.713 429.166 137.664C429.215 137.64 429.275 137.616 429.323 137.592C429.504 137.507 429.673 137.423 429.842 137.326L461.162 119.095C461.162 119.095 461.21 119.071 461.234 119.059C461.282 119.034 461.331 118.998 461.379 118.962C461.451 118.914 461.512 118.877 461.572 118.829C461.62 118.793 461.681 118.744 461.729 118.708C461.789 118.66 461.849 118.611 461.898 118.575C461.898 118.575 461.922 118.563 461.934 118.551C461.958 118.527 461.97 118.515 461.994 118.49C462.079 118.406 462.151 118.321 462.224 118.237C462.236 118.212 462.26 118.2 462.272 118.188C462.284 118.164 462.296 118.152 462.308 118.128C462.356 118.067 462.393 118.007 462.441 117.934C462.453 117.91 462.477 117.886 462.489 117.85C462.489 117.838 462.501 117.826 462.513 117.813C462.55 117.753 462.574 117.705 462.598 117.644C462.61 117.608 462.634 117.584 462.646 117.547C462.646 117.547 462.646 117.523 462.646 117.511C462.67 117.451 462.682 117.402 462.694 117.342C462.694 117.306 462.718 117.269 462.731 117.233V117.209C462.731 117.149 462.743 117.088 462.755 117.04C462.755 117.003 462.755 116.967 462.767 116.931C462.767 116.919 462.767 116.895 462.767 116.883V115.093C462.767 115.093 462.767 115.202 462.767 115.25Z" fill="url(#paint1_linear_14238_54695)"/> +<path d="M461.173 112.832C463.31 114.065 463.322 116.084 461.198 117.317L429.878 135.548C427.754 136.781 424.29 136.781 422.142 135.548L390.618 117.317C388.481 116.084 388.469 114.065 390.593 112.832L421.913 94.6006C424.037 93.3675 427.501 93.3675 429.637 94.6006L461.161 112.832H461.173Z" fill="url(#paint2_linear_14238_54695)"/> +<path d="M458.699 108.503C458.699 108.503 458.699 108.6 458.687 108.66C458.687 108.697 458.663 108.745 458.651 108.781C458.639 108.83 458.627 108.878 458.614 108.926C458.602 108.963 458.578 109.011 458.566 109.047C458.542 109.096 458.518 109.144 458.494 109.204C458.47 109.241 458.446 109.277 458.433 109.313C458.397 109.374 458.361 109.422 458.325 109.482C458.301 109.519 458.277 109.543 458.24 109.579C458.18 109.652 458.108 109.724 458.035 109.797C458.011 109.821 457.987 109.845 457.951 109.881C457.902 109.918 457.854 109.966 457.806 110.002C457.758 110.039 457.721 110.075 457.673 110.111C457.613 110.147 457.552 110.184 457.504 110.232C457.444 110.268 457.383 110.317 457.323 110.353L429.456 126.577C429.311 126.662 429.154 126.734 428.997 126.807C428.949 126.831 428.9 126.843 428.864 126.867C428.744 126.916 428.611 126.964 428.478 127.012C428.43 127.024 428.381 127.049 428.333 127.061C428.249 127.085 428.164 127.109 428.08 127.133C428.019 127.145 427.959 127.169 427.887 127.182C427.802 127.206 427.706 127.218 427.621 127.242C427.561 127.254 427.5 127.266 427.44 127.278C427.259 127.315 427.078 127.339 426.885 127.351C426.825 127.351 426.764 127.351 426.716 127.363C426.607 127.363 426.499 127.375 426.39 127.387C426.318 127.387 426.245 127.387 426.185 127.387C426.1 127.387 426.004 127.387 425.919 127.387C425.847 127.387 425.775 127.387 425.702 127.387C425.618 127.387 425.533 127.387 425.461 127.375C425.388 127.375 425.316 127.375 425.231 127.351C425.147 127.351 425.075 127.339 424.99 127.327C424.918 127.327 424.845 127.302 424.773 127.29C424.688 127.278 424.604 127.266 424.519 127.242C424.447 127.23 424.387 127.218 424.314 127.206C424.206 127.182 424.109 127.157 424.012 127.133C423.952 127.121 423.904 127.109 423.843 127.085C423.662 127.037 423.493 126.976 423.324 126.904C423.3 126.904 423.276 126.879 423.252 126.879C423.023 126.783 422.793 126.686 422.588 126.565L394.54 110.341C393.586 109.785 393.104 109.059 393.104 108.334V109.918C393.104 110.643 393.574 111.368 394.528 111.925L422.576 128.149C422.781 128.27 422.999 128.366 423.24 128.463C423.252 128.463 423.264 128.475 423.288 128.487H423.312C423.481 128.548 423.65 128.608 423.831 128.669C423.843 128.669 423.856 128.669 423.868 128.681C423.904 128.681 423.952 128.705 423.988 128.717C424.085 128.741 424.193 128.765 424.29 128.789C424.314 128.789 424.338 128.802 424.375 128.814C424.411 128.814 424.459 128.826 424.495 128.838C424.58 128.85 424.664 128.874 424.749 128.886C424.785 128.886 424.821 128.898 424.857 128.898C424.893 128.898 424.93 128.898 424.978 128.91C425.062 128.91 425.135 128.935 425.219 128.935C425.256 128.935 425.292 128.935 425.34 128.947C425.376 128.947 425.412 128.947 425.449 128.947C425.533 128.947 425.618 128.947 425.69 128.959C425.726 128.959 425.775 128.959 425.811 128.959C425.847 128.959 425.871 128.959 425.907 128.959C425.992 128.959 426.088 128.959 426.173 128.959C426.221 128.959 426.257 128.959 426.306 128.959C426.33 128.959 426.354 128.959 426.39 128.959C426.499 128.959 426.607 128.947 426.716 128.935C426.764 128.935 426.8 128.935 426.849 128.935C426.861 128.935 426.873 128.935 426.885 128.935C427.066 128.91 427.259 128.886 427.44 128.862H427.464C427.512 128.862 427.573 128.838 427.621 128.826C427.706 128.814 427.802 128.789 427.887 128.765C427.947 128.753 428.019 128.729 428.08 128.717C428.164 128.693 428.249 128.669 428.333 128.644C428.345 128.644 428.369 128.644 428.393 128.632C428.418 128.632 428.454 128.608 428.478 128.596C428.611 128.548 428.731 128.499 428.864 128.451C428.912 128.427 428.961 128.415 429.009 128.391C429.166 128.318 429.323 128.245 429.468 128.161L457.335 111.937C457.335 111.937 457.371 111.912 457.396 111.9C457.444 111.876 457.48 111.84 457.516 111.816C457.577 111.78 457.637 111.743 457.685 111.695C457.733 111.659 457.782 111.622 457.818 111.586C457.866 111.55 457.914 111.501 457.963 111.465C457.963 111.465 457.987 111.453 457.987 111.441C458.011 111.429 458.023 111.405 458.035 111.393C458.108 111.32 458.18 111.248 458.24 111.175C458.252 111.163 458.277 111.139 458.289 111.127C458.301 111.115 458.313 111.09 458.325 111.078C458.361 111.018 458.409 110.97 458.433 110.909C458.446 110.885 458.47 110.861 458.482 110.837C458.482 110.824 458.482 110.812 458.494 110.8C458.518 110.752 458.542 110.704 458.566 110.643C458.578 110.619 458.59 110.583 458.602 110.558C458.602 110.558 458.602 110.534 458.602 110.522C458.615 110.474 458.627 110.425 458.639 110.377C458.639 110.341 458.663 110.317 458.663 110.28C458.663 110.28 458.663 110.268 458.663 110.256C458.663 110.208 458.675 110.147 458.675 110.099C458.675 110.063 458.675 110.039 458.675 110.002C458.675 109.99 458.675 109.978 458.675 109.954V108.37C458.675 108.37 458.675 108.467 458.675 108.515L458.699 108.503Z" fill="url(#paint3_linear_14238_54695)"/> +<path d="M457.275 106.352C459.182 107.452 459.194 109.241 457.299 110.342L429.431 126.566C427.537 127.666 424.459 127.666 422.552 126.566L394.504 110.342C392.597 109.241 392.597 107.452 394.479 106.352L422.347 90.1278C424.242 89.0277 427.319 89.0277 429.226 90.1278L457.275 106.352Z" fill="url(#paint4_linear_14238_54695)"/> +<path d="M455.079 103.162C455.079 103.162 455.079 103.259 455.067 103.295C455.067 103.332 455.055 103.368 455.043 103.404C455.043 103.452 455.019 103.489 455.007 103.537C454.995 103.573 454.983 103.61 454.959 103.646C454.934 103.694 454.922 103.73 454.898 103.779C454.886 103.815 454.862 103.839 454.838 103.876C454.802 103.924 454.778 103.972 454.741 104.033C454.717 104.057 454.693 104.093 454.669 104.117C454.609 104.19 454.548 104.25 454.488 104.311C454.464 104.335 454.44 104.359 454.416 104.383C454.379 104.42 454.331 104.456 454.283 104.492C454.247 104.528 454.21 104.553 454.162 104.589C454.114 104.625 454.065 104.661 454.005 104.698C453.957 104.734 453.897 104.77 453.836 104.806L429.046 119.241C428.914 119.314 428.781 119.386 428.636 119.447C428.6 119.471 428.551 119.483 428.515 119.495C428.407 119.544 428.286 119.58 428.177 119.628C428.141 119.64 428.093 119.652 428.057 119.677C427.984 119.701 427.912 119.725 427.839 119.737C427.779 119.749 427.731 119.773 427.67 119.785C427.586 119.81 427.514 119.822 427.429 119.834C427.381 119.834 427.32 119.858 427.272 119.87C427.115 119.894 426.946 119.918 426.777 119.943C426.729 119.943 426.681 119.943 426.62 119.955C426.524 119.955 426.427 119.967 426.331 119.979C426.27 119.979 426.21 119.979 426.15 119.979C426.065 119.979 425.993 119.979 425.908 119.979C425.848 119.979 425.776 119.979 425.715 119.979C425.643 119.979 425.57 119.979 425.498 119.979C425.426 119.979 425.365 119.979 425.293 119.967C425.22 119.967 425.148 119.955 425.076 119.943C425.015 119.943 424.943 119.93 424.882 119.918C424.81 119.918 424.726 119.894 424.653 119.882C424.593 119.882 424.532 119.858 424.472 119.846C424.376 119.822 424.291 119.797 424.207 119.773C424.158 119.761 424.11 119.749 424.062 119.737C423.905 119.689 423.748 119.64 423.591 119.58C423.567 119.58 423.555 119.568 423.531 119.556C423.326 119.471 423.132 119.374 422.939 119.278L397.98 104.843C397.124 104.347 396.701 103.706 396.701 103.053V104.468C396.701 105.109 397.124 105.762 397.968 106.257L422.927 120.692C423.108 120.801 423.313 120.886 423.519 120.97C423.531 120.97 423.543 120.982 423.555 120.994C423.555 120.994 423.567 120.994 423.579 120.994C423.724 121.055 423.881 121.103 424.05 121.152C424.062 121.152 424.074 121.152 424.086 121.164C424.122 121.164 424.158 121.176 424.195 121.188C424.279 121.212 424.376 121.236 424.46 121.248C424.484 121.248 424.508 121.26 424.532 121.26C424.569 121.26 424.605 121.272 424.641 121.285C424.713 121.297 424.798 121.309 424.87 121.321C424.907 121.321 424.931 121.321 424.967 121.333C425.003 121.333 425.039 121.333 425.064 121.333C425.136 121.333 425.208 121.345 425.281 121.357C425.317 121.357 425.353 121.357 425.389 121.357C425.426 121.357 425.45 121.357 425.486 121.357C425.558 121.357 425.631 121.357 425.703 121.357C425.739 121.357 425.776 121.357 425.812 121.357C425.836 121.357 425.872 121.357 425.896 121.357C425.981 121.357 426.053 121.357 426.138 121.357C426.174 121.357 426.222 121.357 426.258 121.357C426.282 121.357 426.307 121.357 426.331 121.357C426.427 121.357 426.524 121.357 426.62 121.333C426.657 121.333 426.705 121.333 426.741 121.333C426.753 121.333 426.765 121.333 426.777 121.333C426.946 121.321 427.103 121.297 427.272 121.26C427.272 121.26 427.284 121.26 427.296 121.26C427.345 121.26 427.393 121.236 427.441 121.224C427.526 121.212 427.598 121.188 427.682 121.176C427.743 121.164 427.803 121.139 427.851 121.127C427.924 121.103 427.996 121.091 428.069 121.067C428.081 121.067 428.105 121.067 428.117 121.055C428.141 121.055 428.165 121.031 428.189 121.031C428.31 120.994 428.419 120.946 428.527 120.898C428.564 120.886 428.612 120.861 428.648 120.849C428.793 120.789 428.926 120.716 429.058 120.644L453.848 106.209C453.848 106.209 453.884 106.185 453.897 106.173C453.933 106.148 453.969 106.124 454.005 106.1C454.053 106.064 454.114 106.028 454.162 105.991C454.21 105.955 454.247 105.931 454.283 105.895C454.331 105.858 454.379 105.822 454.416 105.786C454.416 105.786 454.44 105.774 454.44 105.762C454.452 105.749 454.464 105.725 454.488 105.713C454.56 105.653 454.621 105.58 454.669 105.52C454.681 105.508 454.693 105.496 454.705 105.471C454.705 105.459 454.729 105.447 454.729 105.423C454.765 105.375 454.802 105.326 454.826 105.266C454.838 105.242 454.862 105.23 454.874 105.205C454.874 105.205 454.874 105.181 454.886 105.169C454.91 105.121 454.934 105.085 454.947 105.036C454.947 105.012 454.971 104.988 454.983 104.964V104.939C454.995 104.891 455.007 104.855 455.019 104.806C455.019 104.782 455.043 104.746 455.043 104.722C455.043 104.722 455.043 104.71 455.043 104.698C455.043 104.649 455.043 104.601 455.055 104.565C455.055 104.54 455.055 104.504 455.055 104.48C455.055 104.468 455.055 104.456 455.055 104.444V103.029C455.055 103.029 455.055 103.114 455.055 103.15L455.079 103.162Z" fill="url(#paint5_linear_14238_54695)"/> +<path d="M453.812 101.251C455.502 102.231 455.514 103.826 453.836 104.806L429.046 119.241C427.357 120.22 424.617 120.22 422.927 119.241L397.969 104.806C396.279 103.826 396.267 102.231 397.957 101.251L422.746 86.8165C424.424 85.8372 427.176 85.8372 428.865 86.8165L453.824 101.251H453.812Z" fill="url(#paint6_linear_14238_54695)"/> +<path d="M448.042 100.162C449.382 100.936 449.394 102.205 448.066 102.979L428.406 114.428C427.066 115.201 424.894 115.201 423.554 114.428L403.761 102.979C402.421 102.205 402.409 100.936 403.749 100.162L423.409 88.7131C424.749 87.9394 426.921 87.9394 428.261 88.7131L448.054 100.162H448.042Z" fill="#69E2F3"/> +<path d="M403.737 101.734L423.397 90.2848C424.737 89.511 426.909 89.511 428.249 90.2848L448.042 101.734C448.368 101.915 448.61 102.133 448.779 102.362C449.322 101.637 449.08 100.754 448.042 100.162L428.249 88.7131C426.909 87.9394 424.737 87.9394 423.397 88.7131L403.737 100.162C402.723 100.754 402.482 101.625 403.025 102.35C403.194 102.12 403.423 101.915 403.737 101.734Z" fill="#1BCFF2"/> +<path d="M449.056 101.517V64.3896C449.056 64.3896 449.056 64.3534 449.056 64.3292V64.3171C449.032 63.8214 448.706 63.3378 448.055 62.951L428.261 51.5022C426.922 50.7284 424.749 50.7284 423.41 51.5022L403.737 62.951C403.085 63.3257 402.759 63.8214 402.747 64.3171V64.3413C402.747 64.3413 402.747 64.3655 402.747 64.3896V101.529C402.723 102.061 403.049 102.593 403.749 102.992L423.542 114.44C424.882 115.214 427.067 115.214 428.406 114.44L448.079 102.992C448.767 102.593 449.093 102.061 449.068 101.529L449.056 101.517Z" fill="url(#paint7_linear_14238_54695)"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M426.531 100.106C419.12 96.6205 413.115 86.9419 413.115 78.4117C413.115 75.2128 413.967 72.6702 415.372 70.9067L414.223 71.2348L416.948 69.4303C416.991 69.3893 417.044 69.3585 417.097 69.3278C417.151 69.297 417.204 69.2663 417.246 69.2252L417.332 69.1432C419.759 67.6668 422.996 67.5438 426.531 69.2252C433.941 72.7112 439.946 82.3897 439.946 90.92C439.946 94.98 438.583 98.0148 436.369 99.7373L436.326 99.7783C436.198 99.8603 436.081 99.9424 435.964 100.024C435.847 100.106 435.73 100.188 435.602 100.27L432.962 102.075L433.089 101.214C431.13 101.542 428.916 101.214 426.531 100.106ZM426.531 76.2381C422.485 74.3516 419.205 76.5662 419.205 81.2414C419.205 85.8756 422.485 91.207 426.531 93.1346C430.577 95.0211 433.856 92.8065 433.856 88.1312C433.856 83.456 430.577 78.1246 426.531 76.2381Z" fill="url(#paint8_linear_14238_54695)"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M410.09 80.5853C410.09 72.0961 416.095 67.995 423.505 71.4399C430.873 74.8848 436.878 84.6044 436.921 93.1346C436.921 101.624 430.916 105.725 423.505 102.28C416.095 98.7941 410.09 89.1156 410.09 80.5853ZM416.18 83.374C416.18 88.0493 419.459 93.3807 423.505 95.2672C427.551 97.1947 430.831 94.9391 430.831 90.2639C430.831 85.5886 427.551 80.2572 423.505 78.3707C419.459 76.4842 416.18 78.6988 416.18 83.374Z" fill="url(#paint9_linear_14238_54695)"/> +<ellipse cx="10.0133" cy="15.7174" rx="10.0133" ry="15.7174" transform="matrix(0.891521 -0.45298 0.481815 0.876273 407 77.4546)" fill="url(#paint10_linear_14238_54695)"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M425.806 89.4236L419.278 85.5919C418.562 87.2934 417.652 89.4034 416.904 91.084C416.819 91.2071 416.691 91.2071 416.521 91.1251C416.265 91.002 416.223 90.92 416.223 90.6739V90.5919L418.556 85.1681L416.478 83.9482C416.35 83.8661 416.265 83.7021 416.265 83.538V83.1689C416.265 83.0049 416.35 82.9639 416.478 83.0049L418.88 84.415L419.675 82.5685L417.628 81.3645C417.5 81.2825 417.415 81.1184 417.415 80.9544V80.5443C417.415 80.3802 417.5 80.3392 417.628 80.3802L420.013 81.7831L421.887 77.4274C422.057 77.0994 422.483 76.8533 422.867 77.0994C423.292 77.3454 423.505 77.8375 423.633 78.3297L425.582 85.059L427.807 86.3678C427.935 86.4498 428.02 86.6139 428.02 86.7779V87.147C428.02 87.3521 427.935 87.4341 427.807 87.3521L425.926 86.2454L426.73 89.0226L428.914 90.3048C429.042 90.3869 429.127 90.5509 429.127 90.7149V91.084C429.17 91.2481 429.042 91.3301 428.914 91.2481L427.059 90.159L429.085 97.1536C429.212 97.4817 429.383 98.0149 429.042 98.0969C428.573 98.2199 428.361 97.8918 428.275 97.6048L425.806 89.4236ZM424.756 85.5572L425.534 88.3204L419.676 84.8821L420.446 83.0222L424.756 85.5572ZM424.424 84.3776L420.774 82.2308L422.27 78.6168C422.483 78.0426 422.696 78.2887 422.952 79.1499L424.424 84.3776Z" fill="white"/> +<path d="M238.512 116.736C238.512 116.833 238.5 116.93 238.476 117.026C238.464 117.111 238.44 117.184 238.416 117.256C238.392 117.353 238.368 117.438 238.343 117.534C238.319 117.607 238.283 117.679 238.247 117.764C238.211 117.861 238.162 117.957 238.114 118.054C238.078 118.127 238.03 118.187 237.993 118.26C237.921 118.368 237.861 118.477 237.776 118.586C237.728 118.646 237.68 118.707 237.631 118.767C237.511 118.912 237.378 119.045 237.245 119.191C237.197 119.239 237.149 119.287 237.1 119.336C237.016 119.42 236.919 119.493 236.823 119.565C236.738 119.638 236.654 119.698 236.569 119.771C236.461 119.843 236.352 119.916 236.243 119.988C236.123 120.061 236.014 120.146 235.893 120.218L183.321 150.829C183.043 150.986 182.753 151.131 182.452 151.264C182.367 151.3 182.283 151.337 182.186 151.373C181.957 151.47 181.715 151.566 181.462 151.651C181.377 151.675 181.293 151.711 181.196 151.736C181.04 151.784 180.883 151.832 180.726 151.869C180.605 151.905 180.484 151.941 180.364 151.965C180.195 152.002 180.026 152.038 179.857 152.074C179.748 152.098 179.627 152.122 179.519 152.147C179.181 152.207 178.831 152.255 178.469 152.292C178.36 152.292 178.252 152.316 178.143 152.316C177.938 152.328 177.733 152.352 177.515 152.352C177.383 152.352 177.25 152.352 177.117 152.352C176.948 152.352 176.779 152.352 176.61 152.352C176.465 152.352 176.333 152.352 176.188 152.352C176.031 152.352 175.874 152.34 175.717 152.328C175.572 152.328 175.439 152.304 175.295 152.292C175.138 152.28 174.993 152.255 174.836 152.243C174.703 152.231 174.558 152.207 174.426 152.183C174.257 152.159 174.1 152.135 173.943 152.098C173.822 152.074 173.689 152.05 173.569 152.026C173.376 151.977 173.183 151.941 172.989 151.881C172.881 151.856 172.784 151.832 172.676 151.796C172.338 151.699 172.012 151.59 171.686 151.458C171.638 151.445 171.601 151.421 171.553 151.397C171.119 151.216 170.696 151.022 170.31 150.805L117.387 120.206C115.577 119.166 114.684 117.788 114.684 116.422V119.42C114.672 120.786 115.577 122.165 117.375 123.204L170.298 153.815C170.684 154.045 171.107 154.238 171.541 154.407C171.565 154.407 171.589 154.432 171.626 154.444C171.638 154.444 171.662 154.444 171.674 154.456C171.988 154.577 172.326 154.685 172.664 154.794C172.688 154.794 172.712 154.818 172.748 154.818C172.82 154.843 172.905 154.855 172.977 154.879C173.17 154.927 173.352 154.976 173.545 155.024C173.593 155.024 173.641 155.048 173.702 155.06C173.774 155.072 173.858 155.084 173.931 155.096C174.088 155.133 174.257 155.157 174.414 155.181C174.474 155.181 174.546 155.205 174.607 155.217C174.679 155.217 174.752 155.229 174.824 155.242C174.981 155.266 175.126 155.278 175.283 155.29C175.355 155.29 175.427 155.314 175.5 155.314C175.572 155.314 175.633 155.314 175.705 155.314C175.862 155.314 176.019 155.338 176.176 155.338C176.248 155.338 176.333 155.338 176.405 155.35C176.465 155.35 176.526 155.35 176.586 155.35C176.755 155.35 176.924 155.35 177.093 155.35C177.177 155.35 177.262 155.35 177.346 155.35C177.395 155.35 177.443 155.35 177.491 155.35C177.696 155.35 177.902 155.326 178.107 155.314C178.191 155.314 178.276 155.314 178.36 155.302C178.384 155.302 178.408 155.302 178.433 155.302C178.783 155.266 179.133 155.217 179.471 155.157C179.483 155.157 179.507 155.157 179.519 155.157C179.615 155.133 179.712 155.109 179.821 155.096C179.99 155.06 180.158 155.024 180.327 154.988C180.448 154.963 180.569 154.927 180.69 154.891C180.846 154.843 181.003 154.806 181.16 154.758C181.196 154.758 181.233 154.734 181.257 154.734C181.317 154.71 181.365 154.685 181.426 154.673C181.667 154.589 181.908 154.504 182.15 154.395C182.234 154.359 182.331 154.323 182.415 154.286C182.717 154.153 183.007 154.008 183.284 153.851L235.857 123.241C235.857 123.241 235.93 123.192 235.966 123.18C236.05 123.132 236.123 123.071 236.207 123.023C236.316 122.95 236.437 122.878 236.533 122.805C236.63 122.745 236.702 122.672 236.787 122.6C236.883 122.527 236.98 122.443 237.064 122.37C237.076 122.358 237.1 122.334 237.125 122.322C237.161 122.285 237.185 122.249 237.221 122.225C237.366 122.092 237.487 121.947 237.607 121.802C237.631 121.766 237.668 121.741 237.692 121.705C237.716 121.669 237.728 121.645 237.752 121.608C237.837 121.5 237.897 121.391 237.969 121.282C237.993 121.234 238.03 121.197 238.054 121.149C238.066 121.125 238.078 121.101 238.09 121.076C238.138 120.98 238.187 120.883 238.223 120.786C238.247 120.726 238.283 120.678 238.295 120.617C238.295 120.593 238.295 120.581 238.307 120.557C238.343 120.46 238.368 120.375 238.392 120.279C238.404 120.218 238.428 120.158 238.44 120.097C238.44 120.085 238.44 120.061 238.44 120.049C238.452 119.952 238.464 119.855 238.476 119.759C238.476 119.698 238.5 119.638 238.5 119.577C238.5 119.553 238.5 119.529 238.5 119.493V116.495C238.5 116.579 238.5 116.676 238.488 116.761L238.512 116.736Z" fill="url(#paint11_linear_14238_54695)"/> +<path d="M235.821 112.674C239.418 114.754 239.43 118.127 235.87 120.206L183.297 150.817C179.724 152.896 173.907 152.896 170.31 150.817L117.388 120.206C113.803 118.127 113.779 114.754 117.351 112.674L169.924 82.0635C173.497 79.9841 179.302 79.9841 182.899 82.0635L235.821 112.674Z" fill="url(#paint12_linear_14238_54695)"/> +<path d="M220.288 110.161C220.288 110.161 220.276 110.21 220.264 110.234C220.192 110.439 220.083 110.645 219.95 110.838C219.926 110.874 219.902 110.911 219.878 110.947C219.733 111.153 219.564 111.346 219.347 111.527C219.323 111.551 219.299 111.564 219.274 111.588C219.045 111.781 218.792 111.963 218.502 112.132L181.317 133.772C181.04 133.941 180.726 134.074 180.412 134.207C180.328 134.244 180.243 134.268 180.159 134.304C179.965 134.377 179.76 134.437 179.555 134.485C179.338 134.546 179.133 134.606 178.903 134.642C178.638 134.691 178.384 134.739 178.107 134.775C178.047 134.775 177.974 134.8 177.914 134.8C177.552 134.836 177.19 134.86 176.815 134.86C176.755 134.86 176.695 134.86 176.646 134.86C176.284 134.86 175.922 134.836 175.572 134.8C175.524 134.8 175.464 134.8 175.415 134.788C175.065 134.739 174.715 134.691 174.365 134.606C174.305 134.594 174.245 134.582 174.184 134.558C173.871 134.485 173.569 134.389 173.279 134.28C173.231 134.256 173.171 134.244 173.122 134.219C172.772 134.086 172.446 133.929 172.133 133.748L134.706 112.108C133.427 111.37 132.8 110.403 132.8 109.436L132.775 116.145C132.775 117.113 133.415 118.08 134.682 118.817L172.109 140.458C172.398 140.627 172.712 140.772 173.038 140.905C173.05 140.905 173.074 140.905 173.086 140.917C173.134 140.941 173.195 140.953 173.243 140.965C173.436 141.038 173.617 141.098 173.822 141.159C173.931 141.195 174.04 141.207 174.148 141.243C174.209 141.255 174.269 141.28 174.329 141.292C174.39 141.304 174.438 141.316 174.498 141.328C174.715 141.376 174.921 141.413 175.138 141.437C175.21 141.437 175.295 141.449 175.367 141.461C175.415 141.461 175.476 141.473 175.524 141.485C175.609 141.485 175.681 141.509 175.765 141.509C175.983 141.521 176.188 141.534 176.405 141.546C176.478 141.546 176.538 141.546 176.61 141.546C176.671 141.546 176.731 141.546 176.779 141.546C176.876 141.546 176.972 141.546 177.069 141.546C177.31 141.546 177.552 141.521 177.793 141.497C177.817 141.497 177.841 141.497 177.878 141.497C177.938 141.497 178.01 141.473 178.071 141.473C178.252 141.449 178.445 141.425 178.626 141.401C178.71 141.388 178.783 141.364 178.855 141.34C179.072 141.292 179.29 141.243 179.507 141.183C179.615 141.147 179.736 141.135 179.857 141.098C179.953 141.074 180.026 141.026 180.122 141.002C180.207 140.965 180.291 140.941 180.376 140.905C180.69 140.772 181.003 140.639 181.281 140.47L218.466 118.829C218.466 118.829 218.514 118.793 218.55 118.781C218.816 118.624 219.033 118.455 219.238 118.273C219.262 118.249 219.287 118.237 219.311 118.213C219.323 118.201 219.347 118.189 219.371 118.164C219.528 118.019 219.661 117.874 219.769 117.729C219.793 117.693 219.818 117.657 219.842 117.62C219.866 117.584 219.89 117.548 219.914 117.512C219.95 117.451 219.999 117.391 220.035 117.33C220.107 117.209 220.156 117.088 220.204 116.955C220.204 116.931 220.204 116.919 220.216 116.895C220.216 116.871 220.228 116.847 220.24 116.823C220.264 116.738 220.288 116.665 220.312 116.581C220.337 116.46 220.349 116.327 220.361 116.206C220.361 116.182 220.361 116.17 220.361 116.145L220.385 109.436C220.385 109.653 220.337 109.883 220.276 110.101L220.288 110.161Z" fill="url(#paint13_linear_14238_54695)"/> +<path d="M218.49 108.154C221.037 109.629 221.049 112.011 218.526 113.474L181.341 135.114C178.819 136.589 174.704 136.589 172.157 135.114L134.731 113.474C132.196 112.011 132.184 109.617 134.707 108.154L171.891 86.514C174.414 85.0391 178.529 85.0512 181.064 86.514L218.49 108.154Z" fill="url(#paint14_linear_14238_54695)"/> +<path opacity="0.7" d="M218.49 106.812C221.037 108.287 221.049 110.669 218.526 112.132L181.341 133.772C178.819 135.247 174.704 135.247 172.157 133.772L134.731 112.132C132.196 110.669 132.184 108.275 134.707 106.812L171.891 85.1721C174.414 83.6972 178.529 83.7093 181.064 85.1721L218.49 106.812Z" fill="#0EE7EA"/> +<path d="M213.023 101.831C215.232 103.112 215.256 105.179 213.059 106.461L180.738 125.272C178.542 126.554 174.969 126.554 172.761 125.272L140.234 106.461C138.026 105.191 138.014 103.112 140.21 101.831L172.531 83.0192C174.728 81.7377 178.3 81.7498 180.497 83.0192L213.023 101.831Z" fill="#EEEEEE"/> +<path d="M220.288 96.2703C220.288 96.2703 220.276 96.3187 220.264 96.3428C220.192 96.5484 220.083 96.7539 219.95 96.9473C219.926 96.9836 219.902 97.0198 219.878 97.0561C219.733 97.2616 219.564 97.4551 219.347 97.6364C219.323 97.6606 219.299 97.6727 219.274 97.6969C219.045 97.8903 218.792 98.0716 218.502 98.2409L181.317 119.881C181.04 120.05 180.726 120.183 180.412 120.316C180.328 120.353 180.243 120.377 180.159 120.413C179.965 120.486 179.76 120.546 179.555 120.594C179.338 120.655 179.133 120.715 178.903 120.752C178.638 120.8 178.384 120.848 178.107 120.885C178.047 120.885 177.974 120.909 177.914 120.909C177.552 120.945 177.19 120.969 176.815 120.969C176.755 120.969 176.695 120.969 176.646 120.969C176.284 120.969 175.922 120.945 175.572 120.909C175.524 120.909 175.464 120.909 175.415 120.897C175.065 120.848 174.715 120.8 174.365 120.715C174.305 120.703 174.245 120.691 174.184 120.667C173.871 120.594 173.569 120.498 173.279 120.389C173.231 120.365 173.171 120.353 173.122 120.328C172.772 120.196 172.446 120.038 172.133 119.857L134.706 98.2167C133.427 97.4792 132.8 96.5121 132.8 95.5449L132.775 102.255C132.775 103.222 133.415 104.189 134.682 104.926L172.109 126.567C172.398 126.736 172.712 126.881 173.038 127.014C173.05 127.014 173.074 127.014 173.086 127.038C173.134 127.062 173.195 127.074 173.243 127.087C173.436 127.159 173.617 127.22 173.822 127.28C173.931 127.316 174.04 127.328 174.148 127.365C174.209 127.377 174.269 127.401 174.329 127.413C174.39 127.425 174.438 127.437 174.498 127.449C174.715 127.498 174.921 127.534 175.138 127.558C175.21 127.558 175.295 127.57 175.367 127.582C175.415 127.582 175.476 127.594 175.524 127.606C175.609 127.606 175.681 127.631 175.765 127.631C175.983 127.643 176.188 127.655 176.405 127.667C176.478 127.667 176.538 127.667 176.61 127.667C176.671 127.667 176.731 127.667 176.779 127.667C176.876 127.667 176.972 127.667 177.069 127.667C177.31 127.667 177.552 127.643 177.793 127.618C177.817 127.618 177.841 127.618 177.878 127.618C177.938 127.618 178.01 127.594 178.071 127.594C178.252 127.57 178.445 127.546 178.626 127.522C178.71 127.51 178.783 127.486 178.855 127.461C179.072 127.413 179.29 127.365 179.507 127.304C179.615 127.268 179.736 127.256 179.857 127.22C179.953 127.195 180.026 127.147 180.122 127.123C180.207 127.087 180.291 127.062 180.376 127.026C180.69 126.893 181.003 126.76 181.281 126.591L218.466 104.951C218.466 104.951 218.514 104.914 218.55 104.902C218.816 104.745 219.033 104.576 219.238 104.394C219.262 104.37 219.287 104.358 219.311 104.334C219.323 104.322 219.347 104.298 219.371 104.286C219.528 104.141 219.661 103.996 219.769 103.85C219.793 103.814 219.818 103.778 219.842 103.742C219.866 103.705 219.89 103.669 219.914 103.633C219.95 103.572 219.999 103.512 220.035 103.451C220.107 103.331 220.156 103.21 220.204 103.077C220.204 103.053 220.204 103.04 220.216 103.016C220.216 102.992 220.228 102.968 220.24 102.944C220.264 102.859 220.288 102.787 220.312 102.702C220.337 102.581 220.349 102.448 220.361 102.327C220.361 102.303 220.361 102.291 220.361 102.267L220.385 95.557C220.385 95.7746 220.337 96.0043 220.276 96.2219L220.288 96.2703Z" fill="url(#paint15_linear_14238_54695)"/> +<path d="M218.49 94.2514C221.037 95.7263 221.049 98.1079 218.526 99.5708L181.341 121.211C178.819 122.686 174.704 122.686 172.157 121.211L134.731 99.5708C132.196 98.1079 132.184 95.7142 134.707 94.2514L171.891 72.6111C174.414 71.1361 178.529 71.1482 181.064 72.6111L218.49 94.2514Z" fill="url(#paint16_linear_14238_54695)"/> +<path opacity="0.7" d="M218.49 92.9215C221.037 94.3964 221.049 96.7781 218.526 98.2409L181.341 119.881C178.819 121.356 174.704 121.356 172.157 119.881L134.731 98.2409C132.196 96.7781 132.184 94.3844 134.707 92.9215L171.891 71.2812C174.414 69.8063 178.529 69.8184 181.064 71.2812L218.49 92.9215Z" fill="#0EE7EA"/> +<path d="M213.023 87.9397C215.232 89.2212 215.256 91.2885 213.059 92.57L180.738 111.381C178.542 112.663 174.969 112.663 172.761 111.381L140.234 92.57C138.026 91.3006 138.014 89.2212 140.21 87.9397L172.531 69.1283C174.728 67.8469 178.3 67.8589 180.497 69.1283L213.023 87.9397Z" fill="#EEEEEE"/> +<path d="M220.288 82.3798C220.288 82.3798 220.276 82.4281 220.264 82.4523C220.192 82.6578 220.083 82.8634 219.95 83.0568C219.926 83.0931 219.902 83.1293 219.878 83.1656C219.733 83.3711 219.564 83.5646 219.347 83.7459C219.323 83.7701 219.299 83.7822 219.274 83.8064C219.045 83.9998 218.792 84.1811 218.502 84.3504L181.317 105.991C181.04 106.16 180.726 106.293 180.412 106.426C180.328 106.462 180.243 106.486 180.159 106.523C179.965 106.595 179.76 106.656 179.555 106.704C179.338 106.764 179.133 106.825 178.903 106.861C178.638 106.909 178.384 106.958 178.107 106.994C178.047 106.994 177.974 107.018 177.914 107.018C177.552 107.055 177.19 107.079 176.815 107.079C176.755 107.079 176.695 107.079 176.646 107.079C176.284 107.079 175.922 107.055 175.572 107.018C175.524 107.018 175.464 107.018 175.415 107.006C175.065 106.958 174.715 106.909 174.365 106.825C174.305 106.813 174.245 106.801 174.184 106.776C173.871 106.704 173.569 106.607 173.279 106.498C173.231 106.474 173.171 106.462 173.122 106.438C172.772 106.305 172.446 106.148 172.133 105.966L134.706 84.3262C133.427 83.5887 132.8 82.6216 132.8 81.6544L132.775 88.3641C132.775 89.3313 133.415 90.2984 134.682 91.0359L172.109 112.676C172.398 112.845 172.712 112.991 173.038 113.124C173.05 113.124 173.074 113.124 173.086 113.148C173.134 113.172 173.195 113.184 173.243 113.196C173.436 113.269 173.617 113.329 173.822 113.389C173.931 113.426 174.04 113.438 174.148 113.474C174.209 113.486 174.269 113.51 174.329 113.522C174.39 113.535 174.438 113.547 174.498 113.559C174.715 113.607 174.921 113.643 175.138 113.668C175.21 113.668 175.295 113.68 175.367 113.692C175.415 113.692 175.476 113.704 175.524 113.704C175.609 113.704 175.681 113.728 175.765 113.728C175.983 113.74 176.188 113.752 176.405 113.764C176.478 113.764 176.538 113.764 176.61 113.764C176.671 113.764 176.731 113.764 176.779 113.764C176.876 113.764 176.972 113.764 177.069 113.764C177.31 113.764 177.552 113.74 177.793 113.716C177.817 113.716 177.841 113.716 177.878 113.716C177.938 113.716 178.01 113.692 178.071 113.692C178.252 113.668 178.445 113.643 178.626 113.619C178.71 113.607 178.783 113.583 178.855 113.559C179.072 113.51 179.29 113.462 179.507 113.402C179.615 113.365 179.736 113.353 179.857 113.317C179.953 113.293 180.026 113.244 180.122 113.22C180.207 113.184 180.291 113.16 180.376 113.124C180.69 112.991 181.003 112.858 181.281 112.688L218.466 91.048C218.466 91.048 218.514 91.0117 218.55 90.9996C218.816 90.8425 219.033 90.6732 219.238 90.4919C219.262 90.4677 219.287 90.4556 219.311 90.4314C219.323 90.4193 219.347 90.4073 219.371 90.3831C219.528 90.238 219.661 90.0929 219.769 89.9478C219.793 89.9116 219.818 89.8753 219.842 89.839C219.866 89.8028 219.89 89.7665 219.914 89.7302C219.95 89.6698 219.999 89.6093 220.035 89.5489C220.107 89.428 220.156 89.3071 220.204 89.1741C220.204 89.1499 220.204 89.1378 220.216 89.1137C220.216 89.0895 220.228 89.0653 220.24 89.0411C220.264 88.9565 220.288 88.884 220.312 88.7993C220.337 88.6784 220.349 88.5455 220.361 88.4246C220.361 88.4004 220.361 88.3883 220.361 88.3641L220.385 81.6544C220.385 81.872 220.337 82.1017 220.276 82.3193L220.288 82.3798Z" fill="url(#paint17_linear_14238_54695)"/> +<path d="M218.49 80.3609C221.037 81.8358 221.049 84.2174 218.526 85.6802L181.341 107.321C178.819 108.795 174.704 108.795 172.157 107.321L134.731 85.6802C132.196 84.2174 132.184 81.8237 134.707 80.3609L171.891 58.7206C174.414 57.2456 178.529 57.2577 181.064 58.7206L218.49 80.3609Z" fill="url(#paint18_linear_14238_54695)"/> +<path opacity="0.7" d="M218.49 79.031C221.037 80.5059 221.049 82.8876 218.526 84.3504L181.341 105.991C178.819 107.466 174.704 107.466 172.157 105.991L134.731 84.3504C132.196 82.8876 132.184 80.4938 134.707 79.031L171.891 57.3907C174.414 55.9158 178.529 55.9279 181.064 57.3907L218.49 79.031Z" fill="#0EE7EA"/> +<path d="M213.023 74.0492C215.232 75.3307 215.256 77.398 213.059 78.6795L180.738 97.4908C178.542 98.7723 174.969 98.7723 172.761 97.4908L140.234 78.6795C138.026 77.4101 138.014 75.3307 140.21 74.0492L172.531 55.2378C174.728 53.9563 178.3 53.9684 180.497 55.2378L213.023 74.0492Z" fill="#EEEEEE"/> +<path d="M220.288 68.4867C220.288 68.4867 220.276 68.5351 220.264 68.5593C220.192 68.7648 220.083 68.9703 219.95 69.1637C219.926 69.2 219.902 69.2363 219.878 69.2725C219.733 69.4781 219.564 69.6715 219.347 69.8528C219.323 69.877 219.299 69.8891 219.274 69.9133C219.045 70.1067 218.792 70.2881 218.502 70.4573L181.317 92.0976C181.04 92.2669 180.726 92.3998 180.412 92.5328C180.328 92.5691 180.243 92.5933 180.159 92.6295C179.965 92.7021 179.76 92.7625 179.555 92.8109C179.338 92.8713 179.133 92.9318 178.903 92.9681C178.638 93.0164 178.384 93.0648 178.107 93.101C178.047 93.101 177.974 93.1252 177.914 93.1252C177.552 93.1615 177.19 93.1857 176.815 93.1857C176.755 93.1857 176.695 93.1857 176.646 93.1857C176.284 93.1857 175.922 93.1615 175.572 93.1252C175.524 93.1252 175.464 93.1252 175.415 93.1131C175.065 93.0648 174.715 93.0164 174.365 92.9318C174.305 92.9197 174.245 92.9076 174.184 92.8834C173.871 92.8109 173.569 92.7142 173.279 92.6054C173.231 92.5812 173.171 92.5691 173.122 92.557C172.772 92.424 172.446 92.2669 172.133 92.0855L134.706 70.4452C133.427 69.7078 132.8 68.7406 132.8 67.7734L132.775 74.4831C132.775 75.4503 133.415 76.4175 134.682 77.1549L172.109 98.7952C172.398 98.9645 172.712 99.1095 173.038 99.2425C173.05 99.2425 173.074 99.2425 173.086 99.2546C173.134 99.2788 173.195 99.2909 173.243 99.303C173.436 99.3755 173.617 99.436 173.822 99.4964C173.931 99.5327 174.04 99.5448 174.148 99.581C174.209 99.5931 174.269 99.6173 174.329 99.6294C174.39 99.6415 174.438 99.6536 174.498 99.6657C174.715 99.714 174.921 99.7503 175.138 99.7745C175.21 99.7745 175.295 99.7866 175.367 99.7986C175.415 99.7986 175.476 99.8107 175.524 99.8228C175.609 99.8228 175.681 99.847 175.765 99.847C175.983 99.8591 176.188 99.8712 176.405 99.8833C176.478 99.8833 176.538 99.8833 176.61 99.8833C176.671 99.8833 176.731 99.8833 176.779 99.8833C176.876 99.8833 176.972 99.8833 177.069 99.8833C177.31 99.8833 177.552 99.8591 177.793 99.8349C177.817 99.8349 177.841 99.8349 177.878 99.8349C177.938 99.8349 178.01 99.8107 178.071 99.8107C178.252 99.7866 178.445 99.7624 178.626 99.7382C178.71 99.7261 178.783 99.7019 178.855 99.6778C179.072 99.6294 179.29 99.581 179.507 99.5206C179.615 99.4843 179.736 99.4722 179.857 99.436C179.953 99.4118 180.026 99.3634 180.122 99.3392C180.207 99.303 180.291 99.2788 180.376 99.2425C180.69 99.1095 181.003 98.9766 181.281 98.8073L218.466 77.167C218.466 77.167 218.514 77.1308 218.55 77.1187C218.816 76.9615 219.033 76.7922 219.238 76.6109C219.262 76.5867 219.287 76.5746 219.311 76.5505C219.323 76.5384 219.347 76.5142 219.371 76.5021C219.528 76.357 219.661 76.2119 219.769 76.0669C219.793 76.0306 219.818 75.9943 219.842 75.9581C219.866 75.9218 219.89 75.8855 219.914 75.8493C219.95 75.7888 219.999 75.7284 220.035 75.6679C220.107 75.547 220.156 75.4261 220.204 75.2931C220.204 75.269 220.204 75.2569 220.216 75.2327C220.216 75.2085 220.228 75.1843 220.24 75.1602C220.264 75.0755 220.288 75.003 220.312 74.9184C220.337 74.7975 220.349 74.6645 220.361 74.5436C220.361 74.5194 220.361 74.5073 220.361 74.4831L220.385 67.7734C220.385 67.991 220.337 68.2208 220.276 68.4384L220.288 68.4867Z" fill="url(#paint19_linear_14238_54695)"/> +<path d="M218.49 65.1267C221.037 66.6016 221.049 68.9833 218.526 70.4461L181.341 92.0864C178.819 93.5613 174.704 93.5613 172.157 92.0864L134.731 70.4461C132.196 68.9833 132.184 66.5896 134.707 65.1267L171.891 43.4864C174.414 42.0115 178.529 42.0236 181.064 43.4864L218.49 65.1267Z" fill="#E0E0E0"/> +<path d="M218.49 66.4685C221.037 67.9434 221.049 70.3251 218.526 71.7879L181.341 93.4282C178.819 94.9031 174.704 94.9031 172.157 93.4282L134.731 71.7879C132.196 70.3251 132.184 67.9313 134.707 66.4685L171.891 44.8282C174.414 43.3533 178.529 43.3654 181.064 44.8282L218.49 66.4685Z" fill="url(#paint20_linear_14238_54695)"/> +<path opacity="0.7" d="M218.49 65.1267C221.037 66.6016 221.049 68.9833 218.526 70.4461L181.341 92.0864C178.819 93.5613 174.704 93.5613 172.157 92.0864L134.731 70.4461C132.196 68.9833 132.184 66.5896 134.707 65.1267L171.891 43.4864C174.414 42.0115 178.529 42.0236 181.064 43.4864L218.49 65.1267Z" fill="#0EE7EA"/> +<path d="M190.333 59.8076C182.705 55.3949 170.371 55.3949 162.791 59.8076C155.212 64.2202 155.248 71.3773 162.876 75.7899C170.503 80.2026 182.838 80.2026 190.417 75.7899C197.997 71.3773 197.961 64.2202 190.333 59.8076Z" fill="#1AD2F8"/> +<path d="M189.247 60.7151C182.222 56.7981 170.878 56.7981 163.89 60.7151C156.914 64.6321 156.95 70.967 163.974 74.8841C170.998 78.8011 182.343 78.8011 189.331 74.8841C196.307 70.967 196.271 64.6321 189.247 60.7151Z" fill="#6DE0F5"/> +<path d="M195.983 -7.02601C195.983 -7.15137 195.983 -7.27673 195.983 -7.41254V-7.56924H195.971C195.79 -9.95109 193.892 -12.312 190.252 -14.1402C182.61 -17.9533 170.252 -17.9533 162.659 -14.1402C159.031 -12.3225 157.169 -9.96153 157.024 -7.56924H157V-7.24539V69.2245C157 71.7317 158.935 74.2285 162.756 76.1402C170.398 79.9533 182.755 79.9533 190.349 76.1402C194.23 74.1867 196.104 71.6168 195.996 69.0573V-7.02601H195.983Z" fill="url(#paint21_linear_14238_54695)"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M179.162 28.6354C172.65 25.5264 167.373 16.8941 167.373 9.28609C167.373 6.43306 168.122 4.16528 169.357 2.59245L168.346 2.88507L170.741 1.27568C170.779 1.2391 170.826 1.21166 170.872 1.18423C170.919 1.1568 170.966 1.12937 171.003 1.09279L171.078 1.01963C173.212 -0.297145 176.056 -0.406877 179.162 1.09279C185.675 4.20185 190.952 12.8341 190.952 20.4421C190.952 24.0633 189.754 26.77 187.808 28.3062L187.771 28.3428C187.658 28.416 187.555 28.4891 187.452 28.5623C187.35 28.6354 187.247 28.7086 187.134 28.7817L184.814 30.3911L184.926 29.623C183.205 29.9156 181.258 29.623 179.162 28.6354ZM179.162 7.34749C175.607 5.66494 172.725 7.64011 172.725 11.8099C172.725 15.9431 175.607 20.6982 179.162 22.4173C182.718 24.0999 185.6 22.1247 185.6 17.9549C185.6 13.7851 182.718 9.03005 179.162 7.34749Z" fill="url(#paint22_linear_14238_54695)"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M164.717 11.2247C164.717 3.65324 169.994 -0.00448072 176.506 3.06801C182.981 6.14049 188.258 14.8093 188.296 22.4174C188.296 29.9888 183.018 33.6466 176.506 30.5741C169.994 27.465 164.717 18.8328 164.717 11.2247ZM170.069 13.712C170.069 17.8818 172.951 22.6368 176.506 24.3194C180.062 26.0385 182.944 24.0268 182.944 19.8569C182.944 15.6871 180.062 10.9321 176.506 9.24956C172.951 7.567 170.069 9.54217 170.069 13.712Z" fill="url(#paint23_linear_14238_54695)"/> +<ellipse cx="8.82669" cy="13.9707" rx="8.82669" ry="13.9707" transform="matrix(0.888785 -0.458324 0.476352 0.879255 162 8.43237)" fill="url(#paint24_linear_14238_54695)"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M178.527 19.1076L172.791 15.6901C172.161 17.2076 171.362 19.0896 170.704 20.5885C170.629 20.6982 170.517 20.6982 170.367 20.6251C170.143 20.5153 170.105 20.4422 170.105 20.2227V20.1495L172.156 15.3121L170.33 14.224C170.218 14.1509 170.143 14.0046 170.143 13.8583V13.5291C170.143 13.3828 170.218 13.3462 170.33 13.3828L172.441 14.6404L173.139 12.9935L171.341 11.9197C171.228 11.8465 171.153 11.7002 171.153 11.5539V11.1881C171.153 11.0418 171.228 11.0052 171.341 11.0418L173.436 12.293L175.083 8.40826C175.233 8.11564 175.607 7.89618 175.944 8.11564C176.318 8.33511 176.505 8.77403 176.618 9.21296L178.33 15.2148L180.286 16.3821C180.398 16.4553 180.473 16.6016 180.473 16.7479V17.0771C180.473 17.2599 180.398 17.3331 180.286 17.2599L178.632 16.2729L179.339 18.7499L181.259 19.8935C181.371 19.9667 181.446 20.113 181.446 20.2593V20.5885C181.483 20.7348 181.371 20.8079 181.259 20.7348L179.628 19.7635L181.408 26.0019C181.521 26.2945 181.67 26.77 181.371 26.8432C180.959 26.9529 180.772 26.6603 180.697 26.4043L178.527 19.1076ZM177.604 15.6591L178.288 18.1236L173.14 15.057L173.817 13.3982L177.604 15.6591ZM177.312 14.607L174.105 12.6923L175.42 9.469C175.607 8.95692 175.794 9.17638 176.019 9.94451L177.312 14.607Z" fill="white"/> +<path d="M102.51 145.387C102.51 145.472 102.498 145.544 102.485 145.629C102.485 145.689 102.449 145.762 102.437 145.822C102.413 145.895 102.401 145.979 102.377 146.052C102.353 146.112 102.329 146.173 102.304 146.233C102.268 146.318 102.232 146.39 102.196 146.475C102.16 146.536 102.123 146.584 102.099 146.644C102.039 146.729 101.991 146.826 101.918 146.91C101.882 146.959 101.834 147.007 101.798 147.068C101.701 147.188 101.592 147.297 101.472 147.418C101.435 147.454 101.387 147.503 101.351 147.539C101.279 147.599 101.194 147.672 101.122 147.732C101.049 147.793 100.989 147.841 100.904 147.902C100.82 147.962 100.723 148.023 100.627 148.083C100.53 148.143 100.446 148.204 100.337 148.264L56.8161 173.604C56.5867 173.737 56.3454 173.858 56.104 173.967C56.0316 174.003 55.9592 174.027 55.8867 174.063C55.6936 174.148 55.4885 174.221 55.2954 174.293C55.2229 174.317 55.1505 174.342 55.0781 174.366C54.9453 174.402 54.8126 174.438 54.6919 174.475C54.5953 174.499 54.4988 174.535 54.3902 174.559C54.2574 174.595 54.1126 174.62 53.9678 174.644C53.8712 174.668 53.7747 174.68 53.6781 174.704C53.3884 174.753 53.1109 174.789 52.8091 174.825C52.7246 174.825 52.6281 174.837 52.5436 174.849C52.3746 174.861 52.2057 174.873 52.0246 174.886C51.916 174.886 51.8074 174.886 51.6988 174.886C51.5539 174.886 51.4212 174.886 51.2764 174.886C51.1557 174.886 51.047 174.886 50.9264 174.886C50.7936 174.886 50.6729 174.886 50.5401 174.861C50.4194 174.861 50.3108 174.849 50.1901 174.837C50.0574 174.825 49.9367 174.813 49.816 174.789C49.7074 174.777 49.5867 174.753 49.4781 174.74C49.3453 174.716 49.2125 174.692 49.0798 174.668C48.9712 174.644 48.8746 174.632 48.766 174.607C48.6091 174.571 48.4522 174.535 48.2953 174.487C48.2108 174.462 48.1263 174.438 48.0418 174.414C47.7643 174.329 47.4867 174.245 47.2211 174.136C47.1849 174.124 47.1487 174.1 47.1125 174.088C46.7504 173.943 46.4004 173.785 46.0866 173.592L2.27589 148.252C0.779329 147.382 0.0310434 146.258 0.0431124 145.121V147.599C0.0431124 148.736 0.779329 149.872 2.27589 150.731L46.0866 176.07C46.4125 176.252 46.7504 176.421 47.1125 176.566C47.1367 176.566 47.1608 176.59 47.1849 176.602C47.197 176.602 47.2091 176.602 47.2211 176.614C47.4867 176.723 47.7522 176.808 48.0418 176.892C48.066 176.892 48.0901 176.905 48.1022 176.917C48.1625 176.929 48.2349 176.953 48.2953 176.965C48.4522 177.001 48.6091 177.05 48.766 177.086C48.8143 177.086 48.8505 177.11 48.8867 177.122C48.947 177.134 49.0194 177.146 49.0798 177.158C49.2125 177.183 49.3453 177.207 49.4781 177.231C49.5384 177.231 49.5867 177.255 49.635 177.255C49.6953 177.255 49.7556 177.267 49.816 177.279C49.9367 177.291 50.0694 177.303 50.1901 177.316C50.2505 177.316 50.3108 177.328 50.3712 177.34C50.4315 177.34 50.4798 177.34 50.5401 177.34C50.6729 177.34 50.7936 177.352 50.9264 177.364C50.9867 177.364 51.0591 177.364 51.1195 177.364C51.1677 177.364 51.2281 177.364 51.2764 177.364C51.4091 177.364 51.5539 177.364 51.6867 177.364C51.7591 177.364 51.8195 177.364 51.8919 177.364C51.9281 177.364 51.9764 177.364 52.0126 177.364C52.1815 177.364 52.3505 177.34 52.5315 177.328C52.6039 177.328 52.6643 177.328 52.7367 177.316C52.7609 177.316 52.7729 177.316 52.7971 177.316C53.0867 177.279 53.3764 177.243 53.666 177.195C53.6781 177.195 53.6902 177.195 53.7143 177.195C53.7988 177.183 53.8833 177.158 53.9678 177.146C54.1126 177.122 54.2453 177.086 54.3781 177.062C54.4747 177.037 54.5833 177.013 54.6798 176.977C54.8126 176.941 54.9454 176.905 55.066 176.868C55.0902 176.868 55.1264 176.856 55.1505 176.844C55.1988 176.832 55.235 176.808 55.2833 176.796C55.4885 176.723 55.6816 176.651 55.8747 176.566C55.9471 176.53 56.0195 176.506 56.0919 176.469C56.3333 176.36 56.5747 176.24 56.804 176.107L100.325 150.767C100.325 150.767 100.385 150.731 100.422 150.706C100.494 150.67 100.554 150.622 100.615 150.573C100.711 150.513 100.796 150.453 100.892 150.392C100.965 150.332 101.037 150.283 101.11 150.223C101.194 150.162 101.266 150.102 101.339 150.029C101.351 150.017 101.375 150.005 101.387 149.993C101.411 149.969 101.435 149.933 101.472 149.909C101.592 149.8 101.701 149.679 101.798 149.558C101.822 149.534 101.846 149.51 101.87 149.485C101.894 149.461 101.906 149.437 101.918 149.413C101.979 149.328 102.039 149.232 102.099 149.147C102.123 149.111 102.148 149.074 102.172 149.038C102.172 149.014 102.184 149.002 102.196 148.978C102.232 148.893 102.268 148.821 102.304 148.736C102.329 148.688 102.353 148.639 102.365 148.603C102.365 148.591 102.365 148.567 102.377 148.555C102.401 148.482 102.425 148.397 102.437 148.325C102.449 148.276 102.473 148.228 102.485 148.168C102.485 148.156 102.485 148.143 102.485 148.131C102.498 148.047 102.51 147.974 102.51 147.89C102.51 147.841 102.522 147.781 102.522 147.732C102.522 147.708 102.522 147.684 102.522 147.66V145.182C102.522 145.254 102.522 145.327 102.522 145.399L102.51 145.387Z" fill="url(#paint25_linear_14238_54695)"/> +<path d="M100.276 142.026C103.257 143.742 103.269 146.535 100.312 148.264L56.7911 173.604C53.8342 175.32 49.0186 175.32 46.0496 173.604L2.23885 148.264C-0.730142 146.547 -0.754281 143.754 2.21471 142.026L45.7358 116.686C48.6927 114.969 53.4962 114.969 56.4773 116.686L100.288 142.026H100.276Z" fill="url(#paint26_linear_14238_54695)"/> +<path d="M96.8489 136.007C96.8489 136.079 96.8489 136.152 96.8248 136.224C96.8248 136.285 96.8007 136.345 96.7765 136.394C96.7645 136.466 96.7403 136.527 96.7162 136.599C96.692 136.66 96.6679 136.708 96.6438 136.768C96.6076 136.841 96.5834 136.913 96.5472 136.974C96.5231 137.022 96.4869 137.071 96.4627 137.119C96.4145 137.204 96.3662 137.276 96.3058 137.361C96.2696 137.409 96.2334 137.457 96.1972 137.494C96.1127 137.602 96.0162 137.699 95.9076 137.808C95.8714 137.844 95.8352 137.881 95.7989 137.917C95.7386 137.977 95.6662 138.026 95.5938 138.086C95.5334 138.134 95.4731 138.183 95.4007 138.231C95.3282 138.292 95.2438 138.34 95.1593 138.388C95.0748 138.449 94.9903 138.497 94.9058 138.558L56.1762 161.105C55.971 161.225 55.7537 161.322 55.5365 161.431C55.4762 161.455 55.4037 161.491 55.3434 161.516C55.1744 161.588 54.9934 161.661 54.8123 161.721C54.752 161.745 54.6796 161.769 54.6192 161.794C54.5106 161.83 54.3899 161.866 54.2692 161.89C54.1848 161.915 54.0882 161.939 54.0037 161.963C53.883 161.987 53.7503 162.023 53.6296 162.048C53.5451 162.06 53.4606 162.084 53.3761 162.096C53.1227 162.144 52.8692 162.181 52.6037 162.205C52.5192 162.205 52.4468 162.217 52.3623 162.229C52.2054 162.241 52.0606 162.253 51.9037 162.265C51.8072 162.265 51.7106 162.265 51.614 162.265C51.4934 162.265 51.3606 162.265 51.2399 162.265C51.1313 162.265 51.0347 162.265 50.9261 162.265C50.8175 162.265 50.6968 162.265 50.5882 162.241C50.4795 162.241 50.383 162.229 50.2744 162.217C50.1658 162.217 50.0451 162.193 49.9364 162.181C49.8399 162.168 49.7313 162.156 49.6347 162.132C49.514 162.108 49.3933 162.096 49.2726 162.072C49.1761 162.06 49.0916 162.035 48.9951 162.011C48.8502 161.975 48.7175 161.939 48.5726 161.902C48.5002 161.878 48.4157 161.866 48.3433 161.842C48.0899 161.77 47.8485 161.685 47.6192 161.6C47.583 161.588 47.5588 161.576 47.5226 161.564C47.1968 161.431 46.895 161.286 46.6054 161.129L7.62226 138.582C6.29466 137.808 5.63086 136.805 5.63086 135.789V138.001C5.63086 139.017 6.28259 140.02 7.61019 140.794L46.5933 163.341C46.883 163.51 47.1847 163.655 47.5106 163.776C47.5347 163.776 47.5468 163.801 47.5709 163.801C47.5709 163.801 47.595 163.801 47.6071 163.813C47.8364 163.909 48.0899 163.982 48.3313 164.054C48.3554 164.054 48.3675 164.067 48.3916 164.079C48.4519 164.091 48.5123 164.103 48.5606 164.127C48.6933 164.163 48.8382 164.199 48.983 164.236C49.0192 164.236 49.0554 164.26 49.0916 164.26C49.152 164.26 49.2002 164.284 49.2606 164.284C49.3813 164.308 49.502 164.332 49.6226 164.345C49.6709 164.345 49.7192 164.357 49.7675 164.369C49.8158 164.369 49.8761 164.369 49.9244 164.381C50.033 164.393 50.1537 164.405 50.2623 164.417C50.3106 164.417 50.3709 164.429 50.4192 164.429C50.4675 164.429 50.5158 164.429 50.5761 164.429C50.6847 164.429 50.8054 164.441 50.914 164.453C50.9744 164.453 51.0227 164.453 51.083 164.453C51.1313 164.453 51.1796 164.453 51.2158 164.453C51.3365 164.453 51.4571 164.453 51.5899 164.453C51.6502 164.453 51.7106 164.453 51.7709 164.453C51.8071 164.453 51.8434 164.453 51.8796 164.453C52.0365 164.453 52.1813 164.441 52.3382 164.417C52.3985 164.417 52.4589 164.417 52.5192 164.405C52.5434 164.405 52.5554 164.405 52.5796 164.405C52.833 164.381 53.0985 164.345 53.352 164.296C53.3641 164.296 53.3761 164.296 53.3882 164.296C53.4606 164.284 53.533 164.26 53.6054 164.248C53.7261 164.224 53.8589 164.199 53.9796 164.163C54.0761 164.139 54.1606 164.115 54.2451 164.091C54.3658 164.054 54.4744 164.03 54.5951 163.994C54.6192 163.994 54.6434 163.982 54.6675 163.97C54.7037 163.958 54.752 163.934 54.7882 163.921C54.9692 163.861 55.1503 163.788 55.3193 163.716C55.3796 163.692 55.452 163.668 55.5124 163.631C55.7296 163.535 55.9468 163.426 56.152 163.305L94.8817 140.758C94.8817 140.758 94.942 140.722 94.9662 140.71C95.0265 140.673 95.0869 140.637 95.1351 140.589C95.2196 140.54 95.3041 140.48 95.3765 140.431C95.4489 140.383 95.4972 140.335 95.5696 140.286C95.642 140.226 95.7145 140.178 95.7748 140.117C95.7869 140.117 95.7989 140.093 95.811 140.081C95.8351 140.057 95.8593 140.033 95.8834 140.008C95.992 139.912 96.0886 139.803 96.1731 139.694C96.1972 139.67 96.2214 139.646 96.2334 139.621C96.2455 139.597 96.2576 139.573 96.2817 139.549C96.342 139.476 96.3903 139.392 96.4386 139.307C96.4627 139.271 96.4869 139.247 96.4989 139.21C96.4989 139.198 96.511 139.174 96.5231 139.162C96.5593 139.09 96.5955 139.017 96.6196 138.957C96.6317 138.92 96.6558 138.872 96.68 138.836C96.68 138.824 96.68 138.811 96.692 138.799C96.7162 138.727 96.7283 138.666 96.7524 138.594C96.7524 138.545 96.7765 138.509 96.7886 138.461C96.7886 138.449 96.7886 138.437 96.7886 138.425C96.8007 138.352 96.8007 138.28 96.8127 138.207C96.8127 138.159 96.8248 138.11 96.8248 138.074C96.8248 138.05 96.8248 138.038 96.8248 138.014V135.801C96.8248 135.862 96.8248 135.934 96.8248 135.995L96.8489 136.007Z" fill="url(#paint27_linear_14238_54695)"/> +<path d="M94.8698 133.008C97.5129 134.543 97.537 137.022 94.906 138.557L56.1763 161.104C53.5452 162.639 49.2607 162.639 46.6176 161.104L7.63444 138.557C4.99132 137.034 4.97925 134.543 7.61031 133.008L46.34 110.461C48.971 108.938 53.2435 108.938 55.8987 110.461L94.8818 133.008H94.8698Z" fill="url(#paint28_linear_14238_54695)"/> +<path d="M91.827 128.583C91.827 128.643 91.827 128.703 91.8029 128.776C91.8029 128.824 91.7787 128.885 91.7667 128.933C91.7546 128.994 91.7305 129.054 91.7184 129.115C91.7063 129.163 91.6822 129.211 91.658 129.26C91.6339 129.32 91.5977 129.381 91.5736 129.453C91.5494 129.501 91.5253 129.538 91.4891 129.586C91.4408 129.659 91.4046 129.731 91.3442 129.792C91.308 129.828 91.2839 129.876 91.2477 129.912C91.1753 130.009 91.0908 130.094 90.9942 130.191C90.958 130.227 90.9339 130.251 90.8977 130.287C90.8373 130.336 90.777 130.384 90.7166 130.444C90.6563 130.493 90.608 130.529 90.5477 130.577C90.4753 130.626 90.4028 130.674 90.3304 130.722C90.258 130.771 90.1856 130.819 90.1011 130.868L55.6439 150.924C55.4629 151.033 55.2698 151.118 55.0767 151.214C55.0163 151.238 54.968 151.263 54.9077 151.287C54.7508 151.347 54.5939 151.408 54.437 151.468C54.3767 151.492 54.3284 151.504 54.268 151.529C54.1715 151.565 54.0629 151.589 53.9542 151.613C53.8698 151.637 53.7973 151.662 53.7129 151.674C53.6042 151.698 53.4956 151.722 53.3749 151.746C53.3025 151.758 53.2301 151.782 53.1456 151.795C52.9163 151.831 52.687 151.867 52.4577 151.891C52.3853 151.891 52.3128 151.891 52.2404 151.903C52.1077 151.903 51.9749 151.928 51.8301 151.928C51.7456 151.928 51.6611 151.928 51.5646 151.928C51.4559 151.928 51.3473 151.928 51.2387 151.928C51.1421 151.928 51.0577 151.928 50.9611 151.928C50.8646 151.928 50.7559 151.928 50.6594 151.915C50.5628 151.915 50.4783 151.903 50.3818 151.891C50.2852 151.891 50.1766 151.867 50.0801 151.855C49.9956 151.855 49.899 151.831 49.8145 151.819C49.7059 151.807 49.5973 151.782 49.4887 151.758C49.4042 151.746 49.3197 151.722 49.2352 151.71C49.1025 151.686 48.9818 151.649 48.8611 151.613C48.7887 151.601 48.7283 151.577 48.6559 151.553C48.4387 151.492 48.2214 151.42 48.0042 151.335C47.98 151.335 47.9438 151.311 47.9197 151.299C47.63 151.178 47.3645 151.057 47.099 150.912L12.4245 130.855C11.2418 130.166 10.6504 129.272 10.6504 128.377V130.336C10.6504 131.23 11.2297 132.137 12.4125 132.814L47.0869 152.871C47.3404 153.016 47.618 153.149 47.8956 153.257C47.9197 153.257 47.9318 153.269 47.9438 153.282C47.9438 153.282 47.968 153.282 47.98 153.282C48.1852 153.366 48.4025 153.439 48.6197 153.499C48.6318 153.499 48.6559 153.511 48.668 153.511C48.7163 153.523 48.7766 153.535 48.8249 153.548C48.9456 153.584 49.0783 153.608 49.199 153.644C49.2352 153.644 49.2594 153.656 49.2956 153.668C49.3438 153.668 49.3921 153.681 49.4404 153.693C49.549 153.717 49.6456 153.729 49.7542 153.753C49.8025 153.753 49.8387 153.765 49.887 153.777C49.9352 153.777 49.9835 153.777 50.0318 153.789C50.1283 153.801 50.237 153.813 50.3335 153.826C50.3818 153.826 50.4301 153.838 50.4783 153.838C50.5266 153.838 50.5628 153.838 50.6111 153.838C50.7077 153.838 50.8163 153.85 50.9128 153.85C50.9611 153.85 51.0094 153.85 51.0697 153.85C51.1059 153.85 51.1542 153.85 51.1904 153.85C51.299 153.85 51.4077 153.85 51.5163 153.85C51.5766 153.85 51.6249 153.85 51.6853 153.85C51.7215 153.85 51.7456 153.85 51.7818 153.85C51.9146 153.85 52.0473 153.838 52.1922 153.826C52.2525 153.826 52.3008 153.826 52.3611 153.826C52.3732 153.826 52.3973 153.826 52.4094 153.826C52.6387 153.801 52.868 153.765 53.0973 153.729C53.0973 153.729 53.1215 153.729 53.1335 153.729C53.1939 153.729 53.2663 153.705 53.3266 153.693C53.4353 153.668 53.5439 153.644 53.6525 153.62C53.737 153.596 53.8094 153.572 53.8939 153.56C54.0025 153.535 54.0991 153.499 54.1956 153.475C54.2198 153.475 54.2439 153.463 54.268 153.451C54.3042 153.451 54.3405 153.427 54.3767 153.415C54.5336 153.354 54.6905 153.306 54.8474 153.233C54.9077 153.209 54.968 153.185 55.0163 153.161C55.2094 153.076 55.4025 152.979 55.5836 152.871L90.0408 132.814C90.0408 132.814 90.0891 132.79 90.1132 132.766C90.1735 132.729 90.2097 132.693 90.2701 132.657C90.3425 132.608 90.4149 132.56 90.4873 132.512C90.5477 132.463 90.596 132.427 90.6563 132.379C90.7167 132.33 90.777 132.282 90.8373 132.222C90.8373 132.222 90.8615 132.197 90.8736 132.185C90.8977 132.161 90.9098 132.137 90.9339 132.113C91.0304 132.028 91.1149 131.931 91.1873 131.835C91.1994 131.811 91.2235 131.798 91.2477 131.774C91.2598 131.75 91.2718 131.738 91.2839 131.714C91.3322 131.641 91.3804 131.569 91.4287 131.508C91.4529 131.484 91.4649 131.448 91.4891 131.424C91.4891 131.412 91.5011 131.387 91.5132 131.375C91.5494 131.315 91.5736 131.254 91.5977 131.182C91.6098 131.146 91.6339 131.109 91.646 131.073C91.646 131.061 91.646 131.049 91.646 131.037C91.6701 130.976 91.6822 130.916 91.6942 130.855C91.6942 130.819 91.7184 130.771 91.7305 130.735C91.7305 130.735 91.7305 130.71 91.7305 130.698C91.7305 130.638 91.7425 130.565 91.7546 130.505C91.7546 130.469 91.7667 130.42 91.7667 130.384C91.7667 130.372 91.7667 130.348 91.7667 130.336V128.377C91.7667 128.377 91.7667 128.498 91.7667 128.558L91.827 128.583Z" fill="url(#paint29_linear_14238_54695)"/> +<path d="M90.0644 125.923C92.4178 127.289 92.4299 129.501 90.1006 130.855L55.6433 150.912C53.3019 152.278 49.4881 152.278 47.1346 150.912L12.4602 130.855C10.1067 129.489 10.0946 127.289 12.436 125.923L46.8933 105.866C49.2347 104.5 53.0364 104.5 55.3899 105.866L90.0644 125.923Z" fill="url(#paint30_linear_14238_54695)"/> +<path d="M82.0402 124.424C83.9109 125.5 83.923 127.253 82.0644 128.341L54.74 144.251C52.8813 145.327 49.8641 145.327 47.9934 144.251L20.4879 128.341C18.6293 127.265 18.6172 125.512 20.4758 124.424L47.8002 108.514C49.6589 107.438 52.6762 107.438 54.5348 108.514L82.0402 124.424Z" fill="#69E2F3"/> +<path d="M20.4758 126.6L47.8002 110.69C49.6588 109.615 52.6761 109.615 54.5348 110.69L82.0402 126.6C82.4867 126.854 82.8247 127.156 83.054 127.471C83.8023 126.455 83.4643 125.246 82.0402 124.412L54.5348 108.502C52.6761 107.426 49.6468 107.426 47.8002 108.502L20.4758 124.412C19.0637 125.234 18.7379 126.443 19.4862 127.459C19.7155 127.144 20.0413 126.854 20.4758 126.6Z" fill="#1BCFF2"/> +<path d="M83.4399 126.31V74.7237C83.4399 74.7237 83.4399 74.6753 83.4399 74.6391V74.6149C83.4037 73.9258 82.9451 73.2488 82.0399 72.7168L54.5345 56.807C52.6758 55.731 49.6465 55.731 47.7999 56.807L20.4755 72.7168C19.5703 73.2367 19.1238 73.9258 19.0996 74.6149V74.6512C19.0996 74.6512 19.0996 74.6874 19.0996 74.7116V126.31C19.0634 127.047 19.5221 127.785 20.4876 128.341L47.993 144.251C49.8637 145.327 52.881 145.327 54.7396 144.251L82.064 128.341C83.0295 127.785 83.4761 127.047 83.4399 126.31Z" fill="url(#paint31_linear_14238_54695)"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M370.956 205.196L376.933 202.563C378.27 201.803 379.093 200.318 379.024 198.764V121.637C379.024 121.637 379.059 115.697 372.751 112.173C366.786 108.823 280.364 58.2922 280.364 58.2922C280.364 58.2922 274.982 56.7724 274.536 64.9237C274.091 73.075 274.81 147.093 274.81 147.093L370.956 205.196Z" fill="#16E3BA"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M371.413 205.024L376.889 202.557C378.208 201.796 379.067 200.441 378.999 198.885V121.556C378.999 121.556 378.999 115.412 372.006 112.06C366.122 108.705 358.92 104.382 358.92 104.382C358.92 104.382 355.437 126.273 354.997 134.434C354.558 142.595 357.06 198.029 357.06 198.029L371.413 205.024Z" fill="url(#paint32_linear_14238_54695)"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M369.106 114.645L278.911 62.2617C278.535 62.054 278.158 61.9155 277.816 61.8462C253.821 51.9098 256.183 71.3673 256.183 71.3673L274.838 81.5461V144.489C274.838 147.501 276.687 151.067 278.946 152.348L369.106 204.696C371.365 206.012 373.214 204.592 373.214 201.58V122.504C373.214 119.492 371.365 115.926 369.106 114.645Z" fill="url(#paint33_linear_14238_54695)"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M354.611 207.708L366.719 199.973C367.162 199.696 367.401 199.21 367.401 198.725V125.401C367.401 123.146 366.241 121.031 364.331 119.886L277.463 67.4773C275.758 66.4714 273.712 66.298 271.87 67.0264L260.376 71.6047C259.489 71.9516 259.148 73.0615 259.728 73.8593L354.611 207.708Z" fill="#0EE7EA"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M352.953 208.548L365.059 200.818C365.502 200.541 365.741 200.056 365.741 199.57V126.294C365.741 124.041 364.581 121.927 362.672 120.783L275.819 68.4083C274.114 67.4031 271.591 67.0911 269.749 67.819L258.701 72.1171C257.814 72.4638 257.507 73.9889 258.053 74.7861L352.953 208.548Z" fill="url(#paint34_linear_14238_54695)"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M350.595 209.388L362.669 201.751C363.112 201.475 363.249 200.576 363.249 200.093V127.077C363.249 124.831 362.089 122.723 360.179 121.582L273.311 69.369C271.606 68.3669 268.775 67.8831 266.967 68.6087L256.224 73.4465C255.337 73.7921 254.996 74.8979 255.576 75.6926L350.595 209.388Z" fill="#0EE7EA"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M348.514 211.068L360.179 203.555C360.622 203.278 360.758 202.654 360.758 202.135V128.141C360.758 125.89 359.599 123.778 357.689 122.636L270.821 70.317C269.115 69.3128 266.523 68.6896 264.716 69.4167L253.734 74.4374C252.847 74.7836 252.506 75.8916 253.086 76.688L348.514 211.068Z" fill="url(#paint35_linear_14238_54695)"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M347.212 212.748L357.721 205.902C358.165 205.626 358.267 204.934 358.267 204.415V129.904C358.267 127.657 357.107 125.548 355.196 124.407L268.294 72.1623C266.588 71.1596 264.371 70.3297 262.528 71.0558L253.043 74.8938C252.156 75.2395 253.93 77.0029 254.476 77.7981L347.212 212.748Z" fill="#0EE7EA"/> +<path opacity="0.5" fill-rule="evenodd" clip-rule="evenodd" d="M350.793 131.335L367.217 121.183C367.217 121.183 368.233 122.396 368.233 124.232V197.998C368.233 198.448 367.308 199.578 366.935 199.821L354.493 207.842L350.793 131.335Z" fill="url(#paint36_linear_14238_54695)"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M281 58.7171C280.575 58.426 280.108 58.2018 279.612 58.0666C278.178 57.6763 274.911 56.8592 271.83 56.6044C263.495 55.9266 249.49 58.1296 250.344 75.821L260.216 74.2959L262.949 74.8721C247.577 66.128 269.828 57.2981 279.7 62.7207L285.186 61.5865L281 58.7171Z" fill="#16E3BA"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M346.956 218.629L352.85 215.274C354.186 214.513 355.009 213.025 354.94 211.469V134.237C354.94 134.237 354.975 128.288 348.669 124.76C342.706 121.405 258.471 72.0849 258.471 72.0849C258.471 72.0849 250.898 69.2834 250.452 77.4458C250.007 85.6083 250.726 159.727 250.726 159.727L346.956 218.629Z" fill="#16E3BA"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M347.055 218.629L352.875 215.285C354.195 214.527 355.007 213.044 354.94 211.493V134.521C354.94 134.521 354.973 128.592 348.747 125.076C342.859 121.733 337.241 118.286 337.241 118.286C337.241 118.286 329.762 115.494 329.322 123.629C328.882 131.764 329.762 209.011 329.762 209.011L347.055 218.629Z" fill="url(#paint37_linear_14238_54695)"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M344.246 218.133L254.483 165.958C252.235 164.647 250.395 161.13 250.395 158.13V79.3673C250.123 72.6773 250.566 70.7806 250.566 70.7806C250.566 70.7806 251.111 73.2635 252.882 74.9533C253.461 75.505 255.812 77.0913 256.663 77.5741L344.212 128.473C346.461 129.784 348.3 133.301 348.3 136.301V215.064C348.334 218.064 346.495 219.443 344.246 218.133Z" fill="url(#paint38_linear_14238_54695)"/> +<path d="M303.291 115.496C303.058 115.53 302.826 115.556 302.593 115.581C302.361 115.607 302.128 115.633 301.896 115.667C301.829 115.667 301.796 115.667 301.73 115.564C301.165 114.811 300.6 114.093 300.002 113.34L298.208 110.978C298.101 110.843 297.998 110.708 297.896 110.574C297.714 110.336 297.536 110.103 297.345 109.883L295.285 108.685C295.385 108.822 295.484 108.959 295.584 109.062C295.747 109.271 295.909 109.484 296.073 109.698C296.444 110.183 296.82 110.674 297.212 111.149C297.478 111.492 297.743 111.842 298.009 112.193C298.275 112.544 298.541 112.895 298.806 113.237L300.301 115.188C300.534 115.496 300.774 115.804 301.015 116.112C301.256 116.42 301.497 116.728 301.73 117.036C301.796 117.104 301.829 117.139 301.862 117.104C302.261 117.07 302.626 117.036 303.025 116.968C303.507 116.916 303.98 116.856 304.453 116.796C304.927 116.737 305.4 116.677 305.882 116.625C306.253 116.589 306.624 116.543 306.99 116.497C307.312 116.457 307.631 116.418 307.941 116.386C308.074 116.386 308.24 116.351 308.373 116.317L306.314 115.085C305.622 115.204 304.929 115.29 304.226 115.377C303.917 115.415 303.605 115.454 303.291 115.496Z" fill="white"/> +<path d="M305.417 123.744L304.387 123.881C303.108 122.221 301.837 120.57 300.567 118.918C299.296 117.267 298.026 115.616 296.747 113.956V112.484L296.747 112.485C299.637 116.249 302.527 120.014 305.417 123.744Z" fill="white"/> +<path d="M300.687 121.217C299.376 119.507 298.068 117.803 296.747 116.112V117.584C297.495 118.551 298.244 119.526 298.995 120.504C299.944 121.74 300.898 122.981 301.862 124.223L302.892 124.086C302.154 123.13 301.42 122.172 300.687 121.217Z" fill="white"/> +<path d="M306.945 118.473C306.314 118.559 305.682 118.636 305.051 118.713C304.42 118.79 303.789 118.867 303.158 118.952C303.191 118.987 303.191 119.021 303.191 119.021C303.357 119.226 303.515 119.44 303.673 119.654C303.831 119.868 303.988 120.082 304.154 120.287L304.188 120.321C304.653 120.27 305.109 120.21 305.566 120.15C306.023 120.09 306.48 120.031 306.945 119.979V118.473Z" fill="white"/> +<path d="M306.945 122.135C306.729 122.17 306.521 122.195 306.314 122.221C306.106 122.247 305.898 122.272 305.682 122.306C305.848 122.529 306.014 122.742 306.18 122.956C306.346 123.17 306.513 123.385 306.679 123.607L306.945 123.573V122.135Z" fill="white"/> +<path d="M297.743 125.079L297.544 124.976L296.514 126.003L295.518 123.778L295.318 123.675L296.448 126.14V127.645L296.614 127.748V126.242L297.743 125.079Z" fill="white"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M298.375 128.296C298.674 128.809 299.039 129.186 299.504 129.459C299.936 129.733 300.334 129.767 300.633 129.63C300.932 129.494 301.098 129.151 301.098 128.672C301.098 128.193 300.932 127.68 300.633 127.201C300.334 126.721 299.936 126.345 299.504 126.071C299.039 125.797 298.674 125.763 298.375 125.9C298.076 126.037 297.943 126.345 297.943 126.824C297.943 127.303 298.076 127.817 298.375 128.296ZM300.501 129.459C300.235 129.562 299.903 129.528 299.504 129.288C299.072 129.049 298.74 128.706 298.474 128.261C298.209 127.816 298.076 127.372 298.076 126.961C298.076 126.516 298.209 126.242 298.474 126.105C298.74 125.968 299.072 126.037 299.504 126.276C299.903 126.482 300.235 126.824 300.501 127.269C300.766 127.714 300.899 128.159 300.899 128.604C300.899 129.049 300.766 129.322 300.501 129.459Z" fill="white"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M303.855 131.992L303.656 131.889L302.693 129.938L301.896 129.459V130.862L301.729 130.76V127.44L302.792 128.056C303.125 128.261 303.39 128.501 303.556 128.775C303.723 129.049 303.822 129.322 303.822 129.63C303.822 129.938 303.723 130.11 303.556 130.178C303.39 130.246 303.158 130.212 302.892 130.041L303.855 131.992ZM301.896 127.714V129.322L302.726 129.801C303.324 130.144 303.656 130.075 303.656 129.528C303.656 129.254 303.59 129.014 303.424 128.809C303.291 128.604 303.058 128.398 302.826 128.261L301.896 127.714Z" fill="white"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M304.752 132.06C305.051 132.574 305.417 132.95 305.882 133.224C306.347 133.464 306.712 133.532 307.011 133.395C307.31 133.258 307.476 132.916 307.476 132.437C307.476 131.958 307.31 131.444 307.011 130.965C306.712 130.486 306.314 130.11 305.882 129.836C305.417 129.562 305.051 129.528 304.752 129.665C304.453 129.802 304.321 130.11 304.321 130.589C304.321 131.068 304.453 131.581 304.752 132.06ZM306.878 133.224C306.613 133.327 306.281 133.292 305.882 133.053C305.483 132.813 305.151 132.471 304.852 132.026C304.586 131.581 304.454 131.136 304.454 130.726C304.454 130.281 304.586 130.007 304.852 129.87C305.118 129.733 305.45 129.802 305.882 130.041C306.281 130.246 306.613 130.589 306.878 131.034C307.144 131.479 307.277 131.923 307.277 132.368C307.277 132.813 307.144 133.087 306.878 133.224Z" fill="white"/> +<path d="M308.174 131.205V134.524L308.34 134.627V131.307L308.174 131.205Z" fill="white"/> +<path d="M300.633 131.171L300.7 131.205L300.434 131.855L300.368 131.821L300.135 130.965L299.903 131.547L299.836 131.513L299.57 130.554L299.637 130.589L299.869 131.444L300.102 130.862L300.168 130.897L300.401 131.752L300.633 131.171Z" fill="white"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M301.766 131.718L301.855 131.752V132.574L301.766 132.539V132.368C301.677 132.437 301.544 132.437 301.321 132.368C301.188 132.3 301.055 132.197 300.966 132.095C300.877 131.992 300.833 131.855 300.833 131.718C300.833 131.581 300.877 131.513 300.966 131.478C301.055 131.444 301.188 131.444 301.321 131.513C301.41 131.547 301.499 131.615 301.588 131.684C301.677 131.752 301.721 131.821 301.766 131.889V131.718ZM301.366 132.3C301.499 132.368 301.588 132.368 301.677 132.334C301.766 132.3 301.81 132.231 301.81 132.129C301.81 132.026 301.766 131.923 301.677 131.821C301.588 131.718 301.499 131.65 301.366 131.581C301.232 131.513 301.144 131.513 301.055 131.547C300.966 131.581 300.921 131.65 300.921 131.752C300.921 131.855 300.966 131.958 301.055 132.06C301.099 132.163 301.232 132.231 301.366 132.3Z" fill="white"/> +<path d="M301.929 132.779V131.547L301.995 131.581V132.813L301.929 132.779Z" fill="white"/> +<path d="M302.361 131.786V133.019L302.427 133.053V131.821L302.361 131.786Z" fill="white"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M302.921 133.232C302.823 133.122 302.775 133.012 302.775 132.902L303.723 133.259V133.566C303.723 133.669 303.723 133.703 303.756 133.771C303.756 133.806 303.822 133.874 303.889 133.908C303.955 133.977 304.022 133.977 304.088 133.977V133.908C304.022 133.908 303.988 133.908 303.922 133.874L303.822 133.771C303.789 133.737 303.789 133.669 303.789 133.6V133.087L304.088 133.258V133.19L303.789 133.019V132.711L303.723 132.676V132.95L303.623 132.882V132.901C303.527 132.779 303.394 132.713 303.261 132.646C303.115 132.573 302.969 132.573 302.872 132.609C302.775 132.646 302.726 132.719 302.726 132.866C302.726 133.012 302.775 133.159 302.872 133.269C302.969 133.379 303.115 133.489 303.261 133.562C303.456 133.635 303.602 133.672 303.699 133.598L303.651 133.525C303.553 133.562 303.407 133.562 303.261 133.489C303.115 133.415 303.018 133.342 302.921 133.232ZM303.681 132.99C303.697 133.02 303.711 133.054 303.723 133.092V133.019L303.681 132.99ZM302.921 132.646C302.969 132.609 303.115 132.646 303.213 132.683C303.359 132.719 303.456 132.792 303.505 132.902C303.602 132.975 303.651 133.085 303.651 133.195L302.775 132.829C302.775 132.719 302.823 132.683 302.921 132.646Z" fill="white"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M382.349 141.607L379.016 140.504L379.119 141.607L349.195 158.532L341.087 154.086C341.087 154.086 334.318 151.397 329.199 159.118L349.126 163.186L382.349 141.607Z" fill="#0EE7EA"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M349.131 185.867L336.259 178.666C330.895 175.66 327.539 169.928 327.539 163.741C327.539 156.924 334.771 152.625 340.688 155.911L349.131 160.63V185.867Z" fill="url(#paint39_linear_14238_54695)"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M382.349 166.399L349.131 185.867V160.812L382.349 141.344V166.399Z" fill="url(#paint40_linear_14238_54695)"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M272.152 135.304L324.647 166.164C325.056 166.407 325.567 166.65 325.669 166.164C325.669 166.094 325.703 166.025 325.703 165.955V157.867C325.703 157.243 325.328 156.514 324.852 156.236L272.05 125.133C272.016 125.099 271.982 125.099 271.914 125.064C271.505 124.89 271.403 125.446 271.403 126.001L271.369 133.673C271.369 134.332 271.71 135.061 272.152 135.304Z" fill="url(#paint41_linear_14238_54695)"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M271.914 125.064C271.914 125.133 271.88 125.203 271.88 125.272V133.36C271.88 133.985 272.255 134.714 272.731 134.992L325.533 166.094C325.567 166.129 325.601 166.129 325.669 166.164C325.601 166.65 325.26 166.823 324.852 166.58L272.05 135.478C271.574 135.2 271.199 134.471 271.199 133.846V125.758C271.199 125.203 271.506 124.925 271.914 125.064Z" fill="url(#paint42_linear_14238_54695)"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M272.152 152.98L324.647 183.839C325.056 184.082 325.567 184.325 325.669 183.839C325.669 183.77 325.703 183.7 325.703 183.631V175.543C325.703 174.918 325.328 174.189 324.852 173.912L272.05 142.809C272.016 142.774 271.982 142.774 271.914 142.74C271.505 142.566 271.403 143.121 271.403 143.677L271.369 151.348C271.369 152.008 271.71 152.702 272.152 152.98Z" fill="url(#paint43_linear_14238_54695)"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M271.914 142.739C271.914 142.809 271.88 142.878 271.88 142.948V151.036C271.88 151.661 272.255 152.39 272.731 152.667L325.533 183.77C325.567 183.804 325.601 183.804 325.669 183.839C325.601 184.325 325.26 184.499 324.852 184.256L272.05 153.153C271.574 152.876 271.199 152.147 271.199 151.522V143.434C271.199 142.878 271.506 142.601 271.914 142.739Z" fill="url(#paint44_linear_14238_54695)"/> +<path d="M285.669 158.742L286.316 157.492L286.963 159.506L288.154 159.367L287.235 157.284L288.597 157.458L288.12 155.722L286.861 155.791L287.031 154.125L285.499 153.223L285.669 155.097L284.409 153.535L283.967 154.75L285.363 156.208L284.443 157.18L285.669 158.742Z" fill="white"/> +<path d="M292.376 161.068L291.729 162.317L290.503 160.755L291.422 159.783L290.027 158.325L290.469 157.111L291.729 158.673L291.559 156.798L293.09 157.701L292.92 159.367L294.18 159.297L294.656 161.033L293.295 160.859L294.214 162.942L293.022 163.081L292.376 161.068Z" fill="white"/> +<path d="M297.789 165.893L298.435 164.643L299.082 166.656L300.274 166.518L299.355 164.435L300.716 164.608L300.24 162.873L298.98 162.942L299.15 161.276L297.618 160.373L297.789 162.248L296.529 160.686L296.086 161.901L297.482 163.359L296.563 164.331L297.789 165.893Z" fill="white"/> +<path d="M304.495 168.219L303.848 169.468L302.623 167.906L303.542 166.934L302.146 165.476L302.589 164.261L303.848 165.823L303.678 163.949L305.21 164.851L305.04 166.518L306.299 166.448L306.776 168.184L305.414 168.01L306.333 170.093L305.142 170.232L304.495 168.219Z" fill="white"/> +<path d="M310.589 171.794L309.942 173.044L308.717 171.481L309.636 170.51L308.24 169.052L308.682 167.837L309.942 169.399L309.772 167.524L311.304 168.427L311.134 170.093L312.393 170.024L312.87 171.759L311.508 171.586L312.427 173.668L311.236 173.807L310.589 171.794Z" fill="white"/> +<path d="M284.724 139.316C284.69 139.281 284.69 139.246 284.69 139.212V138.169L283.588 135.423V135.353C283.588 135.336 283.588 135.327 283.592 135.323C283.597 135.318 283.605 135.318 283.622 135.318H283.691L284.311 135.701L284.414 135.805C284.432 135.822 284.44 135.84 284.449 135.857C284.457 135.875 284.466 135.892 284.483 135.909L285.137 137.543L285.792 136.709C285.792 136.674 285.826 136.674 285.861 136.674C285.895 136.674 285.929 136.674 285.964 136.709L286.584 137.091C286.605 137.091 286.613 137.104 286.624 137.123C286.631 137.134 286.639 137.147 286.652 137.161C286.687 137.195 286.687 137.23 286.687 137.265V137.3L285.585 138.725V139.768C285.585 139.802 285.585 139.837 285.551 139.837C285.516 139.837 285.482 139.837 285.447 139.802L284.793 139.42C284.759 139.385 284.724 139.351 284.724 139.316Z" fill="white"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M286.549 139.42C286.549 139.768 286.687 140.115 286.893 140.428C287.134 140.741 287.444 141.019 287.892 141.228C288.305 141.471 288.615 141.575 288.822 141.506C289.028 141.471 289.132 141.262 289.166 140.915V140.498C289.132 140.15 288.994 139.802 288.787 139.49C288.546 139.177 288.236 138.899 287.858 138.655C287.444 138.447 287.134 138.342 286.928 138.412C286.687 138.482 286.584 138.655 286.549 139.003V139.42ZM288.236 140.393C288.236 140.567 288.202 140.671 288.133 140.706C288.064 140.741 287.961 140.776 287.823 140.671C287.685 140.567 287.582 140.463 287.513 140.359C287.444 140.22 287.41 140.081 287.41 139.907V139.49C287.41 139.316 287.444 139.212 287.513 139.177C287.582 139.107 287.685 139.107 287.823 139.212L287.857 139.237C287.978 139.328 288.07 139.397 288.133 139.524C288.202 139.663 288.236 139.802 288.236 139.976V140.393Z" fill="white"/> +<path d="M289.614 142.131C289.614 142.166 289.614 142.201 289.648 142.236C289.648 142.27 289.683 142.305 289.752 142.305L290.371 142.688C290.406 142.722 290.44 142.722 290.475 142.722C290.509 142.722 290.509 142.688 290.509 142.653V141.436C290.509 141.297 290.543 141.228 290.612 141.193C290.681 141.158 290.785 141.193 290.922 141.262L291.404 141.54H291.508C291.542 141.54 291.542 141.506 291.542 141.471V140.95C291.542 140.915 291.542 140.88 291.508 140.845C291.49 140.828 291.473 140.819 291.456 140.81C291.439 140.802 291.422 140.793 291.404 140.776L291.198 140.637C291.026 140.532 290.922 140.498 290.785 140.463C290.681 140.428 290.578 140.463 290.475 140.498V140.324C290.475 140.289 290.475 140.254 290.44 140.22C290.417 140.173 290.394 140.158 290.371 140.142C290.36 140.135 290.348 140.127 290.337 140.115L289.752 139.768H289.648C289.614 139.768 289.614 139.802 289.614 139.837V142.131Z" fill="white"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M291.714 142.479C291.714 142.827 291.852 143.174 292.059 143.487C292.3 143.8 292.61 144.078 293.057 144.287C293.47 144.53 293.78 144.634 293.987 144.565C294.193 144.53 294.297 144.321 294.331 143.974V143.557C294.297 143.209 294.159 142.861 293.952 142.549C293.711 142.236 293.401 141.958 293.023 141.714C292.61 141.506 292.3 141.401 292.093 141.471C291.852 141.541 291.749 141.714 291.714 142.062V142.479ZM293.401 143.452C293.401 143.626 293.367 143.73 293.298 143.765C293.229 143.8 293.126 143.8 292.988 143.73C292.85 143.626 292.747 143.522 292.678 143.418C292.609 143.279 292.575 143.14 292.575 142.966V142.549C292.575 142.375 292.609 142.271 292.678 142.236C292.747 142.166 292.85 142.166 292.988 142.271L293.023 142.296C293.143 142.387 293.235 142.456 293.298 142.583C293.367 142.722 293.401 142.861 293.401 143.035V143.452Z" fill="white"/> +<path d="M294.821 142.41C294.779 142.375 294.779 142.34 294.779 142.305V141.853C294.779 141.819 294.779 141.784 294.821 141.784H294.906L295.669 142.131C295.683 142.143 295.697 142.151 295.711 142.158C295.739 142.174 295.768 142.189 295.796 142.236C295.838 142.27 295.838 142.305 295.838 142.34V142.792C295.838 142.827 295.838 142.861 295.796 142.861H295.669L294.906 142.514C294.864 142.479 294.821 142.444 294.821 142.41Z" fill="white"/> +<path d="M294.821 145.295C294.779 145.26 294.779 145.225 294.779 145.19V142.896C294.779 142.861 294.779 142.827 294.821 142.827H294.906L295.669 143.174C295.683 143.186 295.697 143.194 295.711 143.201C295.739 143.217 295.768 143.232 295.796 143.279C295.838 143.313 295.838 143.348 295.838 143.383V145.677C295.838 145.712 295.838 145.747 295.796 145.747C295.754 145.747 295.711 145.747 295.669 145.712L294.906 145.364C294.864 145.364 294.821 145.329 294.821 145.295Z" fill="white"/> +<path d="M297.602 146.928C297.568 146.894 297.533 146.824 297.533 146.789L297.017 143.383V143.348C297.017 143.333 297.017 143.325 297.02 143.317C297.023 143.307 297.032 143.298 297.051 143.279L297.12 143.279L297.74 143.661C297.843 143.73 297.878 143.8 297.878 143.869L298.188 145.886L298.532 145.017C298.566 144.947 298.601 144.947 298.704 144.982L299.083 145.19C299.152 145.225 299.221 145.329 299.255 145.399L299.599 146.65L299.909 144.982C299.909 144.947 299.944 144.912 299.944 144.912C299.978 144.912 300.013 144.912 300.047 144.947L300.667 145.329C300.701 145.329 300.736 145.364 300.736 145.399C300.77 145.434 300.77 145.468 300.77 145.503V145.538L300.254 148.354C300.254 148.388 300.219 148.423 300.185 148.423C300.15 148.423 300.116 148.423 300.047 148.388L299.565 148.11C299.548 148.093 299.522 148.075 299.496 148.058C299.47 148.041 299.444 148.023 299.427 148.006C299.406 147.984 299.398 147.963 299.387 147.933C299.38 147.915 299.372 147.893 299.358 147.867L298.876 146.233L298.394 147.311C298.394 147.345 298.36 147.345 298.325 147.345C298.291 147.345 298.257 147.345 298.188 147.311L297.706 147.033C297.671 147.033 297.637 146.998 297.602 146.928Z" fill="white"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M301.356 149.153C301.218 149.014 301.115 148.84 301.011 148.666C300.942 148.493 300.908 148.354 300.908 148.215C300.908 148.006 301.011 147.867 301.183 147.832C301.356 147.797 301.631 147.867 301.941 148.006L302.526 148.284V148.215C302.526 148.11 302.492 148.006 302.458 147.902C302.423 147.797 302.32 147.728 302.216 147.658C302.198 147.649 302.182 147.64 302.167 147.631C302.127 147.607 302.095 147.589 302.044 147.589H301.769L301.218 147.241C301.205 147.228 301.192 147.22 301.18 147.213C301.162 147.201 301.149 147.193 301.149 147.172C301.115 147.137 301.115 147.102 301.115 147.067C301.115 146.998 301.149 146.894 301.252 146.859C301.321 146.789 301.459 146.789 301.631 146.789C301.803 146.789 302.01 146.894 302.251 147.033C302.664 147.276 302.94 147.519 303.146 147.832C303.353 148.145 303.422 148.423 303.422 148.736V150.196C303.422 150.231 303.422 150.265 303.387 150.265H303.284L302.699 149.918C302.685 149.905 302.672 149.896 302.661 149.889C302.643 149.878 302.63 149.87 302.63 149.848C302.595 149.813 302.595 149.779 302.595 149.744V149.57C302.526 149.64 302.423 149.64 302.285 149.64C302.148 149.64 302.01 149.57 301.838 149.466C301.666 149.431 301.493 149.327 301.356 149.153ZM302.423 149.153C302.526 149.118 302.561 149.014 302.561 148.805V148.736L302.148 148.562C301.872 148.458 301.734 148.458 301.734 148.632C301.734 148.701 301.769 148.771 301.838 148.875C301.907 148.945 301.975 149.014 302.079 149.084C302.216 149.188 302.32 149.223 302.423 149.153Z" fill="white"/> +<path d="M303.973 150.717C303.938 150.683 303.938 150.648 303.938 150.613V147.415C303.938 147.38 303.938 147.346 303.973 147.346C304.007 147.346 304.041 147.346 304.076 147.38L304.696 147.728C304.713 147.745 304.73 147.754 304.747 147.763C304.765 147.771 304.782 147.78 304.799 147.797C304.833 147.832 304.833 147.867 304.833 147.902V151.1C304.833 151.134 304.833 151.169 304.799 151.169H304.696L304.076 150.822C304.007 150.787 303.973 150.752 303.973 150.717Z" fill="white"/> +<path d="M305.316 151.447C305.316 151.482 305.316 151.517 305.35 151.551C305.384 151.586 305.419 151.621 305.453 151.621L306.073 151.969H306.176C306.211 151.969 306.211 151.934 306.211 151.899V148.701C306.211 148.666 306.211 148.632 306.176 148.597C306.159 148.579 306.142 148.571 306.125 148.562C306.107 148.553 306.09 148.545 306.073 148.527L305.453 148.18C305.419 148.145 305.384 148.145 305.35 148.145C305.316 148.145 305.316 148.18 305.316 148.214V151.447Z" fill="white"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M306.624 151.134C306.624 151.551 306.727 151.934 306.968 152.281C307.162 152.56 307.399 152.794 307.628 153.019C307.684 153.075 307.74 153.13 307.795 153.185C308.036 153.324 308.277 153.394 308.449 153.429C308.621 153.463 308.759 153.463 308.862 153.394C308.965 153.324 309 153.255 309 153.185C309 153.185 308.965 153.15 308.965 153.116C308.965 153.081 308.931 153.046 308.897 153.046L308.277 152.664C308.257 152.644 308.249 152.635 308.238 152.632C308.231 152.629 308.223 152.629 308.208 152.629C308.208 152.629 308.174 152.664 308.139 152.664C308.105 152.699 308.036 152.699 308.001 152.699C307.967 152.699 307.898 152.664 307.829 152.629C307.726 152.56 307.623 152.455 307.554 152.316C307.485 152.177 307.45 152.038 307.45 151.899V151.864L308.965 152.768H309.069C309.103 152.768 309.103 152.733 309.103 152.699V152.594C309.103 152.351 309.069 152.073 308.965 151.83C308.897 151.551 308.759 151.308 308.552 151.1C308.38 150.856 308.139 150.682 307.864 150.509C307.485 150.3 307.209 150.231 306.968 150.3C306.762 150.37 306.624 150.613 306.624 150.995V151.134ZM308.174 151.378C308.242 151.482 308.277 151.621 308.277 151.795L307.519 151.343C307.519 151.169 307.554 151.065 307.623 151.03C307.692 150.995 307.76 150.995 307.898 151.065C307.925 151.092 307.951 151.116 307.977 151.14C308.052 151.209 308.122 151.274 308.174 151.378Z" fill="white"/> +<path d="M309.895 152.386V153.289C309.895 153.95 310.24 154.471 310.928 154.784L311.376 155.062H311.479C311.514 155.062 311.514 155.027 311.514 154.993V154.541C311.514 154.506 311.514 154.471 311.479 154.437C311.456 154.39 311.433 154.375 311.41 154.359C311.399 154.352 311.387 154.344 311.376 154.332L310.997 154.124C310.894 154.054 310.825 153.985 310.79 153.915C310.756 153.846 310.722 153.741 310.722 153.637V152.803L311.341 153.15C311.376 153.185 311.41 153.185 311.445 153.185C311.479 153.185 311.479 153.15 311.479 153.116V152.699C311.479 152.664 311.479 152.629 311.445 152.594C311.427 152.577 311.41 152.568 311.393 152.56C311.376 152.551 311.359 152.542 311.341 152.525L310.722 152.177V151.378C310.722 151.343 310.722 151.308 310.687 151.273C310.67 151.256 310.653 151.247 310.636 151.239C310.618 151.23 310.601 151.221 310.584 151.204L309.998 150.856H309.93C309.895 150.856 309.895 150.891 309.895 150.926V151.725L309.516 151.517H309.448C309.413 151.517 309.413 151.551 309.413 151.586V152.003C309.413 152.038 309.413 152.073 309.448 152.108C309.448 152.129 309.461 152.137 309.479 152.149C309.49 152.156 309.503 152.164 309.516 152.177L309.895 152.386Z" fill="white"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M319.523 90.2624C310.702 86.0107 303.555 74.2058 303.555 63.8016C303.555 59.9 304.569 56.7987 306.241 54.6478L304.873 55.048L308.117 52.8471C308.168 52.797 308.231 52.7595 308.294 52.722C308.358 52.6845 308.421 52.647 308.472 52.597L308.573 52.4969C311.463 50.6962 315.315 50.5461 319.523 52.597C328.343 56.8487 335.491 68.6536 335.491 79.0578C335.491 84.0099 333.868 87.7114 331.232 89.8122L331.182 89.8623C331.03 89.9623 330.89 90.0623 330.751 90.1624C330.612 90.2624 330.472 90.3625 330.32 90.4625L327.177 92.6634L327.329 91.613C324.997 92.0131 322.361 91.613 319.523 90.2624ZM319.523 61.1505C314.707 58.8495 310.804 61.5506 310.804 67.253C310.804 72.9053 314.707 79.408 319.523 81.7589C324.338 84.0599 328.242 81.3588 328.242 75.6564C328.242 69.9541 324.338 63.4514 319.523 61.1505Z" fill="url(#paint45_linear_14238_54695)"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M299.955 66.4526C299.955 56.0983 307.103 51.0963 315.923 55.298C324.693 59.4997 331.84 71.3546 331.891 81.7589C331.891 92.1131 324.743 97.1152 315.923 92.9135C307.103 88.6617 299.955 76.8569 299.955 66.4526ZM307.204 69.854C307.204 75.5563 311.107 82.059 315.923 84.3599C320.739 86.7109 324.642 83.9598 324.642 78.2574C324.642 72.5551 320.739 66.0524 315.923 63.7515C311.107 61.4505 307.204 64.1516 307.204 69.854Z" fill="url(#paint46_linear_14238_54695)"/> +<ellipse cx="11.9795" cy="19.064" rx="11.9795" ry="19.064" transform="matrix(0.886976 -0.461815 0.472813 0.881163 296.277 62.6342)" fill="url(#paint47_linear_14238_54695)"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M318.663 77.2327L310.893 72.5592C310.041 74.6345 308.957 77.2081 308.067 79.2579C307.966 79.408 307.813 79.408 307.611 79.3079C307.307 79.1579 307.256 79.0578 307.256 78.7577V78.6577L310.034 72.0422L307.56 70.5543C307.408 70.4543 307.307 70.2542 307.307 70.0541V69.6039C307.307 69.4038 307.408 69.3538 307.56 69.4038L310.419 71.1237L311.365 68.8716L308.929 67.403C308.777 67.303 308.675 67.1029 308.675 66.9028V66.4026C308.675 66.2025 308.777 66.1525 308.929 66.2025L311.767 67.9136L313.998 62.6011C314.201 62.2009 314.708 61.9008 315.164 62.2009C315.671 62.501 315.924 63.1013 316.076 63.7015L318.396 71.9092L321.044 73.5055C321.196 73.6056 321.298 73.8057 321.298 74.0057V74.4559C321.298 74.706 321.196 74.8061 321.044 74.706L318.805 73.3562L319.762 76.7436L322.362 78.3075C322.514 78.4075 322.616 78.6076 322.616 78.8077V79.2579C322.666 79.458 322.514 79.558 322.362 79.458L320.154 78.1297L322.565 86.6609C322.717 87.0611 322.92 87.7114 322.514 87.8114C321.957 87.9615 321.703 87.5613 321.602 87.2112L318.663 77.2327ZM317.412 72.5169L318.338 75.8872L311.366 71.6935L312.283 69.425L317.412 72.5169ZM317.017 71.0781L312.673 68.4596L314.454 64.0517C314.708 63.3514 314.961 63.6515 315.265 64.7019L317.017 71.0781Z" fill="white"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M374.776 38.2032C368.771 35.29 363.904 27.2015 363.904 20.0726C363.904 17.3993 364.595 15.2744 365.734 13.8006L364.802 14.0748L367.011 12.5668C367.045 12.5325 367.088 12.5068 367.131 12.4811C367.174 12.4554 367.218 12.4297 367.252 12.3954L367.321 12.3269C369.288 11.093 371.911 10.9902 374.776 12.3954C380.781 15.3087 385.648 23.3972 385.648 30.526C385.648 33.9191 384.543 36.4553 382.749 37.8948L382.714 37.929C382.611 37.9976 382.516 38.0661 382.421 38.1347C382.326 38.2032 382.231 38.2718 382.128 38.3403L379.988 39.8484L380.091 39.1286C378.504 39.4028 376.709 39.1286 374.776 38.2032ZM374.776 18.2562C371.497 16.6796 368.84 18.5303 368.84 22.4375C368.84 26.3104 371.497 30.7659 374.776 32.3768C378.055 33.9533 380.712 32.1026 380.712 28.1954C380.712 24.2883 378.055 19.8327 374.776 18.2562Z" fill="url(#paint48_linear_14238_54695)"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M361.453 21.8891C361.453 14.7945 366.32 11.3672 372.325 14.2462C378.296 17.1251 383.162 25.2479 383.197 32.3768C383.197 39.4713 378.33 42.8987 372.325 40.0197C366.32 37.1065 361.453 29.018 361.453 21.8891ZM366.389 24.2197C366.389 28.1269 369.046 32.5824 372.325 34.159C375.604 35.7698 378.261 33.8848 378.261 29.9776C378.261 26.0705 375.604 21.6149 372.325 20.0384C369.046 18.4618 366.389 20.3125 366.389 24.2197Z" fill="url(#paint49_linear_14238_54695)"/> +<ellipse cx="8.16739" cy="13.0439" rx="8.16739" ry="13.0439" transform="matrix(0.885771 -0.464123 0.470486 0.882407 358.949 19.2727)" fill="url(#paint50_linear_14238_54695)"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M374.19 29.2754L368.9 26.0732C368.32 27.4952 367.582 29.2586 366.976 30.6631C366.907 30.7659 366.803 30.7659 366.665 30.6974C366.458 30.5945 366.424 30.526 366.424 30.3203V30.2518L368.315 25.719L366.631 24.6995C366.527 24.631 366.458 24.4939 366.458 24.3568V24.0483C366.458 23.9112 366.527 23.877 366.631 23.9112L368.578 25.0897L369.222 23.5465L367.563 22.5403C367.459 22.4718 367.39 22.3347 367.39 22.1976V21.8548C367.39 21.7177 367.459 21.6835 367.563 21.7177L369.495 22.8901L371.014 19.2501C371.152 18.9759 371.497 18.7702 371.808 18.9759C372.153 19.1815 372.326 19.5928 372.429 20.0041L374.008 25.6279L375.812 26.7216C375.915 26.7902 375.984 26.9273 375.984 27.0644V27.3728C375.984 27.5442 375.915 27.6128 375.812 27.5442L374.287 26.6193L374.939 28.9403L376.709 30.0119C376.812 30.0804 376.881 30.2175 376.881 30.3546V30.6631C376.916 30.8002 376.812 30.8687 376.709 30.8002L375.205 29.89L376.847 35.7355C376.951 36.0097 377.089 36.4553 376.812 36.5238C376.433 36.6266 376.26 36.3524 376.191 36.1125L374.19 29.2754ZM373.339 26.0442L373.969 28.3535L369.223 25.4801L369.847 23.9257L373.339 26.0442ZM373.07 25.0584L370.112 23.2643L371.325 20.244C371.497 19.7642 371.67 19.9698 371.877 20.6895L373.07 25.0584Z" fill="white"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M300.783 40.6199C295.903 38.2578 291.949 31.6995 291.949 25.9194C291.949 23.7518 292.51 22.0289 293.435 20.834L292.678 21.0563L294.473 19.8336C294.501 19.8058 294.536 19.7849 294.571 19.7641C294.606 19.7432 294.641 19.7224 294.669 19.6946L294.725 19.639C296.324 18.6386 298.455 18.5553 300.783 19.6946C305.662 22.0567 309.616 28.6149 309.616 34.3951C309.616 37.1462 308.719 39.2026 307.26 40.3698L307.232 40.3976C307.148 40.4531 307.071 40.5087 306.994 40.5643C306.917 40.6199 306.84 40.6755 306.756 40.731L305.017 41.9538L305.101 41.3702C303.811 41.5925 302.353 41.3702 300.783 40.6199ZM300.783 24.4466C298.119 23.1683 295.959 24.6689 295.959 27.8368C295.959 30.977 298.119 34.5896 300.783 35.8957C303.447 37.174 305.606 35.6734 305.606 32.5054C305.606 29.3375 303.447 25.7249 300.783 24.4466Z" fill="url(#paint51_linear_14238_54695)"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M289.959 27.3922C289.959 21.6399 293.913 18.8609 298.792 21.1952C303.644 23.5295 307.598 30.1156 307.626 35.8957C307.626 41.6481 303.672 44.427 298.792 42.0927C293.913 39.7306 289.959 33.1724 289.959 27.3922ZM293.969 29.2819C293.969 32.4499 296.128 36.0625 298.792 37.3408C301.456 38.6468 303.616 37.1184 303.616 33.9505C303.616 30.7825 301.456 27.1699 298.792 25.8916C296.128 24.6133 293.969 26.1139 293.969 29.2819Z" fill="url(#paint52_linear_14238_54695)"/> +<ellipse cx="6.63303" cy="10.5811" rx="6.63303" ry="10.5811" transform="matrix(0.886167 -0.463365 0.471249 0.882 287.924 25.2709)" fill="url(#paint53_linear_14238_54695)"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M300.306 33.3811L296.008 30.7848C295.537 31.9377 294.937 33.3675 294.445 34.5062C294.389 34.5896 294.305 34.5896 294.192 34.534C294.024 34.4507 293.996 34.3951 293.996 34.2284V34.1728L295.533 30.4975L294.164 29.6709C294.08 29.6153 294.024 29.5042 294.024 29.393V29.1429C294.024 29.0318 294.08 29.004 294.164 29.0318L295.746 29.9873L296.269 28.7361L294.921 27.9202C294.837 27.8646 294.781 27.7535 294.781 27.6423V27.3644C294.781 27.2533 294.837 27.2255 294.921 27.2533L296.492 28.2038L297.726 25.2525C297.838 25.0301 298.118 24.8634 298.371 25.0301C298.651 25.1969 298.791 25.5303 298.875 25.8638L300.159 30.4236L301.624 31.3105C301.708 31.3661 301.764 31.4772 301.764 31.5884V31.8385C301.764 31.9774 301.708 32.033 301.624 31.9774L300.385 31.2275L300.914 33.1094L302.353 33.9783C302.437 34.0338 302.493 34.145 302.493 34.2561V34.5062C302.521 34.6174 302.437 34.673 302.353 34.6174L301.131 33.8795L302.465 38.619C302.549 38.8414 302.661 39.2026 302.437 39.2582C302.128 39.3416 301.988 39.1193 301.932 38.9247L300.306 33.3811ZM299.615 30.7612L300.127 32.6336L296.27 30.3038L296.777 29.0435L299.615 30.7612ZM299.396 29.9619L296.993 28.5072L297.978 26.0583C298.118 25.6693 298.259 25.836 298.427 26.4196L299.396 29.9619Z" fill="white"/> +<defs> +<linearGradient id="paint0_linear_14238_54695" x1="327.859" y1="75.7147" x2="281.942" y2="237.78" gradientUnits="userSpaceOnUse"> +<stop stop-color="#17D1AA"/> +<stop offset="0.15" stop-color="#1ACBAF"/> +<stop offset="0.37" stop-color="#21B8BC"/> +<stop offset="0.62" stop-color="#2E9BD3"/> +<stop offset="0.89" stop-color="#3F71F1"/> +<stop offset="1" stop-color="#475FFF"/> +</linearGradient> +<linearGradient id="paint1_linear_14238_54695" x1="467.528" y1="141.084" x2="467.528" y2="114.923" gradientUnits="userSpaceOnUse"> +<stop stop-color="#1D45BA"/> +<stop offset="0.4204" stop-color="#1D47BA"/> +<stop offset="0.5718" stop-color="#1D4EB9"/> +<stop offset="0.6797" stop-color="#1C59B8"/> +<stop offset="0.767" stop-color="#1B6AB6"/> +<stop offset="0.8417" stop-color="#1A80B3"/> +<stop offset="0.9079" stop-color="#199CB0"/> +<stop offset="0.9663" stop-color="#18BBAD"/> +<stop offset="1" stop-color="#17D1AA"/> +</linearGradient> +<linearGradient id="paint2_linear_14238_54695" x1="433.984" y1="93.6758" x2="415.944" y2="137.366" gradientUnits="userSpaceOnUse"> +<stop stop-color="#17D1AA"/> +<stop offset="0.15" stop-color="#1ACBAF"/> +<stop offset="0.37" stop-color="#21B8BC"/> +<stop offset="0.62" stop-color="#2E9BD3"/> +<stop offset="0.89" stop-color="#3F71F1"/> +<stop offset="1" stop-color="#475FFF"/> +</linearGradient> +<linearGradient id="paint3_linear_14238_54695" x1="462.932" y1="131.507" x2="462.932" y2="108.225" gradientUnits="userSpaceOnUse"> +<stop stop-color="#1D45BA"/> +<stop offset="0.4204" stop-color="#1D47BA"/> +<stop offset="0.5718" stop-color="#1D4EB9"/> +<stop offset="0.6797" stop-color="#1C59B8"/> +<stop offset="0.767" stop-color="#1B6AB6"/> +<stop offset="0.8417" stop-color="#1A80B3"/> +<stop offset="0.9079" stop-color="#199CB0"/> +<stop offset="0.9663" stop-color="#18BBAD"/> +<stop offset="1" stop-color="#17D1AA"/> +</linearGradient> +<linearGradient id="paint4_linear_14238_54695" x1="433.088" y1="89.3027" x2="417.03" y2="128.183" gradientUnits="userSpaceOnUse"> +<stop stop-color="#17D1AA"/> +<stop offset="0.15" stop-color="#1ACBAF"/> +<stop offset="0.37" stop-color="#21B8BC"/> +<stop offset="0.62" stop-color="#2E9BD3"/> +<stop offset="0.89" stop-color="#3F71F1"/> +<stop offset="1" stop-color="#475FFF"/> +</linearGradient> +<linearGradient id="paint5_linear_14238_54695" x1="458.846" y1="123.621" x2="458.846" y2="102.933" gradientUnits="userSpaceOnUse"> +<stop stop-color="#1D45BA"/> +<stop offset="0.4204" stop-color="#1D47BA"/> +<stop offset="0.5718" stop-color="#1D4EB9"/> +<stop offset="0.6797" stop-color="#1C59B8"/> +<stop offset="0.767" stop-color="#1B6AB6"/> +<stop offset="0.8417" stop-color="#1A80B3"/> +<stop offset="0.9079" stop-color="#199CB0"/> +<stop offset="0.9663" stop-color="#18BBAD"/> +<stop offset="1" stop-color="#17D1AA"/> +</linearGradient> +<linearGradient id="paint6_linear_14238_54695" x1="432.293" y1="86.082" x2="418" y2="120.676" gradientUnits="userSpaceOnUse"> +<stop stop-color="#17D1AA"/> +<stop offset="0.15" stop-color="#1ACBAF"/> +<stop offset="0.37" stop-color="#21B8BC"/> +<stop offset="0.62" stop-color="#2E9BD3"/> +<stop offset="0.89" stop-color="#3F71F1"/> +<stop offset="1" stop-color="#475FFF"/> +</linearGradient> +<linearGradient id="paint7_linear_14238_54695" x1="425.908" y1="50.9219" x2="425.908" y2="115.021" gradientUnits="userSpaceOnUse"> +<stop stop-color="#52FCFF" stop-opacity="0"/> +<stop offset="1" stop-color="#52FCFF" stop-opacity="0.24"/> +</linearGradient> +<linearGradient id="paint8_linear_14238_54695" x1="413.115" y1="102.075" x2="439.946" y2="102.075" gradientUnits="userSpaceOnUse"> +<stop stop-color="#17D1AA"/> +<stop offset="0.15" stop-color="#1ACBAF"/> +<stop offset="0.37" stop-color="#21B8BC"/> +<stop offset="0.62" stop-color="#2E9BD3"/> +<stop offset="0.89" stop-color="#3F71F1"/> +<stop offset="1" stop-color="#475FFF"/> +</linearGradient> +<linearGradient id="paint9_linear_14238_54695" x1="438.124" y1="123.652" x2="482.153" y2="62.4" gradientUnits="userSpaceOnUse"> +<stop stop-color="#244ABF"/> +<stop offset="1" stop-color="#4760FF"/> +</linearGradient> +<linearGradient id="paint10_linear_14238_54695" x1="12.209" y1="2.49021e-06" x2="-6.45711" y2="16.7068" gradientUnits="userSpaceOnUse"> +<stop stop-color="#17D1AA"/> +<stop offset="0.15" stop-color="#1ACBAF"/> +<stop offset="0.37" stop-color="#21B8BC"/> +<stop offset="0.62" stop-color="#2E9BD3"/> +<stop offset="0.89" stop-color="#3F71F1"/> +<stop offset="1" stop-color="#475FFF"/> +</linearGradient> +<linearGradient id="paint11_linear_14238_54695" x1="117.115" y1="118.319" x2="324.948" y2="76.125" gradientUnits="userSpaceOnUse"> +<stop stop-color="#17D1AA"/> +<stop offset="0.0659437" stop-color="#1AC2AE"/> +<stop offset="0.2651" stop-color="#229BB8"/> +<stop offset="0.4616" stop-color="#297CC0"/> +<stop offset="0.6525" stop-color="#2D66C6"/> +<stop offset="0.8349" stop-color="#3059CA"/> +<stop offset="1" stop-color="#3154CB"/> +</linearGradient> +<linearGradient id="paint12_linear_14238_54695" x1="190.185" y1="80.5039" x2="159.88" y2="153.867" gradientUnits="userSpaceOnUse"> +<stop stop-color="#17D1AA"/> +<stop offset="0.15" stop-color="#1ACBAF"/> +<stop offset="0.37" stop-color="#21B8BC"/> +<stop offset="0.62" stop-color="#2E9BD3"/> +<stop offset="0.89" stop-color="#3F71F1"/> +<stop offset="1" stop-color="#475FFF"/> +</linearGradient> +<linearGradient id="paint13_linear_14238_54695" x1="226.038" y1="145.512" x2="226.038" y2="109.266" gradientUnits="userSpaceOnUse"> +<stop stop-color="#1D45BA"/> +<stop offset="0.4204" stop-color="#1D47BA"/> +<stop offset="0.5718" stop-color="#1D4EB9"/> +<stop offset="0.6797" stop-color="#1C59B8"/> +<stop offset="0.767" stop-color="#1B6AB6"/> +<stop offset="0.8417" stop-color="#1A80B3"/> +<stop offset="0.9079" stop-color="#199CB0"/> +<stop offset="0.9663" stop-color="#18BBAD"/> +<stop offset="1" stop-color="#17D1AA"/> +</linearGradient> +<linearGradient id="paint14_linear_14238_54695" x1="176.616" y1="85.4124" x2="210.808" y2="165.238" gradientUnits="userSpaceOnUse"> +<stop stop-color="#0CDDB3"/> +<stop offset="1" stop-color="#4F6FC6"/> +</linearGradient> +<linearGradient id="paint15_linear_14238_54695" x1="226.038" y1="131.635" x2="226.038" y2="95.3755" gradientUnits="userSpaceOnUse"> +<stop stop-color="#1D45BA"/> +<stop offset="0.4204" stop-color="#1D47BA"/> +<stop offset="0.5718" stop-color="#1D4EB9"/> +<stop offset="0.6797" stop-color="#1C59B8"/> +<stop offset="0.767" stop-color="#1B6AB6"/> +<stop offset="0.8417" stop-color="#1A80B3"/> +<stop offset="0.9079" stop-color="#199CB0"/> +<stop offset="0.9663" stop-color="#18BBAD"/> +<stop offset="1" stop-color="#17D1AA"/> +</linearGradient> +<linearGradient id="paint16_linear_14238_54695" x1="176.616" y1="71.5094" x2="210.808" y2="151.335" gradientUnits="userSpaceOnUse"> +<stop stop-color="#0CDDB3"/> +<stop offset="1" stop-color="#4F6FC6"/> +</linearGradient> +<linearGradient id="paint17_linear_14238_54695" x1="226.038" y1="117.731" x2="226.038" y2="81.485" gradientUnits="userSpaceOnUse"> +<stop stop-color="#1D45BA"/> +<stop offset="0.4204" stop-color="#1D47BA"/> +<stop offset="0.5718" stop-color="#1D4EB9"/> +<stop offset="0.6797" stop-color="#1C59B8"/> +<stop offset="0.767" stop-color="#1B6AB6"/> +<stop offset="0.8417" stop-color="#1A80B3"/> +<stop offset="0.9079" stop-color="#199CB0"/> +<stop offset="0.9663" stop-color="#18BBAD"/> +<stop offset="1" stop-color="#17D1AA"/> +</linearGradient> +<linearGradient id="paint18_linear_14238_54695" x1="176.616" y1="57.6189" x2="210.808" y2="137.444" gradientUnits="userSpaceOnUse"> +<stop stop-color="#0CDDB3"/> +<stop offset="1" stop-color="#4F6FC6"/> +</linearGradient> +<linearGradient id="paint19_linear_14238_54695" x1="226.038" y1="103.85" x2="226.038" y2="67.604" gradientUnits="userSpaceOnUse"> +<stop stop-color="#1D45BA"/> +<stop offset="0.4204" stop-color="#1D47BA"/> +<stop offset="0.5718" stop-color="#1D4EB9"/> +<stop offset="0.6797" stop-color="#1C59B8"/> +<stop offset="0.767" stop-color="#1B6AB6"/> +<stop offset="0.8417" stop-color="#1A80B3"/> +<stop offset="0.9079" stop-color="#199CB0"/> +<stop offset="0.9663" stop-color="#18BBAD"/> +<stop offset="1" stop-color="#17D1AA"/> +</linearGradient> +<linearGradient id="paint20_linear_14238_54695" x1="176.616" y1="43.7266" x2="210.808" y2="123.552" gradientUnits="userSpaceOnUse"> +<stop stop-color="#0CDDB3"/> +<stop offset="1" stop-color="#4F6FC6"/> +</linearGradient> +<linearGradient id="paint21_linear_14238_54695" x1="176.5" y1="-17" x2="176.5" y2="79" gradientUnits="userSpaceOnUse"> +<stop stop-color="#52FCFF" stop-opacity="0"/> +<stop offset="1" stop-color="#52FCFF" stop-opacity="0.24"/> +</linearGradient> +<linearGradient id="paint22_linear_14238_54695" x1="167.373" y1="30.3913" x2="190.952" y2="30.3913" gradientUnits="userSpaceOnUse"> +<stop stop-color="#17D1AA"/> +<stop offset="0.15" stop-color="#1ACBAF"/> +<stop offset="0.37" stop-color="#21B8BC"/> +<stop offset="0.62" stop-color="#2E9BD3"/> +<stop offset="0.89" stop-color="#3F71F1"/> +<stop offset="1" stop-color="#475FFF"/> +</linearGradient> +<linearGradient id="paint23_linear_14238_54695" x1="189.353" y1="49.6352" x2="228.804" y2="-4.44111" gradientUnits="userSpaceOnUse"> +<stop stop-color="#244ABF"/> +<stop offset="1" stop-color="#4760FF"/> +</linearGradient> +<linearGradient id="paint24_linear_14238_54695" x1="10.7622" y1="2.21346e-06" x2="-5.81372" y2="14.7129" gradientUnits="userSpaceOnUse"> +<stop stop-color="#17D1AA"/> +<stop offset="0.15" stop-color="#1ACBAF"/> +<stop offset="0.37" stop-color="#21B8BC"/> +<stop offset="0.62" stop-color="#2E9BD3"/> +<stop offset="0.89" stop-color="#3F71F1"/> +<stop offset="1" stop-color="#475FFF"/> +</linearGradient> +<linearGradient id="paint25_linear_14238_54695" x1="109.135" y1="181.347" x2="109.135" y2="144.951" gradientUnits="userSpaceOnUse"> +<stop stop-color="#1D45BA"/> +<stop offset="0.4204" stop-color="#1D47BA"/> +<stop offset="0.5718" stop-color="#1D4EB9"/> +<stop offset="0.6797" stop-color="#1C59B8"/> +<stop offset="0.767" stop-color="#1B6AB6"/> +<stop offset="0.8417" stop-color="#1A80B3"/> +<stop offset="0.9079" stop-color="#199CB0"/> +<stop offset="0.9663" stop-color="#18BBAD"/> +<stop offset="1" stop-color="#17D1AA"/> +</linearGradient> +<linearGradient id="paint26_linear_14238_54695" x1="62.5005" y1="115.398" x2="37.4165" y2="176.126" gradientUnits="userSpaceOnUse"> +<stop stop-color="#17D1AA"/> +<stop offset="0.15" stop-color="#1ACBAF"/> +<stop offset="0.37" stop-color="#21B8BC"/> +<stop offset="0.62" stop-color="#2E9BD3"/> +<stop offset="0.89" stop-color="#3F71F1"/> +<stop offset="1" stop-color="#475FFF"/> +</linearGradient> +<linearGradient id="paint27_linear_14238_54695" x1="102.735" y1="167.995" x2="102.735" y2="135.638" gradientUnits="userSpaceOnUse"> +<stop stop-color="#1D45BA"/> +<stop offset="0.4204" stop-color="#1D47BA"/> +<stop offset="0.5718" stop-color="#1D4EB9"/> +<stop offset="0.6797" stop-color="#1C59B8"/> +<stop offset="0.767" stop-color="#1B6AB6"/> +<stop offset="0.8417" stop-color="#1A80B3"/> +<stop offset="0.9079" stop-color="#199CB0"/> +<stop offset="0.9663" stop-color="#18BBAD"/> +<stop offset="1" stop-color="#17D1AA"/> +</linearGradient> +<linearGradient id="paint28_linear_14238_54695" x1="61.2563" y1="109.318" x2="38.9359" y2="163.354" gradientUnits="userSpaceOnUse"> +<stop stop-color="#17D1AA"/> +<stop offset="0.15" stop-color="#1ACBAF"/> +<stop offset="0.37" stop-color="#21B8BC"/> +<stop offset="0.62" stop-color="#2E9BD3"/> +<stop offset="0.89" stop-color="#3F71F1"/> +<stop offset="1" stop-color="#475FFF"/> +</linearGradient> +<linearGradient id="paint29_linear_14238_54695" x1="97.0653" y1="156.997" x2="97.0653" y2="128.243" gradientUnits="userSpaceOnUse"> +<stop stop-color="#1D45BA"/> +<stop offset="0.4204" stop-color="#1D47BA"/> +<stop offset="0.5718" stop-color="#1D4EB9"/> +<stop offset="0.6797" stop-color="#1C59B8"/> +<stop offset="0.767" stop-color="#1B6AB6"/> +<stop offset="0.8417" stop-color="#1A80B3"/> +<stop offset="0.9079" stop-color="#199CB0"/> +<stop offset="0.9663" stop-color="#18BBAD"/> +<stop offset="1" stop-color="#17D1AA"/> +</linearGradient> +<linearGradient id="paint30_linear_14238_54695" x1="60.1602" y1="104.842" x2="40.3026" y2="152.913" gradientUnits="userSpaceOnUse"> +<stop stop-color="#17D1AA"/> +<stop offset="0.15" stop-color="#1ACBAF"/> +<stop offset="0.37" stop-color="#21B8BC"/> +<stop offset="0.62" stop-color="#2E9BD3"/> +<stop offset="0.89" stop-color="#3F71F1"/> +<stop offset="1" stop-color="#475FFF"/> +</linearGradient> +<linearGradient id="paint31_linear_14238_54695" x1="51.2698" y1="56" x2="51.2698" y2="145.058" gradientUnits="userSpaceOnUse"> +<stop stop-color="#52FCFF" stop-opacity="0"/> +<stop offset="1" stop-color="#52FCFF" stop-opacity="0.24"/> +</linearGradient> +<linearGradient id="paint32_linear_14238_54695" x1="352.244" y1="140.932" x2="388.946" y2="154.877" gradientUnits="userSpaceOnUse"> +<stop offset="0.00313273" stop-color="white" stop-opacity="0.01"/> +<stop offset="0.6176" stop-opacity="0.12"/> +<stop offset="1" stop-opacity="0.32"/> +</linearGradient> +<linearGradient id="paint33_linear_14238_54695" x1="378.463" y1="293.694" x2="572.231" y2="25.845" gradientUnits="userSpaceOnUse"> +<stop stop-color="#244ABF"/> +<stop offset="1" stop-color="#4760FF"/> +</linearGradient> +<linearGradient id="paint34_linear_14238_54695" x1="370.581" y1="294.002" x2="560.203" y2="43.7011" gradientUnits="userSpaceOnUse"> +<stop stop-color="#244ABF"/> +<stop offset="1" stop-color="#4760FF"/> +</linearGradient> +<linearGradient id="paint35_linear_14238_54695" x1="365.598" y1="297.031" x2="556.653" y2="46.3315" gradientUnits="userSpaceOnUse"> +<stop stop-color="#244ABF"/> +<stop offset="1" stop-color="#4760FF"/> +</linearGradient> +<linearGradient id="paint36_linear_14238_54695" x1="350.298" y1="122.349" x2="360.521" y2="211.395" gradientUnits="userSpaceOnUse"> +<stop stop-color="#52FCFF" stop-opacity="0.01"/> +<stop offset="0.0864389" stop-color="#46D3F0" stop-opacity="0.1417"/> +<stop offset="0.1984" stop-color="#39A5DE" stop-opacity="0.3253"/> +<stop offset="0.3056" stop-color="#2F81D1" stop-opacity="0.5011"/> +<stop offset="0.4055" stop-color="#2767C7" stop-opacity="0.6648"/> +<stop offset="0.4951" stop-color="#2357C1" stop-opacity="0.8117"/> +<stop offset="0.5658" stop-color="#2152BF" stop-opacity="0.9276"/> +<stop offset="0.7568" stop-color="#1E48BB" stop-opacity="0.9596"/> +<stop offset="0.9984" stop-color="#1D45BA"/> +</linearGradient> +<linearGradient id="paint37_linear_14238_54695" x1="326.208" y1="154.373" x2="365.717" y2="170.993" gradientUnits="userSpaceOnUse"> +<stop offset="0.00313273" stop-color="white" stop-opacity="0.01"/> +<stop offset="0.6176" stop-opacity="0.12"/> +<stop offset="1" stop-opacity="0.32"/> +</linearGradient> +<linearGradient id="paint38_linear_14238_54695" x1="310.047" y1="70.7807" x2="221.939" y2="152.824" gradientUnits="userSpaceOnUse"> +<stop stop-color="#17D1AA"/> +<stop offset="0.15" stop-color="#1ACBAF"/> +<stop offset="0.37" stop-color="#21B8BC"/> +<stop offset="0.62" stop-color="#2E9BD3"/> +<stop offset="0.89" stop-color="#3F71F1"/> +<stop offset="1" stop-color="#475FFF"/> +</linearGradient> +<linearGradient id="paint39_linear_14238_54695" x1="327.539" y1="185.867" x2="349.131" y2="185.867" gradientUnits="userSpaceOnUse"> +<stop stop-color="#17D1AA"/> +<stop offset="0.15" stop-color="#1ACBAF"/> +<stop offset="0.37" stop-color="#21B8BC"/> +<stop offset="0.62" stop-color="#2E9BD3"/> +<stop offset="0.89" stop-color="#3F71F1"/> +<stop offset="1" stop-color="#475FFF"/> +</linearGradient> +<linearGradient id="paint40_linear_14238_54695" x1="349.131" y1="185.867" x2="382.349" y2="185.867" gradientUnits="userSpaceOnUse"> +<stop stop-color="#17D1AA"/> +<stop offset="0.15" stop-color="#1ACBAF"/> +<stop offset="0.37" stop-color="#21B8BC"/> +<stop offset="0.62" stop-color="#2E9BD3"/> +<stop offset="0.89" stop-color="#3F71F1"/> +<stop offset="1" stop-color="#475FFF"/> +</linearGradient> +<linearGradient id="paint41_linear_14238_54695" x1="271.369" y1="166.444" x2="325.703" y2="166.444" gradientUnits="userSpaceOnUse"> +<stop stop-color="#17D1AA"/> +<stop offset="0.15" stop-color="#1ACBAF"/> +<stop offset="0.37" stop-color="#21B8BC"/> +<stop offset="0.62" stop-color="#2E9BD3"/> +<stop offset="0.89" stop-color="#3F71F1"/> +<stop offset="1" stop-color="#475FFF"/> +</linearGradient> +<linearGradient id="paint42_linear_14238_54695" x1="328.111" y1="191.915" x2="371.194" y2="94.7166" gradientUnits="userSpaceOnUse"> +<stop stop-color="#244ABF"/> +<stop offset="1" stop-color="#4760FF"/> +</linearGradient> +<linearGradient id="paint43_linear_14238_54695" x1="271.369" y1="184.12" x2="325.703" y2="184.12" gradientUnits="userSpaceOnUse"> +<stop stop-color="#17D1AA"/> +<stop offset="0.15" stop-color="#1ACBAF"/> +<stop offset="0.37" stop-color="#21B8BC"/> +<stop offset="0.62" stop-color="#2E9BD3"/> +<stop offset="0.89" stop-color="#3F71F1"/> +<stop offset="1" stop-color="#475FFF"/> +</linearGradient> +<linearGradient id="paint44_linear_14238_54695" x1="328.111" y1="209.591" x2="371.194" y2="112.392" gradientUnits="userSpaceOnUse"> +<stop stop-color="#244ABF"/> +<stop offset="1" stop-color="#4760FF"/> +</linearGradient> +<linearGradient id="paint45_linear_14238_54695" x1="303.555" y1="92.6636" x2="335.491" y2="92.6636" gradientUnits="userSpaceOnUse"> +<stop stop-color="#17D1AA"/> +<stop offset="0.15" stop-color="#1ACBAF"/> +<stop offset="0.37" stop-color="#21B8BC"/> +<stop offset="0.62" stop-color="#2E9BD3"/> +<stop offset="0.89" stop-color="#3F71F1"/> +<stop offset="1" stop-color="#475FFF"/> +</linearGradient> +<linearGradient id="paint46_linear_14238_54695" x1="333.323" y1="118.98" x2="387.43" y2="45.525" gradientUnits="userSpaceOnUse"> +<stop stop-color="#244ABF"/> +<stop offset="1" stop-color="#4760FF"/> +</linearGradient> +<linearGradient id="paint47_linear_14238_54695" x1="14.6063" y1="3.02043e-06" x2="-7.99774" y2="19.9551" gradientUnits="userSpaceOnUse"> +<stop stop-color="#17D1AA"/> +<stop offset="0.15" stop-color="#1ACBAF"/> +<stop offset="0.37" stop-color="#21B8BC"/> +<stop offset="0.62" stop-color="#2E9BD3"/> +<stop offset="0.89" stop-color="#3F71F1"/> +<stop offset="1" stop-color="#475FFF"/> +</linearGradient> +<linearGradient id="paint48_linear_14238_54695" x1="363.904" y1="39.8485" x2="385.648" y2="39.8485" gradientUnits="userSpaceOnUse"> +<stop stop-color="#17D1AA"/> +<stop offset="0.15" stop-color="#1ACBAF"/> +<stop offset="0.37" stop-color="#21B8BC"/> +<stop offset="0.62" stop-color="#2E9BD3"/> +<stop offset="0.89" stop-color="#3F71F1"/> +<stop offset="1" stop-color="#475FFF"/> +</linearGradient> +<linearGradient id="paint49_linear_14238_54695" x1="384.172" y1="57.8803" x2="421.314" y2="7.77492" gradientUnits="userSpaceOnUse"> +<stop stop-color="#244ABF"/> +<stop offset="1" stop-color="#4760FF"/> +</linearGradient> +<linearGradient id="paint50_linear_14238_54695" x1="9.95828" y1="2.06663e-06" x2="-5.50091" y2="13.5989" gradientUnits="userSpaceOnUse"> +<stop stop-color="#17D1AA"/> +<stop offset="0.15" stop-color="#1ACBAF"/> +<stop offset="0.37" stop-color="#21B8BC"/> +<stop offset="0.62" stop-color="#2E9BD3"/> +<stop offset="0.89" stop-color="#3F71F1"/> +<stop offset="1" stop-color="#475FFF"/> +</linearGradient> +<linearGradient id="paint51_linear_14238_54695" x1="291.949" y1="41.9539" x2="309.616" y2="41.9539" gradientUnits="userSpaceOnUse"> +<stop stop-color="#17D1AA"/> +<stop offset="0.15" stop-color="#1ACBAF"/> +<stop offset="0.37" stop-color="#21B8BC"/> +<stop offset="0.62" stop-color="#2E9BD3"/> +<stop offset="0.89" stop-color="#3F71F1"/> +<stop offset="1" stop-color="#475FFF"/> +</linearGradient> +<linearGradient id="paint52_linear_14238_54695" x1="308.418" y1="56.5742" x2="338.515" y2="15.8884" gradientUnits="userSpaceOnUse"> +<stop stop-color="#244ABF"/> +<stop offset="1" stop-color="#4760FF"/> +</linearGradient> +<linearGradient id="paint53_linear_14238_54695" x1="8.08748" y1="1.67642e-06" x2="-4.45464" y2="11.0458" gradientUnits="userSpaceOnUse"> +<stop stop-color="#17D1AA"/> +<stop offset="0.15" stop-color="#1ACBAF"/> +<stop offset="0.37" stop-color="#21B8BC"/> +<stop offset="0.62" stop-color="#2E9BD3"/> +<stop offset="0.89" stop-color="#3F71F1"/> +<stop offset="1" stop-color="#475FFF"/> +</linearGradient> +</defs> +</svg> diff --git a/packages/yoroi-extension/app/UI/features/staking/common/types/index.ts b/packages/yoroi-extension/app/UI/features/staking/common/types/index.ts index df87b51f25..8d14bcd695 100644 --- a/packages/yoroi-extension/app/UI/features/staking/common/types/index.ts +++ b/packages/yoroi-extension/app/UI/features/staking/common/types/index.ts @@ -19,6 +19,7 @@ export type StakingState = { legacyUIDialogs: any; delegationRequests: any; isWalletWithNoFunds: boolean; + currentlyDelegating: boolean; }; export interface GraphItems { diff --git a/packages/yoroi-extension/app/UI/features/staking/module/StakingContextProvider.tsx b/packages/yoroi-extension/app/UI/features/staking/module/StakingContextProvider.tsx index 41ea16c8c3..9aece6e367 100644 --- a/packages/yoroi-extension/app/UI/features/staking/module/StakingContextProvider.tsx +++ b/packages/yoroi-extension/app/UI/features/staking/module/StakingContextProvider.tsx @@ -107,6 +107,7 @@ export const StakingContextProvider = observer(({ children, stores }: StakingPro currentPool, delegationRequests, isWalletWithNoFunds, + currentlyDelegating, }; const state = React.useMemo( diff --git a/packages/yoroi-extension/app/UI/features/staking/module/state.ts b/packages/yoroi-extension/app/UI/features/staking/module/state.ts index 1788066c46..e05f760d8b 100644 --- a/packages/yoroi-extension/app/UI/features/staking/module/state.ts +++ b/packages/yoroi-extension/app/UI/features/staking/module/state.ts @@ -18,6 +18,7 @@ export const defaultStakingState: StakingState = { legacyUIDialogs: null, delegationRequests: null, isWalletWithNoFunds: false, + currentlyDelegating: false, }; // Define action handlers From 0174da612a14c062328a051138556e906ce32a1e Mon Sep 17 00:00:00 2001 From: Sorin Chis <kish.sorin@yahoo.com> Date: Wed, 17 Dec 2025 18:11:01 +0200 Subject: [PATCH 07/16] add import --- .../app/UI/features/staking/module/StakingContextProvider.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/yoroi-extension/app/UI/features/staking/module/StakingContextProvider.tsx b/packages/yoroi-extension/app/UI/features/staking/module/StakingContextProvider.tsx index 9aece6e367..cdb33f8add 100644 --- a/packages/yoroi-extension/app/UI/features/staking/module/StakingContextProvider.tsx +++ b/packages/yoroi-extension/app/UI/features/staking/module/StakingContextProvider.tsx @@ -9,6 +9,7 @@ import { networkConfigs } from '../../../utils/network-config'; import { MultiToken } from '../../../../api/common/lib/MultiToken'; import { getDefaultAssetByWallet } from '../../../../api/ada/lib/storage/database/prepackaged/networks'; import { RustModule } from '../../../../api/ada/lib/cardanoCrypto/rustLoader'; +import { BigNumber } from 'bignumber.js'; const initialStakingProvider = { ...defaultStakingState, From 8024be5276be933b019ef80f958dd304ac8883f1 Mon Sep 17 00:00:00 2001 From: Denis Nebytov <nebytov.d@gmail.com> Date: Wed, 17 Dec 2025 19:56:26 +0300 Subject: [PATCH 08/16] minor tweaks --- .../useCases/DelegatedStakePoolInfo/StakePoolDelegated.tsx | 2 -- .../LegacyDialogs/{LegacyDialogs.tsx.tsx => LegacyDialogs.tsx} | 0 2 files changed, 2 deletions(-) rename packages/yoroi-extension/app/UI/features/staking/useCases/LegacyDialogs/{LegacyDialogs.tsx.tsx => LegacyDialogs.tsx} (100%) diff --git a/packages/yoroi-extension/app/UI/features/staking/useCases/DelegatedStakePoolInfo/StakePoolDelegated.tsx b/packages/yoroi-extension/app/UI/features/staking/useCases/DelegatedStakePoolInfo/StakePoolDelegated.tsx index 667145ee6f..8f444ac2bb 100644 --- a/packages/yoroi-extension/app/UI/features/staking/useCases/DelegatedStakePoolInfo/StakePoolDelegated.tsx +++ b/packages/yoroi-extension/app/UI/features/staking/useCases/DelegatedStakePoolInfo/StakePoolDelegated.tsx @@ -14,8 +14,6 @@ export const StakePoolDelegated = observer((): ReactNode => { const currentPool = delegationStore.getDelegatedPoolId(selectedWallet.publicDeriverId); - console.log('currentPool', currentPool); - if (currentPool == null) return null; const poolMeta = delegationStore.getLocalPoolInfo(selectedWallet.networkId, currentPool); diff --git a/packages/yoroi-extension/app/UI/features/staking/useCases/LegacyDialogs/LegacyDialogs.tsx.tsx b/packages/yoroi-extension/app/UI/features/staking/useCases/LegacyDialogs/LegacyDialogs.tsx similarity index 100% rename from packages/yoroi-extension/app/UI/features/staking/useCases/LegacyDialogs/LegacyDialogs.tsx.tsx rename to packages/yoroi-extension/app/UI/features/staking/useCases/LegacyDialogs/LegacyDialogs.tsx From f02df29d5d5cbb282aac55ba0fea923671182acc Mon Sep 17 00:00:00 2001 From: Denis Nebytov <nebytov.d@gmail.com> Date: Wed, 17 Dec 2025 19:56:48 +0300 Subject: [PATCH 09/16] update package-lock.json --- packages/yoroi-extension/package-lock.json | 68 ++++++++++------------ 1 file changed, 30 insertions(+), 38 deletions(-) diff --git a/packages/yoroi-extension/package-lock.json b/packages/yoroi-extension/package-lock.json index 4452d0ff28..e6e3d523f2 100644 --- a/packages/yoroi-extension/package-lock.json +++ b/packages/yoroi-extension/package-lock.json @@ -34,6 +34,7 @@ "@posthog/react": "1.4.0", "@svgr/webpack": "5.5.0", "@tanstack/react-query": "^5.90.11", + "@yoroi/api": "6.0.0", "@yoroi/exchange": "2.0.1", "@yoroi/explorers": "^1.0.2", "@yoroi/portfolio": "1.0.3", @@ -10496,51 +10497,23 @@ "license": "Apache-2.0" }, "node_modules/@yoroi/api": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/@yoroi/api/-/api-1.5.1.tgz", - "integrity": "sha512-upwmeE1a9pdykkDMBRl1Ubwvb4YDWbK5M3OKHAA9b0iKivpblo+vhjOqyqfaaUqRR5GdCljkgvJuaJLYqd0PVA==", - "license": "Apache-2.0", - "dependencies": { - "@emurgo/cip14-js": "^3.0.1", - "@yoroi/common": "1.5.1", - "axios": "^1.5.0", - "zod": "^3.22.1" - }, - "engines": { - "node": ">= 16.19.0" - }, - "peerDependencies": { - "react": ">= 16.8.0 <= 19.0.0", - "react-query": "^3.39.3" - } - }, - "node_modules/@yoroi/api/node_modules/@yoroi/common": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/@yoroi/common/-/common-1.5.1.tgz", - "integrity": "sha512-ifOdu0wOoXUqMAWfsK05UAQIBytUHK6W60P5gdcBDjg7s28IykxRP7h0MnbGocgV89p5Sdyd/10yb0eRh2o+Nw==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@yoroi/api/-/api-6.0.0.tgz", + "integrity": "sha512-BEsF48KtX9wkEtsbTBCSSCSBKQFQDQ0q5hvwg+qhG3px3FZt4euy8EWpcHuzA+4sMgXw8ZPxIaByC5BXBk8GXg==", "license": "Apache-2.0", "dependencies": { - "axios": "^1.5.0", - "zod": "^3.22.1" + "@emurgo/cip14-js": "^3.0.1" }, "engines": { - "node": ">= 16.19.0" + "node": ">= 22.12.0" }, "peerDependencies": { - "@react-native-async-storage/async-storage": ">= 1.19.3 <= 1.20.0", + "@tanstack/react-query": "^5.76.2", + "@yoroi/common": "6.0.0", + "axios": "^1.10.0", + "immer": "10.1.1", "react": ">= 16.8.0 <= 19.0.0", - "react-query": "^3.39.3" - } - }, - "node_modules/@yoroi/api/node_modules/axios": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.13.2.tgz", - "integrity": "sha512-VPk9ebNqPcy5lRGuSlKx752IlDatOjT9paPlm8A7yOuW2Fbvp4X3JznJtT4f0GzGLLiWE9W8onz51SqLYwzGaA==", - "license": "MIT", - "dependencies": { - "follow-redirects": "^1.15.6", - "form-data": "^4.0.4", - "proxy-from-env": "^1.1.0" + "zod": "3.25.17" } }, "node_modules/@yoroi/common": { @@ -23735,6 +23708,25 @@ "react-query": "^3.39.3" } }, + "node_modules/legacySwap/node_modules/@yoroi/api": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/@yoroi/api/-/api-1.5.1.tgz", + "integrity": "sha512-upwmeE1a9pdykkDMBRl1Ubwvb4YDWbK5M3OKHAA9b0iKivpblo+vhjOqyqfaaUqRR5GdCljkgvJuaJLYqd0PVA==", + "license": "Apache-2.0", + "dependencies": { + "@emurgo/cip14-js": "^3.0.1", + "@yoroi/common": "1.5.1", + "axios": "^1.5.0", + "zod": "^3.22.1" + }, + "engines": { + "node": ">= 16.19.0" + }, + "peerDependencies": { + "react": ">= 16.8.0 <= 19.0.0", + "react-query": "^3.39.3" + } + }, "node_modules/legacySwap/node_modules/@yoroi/common": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/@yoroi/common/-/common-1.5.1.tgz", From 4344ee87c8e3f49f4ba76bdd2bd500dce8be761d Mon Sep 17 00:00:00 2001 From: Denis Nebytov <nebytov.d@gmail.com> Date: Wed, 17 Dec 2025 20:43:38 +0300 Subject: [PATCH 10/16] use correct button type --- .../staking/useCases/RewardsSummary/RewardHistoryGraph.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/yoroi-extension/app/UI/features/staking/useCases/RewardsSummary/RewardHistoryGraph.tsx b/packages/yoroi-extension/app/UI/features/staking/useCases/RewardsSummary/RewardHistoryGraph.tsx index fffe8a9c2d..6dba66bcaa 100644 --- a/packages/yoroi-extension/app/UI/features/staking/useCases/RewardsSummary/RewardHistoryGraph.tsx +++ b/packages/yoroi-extension/app/UI/features/staking/useCases/RewardsSummary/RewardHistoryGraph.tsx @@ -168,7 +168,7 @@ const RewardHistoryGraph: React.FC<RewardHistoryGraphProps> = observer(({ graphD </Typography> <Button // @ts-ignore - variant="outlined" + variant="tertiary" size="medium" onClick={() => stores.uiDialogs.open({ From 679ef328a4b30cb63f99d8631830943810af1cfe Mon Sep 17 00:00:00 2001 From: Denis Nebytov <nebytov.d@gmail.com> Date: Wed, 17 Dec 2025 20:44:16 +0300 Subject: [PATCH 11/16] make warning banners smaller --- .../topbar/banners/NotProductionBanner.scss | 2 +- .../topbar/banners/TestnetWarningBanner.scss | 26 +------------------ 2 files changed, 2 insertions(+), 26 deletions(-) diff --git a/packages/yoroi-extension/app/components/topbar/banners/NotProductionBanner.scss b/packages/yoroi-extension/app/components/topbar/banners/NotProductionBanner.scss index 3a50594861..76be184513 100644 --- a/packages/yoroi-extension/app/components/topbar/banners/NotProductionBanner.scss +++ b/packages/yoroi-extension/app/components/topbar/banners/NotProductionBanner.scss @@ -1,5 +1,5 @@ .notProdWarning { - height: 46px; + height: 27px; display: flex; justify-content: center; align-items: center; diff --git a/packages/yoroi-extension/app/components/topbar/banners/TestnetWarningBanner.scss b/packages/yoroi-extension/app/components/topbar/banners/TestnetWarningBanner.scss index 549a70f695..fd3e24a9bf 100644 --- a/packages/yoroi-extension/app/components/topbar/banners/TestnetWarningBanner.scss +++ b/packages/yoroi-extension/app/components/topbar/banners/TestnetWarningBanner.scss @@ -1,31 +1,7 @@ @import '../../../themes/mixins/underline'; -.testnetWarning { - font-weight: 700; - text-align: center; - color: var(--yoroi-palette-common-white); - background-color: var(--yoroi-palette-background-banner-warning); - padding: 4px; - text-transform: uppercase; - font-size: 14px; - line-height: 21px; - - .warningIcon { - display: inline-flex; - margin-right: 5px; - vertical-align: top; - } - - a { - color: var(--yoroi-palette-common-white); - font-weight: 700; - text-transform: uppercase; - @include underline(var(--yoroi-palette-common-white)); - } -} - .shelleyTestnetWarning { - height: 46px; + height: 27px; display: flex; justify-content: center; align-items: center; From 1fff300106ef3a74046a576b70390faec188d870 Mon Sep 17 00:00:00 2001 From: Denis Nebytov <nebytov.d@gmail.com> Date: Wed, 17 Dec 2025 21:00:35 +0300 Subject: [PATCH 12/16] hide YAxis values --- .../app/UI/features/staking/module/StakingContextProvider.tsx | 2 +- .../staking/useCases/RewardsSummary/RewardGraphClean.tsx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/yoroi-extension/app/UI/features/staking/module/StakingContextProvider.tsx b/packages/yoroi-extension/app/UI/features/staking/module/StakingContextProvider.tsx index 807ad7bb76..a3f7a33a4e 100644 --- a/packages/yoroi-extension/app/UI/features/staking/module/StakingContextProvider.tsx +++ b/packages/yoroi-extension/app/UI/features/staking/module/StakingContextProvider.tsx @@ -54,7 +54,7 @@ export const StakingContextProvider = observer(({ children, stores }: StakingPro defaultTokenId: selectedWallet.defaultTokenId, }); setGraphData(historyGraphData); - }, [delegationRequests, selectedWallet, currentlyDelegating]); + }, [delegationRequests, selectedWallet, currentlyDelegating, stores.profile.shouldHideBalance]); React.useEffect(() => {}, []); diff --git a/packages/yoroi-extension/app/UI/features/staking/useCases/RewardsSummary/RewardGraphClean.tsx b/packages/yoroi-extension/app/UI/features/staking/useCases/RewardsSummary/RewardGraphClean.tsx index 40642439ae..87136022e2 100644 --- a/packages/yoroi-extension/app/UI/features/staking/useCases/RewardsSummary/RewardGraphClean.tsx +++ b/packages/yoroi-extension/app/UI/features/staking/useCases/RewardsSummary/RewardGraphClean.tsx @@ -39,7 +39,7 @@ const RewardGraphClean: React.FC<Props> = ({ }) => { const theme: any = useTheme(); - const formatYAxis = (value: number): string | number => (!hideYAxis ? value : '∗∗∗ '); + const formatYAxis = (value: number): string | number => (!hideYAxis ? value : '∗∗∗'); const GraphTooltip: React.FC<GraphTooltipProps> = ({ active, payload, label }) => { if (active && payload != null && payload.length > 0 && label != null) { From 585c583b8a100c488218fc166a358ff595755faf Mon Sep 17 00:00:00 2001 From: Denis Nebytov <nebytov.d@gmail.com> Date: Wed, 17 Dec 2025 22:26:48 +0300 Subject: [PATCH 13/16] fix minor UI issues --- .../RewardsSummary/RewardsSummaryCard.tsx | 17 +++++++++++------ .../app/components/layout/TopBarLayout.js | 2 +- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/packages/yoroi-extension/app/UI/features/staking/useCases/RewardsSummary/RewardsSummaryCard.tsx b/packages/yoroi-extension/app/UI/features/staking/useCases/RewardsSummary/RewardsSummaryCard.tsx index 262bb0e069..6128ba2e33 100644 --- a/packages/yoroi-extension/app/UI/features/staking/useCases/RewardsSummary/RewardsSummaryCard.tsx +++ b/packages/yoroi-extension/app/UI/features/staking/useCases/RewardsSummary/RewardsSummaryCard.tsx @@ -8,6 +8,7 @@ import { useStrings } from '../../common/hooks/useStrings'; import { maybe, useStaking } from '../../module/StakingContextProvider'; import { HIDDEN_AMOUNT } from '../../../../common/constants'; import { truncateToken } from '../../../../../utils/formatters'; +import { getTokenName } from '../../../../../stores/stateless/tokenHelpers'; import { Icon } from '../../../../components'; const StakingIconWrapper = styled(Box)(({ theme }) => ({ @@ -78,7 +79,7 @@ export const RewardsSummaryCard: React.FC = () => { return ( <> <span>{amountNode} </span> - {truncateToken(tokenInfo?.assetName || '', 12)} + {truncateToken(getTokenName(tokenInfo))} </> ); }; @@ -130,16 +131,19 @@ export const RewardsSummaryCard: React.FC = () => { </StakingIconWrapper> <InfoDetails> - <Typography variant="caption" color="ds.gray_600" sx={{ textTransform: 'uppercase' }}> + {/*@ts-ignore */} + <Typography variant="caption1" color="ds.gray_600" sx={{ textTransform: 'uppercase' }}> {strings.totalRewardsLabel} </Typography> </InfoDetails> <InfoDetails> - <Typography variant="h2" color="ds.text_gray_medium" fontWeight={500}> - {totalRewards ? renderAmount(totalRewards) : <LoadingSpinner small />} + <Typography component="div" variant="h2" color="ds.text_gray_medium" fontWeight={500}> + {renderAmount(totalRewards)} + </Typography> + <Typography component="div" variant="body1" color="grayscale.600" fontWeight={500}> + {renderAmountWithUnitOfAccount(totalRewards)} </Typography> - <Typography variant="body1" color="ds.gray_600" fontWeight={500}></Typography> </InfoDetails> </InfoRow> @@ -149,7 +153,8 @@ export const RewardsSummaryCard: React.FC = () => { </TotalDelegatedIconWrapper> <InfoDetails> - <Typography variant="caption" color="ds.gray_600" marginBottom="4px" sx={{ textTransform: 'uppercase' }}> + {/*@ts-ignore */} + <Typography variant="caption1" color="ds.gray_600" marginBottom="4px" sx={{ textTransform: 'uppercase' }}> {strings.totalDelegated} </Typography> </InfoDetails> diff --git a/packages/yoroi-extension/app/components/layout/TopBarLayout.js b/packages/yoroi-extension/app/components/layout/TopBarLayout.js index 1882f4130b..89462df35b 100644 --- a/packages/yoroi-extension/app/components/layout/TopBarLayout.js +++ b/packages/yoroi-extension/app/components/layout/TopBarLayout.js @@ -60,7 +60,7 @@ function TopBarLayout({ flex: '0 1 auto', height: '100%', }), - overflow: 'auto', + overflow: 'scroll', }} > { From 139b5e26cbb2c666ae56b914faf725573da7fc8e Mon Sep 17 00:00:00 2001 From: Denis Nebytov <nebytov.d@gmail.com> Date: Thu, 18 Dec 2025 12:42:22 +0300 Subject: [PATCH 14/16] check pool image --- .../wallet/WalletDelegationBanner.js | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/packages/yoroi-extension/app/containers/wallet/WalletDelegationBanner.js b/packages/yoroi-extension/app/containers/wallet/WalletDelegationBanner.js index b0066db530..047202700c 100644 --- a/packages/yoroi-extension/app/containers/wallet/WalletDelegationBanner.js +++ b/packages/yoroi-extension/app/containers/wallet/WalletDelegationBanner.js @@ -1,5 +1,6 @@ // @flow import type { Node, ComponentType } from 'react'; +import { useState, useEffect } from 'react'; import { Box, styled } from '@mui/system'; import { Button, Typography, Link } from '@mui/material'; @@ -74,6 +75,14 @@ const messages = defineMessages({ }); function WalletDelegationBanner({ isOpen, isWalletWithNoFunds, isTestnet, intl, ticker, poolInfo, stores }: Props & Intl): Node { + const avatar = poolInfo?.avatar; + const [avatarLoadError, setAvatarLoadError] = useState(false); + + // Reset error state when avatar changes + useEffect(() => { + setAvatarLoadError(false); + }, [avatar]); + if (poolInfo == null) { return ( <Box display="flex" justifyContent="center" alignItems="center" py="40px"> @@ -81,11 +90,13 @@ function WalletDelegationBanner({ isOpen, isWalletWithNoFunds, isTestnet, intl, </Box> ); } - const { id, name, avatar, websiteUrl, roa: estimatedRoa30d, socialLinks } = poolInfo || {}; + const { id, name, websiteUrl, roa: estimatedRoa30d, socialLinks } = poolInfo || {}; const avatarSource = toSvg(id, 36, { padding: 0 }); const avatarGenerated = `data:image/svg+xml;utf8,${encodeURIComponent(avatarSource)}`; + const shouldUseAvatar = avatar && !avatarLoadError; + return isOpen ? ( <WrapperBanner sx={{ @@ -104,7 +115,11 @@ function WalletDelegationBanner({ isOpen, isWalletWithNoFunds, isTestnet, intl, </Typography> <Box sx={{ display: 'flex', mb: '16px', mt: '24px' }}> <AvatarWrapper> - {avatar ? <AvatarImg src={avatar} alt={name} /> : <AvatarImg src={avatarGenerated} alt={name} />} + {shouldUseAvatar ? ( + <AvatarImg src={avatar} alt={name} onError={() => setAvatarLoadError(true)} /> + ) : ( + <AvatarImg src={avatarGenerated} alt={name} /> + )} </AvatarWrapper> <Typography component="div" color="ds.text_gray_medium" variant="body1" fontWeight={500}> {name} From 56af3184773b98e030a7b90415bd7caa52d5a369 Mon Sep 17 00:00:00 2001 From: Denis Nebytov <nebytov.d@gmail.com> Date: Thu, 18 Dec 2025 12:56:18 +0300 Subject: [PATCH 15/16] update file name --- .../yoroi-extension/app/UI/features/staking/StakingRoot.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/yoroi-extension/app/UI/features/staking/StakingRoot.tsx b/packages/yoroi-extension/app/UI/features/staking/StakingRoot.tsx index 5119fb2700..096eb99397 100644 --- a/packages/yoroi-extension/app/UI/features/staking/StakingRoot.tsx +++ b/packages/yoroi-extension/app/UI/features/staking/StakingRoot.tsx @@ -3,7 +3,7 @@ import { PoolList } from './useCases/PoolList/PoolList'; import { RewardsSummaryCard } from './useCases/RewardsSummary/RewardsSummaryCard'; import { StakePoolDelegated } from './useCases/DelegatedStakePoolInfo/StakePoolDelegated'; import EpochProgress from './useCases/EpochProgress/EpochProgress'; -import { LegacyDialogs } from './useCases/LegacyDialogs/LegacyDialogs.tsx'; +import { LegacyDialogs } from './useCases/LegacyDialogs/LegacyDialogs'; import { useStaking } from './module/StakingContextProvider'; import BuySellDialog from '../../../components/buySell/BuySellDialog'; import WalletEmptyBanner from './common/components/EmptyWalletBanner'; From 0476e016d26ed3f46cfe4feab21357ea9f8ce3ad Mon Sep 17 00:00:00 2001 From: Denis Nebytov <nebytov.d@gmail.com> Date: Thu, 18 Dec 2025 15:46:20 +0300 Subject: [PATCH 16/16] fix loading graph --- .../staking/module/StakingContextProvider.tsx | 31 +++++++++++++++++-- .../RewardsSummary/RewardHistoryGraph.tsx | 11 ++++--- 2 files changed, 35 insertions(+), 7 deletions(-) diff --git a/packages/yoroi-extension/app/UI/features/staking/module/StakingContextProvider.tsx b/packages/yoroi-extension/app/UI/features/staking/module/StakingContextProvider.tsx index a3f7a33a4e..a0b5e4df9f 100644 --- a/packages/yoroi-extension/app/UI/features/staking/module/StakingContextProvider.tsx +++ b/packages/yoroi-extension/app/UI/features/staking/module/StakingContextProvider.tsx @@ -43,7 +43,23 @@ export const StakingContextProvider = observer(({ children, stores }: StakingPro throw new Error(`Page opened for non-reward wallet`); } + // Extract rewardHistory result to make it observable in the dependency array + const rewardHistoryResult = delegationRequests.rewardHistory.result; + + // Reset graphData when wallet changes + React.useEffect(() => { + setGraphData(null); + }, [selectedWallet.publicDeriverId]); + + // Generate graph data when reward history is available React.useEffect(() => { + // Only generate graph data if rewardHistory.result is available + // This prevents generating graph data with null result which causes infinite loading + if (rewardHistoryResult == null) { + setGraphData(null); + return; + } + const historyGraphData = generateGraphData({ delegationRequests, currentEpoch: stores.substores.ada.time.getCurrentTimeRequests(selectedWallet).currentEpoch, @@ -54,9 +70,18 @@ export const StakingContextProvider = observer(({ children, stores }: StakingPro defaultTokenId: selectedWallet.defaultTokenId, }); setGraphData(historyGraphData); - }, [delegationRequests, selectedWallet, currentlyDelegating, stores.profile.shouldHideBalance]); - - React.useEffect(() => {}, []); + }, [ + delegationRequests, + rewardHistoryResult, + selectedWallet.publicDeriverId, + selectedWallet.networkId, + selectedWallet.defaultTokenId, + currentlyDelegating, + stores.profile.shouldHideBalance, + stores.substores.ada.time, + stores.delegation.getLocalPoolInfo, + stores.tokenInfoStore.tokenInfo, + ]); const totalDelegated = () => { if (!showRewardAmount) return undefined; diff --git a/packages/yoroi-extension/app/UI/features/staking/useCases/RewardsSummary/RewardHistoryGraph.tsx b/packages/yoroi-extension/app/UI/features/staking/useCases/RewardsSummary/RewardHistoryGraph.tsx index 6dba66bcaa..d932da2da5 100644 --- a/packages/yoroi-extension/app/UI/features/staking/useCases/RewardsSummary/RewardHistoryGraph.tsx +++ b/packages/yoroi-extension/app/UI/features/staking/useCases/RewardsSummary/RewardHistoryGraph.tsx @@ -145,6 +145,9 @@ const RewardHistoryGraph: React.FC<RewardHistoryGraphProps> = observer(({ graphD const { rewardsGraphData } = graphData; const rewardList = rewardsGraphData.items?.perEpochRewards; const title = strings.rewardHistoryLabel; + const isRewardListArray = Array.isArray(rewardList); + const hasError = rewardsGraphData.error && !rewardsGraphData.items; + const isLoading = !isRewardListArray && !hasError; return ( <Box @@ -181,7 +184,7 @@ const RewardHistoryGraph: React.FC<RewardHistoryGraphProps> = observer(({ graphD </Button> </Box> - {rewardsGraphData.error && !rewardsGraphData.items && ( + {hasError && ( <div> <Typography variant="body2" color="ds.text_error"> {strings.errorLabel} @@ -189,9 +192,9 @@ const RewardHistoryGraph: React.FC<RewardHistoryGraphProps> = observer(({ graphD </div> )} - {!Array.isArray(rewardList) ? ( - <CircularProgress /> - ) : ( + {isLoading && <CircularProgress />} + + {isRewardListArray && ( <Box ml="-50px"> <RewardGraphClean epochTitle={strings.epochLabel}