@tempoxyz/id 0.0.0-pr-511.sha-77f5d6c → 0.0.0-pr-513.sha-eae3598

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.
@@ -1,3 +1,4 @@
1
+ import * as SheetMachine from './sheet.machine.js';
1
2
  /**
2
3
  * Creates the hidden dialog, and loads the frame of `options.url` in it. `show` posts the request to
3
4
  * the frame once its page loads, and the dialog shows once the page shows the request, or once the
@@ -10,12 +11,7 @@ export declare namespace create {
10
11
  url: string;
11
12
  };
12
13
  /** Where the dialog routes the user's actions. */
13
- type Handlers = {
14
- /** Receives the callback URL that the frame posts. */
15
- onCallback: (url: string) => void;
16
- /** Runs when the user closes the dialog. */
17
- onClose: () => void;
18
- };
14
+ type Handlers = SheetMachine.Handlers;
19
15
  type ReturnType = {
20
16
  /** Closes the dialog, after its exit, and removes it with its frame and any popup it opened. */
21
17
  close: () => void;
@@ -1 +1 @@
1
- {"version":3,"file":"sheet.d.ts","sourceRoot":"","sources":["../../src/internal/sheet.ts"],"names":[],"mappings":"AA2MA;;;;GAIG;AACH,wBAAgB,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,UAAU,CAqQjE;AAED,MAAM,CAAC,OAAO,WAAW,MAAM,CAAC;IAC9B,KAAK,OAAO,GAAG;QACb,+EAA+E;QAC/E,GAAG,EAAE,MAAM,CAAA;KACZ,CAAA;IAED,kDAAkD;IAClD,KAAK,QAAQ,GAAG;QACd,sDAAsD;QACtD,UAAU,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;QACjC,4CAA4C;QAC5C,OAAO,EAAE,MAAM,IAAI,CAAA;KACpB,CAAA;IAED,KAAK,UAAU,GAAG;QAChB,gGAAgG;QAChG,KAAK,EAAE,MAAM,IAAI,CAAA;QACjB;;;WAGG;QACH,SAAS,EAAE,MAAM,OAAO,CAAA;QACxB;;;;WAIG;QACH,IAAI,EAAE,MAAM,OAAO,CAAA;QACnB;;;;WAIG;QACH,QAAQ,EAAE,MAAM,IAAI,CAAA;QACpB;;;WAGG;QACH,IAAI,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,KAAK,IAAI,CAAA;QACrC;;;WAGG;QACH,OAAO,EAAE,MAAM,OAAO,GAAG,SAAS,CAAA;KACnC,CAAA;IAED,UAAU,IAAI,CAAC;QACb,KAAK,OAAO,GAAG,QAAQ,GAAG;YACxB,gFAAgF;YAChF,QAAQ,EAAE,MAAM,CAAA;YAChB,6DAA6D;YAC7D,OAAO,EAAE,MAAM,CAAA;YACf,8FAA8F;YAC9F,OAAO,EAAE,MAAM,CAAA;SAChB,CAAA;KACF;CACF"}
1
+ {"version":3,"file":"sheet.d.ts","sourceRoot":"","sources":["../../src/internal/sheet.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,YAAY,MAAM,oBAAoB,CAAA;AAkJlD;;;;GAIG;AACH,wBAAgB,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,UAAU,CA8MjE;AAED,MAAM,CAAC,OAAO,WAAW,MAAM,CAAC;IAC9B,KAAK,OAAO,GAAG;QACb,+EAA+E;QAC/E,GAAG,EAAE,MAAM,CAAA;KACZ,CAAA;IAED,kDAAkD;IAClD,KAAK,QAAQ,GAAG,YAAY,CAAC,QAAQ,CAAA;IAErC,KAAK,UAAU,GAAG;QAChB,gGAAgG;QAChG,KAAK,EAAE,MAAM,IAAI,CAAA;QACjB;;;WAGG;QACH,SAAS,EAAE,MAAM,OAAO,CAAA;QACxB;;;;WAIG;QACH,IAAI,EAAE,MAAM,OAAO,CAAA;QACnB;;;;WAIG;QACH,QAAQ,EAAE,MAAM,IAAI,CAAA;QACpB;;;WAGG;QACH,IAAI,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,KAAK,IAAI,CAAA;QACrC;;;WAGG;QACH,OAAO,EAAE,MAAM,OAAO,GAAG,SAAS,CAAA;KACnC,CAAA;IAED,UAAU,IAAI,CAAC;QACb,KAAK,OAAO,GAAG,QAAQ,GAAG;YACxB,gFAAgF;YAChF,QAAQ,EAAE,MAAM,CAAA;YAChB,6DAA6D;YAC7D,OAAO,EAAE,MAAM,CAAA;YACf,8FAA8F;YAC9F,OAAO,EAAE,MAAM,CAAA;SAChB,CAAA;KACF;CACF"}
@@ -4,21 +4,20 @@
4
4
  * hidden, before the sign-in has a request. `show` posts the request to the frame, and the dialog
5
5
  * shows once the page shows it. `hide` keeps the frame loaded, and the next `show` posts its request
6
6
  * to the same frame. When the frame cannot load, or the sign-in needs a page that the frame cannot
7
- * show, the dialog offers a popup, which opens from the user's click.
7
+ * show, the dialog offers a popup, which opens from the user's click. An actor of `SheetMachine`
8
+ * holds the lifecycle, and this module provides its DOM work, its messages, and its popup.
8
9
  * @module
9
10
  */
10
11
  /* istanbul ignore file -- The dialog, its frame, and the popup window exist only in a browser. */
12
+ import { assertEvent, createActor, fromCallback } from 'xstate';
11
13
  import * as Popup from './popup.js';
12
- /** Milliseconds after the frame's `load` event that its page has to send `loaded`. */
13
- const loadDelay = 3_000;
14
+ import * as SheetMachine from './sheet.machine.js';
14
15
  /** The stylesheets that {@link adopt} constructed, which a document adopts once. */
15
16
  const adopted = new WeakSet();
16
17
  /** The attribute that marks the dialog, which the styles select. */
17
18
  const attribute = 'data-tempo-id-dialog';
18
19
  /** The curve of the dialog's entrance and exit, which eases out like a native sheet. */
19
20
  const curve = 'cubic-bezier(0.32, 0.72, 0, 1)';
20
- /** Milliseconds of the dialog's exit, which `close` waits for before it removes the dialog. */
21
- const exit = 240;
22
21
  /**
23
22
  * The dialog's styles: a card of 380 pixels, or a bottom sheet below 480 pixels of width. The frame
24
23
  * draws the sign-in, so the dialog only places and sizes it. A closed dialog keeps its size off
@@ -120,17 +119,17 @@ dialog[${attribute}] [data-panel] button:not([data-primary]) {
120
119
  animation: tempo-id-fade-in 320ms ${curve};
121
120
  }
122
121
  dialog[${attribute}][data-closing] {
123
- animation: tempo-id-card-out ${exit}ms ${curve} forwards;
122
+ animation: tempo-id-card-out ${SheetMachine.exit}ms ${curve} forwards;
124
123
  }
125
124
  dialog[${attribute}][data-closing]::backdrop {
126
- animation: tempo-id-fade-out ${exit}ms ${curve} forwards;
125
+ animation: tempo-id-fade-out ${SheetMachine.exit}ms ${curve} forwards;
127
126
  }
128
127
  @media (max-width: 480px) {
129
128
  dialog[${attribute}][open] {
130
129
  animation: tempo-id-sheet-in 500ms ${curve};
131
130
  }
132
131
  dialog[${attribute}][data-closing] {
133
- animation: tempo-id-sheet-out ${exit}ms ${curve} forwards;
132
+ animation: tempo-id-sheet-out ${SheetMachine.exit}ms ${curve} forwards;
134
133
  }
135
134
  }
136
135
  }
@@ -175,64 +174,136 @@ export function create(options) {
175
174
  frame.setAttribute('sandbox', 'allow-forms allow-same-origin allow-scripts');
176
175
  frame.setAttribute('title', 'Sign in with Tempo');
177
176
  frame.style.height = '376px';
178
- // The sign-in that the dialog shows, from `show` until `hide` or `close`.
179
- let current;
180
- // Whether the dialog offers a popup in place of the frame, which then takes no other request.
181
- let failed = false;
182
- let hiding;
183
- let loaded = false;
184
- let popup = null;
185
- let request;
186
- let settled = false;
187
- let trusted;
188
- // Stops taking the popup's callback, and checking whether the user closed it.
189
- let unwatch;
190
- const timers = new Set();
191
- const later = (fn, delay) => {
192
- timers.add(setTimeout(fn, delay));
193
- };
194
177
  const listener = (event) => {
195
178
  // Only this frame's page, at Tempo ID's origin, sends the sign-in's messages.
196
179
  if (event.origin !== origin || event.source !== frame.contentWindow)
197
180
  return;
198
181
  const message = parse(event.data);
199
- if (!message)
200
- return;
201
- if (message.type === 'tempo-id:embed.loaded') {
202
- loaded = true;
203
- trusted = message.trusted;
204
- send();
205
- return;
206
- }
207
- if (message.type === 'tempo-id:embed.resize') {
208
- frame.style.height = `${message.height}px`;
209
- return;
210
- }
211
- // A message about a request names its ID, so one about an earlier sign-in in the same frame
212
- // acts on nothing. A popup without an ID concerns the frame, which takes no request.
213
- if (message.id !== undefined && message.id !== current?.id)
214
- return;
215
- if (message.type === 'tempo-id:embed.ready')
216
- settle();
217
- else if (message.type === 'tempo-id:embed.callback')
218
- current?.handlers.onCallback(message.url);
219
- else if (message.type === 'tempo-id:embed.close')
220
- current?.handlers.onClose();
221
- else
222
- fallback('popup');
182
+ if (message)
183
+ actor.send(message);
223
184
  };
185
+ // The offer of a popup, which `offer` fills in place of the frame.
186
+ const panel = document.createElement('div');
187
+ panel.setAttribute('data-panel', '');
188
+ const text = document.createElement('p');
189
+ const primary = document.createElement('button');
190
+ primary.setAttribute('data-primary', '');
191
+ primary.type = 'button';
192
+ primary.textContent = 'Continue';
193
+ const cancel = document.createElement('button');
194
+ cancel.type = 'button';
195
+ cancel.textContent = 'Cancel';
196
+ panel.appendChild(text);
197
+ panel.appendChild(primary);
198
+ panel.appendChild(cancel);
199
+ const actor = createActor(SheetMachine.machine.provide({
200
+ actions: {
201
+ animate: () => {
202
+ // The exit plays before the dialog leaves the top layer, and the frame takes no input in
203
+ // it, since the sign-in already ended.
204
+ dialog.inert = true;
205
+ dialog.setAttribute('data-closing', '');
206
+ },
207
+ blocked: () => {
208
+ text.textContent =
209
+ 'The browser blocked the window. Allow pop-ups for this site, and select Continue again.';
210
+ },
211
+ conceal: () => {
212
+ dialog.close();
213
+ dialog.removeAttribute('data-closing');
214
+ dialog.setAttribute('aria-hidden', 'true');
215
+ dialog.inert = true;
216
+ },
217
+ end: ({ context }) => {
218
+ // The frame stays loaded, so it ends the request's sign-in, and an action that waits for
219
+ // the request's check runs nothing.
220
+ if (!context.current)
221
+ return;
222
+ frame.contentWindow?.postMessage({ id: context.current.id, type: 'tempo-id:embed.end' }, origin);
223
+ },
224
+ offer: ({ event }) => {
225
+ assertEvent(event, 'fallback');
226
+ frame.remove();
227
+ text.textContent =
228
+ event.reason === 'popup'
229
+ ? 'Continue in a new window to finish signing in.'
230
+ : 'Sign in with Tempo in a new window.';
231
+ dialog.appendChild(panel);
232
+ },
233
+ onCallback: ({ context, event }) => {
234
+ assertEvent(event, ['embed.callback', 'popup.callback']);
235
+ context.current?.handlers.onCallback(event.url);
236
+ },
237
+ onClose: ({ context }) => context.current?.handlers.onClose(),
238
+ opened: () => {
239
+ text.textContent = 'Continue in the new window.';
240
+ primary.remove();
241
+ },
242
+ post: ({ context }) => {
243
+ if (!context.current || context.request === undefined)
244
+ return;
245
+ // Only Tempo ID's page receives the request, since the target is its exact origin.
246
+ frame.contentWindow?.postMessage({
247
+ id: context.current.id,
248
+ request: context.request,
249
+ type: 'tempo-id:embed.request',
250
+ }, origin);
251
+ },
252
+ remove: () => {
253
+ dialog.close();
254
+ dialog.remove();
255
+ },
256
+ resize: ({ event }) => {
257
+ assertEvent(event, 'embed.resize');
258
+ frame.style.height = `${event.height}px`;
259
+ },
260
+ reveal: () => {
261
+ if (dialog.open)
262
+ return;
263
+ dialog.removeAttribute('aria-hidden');
264
+ dialog.inert = false;
265
+ dialog.showModal();
266
+ },
267
+ unlisten: () => window.removeEventListener('message', listener),
268
+ },
269
+ actors: {
270
+ popup: fromCallback((options) => {
271
+ const { input, receive, sendBack } = options;
272
+ // A popup blocker accepts `window.open` only within the click, which sends the event
273
+ // that starts this actor.
274
+ const popup = Popup.openPopup(input.url);
275
+ if (!popup) {
276
+ sendBack({ type: 'popup.blocked' });
277
+ return;
278
+ }
279
+ sendBack({ type: 'popup.opened' });
280
+ // The popup's page posts the callback here, and a user who closes the popup closes the
281
+ // sign-in.
282
+ const unwatch = Popup.watchPopup(popup, {
283
+ onCallback: (url) => sendBack({ type: 'popup.callback', url }),
284
+ onClose: () => sendBack({ type: 'popup.close' }),
285
+ origin,
286
+ });
287
+ receive(() => unwatch());
288
+ return () => {
289
+ unwatch();
290
+ popup.close();
291
+ };
292
+ }),
293
+ },
294
+ })).start();
224
295
  window.addEventListener('message', listener);
225
296
  dialog.addEventListener('cancel', (event) => {
226
297
  event.preventDefault();
227
- current?.handlers.onClose();
298
+ actor.send({ type: 'dismiss' });
228
299
  });
229
300
  // A click on the backdrop targets the dialog itself, outside its content.
230
301
  dialog.addEventListener('click', (event) => {
231
302
  if (event.target === dialog)
232
- current?.handlers.onClose();
303
+ actor.send({ type: 'dismiss' });
233
304
  });
234
- // Tempo ID refuses a frame with `frame-ancestors 'none'`, which loads an error page without a
235
- // message, so a frame without `loaded` soon after `load` offers the popup.
305
+ cancel.addEventListener('click', () => actor.send({ type: 'dismiss' }));
306
+ primary.addEventListener('click', () => actor.send({ type: 'popup.open' }));
236
307
  frame.addEventListener('load', () => {
237
308
  // A `load` of the frame's first document, `about:blank`, does not count. It is the only document
238
309
  // that this page can read, since Tempo ID's page and the browser's refusal are on another origin.
@@ -244,169 +315,40 @@ export function create(options) {
244
315
  return false;
245
316
  }
246
317
  })();
247
- if (blank)
248
- return;
249
- later(() => {
250
- if (!loaded && !failed)
251
- fallback('unavailable');
252
- }, loadDelay);
318
+ if (!blank)
319
+ actor.send({ type: 'frame.load' });
253
320
  });
254
- /** Posts the request to the page, once `show` has one and the page loaded. */
255
- function send() {
256
- if (!loaded || !current || !request)
257
- return;
258
- // Only Tempo ID's page receives the request, since the target is its exact origin.
259
- frame.contentWindow?.postMessage({ id: current.id, request, type: 'tempo-id:embed.request' }, origin);
260
- request = undefined;
261
- }
262
- /** Marks the request ready or the frame failed, and shows the dialog during a sign-in. */
263
- function settle() {
264
- settled = true;
265
- if (current)
266
- reveal();
267
- }
268
- /** Shows the dialog, and admits it to the accessibility tree and to focus. */
269
- function reveal() {
270
- if (dialog.open)
271
- return;
272
- dialog.removeAttribute('aria-hidden');
273
- dialog.inert = false;
274
- dialog.showModal();
275
- }
276
- /** Takes the dialog out of the top layer, the accessibility tree, and focus, with its frame. */
277
- function conceal() {
278
- dialog.close();
279
- dialog.removeAttribute('data-closing');
280
- dialog.setAttribute('aria-hidden', 'true');
281
- dialog.inert = true;
282
- }
283
- /** Replaces the frame with the offer of a popup, which the user's click opens. */
284
- function fallback(reason) {
285
- failed = true;
286
- frame.remove();
287
- const panel = document.createElement('div');
288
- panel.setAttribute('data-panel', '');
289
- const text = document.createElement('p');
290
- text.textContent =
291
- reason === 'popup'
292
- ? 'Continue in a new window to finish signing in.'
293
- : 'Sign in with Tempo in a new window.';
294
- const primary = document.createElement('button');
295
- primary.setAttribute('data-primary', '');
296
- primary.type = 'button';
297
- primary.textContent = 'Continue';
298
- const cancel = document.createElement('button');
299
- cancel.type = 'button';
300
- cancel.textContent = 'Cancel';
301
- cancel.addEventListener('click', () => current?.handlers.onClose());
302
- primary.addEventListener('click', () => {
303
- // `show` sets the URL before the dialog shows the offer.
304
- if (!current)
305
- return;
306
- // A popup blocker accepts `window.open` only within the click.
307
- popup = Popup.openPopup(current.popupUrl);
308
- if (!popup) {
309
- text.textContent =
310
- 'The browser blocked the window. Allow pop-ups for this site, and select Continue again.';
311
- return;
312
- }
313
- text.textContent = 'Continue in the new window.';
314
- primary.remove();
315
- // The popup's page posts the callback here, and a user who closes the popup closes the sign-in.
316
- unwatch = Popup.watchPopup(popup, {
317
- onCallback: (url) => current?.handlers.onCallback(url),
318
- onClose: () => current?.handlers.onClose(),
319
- origin,
320
- });
321
- });
322
- panel.appendChild(text);
323
- panel.appendChild(primary);
324
- panel.appendChild(cancel);
325
- dialog.appendChild(panel);
326
- settle();
327
- }
328
321
  frame.src = url;
329
322
  dialog.appendChild(frame);
330
323
  document.body.appendChild(dialog);
324
+ /** Returns whether the dialog is open and plays its exit, which reduced motion turns off. */
325
+ const animate = () => dialog.open && motion();
331
326
  return {
332
327
  close() {
333
- for (const timer of timers)
334
- clearTimeout(timer);
335
- clearTimeout(hiding);
336
- current = undefined;
337
- window.removeEventListener('message', listener);
338
- unwatch?.();
339
- popup?.close();
340
- const remove = () => {
341
- dialog.close();
342
- dialog.remove();
343
- };
344
- if (!dialog.open || !motion())
345
- return remove();
346
- // The exit plays before the dialog leaves the top layer, and the frame takes no input in it,
347
- // since the sign-in already ended.
348
- dialog.inert = true;
349
- dialog.setAttribute('data-closing', '');
350
- setTimeout(remove, exit);
328
+ actor.send({ animate: animate(), type: 'close' });
351
329
  },
352
330
  connected: () => dialog.isConnected,
353
331
  hide() {
354
- if (failed)
332
+ if (SheetMachine.failed(actor.getSnapshot()))
355
333
  return false;
356
- for (const timer of timers)
357
- clearTimeout(timer);
358
- timers.clear();
359
- // The frame stays loaded, so it ends the request's sign-in, and an action that waits for the
360
- // request's check runs nothing.
361
- if (loaded && current)
362
- frame.contentWindow?.postMessage({ id: current.id, type: 'tempo-id:embed.end' }, origin);
363
- current = undefined;
364
- request = undefined;
365
- settled = false;
366
- if (!dialog.open || !motion()) {
367
- conceal();
368
- return true;
369
- }
370
- // The exit plays before the dialog leaves the top layer, and the frame takes no input in it,
371
- // since the sign-in already ended.
372
- dialog.inert = true;
373
- dialog.setAttribute('data-closing', '');
374
- hiding = setTimeout(() => {
375
- hiding = undefined;
376
- conceal();
377
- }, exit);
334
+ actor.send({ animate: animate(), type: 'hide' });
378
335
  return true;
379
336
  },
380
337
  received() {
381
- unwatch?.();
382
- unwatch = undefined;
338
+ actor.send({ type: 'received' });
383
339
  },
384
340
  show(value) {
385
- // A dialog that still plays its exit leaves the top layer at once, so its frame is out of view
386
- // and takes the request.
387
- if (hiding !== undefined) {
388
- clearTimeout(hiding);
389
- hiding = undefined;
390
- conceal();
391
- }
392
- const id = crypto.randomUUID();
393
- current = {
394
- handlers: { onCallback: value.onCallback, onClose: value.onClose },
395
- id,
341
+ actor.send({
342
+ id: crypto.randomUUID(),
343
+ onCallback: value.onCallback,
344
+ onClose: value.onClose,
396
345
  popupUrl: value.popupUrl,
397
- };
398
- request = value.request;
399
- // A frame that failed shows the offer of a popup at once. Any other shows this request first.
400
- settled = failed;
401
- send();
402
- later(() => {
403
- if (!settled && current?.id === id)
404
- fallback('unavailable');
405
- }, value.timeout);
406
- if (settled)
407
- reveal();
346
+ request: value.request,
347
+ timeout: value.timeout,
348
+ type: 'show',
349
+ });
408
350
  },
409
- trusted: () => trusted,
351
+ trusted: () => SheetMachine.trusted(actor.getSnapshot()),
410
352
  };
411
353
  }
412
354
  /**
@@ -432,27 +374,31 @@ function adopt() {
432
374
  style.textContent = css;
433
375
  document.head.appendChild(style);
434
376
  }
435
- /** Returns `data` as a message from the page, or `undefined` for any other value. */
377
+ /**
378
+ * Returns `data` as a message from the page, with the `tempo-id:` prefix removed from its type, or
379
+ * `undefined` for any other value.
380
+ */
436
381
  function parse(data) {
437
382
  if (typeof data !== 'object' || data === null || !('type' in data))
438
383
  return undefined;
439
384
  const value = data;
440
385
  const id = typeof value.id === 'string' ? value.id : undefined;
441
386
  if (value.type === 'tempo-id:embed.loaded')
442
- return { trusted: value.trusted === true, type: value.type };
387
+ return { trusted: value.trusted === true, type: 'embed.loaded' };
443
388
  if (value.type === 'tempo-id:embed.resize' &&
444
389
  typeof value.height === 'number')
445
- return { height: value.height, type: value.type };
390
+ return { height: value.height, type: 'embed.resize' };
446
391
  if (value.type === 'tempo-id:embed.popup')
447
- return { id, type: value.type };
392
+ return { id, type: 'embed.popup' };
448
393
  // Every other message concerns a request, so it names one.
449
394
  if (id === undefined)
450
395
  return undefined;
451
- if (value.type === 'tempo-id:embed.close' ||
452
- value.type === 'tempo-id:embed.ready')
453
- return { id, type: value.type };
396
+ if (value.type === 'tempo-id:embed.close')
397
+ return { id, type: 'embed.close' };
398
+ if (value.type === 'tempo-id:embed.ready')
399
+ return { id, type: 'embed.ready' };
454
400
  if (value.type === 'tempo-id:embed.callback' && typeof value.url === 'string')
455
- return { id, type: value.type, url: value.url };
401
+ return { id, type: 'embed.callback', url: value.url };
456
402
  return undefined;
457
403
  }
458
404
  /** Returns whether the dialog plays its entrance and exit, which reduced motion turns off. */
@@ -1 +1 @@
1
- {"version":3,"file":"sheet.js","sourceRoot":"","sources":["../../src/internal/sheet.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sheet.js","sourceRoot":"","sources":["../../src/internal/sheet.ts"],"names":[],"mappings":"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"}