@zoreal/oauth2-js 0.1.14 → 0.1.15

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.
package/dist/index.js CHANGED
@@ -14,7 +14,7 @@ function unsafeClaims(idToken) {
14
14
 
15
15
  // src/wire.ts
16
16
  var WIRE_VERSION = 1;
17
- var SDK_VERSION = "0.1.14";
17
+ var SDK_VERSION = "0.1.15";
18
18
  var SDK_NAME = "@zoreal/oauth2-js";
19
19
  var DEFAULT_ISSUER = "https://id.zoreal.com";
20
20
  var POLL_INTERVAL_MS = 2e3;
@@ -166,6 +166,7 @@ var en = {
166
166
  titlePresence: "Scan to prove you are a real human",
167
167
  titleApprove: "Approve on your phone",
168
168
  bodyScan: "Scan with your phone camera or the ZOREAL ID app.",
169
+ bodyLink: "Approve this sign-in in the ZOREAL ID app on this phone.",
169
170
  bodyApprove: "Approve the login in your ZOREAL ID app.",
170
171
  bodyEnrolling: "Finish setting up ZOREAL ID on your phone, then approve the login.",
171
172
  waiting: "Waiting for scan",
@@ -177,7 +178,8 @@ var en = {
177
178
  cancel: "Cancel",
178
179
  close: "Close",
179
180
  qrAlt: "QR code to sign in with ZOREAL",
180
- buttonContinue: "Continue with ZOREAL"
181
+ buttonContinue: "Continue with ZOREAL",
182
+ openApp: "Open ZOREAL ID"
181
183
  };
182
184
  var TRANSLATIONS = {
183
185
  en,
@@ -187,6 +189,7 @@ var TRANSLATIONS = {
187
189
  titlePresence: "Skanna f\xF6r att bevisa att du \xE4r en riktig m\xE4nniska",
188
190
  titleApprove: "Godk\xE4nn p\xE5 telefonen",
189
191
  bodyScan: "Skanna med telefonens kamera eller ZOREAL ID-appen.",
192
+ bodyLink: "Godk\xE4nn inloggningen i ZOREAL ID-appen p\xE5 den h\xE4r telefonen.",
190
193
  bodyApprove: "Godk\xE4nn inloggningen i ZOREAL ID-appen.",
191
194
  bodyEnrolling: "Slutf\xF6r konfigurationen av ZOREAL ID p\xE5 telefonen och godk\xE4nn sedan inloggningen.",
192
195
  waiting: "V\xE4ntar p\xE5 skanning",
@@ -198,7 +201,8 @@ var TRANSLATIONS = {
198
201
  cancel: "Avbryt",
199
202
  close: "St\xE4ng",
200
203
  qrAlt: "QR-kod f\xF6r att logga in med ZOREAL",
201
- buttonContinue: "Forts\xE4tt med ZOREAL"
204
+ buttonContinue: "Forts\xE4tt med ZOREAL",
205
+ openApp: "\xD6ppna ZOREAL ID"
202
206
  },
203
207
  es: {
204
208
  title: "Escanea para iniciar sesi\xF3n",
@@ -206,6 +210,7 @@ var TRANSLATIONS = {
206
210
  titlePresence: "Escanea para demostrar que eres una persona real",
207
211
  titleApprove: "Apru\xE9balo en tu tel\xE9fono",
208
212
  bodyScan: "Escanea con la c\xE1mara de tu tel\xE9fono o con la app ZOREAL ID.",
213
+ bodyLink: "Aprueba este inicio de sesi\xF3n en la app ZOREAL ID de este tel\xE9fono.",
209
214
  bodyApprove: "Aprueba el inicio de sesi\xF3n en tu app ZOREAL ID.",
210
215
  bodyEnrolling: "Termina de configurar ZOREAL ID en tu tel\xE9fono y luego aprueba el inicio de sesi\xF3n.",
211
216
  waiting: "Esperando el escaneo",
@@ -217,7 +222,8 @@ var TRANSLATIONS = {
217
222
  cancel: "Cancelar",
218
223
  close: "Cerrar",
219
224
  qrAlt: "C\xF3digo QR para iniciar sesi\xF3n con ZOREAL",
220
- buttonContinue: "Continuar con ZOREAL"
225
+ buttonContinue: "Continuar con ZOREAL",
226
+ openApp: "Abrir ZOREAL ID"
221
227
  },
222
228
  pt: {
223
229
  title: "Digitalize para entrar",
@@ -225,6 +231,7 @@ var TRANSLATIONS = {
225
231
  titlePresence: "Digitalize para provar que \xE9 uma pessoa real",
226
232
  titleApprove: "Aprove no seu telefone",
227
233
  bodyScan: "Digitalize com a c\xE2mara do seu telefone ou com a app ZOREAL ID.",
234
+ bodyLink: "Aprove este in\xEDcio de sess\xE3o na app ZOREAL ID neste telem\xF3vel.",
228
235
  bodyApprove: "Aprove o login no app ZOREAL ID.",
229
236
  bodyEnrolling: "Termine de configurar o ZOREAL ID no seu telefone e depois aprove o login.",
230
237
  waiting: "Aguardando digitaliza\xE7\xE3o",
@@ -236,7 +243,8 @@ var TRANSLATIONS = {
236
243
  cancel: "Cancelar",
237
244
  close: "Fechar",
238
245
  qrAlt: "C\xF3digo QR para entrar com ZOREAL",
239
- buttonContinue: "Continuar com ZOREAL"
246
+ buttonContinue: "Continuar com ZOREAL",
247
+ openApp: "Abrir ZOREAL ID"
240
248
  },
241
249
  fr: {
242
250
  title: "Scannez pour vous connecter",
@@ -244,6 +252,7 @@ var TRANSLATIONS = {
244
252
  titlePresence: "Scannez pour prouver que vous \xEAtes bien un humain",
245
253
  titleApprove: "Approuvez sur votre t\xE9l\xE9phone",
246
254
  bodyScan: "Scannez avec l'appareil photo de votre t\xE9l\xE9phone ou l'app ZOREAL ID.",
255
+ bodyLink: "Approuvez cette connexion dans l'app ZOREAL ID sur ce t\xE9l\xE9phone.",
247
256
  bodyApprove: "Approuvez la connexion dans votre app ZOREAL ID.",
248
257
  bodyEnrolling: "Terminez la configuration de ZOREAL ID sur votre t\xE9l\xE9phone, puis approuvez la connexion.",
249
258
  waiting: "En attente du scan",
@@ -255,7 +264,8 @@ var TRANSLATIONS = {
255
264
  cancel: "Annuler",
256
265
  close: "Fermer",
257
266
  qrAlt: "Code QR pour se connecter avec ZOREAL",
258
- buttonContinue: "Continuer avec ZOREAL"
267
+ buttonContinue: "Continuer avec ZOREAL",
268
+ openApp: "Ouvrir ZOREAL ID"
259
269
  },
260
270
  de: {
261
271
  title: "Zum Anmelden scannen",
@@ -263,6 +273,7 @@ var TRANSLATIONS = {
263
273
  titlePresence: "Scannen, um zu beweisen, dass Sie ein echter Mensch sind",
264
274
  titleApprove: "Auf dem Handy best\xE4tigen",
265
275
  bodyScan: "Mit der Handykamera oder der ZOREAL ID App scannen.",
276
+ bodyLink: "Best\xE4tigen Sie diese Anmeldung in der ZOREAL ID-App auf diesem Telefon.",
266
277
  bodyApprove: "Anmeldung in der ZOREAL ID App best\xE4tigen.",
267
278
  bodyEnrolling: "ZOREAL ID auf dem Handy fertig einrichten und dann die Anmeldung best\xE4tigen.",
268
279
  waiting: "Warten auf Scan",
@@ -274,7 +285,8 @@ var TRANSLATIONS = {
274
285
  cancel: "Abbrechen",
275
286
  close: "Schlie\xDFen",
276
287
  qrAlt: "QR-Code f\xFCr die Anmeldung mit ZOREAL",
277
- buttonContinue: "Weiter mit ZOREAL"
288
+ buttonContinue: "Weiter mit ZOREAL",
289
+ openApp: "ZOREAL ID \xF6ffnen"
278
290
  },
279
291
  ru: {
280
292
  title: "\u041E\u0442\u0441\u043A\u0430\u043D\u0438\u0440\u0443\u0439\u0442\u0435, \u0447\u0442\u043E\u0431\u044B \u0432\u043E\u0439\u0442\u0438",
@@ -282,6 +294,7 @@ var TRANSLATIONS = {
282
294
  titlePresence: "\u041E\u0442\u0441\u043A\u0430\u043D\u0438\u0440\u0443\u0439\u0442\u0435, \u0447\u0442\u043E\u0431\u044B \u0434\u043E\u043A\u0430\u0437\u0430\u0442\u044C, \u0447\u0442\u043E \u0432\u044B \u0440\u0435\u0430\u043B\u044C\u043D\u044B\u0439 \u0447\u0435\u043B\u043E\u0432\u0435\u043A",
283
295
  titleApprove: "\u041F\u043E\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u0435 \u043D\u0430 \u0442\u0435\u043B\u0435\u0444\u043E\u043D\u0435",
284
296
  bodyScan: "\u041E\u0442\u0441\u043A\u0430\u043D\u0438\u0440\u0443\u0439\u0442\u0435 \u043A\u0430\u043C\u0435\u0440\u043E\u0439 \u0442\u0435\u043B\u0435\u0444\u043E\u043D\u0430 \u0438\u043B\u0438 \u0447\u0435\u0440\u0435\u0437 \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0435 ZOREAL ID.",
297
+ bodyLink: "\u041F\u043E\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u0435 \u044D\u0442\u043E\u0442 \u0432\u0445\u043E\u0434 \u0432 \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0438 ZOREAL ID \u043D\u0430 \u044D\u0442\u043E\u043C \u0442\u0435\u043B\u0435\u0444\u043E\u043D\u0435.",
285
298
  bodyApprove: "\u041F\u043E\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u0435 \u0432\u0445\u043E\u0434 \u0432 \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0438 ZOREAL ID.",
286
299
  bodyEnrolling: "\u0417\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u0435 \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0443 ZOREAL ID \u043D\u0430 \u0442\u0435\u043B\u0435\u0444\u043E\u043D\u0435, \u0437\u0430\u0442\u0435\u043C \u043F\u043E\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u0435 \u0432\u0445\u043E\u0434.",
287
300
  waiting: "\u041E\u0436\u0438\u0434\u0430\u043D\u0438\u0435 \u0441\u043A\u0430\u043D\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u044F",
@@ -293,7 +306,8 @@ var TRANSLATIONS = {
293
306
  cancel: "\u041E\u0442\u043C\u0435\u043D\u0430",
294
307
  close: "\u0417\u0430\u043A\u0440\u044B\u0442\u044C",
295
308
  qrAlt: "QR-\u043A\u043E\u0434 \u0434\u043B\u044F \u0432\u0445\u043E\u0434\u0430 \u0447\u0435\u0440\u0435\u0437 ZOREAL",
296
- buttonContinue: "\u041F\u0440\u043E\u0434\u043E\u043B\u0436\u0438\u0442\u044C \u0441 ZOREAL"
309
+ buttonContinue: "\u041F\u0440\u043E\u0434\u043E\u043B\u0436\u0438\u0442\u044C \u0441 ZOREAL",
310
+ openApp: "\u041E\u0442\u043A\u0440\u044B\u0442\u044C ZOREAL ID"
297
311
  },
298
312
  ja: {
299
313
  title: "\u30B9\u30AD\u30E3\u30F3\u3057\u3066\u30ED\u30B0\u30A4\u30F3",
@@ -301,6 +315,7 @@ var TRANSLATIONS = {
301
315
  titlePresence: "\u30B9\u30AD\u30E3\u30F3\u3057\u3066\u5B9F\u5728\u306E\u4EBA\u7269\u3067\u3042\u308B\u3053\u3068\u3092\u8A3C\u660E",
302
316
  titleApprove: "\u30B9\u30DE\u30FC\u30C8\u30D5\u30A9\u30F3\u3067\u627F\u8A8D",
303
317
  bodyScan: "\u30B9\u30DE\u30FC\u30C8\u30D5\u30A9\u30F3\u306E\u30AB\u30E1\u30E9\u307E\u305F\u306FZOREAL ID\u30A2\u30D7\u30EA\u3067\u30B9\u30AD\u30E3\u30F3\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
318
+ bodyLink: "\u3053\u306E\u30B9\u30DE\u30FC\u30C8\u30D5\u30A9\u30F3\u306EZOREAL ID\u30A2\u30D7\u30EA\u3067\u3053\u306E\u30ED\u30B0\u30A4\u30F3\u3092\u627F\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
304
319
  bodyApprove: "ZOREAL ID\u30A2\u30D7\u30EA\u3067\u30ED\u30B0\u30A4\u30F3\u3092\u627F\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
305
320
  bodyEnrolling: "\u30B9\u30DE\u30FC\u30C8\u30D5\u30A9\u30F3\u3067ZOREAL ID\u306E\u8A2D\u5B9A\u3092\u5B8C\u4E86\u3057\u3001\u30ED\u30B0\u30A4\u30F3\u3092\u627F\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
306
321
  waiting: "\u30B9\u30AD\u30E3\u30F3\u5F85\u3061",
@@ -312,7 +327,8 @@ var TRANSLATIONS = {
312
327
  cancel: "\u30AD\u30E3\u30F3\u30BB\u30EB",
313
328
  close: "\u9589\u3058\u308B",
314
329
  qrAlt: "ZOREAL\u3067\u30ED\u30B0\u30A4\u30F3\u3059\u308B\u305F\u3081\u306EQR\u30B3\u30FC\u30C9",
315
- buttonContinue: "ZOREAL\u3067\u7D9A\u884C"
330
+ buttonContinue: "ZOREAL\u3067\u7D9A\u884C",
331
+ openApp: "ZOREAL ID\u3092\u958B\u304F"
316
332
  },
317
333
  hi: {
318
334
  title: "\u0938\u093E\u0907\u0928 \u0907\u0928 \u0915\u0930\u0928\u0947 \u0915\u0947 \u0932\u093F\u090F \u0938\u094D\u0915\u0948\u0928 \u0915\u0930\u0947\u0902",
@@ -320,6 +336,7 @@ var TRANSLATIONS = {
320
336
  titlePresence: "\u092F\u0939 \u0938\u093E\u092C\u093F\u0924 \u0915\u0930\u0928\u0947 \u0915\u0947 \u0932\u093F\u090F \u0938\u094D\u0915\u0948\u0928 \u0915\u0930\u0947\u0902 \u0915\u093F \u0906\u092A \u090F\u0915 \u0935\u093E\u0938\u094D\u0924\u0935\u093F\u0915 \u0907\u0902\u0938\u093E\u0928 \u0939\u0948\u0902",
321
337
  titleApprove: "\u0905\u092A\u0928\u0947 \u092B\u094B\u0928 \u092A\u0930 \u0938\u094D\u0935\u0940\u0915\u0943\u0924 \u0915\u0930\u0947\u0902",
322
338
  bodyScan: "\u0905\u092A\u0928\u0947 \u092B\u094B\u0928 \u0915\u0947 \u0915\u0948\u092E\u0930\u0947 \u092F\u093E ZOREAL ID \u0910\u092A \u0938\u0947 \u0938\u094D\u0915\u0948\u0928 \u0915\u0930\u0947\u0902\u0964",
339
+ bodyLink: "\u0907\u0938 \u092B\u093C\u094B\u0928 \u092A\u0930 ZOREAL ID \u0910\u092A \u092E\u0947\u0902 \u0907\u0938 \u0938\u093E\u0907\u0928 \u0907\u0928 \u0915\u094B \u0938\u094D\u0935\u0940\u0915\u0943\u0924 \u0915\u0930\u0947\u0902\u0964",
323
340
  bodyApprove: "\u0905\u092A\u0928\u0947 ZOREAL ID \u0910\u092A \u092E\u0947\u0902 \u0932\u0949\u0917\u093F\u0928 \u0938\u094D\u0935\u0940\u0915\u0943\u0924 \u0915\u0930\u0947\u0902\u0964",
324
341
  bodyEnrolling: "\u0905\u092A\u0928\u0947 \u092B\u094B\u0928 \u092A\u0930 ZOREAL ID \u0938\u0947\u091F\u0905\u092A \u092A\u0942\u0930\u093E \u0915\u0930\u0947\u0902, \u092B\u093F\u0930 \u0932\u0949\u0917\u093F\u0928 \u0938\u094D\u0935\u0940\u0915\u0943\u0924 \u0915\u0930\u0947\u0902\u0964",
325
342
  waiting: "\u0938\u094D\u0915\u0948\u0928 \u0915\u0940 \u092A\u094D\u0930\u0924\u0940\u0915\u094D\u0937\u093E \u0939\u0948",
@@ -331,7 +348,8 @@ var TRANSLATIONS = {
331
348
  cancel: "\u0930\u0926\u094D\u0926 \u0915\u0930\u0947\u0902",
332
349
  close: "\u092C\u0902\u0926 \u0915\u0930\u0947\u0902",
333
350
  qrAlt: "ZOREAL \u0938\u0947 \u0938\u093E\u0907\u0928 \u0907\u0928 \u0915\u0930\u0928\u0947 \u0915\u0947 \u0932\u093F\u090F QR \u0915\u094B\u0921",
334
- buttonContinue: "ZOREAL \u0915\u0947 \u0938\u093E\u0925 \u091C\u093E\u0930\u0940 \u0930\u0916\u0947\u0902"
351
+ buttonContinue: "ZOREAL \u0915\u0947 \u0938\u093E\u0925 \u091C\u093E\u0930\u0940 \u0930\u0916\u0947\u0902",
352
+ openApp: "ZOREAL ID \u0916\u094B\u0932\u0947\u0902"
335
353
  },
336
354
  zhs: {
337
355
  title: "\u626B\u7801\u767B\u5F55",
@@ -339,6 +357,7 @@ var TRANSLATIONS = {
339
357
  titlePresence: "\u626B\u7801\u8BC1\u660E\u60A8\u662F\u771F\u4EBA",
340
358
  titleApprove: "\u5728\u624B\u673A\u4E0A\u6279\u51C6",
341
359
  bodyScan: "\u4F7F\u7528\u624B\u673A\u76F8\u673A\u6216 ZOREAL ID \u5E94\u7528\u626B\u63CF\u3002",
360
+ bodyLink: "\u8BF7\u5728\u672C\u624B\u673A\u7684 ZOREAL ID \u5E94\u7528\u4E2D\u6279\u51C6\u6B64\u6B21\u767B\u5F55\u3002",
342
361
  bodyApprove: "\u8BF7\u5728 ZOREAL ID \u5E94\u7528\u4E2D\u6279\u51C6\u767B\u5F55\u3002",
343
362
  bodyEnrolling: "\u8BF7\u5728\u624B\u673A\u4E0A\u5B8C\u6210 ZOREAL ID \u8BBE\u7F6E\uFF0C\u7136\u540E\u6279\u51C6\u767B\u5F55\u3002",
344
363
  waiting: "\u7B49\u5F85\u626B\u63CF",
@@ -350,7 +369,8 @@ var TRANSLATIONS = {
350
369
  cancel: "\u53D6\u6D88",
351
370
  close: "\u5173\u95ED",
352
371
  qrAlt: "\u4F7F\u7528 ZOREAL \u767B\u5F55\u7684\u4E8C\u7EF4\u7801",
353
- buttonContinue: "\u4F7F\u7528 ZOREAL \u7EE7\u7EED"
372
+ buttonContinue: "\u4F7F\u7528 ZOREAL \u7EE7\u7EED",
373
+ openApp: "\u6253\u5F00 ZOREAL ID"
354
374
  },
355
375
  zht: {
356
376
  title: "\u6383\u78BC\u767B\u5165",
@@ -358,6 +378,7 @@ var TRANSLATIONS = {
358
378
  titlePresence: "\u6383\u78BC\u8B49\u660E\u60A8\u662F\u771F\u4EBA",
359
379
  titleApprove: "\u5728\u624B\u6A5F\u4E0A\u6838\u51C6",
360
380
  bodyScan: "\u4F7F\u7528\u624B\u6A5F\u76F8\u6A5F\u6216 ZOREAL ID \u61C9\u7528\u7A0B\u5F0F\u6383\u63CF\u3002",
381
+ bodyLink: "\u8ACB\u5728\u672C\u624B\u6A5F\u7684 ZOREAL ID \u61C9\u7528\u7A0B\u5F0F\u4E2D\u6838\u51C6\u6B64\u6B21\u767B\u5165\u3002",
361
382
  bodyApprove: "\u8ACB\u5728 ZOREAL ID \u61C9\u7528\u7A0B\u5F0F\u4E2D\u6838\u51C6\u767B\u5165\u3002",
362
383
  bodyEnrolling: "\u8ACB\u5728\u624B\u6A5F\u4E0A\u5B8C\u6210 ZOREAL ID \u8A2D\u5B9A\uFF0C\u7136\u5F8C\u6838\u51C6\u767B\u5165\u3002",
363
384
  waiting: "\u7B49\u5F85\u6383\u63CF",
@@ -369,7 +390,8 @@ var TRANSLATIONS = {
369
390
  cancel: "\u53D6\u6D88",
370
391
  close: "\u95DC\u9589",
371
392
  qrAlt: "\u4F7F\u7528 ZOREAL \u767B\u5165\u7684 QR code",
372
- buttonContinue: "\u4F7F\u7528 ZOREAL \u7E7C\u7E8C"
393
+ buttonContinue: "\u4F7F\u7528 ZOREAL \u7E7C\u7E8C",
394
+ openApp: "\u958B\u555F ZOREAL ID"
373
395
  },
374
396
  ar: {
375
397
  title: "\u0627\u0645\u0633\u062D \u0644\u062A\u0633\u062C\u064A\u0644 \u0627\u0644\u062F\u062E\u0648\u0644",
@@ -377,6 +399,7 @@ var TRANSLATIONS = {
377
399
  titlePresence: "\u0627\u0645\u0633\u062D \u0644\u0625\u062B\u0628\u0627\u062A \u0623\u0646\u0643 \u0625\u0646\u0633\u0627\u0646 \u062D\u0642\u064A\u0642\u064A",
378
400
  titleApprove: "\u0648\u0627\u0641\u0642 \u0639\u0644\u0649 \u0647\u0627\u062A\u0641\u0643",
379
401
  bodyScan: "\u0627\u0645\u0633\u062D \u0628\u0627\u0633\u062A\u062E\u062F\u0627\u0645 \u0643\u0627\u0645\u064A\u0631\u0627 \u0647\u0627\u062A\u0641\u0643 \u0623\u0648 \u062A\u0637\u0628\u064A\u0642 ZOREAL ID.",
402
+ bodyLink: "\u0648\u0627\u0641\u0642 \u0639\u0644\u0649 \u062A\u0633\u062C\u064A\u0644 \u0627\u0644\u062F\u062E\u0648\u0644 \u0647\u0630\u0627 \u0641\u064A \u062A\u0637\u0628\u064A\u0642 ZOREAL ID \u0639\u0644\u0649 \u0647\u0630\u0627 \u0627\u0644\u0647\u0627\u062A\u0641.",
380
403
  bodyApprove: "\u0648\u0627\u0641\u0642 \u0639\u0644\u0649 \u062A\u0633\u062C\u064A\u0644 \u0627\u0644\u062F\u062E\u0648\u0644 \u0641\u064A \u062A\u0637\u0628\u064A\u0642 ZOREAL ID.",
381
404
  bodyEnrolling: "\u0623\u0643\u0645\u0644 \u0625\u0639\u062F\u0627\u062F ZOREAL ID \u0639\u0644\u0649 \u0647\u0627\u062A\u0641\u0643\u060C \u062B\u0645 \u0648\u0627\u0641\u0642 \u0639\u0644\u0649 \u062A\u0633\u062C\u064A\u0644 \u0627\u0644\u062F\u062E\u0648\u0644.",
382
405
  waiting: "\u0641\u064A \u0627\u0646\u062A\u0638\u0627\u0631 \u0627\u0644\u0645\u0633\u062D",
@@ -388,7 +411,8 @@ var TRANSLATIONS = {
388
411
  cancel: "\u0625\u0644\u063A\u0627\u0621",
389
412
  close: "\u0625\u063A\u0644\u0627\u0642",
390
413
  qrAlt: "\u0631\u0645\u0632 QR \u0644\u062A\u0633\u062C\u064A\u0644 \u0627\u0644\u062F\u062E\u0648\u0644 \u0628\u0627\u0633\u062A\u062E\u062F\u0627\u0645 ZOREAL",
391
- buttonContinue: "\u0627\u0644\u0645\u062A\u0627\u0628\u0639\u0629 \u0628\u0627\u0633\u062A\u062E\u062F\u0627\u0645 ZOREAL"
414
+ buttonContinue: "\u0627\u0644\u0645\u062A\u0627\u0628\u0639\u0629 \u0628\u0627\u0633\u062A\u062E\u062F\u0627\u0645 ZOREAL",
415
+ openApp: "\u0641\u062A\u062D ZOREAL ID"
392
416
  },
393
417
  ko: {
394
418
  title: "\uC2A4\uCE94\uD558\uC5EC \uB85C\uADF8\uC778",
@@ -396,6 +420,7 @@ var TRANSLATIONS = {
396
420
  titlePresence: "\uC2A4\uCE94\uD558\uC5EC \uC2E4\uC81C \uC0AC\uB78C\uC784\uC744 \uC99D\uBA85",
397
421
  titleApprove: "\uD734\uB300\uD3F0\uC5D0\uC11C \uC2B9\uC778",
398
422
  bodyScan: "\uD734\uB300\uD3F0 \uCE74\uBA54\uB77C \uB610\uB294 ZOREAL ID \uC571\uC73C\uB85C \uC2A4\uCE94\uD558\uC138\uC694.",
423
+ bodyLink: "\uC774 \uD734\uB300\uD3F0\uC758 ZOREAL ID \uC571\uC5D0\uC11C \uC774 \uB85C\uADF8\uC778\uC744 \uC2B9\uC778\uD558\uC138\uC694.",
399
424
  bodyApprove: "ZOREAL ID \uC571\uC5D0\uC11C \uB85C\uADF8\uC778\uC744 \uC2B9\uC778\uD558\uC138\uC694.",
400
425
  bodyEnrolling: "\uD734\uB300\uD3F0\uC5D0\uC11C ZOREAL ID \uC124\uC815\uC744 \uC644\uB8CC\uD55C \uD6C4 \uB85C\uADF8\uC778\uC744 \uC2B9\uC778\uD558\uC138\uC694.",
401
426
  waiting: "\uC2A4\uCE94 \uB300\uAE30 \uC911",
@@ -407,7 +432,8 @@ var TRANSLATIONS = {
407
432
  cancel: "\uCDE8\uC18C",
408
433
  close: "\uB2EB\uAE30",
409
434
  qrAlt: "ZOREAL\uB85C \uB85C\uADF8\uC778\uD558\uAE30 \uC704\uD55C QR \uCF54\uB4DC",
410
- buttonContinue: "ZOREAL\uB85C \uACC4\uC18D"
435
+ buttonContinue: "ZOREAL\uB85C \uACC4\uC18D",
436
+ openApp: "ZOREAL ID \uC5F4\uAE30"
411
437
  },
412
438
  // Български
413
439
  bg: {
@@ -416,6 +442,7 @@ var TRANSLATIONS = {
416
442
  titlePresence: "\u0421\u043A\u0430\u043D\u0438\u0440\u0430\u0439\u0442\u0435, \u0437\u0430 \u0434\u0430 \u0434\u043E\u043A\u0430\u0436\u0435\u0442\u0435, \u0447\u0435 \u0441\u0442\u0435 \u0438\u0441\u0442\u0438\u043D\u0441\u043A\u0438 \u0447\u043E\u0432\u0435\u043A",
417
443
  titleApprove: "\u041F\u043E\u0442\u0432\u044A\u0440\u0434\u0435\u0442\u0435 \u043D\u0430 \u0442\u0435\u043B\u0435\u0444\u043E\u043D\u0430 \u0441\u0438",
418
444
  bodyScan: "\u0421\u043A\u0430\u043D\u0438\u0440\u0430\u0439\u0442\u0435 \u0441 \u043A\u0430\u043C\u0435\u0440\u0430\u0442\u0430 \u043D\u0430 \u0442\u0435\u043B\u0435\u0444\u043E\u043D\u0430 \u0438\u043B\u0438 \u0441 \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0435\u0442\u043E ZOREAL ID.",
445
+ bodyLink: "\u041E\u0434\u043E\u0431\u0440\u0435\u0442\u0435 \u0442\u043E\u0437\u0438 \u0432\u0445\u043E\u0434 \u0432 \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0435\u0442\u043E ZOREAL ID \u043D\u0430 \u0442\u043E\u0437\u0438 \u0442\u0435\u043B\u0435\u0444\u043E\u043D.",
419
446
  bodyApprove: "\u041F\u043E\u0442\u0432\u044A\u0440\u0434\u0435\u0442\u0435 \u0432\u0445\u043E\u0434\u0430 \u0432 \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0435\u0442\u043E ZOREAL ID.",
420
447
  bodyEnrolling: "\u0414\u043E\u0432\u044A\u0440\u0448\u0435\u0442\u0435 \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0430\u0442\u0430 \u043D\u0430 ZOREAL ID \u043D\u0430 \u0442\u0435\u043B\u0435\u0444\u043E\u043D\u0430 \u0441\u0438, \u0441\u043B\u0435\u0434 \u043A\u043E\u0435\u0442\u043E \u043F\u043E\u0442\u0432\u044A\u0440\u0434\u0435\u0442\u0435 \u0432\u0445\u043E\u0434\u0430.",
421
448
  waiting: "\u0418\u0437\u0447\u0430\u043A\u0432\u0430\u043D\u0435 \u043D\u0430 \u0441\u043A\u0430\u043D\u0438\u0440\u0430\u043D\u0435",
@@ -427,7 +454,8 @@ var TRANSLATIONS = {
427
454
  cancel: "\u041E\u0442\u043A\u0430\u0437",
428
455
  close: "\u0417\u0430\u0442\u0432\u043E\u0440\u0438",
429
456
  qrAlt: "QR \u043A\u043E\u0434 \u0437\u0430 \u0432\u0445\u043E\u0434 \u0441\u044A\u0441 ZOREAL",
430
- buttonContinue: "\u041F\u0440\u043E\u0434\u044A\u043B\u0436\u0438 \u0441\u044A\u0441 ZOREAL"
457
+ buttonContinue: "\u041F\u0440\u043E\u0434\u044A\u043B\u0436\u0438 \u0441\u044A\u0441 ZOREAL",
458
+ openApp: "\u041E\u0442\u0432\u043E\u0440\u0438 ZOREAL ID"
431
459
  },
432
460
  // বাংলা
433
461
  bn: {
@@ -436,6 +464,7 @@ var TRANSLATIONS = {
436
464
  titlePresence: "\u0986\u09AA\u09A8\u09BF \u098F\u0995\u099C\u09A8 \u09AA\u09CD\u09B0\u0995\u09C3\u09A4 \u09AE\u09BE\u09A8\u09C1\u09B7 \u09A4\u09BE \u09AA\u09CD\u09B0\u09AE\u09BE\u09A3 \u0995\u09B0\u09A4\u09C7 \u09B8\u09CD\u0995\u09CD\u09AF\u09BE\u09A8 \u0995\u09B0\u09C1\u09A8",
437
465
  titleApprove: "\u0986\u09AA\u09A8\u09BE\u09B0 \u09AB\u09CB\u09A8\u09C7 \u0985\u09A8\u09C1\u09AE\u09CB\u09A6\u09A8 \u0995\u09B0\u09C1\u09A8",
438
466
  bodyScan: "\u0986\u09AA\u09A8\u09BE\u09B0 \u09AB\u09CB\u09A8\u09C7\u09B0 \u0995\u09CD\u09AF\u09BE\u09AE\u09C7\u09B0\u09BE \u09AC\u09BE ZOREAL ID \u0985\u09CD\u09AF\u09BE\u09AA \u09A6\u09BF\u09AF\u09BC\u09C7 \u09B8\u09CD\u0995\u09CD\u09AF\u09BE\u09A8 \u0995\u09B0\u09C1\u09A8\u0964",
467
+ bodyLink: "\u098F\u0987 \u09AB\u09CB\u09A8\u09C7\u09B0 ZOREAL ID \u0985\u09CD\u09AF\u09BE\u09AA\u09C7 \u098F\u0987 \u09B8\u09BE\u0987\u09A8 \u0987\u09A8 \u0985\u09A8\u09C1\u09AE\u09CB\u09A6\u09A8 \u0995\u09B0\u09C1\u09A8\u0964",
439
468
  bodyApprove: "\u0986\u09AA\u09A8\u09BE\u09B0 ZOREAL ID \u0985\u09CD\u09AF\u09BE\u09AA\u09C7 \u09B2\u0997\u0987\u09A8 \u0985\u09A8\u09C1\u09AE\u09CB\u09A6\u09A8 \u0995\u09B0\u09C1\u09A8\u0964",
440
469
  bodyEnrolling: "\u0986\u09AA\u09A8\u09BE\u09B0 \u09AB\u09CB\u09A8\u09C7 ZOREAL ID \u09B8\u09C7\u099F\u0986\u09AA \u09B8\u09AE\u09CD\u09AA\u09C2\u09B0\u09CD\u09A3 \u0995\u09B0\u09C1\u09A8, \u09A4\u09BE\u09B0\u09AA\u09B0 \u09B2\u0997\u0987\u09A8 \u0985\u09A8\u09C1\u09AE\u09CB\u09A6\u09A8 \u0995\u09B0\u09C1\u09A8\u0964",
441
470
  waiting: "\u09B8\u09CD\u0995\u09CD\u09AF\u09BE\u09A8\u09C7\u09B0 \u0985\u09AA\u09C7\u0995\u09CD\u09B7\u09BE\u09AF\u09BC",
@@ -447,7 +476,8 @@ var TRANSLATIONS = {
447
476
  cancel: "\u09AC\u09BE\u09A4\u09BF\u09B2",
448
477
  close: "\u09AC\u09A8\u09CD\u09A7",
449
478
  qrAlt: "ZOREAL \u09A6\u09BF\u09AF\u09BC\u09C7 \u09B8\u09BE\u0987\u09A8 \u0987\u09A8 \u0995\u09B0\u09BE\u09B0 \u099C\u09A8\u09CD\u09AF QR \u0995\u09CB\u09A1",
450
- buttonContinue: "ZOREAL \u09A6\u09BF\u09AF\u09BC\u09C7 \u099A\u09BE\u09B2\u09BF\u09AF\u09BC\u09C7 \u09AF\u09BE\u09A8"
479
+ buttonContinue: "ZOREAL \u09A6\u09BF\u09AF\u09BC\u09C7 \u099A\u09BE\u09B2\u09BF\u09AF\u09BC\u09C7 \u09AF\u09BE\u09A8",
480
+ openApp: "ZOREAL ID \u0996\u09C1\u09B2\u09C1\u09A8"
451
481
  },
452
482
  // Bosanski
453
483
  bs: {
@@ -456,6 +486,7 @@ var TRANSLATIONS = {
456
486
  titlePresence: "Skenirajte da doka\u017Eete da ste stvarna osoba",
457
487
  titleApprove: "Odobrite na svom telefonu",
458
488
  bodyScan: "Skenirajte kamerom svog telefona ili aplikacijom ZOREAL ID.",
489
+ bodyLink: "Odobrite ovu prijavu u aplikaciji ZOREAL ID na ovom telefonu.",
459
490
  bodyApprove: "Odobrite prijavu u aplikaciji ZOREAL ID.",
460
491
  bodyEnrolling: "Zavr\u0161ite pode\u0161avanje ZOREAL ID-a na svom telefonu, a zatim odobrite prijavu.",
461
492
  waiting: "\u010Ceka se skeniranje",
@@ -467,7 +498,8 @@ var TRANSLATIONS = {
467
498
  cancel: "Otka\u017Ei",
468
499
  close: "Zatvori",
469
500
  qrAlt: "QR kod za prijavu putem ZOREAL-a",
470
- buttonContinue: "Nastavi sa ZOREAL-om"
501
+ buttonContinue: "Nastavi sa ZOREAL-om",
502
+ openApp: "Otvori ZOREAL ID"
471
503
  },
472
504
  // Čeština
473
505
  cs: {
@@ -476,6 +508,7 @@ var TRANSLATIONS = {
476
508
  titlePresence: "Naskenujte a proka\u017Ete, \u017Ee jste skute\u010Dn\xFD \u010Dlov\u011Bk",
477
509
  titleApprove: "Potvr\u010Fte v telefonu",
478
510
  bodyScan: "Naskenujte fotoapar\xE1tem telefonu nebo aplikac\xED ZOREAL ID.",
511
+ bodyLink: "Schvalte toto p\u0159ihl\xE1\u0161en\xED v aplikaci ZOREAL ID na tomto telefonu.",
479
512
  bodyApprove: "Potvr\u010Fte p\u0159ihl\xE1\u0161en\xED v aplikaci ZOREAL ID.",
480
513
  bodyEnrolling: "Dokon\u010Dete nastaven\xED ZOREAL ID v telefonu a pot\xE9 potvr\u010Fte p\u0159ihl\xE1\u0161en\xED.",
481
514
  waiting: "\u010Cek\xE1n\xED na naskenov\xE1n\xED",
@@ -487,7 +520,8 @@ var TRANSLATIONS = {
487
520
  cancel: "Zru\u0161it",
488
521
  close: "Zav\u0159\xEDt",
489
522
  qrAlt: "QR k\xF3d pro p\u0159ihl\xE1\u0161en\xED pomoc\xED ZOREAL",
490
- buttonContinue: "Pokra\u010Dovat se ZOREAL"
523
+ buttonContinue: "Pokra\u010Dovat se ZOREAL",
524
+ openApp: "Otev\u0159\xEDt ZOREAL ID"
491
525
  },
492
526
  // Dansk
493
527
  da: {
@@ -496,6 +530,7 @@ var TRANSLATIONS = {
496
530
  titlePresence: "Scan for at bevise, at du er et rigtigt menneske",
497
531
  titleApprove: "Godkend p\xE5 din telefon",
498
532
  bodyScan: "Scan med telefonens kamera eller ZOREAL ID-appen.",
533
+ bodyLink: "Godkend dette login i ZOREAL ID-appen p\xE5 denne telefon.",
499
534
  bodyApprove: "Godkend login i din ZOREAL ID-app.",
500
535
  bodyEnrolling: "F\xE6rdigg\xF8r ops\xE6tningen af ZOREAL ID p\xE5 din telefon, og godkend derefter login.",
501
536
  waiting: "Venter p\xE5 scanning",
@@ -507,7 +542,8 @@ var TRANSLATIONS = {
507
542
  cancel: "Annuller",
508
543
  close: "Luk",
509
544
  qrAlt: "QR-kode til at logge ind med ZOREAL",
510
- buttonContinue: "Forts\xE6t med ZOREAL"
545
+ buttonContinue: "Forts\xE6t med ZOREAL",
546
+ openApp: "\xC5bn ZOREAL ID"
511
547
  },
512
548
  // Ελληνικά
513
549
  el: {
@@ -516,6 +552,7 @@ var TRANSLATIONS = {
516
552
  titlePresence: "\u03A3\u03AC\u03C1\u03C9\u03C3\u03B7 \u03B3\u03B9\u03B1 \u03BD\u03B1 \u03B1\u03C0\u03BF\u03B4\u03B5\u03AF\u03BE\u03B5\u03C4\u03B5 \u03CC\u03C4\u03B9 \u03B5\u03AF\u03C3\u03C4\u03B5 \u03C0\u03C1\u03B1\u03B3\u03BC\u03B1\u03C4\u03B9\u03BA\u03CC\u03C2 \u03AC\u03BD\u03B8\u03C1\u03C9\u03C0\u03BF\u03C2",
517
553
  titleApprove: "\u0388\u03B3\u03BA\u03C1\u03B9\u03C3\u03B7 \u03B1\u03C0\u03CC \u03C4\u03BF \u03BA\u03B9\u03BD\u03B7\u03C4\u03CC \u03C3\u03B1\u03C2",
518
554
  bodyScan: "\u03A3\u03B1\u03C1\u03CE\u03C3\u03C4\u03B5 \u03BC\u03B5 \u03C4\u03B7\u03BD \u03BA\u03AC\u03BC\u03B5\u03C1\u03B1 \u03C4\u03BF\u03C5 \u03BA\u03B9\u03BD\u03B7\u03C4\u03BF\u03CD \u03C3\u03B1\u03C2 \u03AE \u03C4\u03B7\u03BD \u03B5\u03C6\u03B1\u03C1\u03BC\u03BF\u03B3\u03AE ZOREAL ID.",
555
+ bodyLink: "\u0395\u03B3\u03BA\u03C1\u03AF\u03BD\u03B5\u03C4\u03B5 \u03B1\u03C5\u03C4\u03AE \u03C4\u03B7 \u03C3\u03CD\u03BD\u03B4\u03B5\u03C3\u03B7 \u03C3\u03C4\u03B7\u03BD \u03B5\u03C6\u03B1\u03C1\u03BC\u03BF\u03B3\u03AE ZOREAL ID \u03C3\u03B5 \u03B1\u03C5\u03C4\u03CC \u03C4\u03BF \u03C4\u03B7\u03BB\u03AD\u03C6\u03C9\u03BD\u03BF.",
519
556
  bodyApprove: "\u0395\u03B3\u03BA\u03C1\u03AF\u03BD\u03B5\u03C4\u03B5 \u03C4\u03B7 \u03C3\u03CD\u03BD\u03B4\u03B5\u03C3\u03B7 \u03C3\u03C4\u03B7\u03BD \u03B5\u03C6\u03B1\u03C1\u03BC\u03BF\u03B3\u03AE ZOREAL ID.",
520
557
  bodyEnrolling: "\u039F\u03BB\u03BF\u03BA\u03BB\u03B7\u03C1\u03CE\u03C3\u03C4\u03B5 \u03C4\u03B7 \u03C1\u03CD\u03B8\u03BC\u03B9\u03C3\u03B7 \u03C4\u03BF\u03C5 ZOREAL ID \u03C3\u03C4\u03BF \u03BA\u03B9\u03BD\u03B7\u03C4\u03CC \u03C3\u03B1\u03C2 \u03BA\u03B1\u03B9 \u03AD\u03C0\u03B5\u03B9\u03C4\u03B1 \u03B5\u03B3\u03BA\u03C1\u03AF\u03BD\u03B5\u03C4\u03B5 \u03C4\u03B7 \u03C3\u03CD\u03BD\u03B4\u03B5\u03C3\u03B7.",
521
558
  waiting: "\u0391\u03BD\u03B1\u03BC\u03BF\u03BD\u03AE \u03C3\u03AC\u03C1\u03C9\u03C3\u03B7\u03C2",
@@ -527,7 +564,8 @@ var TRANSLATIONS = {
527
564
  cancel: "\u0386\u03BA\u03C5\u03C1\u03BF",
528
565
  close: "\u039A\u03BB\u03B5\u03AF\u03C3\u03B9\u03BC\u03BF",
529
566
  qrAlt: "\u039A\u03C9\u03B4\u03B9\u03BA\u03CC\u03C2 QR \u03B3\u03B9\u03B1 \u03C3\u03CD\u03BD\u03B4\u03B5\u03C3\u03B7 \u03BC\u03B5 ZOREAL",
530
- buttonContinue: "\u03A3\u03C5\u03BD\u03AD\u03C7\u03B5\u03B9\u03B1 \u03BC\u03B5 ZOREAL"
567
+ buttonContinue: "\u03A3\u03C5\u03BD\u03AD\u03C7\u03B5\u03B9\u03B1 \u03BC\u03B5 ZOREAL",
568
+ openApp: "\u0386\u03BD\u03BF\u03B9\u03B3\u03BC\u03B1 ZOREAL ID"
531
569
  },
532
570
  // Español (LA)
533
571
  "es-419": {
@@ -536,6 +574,7 @@ var TRANSLATIONS = {
536
574
  titlePresence: "Escanea para demostrar que eres una persona real",
537
575
  titleApprove: "Aprueba desde tu celular",
538
576
  bodyScan: "Escanea con la c\xE1mara de tu celular o con la app ZOREAL ID.",
577
+ bodyLink: "Aprueba este inicio de sesi\xF3n en la app ZOREAL ID de este tel\xE9fono.",
539
578
  bodyApprove: "Aprueba el inicio de sesi\xF3n en tu app ZOREAL ID.",
540
579
  bodyEnrolling: "Termina de configurar ZOREAL ID en tu celular y luego aprueba el inicio de sesi\xF3n.",
541
580
  waiting: "Esperando escaneo",
@@ -547,7 +586,8 @@ var TRANSLATIONS = {
547
586
  cancel: "Cancelar",
548
587
  close: "Cerrar",
549
588
  qrAlt: "C\xF3digo QR para iniciar sesi\xF3n con ZOREAL",
550
- buttonContinue: "Continuar con ZOREAL"
589
+ buttonContinue: "Continuar con ZOREAL",
590
+ openApp: "Abrir ZOREAL ID"
551
591
  },
552
592
  // Suomi
553
593
  fi: {
@@ -556,6 +596,7 @@ var TRANSLATIONS = {
556
596
  titlePresence: "Todista skannaamalla, ett\xE4 olet oikea ihminen",
557
597
  titleApprove: "Hyv\xE4ksy puhelimessasi",
558
598
  bodyScan: "Skannaa puhelimesi kameralla tai ZOREAL ID -sovelluksella.",
599
+ bodyLink: "Hyv\xE4ksy t\xE4m\xE4 kirjautuminen ZOREAL ID -sovelluksessa t\xE4ll\xE4 puhelimella.",
559
600
  bodyApprove: "Hyv\xE4ksy kirjautuminen ZOREAL ID -sovelluksessasi.",
560
601
  bodyEnrolling: "Viimeistele ZOREAL ID -sovelluksen k\xE4ytt\xF6\xF6notto puhelimellasi ja hyv\xE4ksy sitten kirjautuminen.",
561
602
  waiting: "Odotetaan skannausta",
@@ -567,7 +608,8 @@ var TRANSLATIONS = {
567
608
  cancel: "Peruuta",
568
609
  close: "Sulje",
569
610
  qrAlt: "QR-koodi ZOREAL-kirjautumista varten",
570
- buttonContinue: "Jatka ZOREALilla"
611
+ buttonContinue: "Jatka ZOREALilla",
612
+ openApp: "Avaa ZOREAL ID"
571
613
  },
572
614
  // עברית
573
615
  he: {
@@ -576,6 +618,7 @@ var TRANSLATIONS = {
576
618
  titlePresence: "\u05E1\u05E8\u05D5\u05E7 \u05DB\u05D3\u05D9 \u05DC\u05D4\u05D5\u05DB\u05D9\u05D7 \u05E9\u05D0\u05EA\u05D4 \u05D0\u05D3\u05DD \u05D0\u05DE\u05D9\u05EA\u05D9",
577
619
  titleApprove: "\u05D0\u05E9\u05E8 \u05D1\u05D8\u05DC\u05E4\u05D5\u05DF \u05E9\u05DC\u05DA",
578
620
  bodyScan: "\u05E1\u05E8\u05D5\u05E7 \u05D1\u05D0\u05DE\u05E6\u05E2\u05D5\u05EA \u05DE\u05E6\u05DC\u05DE\u05EA \u05D4\u05D8\u05DC\u05E4\u05D5\u05DF \u05E9\u05DC\u05DA \u05D0\u05D5 \u05D0\u05E4\u05DC\u05D9\u05E7\u05E6\u05D9\u05D9\u05EA ZOREAL ID.",
621
+ bodyLink: "\u05D0\u05E9\u05E8 \u05D0\u05EA \u05D4\u05D4\u05EA\u05D7\u05D1\u05E8\u05D5\u05EA \u05D4\u05D6\u05D5 \u05D1\u05D0\u05E4\u05DC\u05D9\u05E7\u05E6\u05D9\u05D9\u05EA ZOREAL ID \u05D1\u05D8\u05DC\u05E4\u05D5\u05DF \u05D4\u05D6\u05D4.",
579
622
  bodyApprove: "\u05D0\u05E9\u05E8 \u05D0\u05EA \u05D4\u05D4\u05EA\u05D7\u05D1\u05E8\u05D5\u05EA \u05D1\u05D0\u05E4\u05DC\u05D9\u05E7\u05E6\u05D9\u05D9\u05EA ZOREAL ID \u05E9\u05DC\u05DA.",
580
623
  bodyEnrolling: "\u05E1\u05D9\u05D9\u05DD \u05DC\u05D4\u05D2\u05D3\u05D9\u05E8 \u05D0\u05EA ZOREAL ID \u05D1\u05D8\u05DC\u05E4\u05D5\u05DF \u05E9\u05DC\u05DA, \u05D5\u05D0\u05D6 \u05D0\u05E9\u05E8 \u05D0\u05EA \u05D4\u05D4\u05EA\u05D7\u05D1\u05E8\u05D5\u05EA.",
581
624
  waiting: "\u05DE\u05DE\u05EA\u05D9\u05DF \u05DC\u05E1\u05E8\u05D9\u05E7\u05D4",
@@ -587,7 +630,8 @@ var TRANSLATIONS = {
587
630
  cancel: "\u05D1\u05D9\u05D8\u05D5\u05DC",
588
631
  close: "\u05E1\u05D2\u05D5\u05E8",
589
632
  qrAlt: "\u05E7\u05D5\u05D3 QR \u05DC\u05D4\u05EA\u05D7\u05D1\u05E8\u05D5\u05EA \u05E2\u05DD ZOREAL",
590
- buttonContinue: "\u05D4\u05DE\u05E9\u05DA \u05E2\u05DD ZOREAL"
633
+ buttonContinue: "\u05D4\u05DE\u05E9\u05DA \u05E2\u05DD ZOREAL",
634
+ openApp: "\u05E4\u05EA\u05D7 \u05D0\u05EA ZOREAL ID"
591
635
  },
592
636
  // Hrvatski
593
637
  hr: {
@@ -596,6 +640,7 @@ var TRANSLATIONS = {
596
640
  titlePresence: "Skenirajte kako biste dokazali da ste stvarna osoba",
597
641
  titleApprove: "Odobrite na svom mobitelu",
598
642
  bodyScan: "Skenirajte kamerom svog mobitela ili aplikacijom ZOREAL ID.",
643
+ bodyLink: "Odobrite ovu prijavu u aplikaciji ZOREAL ID na ovom telefonu.",
599
644
  bodyApprove: "Odobrite prijavu u aplikaciji ZOREAL ID.",
600
645
  bodyEnrolling: "Dovr\u0161ite postavljanje ZOREAL ID-a na svom mobitelu, a zatim odobrite prijavu.",
601
646
  waiting: "\u010Ceka se skeniranje",
@@ -607,7 +652,8 @@ var TRANSLATIONS = {
607
652
  cancel: "Odustani",
608
653
  close: "Zatvori",
609
654
  qrAlt: "QR kod za prijavu putem ZOREAL-a",
610
- buttonContinue: "Nastavi sa ZOREAL-om"
655
+ buttonContinue: "Nastavi sa ZOREAL-om",
656
+ openApp: "Otvori ZOREAL ID"
611
657
  },
612
658
  // Magyar
613
659
  hu: {
@@ -616,6 +662,7 @@ var TRANSLATIONS = {
616
662
  titlePresence: "Olvassa be annak igazol\xE1s\xE1hoz, hogy val\xF3di ember",
617
663
  titleApprove: "J\xF3v\xE1hagy\xE1s a telefonj\xE1n",
618
664
  bodyScan: "Olvassa be a telefonja kamer\xE1j\xE1val, vagy a ZOREAL ID alkalmaz\xE1ssal.",
665
+ bodyLink: "Hagyja j\xF3v\xE1 ezt a bejelentkez\xE9st a ZOREAL ID alkalmaz\xE1sban ezen a telefonon.",
619
666
  bodyApprove: "Hagyja j\xF3v\xE1 a bejelentkez\xE9st a ZOREAL ID alkalmaz\xE1sban.",
620
667
  bodyEnrolling: "Fejezze be a ZOREAL ID be\xE1ll\xEDt\xE1s\xE1t a telefonj\xE1n, majd hagyja j\xF3v\xE1 a bejelentkez\xE9st.",
621
668
  waiting: "V\xE1rakoz\xE1s beolvas\xE1sra",
@@ -627,7 +674,8 @@ var TRANSLATIONS = {
627
674
  cancel: "M\xE9gse",
628
675
  close: "Bez\xE1r\xE1s",
629
676
  qrAlt: "QR-k\xF3d a ZOREAL-lal val\xF3 bejelentkez\xE9shez",
630
- buttonContinue: "Folytat\xE1s a ZOREAL-lal"
677
+ buttonContinue: "Folytat\xE1s a ZOREAL-lal",
678
+ openApp: "ZOREAL ID megnyit\xE1sa"
631
679
  },
632
680
  // Bahasa Indonesia
633
681
  id: {
@@ -636,6 +684,7 @@ var TRANSLATIONS = {
636
684
  titlePresence: "Pindai untuk membuktikan bahwa Anda manusia sungguhan",
637
685
  titleApprove: "Setujui di ponsel Anda",
638
686
  bodyScan: "Pindai dengan kamera ponsel atau aplikasi ZOREAL ID.",
687
+ bodyLink: "Setujui masuk ini di aplikasi ZOREAL ID pada ponsel ini.",
639
688
  bodyApprove: "Setujui proses masuk di aplikasi ZOREAL ID Anda.",
640
689
  bodyEnrolling: "Selesaikan pengaturan ZOREAL ID di ponsel Anda, lalu setujui proses masuk.",
641
690
  waiting: "Menunggu pemindaian",
@@ -647,7 +696,8 @@ var TRANSLATIONS = {
647
696
  cancel: "Batal",
648
697
  close: "Tutup",
649
698
  qrAlt: "Kode QR untuk masuk dengan ZOREAL",
650
- buttonContinue: "Lanjutkan dengan ZOREAL"
699
+ buttonContinue: "Lanjutkan dengan ZOREAL",
700
+ openApp: "Buka ZOREAL ID"
651
701
  },
652
702
  // Italiano
653
703
  it: {
@@ -656,6 +706,7 @@ var TRANSLATIONS = {
656
706
  titlePresence: "Scansiona per dimostrare di essere una persona reale",
657
707
  titleApprove: "Approva sul tuo telefono",
658
708
  bodyScan: "Scansiona con la fotocamera del telefono o con l'app ZOREAL ID.",
709
+ bodyLink: "Approva questo accesso nell'app ZOREAL ID su questo telefono.",
659
710
  bodyApprove: "Approva l'accesso nell'app ZOREAL ID.",
660
711
  bodyEnrolling: "Completa la configurazione di ZOREAL ID sul telefono, poi approva l'accesso.",
661
712
  waiting: "In attesa della scansione",
@@ -667,7 +718,8 @@ var TRANSLATIONS = {
667
718
  cancel: "Annulla",
668
719
  close: "Chiudi",
669
720
  qrAlt: "Codice QR per accedere con ZOREAL",
670
- buttonContinue: "Continua con ZOREAL"
721
+ buttonContinue: "Continua con ZOREAL",
722
+ openApp: "Apri ZOREAL ID"
671
723
  },
672
724
  // Bahasa Melayu
673
725
  ms: {
@@ -676,6 +728,7 @@ var TRANSLATIONS = {
676
728
  titlePresence: "Imbas untuk membuktikan anda manusia sebenar",
677
729
  titleApprove: "Luluskan di telefon anda",
678
730
  bodyScan: "Imbas dengan kamera telefon atau aplikasi ZOREAL ID.",
731
+ bodyLink: "Luluskan log masuk ini dalam aplikasi ZOREAL ID pada telefon ini.",
679
732
  bodyApprove: "Luluskan log masuk dalam aplikasi ZOREAL ID anda.",
680
733
  bodyEnrolling: "Selesaikan persediaan ZOREAL ID di telefon anda, kemudian luluskan log masuk.",
681
734
  waiting: "Menunggu imbasan",
@@ -687,7 +740,8 @@ var TRANSLATIONS = {
687
740
  cancel: "Batal",
688
741
  close: "Tutup",
689
742
  qrAlt: "Kod QR untuk log masuk dengan ZOREAL",
690
- buttonContinue: "Teruskan dengan ZOREAL"
743
+ buttonContinue: "Teruskan dengan ZOREAL",
744
+ openApp: "Buka ZOREAL ID"
691
745
  },
692
746
  // Nederlands
693
747
  nl: {
@@ -696,6 +750,7 @@ var TRANSLATIONS = {
696
750
  titlePresence: "Scan om te bewijzen dat je een echt mens bent",
697
751
  titleApprove: "Keur goed op je telefoon",
698
752
  bodyScan: "Scan met de camera van je telefoon of de ZOREAL ID-app.",
753
+ bodyLink: "Keur deze aanmelding goed in de ZOREAL ID-app op deze telefoon.",
699
754
  bodyApprove: "Keur de aanmelding goed in je ZOREAL ID-app.",
700
755
  bodyEnrolling: "Rond het instellen van ZOREAL ID op je telefoon af en keur daarna de aanmelding goed.",
701
756
  waiting: "Wachten op scan",
@@ -707,7 +762,8 @@ var TRANSLATIONS = {
707
762
  cancel: "Annuleren",
708
763
  close: "Sluiten",
709
764
  qrAlt: "QR-code om in te loggen met ZOREAL",
710
- buttonContinue: "Doorgaan met ZOREAL"
765
+ buttonContinue: "Doorgaan met ZOREAL",
766
+ openApp: "ZOREAL ID openen"
711
767
  },
712
768
  // Norsk
713
769
  no: {
@@ -716,6 +772,7 @@ var TRANSLATIONS = {
716
772
  titlePresence: "Skann for \xE5 bevise at du er et ekte menneske",
717
773
  titleApprove: "Godkjenn p\xE5 telefonen din",
718
774
  bodyScan: "Skann med telefonens kamera eller ZOREAL ID-appen.",
775
+ bodyLink: "Godkjenn denne innloggingen i ZOREAL ID-appen p\xE5 denne telefonen.",
719
776
  bodyApprove: "Godkjenn innloggingen i ZOREAL ID-appen din.",
720
777
  bodyEnrolling: "Fullf\xF8r oppsettet av ZOREAL ID p\xE5 telefonen din, og godkjenn deretter innloggingen.",
721
778
  waiting: "Venter p\xE5 skanning",
@@ -727,7 +784,8 @@ var TRANSLATIONS = {
727
784
  cancel: "Avbryt",
728
785
  close: "Lukk",
729
786
  qrAlt: "QR-kode for \xE5 logge inn med ZOREAL",
730
- buttonContinue: "Fortsett med ZOREAL"
787
+ buttonContinue: "Fortsett med ZOREAL",
788
+ openApp: "\xC5pne ZOREAL ID"
731
789
  },
732
790
  // Polski
733
791
  pl: {
@@ -736,6 +794,7 @@ var TRANSLATIONS = {
736
794
  titlePresence: "Zeskanuj, aby udowodni\u0107, \u017Ce jeste\u015B prawdziwym cz\u0142owiekiem",
737
795
  titleApprove: "Zatwierd\u017A w telefonie",
738
796
  bodyScan: "Zeskanuj aparatem telefonu lub aplikacj\u0105 ZOREAL ID.",
797
+ bodyLink: "Zatwierd\u017A to logowanie w aplikacji ZOREAL ID na tym telefonie.",
739
798
  bodyApprove: "Zatwierd\u017A logowanie w aplikacji ZOREAL ID.",
740
799
  bodyEnrolling: "Doko\u0144cz konfiguracj\u0119 ZOREAL ID w telefonie, a nast\u0119pnie zatwierd\u017A logowanie.",
741
800
  waiting: "Czekanie na skan",
@@ -747,7 +806,8 @@ var TRANSLATIONS = {
747
806
  cancel: "Anuluj",
748
807
  close: "Zamknij",
749
808
  qrAlt: "Kod QR do logowania za pomoc\u0105 ZOREAL",
750
- buttonContinue: "Kontynuuj z ZOREAL"
809
+ buttonContinue: "Kontynuuj z ZOREAL",
810
+ openApp: "Otw\xF3rz ZOREAL ID"
751
811
  },
752
812
  // Português (BR)
753
813
  "pt-br": {
@@ -756,6 +816,7 @@ var TRANSLATIONS = {
756
816
  titlePresence: "Escaneie para provar que voc\xEA \xE9 uma pessoa real",
757
817
  titleApprove: "Aprove no seu celular",
758
818
  bodyScan: "Escaneie com a c\xE2mera do seu celular ou com o app ZOREAL ID.",
819
+ bodyLink: "Aprove este login no app ZOREAL ID neste celular.",
759
820
  bodyApprove: "Aprove o login no app ZOREAL ID.",
760
821
  bodyEnrolling: "Termine de configurar o ZOREAL ID no seu celular e depois aprove o login.",
761
822
  waiting: "Aguardando escaneamento",
@@ -767,7 +828,8 @@ var TRANSLATIONS = {
767
828
  cancel: "Cancelar",
768
829
  close: "Fechar",
769
830
  qrAlt: "C\xF3digo QR para entrar com ZOREAL",
770
- buttonContinue: "Continuar com ZOREAL"
831
+ buttonContinue: "Continuar com ZOREAL",
832
+ openApp: "Abrir ZOREAL ID"
771
833
  },
772
834
  // Română
773
835
  ro: {
@@ -776,6 +838,7 @@ var TRANSLATIONS = {
776
838
  titlePresence: "Scana\u021Bi pentru a dovedi c\u0103 sunte\u021Bi o persoan\u0103 real\u0103",
777
839
  titleApprove: "Aproba\u021Bi de pe telefon",
778
840
  bodyScan: "Scana\u021Bi cu camera telefonului sau cu aplica\u021Bia ZOREAL ID.",
841
+ bodyLink: "Aproba\u021Bi aceast\u0103 conectare \xEEn aplica\u021Bia ZOREAL ID de pe acest telefon.",
779
842
  bodyApprove: "Aproba\u021Bi conectarea \xEEn aplica\u021Bia ZOREAL ID.",
780
843
  bodyEnrolling: "Finaliza\u021Bi configurarea ZOREAL ID pe telefon, apoi aproba\u021Bi conectarea.",
781
844
  waiting: "Se a\u0219teapt\u0103 scanarea",
@@ -787,7 +850,8 @@ var TRANSLATIONS = {
787
850
  cancel: "Anuleaz\u0103",
788
851
  close: "\xCEnchide",
789
852
  qrAlt: "Cod QR pentru conectare cu ZOREAL",
790
- buttonContinue: "Continua\u021Bi cu ZOREAL"
853
+ buttonContinue: "Continua\u021Bi cu ZOREAL",
854
+ openApp: "Deschide\u021Bi ZOREAL ID"
791
855
  },
792
856
  // Српски
793
857
  sr: {
@@ -796,6 +860,7 @@ var TRANSLATIONS = {
796
860
  titlePresence: "\u0421\u043A\u0435\u043D\u0438\u0440\u0430\u0458\u0442\u0435 \u0434\u0430 \u0434\u043E\u043A\u0430\u0436\u0435\u0442\u0435 \u0434\u0430 \u0441\u0442\u0435 \u043F\u0440\u0430\u0432\u0430 \u043E\u0441\u043E\u0431\u0430",
797
861
  titleApprove: "\u041E\u0434\u043E\u0431\u0440\u0438\u0442\u0435 \u043D\u0430 \u0441\u0432\u043E\u043C \u0442\u0435\u043B\u0435\u0444\u043E\u043D\u0443",
798
862
  bodyScan: "\u0421\u043A\u0435\u043D\u0438\u0440\u0430\u0458\u0442\u0435 \u043A\u0430\u043C\u0435\u0440\u043E\u043C \u0441\u0432\u043E\u0433 \u0442\u0435\u043B\u0435\u0444\u043E\u043D\u0430 \u0438\u043B\u0438 \u0430\u043F\u043B\u0438\u043A\u0430\u0446\u0438\u0458\u043E\u043C ZOREAL ID.",
863
+ bodyLink: "\u041E\u0434\u043E\u0431\u0440\u0438\u0442\u0435 \u043E\u0432\u0443 \u043F\u0440\u0438\u0458\u0430\u0432\u0443 \u0443 \u0430\u043F\u043B\u0438\u043A\u0430\u0446\u0438\u0458\u0438 ZOREAL ID \u043D\u0430 \u043E\u0432\u043E\u043C \u0442\u0435\u043B\u0435\u0444\u043E\u043D\u0443.",
799
864
  bodyApprove: "\u041E\u0434\u043E\u0431\u0440\u0438\u0442\u0435 \u043F\u0440\u0438\u0458\u0430\u0432\u0443 \u0443 \u0430\u043F\u043B\u0438\u043A\u0430\u0446\u0438\u0458\u0438 ZOREAL ID.",
800
865
  bodyEnrolling: "\u0414\u043E\u0432\u0440\u0448\u0438\u0442\u0435 \u043F\u043E\u0434\u0435\u0448\u0430\u0432\u0430\u045A\u0435 ZOREAL ID-\u0430 \u043D\u0430 \u0441\u0432\u043E\u043C \u0442\u0435\u043B\u0435\u0444\u043E\u043D\u0443, \u043F\u0430 \u043E\u0434\u043E\u0431\u0440\u0438\u0442\u0435 \u043F\u0440\u0438\u0458\u0430\u0432\u0443.",
801
866
  waiting: "\u0427\u0435\u043A\u0430 \u0441\u0435 \u0441\u043A\u0435\u043D\u0438\u0440\u0430\u045A\u0435",
@@ -807,7 +872,8 @@ var TRANSLATIONS = {
807
872
  cancel: "\u041E\u0442\u043A\u0430\u0436\u0438",
808
873
  close: "\u0417\u0430\u0442\u0432\u043E\u0440\u0438",
809
874
  qrAlt: "QR \u043A\u043E\u0434 \u0437\u0430 \u043F\u0440\u0438\u0458\u0430\u0432\u0443 \u043F\u0440\u0435\u043A\u043E ZOREAL-\u0430",
810
- buttonContinue: "\u041D\u0430\u0441\u0442\u0430\u0432\u0438 \u0441\u0430 ZOREAL-\u043E\u043C"
875
+ buttonContinue: "\u041D\u0430\u0441\u0442\u0430\u0432\u0438 \u0441\u0430 ZOREAL-\u043E\u043C",
876
+ openApp: "\u041E\u0442\u0432\u043E\u0440\u0438 ZOREAL ID"
811
877
  },
812
878
  // ไทย
813
879
  th: {
@@ -816,6 +882,7 @@ var TRANSLATIONS = {
816
882
  titlePresence: "\u0E2A\u0E41\u0E01\u0E19\u0E40\u0E1E\u0E37\u0E48\u0E2D\u0E1E\u0E34\u0E2A\u0E39\u0E08\u0E19\u0E4C\u0E27\u0E48\u0E32\u0E04\u0E38\u0E13\u0E40\u0E1B\u0E47\u0E19\u0E21\u0E19\u0E38\u0E29\u0E22\u0E4C\u0E08\u0E23\u0E34\u0E07",
817
883
  titleApprove: "\u0E2D\u0E19\u0E38\u0E21\u0E31\u0E15\u0E34\u0E1A\u0E19\u0E42\u0E17\u0E23\u0E28\u0E31\u0E1E\u0E17\u0E4C\u0E02\u0E2D\u0E07\u0E04\u0E38\u0E13",
818
884
  bodyScan: "\u0E2A\u0E41\u0E01\u0E19\u0E14\u0E49\u0E27\u0E22\u0E01\u0E25\u0E49\u0E2D\u0E07\u0E42\u0E17\u0E23\u0E28\u0E31\u0E1E\u0E17\u0E4C\u0E2B\u0E23\u0E37\u0E2D\u0E41\u0E2D\u0E1B ZOREAL ID",
885
+ bodyLink: "\u0E2D\u0E19\u0E38\u0E21\u0E31\u0E15\u0E34\u0E01\u0E32\u0E23\u0E40\u0E02\u0E49\u0E32\u0E2A\u0E39\u0E48\u0E23\u0E30\u0E1A\u0E1A\u0E19\u0E35\u0E49\u0E43\u0E19\u0E41\u0E2D\u0E1B ZOREAL ID \u0E1A\u0E19\u0E42\u0E17\u0E23\u0E28\u0E31\u0E1E\u0E17\u0E4C\u0E40\u0E04\u0E23\u0E37\u0E48\u0E2D\u0E07\u0E19\u0E35\u0E49",
819
886
  bodyApprove: "\u0E2D\u0E19\u0E38\u0E21\u0E31\u0E15\u0E34\u0E01\u0E32\u0E23\u0E40\u0E02\u0E49\u0E32\u0E2A\u0E39\u0E48\u0E23\u0E30\u0E1A\u0E1A\u0E43\u0E19\u0E41\u0E2D\u0E1B ZOREAL ID \u0E02\u0E2D\u0E07\u0E04\u0E38\u0E13",
820
887
  bodyEnrolling: "\u0E15\u0E31\u0E49\u0E07\u0E04\u0E48\u0E32 ZOREAL ID \u0E1A\u0E19\u0E42\u0E17\u0E23\u0E28\u0E31\u0E1E\u0E17\u0E4C\u0E02\u0E2D\u0E07\u0E04\u0E38\u0E13\u0E43\u0E2B\u0E49\u0E40\u0E2A\u0E23\u0E47\u0E08\u0E2A\u0E34\u0E49\u0E19 \u0E41\u0E25\u0E49\u0E27\u0E2D\u0E19\u0E38\u0E21\u0E31\u0E15\u0E34\u0E01\u0E32\u0E23\u0E40\u0E02\u0E49\u0E32\u0E2A\u0E39\u0E48\u0E23\u0E30\u0E1A\u0E1A",
821
888
  waiting: "\u0E23\u0E2D\u0E01\u0E32\u0E23\u0E2A\u0E41\u0E01\u0E19",
@@ -827,7 +894,8 @@ var TRANSLATIONS = {
827
894
  cancel: "\u0E22\u0E01\u0E40\u0E25\u0E34\u0E01",
828
895
  close: "\u0E1B\u0E34\u0E14",
829
896
  qrAlt: "\u0E04\u0E34\u0E27\u0E2D\u0E32\u0E23\u0E4C\u0E42\u0E04\u0E49\u0E14\u0E2A\u0E33\u0E2B\u0E23\u0E31\u0E1A\u0E40\u0E02\u0E49\u0E32\u0E2A\u0E39\u0E48\u0E23\u0E30\u0E1A\u0E1A\u0E14\u0E49\u0E27\u0E22 ZOREAL",
830
- buttonContinue: "\u0E14\u0E33\u0E40\u0E19\u0E34\u0E19\u0E01\u0E32\u0E23\u0E15\u0E48\u0E2D\u0E14\u0E49\u0E27\u0E22 ZOREAL"
897
+ buttonContinue: "\u0E14\u0E33\u0E40\u0E19\u0E34\u0E19\u0E01\u0E32\u0E23\u0E15\u0E48\u0E2D\u0E14\u0E49\u0E27\u0E22 ZOREAL",
898
+ openApp: "\u0E40\u0E1B\u0E34\u0E14 ZOREAL ID"
831
899
  },
832
900
  // Tagalog
833
901
  tl: {
@@ -836,6 +904,7 @@ var TRANSLATIONS = {
836
904
  titlePresence: "I-scan para patunayang tunay kang tao",
837
905
  titleApprove: "I-approve sa iyong telepono",
838
906
  bodyScan: "I-scan gamit ang camera ng iyong telepono o ang ZOREAL ID app.",
907
+ bodyLink: "Aprubahan ang pag-sign in na ito sa ZOREAL ID app sa teleponong ito.",
839
908
  bodyApprove: "I-approve ang login sa iyong ZOREAL ID app.",
840
909
  bodyEnrolling: "Tapusin muna ang pag-set up ng ZOREAL ID sa iyong telepono, pagkatapos ay i-approve ang login.",
841
910
  waiting: "Naghihintay ng scan",
@@ -847,7 +916,8 @@ var TRANSLATIONS = {
847
916
  cancel: "Kanselahin",
848
917
  close: "Isara",
849
918
  qrAlt: "QR code para mag-sign in gamit ang ZOREAL",
850
- buttonContinue: "Magpatuloy gamit ang ZOREAL"
919
+ buttonContinue: "Magpatuloy gamit ang ZOREAL",
920
+ openApp: "Buksan ang ZOREAL ID"
851
921
  },
852
922
  // Türkçe
853
923
  tr: {
@@ -856,6 +926,7 @@ var TRANSLATIONS = {
856
926
  titlePresence: "Ger\xE7ek bir insan oldu\u011Funuzu kan\u0131tlamak i\xE7in taray\u0131n",
857
927
  titleApprove: "Telefonunuzdan onaylay\u0131n",
858
928
  bodyScan: "Telefonunuzun kameras\u0131yla veya ZOREAL ID uygulamas\u0131yla taray\u0131n.",
929
+ bodyLink: "Bu giri\u015Fi bu telefondaki ZOREAL ID uygulamas\u0131nda onaylay\u0131n.",
859
930
  bodyApprove: "Giri\u015Fi ZOREAL ID uygulaman\u0131zdan onaylay\u0131n.",
860
931
  bodyEnrolling: "Telefonunuzda ZOREAL ID kurulumunu tamamlay\u0131n, ard\u0131ndan giri\u015Fi onaylay\u0131n.",
861
932
  waiting: "Tarama bekleniyor",
@@ -867,7 +938,8 @@ var TRANSLATIONS = {
867
938
  cancel: "\u0130ptal",
868
939
  close: "Kapat",
869
940
  qrAlt: "ZOREAL ile giri\u015F yapmak i\xE7in QR kodu",
870
- buttonContinue: "ZOREAL ile devam et"
941
+ buttonContinue: "ZOREAL ile devam et",
942
+ openApp: "ZOREAL ID'yi a\xE7"
871
943
  },
872
944
  // Українська
873
945
  uk: {
@@ -876,6 +948,7 @@ var TRANSLATIONS = {
876
948
  titlePresence: "\u0421\u043A\u0430\u043D\u0443\u0439\u0442\u0435, \u0449\u043E\u0431 \u0434\u043E\u0432\u0435\u0441\u0442\u0438, \u0449\u043E \u0432\u0438 \u0441\u043F\u0440\u0430\u0432\u0436\u043D\u044F \u043B\u044E\u0434\u0438\u043D\u0430",
877
949
  titleApprove: "\u041F\u0456\u0434\u0442\u0432\u0435\u0440\u0434\u044C\u0442\u0435 \u043D\u0430 \u0442\u0435\u043B\u0435\u0444\u043E\u043D\u0456",
878
950
  bodyScan: "\u0421\u043A\u0430\u043D\u0443\u0439\u0442\u0435 \u043A\u0430\u043C\u0435\u0440\u043E\u044E \u0442\u0435\u043B\u0435\u0444\u043E\u043D\u0443 \u0430\u0431\u043E \u0434\u043E\u0434\u0430\u0442\u043A\u043E\u043C ZOREAL ID.",
951
+ bodyLink: "\u041F\u0456\u0434\u0442\u0432\u0435\u0440\u0434\u044C\u0442\u0435 \u0446\u0435\u0439 \u0432\u0445\u0456\u0434 \u0443 \u0437\u0430\u0441\u0442\u043E\u0441\u0443\u043D\u043A\u0443 ZOREAL ID \u043D\u0430 \u0446\u044C\u043E\u043C\u0443 \u0442\u0435\u043B\u0435\u0444\u043E\u043D\u0456.",
879
952
  bodyApprove: "\u041F\u0456\u0434\u0442\u0432\u0435\u0440\u0434\u044C\u0442\u0435 \u0432\u0445\u0456\u0434 \u0443 \u0434\u043E\u0434\u0430\u0442\u043A\u0443 ZOREAL ID.",
880
953
  bodyEnrolling: "\u0417\u0430\u0432\u0435\u0440\u0448\u0456\u0442\u044C \u043D\u0430\u043B\u0430\u0448\u0442\u0443\u0432\u0430\u043D\u043D\u044F ZOREAL ID \u043D\u0430 \u0442\u0435\u043B\u0435\u0444\u043E\u043D\u0456, \u0430 \u043F\u043E\u0442\u0456\u043C \u043F\u0456\u0434\u0442\u0432\u0435\u0440\u0434\u044C\u0442\u0435 \u0432\u0445\u0456\u0434.",
881
954
  waiting: "\u041E\u0447\u0456\u043A\u0443\u0432\u0430\u043D\u043D\u044F \u0441\u043A\u0430\u043D\u0443\u0432\u0430\u043D\u043D\u044F",
@@ -887,7 +960,8 @@ var TRANSLATIONS = {
887
960
  cancel: "\u0421\u043A\u0430\u0441\u0443\u0432\u0430\u0442\u0438",
888
961
  close: "\u0417\u0430\u043A\u0440\u0438\u0442\u0438",
889
962
  qrAlt: "QR-\u043A\u043E\u0434 \u0434\u043B\u044F \u0432\u0445\u043E\u0434\u0443 \u0447\u0435\u0440\u0435\u0437 ZOREAL",
890
- buttonContinue: "\u041F\u0440\u043E\u0434\u043E\u0432\u0436\u0438\u0442\u0438 \u0437 ZOREAL"
963
+ buttonContinue: "\u041F\u0440\u043E\u0434\u043E\u0432\u0436\u0438\u0442\u0438 \u0437 ZOREAL",
964
+ openApp: "\u0412\u0456\u0434\u043A\u0440\u0438\u0442\u0438 ZOREAL ID"
891
965
  },
892
966
  // اردو
893
967
  ur: {
@@ -896,6 +970,7 @@ var TRANSLATIONS = {
896
970
  titlePresence: "\u06CC\u06C1 \u062B\u0627\u0628\u062A \u06A9\u0631\u0646\u06D2 \u06A9\u06D2 \u0644\u06CC\u06D2 \u0627\u0633\u06A9\u06CC\u0646 \u06A9\u0631\u06CC\u06BA \u06A9\u06C1 \u0622\u067E \u0627\u06CC\u06A9 \u062D\u0642\u06CC\u0642\u06CC \u0627\u0646\u0633\u0627\u0646 \u06C1\u06CC\u06BA",
897
971
  titleApprove: "\u0627\u067E\u0646\u06D2 \u0641\u0648\u0646 \u067E\u0631 \u0645\u0646\u0638\u0648\u0631\u06CC \u062F\u06CC\u06BA",
898
972
  bodyScan: "\u0627\u067E\u0646\u06D2 \u0641\u0648\u0646 \u06A9\u06D2 \u06A9\u06CC\u0645\u0631\u06D2 \u06CC\u0627 ZOREAL ID \u0627\u06CC\u067E \u0633\u06D2 \u0627\u0633\u06A9\u06CC\u0646 \u06A9\u0631\u06CC\u06BA\u06D4",
973
+ bodyLink: "\u0627\u0633 \u0641\u0648\u0646 \u067E\u0631 ZOREAL ID \u0627\u06CC\u067E \u0645\u06CC\u06BA \u0627\u0633 \u0644\u0627\u06AF \u0627\u0650\u0646 \u06A9\u06CC \u0645\u0646\u0638\u0648\u0631\u06CC \u062F\u06CC\u06BA\u06D4",
899
974
  bodyApprove: "\u0627\u067E\u0646\u06CC ZOREAL ID \u0627\u06CC\u067E \u0645\u06CC\u06BA \u0644\u0627\u06AF \u0627\u0650\u0646 \u06A9\u06CC \u0645\u0646\u0638\u0648\u0631\u06CC \u062F\u06CC\u06BA\u06D4",
900
975
  bodyEnrolling: "\u0627\u067E\u0646\u06D2 \u0641\u0648\u0646 \u067E\u0631 ZOREAL ID \u06A9\u06CC \u0633\u06CC\u0679 \u0627\u067E \u0645\u06A9\u0645\u0644 \u06A9\u0631\u06CC\u06BA\u060C \u067E\u06BE\u0631 \u0644\u0627\u06AF \u0627\u0650\u0646 \u06A9\u06CC \u0645\u0646\u0638\u0648\u0631\u06CC \u062F\u06CC\u06BA\u06D4",
901
976
  waiting: "\u0627\u0633\u06A9\u06CC\u0646 \u06A9\u0627 \u0627\u0646\u062A\u0638\u0627\u0631",
@@ -907,7 +982,8 @@ var TRANSLATIONS = {
907
982
  cancel: "\u0645\u0646\u0633\u0648\u062E \u06A9\u0631\u06CC\u06BA",
908
983
  close: "\u0628\u0646\u062F \u06A9\u0631\u06CC\u06BA",
909
984
  qrAlt: "ZOREAL \u06A9\u06D2 \u0633\u0627\u062A\u06BE \u0644\u0627\u06AF \u0627\u0650\u0646 \u06A9\u0631\u0646\u06D2 \u06A9\u06D2 \u0644\u06CC\u06D2 QR \u06A9\u0648\u0688",
910
- buttonContinue: "ZOREAL \u06A9\u06D2 \u0633\u0627\u062A\u06BE \u062C\u0627\u0631\u06CC \u0631\u06A9\u06BE\u06CC\u06BA"
985
+ buttonContinue: "ZOREAL \u06A9\u06D2 \u0633\u0627\u062A\u06BE \u062C\u0627\u0631\u06CC \u0631\u06A9\u06BE\u06CC\u06BA",
986
+ openApp: "ZOREAL ID \u06A9\u06BE\u0648\u0644\u06CC\u06BA"
911
987
  },
912
988
  // Tiếng Việt
913
989
  vi: {
@@ -916,6 +992,7 @@ var TRANSLATIONS = {
916
992
  titlePresence: "Qu\xE9t \u0111\u1EC3 ch\u1EE9ng minh b\u1EA1n l\xE0 ng\u01B0\u1EDDi th\u1EADt",
917
993
  titleApprove: "Ph\xEA duy\u1EC7t tr\xEAn \u0111i\u1EC7n tho\u1EA1i c\u1EE7a b\u1EA1n",
918
994
  bodyScan: "Qu\xE9t b\u1EB1ng camera \u0111i\u1EC7n tho\u1EA1i ho\u1EB7c \u1EE9ng d\u1EE5ng ZOREAL ID.",
995
+ bodyLink: "Ph\xEA duy\u1EC7t l\u1EA7n \u0111\u0103ng nh\u1EADp n\xE0y trong \u1EE9ng d\u1EE5ng ZOREAL ID tr\xEAn \u0111i\u1EC7n tho\u1EA1i n\xE0y.",
919
996
  bodyApprove: "Ph\xEA duy\u1EC7t \u0111\u0103ng nh\u1EADp trong \u1EE9ng d\u1EE5ng ZOREAL ID c\u1EE7a b\u1EA1n.",
920
997
  bodyEnrolling: "Ho\xE0n t\u1EA5t thi\u1EBFt l\u1EADp ZOREAL ID tr\xEAn \u0111i\u1EC7n tho\u1EA1i, sau \u0111\xF3 ph\xEA duy\u1EC7t \u0111\u0103ng nh\u1EADp.",
921
998
  waiting: "\u0110ang ch\u1EDD qu\xE9t m\xE3",
@@ -927,7 +1004,8 @@ var TRANSLATIONS = {
927
1004
  cancel: "H\u1EE7y",
928
1005
  close: "\u0110\xF3ng",
929
1006
  qrAlt: "M\xE3 QR \u0111\u1EC3 \u0111\u0103ng nh\u1EADp b\u1EB1ng ZOREAL",
930
- buttonContinue: "Ti\u1EBFp t\u1EE5c v\u1EDBi ZOREAL"
1007
+ buttonContinue: "Ti\u1EBFp t\u1EE5c v\u1EDBi ZOREAL",
1008
+ openApp: "M\u1EDF ZOREAL ID"
931
1009
  }
932
1010
  };
933
1011
  var RTL = /* @__PURE__ */ new Set(["ar", "he", "iw", "ur"]);
@@ -1232,12 +1310,58 @@ var CSS = `
1232
1310
  dim glow. Paused rather than removed, so it does not jump back to its start
1233
1311
  on the way out. */
1234
1312
  .${PREFIX}-qr-well[data-spent="true"] .${PREFIX}-qr-beam::after,
1235
- .${PREFIX}-qr-well[data-spent="true"] .${PREFIX}-qr-beam-glow-band::after {
1313
+ .${PREFIX}-qr-well[data-spent="true"] .${PREFIX}-qr-beam-glow-band::after,
1314
+ .${PREFIX}-link-well[data-ready="true"] .${PREFIX}-qr-beam::after,
1315
+ .${PREFIX}-link-well[data-ready="true"] .${PREFIX}-qr-beam-glow-band::after {
1236
1316
  animation-play-state: paused;
1237
1317
  opacity: 0;
1238
1318
  }
1239
- .${PREFIX}-qr-well[data-spent="true"] .${PREFIX}-qr-beam::before { opacity: 0.55; }
1240
- .${PREFIX}-qr-well[data-spent="true"] .${PREFIX}-qr-beam-glow-band::before { opacity: 0.7; }
1319
+ .${PREFIX}-qr-well[data-spent="true"] .${PREFIX}-qr-beam::before,
1320
+ .${PREFIX}-link-well[data-ready="true"] .${PREFIX}-qr-beam::before { opacity: 0.55; }
1321
+ .${PREFIX}-qr-well[data-spent="true"] .${PREFIX}-qr-beam-glow-band::before,
1322
+ .${PREFIX}-link-well[data-ready="true"] .${PREFIX}-qr-beam-glow-band::before { opacity: 0.7; }
1323
+
1324
+ /* Same device: no code to scan. A round well with the mark carries the same
1325
+ light while the sign-in is being created, and settles once the link below
1326
+ it is ready to tap. A circle keeps the sweep even all the way round. */
1327
+ .${PREFIX}-link-well {
1328
+ position: relative;
1329
+ display: grid;
1330
+ place-items: center;
1331
+ box-sizing: border-box;
1332
+ width: 112px;
1333
+ height: 112px;
1334
+ margin: 20px auto 0;
1335
+ border: 1px solid var(--zrl-line);
1336
+ border-radius: 999px;
1337
+ background: var(--zrl-surface-sunken);
1338
+ --zrl-radius: 56px;
1339
+ --zrl-beam-time: 4s;
1340
+ }
1341
+ .${PREFIX}-link-well svg { position: relative; }
1342
+
1343
+ /* The control that opens the app: a real link, because a browser hands a
1344
+ link to an app only from a tap. It has no address until the sign-in
1345
+ exists, and reads as disabled until then. */
1346
+ .${PREFIX}-open {
1347
+ display: block;
1348
+ box-sizing: border-box;
1349
+ width: 100%;
1350
+ margin: 20px 0 0;
1351
+ padding: 12px 16px;
1352
+ border-radius: 12px;
1353
+ background: var(--zrl-accent);
1354
+ color: #ffffff;
1355
+ font: inherit;
1356
+ font-size: 15px;
1357
+ font-weight: 600;
1358
+ text-align: center;
1359
+ text-decoration: none;
1360
+ cursor: pointer;
1361
+ transition: opacity 200ms ease-out, transform 150ms ease-out;
1362
+ }
1363
+ .${PREFIX}-open:active { transform: scale(0.99); }
1364
+ .${PREFIX}-open[aria-disabled="true"] { opacity: 0.45; cursor: default; pointer-events: none; }
1241
1365
 
1242
1366
  .${PREFIX}-qr {
1243
1367
  display: block;
@@ -1467,6 +1591,15 @@ var MARK_PATHS = [
1467
1591
  "M49.4,39.9c-3.3.6-6.9,0-10-1.8l-.8-.5h0c-.8-.5-1.1-1.5-.6-2.3s1.5-1.1,2.3-.6l.8.5c2.8,1.6,6,1.9,9,1.2,1-.3,2-.7,3-1.2h0c.8-.5,1.8-.2,2.3.6.5.9.2,1.9-.6,2.4,0,0-.1,0-.2,0-.2.1-.5.3-.7.4-1.4.7-2.8,1.1-4.4,1.4Z",
1468
1592
  "M35.8,34c-.5.8-1.5,1.1-2.3.6s-1.1-1.5-.6-2.3,1.5-1.1,2.3-.6,1.1,1.5.6,2.3Z"
1469
1593
  ];
1594
+ function markOnly(size) {
1595
+ const node = svg("0 0 76 76", { width: String(size), height: String(size) });
1596
+ const g = document.createElementNS(SVG_NS, "g");
1597
+ g.setAttribute("fill", ZOREAL_BLUE);
1598
+ g.setAttribute("fill-rule", "evenodd");
1599
+ for (const d of MARK_PATHS) g.appendChild(path(d));
1600
+ node.appendChild(g);
1601
+ return node;
1602
+ }
1470
1603
  function lockup(height) {
1471
1604
  const node = svg("0 0 240 58.5", {
1472
1605
  height: String(height),
@@ -1507,13 +1640,17 @@ function mountPairingModal(state, options) {
1507
1640
  const title = el("h2", cx("title"));
1508
1641
  title.id = titleId;
1509
1642
  const bodyText = el("p", cx("body-text"));
1643
+ const linkMode = state.appLink === true;
1644
+ const light = () => {
1645
+ const glow = el("span", cx("qr-beam-glow"));
1646
+ glow.setAttribute("aria-hidden", "true");
1647
+ glow.appendChild(el("span", cx("qr-beam-glow-band")));
1648
+ const beam = el("span", cx("qr-beam"));
1649
+ beam.setAttribute("aria-hidden", "true");
1650
+ return [glow, beam];
1651
+ };
1510
1652
  const well = el("div", cx("qr-well"));
1511
- const glow = el("span", cx("qr-beam-glow"));
1512
- glow.setAttribute("aria-hidden", "true");
1513
- glow.appendChild(el("span", cx("qr-beam-glow-band")));
1514
- const beam = el("span", cx("qr-beam"));
1515
- beam.setAttribute("aria-hidden", "true");
1516
- well.append(glow, beam);
1653
+ well.append(...light());
1517
1654
  const qr = el("img", cx("qr"));
1518
1655
  qr.alt = t.qrAlt;
1519
1656
  qr.width = 180;
@@ -1530,7 +1667,14 @@ function mountPairingModal(state, options) {
1530
1667
  const statusLabel = el("span");
1531
1668
  status.append(dot, statusLabel);
1532
1669
  const timer = el("p", cx("timer"));
1533
- body.append(mark, title, bodyText, well, status, timer);
1670
+ const linkWell = el("div", cx("link-well"));
1671
+ linkWell.append(...light(), markOnly(48));
1672
+ const open = el("a", cx("open"), t.openApp);
1673
+ open.target = "_blank";
1674
+ open.rel = "noopener";
1675
+ open.setAttribute("aria-disabled", "true");
1676
+ if (linkMode) body.append(mark, title, bodyText, linkWell, open, status, timer);
1677
+ else body.append(mark, title, bodyText, well, status, timer);
1534
1678
  const help = el("div", cx("help"));
1535
1679
  help.append(el("p", cx("help-title"), t.noIdTitle), el("p", cx("help-body"), t.noIdBody));
1536
1680
  const footer = el("div", cx("footer"));
@@ -1542,10 +1686,17 @@ function mountPairingModal(state, options) {
1542
1686
  secured.rel = "noopener";
1543
1687
  secured.append(strokeIcon(13, ["M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z", "m9 12 2 2 4-4"]), document.createTextNode(t.secured));
1544
1688
  footer.append(cancelBtn, secured);
1545
- card.append(closeBtn, body, help, footer);
1689
+ if (linkMode) card.append(closeBtn, body, footer);
1690
+ else card.append(closeBtn, body, help, footer);
1546
1691
  scrim.appendChild(card);
1547
- const serverMs = typeof state.expiresIn === "number" ? state.expiresIn * 1e3 : Infinity;
1548
- const deadline = Date.now() + Math.min(timeoutMs, serverMs);
1692
+ let deadline = Date.now() + timeoutMs;
1693
+ let serverBound = false;
1694
+ const bindDeadline = (s) => {
1695
+ if (serverBound || typeof s.expiresIn !== "number") return;
1696
+ serverBound = true;
1697
+ deadline = Date.now() + Math.min(timeoutMs, s.expiresIn * 1e3);
1698
+ };
1699
+ bindDeadline(state);
1549
1700
  let shown = state.qrUrl;
1550
1701
  let loading = null;
1551
1702
  const spent = () => qr.dataset.spent === "true";
@@ -1571,9 +1722,19 @@ function mountPairingModal(state, options) {
1571
1722
  };
1572
1723
  const paint = (s) => {
1573
1724
  const settled = s.status === "claimed" || s.status === "enrolling";
1725
+ bindDeadline(s);
1574
1726
  title.textContent = settled ? t.titleApprove : titleFor(t, options.intent ?? "sign-in");
1575
- bodyText.textContent = s.status === "enrolling" ? t.bodyEnrolling : settled ? t.bodyApprove : t.bodyScan;
1727
+ bodyText.textContent = s.status === "enrolling" ? t.bodyEnrolling : settled ? t.bodyApprove : linkMode ? t.bodyLink : t.bodyScan;
1576
1728
  statusLabel.textContent = settled ? t.waitingApproval : t.waiting;
1729
+ status.style.display = linkMode && !settled ? "none" : "";
1730
+ if (linkMode) {
1731
+ if (s.pairUrl && !open.hasAttribute("href")) {
1732
+ open.href = s.pairUrl;
1733
+ open.removeAttribute("aria-disabled");
1734
+ linkWell.dataset.ready = "true";
1735
+ }
1736
+ return;
1737
+ }
1577
1738
  qr.dataset.spent = String(settled);
1578
1739
  well.dataset.spent = String(settled);
1579
1740
  overlay.style.display = settled ? "" : "none";
@@ -1662,6 +1823,18 @@ function startLogin(options) {
1662
1823
  const state = generateState();
1663
1824
  const nonce = generateState();
1664
1825
  try {
1826
+ if ((options.pairingUI ?? "modal") === "modal" && useAppLink) {
1827
+ modal = mountPairingModal(
1828
+ { status: "pending", appLink: true, intent, cancel },
1829
+ {
1830
+ onCancel: cancel,
1831
+ intent,
1832
+ locale: options.locale,
1833
+ theme: options.theme,
1834
+ timeoutMs: options.pairingTimeoutMs
1835
+ }
1836
+ );
1837
+ }
1665
1838
  const started = await startPairing(
1666
1839
  issuer,
1667
1840
  {
@@ -1706,7 +1879,9 @@ function startLogin(options) {
1706
1879
  let lastPolled = { status: "pending", expiresIn: started.expires_in };
1707
1880
  const initial = withSurface(lastPolled);
1708
1881
  options.onState?.(initial);
1709
- if ((options.pairingUI ?? "modal") === "modal" && !useAppLink) {
1882
+ if (modal) {
1883
+ modal.update(initial);
1884
+ } else if ((options.pairingUI ?? "modal") === "modal") {
1710
1885
  modal = mountPairingModal(initial, {
1711
1886
  onCancel: cancel,
1712
1887
  intent,
@@ -1715,9 +1890,6 @@ function startLogin(options) {
1715
1890
  timeoutMs: options.pairingTimeoutMs
1716
1891
  });
1717
1892
  }
1718
- if (useAppLink && typeof window !== "undefined") {
1719
- window.location.assign(started.pair_url);
1720
- }
1721
1893
  if (qrRefreshSeconds !== void 0) {
1722
1894
  const periodMs = qrRefreshSeconds * 1e3;
1723
1895
  let due = Date.now() + periodMs;