{"version":3,"sources":["../../../node_modules/.pnpm/bn.js@5.2.1/node_modules/bn.js/lib/bn.js","../src/lib/chat.ts","../src/lib/fetchChatHistory.ts","../src/state/wallet.state.ts","../src/hooks/useScrollToBottom.ts","../src/hooks/useMessages.ts","../src/lib/constants.ts","../src/lib/local-agent.ts","../src/lib/utils.ts","../src/hooks/useWindowSize.ts","../src/components/icons/FacebookIcon.tsx","../src/components/icons/TelegramIcon.tsx","../src/components/icons/XIcon.tsx","../src/components/ui/button.tsx","../src/components/ui/dialog.tsx","../src/components/ui/drawer.tsx","../src/components/ui/input.tsx","../src/components/ui/label.tsx","../src/components/chat/ShareModal.tsx","../src/components/chat/ChatActions.tsx","../src/components/chat/default-components/DefaultChatContainer.tsx","../src/components/chat/ChatContainer.tsx","../src/components/ui/textarea.tsx","../src/components/chat/AgentPill.tsx","../src/components/chat/default-components/DefaultSendButtonComponent.tsx","../src/components/chat/ChatInput.tsx","../src/components/chat/WidgetChatInput.tsx","../src/components/chat/default-components/DefaultInputContainer.tsx","../src/components/chat/EnhancedChatInput.tsx","../src/lib/animation-colors/colors.ts","../src/lib/animation-colors/hex-to-rgb.ts","../src/lib/animation-colors/solver.ts","../src/assets/bitte_animation.json","../src/components/chat/BitteSpinner.tsx","../src/components/chat/MessageItem.tsx","../src/lib/images.ts","../src/lib/regex.ts","../src/lib/chart-helpers.ts","../src/components/ui/card.tsx","../src/components/ui/chart.tsx","../src/components/ui/charts/AreaChart.tsx","../src/components/ui/charts/BarChart.tsx","../src/components/ui/charts/CandleChart.tsx","../src/components/ui/charts/LineChart.tsx","../src/components/ui/charts/ChartWrapper.tsx","../src/components/chat/CodeBlock.tsx","../src/components/chat/ErrorBoundary.tsx","../src/components/ui/table.tsx","../src/components/chat/MarkdownTable.tsx","../src/components/chat/Message.tsx","../src/components/ui/ImageWithFallback.tsx","../src/components/ui/accordion.tsx","../src/components/chat/default-components/DefaultMessageContainer.tsx","../src/lib/transaction-messages.ts","../src/components/chat/transactions/EvmTxCard.tsx","../src/store/evmTransactionStore.ts","../src/utils/evm.ts","../src/hooks/useTransaction.ts","../src/hooks/useEvmTransaction.ts","../src/components/chat/default-components/DefaultTxApproveButton.tsx","../src/components/chat/default-components/DefaultTxContainer.tsx","../src/components/chat/default-components/DefaultTxDeclineButton.tsx","../src/components/chat/CopyStandard.tsx","../src/components/chat/LoadingMessage.tsx","../src/components/chat/transactions/TransactionDetail.tsx","../src/components/chat/transactions/TransactionResult.tsx","../src/components/chat/transactions/ReviewSignMessage.tsx","../src/hooks/useHashParams.ts","../src/lib/sign-message.ts","../src/components/chat/transactions/ReviewTransaction.tsx","../src/hooks/useAccountBalance.ts","../src/hooks/useTxnFees.ts","../src/hooks/useTxnPrice.ts","../src/components/ui/badge.tsx","../src/components/chat/transactions/TxnBadge.tsx","../src/components/chat/transactions/ShowDetailsBtn.tsx","../src/components/chat/transactions/TxnFees.tsx","../src/components/chat/transactions/TxAccordion.tsx","../src/components/chat/transactions/TxnDetailMultipleAction.tsx","../src/components/chat/transactions/multiple-transactions/MultipleTxnMultiAction.tsx","../src/components/chat/transactions/TxnDetail.tsx","../src/components/chat/transactions/multiple-transactions/MultipleTxnSingleAction.tsx","../src/components/chat/transactions/multiple-transactions/MultipleTxnDetail.tsx","../src/components/chat/transactions/single-transaction/SingleTxnMultipleAction.tsx","../src/components/chat/transactions/single-transaction/SingleTxnSingleAction.tsx","../src/components/chat/transactions/single-transaction/SingleTxnDetail.tsx","../src/components/chat/transactions/TxnListWrapper.tsx","../src/components/chat/transactions/SuiTxCard.tsx","../src/components/chat/MessageGroup.tsx","../src/components/chat/ThinkingMessage.tsx","../src/components/chat/welcome-screens/DefaultWelcomeScreen.tsx","../src/components/chat/welcome-screens/WelcomeAccountOverview.tsx","../src/components/chat/welcome-screens/WelcomeList.tsx","../src/components/ui/skeleton.tsx","../src/components/chat/welcome-screens/WelcomeAccountOverviewSkeleton.tsx","../src/components/chat/WelcomeWrapper.tsx","../src/components/chat/default-components/DefaultLoadingIndicator.tsx","../src/components/chat/MessagesList.tsx","../src/components/chat/ScrollManager.tsx","../src/components/chat/ScrollToBottomButton.tsx","../src/components/chat/ChatContent.tsx","../src/components/tools/portfolio/TokenRow.tsx","../src/lib/format.ts","../src/components/tools/account/AssetIcon.tsx","../src/components/tools/portfolio/TokenList.tsx","../src/components/BitteAiChat.tsx","../src/components/tools/account/AssetItem.tsx","../src/components/tools/account/DashboardHeader.tsx","../src/components/tools/account/AccountOverview.tsx","../src/components/icons/BitteLogo.tsx","../src/components/BitteWidgetChat.tsx"],"names":["require_bn","__commonJSMin","exports","module","assert","val","msg","inherits","ctor","superCtor","TempCtor","BN","number","base","endian","Buffer","num","left","right","start","i","j","w","off","parseHex4Bits","string","index","c","parseHexByte","lowerBound","r","parseLength","parseBase","str","end","mul","b","len","limbLen","limbPow","total","mod","word","pow","dest","move","src","size","inspect","zeros","groupSizes","groupBases","padding","out","carry","groupSize","groupBase","ret","length","allocate","ArrayType","byteLength","reqLength","res","postfix","position","shift","t","hi","toBitArray","bit","wbit","width","a","bytesNeeded","bitsLeft","cmp","smallMulTo","self","lo","k","ncarry","rword","maxJ","comb10MulTo","o","mid","a0","al0","ah0","a1","al1","ah1","a2","al2","ah2","a3","al3","ah3","a4","al4","ah4","a5","al5","ah5","a6","al6","ah6","a7","al7","ah7","a8","al8","ah8","a9","al9","ah9","b0","bl0","bh0","b1","bl1","bh1","b2","bl2","bh2","b3","bl3","bh3","b4","bl4","bh4","b5","bl5","bh5","b6","bl6","bh6","b7","bl7","bh7","b8","bl8","bh8","b9","bl9","bh9","w0","w1","w2","w3","w4","w5","w6","w7","w8","w9","w10","w11","w12","w13","w14","w15","w16","w17","w18","bigMulTo","hncarry","jumboMulTo","isNegNum","q","bits","s","carryMask","newCarry","hint","extended","h","mask","maskedWords","mode","bhi","bhiBits","m","diff","qj","positive","div","dm","half","r2","p","acc","x","y","A","B","C","D","g","yp","xp","im","jm","x1","x2","delta","negative","Red","ctx","primes","MPrime","name","tmp","rlen","input","K256","output","outLen","prev","next","P224","P192","P25519","prime","mod3","one","nOne","lpow","z","inv","windowSize","wnd","current","currentLen","Mont","u","getAgentIdFromMessage","message","annotations","agentIdAnnotation","addToolMessageToChat","toolMessage","messages","part","toolResult","tool","convertToUIMessages","chatMessages","textContent","toolInvocations","content","validRole","generateId","formatAgentId","agentId","fetchChatHistory","id","url","response","error","accountStateAtom","atom","useAccount","useAtomValue","useWalletState","setAccountState","useSetAtom","wallet","near","evm","sui","updateWalletState","useScrollToBottom","containerRef","useRef","endRef","isAtBottom","setIsAtBottom","useSWR","scrollBehavior","setScrollBehavior","useEffect","scrollToBottom","useCallback","onViewportEnter","onViewportLeave","useMessages","chatId","status","isAutoPrompt","hasSentMessage","setHasSentMessage","useState","RPC_URL","DEFAULT_AGENT_ID","defaultColors","AssistantsMode","executeLocalToolCall","localAgent","toolCall","metadata","baseUrl","toolPath","httpMethod","findToolPathAndMethod","args","remainingArgs","buildUrlWithParams","options","buildRequestOptions","finalUrl","handleQueryParams","parseResponse","errorMessage","toolName","path","pathObj","method","methodObj","_","key","value","headers","fetchOptions","queryParams","queryString","contentType","import_bn","cn","inputs","twMerge","clsx","formatName","nameSize","errorString","shortenString","prefix","suffix","safeJsonParse","defaultValue","parsed","removeTrailingZeros","getNearblocksURL","accountId","txnHash","address","formatCosts","costs","gasPrice","formatNearAmount","shortenAddress","useWindowSize","setWindowSize","handleResize","FacebookIcon","jsxs","jsx","TelegramIcon","XIcon","buttonVariants","cva","Button","la","className","variant","asChild","props","ref","Slot","Dialog","DialogTrigger","DialogPortal","DialogOverlay","bi","DialogContent","children","X","DialogHeader","DialogTitle","DialogDescription","Drawer","shouldScaleBackground","DrawerPrimitive","DrawerPortal","DrawerOverlay","DrawerContent","DrawerFooter","DrawerTitle","DrawerDescription","Input","ua","type","labelVariants","Label","pa","ShareModal","open","setOpen","showLinkCopiedText","setShowLinkCopiedText","isMobile","shareLink","shareText","title","subtitle","social","trigger","ShareIcon","handleCopyLink","dialogTitleInfo","Fragment","ShareModal_default","ChatActions","isWidgetChat","DefaultChatContainer","style","DefaultChatContainer_default","ChatContainer","generalBackground","borderColor","CustomChatContainer","scrollToBottomButton","shareModal","messagesArea","inputArea","widgetContainerClasses","chatMainClasses","scrollableAreaClasses","messagesContainerClasses","chatContainerClass","standardScrollableClasses","standardMessagesClasses","Textarea","wa","AgentPill","forwardRef","DefaultSendButton","isLoading","buttonColor","textColor","ArrowUp","DefaultSendButtonComponent_default","SmartActionsInput","agentName","handleChange","handleSubmit","backgroundColor","mobileInputExtraButton","SendButtonComponent","placeholderText","agentNameRef","paddingLeft","setPaddingLeft","previousAgentName","setPreviousAgentName","e","WidgetChatInput","autoFocus","textareaRef","observer","entries","entry","ArrowUpRight","DefaultInputContainer","DefaultInputContainer_default","EnhancedChatInput","handleInputChange","isInProgress","InputContainer","handleSubmitChat","Color","angle","sin","cos","matrix","newR","newG","newB","slope","intercept","max","min","l","d","hexToRgb","hex","shorthandRegex","result","Solver","target","best","initial","wide","A1","values","iters","gamma","bestLoss","deltas","highArgs","lowArgs","ck","lossDiff","ak","fix","loss","idx","filters","color","colorHSL","fmt","multiplier","bitte_animation_default","Lottie","lazy","BitteSpinner","height","rgb","colorObj","Suspense","BITTE_BLACK_IMG","BITTE_IMG","isMarkdownTableString","isDataString","cleaned","parseTimestamp","date","getBestTimescale","oldestTimestamp","latestTimestamp","diffInMinutes","formatTimestamp","timestamp","timescale","compact","getDateFormatter","startTimeValue","endTimeValue","startTimestamp","endTimestamp","formatValue","dataFormat","maximumFractionDigits","Card","Le","CardHeader","CardTitle","CardDescription","CardContent","CardFooter","THEMES","ChartContext","Xt","useChart","context","ChartContainer","config","uniqueId","chartId","ChartStyle","colorConfig","theme","itemConfig","ChartTooltip","ChartTooltipContent","active","payload","indicator","hideLabel","hideIndicator","label","labelFormatter","labelClassName","formatter","nameKey","labelKey","tooltipLabel","item","getPayloadConfigFromPayload","nestLabel","indicatorColor","ChartLegendContent","hideIcon","verticalAlign","payloadPayload","configLabelKey","AreaChart","chartConfig","timeKey","metricKeys","chartData","dateFormatter","valueFormatter","RechartsAreaChart","CartesianGrid","XAxis","YAxis","_value","Area","BarChart","RechartsBarChart","Bar","TOOLTIP_LABELS","CandleChart","data","point","close","high","low","up","candleLow","candleHigh","candleHeight","maxValue","minValue","tickPadding","minHeight","maxHeight","ComposedChart","_label","_name","diffPercent","Cell","LineChart","RechartsLineChart","Line","CHART_COMPONENTS","ChartWrapper","memo","description","metricData","chartType","ChartComponent","useMemo","showMetricData","startDate","endDate","metric","percentageChange","isPositive","isCandle","TrendingUp","TrendingDown","CodeBlock","ErrorBoundary","React","Table","TableHeader","TableBody","TableFooter","TableRow","TableHead","TableCell","TableCaption","IMAGE_API","MarkdownTable","cells","line","cell","header","row","rowIndex","cellIndex","linkValue","imageMatch","imageValue","MemoizedReactMarkdown","ReactMarkdown","prevProps","nextProps","LinkRenderer","href","SAMessage","cleanContent","remarkGfm","remarkMath","alt","ImageWithFallback","fallbackSrc","setError","Accordion","AccordionItem","Zi","AccordionTrigger","ChevronDown","AccordionContent","DefaultMessageContainer","isUser","uniqueKey","showBorder","DefaultMessageContainer_default","createTransactionStatusMessage","transactions","hashes","messageId","createEvmTransactionStatusMessage","evmData","txHash","createDeclineTransactionMessage","transactionAtomFamily","atomFamily","txId","createTxId","params","activeTransactionIdsAtom","initTransaction","txAtom","getRpcUrlForChain","chainId","Network","isValidEvmParams","checkTransactionStatus","rpcUrl","publicClient","createPublicClient","http","receipt","attempts","maxAttempts","pollingInterval","txDetails","from","to","gas","simulationResult","err","sanitizedError","ensureValidHash","hash","useTransaction","account","evmWallet","suiWallet","suiTransaction","nearResult","executeWithAccount","executeWithWallet","evmHashes","executeWithEvmWallet","suiResult","executeWithSuiWallet","txn","action","tx","initialHash","txHashes","rawTxParams","resolve","placeholderHash","transaction","useEVMTransaction","append","errorMsg","setErrorMsg","setIsLoading","evmAddress","initialWalletHash","setActiveTransactionIds","messageAppended","setTransaction","useAtom","network","handleTxn","handleSmartAction","initialState","adaptedEvmData","newTxHash","success","txStatus","interval","retryCount","MAX_RETRIES","currentHash","DefaultTxApproveButton","onClick","disabled","DefaultTxApproveButton_default","DefaultTxContainer","DefaultTxContainer_default","DefaultTxDeclineButton","DefaultTxDeclineButton_default","CopyStandard","text","textSize","charSize","isUrl","CopyIcon","LoadingMessage","LoadingMessage_default","TransactionDetail","TransactionResult","scanUrl","MoveUpRight","EvmTxCard","messageBackgroundColor","TxContainer","ApproveButton","DeclineButton","isDeclined","setIsDeclined","loadingIndicator","declineTransaction","formatEther","useHashParams","listenToChanges","hashParams","setHashParams","parseHashParams","clearHashParams","handleHashChange","getNonceBuffer","nonce","buffer","signMessage","signMessageParams","recipient","callbackUrl","state","signedMessage","generateNonceString","randomBytes","ReviewSignMessage","nonceParam","toolCallId","addToolResult","loading","setLoading","setResult","nonceKey","storedNonce","newNonce","validAccountId","handleMessageSign","newErrorMsg","useAccountBalance","balance","setBalance","accountBalance","useTxnFees","feeLimitTgasBN","feeLimitTgas","formatUnits","feeLimitNear","totalDeposit","useTxnPrice","hasBalance","setHasBalance","loaded","setLoaded","priceState","setPriceState","gasPriceFetched","costsCalculated","updatePriceState","updates","prevState","COSTS","definePrice","currentGasPrice","getLatestGasPrice","defineCosts","deposit","otherTokensAmount","functionCallAction","amount","costsAmount","badgeVariants","Badge","TxnBadge","transactionType","styleClass","displayName","TxnBadge_default","ShowDetailsBtn","setShowDetails","showDetails","ChevronsDownUp","ChevronsUpDown","TxnFees","operation","totalGas","showNoTxnFeeHighlight","TxAccordion","methodName","isOpen","setIsOpen","prevIsOpen","TxAccordion_default","DetailMethods","TxnDetailMultipleAction","actions","contractName","MultipleTxnMultiActionDetails","modifiedUrl","showTxnDetail","txnIdx","txnData","TxnDetail","showTitle","MultipleTxnSingleActionDetail","MultipleTxnDetail","SingleTxnMultipleAction","SingleTxnSingleAction","SingleTxnDetail","TxnListWrapper","setShowTxnDetail","ReviewTransaction","warnings","searchParams","newUrl","firstAction","isTransfer","isFunctionCall","isMint","txArgs","txImage","successInfo","warning","SuiTxCard","suiTransactionBytes","txDigest","setTxDigest","suiAddress","transactionData","setTransactionData","bytes","SuiTransaction","rawData","MessageGroup","groupKey","creator","agentImage","MessageContainer","customTxContainer","customApproveTxButton","customDeclineTxButton","customToolComponents","hideToolCall","messagesWithAgentId","setMessagesWithAgentId","updateAgentIdForMessages","incomingMessages","messageAgentImage","updatedMessages","evmSignRequest","userName","toolIndex","customTool","CustomComponent","stringifiedData","prevMsg","nextMsg","prevParts","nextParts","prevPart","nextPart","MessageItemComponent","meta","customComponents","getInitialScreenSize","isLargeScreen","requiresScrollPadding","isWidgetMode","hasAutoPrompt","messageContainer","toolComponents","shouldAnimate","messageGroupProps","AnimatePresence","motion","MessageItem","equal","ThinkingMessageComponent","disableAnimation","currentSrc","setCurrentSrc","handleImageError","delay","ThinkingMessage","DefaultWelcomeScreen","DefaultWelcomeScreen_default","WelcomeList","items","bgColor","onItemClick","WELCOME_QUESTIONS","WELCOME_ACTIONS","WELCOME_COLORS","WelcomeAccountOverview","handleItemClick","AccountOverview","WelcomeAccountOverview_default","Skeleton","AccountOverviewSkeleton","WelcomeListSkeleton","WelcomeAccountOverviewSkeleton","renderTypedComponent","component","WelcomeWrapper","welcomeComponent","DefaultLoadingIndicator","DefaultLoadingIndicator_default","MessagesList","memoizedMessages","widget","onAppend","onReload","LoadingIndicator","widgetWelcomePrompts","questions","renderWidgetWelcome","overlayClasses","titleClasses","question","renderStandardWelcome","renderLoadingIndicator","spinnerContainerClasses","renderError","errorContainerClasses","renderMessages","shouldShowThinking","messageItemProps","containerClasses","ScrollManager","messagesEndRef","ScrollToBottomButton","isVisible","buttonClasses","iconClasses","ArrowDown","UnifiedChatContent","apiUrl","apiKey","initialMessages","urlChatId","nearWalletId","messageBackground","reload","useChat","messagesRef","triggerScrollOnSubmit","isPromptSent","setIsPromptSent","isAutoPromptMode","setIsAutoPromptMode","scrollToBottomHandler","stableAddToolResult","stableAppend","isAutoPromptInitialPhase","throttledMessages","setThrottledMessages","timer","effectiveMessages","shouldApplyScrollPadding","setShouldApplyScrollPadding","formatNumber","format","AssetIcon","symbol","symbolFirstThreeLetters","TokenRow","rank","token","visibleColumns","dayChange","isPositiveChange","renderColumn","columnId","price","monthData","ResponsiveContainer","col","column","TokenList","sortedAssets","priceA","asset","BitteAiChat","historyApiUrl","loadedData","setLoadedData","isNewChatId","setIsNewChatId","getChatIdFromQueryParam","ensureChatId","finalChatId","existingChatId","newChatId","chat","uiMessages","agentIdLoaded","updateWallet","AssetItem","renderAssetIcon","renderNetworkIcon","DashboardHeader","hour","calculatePortfolioChange","totalWeightedChange","totalValue","weight","useAccountOverview","showAllAssets","setShowAllAssets","portfolioChange","isPriceChangePositive","visibleAssets","remainingAssetsCount","walletAddress","Copy","BitteLogo","BitteWidgetChat"],"mappings":"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D,CAAK,CAAA,CACD,CACI,MAAA,CACA,MACJ,CACA,CAAA,CACI,CACA,CAAA,CACJ,EACA,CACI,MAAA,CACA,MACJ,CACA,CAAA,CACI,OACA,MACJ,CAAA,CACA,CACI,CAAA,CACA,CACJ,CACA,CAAA,CACI,MACA,CAAA,KACJ,EACA,CACI,MAAA,CACA,CACJ,CAAA,CACA,CACI,MACA,CAAA,IACJ,CACA,CAAA,CACI,OACA,IACJ,CAAA,CACA,CACI,CAAA,CACA,CACJ,CACA,CAAA,CACI,MACA,CAAA,IACJ,EACA,CACI,MAAA,CACA,IACJ,CAAA,CACA,CACI,CACA,CAAA,CACJ,EACA,CACI,MAAA,CACA,IACJ,CACA,CAAA,CACI,CACA,CAAA,IACJ,EACA,CACI,IAAA,CACA,IACJ,CAAA,CACA,CACI,IACA,CAAA,IACJ,CACA,CAAA,CACI,EACA,CACJ,CAAA,CACA,CACI,IACA,CAAA,IACJ,EACA,CACI,IAAA,CACA,IACJ,CAAA,CACA,CACI,CACA,CAAA,CACJ,CACA,CAAA,CACI,KACA,IACJ,CAAA,CACA,CACI,IAAA,CACA,CACJ,CACA,CAAA,CACI,KACA,MACJ,CAAA,CACA,CACI,IACA,CAAA,MACJ,CACA,CAAA,CACI,EACA,CACJ,CAAA,CACA,CACI,IAAA,CACA,MACJ,CACA,CAAA,CACI,IACA,CAAA,MACJ,EACA,CACI,CAAA,CACA,CACJ,CAAA,CACA,CACI,IACA,CAAA,MACJ,CACA,CAAA,CACI,EACA,MACJ,CAAA,CACA,CACI,MAAA,CACA,MACJ,CACJ,CAAA,CACA,CAAK,CAAA,CACD,CACI,CACA,CAAA,CACJ,EACA,CACI,IAAA,CACA,IACJ,CACA,CAAA,CACI,IACA,CAAA,IACJ,EACA,CACI,CAAA,CACA,CACJ,CAAA,CACA,CACI,IACA,CAAA,IACJ,CACA,CAAA,CACI,KACA,IACJ,CAAA,CACA,CACI,IACA,CAAA,CACJ,EACA,CACI,IAAA,CACA,KACJ,CAAA,CACA,CACI,CACA,CAAA,CACJ,CACA,CAAA,CACI,KACA,MACJ,CAAA,CACA,CACI,IAAA,CACA,MACJ,CACA,CAAA,CACI,EACA,CACJ,CAAA,CACA,CACI,IACA,CAAA,MACJ,CACA,CAAA,CACI,KACA,MACJ,CAAA,CACA,CACI,CAAA,CACA,MACJ,CACA,CAAA,CACI,MACA,CAAA,MACJ,EACA,CACI,CAAA,CACA,CACJ,CAAA,CACA,CACI,MACA,CAAA,MACJ,CACA,CAAA,CACI,OACA,MACJ,CAAA,CACA,CACI,CAAA,CACA,CACJ,CACA,CAAA,CACI,MACA,CAAA,MACJ,EACA,CACI,MAAA,CACA,MACJ,CACA,CAAA,CACI,OACA,CACJ,CAAA,CACA,CACI,MAAA,CACA,IACJ,CACA,CAAA,CACI,CACA,CAAA,CACJ,EACA,CACI,MAAA,CACA,IACJ,CAAA,CACA,CACI,MACA,CAAA,IACJ,CACA,CAAA,CACI,EACA,CACJ,CAAA,CACA,CACI,MAAA,CACA,IACJ,CACA,CAAA,CACI,MACA,CAAA,IACJ,EACA,CACI,CAAA,CACA,IACJ,CAAA,CACA,CACI,IACA,CAAA,IACJ,CACJ,CACA,CAAA,CAAA,CAAK,CACD,CACI,OAAA,CACA,GACJ,CAAA,CACA,CACI,OACA,CAAA,KACJ,CACA,CAAA,CACI,QACA,MACJ,CAAA,CACA,CACI,MAAA,CACA,KACJ,CACA,CAAA,CACI,IACA,CAAA,MACJ,EACA,CACI,MAAA,CACA,MACJ,CAAA,CACA,CACI,CACA,CAAA,KACJ,CACA,CAAA,CACI,MACA,MACJ,CAAA,CACA,CACI,KAAA,CACA,MACJ,CACA,CAAA,CACI,MACA,KACJ,CAAA,CACA,CACI,MACA,CAAA,MACJ,CACA,CAAA,CACI,OACA,KACJ,CAAA,CACA,CACI,MAAA,CACA,GACJ,CACA,CAAA,CACI,MACA,CAAA,KACJ,EACA,CACI,MAAA,CACA,CACJ,CACA,CAAA,CACI,OACA,MACJ,CAAA,CACA,CACI,MAAA,CACA,IACJ,CACA,CAAA,CACI,MACA,CAAA,MACJ,EACA,CACI,MAAA,CACA,OACJ,CAAA,CACA,CACI,KACA,CAAA,OACJ,EACA,CACI,KAA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,CACJ,CACJ,CAAA,CACA,EAAM,CAAA,CAAA,CACN,EAAK,CACT,CACJ,CACA,CAAA,EAAA,CAAM,EACN,MAAU,CAAA,CACN,CACI,EAAA,CAAM,KACN,EAAM,CAAA,CACF,CACI,GAAO,CAAA,CAAA,CACP,GAAM,IACN,CAAA,EAAA,CAAM,CACN,CAAA,EAAA,CAAM,CACF,CAAK,CAAA,CAAA,CACL,CAAK,CAAA,CACD,CACI,CAAK,CAAA,CACD,CAAK,CAAA,IAAA,CACL,EAAK,CACT,CAAA,CACA,CAAK,CAAA,CACD,EAAK,IACL,CAAA,CAAA,CAAK,CACT,CAAA,CACA,EAAK,EACL,CAAA,CAAA,CAAK,CACD,CACI,EAAK,CACD,CACI,MACA,CAAA,MACJ,EACA,CACI,CAAA,CACA,CACJ,CACA,CAAA,CACI,OACA,MACJ,CAAA,CACA,CACI,MAAA,CACA,MACJ,CACA,CAAA,CACI,CACA,CAAA,CACJ,EACA,CACI,KAAA,CACA,MACJ,CAAA,CACA,CACI,MACA,CAAA,CACJ,CACA,CAAA,CACI,OACA,IACJ,CAAA,CACA,CACI,MAAA,CACA,KACJ,CACA,CAAA,CACI,CACA,CAAA,CACJ,EACA,CACI,MAAA,CACA,GACJ,CAAA,CACA,CACI,MACA,CAAA,IACJ,EACA,CACI,CAAA,CACA,CACJ,CACA,CAAA,CACI,MACA,CAAA,KACJ,EACA,CACI,CAAA,CACA,IACJ,CAAA,CACA,CACI,IACA,CAAA,IACJ,CACA,CAAA,CACI,MACA,IACJ,CAAA,CACA,CACI,CAAA,CACA,CACJ,CACA,CAAA,CACI,GACA,CAAA,IACJ,EACA,CACI,IAAA,CACA,KACJ,CAAA,CACA,CACI,CACA,CAAA,CACJ,CACA,CAAA,CACI,MACA,IACJ,CAAA,CACA,CACI,KACA,CAAA,CACJ,EACA,CACI,IAAA,CACA,MACJ,CAAA,CACA,CACI,IACA,CAAA,MACJ,CACA,CAAA,CACI,EACA,CACJ,CAAA,CACA,CACI,IAAA,CACA,MACJ,CACA,CAAA,CACI,MACA,MACJ,CAAA,CACA,CACI,CACA,CAAA,CACJ,CACA,CAAA,CACI,KACA,MACJ,CAAA,CACA,CACI,CAAA,CACA,KACJ,CACA,CAAA,CACI,MACA,CAAA,MACJ,CACJ,CACA,CAAA,CAAA,CAAK,CACD,CACI,CAAA,CACA,CACJ,CACA,CAAA,CACI,KACA,CAAA,IACJ,EACA,CACI,IAAA,CACA,GACJ,CAAA,CACA,CACI,CACA,CAAA,CACJ,CACA,CAAA,CACI,KACA,KACJ,CAAA,CACA,CACI,IAAA,CACA,IACJ,CACA,CAAA,CACI,KACA,CAAA,CACJ,EACA,CACI,KAAA,CACA,MACJ,CAAA,CACA,CACI,CACA,CAAA,CACJ,CACA,CAAA,CACI,KACA,MACJ,CAAA,CACA,CACI,GACA,CAAA,MACJ,EACA,CACI,CAAA,CACA,CACJ,CAAA,CACA,CACI,KACA,CAAA,MACJ,CACA,CAAA,CACI,KACA,MACJ,CAAA,CACA,CACI,CAAA,CACA,KACJ,CACA,CAAA,CACI,OACA,MACJ,CAAA,CACA,CACI,CACA,CAAA,CACJ,CACA,CAAA,CACI,OACA,MACJ,CAAA,CACA,CACI,MAAA,CACA,MACJ,CACA,CAAA,CACI,CACA,CAAA,CACJ,EACA,CACI,MAAA,CACA,MACJ,CACA,CAAA,CACI,OACA,MACJ,CAAA,CACA,CACI,MAAA,CACA,CACJ,CACA,CAAA,CACI,KACA,CAAA,IACJ,EACA,CACI,CAAA,CACA,CACJ,CAAA,CACA,CACI,MACA,CAAA,KACJ,CACA,CAAA,CACI,OACA,IACJ,CAAA,CACA,CACI,CAAA,CACA,CACJ,CACA,CAAA,CACI,MACA,CAAA,IACJ,EACA,CACI,MAAA,CACA,IACJ,CAAA,CACA,CACI,CACA,CAAA,KACJ,EACA,CACI,IAAA,CACA,KACJ,CACJ,CAAA,CACA,CAAK,CAAA,CACD,CACI,MACA,CAAA,KACJ,CACA,CAAA,CACI,OACA,MACJ,CAAA,CACA,CACI,MAAA,CACA,MACJ,CACA,CAAA,CACI,OACA,MACJ,CAAA,CACA,CACI,MACA,CAAA,MACJ,CACA,CAAA,CACI,OACA,MACJ,CAAA,CACA,CACI,MAAA,CACA,MACJ,CACA,CAAA,CACI,MACA,CAAA,MACJ,EACA,CACI,MAAA,CACA,MACJ,CACA,CAAA,CACI,OACA,MACJ,CAAA,CACA,CACI,MAAA,CACA,MACJ,CACA,CAAA,CACI,MACA,CAAA,MACJ,EACA,CACI,OAAA,CACA,IACJ,CAAA,CACA,CACI,OACA,CAAA,KACJ,CACA,CAAA,CACI,QACA,CACJ,CAAA,CACA,CACI,OAAA,CACA,MACJ,CACA,CAAA,CACI,OACA,CAAA,KACJ,EACA,CACI,MAAA,CACA,OACJ,CAAA,CACA,CACI,MACA,CAAA,OACJ,EACA,CACI,MAAA,CACA,OACJ,CACA,CAAA,CACI,MACA,CAAA,OACJ,EACA,CACI,MAAA,CACA,OACJ,CAAA,CACA,CACI,MACA,CAAA,OACJ,CACA,CAAA,CACI,OACA,OACJ,CAAA,CACA,CACI,MAAA,CACA,OACJ,CACA,CAAA,CACI,MACA,CAAA,OACJ,EACA,CACI,MAAA,CACA,OACJ,CAAA,CACA,CACI,MACA,CAAA,OACJ,CACA,CAAA,CACI,OACA,MACJ,CAAA,CACA,CACI,MACA,CAAA,MACJ,EACA,CACI,MAAA,CACA,MACJ,CAAA,CACA,CACI,MACA,CAAA,KACJ,CACJ,CAAA,CACA,EAAK,IACT,CACJ,CACJ,CAAA,CACA,CACI,CAAK,CAAA,CACD,CAAK,CAAA,IAAA,CACL,EAAK,CACT,CAAA,CACA,CAAK,CAAA,CACD,EAAK,IACL,CAAA,CAAA,CAAK,CACT,CAAA,CACA,EAAK,EACL,CAAA,CAAA,CAAK,CACD,CACI,EAAK,CACD,CACI,OACA,MACJ,CAAA,CACA,CACI,CACA,CAAA,CACJ,CACA,CAAA,CACI,OACA,MACJ,CAAA,CACA,CACI,MAAA,CACA,MACJ,CACA,CAAA,CACI,CACA,CAAA,CACJ,EACA,CACI,KAAA,CACA,MACJ,CACA,CAAA,CACI,OACA,CACJ,CAAA,CACA,CACI,MAAA,CACA,IACJ,CACA,CAAA,CACI,MACA,CAAA,KACJ,EACA,CACI,CAAA,CACA,CACJ,CAAA,CACA,CACI,MACA,CAAA,GACJ,EACA,CACI,MAAA,CACA,IACJ,CACA,CAAA,CACI,CACA,CAAA,CACJ,EACA,CACI,MAAA,CACA,KACJ,CAAA,CACA,CACI,CACA,CAAA,IACJ,CACA,CAAA,CACI,KACA,IACJ,CAAA,CACA,CACI,KAAA,CACA,IACJ,CACA,CAAA,CACI,CACA,CAAA,CACJ,EACA,CACI,GAAA,CACA,IACJ,CAAA,CACA,CACI,IACA,CAAA,KACJ,CACA,CAAA,CACI,EACA,CACJ,CAAA,CACA,CACI,KACA,CAAA,IACJ,EACA,CACI,KAAA,CACA,CACJ,CAAA,CACA,CACI,IACA,CAAA,MACJ,CACA,CAAA,CACI,KACA,MACJ,CAAA,CACA,CACI,CAAA,CACA,CACJ,CACA,CAAA,CACI,KACA,MACJ,CAAA,CACA,CACI,KACA,CAAA,MACJ,CACA,CAAA,CACI,EACA,CACJ,CAAA,CACA,CACI,IAAA,CACA,MACJ,CACA,CAAA,CACI,CACA,CAAA,KACJ,EACA,CACI,MAAA,CACA,MACJ,CACJ,CAAA,CACA,EAAK,CACD,CACI,CACA,CAAA,CACJ,EACA,CACI,KAAA,CACA,IACJ,CAAA,CACA,CACI,IACA,CAAA,GACJ,CACA,CAAA,CACI,EACA,CACJ,CAAA,CACA,CACI,IAAA,CACA,KACJ,CACA,CAAA,CACI,IACA,CAAA,IACJ,EACA,CACI,KAAA,CACA,CACJ,CAAA,CACA,CACI,KACA,CAAA,MACJ,CACA,CAAA,CACI,EACA,CACJ,CAAA,CACA,CACI,IACA,CAAA,MACJ,EACA,CACI,GAAA,CACA,MACJ,CAAA,CACA,CACI,CACA,CAAA,CACJ,CACA,CAAA,CACI,MACA,MACJ,CAAA,CACA,CACI,IAAA,CACA,MACJ,CACA,CAAA,CACI,EACA,KACJ,CAAA,CACA,CACI,MACA,CAAA,MACJ,CACA,CAAA,CACI,EACA,CACJ,CAAA,CACA,CACI,MAAA,CACA,MACJ,CACA,CAAA,CACI,MACA,CAAA,MACJ,EACA,CACI,CAAA,CACA,CACJ,CACA,CAAA,CACI,OACA,MACJ,CAAA,CACA,CACI,MAAA,CACA,MACJ,CACA,CAAA,CACI,MACA,CAAA,CACJ,EACA,CACI,KAAA,CACA,IACJ,CAAA,CACA,CACI,CACA,CAAA,CACJ,CACA,CAAA,CACI,OACA,KACJ,CAAA,CACA,CACI,MAAA,CACA,IACJ,CACA,CAAA,CACI,CACA,CAAA,CACJ,EACA,CACI,MAAA,CACA,IACJ,CAAA,CACA,CACI,MACA,CAAA,IACJ,EACA,CACI,CAAA,CACA,KACJ,CACA,CAAA,CACI,IACA,CAAA,KACJ,CACJ,CACA,CAAA,CAAA,CAAK,CACD,CACI,OACA,KACJ,CAAA,CACA,CACI,MAAA,CACA,MACJ,CACA,CAAA,CACI,MACA,CAAA,MACJ,EACA,CACI,MAAA,CACA,MACJ,CAAA,CACA,CACI,MACA,CAAA,MACJ,CACA,CAAA,CACI,OACA,MACJ,CAAA,CACA,CACI,MAAA,CACA,MACJ,CACA,CAAA,CACI,OACA,MACJ,CAAA,CACA,CACI,MACA,CAAA,MACJ,CACA,CAAA,CACI,OACA,MACJ,CAAA,CACA,CACI,MAAA,CACA,MACJ,CACA,CAAA,CACI,MACA,CAAA,MACJ,EACA,CACI,OAAA,CACA,IACJ,CAAA,CACA,CACI,OACA,CAAA,KACJ,CACA,CAAA,CACI,QACA,CACJ,CAAA,CACA,CACI,OAAA,CACA,MACJ,CACA,CAAA,CACI,OACA,CAAA,KACJ,EACA,CACI,MAAA,CACA,OACJ,CACA,CAAA,CACI,OACA,OACJ,CAAA,CACA,CACI,MAAA,CACA,OACJ,CACA,CAAA,CACI,MACA,CAAA,OACJ,EACA,CACI,MAAA,CACA,OACJ,CAAA,CACA,CACI,MACA,CAAA,OACJ,EACA,CACI,MAAA,CACA,OACJ,CACA,CAAA,CACI,MACA,CAAA,OACJ,EACA,CACI,MAAA,CACA,OACJ,CAAA,CACA,CACI,MACA,CAAA,OACJ,CACA,CAAA,CACI,OACA,OACJ,CAAA,CACA,CACI,MACA,CAAA,MACJ,EACA,CACI,MAAA,CACA,MACJ,CAAA,CACA,CACI,MACA,CAAA,MACJ,CACA,CAAA,CACI,OACA,KACJ,CACJ,CACA,CAAA,CAAA,CAAK,IACT,CACJ,CACJ,CACA,CAAA,CACI,EAAK,CACD,CAAA,CAAK,IACL,CAAA,CAAA,CAAK,CACT,CACA,CAAA,CAAA,CAAK,CACD,CAAA,CAAK,KACL,CAAK,CAAA,CACT,CACA,CAAA,CAAA,CAAK,GACL,CAAK,CAAA,CACD,CACI,CAAK,CAAA,CACD,CACI,MACA,CAAA,MACJ,CACA,CAAA,CACI,EACA,CACJ,CAAA,CACA,CACI,MAAA,CACA,MACJ,CACA,CAAA,CACI,MACA,CAAA,MACJ,EACA,CACI,CAAA,CACA,CACJ,CACA,CAAA,CACI,MACA,MACJ,CAAA,CACA,CACI,MAAA,CACA,CACJ,CACA,CAAA,CACI,MACA,CAAA,IACJ,EACA,CACI,MAAA,CACA,KACJ,CAAA,CACA,CACI,CACA,CAAA,CACJ,EACA,CACI,MAAA,CACA,GACJ,CACA,CAAA,CACI,MACA,CAAA,IACJ,EACA,CACI,CAAA,CACA,CACJ,CAAA,CACA,CACI,MACA,CAAA,KACJ,CACA,CAAA,CACI,EACA,IACJ,CAAA,CACA,CACI,IAAA,CACA,IACJ,CACA,CAAA,CACI,KACA,CAAA,IACJ,EACA,CACI,CAAA,CACA,CACJ,CAAA,CACA,CACI,GACA,CAAA,IACJ,CACA,CAAA,CACI,KACA,KACJ,CAAA,CACA,CACI,CACA,CAAA,CACJ,EACA,CACI,KAAA,CACA,IACJ,CAAA,CACA,CACI,KACA,CAAA,CACJ,CACA,CAAA,CACI,KACA,MACJ,CAAA,CACA,CACI,IAAA,CACA,MACJ,CACA,CAAA,CACI,EACA,CACJ,CAAA,CACA,CACI,IACA,CAAA,MACJ,CACA,CAAA,CACI,MACA,MACJ,CAAA,CACA,CACI,CAAA,CACA,CACJ,CACA,CAAA,CACI,IACA,CAAA,MACJ,EACA,CACI,CAAA,CACA,KACJ,CACA,CAAA,CACI,OACA,MACJ,CACJ,CACA,CAAA,CAAA,CAAK,CACD,CACI,CAAA,CACA,CACJ,CAAA,CACA,CACI,KACA,CAAA,IACJ,CACA,CAAA,CACI,KACA,GACJ,CAAA,CACA,CACI,CAAA,CACA,CACJ,CACA,CAAA,CACI,IACA,CAAA,KACJ,EACA,CACI,IAAA,CACA,IACJ,CAAA,CACA,CACI,KACA,CAAA,CACJ,CACA,CAAA,CACI,MACA,MACJ,CAAA,CACA,CACI,CACA,CAAA,CACJ,EACA,CACI,IAAA,CACA,MACJ,CAAA,CACA,CACI,GACA,CAAA,MACJ,CACA,CAAA,CACI,EACA,CACJ,CAAA,CACA,CACI,KAAA,CACA,MACJ,CACA,CAAA,CACI,KACA,MACJ,CAAA,CACA,CACI,CACA,CAAA,KACJ,CACA,CAAA,CACI,OACA,MACJ,CAAA,CACA,CACI,CAAA,CACA,CACJ,CACA,CAAA,CACI,MACA,CAAA,MACJ,EACA,CACI,MAAA,CACA,MACJ,CACA,CAAA,CACI,EACA,CACJ,CAAA,CACA,CACI,MAAA,CACA,MACJ,CACA,CAAA,CACI,MACA,CAAA,MACJ,EACA,CACI,MAAA,CACA,CACJ,CAAA,CACA,CACI,KACA,CAAA,IACJ,CACA,CAAA,CACI,EACA,CACJ,CAAA,CACA,CACI,MAAA,CACA,KACJ,CACA,CAAA,CACI,MACA,CAAA,IACJ,EACA,CACI,CAAA,CACA,CACJ,CAAA,CACA,CACI,MACA,CAAA,IACJ,EACA,CACI,MAAA,CACA,IACJ,CACA,CAAA,CACI,CACA,CAAA,KACJ,EACA,CACI,IAAA,CACA,KACJ,CACJ,EACA,CAAK,CAAA,CACD,CACI,QAAA,CACA,IACJ,CACA,CAAA,CACI,OACA,MACJ,CAAA,CACA,CACI,MACA,CAAA,MACJ,CACA,CAAA,CACI,OACA,MACJ,CAAA,CACA,CACI,MAAA,CACA,MACJ,CACA,CAAA,CACI,MACA,CAAA,MACJ,EACA,CACI,MAAA,CACA,MACJ,CACA,CAAA,CACI,OACA,MACJ,CAAA,CACA,CACI,MAAA,CACA,MACJ,CACA,CAAA,CACI,MACA,CAAA,MACJ,EACA,CACI,MAAA,CACA,MACJ,CAAA,CACA,CACI,MACA,CAAA,MACJ,CACA,CAAA,CACI,QACA,IACJ,CAAA,CACA,CACI,OAAA,CACA,KACJ,CACA,CAAA,CACI,OACA,CAAA,CACJ,EACA,CACI,OAAA,CACA,MACJ,CAAA,CACA,CACI,OACA,CAAA,KACJ,EACA,CACI,MAAA,CACA,OACJ,CACA,CAAA,CACI,MACA,CAAA,OACJ,EACA,CACI,MAAA,CACA,OACJ,CAAA,CACA,CACI,MACA,CAAA,OACJ,CACA,CAAA,CACI,OACA,OACJ,CAAA,CACA,CACI,MACA,CAAA,OACJ,EACA,CACI,MAAA,CACA,OACJ,CAAA,CACA,CACI,MACA,CAAA,OACJ,CACA,CAAA,CACI,OACA,OACJ,CAAA,CACA,CACI,MAAA,CACA,OACJ,CACA,CAAA,CACI,OACA,OACJ,CAAA,CACA,CACI,QACA,CAAA,KACJ,CACA,CAAA,CACI,SACA,MACJ,CAAA,CACA,CACI,QAAA,CACA,IACJ,CACA,CAAA,CACI,QACA,CAAA,KACJ,CACJ,CACA,CAAA,CAAA,CAAK,IACT,CACJ,CACJ,CACA,CAAA,CACI,CAAK,CAAA,gBAAA,CACL,EAAK,CACD,CACI,CAAK,CAAA,CACD,CACI,MACA,CAAA,MACJ,CACA,CAAA,CACI,EACA,CACJ,CAAA,CACA,CACI,MACA,CAAA,MACJ,EACA,CACI,MAAA,CACA,MACJ,CAAA,CACA,CACI,CACA,CAAA,CACJ,CACA,CAAA,CACI,MACA,MACJ,CAAA,CACA,CACI,MAAA,CACA,CACJ,CACA,CAAA,CACI,OACA,IACJ,CAAA,CACA,CACI,MACA,CAAA,KACJ,CACA,CAAA,CACI,EACA,CACJ,CAAA,CACA,CACI,MAAA,CACA,GACJ,CACA,CAAA,CACI,MACA,CAAA,IACJ,EACA,CACI,CAAA,CACA,CACJ,CACA,CAAA,CACI,OACA,KACJ,CAAA,CACA,CACI,CAAA,CACA,IACJ,CACA,CAAA,CACI,IACA,CAAA,IACJ,EACA,CACI,KAAA,CACA,IACJ,CAAA,CACA,CACI,CACA,CAAA,CACJ,CACA,CAAA,CACI,IACA,IACJ,CAAA,CACA,CACI,IAAA,CACA,KACJ,CACA,CAAA,CACI,CACA,CAAA,CACJ,EACA,CACI,KAAA,CACA,IACJ,CAAA,CACA,CACI,KACA,CAAA,CACJ,EACA,CACI,IAAA,CACA,MACJ,CACA,CAAA,CACI,IACA,CAAA,MACJ,EACA,CACI,CAAA,CACA,CACJ,CAAA,CACA,CACI,IACA,CAAA,MACJ,CACA,CAAA,CACI,MACA,MACJ,CAAA,CACA,CACI,CAAA,CACA,CACJ,CACA,CAAA,CACI,IACA,CAAA,MACJ,EACA,CACI,CAAA,CACA,KACJ,CAAA,CACA,CACI,MACA,CAAA,MACJ,CACJ,CAAA,CACA,EAAK,CACD,CACI,EACA,CACJ,CAAA,CACA,CACI,KACA,CAAA,IACJ,CACA,CAAA,CACI,KACA,GACJ,CAAA,CACA,CACI,CAAA,CACA,CACJ,CACA,CAAA,CACI,IACA,CAAA,KACJ,EACA,CACI,IAAA,CACA,IACJ,CAAA,CACA,CACI,KACA,CAAA,CACJ,CACA,CAAA,CACI,MACA,MACJ,CAAA,CACA,CACI,CAAA,CACA,CACJ,CACA,CAAA,CACI,IACA,CAAA,MACJ,EACA,CACI,GAAA,CACA,MACJ,CACA,CAAA,CACI,EACA,CACJ,CAAA,CACA,CACI,KAAA,CACA,MACJ,CACA,CAAA,CACI,IACA,CAAA,MACJ,EACA,CACI,CAAA,CACA,KACJ,CAAA,CACA,CACI,MACA,CAAA,MACJ,EACA,CACI,CAAA,CACA,CACJ,CACA,CAAA,CACI,MACA,CAAA,MACJ,EACA,CACI,MAAA,CACA,MACJ,CAAA,CACA,CACI,CACA,CAAA,CACJ,CACA,CAAA,CACI,OACA,MACJ,CAAA,CACA,CACI,MACA,CAAA,MACJ,EACA,CACI,MAAA,CACA,CACJ,CAAA,CACA,CACI,KACA,CAAA,IACJ,CACA,CAAA,CACI,EACA,CACJ,CAAA,CACA,CACI,MAAA,CACA,KACJ,CACA,CAAA,CACI,MACA,CAAA,IACJ,EACA,CACI,CAAA,CACA,CACJ,CAAA,CACA,CACI,MACA,CAAA,IACJ,CACA,CAAA,CACI,OACA,IACJ,CAAA,CACA,CACI,CAAA,CACA,KACJ,CACA,CAAA,CACI,KACA,KACJ,CACJ,EACA,CAAK,CAAA,CACD,CACI,QAAA,CACA,IACJ,CACA,CAAA,CACI,MACA,CAAA,MACJ,EACA,CACI,MAAA,CACA,MACJ,CAAA,CACA,CACI,MACA,CAAA,MACJ,EACA,CACI,MAAA,CACA,MACJ,CACA,CAAA,CACI,MACA,CAAA,MACJ,EACA,CACI,MAAA,CACA,MACJ,CAAA,CACA,CACI,MACA,CAAA,MACJ,CACA,CAAA,CACI,OACA,MACJ,CAAA,CACA,CACI,MACA,CAAA,MACJ,EACA,CACI,MAAA,CACA,MACJ,CAAA,CACA,CACI,MACA,CAAA,MACJ,CACA,CAAA,CACI,QACA,IACJ,CAAA,CACA,CACI,OAAA,CACA,KACJ,CACA,CAAA,CACI,OACA,CAAA,CACJ,EACA,CACI,OAAA,CACA,MACJ,CAAA,CACA,CACI,OACA,CAAA,KACJ,CACA,CAAA,CACI,OACA,OACJ,CAAA,CACA,CACI,MAAA,CACA,OACJ,CACA,CAAA,CACI,OACA,OACJ,CAAA,CACA,CACI,MACA,CAAA,OACJ,CACA,CAAA,CACI,OACA,OACJ,CAAA,CACA,CACI,MAAA,CACA,OACJ,CACA,CAAA,CACI,MACA,CAAA,OACJ,EACA,CACI,MAAA,CACA,OACJ,CACA,CAAA,CACI,OACA,OACJ,CAAA,CACA,CACI,MAAA,CACA,OACJ,CACA,CAAA,CACI,MACA,CAAA,OACJ,EACA,CACI,QAAA,CACA,KACJ,CAAA,CACA,CACI,QACA,CAAA,MACJ,EACA,CACI,QAAA,CACA,IACJ,CACA,CAAA,CACI,QACA,CAAA,KACJ,CACJ,CACA,CAAA,CAAA,CAAK,IACT,CACJ,CACJ,CACJ,CAAA,CACA,EAAM,CAAA,CACV,EACA,EAAM,CAAA,QAAA,CACN,EAAM,CAAA,2BAAA,CACN,GAAM,KACV,CAAA,CACA,CACI,EAAA,CAAM,KACN,CAAK,CAAA,CACD,CAAK,CAAA,CAAA,CACL,EAAK,CACD,CAAA,CACA,CACA,CAAA,CAAA,CACA,CACJ,CACA,CAAA,EAAA,CAAM,CACV,CACA,CAAA,CAAA,CAAK,CACD,CAAK,CAAA,CAAA,CACL,CAAK,CA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","file":"index.mjs","sourcesContent":["(function (module, exports) {\n  'use strict';\n\n  // Utils\n  function assert (val, msg) {\n    if (!val) throw new Error(msg || 'Assertion failed');\n  }\n\n  // Could use `inherits` module, but don't want to move from single file\n  // architecture yet.\n  function inherits (ctor, superCtor) {\n    ctor.super_ = superCtor;\n    var TempCtor = function () {};\n    TempCtor.prototype = superCtor.prototype;\n    ctor.prototype = new TempCtor();\n    ctor.prototype.constructor = ctor;\n  }\n\n  // BN\n\n  function BN (number, base, endian) {\n    if (BN.isBN(number)) {\n      return number;\n    }\n\n    this.negative = 0;\n    this.words = null;\n    this.length = 0;\n\n    // Reduction context\n    this.red = null;\n\n    if (number !== null) {\n      if (base === 'le' || base === 'be') {\n        endian = base;\n        base = 10;\n      }\n\n      this._init(number || 0, base || 10, endian || 'be');\n    }\n  }\n  if (typeof module === 'object') {\n    module.exports = BN;\n  } else {\n    exports.BN = BN;\n  }\n\n  BN.BN = BN;\n  BN.wordSize = 26;\n\n  var Buffer;\n  try {\n    if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n      Buffer = window.Buffer;\n    } else {\n      Buffer = require('buffer').Buffer;\n    }\n  } catch (e) {\n  }\n\n  BN.isBN = function isBN (num) {\n    if (num instanceof BN) {\n      return true;\n    }\n\n    return num !== null && typeof num === 'object' &&\n      num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n  };\n\n  BN.max = function max (left, right) {\n    if (left.cmp(right) > 0) return left;\n    return right;\n  };\n\n  BN.min = function min (left, right) {\n    if (left.cmp(right) < 0) return left;\n    return right;\n  };\n\n  BN.prototype._init = function init (number, base, endian) {\n    if (typeof number === 'number') {\n      return this._initNumber(number, base, endian);\n    }\n\n    if (typeof number === 'object') {\n      return this._initArray(number, base, endian);\n    }\n\n    if (base === 'hex') {\n      base = 16;\n    }\n    assert(base === (base | 0) && base >= 2 && base <= 36);\n\n    number = number.toString().replace(/\\s+/g, '');\n    var start = 0;\n    if (number[0] === '-') {\n      start++;\n      this.negative = 1;\n    }\n\n    if (start < number.length) {\n      if (base === 16) {\n        this._parseHex(number, start, endian);\n      } else {\n        this._parseBase(number, base, start);\n        if (endian === 'le') {\n          this._initArray(this.toArray(), base, endian);\n        }\n      }\n    }\n  };\n\n  BN.prototype._initNumber = function _initNumber (number, base, endian) {\n    if (number < 0) {\n      this.negative = 1;\n      number = -number;\n    }\n    if (number < 0x4000000) {\n      this.words = [number & 0x3ffffff];\n      this.length = 1;\n    } else if (number < 0x10000000000000) {\n      this.words = [\n        number & 0x3ffffff,\n        (number / 0x4000000) & 0x3ffffff\n      ];\n      this.length = 2;\n    } else {\n      assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n      this.words = [\n        number & 0x3ffffff,\n        (number / 0x4000000) & 0x3ffffff,\n        1\n      ];\n      this.length = 3;\n    }\n\n    if (endian !== 'le') return;\n\n    // Reverse the bytes\n    this._initArray(this.toArray(), base, endian);\n  };\n\n  BN.prototype._initArray = function _initArray (number, base, endian) {\n    // Perhaps a Uint8Array\n    assert(typeof number.length === 'number');\n    if (number.length <= 0) {\n      this.words = [0];\n      this.length = 1;\n      return this;\n    }\n\n    this.length = Math.ceil(number.length / 3);\n    this.words = new Array(this.length);\n    for (var i = 0; i < this.length; i++) {\n      this.words[i] = 0;\n    }\n\n    var j, w;\n    var off = 0;\n    if (endian === 'be') {\n      for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n        w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n        this.words[j] |= (w << off) & 0x3ffffff;\n        this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n        off += 24;\n        if (off >= 26) {\n          off -= 26;\n          j++;\n        }\n      }\n    } else if (endian === 'le') {\n      for (i = 0, j = 0; i < number.length; i += 3) {\n        w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n        this.words[j] |= (w << off) & 0x3ffffff;\n        this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n        off += 24;\n        if (off >= 26) {\n          off -= 26;\n          j++;\n        }\n      }\n    }\n    return this._strip();\n  };\n\n  function parseHex4Bits (string, index) {\n    var c = string.charCodeAt(index);\n    // '0' - '9'\n    if (c >= 48 && c <= 57) {\n      return c - 48;\n    // 'A' - 'F'\n    } else if (c >= 65 && c <= 70) {\n      return c - 55;\n    // 'a' - 'f'\n    } else if (c >= 97 && c <= 102) {\n      return c - 87;\n    } else {\n      assert(false, 'Invalid character in ' + string);\n    }\n  }\n\n  function parseHexByte (string, lowerBound, index) {\n    var r = parseHex4Bits(string, index);\n    if (index - 1 >= lowerBound) {\n      r |= parseHex4Bits(string, index - 1) << 4;\n    }\n    return r;\n  }\n\n  BN.prototype._parseHex = function _parseHex (number, start, endian) {\n    // Create possibly bigger array to ensure that it fits the number\n    this.length = Math.ceil((number.length - start) / 6);\n    this.words = new Array(this.length);\n    for (var i = 0; i < this.length; i++) {\n      this.words[i] = 0;\n    }\n\n    // 24-bits chunks\n    var off = 0;\n    var j = 0;\n\n    var w;\n    if (endian === 'be') {\n      for (i = number.length - 1; i >= start; i -= 2) {\n        w = parseHexByte(number, start, i) << off;\n        this.words[j] |= w & 0x3ffffff;\n        if (off >= 18) {\n          off -= 18;\n          j += 1;\n          this.words[j] |= w >>> 26;\n        } else {\n          off += 8;\n        }\n      }\n    } else {\n      var parseLength = number.length - start;\n      for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n        w = parseHexByte(number, start, i) << off;\n        this.words[j] |= w & 0x3ffffff;\n        if (off >= 18) {\n          off -= 18;\n          j += 1;\n          this.words[j] |= w >>> 26;\n        } else {\n          off += 8;\n        }\n      }\n    }\n\n    this._strip();\n  };\n\n  function parseBase (str, start, end, mul) {\n    var r = 0;\n    var b = 0;\n    var len = Math.min(str.length, end);\n    for (var i = start; i < len; i++) {\n      var c = str.charCodeAt(i) - 48;\n\n      r *= mul;\n\n      // 'a'\n      if (c >= 49) {\n        b = c - 49 + 0xa;\n\n      // 'A'\n      } else if (c >= 17) {\n        b = c - 17 + 0xa;\n\n      // '0' - '9'\n      } else {\n        b = c;\n      }\n      assert(c >= 0 && b < mul, 'Invalid character');\n      r += b;\n    }\n    return r;\n  }\n\n  BN.prototype._parseBase = function _parseBase (number, base, start) {\n    // Initialize as zero\n    this.words = [0];\n    this.length = 1;\n\n    // Find length of limb in base\n    for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n      limbLen++;\n    }\n    limbLen--;\n    limbPow = (limbPow / base) | 0;\n\n    var total = number.length - start;\n    var mod = total % limbLen;\n    var end = Math.min(total, total - mod) + start;\n\n    var word = 0;\n    for (var i = start; i < end; i += limbLen) {\n      word = parseBase(number, i, i + limbLen, base);\n\n      this.imuln(limbPow);\n      if (this.words[0] + word < 0x4000000) {\n        this.words[0] += word;\n      } else {\n        this._iaddn(word);\n      }\n    }\n\n    if (mod !== 0) {\n      var pow = 1;\n      word = parseBase(number, i, number.length, base);\n\n      for (i = 0; i < mod; i++) {\n        pow *= base;\n      }\n\n      this.imuln(pow);\n      if (this.words[0] + word < 0x4000000) {\n        this.words[0] += word;\n      } else {\n        this._iaddn(word);\n      }\n    }\n\n    this._strip();\n  };\n\n  BN.prototype.copy = function copy (dest) {\n    dest.words = new Array(this.length);\n    for (var i = 0; i < this.length; i++) {\n      dest.words[i] = this.words[i];\n    }\n    dest.length = this.length;\n    dest.negative = this.negative;\n    dest.red = this.red;\n  };\n\n  function move (dest, src) {\n    dest.words = src.words;\n    dest.length = src.length;\n    dest.negative = src.negative;\n    dest.red = src.red;\n  }\n\n  BN.prototype._move = function _move (dest) {\n    move(dest, this);\n  };\n\n  BN.prototype.clone = function clone () {\n    var r = new BN(null);\n    this.copy(r);\n    return r;\n  };\n\n  BN.prototype._expand = function _expand (size) {\n    while (this.length < size) {\n      this.words[this.length++] = 0;\n    }\n    return this;\n  };\n\n  // Remove leading `0` from `this`\n  BN.prototype._strip = function strip () {\n    while (this.length > 1 && this.words[this.length - 1] === 0) {\n      this.length--;\n    }\n    return this._normSign();\n  };\n\n  BN.prototype._normSign = function _normSign () {\n    // -0 = 0\n    if (this.length === 1 && this.words[0] === 0) {\n      this.negative = 0;\n    }\n    return this;\n  };\n\n  // Check Symbol.for because not everywhere where Symbol defined\n  // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n  if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n    try {\n      BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n    } catch (e) {\n      BN.prototype.inspect = inspect;\n    }\n  } else {\n    BN.prototype.inspect = inspect;\n  }\n\n  function inspect () {\n    return (this.red ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>';\n  }\n\n  /*\n\n  var zeros = [];\n  var groupSizes = [];\n  var groupBases = [];\n\n  var s = '';\n  var i = -1;\n  while (++i < BN.wordSize) {\n    zeros[i] = s;\n    s += '0';\n  }\n  groupSizes[0] = 0;\n  groupSizes[1] = 0;\n  groupBases[0] = 0;\n  groupBases[1] = 0;\n  var base = 2 - 1;\n  while (++base < 36 + 1) {\n    var groupSize = 0;\n    var groupBase = 1;\n    while (groupBase < (1 << BN.wordSize) / base) {\n      groupBase *= base;\n      groupSize += 1;\n    }\n    groupSizes[base] = groupSize;\n    groupBases[base] = groupBase;\n  }\n\n  */\n\n  var zeros = [\n    '',\n    '0',\n    '00',\n    '000',\n    '0000',\n    '00000',\n    '000000',\n    '0000000',\n    '00000000',\n    '000000000',\n    '0000000000',\n    '00000000000',\n    '000000000000',\n    '0000000000000',\n    '00000000000000',\n    '000000000000000',\n    '0000000000000000',\n    '00000000000000000',\n    '000000000000000000',\n    '0000000000000000000',\n    '00000000000000000000',\n    '000000000000000000000',\n    '0000000000000000000000',\n    '00000000000000000000000',\n    '000000000000000000000000',\n    '0000000000000000000000000'\n  ];\n\n  var groupSizes = [\n    0, 0,\n    25, 16, 12, 11, 10, 9, 8,\n    8, 7, 7, 7, 7, 6, 6,\n    6, 6, 6, 6, 6, 5, 5,\n    5, 5, 5, 5, 5, 5, 5,\n    5, 5, 5, 5, 5, 5, 5\n  ];\n\n  var groupBases = [\n    0, 0,\n    33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n    43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n    16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n    6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n    24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n  ];\n\n  BN.prototype.toString = function toString (base, padding) {\n    base = base || 10;\n    padding = padding | 0 || 1;\n\n    var out;\n    if (base === 16 || base === 'hex') {\n      out = '';\n      var off = 0;\n      var carry = 0;\n      for (var i = 0; i < this.length; i++) {\n        var w = this.words[i];\n        var word = (((w << off) | carry) & 0xffffff).toString(16);\n        carry = (w >>> (24 - off)) & 0xffffff;\n        off += 2;\n        if (off >= 26) {\n          off -= 26;\n          i--;\n        }\n        if (carry !== 0 || i !== this.length - 1) {\n          out = zeros[6 - word.length] + word + out;\n        } else {\n          out = word + out;\n        }\n      }\n      if (carry !== 0) {\n        out = carry.toString(16) + out;\n      }\n      while (out.length % padding !== 0) {\n        out = '0' + out;\n      }\n      if (this.negative !== 0) {\n        out = '-' + out;\n      }\n      return out;\n    }\n\n    if (base === (base | 0) && base >= 2 && base <= 36) {\n      // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n      var groupSize = groupSizes[base];\n      // var groupBase = Math.pow(base, groupSize);\n      var groupBase = groupBases[base];\n      out = '';\n      var c = this.clone();\n      c.negative = 0;\n      while (!c.isZero()) {\n        var r = c.modrn(groupBase).toString(base);\n        c = c.idivn(groupBase);\n\n        if (!c.isZero()) {\n          out = zeros[groupSize - r.length] + r + out;\n        } else {\n          out = r + out;\n        }\n      }\n      if (this.isZero()) {\n        out = '0' + out;\n      }\n      while (out.length % padding !== 0) {\n        out = '0' + out;\n      }\n      if (this.negative !== 0) {\n        out = '-' + out;\n      }\n      return out;\n    }\n\n    assert(false, 'Base should be between 2 and 36');\n  };\n\n  BN.prototype.toNumber = function toNumber () {\n    var ret = this.words[0];\n    if (this.length === 2) {\n      ret += this.words[1] * 0x4000000;\n    } else if (this.length === 3 && this.words[2] === 0x01) {\n      // NOTE: at this stage it is known that the top bit is set\n      ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n    } else if (this.length > 2) {\n      assert(false, 'Number can only safely store up to 53 bits');\n    }\n    return (this.negative !== 0) ? -ret : ret;\n  };\n\n  BN.prototype.toJSON = function toJSON () {\n    return this.toString(16, 2);\n  };\n\n  if (Buffer) {\n    BN.prototype.toBuffer = function toBuffer (endian, length) {\n      return this.toArrayLike(Buffer, endian, length);\n    };\n  }\n\n  BN.prototype.toArray = function toArray (endian, length) {\n    return this.toArrayLike(Array, endian, length);\n  };\n\n  var allocate = function allocate (ArrayType, size) {\n    if (ArrayType.allocUnsafe) {\n      return ArrayType.allocUnsafe(size);\n    }\n    return new ArrayType(size);\n  };\n\n  BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n    this._strip();\n\n    var byteLength = this.byteLength();\n    var reqLength = length || Math.max(1, byteLength);\n    assert(byteLength <= reqLength, 'byte array longer than desired length');\n    assert(reqLength > 0, 'Requested array length <= 0');\n\n    var res = allocate(ArrayType, reqLength);\n    var postfix = endian === 'le' ? 'LE' : 'BE';\n    this['_toArrayLike' + postfix](res, byteLength);\n    return res;\n  };\n\n  BN.prototype._toArrayLikeLE = function _toArrayLikeLE (res, byteLength) {\n    var position = 0;\n    var carry = 0;\n\n    for (var i = 0, shift = 0; i < this.length; i++) {\n      var word = (this.words[i] << shift) | carry;\n\n      res[position++] = word & 0xff;\n      if (position < res.length) {\n        res[position++] = (word >> 8) & 0xff;\n      }\n      if (position < res.length) {\n        res[position++] = (word >> 16) & 0xff;\n      }\n\n      if (shift === 6) {\n        if (position < res.length) {\n          res[position++] = (word >> 24) & 0xff;\n        }\n        carry = 0;\n        shift = 0;\n      } else {\n        carry = word >>> 24;\n        shift += 2;\n      }\n    }\n\n    if (position < res.length) {\n      res[position++] = carry;\n\n      while (position < res.length) {\n        res[position++] = 0;\n      }\n    }\n  };\n\n  BN.prototype._toArrayLikeBE = function _toArrayLikeBE (res, byteLength) {\n    var position = res.length - 1;\n    var carry = 0;\n\n    for (var i = 0, shift = 0; i < this.length; i++) {\n      var word = (this.words[i] << shift) | carry;\n\n      res[position--] = word & 0xff;\n      if (position >= 0) {\n        res[position--] = (word >> 8) & 0xff;\n      }\n      if (position >= 0) {\n        res[position--] = (word >> 16) & 0xff;\n      }\n\n      if (shift === 6) {\n        if (position >= 0) {\n          res[position--] = (word >> 24) & 0xff;\n        }\n        carry = 0;\n        shift = 0;\n      } else {\n        carry = word >>> 24;\n        shift += 2;\n      }\n    }\n\n    if (position >= 0) {\n      res[position--] = carry;\n\n      while (position >= 0) {\n        res[position--] = 0;\n      }\n    }\n  };\n\n  if (Math.clz32) {\n    BN.prototype._countBits = function _countBits (w) {\n      return 32 - Math.clz32(w);\n    };\n  } else {\n    BN.prototype._countBits = function _countBits (w) {\n      var t = w;\n      var r = 0;\n      if (t >= 0x1000) {\n        r += 13;\n        t >>>= 13;\n      }\n      if (t >= 0x40) {\n        r += 7;\n        t >>>= 7;\n      }\n      if (t >= 0x8) {\n        r += 4;\n        t >>>= 4;\n      }\n      if (t >= 0x02) {\n        r += 2;\n        t >>>= 2;\n      }\n      return r + t;\n    };\n  }\n\n  BN.prototype._zeroBits = function _zeroBits (w) {\n    // Short-cut\n    if (w === 0) return 26;\n\n    var t = w;\n    var r = 0;\n    if ((t & 0x1fff) === 0) {\n      r += 13;\n      t >>>= 13;\n    }\n    if ((t & 0x7f) === 0) {\n      r += 7;\n      t >>>= 7;\n    }\n    if ((t & 0xf) === 0) {\n      r += 4;\n      t >>>= 4;\n    }\n    if ((t & 0x3) === 0) {\n      r += 2;\n      t >>>= 2;\n    }\n    if ((t & 0x1) === 0) {\n      r++;\n    }\n    return r;\n  };\n\n  // Return number of used bits in a BN\n  BN.prototype.bitLength = function bitLength () {\n    var w = this.words[this.length - 1];\n    var hi = this._countBits(w);\n    return (this.length - 1) * 26 + hi;\n  };\n\n  function toBitArray (num) {\n    var w = new Array(num.bitLength());\n\n    for (var bit = 0; bit < w.length; bit++) {\n      var off = (bit / 26) | 0;\n      var wbit = bit % 26;\n\n      w[bit] = (num.words[off] >>> wbit) & 0x01;\n    }\n\n    return w;\n  }\n\n  // Number of trailing zero bits\n  BN.prototype.zeroBits = function zeroBits () {\n    if (this.isZero()) return 0;\n\n    var r = 0;\n    for (var i = 0; i < this.length; i++) {\n      var b = this._zeroBits(this.words[i]);\n      r += b;\n      if (b !== 26) break;\n    }\n    return r;\n  };\n\n  BN.prototype.byteLength = function byteLength () {\n    return Math.ceil(this.bitLength() / 8);\n  };\n\n  BN.prototype.toTwos = function toTwos (width) {\n    if (this.negative !== 0) {\n      return this.abs().inotn(width).iaddn(1);\n    }\n    return this.clone();\n  };\n\n  BN.prototype.fromTwos = function fromTwos (width) {\n    if (this.testn(width - 1)) {\n      return this.notn(width).iaddn(1).ineg();\n    }\n    return this.clone();\n  };\n\n  BN.prototype.isNeg = function isNeg () {\n    return this.negative !== 0;\n  };\n\n  // Return negative clone of `this`\n  BN.prototype.neg = function neg () {\n    return this.clone().ineg();\n  };\n\n  BN.prototype.ineg = function ineg () {\n    if (!this.isZero()) {\n      this.negative ^= 1;\n    }\n\n    return this;\n  };\n\n  // Or `num` with `this` in-place\n  BN.prototype.iuor = function iuor (num) {\n    while (this.length < num.length) {\n      this.words[this.length++] = 0;\n    }\n\n    for (var i = 0; i < num.length; i++) {\n      this.words[i] = this.words[i] | num.words[i];\n    }\n\n    return this._strip();\n  };\n\n  BN.prototype.ior = function ior (num) {\n    assert((this.negative | num.negative) === 0);\n    return this.iuor(num);\n  };\n\n  // Or `num` with `this`\n  BN.prototype.or = function or (num) {\n    if (this.length > num.length) return this.clone().ior(num);\n    return num.clone().ior(this);\n  };\n\n  BN.prototype.uor = function uor (num) {\n    if (this.length > num.length) return this.clone().iuor(num);\n    return num.clone().iuor(this);\n  };\n\n  // And `num` with `this` in-place\n  BN.prototype.iuand = function iuand (num) {\n    // b = min-length(num, this)\n    var b;\n    if (this.length > num.length) {\n      b = num;\n    } else {\n      b = this;\n    }\n\n    for (var i = 0; i < b.length; i++) {\n      this.words[i] = this.words[i] & num.words[i];\n    }\n\n    this.length = b.length;\n\n    return this._strip();\n  };\n\n  BN.prototype.iand = function iand (num) {\n    assert((this.negative | num.negative) === 0);\n    return this.iuand(num);\n  };\n\n  // And `num` with `this`\n  BN.prototype.and = function and (num) {\n    if (this.length > num.length) return this.clone().iand(num);\n    return num.clone().iand(this);\n  };\n\n  BN.prototype.uand = function uand (num) {\n    if (this.length > num.length) return this.clone().iuand(num);\n    return num.clone().iuand(this);\n  };\n\n  // Xor `num` with `this` in-place\n  BN.prototype.iuxor = function iuxor (num) {\n    // a.length > b.length\n    var a;\n    var b;\n    if (this.length > num.length) {\n      a = this;\n      b = num;\n    } else {\n      a = num;\n      b = this;\n    }\n\n    for (var i = 0; i < b.length; i++) {\n      this.words[i] = a.words[i] ^ b.words[i];\n    }\n\n    if (this !== a) {\n      for (; i < a.length; i++) {\n        this.words[i] = a.words[i];\n      }\n    }\n\n    this.length = a.length;\n\n    return this._strip();\n  };\n\n  BN.prototype.ixor = function ixor (num) {\n    assert((this.negative | num.negative) === 0);\n    return this.iuxor(num);\n  };\n\n  // Xor `num` with `this`\n  BN.prototype.xor = function xor (num) {\n    if (this.length > num.length) return this.clone().ixor(num);\n    return num.clone().ixor(this);\n  };\n\n  BN.prototype.uxor = function uxor (num) {\n    if (this.length > num.length) return this.clone().iuxor(num);\n    return num.clone().iuxor(this);\n  };\n\n  // Not ``this`` with ``width`` bitwidth\n  BN.prototype.inotn = function inotn (width) {\n    assert(typeof width === 'number' && width >= 0);\n\n    var bytesNeeded = Math.ceil(width / 26) | 0;\n    var bitsLeft = width % 26;\n\n    // Extend the buffer with leading zeroes\n    this._expand(bytesNeeded);\n\n    if (bitsLeft > 0) {\n      bytesNeeded--;\n    }\n\n    // Handle complete words\n    for (var i = 0; i < bytesNeeded; i++) {\n      this.words[i] = ~this.words[i] & 0x3ffffff;\n    }\n\n    // Handle the residue\n    if (bitsLeft > 0) {\n      this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n    }\n\n    // And remove leading zeroes\n    return this._strip();\n  };\n\n  BN.prototype.notn = function notn (width) {\n    return this.clone().inotn(width);\n  };\n\n  // Set `bit` of `this`\n  BN.prototype.setn = function setn (bit, val) {\n    assert(typeof bit === 'number' && bit >= 0);\n\n    var off = (bit / 26) | 0;\n    var wbit = bit % 26;\n\n    this._expand(off + 1);\n\n    if (val) {\n      this.words[off] = this.words[off] | (1 << wbit);\n    } else {\n      this.words[off] = this.words[off] & ~(1 << wbit);\n    }\n\n    return this._strip();\n  };\n\n  // Add `num` to `this` in-place\n  BN.prototype.iadd = function iadd (num) {\n    var r;\n\n    // negative + positive\n    if (this.negative !== 0 && num.negative === 0) {\n      this.negative = 0;\n      r = this.isub(num);\n      this.negative ^= 1;\n      return this._normSign();\n\n    // positive + negative\n    } else if (this.negative === 0 && num.negative !== 0) {\n      num.negative = 0;\n      r = this.isub(num);\n      num.negative = 1;\n      return r._normSign();\n    }\n\n    // a.length > b.length\n    var a, b;\n    if (this.length > num.length) {\n      a = this;\n      b = num;\n    } else {\n      a = num;\n      b = this;\n    }\n\n    var carry = 0;\n    for (var i = 0; i < b.length; i++) {\n      r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n      this.words[i] = r & 0x3ffffff;\n      carry = r >>> 26;\n    }\n    for (; carry !== 0 && i < a.length; i++) {\n      r = (a.words[i] | 0) + carry;\n      this.words[i] = r & 0x3ffffff;\n      carry = r >>> 26;\n    }\n\n    this.length = a.length;\n    if (carry !== 0) {\n      this.words[this.length] = carry;\n      this.length++;\n    // Copy the rest of the words\n    } else if (a !== this) {\n      for (; i < a.length; i++) {\n        this.words[i] = a.words[i];\n      }\n    }\n\n    return this;\n  };\n\n  // Add `num` to `this`\n  BN.prototype.add = function add (num) {\n    var res;\n    if (num.negative !== 0 && this.negative === 0) {\n      num.negative = 0;\n      res = this.sub(num);\n      num.negative ^= 1;\n      return res;\n    } else if (num.negative === 0 && this.negative !== 0) {\n      this.negative = 0;\n      res = num.sub(this);\n      this.negative = 1;\n      return res;\n    }\n\n    if (this.length > num.length) return this.clone().iadd(num);\n\n    return num.clone().iadd(this);\n  };\n\n  // Subtract `num` from `this` in-place\n  BN.prototype.isub = function isub (num) {\n    // this - (-num) = this + num\n    if (num.negative !== 0) {\n      num.negative = 0;\n      var r = this.iadd(num);\n      num.negative = 1;\n      return r._normSign();\n\n    // -this - num = -(this + num)\n    } else if (this.negative !== 0) {\n      this.negative = 0;\n      this.iadd(num);\n      this.negative = 1;\n      return this._normSign();\n    }\n\n    // At this point both numbers are positive\n    var cmp = this.cmp(num);\n\n    // Optimization - zeroify\n    if (cmp === 0) {\n      this.negative = 0;\n      this.length = 1;\n      this.words[0] = 0;\n      return this;\n    }\n\n    // a > b\n    var a, b;\n    if (cmp > 0) {\n      a = this;\n      b = num;\n    } else {\n      a = num;\n      b = this;\n    }\n\n    var carry = 0;\n    for (var i = 0; i < b.length; i++) {\n      r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n      carry = r >> 26;\n      this.words[i] = r & 0x3ffffff;\n    }\n    for (; carry !== 0 && i < a.length; i++) {\n      r = (a.words[i] | 0) + carry;\n      carry = r >> 26;\n      this.words[i] = r & 0x3ffffff;\n    }\n\n    // Copy rest of the words\n    if (carry === 0 && i < a.length && a !== this) {\n      for (; i < a.length; i++) {\n        this.words[i] = a.words[i];\n      }\n    }\n\n    this.length = Math.max(this.length, i);\n\n    if (a !== this) {\n      this.negative = 1;\n    }\n\n    return this._strip();\n  };\n\n  // Subtract `num` from `this`\n  BN.prototype.sub = function sub (num) {\n    return this.clone().isub(num);\n  };\n\n  function smallMulTo (self, num, out) {\n    out.negative = num.negative ^ self.negative;\n    var len = (self.length + num.length) | 0;\n    out.length = len;\n    len = (len - 1) | 0;\n\n    // Peel one iteration (compiler can't do it, because of code complexity)\n    var a = self.words[0] | 0;\n    var b = num.words[0] | 0;\n    var r = a * b;\n\n    var lo = r & 0x3ffffff;\n    var carry = (r / 0x4000000) | 0;\n    out.words[0] = lo;\n\n    for (var k = 1; k < len; k++) {\n      // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n      // note that ncarry could be >= 0x3ffffff\n      var ncarry = carry >>> 26;\n      var rword = carry & 0x3ffffff;\n      var maxJ = Math.min(k, num.length - 1);\n      for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n        var i = (k - j) | 0;\n        a = self.words[i] | 0;\n        b = num.words[j] | 0;\n        r = a * b + rword;\n        ncarry += (r / 0x4000000) | 0;\n        rword = r & 0x3ffffff;\n      }\n      out.words[k] = rword | 0;\n      carry = ncarry | 0;\n    }\n    if (carry !== 0) {\n      out.words[k] = carry | 0;\n    } else {\n      out.length--;\n    }\n\n    return out._strip();\n  }\n\n  // TODO(indutny): it may be reasonable to omit it for users who don't need\n  // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n  // multiplication (like elliptic secp256k1).\n  var comb10MulTo = function comb10MulTo (self, num, out) {\n    var a = self.words;\n    var b = num.words;\n    var o = out.words;\n    var c = 0;\n    var lo;\n    var mid;\n    var hi;\n    var a0 = a[0] | 0;\n    var al0 = a0 & 0x1fff;\n    var ah0 = a0 >>> 13;\n    var a1 = a[1] | 0;\n    var al1 = a1 & 0x1fff;\n    var ah1 = a1 >>> 13;\n    var a2 = a[2] | 0;\n    var al2 = a2 & 0x1fff;\n    var ah2 = a2 >>> 13;\n    var a3 = a[3] | 0;\n    var al3 = a3 & 0x1fff;\n    var ah3 = a3 >>> 13;\n    var a4 = a[4] | 0;\n    var al4 = a4 & 0x1fff;\n    var ah4 = a4 >>> 13;\n    var a5 = a[5] | 0;\n    var al5 = a5 & 0x1fff;\n    var ah5 = a5 >>> 13;\n    var a6 = a[6] | 0;\n    var al6 = a6 & 0x1fff;\n    var ah6 = a6 >>> 13;\n    var a7 = a[7] | 0;\n    var al7 = a7 & 0x1fff;\n    var ah7 = a7 >>> 13;\n    var a8 = a[8] | 0;\n    var al8 = a8 & 0x1fff;\n    var ah8 = a8 >>> 13;\n    var a9 = a[9] | 0;\n    var al9 = a9 & 0x1fff;\n    var ah9 = a9 >>> 13;\n    var b0 = b[0] | 0;\n    var bl0 = b0 & 0x1fff;\n    var bh0 = b0 >>> 13;\n    var b1 = b[1] | 0;\n    var bl1 = b1 & 0x1fff;\n    var bh1 = b1 >>> 13;\n    var b2 = b[2] | 0;\n    var bl2 = b2 & 0x1fff;\n    var bh2 = b2 >>> 13;\n    var b3 = b[3] | 0;\n    var bl3 = b3 & 0x1fff;\n    var bh3 = b3 >>> 13;\n    var b4 = b[4] | 0;\n    var bl4 = b4 & 0x1fff;\n    var bh4 = b4 >>> 13;\n    var b5 = b[5] | 0;\n    var bl5 = b5 & 0x1fff;\n    var bh5 = b5 >>> 13;\n    var b6 = b[6] | 0;\n    var bl6 = b6 & 0x1fff;\n    var bh6 = b6 >>> 13;\n    var b7 = b[7] | 0;\n    var bl7 = b7 & 0x1fff;\n    var bh7 = b7 >>> 13;\n    var b8 = b[8] | 0;\n    var bl8 = b8 & 0x1fff;\n    var bh8 = b8 >>> 13;\n    var b9 = b[9] | 0;\n    var bl9 = b9 & 0x1fff;\n    var bh9 = b9 >>> 13;\n\n    out.negative = self.negative ^ num.negative;\n    out.length = 19;\n    /* k = 0 */\n    lo = Math.imul(al0, bl0);\n    mid = Math.imul(al0, bh0);\n    mid = (mid + Math.imul(ah0, bl0)) | 0;\n    hi = Math.imul(ah0, bh0);\n    var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n    w0 &= 0x3ffffff;\n    /* k = 1 */\n    lo = Math.imul(al1, bl0);\n    mid = Math.imul(al1, bh0);\n    mid = (mid + Math.imul(ah1, bl0)) | 0;\n    hi = Math.imul(ah1, bh0);\n    lo = (lo + Math.imul(al0, bl1)) | 0;\n    mid = (mid + Math.imul(al0, bh1)) | 0;\n    mid = (mid + Math.imul(ah0, bl1)) | 0;\n    hi = (hi + Math.imul(ah0, bh1)) | 0;\n    var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n    w1 &= 0x3ffffff;\n    /* k = 2 */\n    lo = Math.imul(al2, bl0);\n    mid = Math.imul(al2, bh0);\n    mid = (mid + Math.imul(ah2, bl0)) | 0;\n    hi = Math.imul(ah2, bh0);\n    lo = (lo + Math.imul(al1, bl1)) | 0;\n    mid = (mid + Math.imul(al1, bh1)) | 0;\n    mid = (mid + Math.imul(ah1, bl1)) | 0;\n    hi = (hi + Math.imul(ah1, bh1)) | 0;\n    lo = (lo + Math.imul(al0, bl2)) | 0;\n    mid = (mid + Math.imul(al0, bh2)) | 0;\n    mid = (mid + Math.imul(ah0, bl2)) | 0;\n    hi = (hi + Math.imul(ah0, bh2)) | 0;\n    var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n    w2 &= 0x3ffffff;\n    /* k = 3 */\n    lo = Math.imul(al3, bl0);\n    mid = Math.imul(al3, bh0);\n    mid = (mid + Math.imul(ah3, bl0)) | 0;\n    hi = Math.imul(ah3, bh0);\n    lo = (lo + Math.imul(al2, bl1)) | 0;\n    mid = (mid + Math.imul(al2, bh1)) | 0;\n    mid = (mid + Math.imul(ah2, bl1)) | 0;\n    hi = (hi + Math.imul(ah2, bh1)) | 0;\n    lo = (lo + Math.imul(al1, bl2)) | 0;\n    mid = (mid + Math.imul(al1, bh2)) | 0;\n    mid = (mid + Math.imul(ah1, bl2)) | 0;\n    hi = (hi + Math.imul(ah1, bh2)) | 0;\n    lo = (lo + Math.imul(al0, bl3)) | 0;\n    mid = (mid + Math.imul(al0, bh3)) | 0;\n    mid = (mid + Math.imul(ah0, bl3)) | 0;\n    hi = (hi + Math.imul(ah0, bh3)) | 0;\n    var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n    w3 &= 0x3ffffff;\n    /* k = 4 */\n    lo = Math.imul(al4, bl0);\n    mid = Math.imul(al4, bh0);\n    mid = (mid + Math.imul(ah4, bl0)) | 0;\n    hi = Math.imul(ah4, bh0);\n    lo = (lo + Math.imul(al3, bl1)) | 0;\n    mid = (mid + Math.imul(al3, bh1)) | 0;\n    mid = (mid + Math.imul(ah3, bl1)) | 0;\n    hi = (hi + Math.imul(ah3, bh1)) | 0;\n    lo = (lo + Math.imul(al2, bl2)) | 0;\n    mid = (mid + Math.imul(al2, bh2)) | 0;\n    mid = (mid + Math.imul(ah2, bl2)) | 0;\n    hi = (hi + Math.imul(ah2, bh2)) | 0;\n    lo = (lo + Math.imul(al1, bl3)) | 0;\n    mid = (mid + Math.imul(al1, bh3)) | 0;\n    mid = (mid + Math.imul(ah1, bl3)) | 0;\n    hi = (hi + Math.imul(ah1, bh3)) | 0;\n    lo = (lo + Math.imul(al0, bl4)) | 0;\n    mid = (mid + Math.imul(al0, bh4)) | 0;\n    mid = (mid + Math.imul(ah0, bl4)) | 0;\n    hi = (hi + Math.imul(ah0, bh4)) | 0;\n    var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n    w4 &= 0x3ffffff;\n    /* k = 5 */\n    lo = Math.imul(al5, bl0);\n    mid = Math.imul(al5, bh0);\n    mid = (mid + Math.imul(ah5, bl0)) | 0;\n    hi = Math.imul(ah5, bh0);\n    lo = (lo + Math.imul(al4, bl1)) | 0;\n    mid = (mid + Math.imul(al4, bh1)) | 0;\n    mid = (mid + Math.imul(ah4, bl1)) | 0;\n    hi = (hi + Math.imul(ah4, bh1)) | 0;\n    lo = (lo + Math.imul(al3, bl2)) | 0;\n    mid = (mid + Math.imul(al3, bh2)) | 0;\n    mid = (mid + Math.imul(ah3, bl2)) | 0;\n    hi = (hi + Math.imul(ah3, bh2)) | 0;\n    lo = (lo + Math.imul(al2, bl3)) | 0;\n    mid = (mid + Math.imul(al2, bh3)) | 0;\n    mid = (mid + Math.imul(ah2, bl3)) | 0;\n    hi = (hi + Math.imul(ah2, bh3)) | 0;\n    lo = (lo + Math.imul(al1, bl4)) | 0;\n    mid = (mid + Math.imul(al1, bh4)) | 0;\n    mid = (mid + Math.imul(ah1, bl4)) | 0;\n    hi = (hi + Math.imul(ah1, bh4)) | 0;\n    lo = (lo + Math.imul(al0, bl5)) | 0;\n    mid = (mid + Math.imul(al0, bh5)) | 0;\n    mid = (mid + Math.imul(ah0, bl5)) | 0;\n    hi = (hi + Math.imul(ah0, bh5)) | 0;\n    var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n    w5 &= 0x3ffffff;\n    /* k = 6 */\n    lo = Math.imul(al6, bl0);\n    mid = Math.imul(al6, bh0);\n    mid = (mid + Math.imul(ah6, bl0)) | 0;\n    hi = Math.imul(ah6, bh0);\n    lo = (lo + Math.imul(al5, bl1)) | 0;\n    mid = (mid + Math.imul(al5, bh1)) | 0;\n    mid = (mid + Math.imul(ah5, bl1)) | 0;\n    hi = (hi + Math.imul(ah5, bh1)) | 0;\n    lo = (lo + Math.imul(al4, bl2)) | 0;\n    mid = (mid + Math.imul(al4, bh2)) | 0;\n    mid = (mid + Math.imul(ah4, bl2)) | 0;\n    hi = (hi + Math.imul(ah4, bh2)) | 0;\n    lo = (lo + Math.imul(al3, bl3)) | 0;\n    mid = (mid + Math.imul(al3, bh3)) | 0;\n    mid = (mid + Math.imul(ah3, bl3)) | 0;\n    hi = (hi + Math.imul(ah3, bh3)) | 0;\n    lo = (lo + Math.imul(al2, bl4)) | 0;\n    mid = (mid + Math.imul(al2, bh4)) | 0;\n    mid = (mid + Math.imul(ah2, bl4)) | 0;\n    hi = (hi + Math.imul(ah2, bh4)) | 0;\n    lo = (lo + Math.imul(al1, bl5)) | 0;\n    mid = (mid + Math.imul(al1, bh5)) | 0;\n    mid = (mid + Math.imul(ah1, bl5)) | 0;\n    hi = (hi + Math.imul(ah1, bh5)) | 0;\n    lo = (lo + Math.imul(al0, bl6)) | 0;\n    mid = (mid + Math.imul(al0, bh6)) | 0;\n    mid = (mid + Math.imul(ah0, bl6)) | 0;\n    hi = (hi + Math.imul(ah0, bh6)) | 0;\n    var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n    w6 &= 0x3ffffff;\n    /* k = 7 */\n    lo = Math.imul(al7, bl0);\n    mid = Math.imul(al7, bh0);\n    mid = (mid + Math.imul(ah7, bl0)) | 0;\n    hi = Math.imul(ah7, bh0);\n    lo = (lo + Math.imul(al6, bl1)) | 0;\n    mid = (mid + Math.imul(al6, bh1)) | 0;\n    mid = (mid + Math.imul(ah6, bl1)) | 0;\n    hi = (hi + Math.imul(ah6, bh1)) | 0;\n    lo = (lo + Math.imul(al5, bl2)) | 0;\n    mid = (mid + Math.imul(al5, bh2)) | 0;\n    mid = (mid + Math.imul(ah5, bl2)) | 0;\n    hi = (hi + Math.imul(ah5, bh2)) | 0;\n    lo = (lo + Math.imul(al4, bl3)) | 0;\n    mid = (mid + Math.imul(al4, bh3)) | 0;\n    mid = (mid + Math.imul(ah4, bl3)) | 0;\n    hi = (hi + Math.imul(ah4, bh3)) | 0;\n    lo = (lo + Math.imul(al3, bl4)) | 0;\n    mid = (mid + Math.imul(al3, bh4)) | 0;\n    mid = (mid + Math.imul(ah3, bl4)) | 0;\n    hi = (hi + Math.imul(ah3, bh4)) | 0;\n    lo = (lo + Math.imul(al2, bl5)) | 0;\n    mid = (mid + Math.imul(al2, bh5)) | 0;\n    mid = (mid + Math.imul(ah2, bl5)) | 0;\n    hi = (hi + Math.imul(ah2, bh5)) | 0;\n    lo = (lo + Math.imul(al1, bl6)) | 0;\n    mid = (mid + Math.imul(al1, bh6)) | 0;\n    mid = (mid + Math.imul(ah1, bl6)) | 0;\n    hi = (hi + Math.imul(ah1, bh6)) | 0;\n    lo = (lo + Math.imul(al0, bl7)) | 0;\n    mid = (mid + Math.imul(al0, bh7)) | 0;\n    mid = (mid + Math.imul(ah0, bl7)) | 0;\n    hi = (hi + Math.imul(ah0, bh7)) | 0;\n    var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n    w7 &= 0x3ffffff;\n    /* k = 8 */\n    lo = Math.imul(al8, bl0);\n    mid = Math.imul(al8, bh0);\n    mid = (mid + Math.imul(ah8, bl0)) | 0;\n    hi = Math.imul(ah8, bh0);\n    lo = (lo + Math.imul(al7, bl1)) | 0;\n    mid = (mid + Math.imul(al7, bh1)) | 0;\n    mid = (mid + Math.imul(ah7, bl1)) | 0;\n    hi = (hi + Math.imul(ah7, bh1)) | 0;\n    lo = (lo + Math.imul(al6, bl2)) | 0;\n    mid = (mid + Math.imul(al6, bh2)) | 0;\n    mid = (mid + Math.imul(ah6, bl2)) | 0;\n    hi = (hi + Math.imul(ah6, bh2)) | 0;\n    lo = (lo + Math.imul(al5, bl3)) | 0;\n    mid = (mid + Math.imul(al5, bh3)) | 0;\n    mid = (mid + Math.imul(ah5, bl3)) | 0;\n    hi = (hi + Math.imul(ah5, bh3)) | 0;\n    lo = (lo + Math.imul(al4, bl4)) | 0;\n    mid = (mid + Math.imul(al4, bh4)) | 0;\n    mid = (mid + Math.imul(ah4, bl4)) | 0;\n    hi = (hi + Math.imul(ah4, bh4)) | 0;\n    lo = (lo + Math.imul(al3, bl5)) | 0;\n    mid = (mid + Math.imul(al3, bh5)) | 0;\n    mid = (mid + Math.imul(ah3, bl5)) | 0;\n    hi = (hi + Math.imul(ah3, bh5)) | 0;\n    lo = (lo + Math.imul(al2, bl6)) | 0;\n    mid = (mid + Math.imul(al2, bh6)) | 0;\n    mid = (mid + Math.imul(ah2, bl6)) | 0;\n    hi = (hi + Math.imul(ah2, bh6)) | 0;\n    lo = (lo + Math.imul(al1, bl7)) | 0;\n    mid = (mid + Math.imul(al1, bh7)) | 0;\n    mid = (mid + Math.imul(ah1, bl7)) | 0;\n    hi = (hi + Math.imul(ah1, bh7)) | 0;\n    lo = (lo + Math.imul(al0, bl8)) | 0;\n    mid = (mid + Math.imul(al0, bh8)) | 0;\n    mid = (mid + Math.imul(ah0, bl8)) | 0;\n    hi = (hi + Math.imul(ah0, bh8)) | 0;\n    var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n    w8 &= 0x3ffffff;\n    /* k = 9 */\n    lo = Math.imul(al9, bl0);\n    mid = Math.imul(al9, bh0);\n    mid = (mid + Math.imul(ah9, bl0)) | 0;\n    hi = Math.imul(ah9, bh0);\n    lo = (lo + Math.imul(al8, bl1)) | 0;\n    mid = (mid + Math.imul(al8, bh1)) | 0;\n    mid = (mid + Math.imul(ah8, bl1)) | 0;\n    hi = (hi + Math.imul(ah8, bh1)) | 0;\n    lo = (lo + Math.imul(al7, bl2)) | 0;\n    mid = (mid + Math.imul(al7, bh2)) | 0;\n    mid = (mid + Math.imul(ah7, bl2)) | 0;\n    hi = (hi + Math.imul(ah7, bh2)) | 0;\n    lo = (lo + Math.imul(al6, bl3)) | 0;\n    mid = (mid + Math.imul(al6, bh3)) | 0;\n    mid = (mid + Math.imul(ah6, bl3)) | 0;\n    hi = (hi + Math.imul(ah6, bh3)) | 0;\n    lo = (lo + Math.imul(al5, bl4)) | 0;\n    mid = (mid + Math.imul(al5, bh4)) | 0;\n    mid = (mid + Math.imul(ah5, bl4)) | 0;\n    hi = (hi + Math.imul(ah5, bh4)) | 0;\n    lo = (lo + Math.imul(al4, bl5)) | 0;\n    mid = (mid + Math.imul(al4, bh5)) | 0;\n    mid = (mid + Math.imul(ah4, bl5)) | 0;\n    hi = (hi + Math.imul(ah4, bh5)) | 0;\n    lo = (lo + Math.imul(al3, bl6)) | 0;\n    mid = (mid + Math.imul(al3, bh6)) | 0;\n    mid = (mid + Math.imul(ah3, bl6)) | 0;\n    hi = (hi + Math.imul(ah3, bh6)) | 0;\n    lo = (lo + Math.imul(al2, bl7)) | 0;\n    mid = (mid + Math.imul(al2, bh7)) | 0;\n    mid = (mid + Math.imul(ah2, bl7)) | 0;\n    hi = (hi + Math.imul(ah2, bh7)) | 0;\n    lo = (lo + Math.imul(al1, bl8)) | 0;\n    mid = (mid + Math.imul(al1, bh8)) | 0;\n    mid = (mid + Math.imul(ah1, bl8)) | 0;\n    hi = (hi + Math.imul(ah1, bh8)) | 0;\n    lo = (lo + Math.imul(al0, bl9)) | 0;\n    mid = (mid + Math.imul(al0, bh9)) | 0;\n    mid = (mid + Math.imul(ah0, bl9)) | 0;\n    hi = (hi + Math.imul(ah0, bh9)) | 0;\n    var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n    w9 &= 0x3ffffff;\n    /* k = 10 */\n    lo = Math.imul(al9, bl1);\n    mid = Math.imul(al9, bh1);\n    mid = (mid + Math.imul(ah9, bl1)) | 0;\n    hi = Math.imul(ah9, bh1);\n    lo = (lo + Math.imul(al8, bl2)) | 0;\n    mid = (mid + Math.imul(al8, bh2)) | 0;\n    mid = (mid + Math.imul(ah8, bl2)) | 0;\n    hi = (hi + Math.imul(ah8, bh2)) | 0;\n    lo = (lo + Math.imul(al7, bl3)) | 0;\n    mid = (mid + Math.imul(al7, bh3)) | 0;\n    mid = (mid + Math.imul(ah7, bl3)) | 0;\n    hi = (hi + Math.imul(ah7, bh3)) | 0;\n    lo = (lo + Math.imul(al6, bl4)) | 0;\n    mid = (mid + Math.imul(al6, bh4)) | 0;\n    mid = (mid + Math.imul(ah6, bl4)) | 0;\n    hi = (hi + Math.imul(ah6, bh4)) | 0;\n    lo = (lo + Math.imul(al5, bl5)) | 0;\n    mid = (mid + Math.imul(al5, bh5)) | 0;\n    mid = (mid + Math.imul(ah5, bl5)) | 0;\n    hi = (hi + Math.imul(ah5, bh5)) | 0;\n    lo = (lo + Math.imul(al4, bl6)) | 0;\n    mid = (mid + Math.imul(al4, bh6)) | 0;\n    mid = (mid + Math.imul(ah4, bl6)) | 0;\n    hi = (hi + Math.imul(ah4, bh6)) | 0;\n    lo = (lo + Math.imul(al3, bl7)) | 0;\n    mid = (mid + Math.imul(al3, bh7)) | 0;\n    mid = (mid + Math.imul(ah3, bl7)) | 0;\n    hi = (hi + Math.imul(ah3, bh7)) | 0;\n    lo = (lo + Math.imul(al2, bl8)) | 0;\n    mid = (mid + Math.imul(al2, bh8)) | 0;\n    mid = (mid + Math.imul(ah2, bl8)) | 0;\n    hi = (hi + Math.imul(ah2, bh8)) | 0;\n    lo = (lo + Math.imul(al1, bl9)) | 0;\n    mid = (mid + Math.imul(al1, bh9)) | 0;\n    mid = (mid + Math.imul(ah1, bl9)) | 0;\n    hi = (hi + Math.imul(ah1, bh9)) | 0;\n    var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n    w10 &= 0x3ffffff;\n    /* k = 11 */\n    lo = Math.imul(al9, bl2);\n    mid = Math.imul(al9, bh2);\n    mid = (mid + Math.imul(ah9, bl2)) | 0;\n    hi = Math.imul(ah9, bh2);\n    lo = (lo + Math.imul(al8, bl3)) | 0;\n    mid = (mid + Math.imul(al8, bh3)) | 0;\n    mid = (mid + Math.imul(ah8, bl3)) | 0;\n    hi = (hi + Math.imul(ah8, bh3)) | 0;\n    lo = (lo + Math.imul(al7, bl4)) | 0;\n    mid = (mid + Math.imul(al7, bh4)) | 0;\n    mid = (mid + Math.imul(ah7, bl4)) | 0;\n    hi = (hi + Math.imul(ah7, bh4)) | 0;\n    lo = (lo + Math.imul(al6, bl5)) | 0;\n    mid = (mid + Math.imul(al6, bh5)) | 0;\n    mid = (mid + Math.imul(ah6, bl5)) | 0;\n    hi = (hi + Math.imul(ah6, bh5)) | 0;\n    lo = (lo + Math.imul(al5, bl6)) | 0;\n    mid = (mid + Math.imul(al5, bh6)) | 0;\n    mid = (mid + Math.imul(ah5, bl6)) | 0;\n    hi = (hi + Math.imul(ah5, bh6)) | 0;\n    lo = (lo + Math.imul(al4, bl7)) | 0;\n    mid = (mid + Math.imul(al4, bh7)) | 0;\n    mid = (mid + Math.imul(ah4, bl7)) | 0;\n    hi = (hi + Math.imul(ah4, bh7)) | 0;\n    lo = (lo + Math.imul(al3, bl8)) | 0;\n    mid = (mid + Math.imul(al3, bh8)) | 0;\n    mid = (mid + Math.imul(ah3, bl8)) | 0;\n    hi = (hi + Math.imul(ah3, bh8)) | 0;\n    lo = (lo + Math.imul(al2, bl9)) | 0;\n    mid = (mid + Math.imul(al2, bh9)) | 0;\n    mid = (mid + Math.imul(ah2, bl9)) | 0;\n    hi = (hi + Math.imul(ah2, bh9)) | 0;\n    var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n    w11 &= 0x3ffffff;\n    /* k = 12 */\n    lo = Math.imul(al9, bl3);\n    mid = Math.imul(al9, bh3);\n    mid = (mid + Math.imul(ah9, bl3)) | 0;\n    hi = Math.imul(ah9, bh3);\n    lo = (lo + Math.imul(al8, bl4)) | 0;\n    mid = (mid + Math.imul(al8, bh4)) | 0;\n    mid = (mid + Math.imul(ah8, bl4)) | 0;\n    hi = (hi + Math.imul(ah8, bh4)) | 0;\n    lo = (lo + Math.imul(al7, bl5)) | 0;\n    mid = (mid + Math.imul(al7, bh5)) | 0;\n    mid = (mid + Math.imul(ah7, bl5)) | 0;\n    hi = (hi + Math.imul(ah7, bh5)) | 0;\n    lo = (lo + Math.imul(al6, bl6)) | 0;\n    mid = (mid + Math.imul(al6, bh6)) | 0;\n    mid = (mid + Math.imul(ah6, bl6)) | 0;\n    hi = (hi + Math.imul(ah6, bh6)) | 0;\n    lo = (lo + Math.imul(al5, bl7)) | 0;\n    mid = (mid + Math.imul(al5, bh7)) | 0;\n    mid = (mid + Math.imul(ah5, bl7)) | 0;\n    hi = (hi + Math.imul(ah5, bh7)) | 0;\n    lo = (lo + Math.imul(al4, bl8)) | 0;\n    mid = (mid + Math.imul(al4, bh8)) | 0;\n    mid = (mid + Math.imul(ah4, bl8)) | 0;\n    hi = (hi + Math.imul(ah4, bh8)) | 0;\n    lo = (lo + Math.imul(al3, bl9)) | 0;\n    mid = (mid + Math.imul(al3, bh9)) | 0;\n    mid = (mid + Math.imul(ah3, bl9)) | 0;\n    hi = (hi + Math.imul(ah3, bh9)) | 0;\n    var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n    w12 &= 0x3ffffff;\n    /* k = 13 */\n    lo = Math.imul(al9, bl4);\n    mid = Math.imul(al9, bh4);\n    mid = (mid + Math.imul(ah9, bl4)) | 0;\n    hi = Math.imul(ah9, bh4);\n    lo = (lo + Math.imul(al8, bl5)) | 0;\n    mid = (mid + Math.imul(al8, bh5)) | 0;\n    mid = (mid + Math.imul(ah8, bl5)) | 0;\n    hi = (hi + Math.imul(ah8, bh5)) | 0;\n    lo = (lo + Math.imul(al7, bl6)) | 0;\n    mid = (mid + Math.imul(al7, bh6)) | 0;\n    mid = (mid + Math.imul(ah7, bl6)) | 0;\n    hi = (hi + Math.imul(ah7, bh6)) | 0;\n    lo = (lo + Math.imul(al6, bl7)) | 0;\n    mid = (mid + Math.imul(al6, bh7)) | 0;\n    mid = (mid + Math.imul(ah6, bl7)) | 0;\n    hi = (hi + Math.imul(ah6, bh7)) | 0;\n    lo = (lo + Math.imul(al5, bl8)) | 0;\n    mid = (mid + Math.imul(al5, bh8)) | 0;\n    mid = (mid + Math.imul(ah5, bl8)) | 0;\n    hi = (hi + Math.imul(ah5, bh8)) | 0;\n    lo = (lo + Math.imul(al4, bl9)) | 0;\n    mid = (mid + Math.imul(al4, bh9)) | 0;\n    mid = (mid + Math.imul(ah4, bl9)) | 0;\n    hi = (hi + Math.imul(ah4, bh9)) | 0;\n    var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n    w13 &= 0x3ffffff;\n    /* k = 14 */\n    lo = Math.imul(al9, bl5);\n    mid = Math.imul(al9, bh5);\n    mid = (mid + Math.imul(ah9, bl5)) | 0;\n    hi = Math.imul(ah9, bh5);\n    lo = (lo + Math.imul(al8, bl6)) | 0;\n    mid = (mid + Math.imul(al8, bh6)) | 0;\n    mid = (mid + Math.imul(ah8, bl6)) | 0;\n    hi = (hi + Math.imul(ah8, bh6)) | 0;\n    lo = (lo + Math.imul(al7, bl7)) | 0;\n    mid = (mid + Math.imul(al7, bh7)) | 0;\n    mid = (mid + Math.imul(ah7, bl7)) | 0;\n    hi = (hi + Math.imul(ah7, bh7)) | 0;\n    lo = (lo + Math.imul(al6, bl8)) | 0;\n    mid = (mid + Math.imul(al6, bh8)) | 0;\n    mid = (mid + Math.imul(ah6, bl8)) | 0;\n    hi = (hi + Math.imul(ah6, bh8)) | 0;\n    lo = (lo + Math.imul(al5, bl9)) | 0;\n    mid = (mid + Math.imul(al5, bh9)) | 0;\n    mid = (mid + Math.imul(ah5, bl9)) | 0;\n    hi = (hi + Math.imul(ah5, bh9)) | 0;\n    var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n    w14 &= 0x3ffffff;\n    /* k = 15 */\n    lo = Math.imul(al9, bl6);\n    mid = Math.imul(al9, bh6);\n    mid = (mid + Math.imul(ah9, bl6)) | 0;\n    hi = Math.imul(ah9, bh6);\n    lo = (lo + Math.imul(al8, bl7)) | 0;\n    mid = (mid + Math.imul(al8, bh7)) | 0;\n    mid = (mid + Math.imul(ah8, bl7)) | 0;\n    hi = (hi + Math.imul(ah8, bh7)) | 0;\n    lo = (lo + Math.imul(al7, bl8)) | 0;\n    mid = (mid + Math.imul(al7, bh8)) | 0;\n    mid = (mid + Math.imul(ah7, bl8)) | 0;\n    hi = (hi + Math.imul(ah7, bh8)) | 0;\n    lo = (lo + Math.imul(al6, bl9)) | 0;\n    mid = (mid + Math.imul(al6, bh9)) | 0;\n    mid = (mid + Math.imul(ah6, bl9)) | 0;\n    hi = (hi + Math.imul(ah6, bh9)) | 0;\n    var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n    w15 &= 0x3ffffff;\n    /* k = 16 */\n    lo = Math.imul(al9, bl7);\n    mid = Math.imul(al9, bh7);\n    mid = (mid + Math.imul(ah9, bl7)) | 0;\n    hi = Math.imul(ah9, bh7);\n    lo = (lo + Math.imul(al8, bl8)) | 0;\n    mid = (mid + Math.imul(al8, bh8)) | 0;\n    mid = (mid + Math.imul(ah8, bl8)) | 0;\n    hi = (hi + Math.imul(ah8, bh8)) | 0;\n    lo = (lo + Math.imul(al7, bl9)) | 0;\n    mid = (mid + Math.imul(al7, bh9)) | 0;\n    mid = (mid + Math.imul(ah7, bl9)) | 0;\n    hi = (hi + Math.imul(ah7, bh9)) | 0;\n    var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n    w16 &= 0x3ffffff;\n    /* k = 17 */\n    lo = Math.imul(al9, bl8);\n    mid = Math.imul(al9, bh8);\n    mid = (mid + Math.imul(ah9, bl8)) | 0;\n    hi = Math.imul(ah9, bh8);\n    lo = (lo + Math.imul(al8, bl9)) | 0;\n    mid = (mid + Math.imul(al8, bh9)) | 0;\n    mid = (mid + Math.imul(ah8, bl9)) | 0;\n    hi = (hi + Math.imul(ah8, bh9)) | 0;\n    var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n    w17 &= 0x3ffffff;\n    /* k = 18 */\n    lo = Math.imul(al9, bl9);\n    mid = Math.imul(al9, bh9);\n    mid = (mid + Math.imul(ah9, bl9)) | 0;\n    hi = Math.imul(ah9, bh9);\n    var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n    w18 &= 0x3ffffff;\n    o[0] = w0;\n    o[1] = w1;\n    o[2] = w2;\n    o[3] = w3;\n    o[4] = w4;\n    o[5] = w5;\n    o[6] = w6;\n    o[7] = w7;\n    o[8] = w8;\n    o[9] = w9;\n    o[10] = w10;\n    o[11] = w11;\n    o[12] = w12;\n    o[13] = w13;\n    o[14] = w14;\n    o[15] = w15;\n    o[16] = w16;\n    o[17] = w17;\n    o[18] = w18;\n    if (c !== 0) {\n      o[19] = c;\n      out.length++;\n    }\n    return out;\n  };\n\n  // Polyfill comb\n  if (!Math.imul) {\n    comb10MulTo = smallMulTo;\n  }\n\n  function bigMulTo (self, num, out) {\n    out.negative = num.negative ^ self.negative;\n    out.length = self.length + num.length;\n\n    var carry = 0;\n    var hncarry = 0;\n    for (var k = 0; k < out.length - 1; k++) {\n      // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n      // note that ncarry could be >= 0x3ffffff\n      var ncarry = hncarry;\n      hncarry = 0;\n      var rword = carry & 0x3ffffff;\n      var maxJ = Math.min(k, num.length - 1);\n      for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n        var i = k - j;\n        var a = self.words[i] | 0;\n        var b = num.words[j] | 0;\n        var r = a * b;\n\n        var lo = r & 0x3ffffff;\n        ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n        lo = (lo + rword) | 0;\n        rword = lo & 0x3ffffff;\n        ncarry = (ncarry + (lo >>> 26)) | 0;\n\n        hncarry += ncarry >>> 26;\n        ncarry &= 0x3ffffff;\n      }\n      out.words[k] = rword;\n      carry = ncarry;\n      ncarry = hncarry;\n    }\n    if (carry !== 0) {\n      out.words[k] = carry;\n    } else {\n      out.length--;\n    }\n\n    return out._strip();\n  }\n\n  function jumboMulTo (self, num, out) {\n    // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n    // var fftm = new FFTM();\n    // return fftm.mulp(self, num, out);\n    return bigMulTo(self, num, out);\n  }\n\n  BN.prototype.mulTo = function mulTo (num, out) {\n    var res;\n    var len = this.length + num.length;\n    if (this.length === 10 && num.length === 10) {\n      res = comb10MulTo(this, num, out);\n    } else if (len < 63) {\n      res = smallMulTo(this, num, out);\n    } else if (len < 1024) {\n      res = bigMulTo(this, num, out);\n    } else {\n      res = jumboMulTo(this, num, out);\n    }\n\n    return res;\n  };\n\n  // Cooley-Tukey algorithm for FFT\n  // slightly revisited to rely on looping instead of recursion\n\n  function FFTM (x, y) {\n    this.x = x;\n    this.y = y;\n  }\n\n  FFTM.prototype.makeRBT = function makeRBT (N) {\n    var t = new Array(N);\n    var l = BN.prototype._countBits(N) - 1;\n    for (var i = 0; i < N; i++) {\n      t[i] = this.revBin(i, l, N);\n    }\n\n    return t;\n  };\n\n  // Returns binary-reversed representation of `x`\n  FFTM.prototype.revBin = function revBin (x, l, N) {\n    if (x === 0 || x === N - 1) return x;\n\n    var rb = 0;\n    for (var i = 0; i < l; i++) {\n      rb |= (x & 1) << (l - i - 1);\n      x >>= 1;\n    }\n\n    return rb;\n  };\n\n  // Performs \"tweedling\" phase, therefore 'emulating'\n  // behaviour of the recursive algorithm\n  FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n    for (var i = 0; i < N; i++) {\n      rtws[i] = rws[rbt[i]];\n      itws[i] = iws[rbt[i]];\n    }\n  };\n\n  FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n    this.permute(rbt, rws, iws, rtws, itws, N);\n\n    for (var s = 1; s < N; s <<= 1) {\n      var l = s << 1;\n\n      var rtwdf = Math.cos(2 * Math.PI / l);\n      var itwdf = Math.sin(2 * Math.PI / l);\n\n      for (var p = 0; p < N; p += l) {\n        var rtwdf_ = rtwdf;\n        var itwdf_ = itwdf;\n\n        for (var j = 0; j < s; j++) {\n          var re = rtws[p + j];\n          var ie = itws[p + j];\n\n          var ro = rtws[p + j + s];\n          var io = itws[p + j + s];\n\n          var rx = rtwdf_ * ro - itwdf_ * io;\n\n          io = rtwdf_ * io + itwdf_ * ro;\n          ro = rx;\n\n          rtws[p + j] = re + ro;\n          itws[p + j] = ie + io;\n\n          rtws[p + j + s] = re - ro;\n          itws[p + j + s] = ie - io;\n\n          /* jshint maxdepth : false */\n          if (j !== l) {\n            rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n            itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n            rtwdf_ = rx;\n          }\n        }\n      }\n    }\n  };\n\n  FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n    var N = Math.max(m, n) | 1;\n    var odd = N & 1;\n    var i = 0;\n    for (N = N / 2 | 0; N; N = N >>> 1) {\n      i++;\n    }\n\n    return 1 << i + 1 + odd;\n  };\n\n  FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n    if (N <= 1) return;\n\n    for (var i = 0; i < N / 2; i++) {\n      var t = rws[i];\n\n      rws[i] = rws[N - i - 1];\n      rws[N - i - 1] = t;\n\n      t = iws[i];\n\n      iws[i] = -iws[N - i - 1];\n      iws[N - i - 1] = -t;\n    }\n  };\n\n  FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n    var carry = 0;\n    for (var i = 0; i < N / 2; i++) {\n      var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n        Math.round(ws[2 * i] / N) +\n        carry;\n\n      ws[i] = w & 0x3ffffff;\n\n      if (w < 0x4000000) {\n        carry = 0;\n      } else {\n        carry = w / 0x4000000 | 0;\n      }\n    }\n\n    return ws;\n  };\n\n  FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n    var carry = 0;\n    for (var i = 0; i < len; i++) {\n      carry = carry + (ws[i] | 0);\n\n      rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n      rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n    }\n\n    // Pad with zeroes\n    for (i = 2 * len; i < N; ++i) {\n      rws[i] = 0;\n    }\n\n    assert(carry === 0);\n    assert((carry & ~0x1fff) === 0);\n  };\n\n  FFTM.prototype.stub = function stub (N) {\n    var ph = new Array(N);\n    for (var i = 0; i < N; i++) {\n      ph[i] = 0;\n    }\n\n    return ph;\n  };\n\n  FFTM.prototype.mulp = function mulp (x, y, out) {\n    var N = 2 * this.guessLen13b(x.length, y.length);\n\n    var rbt = this.makeRBT(N);\n\n    var _ = this.stub(N);\n\n    var rws = new Array(N);\n    var rwst = new Array(N);\n    var iwst = new Array(N);\n\n    var nrws = new Array(N);\n    var nrwst = new Array(N);\n    var niwst = new Array(N);\n\n    var rmws = out.words;\n    rmws.length = N;\n\n    this.convert13b(x.words, x.length, rws, N);\n    this.convert13b(y.words, y.length, nrws, N);\n\n    this.transform(rws, _, rwst, iwst, N, rbt);\n    this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n    for (var i = 0; i < N; i++) {\n      var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n      iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n      rwst[i] = rx;\n    }\n\n    this.conjugate(rwst, iwst, N);\n    this.transform(rwst, iwst, rmws, _, N, rbt);\n    this.conjugate(rmws, _, N);\n    this.normalize13b(rmws, N);\n\n    out.negative = x.negative ^ y.negative;\n    out.length = x.length + y.length;\n    return out._strip();\n  };\n\n  // Multiply `this` by `num`\n  BN.prototype.mul = function mul (num) {\n    var out = new BN(null);\n    out.words = new Array(this.length + num.length);\n    return this.mulTo(num, out);\n  };\n\n  // Multiply employing FFT\n  BN.prototype.mulf = function mulf (num) {\n    var out = new BN(null);\n    out.words = new Array(this.length + num.length);\n    return jumboMulTo(this, num, out);\n  };\n\n  // In-place Multiplication\n  BN.prototype.imul = function imul (num) {\n    return this.clone().mulTo(num, this);\n  };\n\n  BN.prototype.imuln = function imuln (num) {\n    var isNegNum = num < 0;\n    if (isNegNum) num = -num;\n\n    assert(typeof num === 'number');\n    assert(num < 0x4000000);\n\n    // Carry\n    var carry = 0;\n    for (var i = 0; i < this.length; i++) {\n      var w = (this.words[i] | 0) * num;\n      var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n      carry >>= 26;\n      carry += (w / 0x4000000) | 0;\n      // NOTE: lo is 27bit maximum\n      carry += lo >>> 26;\n      this.words[i] = lo & 0x3ffffff;\n    }\n\n    if (carry !== 0) {\n      this.words[i] = carry;\n      this.length++;\n    }\n\n    return isNegNum ? this.ineg() : this;\n  };\n\n  BN.prototype.muln = function muln (num) {\n    return this.clone().imuln(num);\n  };\n\n  // `this` * `this`\n  BN.prototype.sqr = function sqr () {\n    return this.mul(this);\n  };\n\n  // `this` * `this` in-place\n  BN.prototype.isqr = function isqr () {\n    return this.imul(this.clone());\n  };\n\n  // Math.pow(`this`, `num`)\n  BN.prototype.pow = function pow (num) {\n    var w = toBitArray(num);\n    if (w.length === 0) return new BN(1);\n\n    // Skip leading zeroes\n    var res = this;\n    for (var i = 0; i < w.length; i++, res = res.sqr()) {\n      if (w[i] !== 0) break;\n    }\n\n    if (++i < w.length) {\n      for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n        if (w[i] === 0) continue;\n\n        res = res.mul(q);\n      }\n    }\n\n    return res;\n  };\n\n  // Shift-left in-place\n  BN.prototype.iushln = function iushln (bits) {\n    assert(typeof bits === 'number' && bits >= 0);\n    var r = bits % 26;\n    var s = (bits - r) / 26;\n    var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n    var i;\n\n    if (r !== 0) {\n      var carry = 0;\n\n      for (i = 0; i < this.length; i++) {\n        var newCarry = this.words[i] & carryMask;\n        var c = ((this.words[i] | 0) - newCarry) << r;\n        this.words[i] = c | carry;\n        carry = newCarry >>> (26 - r);\n      }\n\n      if (carry) {\n        this.words[i] = carry;\n        this.length++;\n      }\n    }\n\n    if (s !== 0) {\n      for (i = this.length - 1; i >= 0; i--) {\n        this.words[i + s] = this.words[i];\n      }\n\n      for (i = 0; i < s; i++) {\n        this.words[i] = 0;\n      }\n\n      this.length += s;\n    }\n\n    return this._strip();\n  };\n\n  BN.prototype.ishln = function ishln (bits) {\n    // TODO(indutny): implement me\n    assert(this.negative === 0);\n    return this.iushln(bits);\n  };\n\n  // Shift-right in-place\n  // NOTE: `hint` is a lowest bit before trailing zeroes\n  // NOTE: if `extended` is present - it will be filled with destroyed bits\n  BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n    assert(typeof bits === 'number' && bits >= 0);\n    var h;\n    if (hint) {\n      h = (hint - (hint % 26)) / 26;\n    } else {\n      h = 0;\n    }\n\n    var r = bits % 26;\n    var s = Math.min((bits - r) / 26, this.length);\n    var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n    var maskedWords = extended;\n\n    h -= s;\n    h = Math.max(0, h);\n\n    // Extended mode, copy masked part\n    if (maskedWords) {\n      for (var i = 0; i < s; i++) {\n        maskedWords.words[i] = this.words[i];\n      }\n      maskedWords.length = s;\n    }\n\n    if (s === 0) {\n      // No-op, we should not move anything at all\n    } else if (this.length > s) {\n      this.length -= s;\n      for (i = 0; i < this.length; i++) {\n        this.words[i] = this.words[i + s];\n      }\n    } else {\n      this.words[0] = 0;\n      this.length = 1;\n    }\n\n    var carry = 0;\n    for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n      var word = this.words[i] | 0;\n      this.words[i] = (carry << (26 - r)) | (word >>> r);\n      carry = word & mask;\n    }\n\n    // Push carried bits as a mask\n    if (maskedWords && carry !== 0) {\n      maskedWords.words[maskedWords.length++] = carry;\n    }\n\n    if (this.length === 0) {\n      this.words[0] = 0;\n      this.length = 1;\n    }\n\n    return this._strip();\n  };\n\n  BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n    // TODO(indutny): implement me\n    assert(this.negative === 0);\n    return this.iushrn(bits, hint, extended);\n  };\n\n  // Shift-left\n  BN.prototype.shln = function shln (bits) {\n    return this.clone().ishln(bits);\n  };\n\n  BN.prototype.ushln = function ushln (bits) {\n    return this.clone().iushln(bits);\n  };\n\n  // Shift-right\n  BN.prototype.shrn = function shrn (bits) {\n    return this.clone().ishrn(bits);\n  };\n\n  BN.prototype.ushrn = function ushrn (bits) {\n    return this.clone().iushrn(bits);\n  };\n\n  // Test if n bit is set\n  BN.prototype.testn = function testn (bit) {\n    assert(typeof bit === 'number' && bit >= 0);\n    var r = bit % 26;\n    var s = (bit - r) / 26;\n    var q = 1 << r;\n\n    // Fast case: bit is much higher than all existing words\n    if (this.length <= s) return false;\n\n    // Check bit and return\n    var w = this.words[s];\n\n    return !!(w & q);\n  };\n\n  // Return only lowers bits of number (in-place)\n  BN.prototype.imaskn = function imaskn (bits) {\n    assert(typeof bits === 'number' && bits >= 0);\n    var r = bits % 26;\n    var s = (bits - r) / 26;\n\n    assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n    if (this.length <= s) {\n      return this;\n    }\n\n    if (r !== 0) {\n      s++;\n    }\n    this.length = Math.min(s, this.length);\n\n    if (r !== 0) {\n      var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n      this.words[this.length - 1] &= mask;\n    }\n\n    return this._strip();\n  };\n\n  // Return only lowers bits of number\n  BN.prototype.maskn = function maskn (bits) {\n    return this.clone().imaskn(bits);\n  };\n\n  // Add plain number `num` to `this`\n  BN.prototype.iaddn = function iaddn (num) {\n    assert(typeof num === 'number');\n    assert(num < 0x4000000);\n    if (num < 0) return this.isubn(-num);\n\n    // Possible sign change\n    if (this.negative !== 0) {\n      if (this.length === 1 && (this.words[0] | 0) <= num) {\n        this.words[0] = num - (this.words[0] | 0);\n        this.negative = 0;\n        return this;\n      }\n\n      this.negative = 0;\n      this.isubn(num);\n      this.negative = 1;\n      return this;\n    }\n\n    // Add without checks\n    return this._iaddn(num);\n  };\n\n  BN.prototype._iaddn = function _iaddn (num) {\n    this.words[0] += num;\n\n    // Carry\n    for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n      this.words[i] -= 0x4000000;\n      if (i === this.length - 1) {\n        this.words[i + 1] = 1;\n      } else {\n        this.words[i + 1]++;\n      }\n    }\n    this.length = Math.max(this.length, i + 1);\n\n    return this;\n  };\n\n  // Subtract plain number `num` from `this`\n  BN.prototype.isubn = function isubn (num) {\n    assert(typeof num === 'number');\n    assert(num < 0x4000000);\n    if (num < 0) return this.iaddn(-num);\n\n    if (this.negative !== 0) {\n      this.negative = 0;\n      this.iaddn(num);\n      this.negative = 1;\n      return this;\n    }\n\n    this.words[0] -= num;\n\n    if (this.length === 1 && this.words[0] < 0) {\n      this.words[0] = -this.words[0];\n      this.negative = 1;\n    } else {\n      // Carry\n      for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n        this.words[i] += 0x4000000;\n        this.words[i + 1] -= 1;\n      }\n    }\n\n    return this._strip();\n  };\n\n  BN.prototype.addn = function addn (num) {\n    return this.clone().iaddn(num);\n  };\n\n  BN.prototype.subn = function subn (num) {\n    return this.clone().isubn(num);\n  };\n\n  BN.prototype.iabs = function iabs () {\n    this.negative = 0;\n\n    return this;\n  };\n\n  BN.prototype.abs = function abs () {\n    return this.clone().iabs();\n  };\n\n  BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n    var len = num.length + shift;\n    var i;\n\n    this._expand(len);\n\n    var w;\n    var carry = 0;\n    for (i = 0; i < num.length; i++) {\n      w = (this.words[i + shift] | 0) + carry;\n      var right = (num.words[i] | 0) * mul;\n      w -= right & 0x3ffffff;\n      carry = (w >> 26) - ((right / 0x4000000) | 0);\n      this.words[i + shift] = w & 0x3ffffff;\n    }\n    for (; i < this.length - shift; i++) {\n      w = (this.words[i + shift] | 0) + carry;\n      carry = w >> 26;\n      this.words[i + shift] = w & 0x3ffffff;\n    }\n\n    if (carry === 0) return this._strip();\n\n    // Subtraction overflow\n    assert(carry === -1);\n    carry = 0;\n    for (i = 0; i < this.length; i++) {\n      w = -(this.words[i] | 0) + carry;\n      carry = w >> 26;\n      this.words[i] = w & 0x3ffffff;\n    }\n    this.negative = 1;\n\n    return this._strip();\n  };\n\n  BN.prototype._wordDiv = function _wordDiv (num, mode) {\n    var shift = this.length - num.length;\n\n    var a = this.clone();\n    var b = num;\n\n    // Normalize\n    var bhi = b.words[b.length - 1] | 0;\n    var bhiBits = this._countBits(bhi);\n    shift = 26 - bhiBits;\n    if (shift !== 0) {\n      b = b.ushln(shift);\n      a.iushln(shift);\n      bhi = b.words[b.length - 1] | 0;\n    }\n\n    // Initialize quotient\n    var m = a.length - b.length;\n    var q;\n\n    if (mode !== 'mod') {\n      q = new BN(null);\n      q.length = m + 1;\n      q.words = new Array(q.length);\n      for (var i = 0; i < q.length; i++) {\n        q.words[i] = 0;\n      }\n    }\n\n    var diff = a.clone()._ishlnsubmul(b, 1, m);\n    if (diff.negative === 0) {\n      a = diff;\n      if (q) {\n        q.words[m] = 1;\n      }\n    }\n\n    for (var j = m - 1; j >= 0; j--) {\n      var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n        (a.words[b.length + j - 1] | 0);\n\n      // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n      // (0x7ffffff)\n      qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n      a._ishlnsubmul(b, qj, j);\n      while (a.negative !== 0) {\n        qj--;\n        a.negative = 0;\n        a._ishlnsubmul(b, 1, j);\n        if (!a.isZero()) {\n          a.negative ^= 1;\n        }\n      }\n      if (q) {\n        q.words[j] = qj;\n      }\n    }\n    if (q) {\n      q._strip();\n    }\n    a._strip();\n\n    // Denormalize\n    if (mode !== 'div' && shift !== 0) {\n      a.iushrn(shift);\n    }\n\n    return {\n      div: q || null,\n      mod: a\n    };\n  };\n\n  // NOTE: 1) `mode` can be set to `mod` to request mod only,\n  //       to `div` to request div only, or be absent to\n  //       request both div & mod\n  //       2) `positive` is true if unsigned mod is requested\n  BN.prototype.divmod = function divmod (num, mode, positive) {\n    assert(!num.isZero());\n\n    if (this.isZero()) {\n      return {\n        div: new BN(0),\n        mod: new BN(0)\n      };\n    }\n\n    var div, mod, res;\n    if (this.negative !== 0 && num.negative === 0) {\n      res = this.neg().divmod(num, mode);\n\n      if (mode !== 'mod') {\n        div = res.div.neg();\n      }\n\n      if (mode !== 'div') {\n        mod = res.mod.neg();\n        if (positive && mod.negative !== 0) {\n          mod.iadd(num);\n        }\n      }\n\n      return {\n        div: div,\n        mod: mod\n      };\n    }\n\n    if (this.negative === 0 && num.negative !== 0) {\n      res = this.divmod(num.neg(), mode);\n\n      if (mode !== 'mod') {\n        div = res.div.neg();\n      }\n\n      return {\n        div: div,\n        mod: res.mod\n      };\n    }\n\n    if ((this.negative & num.negative) !== 0) {\n      res = this.neg().divmod(num.neg(), mode);\n\n      if (mode !== 'div') {\n        mod = res.mod.neg();\n        if (positive && mod.negative !== 0) {\n          mod.isub(num);\n        }\n      }\n\n      return {\n        div: res.div,\n        mod: mod\n      };\n    }\n\n    // Both numbers are positive at this point\n\n    // Strip both numbers to approximate shift value\n    if (num.length > this.length || this.cmp(num) < 0) {\n      return {\n        div: new BN(0),\n        mod: this\n      };\n    }\n\n    // Very short reduction\n    if (num.length === 1) {\n      if (mode === 'div') {\n        return {\n          div: this.divn(num.words[0]),\n          mod: null\n        };\n      }\n\n      if (mode === 'mod') {\n        return {\n          div: null,\n          mod: new BN(this.modrn(num.words[0]))\n        };\n      }\n\n      return {\n        div: this.divn(num.words[0]),\n        mod: new BN(this.modrn(num.words[0]))\n      };\n    }\n\n    return this._wordDiv(num, mode);\n  };\n\n  // Find `this` / `num`\n  BN.prototype.div = function div (num) {\n    return this.divmod(num, 'div', false).div;\n  };\n\n  // Find `this` % `num`\n  BN.prototype.mod = function mod (num) {\n    return this.divmod(num, 'mod', false).mod;\n  };\n\n  BN.prototype.umod = function umod (num) {\n    return this.divmod(num, 'mod', true).mod;\n  };\n\n  // Find Round(`this` / `num`)\n  BN.prototype.divRound = function divRound (num) {\n    var dm = this.divmod(num);\n\n    // Fast case - exact division\n    if (dm.mod.isZero()) return dm.div;\n\n    var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n    var half = num.ushrn(1);\n    var r2 = num.andln(1);\n    var cmp = mod.cmp(half);\n\n    // Round down\n    if (cmp < 0 || (r2 === 1 && cmp === 0)) return dm.div;\n\n    // Round up\n    return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n  };\n\n  BN.prototype.modrn = function modrn (num) {\n    var isNegNum = num < 0;\n    if (isNegNum) num = -num;\n\n    assert(num <= 0x3ffffff);\n    var p = (1 << 26) % num;\n\n    var acc = 0;\n    for (var i = this.length - 1; i >= 0; i--) {\n      acc = (p * acc + (this.words[i] | 0)) % num;\n    }\n\n    return isNegNum ? -acc : acc;\n  };\n\n  // WARNING: DEPRECATED\n  BN.prototype.modn = function modn (num) {\n    return this.modrn(num);\n  };\n\n  // In-place division by number\n  BN.prototype.idivn = function idivn (num) {\n    var isNegNum = num < 0;\n    if (isNegNum) num = -num;\n\n    assert(num <= 0x3ffffff);\n\n    var carry = 0;\n    for (var i = this.length - 1; i >= 0; i--) {\n      var w = (this.words[i] | 0) + carry * 0x4000000;\n      this.words[i] = (w / num) | 0;\n      carry = w % num;\n    }\n\n    this._strip();\n    return isNegNum ? this.ineg() : this;\n  };\n\n  BN.prototype.divn = function divn (num) {\n    return this.clone().idivn(num);\n  };\n\n  BN.prototype.egcd = function egcd (p) {\n    assert(p.negative === 0);\n    assert(!p.isZero());\n\n    var x = this;\n    var y = p.clone();\n\n    if (x.negative !== 0) {\n      x = x.umod(p);\n    } else {\n      x = x.clone();\n    }\n\n    // A * x + B * y = x\n    var A = new BN(1);\n    var B = new BN(0);\n\n    // C * x + D * y = y\n    var C = new BN(0);\n    var D = new BN(1);\n\n    var g = 0;\n\n    while (x.isEven() && y.isEven()) {\n      x.iushrn(1);\n      y.iushrn(1);\n      ++g;\n    }\n\n    var yp = y.clone();\n    var xp = x.clone();\n\n    while (!x.isZero()) {\n      for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n      if (i > 0) {\n        x.iushrn(i);\n        while (i-- > 0) {\n          if (A.isOdd() || B.isOdd()) {\n            A.iadd(yp);\n            B.isub(xp);\n          }\n\n          A.iushrn(1);\n          B.iushrn(1);\n        }\n      }\n\n      for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n      if (j > 0) {\n        y.iushrn(j);\n        while (j-- > 0) {\n          if (C.isOdd() || D.isOdd()) {\n            C.iadd(yp);\n            D.isub(xp);\n          }\n\n          C.iushrn(1);\n          D.iushrn(1);\n        }\n      }\n\n      if (x.cmp(y) >= 0) {\n        x.isub(y);\n        A.isub(C);\n        B.isub(D);\n      } else {\n        y.isub(x);\n        C.isub(A);\n        D.isub(B);\n      }\n    }\n\n    return {\n      a: C,\n      b: D,\n      gcd: y.iushln(g)\n    };\n  };\n\n  // This is reduced incarnation of the binary EEA\n  // above, designated to invert members of the\n  // _prime_ fields F(p) at a maximal speed\n  BN.prototype._invmp = function _invmp (p) {\n    assert(p.negative === 0);\n    assert(!p.isZero());\n\n    var a = this;\n    var b = p.clone();\n\n    if (a.negative !== 0) {\n      a = a.umod(p);\n    } else {\n      a = a.clone();\n    }\n\n    var x1 = new BN(1);\n    var x2 = new BN(0);\n\n    var delta = b.clone();\n\n    while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n      for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n      if (i > 0) {\n        a.iushrn(i);\n        while (i-- > 0) {\n          if (x1.isOdd()) {\n            x1.iadd(delta);\n          }\n\n          x1.iushrn(1);\n        }\n      }\n\n      for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n      if (j > 0) {\n        b.iushrn(j);\n        while (j-- > 0) {\n          if (x2.isOdd()) {\n            x2.iadd(delta);\n          }\n\n          x2.iushrn(1);\n        }\n      }\n\n      if (a.cmp(b) >= 0) {\n        a.isub(b);\n        x1.isub(x2);\n      } else {\n        b.isub(a);\n        x2.isub(x1);\n      }\n    }\n\n    var res;\n    if (a.cmpn(1) === 0) {\n      res = x1;\n    } else {\n      res = x2;\n    }\n\n    if (res.cmpn(0) < 0) {\n      res.iadd(p);\n    }\n\n    return res;\n  };\n\n  BN.prototype.gcd = function gcd (num) {\n    if (this.isZero()) return num.abs();\n    if (num.isZero()) return this.abs();\n\n    var a = this.clone();\n    var b = num.clone();\n    a.negative = 0;\n    b.negative = 0;\n\n    // Remove common factor of two\n    for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n      a.iushrn(1);\n      b.iushrn(1);\n    }\n\n    do {\n      while (a.isEven()) {\n        a.iushrn(1);\n      }\n      while (b.isEven()) {\n        b.iushrn(1);\n      }\n\n      var r = a.cmp(b);\n      if (r < 0) {\n        // Swap `a` and `b` to make `a` always bigger than `b`\n        var t = a;\n        a = b;\n        b = t;\n      } else if (r === 0 || b.cmpn(1) === 0) {\n        break;\n      }\n\n      a.isub(b);\n    } while (true);\n\n    return b.iushln(shift);\n  };\n\n  // Invert number in the field F(num)\n  BN.prototype.invm = function invm (num) {\n    return this.egcd(num).a.umod(num);\n  };\n\n  BN.prototype.isEven = function isEven () {\n    return (this.words[0] & 1) === 0;\n  };\n\n  BN.prototype.isOdd = function isOdd () {\n    return (this.words[0] & 1) === 1;\n  };\n\n  // And first word and num\n  BN.prototype.andln = function andln (num) {\n    return this.words[0] & num;\n  };\n\n  // Increment at the bit position in-line\n  BN.prototype.bincn = function bincn (bit) {\n    assert(typeof bit === 'number');\n    var r = bit % 26;\n    var s = (bit - r) / 26;\n    var q = 1 << r;\n\n    // Fast case: bit is much higher than all existing words\n    if (this.length <= s) {\n      this._expand(s + 1);\n      this.words[s] |= q;\n      return this;\n    }\n\n    // Add bit and propagate, if needed\n    var carry = q;\n    for (var i = s; carry !== 0 && i < this.length; i++) {\n      var w = this.words[i] | 0;\n      w += carry;\n      carry = w >>> 26;\n      w &= 0x3ffffff;\n      this.words[i] = w;\n    }\n    if (carry !== 0) {\n      this.words[i] = carry;\n      this.length++;\n    }\n    return this;\n  };\n\n  BN.prototype.isZero = function isZero () {\n    return this.length === 1 && this.words[0] === 0;\n  };\n\n  BN.prototype.cmpn = function cmpn (num) {\n    var negative = num < 0;\n\n    if (this.negative !== 0 && !negative) return -1;\n    if (this.negative === 0 && negative) return 1;\n\n    this._strip();\n\n    var res;\n    if (this.length > 1) {\n      res = 1;\n    } else {\n      if (negative) {\n        num = -num;\n      }\n\n      assert(num <= 0x3ffffff, 'Number is too big');\n\n      var w = this.words[0] | 0;\n      res = w === num ? 0 : w < num ? -1 : 1;\n    }\n    if (this.negative !== 0) return -res | 0;\n    return res;\n  };\n\n  // Compare two numbers and return:\n  // 1 - if `this` > `num`\n  // 0 - if `this` == `num`\n  // -1 - if `this` < `num`\n  BN.prototype.cmp = function cmp (num) {\n    if (this.negative !== 0 && num.negative === 0) return -1;\n    if (this.negative === 0 && num.negative !== 0) return 1;\n\n    var res = this.ucmp(num);\n    if (this.negative !== 0) return -res | 0;\n    return res;\n  };\n\n  // Unsigned comparison\n  BN.prototype.ucmp = function ucmp (num) {\n    // At this point both numbers have the same sign\n    if (this.length > num.length) return 1;\n    if (this.length < num.length) return -1;\n\n    var res = 0;\n    for (var i = this.length - 1; i >= 0; i--) {\n      var a = this.words[i] | 0;\n      var b = num.words[i] | 0;\n\n      if (a === b) continue;\n      if (a < b) {\n        res = -1;\n      } else if (a > b) {\n        res = 1;\n      }\n      break;\n    }\n    return res;\n  };\n\n  BN.prototype.gtn = function gtn (num) {\n    return this.cmpn(num) === 1;\n  };\n\n  BN.prototype.gt = function gt (num) {\n    return this.cmp(num) === 1;\n  };\n\n  BN.prototype.gten = function gten (num) {\n    return this.cmpn(num) >= 0;\n  };\n\n  BN.prototype.gte = function gte (num) {\n    return this.cmp(num) >= 0;\n  };\n\n  BN.prototype.ltn = function ltn (num) {\n    return this.cmpn(num) === -1;\n  };\n\n  BN.prototype.lt = function lt (num) {\n    return this.cmp(num) === -1;\n  };\n\n  BN.prototype.lten = function lten (num) {\n    return this.cmpn(num) <= 0;\n  };\n\n  BN.prototype.lte = function lte (num) {\n    return this.cmp(num) <= 0;\n  };\n\n  BN.prototype.eqn = function eqn (num) {\n    return this.cmpn(num) === 0;\n  };\n\n  BN.prototype.eq = function eq (num) {\n    return this.cmp(num) === 0;\n  };\n\n  //\n  // A reduce context, could be using montgomery or something better, depending\n  // on the `m` itself.\n  //\n  BN.red = function red (num) {\n    return new Red(num);\n  };\n\n  BN.prototype.toRed = function toRed (ctx) {\n    assert(!this.red, 'Already a number in reduction context');\n    assert(this.negative === 0, 'red works only with positives');\n    return ctx.convertTo(this)._forceRed(ctx);\n  };\n\n  BN.prototype.fromRed = function fromRed () {\n    assert(this.red, 'fromRed works only with numbers in reduction context');\n    return this.red.convertFrom(this);\n  };\n\n  BN.prototype._forceRed = function _forceRed (ctx) {\n    this.red = ctx;\n    return this;\n  };\n\n  BN.prototype.forceRed = function forceRed (ctx) {\n    assert(!this.red, 'Already a number in reduction context');\n    return this._forceRed(ctx);\n  };\n\n  BN.prototype.redAdd = function redAdd (num) {\n    assert(this.red, 'redAdd works only with red numbers');\n    return this.red.add(this, num);\n  };\n\n  BN.prototype.redIAdd = function redIAdd (num) {\n    assert(this.red, 'redIAdd works only with red numbers');\n    return this.red.iadd(this, num);\n  };\n\n  BN.prototype.redSub = function redSub (num) {\n    assert(this.red, 'redSub works only with red numbers');\n    return this.red.sub(this, num);\n  };\n\n  BN.prototype.redISub = function redISub (num) {\n    assert(this.red, 'redISub works only with red numbers');\n    return this.red.isub(this, num);\n  };\n\n  BN.prototype.redShl = function redShl (num) {\n    assert(this.red, 'redShl works only with red numbers');\n    return this.red.shl(this, num);\n  };\n\n  BN.prototype.redMul = function redMul (num) {\n    assert(this.red, 'redMul works only with red numbers');\n    this.red._verify2(this, num);\n    return this.red.mul(this, num);\n  };\n\n  BN.prototype.redIMul = function redIMul (num) {\n    assert(this.red, 'redMul works only with red numbers');\n    this.red._verify2(this, num);\n    return this.red.imul(this, num);\n  };\n\n  BN.prototype.redSqr = function redSqr () {\n    assert(this.red, 'redSqr works only with red numbers');\n    this.red._verify1(this);\n    return this.red.sqr(this);\n  };\n\n  BN.prototype.redISqr = function redISqr () {\n    assert(this.red, 'redISqr works only with red numbers');\n    this.red._verify1(this);\n    return this.red.isqr(this);\n  };\n\n  // Square root over p\n  BN.prototype.redSqrt = function redSqrt () {\n    assert(this.red, 'redSqrt works only with red numbers');\n    this.red._verify1(this);\n    return this.red.sqrt(this);\n  };\n\n  BN.prototype.redInvm = function redInvm () {\n    assert(this.red, 'redInvm works only with red numbers');\n    this.red._verify1(this);\n    return this.red.invm(this);\n  };\n\n  // Return negative clone of `this` % `red modulo`\n  BN.prototype.redNeg = function redNeg () {\n    assert(this.red, 'redNeg works only with red numbers');\n    this.red._verify1(this);\n    return this.red.neg(this);\n  };\n\n  BN.prototype.redPow = function redPow (num) {\n    assert(this.red && !num.red, 'redPow(normalNum)');\n    this.red._verify1(this);\n    return this.red.pow(this, num);\n  };\n\n  // Prime numbers with efficient reduction\n  var primes = {\n    k256: null,\n    p224: null,\n    p192: null,\n    p25519: null\n  };\n\n  // Pseudo-Mersenne prime\n  function MPrime (name, p) {\n    // P = 2 ^ N - K\n    this.name = name;\n    this.p = new BN(p, 16);\n    this.n = this.p.bitLength();\n    this.k = new BN(1).iushln(this.n).isub(this.p);\n\n    this.tmp = this._tmp();\n  }\n\n  MPrime.prototype._tmp = function _tmp () {\n    var tmp = new BN(null);\n    tmp.words = new Array(Math.ceil(this.n / 13));\n    return tmp;\n  };\n\n  MPrime.prototype.ireduce = function ireduce (num) {\n    // Assumes that `num` is less than `P^2`\n    // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n    var r = num;\n    var rlen;\n\n    do {\n      this.split(r, this.tmp);\n      r = this.imulK(r);\n      r = r.iadd(this.tmp);\n      rlen = r.bitLength();\n    } while (rlen > this.n);\n\n    var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n    if (cmp === 0) {\n      r.words[0] = 0;\n      r.length = 1;\n    } else if (cmp > 0) {\n      r.isub(this.p);\n    } else {\n      if (r.strip !== undefined) {\n        // r is a BN v4 instance\n        r.strip();\n      } else {\n        // r is a BN v5 instance\n        r._strip();\n      }\n    }\n\n    return r;\n  };\n\n  MPrime.prototype.split = function split (input, out) {\n    input.iushrn(this.n, 0, out);\n  };\n\n  MPrime.prototype.imulK = function imulK (num) {\n    return num.imul(this.k);\n  };\n\n  function K256 () {\n    MPrime.call(\n      this,\n      'k256',\n      'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n  }\n  inherits(K256, MPrime);\n\n  K256.prototype.split = function split (input, output) {\n    // 256 = 9 * 26 + 22\n    var mask = 0x3fffff;\n\n    var outLen = Math.min(input.length, 9);\n    for (var i = 0; i < outLen; i++) {\n      output.words[i] = input.words[i];\n    }\n    output.length = outLen;\n\n    if (input.length <= 9) {\n      input.words[0] = 0;\n      input.length = 1;\n      return;\n    }\n\n    // Shift by 9 limbs\n    var prev = input.words[9];\n    output.words[output.length++] = prev & mask;\n\n    for (i = 10; i < input.length; i++) {\n      var next = input.words[i] | 0;\n      input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n      prev = next;\n    }\n    prev >>>= 22;\n    input.words[i - 10] = prev;\n    if (prev === 0 && input.length > 10) {\n      input.length -= 10;\n    } else {\n      input.length -= 9;\n    }\n  };\n\n  K256.prototype.imulK = function imulK (num) {\n    // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n    num.words[num.length] = 0;\n    num.words[num.length + 1] = 0;\n    num.length += 2;\n\n    // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n    var lo = 0;\n    for (var i = 0; i < num.length; i++) {\n      var w = num.words[i] | 0;\n      lo += w * 0x3d1;\n      num.words[i] = lo & 0x3ffffff;\n      lo = w * 0x40 + ((lo / 0x4000000) | 0);\n    }\n\n    // Fast length reduction\n    if (num.words[num.length - 1] === 0) {\n      num.length--;\n      if (num.words[num.length - 1] === 0) {\n        num.length--;\n      }\n    }\n    return num;\n  };\n\n  function P224 () {\n    MPrime.call(\n      this,\n      'p224',\n      'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n  }\n  inherits(P224, MPrime);\n\n  function P192 () {\n    MPrime.call(\n      this,\n      'p192',\n      'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n  }\n  inherits(P192, MPrime);\n\n  function P25519 () {\n    // 2 ^ 255 - 19\n    MPrime.call(\n      this,\n      '25519',\n      '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n  }\n  inherits(P25519, MPrime);\n\n  P25519.prototype.imulK = function imulK (num) {\n    // K = 0x13\n    var carry = 0;\n    for (var i = 0; i < num.length; i++) {\n      var hi = (num.words[i] | 0) * 0x13 + carry;\n      var lo = hi & 0x3ffffff;\n      hi >>>= 26;\n\n      num.words[i] = lo;\n      carry = hi;\n    }\n    if (carry !== 0) {\n      num.words[num.length++] = carry;\n    }\n    return num;\n  };\n\n  // Exported mostly for testing purposes, use plain name instead\n  BN._prime = function prime (name) {\n    // Cached version of prime\n    if (primes[name]) return primes[name];\n\n    var prime;\n    if (name === 'k256') {\n      prime = new K256();\n    } else if (name === 'p224') {\n      prime = new P224();\n    } else if (name === 'p192') {\n      prime = new P192();\n    } else if (name === 'p25519') {\n      prime = new P25519();\n    } else {\n      throw new Error('Unknown prime ' + name);\n    }\n    primes[name] = prime;\n\n    return prime;\n  };\n\n  //\n  // Base reduction engine\n  //\n  function Red (m) {\n    if (typeof m === 'string') {\n      var prime = BN._prime(m);\n      this.m = prime.p;\n      this.prime = prime;\n    } else {\n      assert(m.gtn(1), 'modulus must be greater than 1');\n      this.m = m;\n      this.prime = null;\n    }\n  }\n\n  Red.prototype._verify1 = function _verify1 (a) {\n    assert(a.negative === 0, 'red works only with positives');\n    assert(a.red, 'red works only with red numbers');\n  };\n\n  Red.prototype._verify2 = function _verify2 (a, b) {\n    assert((a.negative | b.negative) === 0, 'red works only with positives');\n    assert(a.red && a.red === b.red,\n      'red works only with red numbers');\n  };\n\n  Red.prototype.imod = function imod (a) {\n    if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n\n    move(a, a.umod(this.m)._forceRed(this));\n    return a;\n  };\n\n  Red.prototype.neg = function neg (a) {\n    if (a.isZero()) {\n      return a.clone();\n    }\n\n    return this.m.sub(a)._forceRed(this);\n  };\n\n  Red.prototype.add = function add (a, b) {\n    this._verify2(a, b);\n\n    var res = a.add(b);\n    if (res.cmp(this.m) >= 0) {\n      res.isub(this.m);\n    }\n    return res._forceRed(this);\n  };\n\n  Red.prototype.iadd = function iadd (a, b) {\n    this._verify2(a, b);\n\n    var res = a.iadd(b);\n    if (res.cmp(this.m) >= 0) {\n      res.isub(this.m);\n    }\n    return res;\n  };\n\n  Red.prototype.sub = function sub (a, b) {\n    this._verify2(a, b);\n\n    var res = a.sub(b);\n    if (res.cmpn(0) < 0) {\n      res.iadd(this.m);\n    }\n    return res._forceRed(this);\n  };\n\n  Red.prototype.isub = function isub (a, b) {\n    this._verify2(a, b);\n\n    var res = a.isub(b);\n    if (res.cmpn(0) < 0) {\n      res.iadd(this.m);\n    }\n    return res;\n  };\n\n  Red.prototype.shl = function shl (a, num) {\n    this._verify1(a);\n    return this.imod(a.ushln(num));\n  };\n\n  Red.prototype.imul = function imul (a, b) {\n    this._verify2(a, b);\n    return this.imod(a.imul(b));\n  };\n\n  Red.prototype.mul = function mul (a, b) {\n    this._verify2(a, b);\n    return this.imod(a.mul(b));\n  };\n\n  Red.prototype.isqr = function isqr (a) {\n    return this.imul(a, a.clone());\n  };\n\n  Red.prototype.sqr = function sqr (a) {\n    return this.mul(a, a);\n  };\n\n  Red.prototype.sqrt = function sqrt (a) {\n    if (a.isZero()) return a.clone();\n\n    var mod3 = this.m.andln(3);\n    assert(mod3 % 2 === 1);\n\n    // Fast case\n    if (mod3 === 3) {\n      var pow = this.m.add(new BN(1)).iushrn(2);\n      return this.pow(a, pow);\n    }\n\n    // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n    //\n    // Find Q and S, that Q * 2 ^ S = (P - 1)\n    var q = this.m.subn(1);\n    var s = 0;\n    while (!q.isZero() && q.andln(1) === 0) {\n      s++;\n      q.iushrn(1);\n    }\n    assert(!q.isZero());\n\n    var one = new BN(1).toRed(this);\n    var nOne = one.redNeg();\n\n    // Find quadratic non-residue\n    // NOTE: Max is such because of generalized Riemann hypothesis.\n    var lpow = this.m.subn(1).iushrn(1);\n    var z = this.m.bitLength();\n    z = new BN(2 * z * z).toRed(this);\n\n    while (this.pow(z, lpow).cmp(nOne) !== 0) {\n      z.redIAdd(nOne);\n    }\n\n    var c = this.pow(z, q);\n    var r = this.pow(a, q.addn(1).iushrn(1));\n    var t = this.pow(a, q);\n    var m = s;\n    while (t.cmp(one) !== 0) {\n      var tmp = t;\n      for (var i = 0; tmp.cmp(one) !== 0; i++) {\n        tmp = tmp.redSqr();\n      }\n      assert(i < m);\n      var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n      r = r.redMul(b);\n      c = b.redSqr();\n      t = t.redMul(c);\n      m = i;\n    }\n\n    return r;\n  };\n\n  Red.prototype.invm = function invm (a) {\n    var inv = a._invmp(this.m);\n    if (inv.negative !== 0) {\n      inv.negative = 0;\n      return this.imod(inv).redNeg();\n    } else {\n      return this.imod(inv);\n    }\n  };\n\n  Red.prototype.pow = function pow (a, num) {\n    if (num.isZero()) return new BN(1).toRed(this);\n    if (num.cmpn(1) === 0) return a.clone();\n\n    var windowSize = 4;\n    var wnd = new Array(1 << windowSize);\n    wnd[0] = new BN(1).toRed(this);\n    wnd[1] = a;\n    for (var i = 2; i < wnd.length; i++) {\n      wnd[i] = this.mul(wnd[i - 1], a);\n    }\n\n    var res = wnd[0];\n    var current = 0;\n    var currentLen = 0;\n    var start = num.bitLength() % 26;\n    if (start === 0) {\n      start = 26;\n    }\n\n    for (i = num.length - 1; i >= 0; i--) {\n      var word = num.words[i];\n      for (var j = start - 1; j >= 0; j--) {\n        var bit = (word >> j) & 1;\n        if (res !== wnd[0]) {\n          res = this.sqr(res);\n        }\n\n        if (bit === 0 && current === 0) {\n          currentLen = 0;\n          continue;\n        }\n\n        current <<= 1;\n        current |= bit;\n        currentLen++;\n        if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n        res = this.mul(res, wnd[current]);\n        currentLen = 0;\n        current = 0;\n      }\n      start = 26;\n    }\n\n    return res;\n  };\n\n  Red.prototype.convertTo = function convertTo (num) {\n    var r = num.umod(this.m);\n\n    return r === num ? r.clone() : r;\n  };\n\n  Red.prototype.convertFrom = function convertFrom (num) {\n    var res = num.clone();\n    res.red = null;\n    return res;\n  };\n\n  //\n  // Montgomery method engine\n  //\n\n  BN.mont = function mont (num) {\n    return new Mont(num);\n  };\n\n  function Mont (m) {\n    Red.call(this, m);\n\n    this.shift = this.m.bitLength();\n    if (this.shift % 26 !== 0) {\n      this.shift += 26 - (this.shift % 26);\n    }\n\n    this.r = new BN(1).iushln(this.shift);\n    this.r2 = this.imod(this.r.sqr());\n    this.rinv = this.r._invmp(this.m);\n\n    this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n    this.minv = this.minv.umod(this.r);\n    this.minv = this.r.sub(this.minv);\n  }\n  inherits(Mont, Red);\n\n  Mont.prototype.convertTo = function convertTo (num) {\n    return this.imod(num.ushln(this.shift));\n  };\n\n  Mont.prototype.convertFrom = function convertFrom (num) {\n    var r = this.imod(num.mul(this.rinv));\n    r.red = null;\n    return r;\n  };\n\n  Mont.prototype.imul = function imul (a, b) {\n    if (a.isZero() || b.isZero()) {\n      a.words[0] = 0;\n      a.length = 1;\n      return a;\n    }\n\n    var t = a.imul(b);\n    var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n    var u = t.isub(c).iushrn(this.shift);\n    var res = u;\n\n    if (u.cmp(this.m) >= 0) {\n      res = u.isub(this.m);\n    } else if (u.cmpn(0) < 0) {\n      res = u.iadd(this.m);\n    }\n\n    return res._forceRed(this);\n  };\n\n  Mont.prototype.mul = function mul (a, b) {\n    if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n    var t = a.mul(b);\n    var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n    var u = t.isub(c).iushrn(this.shift);\n    var res = u;\n    if (u.cmp(this.m) >= 0) {\n      res = u.isub(this.m);\n    } else if (u.cmpn(0) < 0) {\n      res = u.iadd(this.m);\n    }\n\n    return res._forceRed(this);\n  };\n\n  Mont.prototype.invm = function invm (a) {\n    // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n    var res = this.imod(a._invmp(this.m).mul(this.r2));\n    return res._forceRed(this);\n  };\n})(typeof module === 'undefined' || module, this);\n","import {\n  ExtendedMessageRole,\n  SmartActionAiMessage,\n  SmartActionMessage,\n} from '@bitte-ai/types';\nimport {\n  CoreAssistantMessage,\n  CoreMessage,\n  CoreToolMessage,\n  Message,\n  ToolInvocation,\n  generateId,\n} from 'ai';\n\nexport const convertResponseMessages = (\n  messages: (CoreAssistantMessage | CoreToolMessage)[],\n  agentId?: string,\n): SmartActionMessage[] => {\n  return messages.map((message) => {\n    // Convert complex content to string if needed\n    const content =\n      typeof message.content === 'string'\n        ? message.content\n        : Array.isArray(message.content)\n          ? message.content\n              .map((part) =>\n                part.type === 'text' ? part.text : JSON.stringify(part),\n              )\n              .join('')\n          : JSON.stringify(message.content);\n\n    // Extract only the properties we need for SmartActionMessage\n    return {\n      id: generateId(),\n      agentId,\n      content,\n      role: message.role as ExtendedMessageRole,\n    };\n  });\n};\n\nexport const getAgentIdFromMessage = (message: any): string | undefined => {\n  const { annotations } = message;\n  const agentIdAnnotation = annotations?.[0];\n\n  if (agentIdAnnotation && typeof agentIdAnnotation === 'object') {\n    if (\n      'agentId' in agentIdAnnotation &&\n      typeof agentIdAnnotation.agentId === 'string'\n    ) {\n      return agentIdAnnotation.agentId;\n    }\n  }\n};\n\nfunction addToolMessageToChat({\n  toolMessage,\n  messages,\n}: {\n  toolMessage: CoreToolMessage | SmartActionMessage;\n  messages: Array<Message & { agentId?: string }>;\n}): Array<Message> {\n  return messages.map((message) => {\n    if (message.parts) {\n      return {\n        ...message,\n        parts: message.parts.map((part) => {\n          if (part.type === 'tool-invocation') {\n            // Handle core tool message content\n            const toolResult =\n              typeof toolMessage.content === 'string'\n                ? null\n                : Array.isArray(toolMessage.content)\n                  ? toolMessage.content.find(\n                      (tool) =>\n                        tool.toolCallId === part.toolInvocation.toolCallId,\n                    )\n                  : null;\n\n            if (toolResult) {\n              return {\n                ...part,\n                state: 'result',\n                result: toolResult.result,\n              };\n            }\n\n            return part;\n          }\n\n          return part;\n        }),\n        annotations: message.agentId\n          ? [{ agentId: message.agentId }]\n          : undefined,\n      };\n    }\n\n    return message;\n  });\n}\n\nexport function convertToUIMessages(\n  messages: Array<SmartActionMessage>,\n): Array<Message> {\n  return messages.reduce<Array<Message>>((chatMessages, message) => {\n    const annotations = message.agentId\n      ? [{ agentId: message.agentId }]\n      : undefined;\n\n    if (message.role === 'tool' || message.role === 'function') {\n      return addToolMessageToChat({\n        toolMessage: message,\n        messages: chatMessages,\n      });\n    }\n\n    let textContent = '';\n    const toolInvocations: Array<ToolInvocation> = [];\n\n    if (typeof message.content === 'string') {\n      textContent = message.content;\n    } else if (Array.isArray(message.content)) {\n      for (const content of message.content as any[]) {\n        if (content.type === 'text') {\n          textContent += content.text;\n        } else if (content.type === 'tool-call') {\n          toolInvocations.push({\n            state: 'call',\n            toolCallId: content.toolCallId,\n            toolName: content.toolName,\n            args: content.args,\n          });\n        }\n      }\n    }\n\n    const messageRoles = ['user', 'assistant', 'system', 'data'];\n    const validRole = messageRoles.includes(message.role)\n      ? message.role\n      : 'user';\n\n    chatMessages.push({\n      id: message.id || generateId(),\n      role: validRole,\n      content: textContent,\n      toolInvocations,\n      annotations,\n    });\n\n    return chatMessages;\n  }, []);\n}\n\n// Function to remove \".vercel.app\" from agentId\nexport const formatAgentId = (agentId: string) => {\n  return agentId.replace('.vercel.app', '');\n};\n","import { SmartActionChat } from '@bitte-ai/types';\n\nexport const fetchChatHistory = async (\n  id: string,\n  url: string,\n): Promise<SmartActionChat | null> => {\n  try {\n    const response = await fetch(`${url}?id=${id}`, {\n      method: 'GET',\n      headers: {\n        'Content-Type': 'application/json',\n      },\n    });\n\n    if (!response.ok) {\n      console.error('Failed to fetch chat history:', response.statusText);\n      return null;\n    }\n\n    const chat = await response.json();\n    return chat;\n  } catch (error) {\n    console.error('Error fetching chat history:', error);\n    return null;\n  }\n};\n","import type { AccountContextType, WalletOptions } from '@bitte-ai/types';\nimport { atom, useAtomValue, useSetAtom } from 'jotai';\n//@ts-ignore\nexport const accountStateAtom = atom<AccountContextType>({\n  wallet: undefined,\n  nearWalletId: undefined,\n  account: undefined,\n  accountId: null,\n  evmWallet: undefined,\n  evmAddress: undefined,\n  chainId: undefined,\n  suiWallet: undefined,\n  suiAddress: undefined,\n});\n\nexport function useAccount() {\n  return useAtomValue(accountStateAtom);\n}\n\nexport function useWalletState() {\n  const setAccountState = useSetAtom(accountStateAtom);\n\n  return async (wallet: WalletOptions = {}) => {\n    const { near, evm, sui } = wallet;\n\n    function updateWalletState() {\n      setAccountState({\n        wallet: near?.wallet,\n        account: near?.account,\n        nearWalletId: near?.nearWalletId || undefined,\n        accountId: near?.accountId || null,\n        evmWallet: evm,\n        evmAddress: evm?.address,\n        chainId: evm?.chainId,\n        suiWallet: sui?.wallet,\n        suiAddress: sui?.wallet?.address,\n      });\n    }\n\n    updateWalletState();\n\n    const noWalletConfigured =\n      !near?.account && !near?.wallet && !evm && !sui?.wallet;\n    if (noWalletConfigured) {\n      console.warn(\n        'No wallet or account configured - users will not be able to send transactions',\n      );\n    }\n  };\n}\n","import { useCallback, useEffect, useRef } from 'react';\nimport useSWR from 'swr';\n\ntype ScrollBehavior = 'auto' | 'smooth' | 'instant';\ntype ScrollFlag = ScrollBehavior | false;\n\nexport function useScrollToBottom() {\n  const containerRef = useRef<HTMLDivElement>(null);\n  const endRef = useRef<HTMLDivElement>(null);\n\n  const { data: isAtBottom = false, mutate: setIsAtBottom } = useSWR(\n    'messages:is-at-bottom',\n    null,\n    { fallbackData: false },\n  );\n\n  const { data: scrollBehavior = false, mutate: setScrollBehavior } =\n    useSWR<ScrollFlag>('messages:should-scroll', null, { fallbackData: false });\n\n  useEffect(() => {\n    if (scrollBehavior) {\n      endRef.current?.scrollIntoView({ behavior: scrollBehavior });\n      setScrollBehavior(false);\n    }\n  }, [setScrollBehavior, scrollBehavior]);\n\n  const scrollToBottom = useCallback(\n    (scrollBehavior: ScrollBehavior = 'smooth') => {\n      setScrollBehavior(scrollBehavior);\n    },\n    [setScrollBehavior],\n  );\n\n  function onViewportEnter() {\n    setIsAtBottom(true);\n  }\n\n  function onViewportLeave() {\n    setIsAtBottom(false);\n  }\n\n  return {\n    containerRef,\n    endRef,\n    isAtBottom,\n    scrollToBottom,\n    onViewportEnter,\n    onViewportLeave,\n  };\n}\n","import { useEffect, useState } from 'react';\nimport { useScrollToBottom } from './useScrollToBottom';\n\nexport function useMessages({\n  chatId,\n  status,\n  isAutoPrompt = false,\n}: {\n  chatId: string;\n  status: 'ready' | 'streaming' | 'submitted' | undefined;\n  isAutoPrompt?: boolean;\n}) {\n  const {\n    containerRef,\n    endRef,\n    isAtBottom,\n    scrollToBottom,\n    onViewportEnter,\n    onViewportLeave,\n  } = useScrollToBottom();\n\n  const [hasSentMessage, setHasSentMessage] = useState<boolean>(false);\n\n  // Scroll to bottom instantly when chat changes\n  useEffect(() => {\n    if (chatId) {\n      scrollToBottom('instant');\n      setHasSentMessage(false);\n    }\n  }, [chatId, scrollToBottom]);\n\n  // Track when user sends a message - now enabled for auto-prompts with throttled padding\n  useEffect(() => {\n    if (status === 'submitted') {\n      setHasSentMessage(true);\n    }\n  }, [status]);\n\n  return {\n    containerRef,\n    endRef,\n    isAtBottom,\n    scrollToBottom,\n    onViewportEnter,\n    onViewportLeave,\n    hasSentMessage,\n  };\n}\n","export const RPC_URL = 'https://rpc.mainnet.near.org';\n\nexport const OPEN_API_SPEC_PATH = '.well-known/ai-plugin.json';\n\nexport const PLUGINS_COLLECTION = 'ai-plugins';\nexport const ASSISTANTS_COLLECTION = 'ai-assistants';\nexport const TOOLS_COLLECTION = 'ai-tools';\nexport const API_KEYS_COLLECTION = 'ai-api-keys';\n\nexport const DEFAULT_MODEL = 'gpt-4o';\nexport const DEFAULT_ASSISTANT_ID = 'asst_9akhoUCRuq2fi36e1aSDVv4e';\nexport const DEFAULT_AGENT_ID = 'bitte-assistant';\nexport const DISCOVERY_ASSISTANT_ID = 'asst_5mlinuGadyp8PiI8203Uvh3C';\nexport const DISCOVERY_VECTOR_STORE_ID = 'vs_iv6JjMEYtBVnQ91MVqS0PwTs';\n\nexport const PLUGINS_OAI_VECTOR_STORE = 'oai-vector-store-ai-plugins';\nexport const ASSISTANTS_OAI_VECTOR_STORE = 'oai-vector-store-ai-assistants';\nexport const TOOLS_OAI_VECTOR_STORE = 'oai-vector-store-ai-tools';\n\nexport const defaultColors = {\n  generalBackground: '#18181A',\n  messageBackground: '#0A0A0A',\n  textColor: '#FAFAFA',\n  buttonColor: '#000000',\n  borderColor: '#334155',\n} as const;\n\nexport enum BittePrimitiveName {\n  TRANSFER_FT = 'transfer-ft',\n  GENERATE_TRANSACTION = 'generate-transaction',\n  SUBMIT_QUERY = 'submit-query',\n  GENERATE_IMAGE = 'generate-image',\n  CREATE_DROP = 'create-drop',\n  GET_SWAP_TRANSACTIONS = 'getSwapTransactions',\n  GET_TOKEN_METADATA = 'getTokenMetadata',\n  GENERATE_EVM_TX = 'generate-evm-tx',\n  RENDER_CHART = 'render-chart',\n  SIGN_MESSAGE = 'sign-message',\n  GENERATE_SUI_TX = 'generate-sui-tx',\n}\n\n// Define the AssistantsMode enum to match the type from @bitte-ai/types\nexport const AssistantsMode = {\n  DEFAULT: 'default',\n  DEBUG: 'debug',\n} as const;\n","import { BitteToolResult } from '@bitte-ai/types';\n\ninterface ToolCall<NAME extends string, ARGS> {\n  toolCallId: string;\n  toolName: NAME;\n  args: ARGS;\n}\n\ninterface LocalAgent {\n  spec: {\n    servers?: { url: string }[];\n    paths: Record<string, any>;\n  };\n}\n\ninterface LocalToolCallProps {\n  localAgent: LocalAgent;\n  toolCall: ToolCall<string, unknown>;\n  metadata?: Record<string, unknown>;\n}\n\nexport const executeLocalToolCall = async ({\n  localAgent,\n  toolCall,\n  metadata,\n}: LocalToolCallProps): Promise<BitteToolResult | undefined> => {\n  const baseUrl = localAgent.spec.servers?.[0]?.url;\n  if (!baseUrl) return undefined;\n\n  const { toolPath, httpMethod } = findToolPathAndMethod(\n    localAgent,\n    toolCall.toolName,\n  );\n\n  if (!toolPath || !httpMethod) {\n    console.error('Tool path or method not found for:', toolCall.toolName);\n    return undefined;\n  }\n\n  try {\n    const args = toolCall.args ? JSON.parse(JSON.stringify(toolCall.args)) : {};\n    const { url, remainingArgs } = buildUrlWithParams(baseUrl, toolPath, args);\n\n    const { options } = buildRequestOptions({\n      httpMethod,\n      remainingArgs,\n      metadata,\n    });\n\n    const finalUrl =\n      httpMethod === 'GET' ? handleQueryParams(url, remainingArgs) : url;\n\n    const response = await fetch(finalUrl, options);\n\n    if (!response.ok) {\n      throw new Error(\n        `HTTP error during tool execution: ${response.status} ${response.statusText}`,\n      );\n    }\n\n    const result = await parseResponse(response);\n\n    return {\n      data: {\n        result,\n      },\n    };\n  } catch (error) {\n    const errorMessage =\n      error instanceof Error ? error.message : 'Unknown error';\n    console.error('Error executing tool call:', errorMessage);\n    return {\n      error: errorMessage,\n    };\n  }\n};\n\nexport const findToolPathAndMethod = (\n  localAgent: LocalAgent,\n  toolName: string,\n): { toolPath?: string; httpMethod?: string } => {\n  let toolPath: string | undefined;\n  let httpMethod: string | undefined;\n\n  Object.entries(localAgent.spec.paths).forEach(\n    ([path, pathObj]: [string, any]) => {\n      Object.entries(pathObj).forEach(([method, methodObj]: [string, any]) => {\n        if (methodObj.operationId === toolName) {\n          toolPath = path;\n          httpMethod = method.toUpperCase();\n        }\n      });\n    },\n  );\n\n  return { toolPath, httpMethod };\n};\n\nexport const buildUrlWithParams = (\n  baseUrl: string,\n  toolPath: string,\n  args: any,\n): { url: string; remainingArgs: any } => {\n  let url = `${baseUrl}${toolPath}`;\n  const remainingArgs = { ...args };\n\n  url = url.replace(/\\{(\\w+)\\}/g, (_, key) => {\n    if (remainingArgs[key] === undefined) {\n      throw new Error(`Missing required path parameter: ${key}`);\n    }\n    const value = remainingArgs[key];\n    delete remainingArgs[key];\n    return encodeURIComponent(String(value));\n  });\n\n  return { url, remainingArgs };\n};\n\nexport const buildRequestOptions = ({\n  httpMethod,\n  remainingArgs,\n  metadata,\n}: {\n  httpMethod: string;\n  remainingArgs: any;\n  metadata?: Record<string, unknown>;\n}): { options: RequestInit } => {\n  const headers: HeadersInit = {\n    'Content-Type': 'application/json',\n    ...(metadata ? { 'mb-metadata': JSON.stringify(metadata) } : {}),\n  };\n\n  const fetchOptions: RequestInit = {\n    method: httpMethod,\n    headers,\n  };\n\n  if (httpMethod !== 'GET') {\n    fetchOptions.body = JSON.stringify(remainingArgs);\n  }\n\n  return { options: fetchOptions };\n};\n\nexport const handleQueryParams = (url: string, remainingArgs: any): string => {\n  if (Object.keys(remainingArgs).length === 0) return url;\n\n  const queryParams = new URLSearchParams();\n  Object.entries(remainingArgs)\n    .filter(([_, value]) => value != null)\n    .forEach(([key, value]) => queryParams.append(key, String(value)));\n\n  const queryString = queryParams.toString();\n  if (queryString) {\n    url += (url.includes('?') ? '&' : '?') + queryString;\n  }\n  return url;\n};\n\nexport const parseResponse = async (response: Response): Promise<any> => {\n  const contentType = response.headers.get('Content-Type') || '';\n  return contentType.includes('application/json')\n    ? response.json()\n    : contentType.includes('text')\n      ? response.text()\n      : response.blob();\n};\n","import { Cost } from '@bitte-ai/types';\nimport BN from 'bn.js/lib/bn.js';\nimport { type ClassValue, clsx } from 'clsx';\nimport { formatNearAmount } from 'near-api-js/lib/utils/format.js';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...inputs: ClassValue[]) {\n  return twMerge(clsx(inputs));\n}\n\nexport const formatName = (name: string, size?: number) => {\n  const nameSize = size ?? 19;\n\n  return name?.length > nameSize ? `${name.slice(0, size ?? 20)}...` : name;\n};\n\nexport function errorString(error: unknown): string {\n  if (error === undefined) {\n    return 'Undefined Error';\n  }\n  return error instanceof Error ? error.message : JSON.stringify(error);\n}\n\nexport function dynamicToFixed(value: number, maxDecimals = 6): string {\n  const minValue = Math.pow(10, -maxDecimals);\n  if (value === 0) {\n    return '0';\n  } else if (value < minValue) {\n    return `< ${minValue.toFixed(maxDecimals)}`;\n  } else if (value >= 1) {\n    // If the value is greater than or equal to 1, show up to 2 decimal places\n    return value.toFixed(2).replace(/\\.?0+$/, '');\n  } else {\n    // If the value is less than 1, find the first non-zero digit after the decimal\n    const decimalPlaces = Math.min(\n      Math.ceil(-Math.log10(value) + 1),\n      maxDecimals,\n    );\n    // Show decimal places up to the first non-zero digit, capped at maxDecimals\n    return value.toFixed(decimalPlaces).replace(/\\.?0+$/, '');\n  }\n}\n\nexport function shortenString(\n  input: string,\n  length: number,\n  url?: boolean,\n): string {\n  if (input?.length <= length * 2) {\n    return input;\n  }\n\n  if (url && input?.length) {\n    const urlParts = input?.split(/(https?:\\/\\/|\\/|\\?|&|=)/);\n    let currentLength = 0;\n    let result = '';\n\n    for (const part of urlParts) {\n      const partLength = part.length;\n      if (currentLength + partLength <= length) {\n        result += part;\n        currentLength += partLength;\n      } else {\n        const remaining = length - currentLength;\n        result += part.substring(0, remaining);\n        result += '...';\n        break;\n      }\n    }\n\n    return result;\n  } else {\n    const prefix = input?.slice(0, length);\n    const suffix = input?.slice(-length);\n\n    return `${prefix}...${suffix}`;\n  }\n}\n\n// Safely parse JSON or return the input as-is; if parsing fails, return the default value\nexport function safeJsonParse<T>(input: unknown, defaultValue: T): T {\n  try {\n    const parsed = typeof input === 'string' ? JSON.parse(input) : input;\n    return typeof parsed === typeof defaultValue ? (parsed as T) : defaultValue;\n  } catch (error) {\n    console.error('Failed to parse JSON:', error);\n    return defaultValue;\n  }\n}\n\nexport function removeTrailingZeros(value: string): string {\n  const formattedValue = Number(value).toFixed(8); // Set the desired precision\n\n  return formattedValue.replace(/\\.?0+$/, '');\n}\n\nexport const getNearblocksURL = (\n  accountId: string,\n  txnHash?: string,\n  address?: string,\n) => {\n  const isTestnet = accountId?.includes('testnet');\n  const prefix = isTestnet ? 'testnet.' : '';\n\n  return !!address\n    ? `https://${prefix}nearblocks.io/address/${address}`\n    : `https://${prefix}nearblocks.io/txns/${txnHash}`;\n};\n\nexport function formatCosts(\n  costs: Cost[] | null,\n  gasPrice: string,\n): { deposit: string; gas: string } {\n  if (costs && costs[0]) {\n    return {\n      gas: removeTrailingZeros(\n        formatNearAmount(costs[0].gas.mul(new BN(gasPrice)).toString(), 6),\n      ),\n      deposit: removeTrailingZeros(\n        formatNearAmount(costs[0].deposit.toString(), 3),\n      ),\n    };\n  }\n  return { gas: '0', deposit: '0' };\n}\n\nexport function shortenAddress(address?: string) {\n  if (!address) return '';\n  return `${address.slice(0, 6)}...${address.slice(-4)}`;\n}\n","import { useEffect, useState } from 'react';\n\ntype WindowSize = {\n  width?: number;\n  height?: number;\n};\n\nexport const useWindowSize = () => {\n  const [windowSize, setWindowSize] = useState<WindowSize>({\n    width: undefined,\n    height: undefined,\n  });\n  useEffect(() => {\n    function handleResize() {\n      setWindowSize({\n        width: window.innerWidth,\n        height: window.innerHeight,\n      });\n    }\n\n    window.addEventListener('resize', handleResize);\n\n    handleResize();\n\n    return () => window.removeEventListener('resize', handleResize);\n  }, []);\n  return windowSize;\n};\n","import React from 'react';\n\nexport const FacebookIcon: React.FC = () => {\n  return (\n    <svg\n      width={24}\n      height={24}\n      viewBox=\"0 0 24 24\"\n      fill=\"none\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      aria-labelledby=\"facebookIconTitle\"\n      role=\"img\"\n    >\n      <title id=\"facebookIconTitle\">Facebook</title>\n      <path\n        d=\"M20 12C20 7.6 16.4 4 12 4C7.6 4 4 7.6 4 12C4 16 6.9 19.3 10.7 19.9V14.3H8.7V12H10.7V10.2C10.7 8.2 11.9 7.1 13.7 7.1C14.6 7.1 15.5 7.3 15.5 7.3V9.3H14.5C13.5 9.3 13.2 9.9 13.2 10.5V12H15.4L15 14.3H13.1V20C17.1 19.4 20 16 20 12Z\"\n        fill=\"currentColor\"\n      />\n    </svg>\n  );\n};\n","import React from 'react';\n\nexport const TelegramIcon: React.FC = () => {\n  return (\n    <svg\n      width={24}\n      height={24}\n      viewBox=\"0 0 16 14\"\n      fill=\"currentColor\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      aria-labelledby=\"telegramIconTitle\"\n      role=\"img\"\n    >\n      <title id=\"telegramIconTitle\">Telegram</title>\n      <path d=\"M1.09992 5.7083C5.39487 3.83705 8.25885 2.60341 9.69185 2.00738C13.7834 0.30558 14.6335 0.00996026 15.1877 9.46359e-05C15.3095 -0.00194823 15.582 0.0282562 15.7586 0.171489C15.9076 0.292432 15.9486 0.455809 15.9683 0.570476C15.9879 0.685143 16.0123 0.946358 15.9929 1.15046C15.7712 3.48009 14.8118 9.13349 14.3237 11.7427C14.1172 12.8468 13.7105 13.217 13.3168 13.2532C12.4613 13.3319 11.8116 12.6878 10.9829 12.1446C9.68624 11.2946 8.95369 10.7654 7.69503 9.936C6.24042 8.97744 7.18338 8.4506 8.01236 7.58959C8.22931 7.36426 11.999 3.93546 12.0719 3.62441C12.0811 3.58551 12.0895 3.44051 12.0034 3.36394C11.9172 3.28737 11.7901 3.31355 11.6983 3.33438C11.5683 3.36389 9.4968 4.73307 5.48389 7.4419C4.89591 7.84565 4.36333 8.04237 3.88616 8.03207C3.36012 8.0207 2.34822 7.73463 1.59598 7.49011C0.673328 7.19019 -0.0599784 7.03162 0.00387615 6.52227C0.0371355 6.25697 0.402482 5.98564 1.09992 5.7083Z\" />\n    </svg>\n  );\n};\n","import React from 'react';\n\nexport const XIcon: React.FC = () => {\n  return (\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      shape-rendering=\"geometricPrecision\"\n      text-rendering=\"geometricPrecision\"\n      image-rendering=\"optimizeQuality\"\n      fill-rule=\"evenodd\"\n      clip-rule=\"evenodd\"\n      viewBox=\"0 0 512 462.799\"\n      width={24}\n      height={24}\n      fill=\"currentColor\"\n      aria-labelledby=\"xIconTitle\"\n      role=\"img\"\n    >\n      <title id=\"xIconTitle\">X</title>\n      <path\n        fill-rule=\"nonzero\"\n        d=\"M403.229 0h78.506L310.219 196.04 512 462.799H354.002L230.261 301.007 88.669 462.799h-78.56l183.455-209.683L0 0h161.999l111.856 147.88L403.229 0zm-27.556 415.805h43.505L138.363 44.527h-46.68l283.99 371.278z\"\n      />\n    </svg>\n  );\n};\n","import { Slot } from '@radix-ui/react-slot';\nimport { type VariantProps, cva } from 'class-variance-authority';\nimport * as React from 'react';\n\nimport { cn } from '../../lib/utils';\n\nconst buttonVariants = cva(\n  'bitte-inline-flex bitte-items-center bitte-justify-center bitte-gap-2 bitte-whitespace-nowrap bitte-rounded-md bitte-text-sm bitte-font-medium bitte-transition-colors focus-visible:bitte-outline-none focus-visible:bitte-ring-1 focus-visible:bitte-ring-ring disabled:bitte-pointer-events-none disabled:bitte-opacity-50 [&_svg]:bitte-pointer-events-none [&_svg]:bitte-size-4 [&_svg]:bitte-shrink-0',\n  {\n    variants: {\n      variant: {\n        default:\n          'bitte-bg-white bitte-text-black bitte-shadow hover:bitte-bg-opacity-80',\n        success:\n          'bitte-bg-[#4ADE8026] bitte-text-[#4ADE80] bitte-shadow-sm hover:bitte-bg-[#4ADE8026]/20',\n        destructive:\n          'bitte-bg-destructive bitte-text-destructive-foreground bitte-shadow-sm hover:bitte-bg-destructive/90',\n        outline:\n          'bitte-border bitte-border-input bitte-bg-transparent bitte-shadow-sm hover:bitte-bg-accent hover:bitte-text-accent-foreground',\n        secondary:\n          'bitte-bg-secondary bitte-text-secondary-foreground bitte-shadow-sm hover:bitte-bg-secondary/80',\n        ghost: 'hover:bitte-bg-accent hover:bitte-text-accent-foreground',\n        link: 'bitte-text-primary bitte-underline-offset-4 hover:bitte-underline',\n      },\n\n      size: {\n        default: 'bitte-h-9 bitte-px-4 bitte-py-2',\n        sm: 'bitte-h-8 bitte-rounded-md bitte-px-3 bitte-text-xs',\n        lg: 'bitte-h-10 bitte-rounded-md bitte-px-8',\n        icon: 'bitte-h-9 bitte-w-9',\n      },\n    },\n    defaultVariants: {\n      variant: 'default',\n      size: 'default',\n    },\n  },\n);\n\nexport interface ButtonProps\n  extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n    VariantProps<typeof buttonVariants> {\n  asChild?: boolean;\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n  ({ className, variant, size, asChild = false, ...props }, ref) => {\n    const Comp = asChild ? Slot : 'button';\n    return (\n      <Comp\n        className={cn(buttonVariants({ variant, size, className }))}\n        ref={ref}\n        {...props}\n      />\n    );\n  },\n);\nButton.displayName = 'Button';\n\nexport { Button, buttonVariants };\n","import * as DialogPrimitive from '@radix-ui/react-dialog';\nimport { X } from 'lucide-react';\nimport * as React from 'react';\n\nimport { cn } from '../../lib/utils';\n\nconst Dialog = DialogPrimitive.Root;\n\nconst DialogTrigger = DialogPrimitive.Trigger;\n\nconst DialogPortal = DialogPrimitive.Portal;\n\nconst DialogClose = DialogPrimitive.Close;\n\nconst DialogOverlay = React.forwardRef<\n  React.ElementRef<typeof DialogPrimitive.Overlay>,\n  React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n  <DialogPrimitive.Overlay\n    ref={ref}\n    className={cn(\n      'bitte-fixed bitte-inset-0 bitte-z-50 bitte-bg-black/80 bitte- data-[state=open]:bitte-animate-in data-[state=closed]:bitte-animate-out data-[state=closed]:bitte-fade-out-0 data-[state=open]:bitte-fade-in-0',\n      className,\n    )}\n    {...props}\n  />\n));\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName;\n\nconst DialogContent = React.forwardRef<\n  React.ElementRef<typeof DialogPrimitive.Content>,\n  React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n  <DialogPortal>\n    <DialogOverlay />\n    <DialogPrimitive.Content\n      ref={ref}\n      className={cn(\n        'bitte-fixed bitte-left-[50%] bitte-top-[50%] bitte-z-50 bitte-grid bitte-w-full bitte-max-w-lg bitte-translate-x-[-50%] bitte-translate-y-[-50%] bitte-gap-4 bitte-border bitte-bg-background bitte-p-6 bitte-shadow-lg bitte-duration-200 data-[state=open]:bitte-animate-in data-[state=closed]:bitte-animate-out data-[state=closed]:bitte-fade-out-0 data-[state=open]:bitte-fade-in-0 data-[state=closed]:bitte-zoom-out-95 data-[state=open]:bitte-zoom-in-95 data-[state=closed]:bitte-slide-out-to-left-1/2 data-[state=closed]:bitte-slide-out-to-top-[48%] data-[state=open]:bitte-slide-in-from-left-1/2 data-[state=open]:bitte-slide-in-from-top-[48%] sm:bitte-rounded-lg',\n        className,\n      )}\n      {...props}\n    >\n      {children}\n      <DialogPrimitive.Close className=\"bitte-absolute bitte-right-4 bitte-top-4 bitte-rounded-sm bitte-opacity-70 bitte-ring-offset-background bitte-transition-opacity hover:bitte-opacity-100 focus:bitte-outline-none focus:bitte-ring-2 focus:bitte-ring-ring focus:bitte-ring-offset-2 disabled:bitte-pointer-events-none data-[state=open]:bitte-bg-accent data-[state=open]:bitte-text-muted-foreground\">\n        <X className=\"bitte-h-4 bitte-w-4\" />\n        <span className=\"bitte-sr-only\">Close</span>\n      </DialogPrimitive.Close>\n    </DialogPrimitive.Content>\n  </DialogPortal>\n));\nDialogContent.displayName = DialogPrimitive.Content.displayName;\n\nconst DialogHeader = ({\n  className,\n  ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n  <div\n    className={cn(\n      'bitte-flex bitte-flex-col bitte-space-y-1.5 bitte-text-center sm:bitte-text-left',\n      className,\n    )}\n    {...props}\n  />\n);\nDialogHeader.displayName = 'DialogHeader';\n\nconst DialogFooter = ({\n  className,\n  ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n  <div\n    className={cn(\n      'bitte-flex bitte-flex-col-reverse sm:bitte-flex-row sm:bitte-justify-end sm:bitte-space-x-2',\n      className,\n    )}\n    {...props}\n  />\n);\nDialogFooter.displayName = 'DialogFooter';\n\nconst DialogTitle = React.forwardRef<\n  React.ElementRef<typeof DialogPrimitive.Title>,\n  React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n  <DialogPrimitive.Title\n    ref={ref}\n    className={cn(\n      'bitte-text-lg bitte-font-semibold bitte-leading-none bitte-tracking-tight',\n      className,\n    )}\n    {...props}\n  />\n));\nDialogTitle.displayName = DialogPrimitive.Title.displayName;\n\nconst DialogDescription = React.forwardRef<\n  React.ElementRef<typeof DialogPrimitive.Description>,\n  React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n  <DialogPrimitive.Description\n    ref={ref}\n    className={cn('bitte-text-sm bitte-text-muted-foreground', className)}\n    {...props}\n  />\n));\nDialogDescription.displayName = DialogPrimitive.Description.displayName;\n\nexport {\n  Dialog,\n  DialogPortal,\n  DialogOverlay,\n  DialogTrigger,\n  DialogClose,\n  DialogContent,\n  DialogHeader,\n  DialogFooter,\n  DialogTitle,\n  DialogDescription,\n};\n","import * as React from 'react';\nimport { Drawer as DrawerPrimitive } from 'vaul';\n\nimport { cn } from '../../lib/utils';\n\nconst Drawer = ({\n  shouldScaleBackground = true,\n  ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Root>) => (\n  <DrawerPrimitive.Root\n    shouldScaleBackground={shouldScaleBackground}\n    {...props}\n  />\n);\nDrawer.displayName = 'Drawer';\n\nconst DrawerTrigger = DrawerPrimitive.Trigger;\n\nconst DrawerPortal = DrawerPrimitive.Portal;\n\nconst DrawerClose = DrawerPrimitive.Close;\n\nconst DrawerOverlay = React.forwardRef<\n  React.ElementRef<typeof DrawerPrimitive.Overlay>,\n  React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n  <DrawerPrimitive.Overlay\n    ref={ref}\n    className={cn(\n      'bitte-fixed bitte-inset-0 bitte-z-50 bitte-bg-black/80',\n      className,\n    )}\n    {...props}\n  />\n));\nDrawerOverlay.displayName = DrawerPrimitive.Overlay.displayName;\n\nconst DrawerContent = React.forwardRef<\n  React.ElementRef<typeof DrawerPrimitive.Content>,\n  React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n  <DrawerPortal>\n    <DrawerOverlay />\n    <DrawerPrimitive.Content\n      ref={ref}\n      className={cn(\n        'bitte-fixed bitte-inset-x-0 bitte-bottom-0 bitte-z-50 bitte-mt-24 bitte-flex bitte-h-auto bitte-flex-col bitte-rounded-t-[10px] bitte-border bitte-bg-background',\n        className,\n      )}\n      {...props}\n    >\n      <div className=\"bitte-mx-auto bitte-mt-4 bitte-h-2 bitte-w-[100px] bitte-rounded-full bitte-bg-muted\" />\n      {children}\n    </DrawerPrimitive.Content>\n  </DrawerPortal>\n));\nDrawerContent.displayName = 'DrawerContent';\n\nconst DrawerHeader = ({\n  className,\n  ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n  <div\n    className={cn(\n      'bitte-grid bitte-gap-1.5 bitte-p-4 bitte-text-center sm:bitte-text-left',\n      className,\n    )}\n    {...props}\n  />\n);\nDrawerHeader.displayName = 'DrawerHeader';\n\nconst DrawerFooter = ({\n  className,\n  ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n  <div\n    className={cn(\n      'bitte-mt-auto bitte-flex bitte-flex-col bitte-gap-2 bitte-p-4',\n      className,\n    )}\n    {...props}\n  />\n);\nDrawerFooter.displayName = 'DrawerFooter';\n\nconst DrawerTitle = React.forwardRef<\n  React.ElementRef<typeof DrawerPrimitive.Title>,\n  React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Title>\n>(({ className, ...props }, ref) => (\n  <DrawerPrimitive.Title\n    ref={ref}\n    className={cn(\n      'bitte-text-lg bitte-font-semibold bitte-leading-none bitte-tracking-tight',\n      className,\n    )}\n    {...props}\n  />\n));\nDrawerTitle.displayName = DrawerPrimitive.Title.displayName;\n\nconst DrawerDescription = React.forwardRef<\n  React.ElementRef<typeof DrawerPrimitive.Description>,\n  React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Description>\n>(({ className, ...props }, ref) => (\n  <DrawerPrimitive.Description\n    ref={ref}\n    className={cn('bitte-text-sm bitte-text-muted-foreground', className)}\n    {...props}\n  />\n));\nDrawerDescription.displayName = DrawerPrimitive.Description.displayName;\n\nexport {\n  Drawer,\n  DrawerPortal,\n  DrawerOverlay,\n  DrawerTrigger,\n  DrawerClose,\n  DrawerContent,\n  DrawerHeader,\n  DrawerFooter,\n  DrawerTitle,\n  DrawerDescription,\n};\n","import * as React from 'react';\n\nimport { cn } from '../../lib/utils';\n\nconst Input = React.forwardRef<HTMLInputElement, React.ComponentProps<'input'>>(\n  ({ className, type, ...props }, ref) => {\n    return (\n      <input\n        type={type}\n        className={cn(\n          'bitte-flex bitte-h-9 bitte-w-full bitte-rounded-md bitte-border bitte-border-input bitte-bg-transparent bitte-px-3 bitte-py-1 bitte-text-base bitte-shadow-sm bitte-transition-colors file:bitte-border-0 file:bitte-bg-transparent file:bitte-text-sm file:bitte-font-medium file:bitte-text-foreground placeholder:bitte-text-muted-foreground focus-visible:bitte-outline-none focus-visible:bitte-ring-1 focus-visible:bitte-ring-ring disabled:bitte-cursor-not-allowed disabled:bitte-opacity-50 md:bitte-text-sm',\n          className,\n        )}\n        ref={ref}\n        {...props}\n      />\n    );\n  },\n);\nInput.displayName = 'Input';\n\nexport { Input };\n","import * as LabelPrimitive from '@radix-ui/react-label';\nimport { type VariantProps, cva } from 'class-variance-authority';\nimport * as React from 'react';\n\nimport { cn } from '../../lib/utils';\n\nconst labelVariants = cva(\n  'bitte-text-sm bitte-font-medium bitte-leading-none peer-disabled:bitte-cursor-not-allowed peer-disabled:bitte-opacity-70',\n);\n\nconst Label = React.forwardRef<\n  React.ElementRef<typeof LabelPrimitive.Root>,\n  React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root> &\n    VariantProps<typeof labelVariants>\n>(({ className, ...props }, ref) => (\n  <LabelPrimitive.Root\n    ref={ref}\n    className={cn(labelVariants(), className)}\n    {...props}\n  />\n));\nLabel.displayName = LabelPrimitive.Root.displayName;\n\nexport { Label };\n","'use client';\n\nimport { ShareIcon } from 'lucide-react';\nimport { useState } from 'react';\nimport { useWindowSize } from '../../hooks/useWindowSize';\nimport { FacebookIcon } from '../icons/FacebookIcon';\nimport { TelegramIcon } from '../icons/TelegramIcon';\nimport { XIcon } from '../icons/XIcon';\nimport { Button } from '../ui/button';\nimport {\n  Dialog,\n  DialogContent,\n  DialogDescription,\n  DialogHeader,\n  DialogTitle,\n  DialogTrigger,\n} from '../ui/dialog';\nimport { Drawer, DrawerContent, DrawerFooter } from '../ui/drawer';\nimport { Input } from '../ui/input';\nimport { Label } from '../ui/label';\n\nconst ShareModal: React.FC = () => {\n  const [open, setOpen] = useState<boolean>(false);\n  const [showLinkCopiedText, setShowLinkCopiedText] = useState<boolean>(false);\n\n  const { width } = useWindowSize();\n  const isMobile = !!width && width < 640;\n\n  const shareLink = window.location.href;\n  const shareText = 'Share Chat';\n  const title = 'Share Chat';\n  const subtitle = 'Anyone who has this link will be able to run this Chat.';\n\n  const social = {\n    twitter: `https://twitter.com/intent/tweet?url=${shareLink}&text=${shareText}`,\n    facebook: `https://www.facebook.com/sharer/sharer.php?u=${shareLink}`,\n    telegram: `https://telegram.me/share/url?url=${shareLink}&text=${shareText}`,\n  };\n\n  const trigger = (\n    <Button\n      variant=\"ghost\"\n      size=\"icon\"\n      className=\"bitte-bg-black bitte-border bitte-border-input\"\n    >\n      <ShareIcon className=\"bitte-size-4\" />\n    </Button>\n  );\n\n  const handleCopyLink = async () => {\n    const url = new URL(shareLink);\n\n    await navigator.clipboard.writeText(url.href);\n\n    setShowLinkCopiedText(true);\n    setTimeout(() => setShowLinkCopiedText(false), 3000);\n  };\n\n  const dialogTitleInfo = (\n    <>\n      <DialogTitle className=\"bitte-mb-2 bitte-text-[20px] bitte-font-semibold\">\n        {title}\n      </DialogTitle>\n      {subtitle && <p className=\"bitte-text-[14px]\">{subtitle}</p>}\n    </>\n  );\n\n  if (!isMobile) {\n    return (\n      <Dialog open={open} onOpenChange={setOpen}>\n        <DialogTrigger asChild>{trigger}</DialogTrigger>\n        <DialogContent className=\"sm:w-[400px] bitte-border-input\">\n          <DialogHeader>\n            <DialogTitle className=\"bitte-mb-2 bitte-text-center bitte-text-xl bitte-text-white\">\n              {title}\n            </DialogTitle>\n            <DialogDescription className=\"bitte-text-center bitte-text-white\">\n              {subtitle}\n            </DialogDescription>\n          </DialogHeader>\n          <div className=\"mt-4 grid w-full max-w-sm items-center gap-1.5\">\n            <Label htmlFor=\"smart-action-link\" className=\"bitte-text-white\">\n              Link\n            </Label>\n            <Input\n              id=\"smart-action-link\"\n              value={shareLink}\n              readOnly\n              className=\"bitte-text-white\"\n            />\n          </div>\n          <div className=\"bitte-flex bitte-items-center bitte-gap-4\">\n            <Button\n              className=\"bitte-w-full\"\n              variant=\"outline\"\n              onClick={() => window.open(social.twitter, '_blank')}\n            >\n              <XIcon />\n            </Button>\n            <Button\n              className=\"bitte-w-full\"\n              variant=\"outline\"\n              onClick={() => window.open(social.telegram, '_blank')}\n            >\n              <TelegramIcon />\n            </Button>\n            <Button\n              className=\"bitte-w-full\"\n              variant=\"outline\"\n              onClick={() => window.open(social.facebook, '_blank')}\n            >\n              <FacebookIcon />\n            </Button>\n          </div>\n          <div>\n            <Button className=\"bitte-w-full\" onClick={handleCopyLink}>\n              {showLinkCopiedText ? 'Copied' : 'Copy Link'}\n            </Button>\n          </div>\n        </DialogContent>\n      </Dialog>\n    );\n  }\n\n  return (\n    <Drawer open={open} onOpenChange={setOpen}>\n      <DialogTrigger asChild>{trigger}</DialogTrigger>\n      <DrawerContent className=\"bitte-flex bitte-gap-4 bitte-px-2 bitte-border-input\">\n        <div className=\"bitte-text-center bitte-text-white\">\n          {dialogTitleInfo}\n        </div>\n        <div className=\"bitte-mt-4 bitte-grid bitte-w-full bitte-items-center bitte-gap-1.5\">\n          <Label htmlFor=\"smart-action-link\" className=\"bitte-text-white\">\n            Link\n          </Label>\n          <Input\n            id=\"smart-action-link\"\n            value={shareLink}\n            readOnly\n            className=\"bitte-text-white\"\n          />\n        </div>\n        <div className=\"bitte-flex bitte-items-center bitte-gap-4\">\n          <Button\n            className=\"bitte-w-full\"\n            variant=\"outline\"\n            onClick={() => window.open(social.twitter, '_blank')}\n          >\n            <XIcon />\n          </Button>\n          <Button\n            className=\"bitte-w-full\"\n            variant=\"outline\"\n            onClick={() => window.open(social.telegram, '_blank')}\n          >\n            <TelegramIcon />\n          </Button>\n          <Button\n            className=\"bitte-w-full\"\n            variant=\"outline\"\n            onClick={() => window.open(social.facebook, '_blank')}\n          >\n            <FacebookIcon />\n          </Button>\n        </div>\n        <DrawerFooter className=\"bitte-gap-4 bitte-border-t bitte-border-input bitte-p-4\">\n          <div>\n            <Button className=\"bitte-w-full\" onClick={handleCopyLink}>\n              {showLinkCopiedText ? 'Copied' : 'Copy Link'}\n            </Button>\n          </div>\n        </DrawerFooter>\n      </DrawerContent>\n    </Drawer>\n  );\n};\n\nexport default ShareModal;\n","import { Message } from '@ai-sdk/react';\nimport React from 'react';\nimport ShareModal from './ShareModal';\n\ninterface ChatActionsProps {\n  messages: Message[];\n  isWidgetChat: boolean;\n}\n\nexport const ChatActions: React.FC<ChatActionsProps> = ({\n  messages,\n  isWidgetChat,\n}) => {\n  if (isWidgetChat || !messages?.length) {\n    return null;\n  }\n\n  return (\n    <div className=\"bitte-absolute bitte-right-6 bitte-top-6 bitte-z-50\">\n      <ShareModal />\n    </div>\n  );\n};\n","import type { ChatContainerComponentProps } from '@bitte-ai/types';\n\nconst DefaultChatContainer = ({\n  children,\n  style,\n}: ChatContainerComponentProps) => (\n  <div\n    className=\"bitte-chat-main bitte-text-start bitte-flex-1 bitte-relative bitte-min-h-[360px] bitte-w-full bitte-overflow-hidden lg:bitte-rounded-md bitte-border-t bitte-border-b lg:bitte-border bitte-pl-6\"\n    style={{\n      backgroundColor: style?.backgroundColor,\n      borderColor: style?.borderColor,\n    }}\n  >\n    {children}\n  </div>\n);\n\nexport default DefaultChatContainer;\n","import React from 'react';\nimport { cn } from '../../lib/utils';\nimport DefaultChatContainer from './default-components/DefaultChatContainer';\n\ninterface ChatContainerProps {\n  isWidgetChat: boolean;\n  generalBackground?: string;\n  borderColor?: string;\n  agentId?: string;\n  customChatContainer?: React.ComponentType<any>;\n  scrollToBottomButton?: React.ReactNode;\n  shareModal?: React.ReactNode;\n  messagesArea?: React.ReactNode;\n  inputArea?: React.ReactNode;\n}\n\nexport const ChatContainer: React.FC<ChatContainerProps> = ({\n  isWidgetChat,\n  generalBackground,\n  borderColor,\n  agentId,\n  customChatContainer: CustomChatContainer = DefaultChatContainer,\n  scrollToBottomButton,\n  shareModal,\n  messagesArea,\n  inputArea,\n}) => {\n  const widgetContainerClasses = cn(\n    'bitte-relative bitte-w-full bitte-h-full bitte-flex bitte-flex-col bitte-gap-4',\n    'bitte-bg-mb-gray-150',\n  );\n\n  const chatMainClasses = cn(\n    'bitte-chat-main bitte-text-start bitte-flex-1 bitte-relative',\n    'bitte-min-h-[360px] bitte-w-full bitte-overflow-hidden bitte-pl-6',\n  );\n\n  const scrollableAreaClasses = cn(\n    'bitte-absolute bitte-inset-0 bitte-flex bitte-h-full bitte-w-full',\n    'bitte-justify-center bitte-overflow-y-auto bitte-overflow-x-hidden',\n    'bitte-p-4 bitte-bg-mb-gray-250',\n  );\n\n  const messagesContainerClasses = cn(\n    'bitte-mx-4 bitte-flex bitte-w-full bitte-flex-col bitte-gap-6',\n    !!agentId ? 'bitte-h-[calc(100%-240px)]' : 'bitte-h-[calc(100%-208px)]',\n  );\n\n  if (isWidgetChat && messagesArea && inputArea) {\n    return (\n      <div className={widgetContainerClasses}>\n        <div className={chatMainClasses}>\n          {scrollToBottomButton}\n          <div className={scrollableAreaClasses}>\n            <div className={messagesContainerClasses}>{messagesArea}</div>\n          </div>\n        </div>\n        {inputArea}\n      </div>\n    );\n  }\n\n  // Original logic for standard chat or fallback\n  const chatContainerClass = isWidgetChat\n    ? widgetContainerClasses\n    : cn(\n        'bitte-relative bitte-w-full bitte-custom-scrollbar bitte-h-full',\n        'bitte-flex bitte-flex-col bitte-gap-4',\n      );\n\n  const standardScrollableClasses = cn(\n    'bitte-absolute bitte-inset-0 bitte-flex bitte-h-full bitte-w-full',\n    'bitte-justify-center bitte-overflow-y-auto bitte-overflow-x-hidden bitte-p-4',\n  );\n\n  const standardMessagesClasses = cn(\n    'bitte-mx-auto bitte-flex bitte-w-full bitte-flex-col bitte-gap-6',\n    'md:bitte-mx-24 2xl:bitte-mx-40',\n    !!agentId ? 'bitte-h-[calc(100%-240px)]' : 'bitte-h-[calc(100%-208px)]',\n  );\n\n  const containerContent = isWidgetChat ? (\n    <div className={chatMainClasses}>\n      {scrollToBottomButton}\n      <div className={scrollableAreaClasses}>\n        <div className={messagesContainerClasses}>{messagesArea}</div>\n      </div>\n    </div>\n  ) : (\n    <CustomChatContainer\n      style={{\n        backgroundColor: generalBackground,\n        borderColor: borderColor,\n      }}\n    >\n      {scrollToBottomButton}\n      {shareModal}\n      <div className={standardScrollableClasses}>\n        <div className={standardMessagesClasses}>{messagesArea}</div>\n      </div>\n    </CustomChatContainer>\n  );\n\n  return (\n    <div className={chatContainerClass}>\n      {containerContent} {inputArea}\n    </div>\n  );\n};\n","import * as React from 'react';\n\nimport { cn } from '../../lib/utils';\n\nconst Textarea = React.forwardRef<\n  HTMLTextAreaElement,\n  React.ComponentProps<'textarea'>\n>(({ className, style, ...props }, ref) => {\n  return (\n    <textarea\n      className={cn(\n        'bitte-flex bitte-w-full bitte-rounded-md bitte-border bitte-border-input bitte-bg-transparent bitte-px-3 bitte-py-2 bitte-text-base bitte-shadow-sm placeholder:bitte-text-muted-foreground focus-visible:bitte-outline-none focus-visible:bitte-ring-1 focus-visible:bitte-ring-ring disabled:bitte-cursor-not-allowed disabled:bitte-opacity-50',\n        className,\n      )}\n      ref={ref}\n      style={style}\n      {...props}\n    />\n  );\n});\nTextarea.displayName = 'Textarea';\n\nexport { Textarea };\n","import { forwardRef } from 'react';\n\ninterface AgentPillProps {\n  name: string;\n}\n\nexport const AgentPill = forwardRef<HTMLDivElement, AgentPillProps>(\n  ({ name }, ref) => (\n    <div\n      ref={ref}\n      className=\"bitte-w-fit bitte-rounded-full bitte-border bitte-border-dashed bitte-border-gray-40 bitte-px-2 bitte-py-1 bitte-text-xs bitte-font-semibold bitte-uppercase bitte-text-purple-400 bitte-mb-2 lg:bitte-mb-0 lg:bitte-absolute lg:bitte-left-2 lg:bitte-top-1/2 lg:bitte--translate-y-1/2\"\n    >\n      {name}\n    </div>\n  ),\n);\n\nAgentPill.displayName = 'AgentPill';\n","import type { SendButtonComponentProps } from '@bitte-ai/types';\nimport { ArrowUp } from 'lucide-react';\nimport { Button } from '../../ui/button';\n\nconst DefaultSendButton = ({\n  input,\n  isLoading,\n  buttonColor,\n  textColor,\n}: SendButtonComponentProps) => (\n  <Button\n    type=\"submit\"\n    disabled={!input || isLoading}\n    className=\"bitte-h-[42px] bitte-w-full lg:bitte-w-[42px] bitte-p-0 disabled:bitte-opacity-20\"\n    style={{ backgroundColor: buttonColor, color: textColor }}\n  >\n    <ArrowUp className=\"bitte-h-[16px] bitte-w-[16px] bitte-hidden lg:bitte-block\" />\n    <span className=\"lg:bitte-hidden\">Send</span>\n  </Button>\n);\n\nexport default DefaultSendButton;\n","import type { SmartActionsInputProps } from '@bitte-ai/types';\nimport React, { useEffect, useRef, useState } from 'react';\nimport { Textarea } from '../ui/textarea';\nimport { AgentPill } from './AgentPill';\nimport DefaultSendButton from './default-components/DefaultSendButtonComponent';\n\nexport const SmartActionsInput = ({\n  input,\n  isLoading,\n  agentName,\n  handleChange,\n  handleSubmit,\n  buttonColor,\n  borderColor,\n  textColor,\n  backgroundColor,\n  mobileInputExtraButton,\n  customSendButtonComponent: SendButtonComponent = DefaultSendButton,\n  placeholderText,\n}: SmartActionsInputProps) => {\n  const agentNameRef = useRef<HTMLDivElement>(null);\n  const [paddingLeft, setPaddingLeft] = useState<number>(125);\n  const [previousAgentName, setPreviousAgentName] = useState('Select Agent');\n\n  useEffect(() => {\n    if (agentNameRef.current) {\n      setPaddingLeft(agentNameRef.current.offsetWidth + 16);\n    } else {\n      setPaddingLeft(125);\n    }\n  }, [agentName]);\n\n  useEffect(() => {\n    if (agentName && agentName !== previousAgentName) {\n      setPreviousAgentName(agentName);\n    }\n  }, [agentName]);\n\n  return (\n    <form\n      className=\"bitte-relative bitte-mb-0 bitte-flex bitte-w-full bitte-items-center bitte-justify-center bitte-gap-4 max-lg:bitte-flex-wrap\"\n      style={{ color: textColor }}\n      onSubmit={handleSubmit}\n    >\n      <div className=\"bitte-w-full bitte-relative\">\n        <AgentPill name={agentName || previousAgentName} ref={agentNameRef} />\n\n        <Textarea\n          placeholder={placeholderText || 'Message Smart Actions'}\n          style={{\n            paddingLeft: `${paddingLeft}px`,\n            background: backgroundColor,\n            borderColor: borderColor,\n          }}\n          className=\"bitte-h-[42px] bitte-w-full bitte-resize-none bitte-min-h-0 textarea-chat\"\n          onChange={handleChange}\n          onKeyDown={(e: React.KeyboardEvent<HTMLTextAreaElement>) => {\n            if (e.key === 'Enter' && !e.shiftKey && !isLoading) {\n              e.preventDefault();\n              handleSubmit(e as unknown as React.FormEvent<HTMLFormElement>);\n            }\n          }}\n          value={input}\n        />\n      </div>\n      <div className=\"bitte-flex bitte-gap-2 bitte-w-full lg:bitte-contents\">\n        {mobileInputExtraButton ? (\n          <div className=\"bitte-w-full lg:bitte-hidden\">\n            {mobileInputExtraButton}\n          </div>\n        ) : null}\n        <SendButtonComponent\n          input={input}\n          isLoading={isLoading}\n          buttonColor={buttonColor}\n          textColor={textColor}\n        />\n      </div>\n    </form>\n  );\n};\n","import { SmartActionsInputProps } from '@bitte-ai/types';\nimport { ArrowUpRight } from 'lucide-react';\nimport React, { useEffect, useRef } from 'react';\nimport { Button } from '../ui/button';\nimport { Textarea } from '../ui/textarea';\n\ninterface WidgetChatInputProps extends SmartActionsInputProps {\n  autoFocus?: boolean;\n}\n\nexport const WidgetChatInput = ({\n  input,\n  isLoading,\n  handleChange,\n  handleSubmit,\n  borderColor,\n  textColor,\n  backgroundColor,\n  placeholderText,\n  autoFocus = false,\n}: WidgetChatInputProps) => {\n  const textareaRef = useRef<HTMLTextAreaElement>(null);\n  const containerRef = useRef<HTMLDivElement>(null);\n\n  useEffect(() => {\n    if (!autoFocus || !textareaRef.current || !containerRef.current) return;\n\n    // Create intersection observer to detect when widget becomes visible\n    const observer = new IntersectionObserver(\n      (entries) => {\n        entries.forEach((entry) => {\n          if (entry.isIntersecting && entry.intersectionRatio > 0.5) {\n            setTimeout(() => {\n              if (textareaRef.current) {\n                textareaRef.current.focus();\n                textareaRef.current.scrollIntoView({ block: 'nearest' });\n              }\n            }, 100);\n          }\n        });\n      },\n      {\n        threshold: 0.5,\n        rootMargin: '10px',\n      },\n    );\n\n    observer.observe(containerRef.current);\n\n    return () => {\n      observer.disconnect();\n    };\n  }, [autoFocus]);\n\n  // Fallback: Focus on any click in the widget area\n  const handleContainerClick = () => {\n    if (autoFocus && textareaRef.current) {\n      textareaRef.current.focus();\n    }\n  };\n\n  return (\n    <div ref={containerRef} onClick={handleContainerClick}>\n      <form\n        className=\"bitte-relative bitte-mb-0 bitte-flex bitte-flex-col bitte-w-full bitte-items-center bitte-justify-center bitte-gap-2 bitte-bg-mb-gray-150\"\n        style={{ color: textColor }}\n        onSubmit={handleSubmit}\n      >\n        <div className=\"bitte-w-full\">\n          <Textarea\n            ref={textareaRef}\n            placeholder={placeholderText || 'Type your message...'}\n            style={{\n              background: backgroundColor,\n              borderColor: borderColor,\n            }}\n            className=\"bitte-h-[42px] bitte-w-full bitte-resize-none bitte-min-h-0 textarea-chat\"\n            onChange={handleChange}\n            onKeyDown={(e: React.KeyboardEvent<HTMLTextAreaElement>) => {\n              if (e.key === 'Enter' && !e.shiftKey && !isLoading) {\n                e.preventDefault();\n                handleSubmit(e as unknown as React.FormEvent<HTMLFormElement>);\n              }\n            }}\n            value={input}\n          />\n        </div>\n\n        <Button\n          type=\"submit\"\n          disabled={!input || isLoading}\n          className=\"bitte-h-[42px] bitte-w-full bitte-p-0 disabled:bitte-opacity-20 bitte-text-black bitte-bg-white\"\n        >\n          <span>Send</span>\n        </Button>\n        <a\n          href=\"https://bitte.ai\"\n          target=\"_blank\"\n          rel=\"noopener noreferrer\"\n          className=\"bitte-text-[#6E6E6E] hover:bitte-text-white bitte-flex bitte-items-center bitte-gap-1\"\n        >\n          <span className=\"bitte-text-[10px] bitte-font-semibold\">\n            Powered by Bitte\n          </span>\n          <ArrowUpRight className=\"bitte-w-2 bitte-h-2\" />\n        </a>\n      </form>\n    </div>\n  );\n};\n","import type { InputContainerProps } from '@bitte-ai/types';\n\nconst DefaultInputContainer = ({ children, style }: InputContainerProps) => (\n  <div\n    className=\"lg:bitte-rounded-md bitte-border-t bitte-border-b lg:bitte-border bitte-p-6 bitte-w-full\"\n    style={{\n      backgroundColor: style?.backgroundColor,\n      borderColor: style?.borderColor,\n    }}\n    id=\"bitte-chat-input-container\"\n  >\n    {children}\n  </div>\n);\n\nexport default DefaultInputContainer;\n","import React from 'react';\nimport { SmartActionsInput } from './ChatInput';\nimport { WidgetChatInput } from './WidgetChatInput';\nimport DefaultInputContainer from './default-components/DefaultInputContainer';\n\ninterface EnhancedChatInputProps {\n  isWidgetChat: boolean;\n  input: string;\n  handleInputChange: (\n    e:\n      | React.ChangeEvent<HTMLInputElement>\n      | React.ChangeEvent<HTMLTextAreaElement>,\n  ) => void;\n  handleSubmit: (e: React.FormEvent<HTMLFormElement>) => void;\n  isInProgress: boolean;\n  generalBackground?: string;\n  borderColor?: string;\n  textColor?: string;\n  buttonColor?: string;\n  options?: {\n    agentName?: string;\n    placeholderText?: string;\n    customComponents?: {\n      mobileInputExtraButton?: React.ReactNode;\n      sendButtonComponent?: React.ComponentType<any>;\n      inputContainer?: React.ComponentType<any>;\n    };\n  };\n}\n\nexport const EnhancedChatInput: React.FC<EnhancedChatInputProps> = ({\n  isWidgetChat,\n  input,\n  handleInputChange,\n  handleSubmit,\n  isInProgress,\n  generalBackground,\n  borderColor,\n  textColor,\n  buttonColor,\n  options,\n}) => {\n  const InputContainer =\n    options?.customComponents?.inputContainer || DefaultInputContainer;\n\n  const handleSubmitChat = async (e: React.FormEvent<HTMLFormElement>) => {\n    e.preventDefault();\n    handleSubmit(e);\n  };\n\n  if (isWidgetChat) {\n    return (\n      <div className=\"bitte-pb-2 bitte-px-4 bitte-w-full\">\n        <WidgetChatInput\n          input={input}\n          handleChange={handleInputChange}\n          handleSubmit={handleSubmitChat}\n          isLoading={isInProgress}\n          agentName={options?.agentName || ''}\n          buttonColor={buttonColor || '#000000'}\n          borderColor={borderColor || '#334155'}\n          textColor={textColor || '#ffffff'}\n          backgroundColor={generalBackground || '#0A0A0C'}\n          autoFocus\n        />\n      </div>\n    );\n  }\n\n  return (\n    <InputContainer\n      style={{\n        backgroundColor: generalBackground,\n        borderColor: borderColor,\n      }}\n    >\n      <SmartActionsInput\n        input={input}\n        handleChange={handleInputChange}\n        handleSubmit={handleSubmitChat}\n        isLoading={isInProgress}\n        buttonColor={buttonColor || ''}\n        borderColor={borderColor || ''}\n        textColor={textColor || ''}\n        backgroundColor={generalBackground || ''}\n        agentName={options?.agentName}\n        mobileInputExtraButton={\n          options?.customComponents?.mobileInputExtraButton as\n            | React.ReactElement\n            | undefined\n        }\n        customSendButtonComponent={\n          options?.customComponents?.sendButtonComponent\n        }\n        placeholderText={options?.placeholderText}\n      />\n    </InputContainer>\n  );\n};\n","export class Color {\n  r!: number;\n  g!: number;\n  b!: number;\n\n  constructor(r: number, g: number, b: number) {\n    this.set(r, g, b);\n  }\n\n  set(r: number, g: number, b: number) {\n    this.r = this.clamp(r);\n    this.g = this.clamp(g);\n    this.b = this.clamp(b);\n  }\n\n  clamp(value: number) {\n    return Math.max(0, Math.min(255, value));\n  }\n\n  hueRotate(angle = 0) {\n    angle = (angle / 180) * Math.PI;\n    const sin = Math.sin(angle);\n    const cos = Math.cos(angle);\n\n    this.multiply([\n      0.213 + cos * 0.787 - sin * 0.213,\n      0.715 - cos * 0.715 - sin * 0.715,\n      0.072 - cos * 0.072 + sin * 0.928,\n      0.213 - cos * 0.213 + sin * 0.143,\n      0.715 + cos * 0.285 + sin * 0.14,\n      0.072 - cos * 0.072 - sin * 0.283,\n      0.213 - cos * 0.213 - sin * 0.787,\n      0.715 - cos * 0.715 + sin * 0.715,\n      0.072 + cos * 0.928 + sin * 0.072,\n    ]);\n  }\n\n  grayscale(value = 1) {\n    this.multiply([\n      0.2126 + 0.7874 * (1 - value),\n      0.7152 - 0.7152 * (1 - value),\n      0.0722 - 0.0722 * (1 - value),\n      0.2126 - 0.2126 * (1 - value),\n      0.7152 + 0.2848 * (1 - value),\n      0.0722 - 0.0722 * (1 - value),\n      0.2126 - 0.2126 * (1 - value),\n      0.7152 - 0.7152 * (1 - value),\n      0.0722 + 0.9278 * (1 - value),\n    ]);\n  }\n\n  sepia(value = 1) {\n    this.multiply([\n      0.393 + 0.607 * (1 - value),\n      0.769 - 0.769 * (1 - value),\n      0.189 - 0.189 * (1 - value),\n      0.349 - 0.349 * (1 - value),\n      0.686 + 0.314 * (1 - value),\n      0.168 - 0.168 * (1 - value),\n      0.272 - 0.272 * (1 - value),\n      0.534 - 0.534 * (1 - value),\n      0.131 + 0.869 * (1 - value),\n    ]);\n  }\n\n  saturate(value = 1) {\n    this.multiply([\n      0.213 + 0.787 * value,\n      0.715 - 0.715 * value,\n      0.072 - 0.072 * value,\n      0.213 - 0.213 * value,\n      0.715 + 0.285 * value,\n      0.072 - 0.072 * value,\n      0.213 - 0.213 * value,\n      0.715 - 0.715 * value,\n      0.072 + 0.928 * value,\n    ]);\n  }\n\n  multiply(matrix: number[]) {\n    const newR = this.clamp(\n      this.r * matrix[0] + this.g * matrix[1] + this.b * matrix[2],\n    );\n    const newG = this.clamp(\n      this.r * matrix[3] + this.g * matrix[4] + this.b * matrix[5],\n    );\n    const newB = this.clamp(\n      this.r * matrix[6] + this.g * matrix[7] + this.b * matrix[8],\n    );\n    this.r = newR;\n    this.g = newG;\n    this.b = newB;\n  }\n\n  brightness(value = 1) {\n    this.linear(value);\n  }\n\n  contrast(value = 1) {\n    this.linear(value, -(0.5 * value) + 0.5);\n  }\n\n  linear(slope = 1, intercept = 0) {\n    this.r = this.clamp(this.r * slope + intercept * 255);\n    this.g = this.clamp(this.g * slope + intercept * 255);\n    this.b = this.clamp(this.b * slope + intercept * 255);\n  }\n\n  invert(value = 1) {\n    this.r = this.clamp((value + (this.r / 255) * (1 - 2 * value)) * 255);\n    this.g = this.clamp((value + (this.g / 255) * (1 - 2 * value)) * 255);\n    this.b = this.clamp((value + (this.b / 255) * (1 - 2 * value)) * 255);\n  }\n\n  hsl() {\n    const r = this.r / 255;\n    const g = this.g / 255;\n    const b = this.b / 255;\n    const max = Math.max(r, g, b);\n    const min = Math.min(r, g, b);\n    let h = 0,\n      s,\n      l = (max + min) / 2;\n\n    if (max === min) {\n      h = s = 0;\n    } else {\n      const d = max - min;\n      s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n      switch (max) {\n        case r:\n          h = (g - b) / d + (g < b ? 6 : 0);\n          break;\n        case g:\n          h = (b - r) / d + 2;\n          break;\n        case b:\n          h = (r - g) / d + 4;\n          break;\n      }\n      h /= 6;\n    }\n\n    return {\n      h: h * 100,\n      s: s * 100,\n      l: l * 100,\n    };\n  }\n}\n","export const hexToRgb = (hex: string): [number, number, number] | null => {\n  const shorthandRegex = /^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i;\n  hex = hex.replace(shorthandRegex, (m, r, g, b) => r + r + g + g + b + b);\n\n  const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n  return result\n    ? [\n        Number.parseInt(result[1], 16),\n        Number.parseInt(result[2], 16),\n        Number.parseInt(result[3], 16),\n      ]\n    : null;\n};\n","import { Color } from './colors';\n\nexport class Solver {\n  target: Color;\n  targetHSL: { h: number; s: number; l: number };\n  reusedColor: Color;\n\n  constructor(target: Color) {\n    this.target = target;\n    this.targetHSL = target.hsl();\n    this.reusedColor = new Color(0, 0, 0);\n  }\n\n  solve() {\n    const result = this.solveNarrow(this.solveWide());\n    return {\n      values: result.values,\n      loss: result.loss,\n      filter: this.css(result.values),\n    };\n  }\n\n  solveWide() {\n    const A = 5;\n    const c = 15;\n    const a = [60, 180, 18000, 600, 1.2, 1.2];\n\n    let best: { values: number[]; loss: number } = {\n      values: [],\n      loss: Number.POSITIVE_INFINITY,\n    }; // Explicitly specify the type\n    for (let i = 0; best.loss > 25 && i < 3; i++) {\n      const initial = [50, 20, 3750, 50, 100, 100];\n      const result = this.spsa(A, a, c, initial, 1000);\n      if (result.loss < best.loss) {\n        best = result;\n      }\n    }\n    return best;\n  }\n\n  solveNarrow(wide: { values: number[]; loss: number }) {\n    const A = wide.loss;\n    const c = 2;\n    const A1 = A + 1;\n    const a = [0.25 * A1, 0.25 * A1, A1, 0.25 * A1, 0.2 * A1, 0.2 * A1];\n    return this.spsa(A, a, c, wide.values, 500);\n  }\n\n  spsa(A: number, a: number[], c: number, values: number[], iters: number) {\n    const alpha = 1;\n    const gamma = 0.16666666666666666;\n\n    let best: number[] | null = null;\n    let bestLoss = Number.POSITIVE_INFINITY;\n    const deltas = new Array(6);\n    const highArgs = new Array(6);\n    const lowArgs = new Array(6);\n\n    for (let k = 0; k < iters; k++) {\n      const ck = c / Math.pow(k + 1, gamma);\n      for (let i = 0; i < 6; i++) {\n        deltas[i] = Math.random() > 0.5 ? 1 : -1;\n        highArgs[i] = values[i] + ck * deltas[i];\n        lowArgs[i] = values[i] - ck * deltas[i];\n      }\n\n      const lossDiff = this.loss(highArgs) - this.loss(lowArgs);\n      for (let i = 0; i < 6; i++) {\n        const g = (lossDiff / (2 * ck)) * deltas[i];\n        const ak = a[i] / Math.pow(A + k + 1, alpha);\n        values[i] = fix(values[i] - ak * g, i);\n      }\n\n      const loss = this.loss(values);\n      if (loss < bestLoss) {\n        best = values.slice(0);\n        bestLoss = loss;\n      }\n    }\n    return { values: best!, loss: bestLoss };\n\n    function fix(value: number, idx: number) {\n      let max = 100;\n      if (idx === 2 /* saturate */) {\n        max = 7500;\n      } else if (idx === 4 /* brightness */ || idx === 5 /* contrast */) {\n        max = 200;\n      }\n\n      if (idx === 3 /* hue-rotate */) {\n        if (value > max) {\n          value %= max;\n        } else if (value < 0) {\n          value = max + (value % max);\n        }\n      } else if (value < 0) {\n        value = 0;\n      } else if (value > max) {\n        value = max;\n      }\n      return value;\n    }\n  }\n\n  loss(filters: number[]) {\n    const color = this.reusedColor;\n    color.set(0, 0, 0);\n\n    color.invert(filters[0] / 100);\n    color.sepia(filters[1] / 100);\n    color.saturate(filters[2] / 100);\n    color.hueRotate(filters[3] * 3.6);\n    color.brightness(filters[4] / 100);\n    color.contrast(filters[5] / 100);\n\n    const colorHSL = color.hsl();\n    return (\n      Math.abs(color.r - this.target.r) +\n      Math.abs(color.g - this.target.g) +\n      Math.abs(color.b - this.target.b) +\n      Math.abs(colorHSL.h - this.targetHSL.h) +\n      Math.abs(colorHSL.s - this.targetHSL.s) +\n      Math.abs(colorHSL.l - this.targetHSL.l)\n    );\n  }\n\n  css(filters: number[]) {\n    function fmt(idx: number, multiplier = 1) {\n      return Math.round(filters[idx] * multiplier);\n    }\n    return `invert(${fmt(0)}%) sepia(${fmt(1)}%) saturate(${fmt(2)}%) hue-rotate(${fmt(3, 3.6)}deg) brightness(${fmt(4)}%) contrast(${fmt(5)}%)`;\n  }\n}\n","{\n  \"v\": \"5.12.1\",\n  \"fr\": 29.9700012207031,\n  \"ip\": 0,\n  \"op\": 96.0000039101602,\n  \"w\": 1080,\n  \"h\": 1080,\n  \"nm\": \"marcelokunze   3_v2\",\n  \"ddd\": 0,\n  \"assets\": [],\n  \"layers\": [\n      {\n          \"ddd\": 0,\n          \"ind\": 1,\n          \"ty\": 3,\n          \"nm\": \"Adjustment Layer 1\",\n          \"sr\": 1,\n          \"ks\": {\n              \"o\": {\n                  \"a\": 0,\n                  \"k\": 100,\n                  \"ix\": 11\n              },\n              \"r\": {\n                  \"a\": 0,\n                  \"k\": 0,\n                  \"ix\": 10\n              },\n              \"p\": {\n                  \"a\": 0,\n                  \"k\": [\n                      540,\n                      540,\n                      0\n                  ],\n                  \"ix\": 2,\n                  \"l\": 2\n              },\n              \"a\": {\n                  \"a\": 0,\n                  \"k\": [\n                      540,\n                      540,\n                      0\n                  ],\n                  \"ix\": 1,\n                  \"l\": 2\n              },\n              \"s\": {\n                  \"a\": 0,\n                  \"k\": [\n                      100,\n                      100,\n                      100\n                  ],\n                  \"ix\": 6,\n                  \"l\": 2\n              }\n          },\n          \"ao\": 0,\n          \"ef\": [\n              {\n                  \"ty\": 5,\n                  \"nm\": \"Invert\",\n                  \"np\": 4,\n                  \"mn\": \"ADBE Invert\",\n                  \"ix\": 1,\n                  \"en\": 1,\n                  \"ef\": [\n                      {\n                          \"ty\": 7,\n                          \"nm\": \"Channel\",\n                          \"mn\": \"ADBE Invert-0001\",\n                          \"ix\": 1,\n                          \"v\": {\n                              \"a\": 0,\n                              \"k\": 1,\n                              \"ix\": 1\n                          }\n                      },\n                      {\n                          \"ty\": 0,\n                          \"nm\": \"Blend With Original\",\n                          \"mn\": \"ADBE Invert-0002\",\n                          \"ix\": 2,\n                          \"v\": {\n                              \"a\": 0,\n                              \"k\": 0,\n                              \"ix\": 2\n                          }\n                      }\n                  ]\n              }\n          ],\n          \"ip\": -21.0000008553475,\n          \"op\": 279.000011363903,\n          \"st\": -21.0000008553475,\n          \"bm\": 0\n      },\n      {\n          \"ddd\": 0,\n          \"ind\": 2,\n          \"ty\": 4,\n          \"nm\": \"star 1 Outlines\",\n          \"sr\": 1,\n          \"ks\": {\n              \"o\": {\n                  \"a\": 0,\n                  \"k\": 100,\n                  \"ix\": 11\n              },\n              \"r\": {\n                  \"a\": 0,\n                  \"k\": 0,\n                  \"ix\": 10\n              },\n              \"p\": {\n                  \"a\": 0,\n                  \"k\": [\n                      522.185,\n                      483.019,\n                      0\n                  ],\n                  \"ix\": 2,\n                  \"l\": 2\n              },\n              \"a\": {\n                  \"a\": 0,\n                  \"k\": [\n                      41.269,\n                      41.27,\n                      0\n                  ],\n                  \"ix\": 1,\n                  \"l\": 2\n              },\n              \"s\": {\n                  \"a\": 1,\n                  \"k\": [\n                      {\n                          \"i\": {\n                              \"x\": [\n                                  0.15,\n                                  0.15,\n                                  0.15\n                              ],\n                              \"y\": [\n                                  1,\n                                  1,\n                                  1\n                              ]\n                          },\n                          \"o\": {\n                              \"x\": [\n                                  0.23,\n                                  0.23,\n                                  0.23\n                              ],\n                              \"y\": [\n                                  0,\n                                  0,\n                                  0\n                              ]\n                          },\n                          \"t\": 45,\n                          \"s\": [\n                              0,\n                              0,\n                              100\n                          ]\n                      },\n                      {\n                          \"i\": {\n                              \"x\": [\n                                  0.15,\n                                  0.15,\n                                  0.15\n                              ],\n                              \"y\": [\n                                  1,\n                                  1,\n                                  1\n                              ]\n                          },\n                          \"o\": {\n                              \"x\": [\n                                  0.695,\n                                  0.695,\n                                  0.167\n                              ],\n                              \"y\": [\n                                  0,\n                                  0,\n                                  0\n                              ]\n                          },\n                          \"t\": 74,\n                          \"s\": [\n                              100,\n                              100,\n                              100\n                          ]\n                      },\n                      {\n                          \"i\": {\n                              \"x\": [\n                                  0.667,\n                                  0.667,\n                                  0.667\n                              ],\n                              \"y\": [\n                                  1,\n                                  1,\n                                  1\n                              ]\n                          },\n                          \"o\": {\n                              \"x\": [\n                                  0.695,\n                                  0.695,\n                                  0.167\n                              ],\n                              \"y\": [\n                                  0,\n                                  0,\n                                  0\n                              ]\n                          },\n                          \"t\": 81,\n                          \"s\": [\n                              100,\n                              100,\n                              100\n                          ]\n                      },\n                      {\n                          \"t\": 95.0000038694293,\n                          \"s\": [\n                              0,\n                              0,\n                              100\n                          ]\n                      }\n                  ],\n                  \"ix\": 6,\n                  \"l\": 2\n              }\n          },\n          \"ao\": 0,\n          \"shapes\": [\n              {\n                  \"ty\": \"gr\",\n                  \"it\": [\n                      {\n                          \"ind\": 0,\n                          \"ty\": \"sh\",\n                          \"ix\": 1,\n                          \"ks\": {\n                              \"a\": 0,\n                              \"k\": {\n                                  \"i\": [\n                                      [\n                                          -0.883,\n                                          -0.263\n                                      ],\n                                      [\n                                          0,\n                                          0\n                                      ],\n                                      [\n                                          -0.503,\n                                          -0.503\n                                      ],\n                                      [\n                                          -0.203,\n                                          -0.682\n                                      ],\n                                      [\n                                          0,\n                                          0\n                                      ],\n                                      [\n                                          -0.739,\n                                          -0.55\n                                      ],\n                                      [\n                                          -0.921,\n                                          0\n                                      ],\n                                      [\n                                          -0.738,\n                                          0.552\n                                      ],\n                                      [\n                                          -0.264,\n                                          0.883\n                                      ],\n                                      [\n                                          0,\n                                          0\n                                      ],\n                                      [\n                                          -0.503,\n                                          0.503\n                                      ],\n                                      [\n                                          -0.681,\n                                          0.203\n                                      ],\n                                      [\n                                          0,\n                                          0\n                                      ],\n                                      [\n                                          -0.551,\n                                          0.739\n                                      ],\n                                      [\n                                          0,\n                                          0.922\n                                      ],\n                                      [\n                                          0.551,\n                                          0.739\n                                      ],\n                                      [\n                                          0.883,\n                                          0.264\n                                      ],\n                                      [\n                                          0,\n                                          0\n                                      ],\n                                      [\n                                          0.503,\n                                          0.502\n                                      ],\n                                      [\n                                          0.203,\n                                          0.681\n                                      ],\n                                      [\n                                          0,\n                                          0\n                                      ],\n                                      [\n                                          0.739,\n                                          0.551\n                                      ],\n                                      [\n                                          0.922,\n                                          0\n                                      ],\n                                      [\n                                          0.739,\n                                          -0.551\n                                      ],\n                                      [\n                                          0.263,\n                                          -0.883\n                                      ],\n                                      [\n                                          0,\n                                          0\n                                      ],\n                                      [\n                                          0.503,\n                                          -0.503\n                                      ],\n                                      [\n                                          0.681,\n                                          -0.202\n                                      ],\n                                      [\n                                          0,\n                                          0\n                                      ],\n                                      [\n                                          0.551,\n                                          -0.738\n                                      ],\n                                      [\n                                          0,\n                                          -0.921\n                                      ],\n                                      [\n                                          -0.551,\n                                          -0.739\n                                      ]\n                                  ],\n                                  \"o\": [\n                                      [\n                                          0,\n                                          0\n                                      ],\n                                      [\n                                          0.681,\n                                          0.203\n                                      ],\n                                      [\n                                          0.503,\n                                          0.503\n                                      ],\n                                      [\n                                          0,\n                                          0\n                                      ],\n                                      [\n                                          0.263,\n                                          0.883\n                                      ],\n                                      [\n                                          0.739,\n                                          0.552\n                                      ],\n                                      [\n                                          0.922,\n                                          0\n                                      ],\n                                      [\n                                          0.739,\n                                          -0.55\n                                      ],\n                                      [\n                                          0,\n                                          0\n                                      ],\n                                      [\n                                          0.203,\n                                          -0.682\n                                      ],\n                                      [\n                                          0.503,\n                                          -0.503\n                                      ],\n                                      [\n                                          0,\n                                          0\n                                      ],\n                                      [\n                                          0.883,\n                                          -0.263\n                                      ],\n                                      [\n                                          0.551,\n                                          -0.739\n                                      ],\n                                      [\n                                          0,\n                                          -0.921\n                                      ],\n                                      [\n                                          -0.551,\n                                          -0.738\n                                      ],\n                                      [\n                                          0,\n                                          0\n                                      ],\n                                      [\n                                          -0.681,\n                                          -0.202\n                                      ],\n                                      [\n                                          -0.503,\n                                          -0.503\n                                      ],\n                                      [\n                                          0,\n                                          0\n                                      ],\n                                      [\n                                          -0.264,\n                                          -0.883\n                                      ],\n                                      [\n                                          -0.738,\n                                          -0.551\n                                      ],\n                                      [\n                                          -0.921,\n                                          0\n                                      ],\n                                      [\n                                          -0.739,\n                                          0.551\n                                      ],\n                                      [\n                                          0,\n                                          0\n                                      ],\n                                      [\n                                          -0.203,\n                                          0.681\n                                      ],\n                                      [\n                                          -0.503,\n                                          0.502\n                                      ],\n                                      [\n                                          0,\n                                          0\n                                      ],\n                                      [\n                                          -0.883,\n                                          0.264\n                                      ],\n                                      [\n                                          -0.551,\n                                          0.739\n                                      ],\n                                      [\n                                          0,\n                                          0.922\n                                      ],\n                                      [\n                                          0.551,\n                                          0.739\n                                      ]\n                                  ],\n                                  \"v\": [\n                                      [\n                                          -37.962,\n                                          4.1\n                                      ],\n                                      [\n                                          -14.089,\n                                          11.21\n                                      ],\n                                      [\n                                          -12.285,\n                                          12.286\n                                      ],\n                                      [\n                                          -11.21,\n                                          14.09\n                                      ],\n                                      [\n                                          -4.1,\n                                          37.962\n                                      ],\n                                      [\n                                          -2.557,\n                                          40.171\n                                      ],\n                                      [\n                                          0,\n                                          41.02\n                                      ],\n                                      [\n                                          2.557,\n                                          40.171\n                                      ],\n                                      [\n                                          4.101,\n                                          37.962\n                                      ],\n                                      [\n                                          11.21,\n                                          14.09\n                                      ],\n                                      [\n                                          12.285,\n                                          12.286\n                                      ],\n                                      [\n                                          14.089,\n                                          11.21\n                                      ],\n                                      [\n                                          37.962,\n                                          4.1\n                                      ],\n                                      [\n                                          40.171,\n                                          2.558\n                                      ],\n                                      [\n                                          41.019,\n                                          0\n                                      ],\n                                      [\n                                          40.171,\n                                          -2.557\n                                      ],\n                                      [\n                                          37.962,\n                                          -4.1\n                                      ],\n                                      [\n                                          14.089,\n                                          -11.21\n                                      ],\n                                      [\n                                          12.285,\n                                          -12.284\n                                      ],\n                                      [\n                                          11.21,\n                                          -14.088\n                                      ],\n                                      [\n                                          4.101,\n                                          -37.962\n                                      ],\n                                      [\n                                          2.557,\n                                          -40.171\n                                      ],\n                                      [\n                                          0,\n                                          -41.02\n                                      ],\n                                      [\n                                          -2.557,\n                                          -40.171\n                                      ],\n                                      [\n                                          -4.1,\n                                          -37.962\n                                      ],\n                                      [\n                                          -11.21,\n                                          -14.088\n                                      ],\n                                      [\n                                          -12.285,\n                                          -12.284\n                                      ],\n                                      [\n                                          -14.089,\n                                          -11.21\n                                      ],\n                                      [\n                                          -37.962,\n                                          -4.1\n                                      ],\n                                      [\n                                          -40.171,\n                                          -2.557\n                                      ],\n                                      [\n                                          -41.019,\n                                          0\n                                      ],\n                                      [\n                                          -40.171,\n                                          2.558\n                                      ]\n                                  ],\n                                  \"c\": true\n                              },\n                              \"ix\": 2\n                          },\n                          \"nm\": \"Path 1\",\n                          \"mn\": \"ADBE Vector Shape - Group\",\n                          \"hd\": false\n                      },\n                      {\n                          \"ty\": \"fl\",\n                          \"c\": {\n                              \"a\": 0,\n                              \"k\": [\n                                  0,\n                                  0,\n                                  0,\n                                  1\n                              ],\n                              \"ix\": 4\n                          },\n                          \"o\": {\n                              \"a\": 0,\n                              \"k\": 100,\n                              \"ix\": 5\n                          },\n                          \"r\": 1,\n                          \"bm\": 0,\n                          \"nm\": \"Fill 1\",\n                          \"mn\": \"ADBE Vector Graphic - Fill\",\n                          \"hd\": false\n                      },\n                      {\n                          \"ty\": \"tr\",\n                          \"p\": {\n                              \"a\": 0,\n                              \"k\": [\n                                  41.269,\n                                  41.27\n                              ],\n                              \"ix\": 2\n                          },\n                          \"a\": {\n                              \"a\": 0,\n                              \"k\": [\n                                  0,\n                                  0\n                              ],\n                              \"ix\": 1\n                          },\n                          \"s\": {\n                              \"a\": 0,\n                              \"k\": [\n                                  100,\n                                  100\n                              ],\n                              \"ix\": 3\n                          },\n                          \"r\": {\n                              \"a\": 0,\n                              \"k\": 0,\n                              \"ix\": 6\n                          },\n                          \"o\": {\n                              \"a\": 0,\n                              \"k\": 100,\n                              \"ix\": 7\n                          },\n                          \"sk\": {\n                              \"a\": 0,\n                              \"k\": 0,\n                              \"ix\": 4\n                          },\n                          \"sa\": {\n                              \"a\": 0,\n                              \"k\": 0,\n                              \"ix\": 5\n                          },\n                          \"nm\": \"Transform\"\n                      }\n                  ],\n                  \"nm\": \"Group 1\",\n                  \"np\": 2,\n                  \"cix\": 2,\n                  \"bm\": 0,\n                  \"ix\": 1,\n                  \"mn\": \"ADBE Vector Group\",\n                  \"hd\": false\n              }\n          ],\n          \"ip\": -21.0000008553475,\n          \"op\": 279.000011363903,\n          \"st\": -21.0000008553475,\n          \"ct\": 1,\n          \"bm\": 0\n      },\n      {\n          \"ddd\": 0,\n          \"ind\": 3,\n          \"ty\": 4,\n          \"nm\": \"star 2 Outlines\",\n          \"sr\": 1,\n          \"ks\": {\n              \"o\": {\n                  \"a\": 0,\n                  \"k\": 100,\n                  \"ix\": 11\n              },\n              \"r\": {\n                  \"a\": 0,\n                  \"k\": 0,\n                  \"ix\": 10\n              },\n              \"p\": {\n                  \"a\": 1,\n                  \"k\": [\n                      {\n                          \"i\": {\n                              \"x\": 0.667,\n                              \"y\": 1\n                          },\n                          \"o\": {\n                              \"x\": 0.693,\n                              \"y\": 0\n                          },\n                          \"t\": 37,\n                          \"s\": [\n                              540.525,\n                              566.696,\n                              0\n                          ],\n                          \"to\": [\n                              9,\n                              0,\n                              0\n                          ],\n                          \"ti\": [\n                              -9,\n                              0,\n                              0\n                          ]\n                      },\n                      {\n                          \"i\": {\n                              \"x\": 0.667,\n                              \"y\": 0.667\n                          },\n                          \"o\": {\n                              \"x\": 0.333,\n                              \"y\": 0.333\n                          },\n                          \"t\": 62,\n                          \"s\": [\n                              594.525,\n                              566.696,\n                              0\n                          ],\n                          \"to\": [\n                              0,\n                              0,\n                              0\n                          ],\n                          \"ti\": [\n                              0,\n                              0,\n                              0\n                          ]\n                      },\n                      {\n                          \"t\": 74.0000030140818,\n                          \"s\": [\n                              594.525,\n                              566.696,\n                              0\n                          ]\n                      }\n                  ],\n                  \"ix\": 2,\n                  \"l\": 2\n              },\n              \"a\": {\n                  \"a\": 0,\n                  \"k\": [\n                      204.258,\n                      69.681,\n                      0\n                  ],\n                  \"ix\": 1,\n                  \"l\": 2\n              },\n              \"s\": {\n                  \"a\": 1,\n                  \"k\": [\n                      {\n                          \"i\": {\n                              \"x\": [\n                                  0.1,\n                                  0.1,\n                                  0.1\n                              ],\n                              \"y\": [\n                                  1,\n                                  1,\n                                  1\n                              ]\n                          },\n                          \"o\": {\n                              \"x\": [\n                                  0.19,\n                                  0.19,\n                                  0.19\n                              ],\n                              \"y\": [\n                                  0,\n                                  0,\n                                  0\n                              ]\n                          },\n                          \"t\": 0,\n                          \"s\": [\n                              0,\n                              0,\n                              100\n                          ]\n                      },\n                      {\n                          \"i\": {\n                              \"x\": [\n                                  0.1,\n                                  0.1,\n                                  0.1\n                              ],\n                              \"y\": [\n                                  1,\n                                  1,\n                                  1\n                              ]\n                          },\n                          \"o\": {\n                              \"x\": [\n                                  0.167,\n                                  0.167,\n                                  0.167\n                              ],\n                              \"y\": [\n                                  0,\n                                  0,\n                                  0\n                              ]\n                          },\n                          \"t\": 34,\n                          \"s\": [\n                              100,\n                              100,\n                              100\n                          ]\n                      },\n                      {\n                          \"i\": {\n                              \"x\": [\n                                  0.315,\n                                  0.315,\n                                  0.833\n                              ],\n                              \"y\": [\n                                  1,\n                                  1,\n                                  1\n                              ]\n                          },\n                          \"o\": {\n                              \"x\": [\n                                  0.281,\n                                  0.281,\n                                  0.167\n                              ],\n                              \"y\": [\n                                  0,\n                                  0,\n                                  0\n                              ]\n                          },\n                          \"t\": 81,\n                          \"s\": [\n                              100,\n                              100,\n                              100\n                          ]\n                      },\n                      {\n                          \"t\": 95.0000038694293,\n                          \"s\": [\n                              0,\n                              0,\n                              100\n                          ]\n                      }\n                  ],\n                  \"ix\": 6,\n                  \"l\": 2\n              }\n          },\n          \"ao\": 0,\n          \"shapes\": [\n              {\n                  \"ty\": \"gr\",\n                  \"it\": [\n                      {\n                          \"ind\": 0,\n                          \"ty\": \"sh\",\n                          \"ix\": 1,\n                          \"ks\": {\n                              \"a\": 1,\n                              \"k\": [\n                                  {\n                                      \"i\": {\n                                          \"x\": 0.271,\n                                          \"y\": 1\n                                      },\n                                      \"o\": {\n                                          \"x\": 0.333,\n                                          \"y\": 0\n                                      },\n                                      \"t\": 31,\n                                      \"s\": [\n                                          {\n                                              \"i\": [\n                                                  [\n                                                      -1.495,\n                                                      -0.445\n                                                  ],\n                                                  [\n                                                      0,\n                                                      0\n                                                  ],\n                                                  [\n                                                      -0.851,\n                                                      -0.852\n                                                  ],\n                                                  [\n                                                      -0.344,\n                                                      -1.153\n                                                  ],\n                                                  [\n                                                      0,\n                                                      0\n                                                  ],\n                                                  [\n                                                      -1.25,\n                                                      -0.932\n                                                  ],\n                                                  [\n                                                      -1.561,\n                                                      0\n                                                  ],\n                                                  [\n                                                      -1.251,\n                                                      0.932\n                                                  ],\n                                                  [\n                                                      -0.445,\n                                                      1.496\n                                                  ],\n                                                  [\n                                                      0,\n                                                      0\n                                                  ],\n                                                  [\n                                                      -0.852,\n                                                      0.85\n                                                  ],\n                                                  [\n                                                      -1.153,\n                                                      0.343\n                                                  ],\n                                                  [\n                                                      0,\n                                                      0\n                                                  ],\n                                                  [\n                                                      -0.933,\n                                                      1.251\n                                                  ],\n                                                  [\n                                                      0,\n                                                      1.56\n                                                  ],\n                                                  [\n                                                      0.932,\n                                                      1.25\n                                                  ],\n                                                  [\n                                                      1.496,\n                                                      0.445\n                                                  ],\n                                                  [\n                                                      0,\n                                                      0\n                                                  ],\n                                                  [\n                                                      0.85,\n                                                      0.851\n                                                  ],\n                                                  [\n                                                      0.344,\n                                                      1.154\n                                                  ],\n                                                  [\n                                                      0,\n                                                      0\n                                                  ],\n                                                  [\n                                                      1.251,\n                                                      0.933\n                                                  ],\n                                                  [\n                                                      1.559,\n                                                      0\n                                                  ],\n                                                  [\n                                                      1.25,\n                                                      -0.932\n                                                  ],\n                                                  [\n                                                      0.445,\n                                                      -1.495\n                                                  ],\n                                                  [\n                                                      0,\n                                                      0\n                                                  ],\n                                                  [\n                                                      0.851,\n                                                      -0.851\n                                                  ],\n                                                  [\n                                                      1.153,\n                                                      -0.344\n                                                  ],\n                                                  [\n                                                      0,\n                                                      0\n                                                  ],\n                                                  [\n                                                      0.932,\n                                                      -1.251\n                                                  ],\n                                                  [\n                                                      0,\n                                                      -1.56\n                                                  ],\n                                                  [\n                                                      -0.933,\n                                                      -1.251\n                                                  ]\n                                              ],\n                                              \"o\": [\n                                                  [\n                                                      0,\n                                                      0\n                                                  ],\n                                                  [\n                                                      1.153,\n                                                      0.343\n                                                  ],\n                                                  [\n                                                      0.851,\n                                                      0.85\n                                                  ],\n                                                  [\n                                                      0,\n                                                      0\n                                                  ],\n                                                  [\n                                                      0.445,\n                                                      1.496\n                                                  ],\n                                                  [\n                                                      1.25,\n                                                      0.932\n                                                  ],\n                                                  [\n                                                      1.559,\n                                                      0\n                                                  ],\n                                                  [\n                                                      1.251,\n                                                      -0.932\n                                                  ],\n                                                  [\n                                                      0,\n                                                      0\n                                                  ],\n                                                  [\n                                                      0.344,\n                                                      -1.153\n                                                  ],\n                                                  [\n                                                      0.85,\n                                                      -0.852\n                                                  ],\n                                                  [\n                                                      0,\n                                                      0\n                                                  ],\n                                                  [\n                                                      1.496,\n                                                      -0.445\n                                                  ],\n                                                  [\n                                                      0.932,\n                                                      -1.251\n                                                  ],\n                                                  [\n                                                      0,\n                                                      -1.56\n                                                  ],\n                                                  [\n                                                      -0.933,\n                                                      -1.251\n                                                  ],\n                                                  [\n                                                      0,\n                                                      0\n                                                  ],\n                                                  [\n                                                      -1.153,\n                                                      -0.344\n                                                  ],\n                                                  [\n                                                      -0.852,\n                                                      -0.851\n                                                  ],\n                                                  [\n                                                      0,\n                                                      0\n                                                  ],\n                                                  [\n                                                      -0.445,\n                                                      -1.495\n                                                  ],\n                                                  [\n                                                      -1.251,\n                                                      -0.932\n                                                  ],\n                                                  [\n                                                      -1.561,\n                                                      0\n                                                  ],\n                                                  [\n                                                      -1.25,\n                                                      0.933\n                                                  ],\n                                                  [\n                                                      0,\n                                                      0\n                                                  ],\n                                                  [\n                                                      -0.344,\n                                                      1.154\n                                                  ],\n                                                  [\n                                                      -0.851,\n                                                      0.851\n                                                  ],\n                                                  [\n                                                      0,\n                                                      0\n                                                  ],\n                                                  [\n                                                      -1.495,\n                                                      0.445\n                                                  ],\n                                                  [\n                                                      -0.933,\n                                                      1.25\n                                                  ],\n                                                  [\n                                                      0,\n                                                      1.559\n                                                  ],\n                                                  [\n                                                      0.932,\n                                                      1.251\n                                                  ]\n                                              ],\n                                              \"v\": [\n                                                  [\n                                                      -0.834,\n                                                      6.896\n                                                  ],\n                                                  [\n                                                      44.729,\n                                                      18.975\n                                                  ],\n                                                  [\n                                                      47.783,\n                                                      20.794\n                                                  ],\n                                                  [\n                                                      49.603,\n                                                      23.848\n                                                  ],\n                                                  [\n                                                      61.637,\n                                                      64.255\n                                                  ],\n                                                  [\n                                                      64.249,\n                                                      67.995\n                                                  ],\n                                                  [\n                                                      68.578,\n                                                      69.431\n                                                  ],\n                                                  [\n                                                      72.906,\n                                                      67.995\n                                                  ],\n                                                  [\n                                                      75.518,\n                                                      64.255\n                                                  ],\n                                                  [\n                                                      87.551,\n                                                      23.848\n                                                  ],\n                                                  [\n                                                      89.372,\n                                                      20.794\n                                                  ],\n                                                  [\n                                                      92.425,\n                                                      18.975\n                                                  ],\n                                                  [\n                                                      132.833,\n                                                      6.94\n                                                  ],\n                                                  [\n                                                      136.572,\n                                                      4.328\n                                                  ],\n                                                  [\n                                                      138.008,\n                                                      0\n                                                  ],\n                                                  [\n                                                      136.572,\n                                                      -4.328\n                                                  ],\n                                                  [\n                                                      132.833,\n                                                      -6.94\n                                                  ],\n                                                  [\n                                                      92.425,\n                                                      -18.974\n                                                  ],\n                                                  [\n                                                      89.372,\n                                                      -20.794\n                                                  ],\n                                                  [\n                                                      87.551,\n                                                      -23.848\n                                                  ],\n                                                  [\n                                                      75.518,\n                                                      -64.257\n                                                  ],\n                                                  [\n                                                      72.906,\n                                                      -67.995\n                                                  ],\n                                                  [\n                                                      68.578,\n                                                      -69.431\n                                                  ],\n                                                  [\n                                                      64.249,\n                                                      -67.995\n                                                  ],\n                                                  [\n                                                      61.637,\n                                                      -64.257\n                                                  ],\n                                                  [\n                                                      49.603,\n                                                      -23.848\n                                                  ],\n                                                  [\n                                                      47.783,\n                                                      -20.794\n                                                  ],\n                                                  [\n                                                      44.729,\n                                                      -18.974\n                                                  ],\n                                                  [\n                                                      -0.834,\n                                                      -6.985\n                                                  ],\n                                                  [\n                                                      -4.572,\n                                                      -4.373\n                                                  ],\n                                                  [\n                                                      -6.008,\n                                                      -0.044\n                                                  ],\n                                                  [\n                                                      -4.572,\n                                                      4.284\n                                                  ]\n                                              ],\n                                              \"c\": true\n                                          }\n                                      ]\n                                  },\n                                  {\n                                      \"i\": {\n                                          \"x\": 0.667,\n                                          \"y\": 1\n                                      },\n                                      \"o\": {\n                                          \"x\": 0.693,\n                                          \"y\": 0\n                                      },\n                                      \"t\": 37,\n                                      \"s\": [\n                                          {\n                                              \"i\": [\n                                                  [\n                                                      -1.495,\n                                                      -0.445\n                                                  ],\n                                                  [\n                                                      0,\n                                                      0\n                                                  ],\n                                                  [\n                                                      -0.851,\n                                                      -0.852\n                                                  ],\n                                                  [\n                                                      -0.344,\n                                                      -1.153\n                                                  ],\n                                                  [\n                                                      0,\n                                                      0\n                                                  ],\n                                                  [\n                                                      -1.25,\n                                                      -0.932\n                                                  ],\n                                                  [\n                                                      -1.561,\n                                                      0\n                                                  ],\n                                                  [\n                                                      -1.251,\n                                                      0.932\n                                                  ],\n                                                  [\n                                                      -0.445,\n                                                      1.496\n                                                  ],\n                                                  [\n                                                      0,\n                                                      0\n                                                  ],\n                                                  [\n                                                      -0.852,\n                                                      0.85\n                                                  ],\n                                                  [\n                                                      -1.153,\n                                                      0.343\n                                                  ],\n                                                  [\n                                                      0,\n                                                      0\n                                                  ],\n                                                  [\n                                                      -0.933,\n                                                      1.251\n                                                  ],\n                                                  [\n                                                      0,\n                                                      1.56\n                                                  ],\n                                                  [\n                                                      0.932,\n                                                      1.25\n                                                  ],\n                                                  [\n                                                      1.496,\n                                                      0.445\n                                                  ],\n                                                  [\n                                                      0,\n                                                      0\n                                                  ],\n                                                  [\n                                                      0.85,\n                                                      0.851\n                                                  ],\n                                                  [\n                                                      0.344,\n                                                      1.154\n                                                  ],\n                                                  [\n                                                      0,\n                                                      0\n                                                  ],\n                                                  [\n                                                      1.251,\n                                                      0.933\n                                                  ],\n                                                  [\n                                                      1.559,\n                                                      0\n                                                  ],\n                                                  [\n                                                      1.25,\n                                                      -0.932\n                                                  ],\n                                                  [\n                                                      0.445,\n                                                      -1.495\n                                                  ],\n                                                  [\n                                                      0,\n                                                      0\n                                                  ],\n                                                  [\n                                                      0.851,\n                                                      -0.851\n                                                  ],\n                                                  [\n                                                      1.153,\n                                                      -0.344\n                                                  ],\n                                                  [\n                                                      0,\n                                                      0\n                                                  ],\n                                                  [\n                                                      0.932,\n                                                      -1.251\n                                                  ],\n                                                  [\n                                                      0,\n                                                      -1.56\n                                                  ],\n                                                  [\n                                                      -0.933,\n                                                      -1.251\n                                                  ]\n                                              ],\n                                              \"o\": [\n                                                  [\n                                                      0,\n                                                      0\n                                                  ],\n                                                  [\n                                                      1.153,\n                                                      0.343\n                                                  ],\n                                                  [\n                                                      0.851,\n                                                      0.85\n                                                  ],\n                                                  [\n                                                      0,\n                                                      0\n                                                  ],\n                                                  [\n                                                      0.445,\n                                                      1.496\n                                                  ],\n                                                  [\n                                                      1.25,\n                                                      0.932\n                                                  ],\n                                                  [\n                                                      1.559,\n                                                      0\n                                                  ],\n                                                  [\n                                                      1.251,\n                                                      -0.932\n                                                  ],\n                                                  [\n                                                      0,\n                                                      0\n                                                  ],\n                                                  [\n                                                      0.344,\n                                                      -1.153\n                                                  ],\n                                                  [\n                                                      0.85,\n                                                      -0.852\n                                                  ],\n                                                  [\n                                                      0,\n                                                      0\n                                                  ],\n                                                  [\n                                                      1.496,\n                                                      -0.445\n                                                  ],\n                                                  [\n                                                      0.932,\n                                                      -1.251\n                                                  ],\n                                                  [\n                                                      0,\n                                                      -1.56\n                                                  ],\n                                                  [\n                                                      -0.933,\n                                                      -1.251\n                                                  ],\n                                                  [\n                                                      0,\n                                                      0\n                                                  ],\n                                                  [\n                                                      -1.153,\n                                                      -0.344\n                                                  ],\n                                                  [\n                                                      -0.852,\n                                                      -0.851\n                                                  ],\n                                                  [\n                                                      0,\n                                                      0\n                                                  ],\n                                                  [\n                                                      -0.445,\n                                                      -1.495\n                                                  ],\n                                                  [\n                                                      -1.251,\n                                                      -0.932\n                                                  ],\n                                                  [\n                                                      -1.561,\n                                                      0\n                                                  ],\n                                                  [\n                                                      -1.25,\n                                                      0.933\n                                                  ],\n                                                  [\n                                                      0,\n                                                      0\n                                                  ],\n                                                  [\n                                                      -0.344,\n                                                      1.154\n                                                  ],\n                                                  [\n                                                      -0.851,\n                                                      0.851\n                                                  ],\n                                                  [\n                                                      0,\n                                                      0\n                                                  ],\n                                                  [\n                                                      -1.495,\n                                                      0.445\n                                                  ],\n                                                  [\n                                                      -0.933,\n                                                      1.25\n                                                  ],\n                                                  [\n                                                      0,\n                                                      1.559\n                                                  ],\n                                                  [\n                                                      0.932,\n                                                      1.251\n                                                  ]\n                                              ],\n                                              \"v\": [\n                                                  [\n                                                      -0.834,\n                                                      6.896\n                                                  ],\n                                                  [\n                                                      44.729,\n                                                      18.975\n                                                  ],\n                                                  [\n                                                      47.783,\n                                                      20.794\n                                                  ],\n                                                  [\n                                                      49.603,\n                                                      23.848\n                                                  ],\n                                                  [\n                                                      61.637,\n                                                      64.255\n                                                  ],\n                                                  [\n                                                      64.249,\n                                                      67.995\n                                                  ],\n                                                  [\n                                                      68.578,\n                                                      69.431\n                                                  ],\n                                                  [\n                                                      72.906,\n                                                      67.995\n                                                  ],\n                                                  [\n                                                      75.518,\n                                                      64.255\n                                                  ],\n                                                  [\n                                                      87.551,\n                                                      23.848\n                                                  ],\n                                                  [\n                                                      89.372,\n                                                      20.794\n                                                  ],\n                                                  [\n                                                      92.425,\n                                                      18.975\n                                                  ],\n                                                  [\n                                                      132.833,\n                                                      6.94\n                                                  ],\n                                                  [\n                                                      136.572,\n                                                      4.328\n                                                  ],\n                                                  [\n                                                      138.008,\n                                                      0\n                                                  ],\n                                                  [\n                                                      136.572,\n                                                      -4.328\n                                                  ],\n                                                  [\n                                                      132.833,\n                                                      -6.94\n                                                  ],\n                                                  [\n                                                      92.425,\n                                                      -18.974\n                                                  ],\n                                                  [\n                                                      89.372,\n                                                      -20.794\n                                                  ],\n                                                  [\n                                                      87.551,\n                                                      -23.848\n                                                  ],\n                                                  [\n                                                      75.518,\n                                                      -64.257\n                                                  ],\n                                                  [\n                                                      72.906,\n                                                      -67.995\n                                                  ],\n                                                  [\n                                                      68.578,\n                                                      -69.431\n                                                  ],\n                                                  [\n                                                      64.249,\n                                                      -67.995\n                                                  ],\n                                                  [\n                                                      61.637,\n                                                      -64.257\n                                                  ],\n                                                  [\n                                                      49.603,\n                                                      -23.848\n                                                  ],\n                                                  [\n                                                      47.783,\n                                                      -20.794\n                                                  ],\n                                                  [\n                                                      44.729,\n                                                      -18.974\n                                                  ],\n                                                  [\n                                                      -0.834,\n                                                      -6.985\n                                                  ],\n                                                  [\n                                                      -4.572,\n                                                      -4.373\n                                                  ],\n                                                  [\n                                                      -6.008,\n                                                      -0.044\n                                                  ],\n                                                  [\n                                                      -4.572,\n                                                      4.284\n                                                  ]\n                                              ],\n                                              \"c\": true\n                                          }\n                                      ]\n                                  },\n                                  {\n                                      \"i\": {\n                                          \"x\": 0.667,\n                                          \"y\": 1\n                                      },\n                                      \"o\": {\n                                          \"x\": 0.333,\n                                          \"y\": 0\n                                      },\n                                      \"t\": 62,\n                                      \"s\": [\n                                          {\n                                              \"i\": [\n                                                  [\n                                                      -1.495,\n                                                      -0.445\n                                                  ],\n                                                  [\n                                                      0,\n                                                      0\n                                                  ],\n                                                  [\n                                                      -0.851,\n                                                      -0.852\n                                                  ],\n                                                  [\n                                                      -0.344,\n                                                      -1.153\n                                                  ],\n                                                  [\n                                                      0,\n                                                      0\n                                                  ],\n                                                  [\n                                                      -1.25,\n                                                      -0.932\n                                                  ],\n                                                  [\n                                                      -1.561,\n                                                      0\n                                                  ],\n                                                  [\n                                                      -1.251,\n                                                      0.932\n                                                  ],\n                                                  [\n                                                      -0.445,\n                                                      1.496\n                                                  ],\n                                                  [\n                                                      0,\n                                                      0\n                                                  ],\n                                                  [\n                                                      -0.852,\n                                                      0.85\n                                                  ],\n                                                  [\n                                                      -1.153,\n                                                      0.343\n                                                  ],\n                                                  [\n                                                      0,\n                                                      0\n                                                  ],\n                                                  [\n                                                      -0.933,\n                                                      1.251\n                                                  ],\n                                                  [\n                                                      0,\n                                                      1.56\n                                                  ],\n                                                  [\n                                                      0.932,\n                                                      1.25\n                                                  ],\n                                                  [\n                                                      1.496,\n                                                      0.445\n                                                  ],\n                                                  [\n                                                      0,\n                                                      0\n                                                  ],\n                                                  [\n                                                      0.85,\n                                                      0.851\n                                                  ],\n                                                  [\n                                                      0.344,\n                                                      1.154\n                                                  ],\n                                                  [\n                                                      0,\n                                                      0\n                                                  ],\n                                                  [\n                                                      1.251,\n                                                      0.933\n                                                  ],\n                                                  [\n                                                      1.559,\n                                                      0\n                                                  ],\n                                                  [\n                                                      1.25,\n                                                      -0.932\n                                                  ],\n                                                  [\n                                                      0.445,\n                                                      -1.495\n                                                  ],\n                                                  [\n                                                      0,\n                                                      0\n                                                  ],\n                                                  [\n                                                      0.851,\n                                                      -0.851\n                                                  ],\n                                                  [\n                                                      1.153,\n                                                      -0.344\n                                                  ],\n                                                  [\n                                                      0,\n                                                      0\n                                                  ],\n                                                  [\n                                                      0.932,\n                                                      -1.251\n                                                  ],\n                                                  [\n                                                      0,\n                                                      -1.56\n                                                  ],\n                                                  [\n                                                      -0.933,\n                                                      -1.251\n                                                  ]\n                                              ],\n                                              \"o\": [\n                                                  [\n                                                      0,\n                                                      0\n                                                  ],\n                                                  [\n                                                      1.153,\n                                                      0.343\n                                                  ],\n                                                  [\n                                                      0.851,\n                                                      0.85\n                                                  ],\n                                                  [\n                                                      0,\n                                                      0\n                                                  ],\n                                                  [\n                                                      0.445,\n                                                      1.496\n                                                  ],\n                                                  [\n                                                      1.25,\n                                                      0.932\n                                                  ],\n                                                  [\n                                                      1.559,\n                                                      0\n                                                  ],\n                                                  [\n                                                      1.251,\n                                                      -0.932\n                                                  ],\n                                                  [\n                                                      0,\n                                                      0\n                                                  ],\n                                                  [\n                                                      0.344,\n                                                      -1.153\n                                                  ],\n                                                  [\n                                                      0.85,\n                                                      -0.852\n                                                  ],\n                                                  [\n                                                      0,\n                                                      0\n                                                  ],\n                                                  [\n                                                      1.496,\n                                                      -0.445\n                                                  ],\n                                                  [\n                                                      0.932,\n                                                      -1.251\n                                                  ],\n                                                  [\n                                                      0,\n                                                      -1.56\n                                                  ],\n                                                  [\n                                                      -0.933,\n                                                      -1.251\n                                                  ],\n                                                  [\n                                                      0,\n                                                      0\n                                                  ],\n                                                  [\n                                                      -1.153,\n                                                      -0.344\n                                                  ],\n                                                  [\n                                                      -0.852,\n                                                      -0.851\n                                                  ],\n                                                  [\n                                                      0,\n                                                      0\n                                                  ],\n                                                  [\n                                                      -0.445,\n                                                      -1.495\n                                                  ],\n                                                  [\n                                                      -1.251,\n                                                      -0.932\n                                                  ],\n                                                  [\n                                                      -1.561,\n                                                      0\n                                                  ],\n                                                  [\n                                                      -1.25,\n                                                      0.933\n                                                  ],\n                                                  [\n                                                      0,\n                                                      0\n                                                  ],\n                                                  [\n                                                      -0.344,\n                                                      1.154\n                                                  ],\n                                                  [\n                                                      -0.851,\n                                                      0.851\n                                                  ],\n                                                  [\n                                                      0,\n                                                      0\n                                                  ],\n                                                  [\n                                                      -1.495,\n                                                      0.445\n                                                  ],\n                                                  [\n                                                      -0.933,\n                                                      1.25\n                                                  ],\n                                                  [\n                                                      0,\n                                                      1.559\n                                                  ],\n                                                  [\n                                                      0.932,\n                                                      1.251\n                                                  ]\n                                              ],\n                                              \"v\": [\n                                                  [\n                                                      -132.834,\n                                                      6.94\n                                                  ],\n                                                  [\n                                                      44.729,\n                                                      18.975\n                                                  ],\n                                                  [\n                                                      47.783,\n                                                      20.794\n                                                  ],\n                                                  [\n                                                      49.603,\n                                                      23.848\n                                                  ],\n                                                  [\n                                                      61.637,\n                                                      64.255\n                                                  ],\n                                                  [\n                                                      64.249,\n                                                      67.995\n                                                  ],\n                                                  [\n                                                      68.578,\n                                                      69.431\n                                                  ],\n                                                  [\n                                                      72.906,\n                                                      67.995\n                                                  ],\n                                                  [\n                                                      75.518,\n                                                      64.255\n                                                  ],\n                                                  [\n                                                      87.551,\n                                                      23.848\n                                                  ],\n                                                  [\n                                                      89.372,\n                                                      20.794\n                                                  ],\n                                                  [\n                                                      92.425,\n                                                      18.975\n                                                  ],\n                                                  [\n                                                      132.833,\n                                                      6.94\n                                                  ],\n                                                  [\n                                                      136.572,\n                                                      4.328\n                                                  ],\n                                                  [\n                                                      138.008,\n                                                      0\n                                                  ],\n                                                  [\n                                                      136.572,\n                                                      -4.328\n                                                  ],\n                                                  [\n                                                      132.833,\n                                                      -6.94\n                                                  ],\n                                                  [\n                                                      92.425,\n                                                      -18.974\n                                                  ],\n                                                  [\n                                                      89.372,\n                                                      -20.794\n                                                  ],\n                                                  [\n                                                      87.551,\n                                                      -23.848\n                                                  ],\n                                                  [\n                                                      75.518,\n                                                      -64.257\n                                                  ],\n                                                  [\n                                                      72.906,\n                                                      -67.995\n                                                  ],\n                                                  [\n                                                      68.578,\n                                                      -69.431\n                                                  ],\n                                                  [\n                                                      64.249,\n                                                      -67.995\n                                                  ],\n                                                  [\n                                                      61.637,\n                                                      -64.257\n                                                  ],\n                                                  [\n                                                      49.603,\n                                                      -23.848\n                                                  ],\n                                                  [\n                                                      47.783,\n                                                      -20.794\n                                                  ],\n                                                  [\n                                                      44.729,\n                                                      -18.974\n                                                  ],\n                                                  [\n                                                      -132.834,\n                                                      -6.94\n                                                  ],\n                                                  [\n                                                      -136.572,\n                                                      -4.328\n                                                  ],\n                                                  [\n                                                      -138.008,\n                                                      0.001\n                                                  ],\n                                                  [\n                                                      -136.572,\n                                                      4.328\n                                                  ]\n                                              ],\n                                              \"c\": true\n                                          }\n                                      ]\n                                  },\n                                  {\n                                      \"t\": 74.0000030140818,\n                                      \"s\": [\n                                          {\n                                              \"i\": [\n                                                  [\n                                                      -1.495,\n                                                      -0.445\n                                                  ],\n                                                  [\n                                                      0,\n                                                      0\n                                                  ],\n                                                  [\n                                                      -0.851,\n                                                      -0.852\n                                                  ],\n                                                  [\n                                                      -0.344,\n                                                      -1.153\n                                                  ],\n                                                  [\n                                                      0,\n                                                      0\n                                                  ],\n                                                  [\n                                                      -1.25,\n                                                      -0.932\n                                                  ],\n                                                  [\n                                                      -1.561,\n                                                      0\n                                                  ],\n                                                  [\n                                                      -1.251,\n                                                      0.932\n                                                  ],\n                                                  [\n                                                      -0.445,\n                                                      1.496\n                                                  ],\n                                                  [\n                                                      0,\n                                                      0\n                                                  ],\n                                                  [\n                                                      -0.852,\n                                                      0.85\n                                                  ],\n                                                  [\n                                                      -1.153,\n                                                      0.343\n                                                  ],\n                                                  [\n                                                      0,\n                                                      0\n                                                  ],\n                                                  [\n                                                      -0.933,\n                                                      1.251\n                                                  ],\n                                                  [\n                                                      0,\n                                                      1.56\n                                                  ],\n                                                  [\n                                                      0.932,\n                                                      1.25\n                                                  ],\n                                                  [\n                                                      1.496,\n                                                      0.445\n                                                  ],\n                                                  [\n                                                      0,\n                                                      0\n                                                  ],\n                                                  [\n                                                      0.85,\n                                                      0.851\n                                                  ],\n                                                  [\n                                                      0.344,\n                                                      1.154\n                                                  ],\n                                                  [\n                                                      0,\n                                                      0\n                                                  ],\n                                                  [\n                                                      1.251,\n                                                      0.933\n                                                  ],\n                                                  [\n                                                      1.559,\n                                                      0\n                                                  ],\n                                                  [\n                                                      1.25,\n                                                      -0.932\n                                                  ],\n                                                  [\n                                                      0.445,\n                                                      -1.495\n                                                  ],\n                                                  [\n                                                      0,\n                                                      0\n                                                  ],\n                                                  [\n                                                      0.851,\n                                                      -0.851\n                                                  ],\n                                                  [\n                                                      1.153,\n                                                      -0.344\n                                                  ],\n                                                  [\n                                                      0,\n                                                      0\n                                                  ],\n                                                  [\n                                                      0.932,\n                                                      -1.251\n                                                  ],\n                                                  [\n                                                      0,\n                                                      -1.56\n                                                  ],\n                                                  [\n                                                      -0.933,\n                                                      -1.251\n                                                  ]\n                                              ],\n                                              \"o\": [\n                                                  [\n                                                      0,\n                                                      0\n                                                  ],\n                                                  [\n                                                      1.153,\n                                                      0.343\n                                                  ],\n                                                  [\n                                                      0.851,\n                                                      0.85\n                                                  ],\n                                                  [\n                                                      0,\n                                                      0\n                                                  ],\n                                                  [\n                                                      0.445,\n                                                      1.496\n                                                  ],\n                                                  [\n                                                      1.25,\n                                                      0.932\n                                                  ],\n                                                  [\n                                                      1.559,\n                                                      0\n                                                  ],\n                                                  [\n                                                      1.251,\n                                                      -0.932\n                                                  ],\n                                                  [\n                                                      0,\n                                                      0\n                                                  ],\n                                                  [\n                                                      0.344,\n                                                      -1.153\n                                                  ],\n                                                  [\n                                                      0.85,\n                                                      -0.852\n                                                  ],\n                                                  [\n                                                      0,\n                                                      0\n                                                  ],\n                                                  [\n                                                      1.496,\n                                                      -0.445\n                                                  ],\n                                                  [\n                                                      0.932,\n                                                      -1.251\n                                                  ],\n                                                  [\n                                                      0,\n                                                      -1.56\n                                                  ],\n                                                  [\n                                                      -0.933,\n                                                      -1.251\n                                                  ],\n                                                  [\n                                                      0,\n                                                      0\n                                                  ],\n                                                  [\n                                                      -1.153,\n                                                      -0.344\n                                                  ],\n                                                  [\n                                                      -0.852,\n                                                      -0.851\n                                                  ],\n                                                  [\n                                                      0,\n                                                      0\n                                                  ],\n                                                  [\n                                                      -0.445,\n                                                      -1.495\n                                                  ],\n                                                  [\n                                                      -1.251,\n                                                      -0.932\n                                                  ],\n                                                  [\n                                                      -1.561,\n                                                      0\n                                                  ],\n                                                  [\n                                                      -1.25,\n                                                      0.933\n                                                  ],\n                                                  [\n                                                      0,\n                                                      0\n                                                  ],\n                                                  [\n                                                      -0.344,\n                                                      1.154\n                                                  ],\n                                                  [\n                                                      -0.851,\n                                                      0.851\n                                                  ],\n                                                  [\n                                                      0,\n                                                      0\n                                                  ],\n                                                  [\n                                                      -1.495,\n                                                      0.445\n                                                  ],\n                                                  [\n                                                      -0.933,\n                                                      1.25\n                                                  ],\n                                                  [\n                                                      0,\n                                                      1.559\n                                                  ],\n                                                  [\n                                                      0.932,\n                                                      1.251\n                                                  ]\n                                              ],\n                                              \"v\": [\n                                                  [\n                                                      -132.834,\n                                                      6.94\n                                                  ],\n                                                  [\n                                                      44.729,\n                                                      18.975\n                                                  ],\n                                                  [\n                                                      47.783,\n                                                      20.794\n                                                  ],\n                                                  [\n                                                      49.603,\n                                                      23.848\n                                                  ],\n                                                  [\n                                                      61.637,\n                                                      64.255\n                                                  ],\n                                                  [\n                                                      64.249,\n                                                      67.995\n                                                  ],\n                                                  [\n                                                      68.578,\n                                                      69.431\n                                                  ],\n                                                  [\n                                                      72.906,\n                                                      67.995\n                                                  ],\n                                                  [\n                                                      75.518,\n                                                      64.255\n                                                  ],\n                                                  [\n                                                      87.551,\n                                                      23.848\n                                                  ],\n                                                  [\n                                                      89.372,\n                                                      20.794\n                                                  ],\n                                                  [\n                                                      92.425,\n                                                      18.975\n                                                  ],\n                                                  [\n                                                      132.833,\n                                                      6.94\n                                                  ],\n                                                  [\n                                                      136.572,\n                                                      4.328\n                                                  ],\n                                                  [\n                                                      138.008,\n                                                      0\n                                                  ],\n                                                  [\n                                                      136.572,\n                                                      -4.328\n                                                  ],\n                                                  [\n                                                      132.833,\n                                                      -6.94\n                                                  ],\n                                                  [\n                                                      92.425,\n                                                      -18.974\n                                                  ],\n                                                  [\n                                                      89.372,\n                                                      -20.794\n                                                  ],\n                                                  [\n                                                      87.551,\n                                                      -23.848\n                                                  ],\n                                                  [\n                                                      75.518,\n                                                      -64.257\n                                                  ],\n                                                  [\n                                                      72.906,\n                                                      -67.995\n                                                  ],\n                                                  [\n                                                      68.578,\n                                                      -69.431\n                                                  ],\n                                                  [\n                                                      64.249,\n                                                      -67.995\n                                                  ],\n                                                  [\n                                                      61.637,\n                                                      -64.257\n                                                  ],\n                                                  [\n                                                      49.603,\n                                                      -23.848\n                                                  ],\n                                                  [\n                                                      47.783,\n                                                      -20.794\n                                                  ],\n                                                  [\n                                                      44.729,\n                                                      -18.974\n                                                  ],\n                                                  [\n                                                      -132.834,\n                                                      -6.94\n                                                  ],\n                                                  [\n                                                      -136.572,\n                                                      -4.328\n                                                  ],\n                                                  [\n                                                      -138.008,\n                                                      0.001\n                                                  ],\n                                                  [\n                                                      -136.572,\n                                                      4.328\n                                                  ]\n                                              ],\n                                              \"c\": true\n                                          }\n                                      ]\n                                  }\n                              ],\n                              \"ix\": 2\n                          },\n                          \"nm\": \"Path 1\",\n                          \"mn\": \"ADBE Vector Shape - Group\",\n                          \"hd\": false\n                      },\n                      {\n                          \"ty\": \"fl\",\n                          \"c\": {\n                              \"a\": 0,\n                              \"k\": [\n                                  0,\n                                  0,\n                                  0,\n                                  1\n                              ],\n                              \"ix\": 4\n                          },\n                          \"o\": {\n                              \"a\": 0,\n                              \"k\": 100,\n                              \"ix\": 5\n                          },\n                          \"r\": 1,\n                          \"bm\": 0,\n                          \"nm\": \"Fill 1\",\n                          \"mn\": \"ADBE Vector Graphic - Fill\",\n                          \"hd\": false\n                      },\n                      {\n                          \"ty\": \"tr\",\n                          \"p\": {\n                              \"a\": 0,\n                              \"k\": [\n                                  138.258,\n                                  69.681\n                              ],\n                              \"ix\": 2\n                          },\n                          \"a\": {\n                              \"a\": 0,\n                              \"k\": [\n                                  0,\n                                  0\n                              ],\n                              \"ix\": 1\n                          },\n                          \"s\": {\n                              \"a\": 0,\n                              \"k\": [\n                                  100,\n                                  100\n                              ],\n                              \"ix\": 3\n                          },\n                          \"r\": {\n                              \"a\": 0,\n                              \"k\": 0,\n                              \"ix\": 6\n                          },\n                          \"o\": {\n                              \"a\": 0,\n                              \"k\": 100,\n                              \"ix\": 7\n                          },\n                          \"sk\": {\n                              \"a\": 0,\n                              \"k\": 0,\n                              \"ix\": 4\n                          },\n                          \"sa\": {\n                              \"a\": 0,\n                              \"k\": 0,\n                              \"ix\": 5\n                          },\n                          \"nm\": \"Transform\"\n                      }\n                  ],\n                  \"nm\": \"Group 1\",\n                  \"np\": 2,\n                  \"cix\": 2,\n                  \"bm\": 0,\n                  \"ix\": 1,\n                  \"mn\": \"ADBE Vector Group\",\n                  \"hd\": false\n              }\n          ],\n          \"ip\": -21.0000008553475,\n          \"op\": 135.000005498663,\n          \"st\": -21.0000008553475,\n          \"ct\": 1,\n          \"bm\": 0\n      }\n  ],\n  \"markers\": [],\n  \"props\": {}\n}","import { Suspense, lazy } from 'react';\n\nimport { Color } from '../../lib/animation-colors/colors';\nimport { hexToRgb } from '../../lib/animation-colors/hex-to-rgb';\nimport { Solver } from '../../lib/animation-colors/solver';\nimport bitteAnimation from './../../assets/bitte_animation.json';\n\n// Dynamically import Lottie to prevent Node 22 client errors\nconst Lottie = lazy(\n  () => import('react-lottie-player/dist/LottiePlayerLight.js'),\n);\n\nexport const BitteSpinner = ({\n  width = 200,\n  height = 200,\n  color,\n}: {\n  width?: number;\n  height?: number;\n  color: string;\n}) => {\n  const rgb = hexToRgb(color) || [0, 0, 0];\n\n  const colorObj = new Color(rgb[0], rgb[1], rgb[2]);\n  const solver = new Solver(colorObj);\n  const result = solver.solve();\n\n  return (\n    <Suspense fallback={<div style={{ width, height }} />}>\n      <Lottie\n        loop\n        animationData={bitteAnimation}\n        play\n        speed={1.5}\n        style={{ width, height, filter: result.filter }}\n      />\n    </Suspense>\n  );\n};\n","import {\n  type BitteToolResult,\n  CustomToolComponent,\n  type MessageAppend,\n  MessageGroupComponentProps,\n  SmartActionAiMessage,\n} from '@bitte-ai/types';\nimport equal from 'fast-deep-equal';\nimport { AnimatePresence, motion } from 'framer-motion';\nimport { memo, useState } from 'react';\nimport { cn } from '../../lib/utils';\nimport { MessageGroup } from './MessageGroup';\n\ninterface MessageItemProps {\n  meta: {\n    chatId: string | undefined;\n    accountId: string;\n    creator?: string;\n    agentName?: string;\n    agentImage?: string;\n  };\n  message: SmartActionAiMessage;\n  isLoading: boolean;\n  theme?: {\n    messageBackgroundColor?: string;\n    borderColor?: string;\n    textColor?: string;\n    showBorder?: boolean;\n    requiresScrollPadding?: boolean;\n    isWidgetMode?: boolean;\n    hasAutoPrompt?: boolean;\n  };\n  actions: {\n    addToolResult: (params: {\n      toolCallId: string;\n      result: BitteToolResult<unknown>;\n    }) => void;\n    append: MessageAppend;\n    hideToolCall?: boolean;\n  };\n  customComponents?: {\n    messageContainer?: React.ComponentType<MessageGroupComponentProps>;\n    toolComponents?: CustomToolComponent[];\n  };\n}\n\nconst MessageItemComponent = ({\n  meta,\n  message,\n  isLoading,\n  theme = {},\n  actions,\n  customComponents = {},\n}: MessageItemProps) => {\n  // Skip system messages\n  if (message.role === 'system') return null;\n\n  // Synchronous height check to prevent delayed re-renders\n  const getInitialScreenSize = () => {\n    if (typeof window !== 'undefined') {\n      return window.innerHeight > 800;\n    }\n    return true; // Default for SSR\n  };\n\n  const [isLargeScreen] = useState(getInitialScreenSize);\n\n  const {\n    messageBackgroundColor,\n    borderColor,\n    textColor,\n    showBorder,\n    requiresScrollPadding,\n    isWidgetMode,\n    hasAutoPrompt,\n  } = theme;\n\n  const { addToolResult, append, hideToolCall } = actions;\n  const { messageContainer, toolComponents } = customComponents;\n\n  // Disable animations for auto-prompt to prevent flickering\n  const shouldAnimate = !hasAutoPrompt;\n\n  const messageGroupProps = {\n    chatId: meta.chatId,\n    groupKey: `message-${message.id}`,\n    messages: [message],\n    accountId: meta.accountId,\n    creator: meta.creator,\n    isLoading,\n    messageBackgroundColor: messageBackgroundColor || '',\n    borderColor: borderColor || '',\n    textColor: textColor || '',\n    agentImage: meta.agentImage,\n    agentName: meta.agentName,\n    addToolResult,\n    append,\n    customMessageContainer: messageContainer,\n    customTxContainer: undefined,\n    customApproveTxButton: undefined,\n    customDeclineTxButton: undefined,\n    customToolComponents: toolComponents,\n    showBorder: showBorder || false,\n    hideToolCall: hideToolCall || false,\n  };\n\n  return (\n    <AnimatePresence>\n      <motion.div\n        data-testid={`message-${message.role}`}\n        className=\"bitte-w-full bitte-mx-auto bitte-max-w-3xl bitte-px-4\"\n        initial={shouldAnimate ? { y: 5, opacity: 0 } : false}\n        animate={shouldAnimate ? { y: 0, opacity: 1 } : false}\n        data-role={message.role}\n      >\n        <div\n          className={cn('bitte-flex bitte-flex-col bitte-gap-4 bitte-w-full', {\n            // Desktop: Full padding (min-h-96 = 384px)\n            'bitte-min-h-96':\n              message.role === 'assistant' &&\n              requiresScrollPadding &&\n              !isWidgetMode,\n\n            // Widget on larger screens: Reduced padding (min-h-64 = 256px)\n            'bitte-min-h-64':\n              message.role === 'assistant' &&\n              requiresScrollPadding &&\n              isWidgetMode &&\n              isLargeScreen,\n\n            // Widget on smaller screens: Minimal padding (min-h-48 = 192px)\n            'bitte-min-h-48':\n              message.role === 'assistant' &&\n              requiresScrollPadding &&\n              isWidgetMode &&\n              !isLargeScreen,\n          })}\n        >\n          <MessageGroup {...messageGroupProps} />\n        </div>\n      </motion.div>\n    </AnimatePresence>\n  );\n};\n\nexport const MessageItem = memo(\n  MessageItemComponent,\n  (prevProps, nextProps) => {\n    // Early exit optimizations - cheap comparisons first\n    if (prevProps.message.id !== nextProps.message.id) return false;\n    if (prevProps.isLoading !== nextProps.isLoading) return false;\n\n    // Check theme changes\n    if (\n      prevProps.theme?.requiresScrollPadding !==\n      nextProps.theme?.requiresScrollPadding\n    )\n      return false;\n    if (prevProps.theme?.showBorder !== nextProps.theme?.showBorder)\n      return false;\n    if (prevProps.theme?.isWidgetMode !== nextProps.theme?.isWidgetMode)\n      return false;\n\n    // Check action changes\n    if (prevProps.actions.hideToolCall !== nextProps.actions.hideToolCall)\n      return false;\n\n    // Expensive deep comparison last\n    if (!equal(prevProps.message, nextProps.message)) return false;\n\n    return true;\n  },\n);\n","const BITTE_BLACK_IMG =\n  'https://storage.googleapis.com/bitte-public/symbol-dark.svg';\nconst BITTE_IMG =\n  'https://storage.googleapis.com/bitte-public/symbol-light.svg';\n\nexport { BITTE_BLACK_IMG, BITTE_IMG };\n","export const isMarkdownTableString = (message: string) => {\n  // Match a line that starts with a pipe (|)and includes at least one more pipe\n  const regex = /^\\|.*\\|.*$/gm;\n\n  return regex.test(message);\n};\n\nexport const isDataString = (str: string): boolean => {\n  const cleaned = str\n    .replace(/\\\\n/g, '') // Remove escaped newlines\n    .replace(/\\s+/g, ' ') // Replace multiple whitespace with single space\n    .replace(/['\"]/g, '') // Remove quotes\n    .trim();\n\n  // Match a string that starts with {, [, or contains :\n  const regex = /^\\s*[{\\[]|:\\s*/;\n  return regex.test(cleaned);\n};\n","import { ChartConfig } from '../components/ui/chart';\n\nexport type ChartType = 'line' | 'bar' | 'area' | 'candle';\nexport type DataFormat = 'number' | 'currency' | 'percentage';\nexport type TimeValue = string | number;\nexport type RawDataPoint = [TimeValue, number, ...number[]];\nexport type ChartDataPoint = {\n  time: number;\n  [key: string]: number;\n};\nexport type OhlcDataPoint = {\n  time: number;\n  open: number;\n  close: number;\n  high: number;\n  low: number;\n};\n\nexport type MetricData = {\n  metric: string;\n  percentageChange: number;\n  isPositive: boolean;\n  isCandle: boolean;\n};\n\nexport type ChartProps<T extends ChartType = ChartType> = {\n  chartConfig: ChartConfig;\n  timeKey: string;\n  metricKeys: string[];\n  chartData: T extends 'candle' ? OhlcDataPoint[] : ChartDataPoint[];\n  dateFormatter: (timestamp: number, compact?: boolean) => string;\n  valueFormatter: (value: unknown, compact?: boolean) => string;\n};\n\nexport type ChartWrapperProps<T extends ChartType = ChartType> = Omit<\n  ChartProps<T>,\n  'dateFormatter' | 'valueFormatter' | 'metricKeys' | 'timeKey'\n> & {\n  title: string;\n  description: string;\n  metricLabels: string[];\n  metricData: MetricData[];\n  chartType: T;\n  dataFormat?: DataFormat;\n};\n\nexport type RenderChartArgs = Omit<\n  ChartWrapperProps,\n  'chartConfig' | 'chartData'\n> & {\n  metricLabels: string[];\n  dataPoints: [TimeValue, ...number[]][];\n};\n\nexport const CHART_COLORS = [\n  'hsl(var(--chart-1))',\n  'hsl(var(--chart-2))',\n  'hsl(var(--chart-3))',\n  'hsl(var(--chart-4))',\n  'hsl(var(--chart-5))',\n];\n\nconst parseTimestamp = (value: string | number): number => {\n  if (typeof value === 'number') {\n    // Heuristic: if the number is less than 10^11, it's probably in seconds, not ms.\n    // Unix seconds from 1970 are around 1,000,000,000 (10^9),\n    // whereas current ms timestamps are > 1,000,000,000,000 (10^12).\n    return value < 100000000000 ? value * 1000 : value;\n  } else if (typeof value === 'string') {\n    const date = new Date(value);\n    if (isNaN(date.getTime())) {\n      throw new Error(`Invalid date string: ${value}`);\n    }\n    return date.getTime();\n  } else {\n    throw new Error(`Unsupported timestamp type: ${typeof value}`);\n  }\n};\n\nconst getBestTimescale = (\n  oldestTimestamp: number,\n  latestTimestamp: number,\n): 'year' | 'month' | 'day' | 'hour' | 'minute' => {\n  const diffInMinutes = (latestTimestamp - oldestTimestamp) / (1000 * 60);\n\n  if (diffInMinutes < 60) return 'minute';\n  if (diffInMinutes < 24 * 60) return 'hour';\n  if (diffInMinutes < 31 * 24 * 60) return 'day';\n  if (diffInMinutes < 365 * 24 * 60) return 'month';\n  return 'year';\n};\nconst formatTimestamp = (\n  timestamp: number,\n  timescale: 'year' | 'month' | 'day' | 'hour' | 'minute',\n  compact = false,\n): string => {\n  const date = new Date(timestamp);\n  const options: Intl.DateTimeFormatOptions = {\n    timeZone: 'UTC',\n    year: 'numeric',\n    month: 'short',\n    day: 'numeric',\n    hour: timescale === 'minute' ? '2-digit' : undefined,\n    minute: timescale === 'minute' ? '2-digit' : undefined,\n  };\n\n  if (!compact) {\n    return date.toLocaleString('en-US', options);\n  }\n\n  // For compact view, remove fields based on timescale\n  switch (timescale) {\n    case 'minute':\n      delete options.year;\n      delete options.month;\n      delete options.day;\n      break;\n    case 'hour':\n      delete options.year;\n      delete options.month;\n      delete options.minute;\n      break;\n    case 'day':\n      delete options.year;\n      delete options.hour;\n      delete options.minute;\n      break;\n    case 'month':\n      delete options.day;\n      delete options.hour;\n      delete options.minute;\n      break;\n    case 'year':\n      delete options.month;\n      delete options.day;\n      delete options.hour;\n      delete options.minute;\n      break;\n  }\n\n  return date.toLocaleString('en-US', options);\n};\n\nexport const getDateFormatter = ({\n  startTimeValue,\n  endTimeValue,\n}: {\n  startTimeValue: TimeValue;\n  endTimeValue: TimeValue;\n}): ((timestamp: number, compact?: boolean) => string) => {\n  const startTimestamp = parseTimestamp(startTimeValue);\n  const endTimestamp = parseTimestamp(endTimeValue);\n  const timescale = getBestTimescale(startTimestamp, endTimestamp);\n  return (timestamp: number, compact = true) =>\n    formatTimestamp(timestamp, timescale, compact);\n};\n\nexport const formatValue = ({\n  value,\n  dataFormat,\n  compact,\n}: {\n  value: unknown;\n  dataFormat: DataFormat;\n  compact?: boolean;\n}): string => {\n  if (typeof value === 'number') {\n    const maximumFractionDigits = compact && value >= 10000 ? 0 : 2;\n\n    if (dataFormat === 'currency') {\n      return value.toLocaleString('en-US', {\n        style: 'currency',\n        currency: 'USD',\n        notation: compact ? 'compact' : 'standard',\n        maximumFractionDigits,\n      });\n    }\n    if (dataFormat === 'percentage') {\n      return value.toLocaleString('en-US', {\n        style: 'percent',\n        notation: compact ? 'compact' : 'standard',\n        maximumFractionDigits,\n      });\n    }\n  }\n  return value?.toString() || '';\n};\n","import * as React from 'react';\n\nimport { cn } from '../../lib/utils';\n\nconst Card = React.forwardRef<\n  HTMLDivElement,\n  React.HTMLAttributes<HTMLDivElement>\n>(({ className, style, ...props }, ref) => (\n  <div\n    ref={ref}\n    className={cn(\n      'bitte-rounded-md bitte-text-card-foreground bitte-shadow sm:bitte-min-w-[300px] xl:bitte-min-w-[432px]',\n      className,\n    )}\n    style={style}\n    {...props}\n  />\n));\nCard.displayName = 'Card';\n\nconst CardHeader = React.forwardRef<\n  HTMLDivElement,\n  React.HTMLAttributes<HTMLDivElement>\n>(({ className, style, ...props }, ref) => (\n  <div\n    ref={ref}\n    className={cn(\n      'bitte-flex bitte-flex-col bitte-space-y-1.5 bitte-p-6',\n      className,\n    )}\n    style={style}\n    {...props}\n  />\n));\nCardHeader.displayName = 'CardHeader';\n\nconst CardTitle = React.forwardRef<\n  HTMLDivElement,\n  React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n  <div\n    ref={ref}\n    className={cn(\n      'bitte-font-semibold bitte-leading-none bitte-tracking-tight',\n      className,\n    )}\n    {...props}\n  />\n));\nCardTitle.displayName = 'CardTitle';\n\nconst CardDescription = React.forwardRef<\n  HTMLDivElement,\n  React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n  <div\n    ref={ref}\n    className={cn('bitte-text-sm bitte-text-muted-foreground', className)}\n    {...props}\n  />\n));\nCardDescription.displayName = 'CardDescription';\n\nconst CardContent = React.forwardRef<\n  HTMLDivElement,\n  React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n  <div ref={ref} className={cn('bitte-p-6 bitte-pt-0', className)} {...props} />\n));\nCardContent.displayName = 'CardContent';\n\nconst CardFooter = React.forwardRef<\n  HTMLDivElement,\n  React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n  <div\n    ref={ref}\n    className={cn(\n      'bitte-flex bitte-items-center bitte-p-6 bitte-pt-0',\n      className,\n    )}\n    {...props}\n  />\n));\nCardFooter.displayName = 'CardFooter';\n\nexport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n};\n","import * as React from 'react';\nimport * as RechartsPrimitive from 'recharts';\nimport { cn } from '../../lib/utils';\n\n// Format: { THEME_NAME: CSS_SELECTOR }\nconst THEMES = { light: '', dark: '.dark' } as const;\n\nexport type ChartConfig = {\n  [k in string]: {\n    label?: React.ReactNode;\n    icon?: React.ComponentType;\n  } & (\n    | { color?: string; theme?: never }\n    | { color?: never; theme: Record<keyof typeof THEMES, string> }\n  );\n};\n\ntype ChartContextProps = {\n  config: ChartConfig;\n};\n\nconst ChartContext = React.createContext<ChartContextProps | null>(null);\n\nfunction useChart() {\n  const context = React.useContext(ChartContext);\n\n  if (!context) {\n    throw new Error('useChart must be used within a <ChartContainer />');\n  }\n\n  return context;\n}\n\nconst ChartContainer = React.forwardRef<\n  HTMLDivElement,\n  React.ComponentProps<'div'> & {\n    config: ChartConfig;\n    children: React.ComponentProps<\n      typeof RechartsPrimitive.ResponsiveContainer\n    >['children'];\n  }\n>(({ id, className, children, config, ...props }, ref) => {\n  const uniqueId = React.useId();\n  const chartId = `chart-${id || uniqueId.replace(/:/g, '')}`;\n\n  return (\n    <ChartContext.Provider value={{ config }}>\n      <div\n        data-chart={chartId}\n        ref={ref}\n        className={cn(\n          'bitte-flex bitte-aspect-video bitte-justify-center bitte-text-xs [&_.recharts-cartesian-axis-tick_text]:bitte-fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke=#ccc]]:bitte-stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:bitte-stroke-border [&_.recharts-dot[stroke=\"white\"]]:bitte-stroke-transparent [&_.recharts-layer]:bitte-outline-none [&_.recharts-polar-grid_[stroke=#ccc]]:bitte-stroke-border [&_.recharts-radial-bar-background-sector]:bitte-fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:bitte-fill-muted [&_.recharts-reference-line_[stroke=#ccc]]:bitte-stroke-border [&_.recharts-sector[stroke=\"white\"]]:bitte-stroke-transparent [&_.recharts-sector]:bitte-outline-none [&_.recharts-surface]:bitte-outline-none',\n          className,\n        )}\n        {...props}\n      >\n        <ChartStyle id={chartId} config={config} />\n        <RechartsPrimitive.ResponsiveContainer>\n          {children}\n        </RechartsPrimitive.ResponsiveContainer>\n      </div>\n    </ChartContext.Provider>\n  );\n});\nChartContainer.displayName = 'Chart';\n\nconst ChartStyle = ({ id, config }: { id: string; config: ChartConfig }) => {\n  const colorConfig = Object.entries(config).filter(\n    ([, config]) => config.theme || config.color,\n  );\n\n  if (!colorConfig.length) {\n    return null;\n  }\n\n  return (\n    <style\n      dangerouslySetInnerHTML={{\n        __html: Object.entries(THEMES)\n          .map(\n            ([theme, prefix]) => `\n${prefix} [data-chart=${id}] {\n${colorConfig\n  .map(([key, itemConfig]) => {\n    const color =\n      itemConfig.theme?.[theme as keyof typeof itemConfig.theme] ||\n      itemConfig.color;\n    return color ? `  --color-${key}: ${color};` : null;\n  })\n  .join('\\n')}\n}\n`,\n          )\n          .join('\\n'),\n      }}\n    />\n  );\n};\n\nconst ChartTooltip = RechartsPrimitive.Tooltip;\n\nconst ChartTooltipContent = React.forwardRef<\n  HTMLDivElement,\n  React.ComponentProps<typeof RechartsPrimitive.Tooltip> &\n    React.ComponentProps<'div'> & {\n      hideLabel?: boolean;\n      hideIndicator?: boolean;\n      indicator?: 'line' | 'dot' | 'dashed';\n      nameKey?: string;\n      labelKey?: string;\n    }\n>(\n  (\n    {\n      active,\n      payload,\n      className,\n      indicator = 'dot',\n      hideLabel = false,\n      hideIndicator = false,\n      label,\n      labelFormatter,\n      labelClassName,\n      formatter,\n      color,\n      nameKey,\n      labelKey,\n    },\n    ref,\n  ) => {\n    const { config } = useChart();\n\n    const tooltipLabel = React.useMemo(() => {\n      if (hideLabel || !payload?.length) {\n        return null;\n      }\n\n      const [item] = payload;\n      const key = `${labelKey || item.dataKey || item.name || 'value'}`;\n      const itemConfig = getPayloadConfigFromPayload(config, item, key);\n      const value =\n        !labelKey && typeof label === 'string'\n          ? config[label as keyof typeof config]?.label || label\n          : itemConfig?.label;\n\n      if (labelFormatter) {\n        return (\n          <div className={cn('bitte-font-medium', labelClassName)}>\n            {labelFormatter(value, payload)}\n          </div>\n        );\n      }\n\n      if (!value) {\n        return null;\n      }\n\n      return (\n        <div className={cn('bitte-font-medium', labelClassName)}>{value}</div>\n      );\n    }, [\n      label,\n      labelFormatter,\n      payload,\n      hideLabel,\n      labelClassName,\n      config,\n      labelKey,\n    ]);\n\n    if (!active || !payload?.length) {\n      return null;\n    }\n\n    const nestLabel = payload.length === 1 && indicator !== 'dot';\n\n    return (\n      <div\n        ref={ref}\n        className={cn(\n          'bitte-grid bitte-min-w-[8rem] bitte-items-start bitte-gap-1.5 bitte-rounded-lg bitte-border bitte-border-border/50 bitte-bg-background bitte-px-2.5 bitte-py-1.5 bitte-text-xs bitte-shadow-xl',\n          className,\n        )}\n      >\n        {!nestLabel ? tooltipLabel : null}\n        <div className=\"bitte-grid bitte-gap-1.5\">\n          {payload.map((item, index) => {\n            const key = `${nameKey || item.name || item.dataKey || 'value'}`;\n            const itemConfig = getPayloadConfigFromPayload(config, item, key);\n            const indicatorColor = color || item.payload.fill || item.color;\n\n            return (\n              <div\n                key={item.dataKey}\n                className={cn(\n                  'bitte-flex bitte-w-full bitte-flex-wrap bitte-items-stretch bitte-gap-2 [&>svg]:bitte-h-2.5 [&>svg]:bitte-w-2.5 [&>svg]:bitte-text-muted-foreground',\n                  indicator === 'dot' && 'bitte-items-center',\n                )}\n              >\n                {formatter && item?.value !== undefined && item.name ? (\n                  formatter(item.value, item.name, item, index, item.payload)\n                ) : (\n                  <>\n                    {itemConfig?.icon ? (\n                      <itemConfig.icon />\n                    ) : (\n                      !hideIndicator && (\n                        <div\n                          className={cn(\n                            'bitte-shrink-0 bitte-rounded-[2px] bitte-border-[--color-border] bitte-bg-[--color-bg]',\n                            {\n                              'bitte-h-2.5 bitte-w-2.5': indicator === 'dot',\n                              'bitte-w-1': indicator === 'line',\n                              'bitte-w-0 bitte-border-[1.5px] bitte-border-dashed bitte-bg-transparent':\n                                indicator === 'dashed',\n                              'bitte-my-0.5':\n                                nestLabel && indicator === 'dashed',\n                            },\n                          )}\n                          style={\n                            {\n                              '--color-bg': indicatorColor,\n                              '--color-border': indicatorColor,\n                            } as React.CSSProperties\n                          }\n                        />\n                      )\n                    )}\n                    <div\n                      className={cn(\n                        'bitte-flex bitte-flex-1 bitte-justify-between bitte-leading-none',\n                        nestLabel ? 'bitte-items-end' : 'bitte-items-center',\n                      )}\n                    >\n                      <div className=\"bitte-grid bitte-gap-1.5\">\n                        {nestLabel ? tooltipLabel : null}\n                        <span className=\"bitte-text-muted-foreground\">\n                          {itemConfig?.label || item.name}\n                        </span>\n                      </div>\n                      {item.value && (\n                        <span className=\"bitte-font-mono bitte-font-medium bitte-tabular-nums bitte-text-foreground\">\n                          {item.value.toLocaleString()}\n                        </span>\n                      )}\n                    </div>\n                  </>\n                )}\n              </div>\n            );\n          })}\n        </div>\n      </div>\n    );\n  },\n);\nChartTooltipContent.displayName = 'ChartTooltip';\n\nconst ChartLegend = RechartsPrimitive.Legend;\n\nconst ChartLegendContent = React.forwardRef<\n  HTMLDivElement,\n  React.ComponentProps<'div'> &\n    Pick<RechartsPrimitive.LegendProps, 'payload' | 'verticalAlign'> & {\n      hideIcon?: boolean;\n      nameKey?: string;\n    }\n>(\n  (\n    { className, hideIcon = false, payload, verticalAlign = 'bottom', nameKey },\n    ref,\n  ) => {\n    const { config } = useChart();\n\n    if (!payload?.length) {\n      return null;\n    }\n\n    return (\n      <div\n        ref={ref}\n        className={cn(\n          'bitte-flex bitte-items-center bitte-justify-center bitte-gap-4',\n          verticalAlign === 'top' ? 'bitte-pb-3' : 'bitte-pt-3',\n          className,\n        )}\n      >\n        {payload.map((item) => {\n          const key = `${nameKey || item.dataKey || 'value'}`;\n          const itemConfig = getPayloadConfigFromPayload(config, item, key);\n\n          return (\n            <div\n              key={item.value}\n              className={cn(\n                'bitte-flex bitte-items-center bitte-gap-1.5 [&>svg]:bitte-h-3 [&>svg]:bitte-w-3 [&>svg]:bitte-text-muted-foreground',\n              )}\n            >\n              {itemConfig?.icon && !hideIcon ? (\n                <itemConfig.icon />\n              ) : (\n                <div\n                  className=\"bitte-h-2 bitte-w-2 bitte-shrink-0 bitte-rounded-[2px]\"\n                  style={{\n                    backgroundColor: item.color,\n                  }}\n                />\n              )}\n              {itemConfig?.label}\n            </div>\n          );\n        })}\n      </div>\n    );\n  },\n);\nChartLegendContent.displayName = 'ChartLegend';\n\n// Helper to extract item config from a payload.\nfunction getPayloadConfigFromPayload(\n  config: ChartConfig,\n  payload: unknown,\n  key: string,\n) {\n  if (typeof payload !== 'object' || payload === null) {\n    return undefined;\n  }\n\n  const payloadPayload =\n    'payload' in payload &&\n    typeof payload.payload === 'object' &&\n    payload.payload !== null\n      ? payload.payload\n      : undefined;\n\n  let configLabelKey: string = key;\n\n  if (\n    key in payload &&\n    typeof payload[key as keyof typeof payload] === 'string'\n  ) {\n    configLabelKey = payload[key as keyof typeof payload] as string;\n  } else if (\n    payloadPayload &&\n    key in payloadPayload &&\n    typeof payloadPayload[key as keyof typeof payloadPayload] === 'string'\n  ) {\n    configLabelKey = payloadPayload[\n      key as keyof typeof payloadPayload\n    ] as string;\n  }\n\n  return configLabelKey in config\n    ? config[configLabelKey]\n    : config[key as keyof typeof config];\n}\n\nexport {\n  ChartContainer,\n  ChartTooltip,\n  ChartTooltipContent,\n  ChartLegend,\n  ChartLegendContent,\n  ChartStyle,\n};\n","import {\n  Area,\n  CartesianGrid,\n  AreaChart as RechartsAreaChart,\n  XAxis,\n  YAxis,\n} from 'recharts';\nimport { ChartProps } from '../../../lib/chart-helpers';\nimport { ChartContainer, ChartTooltip, ChartTooltipContent } from '../chart';\n\nexport const AreaChart = ({\n  chartConfig,\n  timeKey,\n  metricKeys,\n  chartData,\n  dateFormatter,\n  valueFormatter,\n}: ChartProps) => {\n  return (\n    <ChartContainer\n      config={chartConfig}\n      className=\"bitte-min-h-[200px] bitte-w-full bitte-select-none\"\n    >\n      <RechartsAreaChart data={chartData} accessibilityLayer>\n        <CartesianGrid vertical={false} strokeOpacity={0.2} syncWithTicks />\n        <XAxis\n          dataKey={timeKey}\n          tickLine={false}\n          axisLine={false}\n          domain={['auto', 'auto']}\n          interval=\"equidistantPreserveStart\"\n          tickFormatter={(value) => dateFormatter(value)}\n        />\n        <YAxis\n          tickLine={false}\n          axisLine={false}\n          domain={['auto', 'auto']}\n          tickFormatter={(value) => valueFormatter(value, true)}\n          scale=\"linear\"\n        />\n        <ChartTooltip\n          content={\n            <ChartTooltipContent\n              indicator=\"dot\"\n              labelFormatter={(_value, payload) =>\n                dateFormatter(payload[0].payload[timeKey], false)\n              }\n              formatter={(value) => valueFormatter(value)}\n            />\n          }\n        />\n        {metricKeys.map((key) => (\n          <Area\n            key={key}\n            dataKey={key}\n            type=\"natural\"\n            fill={chartConfig[key].color}\n            stroke={chartConfig[key].color}\n            fillOpacity={0.5}\n          />\n        ))}\n      </RechartsAreaChart>\n    </ChartContainer>\n  );\n};\n","import {\n  Bar,\n  CartesianGrid,\n  BarChart as RechartsBarChart,\n  XAxis,\n  YAxis,\n} from 'recharts';\nimport { ChartProps } from '../../../lib/chart-helpers';\nimport { ChartContainer, ChartTooltip, ChartTooltipContent } from '../chart';\n\nexport const BarChart = ({\n  chartConfig,\n  timeKey,\n  metricKeys,\n  chartData,\n  dateFormatter,\n  valueFormatter,\n}: ChartProps) => {\n  return (\n    <ChartContainer\n      config={chartConfig}\n      className=\"bitte-min-h-[200px] bitte-w-full bitte-select-none\"\n    >\n      <RechartsBarChart data={chartData}>\n        <CartesianGrid vertical={false} strokeOpacity={0.2} syncWithTicks />\n        <XAxis\n          dataKey={timeKey}\n          tickLine={false}\n          axisLine={false}\n          domain={['auto', 'auto']}\n          interval=\"equidistantPreserveStart\"\n          tickFormatter={(value) => dateFormatter(value)}\n        />\n        <YAxis\n          tickLine={false}\n          axisLine={false}\n          domain={['auto', 'auto']}\n          tickFormatter={(value) => valueFormatter(value, true)}\n        />\n        <ChartTooltip\n          content={\n            <ChartTooltipContent\n              indicator=\"dot\"\n              labelFormatter={(_value, payload) =>\n                dateFormatter(payload[0].payload[timeKey], false)\n              }\n              formatter={(value) => valueFormatter(value)}\n            />\n          }\n        />\n        {metricKeys.map((key) => (\n          <Bar\n            key={key}\n            dataKey={key}\n            fill={chartConfig[key].color}\n            radius={[4, 4, 0, 0]}\n          />\n        ))}\n      </RechartsBarChart>\n    </ChartContainer>\n  );\n};\n","import {\n  Bar,\n  CartesianGrid,\n  Cell,\n  ComposedChart,\n  XAxis,\n  YAxis,\n} from 'recharts';\nimport { ChartProps } from '../../../lib/chart-helpers';\nimport { ChartContainer, ChartTooltip, ChartTooltipContent } from '../chart';\n\nconst TOOLTIP_LABELS = ['O', 'H', 'L', 'C'];\n\nexport const CandleChart = ({\n  chartConfig,\n  timeKey,\n  chartData,\n  dateFormatter,\n  valueFormatter,\n}: ChartProps<'candle'>) => {\n  const data = chartData.map((point) => {\n    const open = point.open;\n    const close = point.close;\n    const high = point.high;\n    const low = point.low;\n\n    const up = close > open;\n    const candleLow = Math.min(open, close);\n    const candleHigh = Math.max(open, close);\n    const candleHeight = Math.max(Math.abs(close - open), 0.005);\n\n    return {\n      time: point.time,\n      open,\n      close,\n      high,\n      low,\n      candleLow,\n      candleHigh,\n      wickTop: Math.abs(high - candleHigh),\n      wickBottom: Math.abs(low - candleLow),\n      candleHeight,\n      candleColor: up\n        ? 'bitte-fill-shad-green-success'\n        : 'bitte-fill-shad-red-100', // Using literal hex colors instead of class names\n      diff: point.close - point.open,\n      diffPercent: ((point.close - point.open) / point.open) * 100,\n    };\n  });\n\n  const maxValue: number = data.reduce(\n    (max, point) => Math.max(point.high, max),\n    Number.NEGATIVE_INFINITY,\n  );\n\n  const minValue: number = data.reduce(\n    (min, point) => Math.min(point.low, min),\n    Number.POSITIVE_INFINITY,\n  );\n  const tickPadding = (maxValue - minValue) / 2;\n\n  const [minHeight, maxHeight] = [\n    minValue - tickPadding,\n    maxValue + tickPadding,\n  ];\n\n  return (\n    <ChartContainer\n      config={chartConfig}\n      className=\"bitte-min-h-[200px] bitte-w-full bitte-select-none\"\n    >\n      <ComposedChart\n        data={data}\n        accessibilityLayer\n        barCategoryGap={0}\n        stackOffset=\"sign\"\n      >\n        <CartesianGrid strokeOpacity={0.2} syncWithTicks strokeWidth={1} />\n        <XAxis\n          dataKey={timeKey}\n          tickLine={false}\n          axisLine={false}\n          domain={['auto', 'auto']}\n          interval=\"equidistantPreserveStart\"\n          tickFormatter={(value) => dateFormatter(value)}\n        />\n        <YAxis\n          orientation=\"left\"\n          tickLine={false}\n          axisLine={false}\n          tickFormatter={(value) => valueFormatter(value, true)}\n          type=\"number\"\n          domain={[minHeight, maxHeight]}\n          allowDataOverflow={true}\n          scale=\"linear\"\n          interval=\"preserveEnd\"\n        />\n        <ChartTooltip\n          cursor={true}\n          labelFormatter={(_label, payload) => {\n            return dateFormatter(payload[0].payload[timeKey], false);\n          }}\n          content={\n            <ChartTooltipContent\n              formatter={(_value, _name, entry) => {\n                if (!entry || entry.type === 'none') return;\n\n                const diff = entry.payload.diff;\n                const diffPercent = entry.payload.diffPercent;\n                const values = ['open', 'high', 'low', 'close'].map(\n                  (key) => entry.payload[key],\n                );\n\n                return (\n                  <div className=\"bitte--mb-4 bitte-grid bitte-grid-cols-2 bitte-gap-2\">\n                    <p style={{ color: entry.payload.candleColor }}>\n                      {diff > 0 ? '+' : ''}\n                      {valueFormatter(diff)}\n                    </p>\n                    <p style={{ color: entry.payload.candleColor }}>\n                      {diffPercent > 0 ? '+' : ''}\n                      {diffPercent.toFixed(2)}% (24hr)\n                    </p>\n                    {values.map((value, index) => (\n                      <p key={TOOLTIP_LABELS[index]}>\n                        <span className=\"bitte-text-muted-foreground\">\n                          {TOOLTIP_LABELS[index]}:\n                        </span>{' '}\n                        {valueFormatter(value)}\n                      </p>\n                    ))}\n                  </div>\n                );\n              }}\n            />\n          }\n        />\n        {/* y-axis offset */}\n        <Bar dataKey=\"low\" stackId=\"stack\" fillOpacity={0} />\n        {/* wick bottom */}\n        <Bar\n          dataKey=\"wickBottom\"\n          stackId=\"stack\"\n          tooltipType=\"none\"\n          maxBarSize={1}\n        >\n          {data.map((entry) => (\n            <Cell\n              key={`wick-bottom-${entry.time}`}\n              className={entry.candleColor}\n            />\n          ))}\n        </Bar>\n        {/* candle body */}\n        maxBarSize={1}\n        <Bar dataKey=\"candleHeight\" stackId=\"stack\" tooltipType=\"none\">\n          {data.map((entry) => (\n            <Cell\n              key={`candle-body-${entry.time}`}\n              className={entry.candleColor}\n            />\n          ))}\n        </Bar>\n        {/* wick top */}\n        <Bar\n          dataKey=\"wickTop\"\n          stackId=\"stack\"\n          tooltipType=\"none\"\n          maxBarSize={1}\n        >\n          {data.map((entry) => (\n            <Cell\n              key={`wick-top-${entry.time}`}\n              className={entry.candleColor}\n            />\n          ))}\n        </Bar>\n      </ComposedChart>\n    </ChartContainer>\n  );\n};\n","import {\n  CartesianGrid,\n  Line,\n  LineChart as RechartsLineChart,\n  XAxis,\n  YAxis,\n} from 'recharts';\n\nimport { type ChartProps } from '../../../lib/chart-helpers';\nimport { ChartContainer, ChartTooltip, ChartTooltipContent } from '../chart';\n\nexport const LineChart = ({\n  chartConfig,\n  timeKey,\n  metricKeys,\n  chartData,\n  dateFormatter,\n  valueFormatter,\n}: ChartProps) => {\n  return (\n    <ChartContainer\n      config={chartConfig}\n      className=\"bitte-min-h-[200px] bitte-w-full bitte-select-none\"\n    >\n      <RechartsLineChart data={chartData}>\n        <CartesianGrid strokeOpacity={0.2} syncWithTicks />\n        <XAxis\n          dataKey={timeKey}\n          tickLine={false}\n          axisLine={false}\n          domain={['auto', 'auto']}\n          interval=\"equidistantPreserveStart\"\n          tickFormatter={(value) => dateFormatter(value)}\n        />\n        <YAxis\n          tickLine={false}\n          axisLine={false}\n          tickFormatter={(value) => valueFormatter(value, true)}\n          domain={['auto', 'auto']}\n        />\n        <ChartTooltip\n          cursor={false}\n          content={\n            <ChartTooltipContent\n              indicator=\"line\"\n              labelFormatter={(_value, payload) =>\n                dateFormatter(payload[0].payload[timeKey], false)\n              }\n              formatter={(value) => valueFormatter(value)}\n            />\n          }\n        />\n        {metricKeys.map((key) => (\n          <Line\n            key={key}\n            dataKey={key}\n            type=\"linear\"\n            stroke={chartConfig[key].color}\n            strokeWidth={2}\n            dot={false}\n            activeDot={{ r: 4, strokeWidth: 0 }}\n          />\n        ))}\n      </RechartsLineChart>\n    </ChartContainer>\n  );\n};\n","import { memo, useMemo } from 'react';\n\nimport { TrendingDown, TrendingUp } from 'lucide-react';\n\nimport {\n  type ChartWrapperProps,\n  formatValue,\n  getDateFormatter,\n} from '../../../lib/chart-helpers';\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from '../../ui/card';\nimport { AreaChart } from './AreaChart';\nimport { BarChart } from './BarChart';\nimport { CandleChart } from './CandleChart';\nimport { LineChart } from './LineChart';\n\nconst CHART_COMPONENTS = {\n  candle: CandleChart,\n  area: AreaChart,\n  bar: BarChart,\n  line: LineChart,\n} as const;\n\nexport const ChartWrapper = memo(\n  ({\n    title,\n    description,\n    chartConfig,\n    chartData,\n    metricData,\n    chartType = 'line',\n    dataFormat = 'currency',\n  }: ChartWrapperProps) => {\n    const ChartComponent = CHART_COMPONENTS[chartType];\n\n    const [timeKey, ...metricKeys] = Object.keys(chartConfig);\n\n    const { startTimeValue, endTimeValue } = useMemo(\n      () => ({\n        startTimeValue: chartData[0][timeKey as keyof (typeof chartData)[0]],\n        endTimeValue:\n          chartData[chartData.length - 1][\n            timeKey as keyof (typeof chartData)[0]\n          ],\n      }),\n      [chartData, timeKey],\n    );\n\n    const dateFormatter = useMemo(\n      () =>\n        getDateFormatter({\n          startTimeValue,\n          endTimeValue,\n        }),\n      [startTimeValue, endTimeValue],\n    );\n\n    const valueFormatter = useMemo(\n      () =>\n        (value: unknown, compact = false) =>\n          formatValue({ value, dataFormat, compact }),\n      [dataFormat],\n    );\n\n    const showMetricData = metricData && metricData.length > 0;\n\n    const startDate = useMemo(\n      () => dateFormatter(startTimeValue, false),\n      [dateFormatter, startTimeValue],\n    );\n\n    const endDate = useMemo(\n      () => dateFormatter(endTimeValue, false),\n      [dateFormatter, endTimeValue],\n    );\n\n    return (\n      <Card className=\"max-lg:bitte--mx-4 max-lg:bitte-p-2\">\n        <CardHeader className=\"max-lg:bitte-p-2\">\n          <CardTitle>{title}</CardTitle>\n          <CardDescription>{description}</CardDescription>\n        </CardHeader>\n        <CardContent className=\"bitte-pb-0 max-lg:bitte-p-2\">\n          <ChartComponent\n            chartConfig={chartConfig}\n            timeKey={timeKey}\n            metricKeys={metricKeys}\n            chartData={chartData}\n            dateFormatter={dateFormatter}\n            valueFormatter={valueFormatter}\n          />\n        </CardContent>\n        {showMetricData ? (\n          <CardFooter className=\"bitte-pt-2\">\n            <div className=\"bitte-grid bitte-w-full bitte-grid-cols-2 bitte-gap-2 bitte-text-sm\">\n              {metricData.map(\n                ({ metric, percentageChange, isPositive, isCandle }) => (\n                  <div key={metric} className=\"bitte-grid bitte-gap-2\">\n                    <div className=\"bitte-flex bitte-items-center bitte-gap-2 bitte-font-medium bitte-leading-none\">\n                      {isCandle ? null : (\n                        <div className=\"bitte-flex bitte-items-center bitte-gap-2\">\n                          <div\n                            className=\"bitte-size-4 bitte-rounded-sm\"\n                            style={{\n                              backgroundColor: chartConfig[metric].color,\n                            }}\n                          />\n                          {chartConfig[metric].label || metric}\n                        </div>\n                      )}\n                      {isPositive ? 'Trending Up' : 'Trending Down'} by{' '}\n                      {Math.abs(percentageChange).toFixed(1)}%{' '}\n                      {isPositive ? (\n                        <TrendingUp className=\"bitte-size-4 bitte-text-shad-green-success\" />\n                      ) : (\n                        <TrendingDown className=\"bitte-size-4 bitte-text-shad-red-100\" />\n                      )}\n                    </div>\n                  </div>\n                ),\n              )}\n              <div className=\"bitte-col-span-2 bitte-flex bitte-items-center bitte-gap-2 bitte-leading-none bitte-text-muted-foreground\">\n                {startDate} - {endDate}\n              </div>\n            </div>\n          </CardFooter>\n        ) : null}\n      </Card>\n    );\n  },\n);\n\nChartWrapper.displayName = 'ChartWrapper';\n","import React from 'react';\n\ninterface CodeBlockProps {\n  content: string;\n}\n\nexport const CodeBlock = ({ content }: CodeBlockProps) => {\n  return (\n    <div className=\"bitte-w-full\">\n      <pre className=\"bitte-disable-scrollbars bitte-w-full bitte-overflow-x-auto bitte-rounded-lg bitte-bg-secondary bitte-p-4 bitte-text-secondary-foreground\">\n        <code\n          className=\"bitte-block bitte-w-[400px] bitte-font-mono bitte-text-sm\"\n          aria-label=\"Code example\"\n        >\n          {content}\n        </code>\n      </pre>\n    </div>\n  );\n};\n","import React from 'react';\n\ninterface Props {\n  children: React.ReactNode;\n}\n\ninterface State {\n  hasError: boolean;\n}\n\nexport class ErrorBoundary extends React.Component<Props, State> {\n  state = { hasError: false };\n\n  static getDerivedStateFromError(): State {\n    return { hasError: true };\n  }\n\n  componentDidCatch(error: Error) {\n    console.error('Generationerror:', error);\n  }\n\n  render() {\n    if (this.state.hasError) {\n      return (\n        <p className=\"bitte-my-4 bitte-overflow-auto bitte-text-center bitte-text-text-secondary\">\n          Something went wrong\n        </p>\n      );\n    }\n\n    return this.props.children;\n  }\n}\n","import * as React from 'react';\n\nimport { cn } from '../../lib/utils';\n\nconst Table = React.forwardRef<\n  HTMLTableElement,\n  React.HTMLAttributes<HTMLTableElement>\n>(({ className, ...props }, ref) => (\n  <div className=\"bitte-relative bitte-w-full bitte-overflow-auto\">\n    <table\n      ref={ref}\n      className={cn(\n        'bitte-w-full bitte-caption-bottom bitte-text-sm',\n        className,\n      )}\n      {...props}\n    />\n  </div>\n));\nTable.displayName = 'Table';\n\nconst TableHeader = React.forwardRef<\n  HTMLTableSectionElement,\n  React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n  <thead\n    ref={ref}\n    className={cn('[&_tr]:bitte-border-b', className)}\n    {...props}\n  />\n));\nTableHeader.displayName = 'TableHeader';\n\nconst TableBody = React.forwardRef<\n  HTMLTableSectionElement,\n  React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n  <tbody\n    ref={ref}\n    className={cn('[&_tr:last-child]:bitte-border-0', className)}\n    {...props}\n  />\n));\nTableBody.displayName = 'TableBody';\n\nconst TableFooter = React.forwardRef<\n  HTMLTableSectionElement,\n  React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n  <tfoot\n    ref={ref}\n    className={cn(\n      'bitte-border-t bitte-bg-muted/50 bitte-font-medium [&>tr]:last:bitte-border-b-0',\n      className,\n    )}\n    {...props}\n  />\n));\nTableFooter.displayName = 'TableFooter';\n\nconst TableRow = React.forwardRef<\n  HTMLTableRowElement,\n  React.HTMLAttributes<HTMLTableRowElement>\n>(({ className, ...props }, ref) => (\n  <tr\n    ref={ref}\n    className={cn(\n      'bitte-border-b bitte-transition-colors hover:bitte-bg-muted/50 data-[state=selected]:bitte-bg-muted',\n      className,\n    )}\n    {...props}\n  />\n));\nTableRow.displayName = 'TableRow';\n\nconst TableHead = React.forwardRef<\n  HTMLTableCellElement,\n  React.ThHTMLAttributes<HTMLTableCellElement>\n>(({ className, ...props }, ref) => (\n  <th\n    ref={ref}\n    className={cn(\n      'bitte-h-10 bitte-px-2 bitte-text-left bitte-align-middle bitte-font-medium bitte-text-muted-foreground [&:has([role=checkbox])]:bitte-pr-0 [&>[role=checkbox]]:bitte-translate-y-[2px]',\n      className,\n    )}\n    {...props}\n  />\n));\nTableHead.displayName = 'TableHead';\n\nconst TableCell = React.forwardRef<\n  HTMLTableCellElement,\n  React.TdHTMLAttributes<HTMLTableCellElement>\n>(({ className, ...props }, ref) => (\n  <td\n    ref={ref}\n    className={cn(\n      'bitte-p-2 bitte-align-middle [&:has([role=checkbox])]:bitte-pr-0 [&>[role=checkbox]]:bitte-translate-y-[2px]',\n      className,\n    )}\n    {...props}\n  />\n));\nTableCell.displayName = 'TableCell';\n\nconst TableCaption = React.forwardRef<\n  HTMLTableCaptionElement,\n  React.HTMLAttributes<HTMLTableCaptionElement>\n>(({ className, ...props }, ref) => (\n  <caption\n    ref={ref}\n    className={cn(\n      'bitte-mt-4 bitte-text-sm bitte-text-muted-foreground',\n      className,\n    )}\n    {...props}\n  />\n));\nTableCaption.displayName = 'TableCaption';\n\nexport {\n  Table,\n  TableHeader,\n  TableBody,\n  TableFooter,\n  TableHead,\n  TableRow,\n  TableCell,\n  TableCaption,\n};\n","import { ArrowUpRight } from 'lucide-react';\nimport { BITTE_BLACK_IMG } from '../../lib/images';\nimport { Button } from '../ui/button';\nimport {\n  Table,\n  TableBody,\n  TableCell,\n  TableHead,\n  TableHeader,\n  TableRow,\n} from '../ui/table';\n\nconst IMAGE_API =\n  'https://image-cache-service-z3w7d7dnea-ew.a.run.app/media?url=';\n\nexport const MarkdownTable = ({ content }: { content: string }) => {\n  // Split the markdown string into lines\n  const lines = content.split('\\n');\n\n  // Filter out the lines that are part of the table\n  const tableLines = lines.filter(\n    (line) => line.startsWith('|') && !line.includes('---'),\n  );\n\n  // Split each line into cells\n  const cells = tableLines.map((line) =>\n    line\n      .split('|')\n      .slice(1, -1)\n      .map((cell) => cell.trim()),\n  );\n\n  return (\n    <Table className=\"bitte-mt-4 bitte-w-full\">\n      <TableHeader>\n        <TableRow className=\"bitte-border-none hover:bitte-bg-transparent\">\n          {cells[0].map((header, index) => (\n            <TableHead\n              key={index}\n              className=\"bitte-whitespace-nowrap bitte-px-4 bitte-text-left text-[12px] bitte-font-medium\"\n            >\n              {header}\n            </TableHead>\n          ))}\n        </TableRow>\n      </TableHeader>\n      <TableBody>\n        {cells.slice(1).map((row, rowIndex) => (\n          <TableRow\n            key={rowIndex}\n            className=\"bitte-border-none hover:bitte-bg-transparent\"\n          >\n            {row.map((cell, cellIndex) => {\n              const linkMatchQuery = cell.match(/\\[Link\\]\\((.*)\\)/);\n              const linkValue = linkMatchQuery?.[1];\n              const imageMatchQuery = cell.match(/!\\[.*\\]\\((.*)\\)/);\n              const imageMatch = imageMatchQuery?.[1];\n              const imageValue = imageMatch?.startsWith('https://')\n                ? imageMatch\n                : BITTE_BLACK_IMG;\n\n              return (\n                <TableCell\n                  key={cellIndex}\n                  className=\"bitte-whitespace-nowrap bitte-px-4 bitte-text-left\"\n                >\n                  <div className=\"bitte-max-w-[250px] bitte-break-words\">\n                    {linkValue ? (\n                      <a href={linkValue} target=\"_blank\" rel=\"noreferrer\">\n                        <Button\n                          variant=\"ghost\"\n                          className=\"bitte-flex bitte-items-center bitte-gap-2 bitte-p-0 bitte-text-shad-blue-100 hover:text-shad-blue-100\"\n                        >\n                          View\n                          <ArrowUpRight className=\"bitte-h-4 bitte-w-4\" />\n                        </Button>\n                      </a>\n                    ) : imageMatch ? (\n                      <div className=\"bitte-relative bitte-h-24 bitte-w-24\">\n                        <img\n                          src={`${IMAGE_API}${imageValue}`}\n                          alt={`result-${cellIndex}`}\n                        />\n                      </div>\n                    ) : (\n                      <div className=\"bitte-truncate\">{cell}</div>\n                    )}\n                  </div>\n                </TableCell>\n              );\n            })}\n          </TableRow>\n        ))}\n      </TableBody>\n    </Table>\n  );\n};\n","import React, { FC, memo } from 'react';\n\nimport ReactMarkdown, { Options } from 'react-markdown';\nimport remarkGfm from 'remark-gfm';\nimport remarkMath from 'remark-math';\nimport { isMarkdownTableString } from '../../lib/regex';\nimport { MarkdownTable } from './MarkdownTable';\n\nconst MemoizedReactMarkdown: FC<Options> = memo(\n  ReactMarkdown,\n  (prevProps, nextProps) =>\n    prevProps.children === nextProps.children &&\n    prevProps.className === nextProps.className,\n);\n\nconst LinkRenderer = ({\n  href,\n  children,\n  ...props\n}: React.AnchorHTMLAttributes<HTMLAnchorElement>) => {\n  return (\n    <a\n      href={href as string}\n      target=\"_blank\"\n      rel=\"noopener noreferrer\"\n      className=\"bitte-text-blue-300\"\n      {...props}\n    >\n      {children}\n    </a>\n  );\n};\n\nexport const SAMessage = memo(({ content }: { content: string }) => {\n  const cleanContent = content\n    .replace(/^\"/, '') // remove first quote\n    .replace(/\"$/, '') // remove last quote\n    .replace(/\\\\n/g, '\\n');\n\n  return isMarkdownTableString(content) ? (\n    <MarkdownTable content={content} />\n  ) : (\n    <MemoizedReactMarkdown\n      className=\"prose dark:prose-invert prose-p:leading-relaxed prose-pre:p-0 whitespace-pre-line break-words\"\n      remarkPlugins={[remarkGfm, remarkMath]}\n      components={{\n        a: LinkRenderer,\n        img: ({ src, alt }) =>\n          src ? <img src={src} alt={alt || `${src} image`} /> : <></>,\n      }}\n    >\n      {cleanContent}\n    </MemoizedReactMarkdown>\n  );\n});\n\nSAMessage.displayName = 'SAMessage';\n","import { useEffect, useState } from 'react';\n\ninterface ImageWithFallbackProps {\n  fallbackSrc: string;\n  src?: string;\n  alt: string;\n  className: string;\n}\n\nexport const ImageWithFallback = ({\n  fallbackSrc,\n  alt,\n  src,\n  className,\n}: ImageWithFallbackProps) => {\n  const [error, setError] = useState(false);\n\n  useEffect(() => {\n    setError(false);\n  }, [src]);\n\n  return (\n    <img\n      alt={alt}\n      onError={() => setError(true)}\n      src={error ? fallbackSrc : src}\n      className={className}\n    />\n  );\n};\n","import * as AccordionPrimitive from '@radix-ui/react-accordion';\nimport { ChevronDown } from 'lucide-react';\nimport * as React from 'react';\n\nimport { cn } from '../../lib/utils';\n\nconst Accordion = AccordionPrimitive.Root;\n\nconst AccordionItem = React.forwardRef<\n  React.ElementRef<typeof AccordionPrimitive.Item>,\n  React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Item>\n>(({ className, ...props }, ref) => (\n  <AccordionPrimitive.Item ref={ref} className={cn(className)} {...props} />\n));\nAccordionItem.displayName = 'AccordionItem';\n\nconst AccordionTrigger = React.forwardRef<\n  React.ElementRef<typeof AccordionPrimitive.Trigger>,\n  React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n  <AccordionPrimitive.Header className=\"bitte-flex\">\n    <AccordionPrimitive.Trigger\n      ref={ref}\n      className={cn(\n        'bitte-flex bitte-flex-1 bitte-items-center bitte-justify-between bitte-text-sm bitte-font-medium bitte-transition-all bitte-text-left [&[data-state=open]>svg]:bitte-rotate-180',\n        className,\n      )}\n      {...props}\n    >\n      {children}\n      <ChevronDown className=\"bitte-h-4 bitte-w-4 bitte-shrink-0 bitte-text-muted-foreground bitte-transition-transform bitte-duration-200\" />\n    </AccordionPrimitive.Trigger>\n  </AccordionPrimitive.Header>\n));\nAccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName;\n\nconst AccordionContent = React.forwardRef<\n  React.ElementRef<typeof AccordionPrimitive.Content>,\n  React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Content>\n>(({ className, children, style, ...props }, ref) => (\n  <AccordionPrimitive.Content\n    ref={ref}\n    className=\"bitte-overflow-hidden bitte-text-sm data-[state=closed]:bitte-animate-accordion-up data-[state=open]:bitte-animate-accordion-down\"\n    {...props}\n  >\n    <div className={cn('bitte-pb-4 bitte-pt-0', className)} style={style}>\n      {children}\n    </div>\n  </AccordionPrimitive.Content>\n));\nAccordionContent.displayName = AccordionPrimitive.Content.displayName;\n\nexport { Accordion, AccordionContent, AccordionItem, AccordionTrigger };\n","import type { MessageGroupComponentProps } from '@bitte-ai/types';\nimport { formatAgentId } from '../../../lib/chat';\nimport { BITTE_BLACK_IMG } from '../../../lib/images';\nimport { cn } from '../../../lib/utils';\nimport { ImageWithFallback } from '../../ui/ImageWithFallback';\nimport {\n  Accordion,\n  AccordionContent,\n  AccordionItem,\n  AccordionTrigger,\n} from '../../ui/accordion';\nimport { Card } from '../../ui/card';\n\nconst DefaultMessageContainer = ({\n  message,\n  isUser,\n  children,\n  style,\n  uniqueKey,\n  showBorder,\n}: MessageGroupComponentProps) => {\n  if (isUser) {\n    return (\n      <div\n        className=\"bitte-w-full bitte-rounded-md bitte-flex bitte-justify-end bitte-animate-in bitte-fade-in-0 bitte-duration-300\"\n        data-message-group\n      >\n        <div\n          className={cn(\n            'bitte-flex-shrink-0 bitte-max-w-full bitte-p-4 bitte-text-sm bitte-rounded-[6px]',\n            showBorder ? 'bitte-border' : '',\n          )}\n          style={{\n            backgroundColor: style.backgroundColor,\n            borderColor: style.borderColor,\n          }}\n        >\n          {children}\n        </div>\n      </div>\n    );\n  }\n\n  return (\n    <Card\n      className={cn(\n        'bitte-p-6 bitte-w-full bitte-animate-in bitte-fade-in-0 bitte-duration-300',\n        showBorder ? 'bitte-border' : '',\n      )}\n      style={{\n        backgroundColor: style.backgroundColor,\n        borderColor: style.borderColor,\n        color: style.textColor,\n      }}\n      data-message-group\n    >\n      <Accordion\n        type=\"single\"\n        defaultValue={uniqueKey}\n        collapsible\n        className=\"bitte-w-full\"\n      >\n        <AccordionItem value={uniqueKey} className=\"bitte-border-0\">\n          <AccordionTrigger className=\"bitte-p-0\">\n            <div className=\"bitte-flex bitte-items-center bitte-justify-center bitte-gap-2\">\n              <ImageWithFallback\n                src={message.agentImage || '/placeholder.svg'}\n                fallbackSrc={BITTE_BLACK_IMG}\n                className={cn(\n                  'bitte-h-[18px] bitte-w-[18px] bitte-rounded',\n                  message.agentImage === BITTE_BLACK_IMG\n                    ? 'bitte-invert-0 bitte-dark:invert'\n                    : 'bitte-dark:bg-card-list',\n                )}\n                alt={`${message.agentId} icon`}\n              />\n              <p className=\"bitte-text-[14px]\">\n                {message.agentName ||\n                  formatAgentId(message.agentId ?? 'Bitte Assistant')}\n              </p>\n            </div>\n          </AccordionTrigger>\n          <AccordionContent\n            className=\"bitte-mt-6 bitte-border-t bitte-pb-0\"\n            style={{ borderColor: style.borderColor }}\n          >\n            {children}\n          </AccordionContent>\n        </AccordionItem>\n      </Accordion>\n    </Card>\n  );\n};\n\nexport default DefaultMessageContainer;\n","import { TransactionStatus } from '@bitte-ai/types';\nimport { Transaction } from '@near-wallet-selector/core';\nimport { Message } from 'ai';\nimport { SignRequestData } from 'near-safe';\n\nexport const createTransactionStatusMessage = (\n  transactions: Transaction[],\n  status: TransactionStatus,\n  hashes: string[],\n  error?: string,\n  messageId?: string,\n): Omit<Message, 'id'> => ({\n  role: 'system',\n  content: JSON.stringify({\n    transactions,\n    status,\n    message:\n      status === 'success'\n        ? `Transaction successful! Hash: ${hashes?.length > 0 ? hashes.join(', ') : ''}`\n        : status === 'fail'\n          ? `Transaction failed: ${error}`\n          : 'Transaction pending',\n    hashes: hashes,\n    messageId,\n  }),\n});\n\nexport const createEvmTransactionStatusMessage = (\n  evmData: SignRequestData,\n  status: TransactionStatus,\n  txHash?: string,\n  messageId?: string,\n  error?: string,\n): Omit<Message, 'id'> => ({\n  role: 'system',\n  content: JSON.stringify({\n    status,\n    evmData,\n    message:\n      status === 'success'\n        ? `Transaction successful! Hash: ${txHash}`\n        : status === 'fail'\n          ? `Transaction failed: ${error}`\n          : 'Transaction pending',\n    txHash,\n    messageId,\n  }),\n});\n\nexport const createDeclineTransactionMessage = (\n  messageId?: string,\n): Omit<Message, 'id'> => ({\n  role: 'system',\n  content: JSON.stringify({\n    message: 'Transaction declined!',\n    messageId,\n  }),\n});\n","import {\n  TransactionButtonProps,\n  TransactionContainerProps,\n} from '@bitte-ai/types';\nimport { Message } from 'ai';\nimport { SignRequestData } from 'near-safe';\n\nimport { formatEther } from 'viem';\n\nimport { createDeclineTransactionMessage } from '../../../lib/transaction-messages';\nimport { shortenString } from '../../../lib/utils';\nimport { useAccount } from '../../../state/wallet.state';\n\nimport { useState } from 'react';\nimport { useEVMTransaction } from '../../../hooks/useEvmTransaction';\nimport { useWindowSize } from '../../../hooks/useWindowSize';\nimport { isValidEvmParams } from '../../../utils/evm';\nimport {\n  Accordion,\n  AccordionContent,\n  AccordionItem,\n  AccordionTrigger,\n} from '../../ui/accordion';\nimport { Button } from '../../ui/button';\nimport { CardFooter, CardHeader } from '../../ui/card';\nimport DefaultTxApproveButton from '../default-components/DefaultTxApproveButton';\nimport DefaultTxContainer from '../default-components/DefaultTxContainer';\nimport DefaultTxDeclineButton from '../default-components/DefaultTxDeclineButton';\nimport { CopyStandard } from './../CopyStandard';\nimport LoadingMessage from './../LoadingMessage';\nimport { TransactionDetail } from './TransactionDetail';\nimport { TransactionResult } from './TransactionResult';\n\nexport interface EvmTxCardProps {\n  evmData?: SignRequestData;\n  messageBackgroundColor: string;\n  borderColor: string;\n  textColor: string;\n  customTxContainer?: React.ComponentType<TransactionContainerProps>;\n  customApproveTxButton?: React.ComponentType<TransactionButtonProps>;\n  customDeclineTxButton?: React.ComponentType<TransactionButtonProps>;\n  append: (\n    message: Message | Omit<Message, 'id'>,\n  ) => Promise<string | null | undefined>;\n  messageId: string;\n}\n\nexport const EvmTxCard = ({\n  evmData,\n  messageBackgroundColor,\n  borderColor,\n  textColor,\n  customTxContainer: TxContainer = DefaultTxContainer,\n  customApproveTxButton: ApproveButton = DefaultTxApproveButton,\n  customDeclineTxButton: DeclineButton = DefaultTxDeclineButton,\n  append,\n  messageId,\n}: EvmTxCardProps) => {\n  const { width } = useWindowSize();\n  const isMobile = !!width && width < 640;\n  const {\n    isLoading,\n    errorMsg,\n    transaction,\n    handleSmartAction,\n    setErrorMsg,\n    network,\n    evmAddress,\n    setTransaction,\n  } = useEVMTransaction({ evmData, append, messageId });\n\n  const [isDeclined, setIsDeclined] = useState(false);\n\n  if (!evmData)\n    return (\n      <p className=\"bitte-my-4 bitte-overflow-auto bitte-text-center\">\n        Unable to create evm transaction.\n      </p>\n    );\n\n  if (\n    !Array.isArray(evmData.params) ||\n    !evmData.params.every(isValidEvmParams)\n  ) {\n    return (\n      <p className=\"bitte-my-4 bitte-overflow-auto bitte-text-center\">\n        Invalid EVM transaction parameters.\n      </p>\n    );\n  }\n\n  const loadingIndicator = (\n    <div>\n      <LoadingMessage color={textColor} />\n      <p className=\"bitte-text-center bitte-text-sm\">\n        Transaction for{' '}\n        {shortenString(\n          typeof evmData.params[0] === 'object' && evmData.params[0]?.to\n            ? evmData.params[0].to\n            : '',\n          8,\n        )}{' '}\n        in progress\n      </p>\n    </div>\n  );\n\n  const declineTransaction = async () => {\n    await append(createDeclineTransactionMessage(messageId));\n    setIsDeclined(true);\n  };\n\n  return (\n    <TxContainer\n      style={{\n        backgroundColor: messageBackgroundColor,\n        borderColor,\n        textColor,\n      }}\n    >\n      <CardHeader\n        className=\"bitte-border-b bitte-p-4 bitte-text-center bitte-md:p-6\"\n        style={{ borderColor: borderColor }}\n      >\n        <p className=\"bitte-text-xl bitte-font-semibold\">EVM Transaction</p>\n      </CardHeader>\n      <div>\n        {evmData ? (\n          <div className=\"bitte-p-6\">\n            <div className=\"bitte-flex bitte-flex-col bitte-gap-6 bitte-text-sm\">\n              <TransactionDetail\n                label=\"Chain ID\"\n                value={shortenString(\n                  evmData.chainId.toString(),\n                  isMobile ? 13 : 21,\n                )}\n              />\n              <TransactionDetail label=\"Network\" value={network?.name || ''} />\n              <Accordion type=\"single\" collapsible defaultValue=\"transaction-0\">\n                {evmData.params.map((transaction, index) => (\n                  <AccordionItem\n                    key={`tx-${typeof transaction === 'object' ? transaction.to : ''}-${index}`}\n                    value={`transaction-${index}`}\n                  >\n                    <AccordionTrigger className=\"bitte-pt-0\">\n                      <div className=\"bitte-flex bitte-items-center bitte-justify-between bitte-text-sm\">\n                        <p>Transaction {index + 1}</p>\n                      </div>\n                    </AccordionTrigger>\n                    <AccordionContent className=\"bitte-flex bitte-flex-col bitte-gap-6\">\n                      {typeof transaction === 'object' && transaction.to && (\n                        <TransactionDetail\n                          label=\"To\"\n                          className=\"bitte--mr-2.5\"\n                          value={\n                            <CopyStandard\n                              text={transaction.to}\n                              textSize=\"sm\"\n                              charSize={isMobile ? 7 : 12}\n                            />\n                          }\n                        />\n                      )}\n                      <TransactionDetail\n                        label=\"Value\"\n                        value={\n                          typeof transaction === 'object' && transaction.value\n                            ? formatEther(BigInt(transaction.value))\n                            : '0'\n                        }\n                      />\n                      <TransactionDetail\n                        label=\"Data\"\n                        value={\n                          <CopyStandard\n                            text={\n                              typeof transaction === 'object'\n                                ? transaction.data || '0x'\n                                : '0x'\n                            }\n                            textSize=\"sm\"\n                            charSize={isMobile ? 10 : 15}\n                          />\n                        }\n                      />\n                    </AccordionContent>\n                  </AccordionItem>\n                ))}\n              </Accordion>\n            </div>\n          </div>\n        ) : null}\n      </div>\n\n      {errorMsg || (transaction?.status === 'error' && transaction?.error) ? (\n        <div className=\"bitte-flex bitte-flex-col bitte-items-center bitte-gap-4 bitte-px-6 bitte-pb-6 bitte-text-center bitte-text-sm\">\n          <p className=\"bitte-text-red-300\">\n            {transaction?.status === 'error' && transaction?.error\n              ? transaction.error\n              : `An error occurred trying to execute your transaction: ${errorMsg}.`}\n          </p>\n          <Button\n            className=\"bitte-w-1/2\"\n            variant=\"outline\"\n            onClick={() => {\n              setErrorMsg('');\n              // Clear error state from transaction if needed\n              if (transaction?.status === 'error') {\n                setTransaction((prev) =>\n                  prev\n                    ? {\n                        ...prev,\n                        error: undefined,\n                      }\n                    : null,\n                );\n              }\n            }}\n          >\n            Dismiss\n          </Button>\n        </div>\n      ) : isLoading ? (\n        loadingIndicator\n      ) : null}\n\n      {isDeclined ? (\n        <div className=\"bitte-px-6 bitte-pb-6 bitte-text-center bitte-text-sm\">\n          Transaction declined!\n        </div>\n      ) : null}\n\n      {transaction?.txHash ? (\n        <TransactionResult\n          result={{\n            evm: { txHash: transaction.txHash, chainId: evmData.chainId },\n          }}\n          accountId={evmAddress || ''}\n          textColor={textColor}\n          success={transaction.status === 'success'}\n        />\n      ) : null}\n\n      {!isLoading && !errorMsg && !transaction?.txHash && !isDeclined ? (\n        <CardFooter className=\"bitte-flex bitte-items-center bitte-gap-6\">\n          <>\n            <DeclineButton onClick={declineTransaction} disabled={isLoading} />\n            <ApproveButton\n              onClick={handleSmartAction}\n              disabled={isLoading}\n              isLoading={isLoading}\n            />\n          </>\n        </CardFooter>\n      ) : null}\n    </TxContainer>\n  );\n};\n","import { atom } from 'jotai';\nimport { atomFamily } from 'jotai/utils';\nimport { SignRequestData } from 'near-safe';\n\nexport type TransactionStatus = 'pending' | 'success' | 'error';\n\nexport interface TransactionState {\n  txHash?: string;\n  status: TransactionStatus;\n  error?: string;\n  messageId: string;\n  timestamp: number;\n}\n\n// Create a family of atoms, one for each transaction ID\nexport const transactionAtomFamily = atomFamily((txId: string) =>\n  atom<TransactionState | null>(null),\n);\n\n// Helper functions\nexport const createTxId = (\n  params: SignRequestData['params'][0],\n  timestamp = Date.now(),\n): string => {\n  const to =\n    params && typeof params === 'object' && 'to' in params\n      ? params.to\n      : 'unknown';\n  return `evm-tx-${to}-${timestamp}`;\n};\n\n// For tracking all active transaction IDs\nexport const activeTransactionIdsAtom = atom<string[]>([]);\n\n// Helper functions to initialize a transaction\nexport const initTransaction = (\n  txId: string,\n  messageId: string,\n): {\n  txId: string;\n  txAtom: ReturnType<typeof transactionAtomFamily>;\n  initialState: TransactionState;\n} => {\n  const txAtom = transactionAtomFamily(txId);\n\n  return {\n    txId,\n    txAtom,\n    initialState: {\n      status: 'pending' as TransactionStatus,\n      messageId,\n      timestamp: Date.now(),\n    },\n  };\n};\n","import { Network } from 'near-safe';\nimport { http, Hash, Hex, createPublicClient } from 'viem';\n\nexport const getRpcUrlForChain = (chainId: number): string | null => {\n  return Network.fromChainId(chainId).rpcUrl || null;\n};\n\n/**\n * Validate if the provided object is a valid EVM transaction parameters object\n */\nexport const isValidEvmParams = (data: unknown): boolean => {\n  return (\n    typeof data === 'object' &&\n    data !== null &&\n    'to' in data &&\n    typeof (data as any).to === 'string' &&\n    (data as any).to.startsWith('0x')\n  );\n};\n\nexport const checkTransactionStatus = async (\n  txHash: Hash,\n  chainId: number,\n): Promise<{ success: boolean; errorMessage?: string }> => {\n  try {\n    const rpcUrl = getRpcUrlForChain(chainId);\n    if (!rpcUrl) return { success: true }; // If we can't determine, assume success\n\n    // Create a viem public client\n    const publicClient = createPublicClient({\n      transport: http(rpcUrl),\n    });\n\n    // Wait for the transaction to be mined\n    let receipt = null;\n    let attempts = 0;\n    const maxAttempts = 10;\n    const pollingInterval = 1500; // 1.5 seconds between polls\n\n    while (!receipt && attempts < maxAttempts) {\n      receipt = await publicClient\n        .getTransactionReceipt({\n          hash: txHash,\n        })\n        .catch(() => null);\n\n      if (!receipt) {\n        attempts++;\n        if (attempts < maxAttempts) {\n          await new Promise((r) => setTimeout(r, pollingInterval));\n        }\n      }\n    }\n\n    // If receipt is still null after max attempts, return pending state\n    if (!receipt) {\n      return {\n        success: true,\n        errorMessage: 'Transaction pending - mining in progress',\n      };\n    }\n\n    // Get additional transaction details if available\n    const txDetails = await publicClient\n      .getTransaction({\n        hash: txHash,\n      })\n      .catch(() => null);\n\n    // Get revert reason if transaction failed\n    let errorMessage: string | undefined;\n    if (receipt.status === 'reverted') {\n      try {\n        // Check if we need to simulate to get error details\n        if (txDetails) {\n          const { from, to, value, gas } = txDetails;\n          // Transaction data might not exist on all transaction types\n          const data =\n            'data' in txDetails && txDetails.data\n              ? (txDetails.data as Hash)\n              : undefined;\n\n          const simulationResult = await publicClient\n            .call({\n              account: from,\n              to: to,\n              value,\n              data,\n              gas,\n            })\n            .catch((err) => ({ error: err }));\n\n          if ('error' in simulationResult) {\n            errorMessage =\n              simulationResult.error?.message || 'Transaction reverted';\n            // Remove viem version information from error message\n            if (errorMessage) {\n              errorMessage = errorMessage.replace(\n                /\\s*Version:\\s*viem@\\d+\\.\\d+\\.\\d+.*$/,\n                '',\n              );\n            }\n          }\n        }\n      } catch (simError) {\n        errorMessage = 'Transaction reverted';\n      }\n\n      if (!errorMessage) {\n        errorMessage = 'Transaction reverted';\n      }\n    }\n\n    return {\n      success: receipt.status === 'success',\n      errorMessage,\n    };\n  } catch (error) {\n    console.error('Error checking transaction status:', error);\n    // Sanitize error message if it's a string\n    let sanitizedError = error instanceof Error ? error.message : String(error);\n    sanitizedError = sanitizedError.replace(\n      /\\s*Version:\\s*viem@\\d+\\.\\d+\\.\\d+.*$/,\n      '',\n    );\n\n    return { success: true, errorMessage: sanitizedError }; // If check fails, assume success but provide error details\n  }\n};\n\nexport function ensureValidHash(hash: any): Hash {\n  if (!hash.startsWith('0x')) {\n    return `0x${hash}` as Hash;\n  }\n  return hash as Hash;\n}\n","import type {\n  EVMWalletAdapter,\n  HandleTxnOptions,\n  SuccessInfo,\n  UseTransactionProps,\n} from '@bitte-ai/types';\nimport { Transaction as SuiTransaction } from '@mysten/sui/transactions';\nimport {\n  FinalExecutionOutcome,\n  Transaction,\n  Wallet,\n} from '@near-wallet-selector/core';\nimport { WalletContextState } from '@suiet/wallet-kit';\nimport { useSetAtom } from 'jotai';\nimport { Account } from 'near-api-js';\nimport {\n  EthTransactionParams,\n  SignRequestData as NearSafeSignRequestData,\n} from 'near-safe';\nimport { Hash } from 'viem';\nimport {\n  activeTransactionIdsAtom,\n  transactionAtomFamily,\n} from '../store/evmTransactionStore';\nimport { ensureValidHash } from '../utils/evm';\n\nexport const useTransaction = ({\n  account,\n  wallet,\n  evmWallet,\n  suiWallet,\n}: UseTransactionProps) => {\n  // Access transaction store atoms\n  const setTransactionAtom = useSetAtom(transactionAtomFamily(''));\n  const setActiveTransactionIds = useSetAtom(activeTransactionIdsAtom);\n\n  const handleTxn = async ({\n    transactions,\n    evmData,\n    suiTransaction,\n  }: HandleTxnOptions): Promise<SuccessInfo> => {\n    if (!wallet && !account && !evmWallet?.address && !suiWallet?.address) {\n      throw new Error('No wallet or account provided');\n    }\n\n    // Execute NEAR transactions if provided\n    let nearResult: FinalExecutionOutcome[] = [];\n    if (transactions) {\n      nearResult = account\n        ? await executeWithAccount(transactions, account)\n        : (await executeWithWallet(transactions, wallet)) || [];\n    }\n\n    // Execute EVM transactions if provided\n    let evmHashes: string[] = [];\n    if (evmData && evmWallet) {\n      evmHashes = await executeWithEvmWallet(\n        evmData as unknown as NearSafeSignRequestData,\n        evmWallet,\n      );\n    }\n\n    // Execute SUI transactions if provided\n    let suiResult;\n    if (suiTransaction && suiWallet) {\n      suiResult = await executeWithSuiWallet(suiWallet, suiTransaction);\n    }\n\n    // Return results for all executed transactions\n    return {\n      near: {\n        receipts: nearResult,\n        transactions: transactions || [],\n      },\n      sui: suiResult,\n      evmHashes: evmHashes,\n    } as SuccessInfo;\n  };\n\n  return {\n    handleTxn,\n  };\n};\n\nexport const executeWithAccount = async (\n  transactions: Transaction[],\n  account: Account,\n): Promise<FinalExecutionOutcome[]> => {\n  const results = await Promise.all(\n    transactions.map(async (txn) => {\n      if (txn.actions.every((action) => action.type === 'FunctionCall')) {\n        try {\n          return await account.functionCall({\n            contractId: txn.receiverId,\n            methodName: txn.actions[0].params.methodName,\n            args: txn.actions[0].params.args,\n            attachedDeposit: BigInt(txn.actions[0].params.deposit),\n            gas: BigInt(txn.actions[0].params.gas),\n            walletCallbackUrl: window.location.href,\n          });\n        } catch (error) {\n          console.error(\n            `Transaction failed for contract ${txn.receiverId}, method ${txn.actions[0].params.methodName}:`,\n            error,\n          );\n          return null;\n        }\n      }\n      return null;\n    }),\n  );\n  return results.filter(\n    (result): result is FinalExecutionOutcome => result !== null,\n  );\n};\n\nexport const executeWithWallet = async (\n  transactions: Transaction[],\n  wallet: Wallet | undefined,\n): Promise<void | FinalExecutionOutcome[]> => {\n  if (!wallet) {\n    throw new Error(\"Can't have undefined account and wallet\");\n  }\n  return wallet.signAndSendTransactions({\n    transactions: transactions,\n    callbackUrl: window.location.href,\n  });\n};\n\nexport const executeWithEvmWallet = async (\n  evmData: NearSafeSignRequestData,\n  evmWallet: EVMWalletAdapter,\n): Promise<Hash[]> => {\n  if (!Array.isArray(evmData.params)) {\n    throw new Error('Invalid transaction parameters');\n  }\n\n  if (\n    !evmData.params.every(\n      (tx): tx is EthTransactionParams => typeof tx === 'object' && 'to' in tx,\n    )\n  ) {\n    throw new Error('Invalid transaction parameters');\n  }\n\n  const initialHash: Hash = evmWallet.hash as Hash;\n  const txHashes: Hash[] = [];\n\n  try {\n    // Execute all transactions\n    for (const tx of evmData.params) {\n      const rawTxParams = {\n        to: tx.to,\n        value: tx.value ? BigInt(tx.value) : BigInt(0),\n        data: tx.data || '0x',\n        from: tx.from,\n        gas: tx.gas ? BigInt(tx.gas) : undefined,\n      };\n\n      // Send the transaction\n      await evmWallet.sendTransaction(rawTxParams);\n    }\n\n    // After all transactions, check if we have a hash\n    if (evmWallet.hash && evmWallet.hash !== initialHash) {\n      txHashes.push(ensureValidHash(evmWallet.hash));\n    }\n\n    // Give it a small delay to ensure wallet state is updated\n    await new Promise((resolve) => setTimeout(resolve, 200));\n\n    // Check one more time after the delay\n    if (\n      evmWallet.hash &&\n      evmWallet.hash !== initialHash &&\n      !txHashes.includes(evmWallet.hash as Hash)\n    ) {\n      txHashes.push(ensureValidHash(evmWallet.hash));\n    }\n  } catch (error) {\n    console.error('Transaction failed:', error);\n    throw error;\n  }\n\n  // If we still don't have any hashes but we have a wallet hash, use it\n  if (\n    txHashes.length === 0 &&\n    evmWallet.hash &&\n    evmWallet.hash !== initialHash\n  ) {\n    txHashes.push(ensureValidHash(evmWallet.hash));\n  }\n\n  // If we absolutely have no hashes but the transaction didn't fail, create a placeholder\n  if (txHashes.length === 0) {\n    // Generate a placeholder hash that will be replaced by polling in the component\n    const placeholderHash = `pending-${Date.now()}` as Hash;\n\n    txHashes.push(placeholderHash);\n  }\n\n  return txHashes;\n};\n\nexport async function executeWithSuiWallet(\n  wallet: WalletContextState,\n  transaction: SuiTransaction,\n): Promise<{\n  digest: string;\n  effects: string; // TODO base 64 encoded we can look in here to see the effects of the transaction\n}> {\n  if (!wallet || !wallet.connected) {\n    throw new Error('Wallet not connected');\n  }\n\n  try {\n    if (!transaction) {\n      throw new Error('Empty transaction received');\n    }\n\n    const result = await wallet.signAndExecuteTransaction({\n      transaction,\n    });\n    return result;\n  } catch (err) {\n    console.error('Transaction execution error:', err);\n    throw err instanceof Error\n      ? err\n      : new Error('Unknown error executing transaction');\n  }\n}\n","import { useTransaction } from '../hooks/useTransaction';\nimport { useAccount } from '../state/wallet.state';\n\nimport { useAtom, useSetAtom } from 'jotai';\nimport { Network } from 'near-safe';\nimport { useEffect, useMemo, useRef, useState } from 'react';\nimport { EvmTxCardProps } from '../components/chat/transactions/EvmTxCard';\nimport { createEvmTransactionStatusMessage } from '../lib/transaction-messages';\nimport {\n  TransactionState,\n  TransactionStatus,\n  activeTransactionIdsAtom,\n  createTxId,\n  initTransaction,\n  transactionAtomFamily,\n} from '../store/evmTransactionStore';\nimport {\n  checkTransactionStatus,\n  ensureValidHash,\n  getRpcUrlForChain,\n} from '../utils/evm';\n\n// Ensure evmData is required for the useEVMTransaction hook\ntype UseEVMTransactionParams = {\n  evmData: NonNullable<EvmTxCardProps['evmData']> | undefined;\n  append: EvmTxCardProps['append'];\n  messageId: EvmTxCardProps['messageId'];\n};\n\nexport const useEVMTransaction = ({\n  evmData,\n  append,\n  messageId,\n}: UseEVMTransactionParams) => {\n  const [errorMsg, setErrorMsg] = useState('');\n  const [isLoading, setIsLoading] = useState(false);\n  const { evmAddress, evmWallet, chainId } = useAccount();\n  const initialWalletHash = useRef<string | undefined>(evmWallet?.hash);\n  const setActiveTransactionIds = useSetAtom(activeTransactionIdsAtom);\n  const messageAppended = useRef(false);\n\n  if (!evmData) {\n    return {\n      isLoading: false,\n      errorMsg: '',\n      setErrorMsg: () => {},\n      transaction: null,\n      handleSmartAction: async () => {},\n      network: null,\n      evmAddress: '',\n      setTransaction: () => {},\n    };\n  }\n\n  // Create a unique transaction ID for this card\n  const txId = useMemo(() => {\n    if (!evmData?.params?.[0]) return '';\n    return createTxId(evmData.params[0]);\n  }, [evmData?.params]);\n\n  // Create and use the transaction atom for this specific transaction\n  const [transaction, setTransaction] = useAtom(transactionAtomFamily(txId));\n\n  useEffect(() => {\n    return () => {\n      if (txId) {\n        setActiveTransactionIds((prev: string[]) =>\n          prev.filter((id: string) => id !== txId),\n        );\n      }\n    };\n  }, [txId, setActiveTransactionIds]);\n\n  useEffect(() => {\n    if (chainId !== evmData.chainId && evmWallet?.switchChain) {\n      evmWallet.switchChain({ chainId: evmData.chainId });\n    }\n  }, [chainId, evmData.chainId, evmWallet?.switchChain]);\n\n  const network = Network.fromChainId(evmData.chainId);\n  const { handleTxn } = useTransaction({ evmWallet: evmWallet });\n\n  const handleSmartAction = async () => {\n    // Initialize transaction state\n    if (!txId) return;\n\n    setIsLoading(true);\n\n    // Store initial wallet hash\n    initialWalletHash.current = evmWallet?.hash;\n\n    // Initialize transaction in store\n    const { initialState, txAtom } = initTransaction(txId, messageId);\n    setTransaction(initialState);\n\n    // Add to active transactions list\n    setActiveTransactionIds((prev: string[]) => [...prev, txId]);\n\n    try {\n      const adaptedEvmData = {\n        ...evmData,\n        metaTransactions: [],\n      };\n\n      // Execute transaction\n      const result = await handleTxn({ evmData: adaptedEvmData });\n\n      // Check if we have transaction hashes\n      const evmHashes = (result as any).evmHashes;\n\n      if (evmHashes && Array.isArray(evmHashes) && evmHashes.length > 0) {\n        const newTxHash = evmHashes[0];\n\n        // If it's a placeholder hash (starts with 'pending-'), treat it as pending\n        const isPending =\n          typeof newTxHash === 'string' && newTxHash.startsWith('pending-');\n\n        if (!isPending) {\n          // Check if the transaction was successful\n          const { success, errorMessage } = await checkTransactionStatus(\n            newTxHash,\n            evmData.chainId,\n          );\n          const txStatus = success ? 'success' : 'fail';\n\n          // Update transaction state with real hash\n          setTransaction((prev: TransactionState | null) => ({\n            ...(prev || initialState),\n            txHash: newTxHash,\n            status: success ? 'success' : ('error' as TransactionStatus),\n            error: errorMessage,\n          }));\n\n          if (!messageAppended.current) {\n            messageAppended.current = true;\n            await append(\n              createEvmTransactionStatusMessage(\n                evmData,\n                txStatus,\n                newTxHash,\n                messageId,\n                errorMessage,\n              ),\n            );\n          }\n        } else {\n          // For placeholder hash, just keep loading state active\n\n          // Set a temporary hash that will be updated by polling\n          setTransaction((prev: TransactionState | null) => ({\n            ...(prev || initialState),\n            txHash: undefined, // Don't set placeholder hash to UI\n            status: 'pending' as TransactionStatus,\n          }));\n\n          // Continue in loading state for polling to work\n          // Don't append message yet\n        }\n      }\n      // Fallback to wallet hash if result doesn't contain hash\n      else if (\n        evmWallet?.hash &&\n        evmWallet.hash !== initialWalletHash.current\n      ) {\n        const newTxHash = ensureValidHash(evmWallet.hash);\n        // Check if the transaction was successful\n        const { success, errorMessage } = await checkTransactionStatus(\n          newTxHash,\n          evmData.chainId,\n        );\n        const txStatus = success ? 'success' : 'fail';\n\n        setTransaction((prev: TransactionState | null) => ({\n          ...(prev || initialState),\n          txHash: newTxHash,\n          status: success ? 'success' : ('error' as TransactionStatus),\n          error: errorMessage,\n        }));\n\n        if (!messageAppended.current) {\n          messageAppended.current = true;\n          await append(\n            createEvmTransactionStatusMessage(\n              evmData,\n              txStatus,\n              newTxHash,\n              messageId,\n              errorMessage,\n            ),\n          );\n        }\n      }\n\n      // Note: don't setIsLoading(false) here if we need to keep polling\n      if (\n        transaction?.txHash ||\n        (evmHashes &&\n          evmHashes.length > 0 &&\n          !evmHashes[0].startsWith('pending-'))\n      ) {\n        setIsLoading(false);\n      }\n    } catch (error) {\n      const errorMessage =\n        error instanceof Error\n          ? error.message\n          : `Unknown error: ${JSON.stringify(error)}`;\n\n      console.error(`Transaction ${txId} error:`, errorMessage);\n\n      // Update transaction state with error\n      setTransaction((prev: TransactionState | null) => ({\n        ...(prev || initialState),\n        status: 'error' as TransactionStatus,\n        error: errorMessage,\n      }));\n\n      setIsLoading(false);\n      setErrorMsg(errorMessage);\n\n      if (!messageAppended.current) {\n        messageAppended.current = true;\n        await append(\n          createEvmTransactionStatusMessage(\n            evmData,\n            'fail',\n            undefined,\n            messageId,\n            errorMessage,\n          ),\n        );\n      }\n    }\n  };\n\n  useEffect(() => {\n    let interval: ReturnType<typeof setInterval> | null = null;\n    let retryCount = 0;\n    const MAX_RETRIES = 30; // 15 seconds total (30 * 500ms)\n\n    if (\n      isLoading &&\n      (!transaction?.txHash || transaction?.status === 'pending')\n    ) {\n      interval = setInterval(() => {\n        retryCount++;\n        const currentHash = evmWallet?.hash;\n\n        if (currentHash && currentHash !== initialWalletHash.current) {\n          clearInterval(interval!);\n\n          // Check transaction status before updating the UI\n          (async () => {\n            // Check if the transaction was successful\n            const { success, errorMessage } = await checkTransactionStatus(\n              ensureValidHash(currentHash),\n              evmData.chainId,\n            );\n            const txStatus = success ? 'success' : 'fail';\n\n            // Update transaction with hash and status\n            setTransaction((prev: TransactionState | null) =>\n              prev\n                ? {\n                    ...prev,\n                    txHash: currentHash,\n                    status: success\n                      ? 'success'\n                      : ('error' as TransactionStatus),\n                    error: errorMessage,\n                  }\n                : null,\n            );\n\n            setIsLoading(false);\n\n            // Append message if not already appended\n            if (!messageAppended.current) {\n              messageAppended.current = true;\n              await append(\n                createEvmTransactionStatusMessage(\n                  evmData,\n                  txStatus,\n                  currentHash,\n                  messageId,\n                  errorMessage,\n                ),\n              );\n            }\n          })();\n        }\n\n        // Give up after maximum retries\n        if (retryCount >= MAX_RETRIES) {\n          clearInterval(interval!);\n\n          if (isLoading) {\n            setIsLoading(false);\n\n            // If we still don't have a hash but the transaction was started,\n            // set a fallback UI state\n            if (!messageAppended.current) {\n              messageAppended.current = true;\n              (async () => {\n                await append(\n                  createEvmTransactionStatusMessage(\n                    evmData,\n                    'pending',\n                    undefined,\n                    messageId,\n                    'Transaction submitted. Check your wallet history for confirmation.',\n                  ),\n                );\n              })();\n            }\n          }\n        }\n      }, 500);\n    }\n\n    return () => {\n      if (interval) {\n        clearInterval(interval);\n      }\n    };\n  }, [\n    isLoading,\n    transaction,\n    evmWallet,\n    evmData,\n    messageId,\n    append,\n    setTransaction,\n  ]);\n\n  return {\n    isLoading,\n    setIsLoading,\n    setErrorMsg,\n    errorMsg,\n    transaction,\n    handleSmartAction,\n    handleTxn,\n    checkTransactionStatus,\n    getRpcUrlForChain,\n    network,\n    evmData,\n    evmAddress,\n    setTransaction,\n  };\n};\n","import type { TransactionButtonProps } from '@bitte-ai/types';\nimport { Button } from '../../ui/button';\n\nconst DefaultTxApproveButton: React.FC<TransactionButtonProps> = ({\n  onClick,\n  disabled,\n  isLoading,\n  label,\n}) => (\n  <Button className=\"bitte-w-1/2\" onClick={onClick} disabled={disabled}>\n    {isLoading ? 'Confirming...' : label || 'Approve'}\n  </Button>\n);\n\nexport default DefaultTxApproveButton;\n","import type { TransactionContainerProps } from '@bitte-ai/types';\nimport { Card } from '../../ui/card';\n\nconst DefaultTxContainer: React.FC<TransactionContainerProps> = ({\n  children,\n  style,\n}) => (\n  <Card\n    className=\"bitte-mb-8 bitte-flex bitte-flex-col bitte-justify-center bitte-w-full\"\n    style={{\n      backgroundColor: style.backgroundColor,\n      borderColor: style.borderColor,\n      color: style.textColor,\n    }}\n  >\n    {children}\n  </Card>\n);\nexport default DefaultTxContainer;\n","import type { TransactionButtonProps } from '@bitte-ai/types';\nimport { Button } from '../../ui/button';\n\nconst DefaultTxDeclineButton: React.FC<TransactionButtonProps> = ({\n  onClick,\n  disabled,\n  label,\n}) => (\n  <Button\n    variant=\"outline\"\n    className=\"bitte-w-1/2\"\n    onClick={onClick}\n    disabled={disabled}\n  >\n    {label || 'Decline'}\n  </Button>\n);\n\nexport default DefaultTxDeclineButton;\n","import { CopyIcon } from 'lucide-react';\nimport { useState } from 'react';\nimport { useWindowSize } from '../../hooks/useWindowSize';\nimport { formatName, shortenString } from '../../lib/utils';\n\nexport const CopyStandard = ({\n  text,\n  textSize,\n  charSize,\n  isUrl,\n}: {\n  text: string;\n  textSize?: string;\n  charSize?: number;\n  isUrl?: boolean;\n}) => {\n  const [showLinkCopiedText, setShowLinkCopiedText] = useState(false);\n\n  const { width } = useWindowSize();\n  const isMobile = !!width && width < 1024;\n\n  const handleCopyLink = async () => {\n    await navigator.clipboard.writeText(text);\n\n    setShowLinkCopiedText(true);\n    setTimeout(() => setShowLinkCopiedText(false), 3000);\n  };\n\n  return (\n    <div\n      id=\"copy\"\n      className=\"bitte-cursor-pointer bitte-p-2.5\"\n      onClick={handleCopyLink}\n    >\n      <span\n        className={`bitte-relative bitte-flex bitte-items-center bitte-justify-center bitte-gap-2 ${textSize ? `bitte-text-${textSize}` : 'bitte-text-base'}`}\n      >\n        {showLinkCopiedText\n          ? 'Copied'\n          : isUrl\n            ? formatName(text, isMobile ? (charSize ?? 18) : (charSize ?? 35))\n            : shortenString(\n                text,\n                isMobile ? (charSize ?? 18) : (charSize ?? 35),\n              )}{' '}\n        <CopyIcon size={16} className=\"bitte-text-shad-blue-100\" />\n      </span>\n    </div>\n  );\n};\n","import { BitteSpinner } from './BitteSpinner';\n\nconst LoadingMessage = ({ color }: { color: string }) => (\n  <div className=\"bitte-flex bitte-flex-col bitte-items-center bitte-justify-center\">\n    <div className=\"bitte-flex bitte-w-full bitte-items-center bitte-justify-center\">\n      <BitteSpinner width={100} height={100} color={color} />\n    </div>\n  </div>\n);\n\nexport default LoadingMessage;\n","export const TransactionDetail = ({\n  label,\n  value,\n  className,\n}: {\n  label: string;\n  value: string | JSX.Element;\n  className?: string;\n}) => (\n  <div\n    className={`bitte-flex bitte-items-center bitte-justify-between bitte-text-sm ${className}`}\n  >\n    <div className=\"bitte-text-text-secondary\">{label}</div>\n    <div className=\"bitte-break-all\">{value}</div>\n  </div>\n);\n","import { NearReceipt, TransactionResultProps } from '@bitte-ai/types';\nimport { MoveUpRight } from 'lucide-react';\nimport { Network } from 'near-safe';\nimport { getNearblocksURL, shortenString } from '../../../lib/utils';\n\nexport const TransactionResult = ({\n  result: { evm, near },\n  accountId,\n  textColor,\n  success = true, // Default to success if not specified\n}: TransactionResultProps & { success?: boolean }) => {\n  const scanUrl = evm?.txHash\n    ? `${Network.fromChainId(evm.chainId).scanUrl}/tx/${evm.txHash}`\n    : null;\n\n  return (\n    <div className=\"bitte-mt-4\">\n      <p\n        className=\"bitte-text-center bitte-text-[14px] bitte-font-semibold\"\n        style={{ color: success ? undefined : 'var(--red-11, #f87171)' }}\n      >\n        {success ? 'Transaction Success' : 'Transaction failed'}\n      </p>\n      <div\n        className=\"bitte-flex bitte-flex-col bitte-gap-4 bitte-p-6 bitte-text-[14px]\"\n        style={{ color: textColor }}\n      >\n        {evm?.txHash && scanUrl && (\n          <div className=\"bitte-flex bitte-items-center bitte-justify-between bitte-px-6 bitte-text-[14px]\">\n            <div>EVM Transaction</div>\n            <a\n              className=\"bitte-flex bitte-gap-1 bitte-items-center\"\n              href={scanUrl}\n              target=\"_blank\"\n              rel=\"noopener noreferrer\"\n            >\n              {shortenString(evm.txHash, 10)}\n              <MoveUpRight width={12} height={12} />\n            </a>\n          </div>\n        )}\n        {near?.receipts &&\n          near.receipts.map((receipt: NearReceipt) => (\n            <div\n              key={receipt.transaction.hash}\n              className=\"bitte-flex bitte-items-center bitte-justify-between bitte-px-6 bitte-text-[14px]\"\n            >\n              <div>Near Transaction</div>\n              <a\n                className=\"bitte-flex bitte-gap-1 bitte-items-center\"\n                href={getNearblocksURL(accountId, receipt.transaction.hash)}\n                target=\"_blank\"\n                rel=\"noopener noreferrer\"\n              >\n                {shortenString(receipt.transaction.hash, 10)}\n                <MoveUpRight width={12} height={12} />\n              </a>\n            </div>\n          ))}\n      </div>\n    </div>\n  );\n};\n","'use client';\n\nimport { ReviewSignMessageProps, SignMessageResult } from '@bitte-ai/types';\nimport { useEffect, useMemo, useState } from 'react';\nimport { useHashParams } from '../../../hooks/useHashParams';\nimport { generateNonceString, signMessage } from '../../../lib/sign-message';\nimport { errorString } from '../../../lib/utils';\nimport { useAccount } from '../../../state/wallet.state';\nimport { Button } from '../../ui/button';\nimport { CardContent, CardFooter, CardHeader } from '../../ui/card';\nimport { CopyStandard } from '../CopyStandard';\nimport LoadingMessage from '../LoadingMessage';\nimport DefaultTxApproveButton from '../default-components/DefaultTxApproveButton';\nimport DefaultTxContainer from '../default-components/DefaultTxContainer';\nimport DefaultTxDeclineButton from '../default-components/DefaultTxDeclineButton';\n\nexport const ReviewSignMessage = ({\n  message,\n  nonce: nonceParam,\n  callbackUrl = '',\n  recipient,\n  textColor,\n  messageBackgroundColor,\n  borderColor,\n  chatId,\n  toolCallId,\n  addToolResult,\n  customTxContainer: TxContainer = DefaultTxContainer,\n  customApproveTxButton: ApproveButton = DefaultTxApproveButton,\n  customDeclineTxButton: DeclineButton = DefaultTxDeclineButton,\n}: ReviewSignMessageProps) => {\n  const [loading, setLoading] = useState(false);\n  const [errorMsg, setErrorMsg] = useState('');\n  const [result, setResult] = useState<SignMessageResult | null>(null);\n\n  const { wallet, accountId } = useAccount();\n  const { hashParams, clearHashParams } = useHashParams<{\n    accountId: string;\n    publicKey: string;\n    signature: string;\n    state: string;\n  }>();\n\n  const nonce = useMemo(() => {\n    const nonceKey = `${toolCallId}-nonce`;\n    // First use nonce param if provided by context to Component\n    if (nonceParam) {\n      sessionStorage.setItem(nonceKey, nonceParam);\n      return nonceParam;\n    }\n\n    // Second check for stored nonce in session storage\n    const storedNonce = sessionStorage.getItem(nonceKey);\n    if (storedNonce) {\n      return storedNonce;\n    }\n\n    // Third, generate a new nonce and store it in session storage\n    const newNonce = generateNonceString();\n    sessionStorage.setItem(nonceKey, newNonce);\n    return newNonce;\n  }, [nonceParam, toolCallId]);\n\n  // Process hash parameters when they change or component dependencies change\n  useEffect(() => {\n    if (!result && hashParams.signature) {\n      const validAccountId = hashParams.accountId || accountId;\n      if (hashParams.signature && validAccountId && message) {\n        const signedMessage = {\n          accountId: validAccountId,\n          publicKey: hashParams.publicKey,\n          signature: hashParams.signature,\n          message,\n          nonce,\n          recipient: recipient || validAccountId,\n          callbackUrl,\n          state: hashParams.state,\n        };\n\n        setResult(signedMessage);\n        addToolResult({ data: signedMessage });\n\n        // Clear hash params to avoid processing them again\n        // if the component remounts\n        clearHashParams();\n      }\n    }\n  }, [\n    hashParams,\n    accountId,\n    message,\n    nonce,\n    recipient,\n    callbackUrl,\n    result,\n    addToolResult,\n    clearHashParams,\n  ]);\n\n  const handleMessageSign = async () => {\n    if (!wallet || !accountId) {\n      return;\n    }\n\n    try {\n      setLoading(true);\n      setErrorMsg('');\n      const signedMessage = await signMessage(\n        {\n          message,\n          nonce,\n          callbackUrl,\n          recipient: recipient || accountId,\n        },\n        wallet,\n      );\n\n      if (signedMessage) {\n        setResult(signedMessage);\n        addToolResult({ data: signedMessage });\n      }\n    } catch (error) {\n      const newErrorMsg = errorString(error);\n      setErrorMsg(newErrorMsg);\n      addToolResult({ error: newErrorMsg });\n    } finally {\n      setLoading(false);\n    }\n  };\n\n  return (\n    <TxContainer\n      style={{\n        backgroundColor: messageBackgroundColor,\n        borderColor: borderColor,\n        textColor: textColor,\n      }}\n    >\n      <CardHeader\n        className=\"bitte-border-b bitte-text-center\"\n        style={{ borderColor: borderColor }}\n      >\n        <p className=\"bitte-text-[20px] bitte-font-semibold\">Sign Message</p>\n      </CardHeader>\n\n      <CardContent>\n        <div className=\"bitte-border-b\" style={{ borderColor: borderColor }}>\n          <div className=\"bitte-flex bitte-flex-col bitte-gap-6 bitte-p-6\">\n            <div className=\"bitte-flex bitte-items-center bitte-justify-between bitte-text-[14px]\">\n              <div style={{ color: textColor }}>Message</div>\n              <div style={{ color: textColor }}>{message}</div>\n            </div>\n            <div className=\"bitte-flex bitte-items-center bitte-justify-between bitte-text-[14px]\">\n              <div style={{ color: textColor }}>Nonce</div>\n              <div style={{ color: textColor }}>{nonce}</div>\n            </div>\n            {recipient ? (\n              <div className=\"bitte-flex bitte-items-center bitte-justify-between bitte-text-[14px]\">\n                <div style={{ color: textColor }}>Recipient</div>\n                <div style={{ color: textColor }}>{recipient}</div>\n              </div>\n            ) : null}\n          </div>\n        </div>\n\n        {result && !loading ? (\n          <CardContent className=\"bitte-pt-6\">\n            <div className=\"bitte-flex bitte-flex-col bitte-items-center bitte-gap-4 bitte-px-6 bitte-pb-6 bitte-text-center bitte-text-sm\">\n              <div className=\"bitte-flex bitte-justify-end\">\n                <CopyStandard\n                  text={result.signature}\n                  textSize=\"sm\"\n                  charSize={18}\n                  isUrl={false}\n                />\n              </div>\n            </div>\n          </CardContent>\n        ) : null}\n      </CardContent>\n\n      {errorMsg && !loading ? (\n        <div className=\"bitte-flex bitte-flex-col bitte-items-center bitte-gap-4 bitte-px-6 bitte-pb-6 bitte-text-center bitte-text-sm\">\n          <p className=\"bitte-text-red-300\">\n            An error occurred while signing the message: {errorMsg}\n          </p>\n          <Button\n            className=\"bitte-w-1/2\"\n            variant=\"outline\"\n            onClick={() => setErrorMsg('')}\n          >\n            Dismiss\n          </Button>\n        </div>\n      ) : null}\n\n      {loading ? <LoadingMessage color={textColor} /> : null}\n\n      {!loading && !result && !errorMsg ? (\n        <CardFooter className=\"bitte-flex bitte-items-center bitte-gap-6\">\n          <DeclineButton\n            onClick={() => addToolResult({ error: 'User declined to sign' })}\n          />\n          <ApproveButton onClick={handleMessageSign} label=\"Sign Message\" />\n        </CardFooter>\n      ) : null}\n    </TxContainer>\n  );\n};\n","import { useEffect, useState } from 'react';\n\ninterface HashParamOptions {\n  /**\n   * If true, hash params will be parsed and state updated\n   * whenever the hash changes, not just on mount\n   */\n  listenToChanges?: boolean;\n}\n\n/**\n * A custom hook for parsing and accessing URL hash parameters\n * @param options Configuration options\n * @returns Object containing hash parameters and related utilities\n */\nexport function useHashParams<T extends Record<string, string>>(\n  options: HashParamOptions = {},\n): {\n  hashParams: T;\n  clearHashParams: () => void;\n} {\n  const { listenToChanges = true } = options;\n  const [hashParams, setHashParams] = useState<T>({} as T);\n\n  // Function to parse the hash parameters\n  const parseHashParams = () => {\n    if (typeof window === 'undefined') return;\n\n    if (window.location.hash) {\n      const params = new URLSearchParams(window.location.hash.substring(1));\n      const entries = Object.fromEntries(params.entries());\n      setHashParams(entries as T);\n    } else {\n      setHashParams({} as T);\n    }\n  };\n\n  // Clear hash parameters from URL\n  const clearHashParams = () => {\n    if (typeof window === 'undefined') return;\n\n    window.history.replaceState(\n      null,\n      document.title,\n      window.location.pathname + window.location.search,\n    );\n    setHashParams({} as T);\n  };\n\n  useEffect(() => {\n    // Parse hash parameters on initial mount\n    parseHashParams();\n\n    // Set up event listener for hash changes if requested\n    if (listenToChanges) {\n      const handleHashChange = () => {\n        parseHashParams();\n      };\n\n      window.addEventListener('hashchange', handleHashChange);\n      return () => {\n        window.removeEventListener('hashchange', handleHashChange);\n      };\n    }\n\n    return undefined;\n  }, [listenToChanges]);\n\n  return { hashParams, clearHashParams };\n}\n","import type { SignMessageResult } from '@bitte-ai/types';\nimport type { SignMessageParams, Wallet } from '@near-wallet-selector/core';\nimport randomBytes from 'randombytes';\nimport { errorString } from './utils';\n\nconst getNonceBuffer = (nonce: string): Buffer => {\n  const nonceLength = 32;\n\n  const buffer = Buffer.from(nonce, 'base64');\n\n  if (buffer.length > nonceLength) {\n    throw Error('Expected nonce to be a 32 bytes buffer');\n  } else if (buffer.length < nonceLength) {\n    const padding = Buffer.alloc(nonceLength - buffer.length);\n    return Buffer.concat([buffer, padding], nonceLength);\n  }\n\n  return buffer;\n};\n\nexport const signMessage = async (\n  signMessageParams: Omit<SignMessageParams, 'nonce'> & { nonce: string },\n  wallet: Wallet,\n): Promise<SignMessageResult | undefined> => {\n  const { message, nonce, recipient, callbackUrl, state } = signMessageParams;\n\n  const signedMessage = await wallet\n    .signMessage?.({\n      message,\n      nonce: getNonceBuffer(nonce),\n      recipient,\n      callbackUrl,\n      state,\n    })\n    .catch((error) => {\n      const errorMessage = errorString(error);\n      console.error('failed in signMessage', errorMessage);\n      throw new Error(errorMessage);\n    });\n\n  // Bitte Wallet redirects so signMessage will not have a result\n  if (signedMessage) {\n    return {\n      ...signedMessage,\n      nonce,\n      recipient,\n      callbackUrl: callbackUrl || '',\n      message,\n      state: signedMessage.state || '',\n    };\n  }\n};\n\n// Generate exactly 32 bytes of random data and convert to base64 string\nexport const generateNonceString = (): string =>\n  randomBytes(32).toString('base64');\n","import type {\n  BitteToolWarning,\n  SuccessInfo,\n  TransactionButtonProps,\n  TransactionContainerProps,\n} from '@bitte-ai/types';\nimport { Transaction } from '@near-wallet-selector/core';\nimport { Message } from 'ai';\nimport BN from 'bn.js/lib/bn.js';\nimport { SafeEncodedSignRequest } from 'near-safe';\nimport { useEffect, useState } from 'react';\nimport { useAccountBalance } from '../../../hooks/useAccountBalance';\nimport { useTransaction } from '../../../hooks/useTransaction';\nimport { useTxnFees } from '../../../hooks/useTxnFees';\nimport { useTxnPrice } from '../../../hooks/useTxnPrice';\nimport { useWindowSize } from '../../../hooks/useWindowSize';\nimport {\n  createDeclineTransactionMessage,\n  createTransactionStatusMessage,\n} from '../../../lib/transaction-messages';\nimport { safeJsonParse, shortenString } from '../../../lib/utils';\nimport { useAccount } from '../../../state/wallet.state';\nimport { Button } from '../../ui/button';\nimport { CardFooter, CardHeader } from '../../ui/card';\nimport LoadingMessage from '../LoadingMessage';\nimport DefaultTxApproveButton from '../default-components/DefaultTxApproveButton';\nimport DefaultTxContainer from '../default-components/DefaultTxContainer';\nimport DefaultTxDeclineButton from '../default-components/DefaultTxDeclineButton';\nimport { TransactionResult } from './TransactionResult';\nimport TxnBadge from './TxnBadge';\nimport { TxnListWrapper } from './TxnListWrapper';\n\nexport const ReviewTransaction = ({\n  transactions,\n  warnings,\n  messageBackgroundColor,\n  borderColor,\n  chatId,\n  textColor,\n  customTxContainer: TxContainer = DefaultTxContainer,\n  customApproveTxButton: ApproveButton = DefaultTxApproveButton,\n  customDeclineTxButton: DeclineButton = DefaultTxDeclineButton,\n  append,\n  messageId,\n}: {\n  transactions: Transaction[];\n  warnings?: BitteToolWarning[] | null;\n  creator?: string;\n  evmData?: SafeEncodedSignRequest;\n  agentId: string;\n  walletLoading?: boolean;\n  borderColor: string;\n  chatId: string | undefined;\n  messageBackgroundColor: string;\n  textColor: string;\n  customTxContainer?: React.ComponentType<TransactionContainerProps>;\n  customApproveTxButton?: React.ComponentType<TransactionButtonProps>;\n  customDeclineTxButton?: React.ComponentType<TransactionButtonProps>;\n  append: (\n    message: Message | Omit<Message, 'id'>,\n  ) => Promise<string | null | undefined>;\n  messageId: string;\n}) => {\n  const [showTxnDetail, setShowTxnDetail] = useState(false);\n  const [errorMsg, setErrorMsg] = useState('');\n  const [result, setResult] = useState<any>();\n  const [isLoading, setIsLoading] = useState(false);\n  const [isDeclined, setIsDeclined] = useState(false);\n  const { wallet, account, accountId } = useAccount();\n  const { handleTxn } = useTransaction({\n    account,\n    wallet,\n  });\n  const { balance } = useAccountBalance(account);\n\n  const { costs, gasPrice } = useTxnPrice(new BN(balance || 0), transactions);\n  const { totalDeposit } = useTxnFees(transactions, costs, gasPrice);\n\n  const { width } = useWindowSize();\n  const isMobile = !!width && width < 640;\n\n  useEffect(() => {\n    if (!result) {\n      const searchParams = new URLSearchParams(window.location.search);\n      const txHash = searchParams.get('transactionHashes');\n\n      if (txHash) {\n        const successInfo = {\n          near: {\n            receipts: [\n              {\n                transaction: {\n                  hash: txHash,\n                },\n              },\n            ],\n          },\n        };\n        setResult(successInfo);\n\n        // Clear the URL parameters\n        searchParams.delete('transactionHashes');\n        searchParams.delete('account_id');\n        const newUrl = `${window.location.pathname}${\n          searchParams.toString() ? '?' + searchParams.toString() : ''\n        }`;\n        window.history.replaceState({}, '', newUrl);\n      }\n    }\n  }, [result]);\n\n  if (!transactions || transactions.length === 0) {\n    return (\n      <p className=\"bitte-my-4 bitte-overflow-auto bitte-text-center\">\n        Unable to create transaction.\n      </p>\n    );\n  }\n\n  const firstAction = transactions[0]?.actions[0];\n  const isTransfer = firstAction?.type === 'Transfer';\n  const isFunctionCall = firstAction?.type === 'FunctionCall';\n  const isMint = isFunctionCall && firstAction.params.methodName === 'mint';\n  const transactionType = isTransfer\n    ? 'Send'\n    : transactions.length > 1\n      ? 'multi'\n      : firstAction?.type === 'FunctionCall'\n        ? firstAction.params.methodName\n        : 'unknown';\n\n  const to = shortenString(transactions[0]?.receiverId, isMobile ? 13 : 15);\n\n  const txArgs = isFunctionCall\n    ? safeJsonParse(firstAction.params?.args, {})\n    : null;\n\n  let txImage = null;\n  if (txArgs && typeof txArgs === 'object' && 'metadata' in txArgs) {\n    const metadata = safeJsonParse<{ media?: string }>(txArgs.metadata, {});\n    if (\n      metadata &&\n      typeof metadata === 'object' &&\n      'media' in metadata &&\n      typeof metadata.media === 'string'\n    ) {\n      txImage = metadata.media;\n    }\n  }\n\n  const handleSmartAction = async () => {\n    setIsLoading(true);\n    setErrorMsg('');\n\n    // Save chat ID to session storage if available\n    if (chatId) {\n      sessionStorage.setItem('chatId', chatId);\n    }\n\n    try {\n      const successInfo = (await handleTxn({\n        transactions: transactions,\n      })) as SuccessInfo;\n\n      if (successInfo?.near?.receipts?.length > 0) {\n        setResult(successInfo);\n\n        const hashes = successInfo.near.receipts.map(\n          (receipt) => receipt.transaction.hash,\n        );\n\n        await append(\n          createTransactionStatusMessage(\n            transactions,\n            'success',\n            hashes,\n            undefined,\n            messageId,\n          ),\n        );\n      }\n    } catch (error: any) {\n      setErrorMsg(error.message);\n\n      await append(\n        createTransactionStatusMessage(\n          transactions,\n          'fail',\n          [],\n          error?.message,\n          messageId,\n        ),\n      );\n    } finally {\n      setIsLoading(false);\n    }\n  };\n\n  const declineTransaction = async () => {\n    setIsDeclined(true);\n    await append(createDeclineTransactionMessage(messageId));\n    setIsLoading(false);\n  };\n\n  return (\n    <TxContainer\n      style={{\n        backgroundColor: messageBackgroundColor,\n        borderColor: borderColor,\n        textColor: textColor,\n      }}\n    >\n      <CardHeader\n        className=\"bitte-border-b bitte-text-center\"\n        style={{ borderColor: borderColor }}\n      >\n        <p className=\"bitte-text-[20px] bitte-font-semibold\">\n          Review Transaction\n        </p>\n      </CardHeader>\n\n      <div>\n        {isMint && txImage ? (\n          <div className=\"bitte-border-b\" style={{ borderColor: borderColor }}>\n            <div className=\"bitte-p-6\">\n              <div className=\"bitte-flex bitte-items-center bitte-justify-between bitte-text-[14px]\">\n                <div>Asset</div>\n                <img\n                  src={`${\n                    txImage.includes('https://')\n                      ? txImage\n                      : `https://arweave.net/${txImage}`\n                  }`}\n                  width={64}\n                  height={64}\n                  className=\"bitte-rounded-md\"\n                />\n              </div>\n            </div>\n          </div>\n        ) : null}\n        <div className=\"bitte-p-6\">\n          <div className=\"bitte-flex bitte-items-center bitte-justify-between bitte-text-[14px]\">\n            <div>Tx Type</div>\n\n            <TxnBadge transactionType={transactionType} />\n          </div>\n        </div>\n        <div className=\"bitte-flex bitte-flex-col bitte-gap-6 bitte-p-6\">\n          <div className=\"bitte-flex bitte-items-center bitte-justify-between bitte-text-[14px]\">\n            <div>Amount</div>\n            <div className=\"bitte-font-semibold\">{totalDeposit} NEAR</div>\n          </div>\n          <div className=\"bitte-flex bitte-items-center bitte-justify-between bitte-text-[14px]\">\n            <div>From</div>\n            <div>{accountId}</div>\n          </div>\n          <div className=\"bitte-flex bitte-items-center bitte-justify-between bitte-text-[14px]\">\n            <div>To</div>\n            <div>{to}</div>\n          </div>\n        </div>\n\n        {warnings && warnings.length > 0 && (\n          <div className=\"bitte-px-6 bitte-pb-8\">\n            <div\n              className=\"bitte-border-t bitte-p-4\"\n              style={{ borderColor: borderColor }}\n            />\n            {warnings.map((warning, index) => (\n              <div\n                key={index}\n                className=\"bitte-flex bitte-items-center bitte-justify-between bitte-text-sm\"\n              >\n                <div className=\"bitte-text-red-500\">Warning</div>\n                <div className=\"bitte-text-gray-800\">{warning.message}</div>\n              </div>\n            ))}\n          </div>\n        )}\n\n        <TxnListWrapper\n          transaction={transactions}\n          accountId={accountId || ''}\n          costs={costs || []}\n          gasPrice={gasPrice || '0'}\n          showDetails={showTxnDetail}\n          modifiedUrl={`https://wallet.bitte.ai`}\n          setShowTxnDetail={setShowTxnDetail}\n          showTxnDetail={showTxnDetail}\n          borderColor={borderColor}\n        />\n      </div>\n\n      {errorMsg && !isLoading ? (\n        <div className=\"bitte-flex bitte-flex-col bitte-items-center bitte-gap-4 bitte-px-6 bitte-pb-6 bitte-text-center bitte-text-sm\">\n          <p className=\"bitte-text-red-300\">\n            An error occurred trying to execute your transaction: {errorMsg}.\n          </p>\n          <Button\n            className=\"bitte-w-1/2\"\n            variant=\"outline\"\n            onClick={() => {\n              setErrorMsg('');\n            }}\n          >\n            Dismiss\n          </Button>\n        </div>\n      ) : null}\n\n      {isDeclined ? (\n        <div className=\"bitte-px-6 bitte-pb-6 bitte-text-center bitte-text-sm\">\n          Transaction declined!\n        </div>\n      ) : null}\n\n      {isLoading ? <LoadingMessage color={textColor} /> : null}\n      {result && accountId && !isLoading ? (\n        <TransactionResult\n          result={result}\n          accountId={accountId}\n          textColor={textColor}\n        />\n      ) : null}\n      {!isLoading && !result && !errorMsg && accountId && !isDeclined ? (\n        <CardFooter className=\"bitte-flex bitte-items-center bitte-gap-6\">\n          <>\n            <DeclineButton onClick={declineTransaction} disabled={isLoading} />\n            <ApproveButton\n              onClick={handleSmartAction}\n              disabled={isLoading}\n              isLoading={isLoading}\n            />\n          </>\n        </CardFooter>\n      ) : null}\n    </TxContainer>\n  );\n};\n","import { Account } from 'near-api-js';\nimport { useEffect, useState } from 'react';\n\nexport function useAccountBalance(account?: Account) {\n  const [balance, setBalance] = useState<number | null>(null);\n\n  useEffect(() => {\n    const fetchBalance = async () => {\n      if (!account) return;\n      try {\n        const accountBalance = await account.getAccountBalance();\n        setBalance(Number(accountBalance.available));\n      } catch (error) {\n        console.error('Error fetching balance:', error);\n      }\n    };\n\n    if (account) {\n      fetchBalance();\n    }\n  }, [account]);\n\n  return { balance };\n}\n","import { Cost } from '@bitte-ai/types';\nimport { Transaction } from '@near-wallet-selector/core';\nimport BN from 'bn.js/lib/bn.js';\nimport { formatNearAmount } from 'near-api-js/lib/utils/format.js';\nimport { formatUnits } from 'viem';\nimport { removeTrailingZeros } from '../lib/utils';\n\nexport const useTxnFees = (\n  transactions: Transaction[],\n  costs: Cost[],\n  gasPrice: string,\n) => {\n  const feeLimitTgasBN =\n    transactions?.reduce(\n      (acc, txn) =>\n        costs && costs.length > 0 ? costs[transactions.indexOf(txn)]?.gas : acc,\n      new BN(0),\n    ) || new BN(0);\n\n  const feeLimitTgas = formatUnits(BigInt(feeLimitTgasBN.toString()), 12);\n  const feeLimitNear = formatNearAmount(\n    feeLimitTgasBN.mul(new BN(gasPrice)).toString(),\n    6,\n  );\n\n  const totalDeposit = transactions?.reduce(\n    (acc, txn) =>\n      acc +\n      (costs && costs.length > 0\n        ? Number.parseFloat(\n            removeTrailingZeros(\n              formatNearAmount(\n                costs[transactions.indexOf(txn)]?.deposit?.toString() || '0',\n                3,\n              ),\n            ),\n          )\n        : 0),\n    0,\n  );\n\n  return {\n    totalGas: feeLimitNear,\n    totalDeposit,\n    feeLimitTgas,\n  };\n};\n","import { ActionCosts, Cost } from '@bitte-ai/types';\nimport { getLatestGasPrice } from '@mintbase-js/rpc/lib/methods/getLatestGasPrice.js';\nimport {\n  Action,\n  FunctionCallAction,\n  Transaction,\n} from '@near-wallet-selector/core';\nimport BN from 'bn.js/lib/bn.js';\nimport { formatNearAmount } from 'near-api-js/lib/utils/format.js';\nimport { useEffect, useMemo, useRef, useState } from 'react';\nimport { RPC_URL } from '../lib/constants';\n\nexport const useTxnPrice = (balance: BN, transactions?: Transaction[]) => {\n  const [hasBalance, setHasBalance] = useState(true);\n  const [loaded, setLoaded] = useState(false);\n\n  const [priceState, setPriceState] = useState<{\n    gasPrice: string;\n    costs: Cost[];\n    price: string;\n  }>({\n    gasPrice: '0',\n    costs: [],\n    price: '0',\n  });\n\n  const gasPriceFetched = useRef(false);\n  const costsCalculated = useRef(false);\n\n  const updatePriceState = (updates: Partial<typeof priceState>) => {\n    setPriceState((prevState) => ({ ...prevState, ...updates }));\n  };\n\n  const COSTS: Record<ActionCosts, BN> = {\n    CreateAccount: new BN(420000000000),\n    Transfer: new BN(450000000000),\n    Stake: new BN(50000000000),\n    AddFullAccessKey: new BN(420000000000),\n    DeleteKey: new BN(410000000000),\n  };\n\n  useEffect(() => {\n    const definePrice = async () => {\n      try {\n        const currentGasPrice = await getLatestGasPrice(RPC_URL);\n        updatePriceState({ gasPrice: currentGasPrice.toString() });\n        gasPriceFetched.current = true;\n      } catch (error) {\n        console.error('Failed to fetch gas price:', error);\n        updatePriceState({ gasPrice: '100000000' });\n      }\n    };\n    if (priceState?.gasPrice === '0') {\n      definePrice();\n    }\n  }, [priceState?.gasPrice]);\n\n  useEffect(() => {\n    const defineCosts = () => {\n      if (!transactions || transactions.length === 0) return;\n      const costs = transactions.map((txn) => {\n        const actionCosts = txn.actions.map((action: Action) => {\n          switch (action.type) {\n            case 'FunctionCall':\n              return {\n                deposit: new BN(action.params.deposit || '0'),\n                gas: new BN(action.params.gas),\n              };\n            case 'Transfer':\n              return {\n                deposit: new BN(action.params.deposit || '0'),\n                gas: COSTS[action.type as ActionCosts],\n              };\n            default:\n              return {\n                deposit: new BN('0'),\n                gas: COSTS[action.type as ActionCosts],\n              };\n          }\n        });\n        return actionCosts.reduce((acc, x) => ({\n          deposit: acc.deposit.add(x.deposit),\n          gas: acc.gas.add(x.gas),\n        }));\n      });\n\n      if (JSON.stringify(priceState.costs) !== JSON.stringify(costs)) {\n        updatePriceState({ costs: costs });\n      }\n\n      const { deposit } = costs.reduce((acc, x) => ({\n        deposit: acc.deposit.add(x.deposit),\n        gas: acc.gas.add(x.gas),\n      }));\n\n      const hasBalance = deposit.lt(balance);\n\n      updatePriceState({\n        price: deposit.toString(),\n      });\n\n      if (hasBalance !== hasBalance) {\n        setHasBalance(hasBalance);\n      }\n\n      if (!loaded) {\n        setLoaded(true);\n      }\n\n      costsCalculated.current = true;\n    };\n\n    if (\n      !costsCalculated.current &&\n      Number(priceState?.gasPrice) !== 0 &&\n      balance !== undefined\n    ) {\n      defineCosts();\n    }\n  }, [priceState?.gasPrice, balance, transactions]);\n\n  const otherTokensAmount = useMemo(() => {\n    if (!transactions?.length) return;\n    return transactions\n      .map((txn) => {\n        const functionCallAction = txn.actions.find(\n          (action) =>\n            action.type === 'FunctionCall' &&\n            action.params.methodName !== 'storage_deposit',\n        );\n\n        if (!functionCallAction) return null;\n        const args = (functionCallAction as FunctionCallAction)?.params?.args;\n\n        return (\n          ('amount' in args &&\n            typeof args?.amount === 'string' &&\n            args?.amount) ||\n          null\n        );\n      })\n      .find((amount) => amount !== null);\n  }, [transactions]);\n\n  const amount = useMemo(() => {\n    const costsAmount =\n      priceState.costs?.[0]?.deposit &&\n      formatNearAmount(priceState.costs?.[0]?.deposit.toString(), 3);\n    if (\n      ['0', '0.000', null, undefined, ''].includes(costsAmount) ||\n      isNaN(Number(costsAmount))\n    ) {\n      return formatNearAmount(otherTokensAmount || '0', 3);\n    } else {\n      return costsAmount;\n    }\n  }, [priceState.price, otherTokensAmount, priceState?.costs]);\n\n  const memoizedReturn = useMemo(() => {\n    return {\n      amount,\n      gasPrice: priceState?.gasPrice,\n      hasBalance: !!loaded ? hasBalance : true,\n      costs: priceState.costs,\n      loaded,\n    };\n  }, [amount, priceState?.gasPrice, hasBalance, priceState?.costs, loaded]);\n\n  return memoizedReturn;\n};\n","import { type VariantProps, cva } from 'class-variance-authority';\nimport * as React from 'react';\n\nimport { cn } from '../../lib/utils';\n\nconst badgeVariants = cva(\n  'bitte-inline-flex bitte-items-center bitte-rounded-md bitte-border bitte-px-2.5 bitte-py-0.5 bitte-text-xs bitte-font-semibold bitte-transition-colors focus:bitte-outline-none focus:bitte-ring-2 focus:bitte-ring-ring focus:bitte-ring-offset-2',\n  {\n    variants: {\n      variant: {\n        default:\n          'bitte-border-transparent bitte-bg-primary bitte-text-primary-foreground bitte-shadow hover:bitte-bg-primary/80',\n        secondary:\n          'bitte-border-transparent bitte-bg-secondary bitte-text-secondary-foreground hover:bitte-bg-secondary/80',\n        destructive:\n          'bitte-border-transparent bitte-bg-destructive bitte-text-destructive-foreground bitte-shadow hover:bitte-bg-destructive/80',\n        outline: 'bitte-text-foreground',\n      },\n    },\n    defaultVariants: {\n      variant: 'default',\n    },\n  },\n);\n\nexport interface BadgeProps\n  extends React.HTMLAttributes<HTMLDivElement>,\n    VariantProps<typeof badgeVariants> {}\n\nfunction Badge({ className, variant, ...props }: BadgeProps) {\n  return (\n    <div className={cn(badgeVariants({ variant }), className)} {...props} />\n  );\n}\n\nexport { Badge, badgeVariants };\n","import { Badge } from '../../ui/badge';\n\nconst TxnBadge = ({ transactionType }: { transactionType: string }) => {\n  let styleClass = '';\n  let displayName = '';\n\n  switch (transactionType) {\n    case 'nft_batch_mint':\n    case 'mint':\n      styleClass = 'bitte-bg-shad-white-10 bitte-text-shad-slate-20';\n      displayName = 'Mint';\n      break;\n    case 'nft_transfer':\n      styleClass = 'bitte-bg-shad-bg-light-blue-10 bitte-text-shad-blue-100';\n      displayName = 'Transfer';\n      break;\n    case 'nft_approve':\n      styleClass = 'bitte-bg-light-purple bitte-text-purple-100';\n      displayName = 'List';\n      break;\n    case 'nft_batch_burn':\n      styleClass = 'bitte-bg-shad-error-5 bitte-text-shad-error';\n      displayName = 'Burn';\n      break;\n    case 'buy':\n      styleClass = 'bitte-bg-shad-light-green bitte-text-shad-green-20';\n      displayName = 'Buy';\n      break;\n    case 'ft_transfer':\n    case 'Send':\n      styleClass = 'bitte-bg-shad-light-green bitte-text-shad-green-20';\n      displayName = 'Send';\n      break;\n    default: // Default styles\n      styleClass = 'bitte-bg-shad-white-10 bitte-text-shad-slate-20';\n      displayName = transactionType; // Default to raw transaction type if not matched\n  }\n\n  return <Badge className={`bitte-px-2 ${styleClass}`}>{displayName}</Badge>;\n};\n\nexport default TxnBadge;\n","import { ChevronsDownUp, ChevronsUpDown } from 'lucide-react';\n\nexport const ShowDetailsBtn = ({\n  setShowDetails,\n  showDetails,\n  displayName,\n}: {\n  setShowDetails: (showDetails: boolean) => void;\n  showDetails: boolean;\n  displayName: string;\n}): JSX.Element => {\n  return (\n    <div\n      className=\"bitte-flex bitte-cursor-pointer bitte-items-center bitte-justify-center bitte-gap-2 bitte-bg-shad-white-30 bitte-py-4\"\n      onClick={() => setShowDetails(!showDetails)}\n    >\n      {showDetails ? (\n        <ChevronsDownUp width={16} height={16} />\n      ) : (\n        <ChevronsUpDown width={16} height={16} />\n      )}\n      <span className=\"bitte-text-[12px]\">{displayName}</span>\n    </div>\n  );\n};\n","import type { Cost, TransactionOperation } from '@bitte-ai/types';\nimport { Transaction } from '@near-wallet-selector/core';\nimport { useTxnFees } from '../../../hooks/useTxnFees';\n\nexport const TxnFees = ({\n  transaction,\n  operation,\n  costs,\n  gasPrice,\n\n  borderColor,\n}: {\n  transaction: Transaction[];\n  operation?: TransactionOperation;\n  costs: Cost[];\n  gasPrice: string;\n  borderColor: string;\n}): JSX.Element => {\n  const { totalGas, totalDeposit, feeLimitTgas } = useTxnFees(\n    transaction,\n    costs,\n    gasPrice,\n  );\n\n  const showNoTxnFeeHighlight =\n    operation?.operation === 'relay' || operation?.operation === 'sponsor';\n\n  return (\n    <div className=\"bitte-px-6\">\n      <div\n        className=\"bitte-relative bitte-mb-1 bitte-flex bitte-w-full bitte-flex-col bitte-gap-4 bitte-rounded bitte-border-b bitte-border-slate-200 bitte-py-6\"\n        style={{ borderColor: borderColor }}\n      >\n        <span className=\"bitte-text-sm bitte-font-semibold\">Network Fees</span>\n        <div className=\"bitte-flex bitte-flex-col bitte-items-start bitte-justify-start bitte-text-sm md:bitte-flex-row md:bitte-items-center md:bitte-justify-between md:bitte-gap-0 md:bitte-space-x-4\">\n          <span>Estimated Fees</span>\n          <div className=\"bitte-flex bitte-flex-col\">\n            <span\n              className={` ${showNoTxnFeeHighlight ? 'bitte-line-through' : ''}`}\n            >\n              {Number(totalGas).toFixed(5)} NEAR\n            </span>\n            {showNoTxnFeeHighlight ? (\n              <span className=\"bitte-text-end bitte-text-shad-green-30\">\n                0 NEAR\n              </span>\n            ) : null}\n          </div>\n        </div>\n        <div className=\"bitte-flex bitte-flex-col bitte-items-start bitte-justify-start bitte-text-sm md:bitte-flex-row md:ibitte-tems-center md:bitte-justify-between md:bitte-gap-0 md:bitte-space-x-4\">\n          <span>Fee Limit</span>\n          <span>\n            {feeLimitTgas} {''}\n            Tgas\n          </span>\n        </div>\n        <div className=\"bitte-flex bitte-flex-col bitte-items-start bitte-justify-start bitte-text-sm md:bitte-flex-row md:bitte-items-center md:bitte-justify-between md:bitte-gap-0 md:bitte-space-x-4\">\n          <span>Deposit</span>\n          <span>\n            {totalDeposit} {''}\n            NEAR\n          </span>\n        </div>\n      </div>\n    </div>\n  );\n};\n","import { ChevronDown } from 'lucide-react';\nimport { useState } from 'react';\n\nconst TxAccordion = ({\n  label,\n  methodName,\n  children,\n}: {\n  label: string;\n  methodName: string;\n  children: React.ReactNode;\n}) => {\n  const [isOpen, setIsOpen] = useState<boolean>(false);\n\n  const toggleAccordion = () => {\n    setIsOpen((prevIsOpen) => !prevIsOpen);\n  };\n\n  return (\n    <>\n      <div className=\"bitte-flex bitte-items-center bitte-justify-between\">\n        <div className=\"bitte-text-[14px] bitte-text-text-secondary\">\n          {label}\n        </div>\n\n        <div\n          className=\"bitte-flex bitte-cursor-pointer bitte-gap-0.5\"\n          onClick={toggleAccordion}\n        >\n          <span className=\"bitte-flex bitte-items-center bitte-justify-center bitte-bg-shad-white-10 bitte-p-1 bitte-px-2 bitte-text-[14px] bitte-text-text-primary\">\n            <code>{methodName}</code>\n          </span>\n          <div className=\"bitte-flex bitte-w-[30px] bitte-items-center bitte-justify-center bitte-rounded-r-sm bitte-bg-shad-white-10 bitte-text-text-primary\">\n            <ChevronDown\n              className={`${isOpen ? 'rotate-180' : ''}`}\n              width={16}\n            />\n          </div>\n        </div>\n      </div>\n\n      {isOpen && <div className=\"bitte-mt-2 bitte-w-full\">{children}</div>}\n    </>\n  );\n};\n\nexport default TxAccordion;\n","import type { TransactionDetailProps } from '@bitte-ai/types';\nimport { FunctionCallAction } from '@near-wallet-selector/core';\nimport { MoveUpRight } from 'lucide-react';\nimport { getNearblocksURL, shortenString } from '../../../lib/utils';\nimport TxAccordion from './TxAccordion';\n\nconst DetailMethods = ({\n  action,\n  method,\n}: {\n  action: FunctionCallAction;\n  method: string;\n}) => {\n  return (\n    <>\n      <TxAccordion label=\"Function Call\" methodName={method}>\n        <div className=\"bitte-overflow-x-auto bitte-rounded bitte-bg-shad-white-10 bitte-p-2 bitte-text-sm\">\n          <pre className=\"bitte-p-2 md:bitte-p-4\">\n            <code>{JSON.stringify(action, null, 2)}</code>\n          </pre>\n        </div>\n      </TxAccordion>\n    </>\n  );\n};\n\nexport const TxnDetailMultipleAction = ({\n  data,\n  accountId,\n  actions,\n  showDetails,\n}: {\n  data: TransactionDetailProps;\n  accountId: string;\n  actions: FunctionCallAction[];\n  showDetails: boolean;\n}): JSX.Element => {\n  const { transaction } = data;\n\n  const contractName = transaction.receiverId;\n\n  return (\n    <>\n      {showDetails && (\n        <div className=\"bitte-flex bitte-flex-col\">\n          {transaction?.actions?.[0].type === 'FunctionCall' && (\n            <div className=\"bitte-relative bitte-flex bitte-w-full bitte-flex-col bitte-gap-4 bitte-rounded bitte-p-6\">\n              <span className=\"bitte-text-sm bitte-font-semibold\">\n                Contract Details\n              </span>\n              <div className=\"bitte-flex bitte-flex-col bitte-items-start bitte-justify-start bitte-gap-2 bitte-text-sm bitte-md:flex-row bitte-md:items-center bitte-md:justify-between bitte-md:gap-0 bitte-md:space-x-4\">\n                <span>For Contract</span>\n                <span className=\"bitte-cursor-pointer\">\n                  <a\n                    className=\"bitte-flex bitte-gap-1 bitte-items-center\"\n                    href={getNearblocksURL(accountId, undefined, contractName)}\n                    target=\"_blank\"\n                    rel=\"noreferrer\"\n                  >\n                    {shortenString(contractName, 14)}\n                    <MoveUpRight width={12} height={12} />\n                  </a>\n                </span>\n              </div>\n              {actions.length > 1\n                ? actions.map((action: FunctionCallAction, idx: number) => {\n                    return (\n                      <DetailMethods\n                        key={idx}\n                        action={action}\n                        method={action.params.methodName}\n                      />\n                    );\n                  })\n                : null}\n            </div>\n          )}\n        </div>\n      )}\n    </>\n  );\n};\n","import { TxnDetailWrapperProps } from '@bitte-ai/types';\nimport { FunctionCallAction, Transaction } from '@near-wallet-selector/core';\nimport { formatCosts } from '../../../../lib/utils';\nimport { TxnDetailMultipleAction } from '../TxnDetailMultipleAction';\n\nexport const MultipleTxnMultiActionDetails = ({\n  accountId,\n  transaction,\n  modifiedUrl,\n  showDetails,\n  showTxnDetail,\n  costs,\n  gasPrice,\n}: TxnDetailWrapperProps): JSX.Element => {\n  return (\n    <>\n      {transaction.map((txn: Transaction, txnIdx: number) => {\n        const txnData = {\n          // TODO: Ensure that the actions are always FunctionCallAction.\n          transaction: txn,\n          showDetails,\n          modifiedUrl,\n          gasPrice,\n          ...formatCosts(costs, gasPrice),\n        };\n\n        return (\n          <TxnDetailMultipleAction\n            accountId={accountId}\n            key={txnIdx}\n            data={txnData}\n            showDetails={showTxnDetail}\n            actions={txnData.transaction.actions as FunctionCallAction[]}\n          />\n        );\n      })}\n    </>\n  );\n};\n","import type { TransactionDetailProps } from '@bitte-ai/types';\nimport { MoveUpRight } from 'lucide-react';\nimport { getNearblocksURL, shortenString } from '../../../lib/utils';\nimport TxAccordion from './TxAccordion';\n\nexport const TxnDetail = ({\n  data,\n  showDetails,\n  showTitle,\n  methodName,\n  accountId,\n}: {\n  data: TransactionDetailProps;\n  showDetails: boolean;\n  showTitle: boolean;\n  methodName?: string;\n  accountId: string;\n}): JSX.Element => {\n  const { transaction } = data;\n\n  let method = methodName;\n  if (!method && transaction?.actions?.[0]?.type == 'FunctionCall') {\n    method = transaction.actions[0].params.methodName;\n  }\n\n  const contractName = transaction.receiverId;\n\n  return (\n    <>\n      {!!showDetails && (\n        <div className=\"bitte-flex bitte-flex-col\">\n          {transaction?.actions?.[0].type === 'FunctionCall' && (\n            <div className=\"bitte-relative bitte-flex bitte-w-full bitte-flex-col bitte-gap-4 bitte-rounded bitte-p-6\">\n              {showTitle ? (\n                <span className=\"bitte-text-sm bitte-font-semibold\">\n                  Contract Details\n                </span>\n              ) : null}\n              <div className=\"bitte-flex bitte-flex-col bitte-items-start bitte-justify-start bitte-gap-2 bitte-text-sm bitte-md:flex-row bitte-md:items-center bitte-md:justify-between bitte-md:gap-0 bitte-md:space-x-4\">\n                <span>For Contract</span>\n                <span className=\"bitte-cursor-pointer\">\n                  <a\n                    className=\"bitte-flex bitte-gap-1 bitte-items-center\"\n                    href={getNearblocksURL(accountId, undefined, contractName)}\n                    target=\"_blank\"\n                    rel=\"noreferrer\"\n                  >\n                    {shortenString(contractName, 14)}\n                    <MoveUpRight width={12} height={12} />\n                  </a>\n                </span>\n              </div>\n              {method && (\n                <>\n                  <TxAccordion label=\"Function Call\" methodName={method}>\n                    <div className=\"bitte-overflow-x-auto bitte-rounded bitte-bg-shad-white-10 bitte-p-2 bitte-text-sm\">\n                      <pre className=\"bitte-p-2 bitte-md:p-4\">\n                        <code>\n                          {JSON.stringify(\n                            transaction?.actions?.[0].params?.args,\n                            null,\n                            2,\n                          )}\n                        </code>\n                      </pre>\n                    </div>\n                  </TxAccordion>\n                </>\n              )}\n            </div>\n          )}\n        </div>\n      )}\n    </>\n  );\n};\n","import { TxnDetailWrapperProps } from '@bitte-ai/types';\nimport { Transaction } from '@near-wallet-selector/core';\nimport { formatCosts } from '../../../../lib/utils';\nimport { TxnDetail } from '../TxnDetail';\n\nexport const MultipleTxnSingleActionDetail = ({\n  accountId,\n  transaction,\n  modifiedUrl,\n  showDetails,\n  showTxnDetail,\n  gasPrice,\n  costs,\n}: TxnDetailWrapperProps): JSX.Element => {\n  return (\n    <>\n      {transaction.map((txn: Transaction, idx: number) => {\n        const txnData = {\n          transaction: txn,\n          showDetails,\n          modifiedUrl,\n          gasPrice,\n          ...formatCosts(costs, gasPrice),\n        };\n\n        return (\n          <div className=\"bitte-mb-1\" key={idx}>\n            <TxnDetail\n              accountId={accountId}\n              showTitle={idx === 0}\n              data={txnData}\n              showDetails={showTxnDetail}\n            />\n          </div>\n        );\n      })}\n    </>\n  );\n};\n","import { TxnDetailWrapperProps } from '@bitte-ai/types';\nimport { MultipleTxnMultiActionDetails } from './MultipleTxnMultiAction';\nimport { MultipleTxnSingleActionDetail } from './MultipleTxnSingleAction';\n\nexport const MultipleTxnDetail = ({\n  accountId,\n  transaction,\n  modifiedUrl,\n  showDetails,\n  showTxnDetail,\n  costs,\n  gasPrice,\n}: TxnDetailWrapperProps): JSX.Element => {\n  const hasMultipleActions = transaction.every(\n    (tx) => tx.actions && tx.actions.length > 1,\n  );\n\n  return hasMultipleActions ? (\n    <MultipleTxnMultiActionDetails\n      accountId={accountId}\n      costs={costs}\n      gasPrice={gasPrice}\n      transaction={transaction}\n      modifiedUrl={modifiedUrl}\n      showDetails={showDetails}\n      showTxnDetail={showTxnDetail}\n    />\n  ) : (\n    <MultipleTxnSingleActionDetail\n      accountId={accountId}\n      costs={costs}\n      gasPrice={gasPrice}\n      transaction={transaction}\n      modifiedUrl={modifiedUrl}\n      showDetails={showDetails}\n      showTxnDetail={showTxnDetail}\n    />\n  );\n};\n","import { TxnDetailWrapperProps } from '@bitte-ai/types';\nimport { FunctionCallAction } from '@near-wallet-selector/core';\nimport { formatCosts } from '../../../../lib/utils';\nimport { TxnDetailMultipleAction } from '../TxnDetailMultipleAction';\n\nexport const SingleTxnMultipleAction = ({\n  transaction,\n  accountId,\n  modifiedUrl,\n  showDetails,\n  showTxnDetail,\n  costs,\n  gasPrice,\n}: TxnDetailWrapperProps): JSX.Element => {\n  const txnData = {\n    transaction: transaction[0],\n    showDetails,\n    modifiedUrl,\n    gasPrice,\n    ...formatCosts(costs, gasPrice),\n  };\n\n  return (\n    <TxnDetailMultipleAction\n      accountId={accountId}\n      data={txnData}\n      showDetails={showTxnDetail}\n      actions={txnData.transaction.actions as FunctionCallAction[]}\n    />\n  );\n};\n","import { TxnDetailWrapperProps } from '@bitte-ai/types';\nimport { formatCosts } from '../../../../lib/utils';\nimport { TxnDetail } from '../TxnDetail';\nexport const SingleTxnSingleAction = ({\n  accountId,\n  transaction,\n  modifiedUrl,\n  showDetails,\n  showTxnDetail,\n  costs,\n  gasPrice,\n}: TxnDetailWrapperProps): JSX.Element => {\n  const txnData = {\n    transaction: transaction[0],\n    showDetails,\n    modifiedUrl,\n    gasPrice,\n    ...formatCosts(costs, gasPrice),\n  };\n\n  return (\n    <TxnDetail\n      accountId={accountId}\n      showTitle\n      data={txnData}\n      showDetails={showTxnDetail}\n    />\n  );\n};\n","import type { TxnDetailWrapperProps } from '@bitte-ai/types';\nimport { SingleTxnMultipleAction } from './SingleTxnMultipleAction';\nimport { SingleTxnSingleAction } from './SingleTxnSingleAction';\n\nexport const SingleTxnDetail = ({\n  accountId,\n  costs,\n  gasPrice,\n  transaction,\n  modifiedUrl,\n  showDetails,\n  showTxnDetail,\n}: TxnDetailWrapperProps): JSX.Element => {\n  const hasMultipleActions = transaction?.[0]?.actions?.length > 1;\n\n  return hasMultipleActions ? (\n    <SingleTxnMultipleAction\n      accountId={accountId}\n      costs={costs}\n      gasPrice={gasPrice}\n      transaction={transaction}\n      modifiedUrl={modifiedUrl}\n      showDetails={showDetails}\n      showTxnDetail={showTxnDetail}\n    />\n  ) : (\n    <SingleTxnSingleAction\n      accountId={accountId}\n      costs={costs}\n      gasPrice={gasPrice}\n      transaction={transaction}\n      modifiedUrl={modifiedUrl}\n      showDetails={showDetails}\n      showTxnDetail={showTxnDetail}\n    />\n  );\n};\n","import type { TransactionListComponentProps } from '@bitte-ai/types';\nimport { ShowDetailsBtn } from './ShowDetailsBtn';\nimport { TxnFees } from './TxnFees';\nimport { MultipleTxnDetail } from './multiple-transactions/MultipleTxnDetail';\nimport { SingleTxnDetail } from './single-transaction/SingleTxnDetail';\n\nexport const TxnListWrapper = ({\n  accountId,\n  costs,\n  gasPrice,\n  transaction,\n  modifiedUrl,\n  showDetails,\n  showTxnDetail,\n  setShowTxnDetail,\n  operation,\n  borderColor,\n}: TransactionListComponentProps): JSX.Element => {\n  return (\n    <div className=\"bitte-mx-auto bitte-flex bitte-w-full bitte-flex-col bitte-gap-1\">\n      <div className=\"bitte-flex bitte-w-full bitte-flex-col bitte-justify-center bitte-rounded\">\n        <ShowDetailsBtn\n          setShowDetails={setShowTxnDetail}\n          showDetails={showTxnDetail}\n          displayName=\"Transaction Details\"\n        />\n\n        {showTxnDetail ? (\n          <TxnFees\n            costs={costs || []}\n            gasPrice={gasPrice || ''}\n            transaction={transaction as any}\n            operation={operation}\n            borderColor={borderColor}\n          />\n        ) : null}\n\n        {transaction?.length > 1 ? (\n          <MultipleTxnDetail\n            accountId={accountId}\n            costs={costs || []}\n            gasPrice={gasPrice || ''}\n            transaction={transaction as any}\n            modifiedUrl={modifiedUrl}\n            showDetails={showDetails}\n            showTxnDetail={showTxnDetail}\n          />\n        ) : (\n          <SingleTxnDetail\n            accountId={accountId}\n            costs={costs || []}\n            gasPrice={gasPrice || ''}\n            transaction={transaction as any}\n            modifiedUrl={modifiedUrl}\n            showDetails={showDetails}\n            showTxnDetail={showTxnDetail}\n          />\n        )}\n      </div>\n    </div>\n  );\n};\n","import type {\n  TransactionButtonProps,\n  TransactionContainerProps,\n} from '@bitte-ai/types';\nimport { Transaction as SuiTransaction } from '@mysten/sui/transactions';\nimport { Message } from 'ai';\nimport { useEffect, useRef, useState } from 'react';\nimport { useTransaction } from '../../../hooks/useTransaction';\nimport { useWindowSize } from '../../../hooks/useWindowSize';\nimport { createDeclineTransactionMessage } from '../../../lib/transaction-messages';\nimport { useAccount } from '../../../state/wallet.state';\nimport {\n  Accordion,\n  AccordionContent,\n  AccordionItem,\n  AccordionTrigger,\n} from '../../ui/accordion';\nimport { Button } from '../../ui/button';\nimport { CardFooter, CardHeader } from '../../ui/card';\nimport DefaultTxApproveButton from '../default-components/DefaultTxApproveButton';\nimport DefaultTxContainer from '../default-components/DefaultTxContainer';\nimport DefaultTxDeclineButton from '../default-components/DefaultTxDeclineButton';\nimport { CopyStandard } from './../CopyStandard';\nimport LoadingMessage from './../LoadingMessage';\nimport { TransactionResult } from './TransactionResult';\n\n//TODO LOADING STATE after tx successfully submitted\nexport const SuiTxCard = ({\n  suiTransactionBytes,\n  messageBackgroundColor,\n  borderColor,\n  textColor,\n  customTxContainer: TxContainer = DefaultTxContainer,\n  customApproveTxButton: ApproveButton = DefaultTxApproveButton,\n  customDeclineTxButton: DeclineButton = DefaultTxDeclineButton,\n  append,\n  messageId,\n}: {\n  suiTransactionBytes?: string;\n  messageBackgroundColor: string;\n  borderColor: string;\n  textColor: string;\n  customTxContainer?: React.ComponentType<TransactionContainerProps>;\n  customApproveTxButton?: React.ComponentType<TransactionButtonProps>;\n  customDeclineTxButton?: React.ComponentType<TransactionButtonProps>;\n  append: (\n    message: Message | Omit<Message, 'id'>,\n  ) => Promise<string | null | undefined>;\n  messageId: string;\n}) => {\n  const { width } = useWindowSize();\n  const isMobile = !!width && width < 640;\n  const [errorMsg, setErrorMsg] = useState('');\n  const [isLoading, setIsLoading] = useState(false);\n  const [isDeclined, setIsDeclined] = useState(false);\n  const [txDigest, setTxDigest] = useState<string | undefined>();\n  const { suiWallet, suiAddress } = useAccount();\n  const messageAppended = useRef(false);\n  const [transaction, setTransaction] = useState<SuiTransaction | null>(null);\n  const [transactionData, setTransactionData] = useState<any>(null);\n\n  const { handleTxn } = useTransaction({ suiWallet });\n\n  useEffect(() => {\n    if (suiTransactionBytes && !transaction) {\n      try {\n        const bytes = Buffer.from(suiTransactionBytes, 'base64');\n        const txn = SuiTransaction.from(bytes);\n        setTransaction(txn);\n\n        // Just get the raw data without parsing\n        try {\n          const rawData = txn.getData();\n          setTransactionData(rawData);\n        } catch (error) {\n          console.error('Error extracting transaction data:', error);\n          setTransactionData({ error: 'Failed to extract transaction data' });\n        }\n      } catch (error) {\n        console.error('Failed to parse Sui transaction bytes:', error);\n        setErrorMsg('Failed to parse transaction data');\n      }\n    }\n  }, [suiTransactionBytes, transaction]);\n\n  if (!suiTransactionBytes || !transaction || !transactionData) {\n    return (\n      <p className=\"bitte-my-4 bitte-overflow-auto bitte-text-center\">\n        Unable to create Sui transaction.\n      </p>\n    );\n  }\n\n  const handleSmartAction = async () => {\n    setIsLoading(true);\n    try {\n      const result = await handleTxn({\n        suiTransaction: transaction,\n      });\n\n      if (result?.sui?.digest) {\n        setTxDigest(result.sui.digest);\n        setIsLoading(false);\n        if (!messageAppended.current) {\n          messageAppended.current = true;\n          await append({\n            id: messageId,\n            role: 'assistant',\n            content: `Transaction successfully submitted. Transaction digest: ${result.sui.digest}\\nView on SuiVision: https://suivision.xyz/txblock/${result.sui.digest}`,\n            createdAt: new Date(),\n          });\n        }\n      }\n    } catch (error) {\n      setIsLoading(false);\n      setErrorMsg(\n        error instanceof Error\n          ? error.message\n          : `Unknown error: ${JSON.stringify(error)}`,\n      );\n\n      if (!messageAppended.current) {\n        messageAppended.current = true;\n        await append({\n          id: messageId,\n          role: 'assistant',\n          content: `Transaction failed: ${error instanceof Error ? error.message : 'Unknown error'}`,\n          createdAt: new Date(),\n        });\n      }\n    }\n  };\n\n  const declineTransaction = async () => {\n    setIsDeclined(true);\n    await append(createDeclineTransactionMessage(messageId));\n    setIsLoading(false);\n  };\n\n  return (\n    <TxContainer\n      style={{\n        backgroundColor: messageBackgroundColor,\n        borderColor,\n        textColor,\n      }}\n    >\n      <CardHeader\n        className=\"bitte-border-b bitte-p-4 bitte-text-center bitte-md:p-6\"\n        style={{ borderColor: borderColor }}\n      >\n        <p className=\"bitte-text-xl bitte-font-semibold\">Sui Transaction</p>\n      </CardHeader>\n\n      <div className=\"bitte-p-6\">\n        <div className=\"bitte-flex bitte-flex-col bitte-gap-6 bitte-text-sm\">\n          <Accordion type=\"single\" collapsible defaultValue=\"txData\">\n            <AccordionItem value=\"txData\">\n              <AccordionTrigger className=\"bitte-pt-0\">\n                <div className=\"bitte-flex bitte-items-center bitte-justify-between bitte-text-sm\">\n                  <p>Transaction Details</p>\n                </div>\n              </AccordionTrigger>\n              <AccordionContent>\n                <pre className=\"bitte-whitespace-pre-wrap bitte-overflow-auto bitte-max-h-60 bitte-text-xs\">\n                  {JSON.stringify(transactionData, null, 2)}\n                </pre>\n              </AccordionContent>\n            </AccordionItem>\n          </Accordion>\n\n          {suiAddress && (\n            <div className=\"bitte-flex bitte-items-center bitte-justify-between\">\n              <span>Sender:</span>\n              <CopyStandard\n                text={suiAddress}\n                textSize=\"sm\"\n                charSize={isMobile ? 7 : 12}\n              />\n            </div>\n          )}\n        </div>\n      </div>\n\n      {errorMsg ? (\n        <div className=\"bitte-flex bitte-flex-col bitte-items-center bitte-gap-4 bitte-px-6 bitte-pb-6 bitte-text-center bitte-text-sm\">\n          <p className=\"bitte-text-red-300\">\n            An error occurred trying to execute your transaction: {errorMsg}.\n          </p>\n          <Button\n            className=\"bitte-w-1/2\"\n            variant=\"outline\"\n            onClick={() => {\n              setErrorMsg('');\n            }}\n          >\n            Dismiss\n          </Button>\n        </div>\n      ) : isLoading ? (\n        <LoadingMessage color={textColor} />\n      ) : null}\n\n      {isDeclined ? (\n        <div className=\"bitte-px-6 bitte-pb-6 bitte-text-center bitte-text-sm\">\n          Transaction declined!\n        </div>\n      ) : null}\n\n      {txDigest ? (\n        <div>\n          <TransactionResult\n            result={{ sui: { digest: txDigest } }}\n            accountId={suiAddress || ''}\n            textColor={textColor}\n          />\n          <div className=\"bitte-mt-2 bitte-text-center\">\n            <a\n              href={`https://suivision.xyz/txblock/${txDigest}`}\n              target=\"_blank\"\n              rel=\"noopener noreferrer\"\n              className=\"bitte-text-blue-500 hover:bitte-text-blue-700 bitte-underline\"\n            >\n              View on SuiVision\n            </a>\n          </div>\n        </div>\n      ) : null}\n\n      {!isLoading && !errorMsg && !txDigest && !isDeclined && (\n        <CardFooter className=\"bitte-flex bitte-items-center bitte-gap-6\">\n          <>\n            <DeclineButton onClick={declineTransaction} disabled={isLoading} />\n            <ApproveButton\n              onClick={handleSmartAction}\n              disabled={isLoading || !suiWallet?.connected}\n              isLoading={isLoading}\n            />\n          </>\n        </CardFooter>\n      )}\n    </TxContainer>\n  );\n};\n","import { memo, useEffect, useState } from 'react';\n\nimport { SignRequestData } from 'near-safe';\n\nimport { Transaction } from '@near-wallet-selector/core';\n\nimport {\n  BitteToolWarning,\n  MessageGroupProps,\n  MessagePart,\n  SmartActionAiMessage,\n  ToolInvocation,\n} from '@bitte-ai/types';\nimport { formatAgentId, getAgentIdFromMessage } from '../../lib/chat';\nimport { BittePrimitiveName, DEFAULT_AGENT_ID } from '../../lib/constants';\nimport { BITTE_BLACK_IMG } from '../../lib/images';\nimport { isDataString } from '../../lib/regex';\nimport { Button } from '../ui/button';\nimport { ChartWrapper } from '../ui/charts/ChartWrapper';\nimport { CodeBlock } from './CodeBlock';\nimport { ErrorBoundary } from './ErrorBoundary';\nimport { SAMessage } from './Message';\nimport DefaultMessageContainer from './default-components/DefaultMessageContainer';\nimport { EvmTxCard } from './transactions/EvmTxCard';\nimport { ReviewSignMessage } from './transactions/ReviewSignMessage';\nimport { ReviewTransaction } from './transactions/ReviewTransaction';\nimport { SuiTxCard } from './transactions/SuiTxCard';\n\nexport const MessageGroup = memo(\n  ({\n    groupKey,\n    messages,\n    accountId,\n    creator,\n    isLoading,\n    agentImage,\n    agentName,\n    messageBackgroundColor,\n    borderColor,\n    textColor,\n    chatId,\n    addToolResult,\n    append,\n    customMessageContainer: MessageContainer = DefaultMessageContainer,\n    customTxContainer,\n    customApproveTxButton,\n    customDeclineTxButton,\n    customToolComponents,\n    showBorder,\n    hideToolCall,\n  }: MessageGroupProps) => {\n    // State to track agentId for each message\n    const [messagesWithAgentId, setMessagesWithAgentId] = useState<\n      SmartActionAiMessage[]\n    >([]);\n\n    const updateAgentIdForMessages = (\n      incomingMessages: SmartActionAiMessage[],\n    ) => {\n      return incomingMessages.map((message) => {\n        let agentId = message.agentId || getAgentIdFromMessage(message);\n        if (!agentId) {\n          agentId = DEFAULT_AGENT_ID;\n        }\n\n        const existingMessage = messagesWithAgentId?.find(\n          (m) => m.id === message.id,\n        );\n        const messageAgentImage =\n          existingMessage?.agentImage || agentImage || BITTE_BLACK_IMG;\n        return {\n          ...message,\n          agentId,\n          agentImage: messageAgentImage,\n          agentName,\n        };\n      });\n    };\n\n    // Update messages with agentId whenever new messages arrive\n    useEffect(() => {\n      const updatedMessages = updateAgentIdForMessages(messages);\n      setMessagesWithAgentId(updatedMessages);\n    }, [messages]);\n\n    return messagesWithAgentId?.map((message, index) => {\n      if (message.role === 'system') return null;\n\n      const uniqueKey = `${groupKey}-${index}`;\n\n      if (message.parts) {\n        for (const part of message.parts) {\n          if (part.type === 'tool-invocation' && part.toolInvocation) {\n            const { toolName, toolCallId, state, args } = part.toolInvocation;\n\n            const result =\n              state === 'result' ? part.toolInvocation.result : null;\n\n            if (state !== 'result') {\n              if (toolName === BittePrimitiveName.SIGN_MESSAGE) {\n                const { message, nonce, recipient, callbackUrl } = args;\n\n                return (\n                  <ReviewSignMessage\n                    key={`${toolCallId}-${index}`}\n                    chatId={chatId}\n                    message={message || ''}\n                    nonce={nonce}\n                    recipient={recipient}\n                    callbackUrl={callbackUrl}\n                    textColor={textColor}\n                    messageBackgroundColor={messageBackgroundColor}\n                    borderColor={borderColor}\n                    toolCallId={toolCallId}\n                    addToolResult={(result) =>\n                      addToolResult({\n                        toolCallId: toolCallId,\n                        result,\n                      })\n                    }\n                    customApproveTxButton={customApproveTxButton}\n                    customDeclineTxButton={customDeclineTxButton}\n                    customTxContainer={customTxContainer}\n                  />\n                );\n              }\n\n              if (toolName === BittePrimitiveName.GENERATE_TRANSACTION) {\n                // Type assertion to handle the transactions array\n                const transactions =\n                  result?.data &&\n                  typeof result.data === 'object' &&\n                  'transactions' in result.data\n                    ? (result.data.transactions as Transaction[]) || []\n                    : [];\n\n                // Type assertion for warnings\n                const warnings =\n                  result?.data &&\n                  typeof result.data === 'object' &&\n                  'warnings' in result.data\n                    ? (result.data.warnings as BitteToolWarning[]) || []\n                    : [];\n\n                return (\n                  <ErrorBoundary key={`${groupKey}-${message.id}`}>\n                    {transactions && transactions.length > 0 ? (\n                      <div className=\"bitte-my-4\">\n                        <ReviewTransaction\n                          chatId={chatId}\n                          creator={creator}\n                          transactions={transactions}\n                          warnings={warnings}\n                          agentId={formatAgentId(\n                            message.agentId || 'Bitte-Assistant',\n                          )}\n                          walletLoading={isLoading}\n                          borderColor={borderColor}\n                          messageBackgroundColor={messageBackgroundColor}\n                          textColor={textColor}\n                          customApproveTxButton={customApproveTxButton}\n                          customDeclineTxButton={customDeclineTxButton}\n                          customTxContainer={customTxContainer}\n                          append={append}\n                          messageId={message.id || ''}\n                        />\n                      </div>\n                    ) : (\n                      <div className=\"bitte-my-4\">\n                        <div className=\"bitte-p-4 bitte-text-center\">\n                          Generating transaction...\n                        </div>\n                      </div>\n                    )}\n                  </ErrorBoundary>\n                );\n              }\n\n              if (toolName === BittePrimitiveName.GENERATE_EVM_TX) {\n                // Type assertion for evmSignRequest\n                const evmSignRequest =\n                  result?.data &&\n                  typeof result.data === 'object' &&\n                  'evmSignRequest' in result.data\n                    ? (result.data.evmSignRequest as SignRequestData)\n                    : undefined;\n\n                return (\n                  <ErrorBoundary key={`${groupKey}-${message.id}`}>\n                    {evmSignRequest ? (\n                      <div className=\"bitte-my-4\">\n                        <EvmTxCard\n                          evmData={evmSignRequest}\n                          borderColor={borderColor}\n                          messageBackgroundColor={messageBackgroundColor}\n                          textColor={textColor}\n                          customApproveTxButton={customApproveTxButton}\n                          customDeclineTxButton={customDeclineTxButton}\n                          customTxContainer={customTxContainer}\n                          append={append}\n                          messageId={message.id || ''}\n                        />\n                      </div>\n                    ) : (\n                      <div className=\"bitte-my-4\">\n                        <div className=\"bitte-p-4 bitte-text-center\">\n                          Generating transaction...\n                        </div>\n                      </div>\n                    )}\n                  </ErrorBoundary>\n                );\n              }\n            }\n          }\n        }\n      }\n\n      const isUser = message.role === 'user';\n      const userName = creator || accountId || '';\n\n      // In the original code there was toolInvocations property,\n      // but this doesn't exist in the type definition. We'll fallback to parts\n      // if toolInvocations doesn't exist\n      const toolInvocations =\n        message.parts?.filter(\n          (part): part is MessagePart & { toolInvocation: ToolInvocation } =>\n            part.type === 'tool-invocation' && !!part.toolInvocation,\n        ) || [];\n\n      return (\n        <MessageContainer\n          key={`${message.id}-${index}`}\n          message={message}\n          isUser={isUser}\n          userName={userName}\n          style={{\n            backgroundColor: messageBackgroundColor,\n            borderColor: borderColor,\n            textColor: textColor,\n          }}\n          uniqueKey={uniqueKey}\n          showBorder={showBorder}\n        >\n          <div\n            className={` ${\n              isUser\n                ? 'bitte-w-auto'\n                : 'bitte-w-full bitte-mt-6 bitte-flex bitte-flex-col bitte-gap-2'\n            } `}\n          >\n            {message.content && (\n              <div className=\"bitte-flex bitte-flex-col bitte-gap-4\">\n                <SAMessage content={JSON.stringify(message.content)} />\n              </div>\n            )}\n\n            {toolInvocations.map((part, toolIndex) => {\n              const { toolName, toolCallId, state } = part.toolInvocation;\n              const result =\n                part.toolInvocation.state === 'result'\n                  ? part.toolInvocation.result\n                  : null;\n\n              return (\n                <div key={`${toolCallId}-${toolIndex}`}>\n                  {!hideToolCall && (\n                    <div className=\"bitte-flex bitte-w-full bitte-items-center bitte-justify-between bitte-text-[12px]\">\n                      <div>Tool Call</div>\n                      <div className=\"bitte-rounded bitte-bg-shad-white-10 bitte-px-2 bitte-py-1\">\n                        <code>{toolName}</code>\n                      </div>\n                    </div>\n                  )}\n\n                  <div>\n                    {(() => {\n                      if (state === 'result') {\n                        if (!result || (result?.error && !hideToolCall)) {\n                          return (\n                            <CodeBlock\n                              content={`Error: ${\n                                result?.error || 'Unknown Error'\n                              }`}\n                            />\n                          );\n                        }\n\n                        // Check for custom tool component first\n                        const customTool = customToolComponents?.find(\n                          (tool) => {\n                            if ('toolName' in tool)\n                              return tool.toolName === toolName;\n                            if ('name' in tool) return tool.name === toolName;\n                            return false;\n                          },\n                        );\n\n                        if (customTool && 'component' in customTool) {\n                          const CustomComponent = customTool.component;\n                          // @ts-ignore\n                          return (\n                            // @ts-ignore\n                            <CustomComponent data={result.data || result} />\n                          );\n                        }\n\n                        switch (toolName) {\n                          case BittePrimitiveName.GENERATE_TRANSACTION: {\n                            const transactions =\n                              result?.data &&\n                              typeof result.data === 'object' &&\n                              'transactions' in result.data\n                                ? (result.data.transactions as Transaction[]) ||\n                                  []\n                                : [];\n\n                            // Type assertion for warnings\n                            const warnings =\n                              result?.data &&\n                              typeof result.data === 'object' &&\n                              'warnings' in result.data\n                                ? (result.data\n                                    .warnings as BitteToolWarning[]) || []\n                                : [];\n\n                            return (\n                              <ErrorBoundary key={`${groupKey}-${message.id}`}>\n                                {transactions && transactions.length > 0 ? (\n                                  <div className=\"bitte-my-4\">\n                                    <ReviewTransaction\n                                      chatId={chatId}\n                                      creator={creator}\n                                      transactions={transactions}\n                                      warnings={warnings}\n                                      agentId={formatAgentId(\n                                        message.agentId || 'Bitte-Assistant',\n                                      )}\n                                      borderColor={borderColor}\n                                      messageBackgroundColor={\n                                        messageBackgroundColor\n                                      }\n                                      textColor={textColor}\n                                      customApproveTxButton={\n                                        customApproveTxButton\n                                      }\n                                      customDeclineTxButton={\n                                        customDeclineTxButton\n                                      }\n                                      customTxContainer={customTxContainer}\n                                      append={append}\n                                      messageId={message.id || ''}\n                                    />\n                                  </div>\n                                ) : (\n                                  <div className=\"bitte-my-4\">\n                                    <div className=\"bitte-p-4 bitte-text-center\">\n                                      Generating transaction...\n                                    </div>\n                                  </div>\n                                )}\n                              </ErrorBoundary>\n                            );\n                          }\n\n                          case BittePrimitiveName.GENERATE_EVM_TX: {\n                            const evmSignRequest =\n                              result?.data &&\n                              typeof result.data === 'object' &&\n                              'evmSignRequest' in result.data\n                                ? (result.data\n                                    .evmSignRequest as SignRequestData)\n                                : undefined;\n\n                            return (\n                              <ErrorBoundary key={`${groupKey}-${message.id}`}>\n                                {evmSignRequest ? (\n                                  <div className=\"bitte-my-4\">\n                                    <EvmTxCard\n                                      evmData={evmSignRequest}\n                                      borderColor={borderColor}\n                                      messageBackgroundColor={\n                                        messageBackgroundColor\n                                      }\n                                      textColor={textColor}\n                                      customApproveTxButton={\n                                        customApproveTxButton\n                                      }\n                                      customDeclineTxButton={\n                                        customDeclineTxButton\n                                      }\n                                      customTxContainer={customTxContainer}\n                                      append={append}\n                                      messageId={message.id || ''}\n                                    />\n                                  </div>\n                                ) : (\n                                  <div className=\"bitte-my-4\">\n                                    <div className=\"bitte-p-4 bitte-text-center\">\n                                      Generating transaction...\n                                    </div>\n                                  </div>\n                                )}\n                              </ErrorBoundary>\n                            );\n                          }\n\n                          case BittePrimitiveName.GENERATE_IMAGE: {\n                            const url =\n                              typeof result.data === 'object' &&\n                              result.data &&\n                              'url' in result.data\n                                ? (result.data.url as string) || ''\n                                : '';\n                            return (\n                              <img\n                                src={url}\n                                className=\"bitte-w-full\"\n                                alt=\"Generated content\"\n                              />\n                            );\n                          }\n                          case BittePrimitiveName.CREATE_DROP: {\n                            return (\n                              <div className=\"bitte-flex bitte-items-center bitte-justify-center bitte-gap-2\">\n                                <Button asChild variant=\"link\">\n                                  <a\n                                    href={`/claim/${result.data}`}\n                                    target=\"_blank\"\n                                    rel=\"noreferrer\"\n                                  >\n                                    View Drop\n                                  </a>\n                                </Button>\n                              </div>\n                            );\n                          }\n                          case BittePrimitiveName.GENERATE_SUI_TX: {\n                            const suiTransactionBytes =\n                              typeof result.data === 'object' &&\n                              result.data &&\n                              'suiTransactionBytes' in result.data\n                                ? (result.data.suiTransactionBytes as string) ||\n                                  ''\n                                : '';\n\n                            if (suiTransactionBytes) {\n                              return (\n                                <SuiTxCard\n                                  suiTransactionBytes={suiTransactionBytes}\n                                  borderColor={borderColor}\n                                  messageBackgroundColor={\n                                    messageBackgroundColor\n                                  }\n                                  textColor={textColor}\n                                  customApproveTxButton={customApproveTxButton}\n                                  customDeclineTxButton={customDeclineTxButton}\n                                  customTxContainer={customTxContainer}\n                                  append={append}\n                                  messageId={message.id || ''}\n                                />\n                              );\n                            }\n                            break;\n                          }\n                          case BittePrimitiveName.RENDER_CHART: {\n                            if (\n                              typeof result.data === 'object' &&\n                              result.data\n                            ) {\n                              const chartData = result.data as {\n                                title?: string;\n                                description?: string;\n                                chartConfig?: unknown;\n                                chartData?: any; // Using any to bypass strict type checking\n                                metricData?: unknown;\n                                metricLabels?: unknown;\n                                dataFormat?: string;\n                                chartType?: string;\n                              };\n\n                              return (\n                                <ChartWrapper\n                                  title={chartData.title || ''}\n                                  description={chartData.description || ''}\n                                  chartData={chartData.chartData as any} // Using any due to missing specific type\n                                  chartConfig={chartData.chartConfig as any} // Using any due to missing specific type\n                                  dataFormat={chartData.dataFormat as any}\n                                  chartType={chartData.chartType as any} // Default to bar chart\n                                  metricLabels={\n                                    (chartData.metricLabels as string[]) || []\n                                  }\n                                  metricData={\n                                    (chartData.metricData as any) || []\n                                  }\n                                />\n                              );\n                            }\n                            break;\n                          }\n                          default: {\n                            if (showBorder) {\n                              return null;\n                            }\n                            // handle tools that return data outside of the data property\n                            const data = result?.data || result;\n                            const stringifiedData =\n                              typeof data === 'string'\n                                ? data\n                                : JSON.stringify(data);\n                            return isDataString(stringifiedData) ? (\n                              <CodeBlock content={stringifiedData} />\n                            ) : (\n                              <p>{stringifiedData}</p>\n                            );\n                          }\n                        }\n                      } else if (result && !hideToolCall) {\n                        return (\n                          <CodeBlock\n                            content={`Error: ${\n                              result.error || 'Unknown Error'\n                            }`}\n                          />\n                        );\n                      } else {\n                        return <CodeBlock content=\"Processing...\" />;\n                      }\n                    })()}\n                  </div>\n\n                  {!hideToolCall && (\n                    <div\n                      className=\"bitte-mt-2 bitte-border-t\"\n                      style={{ borderColor: borderColor }}\n                    />\n                  )}\n                </div>\n              );\n            })}\n          </div>\n        </MessageContainer>\n      );\n    });\n  },\n  (prevProps, nextProps) => {\n    // Custom comparison function to prevent unnecessary re-renders\n    if (prevProps.isLoading !== nextProps.isLoading) return false;\n    if (prevProps.groupKey !== nextProps.groupKey) return false;\n    if (prevProps.messages.length !== nextProps.messages.length) return false;\n\n    // Deep compare messages only if length is the same\n    for (let i = 0; i < prevProps.messages.length; i++) {\n      const prevMsg = prevProps.messages[i];\n      const nextMsg = nextProps.messages[i];\n\n      if (prevMsg.id !== nextMsg.id) return false;\n      if (prevMsg.content !== nextMsg.content) return false;\n      if (prevMsg.role !== nextMsg.role) return false;\n\n      // Compare parts if they exist (using the SmartActionAiMessage type)\n      const prevParts = (prevMsg as SmartActionAiMessage).parts;\n      const nextParts = (nextMsg as SmartActionAiMessage).parts;\n\n      if (prevParts?.length !== nextParts?.length) return false;\n      if (prevParts && nextParts) {\n        for (let j = 0; j < prevParts.length; j++) {\n          const prevPart = prevParts[j];\n          const nextPart = nextParts[j];\n          if (JSON.stringify(prevPart) !== JSON.stringify(nextPart))\n            return false;\n        }\n      }\n    }\n\n    // Props are equal, skip re-render\n    return true;\n  },\n);\n","import { motion } from 'framer-motion';\nimport { memo, useState } from 'react';\nimport { BITTE_IMG } from '../../lib/images';\nimport { cn } from '../../lib/utils';\n\ninterface ThinkingMessageProps {\n  agentImage?: string;\n  agentName?: string;\n  isWidgetMode?: boolean;\n  disableAnimation?: boolean;\n}\n\nconst ThinkingMessageComponent = ({\n  agentImage,\n  agentName,\n  isWidgetMode = false,\n  disableAnimation = false,\n}: ThinkingMessageProps) => {\n  // Synchronous height check to prevent delayed re-renders\n  const getInitialScreenSize = () => {\n    if (typeof window !== 'undefined') {\n      return window.innerHeight > 800;\n    }\n    return true; // Default for SSR\n  };\n\n  const [isLargeScreen] = useState(getInitialScreenSize);\n  const [currentSrc, setCurrentSrc] = useState<string>(agentImage ?? BITTE_IMG);\n\n  const handleImageError = () => {\n    setCurrentSrc(BITTE_IMG);\n  };\n\n  const content = (\n    <div\n      data-testid=\"message-assistant-loading\"\n      className={cn('bitte-w-full bitte-mx-auto bitte-max-w-3xl bitte-px-4', {\n        // Desktop: Full padding (min-h-96 = 384px)\n        'bitte-min-h-96': !isWidgetMode,\n\n        // Widget on larger screens: Reduced padding (min-h-64 = 256px)\n        'bitte-min-h-64': isWidgetMode && isLargeScreen,\n\n        // Widget on smaller screens: Minimal padding (min-h-48 = 192px)\n        'bitte-min-h-48': isWidgetMode && !isLargeScreen,\n      })}\n      data-role=\"assistant\"\n    >\n      <div className=\"bitte-flex bitte-gap-4 bitte-w-full bitte-items-center\">\n        <div className=\"bitte-size-8 bitte-flex bitte-items-center bitte-rounded-full bitte-justify-center bitte-ring-1 bitte-shrink-0 bitte-ring-border bitte-bg-background\">\n          <img\n            src={currentSrc}\n            alt={agentName || 'Assistant'}\n            className=\"bitte-w-6 bitte-h-6 bitte-rounded-full\"\n            onError={handleImageError}\n          />\n        </div>\n\n        <div className=\"bitte-flex bitte-flex-col bitte-gap-2 bitte-w-full\">\n          <div className=\"bitte-flex bitte-items-center bitte-gap-4 bitte-text-muted-foreground\">\n            <div className=\"bitte-flex bitte-items-center bitte-gap-0.5\">\n              {[0, 0.2, 0.4].map((delay, i) => (\n                <motion.div\n                  key={i}\n                  className=\"bitte-w-1 bitte-h-1 bitte-bg-current bitte-rounded-full\"\n                  animate={{\n                    opacity: [0.3, 1, 0.3],\n                  }}\n                  transition={{\n                    duration: 1.2,\n                    repeat: Number.POSITIVE_INFINITY,\n                    delay,\n                  }}\n                />\n              ))}\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  );\n\n  // Return regular div if animations are disabled, motion.div otherwise\n  if (disableAnimation) {\n    return content;\n  }\n\n  return (\n    <motion.div\n      initial={{ y: 5, opacity: 0 }}\n      animate={{ y: 0, opacity: 1, transition: { delay: 1 } }}\n    >\n      {content}\n    </motion.div>\n  );\n};\n\nexport const ThinkingMessage = memo(ThinkingMessageComponent);\n","import { motion } from 'framer-motion';\nimport { BITTE_IMG } from '../../../lib/images';\n\nconst DefaultWelcomeScreen = () => {\n  return (\n    <motion.div\n      className=\"bitte-flex bitte-flex-col bitte-gap-4 bitte-items-center bitte-justify-center bitte-absolute bitte-inset-0 bitte-text-center bitte-px-4\"\n      initial={{ opacity: 0, y: 10 }}\n      animate={{ opacity: 1, y: 0 }}\n      transition={{ delay: 0.1 }}\n    >\n      <img className=\"bitte-mx-auto bitte-mb-4\" src={BITTE_IMG} alt=\"Bitte\" />\n      <div className=\"bitte-mb-14 bitte-text-[20px] bitte-font-medium bitte-text-gray-40\">\n        Execute Transactions with AI\n      </div>\n    </motion.div>\n  );\n};\n\nexport default DefaultWelcomeScreen;\n","import { PortfolioResponse } from '@bitte-ai/types';\nimport { Message, generateId } from 'ai';\nimport { AccountOverview } from '../..';\nimport { WelcomeList } from './WelcomeList';\n\nconst WELCOME_QUESTIONS = [\n  'What are the trending tokens?',\n  'Who are the top traders?',\n  'What yield opportunities are available?',\n  'How is my portfolio performing?',\n];\n\nconst WELCOME_ACTIONS = [\n  'Get my portfolio overview',\n  'Show me my balance',\n  'Swap ETH for USDC',\n  'Fetch yield opportunities',\n  'Check my portfolio value',\n];\n\nconst WELCOME_COLORS = {\n  QUESTIONS: '#60A5FA33',\n  ACTIONS: '#432C27',\n} as const;\n\ninterface WelcomeAccountOverviewProps {\n  data: PortfolioResponse;\n  evmAddress: string;\n  append: (message: Message) => void;\n}\n\nconst WelcomeAccountOverview: React.FC<WelcomeAccountOverviewProps> = ({\n  data,\n  evmAddress,\n  append,\n}) => {\n  const handleItemClick = (content: string) => {\n    append({\n      id: generateId(),\n      role: 'user',\n      content,\n    });\n  };\n\n  return (\n    <div className=\"bitte-w-full\">\n      <AccountOverview data={data} walletAddress={evmAddress} />\n      <div className=\"bitte-mt-6 bitte-px-6 bitte-grid bitte-grid-cols-1 md:bitte-grid-cols-2 bitte-gap-4\">\n        <WelcomeList\n          items={WELCOME_QUESTIONS}\n          label=\"Questions\"\n          bgColor={WELCOME_COLORS.QUESTIONS}\n          onItemClick={handleItemClick}\n        />\n        <WelcomeList\n          items={WELCOME_ACTIONS}\n          label=\"Actions\"\n          bgColor={WELCOME_COLORS.ACTIONS}\n          onItemClick={handleItemClick}\n        />\n      </div>\n    </div>\n  );\n};\n\nexport default WelcomeAccountOverview;\n","import { WelcomeListProps } from '@bitte-ai/types';\nimport { cn } from '../../../lib/utils';\n\nexport const WelcomeList: React.FC<WelcomeListProps> = ({\n  items,\n  label,\n  bgColor,\n  onItemClick,\n}) => {\n  if (!items?.length) return null;\n\n  return (\n    <div className=\"bitte-flex bitte-gap-2 bitte-flex-col\">\n      <p\n        className={cn(\n          'bitte-text-[10px] bitte-uppercase bitte-font-semibold',\n          'bitte-text-[#969696]',\n        )}\n      >\n        {label}\n      </p>\n      <div className=\"bitte-flex bitte-gap-2 bitte-flex-col\">\n        {items.map((item, index) => (\n          <button\n            key={index}\n            type=\"button\"\n            className={cn(\n              'bitte-p-2 bitte-w-fit bitte-rounded-md bitte-text-xs',\n              'cursor-pointer hover:bitte-opacity-80 bitte-transition-opacity',\n              'bitte-text-left bitte-border-none',\n            )}\n            style={{ backgroundColor: bgColor }}\n            onClick={() => onItemClick(item)}\n          >\n            {item}\n          </button>\n        ))}\n      </div>\n    </div>\n  );\n};\n","import { cn } from '../../lib/utils';\n\nfunction Skeleton({\n  className,\n  ...props\n}: React.HTMLAttributes<HTMLDivElement>) {\n  return (\n    <div\n      className={cn(\n        'bitte-animate-pulse bitte-rounded-md bitte-bg-primary/10',\n        className,\n      )}\n      {...props}\n    />\n  );\n}\n\nexport { Skeleton };\n","import React from 'react';\nimport { Skeleton } from '../../ui/skeleton';\n\nconst AccountOverviewSkeleton: React.FC = () => (\n  <div className=\"bitte-bg-[#18181b] bitte-rounded-lg bitte-p-6 bitte-space-y-6\">\n    {/* Header skeleton */}\n    <div className=\"bitte-flex bitte-justify-center\">\n      <Skeleton className=\"bitte-w-32 bitte-h-4\" />\n    </div>\n\n    <div className=\"bitte-grid bitte-grid-cols-1 lg:bitte-grid-cols-6 bitte-gap-4 bitte-w-full\">\n      {/* Left column - Overview */}\n      <div className=\"lg:bitte-col-span-2 bitte-flex bitte-flex-col\">\n        <Skeleton className=\"bitte-w-16 bitte-h-2 bitte-mb-3\" />\n        <div className=\"bitte-bg-[#292929] bitte-rounded-md bitte-flex-1 bitte-min-h-[300px] bitte-p-4 bitte-space-y-4\">\n          <Skeleton className=\"bitte-w-3/4 bitte-h-3\" />\n          <Skeleton className=\"bitte-w-20 bitte-h-6\" />\n          <Skeleton className=\"bitte-w-16 bitte-h-4\" />\n          <div className=\"bitte-grid bitte-grid-cols-2 bitte-gap-4 bitte-mt-8\">\n            <Skeleton className=\"bitte-h-16\" />\n            <Skeleton className=\"bitte-h-16\" />\n          </div>\n        </div>\n      </div>\n\n      {/* Right column - Assets */}\n      <div className=\"lg:bitte-col-span-4 bitte-flex bitte-flex-col\">\n        <div className=\"bitte-h-6 bitte-mb-3\" />\n        <div className=\"bitte-bg-[#292929] bitte-rounded-md bitte-flex-1 bitte-min-h-[300px] bitte-p-4 bitte-space-y-3\">\n          {/* Table headers */}\n          <div className=\"bitte-grid bitte-grid-cols-3 bitte-gap-4 bitte-mb-4\">\n            <Skeleton className=\"bitte-w-12 bitte-h-2\" />\n            <Skeleton className=\"bitte-w-16 bitte-h-2\" />\n            <Skeleton className=\"bitte-w-12 bitte-h-2\" />\n          </div>\n          {/* Asset rows */}\n          {Array.from({ length: 3 }).map((_, index) => (\n            <div\n              key={index}\n              className=\"bitte-grid bitte-grid-cols-3 bitte-gap-4 bitte-py-3\"\n            >\n              <div className=\"bitte-flex bitte-items-center bitte-gap-3\">\n                <Skeleton className=\"bitte-w-9 bitte-h-9 bitte-rounded-full\" />\n                <div className=\"bitte-space-y-1\">\n                  <Skeleton className=\"bitte-w-12 bitte-h-3\" />\n                  <Skeleton className=\"bitte-w-16 bitte-h-2\" />\n                </div>\n              </div>\n              <Skeleton className=\"bitte-w-20 bitte-h-3\" />\n              <div className=\"bitte-space-y-1\">\n                <Skeleton className=\"bitte-w-16 bitte-h-3\" />\n                <Skeleton className=\"bitte-w-12 bitte-h-2\" />\n              </div>\n            </div>\n          ))}\n        </div>\n      </div>\n    </div>\n  </div>\n);\n\nconst WelcomeListSkeleton: React.FC<{ title: string }> = ({ title }) => (\n  <div className=\"bitte-flex bitte-gap-2 bitte-flex-col\">\n    <p className=\"bitte-text-[10px] bitte-uppercase bitte-font-semibold bitte-text-[#969696]\">\n      {title}\n    </p>\n    <div className=\"bitte-flex bitte-gap-2 bitte-flex-col\">\n      {Array.from({ length: 3 }).map((_, index) => (\n        <Skeleton key={index} className=\"bitte-h-8 bitte-w-48\" />\n      ))}\n    </div>\n  </div>\n);\n\nexport const WelcomeAccountOverviewSkeleton: React.FC = () => {\n  return (\n    <div className=\"bitte-w-full\">\n      <AccountOverviewSkeleton />\n      <div className=\"bitte-mt-6 bitte-px-6 bitte-grid bitte-grid-cols-1 md:bitte-grid-cols-2 bitte-gap-4\">\n        <WelcomeListSkeleton title=\"QUESTIONS\" />\n        <WelcomeListSkeleton title=\"ACTIONS\" />\n      </div>\n    </div>\n  );\n};\n","import { Message } from '@ai-sdk/react';\nimport React from 'react';\nimport DefaultWelcomeScreen from './welcome-screens/DefaultWelcomeScreen';\nimport WelcomeAccountOverview from './welcome-screens/WelcomeAccountOverview';\nimport { WelcomeAccountOverviewSkeleton } from './welcome-screens/WelcomeAccountOverviewSkeleton';\n\ntype AccountOverviewComponent = {\n  type: 'account-overview';\n  data: any;\n  isLoading?: boolean;\n};\n\ntype CustomComponent = {\n  type: 'component';\n  component: React.ReactNode;\n};\n\ntype WelcomeComponentConfig =\n  | React.ReactNode\n  | AccountOverviewComponent\n  | CustomComponent;\n\ninterface WelcomeWrapperProps {\n  messages: Message[];\n  isWidgetChat?: boolean;\n  evmAddress?: string;\n  append?: (message: Message) => void;\n  options?: {\n    customComponents?: {\n      welcomeMessageComponent?: WelcomeComponentConfig;\n    };\n  };\n}\n\nconst renderTypedComponent = (\n  component: AccountOverviewComponent | CustomComponent,\n  evmAddress?: string,\n  append?: (message: Message) => void,\n): React.ReactNode => {\n  if (component.type === 'account-overview' && evmAddress && append) {\n    if (component.isLoading || !component.data) {\n      return <WelcomeAccountOverviewSkeleton />;\n    }\n\n    return (\n      <WelcomeAccountOverview\n        evmAddress={evmAddress}\n        data={component.data}\n        append={append}\n      />\n    );\n  }\n\n  if (component.type === 'component' && 'component' in component) {\n    return component.component;\n  }\n\n  return null;\n};\n\nexport const WelcomeWrapper: React.FC<WelcomeWrapperProps> = ({\n  messages,\n  isWidgetChat,\n  evmAddress,\n  append,\n  options,\n}) => {\n  if (isWidgetChat || !messages || messages.length > 0) {\n    return null;\n  }\n\n  const welcomeComponent = options?.customComponents?.welcomeMessageComponent;\n\n  if (!welcomeComponent) {\n    return <DefaultWelcomeScreen />;\n  }\n\n  if (\n    typeof welcomeComponent === 'object' &&\n    welcomeComponent !== null &&\n    'type' in welcomeComponent\n  ) {\n    return renderTypedComponent(\n      welcomeComponent as AccountOverviewComponent | CustomComponent,\n      evmAddress,\n      append,\n    );\n  }\n\n  return welcomeComponent as React.ReactNode;\n};\n","import type { LoadingIndicatorComponentProps } from '@bitte-ai/types';\nimport { BitteSpinner } from '../BitteSpinner';\n\nconst DefaultLoadingIndicator = ({\n  textColor,\n}: LoadingIndicatorComponentProps) => (\n  <div className=\"bitte-flex bitte-w-full bitte-flex-col bitte-items-center bitte-justify-center\">\n    <BitteSpinner width={100} height={100} color={textColor || '#FFFFFF'} />\n  </div>\n);\n\nexport default DefaultLoadingIndicator;\n","import { Message } from '@ai-sdk/react';\nimport { generateId } from 'ai';\nimport React, { useCallback } from 'react';\nimport { defaultColors } from '../../lib/constants';\nimport { cn } from '../../lib/utils';\nimport { Button } from '../ui/button';\nimport { BitteSpinner } from './BitteSpinner';\nimport { MessageItem } from './MessageItem';\nimport { ThinkingMessage } from './ThinkingMessage';\nimport { WelcomeWrapper } from './WelcomeWrapper';\nimport DefaultLoadingIndicator from './default-components/DefaultLoadingIndicator';\nimport { WelcomeList } from './welcome-screens/WelcomeList';\n\ninterface MessagesListProps {\n  messages: Message[];\n  isWidgetChat: boolean;\n  isInProgress: boolean;\n  status?: 'ready' | 'streaming' | 'submitted' | 'error';\n  error?: Error | null;\n  textColor?: string;\n  memoizedMessages: any[];\n  evmAddress?: string;\n  options?: {\n    agentName?: string;\n    agentImage?: string;\n    prompt?: string;\n    customComponents?: {\n      welcomeMessageComponent?: React.ReactNode;\n      loadingIndicator?: React.ComponentType<any>;\n    };\n  };\n  widget?: {\n    widgetWelcomePrompts?: {\n      title?: string;\n      description?: string;\n      questions?: string[];\n      actions?: string[];\n    };\n  };\n  onAppend: (\n    message: Message | { id: string; role: 'user'; content: string },\n  ) => void;\n  onReload: () => void;\n  LoadingIndicator?: React.ComponentType<any>;\n}\n\nexport const MessagesList: React.FC<MessagesListProps> = ({\n  messages,\n  isWidgetChat,\n  isInProgress,\n  status,\n  error,\n  textColor,\n  memoizedMessages,\n  evmAddress,\n  options,\n  widget,\n  onAppend,\n  onReload,\n  LoadingIndicator = DefaultLoadingIndicator,\n}) => {\n  const widgetWelcomePrompts = widget?.widgetWelcomePrompts;\n  const { title, description, questions, actions } = widgetWelcomePrompts || {};\n\n  const renderWidgetWelcome = useCallback(() => {\n    if (!isWidgetChat || !messages || messages.length > 0) return null;\n\n    const overlayClasses = cn(\n      'bitte-absolute bitte-top-4 bitte-left-4 bitte-z-50',\n      'bitte-text-[#b7bbc1] bitte-overflow-y-scroll bitte-max-h-[90%]',\n    );\n\n    const titleClasses = cn('bitte-text-[#FAFAFA] bitte-text-2xl bitte-mb-4');\n\n    return (\n      <div className={overlayClasses}>\n        <p className={titleClasses}>{title || 'Hello'}</p>\n        <p className=\"bitte-mb-8\">\n          {description ||\n            `I'm your ${options?.agentName || 'AI'} agent. What do you want to achieve today?`}\n        </p>\n        {questions && questions.length > 0 && (\n          <div className=\"bitte-mb-4\">\n            <WelcomeList\n              items={questions}\n              label=\"Questions\"\n              bgColor=\"#60A5FA33\"\n              onItemClick={(question) =>\n                onAppend({\n                  id: generateId(),\n                  role: 'user',\n                  content: question,\n                })\n              }\n            />\n          </div>\n        )}\n        {actions && actions.length > 0 && (\n          <WelcomeList\n            items={actions}\n            label=\"Actions\"\n            bgColor=\"#2D1F1C\"\n            onItemClick={(action) =>\n              onAppend({\n                id: generateId(),\n                role: 'user',\n                content: action,\n              })\n            }\n          />\n        )}\n      </div>\n    );\n  }, [\n    isWidgetChat,\n    messages,\n    title,\n    description,\n    questions,\n    actions,\n    options?.agentName,\n    onAppend,\n  ]);\n\n  const renderStandardWelcome = useCallback(() => {\n    if (isWidgetChat || !messages || messages.length > 0) return null;\n\n    return (\n      <WelcomeWrapper\n        messages={messages}\n        isWidgetChat={isWidgetChat}\n        evmAddress={evmAddress}\n        append={onAppend}\n        options={options}\n      />\n    );\n  }, [isWidgetChat, messages, evmAddress, onAppend, options]);\n\n  const renderLoadingIndicator = useCallback(() => {\n    if (!isInProgress || status === 'submitted') return null;\n\n    if (isWidgetChat) {\n      const spinnerContainerClasses = cn(\n        'bitte-flex bitte-w-full bitte-flex-col',\n        'bitte-items-center bitte-justify-center',\n      );\n\n      return (\n        <div className={spinnerContainerClasses}>\n          <BitteSpinner width={100} height={100} color=\"#FFFFFF\" />\n        </div>\n      );\n    }\n\n    return (\n      <LoadingIndicator textColor={textColor || defaultColors.textColor} />\n    );\n  }, [isInProgress, status, isWidgetChat, LoadingIndicator, textColor]);\n\n  const renderError = useCallback(() => {\n    if (!error) return null;\n\n    const errorContainerClasses = cn(\n      'bitte-flex bitte-flex-col bitte-items-center bitte-justify-center',\n      'bitte-space-y-2 bitte-px-6 bitte-pb-6 bitte-text-center bitte-text-sm',\n    );\n\n    return (\n      <div className={errorContainerClasses}>\n        <p>An error occurred.</p>\n        <Button\n          type=\"button\"\n          variant=\"default\"\n          size=\"sm\"\n          onClick={() => onReload()}\n        >\n          Retry\n        </Button>\n      </div>\n    );\n  }, [error, onReload]);\n\n  const renderMessages = useCallback(() => {\n    if (!memoizedMessages || memoizedMessages.length === 0) return null;\n\n    const shouldShowThinking =\n      status === 'submitted' &&\n      messages &&\n      messages.length > 0 &&\n      messages[messages.length - 1].role === 'user';\n\n    return (\n      <>\n        {memoizedMessages.map((messageItemProps, index) => (\n          <MessageItem\n            key={`${index}-${messageItemProps.message.id}`}\n            {...messageItemProps}\n          />\n        ))}\n\n        {shouldShowThinking && (\n          <ThinkingMessage\n            agentImage={options?.agentImage}\n            agentName={options?.agentName}\n            isWidgetMode={isWidgetChat}\n            disableAnimation={!!options?.prompt}\n          />\n        )}\n      </>\n    );\n  }, [\n    memoizedMessages,\n    status,\n    messages,\n    options?.agentImage,\n    options?.agentName,\n    options?.prompt,\n    isWidgetChat,\n  ]);\n\n  const containerClasses = cn(\n    'bitte-flex bitte-w-full bitte-flex-col bitte-gap-6',\n  );\n\n  return (\n    <>\n      {renderWidgetWelcome()}\n      {renderStandardWelcome()}\n      <div className={containerClasses} style={{ color: textColor }}>\n        {renderMessages()}\n        {renderError()}\n        {renderLoadingIndicator()}\n      </div>\n    </>\n  );\n};\n","import { motion } from 'framer-motion';\nimport React from 'react';\n\ninterface ScrollManagerProps {\n  messagesEndRef: React.RefObject<HTMLDivElement>;\n  onViewportEnter: () => void;\n  onViewportLeave: () => void;\n  children: React.ReactNode;\n}\n\nexport const ScrollManager: React.FC<ScrollManagerProps> = ({\n  messagesEndRef,\n  onViewportEnter,\n  onViewportLeave,\n  children,\n}) => {\n  return (\n    <>\n      {children}\n      {/* Scroll anchor with framer-motion */}\n      <motion.div\n        ref={messagesEndRef}\n        className=\"bitte-shrink-0 bitte-min-w-[24px] bitte-min-h-[24px]\"\n        onViewportEnter={onViewportEnter}\n        onViewportLeave={onViewportLeave}\n      />\n    </>\n  );\n};\n","import { AnimatePresence, motion } from 'framer-motion';\nimport { ArrowDown } from 'lucide-react';\nimport React from 'react';\nimport { cn } from '../../lib/utils';\nimport { Button } from '../ui/button';\n\ninterface ScrollToBottomButtonProps {\n  isVisible: boolean;\n  onClick: () => void;\n  generalBackground?: string;\n  textColor?: string;\n}\n\nexport const ScrollToBottomButton: React.FC<ScrollToBottomButtonProps> = ({\n  isVisible,\n  onClick,\n  generalBackground,\n  textColor,\n}) => {\n  const containerClasses = cn(\n    'bitte-absolute bitte-bottom-2 bitte-left-1/2 bitte--translate-x-1/2 bitte-z-[99]',\n  );\n\n  const buttonClasses = cn('bitte-shadow-lg hover:bitte-bg-inherit');\n\n  const iconClasses = cn('bitte-h-4 bitte-w-4');\n\n  return (\n    <AnimatePresence>\n      {isVisible && (\n        <motion.div\n          initial={{ opacity: 0, y: 10 }}\n          animate={{ opacity: 1, y: 0 }}\n          exit={{ opacity: 0, y: 10 }}\n          transition={{ type: 'spring', stiffness: 300, damping: 20 }}\n          className={containerClasses}\n        >\n          <Button\n            size=\"icon\"\n            variant=\"outline\"\n            className={buttonClasses}\n            style={{\n              backgroundColor: generalBackground,\n              borderRadius: '9999px',\n            }}\n            onClick={onClick}\n          >\n            <ArrowDown className={iconClasses} style={{ color: textColor }} />\n          </Button>\n        </motion.div>\n      )}\n    </AnimatePresence>\n  );\n};\n","import { Message, useChat } from '@ai-sdk/react';\nimport {\n  BitteAiChatProps,\n  BitteToolResult,\n  ChatRequestBody,\n  UnifiedChatContentProps,\n  WidgetChatProps,\n} from '@bitte-ai/types';\nimport { generateId } from 'ai';\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { Hex } from 'viem';\nimport { useMessages } from '../../hooks/useMessages';\nimport { useScrollToBottom } from '../../hooks/useScrollToBottom';\nimport { AssistantsMode, defaultColors } from '../../lib/constants';\nimport { executeLocalToolCall } from '../../lib/local-agent';\nimport { shortenAddress } from '../../lib/utils';\nimport { useAccount } from '../../state/wallet.state';\nimport { ChatActions } from './ChatActions';\nimport { ChatContainer } from './ChatContainer';\nimport { EnhancedChatInput } from './EnhancedChatInput';\nimport { MessagesList } from './MessagesList';\nimport { ScrollManager } from './ScrollManager';\nimport { ScrollToBottomButton } from './ScrollToBottomButton';\nimport DefaultLoadingIndicator from './default-components/DefaultLoadingIndicator';\n\nexport const UnifiedChatContent = ({\n  agentId,\n  apiUrl,\n  apiKey,\n  options,\n  messages: initialMessages,\n  customToolComponents,\n  widget,\n  urlChatId,\n  isWidgetChat,\n}: UnifiedChatContentProps) => {\n  const chatId = useRef(urlChatId || generateId()).current;\n  const { accountId, evmAddress, chainId, suiAddress, nearWalletId } =\n    useAccount();\n\n  // Theme configuration\n  const {\n    borderColor,\n    buttonColor,\n    generalBackground,\n    messageBackground,\n    textColor,\n  } = isWidgetChat\n    ? {\n        borderColor: '#334155',\n        buttonColor: options?.colors?.buttonColor || '#0F172A',\n        generalBackground: '#0A0A0C',\n        messageBackground: '#000000',\n        textColor: '#FFFFFF',\n      }\n    : {\n        ...defaultColors,\n        ...options?.colors,\n      };\n\n  // Get custom components or use defaults\n  const LoadingIndicator =\n    options?.customComponents?.loadingIndicator || DefaultLoadingIndicator;\n\n  // Chat state management\n  const {\n    messages,\n    input,\n    handleInputChange,\n    isLoading: isInProgress,\n    handleSubmit,\n    reload,\n    addToolResult,\n    append,\n    error,\n    status,\n  } = useChat({\n    maxSteps: 7,\n    id: chatId,\n    api: apiUrl,\n    experimental_throttle: 100,\n    onToolCall: async ({ toolCall }): Promise<BitteToolResult | undefined> => {\n      const localAgent = options?.localAgent;\n      if (!localAgent) return undefined;\n\n      try {\n        return await executeLocalToolCall({\n          localAgent,\n          toolCall,\n          metadata: {\n            accountId,\n            evmAddress,\n            chainId,\n            suiAddress,\n          },\n        });\n      } catch (error) {\n        const errorMessage =\n          error instanceof Error ? error.message : 'Unknown error';\n        console.error('Error executing tool call:', errorMessage);\n        return { error: errorMessage };\n      }\n    },\n    onError: (e) => {\n      console.error(e);\n    },\n    sendExtraMessageFields: true,\n    initialMessages: (initialMessages || []) as Message[],\n    headers: {\n      Authorization: `Bearer ${apiKey}`,\n    },\n    body: {\n      id: chatId,\n      config: {\n        mode: AssistantsMode.DEBUG,\n        agentId,\n        mcpServerUrl: options?.mcpServerUrl,\n      },\n      nearWalletId: nearWalletId || '',\n      accountId: accountId || '',\n      evmAddress: evmAddress as Hex,\n      suiAddress: suiAddress || '',\n      chainId,\n      localAgent: options?.localAgent,\n    } satisfies ChatRequestBody,\n  });\n\n  // Scroll management\n  const {\n    containerRef: messagesRef,\n    endRef: messagesEndRef,\n    isAtBottom,\n    scrollToBottom,\n    onViewportEnter,\n    onViewportLeave,\n    hasSentMessage,\n  } = useMessages({\n    chatId,\n    status:\n      status === 'error'\n        ? 'ready'\n        : status || (isInProgress ? 'streaming' : 'ready'),\n    isAutoPrompt: !!options?.prompt,\n  });\n\n  const { scrollToBottom: triggerScrollOnSubmit } = useScrollToBottom();\n\n  // Auto-prompt state management\n  const [isPromptSent, setIsPromptSent] = useState<boolean>(false);\n  const [isAutoPromptMode, setIsAutoPromptMode] = useState<boolean>(false);\n\n  // Reset prompt state when chat changes\n  useEffect(() => {\n    setIsPromptSent(false);\n    setIsAutoPromptMode(false);\n  }, [chatId]);\n\n  const scrollToBottomHandler = useCallback(() => {\n    scrollToBottom();\n  }, [scrollToBottom]);\n\n  // Auto-prompt logic\n  useEffect(() => {\n    if (\n      options?.prompt &&\n      messages &&\n      messages.length === 0 &&\n      !isInProgress &&\n      !isWidgetChat &&\n      !isPromptSent\n    ) {\n      setIsPromptSent(true);\n      setIsAutoPromptMode(true);\n      append({\n        id: generateId(),\n        role: 'user',\n        content: options.prompt,\n      });\n    }\n  }, [\n    options?.prompt,\n    messages?.length,\n    isInProgress,\n    isWidgetChat,\n    isPromptSent,\n    append,\n  ]);\n\n  // Scroll behavior for submissions\n  useEffect(() => {\n    if (status === 'submitted' && !isAutoPromptMode) {\n      triggerScrollOnSubmit();\n    }\n    if (status === 'streaming' && isAutoPromptMode) {\n      setIsAutoPromptMode(false);\n    }\n  }, [status, triggerScrollOnSubmit, isAutoPromptMode]);\n\n  // Memoize stable functions\n  const stableAddToolResult = useCallback(addToolResult, [addToolResult]);\n  const stableAppend = useCallback(append, [append]);\n\n  // Message throttling for auto-prompt\n  const isAutoPromptInitialPhase =\n    options?.prompt &&\n    messages &&\n    messages.length <= 2 &&\n    (status === 'streaming' || status === 'submitted');\n\n  const [throttledMessages, setThrottledMessages] = useState(messages);\n\n  useEffect(() => {\n    if (options?.prompt && status === 'streaming' && isAutoPromptInitialPhase) {\n      const timer = setTimeout(() => {\n        setThrottledMessages(messages);\n      }, 150);\n      return () => clearTimeout(timer);\n    } else {\n      setThrottledMessages(messages);\n    }\n  }, [messages, options?.prompt, status, isAutoPromptInitialPhase]);\n\n  const effectiveMessages =\n    options?.prompt && status === 'streaming' && isAutoPromptInitialPhase\n      ? throttledMessages\n      : messages;\n\n  // Scroll padding throttling\n  const [shouldApplyScrollPadding, setShouldApplyScrollPadding] =\n    useState<boolean>(false);\n\n  useEffect(() => {\n    if (options?.prompt && status === 'streaming' && isAutoPromptInitialPhase) {\n      const timer = setTimeout(() => {\n        setShouldApplyScrollPadding(hasSentMessage);\n      }, 300);\n      return () => clearTimeout(timer);\n    } else {\n      setShouldApplyScrollPadding(hasSentMessage);\n    }\n  }, [hasSentMessage, options?.prompt, status, isAutoPromptInitialPhase]);\n\n  // Memoized message props\n  const memoizedMessages = useMemo(() => {\n    if (!effectiveMessages || effectiveMessages.length === 0) return [];\n\n    return effectiveMessages.map((message, index) => ({\n      meta: {\n        chatId,\n        accountId: accountId || shortenAddress(evmAddress) || '',\n        creator: accountId || undefined,\n        agentName: options?.agentName,\n        agentImage: options?.agentImage,\n      },\n      message: message,\n      isLoading:\n        status === 'streaming' && effectiveMessages.length - 1 === index,\n      theme: {\n        messageBackgroundColor: messageBackground,\n        borderColor,\n        textColor,\n        showBorder: isWidgetChat,\n        requiresScrollPadding: !options?.prompt\n          ? hasSentMessage && index === effectiveMessages.length - 1\n          : shouldApplyScrollPadding && index === effectiveMessages.length - 1,\n        isWidgetMode: isWidgetChat,\n        hasAutoPrompt: !!options?.prompt,\n      },\n      actions: {\n        addToolResult: stableAddToolResult,\n        append: stableAppend,\n        hideToolCall: options?.hideToolCall || false,\n      },\n      customComponents: {\n        messageContainer: options?.customComponents?.messageContainer,\n        toolComponents: customToolComponents,\n      },\n    }));\n  }, [\n    effectiveMessages,\n    chatId,\n    accountId,\n    evmAddress,\n    options?.agentName,\n    options?.agentImage,\n    options?.prompt,\n    status,\n    messageBackground,\n    borderColor,\n    textColor,\n    isWidgetChat,\n    hasSentMessage,\n    stableAddToolResult,\n    stableAppend,\n    options?.hideToolCall,\n    options?.customComponents?.messageContainer,\n    customToolComponents,\n    shouldApplyScrollPadding,\n  ]);\n\n  // Create scroll-to-bottom button\n  const scrollToBottomButton = (\n    <ScrollToBottomButton\n      isVisible={!isAtBottom}\n      onClick={scrollToBottomHandler}\n      generalBackground={generalBackground}\n      textColor={textColor}\n    />\n  );\n\n  // Create share modal for non-widget chat\n  const shareModal =\n    !isWidgetChat && effectiveMessages?.length > 0 ? (\n      <ChatActions messages={effectiveMessages} isWidgetChat={false} />\n    ) : null;\n\n  // Create messages area (for widget chat separation)\n  const messagesArea = (\n    <ScrollManager\n      messagesEndRef={messagesEndRef}\n      onViewportEnter={onViewportEnter}\n      onViewportLeave={onViewportLeave}\n    >\n      {/* Messages List with scroll container - reduced padding */}\n      <div\n        ref={messagesRef}\n        className=\"bitte-flex bitte-w-full bitte-flex-col bitte-gap-6\"\n        style={{ color: textColor }}\n      >\n        <MessagesList\n          messages={effectiveMessages}\n          isWidgetChat={isWidgetChat || false}\n          isInProgress={isInProgress}\n          status={status}\n          error={error}\n          textColor={textColor}\n          memoizedMessages={memoizedMessages}\n          evmAddress={evmAddress}\n          // @ts-ignore\n          options={options}\n          widget={widget}\n          onAppend={stableAppend}\n          onReload={reload}\n          LoadingIndicator={LoadingIndicator}\n        />\n      </div>\n    </ScrollManager>\n  );\n\n  // Create input area\n  const inputArea = (\n    <EnhancedChatInput\n      isWidgetChat={isWidgetChat || false}\n      input={input}\n      handleInputChange={handleInputChange}\n      handleSubmit={handleSubmit}\n      isInProgress={isInProgress || false}\n      generalBackground={generalBackground}\n      borderColor={borderColor}\n      textColor={textColor}\n      buttonColor={buttonColor}\n      options={options}\n    />\n  );\n\n  return (\n    <ChatContainer\n      isWidgetChat={isWidgetChat || false}\n      generalBackground={generalBackground}\n      borderColor={borderColor}\n      agentId={agentId}\n      customChatContainer={options?.customComponents?.chatContainer}\n      scrollToBottomButton={scrollToBottomButton}\n      shareModal={shareModal}\n      messagesArea={messagesArea}\n      inputArea={inputArea}\n    />\n  );\n};\n\nexport const ChatContent = (\n  props: BitteAiChatProps & { urlChatId: string },\n) => <UnifiedChatContent {...props} />;\n\nexport const WidgetChatContent = (\n  props: BitteAiChatProps & {\n    widget: WidgetChatProps;\n  },\n) => <UnifiedChatContent {...props} />;\n","import type { EnhancedAsset } from '@bitte-ai/types';\nimport { Area, AreaChart, ResponsiveContainer } from 'recharts';\nimport { formatNumber } from '../../../lib/format';\nimport { cn } from '../../../lib/utils';\nimport { Card } from '../../ui/card';\nimport { AssetIcon } from '../account/AssetIcon';\n\ninterface TokenRowProps {\n  rank: number;\n  token: EnhancedAsset;\n  visibleColumns: { id: string; label: string; show: boolean }[];\n}\n\nexport function TokenRow({ rank, token, visibleColumns }: TokenRowProps) {\n  const dayChange = token.priceChanges?.day ?? 0;\n  const isPositiveChange = dayChange >= 0;\n\n  const renderColumn = (columnId: string) => {\n    switch (columnId) {\n      case 'rank':\n        return <div className=\"bitte-text-sm lg:bitte-text-base\">{rank}</div>;\n      case 'token':\n        return (\n          <div className=\"bitte-flex bitte-items-center bitte-gap-2 lg:bitte-gap-3\">\n            {token.meta?.tokenIcon ? (\n              <img\n                src={token.meta.tokenIcon}\n                alt={token.symbol}\n                className=\"bitte-w-6 bitte-h-6 lg:bitte-w-8 lg:bitte-h-8\"\n              />\n            ) : (\n              <AssetIcon\n                symbol={token.symbol}\n                className=\"bitte-w-6 bitte-h-6 lg:bitte-w-8 lg:bitte-h-8\"\n              />\n            )}\n            <div className=\"bitte-flex bitte-flex-col bitte-justify-center\">\n              <p className=\"bitte-font-medium bitte-text-sm lg:bitte-text-base\">\n                {token.symbol}\n              </p>\n              <div className=\"bitte-flex bitte-items-center bitte-gap-1\">\n                {token.icon && (\n                  <img\n                    src={token.icon}\n                    alt=\"chain\"\n                    className=\"bitte-w-2 bitte-h-2 lg:bitte-w-3 lg:bitte-h-3\"\n                  />\n                )}\n                <p className=\"bitte-text-xs lg:bitte-text-sm bitte-text-muted-foreground\">\n                  {token.chains.join(', ')}\n                </p>\n              </div>\n            </div>\n          </div>\n        );\n      case 'price': {\n        if (!token.priceData?.day || token.priceData.day.length === 0)\n          return '-';\n        const price = token.priceData.day[0][1];\n        return (\n          <div>\n            <p className=\"bitte-font-medium bitte-text-sm lg:bitte-text-[14px] \">\n              ${price}\n            </p>\n          </div>\n        );\n      }\n      case 'balance': {\n        if (!token.balances?.balance) return '-';\n        return (\n          <div>\n            <p className=\"bitte-font-small bitte-text-sm lg:bitte-text-[14px] \">\n              {formatNumber(token.balances.balance)}{' '}\n              <span className=\"bitte-text-muted-foreground\">\n                {token.symbol}\n              </span>\n            </p>\n          </div>\n        );\n      }\n      case 'change':\n        if (!token.priceChanges || dayChange === 0) return '-';\n        return (\n          <div>\n            <p\n              className={cn(\n                'bitte-font-medium bitte-text-sm lg:bitte-text-[14px]',\n                isPositiveChange\n                  ? 'bitte-text-mb-green-text'\n                  : 'bitte-text-mb-red-text',\n              )}\n            >\n              {isPositiveChange ? '+' : ''}\n              {dayChange.toFixed(2)}%\n            </p>\n          </div>\n        );\n      case 'chart': {\n        if (!token.priceData?.month) return '-';\n\n        const monthData = token.priceData.month;\n        const chartData = monthData.map(([timestamp, price]) => ({\n          timestamp,\n          price,\n          min: Math.min(...monthData.map(([, p]) => p)) * 0.95,\n        }));\n\n        return (\n          <div className=\"bitte-w-full bitte-h-6 lg:bitte-h-8\">\n            <ResponsiveContainer width=\"100%\" height=\"100%\">\n              <AreaChart\n                data={chartData}\n                margin={{ top: 0, right: 0, bottom: 0, left: 0 }}\n              >\n                <defs>\n                  <linearGradient\n                    id={`gradient-${token.symbol}`}\n                    x1=\"0\"\n                    y1=\"0\"\n                    x2=\"0\"\n                    y2=\"1\"\n                  >\n                    <stop\n                      offset=\"5%\"\n                      stopColor={\n                        isPositiveChange\n                          ? 'rgb(74, 222, 128)'\n                          : 'rgb(248, 113, 113)'\n                      }\n                      stopOpacity={0.2}\n                    />\n                    <stop\n                      offset=\"95%\"\n                      stopColor={\n                        isPositiveChange\n                          ? 'rgb(74, 222, 128)'\n                          : 'rgb(248, 113, 113)'\n                      }\n                      stopOpacity={0}\n                    />\n                  </linearGradient>\n                </defs>\n                <Area\n                  type=\"monotone\"\n                  dataKey=\"price\"\n                  stroke={\n                    isPositiveChange\n                      ? 'rgb(74, 222, 128)'\n                      : 'rgb(248, 113, 113)'\n                  }\n                  fill={`url(#gradient-${token.symbol})`}\n                  strokeWidth={1.5}\n                  fillOpacity={1}\n                  isAnimationActive={false}\n                  dot={false}\n                  baseValue={0}\n                />\n              </AreaChart>\n            </ResponsiveContainer>\n          </div>\n        );\n      }\n      case 'value':\n        if (!token.usdValue) return '-';\n        return (\n          <div>\n            <p className=\"bitte-font-medium bitte-text-sm lg:bitte-text-[14px]\">\n              ${formatNumber(token.usdValue, 'value')}\n            </p>\n          </div>\n        );\n      case 'volume24h':\n        if (!token.volume24h) return '-';\n        return (\n          <div>\n            <p className=\"bitte-font-medium bitte-text-sm lg:bitte-text-[14px]\">\n              ${formatNumber(token.volume24h, 'value')}\n            </p>\n          </div>\n        );\n      case 'marketcap':\n        if (!token.marketcap) return '-';\n        return (\n          <div>\n            <p className=\"bitte-font-medium bitte-text-sm lg:bitte-text-base\">\n              ${formatNumber(token.marketcap)}\n            </p>\n          </div>\n        );\n      default:\n        return null;\n    }\n  };\n\n  return (\n    <Card className=\"bitte-p-2 lg:bitte-p-4 hover:bitte-bg-accent/50 !bitte-bg-mb-black-50 bitte-transition-colors bitte-min-w-[1000px] bitte-max-w-[1000px] bitte-mx-auto\">\n      <div\n        className=\"bitte-grid bitte-items-center bitte-w-full\"\n        style={{\n          gridTemplateColumns: `30px ${visibleColumns\n            .slice(1)\n            .map((col) => {\n              if (col.id === 'token') return '1.5fr';\n              if (col.id === 'balance') return '1.5fr';\n              return '1fr';\n            })\n            .join(' ')}`,\n        }}\n      >\n        {visibleColumns.map((column) => (\n          <div key={column.id}>{renderColumn(column.id)}</div>\n        ))}\n      </div>\n    </Card>\n  );\n}\n","export const formatNumber = (\n  num: number,\n  format: 'marketcap' | 'value' = 'marketcap',\n): string => {\n  if (format === 'value') {\n    return Math.floor(num).toLocaleString();\n  }\n\n  if (num >= 1e12) {\n    return (num / 1e12).toFixed(1) + 'T';\n  }\n  if (num >= 1e9) {\n    return (num / 1e9).toFixed(1) + 'B';\n  }\n  if (num >= 1e6) {\n    return (num / 1e6).toFixed(1) + 'M';\n  }\n  if (num >= 1e3) {\n    return (num / 1e3).toFixed(1) + 'K';\n  }\n  return num.toLocaleString();\n};\n","import { cn } from '../../../lib/utils';\n\nexport const AssetIcon = ({\n  symbol,\n  className,\n}: { symbol: string; className?: string }) => {\n  const symbolFirstThreeLetters = symbol.slice(0, 3);\n  return (\n    <div\n      className={cn(\n        'bitte-rounded-full bitte-bg-[#627eea] bitte-flex bitte-items-center bitte-justify-center',\n        className,\n      )}\n    >\n      <span className=\"bitte-text-white bitte-font-semibold bitte-text-[10px]\">\n        {symbolFirstThreeLetters}\n      </span>\n    </div>\n  );\n};\n","import type { EnhancedAsset, PortfolioResponse } from '@bitte-ai/types';\nimport { TokenRow } from './TokenRow';\n\nexport function TokenList({ data }: { data: PortfolioResponse }) {\n  // Check if data is PortfolioData\n  if (!('significantAssets' in data)) {\n    return null;\n  }\n\n  // Sort significantAssets by price in descending order\n  const sortedAssets = [...data.significantAssets].sort(\n    (a: EnhancedAsset, b: EnhancedAsset) => {\n      const priceA = a.priceData?.day?.[0]?.[1] ?? 0;\n      const priceB = b.priceData?.day?.[0]?.[1] ?? 0;\n      return priceB - priceA;\n    },\n  );\n\n  const columns = [\n    { id: 'rank', label: '#', show: true },\n    { id: 'token', label: 'Token', show: true },\n    {\n      id: 'price',\n      label: 'Price',\n      show: data.significantAssets.some(\n        (asset: EnhancedAsset) =>\n          asset.priceData?.day && asset.priceData.day.length > 0,\n      ),\n    },\n    {\n      id: 'balance',\n      label: 'Balance',\n      show: data.significantAssets.some(\n        (asset: EnhancedAsset) => asset.balances?.balance !== undefined,\n      ),\n    },\n    {\n      id: 'value',\n      label: 'Value',\n      show: data.significantAssets.some(\n        (asset: EnhancedAsset) => asset.usdValue !== undefined,\n      ),\n    },\n    {\n      id: 'volume24h',\n      label: '24h Volume',\n      show: data.significantAssets.some(\n        (asset: EnhancedAsset) => asset.volume24h !== undefined,\n      ),\n    },\n    {\n      id: 'marketcap',\n      label: 'Market Cap',\n      show: data.significantAssets.some(\n        (asset: EnhancedAsset) => asset.marketcap !== undefined,\n      ),\n    },\n    {\n      id: 'change',\n      label: 'Change',\n      show: data.significantAssets.some(\n        (asset: EnhancedAsset) => asset.priceChanges !== undefined,\n      ),\n    },\n    {\n      id: 'chart',\n      label: 'Chart',\n      show: data.significantAssets.some(\n        (asset: EnhancedAsset) => asset.priceData !== undefined,\n      ),\n    },\n  ];\n\n  const visibleColumns = columns.filter((col) => col.show);\n\n  return (\n    <div className=\"bitte-overflow-x-auto\">\n      <div className=\"bitte-min-w-[1000px] bitte-max-w-[1000px] bitte-mx-auto bitte-space-y-4\">\n        {/* Header row */}\n        <div className=\"bitte-p-2 bitte-custom-scrollbar lg:bitte-p-4\">\n          <div\n            className=\"bitte-grid bitte-items-center bitte-uppercase bitte-font-medium bitte-text-sm bitte-text-muted-foreground\"\n            style={{\n              gridTemplateColumns: `30px ${visibleColumns\n                .slice(1)\n                .map((col) => {\n                  if (col.id === 'token') return '1.5fr';\n                  if (col.id === 'balance') return '1.5fr';\n                  return '1fr';\n                })\n                .join(' ')}`,\n            }}\n          >\n            {visibleColumns.map((col) => (\n              <div key={col.id} className=\"bitte-text-[12px]\">\n                {col.label}\n              </div>\n            ))}\n          </div>\n        </div>\n\n        {/* Token rows */}\n        <div className=\"bitte-space-y-2\">\n          {sortedAssets.map((token, index) => (\n            <TokenRow\n              key={token.meta?.contractAddress}\n              rank={index + 1}\n              token={token}\n              visibleColumns={visibleColumns}\n            />\n          ))}\n        </div>\n      </div>\n    </div>\n  );\n}\n","import type {\n  BitteAiChatProps,\n  CustomToolComponentProps,\n  PortfolioResponse,\n} from '@bitte-ai/types';\nimport { Message, generateId } from 'ai';\nimport { useEffect, useMemo, useState } from 'react';\nimport { convertToUIMessages } from '../lib/chat';\nimport { fetchChatHistory } from '../lib/fetchChatHistory';\n\nimport { useWalletState } from '../state/wallet.state';\nimport { UnifiedChatContent } from './chat/ChatContent';\nimport { TokenList } from './tools/portfolio/TokenList';\n\nexport const BitteAiChat = ({\n  wallet,\n  apiUrl,\n  apiKey,\n  historyApiUrl,\n  agentId,\n  options,\n  customToolComponents,\n  widget,\n  isWidgetChat,\n  messages,\n}: BitteAiChatProps) => {\n  const [loadedData, setLoadedData] = useState({\n    agentIdLoaded: '',\n    uiMessages: [] as Message[],\n  });\n\n  const [isNewChatId, setIsNewChatId] = useState<boolean>(false);\n\n  const getChatIdFromQueryParam = () => {\n    if (typeof window === 'undefined') return null;\n    const urlParams = new URLSearchParams(window.location.search);\n    return urlParams.get('chatId');\n  };\n\n  const ensureChatId = () => {\n    let finalChatId = '';\n\n    const existingChatId = getChatIdFromQueryParam();\n\n    if (!existingChatId && typeof window !== 'undefined') {\n      const newChatId = generateId();\n\n      // Update URL with the new chat ID\n      const url = new URL(window.location.href);\n      url.searchParams.set('chatId', newChatId);\n      window.history.pushState({}, '', url.toString());\n\n      setIsNewChatId(true);\n      finalChatId = newChatId;\n    } else if (existingChatId) {\n      finalChatId = existingChatId;\n    }\n\n    return finalChatId;\n  };\n\n  const chatId = useMemo(\n    () => (isWidgetChat ? generateId() : options?.chatId || ensureChatId()),\n    [isWidgetChat, options?.chatId],\n  );\n\n  useEffect(() => {\n    const fetchData = async () => {\n      if (chatId && historyApiUrl && !isNewChatId && !isWidgetChat) {\n        const chat = await fetchChatHistory(chatId, historyApiUrl);\n        if (chat) {\n          const uiMessages = convertToUIMessages(chat.messages);\n          setLoadedData({\n            agentIdLoaded: chat.agentId,\n            uiMessages: uiMessages,\n          });\n        }\n      }\n    };\n\n    fetchData();\n  }, [chatId, historyApiUrl, isNewChatId]);\n\n  const { agentIdLoaded, uiMessages } = loadedData;\n\n  if (!customToolComponents) {\n    customToolComponents = [\n      {\n        name: 'get-portfolio',\n        component: (props: CustomToolComponentProps) => (\n          <TokenList data={props.data as PortfolioResponse} />\n        ),\n      },\n    ];\n  }\n\n  const updateWallet = useWalletState();\n\n  useEffect(() => {\n    if (wallet) {\n      updateWallet(wallet);\n    }\n  }, [wallet, updateWallet]);\n\n  const chatProps = {\n    wallet,\n    apiUrl,\n    apiKey,\n    agentId: agentId ?? agentIdLoaded,\n    options,\n    historyApiUrl,\n    customToolComponents,\n    urlChatId: chatId,\n    messages: uiMessages || messages,\n    widget,\n    isWidgetChat,\n  };\n\n  return <UnifiedChatContent {...chatProps} />;\n};\n","export function AssetItem({\n  asset,\n}: {\n  asset: {\n    id: number;\n    symbol: string;\n    amount: string;\n    value: string;\n    change: string;\n    isPositive: boolean;\n    network: string;\n    chainIcon: string;\n    tokenIcon: string;\n  };\n}) {\n  const renderAssetIcon = () => {\n    return (\n      <div className=\"bitte-w-9 bitte-h-9 bitte-rounded-full bitte-bg-[#627eea] bitte-flex bitte-items-center bitte-justify-center\">\n        <span className=\"bitte-text-white bitte-font-semibold\">\n          <img\n            src={asset.tokenIcon}\n            alt={asset.symbol}\n            className=\"bitte-w-full bitte-h-full\"\n          />\n        </span>\n      </div>\n    );\n  };\n\n  const renderNetworkIcon = () => {\n    return (\n      <div className=\"bitte-w-4 bitte-h-4 bitte-rounded bitte-bg-[#627eea] bitte-flex bitte-items-center bitte-justify-center bitte-mr-1\">\n        <span className=\"bitte-text-[6px] bitte-text-white\">\n          <img\n            src={asset.chainIcon}\n            alt={asset.network}\n            className=\"bitte-w-full bitte-h-full\"\n          />\n        </span>\n      </div>\n    );\n  };\n\n  return (\n    <div className=\"bitte-grid bitte-grid-cols-[repeat(3,minmax(124px,1fr))] md:bitte-grid-cols-3 bitte-items-center bitte-py-3 bitte-border-b bitte-border-[#4F4848] last:bitte-border-b-0\">\n      <div className=\"bitte-flex bitte-items-center bitte-gap-3\">\n        {renderAssetIcon()}\n        <div>\n          <div className=\"bitte-text-sm bitte-font-bold bitte-mb-2\">\n            {asset.symbol}\n          </div>\n          <div className=\"bitte-text-xs bitte-text-[#858585] bitte-flex bitte-items-center bitte-font-semibold\">\n            {renderNetworkIcon()}\n            <div>{asset.network}</div>\n          </div>\n        </div>\n      </div>\n      <div className=\"bitte-text-right bitte-flex bitte-items-center bitte-justify-end bitte-gap-1\">\n        <div className=\"bitte-text-sm bitte-text-mb-white-100\">\n          {asset.amount}\n        </div>\n        <div className=\"bitte-text-xs bitte-text-[#858585]\">{asset.symbol}</div>\n      </div>\n      <div className=\"bitte-text-right\">\n        <div className=\"bitte-text-sm bitte-mb-2\">{asset.value}</div>\n        <div\n          className={`bitte-text-xs ${asset.isPositive ? 'bitte-text-[#4ADE80]' : 'bitte-text-[#F87171]'}`}\n        >\n          {asset.change}\n        </div>\n      </div>\n    </div>\n  );\n}\n","export function DashboardHeader() {\n  const getGreeting = () => {\n    const hour = new Date().getHours();\n\n    if (hour >= 5 && hour < 12) {\n      return 'Good morning';\n    } else if (hour >= 12 && hour < 18) {\n      return 'Good afternoon';\n    } else {\n      return 'Good evening';\n    }\n  };\n\n  return (\n    <div className=\"bitte-flex bitte-justify-between bitte-items-start bitte-w-full\">\n      <div>\n        <h1 className=\"bitte-text-2xl bitte-text-[#FAFAFA]\">{getGreeting()}</h1>\n        <p className=\"bitte-text-[#969696]\">\n          What do you want to achieve today?\n        </p>\n      </div>\n      {/*       <div className=\"bitte-flex bitte-items-center bitte-gap-3\">\n        <div className=\"bitte-flex bitte-items-center bitte-gap-2 bitte-bg-[#232327] bitte-rounded-full bitte-px-3 bitte-py-1\">\n          <div className=\"bitte-w-6 bitte-h-6 bitte-rounded-full bitte-bg-emerald-500 bitte-flex bitte-items-center bitte-justify-center\">\n            <span className=\"bitte-text-xs bitte-font-bold\">R</span>\n          </div>\n          <span className=\"bitte-text-sm\">RHEA</span>\n        </div>\n        <div className=\"bitte-w-8 bitte-h-8 bitte-rounded-full bitte-bg-[#232327] bitte-flex bitte-items-center bitte-justify-center\">\n          <User className=\"bitte-w-4 bitte-h-4\" />\n        </div>\n      </div> */}\n    </div>\n  );\n}\n","import { PortfolioResponse } from '@bitte-ai/types';\nimport { Copy } from 'lucide-react';\nimport { useState } from 'react';\nimport { AssetItem } from './AssetItem';\nimport { DashboardHeader } from './DashboardHeader';\n\nconst calculatePortfolioChange = (data: PortfolioResponse): number => {\n  let totalWeightedChange = 0;\n  const totalValue = data.portfolioValue;\n\n  data.significantAssets.forEach((asset) => {\n    if (asset.priceChanges?.day !== undefined) {\n      // Calculate weight of this asset in the portfolio\n      const weight = asset.usdValue / totalValue;\n      // Add weighted contribution to total change\n      totalWeightedChange += asset.priceChanges.day * weight;\n    }\n  });\n\n  return totalWeightedChange;\n};\n\nconst useAccountOverview = (data: PortfolioResponse) => {\n  const [showAllAssets, setShowAllAssets] = useState<boolean>(false);\n\n  const portfolioChange = calculatePortfolioChange(data);\n  const isPriceChangePositive = portfolioChange > 0;\n\n  const visibleAssets = showAllAssets\n    ? data.significantAssets\n    : data.significantAssets.slice(0, 3);\n\n  const remainingAssetsCount = data.significantAssets.length - 3;\n\n  return {\n    showAllAssets,\n    setShowAllAssets,\n    portfolioChange,\n    isPriceChangePositive,\n    visibleAssets,\n    remainingAssetsCount,\n  };\n};\n\ninterface AccountOverviewProps {\n  data: PortfolioResponse;\n  walletAddress: string;\n}\n\nexport function AccountOverview({ data, walletAddress }: AccountOverviewProps) {\n  const {\n    showAllAssets,\n    setShowAllAssets,\n    portfolioChange,\n    isPriceChangePositive,\n    visibleAssets,\n    remainingAssetsCount,\n  } = useAccountOverview(data);\n\n  const handleCopy = async () => {\n    try {\n      await navigator.clipboard.writeText(walletAddress);\n    } catch (err) {\n      console.error('Failed to copy text: ', err);\n    }\n  };\n\n  return (\n    <div className=\"bitte-flex bitte-flex-col bitte-items-center bitte-justify-center bitte-w-full bitte-bg-[#18181b] bitte-rounded-lg bitte-p-6 bitte-space-y-6 bitte-text-[#FAFAFA]\">\n      <DashboardHeader />\n\n      <div className=\"bitte-grid bitte-grid-cols-1 lg:bitte-grid-cols-6 bitte-gap-4 bitte-w-full\">\n        <div className=\"lg:bitte-col-span-2 bitte-flex bitte-flex-col\">\n          <div className=\"bitte-text-[10px] bitte-text-[#969696] bitte-font-semibold bitte-uppercase bitte-mb-3\">\n            OVERVIEW\n          </div>\n\n          <div className=\"bitte-bg-[#292929] bitte-rounded-md bitte-flex-1 bitte-overflow-hidden bitte-flex bitte-flex-col bitte-justify-between\">\n            {walletAddress ? (\n              <div className=\"bitte-flex bitte-items-center bitte-gap-2 bitte-px-4 bitte-py-6 bitte-border-b bitte-border-b-[#4F4848]\">\n                <span className=\"bitte-text-sm bitte-truncate\">\n                  {walletAddress}\n                </span>\n                <button\n                  type=\"button\"\n                  className=\"bitte-text-[#60A5FA]\"\n                  onClick={handleCopy}\n                  title=\"Copy address\"\n                >\n                  <Copy className=\"bitte-w-4 bitte-h-4\" />\n                </button>\n              </div>\n            ) : null}\n\n            <div className=\"bitte-p-4 bitte-pt-6\">\n              <div className=\"bitte-text-[8.5px] bitte-text-[#969696] bitte-font-semibold bitte-uppercase bitte-mb-1\">\n                BALANCE\n              </div>\n              <div className=\"bitte-text-2xl bitte-font-bold bitte-mb-3\">\n                $\n                {data.portfolioValue.toLocaleString(undefined, {\n                  maximumFractionDigits: 2,\n                })}\n              </div>\n              <div\n                className={`bitte-text-sm bitte-font-semibold bitte-mb-6 ${isPriceChangePositive ? 'bitte-text-[#4ADE80]' : 'bitte-text-[#F87171]'}`}\n              >\n                {portfolioChange > 0 ? '+' : ''}\n                {portfolioChange.toFixed(2)}%\n              </div>\n            </div>\n\n            <div className=\"bitte-p-4 bitte-pt-6\">\n              <div className=\"bitte-grid bitte-grid-cols-2 bitte-gap-4\">\n                <div className=\"bitte-bg-[#363638] bitte-rounded bitte-px-4 bitte-py-2\">\n                  <div className=\"bitte-text-[8.5px] bitte-text-[#969696] bitte-font-semibold bitte-uppercase bitte-mb-1\">\n                    TOKENS\n                  </div>\n                  <div className=\"bitte-text-sm\">\n                    {data.significantAssets.length}\n                  </div>\n                </div>\n                <div className=\"bitte-bg-[#363638] bitte-rounded bitte-px-4 bitte-py-2\">\n                  <div className=\"bitte-text-[8.5px] bitte-text-[#969696] bitte-font-semibold bitte-uppercase bitte-mb-1\">\n                    NETWORKS\n                  </div>\n                  <div className=\"bitte-text-sm\">\n                    {data.chainsWithGas.length}\n                  </div>\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n        <div className=\"bitte-flex bitte-flex-col lg:bitte-col-span-4\">\n          <div className=\"bitte-text-xs bitte-text-gray-500 bitte-uppercase bitte-mb-3 bitte-invisible\">\n            SPACER\n          </div>\n\n          <div className=\"bitte-bg-[#292929] bitte-rounded-md bitte-flex-1 bitte-p-4 bitte-flex bitte-flex-col\">\n            <div className=\"bitte-grid bitte-grid-cols-3 bitte-text-xs bitte-text-gray-500 bitte-uppercase bitte-mb-3\">\n              <div className=\"bitte-text-[8.5px] bitte-text-[#969696] bitte-font-semibold\">\n                ASSET\n              </div>\n              <div className=\"bitte-text-[8.5px] bitte-text-[#969696] bitte-font-semibold bitte-text-right\">\n                BALANCE\n              </div>\n              <div className=\"bitte-text-[8.5px] bitte-text-[#969696] bitte-font-semibold bitte-text-right\">\n                VALUE\n              </div>\n            </div>\n\n            <div className=\"bitte-overflow-y-auto bitte-max-h-[400px] bitte-flex-1\">\n              {visibleAssets.map((asset, index) => (\n                <AssetItem\n                  key={asset.symbol}\n                  asset={{\n                    id: index + 1,\n                    symbol: asset.symbol,\n                    amount: asset.usdValue.toLocaleString(undefined, {\n                      maximumFractionDigits: 2,\n                    }),\n                    value: `$${asset.usdValue.toLocaleString(undefined, { maximumFractionDigits: 2 })}`,\n                    change: `${asset.priceChanges?.day ? (asset.priceChanges.day > 0 ? '+' : '') + asset.priceChanges.day.toFixed(2) : '0'}%`,\n                    isPositive: asset.priceChanges?.day\n                      ? asset.priceChanges.day > 0\n                      : false,\n                    network: asset.chains[0] || 'Unknown',\n                    chainIcon: asset.icon || '',\n                    tokenIcon: asset.meta.tokenIcon || '',\n                  }}\n                />\n              ))}\n            </div>\n\n            {remainingAssetsCount > 0 && (\n              <div className=\"bitte-text-center bitte-mt-4\">\n                <button\n                  type=\"button\"\n                  className=\"bitte-text-[8.5px] bitte-text-[#60A5FA] bitte-font-bold bitte-uppercase\"\n                  onClick={() => setShowAllAssets(!showAllAssets)}\n                >\n                  {showAllAssets ? 'SHOW LESS' : `${remainingAssetsCount} MORE`}\n                </button>\n              </div>\n            )}\n          </div>\n        </div>\n      </div>\n    </div>\n  );\n}\n","import React from 'react';\n\nexport const BitteLogo: React.FC<React.SVGProps<SVGSVGElement>> = ({\n  className,\n  ...props\n}) => {\n  return (\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      width=\"40\"\n      height=\"40\"\n      viewBox=\"0 0 95 95\"\n      fill=\"none\"\n      aria-labelledby=\"bitteLogoTitle\"\n      role=\"img\"\n      className={className}\n      {...props}\n    >\n      <title id=\"bitteLogoTitle\">Bitte Logo</title>\n      <path\n        fill-rule=\"evenodd\"\n        clip-rule=\"evenodd\"\n        d=\"M1.77617 59.1826L62.7227 63.313C63.1185 63.4309 63.4788 63.6456 63.7708 63.9377C64.0629 64.2297 64.2775 64.5899 64.3954 64.9858L68.5259 78.8555C68.6787 79.3686 68.9932 79.8186 69.4224 80.1387C69.8516 80.4587 70.3727 80.6316 70.9082 80.6316C71.4436 80.6316 71.9647 80.4587 72.3939 80.1387C72.8231 79.8186 73.1376 79.3686 73.2904 78.8555L77.4209 64.9858C77.5388 64.5899 77.7534 64.2297 78.0455 63.9377C78.3376 63.6456 78.6978 63.4309 79.0936 63.313L92.9633 59.1826C93.4764 59.0297 93.9265 58.7153 94.2466 58.2861C94.5666 57.8568 94.7395 57.3357 94.7395 56.8003C94.7395 56.2649 94.5666 55.7438 94.2466 55.3146C93.9265 54.8853 93.4764 54.5709 92.9633 54.4181L79.0937 50.2876C78.6978 50.1697 78.3376 49.955 78.0455 49.663C77.7535 49.3709 77.5388 49.0107 77.4209 48.6148L73.2904 34.7452C73.1376 34.232 72.8232 33.7819 72.3939 33.4619C71.9647 33.1419 71.4436 32.969 70.9082 32.969C70.3728 32.969 69.8517 33.1419 69.4224 33.4619C68.9932 33.7819 68.6788 34.232 68.526 34.7452L64.3954 48.6148C64.2776 49.0107 64.0629 49.3709 63.7708 49.663C63.4788 49.955 63.1185 50.1697 62.7227 50.2876L1.77618 54.4181C1.26305 54.5709 0.812956 54.8853 0.49292 55.3146C0.172884 55.7438 2.24755e-06 56.2649 0 56.8003C-2.24751e-06 57.3357 0.172887 57.8568 0.49292 58.2861C0.812953 58.7153 1.26303 59.0297 1.77617 59.1826Z\"\n        fill=\"currentColor\"\n      />\n      <path\n        fill-rule=\"evenodd\"\n        clip-rule=\"evenodd\"\n        d=\"M32.1637 29.4868L40.3578 31.9271C40.5917 31.9967 40.8045 32.1236 40.977 32.2961C41.1496 32.4687 41.2764 32.6815 41.3461 32.9154L43.7863 41.1095C43.8766 41.4126 44.0624 41.6785 44.316 41.8676C44.5696 42.0567 44.8774 42.1588 45.1937 42.1588C45.5101 42.1588 45.8179 42.0567 46.0715 41.8676C46.3251 41.6785 46.5109 41.4126 46.6011 41.1095L49.0414 32.9154C49.1111 32.6815 49.2379 32.4687 49.4104 32.2961C49.583 32.1236 49.7958 31.9967 50.0297 31.9271L58.2238 29.4868C58.5269 29.3966 58.7928 29.2108 58.9819 28.9572C59.171 28.7036 59.2731 28.3958 59.2731 28.0794C59.2731 27.7631 59.171 27.4553 58.9819 27.2017C58.7928 26.9481 58.5269 26.7623 58.2238 26.672L50.0296 24.2317C49.7958 24.1621 49.5829 24.0352 49.4104 23.8627C49.2379 23.6902 49.111 23.4773 49.0414 23.2434L46.6011 15.0493C46.5108 14.7462 46.325 14.4803 46.0715 14.2912C45.8179 14.1021 45.51 14 45.1937 14C44.8774 14 44.5695 14.1021 44.3159 14.2912C44.0623 14.4803 43.8766 14.7462 43.7863 15.0493L41.346 23.2434C41.2764 23.4773 41.1495 23.6902 40.977 23.8627C40.8044 24.0352 40.5916 24.1621 40.3578 24.2317L32.1637 26.672C31.8605 26.7622 31.5946 26.948 31.4055 27.2016C31.2164 27.4552 31.1143 27.7631 31.1143 28.0794C31.1143 28.3958 31.2164 28.7037 31.4055 28.9572C31.5946 29.2108 31.8605 29.3966 32.1637 29.4868Z\"\n        fill=\"currentColor\"\n      />\n    </svg>\n  );\n};\n","import { BitteAiChatProps } from '@bitte-ai/types';\nimport { X } from 'lucide-react';\nimport { useState } from 'react';\nimport { cn } from '../lib/utils';\nimport { BitteAiChat } from './BitteAiChat';\nimport { BitteLogo } from './icons/BitteLogo';\n\nexport const BitteWidgetChat = ({\n  wallet,\n  apiUrl,\n  apiKey,\n  historyApiUrl,\n  agentId,\n  options,\n  customToolComponents,\n  widget,\n  messages,\n}: BitteAiChatProps) => {\n  const [isOpen, setIsOpen] = useState(false);\n\n  return (\n    <div>\n      {!isOpen && (\n        <div\n          className={cn(\n            'cursor-pointer hover:bitte-bg-opacity-50 bitte-rounded-lg bitte-p-2 bitte-w-14 bitte-h-14 bitte-shadow-md bitte-fixed bitte-bottom-8 bitte-right-4',\n            widget?.triggerButtonType === 'dark'\n              ? 'bitte-bg-white'\n              : 'bitte-bg-black',\n          )}\n          onClick={() => setIsOpen(true)}\n        >\n          <BitteLogo\n            className={cn(\n              widget?.triggerButtonType === 'dark'\n                ? 'bitte-text-black'\n                : 'bitte-text-white',\n            )}\n          />\n        </div>\n      )}\n\n      <div\n        className={cn(\n          'bitte-absolute bitte-z-[99999] bitte-inset-0 md:bitte-top-auto md:bitte-left-auto md:bitte-bottom-8 md:bitte-right-4 bitte-w-full md:bitte-w-[380px] lg:bitte-w-[520px] bitte-rounded-lg bitte-shadow-lg bitte-overflow-hidden',\n          !isOpen && 'bitte-hidden',\n        )}\n      >\n        <div className=\"bitte-bg-mb-gray-250 bitte-rounded-lg bitte-overflow-hidden bitte-w-full bitte-h-full\">\n          <div className=\"bitte-bg-mb-gray-150 bitte-flex bitte-items-center bitte-justify-between bitte-py-3 bitte-px-4 bitte-border-b bitte-border-gray-800\">\n            <div className=\"bitte-flex bitte-items-center bitte-gap-2\">\n              {options?.agentImage ? (\n                <img\n                  src={options?.agentImage}\n                  alt=\"Widget Chat Agent\"\n                  width={20}\n                  height={20}\n                  className=\"bitte-text-white\"\n                />\n              ) : (\n                <BitteLogo className=\"bitte-text-white\" />\n              )}\n\n              <span className=\"bitte-text-white bitte-font-medium\">\n                {options?.agentName || 'Bitte Agent'}\n              </span>\n            </div>\n\n            <X\n              className=\"bitte-h-4 bitte-w-4 bitte-text-white bitte-cursor-pointer\"\n              onClick={() => setIsOpen(false)}\n            />\n          </div>\n          <div className=\"bitte-h-[calc(100%-49px)] md:bitte-h-[80vh] bitte-w-full\">\n            <BitteAiChat\n              wallet={wallet}\n              apiUrl={apiUrl}\n              apiKey={apiKey}\n              historyApiUrl={historyApiUrl}\n              agentId={agentId}\n              options={{\n                ...options,\n                hideToolCall: true,\n              }}\n              customToolComponents={customToolComponents}\n              widget={widget}\n              isWidgetChat\n              messages={messages}\n            />\n          </div>\n        </div>\n      </div>\n    </div>\n  );\n};\n"]}