@oddessentials/agent-guild 1.31.0 → 1.32.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -66,17 +66,25 @@ function portOf(url) {
66
66
  return parsed.port ? Number(parsed.port) : parsed.protocol === 'https:' ? 443 : 80;
67
67
  }
68
68
 
69
- async function health(url, timeoutMs = 1000) {
69
+ /** The manager's health, `{ busy: pid }` when the manager its runtime file names for `url` runs but did not answer in time, or null. */
70
+ async function reach(url, timeoutMs = 1000) {
71
+ const signal = AbortSignal.timeout(timeoutMs);
70
72
  try {
71
- const res = await fetch(`${url}/api/v1/health`, { signal: AbortSignal.timeout(timeoutMs) });
73
+ const res = await fetch(`${url}/api/v1/health`, { signal });
72
74
  if (!res.ok) return null;
73
75
  const body = await res.json();
74
76
  return body?.name === 'agent-guild' ? body : null;
75
77
  } catch {
76
- return null;
78
+ const owner = signal.aborted ? readRuntimeFile() : null;
79
+ return owner?.url === url && running(owner.pid) ? { busy: owner.pid } : null;
77
80
  }
78
81
  }
79
82
 
83
+ async function health(url, timeoutMs = 1000) {
84
+ const found = await reach(url, timeoutMs);
85
+ return found?.busy ? null : found;
86
+ }
87
+
80
88
  function pageUrl(url, token) {
81
89
  return `${url}/#token=${token}`;
82
90
  }
@@ -114,7 +122,7 @@ async function ensureManager({ port = null } = {}) {
114
122
  // A pinned port is the endpoint to serve, so it is also the one to check;
115
123
  // a manager found anywhere else is not the one asked for.
116
124
  const knownUrl = port === null ? baseUrl() : expectedUrl;
117
- const answering = await health(knownUrl);
125
+ const answering = await reach(knownUrl);
118
126
  if (answering) return { url: knownUrl, started: false, version: answering.version };
119
127
 
120
128
  // Say why no manager can run here rather than start one that fails.
@@ -167,21 +175,23 @@ async function cmdOpen({ browser, signIn = false }) {
167
175
  * a successor itself (a manager from before restarts only stops).
168
176
  */
169
177
  async function requestShutdown(url, { restart = false } = {}) {
170
- // `stop` and `restart` are documented as ending every session, so they do
171
- // not ask; the web page's buttons are the ones that confirm first.
172
- const res = await fetch(`${url}/api/v1/shutdown`, {
173
- method: 'POST',
174
- headers: { Authorization: `Bearer ${loadOrCreateToken()}`, 'Content-Type': 'application/json' },
175
- body: JSON.stringify(restart ? { force: true, restart: true } : { force: true }),
176
- });
177
- if (!res.ok) {
178
- const { error } = await res.json().catch(() => ({}));
179
- throw new Error(`${restart ? 'restart' : 'stop'} failed: ${error?.message ?? `HTTP ${res.status}`}`);
178
+ const signal = AbortSignal.timeout(5000);
179
+ try {
180
+ const res = await fetch(`${url}/api/v1/shutdown`, {
181
+ method: 'POST', signal,
182
+ headers: { Authorization: `Bearer ${loadOrCreateToken()}`, 'Content-Type': 'application/json' },
183
+ body: JSON.stringify(restart ? { force: true, restart: true } : { force: true }),
184
+ });
185
+ const body = await res.json().catch(() => ({}));
186
+ signal.throwIfAborted();
187
+ if (!res.ok) throw new Error(`${restart ? 'restart' : 'stop'} failed: ${body.error?.message ?? `HTTP ${res.status}`}`);
188
+ const running = body.running ?? 0;
189
+ if (running > 0) console.log(`Ending ${running} running session(s).`);
190
+ return { running, restart: body.restart === true };
191
+ } catch (err) {
192
+ if (signal.aborted) throw new Error(`the session manager did not answer the ${restart ? 'restart' : 'stop'} request within 5 seconds; its outcome could not be confirmed.`);
193
+ throw err;
180
194
  }
181
- const body = await res.json().catch(() => ({}));
182
- const running = body.running ?? 0;
183
- if (running > 0) console.log(`Ending ${running} running session(s).`);
184
- return { running, restart: body.restart === true };
185
195
  }
186
196
 
187
197
  function running(pid) {
@@ -209,13 +219,13 @@ async function waitForExit(pid, timeoutMs = 15000) {
209
219
 
210
220
  async function cmdStop() {
211
221
  const url = baseUrl();
212
- const h = await health(url);
222
+ const h = await reach(url);
213
223
  if (!h) {
214
224
  console.log('Session manager is not running.');
215
225
  return;
216
226
  }
217
227
  await requestShutdown(url);
218
- if (await waitForExit(h.pid)) {
228
+ if (await waitForExit(h.busy ?? h.pid)) {
219
229
  console.log('Session manager stopped.');
220
230
  return;
221
231
  }
@@ -225,13 +235,14 @@ async function cmdStop() {
225
235
 
226
236
  async function cmdRestart() {
227
237
  const url = baseUrl();
228
- const before = await health(url);
229
- if (!before) {
238
+ const found = await reach(url);
239
+ if (!found) {
230
240
  // Nothing to stop: a restart of a stopped manager is a start.
231
241
  const { url: started, version } = await ensureManager();
232
242
  console.log(`Session manager was not running; started Agent Guild ${version} at ${started}.`);
233
243
  return;
234
244
  }
245
+ const before = found.busy ? { pid: found.busy } : found;
235
246
  const { restart } = await requestShutdown(url, { restart: true });
236
247
  if (!restart) {
237
248
  // A manager from before restarts stops without starting a successor,
@@ -239,7 +250,7 @@ async function cmdRestart() {
239
250
  if (!(await waitForExit(before.pid))) throw new Error('the session manager did not stop, so it could not be restarted.');
240
251
  // On the port the old one served, which an ephemeral port setting would otherwise lose.
241
252
  const { url: started, version } = await ensureManager({ port: portOf(url) });
242
- const changed = version !== before.version ? `, now Agent Guild ${version} (was ${before.version})` : '';
253
+ const changed = before.version && version !== before.version ? `, now Agent Guild ${version} (was ${before.version})` : '';
243
254
  console.log(`Session manager restarted at ${started}${changed}.`);
244
255
  return;
245
256
  }
@@ -250,7 +261,7 @@ async function cmdRestart() {
250
261
  await new Promise((r) => setTimeout(r, 250));
251
262
  const now = await health(url, 500);
252
263
  if (now && now.pid !== before.pid) {
253
- const changed = now.version !== before.version ? `, now Agent Guild ${now.version} (was ${before.version})` : '';
264
+ const changed = before.version && now.version !== before.version ? `, now Agent Guild ${now.version} (was ${before.version})` : '';
254
265
  console.log(`Session manager restarted at ${url}${changed}.`);
255
266
  return;
256
267
  }
@@ -261,7 +272,12 @@ async function cmdRestart() {
261
272
 
262
273
  async function cmdStatus() {
263
274
  const url = baseUrl();
264
- const h = await health(url);
275
+ const h = await reach(url);
276
+ if (h?.busy) {
277
+ console.log(`Session manager running at ${url} (pid ${h.busy}) did not answer in time.`);
278
+ process.exitCode = 1;
279
+ return;
280
+ }
265
281
  if (!h) {
266
282
  console.log('Session manager is not running.');
267
283
  // With no manager to ask, the boot service is read from systemd directly.
@@ -294,15 +310,21 @@ async function cmdStatus() {
294
310
 
295
311
  async function cmdFireworks() {
296
312
  const url = baseUrl();
297
- if (!(await health(url))) {
313
+ if (!(await reach(url))) {
298
314
  console.log('Session manager is not running.');
299
315
  process.exitCode = 3;
300
316
  return;
301
317
  }
302
- const res = await fetch(`${url}/api/v1/yard/fireworks`, { method: 'POST', headers: { Authorization: `Bearer ${loadOrCreateToken()}` } });
303
- if (!res.ok) throw new Error(`the session manager answered ${res.status}.`);
304
- const { pages } = await res.json();
305
- console.log(pages ? `Fireworks sent to ${pages} open page(s); every Yard on show lights up.` : 'No page is open to see the fireworks.');
318
+ const signal = AbortSignal.timeout(5000);
319
+ try {
320
+ const res = await fetch(`${url}/api/v1/yard/fireworks`, { method: 'POST', signal, headers: { Authorization: `Bearer ${loadOrCreateToken()}` } });
321
+ if (!res.ok) throw new Error(`the session manager answered ${res.status}.`);
322
+ const { pages } = await res.json();
323
+ console.log(pages ? `Fireworks sent to ${pages} open page(s); every Yard on show lights up.` : 'No page is open to see the fireworks.');
324
+ } catch (err) {
325
+ if (signal.aborted) throw new Error('the session manager did not answer the fireworks request within 5 seconds; delivery could not be confirmed.');
326
+ throw err;
327
+ }
306
328
  }
307
329
 
308
330
  const MIN_NODE_MAJOR = 22;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oddessentials/agent-guild",
3
- "version": "1.31.0",
3
+ "version": "1.32.0",
4
4
  "description": "Launch and watch AI coding-assistant terminal sessions from one local web page. A bundled session manager owns the terminals so the page can close and reconnect.",
5
5
  "mcpName": "ai.oddessentials/agent-guild",
6
6
  "license": "AGPL-3.0-only",
@@ -184,17 +184,19 @@ export function npmSpawnSpec(npm, args, env = process.env, platform = process.pl
184
184
  function runInOwnGroup(file, args, { env, cwd, timeoutMs, input, maxBuffer, signal }) {
185
185
  return new Promise((resolve, reject) => {
186
186
  let child;
187
+ // Registered before the spawn: a signal that lands once the command runs must find it.
188
+ const end = () => killGroup(child?.pid);
189
+ const release = endWithProcess(end);
187
190
  try {
188
191
  child = spawn(file, args, { env, cwd, detached: true });
189
192
  } catch (err) {
193
+ release();
190
194
  return reject(Object.assign(err, { stdout: '', stderr: '' }));
191
195
  }
192
196
  let stdout = '';
193
197
  let stderr = '';
194
198
  let timedOut = false;
195
199
  let settled = false;
196
- const end = () => killGroup(child.pid);
197
- const release = endWithProcess(end);
198
200
  const finish = (err) => {
199
201
  if (settled) return;
200
202
  settled = true;
@@ -214,6 +214,8 @@ export function codexHooksList(resolved, args, { env, platform = process.platfor
214
214
  const stopped = () => finish(new Error('The manager is stopping'));
215
215
  const timer = setTimeout(() => finish(new Error('Codex did not answer in time')), timeoutMs);
216
216
  timer.unref?.();
217
+ // Registered before the spawn: a signal that lands once Codex runs must find it.
218
+ if (platform !== 'win32') release = endWithProcess(() => killGroup(child?.pid));
217
219
  try {
218
220
  const verbatim = typeof spec.args === 'string';
219
221
  child = spawn(spec.file, verbatim ? [spec.args] : spec.args, {
@@ -222,7 +224,6 @@ export function codexHooksList(resolved, args, { env, platform = process.platfor
222
224
  } catch (err) {
223
225
  return finish(err);
224
226
  }
225
- if (platform !== 'win32') release = endWithProcess(() => killGroup(child.pid));
226
227
  signal?.addEventListener('abort', stopped, { once: true });
227
228
  let stderr = '';
228
229
  let buffer = '';
@@ -78,6 +78,9 @@ export function probeLoginShell({ shell, env = process.env, timeoutMs = LOGIN_SH
78
78
  if (process.platform === 'win32' || !shell) return Promise.resolve({ vars: null, failure: null });
79
79
  return new Promise((resolve) => {
80
80
  let child;
81
+ // Registered before the spawn: a signal that lands once the shell runs must find it.
82
+ const end = () => killGroup(child?.pid);
83
+ const release = endWithProcess(end);
81
84
  try {
82
85
  child = spawn(shell, LOGIN_SHELL_ARGS, {
83
86
  detached: true,
@@ -85,12 +88,11 @@ export function probeLoginShell({ shell, env = process.env, timeoutMs = LOGIN_SH
85
88
  env: { ...env, AGENT_GUILD_RESOLVING_ENV: '1' },
86
89
  });
87
90
  } catch (err) {
91
+ release();
88
92
  return resolve({ vars: null, failure: `could not start (${err.code || err.message})` });
89
93
  }
90
94
  let stdout = '';
91
95
  let settled = false;
92
- const end = () => killGroup(child.pid);
93
- const release = endWithProcess(end);
94
96
  const finish = (result) => {
95
97
  if (settled) return;
96
98
  settled = true;
@@ -24,7 +24,7 @@ const HIDDEN = '[token hidden]';
24
24
  // 64 bits of the known token; leave colors, short hashes and 12-digit session ids readable.
25
25
  const MIN_TOKEN_FRAGMENT = 16;
26
26
 
27
- const CUSTOMIZE = 'To customize a Yard, or the characters and companions of Agent Guild: World, follow https://agentguild.oddessentials.ai/agents/.';
27
+ const CUSTOMIZE = 'To customize a Yard or the characters and companions of Agent Guild: World, or to install Grove Companion on the desktop, follow https://agentguild.oddessentials.ai/agents/.';
28
28
 
29
29
  const INSTRUCTIONS = `Agent Guild runs coding agents (Claude Code, Codex CLI, Antigravity CLI, Grok Build, Docker Agent) and shells in real terminals on this computer, and opens them on every other screen.
30
30
  Use guild_status first, list_sessions to see the sessions, read_reply for the answer that ended a session's last turn, and read_screen for what its terminal shows now.
package/web/index.html CHANGED
@@ -151,7 +151,7 @@
151
151
  <div class="yard-overlay">
152
152
  <div id="yard-loading" class="yard-loading" role="status" data-mode="scene"><span id="yard-loading-text">Preparing your yard…</span><span id="yard-loading-size" class="yard-loading-size" aria-hidden="true"></span><span class="yard-loading-bar" aria-hidden="true"></span></div>
153
153
  <div id="yard-swap-failure" class="yard-swap-failure" hidden role="status"><span id="yard-swap-failure-text"></span><button id="yard-swap-retry" class="btn" type="button">Retry</button></div>
154
- <div class="yard-bar"><div id="yard-world" class="yard-world" role="group" aria-label="This Yard's world"><p id="yard-world-note" class="yard-world-note" role="status" hidden></p><div class="yard-world-actions"><button id="yard-customize-open" type="button" class="btn" aria-haspopup="dialog">Customize this Yard</button><a id="yard-world-get" class="btn" href="https://github.com/oddessentials/agent-guild-builders/releases/latest" target="_blank" rel="noopener noreferrer" hidden>Build a Yard</a></div></div><div class="yard-camera" role="group" aria-label="Yard controls"><button id="yard-zoom-in" type="button" class="btn" aria-label="Zoom in">+</button><button id="yard-zoom-out" type="button" class="btn" aria-label="Zoom out">−</button><button id="yard-fit" type="button" class="btn">Overview</button><button id="yard-focus" type="button" class="btn" disabled>Focus selected</button><button id="yard-photo" type="button" class="btn" aria-haspopup="dialog" aria-label="Save a picture of the Yard" title="Save a picture of the Yard" disabled hidden><svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M4 8.5A1.5 1.5 0 0 1 5.5 7h2.3l1.4-2h5.6l1.4 2h2.3A1.5 1.5 0 0 1 20 8.5v9a1.5 1.5 0 0 1-1.5 1.5h-13A1.5 1.5 0 0 1 4 17.5z"/><circle cx="12" cy="12.75" r="3.25"/></svg></button><button id="yard-fireworks" type="button" class="btn" aria-label="Fireworks in this Yard only" title="Fireworks in this Yard only" disabled><svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" aria-hidden="true" focusable="false"><path d="M12 3v3m0 9v6M3 10h3m12 0h3M5.6 3.6l2.2 2.2m8.4 8.4 2.2 2.2M18.4 3.6l-2.2 2.2m-8.4 8.4-2.2 2.2"/><circle cx="12" cy="10" r="1"/></svg></button></div></div>
154
+ <div class="yard-bar"><div id="yard-world" class="yard-world" role="group" aria-label="This Yard's world"><p id="yard-world-note" class="yard-world-note" role="status" hidden></p><div class="yard-world-actions"><button id="yard-customize-open" type="button" class="btn" aria-haspopup="dialog">Customize this Yard</button><a id="yard-world-get" class="btn" href="https://github.com/oddessentials/agent-guild-builders/releases/latest" target="_blank" rel="noopener noreferrer" hidden>Build a Yard</a></div></div><div class="yard-camera" role="group" aria-label="Yard controls"><button id="yard-zoom-in" type="button" class="btn" aria-label="Zoom in">+</button><button id="yard-zoom-out" type="button" class="btn" aria-label="Zoom out">−</button><button id="yard-fit" type="button" class="btn">Overview</button><button id="yard-focus" type="button" class="btn" disabled>Focus selected</button><button id="yard-photo" type="button" class="btn" aria-haspopup="dialog" aria-label="Save a picture of the Yard" title="Save a picture of the Yard" disabled hidden><svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M4 8.5A1.5 1.5 0 0 1 5.5 7h2.3l1.4-2h5.6l1.4 2h2.3A1.5 1.5 0 0 1 20 8.5v9a1.5 1.5 0 0 1-1.5 1.5h-13A1.5 1.5 0 0 1 4 17.5z"/><circle cx="12" cy="12.75" r="3.25"/></svg></button><button id="yard-fireworks" type="button" class="btn" aria-label="Fireworks in this Yard only" title="Fireworks in this Yard only" disabled><svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" aria-hidden="true" focusable="false"><path d="M12 3v3m0 9v6M3 10h3m12 0h3M5.6 3.6l2.2 2.2m8.4 8.4 2.2 2.2M18.4 3.6l-2.2 2.2m-8.4 8.4-2.2 2.2"/><circle cx="12" cy="10" r="1"/></svg></button><button id="yard-vibe" type="button" class="btn" aria-label="Vibes Mode" aria-pressed="false"><svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><circle cx="14.5" cy="4.5" r="1.8"/><path d="M8 21l3.5-5.5-2.5-3 2.5-4.5 4 1.5 2 3h3"/><path d="M11.5 8 7.5 9.5 6 13"/><path d="M11 15.5l4 2V21"/></svg></button></div></div>
155
155
  <p id="yard-help"><span class="yard-help-pointer">Drag to explore · Scroll to zoom · Select to inspect · Double-click a session to open</span><span class="yard-help-touch">Drag to explore · Pinch to zoom · Tap to inspect · Open from the Inspector</span></p>
156
156
  </div>
157
157
  </div>
package/web/yard/art.json CHANGED
@@ -1 +1 @@
1
- {"id":"d4de28baa735e3e3769aa7aada1cf34c8a4fbecd0db433b8f0173e6a4df2caa7","archive":{"name":"yard-art-d4de28baa735e3e3.tar.gz","url":"https://github.com/oddessentials/agent-guild/releases/download/v1.31.0/yard-art-d4de28baa735e3e3.tar.gz","size":267581581,"sha256":"780531c5d381941f5029d7b6e287e7e514b020ff17098b39481170e3a415b825"},"files":[{"path":"bot_0.glb","size":1054684,"sha256":"729bbdbddaae57c4340ba18ac9a7fd2e424d1ed1df8fbf8715e47490520ccc01"},{"path":"bot_1.glb","size":1041680,"sha256":"5bb627aef4c442f31141d085c83723e747a854c25e9cc667ff71dc0cf7182e62"},{"path":"bot_2.glb","size":1019484,"sha256":"79a18838d8a58edb43ce63cc7eb49c520f62cdad98c5ec12e136598508c6959b"},{"path":"bot_3.glb","size":1031960,"sha256":"0c24de7ce775902c257f385de0ff7efe45972d4c15f4ca8062b7cec8680a52f2"},{"path":"drone_0.glb","size":994620,"sha256":"7aef4bcaaf581e26ad439c13cfea7a40e39fc011e5a2ddaf80467ccd8e8b74aa"},{"path":"drone_1.glb","size":1010348,"sha256":"e7130cdcb0fc2a14781a067824068d4d0507dbe6d6587da46615a462608f0486"},{"path":"drone_2.glb","size":991048,"sha256":"3fdac4af5b367840266622db3c7deacae09a4af9d94df7ade75a4e98e2e1331f"},{"path":"drone_3.glb","size":1026312,"sha256":"df20f7543f9c97aa0e97ff4b8572375bcd435ffb8e46ec612ba9a26e4eef7cd6"},{"path":"familiar_0.glb","size":1079828,"sha256":"b204def3546f4e33772b829077241cfdd929f7b15ac56a4c3dbdcb9401f2ddeb"},{"path":"familiar_1.glb","size":1031732,"sha256":"1130f0e54bf55999ab6d41ac5579bac876ca8cf8aa020d3b8d010013533d588c"},{"path":"familiar_2.glb","size":1025408,"sha256":"3983d3883f6cbc8f7d614a88d21467e577dc6b17eba635f8bb2d178b99d692f1"},{"path":"familiar_3.glb","size":946824,"sha256":"5a7c3fa34245dccf558801608d8823d891b97ac885cad95057ba9c9ca604a9fd"},{"path":"gnome_0.glb","size":1826848,"sha256":"1c2e238ee8155f00fae5447e6ab99959e782a92f6be60b37ce6628b8b2260a4d"},{"path":"gnome_1.glb","size":1897852,"sha256":"e37ce53939baeea6396071937cb20cde424c73a06d716f3a37736d98e3852f72"},{"path":"gnome_2.glb","size":1782172,"sha256":"3fd39c6acf173bf628f4f47b85675dad59d009165b5ed28cc205e2f8a2a99c77"},{"path":"gnome_3.glb","size":1810436,"sha256":"75a073597dc1a7055d8626c482069f79e8c0c6f55fe3925b4d764905b7355260"},{"path":"gnome_4.glb","size":1724916,"sha256":"cfc5123a79ffe7a9b2a6de786442e950b76b67fd009e594e68b93ca04e5e0864"},{"path":"gnome_5.glb","size":1864276,"sha256":"a2af15c1ea4e6d3114acd1d79480ab165931c378cfc3f378097c636600824a8d"},{"path":"gnome_familiar_0.glb","size":1071816,"sha256":"c7365cb43735065fe4b99fb70f3c696a9512881890b0b9664bd79891ee7c30aa"},{"path":"gnome_familiar_1.glb","size":1049636,"sha256":"a70fe22130a171698165ba466ec7f685b9fad3286d6bcc367b0c100eb28b2ce3"},{"path":"gnome_familiar_2.glb","size":1035060,"sha256":"c512adfeed43afa58ff8980a94b37ca88060a52b7a49c0b91385ecd9db00bd23"},{"path":"gnome_familiar_3.glb","size":986504,"sha256":"aebe18c705c96be9a8fab0e0cad3f2039eb4d00add78543341ef9c956bd3b2a5"},{"path":"gnome_helper_0.glb","size":1073548,"sha256":"6d8d111a4a90e72b69a9449416ca87bcdfff79a13dd7f39b9faed8fc4fe50d19"},{"path":"gnome_helper_1.glb","size":1039180,"sha256":"6687203c0a5bd8c9057c481e0b91b3b1cb8010e712f61946e73c0573d84cb95f"},{"path":"gnome_helper_2.glb","size":1010528,"sha256":"459c1ff0a41c5db913be8930b5c3931e91a95970d472eda23aeba959290dd8d6"},{"path":"gnome_helper_3.glb","size":1028760,"sha256":"6dcf230b6ae9fb05e1cb3fb8473fb7e7608ae29cbd7b45410afea954169df375"},{"path":"gnomeland.glb","size":9470388,"sha256":"559d3854abb2c29ca569612b24423f8e5e965ed1ec11bf755afc65a214324d86"},{"path":"gnomeland/dark-base-0-0.webp","size":345486,"sha256":"0ad99acff62d65e57945530e7e0169991ba086dc177a7fa7b1db22aee15817d3"},{"path":"gnomeland/dark-base-1-0.webp","size":310710,"sha256":"73972f3fee4e647816517536abde9a720eaebe7b84b711d6fcb488364304abc9"},{"path":"gnomeland/dark-close-0-0.webp","size":1007594,"sha256":"636c58b29ebc02316331516a4f97bb3e009a3a883a567486bd079a229c95d222"},{"path":"gnomeland/dark-detail-0-0.webp","size":492798,"sha256":"55dd4db8908827ae9acd1a58258a1848a68eff412e1786256067c47edb85d7c3"},{"path":"gnomeland/dark-detail-1-0.webp","size":491968,"sha256":"9361918c276650eed451f62d8def12d9797b62b612e90b18be695c5588d63e59"},{"path":"gnomeland/light-base-0-0.webp","size":634540,"sha256":"8c6ebd61796125bdc12365338bc01b710132b47f59cbc36c31550e05e49186f4"},{"path":"gnomeland/light-base-1-0.webp","size":668326,"sha256":"88b5989472db90b2608ff75dd30248cefede57c153684f77f8fd700a612f9e75"},{"path":"gnomeland/light-close-0-0.webp","size":1537456,"sha256":"cbdfabadcdb9e4291151a0c2ee2dd063072fba79015e688a0a0192ac77eb16c5"},{"path":"gnomeland/light-detail-0-0.webp","size":1051072,"sha256":"ff217301527ae52236d12064494c32119b6a27c39d71dcc17a5df70e12bbdd38"},{"path":"gnomeland/light-detail-1-0.webp","size":1048932,"sha256":"2a1f6c28eeba9e8054a35ec1f8bbfc04fec7c175807aade43cfcf2f8900c47ad"},{"path":"gnomeland/plates.json","size":3493,"sha256":"a1e08160a0a122eafe46be4b3cbe69d083a723a62f7d1897f572568ed5e85171"},{"path":"gnomeland/sky-dark.hdr","size":330527,"sha256":"af5caa5a1a5d32ddd4daff6216f50860888f9328fd35a5e21d8d4c1d1a5f3148"},{"path":"gnomeland/sky-light.hdr","size":221480,"sha256":"5831990536832e0885a028c7f58ca421246c50b6ef7e0b2044ab5c8ab9bc25de"},{"path":"gnomeland/surfaces.json","size":107,"sha256":"83ba96a47bcd2d6582a4b6db3b4cdf70dcf880dd7e39a736272f49ea4d913ec9"},{"path":"gnomeland_station.glb","size":1418748,"sha256":"0e8abdf629af40de6cd600da87b8add45076e5e69bcc8995e8994deceb335aaa"},{"path":"goblin_0.glb","size":1811968,"sha256":"f788a9f5c96563e49429667747fbe2db4d873f51cb0cd8ef7ef8bb716ebedbf0"},{"path":"goblin_1.glb","size":1885672,"sha256":"dd10664e0a5910fb748f16eb379fe542f4d5747a05371399e6e266ec8dadc593"},{"path":"goblin_2.glb","size":1883624,"sha256":"ff9754cb6174a8d459b64dc3c0fda90a13749eeb88e58e3d15015d6c49b67151"},{"path":"goblin_3.glb","size":1910988,"sha256":"8f225f716333973f9f41a5d3602064de078ae9893af2dc1fe4d8787a7264ccae"},{"path":"goblin_4.glb","size":1830464,"sha256":"18a5d6cbf948f782ca0da5c6cb6650389f2bc39bf71bfa0a83fc4f3a73ae2f89"},{"path":"goblin_5.glb","size":1879540,"sha256":"90cacb62d20167ebbb3253bc1dc844b3f590225ea3a893be6d89c63adf83c51d"},{"path":"goblin_familiar_0.glb","size":1068020,"sha256":"c921ebda8dfc91445ec7a8067dc26f08822229c0fe076a31de904cfc196227f9"},{"path":"goblin_familiar_1.glb","size":1171748,"sha256":"5a711577d180228a1eb19c6128d845cc3c693369a19ed71c5e524c365c464c41"},{"path":"goblin_familiar_2.glb","size":1200232,"sha256":"66976f37a2b9f1f9bd2fce5d35f1ce80592b6e866f092b04fb562aec452c0d1b"},{"path":"goblin_familiar_3.glb","size":1036344,"sha256":"4ef274231372a83126742de74f47f8eb20da01f1294c3da51da483bfd64ad54d"},{"path":"goblin_helper_0.glb","size":1082468,"sha256":"a77ce0d324f5a49ee59668bd57c01835c8c4384e056ab144c01e607443aed51e"},{"path":"goblin_helper_1.glb","size":1174900,"sha256":"8974410da9fd22f36f09c0b4377fdde0f9615a7d6a80d44ae28bcde38a59d113"},{"path":"goblin_helper_2.glb","size":1137304,"sha256":"d2a088034bc5abf5a5951be1ab233542244aca0e656bc100bdbf3b25a21f74c5"},{"path":"goblin_helper_3.glb","size":1057172,"sha256":"022db26563511b3f781781806e9b23766f8c4a687ee9c43e600d481865c801f6"},{"path":"goblinville.glb","size":9759864,"sha256":"7e8061fce7c4656dd534206ef150088899f6526fc35199c60345031e875d064a"},{"path":"goblinville/dark-base-0-0.webp","size":168078,"sha256":"96113450d16c2ecb25164c0c1e7a7f29fc3f31fee33df9024e215db65521b82c"},{"path":"goblinville/dark-base-1-0.webp","size":207904,"sha256":"d158d8d52b7cec1502ff1ee9f65d07d5abaa4541de79b0131c25f29b344a614b"},{"path":"goblinville/dark-close-0-0.webp","size":321322,"sha256":"8af81d059f812ae52cf775b5a04110f94501ce38526e98d6f4057ea98d4f3024"},{"path":"goblinville/dark-detail-0-0.webp","size":238982,"sha256":"aa66b593179b4d55e6e98ae571b428f0cda4204b552f41b242565eca8aae1cec"},{"path":"goblinville/dark-detail-1-0.webp","size":283578,"sha256":"da5a76886fce6356d63aa913bd7aba69b7135295d82068f94189c7ea2bd78b8d"},{"path":"goblinville/light-base-0-0.webp","size":324142,"sha256":"894552aee3db8df320949ab2bab2497bba516cd14bcaaa89296b06961df102d7"},{"path":"goblinville/light-base-1-0.webp","size":306418,"sha256":"0906470f40fd57e3720f7478d11efc7908d22c7ac8101a0740441183333e78af"},{"path":"goblinville/light-close-0-0.webp","size":576852,"sha256":"c8a40b749a3e69fb914fb2ec7c83e25e124012bd8f6d691183213c2687029407"},{"path":"goblinville/light-detail-0-0.webp","size":394678,"sha256":"c370e894685beb2460a9ce4c17e28552cfae32cfc82ebd057ca5dc7a8051656c"},{"path":"goblinville/light-detail-1-0.webp","size":410482,"sha256":"6d5dd82157838e931e9529c428863bba12ce1fc7720e353c8512d9daa7de97db"},{"path":"goblinville/plates.json","size":3513,"sha256":"7bcd1ed4a5f8b828b300b040f9981f9353a15d78b1dda73809818e6b4f94f6a7"},{"path":"goblinville/sky-dark.hdr","size":319820,"sha256":"f5932da6c6ea962d3a75797912f9ebef2f846703ef64ed27960faaeece977158"},{"path":"goblinville/sky-light.hdr","size":350167,"sha256":"888fe1251a9960bf68ba573a042f28904c11fca04a6531600d72afb1cbb7d938"},{"path":"goblinville/surfaces.json","size":111,"sha256":"2aaa50d0ad07eae3519c3102381607d36a35b6d5363209c031259cddead4b3ba"},{"path":"goblinville_station.glb","size":1504676,"sha256":"7662a2aa5bcf922398d48c16e3eaef2c37a6560bdf16300bf6339090ce7440a6"},{"path":"grove.glb","size":10174964,"sha256":"e44689e73200244e1fe7b15e7bd2fafb0745ccea1cfe06f3a424174610b2f287"},{"path":"grove/dark-base-0-0.webp","size":196260,"sha256":"adf42e1ccd46ca8ae5fb680d11291eb7aa46fe06eee114dae7f6dd3390fb15e6"},{"path":"grove/dark-base-1-0.webp","size":207762,"sha256":"32fe8c94efbb16418fde7f5e86c08b224eada83f47decf2911ace889c387606d"},{"path":"grove/dark-close-0-0.webp","size":891668,"sha256":"56ef1c1833c6bebd5dcdf74ff497c3fb91cdc3a4c9c03a9219b5d2e9fc7a4b26"},{"path":"grove/dark-detail-0-0.webp","size":327516,"sha256":"03b9dfee7200c64e6041dd50fc92204b82597f2a80d30c50aea007ec6f4fcef8"},{"path":"grove/dark-detail-1-0.webp","size":378138,"sha256":"af17bcef3d4492917e678c76ae3112d39ea625ea1044e184bcbfd67cd3ec520a"},{"path":"grove/light-base-0-0.webp","size":878012,"sha256":"f9b7294a351d738909a8516474fb9fdb9f251c0023c460badb74c054ee4cb6bd"},{"path":"grove/light-base-1-0.webp","size":859660,"sha256":"6a0366718fa9caad095a3f7bf8cd2edb87a14dc5e6e20bddffd201714f264e62"},{"path":"grove/light-close-0-0.webp","size":1992158,"sha256":"5428eee71ca50f31b0865add5ff4239d2f2d45cb3b1c397bc6d1ff31bcb264fc"},{"path":"grove/light-detail-0-0.webp","size":1214830,"sha256":"48986f352282981d3d413005399ddb90707e7102916bdcbc0e66c02bec4244e9"},{"path":"grove/light-detail-1-0.webp","size":1230512,"sha256":"8698f0a8b33c65aa840b39fe221c694c2b567cfe79e903fee369043f98cb21d3"},{"path":"grove/plates.json","size":3453,"sha256":"4f87e4f7ce1d7518c71936dddfc22b49c4eb33ab455d0c9bee9f7b81a4f367fe"},{"path":"grove/sky-dark.hdr","size":321274,"sha256":"da271e6d921c7762feffe2c058e4bae84a3cd437800368ccf213ac376af3d392"},{"path":"grove/sky-light.hdr","size":304809,"sha256":"8a3f24a34e98e69ab340875fbcf6933c68e2043834ebde296ea9d555047a0955"},{"path":"grove/surfaces.json","size":99,"sha256":"85c078c742b347f8b06ce79ee1be0c7bb9b616030c2649d7ba6755a3baa86d47"},{"path":"grove_station.glb","size":1499764,"sha256":"bd1b868b6241f44ebfda5d81606a069b0bd36eaa622e4658e452256d3f99dccd"},{"path":"guild.glb","size":3417508,"sha256":"159b1aaeeb40bad42804427b33703d9b2cca5a446b7c9534fdc8de0997d6b800"},{"path":"guild/dark-base-0-0.webp","size":265912,"sha256":"8aded6714c563387d303f8e028765f3e5f44a585f5dd892b1df22934921df0d8"},{"path":"guild/dark-base-1-0.webp","size":285108,"sha256":"4d0db0358b7f6df5304eadf0daf961c95b54713a47904f33c47ec01afe11b4a1"},{"path":"guild/dark-close-0-0.webp","size":1503898,"sha256":"057566db9da66b2b95d89f8f7364ad08659a33d78cb9e5d71ae28de56d072603"},{"path":"guild/dark-detail-0-0.webp","size":626076,"sha256":"dd7f96d17d8415b1a548e68ec6b53ffd7e295dadd9924bfc3971d93f909527ae"},{"path":"guild/dark-detail-1-0.webp","size":708038,"sha256":"ccb37d3293469455f0000fdc742c47348f58664b84f51a2671b12ba5f0aaf2f7"},{"path":"guild/light-base-0-0.webp","size":517700,"sha256":"604f0eed7af954ef95cc8fe93faa445a830581f1c3c7cdbdc9bcc99eee79f254"},{"path":"guild/light-base-1-0.webp","size":547120,"sha256":"f4b785fea8d405179dcd658c54e95a31c0177d0082306a44cf21ae7fbc3df655"},{"path":"guild/light-close-0-0.webp","size":1815358,"sha256":"ef7562efc3698a89a900e454bbde92095168c4a2c84e750676ecbbacdceeb2fd"},{"path":"guild/light-detail-0-0.webp","size":1015808,"sha256":"442e99a2ca6307fd0494b765b90d973f0c0847e75a6bb7604d28577e06d5e332"},{"path":"guild/light-detail-1-0.webp","size":1123916,"sha256":"3f14f56f3b0e435c9487c0536d7f152bc76c49ca7a67b76cf5fdf32b9c1d9774"},{"path":"guild/plates.json","size":3453,"sha256":"b50c1424647ad6975754b96692e1fb2bf9133d6496e1ac737f916ab4e4cfb30f"},{"path":"guild/plinth-color.webp","size":72162,"sha256":"a5cb255a14bc46e780606866240c42fcd904a571f2ef2739deb3204ce43b9e1f"},{"path":"guild/plinth-normal.webp","size":85470,"sha256":"a6fac3c211400705b113576a40bc6197b5aeee042037ddc0444ab4164d14ea5b"},{"path":"guild/plinth-rough.webp","size":75364,"sha256":"765e0de8ab44d418c3061ded9e1fbd9e15503dbb5c2c58fe861fe583eadc9674"},{"path":"guild/roof-color.webp","size":28882,"sha256":"db57943f7f752aa9f67d2e0843d43c32ebb269ae63eb770f72ded2e704487db4"},{"path":"guild/roof-normal.webp","size":26666,"sha256":"43da1c68178d25122f8b4cbc4b23b36d162fe9f7059fb24aab4f21fce92ae237"},{"path":"guild/roof-rough.webp","size":33508,"sha256":"2b4704b413185a47b5ee78160bb224205133bd1171c6ed32ba1ebac5890dac4c"},{"path":"guild/sky-dark.hdr","size":298044,"sha256":"380164494f75f21dc63d4b2e4f6f7ec1b7137fadfcad2cd9b2f1cbede29db67b"},{"path":"guild/sky-light.hdr","size":376311,"sha256":"5216d9cb752d2e7a4662d6ed3568b47c125b88fb280d7965941787163c041603"},{"path":"guild/surfaces.json","size":1024,"sha256":"b34ea34a2620667741f22452d3e381ef527461da560f07bb5719ac132fd0a359"},{"path":"guild/wall-color.webp","size":64450,"sha256":"f65534647c88433beba6cef7c7ccd626570a91915617e5767b5b30dff6d38361"},{"path":"guild/wall-normal.webp","size":74168,"sha256":"ab8c656c40c8886d2068979a199b0ddb496dee66575ff8aea5ced77bd60a23ec"},{"path":"guild/wall-rough.webp","size":50556,"sha256":"79c1c64b04e0f7837b6a57602363121198338726400f8ff145d9cef0202c842d"},{"path":"guild/wood-color.webp","size":22372,"sha256":"1eee4b1d660d2d9816eabee0cd8e9c575319d694c5b321406776ac901c974c9c"},{"path":"guild/wood-normal.webp","size":11574,"sha256":"20ebd8fdd3c15e3b4254eba9bda71f3fd6ad6929362cdbd671631eb61d944185"},{"path":"guild/wood-rough.webp","size":34338,"sha256":"0f576127bca68bbf5c8361a441690171cba7cdc80cefc0ae62e6ecceca9b47fb"},{"path":"guild_station.glb","size":1630028,"sha256":"8c989fed1ce6fabf829b074025a78a38b82d09327c184239c7c7ff08b339ce63"},{"path":"hero_0.glb","size":1659780,"sha256":"7c87ae79129a98b66bbda430a645f22cd937520247a3b7acf7261ee8b95d12be"},{"path":"hero_1.glb","size":1757224,"sha256":"bb2d15696c0d21ed0c32ef12916baf5c3edf9f60eca14a391c858b4d6de1f1d6"},{"path":"hero_2.glb","size":1800648,"sha256":"4f392b19fe92b6d5415abb216d1a871274012982471ec38fb8dc20a16a83eee1"},{"path":"hero_3.glb","size":1732064,"sha256":"4505760bc907e8d01e992b49beb3ceb2d4f3c8b577233da99764fcbfc76d2f53"},{"path":"hero_4.glb","size":1614896,"sha256":"c1d27ad1b33a86acfdde68da07e1bc1e56ff666a721a17dbb9c874794e27bd52"},{"path":"hero_5.glb","size":1773400,"sha256":"832f8c249d9db3f10dc6cd22f5763f5e89af0f3fbe3d33b7aca6b8c9bab77ef2"},{"path":"manifest.json","size":151,"sha256":"37ae0296483da1b0059830f3e6b67eceac659ed098897116b28ef86747005e32"},{"path":"maps/bot_0-0.webp","size":256832,"sha256":"627c666291ad0c0312e103ae5875789657280300b8fbc80674fd7e3a475dc1e4"},{"path":"maps/bot_0-1.webp","size":137968,"sha256":"a1046d00cc4094b76c641f28d86e5ccf13f9a8851ec81039a21282a666dfdd70"},{"path":"maps/bot_0-2.webp","size":105500,"sha256":"b20414a8950c91c38fb7ba607ec22c8da1672f8fff051c2b7e7f9360998edec2"},{"path":"maps/bot_1-0.webp","size":246698,"sha256":"137f638f1dfe6458e54cfa512ea86f3becaf2fca363a4731ec66565dc48fb901"},{"path":"maps/bot_1-1.webp","size":123714,"sha256":"4b41628b3ca586ae4687c5638999837bed4ed3a5f62a479cbf7f6147c29b5477"},{"path":"maps/bot_1-2.webp","size":140928,"sha256":"b3468d00a2659bdbd57e67b84b67c705c80c3309360e984e54eee7eacc744571"},{"path":"maps/bot_2-0.webp","size":211860,"sha256":"baefc888c266a23eca981097774339e246a604c5c61ef90b26785d4928d67bf9"},{"path":"maps/bot_2-1.webp","size":159212,"sha256":"84f6babbdd3e1d482dba79968837a777dbae379df270f843124eb7d03ddf90d6"},{"path":"maps/bot_2-2.webp","size":149744,"sha256":"9bcd971e3489bb44c01eaf30efe6ba33307b512c877c3ce5903c163d018412d3"},{"path":"maps/bot_3-0.webp","size":313040,"sha256":"353be26a82209678a6251e8b389c0a982abd46ee9140639714a1533720d11b55"},{"path":"maps/bot_3-1.webp","size":200080,"sha256":"e2a642876ea5f56b0b05e723999e5fc0cdb465e06e2248c8e7c6192ba8dbff6a"},{"path":"maps/bot_3-2.webp","size":137570,"sha256":"3b6010b25f499b029eb5cfc342bbfcec431167ee256e8f89da89963bc1721dc7"},{"path":"maps/drone_0-0.webp","size":203872,"sha256":"7ea7005c7ac5cf34d0c52751f131ccc40f7ce7b07694de9a79d85f71ef9eff81"},{"path":"maps/drone_0-1.webp","size":155808,"sha256":"9975db136e318fdad918bfaf1c785d34f7694eb1405c68002ca827fa0f19c980"},{"path":"maps/drone_0-2.webp","size":147056,"sha256":"fe526c49022424229846125cb1904104aee352d6788ecfe5ec990fea3f660a2c"},{"path":"maps/drone_1-0.webp","size":225744,"sha256":"d4080cc239cdfdf466865c84d683e986ecc6ef95e41f0ead908a631b87d33827"},{"path":"maps/drone_1-1.webp","size":185766,"sha256":"368d52747c8ecbf38636707a89a7a68bbf866cdd41016cd5bd7b56b5ca831aaa"},{"path":"maps/drone_1-2.webp","size":84512,"sha256":"5a9697c033c5217bfe72f0b5e1462ed2e905beaab2d9b046c931d3f896977c18"},{"path":"maps/drone_2-0.webp","size":208140,"sha256":"357468d44c024af94f7fa518b26f32fc03ff4ff2c4ec7cb2caabd92cd1920aa2"},{"path":"maps/drone_2-1.webp","size":111184,"sha256":"1194b1da84f50bf27d151b4b70ce7dded1a33e93a0aaaf623b47e2c85575c19f"},{"path":"maps/drone_2-2.webp","size":83886,"sha256":"5ace31927d4f6b2492f3111510e491cbfeba8fa2f322abadba4f156378acfea4"},{"path":"maps/drone_3-0.webp","size":258914,"sha256":"c69f6c05b093e1f587f1660a07891295d2467ee8fc84d429b9fff7f45a171fbb"},{"path":"maps/drone_3-1.webp","size":150152,"sha256":"28676d142eeeae7949f9e5b3cd36f87544a56600a5a7232394c6de1832a36a6f"},{"path":"maps/drone_3-2.webp","size":177032,"sha256":"7604a2e7ceab773b4b6d84ee5a01ff29fade6031d5a567a610c986af6afa03d7"},{"path":"maps/familiar_0-0.webp","size":345454,"sha256":"a76d7a52ddff4d8ffde5001c08fd7375864516b487a4ce3f47debe5022d57bba"},{"path":"maps/familiar_0-1.webp","size":157990,"sha256":"28bba9d228ea7ecd251a5efa38337a4ad1eafbcbec7d64527f484a4a1196378e"},{"path":"maps/familiar_0-2.webp","size":280852,"sha256":"93de83b008efe6dae06d184c38bca81572ecce0cf3e2a051bd2c2945d4f0c93b"},{"path":"maps/familiar_1-0.webp","size":316616,"sha256":"dc6c2b7e02827fa9c1632bc60374d4c89556f691261d83aab8240588ac4612c3"},{"path":"maps/familiar_1-1.webp","size":227634,"sha256":"27779a0d094764c81b1297b4527a7495d1c79c4559f68fa36715056c811f8a12"},{"path":"maps/familiar_1-2.webp","size":215286,"sha256":"52067c606520c19a355a7b27c1d3583a1d0b46b98dbc12798b32d1b2095e2110"},{"path":"maps/familiar_2-0.webp","size":233604,"sha256":"4126ceb38e7f3e08e20892094cbcf9419fb9f0f4e68b728d421c3c15a4fed8f2"},{"path":"maps/familiar_2-1.webp","size":139016,"sha256":"5280d0ed09887a4af8bf80c62c7625be53e6f65de60a09382febaec37057443e"},{"path":"maps/familiar_2-2.webp","size":167914,"sha256":"136be2762f38511a01c7aabb9c38f42bc45c7bf54a80d41f308755a107027b92"},{"path":"maps/familiar_3-0.webp","size":116098,"sha256":"3f082749936498b12e73738798e9e2b85ebb4f93a364f6658d7e932e80872560"},{"path":"maps/familiar_3-1.webp","size":83320,"sha256":"d68bb722d70d23592c17f51025e7678e3d9b415fa4506a27abec81c2567ca386"},{"path":"maps/familiar_3-2.webp","size":73518,"sha256":"d27bcf1e5de372d869a4bb88ed118ebc8d77ebbaf8ec08f3fdc9c8608ae1df43"},{"path":"maps/gnome_0-0.webp","size":722878,"sha256":"15c54b6e9312e080ec2bbe05c275cd58b2a8e3fadf6337be6127bf2776acbbe7"},{"path":"maps/gnome_0-1.webp","size":346586,"sha256":"d52b1f57e3e298ef20717260ac804b783d69e9268f4ea2c5bbf848d2a7f98d0c"},{"path":"maps/gnome_0-2.webp","size":465266,"sha256":"ffb0f448ab34bc99d7e8378d60cbad66b9bc500704554e5ee4693f64ae8ba5f0"},{"path":"maps/gnome_1-0.webp","size":970876,"sha256":"a4ab6a4d91f0bc81b9ceb9b4275c6841e7ca06712eea6d806ef3aa707bc50f96"},{"path":"maps/gnome_1-1.webp","size":556222,"sha256":"0f328d62c0332a7e813791ea007ad88a319ffa0d080b577de9367f13f569222c"},{"path":"maps/gnome_1-2.webp","size":359544,"sha256":"97efbb90360746e6a3ae8f290fec2ae8b4d650c3951a49add9d609da3b895be2"},{"path":"maps/gnome_2-0.webp","size":670978,"sha256":"b121518b5e1ac8f2a1fb489af8badea695fb4172e85502a0e567710dd4adf561"},{"path":"maps/gnome_2-1.webp","size":382802,"sha256":"30263263da0af476b19e51ecd076f8eff156bbb63bcce93152a6b8b65f7f8587"},{"path":"maps/gnome_2-2.webp","size":518984,"sha256":"cf11d06eaab6c41566cea78c955615a1a34ba1fc889ff6dc7b97118f24b8808f"},{"path":"maps/gnome_3-0.webp","size":863046,"sha256":"8a664293befc1e36bce2f45aac4a9351bbebb708ac91062b4622112c6a8483d7"},{"path":"maps/gnome_3-1.webp","size":459080,"sha256":"382ba9d080eca5304848547b645fa1bf6a28adb538eff3058c9051660383a1f4"},{"path":"maps/gnome_3-2.webp","size":514990,"sha256":"98ee4b656f585ff38fa25bb1334a20864b43cd3cc5e76c14c26741377f36a4b6"},{"path":"maps/gnome_4-0.webp","size":730298,"sha256":"e084e9f22d37ef50f1a4704c739e7189f80d20a9f05715057a64d0c6d3a688b0"},{"path":"maps/gnome_4-1.webp","size":379670,"sha256":"f585229a5abcbdf6dffe7b8a144cc4d6346b77a3b2f507190e5812acf038ae08"},{"path":"maps/gnome_4-2.webp","size":259356,"sha256":"70699b16b46ea02f672cbc7fcfa86b89fba8fb762c9282fde34d1b1ab08ba4fd"},{"path":"maps/gnome_5-0.webp","size":760690,"sha256":"9cdffef1a173c13c8a454836a39ccb52bae46d0648254399f2d1432e37d66d60"},{"path":"maps/gnome_5-1.webp","size":432068,"sha256":"50d7f341d6adb9e09f4736d2c0026e2bfa5077bdc5d153a02e1b92f0caa313ca"},{"path":"maps/gnome_5-2.webp","size":496274,"sha256":"3a27846fc0a45a42c510ece9038b679ae054ac20689afa4fbf7b34f3b51b8253"},{"path":"maps/gnome_familiar_0-0.webp","size":361090,"sha256":"7cc42038975081cc969348981ba3e1bc528cc57ada128f596f59f17d9c7f9b62"},{"path":"maps/gnome_familiar_0-1.webp","size":180766,"sha256":"3c2243ffa6813b62cbf2db54972ad09c369f9ba1290f7f91d4ca4272da9bcfb2"},{"path":"maps/gnome_familiar_0-2.webp","size":210130,"sha256":"e5f43fe993b3c2302548aeff806b540e969b7bb3c74bdb2d0ced100de8ab1743"},{"path":"maps/gnome_familiar_1-0.webp","size":268378,"sha256":"7bc64fbe7ac3b4002c0aec60cfb9457a0423081a6f75c9d570330e78749fbbc4"},{"path":"maps/gnome_familiar_1-1.webp","size":137894,"sha256":"c440cb163303b7be2134d72ce695cfc306155f09465c6912a5dc8da383ce4bfa"},{"path":"maps/gnome_familiar_1-2.webp","size":110054,"sha256":"f4cd223db8df98c1e141e6402e97918a56c1bf1de354cccb3587736c74989e82"},{"path":"maps/gnome_familiar_2-0.webp","size":252204,"sha256":"9f2b66959a996a0cca7e8f03e130c07ec6897ca8e3371fa2c59a2e710c499720"},{"path":"maps/gnome_familiar_2-1.webp","size":130800,"sha256":"07b9805a27336c1ef1ca7c13c90b193c51737112509a90d5f37dfd79d4d3b29e"},{"path":"maps/gnome_familiar_2-2.webp","size":179304,"sha256":"da477d6457ca8c9299edce9d07a1dbfac9372a2538e1566e11b460009e61b6e7"},{"path":"maps/gnome_familiar_3-0.webp","size":203290,"sha256":"7d77fe24cab2e849635e1986deddcaf54917cf83fcdb7c966639d33c29b845c9"},{"path":"maps/gnome_familiar_3-1.webp","size":133990,"sha256":"4e0e230329d8faf4119c37ee4c8340a14ecc9a864f299142502323804f82210f"},{"path":"maps/gnome_familiar_3-2.webp","size":130600,"sha256":"c1057c6814edafa56246a380a174375128301c2dff590bbf8f530dece8c56fb9"},{"path":"maps/gnome_helper_0-0.webp","size":337680,"sha256":"c81321002a9462a7cc0d1e19be1d9567c7881dbabf29a14575ddf5c20b905ba6"},{"path":"maps/gnome_helper_0-1.webp","size":323756,"sha256":"095cfa0fdcb3bb364b3cd278643b002d1757ba48ed2b8952ac7fbed27c6086c0"},{"path":"maps/gnome_helper_0-2.webp","size":227870,"sha256":"8558dbb04fa0cdc87cc4b1620d684508f3575c12f0dc8df25be906054496e7fc"},{"path":"maps/gnome_helper_1-0.webp","size":282378,"sha256":"6d855d8ea12053f85b2557d453591d15db88410b44e3119cfdd309fccb3cfaf4"},{"path":"maps/gnome_helper_1-1.webp","size":217248,"sha256":"8666ba7480b39017b44570e89ccc036823933dc7768d3a1d49ed0025d9ac35de"},{"path":"maps/gnome_helper_1-2.webp","size":141088,"sha256":"2b1cd4be96befb6cb8341d19fba9dbb237cd352dab5453623e1bc1ceff1e2429"},{"path":"maps/gnome_helper_2-0.webp","size":248936,"sha256":"a2de02831a99e0c613013c5ae9f0a3cd884dbaabf2591a7149a1151da3b2d918"},{"path":"maps/gnome_helper_2-1.webp","size":201136,"sha256":"6fa68f96cc087508690fc61a9f451438f3f33d1e58298b6ed4af0dc2261d9272"},{"path":"maps/gnome_helper_2-2.webp","size":141252,"sha256":"e9d4d284c5079acd95a0d0c57925c2df82f5f91c50c3ed4ea05614fffad8b630"},{"path":"maps/gnome_helper_3-0.webp","size":276560,"sha256":"60dd66d2f5c6a243522cf1ca59ae4c44678108a17645e2cc14e944b41573f9e9"},{"path":"maps/gnome_helper_3-1.webp","size":181566,"sha256":"02dea14b2b2a7da19dbc2860f46d2d50d675514e3dbe4781eb1e533d2dd0ab0a"},{"path":"maps/gnome_helper_3-2.webp","size":162766,"sha256":"32a2150f44818b8118f456b0f5bfafa7bedc1e74c8fbe29ad2152937acf8eb96"},{"path":"maps/gnomeland-0.webp","size":12022,"sha256":"896f72b334cbcf06818b1677687b2992f4a3704267e2cb160d92657ac83a7a08"},{"path":"maps/gnomeland-1.webp","size":1121450,"sha256":"42acb0237668ed4c869652b6659ca558dcf795448e134073ea61999b3b27711d"},{"path":"maps/gnomeland-10.webp","size":686630,"sha256":"e9f7633aa8e8f41da1372f1c98119d8a2f972ae5c79258eca45e200d4ef29390"},{"path":"maps/gnomeland-11.webp","size":495492,"sha256":"178ebe2624bb6413598f939dd4fe4f7fb1c719f7cd04f07b42ab07690800e45f"},{"path":"maps/gnomeland-12.webp","size":7518,"sha256":"6edd7d51c4f880bbd98b86c6a2b57f012f94b4023bd56d29b382f9348879751d"},{"path":"maps/gnomeland-13.webp","size":1240154,"sha256":"83ab9971cf58b741ee31dd6a517ec8a12d9e106761bd22baf84ab404358a55b6"},{"path":"maps/gnomeland-14.webp","size":566922,"sha256":"759e2782018de23463c49703a86b3eaba63debad01a64005516604852c14b4a3"},{"path":"maps/gnomeland-15.webp","size":511902,"sha256":"5c24993a1f89c634ddf2a6cb05bee2c38714c56cbea881c68fe734e1448d57a2"},{"path":"maps/gnomeland-16.webp","size":9370,"sha256":"af07984b668a2c725146664a718971905a282453fb7f7f1d59fcbbfebe54af37"},{"path":"maps/gnomeland-17.webp","size":897128,"sha256":"7e625087fe4df05768ecf0930e5acb0e1542d5d4e300a01dfecb5af8ce2b5f59"},{"path":"maps/gnomeland-18.webp","size":679710,"sha256":"cdd68affeb547dd3aa53c8e9e3c602ead6e5c3d96c4c23d6120df8b58ed235f7"},{"path":"maps/gnomeland-19.webp","size":600142,"sha256":"da618c0eeae78a0a42dabbbea1c334c927a1f06a26d758356161d00c15a44d64"},{"path":"maps/gnomeland-2.webp","size":678636,"sha256":"60c77421bd8102ae3d14c7f0a49cb140c946c555daee36c0bc22e6dc2d53804c"},{"path":"maps/gnomeland-20.webp","size":20930,"sha256":"a8c333f84e077afd40b7eda8c1d148554f55a8573d15e38e29355d5a444d1964"},{"path":"maps/gnomeland-21.webp","size":969112,"sha256":"58da635dafecef0dca2e23b2bf49b0c83744e32ad7455e55d742cf32fd690692"},{"path":"maps/gnomeland-22.webp","size":775070,"sha256":"24ddc893ac7f7c27f745d0d248abb37d60d9638ddd0bc284a787568c4584536f"},{"path":"maps/gnomeland-23.webp","size":625218,"sha256":"93c56698293f2b4e4ce3bed7e68e38539d8ac92acd514b05c4e65a1436198732"},{"path":"maps/gnomeland-3.webp","size":617830,"sha256":"d463a7194eafea16c01737cc44c590ebbb3de6605cc76fb1db73420654c20011"},{"path":"maps/gnomeland-4.webp","size":11744,"sha256":"9ef9e468319f729cb72e5b95fbf97c76caf16e7eb1d5c9d3f6c87300d5fe6d78"},{"path":"maps/gnomeland-5.webp","size":1195488,"sha256":"0eb3d22c6dbccddfbd58739a8d19fb8eaa29ed6eda495b42c6f412767fa0636e"},{"path":"maps/gnomeland-6.webp","size":761780,"sha256":"2de72b50a9da949761a12b5b547aeae4a60360a2274deb19bc2c071b113484d1"},{"path":"maps/gnomeland-7.webp","size":793658,"sha256":"5bc13510baab0705c8b7573f2a43c544505240f83b5095feb1f6abd7ca15399a"},{"path":"maps/gnomeland-8.webp","size":13720,"sha256":"11affae284ae48b824a46735e706124a3dbbecbce8cd0f4f39c56c3d3ea194b3"},{"path":"maps/gnomeland-9.webp","size":901268,"sha256":"6ca37eb6c4f36db426a4d5cf810f127c1f8f80bc14dec39a8acdb99a6cbdd6b1"},{"path":"maps/gnomeland_station-0.webp","size":604470,"sha256":"ed1ce15a8774d9fdfab46c8fb42654faa726f1d3d0bb2efd8b59124e01d77f35"},{"path":"maps/gnomeland_station-1.webp","size":372646,"sha256":"94802d6866a35c1a37e19be688663d56f7ee4b071e17faec40103e6e91d157a5"},{"path":"maps/gnomeland_station-2.webp","size":370210,"sha256":"791d15aa34e27660eab6e5fcfaa920ea780acfb146ecccfca0c207b784f18545"},{"path":"maps/goblin_0-0.webp","size":921556,"sha256":"5ff21bf08defe443affb3f0aa549b089936ab247f73b703b87f5d111211be46d"},{"path":"maps/goblin_0-1.webp","size":531628,"sha256":"05f53e6ab8149b9661223483e866b218b1331cc932bae57ba67a69928b4c47bf"},{"path":"maps/goblin_0-2.webp","size":444140,"sha256":"383a37c8158fe20f702723156f2a3c9764033ccfa43dfdba939082ddbdc14684"},{"path":"maps/goblin_1-0.webp","size":1056388,"sha256":"00076db5809829904b7f9b9c7bccde19ee80bb1d32d1a35d4132c64fe4114fd1"},{"path":"maps/goblin_1-1.webp","size":644490,"sha256":"8399e9515fce2a7e8f323e08a931f01241ce6af0aac0bb9808f8e3660dc76aee"},{"path":"maps/goblin_1-2.webp","size":368298,"sha256":"7784e4a7993081ae886e0dc43dbb4728dda9069dc03811c8088051dd3ccca14c"},{"path":"maps/goblin_2-0.webp","size":932920,"sha256":"f46c789188df96443002b1e399f445f9030db170cc4b28b6ffc61fffaf7abdd8"},{"path":"maps/goblin_2-1.webp","size":512198,"sha256":"54ce07da84b6d4898b200d43d8e90af1718acf1c7b61b55c5dea4d7c9aba8bf8"},{"path":"maps/goblin_2-2.webp","size":660454,"sha256":"c62a56295d5bef0ff8597eb9254dc3ebf568db2cd8ddbcda133f1ad70702c9eb"},{"path":"maps/goblin_3-0.webp","size":967894,"sha256":"1d1fef4391f765674d940d2439658db5041816369ba4ddfaeae3212f804e3381"},{"path":"maps/goblin_3-1.webp","size":493672,"sha256":"f563420c1625cebfdcea1547fe42a3606c9f95f83b48ec65c0655e905fe775bd"},{"path":"maps/goblin_3-2.webp","size":482016,"sha256":"dd533c8e206172955d4f2dac6762497f4f7de337158b9976a67bdf7df3a09d82"},{"path":"maps/goblin_4-0.webp","size":775422,"sha256":"1910c3f5a1bd71a3f04a157aacdeccfd2e316e8a7e9fcea5ba839c05187505aa"},{"path":"maps/goblin_4-1.webp","size":384472,"sha256":"369681213e73f422743717630d94a32a7003ff5532af0cfe2a7393799a16303f"},{"path":"maps/goblin_4-2.webp","size":416290,"sha256":"c7c82ea1e383c264380a5c3b0b68a3f4c1aa472817479fc2d6e1ad2cb6730cd5"},{"path":"maps/goblin_5-0.webp","size":902396,"sha256":"1cf255901bac099872fcc960f81185c6ce65bbefc83650022276cf05f2bf4628"},{"path":"maps/goblin_5-1.webp","size":465698,"sha256":"8cc2e9b9940f60240860afbbb9f97032a924a7ec671072be10eae5afb6350347"},{"path":"maps/goblin_5-2.webp","size":657032,"sha256":"627c69741b509ac7544e5213fecc0290a0561f353aac214d4304194617b6b05f"},{"path":"maps/goblin_familiar_0-0.webp","size":254582,"sha256":"097f81b6b95fe4400ee4ad9dd52bbbc53c991e96ce9abb9423b20791b7fc5dbd"},{"path":"maps/goblin_familiar_0-1.webp","size":131282,"sha256":"d4068870fe876a49325844f9a9f8834ebb9dc3d54008edb48d703b72fd5276c2"},{"path":"maps/goblin_familiar_0-2.webp","size":163232,"sha256":"c26e8ffd0666a94d2cadbfd20568c0fefc3812f77344614dfe83b73d89e95fd1"},{"path":"maps/goblin_familiar_1-0.webp","size":452380,"sha256":"bbb7a173b9ab70dddbbcd6f39fc0095467a4afdf6ac6441936990119c469e603"},{"path":"maps/goblin_familiar_1-1.webp","size":269018,"sha256":"8b429e901042255314b5cf2ac3e345d1a9008a7d9c8d1b667dd991d4b230942d"},{"path":"maps/goblin_familiar_1-2.webp","size":324644,"sha256":"2a6f7a77d9b1b4c5df6540a5addde7d4b01dbbd61566820f02c08fd535cba606"},{"path":"maps/goblin_familiar_2-0.webp","size":439712,"sha256":"b63fb6f8390878c1358691c98dc0dbe89b81e1ac63f79b106d3d129f74ec4906"},{"path":"maps/goblin_familiar_2-1.webp","size":212642,"sha256":"37a767c1cc82474c5a8f4d6c0567a0269e5c63acee31a5a8b1b49386e200e95f"},{"path":"maps/goblin_familiar_2-2.webp","size":251098,"sha256":"0cdb809a91ef0af7af7e9b3d3cb2be8f6579ef5d311001a14f2376ef6372acf0"},{"path":"maps/goblin_familiar_3-0.webp","size":247956,"sha256":"18028ccf40195e80875df124bf62e887ce484f91ef93a1eb61fd79fddda1efc7"},{"path":"maps/goblin_familiar_3-1.webp","size":144450,"sha256":"1bf85ffdad555d871d8e4cded2fe8b973bc6b93923dc98139f96154de4c04771"},{"path":"maps/goblin_familiar_3-2.webp","size":252790,"sha256":"b3a04570d9fe70d3a45774a2832818fa19600dfb6459c9188e5aec8960a2a2c7"},{"path":"maps/goblin_helper_0-0.webp","size":362538,"sha256":"7f4d9fcdbe9cb3253f5a4b13d15e9de696829f8e46e2f1981db6398ccd1beb9d"},{"path":"maps/goblin_helper_0-1.webp","size":211644,"sha256":"b78cfa80338a7ffb5cc8b674ecf5c85b1ed79c7b349576ae685bd997bf93c885"},{"path":"maps/goblin_helper_0-2.webp","size":180680,"sha256":"43d3b6f975db91dd4a5252d3041e2fa20e6db4f4eb2d7fe877de11dcabbd6f93"},{"path":"maps/goblin_helper_1-0.webp","size":424614,"sha256":"b7f20ae3d66212527bb99c9718da0496e250c9443fe2ba37d9bc7149d018a08c"},{"path":"maps/goblin_helper_1-1.webp","size":267980,"sha256":"efa16c451837c9234051125e7e17f5a85c0f84c8af3c872d3692772af31484d1"},{"path":"maps/goblin_helper_1-2.webp","size":202652,"sha256":"185bfe1cd2bea0167cc1307f64d58743826c30f7b5aa296d2448a71c2bc65bac"},{"path":"maps/goblin_helper_2-0.webp","size":419770,"sha256":"35119c909ce89a6433d3968297fdfa07f7765078f6d5c26b3be67de55087dd54"},{"path":"maps/goblin_helper_2-1.webp","size":241526,"sha256":"dc29b35612f92f265c123a83707d78c63a0c841271c6c8f398938aa3b257a1a9"},{"path":"maps/goblin_helper_2-2.webp","size":152390,"sha256":"297b74cf2dc49101c476c299e06ee4e9a30ff4dfe35bfbcfc4bd60cd1dc27626"},{"path":"maps/goblin_helper_3-0.webp","size":288134,"sha256":"8571dc6ede444e82ad7fedf8968a3c05a731a71204b800542f3378ed7943b6b7"},{"path":"maps/goblin_helper_3-1.webp","size":158996,"sha256":"37663ba0bdd35a20983537222e49f415cbbe42de7cf3e36ed3fcb318cc27cd61"},{"path":"maps/goblin_helper_3-2.webp","size":233414,"sha256":"7b739812d9fc5eb002955c33baa1b7a084f74a7c2b5e858824ea52d4def1a49c"},{"path":"maps/goblinville-0.webp","size":18086,"sha256":"98afb7a26a93bf5658d18a005e18927e9bccd25b42b96f13b3dd09ac817f8890"},{"path":"maps/goblinville-1.webp","size":1206816,"sha256":"1fcf3eeca903cf314810734ee0e82e0767b646ec1c8d1bbb7452cff47d163a5a"},{"path":"maps/goblinville-10.webp","size":683648,"sha256":"b1fb98d994ad1fd778254b8a829757caf4bdaf837ad5359a8eee61ee1fb538c9"},{"path":"maps/goblinville-11.webp","size":569188,"sha256":"96ed2d3bb5fa3034504546811eb6fdfd9c8cd524ac35b4ad3fc88284316d8524"},{"path":"maps/goblinville-12.webp","size":10016,"sha256":"ddae8ac87130ef8a129209626ee443b5993bcea864fd75fccee8f7c367a3e712"},{"path":"maps/goblinville-13.webp","size":1018640,"sha256":"8a7cb22319b46aed7b8599eb5f0ea9f2847c987968ced20257305d4345be47a8"},{"path":"maps/goblinville-14.webp","size":666864,"sha256":"bd837d8dcde2b1132d677fa4706342511064deca466a74175f0face54c4844d3"},{"path":"maps/goblinville-15.webp","size":499574,"sha256":"537d703529085acf2afc976e04a9e187f9376459cc5384dc52ba27faffd41e00"},{"path":"maps/goblinville-16.webp","size":15408,"sha256":"396b0d98616c7dce49f26656967a11611b344a05b38e23478b02d677127b792a"},{"path":"maps/goblinville-17.webp","size":1016040,"sha256":"68b2790310abaed86d9c28f3764c9578c45e386bb8078046ad60f73b18adda1c"},{"path":"maps/goblinville-18.webp","size":635252,"sha256":"18a9d439424df44ab493fb66927c28c915e8e87b91f095afd635801d5b07c2e7"},{"path":"maps/goblinville-19.webp","size":692646,"sha256":"cb2004640c7094e378ee5d75e2d91d25535f932b00b5f52123262eeb1461c7f5"},{"path":"maps/goblinville-2.webp","size":581824,"sha256":"cd2f76c1788f4c65c78ed9de882c2aaadfe20f7c6318bca55eb7f69ce9cefe3d"},{"path":"maps/goblinville-20.webp","size":1240352,"sha256":"42c6ce007cc595bcfe05ec83569d132a8eb20e628a8269b9c712092f73d58b71"},{"path":"maps/goblinville-21.webp","size":781812,"sha256":"a46510fe0600db8c103c717e98f4d491de6efadb99d2b002f5d793c8661669ed"},{"path":"maps/goblinville-22.webp","size":504178,"sha256":"3350ba050792e16ea6a32c18be0d0a4617ae44ff0a8bb5d21e185e131b856007"},{"path":"maps/goblinville-3.webp","size":598290,"sha256":"554674f59ea476fe98db169a5b5f2854f5497e8cd1274ca33a2ec653d0dd7c1f"},{"path":"maps/goblinville-4.webp","size":7518,"sha256":"6edd7d51c4f880bbd98b86c6a2b57f012f94b4023bd56d29b382f9348879751d"},{"path":"maps/goblinville-5.webp","size":1305334,"sha256":"f55d312542f99ce877c69b6905bf1cae5d4cb25d269afad028e0bb5e307e7d7b"},{"path":"maps/goblinville-6.webp","size":870012,"sha256":"55271e50c58767b6734ef8c14433b563c2bff6e62d34e0a5286d54b1f58a9c8d"},{"path":"maps/goblinville-7.webp","size":559524,"sha256":"e4a66d2af04e44ce89ab160c705db026720ad408e502c85574653e759459d7a7"},{"path":"maps/goblinville-8.webp","size":8824,"sha256":"761ccdf39275de409f6698c0f4c4cc863f23068c7eb9675ad44355d39f5e20d3"},{"path":"maps/goblinville-9.webp","size":1109288,"sha256":"706bc9ae5393da8161d19e49d0cdbb7b4733017f028d2fe966c2c79b7dd63689"},{"path":"maps/goblinville_station-0.webp","size":816508,"sha256":"deaa0ab2467d833732a3188585fed0f40c0fb8907f5acd92c8c2889995aeae0f"},{"path":"maps/goblinville_station-1.webp","size":542928,"sha256":"426366b257cae185067ff0bd17c6ebbbf95fd779929e97fe5358ecb0de52ad19"},{"path":"maps/goblinville_station-2.webp","size":428034,"sha256":"390d20a49c2c1ff6a27a7daf5a826c6431190f75498d8be617356ae0e8a23562"},{"path":"maps/grove-0.webp","size":287142,"sha256":"28766709a089b4e6335ada60891c84c806ead2b332ddacd535d848b15937e7f2"},{"path":"maps/grove-1.webp","size":1593420,"sha256":"6a5794506842afef34a85c0fb907681f03646053f2168f68f980f9cc245d78b1"},{"path":"maps/grove-10.webp","size":709230,"sha256":"063ac7d08f27d50adba591033f58164bb1823ba78d4144b94700ae339fb3ec12"},{"path":"maps/grove-11.webp","size":627862,"sha256":"1338743d11424e161bb3ae7671bd8cc6047c2208f67b93c9509ecbf0d0ee4513"},{"path":"maps/grove-12.webp","size":23800,"sha256":"3dba035f62142bacac3e0ed951dbd608494445ac6de5f689a3445e2bc2df58b1"},{"path":"maps/grove-13.webp","size":1233696,"sha256":"4ba800ea985c015dcccdfd4b9c70b71cf9185d0aa9876aa1f1e32579b39f81b6"},{"path":"maps/grove-14.webp","size":606470,"sha256":"3c88714d33495fd7a4fd25a201b3490bb124498814131019fc2e32ba6107940d"},{"path":"maps/grove-15.webp","size":567726,"sha256":"76d47191476979cf7e58b4d08dfa28bd4672b9e5c39c0a24cbdc8c36907a2760"},{"path":"maps/grove-16.webp","size":100504,"sha256":"22779ab051c24b3bfe4ae7394c74ed8589a2c6b0fe11c412b066f0eaf4d89083"},{"path":"maps/grove-17.webp","size":1610482,"sha256":"5947a2f6c2932786d41f04400cfc1e2709b069b22c4d7b4881a2c935a9408014"},{"path":"maps/grove-18.webp","size":563716,"sha256":"9ef9be39dafe75a980c849c01f9ca16f54a3edc69eeb1db9fb3f3bbc11db03d5"},{"path":"maps/grove-19.webp","size":609772,"sha256":"f7524e52c713f781506ac8f76b3760ff2d707ff73158044f4f24e31dabc456c0"},{"path":"maps/grove-2.webp","size":526732,"sha256":"d85b3aa42511025d4e7314976962daa1e9f8255171bba3bee11b7b9d9c3b151c"},{"path":"maps/grove-20.webp","size":20846,"sha256":"b20908ec7bb463d18c6e315d59e48a947767750b3b035c71f719832255df0ba9"},{"path":"maps/grove-21.webp","size":1207642,"sha256":"81bfa75cd071319d19470534c17931d85634d3ea7025ed8b5fe4dae75a358d57"},{"path":"maps/grove-22.webp","size":705790,"sha256":"fd078e755c784cbf59059aafe3622102a3ccd9b37e105f0fdd9c48d2eaead90e"},{"path":"maps/grove-23.webp","size":666368,"sha256":"e45d5c7bf0862b1ff703e629910840d1de6b00cf7b51980540373fb949ad1085"},{"path":"maps/grove-3.webp","size":639798,"sha256":"d2b8604c7bf53cbfd559af3cd1dcddb6a1c13099e37cb77c9fe4278bc82e2dd2"},{"path":"maps/grove-4.webp","size":33998,"sha256":"65ff1713b0c392766c50154f546892493b1bde5db7f638644d06486fcb64b3fe"},{"path":"maps/grove-5.webp","size":1242668,"sha256":"063ffb53bdbe26cdefab55ede07d397b9c3686760f58dafb802adae86474a3ca"},{"path":"maps/grove-6.webp","size":417578,"sha256":"ff069e97796bbb5cf9668bba6461c74bc9acee10d57538a61f730cea2941f9ca"},{"path":"maps/grove-7.webp","size":472708,"sha256":"7891e87ec7d57dd8410037b59e1066c71990db0eea8d1f66277097098174b6c7"},{"path":"maps/grove-8.webp","size":43774,"sha256":"47ebe004cb1a0c0bdf0b73cbf79053e3be9bb5320a0b356fca2d0969a86f68a9"},{"path":"maps/grove-9.webp","size":1397078,"sha256":"8a840894f5756a46487895859557be442e737217b4a652f10e0709b91a8b8103"},{"path":"maps/grove_station-0.webp","size":836574,"sha256":"058a7ddc93874b491d6f329d1c19d5ecd9c3da011a0e8bfcfc689721c23205f3"},{"path":"maps/grove_station-1.webp","size":446526,"sha256":"6c8e7d37bfd5481ebb3d58533ab0f2cb093694938fd1da674aa74f29894e0e6f"},{"path":"maps/grove_station-2.webp","size":591600,"sha256":"15c3d09b315ad7e1e9db6dad35fbe2503abe9a7bb42ae67187f0ad843b24d1ec"},{"path":"maps/guild_station-0.webp","size":1081432,"sha256":"c1c0878d22992733333a75b98c101c637aeec4191425a0e7765360fec6ddf465"},{"path":"maps/guild_station-1.webp","size":466696,"sha256":"33c2ede322997a9ac65c33583f16d727dade5be531e3ecbd332d323296289e44"},{"path":"maps/guild_station-2.webp","size":376802,"sha256":"769098773f80bb7f10631a222d940bead5ebae9cfbac2828286cc5c5dca445fc"},{"path":"maps/hero_0-0.webp","size":620238,"sha256":"ec744cebc163f2728499668b21c9bd409c1c6dc69c5c6c7a94c679d2e6d5b387"},{"path":"maps/hero_0-1.webp","size":369060,"sha256":"fb87bd5ea00c29c86a1d51912adc5be57b8a151229fbdf062896e245ad180870"},{"path":"maps/hero_0-2.webp","size":317422,"sha256":"0de235ce67692877c7d6f189bdf4ddc391954ca089d8aa770f822664a2d14acb"},{"path":"maps/hero_1-0.webp","size":715862,"sha256":"78a6a12549b7f8220505d9df6c013e5a493b5389e25ef3f9e73309936aa8848e"},{"path":"maps/hero_1-1.webp","size":435572,"sha256":"a436e1a03f941ffd93192b9bc880e00096f5a6e9d991562b4b4497426f367866"},{"path":"maps/hero_1-2.webp","size":399968,"sha256":"ff06b5f081a5fb8a57e59210146a171f4b02719551fa1b97732963b949a40000"},{"path":"maps/hero_2-0.webp","size":854128,"sha256":"4951ddf5639c9bcc325e48c64db328593504eb3c092069e2a84742b127c65e8b"},{"path":"maps/hero_2-1.webp","size":421140,"sha256":"204775c7cc27f16dec703d8c534953ced6c8f154ffb052a62d97def79ae280ff"},{"path":"maps/hero_2-2.webp","size":310598,"sha256":"062ce99122ba27c2e825999026ab764435c1592d4ebf199d908170c7263cc904"},{"path":"maps/hero_3-0.webp","size":732928,"sha256":"cbc58c35fde36c18d5a2b8027fb31df19237c5d37b11a088f347df186c9c02d0"},{"path":"maps/hero_3-1.webp","size":415160,"sha256":"0670f41a404963de1a3e07dff96d9cbfe602c65829c9d8fe7b571de7eaaff52d"},{"path":"maps/hero_3-2.webp","size":297284,"sha256":"b2cd90c459724d81d8e6557eee28fa289c068811fe14dde841a728ebe1a261a4"},{"path":"maps/hero_4-0.webp","size":567998,"sha256":"203bb36fb2776eda4a88149c765c25dcc06743374847b9818aac44cecfdf97a9"},{"path":"maps/hero_4-1.webp","size":267194,"sha256":"63d31d93709137dafb8748f0d43adabc6d3bc67cb21ac65c37a1be1f7cac26b2"},{"path":"maps/hero_4-2.webp","size":181768,"sha256":"11472d9b9161016de714804a82203e94d47ac7730b3a68e33f97b1ebda84261f"},{"path":"maps/hero_5-0.webp","size":729662,"sha256":"016eeab9a81231232e0f9e7417ede3189e23e0d0e75ccb4979f1a888a6b48f9b"},{"path":"maps/hero_5-1.webp","size":449116,"sha256":"6600394f113ed6ccb444ef79961eeabaa62eeac8ae5aa8817a7015c69c5788aa"},{"path":"maps/hero_5-2.webp","size":449456,"sha256":"c0495c8ef08a1db640ba0f9572c5022b914e6abdae7d036bae32199656566835"},{"path":"maps/orbital-0.webp","size":7518,"sha256":"6edd7d51c4f880bbd98b86c6a2b57f012f94b4023bd56d29b382f9348879751d"},{"path":"maps/orbital-1.webp","size":858434,"sha256":"51c5780fb670d9bdea073ebd2e3eb71d39600bfd4d34b3c8f8eb410d76f36736"},{"path":"maps/orbital-10.webp","size":522384,"sha256":"f911339d7447881144947822a053166a47b0698ae88ddac3c92489d7659462f5"},{"path":"maps/orbital-11.webp","size":441412,"sha256":"20fdf5a14856eb8ab326d26bdd9908e32827fdc72d6f2acffd457c4ff80ce840"},{"path":"maps/orbital-12.webp","size":10758,"sha256":"f1bd0b505c5863131fd73d22657a6a4a89fe41182e30976baa194b20c1d832fa"},{"path":"maps/orbital-13.webp","size":979608,"sha256":"6cc346c243b7e4fb67b61a14fa47df2e8d749dcb81eb31fc78cfd012a8147650"},{"path":"maps/orbital-14.webp","size":661476,"sha256":"7a627074179738a9fabf0c282a4f65ed21d69786f78d0edd04aec2caab156deb"},{"path":"maps/orbital-15.webp","size":501890,"sha256":"cc68fed224d7fa17035987dbc120131a6af3bd20ced8902855f2361dfa1d0fc7"},{"path":"maps/orbital-16.webp","size":831184,"sha256":"bc7c8b29a146d3579d6c3c6942068ea998b268d9a242c68b6e959b58f2465ab1"},{"path":"maps/orbital-17.webp","size":538856,"sha256":"3e09f64e38689931a9b71a569645f26f4205e4f28012528b134d4eed1cc4f322"},{"path":"maps/orbital-18.webp","size":358326,"sha256":"7b8a804b360dc1c3b331b942a42461f8d5789fef2dd19e3310cafb27a89d704a"},{"path":"maps/orbital-19.webp","size":20588,"sha256":"bfaf5a8b62d4b1d121f4e094b9ceb20cbce7def403968926aa7e776bba1c137a"},{"path":"maps/orbital-2.webp","size":629708,"sha256":"a5ea513abbc66d8763f1b86243ea1d8695ef90c43d20465363815c20c55910e7"},{"path":"maps/orbital-20.webp","size":693938,"sha256":"4bd35be5ac052305e04e82c4e944a3929b58ae41fb4e06d8b2c4a8cea2df60fb"},{"path":"maps/orbital-21.webp","size":481196,"sha256":"b8570e5c543ae66c00bfbeadfcd619fc022312d4f53bf14ec517252a6a69bac6"},{"path":"maps/orbital-22.webp","size":380444,"sha256":"a3e6fdad80584249a0fb1afb2ca7c821fa1f0a82bb4cb6704312871246c7cc0f"},{"path":"maps/orbital-3.webp","size":353782,"sha256":"74a4943ade040c643d9fd6afdad86ec7e7e677158f579decb11e05619a6cfa70"},{"path":"maps/orbital-4.webp","size":11888,"sha256":"9d86aa682bb43bb4f47b607f452472f1cf377346ad069a6b7e0ba9cdc29acdb3"},{"path":"maps/orbital-5.webp","size":731910,"sha256":"eab7be9528992a5d1ed7c0ec15e9052740728ba253c778180fff81ee7fb14cfd"},{"path":"maps/orbital-6.webp","size":500106,"sha256":"17c50fa2680fd151df7bc3cf26ad088671ed9c7ba0dacf0318cdd6d30436d4f1"},{"path":"maps/orbital-7.webp","size":429134,"sha256":"c0d188aa849c67271925c1ca2a44dcdd05081053387db5b86ce6156e1aac781d"},{"path":"maps/orbital-8.webp","size":7518,"sha256":"6edd7d51c4f880bbd98b86c6a2b57f012f94b4023bd56d29b382f9348879751d"},{"path":"maps/orbital-9.webp","size":963034,"sha256":"9e68b2b1c57b84e966717ba4ad4d71e42ad39fbc47188d037db5f6ee9d9104cb"},{"path":"maps/orbital_station-0.webp","size":424938,"sha256":"8e66c2e1a65ebf212324f66ce7a5818d72d05c3b3807393ade914e3d75411ab9"},{"path":"maps/orbital_station-1.webp","size":280090,"sha256":"4ddf45f3e8c7fd1495f21acc8e22bcadf2d02f2a056c782803a64cd6f4123a76"},{"path":"maps/orbital_station-2.webp","size":292110,"sha256":"a0f7ba600ae3cba44ab900db5a6f5550caf4a10accf680de8b317abb787078b1"},{"path":"maps/professional_station-0.webp","size":383194,"sha256":"8b50fe67a762718d98a2b4a3a304cd2ea5c5c0424f01ddc114581a64310124cd"},{"path":"maps/professional_station-1.webp","size":245246,"sha256":"41deebae2c3bfa749403eeac644bb47fa466a1e043da37cf60b72c01ee050049"},{"path":"maps/professional_station-2.webp","size":154730,"sha256":"24bcf11483b3829dfa9cd70dcff7984f6697f06395522c7dd3e0c5bd1c161068"},{"path":"maps/robot_0-0.webp","size":642170,"sha256":"f14787fbe2cdad45495a319dccde3c5e775362e0309f660ea4d6ecca539379f9"},{"path":"maps/robot_0-1.webp","size":449242,"sha256":"528ed37b02a44cd3b570998d2507fd22155a3fe925b269e14513282279975f65"},{"path":"maps/robot_0-2.webp","size":359686,"sha256":"8b939a718b024e114c5592172c061b1b4dd0bd053281d7b6ae9fdb656b751e14"},{"path":"maps/robot_1-0.webp","size":772738,"sha256":"08c16aa34fe1dda47f3ccf7250084021b7f3550f8cfacc15c710c49ca1a2fa35"},{"path":"maps/robot_1-1.webp","size":584954,"sha256":"31490010994d3e08c3f66dbf6f1256933d21be5cb9734eaeb12b2f9823e80ce2"},{"path":"maps/robot_1-2.webp","size":364954,"sha256":"b3db655544c7fbd79697fcd878ebb2cbca25b88c79835bfb76b3337e45140c6e"},{"path":"maps/robot_2-0.webp","size":840094,"sha256":"96e62f1ea8558ddeb7d7b9d2edf7465f66e88fd55ba211a8e29d0daa7aac7824"},{"path":"maps/robot_2-1.webp","size":619548,"sha256":"1e4ae734895b1474960a0dda4a304fb92d987e2218d9c3e9e9639030b2a248ea"},{"path":"maps/robot_2-2.webp","size":475364,"sha256":"4f823d9bdb8751fa1e23a8ef9c551281c8591574541f69c592e4230c194bee9d"},{"path":"maps/robot_3-0.webp","size":723962,"sha256":"655866634e8e89ba25a939fad8e0944a2dcc9f539dfd60fb5f7bad66979d0a49"},{"path":"maps/robot_3-1.webp","size":402166,"sha256":"c4d6ac84714603769c1ad90ed49ed5c3ffb22fdcd32b4d07d87e20faf30e9146"},{"path":"maps/robot_3-2.webp","size":289056,"sha256":"31fd60c02170b6ee6e864d9817867b7101b9cd15b98aa65f57b2b9cad073fd65"},{"path":"maps/robot_4-0.webp","size":728282,"sha256":"2a8f936665591df3eaf1008d16963d703964a58d3900b60c7d8bece3b9030d97"},{"path":"maps/robot_4-1.webp","size":486806,"sha256":"b32815bf0e41f87b4e6612cfe09914051f77614458f3d2883210efec51afd37e"},{"path":"maps/robot_4-2.webp","size":368354,"sha256":"05446aa63fc67634a539cdb64db02771094ef006d7733f2c49966a6d910a0863"},{"path":"maps/robot_5-0.webp","size":1004228,"sha256":"cfa66c04d39d3db002efbd8f8b6b678c009a0a18ca06f3cfe2ef05a7528b70e2"},{"path":"maps/robot_5-1.webp","size":434160,"sha256":"5c4dda9b1d31f0bf9b571980e219f0fc21da34e5a916b9ca71657c2220ef8280"},{"path":"maps/robot_5-2.webp","size":427160,"sha256":"4c7cdb9e2231208c1fd9fd9f7c1565fa4417239f52e4d2ad7552949dd7812882"},{"path":"maps/spirit_0-0.webp","size":940966,"sha256":"d1187391e8c57d6cbd9be0963ed98d979b88f226b5ded8c4fd36d8f85ad693c1"},{"path":"maps/spirit_0-1.webp","size":467260,"sha256":"a5ecaf147ab63dfaca94563c92834f266f63a3ac7fadd34994bef6ae2a5066aa"},{"path":"maps/spirit_0-2.webp","size":427934,"sha256":"0821e96acbd2f7a5f20ad885b9f2374c5dbafdbd601be076b062dc65328069fe"},{"path":"maps/spirit_1-0.webp","size":647336,"sha256":"d4de9d7a07d9772b944a753197092deb51ef371b712ea6075ecb79397538d0e3"},{"path":"maps/spirit_1-1.webp","size":433160,"sha256":"0189d9bf8e53032a0a44e8cab8029c006be3775c324b249f95223cc8b458855e"},{"path":"maps/spirit_1-2.webp","size":411750,"sha256":"ffdc9ee11313b50834a40c347b7df598ea6e7a1075bf3635ccc3a19b40382f64"},{"path":"maps/spirit_2-0.webp","size":513706,"sha256":"129ccc96bfe9c1a7ce0ba2029fba214d887cd4ce0dcec85dfe153e6149580539"},{"path":"maps/spirit_2-1.webp","size":325162,"sha256":"da162f0d9027c6a3b52113538dbb2d12ecc9343e34e5cd75ecf1ce198bcec390"},{"path":"maps/spirit_2-2.webp","size":520624,"sha256":"d78215123109b6838bca3da6b53008b53e1e64858f88dd5d5dccd85feba95ecf"},{"path":"maps/spirit_3-0.webp","size":611664,"sha256":"5043b7099c60edbf999007e6977bfe0090305cf7251c2df3adb4e2f37499ff1c"},{"path":"maps/spirit_3-1.webp","size":328088,"sha256":"86b19b3f98df13fc469ca84bf4806644f3f8bc147b995100f0103369550497b2"},{"path":"maps/spirit_3-2.webp","size":599962,"sha256":"cd7ef2badf9198161430a8431e8be37b543ad9a78e591c471c7923e02ac272ab"},{"path":"maps/spirit_4-0.webp","size":848226,"sha256":"9a0af7a45d5436646f7fd3bde14e6f33d3cc35c3152e1a8dde49252f6ecd301a"},{"path":"maps/spirit_4-1.webp","size":446746,"sha256":"ea152420ff9020050bc6ef656717c6b2af2435687edc88dacd180ec1917f7b7e"},{"path":"maps/spirit_4-2.webp","size":406998,"sha256":"7fe9fca0e77ba9569a3264c3a8e8b05af79fbe4ec50949cb4ab0648fef7e6406"},{"path":"maps/spirit_5-0.webp","size":863178,"sha256":"f81fa2753b5aa6f7a795e9d9e293f07763b85f383360ad3a7f9c8fba0fe87de4"},{"path":"maps/spirit_5-1.webp","size":435894,"sha256":"45fe4c1fc412e05a23cac25d502d180f040d946839cbe05e3ab8a81dfae96374"},{"path":"maps/spirit_5-2.webp","size":475850,"sha256":"8403fdd03c08f266971602783b03976c4814c8879c2a448bc16ddbba1470aee1"},{"path":"maps/staff_0-0.webp","size":862582,"sha256":"09cb799a4e4c76a8181777ea9b155a8a3ed34761fe6574c6d561f7575127139d"},{"path":"maps/staff_0-1.webp","size":513224,"sha256":"acfa53ec2dea5d4dba93191c2aa908ecbb844af1d798e7b136ea3ec65557f539"},{"path":"maps/staff_0-2.webp","size":359012,"sha256":"147cd4862c3d83dc7ec0f78eabb4b78515a7277d72945ae094043937f4002bad"},{"path":"maps/staff_1-0.webp","size":594434,"sha256":"90718dd141513dda81734f05b56b6b2d48a7b0e60212d24df3e273b3a30bd525"},{"path":"maps/staff_1-1.webp","size":344522,"sha256":"595a182b2d6a34447f741cbb2c07a63b3885ffa86d94243ee0522a68859eaca7"},{"path":"maps/staff_1-2.webp","size":427750,"sha256":"70088a44925c0ca377eaa3c69f6df48380f56deb484929a09efe2f1762153604"},{"path":"maps/staff_2-0.webp","size":703294,"sha256":"5f80e2d2b4ac3707ecd33a3c80e1a33a8134ebbc34a50567173f7be5e5dc1c2f"},{"path":"maps/staff_2-1.webp","size":471016,"sha256":"b3ec4ac3041451ab6a997617f6acfbf95ee9456e5c0ac18d264f50edfb240191"},{"path":"maps/staff_2-2.webp","size":409202,"sha256":"f027b6ffb413a09054d69547638240f0cc1ac636e5e6ef74d97f1582e8ed6ccf"},{"path":"maps/staff_3-0.webp","size":614812,"sha256":"f4b1cd4f59aaaeb0a8716da74d5578e3425d27832f01c7a9a8d6732fca74850a"},{"path":"maps/staff_3-1.webp","size":375724,"sha256":"6c0f7008b0a2461bf0a9d1510db3a512e2b34b47da67aef0e2763e3731788016"},{"path":"maps/staff_3-2.webp","size":270170,"sha256":"70a934bea9d45412c8fd0b8b347ecba74eaa2c2a16a1e57b8bbc31335fb95213"},{"path":"maps/staff_4-0.webp","size":684000,"sha256":"67e4e671add03737e9891230d76d00456a2606e125a8656afd2cc87329f7932d"},{"path":"maps/staff_4-1.webp","size":444248,"sha256":"196fc8218f546733040eb861d53a64620e897d162a29ece3839d3cdb254f026a"},{"path":"maps/staff_4-2.webp","size":386960,"sha256":"d0c62d3c58951c7f549edccc46ebe2405e8098eb02c581efdf2087b9bde63e4e"},{"path":"maps/staff_5-0.webp","size":661140,"sha256":"890c1d54fdb94f1982f07d6775c5891c2314d73be347d7fe413cd7ad654a09a0"},{"path":"maps/staff_5-1.webp","size":354836,"sha256":"c44bef8b639f4ffab52e1dfae1783c81ae889f3d83f299685c66774f3d58c465"},{"path":"maps/staff_5-2.webp","size":342070,"sha256":"8278c6ce0ad10581d49369e1f2e7f8d59f367d814d34bf9cc134017630e245f0"},{"path":"orbital.glb","size":9155296,"sha256":"a7d273c26e61a5838844db85c111c86a910e6888f223d7a80599ff02cf505a76"},{"path":"orbital/dark-base-0-0.webp","size":129456,"sha256":"0f2d059ebb3553b11343b188fd5c5d948677de5a7e3da6fd1d738882c5594860"},{"path":"orbital/dark-base-1-0.webp","size":175700,"sha256":"e836d7adfad75ef0d5899bcc7f64eed99beb479afb43635326e586fdeac07f4a"},{"path":"orbital/dark-close-0-0.webp","size":374142,"sha256":"4aa08f854227c73090320ab83ddf7739b1288c1b52596e924f195fdf16fac861"},{"path":"orbital/dark-detail-0-0.webp","size":198284,"sha256":"59cba07c8f613c4f062662107aedf613bd171618988663458ce77ce1fbadf2a9"},{"path":"orbital/dark-detail-1-0.webp","size":241912,"sha256":"5fa6729de183226272a18bce162386a3148dc8f369467fd7204d246b0841437b"},{"path":"orbital/light-base-0-0.webp","size":141848,"sha256":"e94b66346121b3498c8a981e4eb944518dc6202b2af206948119792f78d2bf96"},{"path":"orbital/light-base-1-0.webp","size":200002,"sha256":"99e15b1294508363e790687ec71c8012cdd3e4335b7a9d13a45dc541d5287009"},{"path":"orbital/light-close-0-0.webp","size":374804,"sha256":"149f44f1a751b72e2bf197703d920dedf45cb4d3a20cfc5df9bd181cb5c4a3de"},{"path":"orbital/light-detail-0-0.webp","size":217464,"sha256":"9709b96f753b730da97aee11e04e7d5a113ed7b14d8099aa0c2c1ca3afee3139"},{"path":"orbital/light-detail-1-0.webp","size":255200,"sha256":"129503fb27dbec978933c031a604c1f4bff9b3547715e7ad4ab1100119153b03"},{"path":"orbital/plates.json","size":3473,"sha256":"7fd3e18a18548c8463abd118cb1e1f87d231c1613f94a952dec23b692dcf8992"},{"path":"orbital/sky-dark.hdr","size":36962,"sha256":"f23d7ce96f20020367fc61b585164b9146fd716ec7b5003020e66a2acfee60de"},{"path":"orbital/sky-light.hdr","size":36617,"sha256":"a4321a8a54de034d9fd59d92fca3dfb3eb5e3bd8bcf6a724ef631f44f129227c"},{"path":"orbital/surfaces.json","size":103,"sha256":"a93f1da79181b88ac44d199b2300c762aae484def1c22a1501bac7325e5d2cb5"},{"path":"orbital_station.glb","size":1397364,"sha256":"2cb4ba64a76caa4ec430b7f4d7c82df75a5b14f5bf59e5b680716a6c2b4cc27e"},{"path":"professional.glb","size":829544,"sha256":"d1b2c29c4e4f2d3dd43798f79c1b18a1e75ab7e6061f3da5b430b99163fbe514"},{"path":"professional/accent-color.webp","size":37284,"sha256":"a801c6429a2671cd62248940f69d98ed6a72cf7f43a7c880cda3aaa820476e55"},{"path":"professional/accent-normal.webp","size":10908,"sha256":"8d92448bf3339091c5a8630156f583a059c3eef960c25d8a521a7989f7a5fc2f"},{"path":"professional/accent-rough.webp","size":6228,"sha256":"6e33be689ce65b15c3d58d02b5fb5e50ca62b65e2452c10e8be90d12b6b862fc"},{"path":"professional/concrete-color.webp","size":11844,"sha256":"b6ceb143c544a06af8251f7eb88be6d0f72e934273c28aa28b7fcc2f0c3e2140"},{"path":"professional/concrete-normal.webp","size":1974,"sha256":"ecf9c752fc23eed0c4e8a82d64a00c106b1ff8fd582523c7a357997fdbee3ad4"},{"path":"professional/concrete-rough.webp","size":634,"sha256":"b7438c51f2673cd6a47a7e8531684e491821227622a7a4e63b3d8d7afeafe831"},{"path":"professional/dark-base-0-0.webp","size":154076,"sha256":"8219ac5fb9aeab5ce729159f84f3dcf4f62d9293b7b04ce1ea883a2565016edb"},{"path":"professional/dark-base-1-0.webp","size":182038,"sha256":"04698e517a885e9fcada877fb10699732eca7585fb4e158e7a3c43ea2ad0029b"},{"path":"professional/dark-close-0-0.webp","size":592274,"sha256":"9561467ff19ab1851b1d2818883d0433d2bc21f015e495c3f21a5d961834b8ba"},{"path":"professional/dark-detail-0-0.webp","size":183862,"sha256":"adc8781a1c5ebb6349f5b8d3d582b8a3c415d9b1b30dd3f3ae0aae7cbcb9c847"},{"path":"professional/dark-detail-1-0.webp","size":230480,"sha256":"b163cf6ac3d62bfe069e79733eafe74df6d4e49003f549394c5a1fb4fa65c4bd"},{"path":"professional/light-base-0-0.webp","size":172206,"sha256":"6012cb0762c64a87c68b71feeeed3cc69b8ae85808e29f089c483d7ce2c4d1aa"},{"path":"professional/light-base-1-0.webp","size":211402,"sha256":"0fae98e39525c11817c9e0877e2b5af6f9695c4f1a7a1eb9243d3214a1414794"},{"path":"professional/light-close-0-0.webp","size":971540,"sha256":"bde4822eeb04ecada1b12dcbd808d05134b05416c17f8d86e8e7dd3c0e999c78"},{"path":"professional/light-detail-0-0.webp","size":276826,"sha256":"9bd6c9acbe2863cb09ac99fdae2f3bafff7e891ccf436513479c07e0f11f3903"},{"path":"professional/light-detail-1-0.webp","size":337680,"sha256":"c5369fac38e2e727b072fb327a44a12f071ebec7e07cfc31109aeb58b0df6a79"},{"path":"professional/plates.json","size":3523,"sha256":"55645fc6ba89cee88c032faff61df354d259b3f6fcf4f71b5da8b4807976d158"},{"path":"professional/sky-dark.hdr","size":260840,"sha256":"6e296ea4e6d465c291dce7792ad5f8ff965b8deea4c24dd0f1c0decadb892332"},{"path":"professional/sky-light.hdr","size":358440,"sha256":"e2a11d8394eaad91f00f825b4d0181f28fa155a79e47dec1476d7366c203aebc"},{"path":"professional/stone-color.webp","size":16730,"sha256":"f81236b072fe4cf4b96c669081a412e898516eee8ab23294b7ce7c940efe78d0"},{"path":"professional/stone-normal.webp","size":2722,"sha256":"1ab67e805003ba033d4e6a269b76c87362502f607f0ac041e824cf5a9b6067ab"},{"path":"professional/stone-rough.webp","size":23348,"sha256":"fa4496b0fc135e143a28b253f348ca9f2988470c3c529d6884f905886d69069d"},{"path":"professional/surfaces.json","size":1107,"sha256":"3471fa2835378140c7a06cd5494294971fe272433f84a5d03542b44e332dd0ef"},{"path":"professional/timber-color.webp","size":22372,"sha256":"1eee4b1d660d2d9816eabee0cd8e9c575319d694c5b321406776ac901c974c9c"},{"path":"professional/timber-normal.webp","size":11574,"sha256":"20ebd8fdd3c15e3b4254eba9bda71f3fd6ad6929362cdbd671631eb61d944185"},{"path":"professional/timber-rough.webp","size":34338,"sha256":"0f576127bca68bbf5c8361a441690171cba7cdc80cefc0ae62e6ecceca9b47fb"},{"path":"professional_station.glb","size":1369552,"sha256":"4144a584d3bc9dda79fa0a55f2fefe57ce559947b66b9042b642372d15d87fc3"},{"path":"robot_0.glb","size":1680480,"sha256":"6cfa63d7c0364f11d9f141c2109a5156c5ea5d11c04fa1485ab1cb63d6511bc0"},{"path":"robot_1.glb","size":1775004,"sha256":"a83f16ced3347d5f51ba152813c1ae1392cae2e38d16c8bcdd39f78cb0d9cf5b"},{"path":"robot_2.glb","size":1848120,"sha256":"33773cb9b5ac977b76363f858b5b192f19a369a4527c873dd3a2a519eb0c10cd"},{"path":"robot_3.glb","size":1752144,"sha256":"50b6453b81a9c6b876ce3e8a315bbd72b0f78bba22f2cb28cd5e33fc1373dd6f"},{"path":"robot_4.glb","size":1852464,"sha256":"4ceec3831e22f328a9b9d713e8ee48b49c1d185e7e4fd94142f3bcf6ea54b581"},{"path":"robot_5.glb","size":1936136,"sha256":"6abd6a88248a409cf404ef37ffd5aa5c023b50447b4dcc8300c0c36216ab2fe7"},{"path":"spirit_0.glb","size":1845192,"sha256":"f4fe480d5fd1806ae31e69581f25fd7224742d4a24735828edc8adb2e5ca59bd"},{"path":"spirit_1.glb","size":1800916,"sha256":"1e5979e317196c9f67ea19e2cd5d34ad5f2b8d27e652d1fff50d02285b2f392e"},{"path":"spirit_2.glb","size":1698720,"sha256":"57955ee1368047523250e6c0ff401b6eee09fff45374415b579c7cd5df0dc17a"},{"path":"spirit_3.glb","size":1741576,"sha256":"b7a1482617ad5c4f7ca2df9740aeb38378e078c024b18203ab4c67fe4b7e6a27"},{"path":"spirit_4.glb","size":1867496,"sha256":"d0b99829c233a257b75e1eb80baae62cd2b89953dfa6984f1ef590f98dcd8992"},{"path":"spirit_5.glb","size":1892012,"sha256":"3b362e66946fb35d8f981243784bdfc2e4b695756d16b12a04e8fca853f8d0b4"},{"path":"staff_0.glb","size":1809880,"sha256":"0b81edaac2eea3d5dae5247be9c7fb17af4e229d5be2847ddd78e7b535a0cfe3"},{"path":"staff_1.glb","size":1702464,"sha256":"0b854bc22adcdf4dee9d609697806ed3f7e2901c044079fe5b316a86cfc9a6e6"},{"path":"staff_2.glb","size":1822452,"sha256":"0353b2721af5b89709b36efd79d01027e9d65b307bbd4b2bbddc4bf70484b1d8"},{"path":"staff_3.glb","size":1783640,"sha256":"f14ac796604593d027699406cad7a09ac65c6c3f55fb741d9a26ee553c8324bb"},{"path":"staff_4.glb","size":1820880,"sha256":"619ae261c812f0afc7fb41090e113296522ae6081c628f5b46b9325c0114973a"},{"path":"staff_5.glb","size":1799744,"sha256":"f760d5076d9ee6101cdc3479c00dfb46a37497892bdd0e40e6ca07e02bef145b"}]}
1
+ {"id":"d4de28baa735e3e3769aa7aada1cf34c8a4fbecd0db433b8f0173e6a4df2caa7","archive":{"name":"yard-art-d4de28baa735e3e3.tar.gz","url":"https://github.com/oddessentials/agent-guild/releases/download/v1.32.0/yard-art-d4de28baa735e3e3.tar.gz","size":267581581,"sha256":"780531c5d381941f5029d7b6e287e7e514b020ff17098b39481170e3a415b825"},"files":[{"path":"bot_0.glb","size":1054684,"sha256":"729bbdbddaae57c4340ba18ac9a7fd2e424d1ed1df8fbf8715e47490520ccc01"},{"path":"bot_1.glb","size":1041680,"sha256":"5bb627aef4c442f31141d085c83723e747a854c25e9cc667ff71dc0cf7182e62"},{"path":"bot_2.glb","size":1019484,"sha256":"79a18838d8a58edb43ce63cc7eb49c520f62cdad98c5ec12e136598508c6959b"},{"path":"bot_3.glb","size":1031960,"sha256":"0c24de7ce775902c257f385de0ff7efe45972d4c15f4ca8062b7cec8680a52f2"},{"path":"drone_0.glb","size":994620,"sha256":"7aef4bcaaf581e26ad439c13cfea7a40e39fc011e5a2ddaf80467ccd8e8b74aa"},{"path":"drone_1.glb","size":1010348,"sha256":"e7130cdcb0fc2a14781a067824068d4d0507dbe6d6587da46615a462608f0486"},{"path":"drone_2.glb","size":991048,"sha256":"3fdac4af5b367840266622db3c7deacae09a4af9d94df7ade75a4e98e2e1331f"},{"path":"drone_3.glb","size":1026312,"sha256":"df20f7543f9c97aa0e97ff4b8572375bcd435ffb8e46ec612ba9a26e4eef7cd6"},{"path":"familiar_0.glb","size":1079828,"sha256":"b204def3546f4e33772b829077241cfdd929f7b15ac56a4c3dbdcb9401f2ddeb"},{"path":"familiar_1.glb","size":1031732,"sha256":"1130f0e54bf55999ab6d41ac5579bac876ca8cf8aa020d3b8d010013533d588c"},{"path":"familiar_2.glb","size":1025408,"sha256":"3983d3883f6cbc8f7d614a88d21467e577dc6b17eba635f8bb2d178b99d692f1"},{"path":"familiar_3.glb","size":946824,"sha256":"5a7c3fa34245dccf558801608d8823d891b97ac885cad95057ba9c9ca604a9fd"},{"path":"gnome_0.glb","size":1826848,"sha256":"1c2e238ee8155f00fae5447e6ab99959e782a92f6be60b37ce6628b8b2260a4d"},{"path":"gnome_1.glb","size":1897852,"sha256":"e37ce53939baeea6396071937cb20cde424c73a06d716f3a37736d98e3852f72"},{"path":"gnome_2.glb","size":1782172,"sha256":"3fd39c6acf173bf628f4f47b85675dad59d009165b5ed28cc205e2f8a2a99c77"},{"path":"gnome_3.glb","size":1810436,"sha256":"75a073597dc1a7055d8626c482069f79e8c0c6f55fe3925b4d764905b7355260"},{"path":"gnome_4.glb","size":1724916,"sha256":"cfc5123a79ffe7a9b2a6de786442e950b76b67fd009e594e68b93ca04e5e0864"},{"path":"gnome_5.glb","size":1864276,"sha256":"a2af15c1ea4e6d3114acd1d79480ab165931c378cfc3f378097c636600824a8d"},{"path":"gnome_familiar_0.glb","size":1071816,"sha256":"c7365cb43735065fe4b99fb70f3c696a9512881890b0b9664bd79891ee7c30aa"},{"path":"gnome_familiar_1.glb","size":1049636,"sha256":"a70fe22130a171698165ba466ec7f685b9fad3286d6bcc367b0c100eb28b2ce3"},{"path":"gnome_familiar_2.glb","size":1035060,"sha256":"c512adfeed43afa58ff8980a94b37ca88060a52b7a49c0b91385ecd9db00bd23"},{"path":"gnome_familiar_3.glb","size":986504,"sha256":"aebe18c705c96be9a8fab0e0cad3f2039eb4d00add78543341ef9c956bd3b2a5"},{"path":"gnome_helper_0.glb","size":1073548,"sha256":"6d8d111a4a90e72b69a9449416ca87bcdfff79a13dd7f39b9faed8fc4fe50d19"},{"path":"gnome_helper_1.glb","size":1039180,"sha256":"6687203c0a5bd8c9057c481e0b91b3b1cb8010e712f61946e73c0573d84cb95f"},{"path":"gnome_helper_2.glb","size":1010528,"sha256":"459c1ff0a41c5db913be8930b5c3931e91a95970d472eda23aeba959290dd8d6"},{"path":"gnome_helper_3.glb","size":1028760,"sha256":"6dcf230b6ae9fb05e1cb3fb8473fb7e7608ae29cbd7b45410afea954169df375"},{"path":"gnomeland.glb","size":9470388,"sha256":"559d3854abb2c29ca569612b24423f8e5e965ed1ec11bf755afc65a214324d86"},{"path":"gnomeland/dark-base-0-0.webp","size":345486,"sha256":"0ad99acff62d65e57945530e7e0169991ba086dc177a7fa7b1db22aee15817d3"},{"path":"gnomeland/dark-base-1-0.webp","size":310710,"sha256":"73972f3fee4e647816517536abde9a720eaebe7b84b711d6fcb488364304abc9"},{"path":"gnomeland/dark-close-0-0.webp","size":1007594,"sha256":"636c58b29ebc02316331516a4f97bb3e009a3a883a567486bd079a229c95d222"},{"path":"gnomeland/dark-detail-0-0.webp","size":492798,"sha256":"55dd4db8908827ae9acd1a58258a1848a68eff412e1786256067c47edb85d7c3"},{"path":"gnomeland/dark-detail-1-0.webp","size":491968,"sha256":"9361918c276650eed451f62d8def12d9797b62b612e90b18be695c5588d63e59"},{"path":"gnomeland/light-base-0-0.webp","size":634540,"sha256":"8c6ebd61796125bdc12365338bc01b710132b47f59cbc36c31550e05e49186f4"},{"path":"gnomeland/light-base-1-0.webp","size":668326,"sha256":"88b5989472db90b2608ff75dd30248cefede57c153684f77f8fd700a612f9e75"},{"path":"gnomeland/light-close-0-0.webp","size":1537456,"sha256":"cbdfabadcdb9e4291151a0c2ee2dd063072fba79015e688a0a0192ac77eb16c5"},{"path":"gnomeland/light-detail-0-0.webp","size":1051072,"sha256":"ff217301527ae52236d12064494c32119b6a27c39d71dcc17a5df70e12bbdd38"},{"path":"gnomeland/light-detail-1-0.webp","size":1048932,"sha256":"2a1f6c28eeba9e8054a35ec1f8bbfc04fec7c175807aade43cfcf2f8900c47ad"},{"path":"gnomeland/plates.json","size":3493,"sha256":"a1e08160a0a122eafe46be4b3cbe69d083a723a62f7d1897f572568ed5e85171"},{"path":"gnomeland/sky-dark.hdr","size":330527,"sha256":"af5caa5a1a5d32ddd4daff6216f50860888f9328fd35a5e21d8d4c1d1a5f3148"},{"path":"gnomeland/sky-light.hdr","size":221480,"sha256":"5831990536832e0885a028c7f58ca421246c50b6ef7e0b2044ab5c8ab9bc25de"},{"path":"gnomeland/surfaces.json","size":107,"sha256":"83ba96a47bcd2d6582a4b6db3b4cdf70dcf880dd7e39a736272f49ea4d913ec9"},{"path":"gnomeland_station.glb","size":1418748,"sha256":"0e8abdf629af40de6cd600da87b8add45076e5e69bcc8995e8994deceb335aaa"},{"path":"goblin_0.glb","size":1811968,"sha256":"f788a9f5c96563e49429667747fbe2db4d873f51cb0cd8ef7ef8bb716ebedbf0"},{"path":"goblin_1.glb","size":1885672,"sha256":"dd10664e0a5910fb748f16eb379fe542f4d5747a05371399e6e266ec8dadc593"},{"path":"goblin_2.glb","size":1883624,"sha256":"ff9754cb6174a8d459b64dc3c0fda90a13749eeb88e58e3d15015d6c49b67151"},{"path":"goblin_3.glb","size":1910988,"sha256":"8f225f716333973f9f41a5d3602064de078ae9893af2dc1fe4d8787a7264ccae"},{"path":"goblin_4.glb","size":1830464,"sha256":"18a5d6cbf948f782ca0da5c6cb6650389f2bc39bf71bfa0a83fc4f3a73ae2f89"},{"path":"goblin_5.glb","size":1879540,"sha256":"90cacb62d20167ebbb3253bc1dc844b3f590225ea3a893be6d89c63adf83c51d"},{"path":"goblin_familiar_0.glb","size":1068020,"sha256":"c921ebda8dfc91445ec7a8067dc26f08822229c0fe076a31de904cfc196227f9"},{"path":"goblin_familiar_1.glb","size":1171748,"sha256":"5a711577d180228a1eb19c6128d845cc3c693369a19ed71c5e524c365c464c41"},{"path":"goblin_familiar_2.glb","size":1200232,"sha256":"66976f37a2b9f1f9bd2fce5d35f1ce80592b6e866f092b04fb562aec452c0d1b"},{"path":"goblin_familiar_3.glb","size":1036344,"sha256":"4ef274231372a83126742de74f47f8eb20da01f1294c3da51da483bfd64ad54d"},{"path":"goblin_helper_0.glb","size":1082468,"sha256":"a77ce0d324f5a49ee59668bd57c01835c8c4384e056ab144c01e607443aed51e"},{"path":"goblin_helper_1.glb","size":1174900,"sha256":"8974410da9fd22f36f09c0b4377fdde0f9615a7d6a80d44ae28bcde38a59d113"},{"path":"goblin_helper_2.glb","size":1137304,"sha256":"d2a088034bc5abf5a5951be1ab233542244aca0e656bc100bdbf3b25a21f74c5"},{"path":"goblin_helper_3.glb","size":1057172,"sha256":"022db26563511b3f781781806e9b23766f8c4a687ee9c43e600d481865c801f6"},{"path":"goblinville.glb","size":9759864,"sha256":"7e8061fce7c4656dd534206ef150088899f6526fc35199c60345031e875d064a"},{"path":"goblinville/dark-base-0-0.webp","size":168078,"sha256":"96113450d16c2ecb25164c0c1e7a7f29fc3f31fee33df9024e215db65521b82c"},{"path":"goblinville/dark-base-1-0.webp","size":207904,"sha256":"d158d8d52b7cec1502ff1ee9f65d07d5abaa4541de79b0131c25f29b344a614b"},{"path":"goblinville/dark-close-0-0.webp","size":321322,"sha256":"8af81d059f812ae52cf775b5a04110f94501ce38526e98d6f4057ea98d4f3024"},{"path":"goblinville/dark-detail-0-0.webp","size":238982,"sha256":"aa66b593179b4d55e6e98ae571b428f0cda4204b552f41b242565eca8aae1cec"},{"path":"goblinville/dark-detail-1-0.webp","size":283578,"sha256":"da5a76886fce6356d63aa913bd7aba69b7135295d82068f94189c7ea2bd78b8d"},{"path":"goblinville/light-base-0-0.webp","size":324142,"sha256":"894552aee3db8df320949ab2bab2497bba516cd14bcaaa89296b06961df102d7"},{"path":"goblinville/light-base-1-0.webp","size":306418,"sha256":"0906470f40fd57e3720f7478d11efc7908d22c7ac8101a0740441183333e78af"},{"path":"goblinville/light-close-0-0.webp","size":576852,"sha256":"c8a40b749a3e69fb914fb2ec7c83e25e124012bd8f6d691183213c2687029407"},{"path":"goblinville/light-detail-0-0.webp","size":394678,"sha256":"c370e894685beb2460a9ce4c17e28552cfae32cfc82ebd057ca5dc7a8051656c"},{"path":"goblinville/light-detail-1-0.webp","size":410482,"sha256":"6d5dd82157838e931e9529c428863bba12ce1fc7720e353c8512d9daa7de97db"},{"path":"goblinville/plates.json","size":3513,"sha256":"7bcd1ed4a5f8b828b300b040f9981f9353a15d78b1dda73809818e6b4f94f6a7"},{"path":"goblinville/sky-dark.hdr","size":319820,"sha256":"f5932da6c6ea962d3a75797912f9ebef2f846703ef64ed27960faaeece977158"},{"path":"goblinville/sky-light.hdr","size":350167,"sha256":"888fe1251a9960bf68ba573a042f28904c11fca04a6531600d72afb1cbb7d938"},{"path":"goblinville/surfaces.json","size":111,"sha256":"2aaa50d0ad07eae3519c3102381607d36a35b6d5363209c031259cddead4b3ba"},{"path":"goblinville_station.glb","size":1504676,"sha256":"7662a2aa5bcf922398d48c16e3eaef2c37a6560bdf16300bf6339090ce7440a6"},{"path":"grove.glb","size":10174964,"sha256":"e44689e73200244e1fe7b15e7bd2fafb0745ccea1cfe06f3a424174610b2f287"},{"path":"grove/dark-base-0-0.webp","size":196260,"sha256":"adf42e1ccd46ca8ae5fb680d11291eb7aa46fe06eee114dae7f6dd3390fb15e6"},{"path":"grove/dark-base-1-0.webp","size":207762,"sha256":"32fe8c94efbb16418fde7f5e86c08b224eada83f47decf2911ace889c387606d"},{"path":"grove/dark-close-0-0.webp","size":891668,"sha256":"56ef1c1833c6bebd5dcdf74ff497c3fb91cdc3a4c9c03a9219b5d2e9fc7a4b26"},{"path":"grove/dark-detail-0-0.webp","size":327516,"sha256":"03b9dfee7200c64e6041dd50fc92204b82597f2a80d30c50aea007ec6f4fcef8"},{"path":"grove/dark-detail-1-0.webp","size":378138,"sha256":"af17bcef3d4492917e678c76ae3112d39ea625ea1044e184bcbfd67cd3ec520a"},{"path":"grove/light-base-0-0.webp","size":878012,"sha256":"f9b7294a351d738909a8516474fb9fdb9f251c0023c460badb74c054ee4cb6bd"},{"path":"grove/light-base-1-0.webp","size":859660,"sha256":"6a0366718fa9caad095a3f7bf8cd2edb87a14dc5e6e20bddffd201714f264e62"},{"path":"grove/light-close-0-0.webp","size":1992158,"sha256":"5428eee71ca50f31b0865add5ff4239d2f2d45cb3b1c397bc6d1ff31bcb264fc"},{"path":"grove/light-detail-0-0.webp","size":1214830,"sha256":"48986f352282981d3d413005399ddb90707e7102916bdcbc0e66c02bec4244e9"},{"path":"grove/light-detail-1-0.webp","size":1230512,"sha256":"8698f0a8b33c65aa840b39fe221c694c2b567cfe79e903fee369043f98cb21d3"},{"path":"grove/plates.json","size":3453,"sha256":"4f87e4f7ce1d7518c71936dddfc22b49c4eb33ab455d0c9bee9f7b81a4f367fe"},{"path":"grove/sky-dark.hdr","size":321274,"sha256":"da271e6d921c7762feffe2c058e4bae84a3cd437800368ccf213ac376af3d392"},{"path":"grove/sky-light.hdr","size":304809,"sha256":"8a3f24a34e98e69ab340875fbcf6933c68e2043834ebde296ea9d555047a0955"},{"path":"grove/surfaces.json","size":99,"sha256":"85c078c742b347f8b06ce79ee1be0c7bb9b616030c2649d7ba6755a3baa86d47"},{"path":"grove_station.glb","size":1499764,"sha256":"bd1b868b6241f44ebfda5d81606a069b0bd36eaa622e4658e452256d3f99dccd"},{"path":"guild.glb","size":3417508,"sha256":"159b1aaeeb40bad42804427b33703d9b2cca5a446b7c9534fdc8de0997d6b800"},{"path":"guild/dark-base-0-0.webp","size":265912,"sha256":"8aded6714c563387d303f8e028765f3e5f44a585f5dd892b1df22934921df0d8"},{"path":"guild/dark-base-1-0.webp","size":285108,"sha256":"4d0db0358b7f6df5304eadf0daf961c95b54713a47904f33c47ec01afe11b4a1"},{"path":"guild/dark-close-0-0.webp","size":1503898,"sha256":"057566db9da66b2b95d89f8f7364ad08659a33d78cb9e5d71ae28de56d072603"},{"path":"guild/dark-detail-0-0.webp","size":626076,"sha256":"dd7f96d17d8415b1a548e68ec6b53ffd7e295dadd9924bfc3971d93f909527ae"},{"path":"guild/dark-detail-1-0.webp","size":708038,"sha256":"ccb37d3293469455f0000fdc742c47348f58664b84f51a2671b12ba5f0aaf2f7"},{"path":"guild/light-base-0-0.webp","size":517700,"sha256":"604f0eed7af954ef95cc8fe93faa445a830581f1c3c7cdbdc9bcc99eee79f254"},{"path":"guild/light-base-1-0.webp","size":547120,"sha256":"f4b785fea8d405179dcd658c54e95a31c0177d0082306a44cf21ae7fbc3df655"},{"path":"guild/light-close-0-0.webp","size":1815358,"sha256":"ef7562efc3698a89a900e454bbde92095168c4a2c84e750676ecbbacdceeb2fd"},{"path":"guild/light-detail-0-0.webp","size":1015808,"sha256":"442e99a2ca6307fd0494b765b90d973f0c0847e75a6bb7604d28577e06d5e332"},{"path":"guild/light-detail-1-0.webp","size":1123916,"sha256":"3f14f56f3b0e435c9487c0536d7f152bc76c49ca7a67b76cf5fdf32b9c1d9774"},{"path":"guild/plates.json","size":3453,"sha256":"b50c1424647ad6975754b96692e1fb2bf9133d6496e1ac737f916ab4e4cfb30f"},{"path":"guild/plinth-color.webp","size":72162,"sha256":"a5cb255a14bc46e780606866240c42fcd904a571f2ef2739deb3204ce43b9e1f"},{"path":"guild/plinth-normal.webp","size":85470,"sha256":"a6fac3c211400705b113576a40bc6197b5aeee042037ddc0444ab4164d14ea5b"},{"path":"guild/plinth-rough.webp","size":75364,"sha256":"765e0de8ab44d418c3061ded9e1fbd9e15503dbb5c2c58fe861fe583eadc9674"},{"path":"guild/roof-color.webp","size":28882,"sha256":"db57943f7f752aa9f67d2e0843d43c32ebb269ae63eb770f72ded2e704487db4"},{"path":"guild/roof-normal.webp","size":26666,"sha256":"43da1c68178d25122f8b4cbc4b23b36d162fe9f7059fb24aab4f21fce92ae237"},{"path":"guild/roof-rough.webp","size":33508,"sha256":"2b4704b413185a47b5ee78160bb224205133bd1171c6ed32ba1ebac5890dac4c"},{"path":"guild/sky-dark.hdr","size":298044,"sha256":"380164494f75f21dc63d4b2e4f6f7ec1b7137fadfcad2cd9b2f1cbede29db67b"},{"path":"guild/sky-light.hdr","size":376311,"sha256":"5216d9cb752d2e7a4662d6ed3568b47c125b88fb280d7965941787163c041603"},{"path":"guild/surfaces.json","size":1024,"sha256":"b34ea34a2620667741f22452d3e381ef527461da560f07bb5719ac132fd0a359"},{"path":"guild/wall-color.webp","size":64450,"sha256":"f65534647c88433beba6cef7c7ccd626570a91915617e5767b5b30dff6d38361"},{"path":"guild/wall-normal.webp","size":74168,"sha256":"ab8c656c40c8886d2068979a199b0ddb496dee66575ff8aea5ced77bd60a23ec"},{"path":"guild/wall-rough.webp","size":50556,"sha256":"79c1c64b04e0f7837b6a57602363121198338726400f8ff145d9cef0202c842d"},{"path":"guild/wood-color.webp","size":22372,"sha256":"1eee4b1d660d2d9816eabee0cd8e9c575319d694c5b321406776ac901c974c9c"},{"path":"guild/wood-normal.webp","size":11574,"sha256":"20ebd8fdd3c15e3b4254eba9bda71f3fd6ad6929362cdbd671631eb61d944185"},{"path":"guild/wood-rough.webp","size":34338,"sha256":"0f576127bca68bbf5c8361a441690171cba7cdc80cefc0ae62e6ecceca9b47fb"},{"path":"guild_station.glb","size":1630028,"sha256":"8c989fed1ce6fabf829b074025a78a38b82d09327c184239c7c7ff08b339ce63"},{"path":"hero_0.glb","size":1659780,"sha256":"7c87ae79129a98b66bbda430a645f22cd937520247a3b7acf7261ee8b95d12be"},{"path":"hero_1.glb","size":1757224,"sha256":"bb2d15696c0d21ed0c32ef12916baf5c3edf9f60eca14a391c858b4d6de1f1d6"},{"path":"hero_2.glb","size":1800648,"sha256":"4f392b19fe92b6d5415abb216d1a871274012982471ec38fb8dc20a16a83eee1"},{"path":"hero_3.glb","size":1732064,"sha256":"4505760bc907e8d01e992b49beb3ceb2d4f3c8b577233da99764fcbfc76d2f53"},{"path":"hero_4.glb","size":1614896,"sha256":"c1d27ad1b33a86acfdde68da07e1bc1e56ff666a721a17dbb9c874794e27bd52"},{"path":"hero_5.glb","size":1773400,"sha256":"832f8c249d9db3f10dc6cd22f5763f5e89af0f3fbe3d33b7aca6b8c9bab77ef2"},{"path":"manifest.json","size":151,"sha256":"37ae0296483da1b0059830f3e6b67eceac659ed098897116b28ef86747005e32"},{"path":"maps/bot_0-0.webp","size":256832,"sha256":"627c666291ad0c0312e103ae5875789657280300b8fbc80674fd7e3a475dc1e4"},{"path":"maps/bot_0-1.webp","size":137968,"sha256":"a1046d00cc4094b76c641f28d86e5ccf13f9a8851ec81039a21282a666dfdd70"},{"path":"maps/bot_0-2.webp","size":105500,"sha256":"b20414a8950c91c38fb7ba607ec22c8da1672f8fff051c2b7e7f9360998edec2"},{"path":"maps/bot_1-0.webp","size":246698,"sha256":"137f638f1dfe6458e54cfa512ea86f3becaf2fca363a4731ec66565dc48fb901"},{"path":"maps/bot_1-1.webp","size":123714,"sha256":"4b41628b3ca586ae4687c5638999837bed4ed3a5f62a479cbf7f6147c29b5477"},{"path":"maps/bot_1-2.webp","size":140928,"sha256":"b3468d00a2659bdbd57e67b84b67c705c80c3309360e984e54eee7eacc744571"},{"path":"maps/bot_2-0.webp","size":211860,"sha256":"baefc888c266a23eca981097774339e246a604c5c61ef90b26785d4928d67bf9"},{"path":"maps/bot_2-1.webp","size":159212,"sha256":"84f6babbdd3e1d482dba79968837a777dbae379df270f843124eb7d03ddf90d6"},{"path":"maps/bot_2-2.webp","size":149744,"sha256":"9bcd971e3489bb44c01eaf30efe6ba33307b512c877c3ce5903c163d018412d3"},{"path":"maps/bot_3-0.webp","size":313040,"sha256":"353be26a82209678a6251e8b389c0a982abd46ee9140639714a1533720d11b55"},{"path":"maps/bot_3-1.webp","size":200080,"sha256":"e2a642876ea5f56b0b05e723999e5fc0cdb465e06e2248c8e7c6192ba8dbff6a"},{"path":"maps/bot_3-2.webp","size":137570,"sha256":"3b6010b25f499b029eb5cfc342bbfcec431167ee256e8f89da89963bc1721dc7"},{"path":"maps/drone_0-0.webp","size":203872,"sha256":"7ea7005c7ac5cf34d0c52751f131ccc40f7ce7b07694de9a79d85f71ef9eff81"},{"path":"maps/drone_0-1.webp","size":155808,"sha256":"9975db136e318fdad918bfaf1c785d34f7694eb1405c68002ca827fa0f19c980"},{"path":"maps/drone_0-2.webp","size":147056,"sha256":"fe526c49022424229846125cb1904104aee352d6788ecfe5ec990fea3f660a2c"},{"path":"maps/drone_1-0.webp","size":225744,"sha256":"d4080cc239cdfdf466865c84d683e986ecc6ef95e41f0ead908a631b87d33827"},{"path":"maps/drone_1-1.webp","size":185766,"sha256":"368d52747c8ecbf38636707a89a7a68bbf866cdd41016cd5bd7b56b5ca831aaa"},{"path":"maps/drone_1-2.webp","size":84512,"sha256":"5a9697c033c5217bfe72f0b5e1462ed2e905beaab2d9b046c931d3f896977c18"},{"path":"maps/drone_2-0.webp","size":208140,"sha256":"357468d44c024af94f7fa518b26f32fc03ff4ff2c4ec7cb2caabd92cd1920aa2"},{"path":"maps/drone_2-1.webp","size":111184,"sha256":"1194b1da84f50bf27d151b4b70ce7dded1a33e93a0aaaf623b47e2c85575c19f"},{"path":"maps/drone_2-2.webp","size":83886,"sha256":"5ace31927d4f6b2492f3111510e491cbfeba8fa2f322abadba4f156378acfea4"},{"path":"maps/drone_3-0.webp","size":258914,"sha256":"c69f6c05b093e1f587f1660a07891295d2467ee8fc84d429b9fff7f45a171fbb"},{"path":"maps/drone_3-1.webp","size":150152,"sha256":"28676d142eeeae7949f9e5b3cd36f87544a56600a5a7232394c6de1832a36a6f"},{"path":"maps/drone_3-2.webp","size":177032,"sha256":"7604a2e7ceab773b4b6d84ee5a01ff29fade6031d5a567a610c986af6afa03d7"},{"path":"maps/familiar_0-0.webp","size":345454,"sha256":"a76d7a52ddff4d8ffde5001c08fd7375864516b487a4ce3f47debe5022d57bba"},{"path":"maps/familiar_0-1.webp","size":157990,"sha256":"28bba9d228ea7ecd251a5efa38337a4ad1eafbcbec7d64527f484a4a1196378e"},{"path":"maps/familiar_0-2.webp","size":280852,"sha256":"93de83b008efe6dae06d184c38bca81572ecce0cf3e2a051bd2c2945d4f0c93b"},{"path":"maps/familiar_1-0.webp","size":316616,"sha256":"dc6c2b7e02827fa9c1632bc60374d4c89556f691261d83aab8240588ac4612c3"},{"path":"maps/familiar_1-1.webp","size":227634,"sha256":"27779a0d094764c81b1297b4527a7495d1c79c4559f68fa36715056c811f8a12"},{"path":"maps/familiar_1-2.webp","size":215286,"sha256":"52067c606520c19a355a7b27c1d3583a1d0b46b98dbc12798b32d1b2095e2110"},{"path":"maps/familiar_2-0.webp","size":233604,"sha256":"4126ceb38e7f3e08e20892094cbcf9419fb9f0f4e68b728d421c3c15a4fed8f2"},{"path":"maps/familiar_2-1.webp","size":139016,"sha256":"5280d0ed09887a4af8bf80c62c7625be53e6f65de60a09382febaec37057443e"},{"path":"maps/familiar_2-2.webp","size":167914,"sha256":"136be2762f38511a01c7aabb9c38f42bc45c7bf54a80d41f308755a107027b92"},{"path":"maps/familiar_3-0.webp","size":116098,"sha256":"3f082749936498b12e73738798e9e2b85ebb4f93a364f6658d7e932e80872560"},{"path":"maps/familiar_3-1.webp","size":83320,"sha256":"d68bb722d70d23592c17f51025e7678e3d9b415fa4506a27abec81c2567ca386"},{"path":"maps/familiar_3-2.webp","size":73518,"sha256":"d27bcf1e5de372d869a4bb88ed118ebc8d77ebbaf8ec08f3fdc9c8608ae1df43"},{"path":"maps/gnome_0-0.webp","size":722878,"sha256":"15c54b6e9312e080ec2bbe05c275cd58b2a8e3fadf6337be6127bf2776acbbe7"},{"path":"maps/gnome_0-1.webp","size":346586,"sha256":"d52b1f57e3e298ef20717260ac804b783d69e9268f4ea2c5bbf848d2a7f98d0c"},{"path":"maps/gnome_0-2.webp","size":465266,"sha256":"ffb0f448ab34bc99d7e8378d60cbad66b9bc500704554e5ee4693f64ae8ba5f0"},{"path":"maps/gnome_1-0.webp","size":970876,"sha256":"a4ab6a4d91f0bc81b9ceb9b4275c6841e7ca06712eea6d806ef3aa707bc50f96"},{"path":"maps/gnome_1-1.webp","size":556222,"sha256":"0f328d62c0332a7e813791ea007ad88a319ffa0d080b577de9367f13f569222c"},{"path":"maps/gnome_1-2.webp","size":359544,"sha256":"97efbb90360746e6a3ae8f290fec2ae8b4d650c3951a49add9d609da3b895be2"},{"path":"maps/gnome_2-0.webp","size":670978,"sha256":"b121518b5e1ac8f2a1fb489af8badea695fb4172e85502a0e567710dd4adf561"},{"path":"maps/gnome_2-1.webp","size":382802,"sha256":"30263263da0af476b19e51ecd076f8eff156bbb63bcce93152a6b8b65f7f8587"},{"path":"maps/gnome_2-2.webp","size":518984,"sha256":"cf11d06eaab6c41566cea78c955615a1a34ba1fc889ff6dc7b97118f24b8808f"},{"path":"maps/gnome_3-0.webp","size":863046,"sha256":"8a664293befc1e36bce2f45aac4a9351bbebb708ac91062b4622112c6a8483d7"},{"path":"maps/gnome_3-1.webp","size":459080,"sha256":"382ba9d080eca5304848547b645fa1bf6a28adb538eff3058c9051660383a1f4"},{"path":"maps/gnome_3-2.webp","size":514990,"sha256":"98ee4b656f585ff38fa25bb1334a20864b43cd3cc5e76c14c26741377f36a4b6"},{"path":"maps/gnome_4-0.webp","size":730298,"sha256":"e084e9f22d37ef50f1a4704c739e7189f80d20a9f05715057a64d0c6d3a688b0"},{"path":"maps/gnome_4-1.webp","size":379670,"sha256":"f585229a5abcbdf6dffe7b8a144cc4d6346b77a3b2f507190e5812acf038ae08"},{"path":"maps/gnome_4-2.webp","size":259356,"sha256":"70699b16b46ea02f672cbc7fcfa86b89fba8fb762c9282fde34d1b1ab08ba4fd"},{"path":"maps/gnome_5-0.webp","size":760690,"sha256":"9cdffef1a173c13c8a454836a39ccb52bae46d0648254399f2d1432e37d66d60"},{"path":"maps/gnome_5-1.webp","size":432068,"sha256":"50d7f341d6adb9e09f4736d2c0026e2bfa5077bdc5d153a02e1b92f0caa313ca"},{"path":"maps/gnome_5-2.webp","size":496274,"sha256":"3a27846fc0a45a42c510ece9038b679ae054ac20689afa4fbf7b34f3b51b8253"},{"path":"maps/gnome_familiar_0-0.webp","size":361090,"sha256":"7cc42038975081cc969348981ba3e1bc528cc57ada128f596f59f17d9c7f9b62"},{"path":"maps/gnome_familiar_0-1.webp","size":180766,"sha256":"3c2243ffa6813b62cbf2db54972ad09c369f9ba1290f7f91d4ca4272da9bcfb2"},{"path":"maps/gnome_familiar_0-2.webp","size":210130,"sha256":"e5f43fe993b3c2302548aeff806b540e969b7bb3c74bdb2d0ced100de8ab1743"},{"path":"maps/gnome_familiar_1-0.webp","size":268378,"sha256":"7bc64fbe7ac3b4002c0aec60cfb9457a0423081a6f75c9d570330e78749fbbc4"},{"path":"maps/gnome_familiar_1-1.webp","size":137894,"sha256":"c440cb163303b7be2134d72ce695cfc306155f09465c6912a5dc8da383ce4bfa"},{"path":"maps/gnome_familiar_1-2.webp","size":110054,"sha256":"f4cd223db8df98c1e141e6402e97918a56c1bf1de354cccb3587736c74989e82"},{"path":"maps/gnome_familiar_2-0.webp","size":252204,"sha256":"9f2b66959a996a0cca7e8f03e130c07ec6897ca8e3371fa2c59a2e710c499720"},{"path":"maps/gnome_familiar_2-1.webp","size":130800,"sha256":"07b9805a27336c1ef1ca7c13c90b193c51737112509a90d5f37dfd79d4d3b29e"},{"path":"maps/gnome_familiar_2-2.webp","size":179304,"sha256":"da477d6457ca8c9299edce9d07a1dbfac9372a2538e1566e11b460009e61b6e7"},{"path":"maps/gnome_familiar_3-0.webp","size":203290,"sha256":"7d77fe24cab2e849635e1986deddcaf54917cf83fcdb7c966639d33c29b845c9"},{"path":"maps/gnome_familiar_3-1.webp","size":133990,"sha256":"4e0e230329d8faf4119c37ee4c8340a14ecc9a864f299142502323804f82210f"},{"path":"maps/gnome_familiar_3-2.webp","size":130600,"sha256":"c1057c6814edafa56246a380a174375128301c2dff590bbf8f530dece8c56fb9"},{"path":"maps/gnome_helper_0-0.webp","size":337680,"sha256":"c81321002a9462a7cc0d1e19be1d9567c7881dbabf29a14575ddf5c20b905ba6"},{"path":"maps/gnome_helper_0-1.webp","size":323756,"sha256":"095cfa0fdcb3bb364b3cd278643b002d1757ba48ed2b8952ac7fbed27c6086c0"},{"path":"maps/gnome_helper_0-2.webp","size":227870,"sha256":"8558dbb04fa0cdc87cc4b1620d684508f3575c12f0dc8df25be906054496e7fc"},{"path":"maps/gnome_helper_1-0.webp","size":282378,"sha256":"6d855d8ea12053f85b2557d453591d15db88410b44e3119cfdd309fccb3cfaf4"},{"path":"maps/gnome_helper_1-1.webp","size":217248,"sha256":"8666ba7480b39017b44570e89ccc036823933dc7768d3a1d49ed0025d9ac35de"},{"path":"maps/gnome_helper_1-2.webp","size":141088,"sha256":"2b1cd4be96befb6cb8341d19fba9dbb237cd352dab5453623e1bc1ceff1e2429"},{"path":"maps/gnome_helper_2-0.webp","size":248936,"sha256":"a2de02831a99e0c613013c5ae9f0a3cd884dbaabf2591a7149a1151da3b2d918"},{"path":"maps/gnome_helper_2-1.webp","size":201136,"sha256":"6fa68f96cc087508690fc61a9f451438f3f33d1e58298b6ed4af0dc2261d9272"},{"path":"maps/gnome_helper_2-2.webp","size":141252,"sha256":"e9d4d284c5079acd95a0d0c57925c2df82f5f91c50c3ed4ea05614fffad8b630"},{"path":"maps/gnome_helper_3-0.webp","size":276560,"sha256":"60dd66d2f5c6a243522cf1ca59ae4c44678108a17645e2cc14e944b41573f9e9"},{"path":"maps/gnome_helper_3-1.webp","size":181566,"sha256":"02dea14b2b2a7da19dbc2860f46d2d50d675514e3dbe4781eb1e533d2dd0ab0a"},{"path":"maps/gnome_helper_3-2.webp","size":162766,"sha256":"32a2150f44818b8118f456b0f5bfafa7bedc1e74c8fbe29ad2152937acf8eb96"},{"path":"maps/gnomeland-0.webp","size":12022,"sha256":"896f72b334cbcf06818b1677687b2992f4a3704267e2cb160d92657ac83a7a08"},{"path":"maps/gnomeland-1.webp","size":1121450,"sha256":"42acb0237668ed4c869652b6659ca558dcf795448e134073ea61999b3b27711d"},{"path":"maps/gnomeland-10.webp","size":686630,"sha256":"e9f7633aa8e8f41da1372f1c98119d8a2f972ae5c79258eca45e200d4ef29390"},{"path":"maps/gnomeland-11.webp","size":495492,"sha256":"178ebe2624bb6413598f939dd4fe4f7fb1c719f7cd04f07b42ab07690800e45f"},{"path":"maps/gnomeland-12.webp","size":7518,"sha256":"6edd7d51c4f880bbd98b86c6a2b57f012f94b4023bd56d29b382f9348879751d"},{"path":"maps/gnomeland-13.webp","size":1240154,"sha256":"83ab9971cf58b741ee31dd6a517ec8a12d9e106761bd22baf84ab404358a55b6"},{"path":"maps/gnomeland-14.webp","size":566922,"sha256":"759e2782018de23463c49703a86b3eaba63debad01a64005516604852c14b4a3"},{"path":"maps/gnomeland-15.webp","size":511902,"sha256":"5c24993a1f89c634ddf2a6cb05bee2c38714c56cbea881c68fe734e1448d57a2"},{"path":"maps/gnomeland-16.webp","size":9370,"sha256":"af07984b668a2c725146664a718971905a282453fb7f7f1d59fcbbfebe54af37"},{"path":"maps/gnomeland-17.webp","size":897128,"sha256":"7e625087fe4df05768ecf0930e5acb0e1542d5d4e300a01dfecb5af8ce2b5f59"},{"path":"maps/gnomeland-18.webp","size":679710,"sha256":"cdd68affeb547dd3aa53c8e9e3c602ead6e5c3d96c4c23d6120df8b58ed235f7"},{"path":"maps/gnomeland-19.webp","size":600142,"sha256":"da618c0eeae78a0a42dabbbea1c334c927a1f06a26d758356161d00c15a44d64"},{"path":"maps/gnomeland-2.webp","size":678636,"sha256":"60c77421bd8102ae3d14c7f0a49cb140c946c555daee36c0bc22e6dc2d53804c"},{"path":"maps/gnomeland-20.webp","size":20930,"sha256":"a8c333f84e077afd40b7eda8c1d148554f55a8573d15e38e29355d5a444d1964"},{"path":"maps/gnomeland-21.webp","size":969112,"sha256":"58da635dafecef0dca2e23b2bf49b0c83744e32ad7455e55d742cf32fd690692"},{"path":"maps/gnomeland-22.webp","size":775070,"sha256":"24ddc893ac7f7c27f745d0d248abb37d60d9638ddd0bc284a787568c4584536f"},{"path":"maps/gnomeland-23.webp","size":625218,"sha256":"93c56698293f2b4e4ce3bed7e68e38539d8ac92acd514b05c4e65a1436198732"},{"path":"maps/gnomeland-3.webp","size":617830,"sha256":"d463a7194eafea16c01737cc44c590ebbb3de6605cc76fb1db73420654c20011"},{"path":"maps/gnomeland-4.webp","size":11744,"sha256":"9ef9e468319f729cb72e5b95fbf97c76caf16e7eb1d5c9d3f6c87300d5fe6d78"},{"path":"maps/gnomeland-5.webp","size":1195488,"sha256":"0eb3d22c6dbccddfbd58739a8d19fb8eaa29ed6eda495b42c6f412767fa0636e"},{"path":"maps/gnomeland-6.webp","size":761780,"sha256":"2de72b50a9da949761a12b5b547aeae4a60360a2274deb19bc2c071b113484d1"},{"path":"maps/gnomeland-7.webp","size":793658,"sha256":"5bc13510baab0705c8b7573f2a43c544505240f83b5095feb1f6abd7ca15399a"},{"path":"maps/gnomeland-8.webp","size":13720,"sha256":"11affae284ae48b824a46735e706124a3dbbecbce8cd0f4f39c56c3d3ea194b3"},{"path":"maps/gnomeland-9.webp","size":901268,"sha256":"6ca37eb6c4f36db426a4d5cf810f127c1f8f80bc14dec39a8acdb99a6cbdd6b1"},{"path":"maps/gnomeland_station-0.webp","size":604470,"sha256":"ed1ce15a8774d9fdfab46c8fb42654faa726f1d3d0bb2efd8b59124e01d77f35"},{"path":"maps/gnomeland_station-1.webp","size":372646,"sha256":"94802d6866a35c1a37e19be688663d56f7ee4b071e17faec40103e6e91d157a5"},{"path":"maps/gnomeland_station-2.webp","size":370210,"sha256":"791d15aa34e27660eab6e5fcfaa920ea780acfb146ecccfca0c207b784f18545"},{"path":"maps/goblin_0-0.webp","size":921556,"sha256":"5ff21bf08defe443affb3f0aa549b089936ab247f73b703b87f5d111211be46d"},{"path":"maps/goblin_0-1.webp","size":531628,"sha256":"05f53e6ab8149b9661223483e866b218b1331cc932bae57ba67a69928b4c47bf"},{"path":"maps/goblin_0-2.webp","size":444140,"sha256":"383a37c8158fe20f702723156f2a3c9764033ccfa43dfdba939082ddbdc14684"},{"path":"maps/goblin_1-0.webp","size":1056388,"sha256":"00076db5809829904b7f9b9c7bccde19ee80bb1d32d1a35d4132c64fe4114fd1"},{"path":"maps/goblin_1-1.webp","size":644490,"sha256":"8399e9515fce2a7e8f323e08a931f01241ce6af0aac0bb9808f8e3660dc76aee"},{"path":"maps/goblin_1-2.webp","size":368298,"sha256":"7784e4a7993081ae886e0dc43dbb4728dda9069dc03811c8088051dd3ccca14c"},{"path":"maps/goblin_2-0.webp","size":932920,"sha256":"f46c789188df96443002b1e399f445f9030db170cc4b28b6ffc61fffaf7abdd8"},{"path":"maps/goblin_2-1.webp","size":512198,"sha256":"54ce07da84b6d4898b200d43d8e90af1718acf1c7b61b55c5dea4d7c9aba8bf8"},{"path":"maps/goblin_2-2.webp","size":660454,"sha256":"c62a56295d5bef0ff8597eb9254dc3ebf568db2cd8ddbcda133f1ad70702c9eb"},{"path":"maps/goblin_3-0.webp","size":967894,"sha256":"1d1fef4391f765674d940d2439658db5041816369ba4ddfaeae3212f804e3381"},{"path":"maps/goblin_3-1.webp","size":493672,"sha256":"f563420c1625cebfdcea1547fe42a3606c9f95f83b48ec65c0655e905fe775bd"},{"path":"maps/goblin_3-2.webp","size":482016,"sha256":"dd533c8e206172955d4f2dac6762497f4f7de337158b9976a67bdf7df3a09d82"},{"path":"maps/goblin_4-0.webp","size":775422,"sha256":"1910c3f5a1bd71a3f04a157aacdeccfd2e316e8a7e9fcea5ba839c05187505aa"},{"path":"maps/goblin_4-1.webp","size":384472,"sha256":"369681213e73f422743717630d94a32a7003ff5532af0cfe2a7393799a16303f"},{"path":"maps/goblin_4-2.webp","size":416290,"sha256":"c7c82ea1e383c264380a5c3b0b68a3f4c1aa472817479fc2d6e1ad2cb6730cd5"},{"path":"maps/goblin_5-0.webp","size":902396,"sha256":"1cf255901bac099872fcc960f81185c6ce65bbefc83650022276cf05f2bf4628"},{"path":"maps/goblin_5-1.webp","size":465698,"sha256":"8cc2e9b9940f60240860afbbb9f97032a924a7ec671072be10eae5afb6350347"},{"path":"maps/goblin_5-2.webp","size":657032,"sha256":"627c69741b509ac7544e5213fecc0290a0561f353aac214d4304194617b6b05f"},{"path":"maps/goblin_familiar_0-0.webp","size":254582,"sha256":"097f81b6b95fe4400ee4ad9dd52bbbc53c991e96ce9abb9423b20791b7fc5dbd"},{"path":"maps/goblin_familiar_0-1.webp","size":131282,"sha256":"d4068870fe876a49325844f9a9f8834ebb9dc3d54008edb48d703b72fd5276c2"},{"path":"maps/goblin_familiar_0-2.webp","size":163232,"sha256":"c26e8ffd0666a94d2cadbfd20568c0fefc3812f77344614dfe83b73d89e95fd1"},{"path":"maps/goblin_familiar_1-0.webp","size":452380,"sha256":"bbb7a173b9ab70dddbbcd6f39fc0095467a4afdf6ac6441936990119c469e603"},{"path":"maps/goblin_familiar_1-1.webp","size":269018,"sha256":"8b429e901042255314b5cf2ac3e345d1a9008a7d9c8d1b667dd991d4b230942d"},{"path":"maps/goblin_familiar_1-2.webp","size":324644,"sha256":"2a6f7a77d9b1b4c5df6540a5addde7d4b01dbbd61566820f02c08fd535cba606"},{"path":"maps/goblin_familiar_2-0.webp","size":439712,"sha256":"b63fb6f8390878c1358691c98dc0dbe89b81e1ac63f79b106d3d129f74ec4906"},{"path":"maps/goblin_familiar_2-1.webp","size":212642,"sha256":"37a767c1cc82474c5a8f4d6c0567a0269e5c63acee31a5a8b1b49386e200e95f"},{"path":"maps/goblin_familiar_2-2.webp","size":251098,"sha256":"0cdb809a91ef0af7af7e9b3d3cb2be8f6579ef5d311001a14f2376ef6372acf0"},{"path":"maps/goblin_familiar_3-0.webp","size":247956,"sha256":"18028ccf40195e80875df124bf62e887ce484f91ef93a1eb61fd79fddda1efc7"},{"path":"maps/goblin_familiar_3-1.webp","size":144450,"sha256":"1bf85ffdad555d871d8e4cded2fe8b973bc6b93923dc98139f96154de4c04771"},{"path":"maps/goblin_familiar_3-2.webp","size":252790,"sha256":"b3a04570d9fe70d3a45774a2832818fa19600dfb6459c9188e5aec8960a2a2c7"},{"path":"maps/goblin_helper_0-0.webp","size":362538,"sha256":"7f4d9fcdbe9cb3253f5a4b13d15e9de696829f8e46e2f1981db6398ccd1beb9d"},{"path":"maps/goblin_helper_0-1.webp","size":211644,"sha256":"b78cfa80338a7ffb5cc8b674ecf5c85b1ed79c7b349576ae685bd997bf93c885"},{"path":"maps/goblin_helper_0-2.webp","size":180680,"sha256":"43d3b6f975db91dd4a5252d3041e2fa20e6db4f4eb2d7fe877de11dcabbd6f93"},{"path":"maps/goblin_helper_1-0.webp","size":424614,"sha256":"b7f20ae3d66212527bb99c9718da0496e250c9443fe2ba37d9bc7149d018a08c"},{"path":"maps/goblin_helper_1-1.webp","size":267980,"sha256":"efa16c451837c9234051125e7e17f5a85c0f84c8af3c872d3692772af31484d1"},{"path":"maps/goblin_helper_1-2.webp","size":202652,"sha256":"185bfe1cd2bea0167cc1307f64d58743826c30f7b5aa296d2448a71c2bc65bac"},{"path":"maps/goblin_helper_2-0.webp","size":419770,"sha256":"35119c909ce89a6433d3968297fdfa07f7765078f6d5c26b3be67de55087dd54"},{"path":"maps/goblin_helper_2-1.webp","size":241526,"sha256":"dc29b35612f92f265c123a83707d78c63a0c841271c6c8f398938aa3b257a1a9"},{"path":"maps/goblin_helper_2-2.webp","size":152390,"sha256":"297b74cf2dc49101c476c299e06ee4e9a30ff4dfe35bfbcfc4bd60cd1dc27626"},{"path":"maps/goblin_helper_3-0.webp","size":288134,"sha256":"8571dc6ede444e82ad7fedf8968a3c05a731a71204b800542f3378ed7943b6b7"},{"path":"maps/goblin_helper_3-1.webp","size":158996,"sha256":"37663ba0bdd35a20983537222e49f415cbbe42de7cf3e36ed3fcb318cc27cd61"},{"path":"maps/goblin_helper_3-2.webp","size":233414,"sha256":"7b739812d9fc5eb002955c33baa1b7a084f74a7c2b5e858824ea52d4def1a49c"},{"path":"maps/goblinville-0.webp","size":18086,"sha256":"98afb7a26a93bf5658d18a005e18927e9bccd25b42b96f13b3dd09ac817f8890"},{"path":"maps/goblinville-1.webp","size":1206816,"sha256":"1fcf3eeca903cf314810734ee0e82e0767b646ec1c8d1bbb7452cff47d163a5a"},{"path":"maps/goblinville-10.webp","size":683648,"sha256":"b1fb98d994ad1fd778254b8a829757caf4bdaf837ad5359a8eee61ee1fb538c9"},{"path":"maps/goblinville-11.webp","size":569188,"sha256":"96ed2d3bb5fa3034504546811eb6fdfd9c8cd524ac35b4ad3fc88284316d8524"},{"path":"maps/goblinville-12.webp","size":10016,"sha256":"ddae8ac87130ef8a129209626ee443b5993bcea864fd75fccee8f7c367a3e712"},{"path":"maps/goblinville-13.webp","size":1018640,"sha256":"8a7cb22319b46aed7b8599eb5f0ea9f2847c987968ced20257305d4345be47a8"},{"path":"maps/goblinville-14.webp","size":666864,"sha256":"bd837d8dcde2b1132d677fa4706342511064deca466a74175f0face54c4844d3"},{"path":"maps/goblinville-15.webp","size":499574,"sha256":"537d703529085acf2afc976e04a9e187f9376459cc5384dc52ba27faffd41e00"},{"path":"maps/goblinville-16.webp","size":15408,"sha256":"396b0d98616c7dce49f26656967a11611b344a05b38e23478b02d677127b792a"},{"path":"maps/goblinville-17.webp","size":1016040,"sha256":"68b2790310abaed86d9c28f3764c9578c45e386bb8078046ad60f73b18adda1c"},{"path":"maps/goblinville-18.webp","size":635252,"sha256":"18a9d439424df44ab493fb66927c28c915e8e87b91f095afd635801d5b07c2e7"},{"path":"maps/goblinville-19.webp","size":692646,"sha256":"cb2004640c7094e378ee5d75e2d91d25535f932b00b5f52123262eeb1461c7f5"},{"path":"maps/goblinville-2.webp","size":581824,"sha256":"cd2f76c1788f4c65c78ed9de882c2aaadfe20f7c6318bca55eb7f69ce9cefe3d"},{"path":"maps/goblinville-20.webp","size":1240352,"sha256":"42c6ce007cc595bcfe05ec83569d132a8eb20e628a8269b9c712092f73d58b71"},{"path":"maps/goblinville-21.webp","size":781812,"sha256":"a46510fe0600db8c103c717e98f4d491de6efadb99d2b002f5d793c8661669ed"},{"path":"maps/goblinville-22.webp","size":504178,"sha256":"3350ba050792e16ea6a32c18be0d0a4617ae44ff0a8bb5d21e185e131b856007"},{"path":"maps/goblinville-3.webp","size":598290,"sha256":"554674f59ea476fe98db169a5b5f2854f5497e8cd1274ca33a2ec653d0dd7c1f"},{"path":"maps/goblinville-4.webp","size":7518,"sha256":"6edd7d51c4f880bbd98b86c6a2b57f012f94b4023bd56d29b382f9348879751d"},{"path":"maps/goblinville-5.webp","size":1305334,"sha256":"f55d312542f99ce877c69b6905bf1cae5d4cb25d269afad028e0bb5e307e7d7b"},{"path":"maps/goblinville-6.webp","size":870012,"sha256":"55271e50c58767b6734ef8c14433b563c2bff6e62d34e0a5286d54b1f58a9c8d"},{"path":"maps/goblinville-7.webp","size":559524,"sha256":"e4a66d2af04e44ce89ab160c705db026720ad408e502c85574653e759459d7a7"},{"path":"maps/goblinville-8.webp","size":8824,"sha256":"761ccdf39275de409f6698c0f4c4cc863f23068c7eb9675ad44355d39f5e20d3"},{"path":"maps/goblinville-9.webp","size":1109288,"sha256":"706bc9ae5393da8161d19e49d0cdbb7b4733017f028d2fe966c2c79b7dd63689"},{"path":"maps/goblinville_station-0.webp","size":816508,"sha256":"deaa0ab2467d833732a3188585fed0f40c0fb8907f5acd92c8c2889995aeae0f"},{"path":"maps/goblinville_station-1.webp","size":542928,"sha256":"426366b257cae185067ff0bd17c6ebbbf95fd779929e97fe5358ecb0de52ad19"},{"path":"maps/goblinville_station-2.webp","size":428034,"sha256":"390d20a49c2c1ff6a27a7daf5a826c6431190f75498d8be617356ae0e8a23562"},{"path":"maps/grove-0.webp","size":287142,"sha256":"28766709a089b4e6335ada60891c84c806ead2b332ddacd535d848b15937e7f2"},{"path":"maps/grove-1.webp","size":1593420,"sha256":"6a5794506842afef34a85c0fb907681f03646053f2168f68f980f9cc245d78b1"},{"path":"maps/grove-10.webp","size":709230,"sha256":"063ac7d08f27d50adba591033f58164bb1823ba78d4144b94700ae339fb3ec12"},{"path":"maps/grove-11.webp","size":627862,"sha256":"1338743d11424e161bb3ae7671bd8cc6047c2208f67b93c9509ecbf0d0ee4513"},{"path":"maps/grove-12.webp","size":23800,"sha256":"3dba035f62142bacac3e0ed951dbd608494445ac6de5f689a3445e2bc2df58b1"},{"path":"maps/grove-13.webp","size":1233696,"sha256":"4ba800ea985c015dcccdfd4b9c70b71cf9185d0aa9876aa1f1e32579b39f81b6"},{"path":"maps/grove-14.webp","size":606470,"sha256":"3c88714d33495fd7a4fd25a201b3490bb124498814131019fc2e32ba6107940d"},{"path":"maps/grove-15.webp","size":567726,"sha256":"76d47191476979cf7e58b4d08dfa28bd4672b9e5c39c0a24cbdc8c36907a2760"},{"path":"maps/grove-16.webp","size":100504,"sha256":"22779ab051c24b3bfe4ae7394c74ed8589a2c6b0fe11c412b066f0eaf4d89083"},{"path":"maps/grove-17.webp","size":1610482,"sha256":"5947a2f6c2932786d41f04400cfc1e2709b069b22c4d7b4881a2c935a9408014"},{"path":"maps/grove-18.webp","size":563716,"sha256":"9ef9be39dafe75a980c849c01f9ca16f54a3edc69eeb1db9fb3f3bbc11db03d5"},{"path":"maps/grove-19.webp","size":609772,"sha256":"f7524e52c713f781506ac8f76b3760ff2d707ff73158044f4f24e31dabc456c0"},{"path":"maps/grove-2.webp","size":526732,"sha256":"d85b3aa42511025d4e7314976962daa1e9f8255171bba3bee11b7b9d9c3b151c"},{"path":"maps/grove-20.webp","size":20846,"sha256":"b20908ec7bb463d18c6e315d59e48a947767750b3b035c71f719832255df0ba9"},{"path":"maps/grove-21.webp","size":1207642,"sha256":"81bfa75cd071319d19470534c17931d85634d3ea7025ed8b5fe4dae75a358d57"},{"path":"maps/grove-22.webp","size":705790,"sha256":"fd078e755c784cbf59059aafe3622102a3ccd9b37e105f0fdd9c48d2eaead90e"},{"path":"maps/grove-23.webp","size":666368,"sha256":"e45d5c7bf0862b1ff703e629910840d1de6b00cf7b51980540373fb949ad1085"},{"path":"maps/grove-3.webp","size":639798,"sha256":"d2b8604c7bf53cbfd559af3cd1dcddb6a1c13099e37cb77c9fe4278bc82e2dd2"},{"path":"maps/grove-4.webp","size":33998,"sha256":"65ff1713b0c392766c50154f546892493b1bde5db7f638644d06486fcb64b3fe"},{"path":"maps/grove-5.webp","size":1242668,"sha256":"063ffb53bdbe26cdefab55ede07d397b9c3686760f58dafb802adae86474a3ca"},{"path":"maps/grove-6.webp","size":417578,"sha256":"ff069e97796bbb5cf9668bba6461c74bc9acee10d57538a61f730cea2941f9ca"},{"path":"maps/grove-7.webp","size":472708,"sha256":"7891e87ec7d57dd8410037b59e1066c71990db0eea8d1f66277097098174b6c7"},{"path":"maps/grove-8.webp","size":43774,"sha256":"47ebe004cb1a0c0bdf0b73cbf79053e3be9bb5320a0b356fca2d0969a86f68a9"},{"path":"maps/grove-9.webp","size":1397078,"sha256":"8a840894f5756a46487895859557be442e737217b4a652f10e0709b91a8b8103"},{"path":"maps/grove_station-0.webp","size":836574,"sha256":"058a7ddc93874b491d6f329d1c19d5ecd9c3da011a0e8bfcfc689721c23205f3"},{"path":"maps/grove_station-1.webp","size":446526,"sha256":"6c8e7d37bfd5481ebb3d58533ab0f2cb093694938fd1da674aa74f29894e0e6f"},{"path":"maps/grove_station-2.webp","size":591600,"sha256":"15c3d09b315ad7e1e9db6dad35fbe2503abe9a7bb42ae67187f0ad843b24d1ec"},{"path":"maps/guild_station-0.webp","size":1081432,"sha256":"c1c0878d22992733333a75b98c101c637aeec4191425a0e7765360fec6ddf465"},{"path":"maps/guild_station-1.webp","size":466696,"sha256":"33c2ede322997a9ac65c33583f16d727dade5be531e3ecbd332d323296289e44"},{"path":"maps/guild_station-2.webp","size":376802,"sha256":"769098773f80bb7f10631a222d940bead5ebae9cfbac2828286cc5c5dca445fc"},{"path":"maps/hero_0-0.webp","size":620238,"sha256":"ec744cebc163f2728499668b21c9bd409c1c6dc69c5c6c7a94c679d2e6d5b387"},{"path":"maps/hero_0-1.webp","size":369060,"sha256":"fb87bd5ea00c29c86a1d51912adc5be57b8a151229fbdf062896e245ad180870"},{"path":"maps/hero_0-2.webp","size":317422,"sha256":"0de235ce67692877c7d6f189bdf4ddc391954ca089d8aa770f822664a2d14acb"},{"path":"maps/hero_1-0.webp","size":715862,"sha256":"78a6a12549b7f8220505d9df6c013e5a493b5389e25ef3f9e73309936aa8848e"},{"path":"maps/hero_1-1.webp","size":435572,"sha256":"a436e1a03f941ffd93192b9bc880e00096f5a6e9d991562b4b4497426f367866"},{"path":"maps/hero_1-2.webp","size":399968,"sha256":"ff06b5f081a5fb8a57e59210146a171f4b02719551fa1b97732963b949a40000"},{"path":"maps/hero_2-0.webp","size":854128,"sha256":"4951ddf5639c9bcc325e48c64db328593504eb3c092069e2a84742b127c65e8b"},{"path":"maps/hero_2-1.webp","size":421140,"sha256":"204775c7cc27f16dec703d8c534953ced6c8f154ffb052a62d97def79ae280ff"},{"path":"maps/hero_2-2.webp","size":310598,"sha256":"062ce99122ba27c2e825999026ab764435c1592d4ebf199d908170c7263cc904"},{"path":"maps/hero_3-0.webp","size":732928,"sha256":"cbc58c35fde36c18d5a2b8027fb31df19237c5d37b11a088f347df186c9c02d0"},{"path":"maps/hero_3-1.webp","size":415160,"sha256":"0670f41a404963de1a3e07dff96d9cbfe602c65829c9d8fe7b571de7eaaff52d"},{"path":"maps/hero_3-2.webp","size":297284,"sha256":"b2cd90c459724d81d8e6557eee28fa289c068811fe14dde841a728ebe1a261a4"},{"path":"maps/hero_4-0.webp","size":567998,"sha256":"203bb36fb2776eda4a88149c765c25dcc06743374847b9818aac44cecfdf97a9"},{"path":"maps/hero_4-1.webp","size":267194,"sha256":"63d31d93709137dafb8748f0d43adabc6d3bc67cb21ac65c37a1be1f7cac26b2"},{"path":"maps/hero_4-2.webp","size":181768,"sha256":"11472d9b9161016de714804a82203e94d47ac7730b3a68e33f97b1ebda84261f"},{"path":"maps/hero_5-0.webp","size":729662,"sha256":"016eeab9a81231232e0f9e7417ede3189e23e0d0e75ccb4979f1a888a6b48f9b"},{"path":"maps/hero_5-1.webp","size":449116,"sha256":"6600394f113ed6ccb444ef79961eeabaa62eeac8ae5aa8817a7015c69c5788aa"},{"path":"maps/hero_5-2.webp","size":449456,"sha256":"c0495c8ef08a1db640ba0f9572c5022b914e6abdae7d036bae32199656566835"},{"path":"maps/orbital-0.webp","size":7518,"sha256":"6edd7d51c4f880bbd98b86c6a2b57f012f94b4023bd56d29b382f9348879751d"},{"path":"maps/orbital-1.webp","size":858434,"sha256":"51c5780fb670d9bdea073ebd2e3eb71d39600bfd4d34b3c8f8eb410d76f36736"},{"path":"maps/orbital-10.webp","size":522384,"sha256":"f911339d7447881144947822a053166a47b0698ae88ddac3c92489d7659462f5"},{"path":"maps/orbital-11.webp","size":441412,"sha256":"20fdf5a14856eb8ab326d26bdd9908e32827fdc72d6f2acffd457c4ff80ce840"},{"path":"maps/orbital-12.webp","size":10758,"sha256":"f1bd0b505c5863131fd73d22657a6a4a89fe41182e30976baa194b20c1d832fa"},{"path":"maps/orbital-13.webp","size":979608,"sha256":"6cc346c243b7e4fb67b61a14fa47df2e8d749dcb81eb31fc78cfd012a8147650"},{"path":"maps/orbital-14.webp","size":661476,"sha256":"7a627074179738a9fabf0c282a4f65ed21d69786f78d0edd04aec2caab156deb"},{"path":"maps/orbital-15.webp","size":501890,"sha256":"cc68fed224d7fa17035987dbc120131a6af3bd20ced8902855f2361dfa1d0fc7"},{"path":"maps/orbital-16.webp","size":831184,"sha256":"bc7c8b29a146d3579d6c3c6942068ea998b268d9a242c68b6e959b58f2465ab1"},{"path":"maps/orbital-17.webp","size":538856,"sha256":"3e09f64e38689931a9b71a569645f26f4205e4f28012528b134d4eed1cc4f322"},{"path":"maps/orbital-18.webp","size":358326,"sha256":"7b8a804b360dc1c3b331b942a42461f8d5789fef2dd19e3310cafb27a89d704a"},{"path":"maps/orbital-19.webp","size":20588,"sha256":"bfaf5a8b62d4b1d121f4e094b9ceb20cbce7def403968926aa7e776bba1c137a"},{"path":"maps/orbital-2.webp","size":629708,"sha256":"a5ea513abbc66d8763f1b86243ea1d8695ef90c43d20465363815c20c55910e7"},{"path":"maps/orbital-20.webp","size":693938,"sha256":"4bd35be5ac052305e04e82c4e944a3929b58ae41fb4e06d8b2c4a8cea2df60fb"},{"path":"maps/orbital-21.webp","size":481196,"sha256":"b8570e5c543ae66c00bfbeadfcd619fc022312d4f53bf14ec517252a6a69bac6"},{"path":"maps/orbital-22.webp","size":380444,"sha256":"a3e6fdad80584249a0fb1afb2ca7c821fa1f0a82bb4cb6704312871246c7cc0f"},{"path":"maps/orbital-3.webp","size":353782,"sha256":"74a4943ade040c643d9fd6afdad86ec7e7e677158f579decb11e05619a6cfa70"},{"path":"maps/orbital-4.webp","size":11888,"sha256":"9d86aa682bb43bb4f47b607f452472f1cf377346ad069a6b7e0ba9cdc29acdb3"},{"path":"maps/orbital-5.webp","size":731910,"sha256":"eab7be9528992a5d1ed7c0ec15e9052740728ba253c778180fff81ee7fb14cfd"},{"path":"maps/orbital-6.webp","size":500106,"sha256":"17c50fa2680fd151df7bc3cf26ad088671ed9c7ba0dacf0318cdd6d30436d4f1"},{"path":"maps/orbital-7.webp","size":429134,"sha256":"c0d188aa849c67271925c1ca2a44dcdd05081053387db5b86ce6156e1aac781d"},{"path":"maps/orbital-8.webp","size":7518,"sha256":"6edd7d51c4f880bbd98b86c6a2b57f012f94b4023bd56d29b382f9348879751d"},{"path":"maps/orbital-9.webp","size":963034,"sha256":"9e68b2b1c57b84e966717ba4ad4d71e42ad39fbc47188d037db5f6ee9d9104cb"},{"path":"maps/orbital_station-0.webp","size":424938,"sha256":"8e66c2e1a65ebf212324f66ce7a5818d72d05c3b3807393ade914e3d75411ab9"},{"path":"maps/orbital_station-1.webp","size":280090,"sha256":"4ddf45f3e8c7fd1495f21acc8e22bcadf2d02f2a056c782803a64cd6f4123a76"},{"path":"maps/orbital_station-2.webp","size":292110,"sha256":"a0f7ba600ae3cba44ab900db5a6f5550caf4a10accf680de8b317abb787078b1"},{"path":"maps/professional_station-0.webp","size":383194,"sha256":"8b50fe67a762718d98a2b4a3a304cd2ea5c5c0424f01ddc114581a64310124cd"},{"path":"maps/professional_station-1.webp","size":245246,"sha256":"41deebae2c3bfa749403eeac644bb47fa466a1e043da37cf60b72c01ee050049"},{"path":"maps/professional_station-2.webp","size":154730,"sha256":"24bcf11483b3829dfa9cd70dcff7984f6697f06395522c7dd3e0c5bd1c161068"},{"path":"maps/robot_0-0.webp","size":642170,"sha256":"f14787fbe2cdad45495a319dccde3c5e775362e0309f660ea4d6ecca539379f9"},{"path":"maps/robot_0-1.webp","size":449242,"sha256":"528ed37b02a44cd3b570998d2507fd22155a3fe925b269e14513282279975f65"},{"path":"maps/robot_0-2.webp","size":359686,"sha256":"8b939a718b024e114c5592172c061b1b4dd0bd053281d7b6ae9fdb656b751e14"},{"path":"maps/robot_1-0.webp","size":772738,"sha256":"08c16aa34fe1dda47f3ccf7250084021b7f3550f8cfacc15c710c49ca1a2fa35"},{"path":"maps/robot_1-1.webp","size":584954,"sha256":"31490010994d3e08c3f66dbf6f1256933d21be5cb9734eaeb12b2f9823e80ce2"},{"path":"maps/robot_1-2.webp","size":364954,"sha256":"b3db655544c7fbd79697fcd878ebb2cbca25b88c79835bfb76b3337e45140c6e"},{"path":"maps/robot_2-0.webp","size":840094,"sha256":"96e62f1ea8558ddeb7d7b9d2edf7465f66e88fd55ba211a8e29d0daa7aac7824"},{"path":"maps/robot_2-1.webp","size":619548,"sha256":"1e4ae734895b1474960a0dda4a304fb92d987e2218d9c3e9e9639030b2a248ea"},{"path":"maps/robot_2-2.webp","size":475364,"sha256":"4f823d9bdb8751fa1e23a8ef9c551281c8591574541f69c592e4230c194bee9d"},{"path":"maps/robot_3-0.webp","size":723962,"sha256":"655866634e8e89ba25a939fad8e0944a2dcc9f539dfd60fb5f7bad66979d0a49"},{"path":"maps/robot_3-1.webp","size":402166,"sha256":"c4d6ac84714603769c1ad90ed49ed5c3ffb22fdcd32b4d07d87e20faf30e9146"},{"path":"maps/robot_3-2.webp","size":289056,"sha256":"31fd60c02170b6ee6e864d9817867b7101b9cd15b98aa65f57b2b9cad073fd65"},{"path":"maps/robot_4-0.webp","size":728282,"sha256":"2a8f936665591df3eaf1008d16963d703964a58d3900b60c7d8bece3b9030d97"},{"path":"maps/robot_4-1.webp","size":486806,"sha256":"b32815bf0e41f87b4e6612cfe09914051f77614458f3d2883210efec51afd37e"},{"path":"maps/robot_4-2.webp","size":368354,"sha256":"05446aa63fc67634a539cdb64db02771094ef006d7733f2c49966a6d910a0863"},{"path":"maps/robot_5-0.webp","size":1004228,"sha256":"cfa66c04d39d3db002efbd8f8b6b678c009a0a18ca06f3cfe2ef05a7528b70e2"},{"path":"maps/robot_5-1.webp","size":434160,"sha256":"5c4dda9b1d31f0bf9b571980e219f0fc21da34e5a916b9ca71657c2220ef8280"},{"path":"maps/robot_5-2.webp","size":427160,"sha256":"4c7cdb9e2231208c1fd9fd9f7c1565fa4417239f52e4d2ad7552949dd7812882"},{"path":"maps/spirit_0-0.webp","size":940966,"sha256":"d1187391e8c57d6cbd9be0963ed98d979b88f226b5ded8c4fd36d8f85ad693c1"},{"path":"maps/spirit_0-1.webp","size":467260,"sha256":"a5ecaf147ab63dfaca94563c92834f266f63a3ac7fadd34994bef6ae2a5066aa"},{"path":"maps/spirit_0-2.webp","size":427934,"sha256":"0821e96acbd2f7a5f20ad885b9f2374c5dbafdbd601be076b062dc65328069fe"},{"path":"maps/spirit_1-0.webp","size":647336,"sha256":"d4de9d7a07d9772b944a753197092deb51ef371b712ea6075ecb79397538d0e3"},{"path":"maps/spirit_1-1.webp","size":433160,"sha256":"0189d9bf8e53032a0a44e8cab8029c006be3775c324b249f95223cc8b458855e"},{"path":"maps/spirit_1-2.webp","size":411750,"sha256":"ffdc9ee11313b50834a40c347b7df598ea6e7a1075bf3635ccc3a19b40382f64"},{"path":"maps/spirit_2-0.webp","size":513706,"sha256":"129ccc96bfe9c1a7ce0ba2029fba214d887cd4ce0dcec85dfe153e6149580539"},{"path":"maps/spirit_2-1.webp","size":325162,"sha256":"da162f0d9027c6a3b52113538dbb2d12ecc9343e34e5cd75ecf1ce198bcec390"},{"path":"maps/spirit_2-2.webp","size":520624,"sha256":"d78215123109b6838bca3da6b53008b53e1e64858f88dd5d5dccd85feba95ecf"},{"path":"maps/spirit_3-0.webp","size":611664,"sha256":"5043b7099c60edbf999007e6977bfe0090305cf7251c2df3adb4e2f37499ff1c"},{"path":"maps/spirit_3-1.webp","size":328088,"sha256":"86b19b3f98df13fc469ca84bf4806644f3f8bc147b995100f0103369550497b2"},{"path":"maps/spirit_3-2.webp","size":599962,"sha256":"cd7ef2badf9198161430a8431e8be37b543ad9a78e591c471c7923e02ac272ab"},{"path":"maps/spirit_4-0.webp","size":848226,"sha256":"9a0af7a45d5436646f7fd3bde14e6f33d3cc35c3152e1a8dde49252f6ecd301a"},{"path":"maps/spirit_4-1.webp","size":446746,"sha256":"ea152420ff9020050bc6ef656717c6b2af2435687edc88dacd180ec1917f7b7e"},{"path":"maps/spirit_4-2.webp","size":406998,"sha256":"7fe9fca0e77ba9569a3264c3a8e8b05af79fbe4ec50949cb4ab0648fef7e6406"},{"path":"maps/spirit_5-0.webp","size":863178,"sha256":"f81fa2753b5aa6f7a795e9d9e293f07763b85f383360ad3a7f9c8fba0fe87de4"},{"path":"maps/spirit_5-1.webp","size":435894,"sha256":"45fe4c1fc412e05a23cac25d502d180f040d946839cbe05e3ab8a81dfae96374"},{"path":"maps/spirit_5-2.webp","size":475850,"sha256":"8403fdd03c08f266971602783b03976c4814c8879c2a448bc16ddbba1470aee1"},{"path":"maps/staff_0-0.webp","size":862582,"sha256":"09cb799a4e4c76a8181777ea9b155a8a3ed34761fe6574c6d561f7575127139d"},{"path":"maps/staff_0-1.webp","size":513224,"sha256":"acfa53ec2dea5d4dba93191c2aa908ecbb844af1d798e7b136ea3ec65557f539"},{"path":"maps/staff_0-2.webp","size":359012,"sha256":"147cd4862c3d83dc7ec0f78eabb4b78515a7277d72945ae094043937f4002bad"},{"path":"maps/staff_1-0.webp","size":594434,"sha256":"90718dd141513dda81734f05b56b6b2d48a7b0e60212d24df3e273b3a30bd525"},{"path":"maps/staff_1-1.webp","size":344522,"sha256":"595a182b2d6a34447f741cbb2c07a63b3885ffa86d94243ee0522a68859eaca7"},{"path":"maps/staff_1-2.webp","size":427750,"sha256":"70088a44925c0ca377eaa3c69f6df48380f56deb484929a09efe2f1762153604"},{"path":"maps/staff_2-0.webp","size":703294,"sha256":"5f80e2d2b4ac3707ecd33a3c80e1a33a8134ebbc34a50567173f7be5e5dc1c2f"},{"path":"maps/staff_2-1.webp","size":471016,"sha256":"b3ec4ac3041451ab6a997617f6acfbf95ee9456e5c0ac18d264f50edfb240191"},{"path":"maps/staff_2-2.webp","size":409202,"sha256":"f027b6ffb413a09054d69547638240f0cc1ac636e5e6ef74d97f1582e8ed6ccf"},{"path":"maps/staff_3-0.webp","size":614812,"sha256":"f4b1cd4f59aaaeb0a8716da74d5578e3425d27832f01c7a9a8d6732fca74850a"},{"path":"maps/staff_3-1.webp","size":375724,"sha256":"6c0f7008b0a2461bf0a9d1510db3a512e2b34b47da67aef0e2763e3731788016"},{"path":"maps/staff_3-2.webp","size":270170,"sha256":"70a934bea9d45412c8fd0b8b347ecba74eaa2c2a16a1e57b8bbc31335fb95213"},{"path":"maps/staff_4-0.webp","size":684000,"sha256":"67e4e671add03737e9891230d76d00456a2606e125a8656afd2cc87329f7932d"},{"path":"maps/staff_4-1.webp","size":444248,"sha256":"196fc8218f546733040eb861d53a64620e897d162a29ece3839d3cdb254f026a"},{"path":"maps/staff_4-2.webp","size":386960,"sha256":"d0c62d3c58951c7f549edccc46ebe2405e8098eb02c581efdf2087b9bde63e4e"},{"path":"maps/staff_5-0.webp","size":661140,"sha256":"890c1d54fdb94f1982f07d6775c5891c2314d73be347d7fe413cd7ad654a09a0"},{"path":"maps/staff_5-1.webp","size":354836,"sha256":"c44bef8b639f4ffab52e1dfae1783c81ae889f3d83f299685c66774f3d58c465"},{"path":"maps/staff_5-2.webp","size":342070,"sha256":"8278c6ce0ad10581d49369e1f2e7f8d59f367d814d34bf9cc134017630e245f0"},{"path":"orbital.glb","size":9155296,"sha256":"a7d273c26e61a5838844db85c111c86a910e6888f223d7a80599ff02cf505a76"},{"path":"orbital/dark-base-0-0.webp","size":129456,"sha256":"0f2d059ebb3553b11343b188fd5c5d948677de5a7e3da6fd1d738882c5594860"},{"path":"orbital/dark-base-1-0.webp","size":175700,"sha256":"e836d7adfad75ef0d5899bcc7f64eed99beb479afb43635326e586fdeac07f4a"},{"path":"orbital/dark-close-0-0.webp","size":374142,"sha256":"4aa08f854227c73090320ab83ddf7739b1288c1b52596e924f195fdf16fac861"},{"path":"orbital/dark-detail-0-0.webp","size":198284,"sha256":"59cba07c8f613c4f062662107aedf613bd171618988663458ce77ce1fbadf2a9"},{"path":"orbital/dark-detail-1-0.webp","size":241912,"sha256":"5fa6729de183226272a18bce162386a3148dc8f369467fd7204d246b0841437b"},{"path":"orbital/light-base-0-0.webp","size":141848,"sha256":"e94b66346121b3498c8a981e4eb944518dc6202b2af206948119792f78d2bf96"},{"path":"orbital/light-base-1-0.webp","size":200002,"sha256":"99e15b1294508363e790687ec71c8012cdd3e4335b7a9d13a45dc541d5287009"},{"path":"orbital/light-close-0-0.webp","size":374804,"sha256":"149f44f1a751b72e2bf197703d920dedf45cb4d3a20cfc5df9bd181cb5c4a3de"},{"path":"orbital/light-detail-0-0.webp","size":217464,"sha256":"9709b96f753b730da97aee11e04e7d5a113ed7b14d8099aa0c2c1ca3afee3139"},{"path":"orbital/light-detail-1-0.webp","size":255200,"sha256":"129503fb27dbec978933c031a604c1f4bff9b3547715e7ad4ab1100119153b03"},{"path":"orbital/plates.json","size":3473,"sha256":"7fd3e18a18548c8463abd118cb1e1f87d231c1613f94a952dec23b692dcf8992"},{"path":"orbital/sky-dark.hdr","size":36962,"sha256":"f23d7ce96f20020367fc61b585164b9146fd716ec7b5003020e66a2acfee60de"},{"path":"orbital/sky-light.hdr","size":36617,"sha256":"a4321a8a54de034d9fd59d92fca3dfb3eb5e3bd8bcf6a724ef631f44f129227c"},{"path":"orbital/surfaces.json","size":103,"sha256":"a93f1da79181b88ac44d199b2300c762aae484def1c22a1501bac7325e5d2cb5"},{"path":"orbital_station.glb","size":1397364,"sha256":"2cb4ba64a76caa4ec430b7f4d7c82df75a5b14f5bf59e5b680716a6c2b4cc27e"},{"path":"professional.glb","size":829544,"sha256":"d1b2c29c4e4f2d3dd43798f79c1b18a1e75ab7e6061f3da5b430b99163fbe514"},{"path":"professional/accent-color.webp","size":37284,"sha256":"a801c6429a2671cd62248940f69d98ed6a72cf7f43a7c880cda3aaa820476e55"},{"path":"professional/accent-normal.webp","size":10908,"sha256":"8d92448bf3339091c5a8630156f583a059c3eef960c25d8a521a7989f7a5fc2f"},{"path":"professional/accent-rough.webp","size":6228,"sha256":"6e33be689ce65b15c3d58d02b5fb5e50ca62b65e2452c10e8be90d12b6b862fc"},{"path":"professional/concrete-color.webp","size":11844,"sha256":"b6ceb143c544a06af8251f7eb88be6d0f72e934273c28aa28b7fcc2f0c3e2140"},{"path":"professional/concrete-normal.webp","size":1974,"sha256":"ecf9c752fc23eed0c4e8a82d64a00c106b1ff8fd582523c7a357997fdbee3ad4"},{"path":"professional/concrete-rough.webp","size":634,"sha256":"b7438c51f2673cd6a47a7e8531684e491821227622a7a4e63b3d8d7afeafe831"},{"path":"professional/dark-base-0-0.webp","size":154076,"sha256":"8219ac5fb9aeab5ce729159f84f3dcf4f62d9293b7b04ce1ea883a2565016edb"},{"path":"professional/dark-base-1-0.webp","size":182038,"sha256":"04698e517a885e9fcada877fb10699732eca7585fb4e158e7a3c43ea2ad0029b"},{"path":"professional/dark-close-0-0.webp","size":592274,"sha256":"9561467ff19ab1851b1d2818883d0433d2bc21f015e495c3f21a5d961834b8ba"},{"path":"professional/dark-detail-0-0.webp","size":183862,"sha256":"adc8781a1c5ebb6349f5b8d3d582b8a3c415d9b1b30dd3f3ae0aae7cbcb9c847"},{"path":"professional/dark-detail-1-0.webp","size":230480,"sha256":"b163cf6ac3d62bfe069e79733eafe74df6d4e49003f549394c5a1fb4fa65c4bd"},{"path":"professional/light-base-0-0.webp","size":172206,"sha256":"6012cb0762c64a87c68b71feeeed3cc69b8ae85808e29f089c483d7ce2c4d1aa"},{"path":"professional/light-base-1-0.webp","size":211402,"sha256":"0fae98e39525c11817c9e0877e2b5af6f9695c4f1a7a1eb9243d3214a1414794"},{"path":"professional/light-close-0-0.webp","size":971540,"sha256":"bde4822eeb04ecada1b12dcbd808d05134b05416c17f8d86e8e7dd3c0e999c78"},{"path":"professional/light-detail-0-0.webp","size":276826,"sha256":"9bd6c9acbe2863cb09ac99fdae2f3bafff7e891ccf436513479c07e0f11f3903"},{"path":"professional/light-detail-1-0.webp","size":337680,"sha256":"c5369fac38e2e727b072fb327a44a12f071ebec7e07cfc31109aeb58b0df6a79"},{"path":"professional/plates.json","size":3523,"sha256":"55645fc6ba89cee88c032faff61df354d259b3f6fcf4f71b5da8b4807976d158"},{"path":"professional/sky-dark.hdr","size":260840,"sha256":"6e296ea4e6d465c291dce7792ad5f8ff965b8deea4c24dd0f1c0decadb892332"},{"path":"professional/sky-light.hdr","size":358440,"sha256":"e2a11d8394eaad91f00f825b4d0181f28fa155a79e47dec1476d7366c203aebc"},{"path":"professional/stone-color.webp","size":16730,"sha256":"f81236b072fe4cf4b96c669081a412e898516eee8ab23294b7ce7c940efe78d0"},{"path":"professional/stone-normal.webp","size":2722,"sha256":"1ab67e805003ba033d4e6a269b76c87362502f607f0ac041e824cf5a9b6067ab"},{"path":"professional/stone-rough.webp","size":23348,"sha256":"fa4496b0fc135e143a28b253f348ca9f2988470c3c529d6884f905886d69069d"},{"path":"professional/surfaces.json","size":1107,"sha256":"3471fa2835378140c7a06cd5494294971fe272433f84a5d03542b44e332dd0ef"},{"path":"professional/timber-color.webp","size":22372,"sha256":"1eee4b1d660d2d9816eabee0cd8e9c575319d694c5b321406776ac901c974c9c"},{"path":"professional/timber-normal.webp","size":11574,"sha256":"20ebd8fdd3c15e3b4254eba9bda71f3fd6ad6929362cdbd671631eb61d944185"},{"path":"professional/timber-rough.webp","size":34338,"sha256":"0f576127bca68bbf5c8361a441690171cba7cdc80cefc0ae62e6ecceca9b47fb"},{"path":"professional_station.glb","size":1369552,"sha256":"4144a584d3bc9dda79fa0a55f2fefe57ce559947b66b9042b642372d15d87fc3"},{"path":"robot_0.glb","size":1680480,"sha256":"6cfa63d7c0364f11d9f141c2109a5156c5ea5d11c04fa1485ab1cb63d6511bc0"},{"path":"robot_1.glb","size":1775004,"sha256":"a83f16ced3347d5f51ba152813c1ae1392cae2e38d16c8bcdd39f78cb0d9cf5b"},{"path":"robot_2.glb","size":1848120,"sha256":"33773cb9b5ac977b76363f858b5b192f19a369a4527c873dd3a2a519eb0c10cd"},{"path":"robot_3.glb","size":1752144,"sha256":"50b6453b81a9c6b876ce3e8a315bbd72b0f78bba22f2cb28cd5e33fc1373dd6f"},{"path":"robot_4.glb","size":1852464,"sha256":"4ceec3831e22f328a9b9d713e8ee48b49c1d185e7e4fd94142f3bcf6ea54b581"},{"path":"robot_5.glb","size":1936136,"sha256":"6abd6a88248a409cf404ef37ffd5aa5c023b50447b4dcc8300c0c36216ab2fe7"},{"path":"spirit_0.glb","size":1845192,"sha256":"f4fe480d5fd1806ae31e69581f25fd7224742d4a24735828edc8adb2e5ca59bd"},{"path":"spirit_1.glb","size":1800916,"sha256":"1e5979e317196c9f67ea19e2cd5d34ad5f2b8d27e652d1fff50d02285b2f392e"},{"path":"spirit_2.glb","size":1698720,"sha256":"57955ee1368047523250e6c0ff401b6eee09fff45374415b579c7cd5df0dc17a"},{"path":"spirit_3.glb","size":1741576,"sha256":"b7a1482617ad5c4f7ca2df9740aeb38378e078c024b18203ab4c67fe4b7e6a27"},{"path":"spirit_4.glb","size":1867496,"sha256":"d0b99829c233a257b75e1eb80baae62cd2b89953dfa6984f1ef590f98dcd8992"},{"path":"spirit_5.glb","size":1892012,"sha256":"3b362e66946fb35d8f981243784bdfc2e4b695756d16b12a04e8fca853f8d0b4"},{"path":"staff_0.glb","size":1809880,"sha256":"0b81edaac2eea3d5dae5247be9c7fb17af4e229d5be2847ddd78e7b535a0cfe3"},{"path":"staff_1.glb","size":1702464,"sha256":"0b854bc22adcdf4dee9d609697806ed3f7e2901c044079fe5b316a86cfc9a6e6"},{"path":"staff_2.glb","size":1822452,"sha256":"0353b2721af5b89709b36efd79d01027e9d65b307bbd4b2bbddc4bf70484b1d8"},{"path":"staff_3.glb","size":1783640,"sha256":"f14ac796604593d027699406cad7a09ac65c6c3f55fb741d9a26ee553c8324bb"},{"path":"staff_4.glb","size":1820880,"sha256":"619ae261c812f0afc7fb41090e113296522ae6081c628f5b46b9325c0114973a"},{"path":"staff_5.glb","size":1799744,"sha256":"f760d5076d9ee6101cdc3479c00dfb46a37497892bdd0e40e6ca07e02bef145b"}]}
@@ -434,6 +434,139 @@ export function clipFor(id, mode, n) {
434
434
  if (mode === 'work') return n % 3 === 2 && h % 2 ? set[1] : set[0];
435
435
  return n % 3 === 2 ? set[1 + (h % (set.length - 1))] : set[0];
436
436
  }
437
+ export const VIBE = {
438
+ // Must stay inside the ground every world keeps clear (Clearance.live_distance in agent-guild-builders).
439
+ roam: { radius: 13.2, half: 12.5, front: 30.5, split: 3, margin: .9, edge: 1.2, head: 2.4 },
440
+ flight: { height: [8.5, 12], lap: [26, 44], reach: [.45, 1], scale: 1.3, top: 2 },
441
+ };
442
+ export function vibeFrame(aspect, top = 0, bottom = 0) {
443
+ const { target, zoom } = overviewFor(aspect), height = CAMERA.height / zoom, width = height * aspect, { edge } = VIBE.roam;
444
+ return { target, right: [edge - width / 2, width / 2 - edge], up: [(bottom - .5) * height + edge, (.5 - top) * height - edge] };
445
+ }
446
+ export function inVibeFrame(frame, x, y, z) {
447
+ const { right, up } = viewBasis(), d = [x - frame.target[0], y - frame.target[1], z - frame.target[2]];
448
+ const r = dot(d, right), u = dot(d, up);
449
+ return r >= frame.right[0] && r <= frame.right[1] && u >= frame.up[0] && u <= frame.up[1];
450
+ }
451
+ function unit(value) {
452
+ let h = hash(value);
453
+ h = Math.imul(h ^ (h >>> 16), 0x45d9f3b); h = Math.imul(h ^ (h >>> 16), 0x45d9f3b);
454
+ return ((h ^ (h >>> 16)) >>> 0) / 4294967296;
455
+ }
456
+ // Clip the visible ground polygon to an axis-aligned interval. Destination
457
+ // geometry only: this neither builds nor checks a route.
458
+ function vibeClip(points, axis, low, high) {
459
+ for (const [edge, sign] of [[low, 1], [high, -1]]) {
460
+ const next = [];
461
+ for (let i = 0; i < points.length; i++) {
462
+ const a = points[i], b = points[(i + 1) % points.length], da = sign * (a[axis] - edge), db = sign * (b[axis] - edge);
463
+ if (da >= 0) next.push(a);
464
+ if ((da < 0) !== (db < 0)) { const t = da / (da - db); next.push({ x: a.x + t * (b.x - a.x), z: a.z + t * (b.z - a.z) }); }
465
+ }
466
+ points = next;
467
+ }
468
+ return points;
469
+ }
470
+ // A missed sample is not an empty view. Obstacle x edges divide the ground
471
+ // into at most 2B+1 bands, each with at most B+1 free z intervals. Check those
472
+ // finite regions, not a grid whose spacing could miss a narrow opening.
473
+ function vibeGap(polygon, boxes, near, far, seed) {
474
+ const { radius, half, front } = VIBE.roam;
475
+ polygon = vibeClip(vibeClip(polygon, 'x', -radius, radius), 'z', near, far);
476
+ const point = points => {
477
+ if (points.length < 3) return null;
478
+ const area = points.reduce((sum, a, i) => { const b = points[(i + 1) % points.length]; return sum + a.x * b.z - b.x * a.z; }, 0);
479
+ if (Math.abs(area) < 1e-10) return null;
480
+ const center = { x: 0, z: 0 };
481
+ for (const p of points) { center.x += p.x / points.length; center.z += p.z / points.length; }
482
+ const p = points[Math.floor(seed * points.length)], t = .25 + seed / 2;
483
+ return { x: center.x + (p.x - center.x) * t, z: center.z + (p.z - center.z) * t };
484
+ };
485
+ const ground = points => {
486
+ const p = point(points);
487
+ if (!p) return null;
488
+ if (Math.hypot(p.x, p.z) < radius || (Math.abs(p.x) <= half && p.z >= 0 && p.z <= front)) return p;
489
+ const apron = point(vibeClip(vibeClip(points, 'x', -half, half), 'z', 0, front));
490
+ if (apron) return apron;
491
+ // The plaza's obstacle excludes the circle's centre from every free
492
+ // region, so its nearest point is on an edge. Move from it into the
493
+ // polygon, staying inside the circle even for a small circular sliver.
494
+ let nearest = null, distance = Infinity;
495
+ for (let i = 0; i < points.length; i++) {
496
+ const a = points[i], b = points[(i + 1) % points.length], dx = b.x - a.x, dz = b.z - a.z;
497
+ const t = clamp(-(a.x * dx + a.z * dz) / (dx * dx + dz * dz || 1), 0, 1), q = { x: a.x + t * dx, z: a.z + t * dz }, d = Math.hypot(q.x, q.z);
498
+ if (d < distance) { nearest = q; distance = d; }
499
+ }
500
+ if (distance >= radius) return null;
501
+ const t = Math.min(.5, (radius - distance) / (2 * Math.hypot(p.x - nearest.x, p.z - nearest.z)));
502
+ return { x: nearest.x + t * (p.x - nearest.x), z: nearest.z + t * (p.z - nearest.z) };
503
+ };
504
+ if (!point(polygon)) return null;
505
+ const left = Math.min(...polygon.map(p => p.x)), right = Math.max(...polygon.map(p => p.x));
506
+ const edges = [...new Set([left, right, ...boxes.flatMap(b => [b.x - b.half, b.x + b.half]).filter(x => x > left && x < right)])].sort((a, b) => a - b);
507
+ const start = Math.floor(seed * (edges.length - 1));
508
+ for (let i = 0; i < edges.length - 1; i++) {
509
+ const k = (start + i) % (edges.length - 1), lo = edges[k], hi = edges[k + 1], x = (lo + hi) / 2;
510
+ const blocked = boxes.filter(b => Math.abs(x - b.x) < b.half).map(b => [b.z - b.half, b.z + b.half]).sort((a, b) => a[0] - b[0]);
511
+ let z = near;
512
+ for (const [low, high] of [...blocked, [far, far]]) {
513
+ if (low > z) {
514
+ const p = ground(vibeClip(vibeClip(polygon, 'x', lo, hi), 'z', z, Math.min(low, far)));
515
+ if (p) return p;
516
+ }
517
+ z = Math.max(z, high);
518
+ if (z >= far) break;
519
+ }
520
+ }
521
+ return null;
522
+ }
523
+ export function vibeStop(id, n, providers, props = [], frame = null) {
524
+ const { radius, half, front, split, margin, head } = VIBE.roam;
525
+ const [near, far] = (n + hash(id)) % 2 ? [split, front] : [-radius, split];
526
+ const boxes = [...obstacles(providers).map(box => ({ ...box, half: box.half + margin })),
527
+ ...props.map(p => ({ x: p.x, z: p.z, half: STAGING.station.half + margin }))];
528
+ const clear = (x, z) => (Math.hypot(x - STAGING.plaza.x, z - STAGING.plaza.z) <= radius || (Math.abs(x) <= half && z >= 0 && z <= front))
529
+ && !boxes.some(box => Math.abs(x - box.x) < box.half && Math.abs(z - box.z) < box.half);
530
+ if (frame) {
531
+ const { right, up, forward } = viewBasis(), [r0, r1] = frame.right, u0 = frame.up[0], u1 = frame.up[1] - head * up[1];
532
+ const at = (r, u) => {
533
+ const s = (-frame.target[1] - u * up[1]) / forward[1];
534
+ return { x: frame.target[0] + r * right[0] + u * up[0] + s * forward[0], z: frame.target[2] + r * right[2] + u * up[2] + s * forward[2] };
535
+ };
536
+ if (r1 > r0 && u1 > u0) {
537
+ const polygon = [at(r0, u0), at(r1, u0), at(r1, u1), at(r0, u1)];
538
+ for (const [low, high] of [[near, far], near === split ? [-radius, split] : [split, front]]) {
539
+ for (let k = 0; k < 48; k++) {
540
+ const p = at(r0 + unit(id + ':vibe:x:' + n + ':' + k) * (r1 - r0), u0 + unit(id + ':vibe:z:' + n + ':' + k) * (u1 - u0));
541
+ const x = round(p.x), z = round(p.z);
542
+ if (z >= low && z <= high && clear(x, z) && inVibeFrame(frame, x, 0, z) && inVibeFrame(frame, x, head, z)) return { x, z };
543
+ }
544
+ const p = vibeGap(polygon, boxes, low, high, unit(id + ':vibe:gap:' + n));
545
+ if (p) return p;
546
+ }
547
+ }
548
+ }
549
+ // No usable visible ground (or no frame): keep the original seeded walk.
550
+ // Never turn a crowded/covered view into a stationary, repeatedly retried unit.
551
+ for (let k = 0; k < 48; k++) {
552
+ const x = round((unit(id + ':vibe:x:' + n + ':' + k) * 2 - 1) * radius), z = round(near + unit(id + ':vibe:z:' + n + ':' + k) * (far - near));
553
+ if (clear(x, z)) return { x, z };
554
+ }
555
+ return { x: STAGING.plaza.x, z: round(STAGING.plaza.z + STAGING.plaza.half + margin + STAGING.station.half) };
556
+ }
557
+ export function vibeFlight(key, seconds, frame, companionHeight = 1) {
558
+ const { height, lap, reach, top, scale } = VIBE.flight, { right, up, forward } = viewBasis();
559
+ const pick = (name, [low, high]) => low + unit(key + ':vibe:' + name) * (high - low);
560
+ const out = pick('reach', reach), turn = unit(key + ':vibe:turn') < .5 ? 1 : -1, lobes = 2 + Math.floor(unit(key + ':vibe:lobes') * 3);
561
+ const angle = turn * 2 * Math.PI * (seconds / pick('lap', lap) + unit(key + ':vibe:start'));
562
+ const wide = out * (1 + .12 * Math.sin(lobes * angle + pick('phase', [0, 2 * Math.PI]))) / 1.12;
563
+ const y = (height[0] + height[1]) / 2 + (height[1] - height[0]) / 2 * Math.sin(2 * angle + pick('rise', [0, 2 * Math.PI]));
564
+ const [r0, r1] = frame.right, u0 = frame.up[0], u1 = frame.up[1] - Math.max(top, companionHeight * scale * up[1]);
565
+ const r = (r0 + r1) / 2 + Math.cos(angle) * Math.max(0, r1 - r0) / 2 * wide;
566
+ const u = (u0 + u1) / 2 + Math.sin(angle) * Math.max(0, u1 - u0) / 2 * wide;
567
+ const s = (y - frame.target[1] - u * up[1]) / forward[1];
568
+ return { x: frame.target[0] + r * right[0] + u * up[0] + s * forward[0], y, z: frame.target[2] + r * right[2] + u * up[2] + s * forward[2] };
569
+ }
437
570
  // Where a session's helpers stand, around it, as the renderer has always placed them.
438
571
  export function helperOffset(i, count) {
439
572
  const angle = (i / Math.min(count, 6)) * Math.PI * 2;
@@ -1,6 +1,6 @@
1
1
  import * as T from './vendor/engine.js';
2
2
  import { WORLDS, PROVIDER_ORDER, characterIndex, GILDED, CAMERA, SUN, minZoom, overviewFor, clampPan, viewBasis, providerPositions, sessionPose, familiarPose, hash,
3
- stage, nextStagingChange, doorFor, arrives, route, clipFor, helperOffset, stationProp, hallActivity, lookTarget, lookLimits, yardExtras, playableClip, STAGING, photoSize, marksFor, SHOWN_HELPERS } from './model.mjs';
3
+ stage, nextStagingChange, doorFor, arrives, route, clipFor, helperOffset, stationProp, hallActivity, lookTarget, lookLimits, yardExtras, playableClip, STAGING, photoSize, marksFor, SHOWN_HELPERS, VIBE, vibeStop, vibeFlight, vibeFrame, inVibeFrame } from './model.mjs';
4
4
 
5
5
  const ASSETS = new URL('./assets/', import.meta.url);
6
6
  const vector = new T.Vector3();
@@ -16,7 +16,7 @@ const pieceFiles = (skin, slot, piece) => (slot === 'companion' ? [0, 1, 2, 3].m
16
16
  const vector2 = new T.Vector2();
17
17
  // How fast characters turn to a new heading, in radians a second, and how
18
18
  // long a clip change blends.
19
- const TURN = 7, FADE = .3;
19
+ const TURN = 7, FADE = .3, TAG = 44;
20
20
  // Models rigged before the staging contract name their clips differently.
21
21
  const LEGACY = { walk: 'working', idle_0: 'resting', idle_1: 'resting', idle_2: 'resting', pause: 'resting', work_0: 'working', work_1: 'working', idle: 'resting', move: 'working' };
22
22
  // How bright a hall's glow grows at low and high activity, over what the
@@ -139,15 +139,15 @@ function disposeWorld(root) {
139
139
  }
140
140
  export class YardRenderer {
141
141
  // clock gives the time staging is judged at; tests pass a fixed one.
142
- constructor(host,labels,{select,open,error=noop,piece=noop,clock=Date.now}) {
143
- this.host=host;this.labels=labels;this.onSelect=select;this.onOpen=open;this.onError=error;this.onPiece=piece;this.clock=clock;
142
+ constructor(host,labels,{select,open,error=noop,piece=noop,clock=Date.now,cover=[]}) {
143
+ this.host=host;this.labels=labels;this.cover=cover;this.onSelect=select;this.onOpen=open;this.onError=error;this.onPiece=piece;this.clock=clock;
144
144
  this.pieceSets={};this.shownPieces={skin:null,pieces:{}};this.pieceLoaders=new Map();this.preloads=new Map();
145
145
  this.scene=new T.Scene();this.units=new Map();this.halls=new Map();this.slots=new Map();this.cache=new Map();
146
146
  this.loadingManager=new T.LoadingManager();
147
147
  this.providers=[];this.sessions=[];this.selected=null;this.world=null;this.skin=null;this.request=0;this.worldRequest=0;this.pending=null;
148
148
  this.staged=null;this.seen=new Set();this.stageTimer=0;this.sparks=[];this.shows=[];this.marks=new T.Group();this.scene.add(this.marks);this.glyphs=null;this.markPlane=new T.PlaneGeometry(1,1);
149
149
  this.props=new Map();this.propSpots=[];this.station=null;this.effects=null;
150
- this.active=false;this.reduced=false;this.disposed=false;this.frame=0;this.lastTime=0;this.dirty=true;
150
+ this.active=false;this.reduced=false;this.vibe=false;this.vibeTime=0;this.vibeFrames={stop:null,flight:vibeFrame(1)};this.disposed=false;this.frame=0;this.lastTime=0;this.dirty=true;
151
151
  this.crowd=null;this.rows=new Map();
152
152
  this.list=Object.assign(document.createElement('div'),{className:'yard-crowd-list',id:'yard-crowd-list-'+(++crowdLists),hidden:true});
153
153
  this.list.setAttribute('role','group');
@@ -195,7 +195,7 @@ export class YardRenderer {
195
195
  this.canvas.addEventListener('pointerdown',this.onPointerDown);
196
196
  this.canvas.addEventListener('click',this.onClick);
197
197
  this.canvas.addEventListener('dblclick',this.onDouble);
198
- this.resizeObserver=new ResizeObserver(()=>this.resize());this.resizeObserver.observe(host);
198
+ this.resizeObserver=new ResizeObserver(()=>this.resize());for(const el of [host,...cover])this.resizeObserver.observe(el);
199
199
  this.resize();this.overview();
200
200
  }
201
201
  async asset(name,url) {
@@ -482,8 +482,22 @@ export class YardRenderer {
482
482
  this.camera.zoom=T.MathUtils.clamp(this.camera.zoom,this.controls.minZoom,this.controls.maxZoom);
483
483
  this.camera.updateProjectionMatrix();
484
484
  this.dirty=true;
485
+ this.frameVibe(w,h);
485
486
  if(this.atOverview)this.overview();else this.drawOnce();
486
487
  }
488
+ frameVibe(w,h) {
489
+ const box=this.host.getBoundingClientRect();let top=0,bottom=0;
490
+ for(const el of this.cover){
491
+ const r=el.getBoundingClientRect();
492
+ if(!r.width||!r.height)continue;
493
+ if(r.top+r.bottom<box.top+box.bottom)top=Math.max(top,r.bottom-box.top);else bottom=Math.max(bottom,box.bottom-r.top);
494
+ }
495
+ top=T.MathUtils.clamp(top,0,h);bottom=T.MathUtils.clamp(bottom,0,h);
496
+ this.vibeFrames={stop:vibeFrame(w/h,(top+TAG)/h,bottom/h),flight:vibeFrame(w/h,top/h,bottom/h)};
497
+ if(!this.vibing())return;
498
+ const {stop}=this.vibeFrames,{head}=VIBE.roam;
499
+ for(const unit of this.units.values())if(unit.moving&&unit.target&&!(inVibeFrame(stop,unit.target.x,0,unit.target.z)&&inVibeFrame(stop,unit.target.x,head,unit.target.z)))this.roam(unit);
500
+ }
487
501
  overview() {
488
502
  const {target,zoom}=overviewFor((this.camera.right-this.camera.left)/(this.camera.top-this.camera.bottom));
489
503
  this.atOverview=true;
@@ -922,6 +936,7 @@ export class YardRenderer {
922
936
  goTo(unit,place) {
923
937
  const target=unit.target;
924
938
  unit.mode=place.mode;
939
+ if(this.vibing()){if(!unit.moving)this.roam(unit);return;}
925
940
  if(target&&target.x===place.x&&target.z===place.z){unit.target=place;if(!unit.moving)this.play(unit);return;}
926
941
  unit.target=place;
927
942
  const at={x:unit.root.position.x,z:unit.root.position.z};
@@ -929,12 +944,33 @@ export class YardRenderer {
929
944
  else {unit.path=route(at,place,this.providers,this.propSpots);unit.moving=true;}
930
945
  this.play(unit);
931
946
  }
947
+ roam(unit) {
948
+ unit.roamed=(unit.roamed??-1)+1;
949
+ const at={x:unit.root.position.x,z:unit.root.position.z},stop=vibeStop(unit.session.id,unit.roamed,this.providers,this.propSpots,this.vibeFrames.stop);
950
+ unit.target=stop;unit.path=route(at,stop,this.providers,this.propSpots);unit.moving=true;
951
+ this.play(unit);
952
+ }
953
+ vibing() { return this.vibe&&!this.reduced; }
954
+ setVibe(value) {
955
+ if(this.vibe===Boolean(value))return;
956
+ const was=this.vibing();
957
+ this.vibe=Boolean(value);
958
+ if(was!==this.vibing())this.restage();
959
+ }
960
+ restage() {
961
+ if(!this.staged)return;
962
+ for(const [id,unit]of this.units){
963
+ const place=this.staged.places.get(id);
964
+ if(place){unit.target=null;this.goTo(unit,place);}
965
+ }
966
+ this.dirty=true;this.drawOnce();
967
+ }
932
968
  // Straight to its place, helpers with it.
933
969
  arrive(unit) {
934
970
  const place=unit.target;
935
971
  unit.root.position.set(place.x,.17,place.z);unit.path=[];unit.heading=place.face;unit.moving=false;
936
972
  if(unit.model)unit.model.rotation.y=unit.heading;
937
- for(const helper of unit.helpers)helper.model.position.set(place.x+helper.offset.x,.27,place.z+helper.offset.z);
973
+ for(const helper of unit.helpers){helper.model.position.set(place.x+helper.offset.x,.27,place.z+helper.offset.z);helper.model.scale.setScalar(.45);}
938
974
  }
939
975
  // The clip a character should be playing now: the walk while it moves,
940
976
  // otherwise its mode's seeded sequence (model.mjs clipFor).
@@ -966,7 +1002,7 @@ export class YardRenderer {
966
1002
  // Moves a walking character along its path at its stride's speed, turning
967
1003
  // smoothly, and turns a standing one to face its place.
968
1004
  advance(unit,dt) {
969
- const root=unit.root.position;
1005
+ const root=unit.root.position,vibing=this.vibing();
970
1006
  let want=unit.target?.face??unit.heading;
971
1007
  if(unit.moving&&unit.path.length) {
972
1008
  let step=unit.speed*dt;
@@ -976,7 +1012,7 @@ export class YardRenderer {
976
1012
  if(d<=step){root.x=next.x;root.z=next.z;unit.path.shift();step-=d;}
977
1013
  else {root.x+=dx/d*step;root.z+=dz/d*step;step=0;}
978
1014
  }
979
- if(!unit.path.length){unit.moving=false;this.play(unit);}
1015
+ if(!unit.path.length){if(vibing)this.roam(unit);else {unit.moving=false;this.play(unit);}}
980
1016
  this.dirty=true;
981
1017
  }
982
1018
  const turn=angleTo(unit.heading,want);
@@ -988,13 +1024,15 @@ export class YardRenderer {
988
1024
  // Helpers trail their character, closing most of the gap in a second.
989
1025
  const pull=1-Math.exp(-4*dt);
990
1026
  for(const helper of unit.helpers){
991
- const tx=root.x+helper.offset.x,tz=root.z+helper.offset.z,p=helper.model.position;
992
- const dx=tx-p.x,dz=tz-p.z,far=Math.hypot(dx,dz);
993
- p.x+=dx*pull;p.z+=dz*pull;
1027
+ const to=vibing?vibeFlight(unit.session.id+':'+helper.id,this.vibeTime,this.vibeFrames.flight,helper.height):{x:root.x+helper.offset.x,y:.27,z:root.z+helper.offset.z};
1028
+ const p=helper.model.position,dx=to.x-p.x,dy=to.y-p.y,dz=to.z-p.z,far=Math.hypot(dx,dz);
1029
+ const size=vibing?VIBE.flight.scale:.45,grow=size-helper.model.scale.x;
1030
+ p.x+=dx*pull;p.y+=dy*pull;p.z+=dz*pull;
1031
+ if(grow)helper.model.scale.setScalar(Math.abs(grow)<1e-3?size:helper.model.scale.x+grow*pull);
994
1032
  if(far>.05)helper.model.rotation.y=Math.atan2(dx,dz);
995
1033
  const moving=far>.08;
996
1034
  if(moving!==helper.moving){helper.moving=moving;this.helperClip(helper,moving?'move':helper.pose);}
997
- if(far>1e-3)this.dirty=true;
1035
+ if(far>1e-3||Math.abs(dy)>1e-3||grow)this.dirty=true;
998
1036
  }
999
1037
  this.fire(unit);
1000
1038
  }
@@ -1134,13 +1172,20 @@ export class YardRenderer {
1134
1172
  spark.points.geometry.attributes.position.needsUpdate=true;
1135
1173
  }
1136
1174
  }
1175
+ restHelper(unit,helper) {
1176
+ helper.model.position.set(unit.root.position.x+helper.offset.x,.27,unit.root.position.z+helper.offset.z);
1177
+ helper.model.scale.setScalar(.45);
1178
+ helper.moving=false;helper.mixer.stopAllAction();helper.action=null;
1179
+ this.helperClip(helper,helper.pose);
1180
+ helper.mixer.update(0);
1181
+ }
1137
1182
  helperClip(helper,name) {
1138
1183
  const clip=helper.clips.find(c=>c.name===name)||helper.clips.find(c=>c.name===LEGACY[name])||helper.clips[0];
1139
1184
  if(!clip)return;
1140
1185
  const action=helper.mixer.clipAction(clip);
1141
1186
  if(action===helper.action)return;
1142
1187
  action.reset().play();
1143
- if(helper.action){if(this.reduced)helper.action.stop();else helper.action.crossFadeTo(action,FADE,false);}
1188
+ if(helper.action)helper.action.crossFadeTo(action,FADE,false);
1144
1189
  helper.action=action;
1145
1190
  }
1146
1191
  clearHelpers(unit) {
@@ -1154,9 +1199,15 @@ export class YardRenderer {
1154
1199
  const kinds=WORLDS[this.skin].helpers,source=this.pieceSource('companion');
1155
1200
  const signature=JSON.stringify([source?.revision??null,agents]);
1156
1201
  if(unit.helperSignature===signature)return;
1157
- this.clearHelpers(unit);
1202
+ const shown=agents.slice(0,SHOWN_HELPERS);
1203
+ unit.helpers=unit.helpers.filter(helper=>{
1204
+ if(shown.some(agent=>agent.id===helper.id))return true;
1205
+ unit.crew.remove(helper.model);helper.mixer.stopAllAction();helper.mixer.uncacheRoot(helper.model);disposeSkeletons(helper.model);
1206
+ return false;
1207
+ });
1158
1208
  unit.helperSignature=signature;
1159
- const rev=unit.revision,generation=this.request;
1209
+ const rev=++unit.revision,generation=this.request;
1210
+ this.dirty=true;this.drawOnce();
1160
1211
  const stale=()=>this.disposed||generation!==this.request||rev!==unit.revision||!unit.root.parent;
1161
1212
  let pieces=null;
1162
1213
  if(source&&agents.length){
@@ -1171,26 +1222,31 @@ export class YardRenderer {
1171
1222
  }
1172
1223
  // The full helper count and all helper details remain in the canonical inspector.
1173
1224
  // Small squads preserve readable character silhouettes at the overview scale.
1174
- await Promise.all(agents.slice(0,SHOWN_HELPERS).map(async(agent,i)=>{
1225
+ await Promise.all(shown.map(async(agent,i)=>{
1226
+ const offset=helperOffset(i,agents.length),existing=unit.helpers.find(helper=>helper.id===agent.id);
1227
+ if(existing){
1228
+ existing.offset=offset;existing.pose=agent.pose;
1229
+ if(this.reduced)this.restHelper(unit,existing);
1230
+ else if(!existing.moving&&!this.vibing())this.helperClip(existing,agent.pose);
1231
+ this.dirty=true;this.drawOnce();
1232
+ return;
1233
+ }
1175
1234
  try {
1176
1235
  const n=hash(agent.name||agent.id)%4;
1177
1236
  const asset=pieces?pieces[n]:await this.asset((agent.shell?kinds.shell:kinds.agent)+n);
1178
1237
  if(stale())return;
1179
1238
  const model=T.cloneSkeleton(asset.scene);
1180
1239
  model.traverse(n=>{if(n.isSkinnedMesh)n.frustumCulled=false;});
1181
- const offset=helperOffset(i,agents.length);
1182
1240
  model.scale.setScalar(.45);model.position.set(unit.root.position.x+offset.x,.27,unit.root.position.z+offset.z);
1183
1241
  unit.crew.add(model);
1184
1242
  const mixer=new T.AnimationMixer(model);
1185
1243
  let yard=null;asset.scene.traverse(n=>{if(n.userData?.yard)yard=n.userData.yard;});
1186
- const helper={id:agent.id,top:yardExtras(yard,'helper').height*model.scale.y,model,mixer,offset,pose:agent.pose,clips:asset.animations,moving:false,action:null};
1187
- this.helperClip(helper,agent.pose);
1188
- mixer.update(.3+(hash(agent.id)%40)/10);
1244
+ const helper={id:agent.id,height:yardExtras(yard,'helper').height,get top(){return this.height*this.model.scale.y;},model,mixer,offset,pose:agent.pose,clips:asset.animations,moving:false,action:null};
1245
+ if(this.reduced)this.restHelper(unit,helper);
1246
+ else {this.helperClip(helper,agent.pose);mixer.update(.3+(hash(agent.id)%40)/10);}
1189
1247
  unit.helpers.push(helper);
1190
1248
  this.dirty=true;this.drawOnce();
1191
1249
  } catch {
1192
- // The next state transition can rebuild this incomplete squad. Routine
1193
- // unchanged updates do not call helpers(), so failure cannot loop.
1194
1250
  if(!stale())unit.helperSignature=null;
1195
1251
  }
1196
1252
  }));
@@ -1343,9 +1399,12 @@ export class YardRenderer {
1343
1399
  this.list.style.top=Math.max(6,ct+half+4+lh<=h-6?ct+half+4:ct-half-4-lh)+'px';
1344
1400
  }
1345
1401
  setReducedMotion(value) {
1402
+ const was=this.vibing();
1346
1403
  this.reduced=value;
1404
+ if(was!==this.vibing())this.restage();
1347
1405
  if(value)for(const unit of this.units.values()){this.unlook(unit);unit.lookYaw=0;unit.lookPitch=0;}
1348
1406
  if(value)for(const unit of this.units.values())if(unit.moving&&unit.target){this.arrive(unit);this.play(unit);}
1407
+ if(value)for(const unit of this.units.values())for(const helper of unit.helpers)this.restHelper(unit,helper);
1349
1408
  if(value){for(const item of this.halls.values())item.level=item.target;this.glow();this.stillEffects();this.clearFireworks();}
1350
1409
  this.dirty=true;this.drawOnce();
1351
1410
  }
@@ -1372,12 +1431,14 @@ export class YardRenderer {
1372
1431
  // Advances walks, turns, helpers, clips, glances, sparks and the halls'
1373
1432
  // glow and effects by dt seconds, without drawing.
1374
1433
  step(dt) {
1434
+ const vibing=this.vibing();
1435
+ if(vibing)this.vibeTime+=dt;
1375
1436
  for(const unit of this.units.values()) {
1376
1437
  this.advance(unit,dt);
1377
1438
  // Characters out of view animate five times a second, enough to stay
1378
1439
  // in step for when the camera comes back to them.
1379
1440
  let step=dt;
1380
- if(unit.offscreen){unit.lag=(unit.lag||0)+dt;if(unit.lag<.2)continue;step=unit.lag;}
1441
+ if(unit.offscreen&&!vibing){unit.lag=(unit.lag||0)+dt;if(unit.lag<.2)continue;step=unit.lag;}
1381
1442
  unit.lag=0;
1382
1443
  this.unlook(unit);
1383
1444
  for(const mixer of unit.mixers)mixer.update(step);
package/web/yard/view.js CHANGED
@@ -169,6 +169,20 @@ export function initYard(controller) {
169
169
  button.disabled = !renderer || disposed || motion.matches;
170
170
  button.title = motion.matches ? 'Fireworks off: reduced motion is enabled' : 'Fireworks in this Yard only';
171
171
  };
172
+ let vibe = false;
173
+ try { vibe = localStorage.getItem('agentGuild.vibe') === 'on'; } catch {}
174
+ const vibeButton = () => {
175
+ const button = $('yard-vibe');
176
+ button.setAttribute('aria-pressed', String(vibe));
177
+ button.disabled = motion.matches;
178
+ button.title = motion.matches ? 'Vibes Mode off: reduced motion is enabled' : vibe ? 'Vibes Mode is on in every Yard' : 'Vibes Mode: everyone roams, in every Yard';
179
+ };
180
+ const toggleVibe = () => {
181
+ vibe = !vibe;
182
+ try { localStorage.setItem('agentGuild.vibe', vibe ? 'on' : 'off'); } catch {}
183
+ renderer?.setVibe(vibe);
184
+ vibeButton();
185
+ };
172
186
  const sceneVisible = () => view === 'yard' && !$('app').hidden && document.visibilityState !== 'hidden' && $('terminal-panel').hidden;
173
187
  const skinEntry = (skin = root.dataset.skin) => (window.agentGuildSkins || []).find((item) => item.id === skin) || null;
174
188
  const yardOff = root.dataset.yard === 'none';
@@ -281,6 +295,7 @@ export function initYard(controller) {
281
295
  open: id => controller.openSession(id),
282
296
  error: () => { if (attempt === sceneAttempt) failScene(); },
283
297
  piece: pieceDrawn,
298
+ cover: [...document.querySelectorAll('.yard-heading > *, #yard-stage .yard-overlay')],
284
299
  });
285
300
  pendingRenderer = candidate;
286
301
  // Appearance can change while the first world is loading.
@@ -299,6 +314,7 @@ export function initYard(controller) {
299
314
  renderer = candidate;
300
315
  lastSkin = skin; lastTheme = theme; lastRevision = revision;
301
316
  renderer.setReducedMotion(motion.matches);
317
+ renderer.setVibe(vibe);
302
318
  renderer.update(snapshot.providers, snapshot.sessions);
303
319
  renderer.select(selected);
304
320
  renderer.setActive(sceneVisible());
@@ -465,6 +481,8 @@ export function initYard(controller) {
465
481
  $('yard-zoom-out').addEventListener('click',() => renderer?.zoom(1/1.2));
466
482
  $('yard-fireworks').addEventListener('click',celebrate);
467
483
  fireworksButton();
484
+ $('yard-vibe').addEventListener('click',toggleVibe);
485
+ vibeButton();
468
486
  $('yard-photo').hidden = !controller.photo;
469
487
  $('yard-photo').addEventListener('click',async () => {
470
488
  let YardPhoto;
@@ -490,7 +508,7 @@ export function initYard(controller) {
490
508
  setView(preferYard && skinAllowsYard() ? 'yard' : 'cards', { remember: false });
491
509
  renderer?.setActive(sceneVisible());
492
510
  };
493
- const motionChange = () => { renderer?.setReducedMotion(motion.matches); fireworksButton(); };
511
+ const motionChange = () => { renderer?.setReducedMotion(motion.matches); fireworksButton(); vibeButton(); };
494
512
  const pageHide = () => renderer?.setActive(false);
495
513
  const observer = new MutationObserver((records) => {
496
514
  if (records.some((record) => record.attributeName === 'data-skin' || record.attributeName === 'data-theme')) onAppearance();
@@ -507,6 +525,7 @@ export function initYard(controller) {
507
525
  return { update, select, setView, closePhoto, celebrate, dispose() {
508
526
  closePhoto();
509
527
  $('yard-fireworks').removeEventListener('click',celebrate);
528
+ $('yard-vibe').removeEventListener('click',toggleVibe);
510
529
  disposed=true; fireworksButton(); sceneAttempt++; worldAttempt++; clearTimeout(swapReveal); observer.disconnect(); pendingRenderer?.dispose(); renderer?.dispose();
511
530
  document.removeEventListener('visibilitychange',visibility);
512
531
  motion.removeEventListener('change',motionChange);
package/web/yard/yard.css CHANGED
@@ -265,3 +265,4 @@
265
265
  @container (max-width:440px) { .yard-play-text { display:none; } .yard-play-link { padding:0 7px; } }
266
266
  @container (max-width:380px) { .yard-play:not(.yard-play-solo) .yard-play-link { display:none; } .yard-play-chip { --play-more-w:44px; } .yard-play-more { padding:0; } .yard-play-more::before { display:none; } .yard-play-more-orb { display:block; grid-area:1 / 1; } .yard-play-caret { grid-area:1 / 1; place-self:end; width:9px; height:6px; margin:0 7px 6px 0; stroke-width:2.2; } }
267
267
  @container (max-width:340px) { :root:is([data-skin="orbital"],[data-skin="gnomeland"],[data-skin="goblinville"],[data-skin="grove"],[data-skin="guild"],[data-skin="professional"]) :is(.yard-eyebrow, #yard-subtitle) { display:none; } }
268
+ #yard-vibe[aria-pressed="true"] { border-color:var(--accent); color:var(--accent); }