1:"$Sreact.fragment"
2:I[15579,["/_next/static/chunks/fd0661f1506dcbc6.js","/_next/static/chunks/94245cbda44972fe.js","/_next/static/chunks/af778fff4a0f4be6.js","/_next/static/chunks/b096b037d08e2f31.js"],"Navigation"]
3:I[3013,["/_next/static/chunks/fd0661f1506dcbc6.js","/_next/static/chunks/94245cbda44972fe.js","/_next/static/chunks/af778fff4a0f4be6.js","/_next/static/chunks/b096b037d08e2f31.js"],""]
34:I[41451,["/_next/static/chunks/fd0661f1506dcbc6.js","/_next/static/chunks/94245cbda44972fe.js","/_next/static/chunks/af778fff4a0f4be6.js","/_next/static/chunks/b096b037d08e2f31.js"],"Footer"]
35:I[47913,["/_next/static/chunks/316a3a63422f35de.js"],"OutletBoundary"]
36:"$Sreact.suspense"
:HL["/blog/posts/per-agent-api-key-rotation/hero.jpg","image"]
:HL["/blog/posts/logo.png","image"]
0:{"buildId":"TlpKRvbES4zzM7LeczAM7","rsc":["$","$1","c",{"children":[[["$","$L2",null,{}],["$","main",null,{"className":"pt-20 md:pt-24","children":["$","article",null,{"children":[["$","header",null,{"className":"border-b border-border","children":["$","div",null,{"className":"container mx-auto px-6 py-14 md:py-20","children":[["$","$L3",null,{"href":"/blog","className":"mb-8 inline-flex items-center text-sm font-medium text-muted-foreground transition-colors hover:text-foreground","children":[["$","svg",null,{"xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-arrow-left mr-2 h-4 w-4","aria-hidden":"true","children":[["$","path","1l729n",{"d":"m12 19-7-7 7-7"}],["$","path","x3x0zl",{"d":"M19 12H5"}],"$undefined"]}],"Blog"]}],["$","div",null,{"className":"grid gap-8 md:grid-cols-[1fr_0.9fr] md:items-start","children":[["$","div",null,{"className":"max-w-3xl","children":[["$","div",null,{"className":"mb-5 flex flex-wrap items-center gap-3 text-sm text-muted-foreground","children":[["$","span",null,{"className":"rounded-md border border-primary/40 bg-primary/10 px-2.5 py-1 text-primary","children":"Security"}],["$","span",null,{"children":"2026-W18"}],["$","span",null,{"aria-hidden":"true","children":"/"}],["$","span",null,{"children":"4 min read"}],null]}],["$","h1",null,{"className":"text-4xl font-bold leading-tight text-balance md:text-6xl","children":"Self-Healing API Key Rotation for Long-Running Service Processes"}],["$","p",null,{"className":"mt-6 text-lg leading-relaxed text-muted-foreground md:text-xl","children":"Long-running service processes need a recovery path when keys rotate. The self-register pattern — 401 triggers a re-mint on a network-gated endpoint — gives you zero-touch credential rotation without opening a credential-theft surface."}]]}],["$","div",null,{"className":"overflow-hidden rounded-lg border border-border bg-card","children":["$","div",null,{"className":"relative aspect-[16/9] overflow-hidden","children":[null,["$","img",null,{"src":"/blog/posts/per-agent-api-key-rotation/hero.jpg","alt":"A row of brass keys hanging on numbered hooks against a dark wooden panel wall, one hook empty with a brighter outline, single overhead light, no people, editorial.","className":"h-full w-full object-cover"}],["$","img",null,{"src":"/blog/posts/logo.png","alt":"","aria-hidden":"true","className":"pointer-events-none absolute right-4 top-4 h-[50px] w-[50px] mix-blend-screen"}]]}]}]]}]]}]}],["$","div",null,{"className":"container mx-auto px-6 py-12 md:py-16","children":["$","div",null,{"className":"grid gap-10 lg:grid-cols-[minmax(0,1fr)_280px] lg:items-start","children":[["$","div",null,{"className":"max-w-3xl text-muted-foreground","children":[[["$","p","p-0",{"className":"mt-4 text-base leading-8 md:text-lg first:mt-0 first:text-xl first:leading-relaxed first:text-foreground md:first:text-2xl","children":["$","span","code-0",{"className":"inline-flex w-full max-w-full items-center gap-1 overflow-hidden rounded-md border border-primary/30 bg-secondary px-2 py-0.5 align-middle text-[0.78em] font-medium text-foreground","children":[["$","img",null,{"src":"/blog/posts/logo.png","alt":"","aria-hidden":"true","className":"h-[22px] w-[22px] shrink-0 object-contain"}],["$","span",null,{"className":"overflow-hidden whitespace-nowrap text-clip font-mono","children":"IP/NDA FILTER V.1 \\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00"}]]}]}],"\n",["$","h2","h2-0",{"className":"mt-12 text-2xl font-semibold leading-snug text-foreground first:mt-0","children":"The problem"}],"\n",["$","p","p-1",{"className":"mt-4 text-base leading-8 md:text-lg first:mt-0 first:text-xl first:leading-relaxed first:text-foreground md:first:text-2xl","children":"A pool of long-running service processes each needs its own API key for authentication. Keys get rotated as part of a platform upgrade — old keys are revoked, new ones are minted per process. The processes are long-lived and may not restart cleanly during a rotation. After a rotation, they start getting 401s and need to recover their credentials without human intervention."}],"\n","$L4","\n","$L5","\n","$L6","\n","$L7","\n","$L8","\n","$L9","\n","$La","\n","$Lb"],"$Lc",null]}],"$Ld"]}]}]]}]}],"$Le"],["$Lf","$L10","$L11"],"$L12"]}],"loading":null,"isPartial":false}
4:["$","h2","h2-1",{"className":"mt-12 text-2xl font-semibold leading-snug text-foreground first:mt-0","children":"The approach"}]
5:["$","p","p-2",{"className":"mt-4 text-base leading-8 md:text-lg first:mt-0 first:text-xl first:leading-relaxed first:text-foreground md:first:text-2xl","children":["The self-register pattern: a process that receives a 401 response POSTs to a ",["$","code","code-0",{"className":"rounded bg-secondary px-1.5 py-0.5 text-[0.9em] text-foreground","children":"/\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00"}]," endpoint with just its name as the payload. The server looks up the process in its registry, mints a fresh key, writes it to the row, and returns it. The process writes the new key to its local config file and retries immediately."]}]
6:["$","div","pre-0",{"style":{"background":"hsl(220, 13%, 18%)","color":"hsl(220, 14%, 71%)","textShadow":"0 1px rgba(0, 0, 0, 0.3)","fontFamily":"\"Fira Code\", \"Fira Mono\", Menlo, Consolas, \"DejaVu Sans Mono\", monospace","direction":"ltr","textAlign":"left","whiteSpace":"pre","wordSpacing":"normal","wordBreak":"normal","lineHeight":"1.5","MozTabSize":"2","OTabSize":"2","tabSize":"2","WebkitHyphens":"none","MozHyphens":"none","msHyphens":"none","hyphens":"none","padding":"1rem","margin":"0.5em 0","overflow":"auto","borderRadius":"0.5rem","marginTop":"1.25rem","marginBottom":0,"border":"1px solid hsl(var(--border))","fontSize":"0.875rem"},"children":["$","code",null,{"style":{"whiteSpace":"pre","fontFamily":"ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, Liberation Mono, Courier New, monospace"},"children":[false,[["$","span","code-segment-0",{"className":"token","style":{"color":"hsl(286, 60%, 67%)"},"children":["def"]}],["$","span","code-segment-1",{"style":{},"children":[" "]}],["$","span","code-segment-2",{"className":"token","style":{"color":"hsl(207, 82%, 66%)"},"children":["self_register"]}],["$","span","code-segment-3",{"className":"token","style":{"color":"hsl(220, 14%, 71%)"},"children":["("]}],["$","span","code-segment-4",{"style":{},"children":["process_name"]}],["$","span","code-segment-5",{"className":"token","style":{"color":"hsl(220, 14%, 71%)"},"children":[":"]}],["$","span","code-segment-6",{"style":{},"children":[" "]}],["$","span","code-segment-7",{"className":"token","style":{"color":"hsl(95, 38%, 62%)"},"children":["str"]}],["$","span","code-segment-8",{"className":"token","style":{"color":"hsl(220, 14%, 71%)"},"children":[","]}],["$","span","code-segment-9",{"style":{},"children":[" base_url"]}],["$","span","code-segment-10",{"className":"token","style":{"color":"hsl(220, 14%, 71%)"},"children":[":"]}],["$","span","code-segment-11",{"style":{},"children":[" "]}],["$","span","code-segment-12",{"className":"token","style":{"color":"hsl(95, 38%, 62%)"},"children":["str"]}],["$","span","code-segment-13",{"className":"token","style":{"color":"hsl(220, 14%, 71%)"},"children":[")"]}],["$","span","code-segment-14",{"style":{},"children":[" "]}],["$","span","code-segment-15",{"className":"token","style":{"color":"hsl(207, 82%, 66%)"},"children":["-"]}],["$","span","code-segment-16",{"className":"token","style":{"color":"hsl(207, 82%, 66%)"},"children":[">"]}],["$","span","code-segment-17",{"style":{},"children":[" "]}],["$","span","code-segment-18",{"className":"token","style":{"color":"hsl(95, 38%, 62%)"},"children":["str"]}],["$","span","code-segment-19",{"className":"token","style":{"color":"hsl(220, 14%, 71%)"},"children":[":"]}],["$","span","code-segment-20",{"style":{},"children":["\n"]}],["$","span","code-segment-21",{"style":{},"children":["    r "]}],["$","span","code-segment-22",{"className":"token","style":{"color":"hsl(207, 82%, 66%)"},"children":["="]}],["$","span","code-segment-23",{"style":{},"children":[" requests"]}],["$","span","code-segment-24",{"className":"token","style":{"color":"hsl(220, 14%, 71%)"},"children":["."]}],["$","span","code-segment-25",{"style":{},"children":["post"]}],["$","span","code-segment-26",{"className":"token","style":{"color":"hsl(220, 14%, 71%)"},"children":["("]}],["$","span","code-segment-27",{"style":{},"children":["\n"]}],["$","span","code-segment-28",{"style":{},"children":["        "]}],["$","span","code-segment-29",{"className":"token string-interpolation","style":{"color":"hsl(95, 38%, 62%)"},"children":["f\""]}],["$","span","code-segment-30",{"className":"token string-interpolation interpolation","style":{"color":"hsl(220, 14%, 71%)"},"children":["{"]}],["$","span","code-segment-31",{"className":"token string-interpolation interpolation","style":{},"children":["base_url"]}],["$","span","code-segment-32",{"className":"token string-interpolation interpolation","style":{"color":"hsl(220, 14%, 71%)"},"children":["}"]}],["$","span","code-segment-33",{"className":"token string-interpolation","style":{"color":"hsl(95, 38%, 62%)"},"children":["/\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\""]}],["$","span","code-segment-34",{"className":"token","style":{"color":"hsl(220, 14%, 71%)"},"children":[","]}],["$","span","code-segment-35",{"style":{},"children":["\n"]}],["$","span","code-segment-36",{"style":{},"children":["        json"]}],"$L13","$L14","$L15","$L16","$L17","$L18","$L19","$L1a","$L1b","$L1c","$L1d","$L1e","$L1f","$L20","$L21","$L22","$L23","$L24","$L25","$L26","$L27","$L28","$L29","$L2a","$L2b","$L2c","$L2d","$L2e","$L2f","$L30","$L31","$L32"]]}]}]
7:["$","p","p-3",{"className":"mt-4 text-base leading-8 md:text-lg first:mt-0 first:text-xl first:leading-relaxed first:text-foreground md:first:text-2xl","children":["The authorization model for this endpoint matters. In this system, being on the private network (",["$","code","code-0",{"className":"rounded bg-secondary px-1.5 py-0.5 text-[0.9em] text-foreground","children":"\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00"}],") is the credential — the endpoint is only reachable from authorized machines, so presenting your process name is sufficient to get your own key refreshed. It cannot be used to steal another process's key because the server only mints a key for the requesting process's own row."]}]
8:["$","p","p-4",{"className":"mt-4 text-base leading-8 md:text-lg first:mt-0 first:text-xl first:leading-relaxed first:text-foreground md:first:text-2xl","children":["The split between REST and WebSocket auth also came up here. During a key transition period, the WS endpoint continued to validate against ",["$","code","code-0",{"className":"rounded bg-secondary px-1.5 py-0.5 text-[0.9em] text-foreground","children":"\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00"}]," while REST endpoints had already been migrated. The process needed to track which credential to use for which protocol until the WS migration was complete. The cleanest way to handle this: keep both keys in the config, annotate which is which, and update them independently as the server migrates."]}]
9:["$","h2","h2-2",{"className":"mt-12 text-2xl font-semibold leading-snug text-foreground first:mt-0","children":"What I learned"}]
a:["$","p","p-5",{"className":"mt-4 text-base leading-8 md:text-lg first:mt-0 first:text-xl first:leading-relaxed first:text-foreground md:first:text-2xl","children":"The self-register pattern is only safe if the endpoint is network-access-gated. If the endpoint were on the public internet, presenting a process name would be trivially spoofable. The combination of \"only reachable from the private network\" + \"only refreshes your own row\" gives you self-healing credential rotation without opening a credential-theft surface. The lesson for multi-process system design: design key rotation as a first-class lifecycle event, not an afterthought — every process should have a recovery path that requires no human to show up."}]
b:["$","p","p-6",{"className":"mt-4 text-base leading-8 md:text-lg first:mt-0 first:text-xl first:leading-relaxed first:text-foreground md:first:text-2xl","children":["filter applied by Reel CMO ",["$","a","a-0",{"href":"mailto:reel@bridgestack.systems","children":"reel@bridgestack.systems"}]]}]
c:["$","div",null,{"className":"mt-14 border-t border-border pt-8","children":["$","$L3",null,{"href":"/platform","className":"inline-flex items-center text-sm font-medium text-primary transition-colors hover:text-primary/80","children":["Start a build",["$","svg",null,{"xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-arrow-right ml-2 h-4 w-4","aria-hidden":"true","children":[["$","path","1ays0h",{"d":"M5 12h14"}],["$","path","xquz4c",{"d":"m12 5 7 7-7 7"}],"$undefined"]}]]}]}]
d:["$","aside",null,{"className":"hidden lg:block","children":["$","div",null,{"className":"sticky top-24 space-y-4","children":[["$","h3",null,{"className":"text-xs font-semibold uppercase tracking-wider text-primary","children":["More in ","Security"]}],["$","div",null,{"className":"space-y-4","children":[["$","$L3","hmac-empty-secret-bypass",{"href":"/blog/hmac-empty-secret-bypass","className":"block overflow-hidden rounded-lg border border-border bg-card transition-colors hover:border-primary/40","children":[["$","div",null,{"className":"relative aspect-[16/9] overflow-hidden bg-secondary/70","children":[["$","img",null,{"src":"/blog/posts/hmac-empty-secret-bypass/hero.jpg","alt":"A heavy steel padlock lying open on a dark wooden surface with no key visible, hard overhead light casting a sharp shadow.","className":"h-full w-full object-cover","loading":"lazy","decoding":"async"}],["$","img",null,{"src":"/blog/posts/logo.png","alt":"","aria-hidden":"true","className":"pointer-events-none absolute right-2 top-2 h-[24px] w-[24px] mix-blend-screen"}]]}],["$","div",null,{"className":"p-4","children":[["$","p",null,{"className":"text-xs font-medium text-primary","children":"Security"}],["$","p",null,{"className":"mt-1 text-xs text-muted-foreground","children":["2026-W20"," · ","4 min"]}],["$","p",null,{"className":"mt-2 line-clamp-2 text-sm font-semibold leading-snug text-foreground","children":"The Empty-Secret HMAC Bypass"}]]}]]}],["$","$L3","merkle-subset-verification-trap",{"href":"/blog/merkle-subset-verification-trap","className":"block overflow-hidden rounded-lg border border-border bg-card transition-colors hover:border-primary/40","children":[["$","div",null,{"className":"relative aspect-[16/9] overflow-hidden bg-secondary/70","children":[["$","img",null,{"src":"/blog/posts/merkle-subset-verification-trap/hero.jpg","alt":"A pristine glass museum display case half-filled with carefully arranged artifacts on velvet, sharp focus on the artifacts, soft museum lighting.","className":"h-full w-full object-cover","loading":"lazy","decoding":"async"}],["$","img",null,{"src":"/blog/posts/logo.png","alt":"","aria-hidden":"true","className":"pointer-events-none absolute right-2 top-2 h-[24px] w-[24px] mix-blend-screen"}]]}],["$","div",null,{"className":"p-4","children":[["$","p",null,{"className":"text-xs font-medium text-primary","children":"Security"}],["$","p",null,{"className":"mt-1 text-xs text-muted-foreground","children":["2026-W20"," · ","3 min"]}],["$","p",null,{"className":"mt-2 line-clamp-2 text-sm font-semibold leading-snug text-foreground","children":"The Merkle Subset Verification Trap"}]]}]]}],["$","$L3","merkle-canonical-form",{"href":"/blog/merkle-canonical-form","className":"block overflow-hidden rounded-lg border border-border bg-card transition-colors hover:border-primary/40","children":[["$","div",null,{"className":"relative aspect-[16/9] overflow-hidden bg-secondary/70","children":[["$","img",null,{"src":"/blog/posts/merkle-canonical-form/hero.jpg","alt":"A vintage brass wax seal stamp pressed into a fresh crimson wax pool on parchment, sharp focus on the impression, warm desk light, no people, editorial.","className":"h-full w-full object-cover","loading":"lazy","decoding":"async"}],["$","img",null,{"src":"/blog/posts/logo.png","alt":"","aria-hidden":"true","className":"pointer-events-none absolute right-2 top-2 h-[24px] w-[24px] mix-blend-screen"}]]}],["$","div",null,{"className":"p-4","children":[["$","p",null,{"className":"text-xs font-medium text-primary","children":"Security"}],["$","p",null,{"className":"mt-1 text-xs text-muted-foreground","children":["2026-W20"," · ","4 min"]}],["$","p",null,{"className":"mt-2 line-clamp-2 text-sm font-semibold leading-snug text-foreground","children":"The Canonical Form Bug That Makes Every Signature Fail"}]]}]]}]]}],["$","$L3",null,{"href":"/blog?category=security","className":"inline-flex items-center text-sm font-medium text-primary transition-colors hover:text-primary/80","children":["Read all in ","Security","$L33"]}]]}]}]
e:["$","$L34",null,{}]
f:["$","script","script-0",{"src":"/_next/static/chunks/94245cbda44972fe.js","async":true}]
10:["$","script","script-1",{"src":"/_next/static/chunks/af778fff4a0f4be6.js","async":true}]
11:["$","script","script-2",{"src":"/_next/static/chunks/b096b037d08e2f31.js","async":true}]
12:["$","$L35",null,{"children":["$","$36",null,{"name":"Next.MetadataOutlet","children":"$@37"}]}]
13:["$","span","code-segment-37",{"className":"token","style":{"color":"hsl(207, 82%, 66%)"},"children":["="]}]
14:["$","span","code-segment-38",{"className":"token","style":{"color":"hsl(220, 14%, 71%)"},"children":["{"]}]
15:["$","span","code-segment-39",{"className":"token","style":{"color":"hsl(95, 38%, 62%)"},"children":["\"name\""]}]
16:["$","span","code-segment-40",{"className":"token","style":{"color":"hsl(220, 14%, 71%)"},"children":[":"]}]
17:["$","span","code-segment-41",{"style":{},"children":[" process_name"]}]
18:["$","span","code-segment-42",{"className":"token","style":{"color":"hsl(220, 14%, 71%)"},"children":["}"]}]
19:["$","span","code-segment-43",{"className":"token","style":{"color":"hsl(220, 14%, 71%)"},"children":[","]}]
1a:["$","span","code-segment-44",{"style":{},"children":["\n"]}]
1b:["$","span","code-segment-45",{"style":{},"children":["        timeout"]}]
1c:["$","span","code-segment-46",{"className":"token","style":{"color":"hsl(207, 82%, 66%)"},"children":["="]}]
1d:["$","span","code-segment-47",{"className":"token","style":{"color":"hsl(29, 54%, 61%)"},"children":["10"]}]
1e:["$","span","code-segment-48",{"className":"token","style":{"color":"hsl(220, 14%, 71%)"},"children":[","]}]
1f:["$","span","code-segment-49",{"style":{},"children":["\n"]}]
20:["$","span","code-segment-50",{"style":{},"children":["    "]}]
21:["$","span","code-segment-51",{"className":"token","style":{"color":"hsl(220, 14%, 71%)"},"children":[")"]}]
22:["$","span","code-segment-52",{"style":{},"children":["\n"]}]
23:["$","span","code-segment-53",{"style":{},"children":["    r"]}]
24:["$","span","code-segment-54",{"className":"token","style":{"color":"hsl(220, 14%, 71%)"},"children":["."]}]
25:["$","span","code-segment-55",{"style":{},"children":["raise_for_status"]}]
26:["$","span","code-segment-56",{"className":"token","style":{"color":"hsl(220, 14%, 71%)"},"children":["("]}]
27:["$","span","code-segment-57",{"className":"token","style":{"color":"hsl(220, 14%, 71%)"},"children":[")"]}]
28:["$","span","code-segment-58",{"style":{},"children":["\n"]}]
29:["$","span","code-segment-59",{"style":{},"children":["    "]}]
2a:["$","span","code-segment-60",{"className":"token","style":{"color":"hsl(286, 60%, 67%)"},"children":["return"]}]
2b:["$","span","code-segment-61",{"style":{},"children":[" r"]}]
2c:["$","span","code-segment-62",{"className":"token","style":{"color":"hsl(220, 14%, 71%)"},"children":["."]}]
2d:["$","span","code-segment-63",{"style":{},"children":["json"]}]
2e:["$","span","code-segment-64",{"className":"token","style":{"color":"hsl(220, 14%, 71%)"},"children":["("]}]
2f:["$","span","code-segment-65",{"className":"token","style":{"color":"hsl(220, 14%, 71%)"},"children":[")"]}]
30:["$","span","code-segment-66",{"className":"token","style":{"color":"hsl(220, 14%, 71%)"},"children":["["]}]
31:["$","span","code-segment-67",{"className":"token","style":{"color":"hsl(95, 38%, 62%)"},"children":["\"api_key\""]}]
32:["$","span","code-segment-68",{"className":"token","style":{"color":"hsl(220, 14%, 71%)"},"children":["]"]}]
33:["$","svg",null,{"xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-arrow-right ml-2 h-4 w-4","aria-hidden":"true","children":[["$","path","1ays0h",{"d":"M5 12h14"}],["$","path","xquz4c",{"d":"m12 5 7 7-7 7"}],"$undefined"]}]
37:null
