
> frontend@0.1.0 dev
> next dev

▲ Next.js 16.1.6 (Turbopack)
- Local:         http://localhost:3000
- Network:       http://192.168.31.138:3000
- Environments: .env.local

✓ Starting...
✓ Ready in 1188ms
 GET /watch?v=krbtaBr9jNc 200 in 572ms (compile: 273ms, render: 299ms)
 GET / 200 in 59ms (compile: 35ms, render: 24ms)
 GET /feed/subscriptions 200 in 61ms (compile: 41ms, render: 20ms)
 GET /feed/library 200 in 416ms (compile: 349ms, render: 67ms)
 GET /feed/library 200 in 51ms (compile: 8ms, render: 43ms)
 GET /feed/library 200 in 127ms (compile: 4ms, render: 122ms)
 GET /watch?v=sZrIbpwjTwk 200 in 25ms (compile: 6ms, render: 19ms)
 GET /feed/subscriptions 200 in 81ms (compile: 14ms, render: 68ms)
 GET /feed/subscriptions 200 in 195ms (compile: 8ms, render: 188ms)
 GET /feed/subscriptions 200 in 64ms (compile: 9ms, render: 55ms)
 GET /watch?v=X8dM9elNhAM 200 in 149ms (compile: 122ms, render: 27ms)
✓ Compiled in 62ms
✓ Compiled in 42ms
✓ Compiled in 37ms
✓ Compiled in 93ms
 GET /watch?v=X8dM9elNhAM 200 in 441ms (compile: 124ms, render: 316ms)
 GET / 200 in 30ms (compile: 6ms, render: 24ms)
 GET / 200 in 39ms (compile: 7ms, render: 32ms)
 GET /watch?v=OsfAnsMY21M 200 in 34ms (compile: 6ms, render: 28ms)
✓ Compiled in 53ms
 GET /watch?v=OsfAnsMY21M 200 in 431ms (compile: 86ms, render: 345ms)
 GET /watch?v=OsfAnsMY21M 200 in 186ms (compile: 11ms, render: 175ms)
 GET / 200 in 36ms (compile: 6ms, render: 30ms)
 GET /feed/subscriptions 200 in 128ms (compile: 98ms, render: 30ms)
 GET / 200 in 21ms (compile: 4ms, render: 16ms)
✓ Compiled in 110ms
✓ Compiled in 49ms
✓ Compiled in 81ms
✓ Compiled in 28ms
 GET /watch?v=KKFubczfTOs 200 in 141ms (compile: 93ms, render: 48ms)
✓ Compiled in 455ms
✓ Compiled in 88ms
 GET /watch?v=KKFubczfTOs 200 in 972ms (compile: 216ms, render: 756ms)
 GET /watch?v=KKFubczfTOs 200 in 409ms (compile: 106ms, render: 303ms)
 GET /watch?v=KKFubczfTOs 200 in 184ms (compile: 4ms, render: 180ms)
 GET /watch?v=KKFubczfTOs 200 in 136ms (compile: 12ms, render: 124ms)
 GET /watch?v=KKFubczfTOs 200 in 120ms (compile: 5ms, render: 115ms)
 GET /watch?v=KKFubczfTOs 200 in 102ms (compile: 3ms, render: 99ms)
 GET /watch?v=KKFubczfTOs 200 in 103ms (compile: 2ms, render: 101ms)
 GET /watch?v=KKFubczfTOs 200 in 105ms (compile: 3ms, render: 102ms)
 GET /watch?v=KKFubczfTOs 200 in 105ms (compile: 3ms, render: 101ms)
 GET /watch?v=KKFubczfTOs 200 in 108ms (compile: 3ms, render: 105ms)
 GET /watch?v=KKFubczfTOs 200 in 109ms (compile: 3ms, render: 106ms)
 GET /watch?v=KKFubczfTOs 200 in 106ms (compile: 3ms, render: 103ms)
 GET /watch?v=KKFubczfTOs 200 in 109ms (compile: 5ms, render: 104ms)
 GET /watch?v=KKFubczfTOs 200 in 108ms (compile: 5ms, render: 104ms)
 GET /watch?v=KKFubczfTOs 200 in 117ms (compile: 5ms, render: 112ms)
 GET /watch?v=KKFubczfTOs 200 in 113ms (compile: 4ms, render: 109ms)
 GET /watch?v=KKFubczfTOs 200 in 114ms (compile: 4ms, render: 110ms)
 GET /watch?v=KKFubczfTOs 200 in 114ms (compile: 4ms, render: 110ms)
 GET /watch?v=KKFubczfTOs 200 in 114ms (compile: 3ms, render: 112ms)
 GET /watch?v=KKFubczfTOs 200 in 108ms (compile: 4ms, render: 104ms)
 GET /watch?v=KKFubczfTOs 200 in 106ms (compile: 3ms, render: 103ms)
 GET /watch?v=KKFubczfTOs 200 in 90ms (compile: 5ms, render: 85ms)
 GET /watch?v=KKFubczfTOs 200 in 64ms (compile: 3ms, render: 62ms)
 GET /watch?v=KKFubczfTOs 200 in 47ms (compile: 3ms, render: 44ms)
 GET /watch?v=KKFubczfTOs 200 in 31ms (compile: 4ms, render: 27ms)
 GET /watch?v=KKFubczfTOs 200 in 197ms (compile: 79ms, render: 118ms)
 GET /watch?v=KKFubczfTOs 200 in 107ms (compile: 2ms, render: 105ms)
 GET /watch?v=KKFubczfTOs 200 in 127ms (compile: 2ms, render: 125ms)
 GET /watch?v=KKFubczfTOs 200 in 144ms (compile: 3ms, render: 142ms)
 GET /watch?v=KKFubczfTOs 200 in 168ms (compile: 3ms, render: 166ms)
 GET /watch?v=KKFubczfTOs 200 in 202ms (compile: 5ms, render: 197ms)
 GET /watch?v=KKFubczfTOs 200 in 232ms (compile: 5ms, render: 227ms)
 GET /watch?v=KKFubczfTOs 200 in 522ms (compile: 9ms, render: 514ms)
 GET /watch?v=KKFubczfTOs 200 in 548ms (compile: 4ms, render: 544ms)
 GET /watch?v=KKFubczfTOs 200 in 546ms (compile: 8ms, render: 538ms)
 GET /watch?v=KKFubczfTOs 200 in 527ms (compile: 5ms, render: 522ms)
 GET /watch?v=KKFubczfTOs 200 in 533ms (compile: 12ms, render: 521ms)
 GET /watch?v=KKFubczfTOs 200 in 300ms (compile: 50ms, render: 249ms)
 GET /watch?v=KKFubczfTOs 200 in 258ms (compile: 9ms, render: 248ms)
 GET /watch?v=KKFubczfTOs 200 in 263ms (compile: 4ms, render: 259ms)
 GET /watch?v=KKFubczfTOs 200 in 276ms (compile: 7ms, render: 268ms)
 GET /watch?v=KKFubczfTOs 200 in 275ms (compile: 16ms, render: 259ms)
 GET /watch?v=KKFubczfTOs 200 in 225ms (compile: 5ms, render: 221ms)
 GET /watch?v=KKFubczfTOs 200 in 260ms (compile: 8ms, render: 252ms)
 GET /watch?v=KKFubczfTOs 200 in 216ms (compile: 7ms, render: 208ms)
 GET /watch?v=KKFubczfTOs 200 in 202ms (compile: 6ms, render: 196ms)
 GET /watch?v=KKFubczfTOs 200 in 196ms (compile: 8ms, render: 188ms)
 GET /watch?v=KKFubczfTOs 200 in 167ms (compile: 10ms, render: 157ms)
 GET /watch?v=KKFubczfTOs 200 in 126ms (compile: 5ms, render: 121ms)
 GET /watch?v=KKFubczfTOs 200 in 95ms (compile: 7ms, render: 88ms)
 GET /watch?v=KKFubczfTOs 200 in 58ms (compile: 7ms, render: 51ms)
 GET /watch?v=KKFubczfTOs 200 in 303ms (compile: 3ms, render: 300ms)
✓ Compiled in 23ms
 GET /api/proxy/invidious?path=comments&videoId=KKFubczfTOs&limit=50 200 in 15.0s (compile: 951ms, render: 14.0s)
All Invidious instances failed: [
  Error: HTTP 502
      at GET (app/api/proxy/invidious/route.ts:64:15)
    62 |       
    63 |       if (!response.ok) {
  > 64 |         throw new Error(`HTTP ${response.status}`);
       |               ^
    65 |       }
    66 |       
    67 |       const data = await response.json();,
  SyntaxError: Unexpected token '<', "<!DOCTYPE "... is not valid JSON
      at JSON.parse (<anonymous>)
      at async GET (app/api/proxy/invidious/route.ts:67:20)
    65 |       }
    66 |       
  > 67 |       const data = await response.json();
       |                    ^
    68 |       return NextResponse.json(data);
    69 |     } catch (error: any) {
    70 |       errors.push(error);,
  Error: HTTP 403
      at GET (app/api/proxy/invidious/route.ts:64:15)
    62 |       
    63 |       if (!response.ok) {
  > 64 |         throw new Error(`HTTP ${response.status}`);
       |               ^
    65 |       }
    66 |       
    67 |       const data = await response.json();,
  Error: HTTP 403
      at GET (app/api/proxy/invidious/route.ts:64:15)
    62 |       
    63 |       if (!response.ok) {
  > 64 |         throw new Error(`HTTP ${response.status}`);
       |               ^
    65 |       }
    66 |       
    67 |       const data = await response.json();,
  TypeError: fetch failed
      at async GET (app/api/proxy/invidious/route.ts:56:24)
    54 |   for (const instance of INVIDIOUS_INSTANCES) {
    55 |     try {
  > 56 |       const response = await fetch(`${instance}${apiPath}`, {
       |                        ^
    57 |         signal: AbortSignal.timeout(10000),
    58 |         headers: {
    59 |           'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36', {
    [cause]: Error: getaddrinfo ENOTFOUND invidious.fdn.fr
        at ignore-listed frames {
      errno: -3008,
      code: 'ENOTFOUND',
      syscall: 'getaddrinfo',
      hostname: 'invidious.fdn.fr'
    }
  },
  Error [TimeoutError]: The operation was aborted due to timeout
      at async GET (app/api/proxy/invidious/route.ts:56:24)
    54 |   for (const instance of INVIDIOUS_INSTANCES) {
    55 |     try {
  > 56 |       const response = await fetch(`${instance}${apiPath}`, {
       |                        ^
    57 |         signal: AbortSignal.timeout(10000),
    58 |         headers: {
    59 |           'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36', {
    code: 23,
    INDEX_SIZE_ERR: 1,
    DOMSTRING_SIZE_ERR: 2,
    HIERARCHY_REQUEST_ERR: 3,
    WRONG_DOCUMENT_ERR: 4,
    INVALID_CHARACTER_ERR: 5,
    NO_DATA_ALLOWED_ERR: 6,
    NO_MODIFICATION_ALLOWED_ERR: 7,
    NOT_FOUND_ERR: 8,
    NOT_SUPPORTED_ERR: 9,
    INUSE_ATTRIBUTE_ERR: 10,
    INVALID_STATE_ERR: 11,
    SYNTAX_ERR: 12,
    INVALID_MODIFICATION_ERR: 13,
    NAMESPACE_ERR: 14,
    INVALID_ACCESS_ERR: 15,
    VALIDATION_ERR: 16,
    TYPE_MISMATCH_ERR: 17,
    SECURITY_ERR: 18,
    NETWORK_ERR: 19,
    ABORT_ERR: 20,
    URL_MISMATCH_ERR: 21,
    QUOTA_EXCEEDED_ERR: 22,
    TIMEOUT_ERR: 23,
    INVALID_NODE_TYPE_ERR: 24,
    DATA_CLONE_ERR: 25
  },
  Error: HTTP 404
      at GET (app/api/proxy/invidious/route.ts:64:15)
    62 |       
    63 |       if (!response.ok) {
  > 64 |         throw new Error(`HTTP ${response.status}`);
       |               ^
    65 |       }
    66 |       
    67 |       const data = await response.json();
]
All Invidious instances failed: [
  Error: HTTP 502
      at GET (app/api/proxy/invidious/route.ts:64:15)
    62 |       
    63 |       if (!response.ok) {
  > 64 |         throw new Error(`HTTP ${response.status}`);
       |               ^
    65 |       }
    66 |       
    67 |       const data = await response.json();,
  SyntaxError: Unexpected token '<', "<!DOCTYPE "... is not valid JSON
      at JSON.parse (<anonymous>)
      at async GET (app/api/proxy/invidious/route.ts:67:20)
    65 |       }
    66 |       
  > 67 |       const data = await response.json();
       |                    ^
    68 |       return NextResponse.json(data);
    69 |     } catch (error: any) {
    70 |       errors.push(error);,
  Error: HTTP 403
      at GET (app/api/proxy/invidious/route.ts:64:15)
    62 |       
    63 |       if (!response.ok) {
  > 64 |         throw new Error(`HTTP ${response.status}`);
       |               ^
    65 |       }
    66 |       
    67 |       const data = await response.json();,
  Error: HTTP 403
      at GET (app/api/proxy/invidious/route.ts:64:15)
    62 |       
    63 |       if (!response.ok) {
  > 64 |         throw new Error(`HTTP ${response.status}`);
       |               ^
    65 |       }
    66 |       
    67 |       const data = await response.json();,
  TypeError: fetch failed
      at async GET (app/api/proxy/invidious/route.ts:56:24)
    54 |   for (const instance of INVIDIOUS_INSTANCES) {
    55 |     try {
  > 56 |       const response = await fetch(`${instance}${apiPath}`, {
       |                        ^
    57 |         signal: AbortSignal.timeout(10000),
    58 |         headers: {
    59 |           'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36', {
    [cause]: Error: getaddrinfo ENOTFOUND invidious.fdn.fr
        at ignore-listed frames {
      errno: -3008,
      code: 'ENOTFOUND',
      syscall: 'getaddrinfo',
      hostname: 'invidious.fdn.fr'
    }
  },
  Error [TimeoutError]: The operation was aborted due to timeout
      at async GET (app/api/proxy/invidious/route.ts:56:24)
    54 |   for (const instance of INVIDIOUS_INSTANCES) {
    55 |     try {
  > 56 |       const response = await fetch(`${instance}${apiPath}`, {
       |                        ^
    57 |         signal: AbortSignal.timeout(10000),
    58 |         headers: {
    59 |           'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36', {
    code: 23,
    INDEX_SIZE_ERR: 1,
    DOMSTRING_SIZE_ERR: 2,
    HIERARCHY_REQUEST_ERR: 3,
    WRONG_DOCUMENT_ERR: 4,
    INVALID_CHARACTER_ERR: 5,
    NO_DATA_ALLOWED_ERR: 6,
    NO_MODIFICATION_ALLOWED_ERR: 7,
    NOT_FOUND_ERR: 8,
    NOT_SUPPORTED_ERR: 9,
    INUSE_ATTRIBUTE_ERR: 10,
    INVALID_STATE_ERR: 11,
    SYNTAX_ERR: 12,
    INVALID_MODIFICATION_ERR: 13,
    NAMESPACE_ERR: 14,
    INVALID_ACCESS_ERR: 15,
    VALIDATION_ERR: 16,
    TYPE_MISMATCH_ERR: 17,
    SECURITY_ERR: 18,
    NETWORK_ERR: 19,
    ABORT_ERR: 20,
    URL_MISMATCH_ERR: 21,
    QUOTA_EXCEEDED_ERR: 22,
    TIMEOUT_ERR: 23,
    INVALID_NODE_TYPE_ERR: 24,
    DATA_CLONE_ERR: 25
  },
  Error: HTTP 404
      at GET (app/api/proxy/invidious/route.ts:64:15)
    62 |       
    63 |       if (!response.ok) {
  > 64 |         throw new Error(`HTTP ${response.status}`);
       |               ^
    65 |       }
    66 |       
    67 |       const data = await response.json();
]
✓ Compiled in 40ms
 GET /watch?v=KKFubczfTOs 200 in 885ms (compile: 97ms, render: 788ms)
 GET /api/proxy/invidious?path=video&videoId=KKFubczfTOs 200 in 14.9s (compile: 18ms, render: 14.9s)
All Invidious instances failed: [
  Error: HTTP 502
      at GET (app/api/proxy/invidious/route.ts:64:15)
    62 |       
    63 |       if (!response.ok) {
  > 64 |         throw new Error(`HTTP ${response.status}`);
       |               ^
    65 |       }
    66 |       
    67 |       const data = await response.json();,
  SyntaxError: Unexpected token '<', "<!DOCTYPE "... is not valid JSON
      at JSON.parse (<anonymous>)
      at async GET (app/api/proxy/invidious/route.ts:67:20)
    65 |       }
    66 |       
  > 67 |       const data = await response.json();
       |                    ^
    68 |       return NextResponse.json(data);
    69 |     } catch (error: any) {
    70 |       errors.push(error);,
  Error: HTTP 403
      at GET (app/api/proxy/invidious/route.ts:64:15)
    62 |       
    63 |       if (!response.ok) {
  > 64 |         throw new Error(`HTTP ${response.status}`);
       |               ^
    65 |       }
    66 |       
    67 |       const data = await response.json();,
  Error: HTTP 403
      at GET (app/api/proxy/invidious/route.ts:64:15)
    62 |       
    63 |       if (!response.ok) {
  > 64 |         throw new Error(`HTTP ${response.status}`);
       |               ^
    65 |       }
    66 |       
    67 |       const data = await response.json();,
  TypeError: fetch failed
      at async GET (app/api/proxy/invidious/route.ts:56:24)
    54 |   for (const instance of INVIDIOUS_INSTANCES) {
    55 |     try {
  > 56 |       const response = await fetch(`${instance}${apiPath}`, {
       |                        ^
    57 |         signal: AbortSignal.timeout(10000),
    58 |         headers: {
    59 |           'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36', {
    [cause]: Error: getaddrinfo ENOTFOUND invidious.fdn.fr
        at ignore-listed frames {
      errno: -3008,
      code: 'ENOTFOUND',
      syscall: 'getaddrinfo',
      hostname: 'invidious.fdn.fr'
    }
  },
  Error [TimeoutError]: The operation was aborted due to timeout
      at async GET (app/api/proxy/invidious/route.ts:56:24)
    54 |   for (const instance of INVIDIOUS_INSTANCES) {
    55 |     try {
  > 56 |       const response = await fetch(`${instance}${apiPath}`, {
       |                        ^
    57 |         signal: AbortSignal.timeout(10000),
    58 |         headers: {
    59 |           'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36', {
    code: 23,
    INDEX_SIZE_ERR: 1,
    DOMSTRING_SIZE_ERR: 2,
    HIERARCHY_REQUEST_ERR: 3,
    WRONG_DOCUMENT_ERR: 4,
    INVALID_CHARACTER_ERR: 5,
    NO_DATA_ALLOWED_ERR: 6,
    NO_MODIFICATION_ALLOWED_ERR: 7,
    NOT_FOUND_ERR: 8,
    NOT_SUPPORTED_ERR: 9,
    INUSE_ATTRIBUTE_ERR: 10,
    INVALID_STATE_ERR: 11,
    SYNTAX_ERR: 12,
    INVALID_MODIFICATION_ERR: 13,
    NAMESPACE_ERR: 14,
    INVALID_ACCESS_ERR: 15,
    VALIDATION_ERR: 16,
    TYPE_MISMATCH_ERR: 17,
    SECURITY_ERR: 18,
    NETWORK_ERR: 19,
    ABORT_ERR: 20,
    URL_MISMATCH_ERR: 21,
    QUOTA_EXCEEDED_ERR: 22,
    TIMEOUT_ERR: 23,
    INVALID_NODE_TYPE_ERR: 24,
    DATA_CLONE_ERR: 25
  },
  Error: HTTP 404
      at GET (app/api/proxy/invidious/route.ts:64:15)
    62 |       
    63 |       if (!response.ok) {
  > 64 |         throw new Error(`HTTP ${response.status}`);
       |               ^
    65 |       }
    66 |       
    67 |       const data = await response.json();
]
All Piped instances failed: [
  Error: HTTP 502
      at GET (app/api/proxy/piped/route.ts:42:15)
    40 |       
    41 |       if (!response.ok) {
  > 42 |         throw new Error(`HTTP ${response.status}`);
       |               ^
    43 |       }
    44 |       
    45 |       const data = await response.json();,
  TypeError: fetch failed
      at async GET (app/api/proxy/piped/route.ts:34:24)
    32 |   for (const instance of PIPED_INSTANCES) {
    33 |     try {
  > 34 |       const response = await fetch(`${instance}${apiPath}`, {
       |                        ^
    35 |         signal: AbortSignal.timeout(10000),
    36 |         headers: {
    37 |           'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36', {
    [cause]: Error: getaddrinfo ENOTFOUND adminforge.destreams
        at ignore-listed frames {
      errno: -3008,
      code: 'ENOTFOUND',
      syscall: 'getaddrinfo',
      hostname: 'adminforge.destreams'
    }
  },
  SyntaxError: Unexpected token 'P', "Piped has shutdown" is not valid JSON
      at JSON.parse (<anonymous>)
      at async GET (app/api/proxy/piped/route.ts:45:20)
    43 |       }
    44 |       
  > 45 |       const data = await response.json();
       |                    ^
    46 |       return NextResponse.json(data);
    47 |     } catch (error: any) {
    48 |       errors.push(error);
]
 GET /api/proxy/piped?path=streams&videoId=KKFubczfTOs 502 in 3.0s (compile: 148ms, render: 2.9s)
 GET / 200 in 133ms (compile: 98ms, render: 35ms)
 GET /api/proxy/invidious?path=trending&region=VN 200 in 2.7s (compile: 11ms, render: 2.7s)
 GET /api/proxy/invidious?path=search&q=+music&type=video&limit=20 200 in 14.6s (compile: 2ms, render: 14.6s)
 GET /api/proxy/invidious?path=search&q=music+mix+compilation&type=video&limit=20 200 in 14.6s (compile: 1986µs, render: 14.6s)
 GET / 200 in 307ms (compile: 3ms, render: 304ms)
All Invidious instances failed: [
  Error: HTTP 502
      at GET (app/api/proxy/invidious/route.ts:64:15)
    62 |       
    63 |       if (!response.ok) {
  > 64 |         throw new Error(`HTTP ${response.status}`);
       |               ^
    65 |       }
    66 |       
    67 |       const data = await response.json();,
  SyntaxError: Unexpected token '<', "<!DOCTYPE "... is not valid JSON
      at JSON.parse (<anonymous>)
      at async GET (app/api/proxy/invidious/route.ts:67:20)
    65 |       }
    66 |       
  > 67 |       const data = await response.json();
       |                    ^
    68 |       return NextResponse.json(data);
    69 |     } catch (error: any) {
    70 |       errors.push(error);,
  Error: HTTP 403
      at GET (app/api/proxy/invidious/route.ts:64:15)
    62 |       
    63 |       if (!response.ok) {
  > 64 |         throw new Error(`HTTP ${response.status}`);
       |               ^
    65 |       }
    66 |       
    67 |       const data = await response.json();,
  Error: HTTP 403
      at GET (app/api/proxy/invidious/route.ts:64:15)
    62 |       
    63 |       if (!response.ok) {
  > 64 |         throw new Error(`HTTP ${response.status}`);
       |               ^
    65 |       }
    66 |       
    67 |       const data = await response.json();,
  TypeError: fetch failed
      at async GET (app/api/proxy/invidious/route.ts:56:24)
    54 |   for (const instance of INVIDIOUS_INSTANCES) {
    55 |     try {
  > 56 |       const response = await fetch(`${instance}${apiPath}`, {
       |                        ^
    57 |         signal: AbortSignal.timeout(10000),
    58 |         headers: {
    59 |           'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36', {
    [cause]: Error: getaddrinfo ENOTFOUND invidious.fdn.fr
        at ignore-listed frames {
      errno: -3008,
      code: 'ENOTFOUND',
      syscall: 'getaddrinfo',
      hostname: 'invidious.fdn.fr'
    }
  },
  Error [TimeoutError]: The operation was aborted due to timeout
      at async GET (app/api/proxy/invidious/route.ts:56:24)
    54 |   for (const instance of INVIDIOUS_INSTANCES) {
    55 |     try {
  > 56 |       const response = await fetch(`${instance}${apiPath}`, {
       |                        ^
    57 |         signal: AbortSignal.timeout(10000),
    58 |         headers: {
    59 |           'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36', {
    code: 23,
    INDEX_SIZE_ERR: 1,
    DOMSTRING_SIZE_ERR: 2,
    HIERARCHY_REQUEST_ERR: 3,
    WRONG_DOCUMENT_ERR: 4,
    INVALID_CHARACTER_ERR: 5,
    NO_DATA_ALLOWED_ERR: 6,
    NO_MODIFICATION_ALLOWED_ERR: 7,
    NOT_FOUND_ERR: 8,
    NOT_SUPPORTED_ERR: 9,
    INUSE_ATTRIBUTE_ERR: 10,
    INVALID_STATE_ERR: 11,
    SYNTAX_ERR: 12,
    INVALID_MODIFICATION_ERR: 13,
    NAMESPACE_ERR: 14,
    INVALID_ACCESS_ERR: 15,
    VALIDATION_ERR: 16,
    TYPE_MISMATCH_ERR: 17,
    SECURITY_ERR: 18,
    NETWORK_ERR: 19,
    ABORT_ERR: 20,
    URL_MISMATCH_ERR: 21,
    QUOTA_EXCEEDED_ERR: 22,
    TIMEOUT_ERR: 23,
    INVALID_NODE_TYPE_ERR: 24,
    DATA_CLONE_ERR: 25
  },
  Error: HTTP 404
      at GET (app/api/proxy/invidious/route.ts:64:15)
    62 |       
    63 |       if (!response.ok) {
  > 64 |         throw new Error(`HTTP ${response.status}`);
       |               ^
    65 |       }
    66 |       
    67 |       const data = await response.json();
]
All Invidious instances failed: [
  Error: HTTP 502
      at GET (app/api/proxy/invidious/route.ts:64:15)
    62 |       
    63 |       if (!response.ok) {
  > 64 |         throw new Error(`HTTP ${response.status}`);
       |               ^
    65 |       }
    66 |       
    67 |       const data = await response.json();,
  SyntaxError: Unexpected token '<', "<!DOCTYPE "... is not valid JSON
      at JSON.parse (<anonymous>)
      at async GET (app/api/proxy/invidious/route.ts:67:20)
    65 |       }
    66 |       
  > 67 |       const data = await response.json();
       |                    ^
    68 |       return NextResponse.json(data);
    69 |     } catch (error: any) {
    70 |       errors.push(error);,
  Error: HTTP 403
      at GET (app/api/proxy/invidious/route.ts:64:15)
    62 |       
    63 |       if (!response.ok) {
  > 64 |         throw new Error(`HTTP ${response.status}`);
       |               ^
    65 |       }
    66 |       
    67 |       const data = await response.json();,
  Error: HTTP 403
      at GET (app/api/proxy/invidious/route.ts:64:15)
    62 |       
    63 |       if (!response.ok) {
  > 64 |         throw new Error(`HTTP ${response.status}`);
       |               ^
    65 |       }
    66 |       
    67 |       const data = await response.json();,
  TypeError: fetch failed
      at async GET (app/api/proxy/invidious/route.ts:56:24)
    54 |   for (const instance of INVIDIOUS_INSTANCES) {
    55 |     try {
  > 56 |       const response = await fetch(`${instance}${apiPath}`, {
       |                        ^
    57 |         signal: AbortSignal.timeout(10000),
    58 |         headers: {
    59 |           'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36', {
    [cause]: Error: getaddrinfo ENOTFOUND invidious.fdn.fr
        at ignore-listed frames {
      errno: -3008,
      code: 'ENOTFOUND',
      syscall: 'getaddrinfo',
      hostname: 'invidious.fdn.fr'
    }
  },
  Error [TimeoutError]: The operation was aborted due to timeout
      at async GET (app/api/proxy/invidious/route.ts:56:24)
    54 |   for (const instance of INVIDIOUS_INSTANCES) {
    55 |     try {
  > 56 |       const response = await fetch(`${instance}${apiPath}`, {
       |                        ^
    57 |         signal: AbortSignal.timeout(10000),
    58 |         headers: {
    59 |           'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36', {
    code: 23,
    INDEX_SIZE_ERR: 1,
    DOMSTRING_SIZE_ERR: 2,
    HIERARCHY_REQUEST_ERR: 3,
    WRONG_DOCUMENT_ERR: 4,
    INVALID_CHARACTER_ERR: 5,
    NO_DATA_ALLOWED_ERR: 6,
    NO_MODIFICATION_ALLOWED_ERR: 7,
    NOT_FOUND_ERR: 8,
    NOT_SUPPORTED_ERR: 9,
    INUSE_ATTRIBUTE_ERR: 10,
    INVALID_STATE_ERR: 11,
    SYNTAX_ERR: 12,
    INVALID_MODIFICATION_ERR: 13,
    NAMESPACE_ERR: 14,
    INVALID_ACCESS_ERR: 15,
    VALIDATION_ERR: 16,
    TYPE_MISMATCH_ERR: 17,
    SECURITY_ERR: 18,
    NETWORK_ERR: 19,
    ABORT_ERR: 20,
    URL_MISMATCH_ERR: 21,
    QUOTA_EXCEEDED_ERR: 22,
    TIMEOUT_ERR: 23,
    INVALID_NODE_TYPE_ERR: 24,
    DATA_CLONE_ERR: 25
  },
  Error: HTTP 404
      at GET (app/api/proxy/invidious/route.ts:64:15)
    62 |       
    63 |       if (!response.ok) {
  > 64 |         throw new Error(`HTTP ${response.status}`);
       |               ^
    65 |       }
    66 |       
    67 |       const data = await response.json();
]
All Invidious instances failed: [
  Error: HTTP 502
      at GET (app/api/proxy/invidious/route.ts:64:15)
    62 |       
    63 |       if (!response.ok) {
  > 64 |         throw new Error(`HTTP ${response.status}`);
       |               ^
    65 |       }
    66 |       
    67 |       const data = await response.json();,
  SyntaxError: Unexpected token '<', "<!DOCTYPE "... is not valid JSON
      at JSON.parse (<anonymous>)
      at async GET (app/api/proxy/invidious/route.ts:67:20)
    65 |       }
    66 |       
  > 67 |       const data = await response.json();
       |                    ^
    68 |       return NextResponse.json(data);
    69 |     } catch (error: any) {
    70 |       errors.push(error);,
  Error: HTTP 403
      at GET (app/api/proxy/invidious/route.ts:64:15)
    62 |       
    63 |       if (!response.ok) {
  > 64 |         throw new Error(`HTTP ${response.status}`);
       |               ^
    65 |       }
    66 |       
    67 |       const data = await response.json();,
  Error: HTTP 403
      at GET (app/api/proxy/invidious/route.ts:64:15)
    62 |       
    63 |       if (!response.ok) {
  > 64 |         throw new Error(`HTTP ${response.status}`);
       |               ^
    65 |       }
    66 |       
    67 |       const data = await response.json();,
  TypeError: fetch failed
      at async GET (app/api/proxy/invidious/route.ts:56:24)
    54 |   for (const instance of INVIDIOUS_INSTANCES) {
    55 |     try {
  > 56 |       const response = await fetch(`${instance}${apiPath}`, {
       |                        ^
    57 |         signal: AbortSignal.timeout(10000),
    58 |         headers: {
    59 |           'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36', {
    [cause]: Error: getaddrinfo ENOTFOUND invidious.fdn.fr
        at ignore-listed frames {
      errno: -3008,
      code: 'ENOTFOUND',
      syscall: 'getaddrinfo',
      hostname: 'invidious.fdn.fr'
    }
  },
  Error [TimeoutError]: The operation was aborted due to timeout
      at async GET (app/api/proxy/invidious/route.ts:56:24)
    54 |   for (const instance of INVIDIOUS_INSTANCES) {
    55 |     try {
  > 56 |       const response = await fetch(`${instance}${apiPath}`, {
       |                        ^
    57 |         signal: AbortSignal.timeout(10000),
    58 |         headers: {
    59 |           'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36', {
    code: 23,
    INDEX_SIZE_ERR: 1,
    DOMSTRING_SIZE_ERR: 2,
    HIERARCHY_REQUEST_ERR: 3,
    WRONG_DOCUMENT_ERR: 4,
    INVALID_CHARACTER_ERR: 5,
    NO_DATA_ALLOWED_ERR: 6,
    NO_MODIFICATION_ALLOWED_ERR: 7,
    NOT_FOUND_ERR: 8,
    NOT_SUPPORTED_ERR: 9,
    INUSE_ATTRIBUTE_ERR: 10,
    INVALID_STATE_ERR: 11,
    SYNTAX_ERR: 12,
    INVALID_MODIFICATION_ERR: 13,
    NAMESPACE_ERR: 14,
    INVALID_ACCESS_ERR: 15,
    VALIDATION_ERR: 16,
    TYPE_MISMATCH_ERR: 17,
    SECURITY_ERR: 18,
    NETWORK_ERR: 19,
    ABORT_ERR: 20,
    URL_MISMATCH_ERR: 21,
    QUOTA_EXCEEDED_ERR: 22,
    TIMEOUT_ERR: 23,
    INVALID_NODE_TYPE_ERR: 24,
    DATA_CLONE_ERR: 25
  },
  Error: HTTP 404
      at GET (app/api/proxy/invidious/route.ts:64:15)
    62 |       
    63 |       if (!response.ok) {
  > 64 |         throw new Error(`HTTP ${response.status}`);
       |               ^
    65 |       }
    66 |       
    67 |       const data = await response.json();
]
All Invidious instances failed: [
  Error: HTTP 502
      at GET (app/api/proxy/invidious/route.ts:64:15)
    62 |       
    63 |       if (!response.ok) {
  > 64 |         throw new Error(`HTTP ${response.status}`);
       |               ^
    65 |       }
    66 |       
    67 |       const data = await response.json();,
  SyntaxError: Unexpected token '<', "<!DOCTYPE "... is not valid JSON
      at JSON.parse (<anonymous>)
      at async GET (app/api/proxy/invidious/route.ts:67:20)
    65 |       }
    66 |       
  > 67 |       const data = await response.json();
       |                    ^
    68 |       return NextResponse.json(data);
    69 |     } catch (error: any) {
    70 |       errors.push(error);,
  Error: HTTP 403
      at GET (app/api/proxy/invidious/route.ts:64:15)
    62 |       
    63 |       if (!response.ok) {
  > 64 |         throw new Error(`HTTP ${response.status}`);
       |               ^
    65 |       }
    66 |       
    67 |       const data = await response.json();,
  Error: HTTP 403
      at GET (app/api/proxy/invidious/route.ts:64:15)
    62 |       
    63 |       if (!response.ok) {
  > 64 |         throw new Error(`HTTP ${response.status}`);
       |               ^
    65 |       }
    66 |       
    67 |       const data = await response.json();,
  TypeError: fetch failed
      at async GET (app/api/proxy/invidious/route.ts:56:24)
    54 |   for (const instance of INVIDIOUS_INSTANCES) {
    55 |     try {
  > 56 |       const response = await fetch(`${instance}${apiPath}`, {
       |                        ^
    57 |         signal: AbortSignal.timeout(10000),
    58 |         headers: {
    59 |           'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36', {
    [cause]: Error: getaddrinfo ENOTFOUND invidious.fdn.fr
        at ignore-listed frames {
      errno: -3008,
      code: 'ENOTFOUND',
      syscall: 'getaddrinfo',
      hostname: 'invidious.fdn.fr'
    }
  },
  Error [TimeoutError]: The operation was aborted due to timeout
      at async GET (app/api/proxy/invidious/route.ts:56:24)
    54 |   for (const instance of INVIDIOUS_INSTANCES) {
    55 |     try {
  > 56 |       const response = await fetch(`${instance}${apiPath}`, {
       |                        ^
    57 |         signal: AbortSignal.timeout(10000),
    58 |         headers: {
    59 |           'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36', {
    code: 23,
    INDEX_SIZE_ERR: 1,
    DOMSTRING_SIZE_ERR: 2,
    HIERARCHY_REQUEST_ERR: 3,
    WRONG_DOCUMENT_ERR: 4,
    INVALID_CHARACTER_ERR: 5,
    NO_DATA_ALLOWED_ERR: 6,
    NO_MODIFICATION_ALLOWED_ERR: 7,
    NOT_FOUND_ERR: 8,
    NOT_SUPPORTED_ERR: 9,
    INUSE_ATTRIBUTE_ERR: 10,
    INVALID_STATE_ERR: 11,
    SYNTAX_ERR: 12,
    INVALID_MODIFICATION_ERR: 13,
    NAMESPACE_ERR: 14,
    INVALID_ACCESS_ERR: 15,
    VALIDATION_ERR: 16,
    TYPE_MISMATCH_ERR: 17,
    SECURITY_ERR: 18,
    NETWORK_ERR: 19,
    ABORT_ERR: 20,
    URL_MISMATCH_ERR: 21,
    QUOTA_EXCEEDED_ERR: 22,
    TIMEOUT_ERR: 23,
    INVALID_NODE_TYPE_ERR: 24,
    DATA_CLONE_ERR: 25
  },
  Error: HTTP 404
      at GET (app/api/proxy/invidious/route.ts:64:15)
    62 |       
    63 |       if (!response.ok) {
  > 64 |         throw new Error(`HTTP ${response.status}`);
       |               ^
    65 |       }
    66 |       
    67 |       const data = await response.json();
]
 GET /api/proxy/invidious?path=trending&region=VN 502 in 15.5s (compile: 11ms, render: 15.5s)
 GET /api/proxy/invidious?path=trending&region=VN 200 in 10.7s (compile: 3ms, render: 10.7s)
 GET / 200 in 61ms (compile: 7ms, render: 55ms)
 GET /feed/subscriptions 200 in 123ms (compile: 88ms, render: 35ms)
All Invidious instances failed: [
  Error: HTTP 502
      at GET (app/api/proxy/invidious/route.ts:64:15)
    62 |       
    63 |       if (!response.ok) {
  > 64 |         throw new Error(`HTTP ${response.status}`);
       |               ^
    65 |       }
    66 |       
    67 |       const data = await response.json();,
  SyntaxError: Unexpected token '<', "<!DOCTYPE "... is not valid JSON
      at JSON.parse (<anonymous>)
      at async GET (app/api/proxy/invidious/route.ts:67:20)
    65 |       }
    66 |       
  > 67 |       const data = await response.json();
       |                    ^
    68 |       return NextResponse.json(data);
    69 |     } catch (error: any) {
    70 |       errors.push(error);,
  Error: HTTP 403
      at GET (app/api/proxy/invidious/route.ts:64:15)
    62 |       
    63 |       if (!response.ok) {
  > 64 |         throw new Error(`HTTP ${response.status}`);
       |               ^
    65 |       }
    66 |       
    67 |       const data = await response.json();,
  Error: HTTP 403
      at GET (app/api/proxy/invidious/route.ts:64:15)
    62 |       
    63 |       if (!response.ok) {
  > 64 |         throw new Error(`HTTP ${response.status}`);
       |               ^
    65 |       }
    66 |       
    67 |       const data = await response.json();,
  TypeError: fetch failed
      at async GET (app/api/proxy/invidious/route.ts:56:24)
    54 |   for (const instance of INVIDIOUS_INSTANCES) {
    55 |     try {
  > 56 |       const response = await fetch(`${instance}${apiPath}`, {
       |                        ^
    57 |         signal: AbortSignal.timeout(10000),
    58 |         headers: {
    59 |           'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36', {
    [cause]: Error: getaddrinfo ENOTFOUND invidious.fdn.fr
        at ignore-listed frames {
      errno: -3008,
      code: 'ENOTFOUND',
      syscall: 'getaddrinfo',
      hostname: 'invidious.fdn.fr'
    }
  },
  Error [TimeoutError]: The operation was aborted due to timeout
      at async GET (app/api/proxy/invidious/route.ts:56:24)
    54 |   for (const instance of INVIDIOUS_INSTANCES) {
    55 |     try {
  > 56 |       const response = await fetch(`${instance}${apiPath}`, {
       |                        ^
    57 |         signal: AbortSignal.timeout(10000),
    58 |         headers: {
    59 |           'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36', {
    code: 23,
    INDEX_SIZE_ERR: 1,
    DOMSTRING_SIZE_ERR: 2,
    HIERARCHY_REQUEST_ERR: 3,
    WRONG_DOCUMENT_ERR: 4,
    INVALID_CHARACTER_ERR: 5,
    NO_DATA_ALLOWED_ERR: 6,
    NO_MODIFICATION_ALLOWED_ERR: 7,
    NOT_FOUND_ERR: 8,
    NOT_SUPPORTED_ERR: 9,
    INUSE_ATTRIBUTE_ERR: 10,
    INVALID_STATE_ERR: 11,
    SYNTAX_ERR: 12,
    INVALID_MODIFICATION_ERR: 13,
    NAMESPACE_ERR: 14,
    INVALID_ACCESS_ERR: 15,
    VALIDATION_ERR: 16,
    TYPE_MISMATCH_ERR: 17,
    SECURITY_ERR: 18,
    NETWORK_ERR: 19,
    ABORT_ERR: 20,
    URL_MISMATCH_ERR: 21,
    QUOTA_EXCEEDED_ERR: 22,
    TIMEOUT_ERR: 23,
    INVALID_NODE_TYPE_ERR: 24,
    DATA_CLONE_ERR: 25
  },
  Error: HTTP 404
      at GET (app/api/proxy/invidious/route.ts:64:15)
    62 |       
    63 |       if (!response.ok) {
  > 64 |         throw new Error(`HTTP ${response.status}`);
       |               ^
    65 |       }
    66 |       
    67 |       const data = await response.json();
]
 GET / 200 in 13ms (compile: 2ms, render: 11ms)
 GET /feed/library 200 in 50ms (compile: 29ms, render: 21ms)
 GET /watch?v=HXkh7EOqcQ4 200 in 32ms (compile: 5ms, render: 28ms)
 GET /api/proxy/invidious?path=trending&region=VN 200 in 14.9s (compile: 104ms, render: 14.8s)
All Invidious instances failed: [
  Error: HTTP 502
      at GET (app/api/proxy/invidious/route.ts:64:15)
    62 |       
    63 |       if (!response.ok) {
  > 64 |         throw new Error(`HTTP ${response.status}`);
       |               ^
    65 |       }
    66 |       
    67 |       const data = await response.json();,
  SyntaxError: Unexpected token '<', "<!DOCTYPE "... is not valid JSON
      at JSON.parse (<anonymous>)
      at async GET (app/api/proxy/invidious/route.ts:67:20)
    65 |       }
    66 |       
  > 67 |       const data = await response.json();
       |                    ^
    68 |       return NextResponse.json(data);
    69 |     } catch (error: any) {
    70 |       errors.push(error);,
  Error: HTTP 403
      at GET (app/api/proxy/invidious/route.ts:64:15)
    62 |       
    63 |       if (!response.ok) {
  > 64 |         throw new Error(`HTTP ${response.status}`);
       |               ^
    65 |       }
    66 |       
    67 |       const data = await response.json();,
  Error: HTTP 403
      at GET (app/api/proxy/invidious/route.ts:64:15)
    62 |       
    63 |       if (!response.ok) {
  > 64 |         throw new Error(`HTTP ${response.status}`);
       |               ^
    65 |       }
    66 |       
    67 |       const data = await response.json();,
  TypeError: fetch failed
      at async GET (app/api/proxy/invidious/route.ts:56:24)
    54 |   for (const instance of INVIDIOUS_INSTANCES) {
    55 |     try {
  > 56 |       const response = await fetch(`${instance}${apiPath}`, {
       |                        ^
    57 |         signal: AbortSignal.timeout(10000),
    58 |         headers: {
    59 |           'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36', {
    [cause]: Error: getaddrinfo ENOTFOUND invidious.fdn.fr
        at ignore-listed frames {
      errno: -3008,
      code: 'ENOTFOUND',
      syscall: 'getaddrinfo',
      hostname: 'invidious.fdn.fr'
    }
  },
  Error [TimeoutError]: The operation was aborted due to timeout
      at async GET (app/api/proxy/invidious/route.ts:56:24)
    54 |   for (const instance of INVIDIOUS_INSTANCES) {
    55 |     try {
  > 56 |       const response = await fetch(`${instance}${apiPath}`, {
       |                        ^
    57 |         signal: AbortSignal.timeout(10000),
    58 |         headers: {
    59 |           'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36', {
    code: 23,
    INDEX_SIZE_ERR: 1,
    DOMSTRING_SIZE_ERR: 2,
    HIERARCHY_REQUEST_ERR: 3,
    WRONG_DOCUMENT_ERR: 4,
    INVALID_CHARACTER_ERR: 5,
    NO_DATA_ALLOWED_ERR: 6,
    NO_MODIFICATION_ALLOWED_ERR: 7,
    NOT_FOUND_ERR: 8,
    NOT_SUPPORTED_ERR: 9,
    INUSE_ATTRIBUTE_ERR: 10,
    INVALID_STATE_ERR: 11,
    SYNTAX_ERR: 12,
    INVALID_MODIFICATION_ERR: 13,
    NAMESPACE_ERR: 14,
    INVALID_ACCESS_ERR: 15,
    VALIDATION_ERR: 16,
    TYPE_MISMATCH_ERR: 17,
    SECURITY_ERR: 18,
    NETWORK_ERR: 19,
    ABORT_ERR: 20,
    URL_MISMATCH_ERR: 21,
    QUOTA_EXCEEDED_ERR: 22,
    TIMEOUT_ERR: 23,
    INVALID_NODE_TYPE_ERR: 24,
    DATA_CLONE_ERR: 25
  },
  Error: HTTP 404
      at GET (app/api/proxy/invidious/route.ts:64:15)
    62 |       
    63 |       if (!response.ok) {
  > 64 |         throw new Error(`HTTP ${response.status}`);
       |               ^
    65 |       }
    66 |       
    67 |       const data = await response.json();
]
 GET /api/proxy/invidious?path=trending&region=VN 200 in 5.7s (compile: 3ms, render: 5.7s)
 GET /api/proxy/invidious?path=video&videoId=HXkh7EOqcQ4 200 in 15.0s (compile: 1945µs, render: 15.0s)
 GET /api/proxy/invidious?path=video&videoId=HXkh7EOqcQ4 200 in 5ms (compile: 1598µs, render: 4ms)
All Piped instances failed: [
  Error: HTTP 502
      at GET (app/api/proxy/piped/route.ts:42:15)
    40 |       
    41 |       if (!response.ok) {
  > 42 |         throw new Error(`HTTP ${response.status}`);
       |               ^
    43 |       }
    44 |       
    45 |       const data = await response.json();,
  TypeError: fetch failed
      at async GET (app/api/proxy/piped/route.ts:34:24)
    32 |   for (const instance of PIPED_INSTANCES) {
    33 |     try {
  > 34 |       const response = await fetch(`${instance}${apiPath}`, {
       |                        ^
    35 |         signal: AbortSignal.timeout(10000),
    36 |         headers: {
    37 |           'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36', {
    [cause]: Error: getaddrinfo ENOTFOUND adminforge.destreams
        at ignore-listed frames {
      errno: -3008,
      code: 'ENOTFOUND',
      syscall: 'getaddrinfo',
      hostname: 'adminforge.destreams'
    }
  },
  SyntaxError: Unexpected token 'P', "Piped has shutdown" is not valid JSON
      at JSON.parse (<anonymous>)
      at async GET (app/api/proxy/piped/route.ts:45:20)
    43 |       }
    44 |       
  > 45 |       const data = await response.json();
       |                    ^
    46 |       return NextResponse.json(data);
    47 |     } catch (error: any) {
    48 |       errors.push(error);
]
 GET /api/proxy/piped?path=streams&videoId=HXkh7EOqcQ4 502 in 2.2s (compile: 1589µs, render: 2.2s)
All Invidious instances failed: [
  Error: HTTP 502
      at GET (app/api/proxy/invidious/route.ts:64:15)
    62 |       
    63 |       if (!response.ok) {
  > 64 |         throw new Error(`HTTP ${response.status}`);
       |               ^
    65 |       }
    66 |       
    67 |       const data = await response.json();,
  SyntaxError: Unexpected token '<', "<!DOCTYPE "... is not valid JSON
      at JSON.parse (<anonymous>)
      at async GET (app/api/proxy/invidious/route.ts:67:20)
    65 |       }
    66 |       
  > 67 |       const data = await response.json();
       |                    ^
    68 |       return NextResponse.json(data);
    69 |     } catch (error: any) {
    70 |       errors.push(error);,
  Error: HTTP 403
      at GET (app/api/proxy/invidious/route.ts:64:15)
    62 |       
    63 |       if (!response.ok) {
  > 64 |         throw new Error(`HTTP ${response.status}`);
       |               ^
    65 |       }
    66 |       
    67 |       const data = await response.json();,
  Error: HTTP 403
      at GET (app/api/proxy/invidious/route.ts:64:15)
    62 |       
    63 |       if (!response.ok) {
  > 64 |         throw new Error(`HTTP ${response.status}`);
       |               ^
    65 |       }
    66 |       
    67 |       const data = await response.json();,
  TypeError: fetch failed
      at async GET (app/api/proxy/invidious/route.ts:56:24)
    54 |   for (const instance of INVIDIOUS_INSTANCES) {
    55 |     try {
  > 56 |       const response = await fetch(`${instance}${apiPath}`, {
       |                        ^
    57 |         signal: AbortSignal.timeout(10000),
    58 |         headers: {
    59 |           'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36', {
    [cause]: Error: getaddrinfo ENOTFOUND invidious.fdn.fr
        at ignore-listed frames {
      errno: -3008,
      code: 'ENOTFOUND',
      syscall: 'getaddrinfo',
      hostname: 'invidious.fdn.fr'
    }
  },
  Error [TimeoutError]: The operation was aborted due to timeout
      at async GET (app/api/proxy/invidious/route.ts:56:24)
    54 |   for (const instance of INVIDIOUS_INSTANCES) {
    55 |     try {
  > 56 |       const response = await fetch(`${instance}${apiPath}`, {
       |                        ^
    57 |         signal: AbortSignal.timeout(10000),
    58 |         headers: {
    59 |           'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36', {
    code: 23,
    INDEX_SIZE_ERR: 1,
    DOMSTRING_SIZE_ERR: 2,
    HIERARCHY_REQUEST_ERR: 3,
    WRONG_DOCUMENT_ERR: 4,
    INVALID_CHARACTER_ERR: 5,
    NO_DATA_ALLOWED_ERR: 6,
    NO_MODIFICATION_ALLOWED_ERR: 7,
    NOT_FOUND_ERR: 8,
    NOT_SUPPORTED_ERR: 9,
    INUSE_ATTRIBUTE_ERR: 10,
    INVALID_STATE_ERR: 11,
    SYNTAX_ERR: 12,
    INVALID_MODIFICATION_ERR: 13,
    NAMESPACE_ERR: 14,
    INVALID_ACCESS_ERR: 15,
    VALIDATION_ERR: 16,
    TYPE_MISMATCH_ERR: 17,
    SECURITY_ERR: 18,
    NETWORK_ERR: 19,
    ABORT_ERR: 20,
    URL_MISMATCH_ERR: 21,
    QUOTA_EXCEEDED_ERR: 22,
    TIMEOUT_ERR: 23,
    INVALID_NODE_TYPE_ERR: 24,
    DATA_CLONE_ERR: 25
  },
  Error: HTTP 404
      at GET (app/api/proxy/invidious/route.ts:64:15)
    62 |       
    63 |       if (!response.ok) {
  > 64 |         throw new Error(`HTTP ${response.status}`);
       |               ^
    65 |       }
    66 |       
    67 |       const data = await response.json();
]
All Piped instances failed: [
  Error: HTTP 502
      at GET (app/api/proxy/piped/route.ts:42:15)
    40 |       
    41 |       if (!response.ok) {
  > 42 |         throw new Error(`HTTP ${response.status}`);
       |               ^
    43 |       }
    44 |       
    45 |       const data = await response.json();,
  TypeError: fetch failed
      at async GET (app/api/proxy/piped/route.ts:34:24)
    32 |   for (const instance of PIPED_INSTANCES) {
    33 |     try {
  > 34 |       const response = await fetch(`${instance}${apiPath}`, {
       |                        ^
    35 |         signal: AbortSignal.timeout(10000),
    36 |         headers: {
    37 |           'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36', {
    [cause]: Error: getaddrinfo ENOTFOUND adminforge.destreams
        at ignore-listed frames {
      errno: -3008,
      code: 'ENOTFOUND',
      syscall: 'getaddrinfo',
      hostname: 'adminforge.destreams'
    }
  },
  SyntaxError: Unexpected token 'P', "Piped has shutdown" is not valid JSON
      at JSON.parse (<anonymous>)
      at async GET (app/api/proxy/piped/route.ts:45:20)
    43 |       }
    44 |       
  > 45 |       const data = await response.json();
       |                    ^
    46 |       return NextResponse.json(data);
    47 |     } catch (error: any) {
    48 |       errors.push(error);
]
 GET /api/proxy/piped?path=streams&videoId=HXkh7EOqcQ4 502 in 1891ms (compile: 5ms, render: 1886ms)
All Invidious instances failed: [
  Error: HTTP 502
      at GET (app/api/proxy/invidious/route.ts:64:15)
    62 |       
    63 |       if (!response.ok) {
  > 64 |         throw new Error(`HTTP ${response.status}`);
       |               ^
    65 |       }
    66 |       
    67 |       const data = await response.json();,
  SyntaxError: Unexpected token '<', "<!DOCTYPE "... is not valid JSON
      at JSON.parse (<anonymous>)
      at async GET (app/api/proxy/invidious/route.ts:67:20)
    65 |       }
    66 |       
  > 67 |       const data = await response.json();
       |                    ^
    68 |       return NextResponse.json(data);
    69 |     } catch (error: any) {
    70 |       errors.push(error);,
  Error: HTTP 403
      at GET (app/api/proxy/invidious/route.ts:64:15)
    62 |       
    63 |       if (!response.ok) {
  > 64 |         throw new Error(`HTTP ${response.status}`);
       |               ^
    65 |       }
    66 |       
    67 |       const data = await response.json();,
  Error: HTTP 403
      at GET (app/api/proxy/invidious/route.ts:64:15)
    62 |       
    63 |       if (!response.ok) {
  > 64 |         throw new Error(`HTTP ${response.status}`);
       |               ^
    65 |       }
    66 |       
    67 |       const data = await response.json();,
  TypeError: fetch failed
      at async GET (app/api/proxy/invidious/route.ts:56:24)
    54 |   for (const instance of INVIDIOUS_INSTANCES) {
    55 |     try {
  > 56 |       const response = await fetch(`${instance}${apiPath}`, {
       |                        ^
    57 |         signal: AbortSignal.timeout(10000),
    58 |         headers: {
    59 |           'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36', {
    [cause]: Error: getaddrinfo ENOTFOUND invidious.fdn.fr
        at ignore-listed frames {
      errno: -3008,
      code: 'ENOTFOUND',
      syscall: 'getaddrinfo',
      hostname: 'invidious.fdn.fr'
    }
  },
  Error [TimeoutError]: The operation was aborted due to timeout
      at async GET (app/api/proxy/invidious/route.ts:56:24)
    54 |   for (const instance of INVIDIOUS_INSTANCES) {
    55 |     try {
  > 56 |       const response = await fetch(`${instance}${apiPath}`, {
       |                        ^
    57 |         signal: AbortSignal.timeout(10000),
    58 |         headers: {
    59 |           'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36', {
    code: 23,
    INDEX_SIZE_ERR: 1,
    DOMSTRING_SIZE_ERR: 2,
    HIERARCHY_REQUEST_ERR: 3,
    WRONG_DOCUMENT_ERR: 4,
    INVALID_CHARACTER_ERR: 5,
    NO_DATA_ALLOWED_ERR: 6,
    NO_MODIFICATION_ALLOWED_ERR: 7,
    NOT_FOUND_ERR: 8,
    NOT_SUPPORTED_ERR: 9,
    INUSE_ATTRIBUTE_ERR: 10,
    INVALID_STATE_ERR: 11,
    SYNTAX_ERR: 12,
    INVALID_MODIFICATION_ERR: 13,
    NAMESPACE_ERR: 14,
    INVALID_ACCESS_ERR: 15,
    VALIDATION_ERR: 16,
    TYPE_MISMATCH_ERR: 17,
    SECURITY_ERR: 18,
    NETWORK_ERR: 19,
    ABORT_ERR: 20,
    URL_MISMATCH_ERR: 21,
    QUOTA_EXCEEDED_ERR: 22,
    TIMEOUT_ERR: 23,
    INVALID_NODE_TYPE_ERR: 24,
    DATA_CLONE_ERR: 25
  },
  Error: HTTP 404
      at GET (app/api/proxy/invidious/route.ts:64:15)
    62 |       
    63 |       if (!response.ok) {
  > 64 |         throw new Error(`HTTP ${response.status}`);
       |               ^
    65 |       }
    66 |       
    67 |       const data = await response.json();
]
 GET / 200 in 24ms (compile: 5ms, render: 19ms)
 GET / 200 in 459ms (compile: 154ms, render: 304ms)
 GET / 200 in 327ms (compile: 11ms, render: 316ms)
 GET / 200 in 259ms (compile: 38ms, render: 221ms)
 GET / 200 in 154ms (compile: 5ms, render: 150ms)
 GET / 200 in 135ms (compile: 6ms, render: 129ms)
 GET / 200 in 141ms (compile: 6ms, render: 135ms)
 GET / 200 in 149ms (compile: 5ms, render: 143ms)
 GET / 200 in 135ms (compile: 5ms, render: 130ms)
 GET / 200 in 117ms (compile: 12ms, render: 105ms)
 GET / 200 in 98ms (compile: 6ms, render: 91ms)
 GET / 200 in 96ms (compile: 5ms, render: 91ms)
 GET / 200 in 98ms (compile: 5ms, render: 94ms)
 GET / 200 in 103ms (compile: 4ms, render: 99ms)
 GET / 200 in 112ms (compile: 7ms, render: 105ms)
 GET / 200 in 147ms (compile: 4ms, render: 143ms)
 GET / 200 in 176ms (compile: 6ms, render: 170ms)
 GET / 200 in 184ms (compile: 7ms, render: 177ms)
 GET / 200 in 161ms (compile: 8ms, render: 154ms)
 GET / 200 in 133ms (compile: 4ms, render: 129ms)
 GET / 200 in 112ms (compile: 8ms, render: 103ms)
 GET / 200 in 113ms (compile: 3ms, render: 110ms)
 GET / 200 in 108ms (compile: 8ms, render: 101ms)
 GET / 200 in 104ms (compile: 4ms, render: 100ms)
 GET / 200 in 73ms (compile: 4ms, render: 69ms)
 GET / 200 in 52ms (compile: 4ms, render: 48ms)
 GET /api/proxy/invidious?path=search&q=+music&type=video&limit=20 200 in 15.0s (compile: 3ms, render: 15.0s)
 GET /api/proxy/invidious?path=search&q=music+mix+compilation&type=video&limit=20 200 in 15.0s (compile: 4ms, render: 15.0s)
(node:17664) [DEP0060] DeprecationWarning: The `util._extend` API is deprecated. Please use Object.assign() instead.
(Use `node --trace-deprecation ...` to show where the warning was created)
All Invidious instances failed: [
  Error: HTTP 502
      at GET (app/api/proxy/invidious/route.ts:64:15)
    62 |       
    63 |       if (!response.ok) {
  > 64 |         throw new Error(`HTTP ${response.status}`);
       |               ^
    65 |       }
    66 |       
    67 |       const data = await response.json();,
  SyntaxError: Unexpected token '<', "<!DOCTYPE "... is not valid JSON
      at JSON.parse (<anonymous>)
      at async GET (app/api/proxy/invidious/route.ts:67:20)
    65 |       }
    66 |       
  > 67 |       const data = await response.json();
       |                    ^
    68 |       return NextResponse.json(data);
    69 |     } catch (error: any) {
    70 |       errors.push(error);,
  Error: HTTP 403
      at GET (app/api/proxy/invidious/route.ts:64:15)
    62 |       
    63 |       if (!response.ok) {
  > 64 |         throw new Error(`HTTP ${response.status}`);
       |               ^
    65 |       }
    66 |       
    67 |       const data = await response.json();,
  Error: HTTP 403
      at GET (app/api/proxy/invidious/route.ts:64:15)
    62 |       
    63 |       if (!response.ok) {
  > 64 |         throw new Error(`HTTP ${response.status}`);
       |               ^
    65 |       }
    66 |       
    67 |       const data = await response.json();,
  TypeError: fetch failed
      at async GET (app/api/proxy/invidious/route.ts:56:24)
    54 |   for (const instance of INVIDIOUS_INSTANCES) {
    55 |     try {
  > 56 |       const response = await fetch(`${instance}${apiPath}`, {
       |                        ^
    57 |         signal: AbortSignal.timeout(10000),
    58 |         headers: {
    59 |           'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36', {
    [cause]: Error: getaddrinfo ENOTFOUND invidious.fdn.fr
        at ignore-listed frames {
      errno: -3008,
      code: 'ENOTFOUND',
      syscall: 'getaddrinfo',
      hostname: 'invidious.fdn.fr'
    }
  },
  Error [TimeoutError]: The operation was aborted due to timeout
      at async GET (app/api/proxy/invidious/route.ts:56:24)
    54 |   for (const instance of INVIDIOUS_INSTANCES) {
    55 |     try {
  > 56 |       const response = await fetch(`${instance}${apiPath}`, {
       |                        ^
    57 |         signal: AbortSignal.timeout(10000),
    58 |         headers: {
    59 |           'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36', {
    code: 23,
    INDEX_SIZE_ERR: 1,
    DOMSTRING_SIZE_ERR: 2,
    HIERARCHY_REQUEST_ERR: 3,
    WRONG_DOCUMENT_ERR: 4,
    INVALID_CHARACTER_ERR: 5,
    NO_DATA_ALLOWED_ERR: 6,
    NO_MODIFICATION_ALLOWED_ERR: 7,
    NOT_FOUND_ERR: 8,
    NOT_SUPPORTED_ERR: 9,
    INUSE_ATTRIBUTE_ERR: 10,
    INVALID_STATE_ERR: 11,
    SYNTAX_ERR: 12,
    INVALID_MODIFICATION_ERR: 13,
    NAMESPACE_ERR: 14,
    INVALID_ACCESS_ERR: 15,
    VALIDATION_ERR: 16,
    TYPE_MISMATCH_ERR: 17,
    SECURITY_ERR: 18,
    NETWORK_ERR: 19,
    ABORT_ERR: 20,
    URL_MISMATCH_ERR: 21,
    QUOTA_EXCEEDED_ERR: 22,
    TIMEOUT_ERR: 23,
    INVALID_NODE_TYPE_ERR: 24,
    DATA_CLONE_ERR: 25
  },
  Error: HTTP 404
      at GET (app/api/proxy/invidious/route.ts:64:15)
    62 |       
    63 |       if (!response.ok) {
  > 64 |         throw new Error(`HTTP ${response.status}`);
       |               ^
    65 |       }
    66 |       
    67 |       const data = await response.json();
]
All Invidious instances failed: [
  Error: HTTP 502
      at GET (app/api/proxy/invidious/route.ts:64:15)
    62 |       
    63 |       if (!response.ok) {
  > 64 |         throw new Error(`HTTP ${response.status}`);
       |               ^
    65 |       }
    66 |       
    67 |       const data = await response.json();,
  SyntaxError: Unexpected token '<', "<!DOCTYPE "... is not valid JSON
      at JSON.parse (<anonymous>)
      at async GET (app/api/proxy/invidious/route.ts:67:20)
    65 |       }
    66 |       
  > 67 |       const data = await response.json();
       |                    ^
    68 |       return NextResponse.json(data);
    69 |     } catch (error: any) {
    70 |       errors.push(error);,
  Error: HTTP 403
      at GET (app/api/proxy/invidious/route.ts:64:15)
    62 |       
    63 |       if (!response.ok) {
  > 64 |         throw new Error(`HTTP ${response.status}`);
       |               ^
    65 |       }
    66 |       
    67 |       const data = await response.json();,
  Error: HTTP 403
      at GET (app/api/proxy/invidious/route.ts:64:15)
    62 |       
    63 |       if (!response.ok) {
  > 64 |         throw new Error(`HTTP ${response.status}`);
       |               ^
    65 |       }
    66 |       
    67 |       const data = await response.json();,
  TypeError: fetch failed
      at async GET (app/api/proxy/invidious/route.ts:56:24)
    54 |   for (const instance of INVIDIOUS_INSTANCES) {
    55 |     try {
  > 56 |       const response = await fetch(`${instance}${apiPath}`, {
       |                        ^
    57 |         signal: AbortSignal.timeout(10000),
    58 |         headers: {
    59 |           'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36', {
    [cause]: Error: getaddrinfo ENOTFOUND invidious.fdn.fr
        at ignore-listed frames {
      errno: -3008,
      code: 'ENOTFOUND',
      syscall: 'getaddrinfo',
      hostname: 'invidious.fdn.fr'
    }
  },
  Error [TimeoutError]: The operation was aborted due to timeout
      at async GET (app/api/proxy/invidious/route.ts:56:24)
    54 |   for (const instance of INVIDIOUS_INSTANCES) {
    55 |     try {
  > 56 |       const response = await fetch(`${instance}${apiPath}`, {
       |                        ^
    57 |         signal: AbortSignal.timeout(10000),
    58 |         headers: {
    59 |           'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36', {
    code: 23,
    INDEX_SIZE_ERR: 1,
    DOMSTRING_SIZE_ERR: 2,
    HIERARCHY_REQUEST_ERR: 3,
    WRONG_DOCUMENT_ERR: 4,
    INVALID_CHARACTER_ERR: 5,
    NO_DATA_ALLOWED_ERR: 6,
    NO_MODIFICATION_ALLOWED_ERR: 7,
    NOT_FOUND_ERR: 8,
    NOT_SUPPORTED_ERR: 9,
    INUSE_ATTRIBUTE_ERR: 10,
    INVALID_STATE_ERR: 11,
    SYNTAX_ERR: 12,
    INVALID_MODIFICATION_ERR: 13,
    NAMESPACE_ERR: 14,
    INVALID_ACCESS_ERR: 15,
    VALIDATION_ERR: 16,
    TYPE_MISMATCH_ERR: 17,
    SECURITY_ERR: 18,
    NETWORK_ERR: 19,
    ABORT_ERR: 20,
    URL_MISMATCH_ERR: 21,
    QUOTA_EXCEEDED_ERR: 22,
    TIMEOUT_ERR: 23,
    INVALID_NODE_TYPE_ERR: 24,
    DATA_CLONE_ERR: 25
  },
  Error: HTTP 404
      at GET (app/api/proxy/invidious/route.ts:64:15)
    62 |       
    63 |       if (!response.ok) {
  > 64 |         throw new Error(`HTTP ${response.status}`);
       |               ^
    65 |       }
    66 |       
    67 |       const data = await response.json();
]
All Invidious instances failed: [
  Error: HTTP 502
      at GET (app/api/proxy/invidious/route.ts:64:15)
    62 |       
    63 |       if (!response.ok) {
  > 64 |         throw new Error(`HTTP ${response.status}`);
       |               ^
    65 |       }
    66 |       
    67 |       const data = await response.json();,
  SyntaxError: Unexpected token '<', "<!DOCTYPE "... is not valid JSON
      at JSON.parse (<anonymous>)
      at async GET (app/api/proxy/invidious/route.ts:67:20)
    65 |       }
    66 |       
  > 67 |       const data = await response.json();
       |                    ^
    68 |       return NextResponse.json(data);
    69 |     } catch (error: any) {
    70 |       errors.push(error);,
  Error: HTTP 403
      at GET (app/api/proxy/invidious/route.ts:64:15)
    62 |       
    63 |       if (!response.ok) {
  > 64 |         throw new Error(`HTTP ${response.status}`);
       |               ^
    65 |       }
    66 |       
    67 |       const data = await response.json();,
  Error: HTTP 403
      at GET (app/api/proxy/invidious/route.ts:64:15)
    62 |       
    63 |       if (!response.ok) {
  > 64 |         throw new Error(`HTTP ${response.status}`);
       |               ^
    65 |       }
    66 |       
    67 |       const data = await response.json();,
  TypeError: fetch failed
      at async GET (app/api/proxy/invidious/route.ts:56:24)
    54 |   for (const instance of INVIDIOUS_INSTANCES) {
    55 |     try {
  > 56 |       const response = await fetch(`${instance}${apiPath}`, {
       |                        ^
    57 |         signal: AbortSignal.timeout(10000),
    58 |         headers: {
    59 |           'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36', {
    [cause]: Error: getaddrinfo ENOTFOUND invidious.fdn.fr
        at ignore-listed frames {
      errno: -3008,
      code: 'ENOTFOUND',
      syscall: 'getaddrinfo',
      hostname: 'invidious.fdn.fr'
    }
  },
  Error [TimeoutError]: The operation was aborted due to timeout
      at async GET (app/api/proxy/invidious/route.ts:56:24)
    54 |   for (const instance of INVIDIOUS_INSTANCES) {
    55 |     try {
  > 56 |       const response = await fetch(`${instance}${apiPath}`, {
       |                        ^
    57 |         signal: AbortSignal.timeout(10000),
    58 |         headers: {
    59 |           'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36', {
    code: 23,
    INDEX_SIZE_ERR: 1,
    DOMSTRING_SIZE_ERR: 2,
    HIERARCHY_REQUEST_ERR: 3,
    WRONG_DOCUMENT_ERR: 4,
    INVALID_CHARACTER_ERR: 5,
    NO_DATA_ALLOWED_ERR: 6,
    NO_MODIFICATION_ALLOWED_ERR: 7,
    NOT_FOUND_ERR: 8,
    NOT_SUPPORTED_ERR: 9,
    INUSE_ATTRIBUTE_ERR: 10,
    INVALID_STATE_ERR: 11,
    SYNTAX_ERR: 12,
    INVALID_MODIFICATION_ERR: 13,
    NAMESPACE_ERR: 14,
    INVALID_ACCESS_ERR: 15,
    VALIDATION_ERR: 16,
    TYPE_MISMATCH_ERR: 17,
    SECURITY_ERR: 18,
    NETWORK_ERR: 19,
    ABORT_ERR: 20,
    URL_MISMATCH_ERR: 21,
    QUOTA_EXCEEDED_ERR: 22,
    TIMEOUT_ERR: 23,
    INVALID_NODE_TYPE_ERR: 24,
    DATA_CLONE_ERR: 25
  },
  Error: HTTP 404
      at GET (app/api/proxy/invidious/route.ts:64:15)
    62 |       
    63 |       if (!response.ok) {
  > 64 |         throw new Error(`HTTP ${response.status}`);
       |               ^
    65 |       }
    66 |       
    67 |       const data = await response.json();
]
 GET /api/proxy/invidious?path=trending&region=VN 200 in 15.0s (compile: 7ms, render: 15.0s)
All Invidious instances failed: [
  Error: HTTP 502
      at GET (app/api/proxy/invidious/route.ts:64:15)
    62 |       
    63 |       if (!response.ok) {
  > 64 |         throw new Error(`HTTP ${response.status}`);
       |               ^
    65 |       }
    66 |       
    67 |       const data = await response.json();,
  SyntaxError: Unexpected token '<', "<!DOCTYPE "... is not valid JSON
      at JSON.parse (<anonymous>)
      at async GET (app/api/proxy/invidious/route.ts:67:20)
    65 |       }
    66 |       
  > 67 |       const data = await response.json();
       |                    ^
    68 |       return NextResponse.json(data);
    69 |     } catch (error: any) {
    70 |       errors.push(error);,
  Error: HTTP 403
      at GET (app/api/proxy/invidious/route.ts:64:15)
    62 |       
    63 |       if (!response.ok) {
  > 64 |         throw new Error(`HTTP ${response.status}`);
       |               ^
    65 |       }
    66 |       
    67 |       const data = await response.json();,
  Error: HTTP 403
      at GET (app/api/proxy/invidious/route.ts:64:15)
    62 |       
    63 |       if (!response.ok) {
  > 64 |         throw new Error(`HTTP ${response.status}`);
       |               ^
    65 |       }
    66 |       
    67 |       const data = await response.json();,
  TypeError: fetch failed
      at async GET (app/api/proxy/invidious/route.ts:56:24)
    54 |   for (const instance of INVIDIOUS_INSTANCES) {
    55 |     try {
  > 56 |       const response = await fetch(`${instance}${apiPath}`, {
       |                        ^
    57 |         signal: AbortSignal.timeout(10000),
    58 |         headers: {
    59 |           'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36', {
    [cause]: Error: getaddrinfo ENOTFOUND invidious.fdn.fr
        at ignore-listed frames {
      errno: -3008,
      code: 'ENOTFOUND',
      syscall: 'getaddrinfo',
      hostname: 'invidious.fdn.fr'
    }
  },
  Error [TimeoutError]: The operation was aborted due to timeout
      at async GET (app/api/proxy/invidious/route.ts:56:24)
    54 |   for (const instance of INVIDIOUS_INSTANCES) {
    55 |     try {
  > 56 |       const response = await fetch(`${instance}${apiPath}`, {
       |                        ^
    57 |         signal: AbortSignal.timeout(10000),
    58 |         headers: {
    59 |           'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36', {
    code: 23,
    INDEX_SIZE_ERR: 1,
    DOMSTRING_SIZE_ERR: 2,
    HIERARCHY_REQUEST_ERR: 3,
    WRONG_DOCUMENT_ERR: 4,
    INVALID_CHARACTER_ERR: 5,
    NO_DATA_ALLOWED_ERR: 6,
    NO_MODIFICATION_ALLOWED_ERR: 7,
    NOT_FOUND_ERR: 8,
    NOT_SUPPORTED_ERR: 9,
    INUSE_ATTRIBUTE_ERR: 10,
    INVALID_STATE_ERR: 11,
    SYNTAX_ERR: 12,
    INVALID_MODIFICATION_ERR: 13,
    NAMESPACE_ERR: 14,
    INVALID_ACCESS_ERR: 15,
    VALIDATION_ERR: 16,
    TYPE_MISMATCH_ERR: 17,
    SECURITY_ERR: 18,
    NETWORK_ERR: 19,
    ABORT_ERR: 20,
    URL_MISMATCH_ERR: 21,
    QUOTA_EXCEEDED_ERR: 22,
    TIMEOUT_ERR: 23,
    INVALID_NODE_TYPE_ERR: 24,
    DATA_CLONE_ERR: 25
  },
  Error: HTTP 404
      at GET (app/api/proxy/invidious/route.ts:64:15)
    62 |       
    63 |       if (!response.ok) {
  > 64 |         throw new Error(`HTTP ${response.status}`);
       |               ^
    65 |       }
    66 |       
    67 |       const data = await response.json();
]
 GET / 200 in 658ms (compile: 42ms, render: 616ms)
✓ Compiled in 197ms
 GET / 200 in 854ms (compile: 466ms, render: 388ms)
 GET / 200 in 317ms (compile: 19ms, render: 298ms)
 GET / 200 in 338ms (compile: 8ms, render: 329ms)
 GET / 200 in 310ms (compile: 4ms, render: 306ms)
 GET / 200 in 327ms (compile: 10ms, render: 317ms)
 GET / 200 in 314ms (compile: 4ms, render: 309ms)
 GET / 200 in 345ms (compile: 15ms, render: 329ms)
 GET / 200 in 336ms (compile: 7ms, render: 330ms)
 GET / 200 in 402ms (compile: 5ms, render: 397ms)
 GET / 200 in 442ms (compile: 7ms, render: 435ms)
 GET / 200 in 506ms (compile: 12ms, render: 494ms)
 GET / 200 in 567ms (compile: 11ms, render: 556ms)
 GET / 200 in 567ms (compile: 20ms, render: 547ms)
 GET / 200 in 515ms (compile: 8ms, render: 508ms)
 GET / 200 in 441ms (compile: 8ms, render: 433ms)
 GET / 200 in 388ms (compile: 12ms, render: 376ms)
 GET / 200 in 285ms (compile: 39ms, render: 247ms)
 GET / 200 in 214ms (compile: 4ms, render: 210ms)
 GET / 200 in 154ms (compile: 7ms, render: 147ms)
 GET / 200 in 124ms (compile: 7ms, render: 118ms)
 GET / 200 in 76ms (compile: 6ms, render: 69ms)
 GET / 200 in 687ms (compile: 18ms, render: 670ms)
 GET / 200 in 467ms (compile: 22ms, render: 445ms)
  Reload env: .env.local
 GET / 200 in 395ms (compile: 290ms, render: 106ms)
✓ Compiled in 4ms
 GET / 200 in 345ms (compile: 9ms, render: 336ms)
 GET /feed/subscriptions 200 in 263ms (compile: 199ms, render: 64ms)
 GET /feed/library 200 in 175ms (compile: 138ms, render: 37ms)
 GET / 200 in 44ms (compile: 9ms, render: 35ms)
✓ Compiled in 94ms
 GET / 200 in 501ms (compile: 104ms, render: 397ms)
 GET / 200 in 121ms (compile: 35ms, render: 87ms)
 GET /feed/subscriptions 200 in 111ms (compile: 95ms, render: 16ms)
 GET /feed/library 200 in 32ms (compile: 7ms, render: 24ms)
✓ Compiled in 91ms
 GET /feed/library 200 in 345ms (compile: 96ms, render: 249ms)
 GET /feed/subscriptions 200 in 23ms (compile: 4ms, render: 19ms)
 GET /feed/subscriptions 200 in 67ms (compile: 7ms, render: 60ms)
 GET / 200 in 34ms (compile: 6ms, render: 28ms)
 GET /feed/subscriptions 200 in 27ms (compile: 3ms, render: 24ms)
 GET / 200 in 18ms (compile: 6ms, render: 12ms)
 GET /feed/subscriptions 200 in 26ms (compile: 7ms, render: 19ms)
✓ Compiled in 56ms
✓ Compiled in 22ms
✓ Compiled in 19ms
✓ Compiled in 18ms
✓ Compiled in 24ms
✓ Compiled in 74ms
 GET /feed/subscriptions 200 in 152ms (compile: 106ms, render: 46ms)
 GET /feed/subscriptions 200 in 300ms (compile: 3ms, render: 296ms)
 GET /feed/J 404 in 661ms (compile: 611ms, render: 50ms)
 GET /feed/subscriptions 200 in 15ms (compile: 4ms, render: 12ms)
 GET /feed/library 200 in 26ms (compile: 3ms, render: 23ms)
✓ Compiled in 14ms
✓ Compiled in 22ms
✓ Compiled in 81ms
✓ Compiled in 30ms
 GET / 200 in 40ms (compile: 10ms, render: 30ms)
 GET / 200 in 617ms (compile: 32ms, render: 586ms)
 GET /feed/subscriptions 200 in 43ms (compile: 10ms, render: 32ms)
 GET /feed/subscriptions 200 in 91ms (compile: 5ms, render: 86ms)
 GET /feed/J 404 in 180ms (compile: 42ms, render: 137ms)
 GET /feed/library 200 in 174ms (compile: 113ms, render: 61ms)
 GET /feed/library 200 in 529ms (compile: 4ms, render: 526ms)
 GET /feed/subscriptions 200 in 26ms (compile: 4ms, render: 21ms)
 GET /feed/library 200 in 35ms (compile: 8ms, render: 27ms)
 GET /feed/library 200 in 29ms (compile: 3ms, render: 25ms)
 GET /watch?v=HX3UcwUYMjM 200 in 234ms (compile: 178ms, render: 56ms)
✓ Compiled in 48ms
 GET /watch?v=CytWHfUVhXs 200 in 216ms (compile: 127ms, render: 89ms)
✓ Compiled in 71ms
✓ Compiled in 39ms
✓ Compiled in 38ms
✓ Compiled in 27ms
✓ Compiled in 56ms
✓ Compiled in 75ms
 GET /watch?v=CytWHfUVhXs 200 in 313ms (compile: 240ms, render: 73ms)
 GET /watch?v=CytWHfUVhXs 200 in 434ms (compile: 8ms, render: 426ms)
✓ Compiled in 34ms
 GET / 200 in 198ms (compile: 21ms, render: 177ms)
 GET / 200 in 76ms (compile: 16ms, render: 61ms)
✓ Compiled in 190ms
✓ Compiled in 46ms
✓ Compiled in 80ms
✓ Compiled in 46ms
✓ Compiled in 83ms
✓ Compiled in 48ms
✓ Compiled in 42ms
 GET /?category=All 200 in 193ms (compile: 138ms, render: 54ms)
✓ Compiled in 88ms
 GET /?category=All 200 in 73ms (compile: 20ms, render: 53ms)
✓ Compiled in 57ms
⚠ Fast Refresh had to perform a full reload due to a runtime error.
✓ Compiled in 78ms
 GET /?category=All 200 in 1505ms (compile: 383ms, render: 1122ms)
✓ Compiled in 98ms
✓ Compiled in 65ms
✓ Compiled in 51ms
✓ Compiled in 48ms
 GET /?category=All 200 in 434ms (compile: 122ms, render: 312ms)
 GET /watch?v=XBPoRUlgD-0 200 in 152ms (compile: 119ms, render: 33ms)
 GET /feed/subscriptions 200 in 223ms (compile: 178ms, render: 45ms)
 GET /feed/J 404 in 287ms (compile: 125ms, render: 162ms)
 GET /feed/library 200 in 122ms (compile: 95ms, render: 27ms)
 GET /watch?v=cX-Oqdt7gmc 200 in 30ms (compile: 9ms, render: 21ms)
 GET / 200 in 31ms (compile: 5ms, render: 26ms)
 GET /search?q=Xreal 200 in 488ms (compile: 471ms, render: 17ms)
 GET /search?q=Xreal 200 in 1132ms (compile: 945ms, render: 187ms)
 GET /search?q=Xreal 200 in 426ms (compile: 12ms, render: 414ms)
✓ Compiled in 502ms
✓ Compiled in 259ms
✓ Compiled in 74ms
✓ Compiled in 93ms
 GET /search?q=Xreal 200 in 508ms (compile: 119ms, render: 390ms)
 GET / 200 in 19ms (compile: 6ms, render: 13ms)
✓ Compiled in 53ms
 GET / 200 in 345ms (compile: 126ms, render: 219ms)
✓ Compiled in 66ms
⚠ Fast Refresh had to perform a full reload due to a runtime error.
✓ Compiled in 31ms
 GET / 200 in 1721ms (compile: 312ms, render: 1409ms)
✓ Compiled in 28ms
✓ Compiled in 35ms
 GET / 200 in 798ms (compile: 239ms, render: 558ms)
 GET / 200 in 78ms (compile: 10ms, render: 68ms)
✓ Compiled in 45ms
 GET / 200 in 396ms (compile: 119ms, render: 277ms)
✓ Compiled in 49ms
 GET / 200 in 362ms (compile: 92ms, render: 271ms)
✓ Compiled in 55ms
✓ Compiled in 57ms
 GET / 200 in 309ms (compile: 73ms, render: 236ms)
 GET / 200 in 33ms (compile: 6ms, render: 27ms)
 GET / 200 in 30ms (compile: 3ms, render: 27ms)
✓ Compiled in 36ms
✓ Compiled in 27ms
 GET / 200 in 320ms (compile: 88ms, render: 232ms)
 GET /watch?v=XBPoRUlgD-0 200 in 79ms (compile: 63ms, render: 16ms)
 GET / 200 in 438ms (compile: 117ms, render: 320ms)
 GET /watch?v=kgkNd4l3OpU 200 in 36ms (compile: 12ms, render: 23ms)
 GET / 200 in 70ms (compile: 8ms, render: 62ms)
 GET / 200 in 55ms (compile: 19ms, render: 36ms)
 GET / 200 in 85ms (compile: 14ms, render: 71ms)
✓ Compiled in 213ms
⚠ Found a change in next.config.mjs. Restarting the server to apply the changes...
▲ Next.js 16.1.6 (Turbopack)
- Local:         http://localhost:3000
- Network:       http://192.168.1.73:3000
- Environments: .env.local

✓ Starting...
✓ Ready in 603ms
 GET / 200 in 762ms (compile: 562ms, render: 200ms)
(node:32033) [DEP0060] DeprecationWarning: The `util._extend` API is deprecated. Please use Object.assign() instead.
(Use `node --trace-deprecation ...` to show where the warning was created)
[?25h
