{{ presenterMode ? 'Presenter Mode' : 'View Mode' }}
📊 Stats
Bankroll: {{ new Intl.NumberFormat('en-US', { minimumFractionDigits: 8 }).format(bankroll) }} {{ currency }} {{ currencyConversionRate ? ' / ' + new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD' }).format(bankroll * currencyConversionRate) : null }}
Profit: {{ new Intl.NumberFormat('en-US', { minimumFractionDigits: 8, signDisplay: 'always' }).format(profit) }} {{ currency }} {{ currencyConversionRate ? ' / ' + new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD', signDisplay: 'always' }).format(profit * currencyConversionRate) : null }}
Legacy: {{ new Intl.NumberFormat('en-US', { minimumFractionDigits: 4, signDisplay: 'always' }).format(legacyProfit) }} {{ currency }}
Bets/h: {{ new Intl.NumberFormat('en-US').format(totalBetsPerHour) }}
Wager: {{ new Intl.NumberFormat('en-US', { minimumFractionDigits: 8 }).format(wager) }} {{ currency }} {{ currencyConversionRate ? ' / ' + new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD' }).format(wager * currencyConversionRate) : null }}
Clients: {{ clients.length }}
Time: {{ formattedRuntime(runtime / 1000) }}
Tickets: {{ new Intl.NumberFormat('en-US').format(totalTicketCount) }}
Max LS: {{ highestMaxLS }} ({{ highestMaxLSClient }})
Profit/Hour: {{ new Intl.NumberFormat('en-US', { minimumFractionDigits: 4, maximumFractionDigits: 4, signDisplay: 'always' }).format(profitPerHour) }} {{ currency }} {{ currencyConversionRate ? ' / ' + new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD', signDisplay: 'always' }).format(profitPerHour * currencyConversionRate) : null }}
Expected/Day: {{ new Intl.NumberFormat('en-US', { minimumFractionDigits: 2, maximumFractionDigits: 2, signDisplay: 'always' }).format(expectedProfitPerDay) }} {{ currency }} {{ currencyConversionRate ? ' / ' + new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD', signDisplay: 'always' }).format(expectedProfitPerDay * currencyConversionRate) : null }}
{{ presenterMode ? 'Presenter Mode' : 'View Mode' }}
⚠️ Missing Clients ({{ missingUsernames.length }}){{ missingUsernames.length === 1 ? 'client has' : 'clients have' }} lost connection
{{ username }}DISCONNECTED
Last Seen:{{ getLastSeenTime(username) }}
Last IP:{{ getLastSeenIP(username) }}
Last Profit:{{ new Intl.NumberFormat('en-US', { minimumFractionDigits: 4, signDisplay: 'always' }).format(getLastSeenProfit(username)) }} {{ lastSeenClients[username]?.currency?.toUpperCase() || 'TRX' }}
Last Balance:{{ new Intl.NumberFormat('en-US', { minimumFractionDigits: 4 }).format(getLastSeenBalance(username)) }} {{ lastSeenClients[username]?.currency?.toUpperCase() || 'TRX' }}
⚠ {{ staleConnectionCount }} bot{{ staleConnectionCount > 1 ? 's' : '' }} with last bet > {{ staleThresholdMinutes }} minutes ago  ({{ veryStaleConnectionCount }} critical > 30min) - Click on red rows for details
#Name VIPBalanceVaultStateBets/hBustsStageversionProfitWager WinsLossesBet sizeStreakMax LSTicketIP address RTLast betUptime
{{ desktopCurrentPage * desktopPageSize + index + 1 }}
{{ client.username }}
{{ getConnectionStatusText(client) }}
{{ (client.vipProgress || {flag: ''}).flag }}
{{ new Intl.NumberFormat('en-US', { minimumFractionDigits: 2, maximumFractionDigits: 2 }).format((client.vipProgress || {progress: 0}).progress) }}%
{{ client.funds ? new Intl.NumberFormat('en-US', { minimumFractionDigits: 8 }).format(client.funds.available) : 'N/A' }} {{ client.currency ? client.currency.toUpperCase() : 'N/A' }}{{ client.funds ? new Intl.NumberFormat('en-US', { minimumFractionDigits: 8 }).format(client.funds.vault) : 'N/A' }} {{ client.currency ? client.currency.toUpperCase() : 'N/A' }}{{ client.state }}{{ client.diceBotState ? new Intl.NumberFormat('en-US').format(client.diceBotState.betsPerHour) : 'N/A' }}{{ client.busts || 0 }}{{ client.diceBotState ? client.diceBotState.stage : 'N/A' }}{{ (client.diceBotState && client.diceBotState.version) || '-' }}{{ client.diceBotState ? new Intl.NumberFormat('en-US', { minimumFractionDigits: 8, signDisplay: 'always' }).format(client.diceBotState.profit) : 'N/A' }} {{ client.currency ? client.currency.toUpperCase() : '' }}{{ client.diceBotState ? new Intl.NumberFormat('en-US', { minimumFractionDigits: 8, maximumFractionDigits: 8 }).format(client.diceBotState.wager) : 'N/A' }} {{ client.currency ? client.currency.toUpperCase() : '' }}{{ (client.diceBotState && client.diceBotState.wins) || 0 }}{{ (client.diceBotState && client.diceBotState.losses) || 0 }} {{ client.diceBotState ? new Intl.NumberFormat('en-US', { minimumFractionDigits: 8 }).format(client.diceBotState.betSize) : 'N/A' }} {{ client.currency ? client.currency.toUpperCase() : '' }}{{ client.diceBotState ? client.diceBotState.currentStreak : 0 }}{{ (client.diceBotState && client.diceBotState.highestLosingStreak) || '-' }}{{ client.ticketCount || 0 }}{{ client.ipAddress || 'N/A' }}{{ client.latency ? new Intl.NumberFormat('en-US').format(client.latency) : 'N/A' }} ms{{ client.diceBotState && client.diceBotState.lastBet ? getTimeSinceLastBet(client) : '-' }}{{ formattedRuntime((client.runtime || 0) / 1000) }}
第 {{ desktopCurrentPage + 1 }} 頁,共 {{ totalDesktopPages }} 頁 (顯示 {{ desktopCurrentPage * desktopPageSize + 1 }}-{{ Math.min((desktopCurrentPage + 1) * desktopPageSize, filteredAndSortedClients.length) }} / {{ filteredAndSortedClients.length }} 個客戶端)