From bd6302374a6f72a35cd622321457245285cc7096 Mon Sep 17 00:00:00 2001 From: Oluwatobi Bamidele Date: Mon, 7 Oct 2024 17:37:59 +0100 Subject: [PATCH 01/20] fix: authentication for private graph --- src/components/AppContainer/index.tsx | 6 ++---- src/components/Auth/index.tsx | 25 ++++++++++++++++++------- src/utils/getSignedMessage/index.ts | 6 +++++- 3 files changed, 25 insertions(+), 12 deletions(-) diff --git a/src/components/AppContainer/index.tsx b/src/components/AppContainer/index.tsx index 572ced7ae..d8c5c347e 100644 --- a/src/components/AppContainer/index.tsx +++ b/src/components/AppContainer/index.tsx @@ -1,20 +1,18 @@ import { lazy, Suspense } from 'react' import { Route, Routes } from 'react-router-dom' -import { useDataStore } from '~/stores/useDataStore' import { E2ETests } from '~/utils' import { AppProviders } from '../App/Providers' -import { Splash } from '../App/Splash' import { AuthGuard } from '../Auth' const LazyApp = lazy(() => import('../App').then(({ App }) => ({ default: App }))) export const AppContainer = () => { const App = - const { splashDataLoading } = useDataStore((s) => s) + // const { splashDataLoading } = useDataStore((s) => s) return ( - {splashDataLoading && } + {/* {splashDataLoading && } */} Loading...}> diff --git a/src/components/Auth/index.tsx b/src/components/Auth/index.tsx index b451be49a..43aa7c763 100644 --- a/src/components/Auth/index.tsx +++ b/src/components/Auth/index.tsx @@ -5,15 +5,19 @@ import { Flex } from '~/components/common/Flex' import { Text } from '~/components/common/Text' import { isDevelopment, isE2E } from '~/constants' import { getIsAdmin } from '~/network/auth' +import { useDataStore } from '~/stores/useDataStore' import { useFeatureFlagStore } from '~/stores/useFeatureFlagStore' import { useUserStore } from '~/stores/useUserStore' import { sphinxBridge } from '~/testSphinxBridge' import { updateBudget } from '~/utils' import { isAndroid, isWebView } from '~/utils/isWebView' +import { Splash } from '../App/Splash' export const AuthGuard = ({ children }: PropsWithChildren) => { - const [unAuthorized, setUnauthorized] = useState(false) + const [unAuthorized, setUnauthorized] = useState(true) const { setBudget, setIsAdmin, setPubKey, setIsAuthenticated } = useUserStore((s) => s) + const { splashDataLoading } = useDataStore((s) => s) + const [showSplashScreen, setShowSplashScreen] = useState(true) const [ setTrendingTopicsFeatureFlag, @@ -62,11 +66,7 @@ export const AuthGuard = ({ children }: PropsWithChildren) => { try { const res = await getIsAdmin() - if (!res.data.isPublic && !res.data.isAdmin && !res.data.isMember) { - setUnauthorized(true) - - return - } + setUnauthorized(false) if (res.data) { localStorage.setItem('admin', JSON.stringify({ isAdmin: res.data.isAdmin })) @@ -82,6 +82,8 @@ export const AuthGuard = ({ children }: PropsWithChildren) => { setIsAuthenticated(true) } catch (error) { /* not an admin */ + } finally { + setShowSplashScreen(false) } }, [ setIsAuthenticated, @@ -117,6 +119,10 @@ export const AuthGuard = ({ children }: PropsWithChildren) => { const message = 'This is a private Graph, Contact Admin' + if (showSplashScreen) { + return <>{splashDataLoading && } + } + if (unAuthorized) { return ( @@ -125,7 +131,12 @@ export const AuthGuard = ({ children }: PropsWithChildren) => { ) } - return <>{children} + return ( + <> + {splashDataLoading && } + {children} + + ) } const StyledText = styled(Text)` diff --git a/src/utils/getSignedMessage/index.ts b/src/utils/getSignedMessage/index.ts index 18b9a2fbe..fa366bb00 100644 --- a/src/utils/getSignedMessage/index.ts +++ b/src/utils/getSignedMessage/index.ts @@ -35,7 +35,11 @@ export async function getSignedMessageFromRelay(): Promise<{ message: string; si .then((storedLsat: any) => { signingPromise = null // Reset the promise after it's resolved - const response = { message, signature: storedLsat.signature } + if (!storedLsat) { + return { message: '', signature: '' } + } + + const response = { message, signature: storedLsat?.signature || '' } storeSignatureInLocalStorage({ ...response }) From b27a23913a969ec0ba99230ef172673d4f3b1d03 Mon Sep 17 00:00:00 2001 From: Oluwatobi Bamidele Date: Mon, 7 Oct 2024 18:45:04 +0100 Subject: [PATCH 02/20] fix: ensured auth page unit test works --- src/components/Auth/__tests__/index.tsx | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/src/components/Auth/__tests__/index.tsx b/src/components/Auth/__tests__/index.tsx index dae5b633c..2a0544d19 100644 --- a/src/components/Auth/__tests__/index.tsx +++ b/src/components/Auth/__tests__/index.tsx @@ -142,7 +142,16 @@ describe('Auth Component', () => { // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore sphinx.enable.mockResolvedValue({ pubkey: 'testPubkey' }) - getIsAdminMock.mockResolvedValue({ data: { isAdmin: false, isPublic: false, isMember: false } }) + getIsAdminMock.mockRejectedValue({ + response: { + status: 401, + data: { + status: 'error', + message: 'Permission denied', + }, + }, + }) + getSignedMessageFromRelayMock.mockResolvedValue({ message: 'testMessage', signature: 'testSignature' }) render( @@ -157,7 +166,13 @@ describe('Auth Component', () => { , ) - await waitFor(() => expect(screen.getByText(message)).toBeInTheDocument()) + await waitFor(() => { + expect(getIsAdminMock).toHaveBeenCalled() + }) + + await waitFor(() => { + expect(screen.getByText(message)).toBeInTheDocument() + }) }) test.skip('the unauthorized state is correctly set when the user lacks proper credentials', async () => { From 9338e4868bb636e57081df093e585ecd9cefc756 Mon Sep 17 00:00:00 2001 From: Oluwatobi Bamidele Date: Mon, 7 Oct 2024 18:47:08 +0100 Subject: [PATCH 03/20] fix: lint error for auth page --- src/components/Auth/__tests__/index.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/src/components/Auth/__tests__/index.tsx b/src/components/Auth/__tests__/index.tsx index 2a0544d19..cf0076ef1 100644 --- a/src/components/Auth/__tests__/index.tsx +++ b/src/components/Auth/__tests__/index.tsx @@ -142,6 +142,7 @@ describe('Auth Component', () => { // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore sphinx.enable.mockResolvedValue({ pubkey: 'testPubkey' }) + getIsAdminMock.mockRejectedValue({ response: { status: 401, From 2d3f5c5aae7c1e8d66fc91bcbeabd72ae26b2d5e Mon Sep 17 00:00:00 2001 From: Oluwatobi Bamidele Date: Mon, 7 Oct 2024 19:28:49 +0100 Subject: [PATCH 04/20] refactor: clear interval only if it exist --- relay/nodes.json | 53 ++++++++++++++++++++++++++++- src/components/App/Splash/index.tsx | 8 +++-- 2 files changed, 57 insertions(+), 4 deletions(-) diff --git a/relay/nodes.json b/relay/nodes.json index fe51488c7..0944d14f1 100644 --- a/relay/nodes.json +++ b/relay/nodes.json @@ -1 +1,52 @@ -[] +[ + { + "alias": "alice", + "pubkey": "03a394d0ebf0d003124ab130c6b12b8b990a50a30a464354800a51981ba745bb07", + "ip": "http://alice.sphinx:3001", + "external_ip": "http://localhost:3001", + "authToken": "5BqN43ARHn/fDQVbYn7g", + "transportToken": "MIIBCgKCAQEAyTYUYm+5F1FpxVMwqn83ouzVTgffnRdEtf7aFNWHQxeNdk8BvuNF\nxfPUxnGK7yfsdFaDFtUpOnXZrANCzHsW8IiOgqagweHeOki4vJaJheD0oFit+ZUL\nYTbVynLAM0bx7gTSsh0XbTfZYB7Am93/8UlYHhZ/LgNHb/2u/6dF0x1esdNJVzH5\nbH5t/YbhOtCmEemECPbB4G6B7HsR4d1SUmEpqH7TnNbJ32x65n5f8qLUQbOLbpmP\nc0T/cL16ug5Lf7NNr7126jJj/twProLbKc6rpchhm4208zoTxBmzQGmAZql/NYg3\nKoTkdHDRgajPVntFyy4zHwouDEh/AoSVjQIDAQAB", + "contact_key": "MIIBCgKCAQEA0xQN2SMcyn/KkTfw1s9IcwaI8o+SA8SIrQSMgcdhpPQKCAQbiVFIS1Je8djn2A5FDjCvvjGURhirFxYZqSx0ycske2gwtQ0wQYEB90gFpqPkUCJWQJAbhRLhlfGzrReofhlvovlxzvYcw1Yowq+YWlr7MvQx++8Al8epgJFW/sTGwYHASsB583CeSKVkYAegJOz9bxlcWUwnqxjepH4paNgimeNT+/MY0Szmt2ASSGX+qX7VwUpb+C3hK4v/IbhYzTeon19204aUeURrt8LGZPoGTO6MAoo64YCy1wpY7L36GzPRRtIqRnt0L4M8PaH4QGOIuQcj4Rg78HHvZsrWPwIDAQAB", + "privkey": "MIIEpAIBAAKCAQEA0xQN2SMcyn/KkTfw1s9IcwaI8o+SA8SIrQSMgcdhpPQKCAQbiVFIS1Je8djn2A5FDjCvvjGURhirFxYZqSx0ycske2gwtQ0wQYEB90gFpqPkUCJWQJAbhRLhlfGzrReofhlvovlxzvYcw1Yowq+YWlr7MvQx++8Al8epgJFW/sTGwYHASsB583CeSKVkYAegJOz9bxlcWUwnqxjepH4paNgimeNT+/MY0Szmt2ASSGX+qX7VwUpb+C3hK4v/IbhYzTeon19204aUeURrt8LGZPoGTO6MAoo64YCy1wpY7L36GzPRRtIqRnt0L4M8PaH4QGOIuQcj4Rg78HHvZsrWPwIDAQABAoIBAQCcbbtJlY0LwaMk9hlFiP6/SDOL17y1kBxeZQWgVFvX/IfGowypOpTiRVxZzY8cfo7M0mYcBPBG9pctF9LSnkC7IBKcZn3aX7jIgswrL7QIaGOWw6u6U1Ihz/lgv2ySNftH4J/sXwLqB1kPprW0ep/lLpIFlBXLCLgew/ipcIzRZzj4q0rZSvnh5ownFx0KHAi4xUuTVxSPVsYuKDyFQeVobyG0NDE9hw8pPOgXVCczfc8+2B5AXfKKEKGUA39XfHSaGJytWSAHgx6A5oULrkgtuQXxB/Yzp02LsAbUGjTjz2zrOkU4AS1cxNT6MJBf4lwZy114rmM7wfuRKyrErBf5AoGBAOqx2X014WVJYqdo/pak5sjvQdZY8L1/BZVzH+00uUPuzjJPf+57ayOBX64laVFv7aPSGJ1KX4xrrSJDvknenPy18+v9xp1RbHrzh4JdL2HdRO7hRviV/C9oqkoWT/K6O99b/9SSXAxP96rJTp+AmdOpG+HIl9RP+3cVocfJEV0NAoGBAOY9YBB/1W8jm9GJbfj+MbgEjKYAAyqXXEYXk1lhZgnkK3tKrcADvfm/ixiuJq8Cyiz4k9AcEVoI/of9h5PW+faQ64UQ7dW5xEIugVXbx0ZBGm+YqFrP1X7UdoeY4VsqUigvIkZTpPD8r5lwjKHsLPsihy+AXzmAlk10DdGbcWV7AoGAPPYLVyGqtUN1k6SLFJgqtiCnikS5647V5Xbs4RFj2ghqmNjbkxeNwcA2GSbwj02yfW3yJNEPtoq1gwPzpn5jaqTcgfz+HRjsQ5eEKFGKIDJ4WFA9vg4/XhUivnHDPHoxWRgtgIqvzCbtXvhBKt8dlcQEUQZooaZQ3CLLTfilQPUCgYEAyA4SV6PL38sQDGyemti8eMmzMFYYajykl97KUMKZuASDZ5jHCm3193lgsmw3/p+s7pB7VzvcM+BW0fEQifwkrALWMoQ4NBo7Fspz5ReXukq9XrRFrMqkFpUj/MRxJBbM1k/GN1dcnWziY6/w8o1VtE0XK8Yed8dsUhaCH1wyltsCgYBRinf4zRDEZoBdM/ag9/K10fLg9FC5AX1TkawQDNSa2/D92o5HrQsVbRgk8U/mIBaRNIQhZjKULE2GdKU6/8+DzWx6n8jk0I8gaKIx0iWkmNu7JL078dkcfIMepBrCbero2+wyZAAb0/riqpX0RQhWpBmCHu+s1yzdaAfptEbRqQ==", + "exported_keys": "a2V5czo6QXdFQng0S1NoRVpGelNhSDAwd2R4ZlBkZFh0N3cwOW93T25xNUtud1pzTHBTaDFEVDdqbFFPWVo0cERtdTFBQzNYT1N5dzJQZzhpMTFDSzVramtWamlpeEdvVlZnUDROcnQyRnVvTVpkT3VPT2VKOWUzbE8vTmlPV2xvNWo3aHZhZ2t0eU8zSEl5aVVZY3RrZjA4eHhLeEo1dEJJdVJLcDl3VDArUHM2QnA5QVRjWjRaMmorT2Z5SlNlZlpac25qUG1pY0pvWnFkK29XMkllQWxGRzFENldHOC9Ja3UxTkliZGRIQ09YV0lqVjVpclNGcE9HVlZnWTdEQkhLRkx1NDRZeHZPamg2K25xdi9heDNlbTlqOU1yZ1VYQzliRGxzWFR0RU9Od2FYYzdiSFJ2b01DTlNyRnh4bFZ6UTFKZkZzNFBRVEJNNUx0cnhPbEt4aDU3THgvdEdLc2FLQW5qZGJsc1dzNlM3eXNnNjJtTGp3eDFPMDhkYmdUTUNPRnFBWWNLSmNuV1VmZ0dUWFJYOUZmeFcrbVJOL1MvL1ZET3VhUTh4Ujdmb0pQK2QzaGtDWHJqRFRIOXpjbkZTUGFEQTJXVUpycEI2YWdPVm9lcUNRRVNMd0NhOUhkUUJFeE9rZ0NCazMyQmZoeVYrazZrWWhwUGEzNDFsQ1NUYTBrc1JEdEY4UVNpZHJEMXlyUStwYXZ6REM2bHVuZEoxQXhGM2J3SkJzbmk4ZmxDbXJtbmw1SURmeFFPMXR1eXFwbVQ3ejhrekl0cHpiUC9iU0Y0TG1XQ2Z5Tk5hTzhXdDZXU20zTDJubUFBQ2E4d1k2VnpYTERUcHJRelZ6T1VGUmorRVE5bFdwYnMxRHN0Qy9sT3hBUStSaXVvM0w0UHdoUk5uUXQ5dXJoWWQ1aTZoekVmVWNaWDVxellKZDBiNXVDVU9uZzFjUlhoenZ6ZG5qbUhxaTFiVy9QalcyTGMvWE9rMzZDeXA3NUFjUFhUTVdEU291aWIraVVUMXN6YnNuNm43SWFjM2hhQVNoNjFVV2pUUW0vQmFLbDdhRXNxbWxZZmFraEpUS040QW41KzFRdVJXWHFJbkQwV2YyQytSZDdJQlMrczlWS1l5Sm95bGdHM25acmV6cys1TGVBbnc2NTVIQlUvc0Y2SjM5bU1FMDB0L0dVcXIrTmZWeU5Ed251NEQ0Rjk1ejNwbDlwYnl4V0p5MGN0aG5MZ1VWWHdEdVkzSVEzVnJxOVlYbWFidUZyb2VyNFJjRktzWEdnQ2xLb3N3b1lKU2pxek5HV2krUjViYk53ckticVY4U3JCcEZrR0N4VHBtR3dtTlN3ZWxBWjhoVjhLdzdtNzVIcm9PcFdQRmI3OEVvK2ZIOGpWZjdwbW5YeDgzdmM4RDhRRlE2dStrUnhFLzgxbGlKS3lpeDZpOU40cXNRZ3NqVUcweXJBTTdyZG5zWk4wN0FVaDdSckpMUHNvRFJsb0xRR1YwUmdEOHdHTjBRUGhqLzdpei9Fdm5JYWp5SWsrUkhwSFY3T2xsNG9pNDB3cFRpTUNUTGQ4dWdFT1ZmY1JuR0hpVEwrRnVXeEI2ODRlK1VNRU9GdFFYR2hjeFdickxoSHh0U3g1ZUQ1MEtsWGhyUExXclZGMUpVc1ZLdzZyTHV5YWFSb3U5M2xSeTdrVGVYcU00OCt2VDR2QXZtZGw4ZzR5KzdRZlJJdSs4eXF4NnI1TWFpZFhnZzhTaGVYZHJaRXlVRXo2U1JKaUxlZkJmSjVBa29FYm5kS1p3NENJb3AvT1h6Wm1hQWhLUmw2VmFRL2RMalNlUVBFb1ZzQTUrWnJMcGkrOHQxVmsvZW9Qbnl3NmVqSEIrMW8yRld2MnNsREF2cEtSMmZEOE53QXRsWXc5aS9nMHhmSTJMOUcvWWZ3OWV4UWllNC9CRUVNcjF2K09TdWFVQThvWWdna3MxWktLVlFwaWxnNVBUV3lTR2txNFVpU1cvQytHdkdoNEtENHlWb0JaSVhWVzdrYTdkMURMQmxGUlBiVzJlbHkrVDNid2hEdEYrRUZZR0p5Rzh6bENRNnlhYytJd052ZGtjM0R6VFlsQnJRUUNndXM3dDdRdkpKTy9rcmdZdnhjdlk0eU53M01ZUUNubllYRytvREFCRVIxbUlEelphcXZGc0hveXFnYmhrUW1Db3laVjZaRUJCcEJoQnpYWEI4N2F3ZEVIUHo1Z2w5VXNjZjlNTHlqNHkvNU1HcmRhVXJMbC8yZEpxSXNBQldmVGZJdno1OHdZTGxKYkhwbERTbGg0QUNJQ2dWV1c1QlpkK1M4NmpiKzNxVHI2VU4vT1BFZDc4WE1kdXBDZFltRG1INkJQcXM4ZjV2MmIrYWdkbnFWY0QzZnIyeU91MWYvdFpPbmVNVmxlYlFBTkF1d1J0VkhCVy9ZRU8xV2lYWm9qSFp0SHhIR2hKU09qOVFhSE1kZkxPVTAycnV1cDM2WDhyTWtzSlJpRlFNSm9jclN4amYvMFI4SVBrOE1ZZkMzVjJSMkx1NENDMWRGMXo2SXJRaW53V3VaaWowVXFHdHVBNHNtQ0dsUlprdDRRY3EzY1daT3JoK0VTbjlKMDlIRTE0b1NqdVV3ZW9PbHFEdkY0d056MFBRMmFQVkp3emVieTlmY1FUV090b0o0ZER2cW9ERHEzbVZTRU02M3NRSTEyZ3U3ZjZKTENOZGU3N1JHVVgvM0ZWT21Vc2o0NUpEcEdCMkdVWkJ3WTI4SGswdjI0RHdWa1JoRlpsNWlNRW1LODA2SXpkUWhUblRiUHpONEpOcURvU294d2ZTbEpXSzM5ckFWUUZONjAySGJtY0NOUStLdyt1aHc4QUJRMHo3SksvNUc4N2RWem5vQ2tNWS9sWVFlU3ZpNGNBV0pyZ29WL0RFbEx5dDZ6SjBhWUJoRnNoMnVnNTNQTUV6L2tIbm9hckFWQU1ickhNSFVOMTZzUWxuNnRicEFJWWNPSE5tOE9WOUs3aEVrRXhVYk02blowNGdUb2JWYk5ZV0c2UVB1US9mVWRGTysvUzRWQzkrdC81QjNxUkdBeEIxZTlxdTJxbER5NlhuWFRIbk5IY3dJbDQ5dHU1TEJ2NUZLd3hGYkh6ZkxKMW9QelFGdHdBUCtsU2JEaFBldUxvNnd0a0JhY0pucnlXNUxIaElXVjBVTjZBQll6SFVVc3JjcUZwcUJHcVFlZEs2TGRxRHNDd0EvcTRJMnhIZUhhSGNpY3kzS2xSVXZWREhzQlNUZUhKTFFMZ0p6MXN2ZjY4aVpweGVockIzaFdDc0U3ZGxXVExnb2xrVDlFbCtjdS9Wc0VhSWhKYmwxbEJieFBWSERybktaMFBoLzIvdm1qbXp4T3d4YW55a3lYT3ZYSUtFRFZNanpSVWQ1K0hWbW1EUVgvWUIxdVJDR1RTazhaTGxEeUx3M0dtQUJubkpYaUdXQ0tpQ1ZlTVpRWVMyNUplQ0FjUEJvaTkwOWt6N1UxR0V2aFlLczlFcjFFeTJmbWZUQmRxRCt4R0x3QnNydGxWNEIzVFg4bGNLRnBvREo2RXdwR0JnN0R0NmRDMEFzUTBVWE0reWJzSWk1RkF4bEpZdnEyenl4YkdpN2M2YnZRUXBnRG5pYXdKcFJPSmNCWDRXWjFqa0tSTENlWXU4TDBLbTVSVnJZbz0=", + "pin": "111111" + }, + { + "alias": "bob", + "pubkey": "02a38857848aca6b32ebcc3c85d07ee41354988f4f1e0b4e6ccd255eee6ed75b8d", + "ip": "http://bob.sphinx:3002", + "external_ip": "http://localhost:3002", + "authToken": "6e8pSIuXLMCJWtiWIOjw", + "transportToken": "MIIBCgKCAQEApwX5hF2icQm+8QZgD0XIhOG4lkbUIzHsqm+Nq6R/K7bTtGtoQsJA\nFPlDkCtrTMC+TX8Hg2ZKF3VzUWDZqeLbi2BzOZ/AqZTNVMeX97C9OODrvLHrA/aE\nmT0mmNQJApRxMnLBAJh8aq1+DFcvytb2FUKJbGW6TA/sxZlbmHyhnpL6zTtBNFLx\n89MVxQAv5pjnVv043o3kJyu9CYbIma4oE2Uq6btQ/O/ujYA/NLXrYV9KPFRYtT+D\n0Ooc49CKnvKbUEoxFZH8Z0DMo1iF3QiObCR0wnAwQ7V8fWFMdGnSK54cm41dPyqm\ntqpVodM7ARguSN4+HO7NofJc0zgcJCYenwIDAQAB", + "contact_key": "MIIBCgKCAQEAuMMFql1ztHmp+AsAk4K9T2czpr2cKsJSyS6VtgR5PSAiv0L8jzmB+7f9yZ6ctkMavFwAYUPAIhnRWZhdZm/Hv/YnF5FmZKtdFVPQo+t3xDmWQoiFDfQDU7g9+hkF300aqawN1xSuTdHjxkgjXTywEPdjDiqwn76Jt0x5Atn0AjOoEs408VZqLXZm3+KaiP2Zw5+gtkgn2WeD2YosaO5aVxHveYeGxs6Ys6lSw8NcgODHw7DtbBTEeMOrxqnH3NwGuopFNmbG7ybhI2LDygJW+7c1Wzc1sBbp6o8uUsSMN6E1W8bVLJficCP0LdOdUs6roMKaFT764ThKHuYkyRJJiwIDAQAB", + "privkey": "MIIEowIBAAKCAQEAuMMFql1ztHmp+AsAk4K9T2czpr2cKsJSyS6VtgR5PSAiv0L8jzmB+7f9yZ6ctkMavFwAYUPAIhnRWZhdZm/Hv/YnF5FmZKtdFVPQo+t3xDmWQoiFDfQDU7g9+hkF300aqawN1xSuTdHjxkgjXTywEPdjDiqwn76Jt0x5Atn0AjOoEs408VZqLXZm3+KaiP2Zw5+gtkgn2WeD2YosaO5aVxHveYeGxs6Ys6lSw8NcgODHw7DtbBTEeMOrxqnH3NwGuopFNmbG7ybhI2LDygJW+7c1Wzc1sBbp6o8uUsSMN6E1W8bVLJficCP0LdOdUs6roMKaFT764ThKHuYkyRJJiwIDAQABAoIBAFBy2myr9E2JDDEs2TthmfyQ+zSHKxCTPGjNF/MBT6kF7RtKl53ldGueWasInUPfRCzwAlpXnbk7dKSGa2THFzrGe48PiH4c/5Lhw98cEDIowPyHZSgGL8ysVJAphR0N/aYTfJNCNgM8eOlFT+CxJBi/Hypz/CQSWvStH6PWMyEhjlKAFd8REXvOipKFM28NCgiYAcfV+Av6oEG6SnJi4rYgQQgxGuXyedNP0aSVB33LTuxuvRFHRfbfMnQmZb6DdIbIfk1mD5lwxxSDIOmR/r4FQ3kTtRuFizfwUUzTRU0ZtfyOxE9VGvuAPrrEokHWTgBdmfSiY+NbUk3Le7HzFgECgYEA89hgbQOo7Pesx9kMR4HG62TT7V2+sarumbZ1IxgMFSYEPioL+XcCtPBK1E5eCVjP/qS65PRMXEJ1VIrKTvMYo5o3oSrAWDY6PTg5yzGqDVdyXs9oQP86MtqiLYLALA03u4com9WwI8x9lMUqdT2o/3/Bv/J/ZHINu1a3m89L1isCgYEAwfiz5Vx/n6/wLPnrutb7CAfv2dDAlM81/ObF+zUPueEBI/5K78mKS308blfEYdgEnUW8v3qK+sfzZcXgiCfniBE0z6DRl7T5RFi7Qmc6ko8PpNM51g1rnlMR4Z5iOvxqvXPUsFl56tfwxvHH+N9QvDeUB4uiu1f98Dv3C1TKCiECgYBvEyhRYDJpxyRoYIFMbVxMS8CRxnsf+Un4sPlIxCJ0271hB8wulbyg6Thc31nMji0oxKbxtiq2d/t0SEiBkBCwLYabnprBU+pRirQgz/2zWBsb/wRxXxGGqrrnWkDpkBfMD3Q7ECrNE9A8nVeK0kySHgMGyZKoEaAZrxWyHspfwwKBgEVBLcG7Z9m08HSueqrH7PLuGoXTUZ8P6H+2SYOqa0X7fvPB7DF27MiNG1FuRrCEdwlMB9r5vrtRPqbcopEaZkEfm5JyIcMfm0v6vkk0ICaJq5U20VSKkB0EHcNHUF0tGFMyEwMvvybJGK9/Td2epe29jj2vblejUAhA8LB8AnLhAoGBALtI0bkhJaTvBL/1u2bEJHcBMbp4NVVsCV/ejwvla+/AGHA+Mpo260eIElnbOiRq0Ln/JBpmE5QxZHQ0x066vc7QIeTZ2o3o/JTo1Y1VNaecY1uApP6c0HndGt8rgxDWyMc2R/TA+fsrkMUIJYnkvroDUFTquKtU3cF44vTVgBO9", + "exported_keys": "a2V5czo6QXdITXpUckYrM2R1YlQwUVozTEpVNGlBMkw0SHhRTVMzb1Zpc1ZIQkdZRjI3K2lNR2pXeDJsMEdJNkZja25BK1puUFNDTkJkQnhYQzA3ZXBycDdCMktVSmZpYmpCbFhLaDAwVjVzQ2ltUTZGa0tMaGZHL0lxQ2FWS1NvQXlWOGpXZEMrWU1JSG1odG9kSXNtNkZaTEFsUGpPcmN4d010dFg4ZTJoNTNVeitpQ016NHphck9ka0Y0K0hwcmxoWFNzeGlxa0ZWZkN5R081MForZy8rODJTaVUrV3JFdXEwazJkNEJmRzRBYUxKWVIxTHBQM3BPTG41YkNwem5OTzVibGZhQ2NycmIzdTBHSHRySWNrdTRrZ2dQbUdPaUNINWxnY0ZDazQ3RWQzYnluMlFkc2ZCL29iZkExdFNCMjRFUEowWE9iZU1Pdlk0STV4ZnNrbkt6QkxGUDFuQVNRNUlWMS9zTkMyRis2MnBkSklpNkhJd1IrSXkySkFVNHNrRDduMnU3bHY0cFF0YWgvRGMxWHpLRjBsdDlLSkk3YzZNdFNyWGpGSldNVFBNejY1Tm5zWnRiSFZwNGtiUkF5VGZQRVZJKy91U3FXdWVJWDRDSGUxMXNuQUdxNi9mb2VldGpOWVMwWEVranV6TERhdXlmYmp0SlhmeFpJNFMyem9Za0FxTnA3VWRQZ05RcmZvQUp4V2JMRTJEQmw1OGU3TTkyTlNJL01uaVBmdnJJd2dVRDVlRDlvZnZwYlJWeG5KNmlkSVpyNjZrdC9xNjZvaVdFSEtDakV5LzR1T3ZxVmcrK1VJTWM1TnYxZUs2d0dNRmZsdUdJdkhrMk54eVlZMmdPcXdxWmwzOUdsK3Y0SUhWVUtSVmlXYmdFeTFQbGRBQktMYnNRM2VxK0N4TXNySGxIK2NBR0Zac0JlMVdKN1NYaHVjZ3Y5Qnc1eXdhMDZKQlBoOG44ZFVsRSt3UDhUZFRXQzArencvelo2TTQ4b1FqaFhiRERsckZid1J5allMN0JnZlFiNUwrVTFEU2k4TTkrU0g0aUQwRUd5Y2Q3MmpEVU1VWiswNWVwTmJySGZYMnBWak1QbDZLbVFWSDJ0azExcW5GSFB5SXdJc3p1SkpkbWhBeEs0VXVaT3Njd0xJNk5XdUJTQW1IVXoyd3Zja29OMkhlaFFqdHNTUjFXZ0xPVzBWcnJkYjZTR0VKUEk0RFFoM0JXTDhBMGZnZW9zVHhHSTMvU2Q3UHo5UW9HcU5maU1iS1Z0L1I2MjhFam9RR1FhMFYvcys1M3MySFo0QzU3ZXNnSXUxbno4VTN2aEptc2NWcWs4aEdudjQ1aVp5K3pXSVlCOXA3YkxYUSsyQTI5ZGJXRS9nRld6VitCSUdRMFF6Mll4UTc5YXRRL2ZMejZUcmFxNElubmFYRjdvR2psSUtGaHFHVDdzYWFEZ01ORHhBejRLcTVFUHZXRFBHSzJ2T2VRZFB1Wks4cXowM2hJOUlSZGtaRjNQWkhvdjZueFhzMnl4MXBtb0Z4RE93WGpxOFBNd1JDbmNjZzYybE1WU1pRdDI5MHhtZVhCeUh6bUpldWRHemFSS21SbDR1M0JUN2U5azhEaEVUcHBZeG1ZVDFoaEtsL3M5LyttNkpzZS9sK3hCRHpob3BoQVVKUXVDOGp6bW82VmttdkVUU3JKWjB3bHFvK1N2TStHZVVuY1k0ZU5WdDFDeXFJVnRKOEpBRkpxSEQ0c3pOVWo2ZWxqNndKUmNRZVUzNG9FQzNnVHI2MDh5YVZYcVFCYklzMzVEZ3cybWp5U2xpL0NLQk1yNDF6Wk5EZFZ5aURUSi9tdFoxSEUzcVJKUWN5bnFrTFE3WGpVOUQ2cUNkYlk4cU83a2hFTmVkVUgxK0JkK3hyN2p2c0ZSS3BQUlVrN09WeE96dHczV1VPMVV1bXVqUlBCSWNHVHI1SUdoczdsMDZDb1dRbFV0VHNvN055N2RRRytrRW5pYUc3WEFpeGVaMDVDdGZzM3VUR3l6Wkl5THdQTWxxdUs4ZFAzQzhSbWdPeE5HdU5NcXhNbUZQbERvUUM4VWdjVzFwRjU0SFYzbndjUVp4ZGdFVlJtakVYWURONTBSNkRiMU5hbUtsL1ZNa1FPSnFaVkFvZWg2T3VVVjRHOGFweDFScTRZTXRnSEJDTnJ5SG00SXBUNGZ2ZEJhY0pHMFFiL3RVTS9wZW1mMjFUZ0plWmlrZDE1bENuKzZaYmVXYkVrajcrMTl4UVdSYTVReHdUamZ5RW85RXpJcnJBa1RXSE5iWVJtcGtPZlJLQmI1c24va2tuWEpTbFBneXI3eFQ0Q01GaWszWVkxeHJEeDYyeDhFVjIyUnlFYlNTMFdqRExRZkJod0VSS0VWTE9MRlQzaldzc1dlcldGQWIwWk1Gd3ZjNDhnbUJWbW1TTWgrT0NFeU1UYnBNRlRXd0tBVXpZVkhXQVRBMXlZTjRCNW5nK010c0pqZzVoZk9Fb09kcmpEZDZ4SXM0Wm9wYUtQTXZ5SjlneG4wNUxlWThKaEtzOXhTL1VKNkE0eGpyUG1vNzUxUkFSdndST0s0R1NadWNuQXFhM1VhbTczaWh0V05pVXVVa1pjMXFYSVB0bWdrd0tNb1p5VjlCOWNIb0RUandhdWo1OWVRM2tPVE4relFCR3E5U1ZaVnRrU1ZRRkN5TStVaEUwT0thVUs5ZmtDQk4ySVYxRTdCMHBaeTY5Y2gveGV3WExnSWRuUktNWWRlSUVHQVpuZk4ybWc5WStzbkdjNGJQVnM3dmFKVERWc2NCMzlGNVhxc1RBN1NPa0dmbzJzM2hEL2dFeGVjbnVtQWtJZWl4eU9uUFVtdFc0YXNKSmdDdVBoRnRlVVl2cFRrQi9RUkZ6SEtxdTA4Q0hNM0RjZjJkcHI2bUEwbXhMbDlYZlppTzlEKzhSamN2VDJVK0YrakorMXViUEJGcmVXcWt6ZVZBNFg0T0FvTHdIczZHSm1qY0s1Ry9zTGp6VHNpQnl2UHFXSGt4TnBMZXJrTUFHNEhQakhDK2pMUFJwUVd6YzRPSHdXeW9KL2Q0V0NXRjVqRzhyalFhVTR5YUpKTURBMlJBN0RrYTdUNFdiS1h4c0ZlOFdoeDBEeG1VUGZDbTlLYTNvWHdLamlzdmxEcUp5VnN3UWx0c3dsWnBERUUyaFhScDhoMzZ6cnlrRW5yckZTUHRBVmcwRDg5WjlaeEtjUTh3dDZHVlRJaHNWV1Y4cXZHWVUzeDc3eTFrZjkzU2RJWFMwMk5JcUlxalhVekFESTYwTEl4TzhycVpEQkNuTURBSEtCUVE2KzVOWGpvakYyQlJMNmhCaEJwd24wQmFZZXIwRGJwb0F2dWpNQ3VURHhPNGNlcUx5eTZ6K0pWUTQyRDBDLzlBVVZqMGxCbnU5cTY5SVU4SGp5Smo2VUQvOHhQbGJFMFRGVGFManIxSDNxTFFFeGNsWm1kb2E3bUpCbWdBN29leG1Ca3NnWllzSHdrSXJ2N1Y4VUlEaFN5YVhWVEpIVEIzbFh4Q1pYNmpkbm1WQ2k4SnQrY200ZVNOaUFteWs0a1BBZFFVKzZza2g2empsL2pYMDRCbnpBS3VDMjlJS0xVN0ZobWw2ajdFRWxJL0RvY1pQaFcyUVNDUk5PclBiT3F6cHlPcjFSTWFMUT0=", + "pin": "111111" + }, + { + "alias": "carol", + "pubkey": "0364c05cbcbb9612036cc66297445a88bcfc21941fd816e17a56b54b0b52ff02b9", + "ip": "http://carol.sphinx:3003", + "external_ip": "http://localhost:3003", + "authToken": "5RdbjtjEIq9ir1ANC+cM", + "transportToken": "MIIBCgKCAQEAx+Tw2rqE6hIEfqSDi4pXYxE0ken3AoildrAbItw7vZRXnO4TZovP\nmSQacnyY3gFAUAzblshAbqh86bWF0yASEBrPrVxN1+dkuCV61IIUmjUiIqY1S7aq\nikmvtIjTrqRW+iok7m2hGsCnDDyguOYvdEZZfqBWh/KyetrWD0YejzxEkkoRTug6\niajzmLOqkfeutIYc8AdFXHKFEIDscq08K5yW98zNk2dW3NtNMk0T/Snv0New2+zj\nw5MclEFnTNQpveLMmfq0DOpRyY4bxe0mO2/APxgDTD1piElcunu5Kp+m+2Pqnl1S\naWpxrZjnJhH86HY0DIp28iAhTjF9Z5jpUwIDAQAB", + "contact_key": "MIIBCgKCAQEAzAkbYFzPdCCKgShlUkhMyaAQciXno8UQKXCcsTB/NkwYV+KID863hOM3rqrnenpzp4GdszF4WrhHBLoCyECU84trlFZRe8IjADp3Y5kYoaKWxPwi/4l5G2KhDubZ/GyvGex059np5Ak3UzcLkLLQG4EkpOVNrIS+7WqfqluPqXuimgwkRc4eieMSvUddvOdsDq8H4LlgDBWh5cNa7rl5s2KDV3SeX8CL4FkasnLW0hg54UwP6VVoi7/7o9jtq6+jZ+341Nqr3Upa+e90/a3/IMLlMFI8XbPk6WrMPgT6kTcYkeN/X2UI4YgEoC+5DpK6/ri6itmsMU4gIyWpwgLLFQIDAQAB", + "privkey": "MIIEpQIBAAKCAQEAzAkbYFzPdCCKgShlUkhMyaAQciXno8UQKXCcsTB/NkwYV+KID863hOM3rqrnenpzp4GdszF4WrhHBLoCyECU84trlFZRe8IjADp3Y5kYoaKWxPwi/4l5G2KhDubZ/GyvGex059np5Ak3UzcLkLLQG4EkpOVNrIS+7WqfqluPqXuimgwkRc4eieMSvUddvOdsDq8H4LlgDBWh5cNa7rl5s2KDV3SeX8CL4FkasnLW0hg54UwP6VVoi7/7o9jtq6+jZ+341Nqr3Upa+e90/a3/IMLlMFI8XbPk6WrMPgT6kTcYkeN/X2UI4YgEoC+5DpK6/ri6itmsMU4gIyWpwgLLFQIDAQABAoIBAQDCek+42t32P2olT967viRK7qGeW9jd9eDAzxDbp3EpzQBLDKZKAuxT4svZVhdLW9pPKDGrcpTYS9uNestaGoyfUx3Yhyolv1bjSdcwfOXIcxQocHffgCaKXslLTekrPGDuYb7Qm5nffJVaYRZJ9tZ70O2fqt0Nen4OCFpl494cWQM5o6yc1MTQJ8DEFU4aUYoTO7Rqc6fNSdVUgUrBikTH7GcNWQaGlzg2XClEQNVvNLtWQQaNwtb1rXxVyGu0/fpw/++fVBeqYhaK+jQQC6thlynsataXh9PT1KBaA9ArLEHhm8cJjKx+2QqgiptwrCmvLCU1v/bLcBuxf4flLpFFAoGBAOsD0mVT2k3OoVTkFFqLdAUrk0WfEHpFbsMEcVSebTg1Ok/CJaF09ctPye2PjZAp6F4EPMjU5hGLRhVDclDKaBVgviRyMzlnkIbW2KSJGexA13fptmofF1eMrdzAYVTJmwUr2mwvEItqBeddrYv54q8csHR63RabpYEPCtFNhAmbAoGBAN5BIbehxjyud9y9tmxmD3VXoNorKzKYpsUNWTlcb8C4McmGFnAbFwQHxwYFkIw5IENawMMAP/ZNtmJ40qJh0/GeHdcZ8yHMQF4Z+t1Y4UkViavXENo9E7zVKz2uXaEzvwVF00WIjF1B2UrnGy9qZfdvkkDRNdRPOEckSZ/cT+EPAoGBAM6f6ZeVBdZq2YVdkleZTERPb4hCtaYK7bsgaNPRBo3onoAJXjR6NLCwUgU/tWMOtXITn62jITRDkzaWuic2DhTdnc9FaKwL1hH3Szo+IECLMeYH4Y2kEE21LhdsPSbiqhz91WhQaOdqLA6jWjY7WYZEXw/KBiAecIDrzMMAuBoJAoGBAKGAxMaSyOG5iiIevZwBggQr3BgNPIO0x6Lzcz2qfQ6XCp69UDrAhLYKDMbEbmhm7pnjLaXF3bTWfc0KrU0QN5og4uA23CVYLgHzcQc9md+oxfTYAEgGD/ytDpHwzdrhJlLnjYG+mvj9a6/xRiDreRMXwThWjn4r3uJbbSC8UFNjAoGAD7fuiZ/qDtCovmAc13zw+vZEeI2YWtDGxwdZgNU3CqGglh/L5mgxomjwGyAZwITRMx6HfweduvblS+6TBrxl+1M0oR8QS5TEarL3bx/IP6KsIsi/o/iytn1fRz4ayN5N9IQ1i39atP1ee2hvHUZeeZzS4aXjFeTFr1rq/lH1Vxo=", + "exported_keys": "a2V5czo6QXdHMzN6VEZ3Yy9IU1ZZaURMMi9MaHVqRkxBVjZJUWNGWFpBTVZBVW03Mk1ObXZIL2xpcHlJNVZpOTJIdHJoK2UyRGR4STB3eCt4WG8wQjJ0U2k1Mm9yYjlNWHZMUHR2YTExNjlJdnp2amdITjN5WERrbFpER2ozbzE0Ump4YTVaQkVRZHJadG81RjB6V0ZURXNvaGpHS2NJRGp2b1NKa1VnakQ4dVN5ZkJnOHJPbkt6QVFCM0VnTExsS2NSYXhsZTFoVFFLSkhEUVM3cUNKRDdGMjRWUFJPeUxtU0d4Q2dJcHRSc3NUQzhVZUFkT3ByMGRrNDRaNjA3MEdQblF1ZUdJZUo1dmJ0dDEwR2h0Ni9iYkpRZSs1bW4vdVlEWDhmUHBwTFRpbmNHanVkSHZLaitZVW5HcE9FaHJDKzBRZUtvTEdSaTRqaXFNd3BKaVBBTCtkSzE2SkVtSlpHbWI1ZE42dWZPYVo0VlpxRXZpbnRlMDlrbUJmN0Y1NHJTaEJmLzhjMDYrY1hRN1FudFFuNTFGdnZpRjR4MmdLcFFFdTNlRGliaGZDL2UyaUlOeDRBSDVwMklwdk9vTWxBT1JtNWxkcXNwanRvYnlGZm5sR0J0TC93Tm85cnArR3R3amhBN0p4cDIxTHppbzFzMnhJTmhLK3hobDB3Mi9LNE90Nm9ySmZJMnJJY09EQVRuRTAwcmxBNi9pRWFnTHI3cnIwWEh0SExOd0xsT0E0WlNoeldoUTlVUTkxYndGam9kczg3bTZkdkNESENldVkyeklRRXZORTBtcVRQd04zZ3Z6dCtnZ05yMFQvNHd0aGd6QlZaT0Q3UHlJYTlob1U0RnlEZ0xGL3E5VFI1blcvY0ZQNTh4eGpZRDFwRG15aGphWTFUbVRHWjVIbm9IR04yUDJrRGFWdHRma3JUSE9DNThVY2JMRzBLVDd0aXJFZnNBbjBRMVFQL2wyZWk0eFI2QnBPK2hyR1NnNEhqS0Zidm9DcytSdU9LSG1hN0pqNmQ0UlU3Z1I0eDBESmJOTUFYZ2FEYUl5TkVtN0ZuaGI4R2w0TzdlMlEzSDJVUmwvbm5GT0NrM3R1N0VjWnR0QUNYYnY1aXRGK09HaFhZYjd2SlkwZDRES1ZYcnBJanAvZUVLUWpGQjRrR0tUdUFMR3kydWV1aThHQkZUVUZRN3IyZzJ6SkU0SGVmd1lPZ0RYQU9pcGxaa09qaHNzV3kwSzNSS3lSNVdnY2x5VUpMUVFObGtrMDZIYVM1aW01MEo3eElYWDN2VngxQXNDcmZIVm1WSTRMRHV5RmFEandnRVFqTGcveHU3WDlmQ2NvdnNiQ3Vyc2kvbzdCeW1kNVFjQVNPRHZRbnk2UGdUZFR0TG5WZ0hLOTU5Y1JISWYva3NoOFd1OVlSMEhOV3pUeTlTL0VkTnRaVTFPWjA3dlNVTlUzaUQ0YmtqaWpFOHoxbHY3WVhRNU1ObHBPWERtTkd3dm5NT3Zzc3VpMGJXTEZXRXJVbk5uYkg5U2gwemVuSlZDbmxlWFUyVTJod0FaaWVzVUVLWGhORnlqeENrUFV3SmE4WXIwTmlocDlEc3dTMmtrZTA4ZzFDUFJEK210bEFhTDdPaTVJV2hBR1lZVjE1Y2NGNlRvVUZvWEMwYTZNM1I2R3R1dUlwSXhQaXJaNjdJaEN5VmZPQ2UyMTV4NEwzZmVGR3N0T0tnZE80TnJRMk9qQ1V5YitYM2RrcVRPTGNLTTk3dG92ZUloM1IrYzkwZy8rK05NK3Zqbnd1N09ZUkxXUUNXQy9waVZQWFg0R1ZDTFducGVRRDA0N09rTThXVkwyeEtPQXNRTUkxZDdPQ09Say9VVFFRdXhML0dJcjFNK2NKWnRLMWxtRVdYbzVJSUVkbk4rUURaNW12SllxeCtFa0RVakh0UnRFYk45bXYxZWxyQmdEZmk1TDYxNTR5L2dRR1YvalFRZGNOQjYzeHIwM0hVVTRscGYrRjg3MVVQUkxtVWwwUHBVUHppYnN4TktDSXVtN3ZIWXlvTDl4VFc5NUVhOUVEZXpGTTRGVmxzQmVtQjl6dlZBSEFjaVFCaEdiYUgrL0NJZkcyTkhBKzRDL0NNczZVbmxjSW00VW82UHA3cVk5VzF6Y2ZjRXp1KzJXTFI5ZlBOa3c3SG5sWTQxaFFUWUxLN3NmL0p3THpSMmp4T0dkeGRJVlFJRVJXVHpEY0cwUFZrMWxkN0NwdGpDSGpmNW56RGpGM01Yblo5MmVGS3QvaHZtd1Vza2Q4UVlpUW1jKzNXQWpOOUpHbUJNZVBuZEcyb2lKcFZCN09TdVlXdHozaFl3RmY1ampmZjNpOHlXeG1EVjFSa3JsKzJPbG9qQzEzN1VFWC9UNXdVbG95dWxidUk4WlRENUdyVy9oVkVQYytDZmhudUVHWVBYaTUrb0tTSzFNMTZnVmlLdFpRNjdWUDVEenVYUU9Hai9sYkZTWS8yZ2xWNjlJZzhKU0llV2g5dTRySytKUVpNOTA1TUlFQm96ajJwenBWOWozUVRRMnFPU2pMMXlZc3dpKzc0amZWenBSY2NiQnNpZUNYZUtORzZyMmdud3BqSmZqeWM3RjJMWGUvVWFybVZQWWtJSTExQ1NaRURuTk05WnM4TWVCbWZ0dElnaktRVExnSTRlTktRamVDeXdDY3ljZ1MvSUNud1FLYTYzaitPSnFrdmdoMWN4NFY0WE12ekxtMFVmcWR6TWZaUWxydUF3aUszYjI2OXZtZFA4bHFuNFVYMTRMTzdQdUVYZllJQ0RDTTg0aSs2bk0yQ2lBV28vaitmYVlKTHNuUmRTWmtEUlZaUjI5UjBoMXk5QXNJMUNrWDBVQWdGNndLODlLWjZpRnBkaUJhLzVNMkUzdFdUWlFDNzFLdEdRS3NuZW50L1BQMGQwVFZ2djVEalJGSmN1ODlVWldOTnl1c01Ib1Z2c21qc0FCZktUb0ltQlozT2x4T2MwUC95WFJVRHZ2QVpMN2JXODYwYllRbDh6T25Hck9xZUY0UVRWNVA3d3RUV2dJcjRnNGI4bGR6WUdkZEs0LzZGL0l6ZjlLL1NpUnAxc0dEUExzeW9JSnhsRDNYd3FDcXZIelNIWlI4eTlkaHJsZXEwZ0hSc1o0MXZEbmFsbEprcTBzd0JEVUZGcDlZM0VVTGIvSXlCNEFIYXNWWHB2ajBDOG1TVlRXN2Z0c2sybE55YjVwTWFGRjdWRzhhVEJKZmw2UUhYZ252a0lEYnBxV3ppRGVHMUJ6L1dhbi9ya05ZUkk1VEcvY1NlRHFhQ0ZCbWRsejlCZTgyZDJyMXJESnBNNzdZZzMzdmRudzAwYnpBSDJlbWIxWTVWblVVRWIrcXpIWUF4cEdvR1pwdWxZZU16d2RXTVBlNmk0RXV1d2JXUEd5UHlnWVFwT2VBcTYyMGNxcVFwNExLbk5jSlpaSXcvaG01UFBDVmZIaUlybEkySnI2b1lvdDBiYWgwc2taU3pqcmRYZ0UvR3B5K0xzeVpOVnBVTHIxQW42ekl2VHQyanFlUDMwZjFwVmtQejhwRmIrdC9OTlVxeENETmNuM29RS2c2RWZzQy8rQUVZUnBEa3NXWitvTVB1OEtvbDg3SDM0YVNCRW5ielNEWEdiOHlqdUwrdkdZS0I4TlRJOTJMSFhoaXlNND0=", + "pin": "111111" + }, + { + "alias": "dave", + "pubkey": "037ec785c6004d512ebaeb0020f81a2bcdb6fccc9539f7b891f704289ebc65a4e3", + "ip": "http://host.docker.internal:3004", + "external_ip": "http://localhost:3004", + "proxy_ip": "http://proxy.sphinx:5050", + "admin_token": "r46bnf8ibrhbb424heba", + "authToken": "xFlrtU7oY6kXCbO9dBXf", + "transportToken": "MIIBCgKCAQEAu9JYBw/Srf4E9M7BbYSikXAKe6PL7CPESqzX80BKzct32Rm1j3tZ\nqJ/eh1pyMW9dtVwHiCRegTR1ohsXvQBZz8vDfQTXR1RNTUO0Zsb32qLjdmdKu4LX\n1uJoQcG180HrJU9y2gIOsD9hLap83ivSLMplXiiN15+79VP16m5ecuKZDNMCEgA2\ngi5/80PMT5i9DgVxWLlrq0QmgiNokfXlXm2IbkEBbgpZX/Ps5w2llC9Piwpx5UWS\nY9KWgOdb5BZodxJ99k99q1PkJCuOIVkdAZJW+CI3rV0L89GCFz3ak4WYVbxrRnsX\nijddfvOw6BDp1ucBa9UUG+XGyZviQdzs9QIDAQAB", + "contact_key": "MIIBCgKCAQEAvow74kwgf5s/hb80J9484aOkKDCUEQcwvC/CB47HK9yEBd2lbPxnaTtxx9u5lbm8erePKkT4rMwNgXFmnaFom7Ukc635Ow1Su0ZjCJEq5GtQBDX5DEKB9XFonLwp7eikm3iOeRBJ9cuci5bhtOK0tV3wCEgfjtmK2fmwyglLf1gRYwhFalB8r0pt5eR7co4QFDLdZgNelpHC/MrlxD0sjN1yjcp4Bc69DMB+tyrRhWJ1V9CRAC2RlJZma+ghn9XcNEV395wUkBbZvnZesUMONab12biPevCl++IGtVPlIZdW+PH6Ap9c1Kgth+x1V9RWSBN15OvAYJYhpC72GZ5djQIDAQAB", + "privkey": "MIIEowIBAAKCAQEAvow74kwgf5s/hb80J9484aOkKDCUEQcwvC/CB47HK9yEBd2lbPxnaTtxx9u5lbm8erePKkT4rMwNgXFmnaFom7Ukc635Ow1Su0ZjCJEq5GtQBDX5DEKB9XFonLwp7eikm3iOeRBJ9cuci5bhtOK0tV3wCEgfjtmK2fmwyglLf1gRYwhFalB8r0pt5eR7co4QFDLdZgNelpHC/MrlxD0sjN1yjcp4Bc69DMB+tyrRhWJ1V9CRAC2RlJZma+ghn9XcNEV395wUkBbZvnZesUMONab12biPevCl++IGtVPlIZdW+PH6Ap9c1Kgth+x1V9RWSBN15OvAYJYhpC72GZ5djQIDAQABAoIBAQCOitVZal19WCPi57AaivO8T/BDaGO7gUeB37AkezifpSzWPoK7zu2FGUT6n3JrgTBwFNTyZ/onOdZ4mN6M2OwqXw3Pw7uH42WaVwNKq14M1gJbxAx0kWQquhXp+hDbuoc5Dqx2ACtzxkdrXQmniVhpvMYNS/bfo/ltKo6H9QAXV/2eo2KbUpj900RlW8nd4ywU6xylWQHTtwuZR0GJNa/dQ9fiJlMqT5Xg1kCrsRX9jVpr14tefcfOKbERlubTW4coDJ63CuzYJ8HVnhy/KSSDcFX/kKUdTPF6K05KNSU/7aORmLVHz3+sfVkpqH43AnXR0R24TMa1lGzd2W1Km06BAoGBAOZALMdpECI+jXLNYNNu4T9gi9n2fan5rbnk4A/EandgFO5ipTUyQT5aiXt6v3KwvclNvQLsprkAiRXvTGI338GDdp5UzJBL8IP9PP2jM9H53RTniemAZnSo9TeyR8BMpLoUSzd4n0/7TkR8xv7EUAmH8EU4Ui08fgZKj3U6GYCdAoGBANPbaJjx/Lr6MYHwK5nth5BL7rBjE1VSujPjkgKfJvhfnO4IoP+b7VKqFtbHUYOemhUgHLp7SWfc0xNKvbp8Ywl+FdyNLHa/K5k5AA2dmusAXxZH+24goHGOQrQaCVEIhfDqJKlTbd2aXIs8PiRGK06TohHj19VRtzMo4crasOWxAoGAM5tUrglFXXeJup5/wkQK5mqcTekqd0uH/a9n7QDIICN/7YJcpxSxfOlMAUoc2Pb2QsVSxPIH2FVfZHQzOZxuYXA2yPwWsYzjxqGe5vaKadjIDaRry9NEo4cvFyG1ZUuIbFCaHz/A7WtVOpKBA586lThLySf7ezogwQY7Kzovdx0CgYAw7Qe/4oqqJ6ONTYjUOI3JHjAWXhsV5lAIMbMDlfuq+nHEawu7XCg3of46RbemfNc6r7rSuiwep1m7p9QfICDDDXJBB/1PwyBvd0Fy44XmZaSQAbmoGjLTZrYy35xtMVm1ZG1pCVJjDgX3RcdYGzhfIisYlJTAt+lmEDfs4ApgUQKBgG78yjzxUauys1KAcXzEp8cRyqQLz/649EreA07WhGyTbq83gOKBmKYQ6s6CqQOyVsajmoscv/8URnMxUCOEiJ5XIUAqbAK8tYGab/tFAD5VzokijnlmbuWb9IRx3PvfNfZg2UaSMSxJihpX7wPXkA6VVf3pWZqDfM1uvnrwjcrr", + "exported_keys": "a2V5czo6QXdFYlo4a2NJNjNYS0c1R2tNZUdQVjZKZlJXeFptckNlRHF0OEdkTjdBU3ZDSEZNNE1nVTBJdWFvMXBkUnZLM0hvcFA3RndvdTNKSWd2UktqNVp6ZTZaY3FYVVU0T1VuUkR5RlltR25Jb0R1MnBRNUxuM2VES0RJY0RrMHdLb2cyTzJqWDVPZWlxdXZHNmNQa2xJVENLdENKbndoWCtWaS9oU21wL0lEREZyZHdGTnlGekZtZFpJQUh1SVBIT2t5cW9vUFc2TXY0OUZtenJxN3FObjAxUkdWTHg1ZGJicGFmRTZHLy9Rb0xNQ0NIYjlTWjJzVDNjRTVhQkpWUXBEMjM1Z3Mwd1U0OVV1ZHpjMnNJcHBhV0o0STlYckpPeTlSNFpjbHNtYzBmdXBzVnFrc0tvVEl0K3MzQmpEK1R2aFhWNkl2K2pZd2F0QTVhWFJqTVhhc0VSV1BsWlIzNE1BaHo3aVVGeTBFZzNZUFgrZ2pIdEZwcVlBK1dQN1ZacEwvT1EzNWFWaFd4M05IYytYclRVRUxROGhGNlhWMEZnS3ViMUl5NFI5QTdyZWNrWUFxc2x1ODJ4QmM4cXpXeXQ4eGxCN3I0Yjg2N2QrY0JHQWtEc3N2L1BNVGxEQ1Iyd0E5TUNrM1VzVTVSVmFSOE9xdEovditXbmY1RVhvcFIzOWg5K2RmR2RhR2lBN2VoQUhwUDFSRDdEMitObkhQNlhrdnlHRUJXNFRBbTRQRGVWdWtvSWVsc2lHT1p0aUhsSEloRVRCazV0c2R3R3dMYSt1Qkg1RDVma0RlaEZjZFNhMzZJRzl4T29wNzVZbndOSXJnajZYQlA1dEhJZFJxSnJmWktJNTNZcFpxTm9jaUZraUx6OXhQYTlEdEltZWZ0bHA0OVdXcmN0N21DTHExNWlIcEtmNllnTzNtc0JENkU0WjBqMnBNRDlSamFIaFVXYUoyWFJzS1pPQURIcStURE1ieUpTZTE3ZEo4ODRZcnpja3kvc1pYd2ZqdFQ4OE82RXhxb3ZNOEVwSGthSVZkYW5sZE16TlF2SWtjSlBLM3JOWXBielN5Vk5FaXhPY3IyYTg5U2JCRFVpSkw3ZlZxWCtpcWhnYitUZEFObHg4WGFDaVNiRUIwdUV6dGlONDhmVzhJbk8zSHZqU0tZYi9nZHl4aUt0d2pXNlM4NEZuRkhDdGhVcjhrWlRTOE9XcnlnT3ZYTTF3eWdxYlNRTXlPdndQSzQwZy9YRVpkNXgyVVZYQXlUc2Rrc2FtVkduaWxWREg4WExMQWZldmlVZjV3MG1qQTFDNjluRHpyRE9NaDlTOFA0R2RSaHcvY3NKbmgxU1BacFpERUU4TFh5VXBYL0hGS0g2VXlXSndQRGJlNzZ1aU0zOEhrTVRwSmhQeWUwWWRYWHFqa3QxdTl4Mys1SC9KSGdpSUJSVkk1aTI0S0lvZlJTeUlIcGc0UUxqYmZjRVhXR1lCaUZ3OU1reDdyZHEzOGtGT0cxc3pTdEgxaTBWRFJQNEdCb05IWVFKbDJUZDVxZytWUFVOa1FmUkVoaUt5Tkg3bDNvb2tCQnZ4dE1NQmtrRWdrZGxjMm1HSkR6RFlremJEZWhhR2NNckRidGpVVmN5bjQ1SnJvWDUxUStMWUJqZFJEUDZCOFdjSnRmektwWk9EamoxTjlUTEQwdE5CVDZwSEQ1RG1TRzJPRVppd1dVb0JjZWRHb0R2Z0RWR1lYZFFiZi8vT01seWNxQ0RHSmIzcmZyQjVzVXhESEZPQzNhYThScUR2SU4zelNPS1JzSndnVTNRUktzRWh4cFQxVHY0Y3k3NnA3NjdMaW5JTk9vbkloSEJWR2ZLNzlKMHJDUFBkc1VKZnB0QnZnZzBNanhRK212cVBQRnY4YUM0QW9lbFk3bDMxcUYrUEJha1ovd3hub0huNkVJWU4rK3V4RDZRdXZ4Rzdzc1BxT1VBTzBRc2dHYjhqbnhLbm9XMlUxeExDY3QwUFExZGFmMEQzcXRHNlBacTdEVGhYRHJBbHQvNVVhL3VRWHM2U0s1a1Z3bjZCUWEraEUyZk5OMDROZTl4SzZMSTN3Z295blMvT3Y5cmd5MUQrcUdSemVud3hqQkd3aE9ac2FQQVJSSUdYMlVnWG5zUnRrOE1rcklZWHJtak92L2FwTklvYkRSNTdiTUJQY1hOV3lqK2VhNG1remVnem5Ec1BzcG81bElCQit3UHB3QlZhYXZQa0U2d3MvSU1YdGhaWEpid1E4NnBndzg3Nk5adnhXUUZqKzJYNXpZUk4yVVAvSEZwQmxEc295YWlGVFJQZGkrbWlzV3BLLy9OSWFqZUUxWm0xV2xMUEpXQWpZOXVFSmsrZjRONExLdWJQcWtxaU8wRWhlK0Q5MUx1MGRIZEY0SlpoZFNOSGNVUXFRbUR6VkFDaVdZWXN6djlDNER6cU1pY0ozZEl6VUpSNUducXZXeFdqRFozeW9ZUWtPYzlHdEpmMmhIUVhyMlc5d3V5R3k2dXVXQ2FJME0zcS8wWVpocytzdEpuUFlPV0FPNWg4cWd0eVpKcFJGTXA5RzZYS2ZtQ2Qzc3dIZENFRnFvWjI0dXhFZUFWbmg4WkZndXVYOHRxS1lkVVN5ejl0VlZnaHhZaEtJZThncUgyRzhTR0x5N0l3bVRyMlpHTW1FMlJORzN2NVJRSHBVZEZVc2F1bDJjNWgyaUJrb1ljWWNpRG9OQ3VvcDAxaDZzWkNLd0YyY0pYL1RzUE5vV2c5dk5xdXdldWlyMURQYk5vRjM0WnVMMDhWZGVWWFdON1JHZXhBbGU5RHd1SEdHN0V6dFJlSjUyZVM4emRxYlJ0c3RPa2ZrMXpNcEtFbHlkaStpcWtHUFFsTEcwY2NqSWt6Vi9pYXlmM0VtejkrcUl5K2s5OUNoYVBWdkxVRk5IMVdMNzM4UUZCeGhneGROYnVldHRHaSsyaEM2bzdEY2FMV1dlenJndy91WmRCbHc2M3hvVi9SbDNHRFNRd3RHNHpiaDJlMnZTUXRtL3dtSlZNWGR3b2loczhzODFIZ2FoVmFGMGlzOG9SM3ZrVFU0ek5RU1Q4L2hUZEEyVHBQTzQxMFBiTkEvWUdUcGQvRTQ0Vm1Yb3dmWWxiaDVOQVp6a0FaM0QvTVcxTnR6Z3A2dzJ5ZmVKOGxrNjl1K2I3ckV1ZXNMUHpSOG1aOHkvRE9ic29OU0FacC9NVE91Ry9HYVVyVEFmc3dNYm9DTTVDNGt2c2tLWllHOEcrWU9VbDYwc3JSSDRLSHFPdzFCVkVjU2V1SzJHRktwOWFYNjJiVEFyOWNIZitTdkorVkhmZ003eFNnc3RpcTVvTlRodXhRRTBlN2R3bnNKY3BZZGtja0h3cGhlK3o0MVI0N1hjSmxHdysyQnhMNnVlWmZIcHR2eWxRNHRpcE51MWtCa0hkelJCWk9aM2NGRXIxMDcwVGJ1SUppTVMwTFFFdjFVSVhMT1RvckNNU0dkVE52SnVtbkhZZmhTRzNSYloyOFpJUnNmMmtqbEdmZEdIZ0xIamdTRGNQdjVoSXQ1S2cxT1p1OHJEQzl2bkI2eVBBdjBPVFEwUU1UMDBaYlVkODlRWXVKdVBQSVVVYmFncUZGYVN4cDEwZEY1UVJiU3hNbTRWbTZXVGRzb1dSUVkzSG1kTGJBQlhHTT0=", + "pin": "111111" + } +] diff --git a/src/components/App/Splash/index.tsx b/src/components/App/Splash/index.tsx index b1dd2db84..fe617ce30 100644 --- a/src/components/App/Splash/index.tsx +++ b/src/components/App/Splash/index.tsx @@ -8,9 +8,9 @@ import { getAboutData, getStats } from '~/network/fetchSourcesData' import { useAppStore } from '~/stores/useAppStore' import { useDataStore } from '~/stores/useDataStore' import { colors, formatSplashMessage, formatStatsResponse } from '~/utils' -import { SphereAnimation } from './SpiningSphere' import { AnimatedTextContent } from './animated' -import { Message, initialMessageData } from './constants' +import { initialMessageData, Message } from './constants' +import { SphereAnimation } from './SpiningSphere' export const Splash = () => { const [message, setMessage] = useState(initialMessageData) @@ -61,7 +61,9 @@ export const Splash = () => { } return () => { - clearInterval(intervalId) + if (intervalId) { + clearInterval(intervalId) + } } }, [appMetaData, fetchData, isFetching, message, stats]) From 71b7aef19272d5dcdc71cb25857132ee57e5118e Mon Sep 17 00:00:00 2001 From: Oluwatobi Bamidele Date: Mon, 7 Oct 2024 19:49:38 +0100 Subject: [PATCH 05/20] fix: trying to debug where the error is from --- src/components/Auth/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/Auth/index.tsx b/src/components/Auth/index.tsx index 43aa7c763..80879ed16 100644 --- a/src/components/Auth/index.tsx +++ b/src/components/Auth/index.tsx @@ -133,7 +133,7 @@ export const AuthGuard = ({ children }: PropsWithChildren) => { return ( <> - {splashDataLoading && } + {/* {splashDataLoading && } */} {children} ) From 93eda35f090925fd3a07f9a118d1185e498c4488 Mon Sep 17 00:00:00 2001 From: Oluwatobi Bamidele Date: Mon, 7 Oct 2024 20:21:45 +0100 Subject: [PATCH 06/20] fix: refactor mounting splash twice --- src/components/Auth/index.tsx | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/src/components/Auth/index.tsx b/src/components/Auth/index.tsx index 80879ed16..677775e7f 100644 --- a/src/components/Auth/index.tsx +++ b/src/components/Auth/index.tsx @@ -14,10 +14,10 @@ import { isAndroid, isWebView } from '~/utils/isWebView' import { Splash } from '../App/Splash' export const AuthGuard = ({ children }: PropsWithChildren) => { - const [unAuthorized, setUnauthorized] = useState(true) + const [unAuthorized, setUnauthorized] = useState(false) const { setBudget, setIsAdmin, setPubKey, setIsAuthenticated } = useUserStore((s) => s) const { splashDataLoading } = useDataStore((s) => s) - const [showSplashScreen, setShowSplashScreen] = useState(true) + const [renderMainPage, setRenderMainPage] = useState(false) const [ setTrendingTopicsFeatureFlag, @@ -66,8 +66,6 @@ export const AuthGuard = ({ children }: PropsWithChildren) => { try { const res = await getIsAdmin() - setUnauthorized(false) - if (res.data) { localStorage.setItem('admin', JSON.stringify({ isAdmin: res.data.isAdmin })) @@ -80,10 +78,10 @@ export const AuthGuard = ({ children }: PropsWithChildren) => { } setIsAuthenticated(true) + setRenderMainPage(true) } catch (error) { /* not an admin */ - } finally { - setShowSplashScreen(false) + setUnauthorized(true) } }, [ setIsAuthenticated, @@ -119,10 +117,6 @@ export const AuthGuard = ({ children }: PropsWithChildren) => { const message = 'This is a private Graph, Contact Admin' - if (showSplashScreen) { - return <>{splashDataLoading && } - } - if (unAuthorized) { return ( @@ -133,8 +127,8 @@ export const AuthGuard = ({ children }: PropsWithChildren) => { return ( <> - {/* {splashDataLoading && } */} - {children} + {splashDataLoading && } + {renderMainPage && children} ) } From 099f79fdcdfdda298c3bb435e45f1b267fcbcdd6 Mon Sep 17 00:00:00 2001 From: Oluwatobi Bamidele Date: Mon, 7 Oct 2024 20:37:23 +0100 Subject: [PATCH 07/20] fix: add 5 seconds delay before proceeding in e2e --- src/components/Auth/index.tsx | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/components/Auth/index.tsx b/src/components/Auth/index.tsx index 677775e7f..94334e3b0 100644 --- a/src/components/Auth/index.tsx +++ b/src/components/Auth/index.tsx @@ -77,6 +77,11 @@ export const AuthGuard = ({ children }: PropsWithChildren) => { setChatInterfaceFeatureFlag(res.data.chatInterface || false) } + if (isE2E) { + // eslint-disable-next-line no-promise-executor-return + await new Promise((r) => setTimeout(r, 5000)) + } + setIsAuthenticated(true) setRenderMainPage(true) } catch (error) { From f3893a37bbef2455ded8a49db851a9fb590e7e4c Mon Sep 17 00:00:00 2001 From: Oluwatobi Bamidele Date: Mon, 7 Oct 2024 20:46:20 +0100 Subject: [PATCH 08/20] fix: comment out splash screen --- src/components/Auth/index.tsx | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/components/Auth/index.tsx b/src/components/Auth/index.tsx index 94334e3b0..757448c7b 100644 --- a/src/components/Auth/index.tsx +++ b/src/components/Auth/index.tsx @@ -11,7 +11,6 @@ import { useUserStore } from '~/stores/useUserStore' import { sphinxBridge } from '~/testSphinxBridge' import { updateBudget } from '~/utils' import { isAndroid, isWebView } from '~/utils/isWebView' -import { Splash } from '../App/Splash' export const AuthGuard = ({ children }: PropsWithChildren) => { const [unAuthorized, setUnauthorized] = useState(false) @@ -132,7 +131,7 @@ export const AuthGuard = ({ children }: PropsWithChildren) => { return ( <> - {splashDataLoading && } + {/* {splashDataLoading && } */} {renderMainPage && children} ) From 8f5cd732ea5cde5d7e397c6e9267f8cb68056c7b Mon Sep 17 00:00:00 2001 From: Oluwatobi Bamidele Date: Mon, 7 Oct 2024 20:53:57 +0100 Subject: [PATCH 09/20] fix: comment put unused variables --- src/components/Auth/index.tsx | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/components/Auth/index.tsx b/src/components/Auth/index.tsx index 757448c7b..9ffe1003a 100644 --- a/src/components/Auth/index.tsx +++ b/src/components/Auth/index.tsx @@ -5,7 +5,6 @@ import { Flex } from '~/components/common/Flex' import { Text } from '~/components/common/Text' import { isDevelopment, isE2E } from '~/constants' import { getIsAdmin } from '~/network/auth' -import { useDataStore } from '~/stores/useDataStore' import { useFeatureFlagStore } from '~/stores/useFeatureFlagStore' import { useUserStore } from '~/stores/useUserStore' import { sphinxBridge } from '~/testSphinxBridge' @@ -15,7 +14,7 @@ import { isAndroid, isWebView } from '~/utils/isWebView' export const AuthGuard = ({ children }: PropsWithChildren) => { const [unAuthorized, setUnauthorized] = useState(false) const { setBudget, setIsAdmin, setPubKey, setIsAuthenticated } = useUserStore((s) => s) - const { splashDataLoading } = useDataStore((s) => s) + // const { splashDataLoading } = useDataStore((s) => s) const [renderMainPage, setRenderMainPage] = useState(false) const [ From d61a3e2dad2869dc6e059ad420bdd8250801c319 Mon Sep 17 00:00:00 2001 From: Oluwatobi Bamidele Date: Mon, 7 Oct 2024 21:05:22 +0100 Subject: [PATCH 10/20] fix: uncomment splash screen --- src/components/Auth/index.tsx | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/components/Auth/index.tsx b/src/components/Auth/index.tsx index 9ffe1003a..94334e3b0 100644 --- a/src/components/Auth/index.tsx +++ b/src/components/Auth/index.tsx @@ -5,16 +5,18 @@ import { Flex } from '~/components/common/Flex' import { Text } from '~/components/common/Text' import { isDevelopment, isE2E } from '~/constants' import { getIsAdmin } from '~/network/auth' +import { useDataStore } from '~/stores/useDataStore' import { useFeatureFlagStore } from '~/stores/useFeatureFlagStore' import { useUserStore } from '~/stores/useUserStore' import { sphinxBridge } from '~/testSphinxBridge' import { updateBudget } from '~/utils' import { isAndroid, isWebView } from '~/utils/isWebView' +import { Splash } from '../App/Splash' export const AuthGuard = ({ children }: PropsWithChildren) => { const [unAuthorized, setUnauthorized] = useState(false) const { setBudget, setIsAdmin, setPubKey, setIsAuthenticated } = useUserStore((s) => s) - // const { splashDataLoading } = useDataStore((s) => s) + const { splashDataLoading } = useDataStore((s) => s) const [renderMainPage, setRenderMainPage] = useState(false) const [ @@ -130,7 +132,7 @@ export const AuthGuard = ({ children }: PropsWithChildren) => { return ( <> - {/* {splashDataLoading && } */} + {splashDataLoading && } {renderMainPage && children} ) From 32bf06491427d184bae7b4a450f4eda7ccbc514c Mon Sep 17 00:00:00 2001 From: Oluwatobi Bamidele Date: Mon, 7 Oct 2024 21:17:42 +0100 Subject: [PATCH 11/20] fix: adding try catch to destroy function --- src/components/common/SiriLikeButton/SiriLikeButton.tsx | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/components/common/SiriLikeButton/SiriLikeButton.tsx b/src/components/common/SiriLikeButton/SiriLikeButton.tsx index d94927fbd..bdf55d59f 100644 --- a/src/components/common/SiriLikeButton/SiriLikeButton.tsx +++ b/src/components/common/SiriLikeButton/SiriLikeButton.tsx @@ -9,7 +9,11 @@ export const SiriLikeButton = ({ children, ...props }: ButtonBaseProps) => { const destroy = createBtn(ref) return () => { - destroy?.() + try { + destroy?.() + } catch (error) { + /* can't check destroy */ + } } }, []) From ecd5fcefe8e18505de9661da4d5262b12d3a0544 Mon Sep 17 00:00:00 2001 From: Oluwatobi Bamidele Date: Mon, 7 Oct 2024 21:27:42 +0100 Subject: [PATCH 12/20] fix: adding conditionals to lottie destroy --- .../App/ActionsToolbar/PlayerControl/Equalizer/index.tsx | 2 +- .../App/SideBar/Episode/Timestamp/Equalizer/index.tsx | 2 +- src/components/Stats/Animation/index.tsx | 2 +- .../Universe/Graph/LoadingNodes/Animation/index.tsx | 2 +- src/components/common/SiriLikeButton/SiriLikeButton.tsx | 6 +----- 5 files changed, 5 insertions(+), 9 deletions(-) diff --git a/src/components/App/ActionsToolbar/PlayerControl/Equalizer/index.tsx b/src/components/App/ActionsToolbar/PlayerControl/Equalizer/index.tsx index 9a755a458..00b293510 100644 --- a/src/components/App/ActionsToolbar/PlayerControl/Equalizer/index.tsx +++ b/src/components/App/ActionsToolbar/PlayerControl/Equalizer/index.tsx @@ -19,7 +19,7 @@ export const Equalizer = () => { return () => { if (lottieRef.current) { - lottieRef.current.destroy() + lottieRef?.current?.destroy() } } }, []) diff --git a/src/components/App/SideBar/Episode/Timestamp/Equalizer/index.tsx b/src/components/App/SideBar/Episode/Timestamp/Equalizer/index.tsx index d7a35dd13..2dc10c858 100644 --- a/src/components/App/SideBar/Episode/Timestamp/Equalizer/index.tsx +++ b/src/components/App/SideBar/Episode/Timestamp/Equalizer/index.tsx @@ -19,7 +19,7 @@ export const Equalizer = () => { return () => { if (lottieRef.current) { - lottieRef.current.destroy() + lottieRef?.current?.destroy() } } }, []) diff --git a/src/components/Stats/Animation/index.tsx b/src/components/Stats/Animation/index.tsx index 5620c23eb..604b1c3cf 100644 --- a/src/components/Stats/Animation/index.tsx +++ b/src/components/Stats/Animation/index.tsx @@ -19,7 +19,7 @@ export const Animation = () => { return () => { if (lottieRef.current) { - lottieRef.current.destroy() + lottieRef?.current?.destroy() } } }, []) diff --git a/src/components/Universe/Graph/LoadingNodes/Animation/index.tsx b/src/components/Universe/Graph/LoadingNodes/Animation/index.tsx index f1f21baf2..f25661f32 100644 --- a/src/components/Universe/Graph/LoadingNodes/Animation/index.tsx +++ b/src/components/Universe/Graph/LoadingNodes/Animation/index.tsx @@ -19,7 +19,7 @@ export const Animation = ({ meshId }: { meshId: string }) => { return () => { if (lottieRef.current) { - lottieRef.current.destroy() + lottieRef?.current?.destroy() } } }, [meshId]) diff --git a/src/components/common/SiriLikeButton/SiriLikeButton.tsx b/src/components/common/SiriLikeButton/SiriLikeButton.tsx index bdf55d59f..d94927fbd 100644 --- a/src/components/common/SiriLikeButton/SiriLikeButton.tsx +++ b/src/components/common/SiriLikeButton/SiriLikeButton.tsx @@ -9,11 +9,7 @@ export const SiriLikeButton = ({ children, ...props }: ButtonBaseProps) => { const destroy = createBtn(ref) return () => { - try { - destroy?.() - } catch (error) { - /* can't check destroy */ - } + destroy?.() } }, []) From e0835c45c96b943020ee479ea90bed5ec3c9a0da Mon Sep 17 00:00:00 2001 From: Oluwatobi Bamidele Date: Mon, 7 Oct 2024 21:39:07 +0100 Subject: [PATCH 13/20] fix: comment out sphere animation --- src/components/App/Splash/index.tsx | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/components/App/Splash/index.tsx b/src/components/App/Splash/index.tsx index fe617ce30..0d49642f3 100644 --- a/src/components/App/Splash/index.tsx +++ b/src/components/App/Splash/index.tsx @@ -10,7 +10,6 @@ import { useDataStore } from '~/stores/useDataStore' import { colors, formatSplashMessage, formatStatsResponse } from '~/utils' import { AnimatedTextContent } from './animated' import { initialMessageData, Message } from './constants' -import { SphereAnimation } from './SpiningSphere' export const Splash = () => { const [message, setMessage] = useState(initialMessageData) @@ -70,7 +69,7 @@ export const Splash = () => { return ( - + {/* */} {appMetaData?.title} From 6de765cc462b72230cb0d32cb5fd991aa798affe Mon Sep 17 00:00:00 2001 From: Oluwatobi Bamidele Date: Mon, 7 Oct 2024 22:04:14 +0100 Subject: [PATCH 14/20] fix: render Lottie dynamically --- .../App/Splash/SpiningSphere/index.tsx | 49 +++++++++++++------ src/components/App/Splash/index.tsx | 3 +- 2 files changed, 35 insertions(+), 17 deletions(-) diff --git a/src/components/App/Splash/SpiningSphere/index.tsx b/src/components/App/Splash/SpiningSphere/index.tsx index 72df649ae..c62c8af22 100644 --- a/src/components/App/Splash/SpiningSphere/index.tsx +++ b/src/components/App/Splash/SpiningSphere/index.tsx @@ -1,20 +1,37 @@ +import { useEffect, useState } from 'react' import Lottie from 'react-lottie' import { Flex } from '~/components/common/Flex' import preloadData from './preloader.json' -export const SphereAnimation = () => ( - - - -) +export const SphereAnimation = () => { + const [isReady, setIsReady] = useState(false) + + useEffect(() => { + setIsReady(true) + + return () => { + setIsReady(false) + } + }, []) + + if (!isReady) { + return <> + } + + return ( + + + + ) +} diff --git a/src/components/App/Splash/index.tsx b/src/components/App/Splash/index.tsx index 0d49642f3..fe617ce30 100644 --- a/src/components/App/Splash/index.tsx +++ b/src/components/App/Splash/index.tsx @@ -10,6 +10,7 @@ import { useDataStore } from '~/stores/useDataStore' import { colors, formatSplashMessage, formatStatsResponse } from '~/utils' import { AnimatedTextContent } from './animated' import { initialMessageData, Message } from './constants' +import { SphereAnimation } from './SpiningSphere' export const Splash = () => { const [message, setMessage] = useState(initialMessageData) @@ -69,7 +70,7 @@ export const Splash = () => { return ( - {/* */} + {appMetaData?.title} From 056985257ed1562781cb25731894f05606d6deec Mon Sep 17 00:00:00 2001 From: Oluwatobi Bamidele Date: Mon, 7 Oct 2024 22:21:07 +0100 Subject: [PATCH 15/20] fix: import all as preloadData --- src/components/App/Splash/SpiningSphere/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/App/Splash/SpiningSphere/index.tsx b/src/components/App/Splash/SpiningSphere/index.tsx index c62c8af22..b5fb30e28 100644 --- a/src/components/App/Splash/SpiningSphere/index.tsx +++ b/src/components/App/Splash/SpiningSphere/index.tsx @@ -1,7 +1,7 @@ import { useEffect, useState } from 'react' import Lottie from 'react-lottie' import { Flex } from '~/components/common/Flex' -import preloadData from './preloader.json' +import * as preloadData from './preloader.json' export const SphereAnimation = () => { const [isReady, setIsReady] = useState(false) From fb9a7d5f61798651e4a1d82f89aab8f9acf6f681 Mon Sep 17 00:00:00 2001 From: Oluwatobi Bamidele Date: Mon, 7 Oct 2024 23:01:26 +0100 Subject: [PATCH 16/20] fix: convert sphere animation to user lottie web rather than react lottie --- .../App/Splash/SpiningSphere/index.tsx | 37 ++++++++++++------- 1 file changed, 24 insertions(+), 13 deletions(-) diff --git a/src/components/App/Splash/SpiningSphere/index.tsx b/src/components/App/Splash/SpiningSphere/index.tsx index b5fb30e28..b9a501ffc 100644 --- a/src/components/App/Splash/SpiningSphere/index.tsx +++ b/src/components/App/Splash/SpiningSphere/index.tsx @@ -1,26 +1,37 @@ -import { useEffect, useState } from 'react' -import Lottie from 'react-lottie' +import lottie, { AnimationItem } from 'lottie-web' import { Flex } from '~/components/common/Flex' -import * as preloadData from './preloader.json' + +import { useEffect, useRef } from 'react' +import preloadData from './preloader.json' export const SphereAnimation = () => { - const [isReady, setIsReady] = useState(false) + const lottieRef = useRef(null) useEffect(() => { - setIsReady(true) + const container = document.getElementById('lottie-sphere-animation') + + if (container) { + lottieRef.current = lottie.loadAnimation({ + container, + animationData: preloadData, + loop: true, + autoplay: true, + rendererSettings: { + preserveAspectRatio: 'xMidYMid slice', + }, + }) + } return () => { - setIsReady(false) + if (lottieRef.current) { + lottieRef?.current?.destroy() + } } }, []) - if (!isReady) { - return <> - } - return ( - - + {/* { }, }} width={167} - /> + /> */} ) } From edbbda73a635b629ccde39624c7bd15eebcf98bb Mon Sep 17 00:00:00 2001 From: Oluwatobi Bamidele Date: Mon, 7 Oct 2024 23:14:50 +0100 Subject: [PATCH 17/20] fix: clean up commented code --- .../App/Splash/SpiningSphere/index.tsx | 17 +---------------- src/components/AppContainer/index.tsx | 2 -- 2 files changed, 1 insertion(+), 18 deletions(-) diff --git a/src/components/App/Splash/SpiningSphere/index.tsx b/src/components/App/Splash/SpiningSphere/index.tsx index b9a501ffc..7fa729bd5 100644 --- a/src/components/App/Splash/SpiningSphere/index.tsx +++ b/src/components/App/Splash/SpiningSphere/index.tsx @@ -29,20 +29,5 @@ export const SphereAnimation = () => { } }, []) - return ( - - {/* */} - - ) + return } diff --git a/src/components/AppContainer/index.tsx b/src/components/AppContainer/index.tsx index d8c5c347e..a9678ab2d 100644 --- a/src/components/AppContainer/index.tsx +++ b/src/components/AppContainer/index.tsx @@ -8,11 +8,9 @@ const LazyApp = lazy(() => import('../App').then(({ App }) => ({ default: App }) export const AppContainer = () => { const App = - // const { splashDataLoading } = useDataStore((s) => s) return ( - {/* {splashDataLoading && } */} Loading...}> From d783705a971fc9dcbf8533d273178be51a1ec92e Mon Sep 17 00:00:00 2001 From: Oluwatobi Bamidele Date: Mon, 7 Oct 2024 23:17:24 +0100 Subject: [PATCH 18/20] fix: undo conditional chaining --- .../App/ActionsToolbar/PlayerControl/Equalizer/index.tsx | 2 +- .../App/SideBar/Episode/Timestamp/Equalizer/index.tsx | 2 +- src/components/App/Splash/SpiningSphere/index.tsx | 2 +- src/components/Stats/Animation/index.tsx | 2 +- src/components/Universe/Graph/LoadingNodes/Animation/index.tsx | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/components/App/ActionsToolbar/PlayerControl/Equalizer/index.tsx b/src/components/App/ActionsToolbar/PlayerControl/Equalizer/index.tsx index 00b293510..9a755a458 100644 --- a/src/components/App/ActionsToolbar/PlayerControl/Equalizer/index.tsx +++ b/src/components/App/ActionsToolbar/PlayerControl/Equalizer/index.tsx @@ -19,7 +19,7 @@ export const Equalizer = () => { return () => { if (lottieRef.current) { - lottieRef?.current?.destroy() + lottieRef.current.destroy() } } }, []) diff --git a/src/components/App/SideBar/Episode/Timestamp/Equalizer/index.tsx b/src/components/App/SideBar/Episode/Timestamp/Equalizer/index.tsx index 2dc10c858..d7a35dd13 100644 --- a/src/components/App/SideBar/Episode/Timestamp/Equalizer/index.tsx +++ b/src/components/App/SideBar/Episode/Timestamp/Equalizer/index.tsx @@ -19,7 +19,7 @@ export const Equalizer = () => { return () => { if (lottieRef.current) { - lottieRef?.current?.destroy() + lottieRef.current.destroy() } } }, []) diff --git a/src/components/App/Splash/SpiningSphere/index.tsx b/src/components/App/Splash/SpiningSphere/index.tsx index 7fa729bd5..b725120d4 100644 --- a/src/components/App/Splash/SpiningSphere/index.tsx +++ b/src/components/App/Splash/SpiningSphere/index.tsx @@ -24,7 +24,7 @@ export const SphereAnimation = () => { return () => { if (lottieRef.current) { - lottieRef?.current?.destroy() + lottieRef.current.destroy() } } }, []) diff --git a/src/components/Stats/Animation/index.tsx b/src/components/Stats/Animation/index.tsx index 604b1c3cf..5620c23eb 100644 --- a/src/components/Stats/Animation/index.tsx +++ b/src/components/Stats/Animation/index.tsx @@ -19,7 +19,7 @@ export const Animation = () => { return () => { if (lottieRef.current) { - lottieRef?.current?.destroy() + lottieRef.current.destroy() } } }, []) diff --git a/src/components/Universe/Graph/LoadingNodes/Animation/index.tsx b/src/components/Universe/Graph/LoadingNodes/Animation/index.tsx index f25661f32..f1f21baf2 100644 --- a/src/components/Universe/Graph/LoadingNodes/Animation/index.tsx +++ b/src/components/Universe/Graph/LoadingNodes/Animation/index.tsx @@ -19,7 +19,7 @@ export const Animation = ({ meshId }: { meshId: string }) => { return () => { if (lottieRef.current) { - lottieRef?.current?.destroy() + lottieRef.current.destroy() } } }, [meshId]) From 8ef6790939d33db4831240e592a0d13fc1406847 Mon Sep 17 00:00:00 2001 From: Oluwatobi Bamidele Date: Mon, 7 Oct 2024 23:24:35 +0100 Subject: [PATCH 19/20] fix: remove relay nodes data --- relay/nodes.json | 53 +----------------------------------------------- 1 file changed, 1 insertion(+), 52 deletions(-) diff --git a/relay/nodes.json b/relay/nodes.json index 0944d14f1..fe51488c7 100644 --- a/relay/nodes.json +++ b/relay/nodes.json @@ -1,52 +1 @@ -[ - { - "alias": "alice", - "pubkey": "03a394d0ebf0d003124ab130c6b12b8b990a50a30a464354800a51981ba745bb07", - "ip": "http://alice.sphinx:3001", - "external_ip": "http://localhost:3001", - "authToken": "5BqN43ARHn/fDQVbYn7g", - "transportToken": "MIIBCgKCAQEAyTYUYm+5F1FpxVMwqn83ouzVTgffnRdEtf7aFNWHQxeNdk8BvuNF\nxfPUxnGK7yfsdFaDFtUpOnXZrANCzHsW8IiOgqagweHeOki4vJaJheD0oFit+ZUL\nYTbVynLAM0bx7gTSsh0XbTfZYB7Am93/8UlYHhZ/LgNHb/2u/6dF0x1esdNJVzH5\nbH5t/YbhOtCmEemECPbB4G6B7HsR4d1SUmEpqH7TnNbJ32x65n5f8qLUQbOLbpmP\nc0T/cL16ug5Lf7NNr7126jJj/twProLbKc6rpchhm4208zoTxBmzQGmAZql/NYg3\nKoTkdHDRgajPVntFyy4zHwouDEh/AoSVjQIDAQAB", - "contact_key": "MIIBCgKCAQEA0xQN2SMcyn/KkTfw1s9IcwaI8o+SA8SIrQSMgcdhpPQKCAQbiVFIS1Je8djn2A5FDjCvvjGURhirFxYZqSx0ycske2gwtQ0wQYEB90gFpqPkUCJWQJAbhRLhlfGzrReofhlvovlxzvYcw1Yowq+YWlr7MvQx++8Al8epgJFW/sTGwYHASsB583CeSKVkYAegJOz9bxlcWUwnqxjepH4paNgimeNT+/MY0Szmt2ASSGX+qX7VwUpb+C3hK4v/IbhYzTeon19204aUeURrt8LGZPoGTO6MAoo64YCy1wpY7L36GzPRRtIqRnt0L4M8PaH4QGOIuQcj4Rg78HHvZsrWPwIDAQAB", - "privkey": "MIIEpAIBAAKCAQEA0xQN2SMcyn/KkTfw1s9IcwaI8o+SA8SIrQSMgcdhpPQKCAQbiVFIS1Je8djn2A5FDjCvvjGURhirFxYZqSx0ycske2gwtQ0wQYEB90gFpqPkUCJWQJAbhRLhlfGzrReofhlvovlxzvYcw1Yowq+YWlr7MvQx++8Al8epgJFW/sTGwYHASsB583CeSKVkYAegJOz9bxlcWUwnqxjepH4paNgimeNT+/MY0Szmt2ASSGX+qX7VwUpb+C3hK4v/IbhYzTeon19204aUeURrt8LGZPoGTO6MAoo64YCy1wpY7L36GzPRRtIqRnt0L4M8PaH4QGOIuQcj4Rg78HHvZsrWPwIDAQABAoIBAQCcbbtJlY0LwaMk9hlFiP6/SDOL17y1kBxeZQWgVFvX/IfGowypOpTiRVxZzY8cfo7M0mYcBPBG9pctF9LSnkC7IBKcZn3aX7jIgswrL7QIaGOWw6u6U1Ihz/lgv2ySNftH4J/sXwLqB1kPprW0ep/lLpIFlBXLCLgew/ipcIzRZzj4q0rZSvnh5ownFx0KHAi4xUuTVxSPVsYuKDyFQeVobyG0NDE9hw8pPOgXVCczfc8+2B5AXfKKEKGUA39XfHSaGJytWSAHgx6A5oULrkgtuQXxB/Yzp02LsAbUGjTjz2zrOkU4AS1cxNT6MJBf4lwZy114rmM7wfuRKyrErBf5AoGBAOqx2X014WVJYqdo/pak5sjvQdZY8L1/BZVzH+00uUPuzjJPf+57ayOBX64laVFv7aPSGJ1KX4xrrSJDvknenPy18+v9xp1RbHrzh4JdL2HdRO7hRviV/C9oqkoWT/K6O99b/9SSXAxP96rJTp+AmdOpG+HIl9RP+3cVocfJEV0NAoGBAOY9YBB/1W8jm9GJbfj+MbgEjKYAAyqXXEYXk1lhZgnkK3tKrcADvfm/ixiuJq8Cyiz4k9AcEVoI/of9h5PW+faQ64UQ7dW5xEIugVXbx0ZBGm+YqFrP1X7UdoeY4VsqUigvIkZTpPD8r5lwjKHsLPsihy+AXzmAlk10DdGbcWV7AoGAPPYLVyGqtUN1k6SLFJgqtiCnikS5647V5Xbs4RFj2ghqmNjbkxeNwcA2GSbwj02yfW3yJNEPtoq1gwPzpn5jaqTcgfz+HRjsQ5eEKFGKIDJ4WFA9vg4/XhUivnHDPHoxWRgtgIqvzCbtXvhBKt8dlcQEUQZooaZQ3CLLTfilQPUCgYEAyA4SV6PL38sQDGyemti8eMmzMFYYajykl97KUMKZuASDZ5jHCm3193lgsmw3/p+s7pB7VzvcM+BW0fEQifwkrALWMoQ4NBo7Fspz5ReXukq9XrRFrMqkFpUj/MRxJBbM1k/GN1dcnWziY6/w8o1VtE0XK8Yed8dsUhaCH1wyltsCgYBRinf4zRDEZoBdM/ag9/K10fLg9FC5AX1TkawQDNSa2/D92o5HrQsVbRgk8U/mIBaRNIQhZjKULE2GdKU6/8+DzWx6n8jk0I8gaKIx0iWkmNu7JL078dkcfIMepBrCbero2+wyZAAb0/riqpX0RQhWpBmCHu+s1yzdaAfptEbRqQ==", - "exported_keys": "a2V5czo6QXdFQng0S1NoRVpGelNhSDAwd2R4ZlBkZFh0N3cwOW93T25xNUtud1pzTHBTaDFEVDdqbFFPWVo0cERtdTFBQzNYT1N5dzJQZzhpMTFDSzVramtWamlpeEdvVlZnUDROcnQyRnVvTVpkT3VPT2VKOWUzbE8vTmlPV2xvNWo3aHZhZ2t0eU8zSEl5aVVZY3RrZjA4eHhLeEo1dEJJdVJLcDl3VDArUHM2QnA5QVRjWjRaMmorT2Z5SlNlZlpac25qUG1pY0pvWnFkK29XMkllQWxGRzFENldHOC9Ja3UxTkliZGRIQ09YV0lqVjVpclNGcE9HVlZnWTdEQkhLRkx1NDRZeHZPamg2K25xdi9heDNlbTlqOU1yZ1VYQzliRGxzWFR0RU9Od2FYYzdiSFJ2b01DTlNyRnh4bFZ6UTFKZkZzNFBRVEJNNUx0cnhPbEt4aDU3THgvdEdLc2FLQW5qZGJsc1dzNlM3eXNnNjJtTGp3eDFPMDhkYmdUTUNPRnFBWWNLSmNuV1VmZ0dUWFJYOUZmeFcrbVJOL1MvL1ZET3VhUTh4Ujdmb0pQK2QzaGtDWHJqRFRIOXpjbkZTUGFEQTJXVUpycEI2YWdPVm9lcUNRRVNMd0NhOUhkUUJFeE9rZ0NCazMyQmZoeVYrazZrWWhwUGEzNDFsQ1NUYTBrc1JEdEY4UVNpZHJEMXlyUStwYXZ6REM2bHVuZEoxQXhGM2J3SkJzbmk4ZmxDbXJtbmw1SURmeFFPMXR1eXFwbVQ3ejhrekl0cHpiUC9iU0Y0TG1XQ2Z5Tk5hTzhXdDZXU20zTDJubUFBQ2E4d1k2VnpYTERUcHJRelZ6T1VGUmorRVE5bFdwYnMxRHN0Qy9sT3hBUStSaXVvM0w0UHdoUk5uUXQ5dXJoWWQ1aTZoekVmVWNaWDVxellKZDBiNXVDVU9uZzFjUlhoenZ6ZG5qbUhxaTFiVy9QalcyTGMvWE9rMzZDeXA3NUFjUFhUTVdEU291aWIraVVUMXN6YnNuNm43SWFjM2hhQVNoNjFVV2pUUW0vQmFLbDdhRXNxbWxZZmFraEpUS040QW41KzFRdVJXWHFJbkQwV2YyQytSZDdJQlMrczlWS1l5Sm95bGdHM25acmV6cys1TGVBbnc2NTVIQlUvc0Y2SjM5bU1FMDB0L0dVcXIrTmZWeU5Ed251NEQ0Rjk1ejNwbDlwYnl4V0p5MGN0aG5MZ1VWWHdEdVkzSVEzVnJxOVlYbWFidUZyb2VyNFJjRktzWEdnQ2xLb3N3b1lKU2pxek5HV2krUjViYk53ckticVY4U3JCcEZrR0N4VHBtR3dtTlN3ZWxBWjhoVjhLdzdtNzVIcm9PcFdQRmI3OEVvK2ZIOGpWZjdwbW5YeDgzdmM4RDhRRlE2dStrUnhFLzgxbGlKS3lpeDZpOU40cXNRZ3NqVUcweXJBTTdyZG5zWk4wN0FVaDdSckpMUHNvRFJsb0xRR1YwUmdEOHdHTjBRUGhqLzdpei9Fdm5JYWp5SWsrUkhwSFY3T2xsNG9pNDB3cFRpTUNUTGQ4dWdFT1ZmY1JuR0hpVEwrRnVXeEI2ODRlK1VNRU9GdFFYR2hjeFdickxoSHh0U3g1ZUQ1MEtsWGhyUExXclZGMUpVc1ZLdzZyTHV5YWFSb3U5M2xSeTdrVGVYcU00OCt2VDR2QXZtZGw4ZzR5KzdRZlJJdSs4eXF4NnI1TWFpZFhnZzhTaGVYZHJaRXlVRXo2U1JKaUxlZkJmSjVBa29FYm5kS1p3NENJb3AvT1h6Wm1hQWhLUmw2VmFRL2RMalNlUVBFb1ZzQTUrWnJMcGkrOHQxVmsvZW9Qbnl3NmVqSEIrMW8yRld2MnNsREF2cEtSMmZEOE53QXRsWXc5aS9nMHhmSTJMOUcvWWZ3OWV4UWllNC9CRUVNcjF2K09TdWFVQThvWWdna3MxWktLVlFwaWxnNVBUV3lTR2txNFVpU1cvQytHdkdoNEtENHlWb0JaSVhWVzdrYTdkMURMQmxGUlBiVzJlbHkrVDNid2hEdEYrRUZZR0p5Rzh6bENRNnlhYytJd052ZGtjM0R6VFlsQnJRUUNndXM3dDdRdkpKTy9rcmdZdnhjdlk0eU53M01ZUUNubllYRytvREFCRVIxbUlEelphcXZGc0hveXFnYmhrUW1Db3laVjZaRUJCcEJoQnpYWEI4N2F3ZEVIUHo1Z2w5VXNjZjlNTHlqNHkvNU1HcmRhVXJMbC8yZEpxSXNBQldmVGZJdno1OHdZTGxKYkhwbERTbGg0QUNJQ2dWV1c1QlpkK1M4NmpiKzNxVHI2VU4vT1BFZDc4WE1kdXBDZFltRG1INkJQcXM4ZjV2MmIrYWdkbnFWY0QzZnIyeU91MWYvdFpPbmVNVmxlYlFBTkF1d1J0VkhCVy9ZRU8xV2lYWm9qSFp0SHhIR2hKU09qOVFhSE1kZkxPVTAycnV1cDM2WDhyTWtzSlJpRlFNSm9jclN4amYvMFI4SVBrOE1ZZkMzVjJSMkx1NENDMWRGMXo2SXJRaW53V3VaaWowVXFHdHVBNHNtQ0dsUlprdDRRY3EzY1daT3JoK0VTbjlKMDlIRTE0b1NqdVV3ZW9PbHFEdkY0d056MFBRMmFQVkp3emVieTlmY1FUV090b0o0ZER2cW9ERHEzbVZTRU02M3NRSTEyZ3U3ZjZKTENOZGU3N1JHVVgvM0ZWT21Vc2o0NUpEcEdCMkdVWkJ3WTI4SGswdjI0RHdWa1JoRlpsNWlNRW1LODA2SXpkUWhUblRiUHpONEpOcURvU294d2ZTbEpXSzM5ckFWUUZONjAySGJtY0NOUStLdyt1aHc4QUJRMHo3SksvNUc4N2RWem5vQ2tNWS9sWVFlU3ZpNGNBV0pyZ29WL0RFbEx5dDZ6SjBhWUJoRnNoMnVnNTNQTUV6L2tIbm9hckFWQU1ickhNSFVOMTZzUWxuNnRicEFJWWNPSE5tOE9WOUs3aEVrRXhVYk02blowNGdUb2JWYk5ZV0c2UVB1US9mVWRGTysvUzRWQzkrdC81QjNxUkdBeEIxZTlxdTJxbER5NlhuWFRIbk5IY3dJbDQ5dHU1TEJ2NUZLd3hGYkh6ZkxKMW9QelFGdHdBUCtsU2JEaFBldUxvNnd0a0JhY0pucnlXNUxIaElXVjBVTjZBQll6SFVVc3JjcUZwcUJHcVFlZEs2TGRxRHNDd0EvcTRJMnhIZUhhSGNpY3kzS2xSVXZWREhzQlNUZUhKTFFMZ0p6MXN2ZjY4aVpweGVockIzaFdDc0U3ZGxXVExnb2xrVDlFbCtjdS9Wc0VhSWhKYmwxbEJieFBWSERybktaMFBoLzIvdm1qbXp4T3d4YW55a3lYT3ZYSUtFRFZNanpSVWQ1K0hWbW1EUVgvWUIxdVJDR1RTazhaTGxEeUx3M0dtQUJubkpYaUdXQ0tpQ1ZlTVpRWVMyNUplQ0FjUEJvaTkwOWt6N1UxR0V2aFlLczlFcjFFeTJmbWZUQmRxRCt4R0x3QnNydGxWNEIzVFg4bGNLRnBvREo2RXdwR0JnN0R0NmRDMEFzUTBVWE0reWJzSWk1RkF4bEpZdnEyenl4YkdpN2M2YnZRUXBnRG5pYXdKcFJPSmNCWDRXWjFqa0tSTENlWXU4TDBLbTVSVnJZbz0=", - "pin": "111111" - }, - { - "alias": "bob", - "pubkey": "02a38857848aca6b32ebcc3c85d07ee41354988f4f1e0b4e6ccd255eee6ed75b8d", - "ip": "http://bob.sphinx:3002", - "external_ip": "http://localhost:3002", - "authToken": "6e8pSIuXLMCJWtiWIOjw", - "transportToken": "MIIBCgKCAQEApwX5hF2icQm+8QZgD0XIhOG4lkbUIzHsqm+Nq6R/K7bTtGtoQsJA\nFPlDkCtrTMC+TX8Hg2ZKF3VzUWDZqeLbi2BzOZ/AqZTNVMeX97C9OODrvLHrA/aE\nmT0mmNQJApRxMnLBAJh8aq1+DFcvytb2FUKJbGW6TA/sxZlbmHyhnpL6zTtBNFLx\n89MVxQAv5pjnVv043o3kJyu9CYbIma4oE2Uq6btQ/O/ujYA/NLXrYV9KPFRYtT+D\n0Ooc49CKnvKbUEoxFZH8Z0DMo1iF3QiObCR0wnAwQ7V8fWFMdGnSK54cm41dPyqm\ntqpVodM7ARguSN4+HO7NofJc0zgcJCYenwIDAQAB", - "contact_key": "MIIBCgKCAQEAuMMFql1ztHmp+AsAk4K9T2czpr2cKsJSyS6VtgR5PSAiv0L8jzmB+7f9yZ6ctkMavFwAYUPAIhnRWZhdZm/Hv/YnF5FmZKtdFVPQo+t3xDmWQoiFDfQDU7g9+hkF300aqawN1xSuTdHjxkgjXTywEPdjDiqwn76Jt0x5Atn0AjOoEs408VZqLXZm3+KaiP2Zw5+gtkgn2WeD2YosaO5aVxHveYeGxs6Ys6lSw8NcgODHw7DtbBTEeMOrxqnH3NwGuopFNmbG7ybhI2LDygJW+7c1Wzc1sBbp6o8uUsSMN6E1W8bVLJficCP0LdOdUs6roMKaFT764ThKHuYkyRJJiwIDAQAB", - "privkey": "MIIEowIBAAKCAQEAuMMFql1ztHmp+AsAk4K9T2czpr2cKsJSyS6VtgR5PSAiv0L8jzmB+7f9yZ6ctkMavFwAYUPAIhnRWZhdZm/Hv/YnF5FmZKtdFVPQo+t3xDmWQoiFDfQDU7g9+hkF300aqawN1xSuTdHjxkgjXTywEPdjDiqwn76Jt0x5Atn0AjOoEs408VZqLXZm3+KaiP2Zw5+gtkgn2WeD2YosaO5aVxHveYeGxs6Ys6lSw8NcgODHw7DtbBTEeMOrxqnH3NwGuopFNmbG7ybhI2LDygJW+7c1Wzc1sBbp6o8uUsSMN6E1W8bVLJficCP0LdOdUs6roMKaFT764ThKHuYkyRJJiwIDAQABAoIBAFBy2myr9E2JDDEs2TthmfyQ+zSHKxCTPGjNF/MBT6kF7RtKl53ldGueWasInUPfRCzwAlpXnbk7dKSGa2THFzrGe48PiH4c/5Lhw98cEDIowPyHZSgGL8ysVJAphR0N/aYTfJNCNgM8eOlFT+CxJBi/Hypz/CQSWvStH6PWMyEhjlKAFd8REXvOipKFM28NCgiYAcfV+Av6oEG6SnJi4rYgQQgxGuXyedNP0aSVB33LTuxuvRFHRfbfMnQmZb6DdIbIfk1mD5lwxxSDIOmR/r4FQ3kTtRuFizfwUUzTRU0ZtfyOxE9VGvuAPrrEokHWTgBdmfSiY+NbUk3Le7HzFgECgYEA89hgbQOo7Pesx9kMR4HG62TT7V2+sarumbZ1IxgMFSYEPioL+XcCtPBK1E5eCVjP/qS65PRMXEJ1VIrKTvMYo5o3oSrAWDY6PTg5yzGqDVdyXs9oQP86MtqiLYLALA03u4com9WwI8x9lMUqdT2o/3/Bv/J/ZHINu1a3m89L1isCgYEAwfiz5Vx/n6/wLPnrutb7CAfv2dDAlM81/ObF+zUPueEBI/5K78mKS308blfEYdgEnUW8v3qK+sfzZcXgiCfniBE0z6DRl7T5RFi7Qmc6ko8PpNM51g1rnlMR4Z5iOvxqvXPUsFl56tfwxvHH+N9QvDeUB4uiu1f98Dv3C1TKCiECgYBvEyhRYDJpxyRoYIFMbVxMS8CRxnsf+Un4sPlIxCJ0271hB8wulbyg6Thc31nMji0oxKbxtiq2d/t0SEiBkBCwLYabnprBU+pRirQgz/2zWBsb/wRxXxGGqrrnWkDpkBfMD3Q7ECrNE9A8nVeK0kySHgMGyZKoEaAZrxWyHspfwwKBgEVBLcG7Z9m08HSueqrH7PLuGoXTUZ8P6H+2SYOqa0X7fvPB7DF27MiNG1FuRrCEdwlMB9r5vrtRPqbcopEaZkEfm5JyIcMfm0v6vkk0ICaJq5U20VSKkB0EHcNHUF0tGFMyEwMvvybJGK9/Td2epe29jj2vblejUAhA8LB8AnLhAoGBALtI0bkhJaTvBL/1u2bEJHcBMbp4NVVsCV/ejwvla+/AGHA+Mpo260eIElnbOiRq0Ln/JBpmE5QxZHQ0x066vc7QIeTZ2o3o/JTo1Y1VNaecY1uApP6c0HndGt8rgxDWyMc2R/TA+fsrkMUIJYnkvroDUFTquKtU3cF44vTVgBO9", - "exported_keys": "a2V5czo6QXdITXpUckYrM2R1YlQwUVozTEpVNGlBMkw0SHhRTVMzb1Zpc1ZIQkdZRjI3K2lNR2pXeDJsMEdJNkZja25BK1puUFNDTkJkQnhYQzA3ZXBycDdCMktVSmZpYmpCbFhLaDAwVjVzQ2ltUTZGa0tMaGZHL0lxQ2FWS1NvQXlWOGpXZEMrWU1JSG1odG9kSXNtNkZaTEFsUGpPcmN4d010dFg4ZTJoNTNVeitpQ016NHphck9ka0Y0K0hwcmxoWFNzeGlxa0ZWZkN5R081MForZy8rODJTaVUrV3JFdXEwazJkNEJmRzRBYUxKWVIxTHBQM3BPTG41YkNwem5OTzVibGZhQ2NycmIzdTBHSHRySWNrdTRrZ2dQbUdPaUNINWxnY0ZDazQ3RWQzYnluMlFkc2ZCL29iZkExdFNCMjRFUEowWE9iZU1Pdlk0STV4ZnNrbkt6QkxGUDFuQVNRNUlWMS9zTkMyRis2MnBkSklpNkhJd1IrSXkySkFVNHNrRDduMnU3bHY0cFF0YWgvRGMxWHpLRjBsdDlLSkk3YzZNdFNyWGpGSldNVFBNejY1Tm5zWnRiSFZwNGtiUkF5VGZQRVZJKy91U3FXdWVJWDRDSGUxMXNuQUdxNi9mb2VldGpOWVMwWEVranV6TERhdXlmYmp0SlhmeFpJNFMyem9Za0FxTnA3VWRQZ05RcmZvQUp4V2JMRTJEQmw1OGU3TTkyTlNJL01uaVBmdnJJd2dVRDVlRDlvZnZwYlJWeG5KNmlkSVpyNjZrdC9xNjZvaVdFSEtDakV5LzR1T3ZxVmcrK1VJTWM1TnYxZUs2d0dNRmZsdUdJdkhrMk54eVlZMmdPcXdxWmwzOUdsK3Y0SUhWVUtSVmlXYmdFeTFQbGRBQktMYnNRM2VxK0N4TXNySGxIK2NBR0Zac0JlMVdKN1NYaHVjZ3Y5Qnc1eXdhMDZKQlBoOG44ZFVsRSt3UDhUZFRXQzArencvelo2TTQ4b1FqaFhiRERsckZid1J5allMN0JnZlFiNUwrVTFEU2k4TTkrU0g0aUQwRUd5Y2Q3MmpEVU1VWiswNWVwTmJySGZYMnBWak1QbDZLbVFWSDJ0azExcW5GSFB5SXdJc3p1SkpkbWhBeEs0VXVaT3Njd0xJNk5XdUJTQW1IVXoyd3Zja29OMkhlaFFqdHNTUjFXZ0xPVzBWcnJkYjZTR0VKUEk0RFFoM0JXTDhBMGZnZW9zVHhHSTMvU2Q3UHo5UW9HcU5maU1iS1Z0L1I2MjhFam9RR1FhMFYvcys1M3MySFo0QzU3ZXNnSXUxbno4VTN2aEptc2NWcWs4aEdudjQ1aVp5K3pXSVlCOXA3YkxYUSsyQTI5ZGJXRS9nRld6VitCSUdRMFF6Mll4UTc5YXRRL2ZMejZUcmFxNElubmFYRjdvR2psSUtGaHFHVDdzYWFEZ01ORHhBejRLcTVFUHZXRFBHSzJ2T2VRZFB1Wks4cXowM2hJOUlSZGtaRjNQWkhvdjZueFhzMnl4MXBtb0Z4RE93WGpxOFBNd1JDbmNjZzYybE1WU1pRdDI5MHhtZVhCeUh6bUpldWRHemFSS21SbDR1M0JUN2U5azhEaEVUcHBZeG1ZVDFoaEtsL3M5LyttNkpzZS9sK3hCRHpob3BoQVVKUXVDOGp6bW82VmttdkVUU3JKWjB3bHFvK1N2TStHZVVuY1k0ZU5WdDFDeXFJVnRKOEpBRkpxSEQ0c3pOVWo2ZWxqNndKUmNRZVUzNG9FQzNnVHI2MDh5YVZYcVFCYklzMzVEZ3cybWp5U2xpL0NLQk1yNDF6Wk5EZFZ5aURUSi9tdFoxSEUzcVJKUWN5bnFrTFE3WGpVOUQ2cUNkYlk4cU83a2hFTmVkVUgxK0JkK3hyN2p2c0ZSS3BQUlVrN09WeE96dHczV1VPMVV1bXVqUlBCSWNHVHI1SUdoczdsMDZDb1dRbFV0VHNvN055N2RRRytrRW5pYUc3WEFpeGVaMDVDdGZzM3VUR3l6Wkl5THdQTWxxdUs4ZFAzQzhSbWdPeE5HdU5NcXhNbUZQbERvUUM4VWdjVzFwRjU0SFYzbndjUVp4ZGdFVlJtakVYWURONTBSNkRiMU5hbUtsL1ZNa1FPSnFaVkFvZWg2T3VVVjRHOGFweDFScTRZTXRnSEJDTnJ5SG00SXBUNGZ2ZEJhY0pHMFFiL3RVTS9wZW1mMjFUZ0plWmlrZDE1bENuKzZaYmVXYkVrajcrMTl4UVdSYTVReHdUamZ5RW85RXpJcnJBa1RXSE5iWVJtcGtPZlJLQmI1c24va2tuWEpTbFBneXI3eFQ0Q01GaWszWVkxeHJEeDYyeDhFVjIyUnlFYlNTMFdqRExRZkJod0VSS0VWTE9MRlQzaldzc1dlcldGQWIwWk1Gd3ZjNDhnbUJWbW1TTWgrT0NFeU1UYnBNRlRXd0tBVXpZVkhXQVRBMXlZTjRCNW5nK010c0pqZzVoZk9Fb09kcmpEZDZ4SXM0Wm9wYUtQTXZ5SjlneG4wNUxlWThKaEtzOXhTL1VKNkE0eGpyUG1vNzUxUkFSdndST0s0R1NadWNuQXFhM1VhbTczaWh0V05pVXVVa1pjMXFYSVB0bWdrd0tNb1p5VjlCOWNIb0RUandhdWo1OWVRM2tPVE4relFCR3E5U1ZaVnRrU1ZRRkN5TStVaEUwT0thVUs5ZmtDQk4ySVYxRTdCMHBaeTY5Y2gveGV3WExnSWRuUktNWWRlSUVHQVpuZk4ybWc5WStzbkdjNGJQVnM3dmFKVERWc2NCMzlGNVhxc1RBN1NPa0dmbzJzM2hEL2dFeGVjbnVtQWtJZWl4eU9uUFVtdFc0YXNKSmdDdVBoRnRlVVl2cFRrQi9RUkZ6SEtxdTA4Q0hNM0RjZjJkcHI2bUEwbXhMbDlYZlppTzlEKzhSamN2VDJVK0YrakorMXViUEJGcmVXcWt6ZVZBNFg0T0FvTHdIczZHSm1qY0s1Ry9zTGp6VHNpQnl2UHFXSGt4TnBMZXJrTUFHNEhQakhDK2pMUFJwUVd6YzRPSHdXeW9KL2Q0V0NXRjVqRzhyalFhVTR5YUpKTURBMlJBN0RrYTdUNFdiS1h4c0ZlOFdoeDBEeG1VUGZDbTlLYTNvWHdLamlzdmxEcUp5VnN3UWx0c3dsWnBERUUyaFhScDhoMzZ6cnlrRW5yckZTUHRBVmcwRDg5WjlaeEtjUTh3dDZHVlRJaHNWV1Y4cXZHWVUzeDc3eTFrZjkzU2RJWFMwMk5JcUlxalhVekFESTYwTEl4TzhycVpEQkNuTURBSEtCUVE2KzVOWGpvakYyQlJMNmhCaEJwd24wQmFZZXIwRGJwb0F2dWpNQ3VURHhPNGNlcUx5eTZ6K0pWUTQyRDBDLzlBVVZqMGxCbnU5cTY5SVU4SGp5Smo2VUQvOHhQbGJFMFRGVGFManIxSDNxTFFFeGNsWm1kb2E3bUpCbWdBN29leG1Ca3NnWllzSHdrSXJ2N1Y4VUlEaFN5YVhWVEpIVEIzbFh4Q1pYNmpkbm1WQ2k4SnQrY200ZVNOaUFteWs0a1BBZFFVKzZza2g2empsL2pYMDRCbnpBS3VDMjlJS0xVN0ZobWw2ajdFRWxJL0RvY1pQaFcyUVNDUk5PclBiT3F6cHlPcjFSTWFMUT0=", - "pin": "111111" - }, - { - "alias": "carol", - "pubkey": "0364c05cbcbb9612036cc66297445a88bcfc21941fd816e17a56b54b0b52ff02b9", - "ip": "http://carol.sphinx:3003", - "external_ip": "http://localhost:3003", - "authToken": "5RdbjtjEIq9ir1ANC+cM", - "transportToken": "MIIBCgKCAQEAx+Tw2rqE6hIEfqSDi4pXYxE0ken3AoildrAbItw7vZRXnO4TZovP\nmSQacnyY3gFAUAzblshAbqh86bWF0yASEBrPrVxN1+dkuCV61IIUmjUiIqY1S7aq\nikmvtIjTrqRW+iok7m2hGsCnDDyguOYvdEZZfqBWh/KyetrWD0YejzxEkkoRTug6\niajzmLOqkfeutIYc8AdFXHKFEIDscq08K5yW98zNk2dW3NtNMk0T/Snv0New2+zj\nw5MclEFnTNQpveLMmfq0DOpRyY4bxe0mO2/APxgDTD1piElcunu5Kp+m+2Pqnl1S\naWpxrZjnJhH86HY0DIp28iAhTjF9Z5jpUwIDAQAB", - "contact_key": "MIIBCgKCAQEAzAkbYFzPdCCKgShlUkhMyaAQciXno8UQKXCcsTB/NkwYV+KID863hOM3rqrnenpzp4GdszF4WrhHBLoCyECU84trlFZRe8IjADp3Y5kYoaKWxPwi/4l5G2KhDubZ/GyvGex059np5Ak3UzcLkLLQG4EkpOVNrIS+7WqfqluPqXuimgwkRc4eieMSvUddvOdsDq8H4LlgDBWh5cNa7rl5s2KDV3SeX8CL4FkasnLW0hg54UwP6VVoi7/7o9jtq6+jZ+341Nqr3Upa+e90/a3/IMLlMFI8XbPk6WrMPgT6kTcYkeN/X2UI4YgEoC+5DpK6/ri6itmsMU4gIyWpwgLLFQIDAQAB", - "privkey": "MIIEpQIBAAKCAQEAzAkbYFzPdCCKgShlUkhMyaAQciXno8UQKXCcsTB/NkwYV+KID863hOM3rqrnenpzp4GdszF4WrhHBLoCyECU84trlFZRe8IjADp3Y5kYoaKWxPwi/4l5G2KhDubZ/GyvGex059np5Ak3UzcLkLLQG4EkpOVNrIS+7WqfqluPqXuimgwkRc4eieMSvUddvOdsDq8H4LlgDBWh5cNa7rl5s2KDV3SeX8CL4FkasnLW0hg54UwP6VVoi7/7o9jtq6+jZ+341Nqr3Upa+e90/a3/IMLlMFI8XbPk6WrMPgT6kTcYkeN/X2UI4YgEoC+5DpK6/ri6itmsMU4gIyWpwgLLFQIDAQABAoIBAQDCek+42t32P2olT967viRK7qGeW9jd9eDAzxDbp3EpzQBLDKZKAuxT4svZVhdLW9pPKDGrcpTYS9uNestaGoyfUx3Yhyolv1bjSdcwfOXIcxQocHffgCaKXslLTekrPGDuYb7Qm5nffJVaYRZJ9tZ70O2fqt0Nen4OCFpl494cWQM5o6yc1MTQJ8DEFU4aUYoTO7Rqc6fNSdVUgUrBikTH7GcNWQaGlzg2XClEQNVvNLtWQQaNwtb1rXxVyGu0/fpw/++fVBeqYhaK+jQQC6thlynsataXh9PT1KBaA9ArLEHhm8cJjKx+2QqgiptwrCmvLCU1v/bLcBuxf4flLpFFAoGBAOsD0mVT2k3OoVTkFFqLdAUrk0WfEHpFbsMEcVSebTg1Ok/CJaF09ctPye2PjZAp6F4EPMjU5hGLRhVDclDKaBVgviRyMzlnkIbW2KSJGexA13fptmofF1eMrdzAYVTJmwUr2mwvEItqBeddrYv54q8csHR63RabpYEPCtFNhAmbAoGBAN5BIbehxjyud9y9tmxmD3VXoNorKzKYpsUNWTlcb8C4McmGFnAbFwQHxwYFkIw5IENawMMAP/ZNtmJ40qJh0/GeHdcZ8yHMQF4Z+t1Y4UkViavXENo9E7zVKz2uXaEzvwVF00WIjF1B2UrnGy9qZfdvkkDRNdRPOEckSZ/cT+EPAoGBAM6f6ZeVBdZq2YVdkleZTERPb4hCtaYK7bsgaNPRBo3onoAJXjR6NLCwUgU/tWMOtXITn62jITRDkzaWuic2DhTdnc9FaKwL1hH3Szo+IECLMeYH4Y2kEE21LhdsPSbiqhz91WhQaOdqLA6jWjY7WYZEXw/KBiAecIDrzMMAuBoJAoGBAKGAxMaSyOG5iiIevZwBggQr3BgNPIO0x6Lzcz2qfQ6XCp69UDrAhLYKDMbEbmhm7pnjLaXF3bTWfc0KrU0QN5og4uA23CVYLgHzcQc9md+oxfTYAEgGD/ytDpHwzdrhJlLnjYG+mvj9a6/xRiDreRMXwThWjn4r3uJbbSC8UFNjAoGAD7fuiZ/qDtCovmAc13zw+vZEeI2YWtDGxwdZgNU3CqGglh/L5mgxomjwGyAZwITRMx6HfweduvblS+6TBrxl+1M0oR8QS5TEarL3bx/IP6KsIsi/o/iytn1fRz4ayN5N9IQ1i39atP1ee2hvHUZeeZzS4aXjFeTFr1rq/lH1Vxo=", - "exported_keys": "a2V5czo6QXdHMzN6VEZ3Yy9IU1ZZaURMMi9MaHVqRkxBVjZJUWNGWFpBTVZBVW03Mk1ObXZIL2xpcHlJNVZpOTJIdHJoK2UyRGR4STB3eCt4WG8wQjJ0U2k1Mm9yYjlNWHZMUHR2YTExNjlJdnp2amdITjN5WERrbFpER2ozbzE0Ump4YTVaQkVRZHJadG81RjB6V0ZURXNvaGpHS2NJRGp2b1NKa1VnakQ4dVN5ZkJnOHJPbkt6QVFCM0VnTExsS2NSYXhsZTFoVFFLSkhEUVM3cUNKRDdGMjRWUFJPeUxtU0d4Q2dJcHRSc3NUQzhVZUFkT3ByMGRrNDRaNjA3MEdQblF1ZUdJZUo1dmJ0dDEwR2h0Ni9iYkpRZSs1bW4vdVlEWDhmUHBwTFRpbmNHanVkSHZLaitZVW5HcE9FaHJDKzBRZUtvTEdSaTRqaXFNd3BKaVBBTCtkSzE2SkVtSlpHbWI1ZE42dWZPYVo0VlpxRXZpbnRlMDlrbUJmN0Y1NHJTaEJmLzhjMDYrY1hRN1FudFFuNTFGdnZpRjR4MmdLcFFFdTNlRGliaGZDL2UyaUlOeDRBSDVwMklwdk9vTWxBT1JtNWxkcXNwanRvYnlGZm5sR0J0TC93Tm85cnArR3R3amhBN0p4cDIxTHppbzFzMnhJTmhLK3hobDB3Mi9LNE90Nm9ySmZJMnJJY09EQVRuRTAwcmxBNi9pRWFnTHI3cnIwWEh0SExOd0xsT0E0WlNoeldoUTlVUTkxYndGam9kczg3bTZkdkNESENldVkyeklRRXZORTBtcVRQd04zZ3Z6dCtnZ05yMFQvNHd0aGd6QlZaT0Q3UHlJYTlob1U0RnlEZ0xGL3E5VFI1blcvY0ZQNTh4eGpZRDFwRG15aGphWTFUbVRHWjVIbm9IR04yUDJrRGFWdHRma3JUSE9DNThVY2JMRzBLVDd0aXJFZnNBbjBRMVFQL2wyZWk0eFI2QnBPK2hyR1NnNEhqS0Zidm9DcytSdU9LSG1hN0pqNmQ0UlU3Z1I0eDBESmJOTUFYZ2FEYUl5TkVtN0ZuaGI4R2w0TzdlMlEzSDJVUmwvbm5GT0NrM3R1N0VjWnR0QUNYYnY1aXRGK09HaFhZYjd2SlkwZDRES1ZYcnBJanAvZUVLUWpGQjRrR0tUdUFMR3kydWV1aThHQkZUVUZRN3IyZzJ6SkU0SGVmd1lPZ0RYQU9pcGxaa09qaHNzV3kwSzNSS3lSNVdnY2x5VUpMUVFObGtrMDZIYVM1aW01MEo3eElYWDN2VngxQXNDcmZIVm1WSTRMRHV5RmFEandnRVFqTGcveHU3WDlmQ2NvdnNiQ3Vyc2kvbzdCeW1kNVFjQVNPRHZRbnk2UGdUZFR0TG5WZ0hLOTU5Y1JISWYva3NoOFd1OVlSMEhOV3pUeTlTL0VkTnRaVTFPWjA3dlNVTlUzaUQ0YmtqaWpFOHoxbHY3WVhRNU1ObHBPWERtTkd3dm5NT3Zzc3VpMGJXTEZXRXJVbk5uYkg5U2gwemVuSlZDbmxlWFUyVTJod0FaaWVzVUVLWGhORnlqeENrUFV3SmE4WXIwTmlocDlEc3dTMmtrZTA4ZzFDUFJEK210bEFhTDdPaTVJV2hBR1lZVjE1Y2NGNlRvVUZvWEMwYTZNM1I2R3R1dUlwSXhQaXJaNjdJaEN5VmZPQ2UyMTV4NEwzZmVGR3N0T0tnZE80TnJRMk9qQ1V5YitYM2RrcVRPTGNLTTk3dG92ZUloM1IrYzkwZy8rK05NK3Zqbnd1N09ZUkxXUUNXQy9waVZQWFg0R1ZDTFducGVRRDA0N09rTThXVkwyeEtPQXNRTUkxZDdPQ09Say9VVFFRdXhML0dJcjFNK2NKWnRLMWxtRVdYbzVJSUVkbk4rUURaNW12SllxeCtFa0RVakh0UnRFYk45bXYxZWxyQmdEZmk1TDYxNTR5L2dRR1YvalFRZGNOQjYzeHIwM0hVVTRscGYrRjg3MVVQUkxtVWwwUHBVUHppYnN4TktDSXVtN3ZIWXlvTDl4VFc5NUVhOUVEZXpGTTRGVmxzQmVtQjl6dlZBSEFjaVFCaEdiYUgrL0NJZkcyTkhBKzRDL0NNczZVbmxjSW00VW82UHA3cVk5VzF6Y2ZjRXp1KzJXTFI5ZlBOa3c3SG5sWTQxaFFUWUxLN3NmL0p3THpSMmp4T0dkeGRJVlFJRVJXVHpEY0cwUFZrMWxkN0NwdGpDSGpmNW56RGpGM01Yblo5MmVGS3QvaHZtd1Vza2Q4UVlpUW1jKzNXQWpOOUpHbUJNZVBuZEcyb2lKcFZCN09TdVlXdHozaFl3RmY1ampmZjNpOHlXeG1EVjFSa3JsKzJPbG9qQzEzN1VFWC9UNXdVbG95dWxidUk4WlRENUdyVy9oVkVQYytDZmhudUVHWVBYaTUrb0tTSzFNMTZnVmlLdFpRNjdWUDVEenVYUU9Hai9sYkZTWS8yZ2xWNjlJZzhKU0llV2g5dTRySytKUVpNOTA1TUlFQm96ajJwenBWOWozUVRRMnFPU2pMMXlZc3dpKzc0amZWenBSY2NiQnNpZUNYZUtORzZyMmdud3BqSmZqeWM3RjJMWGUvVWFybVZQWWtJSTExQ1NaRURuTk05WnM4TWVCbWZ0dElnaktRVExnSTRlTktRamVDeXdDY3ljZ1MvSUNud1FLYTYzaitPSnFrdmdoMWN4NFY0WE12ekxtMFVmcWR6TWZaUWxydUF3aUszYjI2OXZtZFA4bHFuNFVYMTRMTzdQdUVYZllJQ0RDTTg0aSs2bk0yQ2lBV28vaitmYVlKTHNuUmRTWmtEUlZaUjI5UjBoMXk5QXNJMUNrWDBVQWdGNndLODlLWjZpRnBkaUJhLzVNMkUzdFdUWlFDNzFLdEdRS3NuZW50L1BQMGQwVFZ2djVEalJGSmN1ODlVWldOTnl1c01Ib1Z2c21qc0FCZktUb0ltQlozT2x4T2MwUC95WFJVRHZ2QVpMN2JXODYwYllRbDh6T25Hck9xZUY0UVRWNVA3d3RUV2dJcjRnNGI4bGR6WUdkZEs0LzZGL0l6ZjlLL1NpUnAxc0dEUExzeW9JSnhsRDNYd3FDcXZIelNIWlI4eTlkaHJsZXEwZ0hSc1o0MXZEbmFsbEprcTBzd0JEVUZGcDlZM0VVTGIvSXlCNEFIYXNWWHB2ajBDOG1TVlRXN2Z0c2sybE55YjVwTWFGRjdWRzhhVEJKZmw2UUhYZ252a0lEYnBxV3ppRGVHMUJ6L1dhbi9ya05ZUkk1VEcvY1NlRHFhQ0ZCbWRsejlCZTgyZDJyMXJESnBNNzdZZzMzdmRudzAwYnpBSDJlbWIxWTVWblVVRWIrcXpIWUF4cEdvR1pwdWxZZU16d2RXTVBlNmk0RXV1d2JXUEd5UHlnWVFwT2VBcTYyMGNxcVFwNExLbk5jSlpaSXcvaG01UFBDVmZIaUlybEkySnI2b1lvdDBiYWgwc2taU3pqcmRYZ0UvR3B5K0xzeVpOVnBVTHIxQW42ekl2VHQyanFlUDMwZjFwVmtQejhwRmIrdC9OTlVxeENETmNuM29RS2c2RWZzQy8rQUVZUnBEa3NXWitvTVB1OEtvbDg3SDM0YVNCRW5ielNEWEdiOHlqdUwrdkdZS0I4TlRJOTJMSFhoaXlNND0=", - "pin": "111111" - }, - { - "alias": "dave", - "pubkey": "037ec785c6004d512ebaeb0020f81a2bcdb6fccc9539f7b891f704289ebc65a4e3", - "ip": "http://host.docker.internal:3004", - "external_ip": "http://localhost:3004", - "proxy_ip": "http://proxy.sphinx:5050", - "admin_token": "r46bnf8ibrhbb424heba", - "authToken": "xFlrtU7oY6kXCbO9dBXf", - "transportToken": "MIIBCgKCAQEAu9JYBw/Srf4E9M7BbYSikXAKe6PL7CPESqzX80BKzct32Rm1j3tZ\nqJ/eh1pyMW9dtVwHiCRegTR1ohsXvQBZz8vDfQTXR1RNTUO0Zsb32qLjdmdKu4LX\n1uJoQcG180HrJU9y2gIOsD9hLap83ivSLMplXiiN15+79VP16m5ecuKZDNMCEgA2\ngi5/80PMT5i9DgVxWLlrq0QmgiNokfXlXm2IbkEBbgpZX/Ps5w2llC9Piwpx5UWS\nY9KWgOdb5BZodxJ99k99q1PkJCuOIVkdAZJW+CI3rV0L89GCFz3ak4WYVbxrRnsX\nijddfvOw6BDp1ucBa9UUG+XGyZviQdzs9QIDAQAB", - "contact_key": "MIIBCgKCAQEAvow74kwgf5s/hb80J9484aOkKDCUEQcwvC/CB47HK9yEBd2lbPxnaTtxx9u5lbm8erePKkT4rMwNgXFmnaFom7Ukc635Ow1Su0ZjCJEq5GtQBDX5DEKB9XFonLwp7eikm3iOeRBJ9cuci5bhtOK0tV3wCEgfjtmK2fmwyglLf1gRYwhFalB8r0pt5eR7co4QFDLdZgNelpHC/MrlxD0sjN1yjcp4Bc69DMB+tyrRhWJ1V9CRAC2RlJZma+ghn9XcNEV395wUkBbZvnZesUMONab12biPevCl++IGtVPlIZdW+PH6Ap9c1Kgth+x1V9RWSBN15OvAYJYhpC72GZ5djQIDAQAB", - "privkey": "MIIEowIBAAKCAQEAvow74kwgf5s/hb80J9484aOkKDCUEQcwvC/CB47HK9yEBd2lbPxnaTtxx9u5lbm8erePKkT4rMwNgXFmnaFom7Ukc635Ow1Su0ZjCJEq5GtQBDX5DEKB9XFonLwp7eikm3iOeRBJ9cuci5bhtOK0tV3wCEgfjtmK2fmwyglLf1gRYwhFalB8r0pt5eR7co4QFDLdZgNelpHC/MrlxD0sjN1yjcp4Bc69DMB+tyrRhWJ1V9CRAC2RlJZma+ghn9XcNEV395wUkBbZvnZesUMONab12biPevCl++IGtVPlIZdW+PH6Ap9c1Kgth+x1V9RWSBN15OvAYJYhpC72GZ5djQIDAQABAoIBAQCOitVZal19WCPi57AaivO8T/BDaGO7gUeB37AkezifpSzWPoK7zu2FGUT6n3JrgTBwFNTyZ/onOdZ4mN6M2OwqXw3Pw7uH42WaVwNKq14M1gJbxAx0kWQquhXp+hDbuoc5Dqx2ACtzxkdrXQmniVhpvMYNS/bfo/ltKo6H9QAXV/2eo2KbUpj900RlW8nd4ywU6xylWQHTtwuZR0GJNa/dQ9fiJlMqT5Xg1kCrsRX9jVpr14tefcfOKbERlubTW4coDJ63CuzYJ8HVnhy/KSSDcFX/kKUdTPF6K05KNSU/7aORmLVHz3+sfVkpqH43AnXR0R24TMa1lGzd2W1Km06BAoGBAOZALMdpECI+jXLNYNNu4T9gi9n2fan5rbnk4A/EandgFO5ipTUyQT5aiXt6v3KwvclNvQLsprkAiRXvTGI338GDdp5UzJBL8IP9PP2jM9H53RTniemAZnSo9TeyR8BMpLoUSzd4n0/7TkR8xv7EUAmH8EU4Ui08fgZKj3U6GYCdAoGBANPbaJjx/Lr6MYHwK5nth5BL7rBjE1VSujPjkgKfJvhfnO4IoP+b7VKqFtbHUYOemhUgHLp7SWfc0xNKvbp8Ywl+FdyNLHa/K5k5AA2dmusAXxZH+24goHGOQrQaCVEIhfDqJKlTbd2aXIs8PiRGK06TohHj19VRtzMo4crasOWxAoGAM5tUrglFXXeJup5/wkQK5mqcTekqd0uH/a9n7QDIICN/7YJcpxSxfOlMAUoc2Pb2QsVSxPIH2FVfZHQzOZxuYXA2yPwWsYzjxqGe5vaKadjIDaRry9NEo4cvFyG1ZUuIbFCaHz/A7WtVOpKBA586lThLySf7ezogwQY7Kzovdx0CgYAw7Qe/4oqqJ6ONTYjUOI3JHjAWXhsV5lAIMbMDlfuq+nHEawu7XCg3of46RbemfNc6r7rSuiwep1m7p9QfICDDDXJBB/1PwyBvd0Fy44XmZaSQAbmoGjLTZrYy35xtMVm1ZG1pCVJjDgX3RcdYGzhfIisYlJTAt+lmEDfs4ApgUQKBgG78yjzxUauys1KAcXzEp8cRyqQLz/649EreA07WhGyTbq83gOKBmKYQ6s6CqQOyVsajmoscv/8URnMxUCOEiJ5XIUAqbAK8tYGab/tFAD5VzokijnlmbuWb9IRx3PvfNfZg2UaSMSxJihpX7wPXkA6VVf3pWZqDfM1uvnrwjcrr", - "exported_keys": "a2V5czo6QXdFYlo4a2NJNjNYS0c1R2tNZUdQVjZKZlJXeFptckNlRHF0OEdkTjdBU3ZDSEZNNE1nVTBJdWFvMXBkUnZLM0hvcFA3RndvdTNKSWd2UktqNVp6ZTZaY3FYVVU0T1VuUkR5RlltR25Jb0R1MnBRNUxuM2VES0RJY0RrMHdLb2cyTzJqWDVPZWlxdXZHNmNQa2xJVENLdENKbndoWCtWaS9oU21wL0lEREZyZHdGTnlGekZtZFpJQUh1SVBIT2t5cW9vUFc2TXY0OUZtenJxN3FObjAxUkdWTHg1ZGJicGFmRTZHLy9Rb0xNQ0NIYjlTWjJzVDNjRTVhQkpWUXBEMjM1Z3Mwd1U0OVV1ZHpjMnNJcHBhV0o0STlYckpPeTlSNFpjbHNtYzBmdXBzVnFrc0tvVEl0K3MzQmpEK1R2aFhWNkl2K2pZd2F0QTVhWFJqTVhhc0VSV1BsWlIzNE1BaHo3aVVGeTBFZzNZUFgrZ2pIdEZwcVlBK1dQN1ZacEwvT1EzNWFWaFd4M05IYytYclRVRUxROGhGNlhWMEZnS3ViMUl5NFI5QTdyZWNrWUFxc2x1ODJ4QmM4cXpXeXQ4eGxCN3I0Yjg2N2QrY0JHQWtEc3N2L1BNVGxEQ1Iyd0E5TUNrM1VzVTVSVmFSOE9xdEovditXbmY1RVhvcFIzOWg5K2RmR2RhR2lBN2VoQUhwUDFSRDdEMitObkhQNlhrdnlHRUJXNFRBbTRQRGVWdWtvSWVsc2lHT1p0aUhsSEloRVRCazV0c2R3R3dMYSt1Qkg1RDVma0RlaEZjZFNhMzZJRzl4T29wNzVZbndOSXJnajZYQlA1dEhJZFJxSnJmWktJNTNZcFpxTm9jaUZraUx6OXhQYTlEdEltZWZ0bHA0OVdXcmN0N21DTHExNWlIcEtmNllnTzNtc0JENkU0WjBqMnBNRDlSamFIaFVXYUoyWFJzS1pPQURIcStURE1ieUpTZTE3ZEo4ODRZcnpja3kvc1pYd2ZqdFQ4OE82RXhxb3ZNOEVwSGthSVZkYW5sZE16TlF2SWtjSlBLM3JOWXBielN5Vk5FaXhPY3IyYTg5U2JCRFVpSkw3ZlZxWCtpcWhnYitUZEFObHg4WGFDaVNiRUIwdUV6dGlONDhmVzhJbk8zSHZqU0tZYi9nZHl4aUt0d2pXNlM4NEZuRkhDdGhVcjhrWlRTOE9XcnlnT3ZYTTF3eWdxYlNRTXlPdndQSzQwZy9YRVpkNXgyVVZYQXlUc2Rrc2FtVkduaWxWREg4WExMQWZldmlVZjV3MG1qQTFDNjluRHpyRE9NaDlTOFA0R2RSaHcvY3NKbmgxU1BacFpERUU4TFh5VXBYL0hGS0g2VXlXSndQRGJlNzZ1aU0zOEhrTVRwSmhQeWUwWWRYWHFqa3QxdTl4Mys1SC9KSGdpSUJSVkk1aTI0S0lvZlJTeUlIcGc0UUxqYmZjRVhXR1lCaUZ3OU1reDdyZHEzOGtGT0cxc3pTdEgxaTBWRFJQNEdCb05IWVFKbDJUZDVxZytWUFVOa1FmUkVoaUt5Tkg3bDNvb2tCQnZ4dE1NQmtrRWdrZGxjMm1HSkR6RFlremJEZWhhR2NNckRidGpVVmN5bjQ1SnJvWDUxUStMWUJqZFJEUDZCOFdjSnRmektwWk9EamoxTjlUTEQwdE5CVDZwSEQ1RG1TRzJPRVppd1dVb0JjZWRHb0R2Z0RWR1lYZFFiZi8vT01seWNxQ0RHSmIzcmZyQjVzVXhESEZPQzNhYThScUR2SU4zelNPS1JzSndnVTNRUktzRWh4cFQxVHY0Y3k3NnA3NjdMaW5JTk9vbkloSEJWR2ZLNzlKMHJDUFBkc1VKZnB0QnZnZzBNanhRK212cVBQRnY4YUM0QW9lbFk3bDMxcUYrUEJha1ovd3hub0huNkVJWU4rK3V4RDZRdXZ4Rzdzc1BxT1VBTzBRc2dHYjhqbnhLbm9XMlUxeExDY3QwUFExZGFmMEQzcXRHNlBacTdEVGhYRHJBbHQvNVVhL3VRWHM2U0s1a1Z3bjZCUWEraEUyZk5OMDROZTl4SzZMSTN3Z295blMvT3Y5cmd5MUQrcUdSemVud3hqQkd3aE9ac2FQQVJSSUdYMlVnWG5zUnRrOE1rcklZWHJtak92L2FwTklvYkRSNTdiTUJQY1hOV3lqK2VhNG1remVnem5Ec1BzcG81bElCQit3UHB3QlZhYXZQa0U2d3MvSU1YdGhaWEpid1E4NnBndzg3Nk5adnhXUUZqKzJYNXpZUk4yVVAvSEZwQmxEc295YWlGVFJQZGkrbWlzV3BLLy9OSWFqZUUxWm0xV2xMUEpXQWpZOXVFSmsrZjRONExLdWJQcWtxaU8wRWhlK0Q5MUx1MGRIZEY0SlpoZFNOSGNVUXFRbUR6VkFDaVdZWXN6djlDNER6cU1pY0ozZEl6VUpSNUducXZXeFdqRFozeW9ZUWtPYzlHdEpmMmhIUVhyMlc5d3V5R3k2dXVXQ2FJME0zcS8wWVpocytzdEpuUFlPV0FPNWg4cWd0eVpKcFJGTXA5RzZYS2ZtQ2Qzc3dIZENFRnFvWjI0dXhFZUFWbmg4WkZndXVYOHRxS1lkVVN5ejl0VlZnaHhZaEtJZThncUgyRzhTR0x5N0l3bVRyMlpHTW1FMlJORzN2NVJRSHBVZEZVc2F1bDJjNWgyaUJrb1ljWWNpRG9OQ3VvcDAxaDZzWkNLd0YyY0pYL1RzUE5vV2c5dk5xdXdldWlyMURQYk5vRjM0WnVMMDhWZGVWWFdON1JHZXhBbGU5RHd1SEdHN0V6dFJlSjUyZVM4emRxYlJ0c3RPa2ZrMXpNcEtFbHlkaStpcWtHUFFsTEcwY2NqSWt6Vi9pYXlmM0VtejkrcUl5K2s5OUNoYVBWdkxVRk5IMVdMNzM4UUZCeGhneGROYnVldHRHaSsyaEM2bzdEY2FMV1dlenJndy91WmRCbHc2M3hvVi9SbDNHRFNRd3RHNHpiaDJlMnZTUXRtL3dtSlZNWGR3b2loczhzODFIZ2FoVmFGMGlzOG9SM3ZrVFU0ek5RU1Q4L2hUZEEyVHBQTzQxMFBiTkEvWUdUcGQvRTQ0Vm1Yb3dmWWxiaDVOQVp6a0FaM0QvTVcxTnR6Z3A2dzJ5ZmVKOGxrNjl1K2I3ckV1ZXNMUHpSOG1aOHkvRE9ic29OU0FacC9NVE91Ry9HYVVyVEFmc3dNYm9DTTVDNGt2c2tLWllHOEcrWU9VbDYwc3JSSDRLSHFPdzFCVkVjU2V1SzJHRktwOWFYNjJiVEFyOWNIZitTdkorVkhmZ003eFNnc3RpcTVvTlRodXhRRTBlN2R3bnNKY3BZZGtja0h3cGhlK3o0MVI0N1hjSmxHdysyQnhMNnVlWmZIcHR2eWxRNHRpcE51MWtCa0hkelJCWk9aM2NGRXIxMDcwVGJ1SUppTVMwTFFFdjFVSVhMT1RvckNNU0dkVE52SnVtbkhZZmhTRzNSYloyOFpJUnNmMmtqbEdmZEdIZ0xIamdTRGNQdjVoSXQ1S2cxT1p1OHJEQzl2bkI2eVBBdjBPVFEwUU1UMDBaYlVkODlRWXVKdVBQSVVVYmFncUZGYVN4cDEwZEY1UVJiU3hNbTRWbTZXVGRzb1dSUVkzSG1kTGJBQlhHTT0=", - "pin": "111111" - } -] +[] From 9f515b9c0bfb2ac70d7fe83a64a899e6f0577088 Mon Sep 17 00:00:00 2001 From: Oluwatobi Bamidele Date: Mon, 7 Oct 2024 23:36:24 +0100 Subject: [PATCH 20/20] fix: remove unsued code --- src/components/Auth/index.tsx | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/components/Auth/index.tsx b/src/components/Auth/index.tsx index 94334e3b0..677775e7f 100644 --- a/src/components/Auth/index.tsx +++ b/src/components/Auth/index.tsx @@ -77,11 +77,6 @@ export const AuthGuard = ({ children }: PropsWithChildren) => { setChatInterfaceFeatureFlag(res.data.chatInterface || false) } - if (isE2E) { - // eslint-disable-next-line no-promise-executor-return - await new Promise((r) => setTimeout(r, 5000)) - } - setIsAuthenticated(true) setRenderMainPage(true) } catch (error) {