bry-biometric-collector 2.2.1 → 2.2.3-RC01

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.
@@ -0,0 +1,2040 @@
1
+ import { S as Zn, r as xn, t as xi, w as $n, x as B, y as Re, z as oe, C as $i, B as U, D as F, E as mt, G as D, H as qe, I as et, J as Fe, K as Zt, L as Ne, M as bt, _ as Dt, N as xt, O as $t, P as Be, Q as He, R as pe, T as ht, U as _t, V as Se, W as ei, X as ti, Y as tt, Z as gt, $ as ii, a0 as ni, a1 as it, a2 as Lt, a3 as At, a4 as Nt, a5 as Bt, a6 as oi, a7 as ai, a8 as si, a9 as eo, aa as Bi, ab as Mi, ac as Wi, ad as _, ae as pt, af as Ui, ag as vt, ah as se, ai as wt, aj as kt, A as li, ak as Mt, al as Ct, am as Vi, an as yt, ao as ci, ap as Ki, f as Et, aq as Wt, ar as ji, as as Ut, at as qi, au as Hi, av as ze, aw as zi, ax as ri, l as Rt, ay as ui, az as to, aA as io, aB as en, aC as tn, aD as nn, aE as Xi, aF as Qi, aG as Ji, aH as ki, aI as no, aJ as p, aK as K, aL as Vt, aM as de, aN as d, aO as v, aP as u, aQ as Kt, aR as Xe, aS as on, aT as De, aU as an, aV as Le, aW as W, aX as jt, aY as nt, aZ as fi, a_ as ve, a$ as zt, b0 as N, b1 as z, b2 as qt, b3 as Gi, b4 as Yi, b5 as Ht, b6 as oo } from "./main_be9d4a67_2.2.3-RC01.js";
2
+ import { C as te, a as sn, c as fe, b as ln } from "./CameraBtn_a4ff405d_2.2.3-RC01.js";
3
+ const { console: Ie } = no, w = "src/lib/faceTab/FaceCollector.svelte";
4
+ function Zi(n, e, i) {
5
+ const o = n.slice();
6
+ return o[107] = e[i], o;
7
+ }
8
+ function cn(n) {
9
+ let e;
10
+ const i = {
11
+ c: function() {
12
+ e = p("idlive-face-capture"), e.hidden = !0, fi(e, "mask_hidden", ""), fi(e, "auto_capture_disabled", ""), fi(e, "auto_close_disabled", ""), v(e, w, 783, 10, 31732);
13
+ },
14
+ m: function(s, a) {
15
+ B(s, e, a), n[45](e);
16
+ },
17
+ p: de,
18
+ d: function(s) {
19
+ s && W(e), n[45](null);
20
+ }
21
+ };
22
+ return U("SvelteRegisterBlock", {
23
+ block: i,
24
+ id: cn.name,
25
+ type: "if",
26
+ source: "(783:8) {#if isLivenessEnabled()}",
27
+ ctx: n
28
+ }), i;
29
+ }
30
+ function mi(n) {
31
+ let e, i, o;
32
+ const s = {
33
+ c: function() {
34
+ e = p("video"), d(e, "id", "bry-cc-camera-video-tag"), d(e, "class", "absolute -z-10"), e.playsInline = !0, e.muted = !0, e.autoplay = !0, v(e, w, 793, 10, 32073);
35
+ },
36
+ m: function(l, c) {
37
+ B(l, e, c), n[46](e), i || (o = [
38
+ ve(
39
+ e,
40
+ "canplay",
41
+ /*canplay_handler*/
42
+ n[47],
43
+ !1,
44
+ !1,
45
+ !1,
46
+ !1
47
+ ),
48
+ ve(
49
+ e,
50
+ "play",
51
+ /*play*/
52
+ n[3],
53
+ { once: !0 },
54
+ !1,
55
+ !1,
56
+ !1
57
+ )
58
+ ], i = !0);
59
+ },
60
+ p: de,
61
+ d: function(l) {
62
+ l && W(e), n[46](null), i = !1, zt(o);
63
+ }
64
+ };
65
+ return U("SvelteRegisterBlock", {
66
+ block: s,
67
+ id: mi.name,
68
+ type: "key",
69
+ source: "(793:8) {#key unique}",
70
+ ctx: n
71
+ }), s;
72
+ }
73
+ function bi(n) {
74
+ let e, i = (
75
+ /*$_*/
76
+ n[28]("faceCollector.stayStill") + ""
77
+ ), o;
78
+ const s = {
79
+ c: function() {
80
+ e = p("span"), o = N(i), d(e, "class", "absolute left-1/2 -translate-x-1/2 top-[5%] ce-dui-badge ce-dui-badge-lg h-[2em] text-base base:text-base w-[12.1em]"), v(e, w, 821, 10, 33206);
81
+ },
82
+ m: function(l, c) {
83
+ B(l, e, c), u(e, o);
84
+ },
85
+ p: function(l, c) {
86
+ c[0] & /*$_*/
87
+ 268435456 && i !== (i = /*$_*/
88
+ l[28]("faceCollector.stayStill") + "") && z(o, i);
89
+ },
90
+ d: function(l) {
91
+ l && W(e);
92
+ }
93
+ };
94
+ return U("SvelteRegisterBlock", {
95
+ block: s,
96
+ id: bi.name,
97
+ type: "if",
98
+ source: "(821:8) {#if isCountingDown}",
99
+ ctx: n
100
+ }), s;
101
+ }
102
+ function hi(n) {
103
+ let e, i = (
104
+ /*$_*/
105
+ n[28](`${/*faceValidationAlert*/
106
+ n[16]}`) + ""
107
+ ), o;
108
+ const s = {
109
+ c: function() {
110
+ e = p("span"), o = N(i), d(e, "class", "absolute left-1/2 -translate-x-1/2 top-[5%] ce-dui-badge ce-dui-badge-lg h-[2em] text-base base:text-base w-[12.1em]"), v(e, w, 827, 10, 33518);
111
+ },
112
+ m: function(l, c) {
113
+ B(l, e, c), u(e, o);
114
+ },
115
+ p: function(l, c) {
116
+ c[0] & /*$_, faceValidationAlert*/
117
+ 268500992 && i !== (i = /*$_*/
118
+ l[28](`${/*faceValidationAlert*/
119
+ l[16]}`) + "") && z(o, i);
120
+ },
121
+ d: function(l) {
122
+ l && W(e);
123
+ }
124
+ };
125
+ return U("SvelteRegisterBlock", {
126
+ block: s,
127
+ id: hi.name,
128
+ type: "if",
129
+ source: "(827:8) {#if $enableFaceApi && !isCountingDown && $faceFound && faceNotValidated}",
130
+ ctx: n
131
+ }), s;
132
+ }
133
+ function _i(n) {
134
+ let e, i, o, s, a;
135
+ function l(m, f) {
136
+ return (
137
+ /*$isLoading*/
138
+ m[30] ? un : rn
139
+ );
140
+ }
141
+ let c = l(n), r = c(n);
142
+ const b = {
143
+ c: function() {
144
+ e = p("slot"), i = p("div"), o = p("img"), a = K(), r.c(), qt(o.src, s = ki) || d(o, "src", s), d(o, "alt", "loading gif"), d(o, "class", "m-auto h-[10em] lg:h-[12em]"), v(o, w, 836, 12, 33991), d(i, "class", "translate-y-1/3 md:translate-y-1/4 xl:translate-y-1/2"), v(i, w, 835, 10, 33911), d(e, "name", "obtaining-photo-gif"), d(e, "class", "block h-[17em] lg:h-[21.6em] xl:h-[30em]"), v(e, w, 834, 8, 33818);
145
+ },
146
+ m: function(f, R) {
147
+ B(f, e, R), u(e, i), u(i, o), u(i, a), r.m(i, null);
148
+ },
149
+ p: function(f, R) {
150
+ c === (c = l(f)) && r ? r.p(f, R) : (r.d(1), r = c(f), r && (r.c(), r.m(i, null)));
151
+ },
152
+ d: function(f) {
153
+ f && W(e), r.d();
154
+ }
155
+ };
156
+ return U("SvelteRegisterBlock", {
157
+ block: b,
158
+ id: _i.name,
159
+ type: "if",
160
+ source: "(834:6) {#if isLivenessEnabled() && waitingIdrndCaptureEvent}",
161
+ ctx: n
162
+ }), b;
163
+ }
164
+ function rn(n) {
165
+ let e, i = (
166
+ /*$_*/
167
+ n[28]("faceCollector.obtainingPicture") + ""
168
+ ), o;
169
+ const s = {
170
+ c: function() {
171
+ e = p("span"), o = N(i), d(e, "class", "2xl:text-2xl lg:text-2xl text-md block p-2 m-auto text-center"), v(e, w, 840, 14, 34249);
172
+ },
173
+ m: function(l, c) {
174
+ B(l, e, c), u(e, o);
175
+ },
176
+ p: function(l, c) {
177
+ c[0] & /*$_*/
178
+ 268435456 && i !== (i = /*$_*/
179
+ l[28]("faceCollector.obtainingPicture") + "") && z(o, i);
180
+ },
181
+ d: function(l) {
182
+ l && W(e);
183
+ }
184
+ };
185
+ return U("SvelteRegisterBlock", {
186
+ block: s,
187
+ id: rn.name,
188
+ type: "else",
189
+ source: "(840:12) {:else}",
190
+ ctx: n
191
+ }), s;
192
+ }
193
+ function un(n) {
194
+ let e;
195
+ const i = {
196
+ c: function() {
197
+ e = p("span"), e.textContent = "Obtaining photo...", d(e, "class", "2xl:text-2xl lg:text-2xl text-md block p-2 m-auto text-center"), v(e, w, 838, 14, 34113);
198
+ },
199
+ m: function(s, a) {
200
+ B(s, e, a);
201
+ },
202
+ p: de,
203
+ d: function(s) {
204
+ s && W(e);
205
+ }
206
+ };
207
+ return U("SvelteRegisterBlock", {
208
+ block: i,
209
+ id: un.name,
210
+ type: "if",
211
+ source: "(838:12) {#if $isLoading}",
212
+ ctx: n
213
+ }), i;
214
+ }
215
+ function gi(n) {
216
+ let e, i, o, s, a;
217
+ function l(m, f) {
218
+ return (
219
+ /*$isLoading*/
220
+ m[30] ? dn : fn
221
+ );
222
+ }
223
+ let c = l(n), r = c(n);
224
+ const b = {
225
+ c: function() {
226
+ e = p("slot"), i = p("div"), o = p("img"), a = K(), r.c(), qt(o.src, s = ki) || d(o, "src", s), d(o, "alt", "loading gif"), d(o, "class", "m-auto h-[10em] lg:h-[12em]"), v(o, w, 850, 12, 34740), d(i, "class", "translate-y-1/3 md:translate-y-1/4 xl:translate-y-1/2"), v(i, w, 849, 10, 34660), d(e, "name", "loading-camera-gif"), d(e, "class", "block h-[17em] lg:h-[21.6em] xl:h-[30em]"), v(e, w, 848, 8, 34568);
227
+ },
228
+ m: function(f, R) {
229
+ B(f, e, R), u(e, i), u(i, o), u(i, a), r.m(i, null);
230
+ },
231
+ p: function(f, R) {
232
+ c === (c = l(f)) && r ? r.p(f, R) : (r.d(1), r = c(f), r && (r.c(), r.m(i, null)));
233
+ },
234
+ d: function(f) {
235
+ f && W(e), r.d();
236
+ }
237
+ };
238
+ return U("SvelteRegisterBlock", {
239
+ block: b,
240
+ id: gi.name,
241
+ type: "if",
242
+ source: "(848:6) {#if isLivenessEnabled() && idrndLoading && $cameraStatusStore === CameraStatusEnum.OK}",
243
+ ctx: n
244
+ }), b;
245
+ }
246
+ function fn(n) {
247
+ let e, i = (
248
+ /*$_*/
249
+ n[28]("faceCollector.initiatingCamera") + ""
250
+ ), o;
251
+ const s = {
252
+ c: function() {
253
+ e = p("span"), o = N(i), d(e, "class", "2xl:text-2xl lg:text-2xl text-md block p-2 m-auto text-center"), v(e, w, 854, 14, 34997);
254
+ },
255
+ m: function(l, c) {
256
+ B(l, e, c), u(e, o);
257
+ },
258
+ p: function(l, c) {
259
+ c[0] & /*$_*/
260
+ 268435456 && i !== (i = /*$_*/
261
+ l[28]("faceCollector.initiatingCamera") + "") && z(o, i);
262
+ },
263
+ d: function(l) {
264
+ l && W(e);
265
+ }
266
+ };
267
+ return U("SvelteRegisterBlock", {
268
+ block: s,
269
+ id: fn.name,
270
+ type: "else",
271
+ source: "(854:12) {:else}",
272
+ ctx: n
273
+ }), s;
274
+ }
275
+ function dn(n) {
276
+ let e;
277
+ const i = {
278
+ c: function() {
279
+ e = p("span"), e.textContent = "Loading camera...", d(e, "class", "2xl:text-2xl lg:text-2xl text-md block p-2 m-auto text-center"), v(e, w, 852, 14, 34862);
280
+ },
281
+ m: function(s, a) {
282
+ B(s, e, a);
283
+ },
284
+ p: de,
285
+ d: function(s) {
286
+ s && W(e);
287
+ }
288
+ };
289
+ return U("SvelteRegisterBlock", {
290
+ block: i,
291
+ id: dn.name,
292
+ type: "if",
293
+ source: "(852:12) {#if $isLoading}",
294
+ ctx: n
295
+ }), i;
296
+ }
297
+ function mn(n) {
298
+ let e, i, o = (
299
+ /*$_*/
300
+ n[28]("faceCollector.finish") + ""
301
+ ), s, a, l, c, r = (
302
+ /*$_*/
303
+ n[28]("faceCollector.retakePhoto") + ""
304
+ ), b, m, f;
305
+ const R = {
306
+ c: function() {
307
+ e = p("div"), i = p("button"), s = N(o), l = K(), c = p("button"), b = N(r), i.disabled = a = /*$justification*/
308
+ n[23].length === 0, d(i, "class", "ce-dui-btn ce-dui-btn-primary ce-dui-btn-block flex-shrink"), v(i, w, 881, 12, 35959), d(c, "id", "bry-cc-retake-button"), d(c, "class", "ce-dui-btn ce-dui-btn-block ce-dui-btn-outline flex-shrink"), v(c, w, 886, 12, 36202), d(e, "class", "ce-dui-btn-group flex"), v(e, w, 880, 10, 35911);
309
+ },
310
+ m: function(C, h) {
311
+ B(C, e, h), u(e, i), u(i, s), u(e, l), u(e, c), u(c, b), m || (f = [
312
+ ve(
313
+ i,
314
+ "click",
315
+ /*click_handler_1*/
316
+ n[52],
317
+ !1,
318
+ !1,
319
+ !1,
320
+ !1
321
+ ),
322
+ ve(
323
+ c,
324
+ "click",
325
+ /*click_handler_2*/
326
+ n[53],
327
+ !1,
328
+ !1,
329
+ !1,
330
+ !1
331
+ )
332
+ ], m = !0);
333
+ },
334
+ p: function(C, h) {
335
+ h[0] & /*$_*/
336
+ 268435456 && o !== (o = /*$_*/
337
+ C[28]("faceCollector.finish") + "") && z(s, o), h[0] & /*$justification*/
338
+ 8388608 && a !== (a = /*$justification*/
339
+ C[23].length === 0) && Xe(i, "disabled", a), h[0] & /*$_*/
340
+ 268435456 && r !== (r = /*$_*/
341
+ C[28]("faceCollector.retakePhoto") + "") && z(b, r);
342
+ },
343
+ d: function(C) {
344
+ C && W(e), m = !1, zt(f);
345
+ }
346
+ };
347
+ return U("SvelteRegisterBlock", {
348
+ block: R,
349
+ id: mn.name,
350
+ type: "else",
351
+ source: "(880:8) {:else}",
352
+ ctx: n
353
+ }), R;
354
+ }
355
+ function bn(n) {
356
+ let e, i, o, s, a;
357
+ function l(m, f) {
358
+ return (
359
+ /*$isLoading*/
360
+ m[30] ? _n : hn
361
+ );
362
+ }
363
+ let c = l(n), r = c(n);
364
+ const b = {
365
+ c: function() {
366
+ e = p("button"), r.c(), d(e, "id", "bry-cc-capture-btn"), e.disabled = i = !/*$faceFound*/
367
+ n[29] && /*$enableFaceApi*/
368
+ n[26] || !/*$ready*/
369
+ n[27] && !/*$enableFaceApi*/
370
+ n[26], e.hidden = o = !/*showCaptureButton*/
371
+ n[1], d(e, "class", "ce-dui-btn ce-dui-btn-block ce-dui-btn-primary text-xl"), v(e, w, 866, 10, 35426);
372
+ },
373
+ m: function(f, R) {
374
+ B(f, e, R), r.m(e, null), s || (a = ve(
375
+ e,
376
+ "click",
377
+ /*click_handler*/
378
+ n[51],
379
+ !1,
380
+ !1,
381
+ !1,
382
+ !1
383
+ ), s = !0);
384
+ },
385
+ p: function(f, R) {
386
+ c === (c = l(f)) && r ? r.p(f, R) : (r.d(1), r = c(f), r && (r.c(), r.m(e, null))), R[0] & /*$faceFound, $enableFaceApi, $ready*/
387
+ 738197504 && i !== (i = !/*$faceFound*/
388
+ f[29] && /*$enableFaceApi*/
389
+ f[26] || !/*$ready*/
390
+ f[27] && !/*$enableFaceApi*/
391
+ f[26]) && Xe(e, "disabled", i), R[0] & /*showCaptureButton*/
392
+ 2 && o !== (o = !/*showCaptureButton*/
393
+ f[1]) && Xe(e, "hidden", o);
394
+ },
395
+ d: function(f) {
396
+ f && W(e), r.d(), s = !1, a();
397
+ }
398
+ };
399
+ return U("SvelteRegisterBlock", {
400
+ block: b,
401
+ id: bn.name,
402
+ type: "if",
403
+ source: "(866:8) {#if !$captured}",
404
+ ctx: n
405
+ }), b;
406
+ }
407
+ function hn(n) {
408
+ let e = (
409
+ /*$_*/
410
+ n[28]("faceCollector.takePicture") + ""
411
+ ), i;
412
+ const o = {
413
+ c: function() {
414
+ i = N(e);
415
+ },
416
+ m: function(a, l) {
417
+ B(a, i, l);
418
+ },
419
+ p: function(a, l) {
420
+ l[0] & /*$_*/
421
+ 268435456 && e !== (e = /*$_*/
422
+ a[28]("faceCollector.takePicture") + "") && z(i, e);
423
+ },
424
+ d: function(a) {
425
+ a && W(i);
426
+ }
427
+ };
428
+ return U("SvelteRegisterBlock", {
429
+ block: o,
430
+ id: hn.name,
431
+ type: "else",
432
+ source: "(876:12) {:else}",
433
+ ctx: n
434
+ }), o;
435
+ }
436
+ function _n(n) {
437
+ let e;
438
+ const i = {
439
+ c: function() {
440
+ e = N("Take picture");
441
+ },
442
+ m: function(s, a) {
443
+ B(s, e, a);
444
+ },
445
+ p: de,
446
+ d: function(s) {
447
+ s && W(e);
448
+ }
449
+ };
450
+ return U("SvelteRegisterBlock", {
451
+ block: i,
452
+ id: _n.name,
453
+ type: "if",
454
+ source: "(874:12) {#if $isLoading}",
455
+ ctx: n
456
+ }), i;
457
+ }
458
+ function gn(n) {
459
+ let e, i;
460
+ e = new ln({
461
+ props: { handler: (
462
+ /*func*/
463
+ n[62]
464
+ ) },
465
+ $$inline: !0
466
+ });
467
+ const o = {
468
+ c: function() {
469
+ Vt(e.$$.fragment);
470
+ },
471
+ m: function(a, l) {
472
+ Kt(e, a, l), i = !0;
473
+ },
474
+ p: de,
475
+ i: function(a) {
476
+ i || (Le(e.$$.fragment, a), i = !0);
477
+ },
478
+ o: function(a) {
479
+ De(e.$$.fragment, a), i = !1;
480
+ },
481
+ d: function(a) {
482
+ jt(e, a);
483
+ }
484
+ };
485
+ return U("SvelteRegisterBlock", {
486
+ block: o,
487
+ id: gn.name,
488
+ type: "if",
489
+ source: "(1021:55) ",
490
+ ctx: n
491
+ }), o;
492
+ }
493
+ function pn(n) {
494
+ let e, i, o, s, a, l, c, r, b;
495
+ const m = [
496
+ yn,
497
+ Cn,
498
+ kn,
499
+ wn,
500
+ vn
501
+ ], f = [];
502
+ function R(C, h) {
503
+ return (
504
+ /*$captured*/
505
+ C[19] ? (
506
+ /*$unconformitiesStore*/
507
+ C[20].isLoading ? 1 : (
508
+ /*$requestResult*/
509
+ C[21] !== se.OK ? 2 : (
510
+ /*$saved*/
511
+ C[22] ? 4 : 3
512
+ )
513
+ )
514
+ ) : 0
515
+ );
516
+ }
517
+ l = R(n), c = f[l] = m[l](n);
518
+ const O = {
519
+ c: function() {
520
+ e = p("div"), i = p("img"), a = K(), c.c(), d(i, "class", "m-auto col-start-1 col-end-1 max-h-[23.2em]"), qt(i.src, o = /*$dataTypePrefix*/
521
+ n[25] + "," + /*$image*/
522
+ n[24]) || d(i, "src", o), i.hidden = s = !/*$captured*/
523
+ n[19] || !/*$showFaceWhileValidating*/
524
+ n[31] && /*$unconformitiesStore*/
525
+ n[20].isLoading, d(i, "alt", ""), v(i, w, 903, 6, 36847), d(e, "class", r = "grid-cols-1 grid-rows-2 sm:grid-cols-2 sm:grid-rows-1 gap-[.5em] " + (!/*$showFaceWhileValidating*/
526
+ n[31] && /*$unconformitiesStore*/
527
+ n[20].isLoading ? "absolute -translate-y-1/2 -translate-x-1/2 top-1/2 left-1/2 overflow-visible" : "grid m-[1em] overflow-hidden")), v(e, w, 897, 4, 36553);
528
+ },
529
+ m: function(h, E) {
530
+ B(h, e, E), u(e, i), u(e, a), f[l].m(e, null), b = !0;
531
+ },
532
+ p: function(h, E) {
533
+ (!b || E[0] & /*$dataTypePrefix, $image*/
534
+ 50331648 && !qt(i.src, o = /*$dataTypePrefix*/
535
+ h[25] + "," + /*$image*/
536
+ h[24])) && d(i, "src", o), (!b || E[0] & /*$captured, $unconformitiesStore*/
537
+ 1572864 | E[1] & /*$showFaceWhileValidating*/
538
+ 1 && s !== (s = !/*$captured*/
539
+ h[19] || !/*$showFaceWhileValidating*/
540
+ h[31] && /*$unconformitiesStore*/
541
+ h[20].isLoading)) && Xe(i, "hidden", s);
542
+ let g = l;
543
+ l = R(h), l === g ? f[l].p(h, E) : (on(), De(f[g], 1, 1, () => {
544
+ f[g] = null;
545
+ }), an(), c = f[l], c ? c.p(h, E) : (c = f[l] = m[l](h), c.c()), Le(c, 1), c.m(e, null)), (!b || E[0] & /*$unconformitiesStore*/
546
+ 1048576 | E[1] & /*$showFaceWhileValidating*/
547
+ 1 && r !== (r = "grid-cols-1 grid-rows-2 sm:grid-cols-2 sm:grid-rows-1 gap-[.5em] " + (!/*$showFaceWhileValidating*/
548
+ h[31] && /*$unconformitiesStore*/
549
+ h[20].isLoading ? "absolute -translate-y-1/2 -translate-x-1/2 top-1/2 left-1/2 overflow-visible" : "grid m-[1em] overflow-hidden"))) && d(e, "class", r);
550
+ },
551
+ i: function(h) {
552
+ b || (Le(c), b = !0);
553
+ },
554
+ o: function(h) {
555
+ De(c), b = !1;
556
+ },
557
+ d: function(h) {
558
+ h && W(e), f[l].d();
559
+ }
560
+ };
561
+ return U("SvelteRegisterBlock", {
562
+ block: O,
563
+ id: pn.name,
564
+ type: "if",
565
+ source: "(897:2) {#if (!idrndClosed || $captured) && showUnconformities}",
566
+ ctx: n
567
+ }), O;
568
+ }
569
+ function vn(n) {
570
+ let e, i, o = (
571
+ /*$_*/
572
+ n[28]("faceCollector.captured") + ""
573
+ ), s, a, l, c, r, b = (
574
+ /*$_*/
575
+ n[28]("faceCollector.retakePhoto") + ""
576
+ ), m, f, R = Rt(nn).faceStrategy !== en.DISABLED, O, C, h, E = (
577
+ /*$unconformitiesStore*/
578
+ n[20].unconformities.length !== 0 && pi(n)
579
+ ), g = R && En(n);
580
+ const L = {
581
+ c: function() {
582
+ e = p("div"), i = p("h1"), s = N(o), a = K(), E && E.c(), l = K(), c = p("div"), r = p("button"), m = N(b), f = K(), g && g.c(), d(i, "class", "text-3xl font-bold pb-[1em] transition-opacity"), v(i, w, 993, 10, 41264), d(r, "id", "bry-cc-retake-button"), d(r, "class", "ce-dui-btn ce-dui-btn-block flex-shrink text-base"), v(r, w, 1007, 12, 41965), d(c, "class", "flex flex-row"), Yi(c, "ce-dui-btn-group", !/*$exportButtonDisabled*/
583
+ n[32]), v(c, w, 1006, 10, 41877), v(e, w, 992, 8, 41248);
584
+ },
585
+ m: function(S, Y) {
586
+ B(S, e, Y), u(e, i), u(i, s), u(e, a), E && E.m(e, null), u(e, l), u(e, c), u(c, r), u(r, m), u(c, f), g && g.m(c, null), O = !0, C || (h = ve(
587
+ r,
588
+ "click",
589
+ /*click_handler_7*/
590
+ n[61],
591
+ !1,
592
+ !1,
593
+ !1,
594
+ !1
595
+ ), C = !0);
596
+ },
597
+ p: function(S, Y) {
598
+ (!O || Y[0] & /*$_*/
599
+ 268435456) && o !== (o = /*$_*/
600
+ S[28]("faceCollector.captured") + "") && z(s, o), /*$unconformitiesStore*/
601
+ S[20].unconformities.length !== 0 ? E ? E.p(S, Y) : (E = pi(S), E.c(), E.m(e, l)) : E && (E.d(1), E = null), (!O || Y[0] & /*$_*/
602
+ 268435456) && b !== (b = /*$_*/
603
+ S[28]("faceCollector.retakePhoto") + "") && z(m, b), (!O || Y[1] & /*$exportButtonDisabled*/
604
+ 2) && Yi(c, "ce-dui-btn-group", !/*$exportButtonDisabled*/
605
+ S[32]);
606
+ },
607
+ i: function(S) {
608
+ O || (Le(g), O = !0);
609
+ },
610
+ o: function(S) {
611
+ De(g), O = !1;
612
+ },
613
+ d: function(S) {
614
+ S && W(e), E && E.d(), g && g.d(), C = !1, h();
615
+ }
616
+ };
617
+ return U("SvelteRegisterBlock", {
618
+ block: L,
619
+ id: vn.name,
620
+ type: "else",
621
+ source: "(992:6) {:else}",
622
+ ctx: n
623
+ }), L;
624
+ }
625
+ function wn(n) {
626
+ let e, i, o = (
627
+ /*$_*/
628
+ n[28]("faceCollector.unconformities") + ""
629
+ ), s, a, l, c, r, b, m, f = (
630
+ /*$_*/
631
+ n[28]("faceCollector.provideAReasonForTheLowQualityCapture") + ""
632
+ ), R, O, C, h, E, g, L, q, S = (
633
+ /*$_*/
634
+ n[28]("faceCollector.thisInformationIsRequired") + ""
635
+ ), Y, ye, he, me, we, X = (
636
+ /*$unconformitiesStore*/
637
+ n[20].unconformities
638
+ );
639
+ Gi(X);
640
+ let Q = [];
641
+ for (let j = 0; j < X.length; j += 1)
642
+ Q[j] = vi(Zi(n, X, j));
643
+ let x = (
644
+ /*$captured*/
645
+ n[19] && wi(n)
646
+ );
647
+ const J = {
648
+ c: function() {
649
+ e = p("div"), i = p("h1"), s = N(o), a = K(), l = p("div");
650
+ for (let M = 0; M < Q.length; M += 1)
651
+ Q[M].c();
652
+ c = K(), r = p("div"), b = p("label"), m = p("span"), R = N(f), O = K(), C = p("textarea"), E = K(), g = p("label"), L = p("span"), q = N("("), Y = N(S), ye = N(")"), he = K(), x && x.c(), d(i, "class", "text-3xl font-bold pb-[1em] transition-opacity"), v(i, w, 950, 10, 39355), d(l, "class", "flex flex-wrap"), v(l, w, 951, 10, 39466), d(m, "class", "ce-dui-label-text text-base"), v(m, w, 960, 14, 39898), d(b, "class", "ce-dui-label"), d(b, "for", "justification"), v(b, w, 959, 12, 39835), d(C, "contenteditable", ""), d(C, "id", "justification"), d(C, "class", "ce-dui-textarea ce-dui-textarea-bordered h-[6em] text-base"), d(C, "placeholder", h = /*$_*/
653
+ n[28]("faceCollector.yourJustification")), v(C, w, 964, 12, 40072), d(L, "class", "ce-dui-label-text-alt text-base"), v(L, w, 972, 14, 40424), d(g, "class", "ce-dui-label"), d(g, "for", "justification"), v(g, w, 971, 12, 40361), d(r, "class", "ce-dui-form-control mt-[2.5em]"), v(r, w, 958, 10, 39778), v(e, w, 949, 8, 39339);
654
+ },
655
+ m: function(M, G) {
656
+ B(M, e, G), u(e, i), u(i, s), u(e, a), u(e, l);
657
+ for (let V = 0; V < Q.length; V += 1)
658
+ Q[V] && Q[V].m(l, null);
659
+ u(e, c), u(e, r), u(r, b), u(b, m), u(m, R), u(r, O), u(r, C), Ht(
660
+ C,
661
+ /*$justification*/
662
+ n[23]
663
+ ), u(r, E), u(r, g), u(g, L), u(L, q), u(L, Y), u(L, ye), u(e, he), x && x.m(e, null), me || (we = ve(
664
+ C,
665
+ "input",
666
+ /*textarea_input_handler*/
667
+ n[57]
668
+ ), me = !0);
669
+ },
670
+ p: function(M, G) {
671
+ if (G[0] & /*$_*/
672
+ 268435456 && o !== (o = /*$_*/
673
+ M[28]("faceCollector.unconformities") + "") && z(s, o), G[0] & /*$unconformitiesStore*/
674
+ 1048576) {
675
+ X = /*$unconformitiesStore*/
676
+ M[20].unconformities, Gi(X);
677
+ let V;
678
+ for (V = 0; V < X.length; V += 1) {
679
+ const $ = Zi(M, X, V);
680
+ Q[V] ? Q[V].p($, G) : (Q[V] = vi($), Q[V].c(), Q[V].m(l, null));
681
+ }
682
+ for (; V < Q.length; V += 1)
683
+ Q[V].d(1);
684
+ Q.length = X.length;
685
+ }
686
+ G[0] & /*$_*/
687
+ 268435456 && f !== (f = /*$_*/
688
+ M[28]("faceCollector.provideAReasonForTheLowQualityCapture") + "") && z(R, f), G[0] & /*$_*/
689
+ 268435456 && h !== (h = /*$_*/
690
+ M[28]("faceCollector.yourJustification")) && d(C, "placeholder", h), G[0] & /*$justification*/
691
+ 8388608 && Ht(
692
+ C,
693
+ /*$justification*/
694
+ M[23]
695
+ ), G[0] & /*$_*/
696
+ 268435456 && S !== (S = /*$_*/
697
+ M[28]("faceCollector.thisInformationIsRequired") + "") && z(Y, S), /*$captured*/
698
+ M[19] ? x ? x.p(M, G) : (x = wi(M), x.c(), x.m(e, null)) : x && (x.d(1), x = null);
699
+ },
700
+ i: de,
701
+ o: de,
702
+ d: function(M) {
703
+ M && W(e), oo(Q, M), x && x.d(), me = !1, we();
704
+ }
705
+ };
706
+ return U("SvelteRegisterBlock", {
707
+ block: J,
708
+ id: wn.name,
709
+ type: "if",
710
+ source: "(949:24) ",
711
+ ctx: n
712
+ }), J;
713
+ }
714
+ function kn(n) {
715
+ let e, i, o, s, a = (
716
+ /*$_*/
717
+ n[28]("faceCollector.finish") + ""
718
+ ), l, c, r, b = (
719
+ /*$_*/
720
+ n[28]("faceCollector.retakePhoto") + ""
721
+ ), m, f, R;
722
+ function O(g, L) {
723
+ return (
724
+ /*$requestResult*/
725
+ g[21] === se.LIVENESS_DETECTION_FAILURE || /*$requestResult*/
726
+ g[21] === se.UNKNOWN_LIVENESS_ERROR ? Tn : (
727
+ /*$requestResult*/
728
+ g[21] === se.LOW_LIVENESS_SCORE ? Pn : (
729
+ /*$requestResult*/
730
+ g[21] === se.TEMPLATE_EXTRACTION_ERROR || /*$requestResult*/
731
+ g[21] === se.UNKNOWN_TEMPLATE_EXTRACTION_ERROR ? In : (
732
+ /*$requestResult*/
733
+ g[21] === se.UNABLE_TO_COMMUNICATE_WITH_TEMPLATE_EXTRACTION_SERVICE ? Sn : Rn
734
+ )
735
+ )
736
+ )
737
+ );
738
+ }
739
+ let C = O(n), h = C(n);
740
+ const E = {
741
+ c: function() {
742
+ e = p("div"), h.c(), i = K(), o = p("div"), s = p("button"), l = N(a), c = K(), r = p("button"), m = N(b), s.disabled = !0, d(s, "class", "ce-dui-btn ce-dui-btn-primary ce-dui-btn-block flex-shrink"), v(s, w, 938, 12, 38863), d(r, "id", "bry-cc-retake-button"), d(r, "class", "ce-dui-btn ce-dui-btn-block ce-dui-btn-outline flex-shrink"), v(r, w, 941, 12, 39049), d(o, "class", "ce-dui-btn-group flex"), v(o, w, 937, 10, 38815), d(e, "class", "flex flex-col justify-between"), v(e, w, 917, 8, 37461);
743
+ },
744
+ m: function(L, q) {
745
+ B(L, e, q), h.m(e, null), u(e, i), u(e, o), u(o, s), u(s, l), u(o, c), u(o, r), u(r, m), f || (R = [
746
+ ve(
747
+ s,
748
+ "click",
749
+ /*click_handler_3*/
750
+ n[55],
751
+ !1,
752
+ !1,
753
+ !1,
754
+ !1
755
+ ),
756
+ ve(
757
+ r,
758
+ "click",
759
+ /*click_handler_4*/
760
+ n[56],
761
+ !1,
762
+ !1,
763
+ !1,
764
+ !1
765
+ )
766
+ ], f = !0);
767
+ },
768
+ p: function(L, q) {
769
+ C === (C = O(L)) && h ? h.p(L, q) : (h.d(1), h = C(L), h && (h.c(), h.m(e, i))), q[0] & /*$_*/
770
+ 268435456 && a !== (a = /*$_*/
771
+ L[28]("faceCollector.finish") + "") && z(l, a), q[0] & /*$_*/
772
+ 268435456 && b !== (b = /*$_*/
773
+ L[28]("faceCollector.retakePhoto") + "") && z(m, b);
774
+ },
775
+ i: de,
776
+ o: de,
777
+ d: function(L) {
778
+ L && W(e), h.d(), f = !1, zt(R);
779
+ }
780
+ };
781
+ return U("SvelteRegisterBlock", {
782
+ block: E,
783
+ id: kn.name,
784
+ type: "if",
785
+ source: "(917:56) ",
786
+ ctx: n
787
+ }), E;
788
+ }
789
+ function Cn(n) {
790
+ let e, i, o = (
791
+ /*$_*/
792
+ n[28]("faceCollector.validating") + ""
793
+ ), s, a, l;
794
+ const c = {
795
+ c: function() {
796
+ e = p("div"), i = p("h1"), s = N(o), a = K(), l = p("div"), d(i, "class", "inline-block text-3xl font-bold pb-[1em] transition-opacity"), v(i, w, 913, 10, 37216), d(l, "class", "ml-6 inline-block dot-typing"), v(l, w, 914, 10, 37336), d(e, "class", "min-w-[200px]"), v(e, w, 912, 8, 37178);
797
+ },
798
+ m: function(b, m) {
799
+ B(b, e, m), u(e, i), u(i, s), u(e, a), u(e, l);
800
+ },
801
+ p: function(b, m) {
802
+ m[0] & /*$_*/
803
+ 268435456 && o !== (o = /*$_*/
804
+ b[28]("faceCollector.validating") + "") && z(s, o);
805
+ },
806
+ i: de,
807
+ o: de,
808
+ d: function(b) {
809
+ b && W(e);
810
+ }
811
+ };
812
+ return U("SvelteRegisterBlock", {
813
+ block: c,
814
+ id: Cn.name,
815
+ type: "if",
816
+ source: "(912:47) ",
817
+ ctx: n
818
+ }), c;
819
+ }
820
+ function yn(n) {
821
+ let e;
822
+ const i = {
823
+ c: function() {
824
+ e = p("div"), d(e, "class", ""), v(e, w, 910, 8, 37105);
825
+ },
826
+ m: function(s, a) {
827
+ B(s, e, a);
828
+ },
829
+ p: de,
830
+ i: de,
831
+ o: de,
832
+ d: function(s) {
833
+ s && W(e);
834
+ }
835
+ };
836
+ return U("SvelteRegisterBlock", {
837
+ block: i,
838
+ id: yn.name,
839
+ type: "if",
840
+ source: "(910:6) {#if !$captured}",
841
+ ctx: n
842
+ }), i;
843
+ }
844
+ function pi(n) {
845
+ let e, i, o = (
846
+ /*$_*/
847
+ n[28]("faceCollector.justification") + ""
848
+ ), s, a, l, c, r;
849
+ const b = {
850
+ c: function() {
851
+ e = p("label"), i = p("span"), s = N(o), a = K(), l = p("textarea"), d(i, "class", "ce-dui-label-text text-base"), v(i, w, 997, 14, 41500), d(e, "class", "ce-dui-label"), d(e, "for", "justification"), v(e, w, 996, 12, 41437), d(l, "contenteditable", ""), d(l, "id", "justification"), d(l, "class", "ce-dui-textarea ce-dui-textarea-bordered textarea-ghost h-[6em] w-full text-base"), v(l, w, 999, 12, 41618);
852
+ },
853
+ m: function(f, R) {
854
+ B(f, e, R), u(e, i), u(i, s), B(f, a, R), B(f, l, R), Ht(
855
+ l,
856
+ /*$justification*/
857
+ n[23]
858
+ ), c || (r = ve(
859
+ l,
860
+ "input",
861
+ /*textarea_input_handler_1*/
862
+ n[60]
863
+ ), c = !0);
864
+ },
865
+ p: function(f, R) {
866
+ R[0] & /*$_*/
867
+ 268435456 && o !== (o = /*$_*/
868
+ f[28]("faceCollector.justification") + "") && z(s, o), R[0] & /*$justification*/
869
+ 8388608 && Ht(
870
+ l,
871
+ /*$justification*/
872
+ f[23]
873
+ );
874
+ },
875
+ d: function(f) {
876
+ f && W(e), f && W(a), f && W(l), c = !1, r();
877
+ }
878
+ };
879
+ return U("SvelteRegisterBlock", {
880
+ block: b,
881
+ id: pi.name,
882
+ type: "if",
883
+ source: "(996:10) {#if $unconformitiesStore.unconformities.length !== 0}",
884
+ ctx: n
885
+ }), b;
886
+ }
887
+ function En(n) {
888
+ let e, i;
889
+ e = new tn({
890
+ props: { cssClass: "ce-dui-btn-block flex-shrink" },
891
+ $$inline: !0
892
+ });
893
+ const o = {
894
+ c: function() {
895
+ Vt(e.$$.fragment);
896
+ },
897
+ m: function(a, l) {
898
+ Kt(e, a, l), i = !0;
899
+ },
900
+ i: function(a) {
901
+ i || (Le(e.$$.fragment, a), i = !0);
902
+ },
903
+ o: function(a) {
904
+ De(e.$$.fragment, a), i = !1;
905
+ },
906
+ d: function(a) {
907
+ jt(e, a);
908
+ }
909
+ };
910
+ return U("SvelteRegisterBlock", {
911
+ block: o,
912
+ id: En.name,
913
+ type: "if",
914
+ source: "(1013:12) {#if get(enableStrategy).faceStrategy !== FaceExportStrategy.DISABLED}",
915
+ ctx: n
916
+ }), o;
917
+ }
918
+ function vi(n) {
919
+ let e, i = (
920
+ /*unconformity*/
921
+ n[107] + ""
922
+ ), o, s;
923
+ const a = {
924
+ c: function() {
925
+ e = p("div"), o = N(i), s = K(), d(e, "class", "ce-dui-badge ce-dui-badge-lg h-[2em] ce-dui-badge-error text-xl pb-[.25em] m-[.5em]"), v(e, w, 953, 14, 39581);
926
+ },
927
+ m: function(c, r) {
928
+ B(c, e, r), u(e, o), u(e, s);
929
+ },
930
+ p: function(c, r) {
931
+ r[0] & /*$unconformitiesStore*/
932
+ 1048576 && i !== (i = /*unconformity*/
933
+ c[107] + "") && z(o, i);
934
+ },
935
+ d: function(c) {
936
+ c && W(e);
937
+ }
938
+ };
939
+ return U("SvelteRegisterBlock", {
940
+ block: a,
941
+ id: vi.name,
942
+ type: "each",
943
+ source: "(953:12) {#each $unconformitiesStore.unconformities as unconformity}",
944
+ ctx: n
945
+ }), a;
946
+ }
947
+ function wi(n) {
948
+ let e, i, o = (
949
+ /*$_*/
950
+ n[28]("faceCollector.finish") + ""
951
+ ), s, a, l, c, r = (
952
+ /*$_*/
953
+ n[28]("faceCollector.retakePhoto") + ""
954
+ ), b, m, f;
955
+ const R = {
956
+ c: function() {
957
+ e = p("div"), i = p("button"), s = N(o), l = K(), c = p("button"), b = N(r), i.disabled = a = /*$justification*/
958
+ n[23].length === 0, d(i, "class", "ce-dui-btn ce-dui-btn-primary ce-dui-btn-block flex-shrink text-base"), v(i, w, 977, 14, 40653), d(c, "id", "bry-cc-retake-button"), d(c, "class", "ce-dui-btn ce-dui-btn-block ce-dui-btn-outline flex-shrink text-base"), v(c, w, 983, 14, 40933), d(e, "class", "ce-dui-btn-group flex"), v(e, w, 976, 12, 40603);
959
+ },
960
+ m: function(C, h) {
961
+ B(C, e, h), u(e, i), u(i, s), u(e, l), u(e, c), u(c, b), m || (f = [
962
+ ve(
963
+ i,
964
+ "click",
965
+ /*click_handler_5*/
966
+ n[58],
967
+ !1,
968
+ !1,
969
+ !1,
970
+ !1
971
+ ),
972
+ ve(
973
+ c,
974
+ "click",
975
+ /*click_handler_6*/
976
+ n[59],
977
+ !1,
978
+ !1,
979
+ !1,
980
+ !1
981
+ )
982
+ ], m = !0);
983
+ },
984
+ p: function(C, h) {
985
+ h[0] & /*$_*/
986
+ 268435456 && o !== (o = /*$_*/
987
+ C[28]("faceCollector.finish") + "") && z(s, o), h[0] & /*$justification*/
988
+ 8388608 && a !== (a = /*$justification*/
989
+ C[23].length === 0) && Xe(i, "disabled", a), h[0] & /*$_*/
990
+ 268435456 && r !== (r = /*$_*/
991
+ C[28]("faceCollector.retakePhoto") + "") && z(b, r);
992
+ },
993
+ d: function(C) {
994
+ C && W(e), m = !1, zt(f);
995
+ }
996
+ };
997
+ return U("SvelteRegisterBlock", {
998
+ block: R,
999
+ id: wi.name,
1000
+ type: "if",
1001
+ source: "(976:10) {#if $captured}",
1002
+ ctx: n
1003
+ }), R;
1004
+ }
1005
+ function Rn(n) {
1006
+ let e, i = (
1007
+ /*$_*/
1008
+ n[28]("faceCollector.everythingOk") + ""
1009
+ ), o;
1010
+ const s = {
1011
+ c: function() {
1012
+ e = p("h1"), o = N(i), d(e, "class", "text-3xl font-bold pb-[1em] transition-opacity"), v(e, w, 935, 12, 38690);
1013
+ },
1014
+ m: function(l, c) {
1015
+ B(l, e, c), u(e, o);
1016
+ },
1017
+ p: function(l, c) {
1018
+ c[0] & /*$_*/
1019
+ 268435456 && i !== (i = /*$_*/
1020
+ l[28]("faceCollector.everythingOk") + "") && z(o, i);
1021
+ },
1022
+ d: function(l) {
1023
+ l && W(e);
1024
+ }
1025
+ };
1026
+ return U("SvelteRegisterBlock", {
1027
+ block: s,
1028
+ id: Rn.name,
1029
+ type: "else",
1030
+ source: "(935:10) {:else}",
1031
+ ctx: n
1032
+ }), s;
1033
+ }
1034
+ function Sn(n) {
1035
+ let e, i = (
1036
+ /*$_*/
1037
+ n[28]("faceCollector.unableToCompleteRequest") + ""
1038
+ ), o;
1039
+ const s = {
1040
+ c: function() {
1041
+ e = p("h1"), o = N(i), d(e, "class", "text-3xl font-bold pb-[1em] transition-opacity text-error"), v(e, w, 931, 12, 38511);
1042
+ },
1043
+ m: function(l, c) {
1044
+ B(l, e, c), u(e, o);
1045
+ },
1046
+ p: function(l, c) {
1047
+ c[0] & /*$_*/
1048
+ 268435456 && i !== (i = /*$_*/
1049
+ l[28]("faceCollector.unableToCompleteRequest") + "") && z(o, i);
1050
+ },
1051
+ d: function(l) {
1052
+ l && W(e);
1053
+ }
1054
+ };
1055
+ return U("SvelteRegisterBlock", {
1056
+ block: s,
1057
+ id: Sn.name,
1058
+ type: "if",
1059
+ source: "(931:112) ",
1060
+ ctx: n
1061
+ }), s;
1062
+ }
1063
+ function In(n) {
1064
+ let e, i = (
1065
+ /*$_*/
1066
+ n[28]("faceCollector.lowQualityCapture") + ""
1067
+ ), o;
1068
+ const s = {
1069
+ c: function() {
1070
+ e = p("h1"), o = N(i), d(e, "class", "text-3xl font-bold pb-[1em] transition-opacity text-error"), v(e, w, 927, 12, 38243);
1071
+ },
1072
+ m: function(l, c) {
1073
+ B(l, e, c), u(e, o);
1074
+ },
1075
+ p: function(l, c) {
1076
+ c[0] & /*$_*/
1077
+ 268435456 && i !== (i = /*$_*/
1078
+ l[28]("faceCollector.lowQualityCapture") + "") && z(o, i);
1079
+ },
1080
+ d: function(l) {
1081
+ l && W(e);
1082
+ }
1083
+ };
1084
+ return U("SvelteRegisterBlock", {
1085
+ block: s,
1086
+ id: In.name,
1087
+ type: "if",
1088
+ source: "(927:157) ",
1089
+ ctx: n
1090
+ }), s;
1091
+ }
1092
+ function Pn(n) {
1093
+ let e, i = (
1094
+ /*$_*/
1095
+ n[28]("liveness.error.error") + ""
1096
+ ), o, s, a = (
1097
+ /*$_*/
1098
+ n[28]("faceCollector.unaliveCapture") + ""
1099
+ ), l;
1100
+ const c = {
1101
+ c: function() {
1102
+ e = p("h1"), o = N(i), s = N(": "), l = N(a), d(e, "class", "text-3xl font-bold pb-[1em] transition-opacity text-error"), v(e, w, 923, 12, 37903);
1103
+ },
1104
+ m: function(b, m) {
1105
+ B(b, e, m), u(e, o), u(e, s), u(e, l);
1106
+ },
1107
+ p: function(b, m) {
1108
+ m[0] & /*$_*/
1109
+ 268435456 && i !== (i = /*$_*/
1110
+ b[28]("liveness.error.error") + "") && z(o, i), m[0] & /*$_*/
1111
+ 268435456 && a !== (a = /*$_*/
1112
+ b[28]("faceCollector.unaliveCapture") + "") && z(l, a);
1113
+ },
1114
+ d: function(b) {
1115
+ b && W(e);
1116
+ }
1117
+ };
1118
+ return U("SvelteRegisterBlock", {
1119
+ block: c,
1120
+ id: Pn.name,
1121
+ type: "if",
1122
+ source: "(923:76) ",
1123
+ ctx: n
1124
+ }), c;
1125
+ }
1126
+ function Tn(n) {
1127
+ let e, i = (
1128
+ /*$_*/
1129
+ n[28]("liveness.error.error") + ""
1130
+ ), o, s, a = (
1131
+ /*$_*/
1132
+ n[28](
1133
+ /*livenessError*/
1134
+ n[14]
1135
+ ) + ""
1136
+ ), l, c;
1137
+ const r = {
1138
+ c: function() {
1139
+ e = p("h1"), o = N(i), s = N(": "), l = N(a), c = N("."), d(e, "class", "text-3xl font-bold pb-[1em] transition-opacity text-error"), v(e, w, 919, 12, 37660);
1140
+ },
1141
+ m: function(m, f) {
1142
+ B(m, e, f), u(e, o), u(e, s), u(e, l), u(e, c);
1143
+ },
1144
+ p: function(m, f) {
1145
+ f[0] & /*$_*/
1146
+ 268435456 && i !== (i = /*$_*/
1147
+ m[28]("liveness.error.error") + "") && z(o, i), f[0] & /*$_, livenessError*/
1148
+ 268451840 && a !== (a = /*$_*/
1149
+ m[28](
1150
+ /*livenessError*/
1151
+ m[14]
1152
+ ) + "") && z(l, a);
1153
+ },
1154
+ d: function(m) {
1155
+ m && W(e);
1156
+ }
1157
+ };
1158
+ return U("SvelteRegisterBlock", {
1159
+ block: r,
1160
+ id: Tn.name,
1161
+ type: "if",
1162
+ source: "(919:10) {#if $requestResult === requestResultEnum.LIVENESS_DETECTION_FAILURE || $requestResult === requestResultEnum.UNKNOWN_LIVENESS_ERROR}",
1163
+ ctx: n
1164
+ }), r;
1165
+ }
1166
+ function On(n) {
1167
+ let e, i, o, s, a = oe(), l, c = (
1168
+ /*unique*/
1169
+ n[8]
1170
+ ), r, b, m, f, R, O, C, h, E, g, L, q, S, Y, ye = oe() && /*waitingIdrndCaptureEvent*/
1171
+ n[13], he, me = oe() && /*idrndLoading*/
1172
+ n[11] && /*$cameraStatusStore*/
1173
+ n[17] === te.OK, we, X, Q, x, J, j, M, G = a && cn(n), V = mi(n);
1174
+ b = new $i({
1175
+ props: { className: "bottom-0" },
1176
+ $$inline: !0
1177
+ }), f = new sn({
1178
+ props: { className: "bottom-0" },
1179
+ $$inline: !0
1180
+ });
1181
+ let $ = (
1182
+ /*isCountingDown*/
1183
+ n[7] && bi(n)
1184
+ ), le = (
1185
+ /*$enableFaceApi*/
1186
+ n[26] && !/*isCountingDown*/
1187
+ n[7] && /*$faceFound*/
1188
+ n[29] && /*faceNotValidated*/
1189
+ n[15] && hi(n)
1190
+ ), ue = ye && _i(n), be = me && gi(n);
1191
+ function T(ie, k) {
1192
+ return (
1193
+ /*$captured*/
1194
+ ie[19] ? mn : bn
1195
+ );
1196
+ }
1197
+ let ae = T(n), ee = ae(n);
1198
+ const ke = [pn, gn], _e = [];
1199
+ function Me(ie, k) {
1200
+ return (!/*idrndClosed*/
1201
+ ie[12] || /*$captured*/
1202
+ ie[19]) && /*showUnconformities*/
1203
+ ie[2] ? 0 : (
1204
+ /*$cameraStatusStore*/
1205
+ ie[17] !== te.OK ? 1 : -1
1206
+ );
1207
+ }
1208
+ ~(J = Me(n)) && (j = _e[J] = ke[J](n));
1209
+ const Pe = {
1210
+ c: function() {
1211
+ e = p("div"), i = p("div"), o = p("div"), s = p("div"), G && G.c(), l = K(), V.c(), r = K(), Vt(b.$$.fragment), m = K(), Vt(f.$$.fragment), R = K(), O = p("canvas"), C = K(), h = p("canvas"), E = K(), g = p("canvas"), L = K(), $ && $.c(), q = K(), le && le.c(), Y = K(), ue && ue.c(), he = K(), be && be.c(), we = K(), X = p("div"), ee.c(), x = K(), j && j.c(), this.c = de, d(O, "id", "bry-ce-displayCanvas"), d(O, "class", "max-w-full -scale-x-100"), v(O, w, 812, 8, 32761), d(h, "id", "bry-ce-detectionsCanvas"), d(h, "class", "absolute top-0 left-0 max-w-full -scale-x-100"), v(h, w, 814, 8, 32887), d(g, "id", "bry-ce-maskCanvas"), d(g, "class", "absolute top-0 left-0 max-w-full -scale-x-100"), v(g, w, 819, 8, 33056), d(s, "class", "relative"), s.hidden = S = /*$cameraStatusStore*/
1212
+ n[17] !== te.OK || oe() && /*idrndLoading*/
1213
+ (n[11] || /*idrndClosed*/
1214
+ n[12] || /*waitingIdrndCaptureEvent*/
1215
+ n[13]), v(s, w, 777, 6, 31494), d(X, "class", "px-4 sm:px-0 mt-[1em]"), X.hidden = Q = !/*showCaptureButton*/
1216
+ n[1] || oe() && /*idrndLoading*/
1217
+ (n[11] || /*idrndClosed*/
1218
+ n[12] || /*waitingIdrndCaptureEvent*/
1219
+ n[13]), v(X, w, 861, 6, 35220), d(o, "class", "relative mx-auto"), v(o, w, 776, 4, 31457), d(i, "class", "flex flex-col justify-between"), v(i, w, 775, 2, 31384), v(e, w, 771, 0, 31149);
1220
+ },
1221
+ l: function(k) {
1222
+ throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option");
1223
+ },
1224
+ m: function(k, Z) {
1225
+ B(k, e, Z), u(e, i), u(i, o), u(o, s), G && G.m(s, null), u(s, l), V.m(s, null), u(s, r), Kt(b, s, null), u(s, m), Kt(f, s, null), u(s, R), u(s, O), n[48](O), u(s, C), u(s, h), n[49](h), u(s, E), u(s, g), n[50](g), u(s, L), $ && $.m(s, null), u(s, q), le && le.m(s, null), u(o, Y), ue && ue.m(o, null), u(o, he), be && be.m(o, null), u(o, we), u(o, X), ee.m(X, null), n[54](i), u(e, x), ~J && _e[J].m(e, null), M = !0;
1226
+ },
1227
+ p: function(k, Z) {
1228
+ a && G.p(k, Z), Z[0] & /*unique*/
1229
+ 256 && xi(c, c = /*unique*/
1230
+ k[8]) ? (V.d(1), V = mi(k), V.c(), V.m(s, r)) : V.p(k, Z), /*isCountingDown*/
1231
+ k[7] ? $ ? $.p(k, Z) : ($ = bi(k), $.c(), $.m(s, q)) : $ && ($.d(1), $ = null), /*$enableFaceApi*/
1232
+ k[26] && !/*isCountingDown*/
1233
+ k[7] && /*$faceFound*/
1234
+ k[29] && /*faceNotValidated*/
1235
+ k[15] ? le ? le.p(k, Z) : (le = hi(k), le.c(), le.m(s, null)) : le && (le.d(1), le = null), (!M || Z[0] & /*$cameraStatusStore, idrndLoading, idrndClosed, waitingIdrndCaptureEvent*/
1236
+ 145408 && S !== (S = /*$cameraStatusStore*/
1237
+ k[17] !== te.OK || oe() && /*idrndLoading*/
1238
+ (k[11] || /*idrndClosed*/
1239
+ k[12] || /*waitingIdrndCaptureEvent*/
1240
+ k[13]))) && Xe(s, "hidden", S), Z[0] & /*waitingIdrndCaptureEvent*/
1241
+ 8192 && (ye = oe() && /*waitingIdrndCaptureEvent*/
1242
+ k[13]), ye ? ue ? ue.p(k, Z) : (ue = _i(k), ue.c(), ue.m(o, he)) : ue && (ue.d(1), ue = null), Z[0] & /*idrndLoading, $cameraStatusStore*/
1243
+ 133120 && (me = oe() && /*idrndLoading*/
1244
+ k[11] && /*$cameraStatusStore*/
1245
+ k[17] === te.OK), me ? be ? be.p(k, Z) : (be = gi(k), be.c(), be.m(o, we)) : be && (be.d(1), be = null), ae === (ae = T(k)) && ee ? ee.p(k, Z) : (ee.d(1), ee = ae(k), ee && (ee.c(), ee.m(X, null))), (!M || Z[0] & /*showCaptureButton, idrndLoading, idrndClosed, waitingIdrndCaptureEvent*/
1246
+ 14338 && Q !== (Q = !/*showCaptureButton*/
1247
+ k[1] || oe() && /*idrndLoading*/
1248
+ (k[11] || /*idrndClosed*/
1249
+ k[12] || /*waitingIdrndCaptureEvent*/
1250
+ k[13]))) && Xe(X, "hidden", Q);
1251
+ let ge = J;
1252
+ J = Me(k), J === ge ? ~J && _e[J].p(k, Z) : (j && (on(), De(_e[ge], 1, 1, () => {
1253
+ _e[ge] = null;
1254
+ }), an()), ~J ? (j = _e[J], j ? j.p(k, Z) : (j = _e[J] = ke[J](k), j.c()), Le(j, 1), j.m(e, null)) : j = null);
1255
+ },
1256
+ i: function(k) {
1257
+ M || (Le(b.$$.fragment, k), Le(f.$$.fragment, k), Le(j), M = !0);
1258
+ },
1259
+ o: function(k) {
1260
+ De(b.$$.fragment, k), De(f.$$.fragment, k), De(j), M = !1;
1261
+ },
1262
+ d: function(k) {
1263
+ k && W(e), G && G.d(), V.d(k), jt(b), jt(f), n[48](null), n[49](null), n[50](null), $ && $.d(), le && le.d(), ue && ue.d(), be && be.d(), ee.d(), n[54](null), ~J && _e[J].d();
1264
+ }
1265
+ };
1266
+ return U("SvelteRegisterBlock", {
1267
+ block: Pe,
1268
+ id: On.name,
1269
+ type: "component",
1270
+ source: "",
1271
+ ctx: n
1272
+ }), Pe;
1273
+ }
1274
+ function di(n, e, i) {
1275
+ const o = e.videoHeight >= e.videoWidth && i.height >= i.width || e.videoHeight < e.videoWidth && i.height < i.width;
1276
+ n.drawImage(
1277
+ e,
1278
+ o ? 0 : e.videoWidth / 2 - i.width,
1279
+ 0,
1280
+ o ? e.videoWidth : e.videoHeight * (i.width / i.height),
1281
+ e.videoHeight,
1282
+ 0,
1283
+ 0,
1284
+ i.width,
1285
+ i.height
1286
+ );
1287
+ }
1288
+ function ao(n, e, i) {
1289
+ let o, s, a, l, c, r, b, m, f, R, O, C, h, E, g, L, q, S, Y, ye, he, me, we, X, Q, x, J, j, M, G, V, $, le;
1290
+ F(mt, "retakePhoto"), D(n, mt, (t) => i(71, o = t)), F(fe, "cameraStatusStore"), D(n, fe, (t) => i(17, a = t)), F(qe, "facingMode"), D(n, qe, (t) => i(73, l = t)), F(et, "selectedVideoDeviceId"), D(n, et, (t) => i(74, c = t)), F(Fe, "videoStore"), D(n, Fe, (t) => i(18, r = t)), F(Zt, "cameraDevicesStore"), D(n, Zt, (t) => i(75, b = t)), F(Ne, "captured"), D(n, Ne, (t) => i(19, m = t)), F(bt, "clearedVideoSrcObject"), D(n, bt, (t) => i(76, f = t)), F(Dt, "_stream"), D(n, Dt, (t) => i(77, R = t)), F(xt, "automaticCapture"), D(n, xt, (t) => i(78, O = t)), F($t, "showLivenessResultToast"), D(n, $t, (t) => i(79, C = t)), F(Be, "unconformitiesStore"), D(n, Be, (t) => i(20, h = t)), F(He, "originalCapture"), D(n, He, (t) => i(80, E = t)), F(pe, "requestResult"), D(n, pe, (t) => i(21, g = t)), F(ht, "saved"), D(n, ht, (t) => i(22, L = t)), F(_t, "justification"), D(n, _t, (t) => i(23, q = t)), F(Se, "image"), D(n, Se, (t) => i(24, S = t)), F(ei, "boxStore"), D(n, ei, (t) => i(81, ye = t)), F(ti, "enableFaceApi"), D(n, ti, (t) => i(26, he = t)), F(tt, "ready"), D(n, tt, (t) => i(27, me = t)), F(gt, "selectedTab"), D(n, gt, (t) => i(82, we = t)), F(ii, "_"), D(n, ii, (t) => i(28, X = t)), F(ni, "captureLivenessIdrndEndpoint"), D(n, ni, (t) => i(83, Q = t)), F(it, "blob"), D(n, it, (t) => i(84, x = t)), F(Lt, "idrndInitialized"), D(n, Lt, (t) => i(85, J = t)), F(At, "idrndVideoStoreDimensions"), D(n, At, (t) => i(86, j = t)), F(Nt, "ovalDimensions"), D(n, Nt, (t) => i(87, M = t)), F(Bt, "faceFound"), D(n, Bt, (t) => i(29, G = t)), F(oi, "isLoading"), D(n, oi, (t) => i(30, V = t)), F(ai, "showFaceWhileValidating"), D(n, ai, (t) => i(31, $ = t)), F(si, "exportButtonDisabled"), D(n, si, (t) => i(32, le = t));
1291
+ let { $$slots: ue = {}, $$scope: be } = e;
1292
+ eo("face-collector", ue, []);
1293
+ let T, ae, ee, ke = !1, _e = {}, Me = !1, { enableMinutiae: Pe } = e, { videoDimensions: ie } = e, { noTabs: k } = e, { weightsPath: Z } = e, { evaluatePhoto: ge } = e, { showCaptureButton: ot } = e, { showUnconformities: at } = e, { videoFilter: Ae } = e;
1294
+ const Qe = ui(!1);
1295
+ F(Qe, "startFaceApi"), D(n, Qe, (t) => i(72, s = t));
1296
+ const We = ui("data:image/png;base64");
1297
+ F(We, "dataTypePrefix"), D(n, We, (t) => i(25, Y = t));
1298
+ let { widgetInstance: ce } = e, Te, H, Ue = !1, st = !1, Je = !0, Ee = !0, Ge = !1, St = 0, Ce = "", lt = 0, Xt = 5, It = 3e3, ct = !0, rt = 0, ut = !1, Ve = !1, Ye = "";
1299
+ const Pt = Bi.mixin({
1300
+ toast: !0,
1301
+ position: "bottom-left",
1302
+ timer: 13e3,
1303
+ timerProgressBar: !0
1304
+ });
1305
+ Mi(async () => {
1306
+ Wi("Mounting Face Collector!"), _(tt, me = !1, me), _(Bt, G = !1, G), _(Ne, m = !1, m), _(qe, l = pt.FRONT_CAMERA, l), oe() && (import("./index-no-detector_acb82d83_2.2.3-RC01.js"), Ci()), he && (await Ui(Z), Me = !0), await Oe();
1307
+ });
1308
+ function Tt(t, y) {
1309
+ t.clearRect(0, 0, H.width, H.height), t.save(), Ae == "blur" ? (t.filter = `blur(${y.width / 60}px)`, t.rect(0, 0, H.width, H.height)) : Ae != "none" ? (t.fillStyle = Ae, t.fillRect(0, 0, H.width, H.height)) : (t.beginPath(), t.rect(0, 0, H.width, H.height));
1310
+ const P = H.height * 0.65, I = P / 1.45, A = r.videoWidth / 2, ne = r.videoHeight * 0.51;
1311
+ _(Nt, M.width = I, M), t.ellipse(A, ne, I / 2, P / 2, 0, 0, 2 * Math.PI, !0), t.clip(), di(t, y, H), t.restore(), t.save(), t.beginPath();
1312
+ const xe = window.getComputedStyle(H).getPropertyValue("--p"), $e = window.getComputedStyle(H).getPropertyValue("--su");
1313
+ if (t.strokeStyle = `hsl(${xe})`, t.lineWidth = 16, t.ellipse(A, ne, I / 2, P / 2, 0, 0, 2 * Math.PI), t.stroke(), ke && !ut) {
1314
+ const dt = 1 - (rt - (/* @__PURE__ */ new Date()).getTime()) / It;
1315
+ t.save(), t.beginPath(), t.lineWidth = 16, t.strokeStyle = `hsl(${$e})`, t.ellipse(A, ne, I / 2, P / 2, 0, 0 - Math.PI / 2, 1.5 * (Math.PI * 2 * dt) - Math.PI / 2), t.stroke();
1316
+ }
1317
+ t.beginPath();
1318
+ const re = new Path2D();
1319
+ re.ellipse(A, ne, I / 2, P / 2, 0, 0, 2 * Math.PI), t.clip(re), di(t, y, H), t.restore();
1320
+ }
1321
+ function Ci() {
1322
+ ce.addEventListener("open", (t) => {
1323
+ const y = t.detail[0].video;
1324
+ _(
1325
+ At,
1326
+ j = {
1327
+ width: y.videoWidth,
1328
+ height: y.videoHeight
1329
+ },
1330
+ j
1331
+ ), i(4, T.srcObject = y.srcObject, T), i(11, Je = !1);
1332
+ function P() {
1333
+ Ee || (Tt(H.getContext("2d"), y), ze(T, P, !0));
1334
+ }
1335
+ P();
1336
+ }), ce.addEventListener("error", (t) => {
1337
+ console.error(t), t.detail[0].message === "Device in use" ? _(fe, a = te.CAMERA_IN_USE_ERROR, a) : t.detail[0].message === "Permission denied" || t.detail[0].message === "Permission dismissed" ? _(fe, a = te.CAMERA_DENIED_ERROR, a) : t.detail[0].message === "Requested device not found" && _(fe, a = te.DEVICE_NOT_FOUND_ERROR, a), i(11, Je = !1);
1338
+ }), ce.addEventListener("faceDetection", (t) => {
1339
+ }), ce.addEventListener("close", async (t) => {
1340
+ m || (Ue = !1), i(12, Ee = !0), i(13, Ge = !1), a === te.OK && _(fe, a = te.CAMERA_CLOSED_ERROR, a);
1341
+ }), ce.addEventListener("initialize", async (t) => {
1342
+ st = !0, _(Lt, J = !0, J), we === vt.Face && !Ue && !m && st && await Ot();
1343
+ }), ce.addEventListener("capture", async (t) => {
1344
+ i(14, Ce = "");
1345
+ const { encryptedFile: y, photo: P } = t.detail[0];
1346
+ _(it, x = y, x), i(13, Ge = !1), _(pe, g = se.OK, g), _(Be, h.isLoading = !0, h), _(Ne, m = !0, m), Ue = !1;
1347
+ const I = (await wt(P)).split(",");
1348
+ if (_(We, Y = I[0], Y), _(Se, S = I[1], S), _(He, E = I[1], E), !Q) {
1349
+ let re, dt;
1350
+ try {
1351
+ ({ bodyParts: re, icaoWarnings: dt } = await kt(E, ge, (await wt(y)).split(",")[1])), window.dispatchEvent(new CustomEvent(
1352
+ "face-unconformities-validated",
1353
+ {
1354
+ detail: {
1355
+ bodyParts: re,
1356
+ icaoWarnings: dt,
1357
+ status: g
1358
+ }
1359
+ }
1360
+ ));
1361
+ } catch (je) {
1362
+ console.error(je);
1363
+ let Ft = Mt.UNKNOWN, Yt = [], Ai = [];
1364
+ if (je instanceof li && je.response?.status === 400)
1365
+ if (je.response.data && Array.isArray(je.response.data.bodyParts)) {
1366
+ Yt = je.response.data.bodyParts, Ai = je.response.data.icaoWarnings;
1367
+ const Ni = Yt.find((Yn) => Yn.livenessResult.error);
1368
+ Ft = Ni?.livenessResult.error_code, _(pe, g = se.LIVENESS_DETECTION_FAILURE, g), Ni?.livenessResult.error_code || _(pe, g = se.UNKNOWN_LIVENESS_ERROR, g), i(14, Ce = Mt[Ft]), console.error("Liveness error:", Ft);
1369
+ } else
1370
+ _(pe, g = se.TEMPLATE_EXTRACTION_ERROR, g);
1371
+ else
1372
+ _(pe, g = se.UNKNOWN_LIVENESS_ERROR, g), Pt.fire({
1373
+ icon: "error",
1374
+ title: "Falha ao comunicar com serviço de Liveness"
1375
+ });
1376
+ _(Be, h.isLoading = !1, h), window.dispatchEvent(new CustomEvent(
1377
+ "face-unconformities-validated",
1378
+ {
1379
+ detail: {
1380
+ bodyParts: Yt,
1381
+ errorCode: Ft,
1382
+ translatedError: X(Ce),
1383
+ status: g,
1384
+ icaoWarnings: Ai
1385
+ }
1386
+ }
1387
+ ));
1388
+ return;
1389
+ }
1390
+ if (g !== se.OK) {
1391
+ _(Be, h.isLoading = !1, h);
1392
+ return;
1393
+ }
1394
+ re[0].livenessResult && Jt(re[0].livenessResult), re.length !== 0 && re[0].data && _(Se, S = re[0].data, S), Ct(dt);
1395
+ return;
1396
+ }
1397
+ let A, ne;
1398
+ try {
1399
+ ne = await Vi(y), Jt(ne.data);
1400
+ } catch (re) {
1401
+ _(pe, g = se.UNKNOWN_LIVENESS_ERROR, g), console.error(re), re instanceof li && re.response?.status === 400 ? (A = re.response.data.error_code, i(14, Ce = Mt[A]), console.error("Liveness error:", A), _(pe, g = se.LIVENESS_DETECTION_FAILURE, g)) : Pt.fire({
1402
+ icon: "error",
1403
+ title: "Falha ao comunicar com serviço de Liveness"
1404
+ });
1405
+ }
1406
+ if (g !== se.OK) {
1407
+ _(Be, h.isLoading = !1, h), window.dispatchEvent(new CustomEvent(
1408
+ "face-unconformities-validated",
1409
+ {
1410
+ detail: {
1411
+ bodyParts: [
1412
+ {
1413
+ bodyPart: "FACE",
1414
+ data: E,
1415
+ livenessBlob: (await wt(y)).split(",")[1],
1416
+ ...ne && { livenessResult: ne }
1417
+ }
1418
+ ],
1419
+ ...A && { errorCode: A },
1420
+ ...Ce && { translatedError: X(Ce) },
1421
+ status: g
1422
+ }
1423
+ }
1424
+ ));
1425
+ return;
1426
+ }
1427
+ let { bodyParts: xe, icaoWarnings: $e } = await kt(E, ge);
1428
+ window.dispatchEvent(new CustomEvent(
1429
+ "face-unconformities-validated",
1430
+ {
1431
+ detail: {
1432
+ bodyParts: xe,
1433
+ icaoWarnings: $e,
1434
+ status: g,
1435
+ errorCode: A,
1436
+ ...Ce && { translatedError: X(Ce) }
1437
+ }
1438
+ }
1439
+ )), xe[0].data && _(Se, S = xe[0].data, S), Ct($e);
1440
+ });
1441
+ }
1442
+ async function Oe(t) {
1443
+ const [y, P] = (ie ?? "")?.replaceAll(" ", "")?.split("x")?.map((I) => I ? parseInt(I) : void 0);
1444
+ if (!(!y || !P)) {
1445
+ if (_(Fe, r = { videoWidth: y, videoHeight: P }, r), oe() && P < y && yt() && _(Fe, r = { videoWidth: P, videoHeight: y }, r), oe()) {
1446
+ Ot();
1447
+ return;
1448
+ }
1449
+ await yi(y, P, t);
1450
+ }
1451
+ }
1452
+ function Ot() {
1453
+ oe() && (_(fe, a = te.OK, a), ce && "openCamera" in ce && ce.openCamera(), Ue = !0, i(12, Ee = !1), i(11, Je = !0));
1454
+ }
1455
+ async function Ze() {
1456
+ if (he && !Me)
1457
+ return ze(T, Ze);
1458
+ if (T) {
1459
+ if (we !== vt.Face && !k)
1460
+ return ze(T, Ze);
1461
+ _(tt, me = !0, me), he ? (s || _(Qe, s = !0, s), oe() || Tt(H.getContext("2d"), T), ze(T, Ze)) : (Tt(H.getContext("2d"), T), ze(T, Ze));
1462
+ }
1463
+ }
1464
+ async function Qt() {
1465
+ if (ri(), _(pe, g = se.OK, g), oe()) {
1466
+ i(13, Ge = !0), ce.takePhoto();
1467
+ return;
1468
+ }
1469
+ if (_(Ne, m = !0, m), he) {
1470
+ const [t] = await (await import("./face_api_0e3ce8c8_2.2.3-RC01.js")).extractFaces(T, [ye]), y = t.toDataURL("image/jpeg").split(",");
1471
+ _(We, Y = y[0], Y), _(Se, S = y[1], S), _(He, E = y[1], E);
1472
+ let { bodyParts: P, icaoWarnings: I } = await kt(S, ge);
1473
+ window.dispatchEvent(new CustomEvent(
1474
+ "face-unconformities-validated",
1475
+ {
1476
+ detail: {
1477
+ bodyParts: P,
1478
+ icaoWarnings: I,
1479
+ status: g
1480
+ }
1481
+ }
1482
+ )), P.length !== 0 && P[0].data && _(Se, S = P[0].data, S), Ct(I);
1483
+ } else {
1484
+ const t = document.createElement("canvas"), y = t.getContext("2d");
1485
+ t.width = T.width, t.height = T.height, y?.drawImage(T, 0, 0, t.width, t.height);
1486
+ const P = t.toDataURL("image/jpeg").split(",");
1487
+ _(We, Y = P[0], Y), _(Se, S = P[1], S), _(He, E = P[1], E);
1488
+ let { bodyParts: I, icaoWarnings: A } = await kt(S, ge);
1489
+ window.dispatchEvent(new CustomEvent(
1490
+ "face-unconformities-validated",
1491
+ {
1492
+ detail: {
1493
+ bodyParts: I,
1494
+ icaoWarnings: A,
1495
+ status: g
1496
+ }
1497
+ }
1498
+ )), I.length !== 0 && I[0].data && _(Se, S = I[0].data, S), Ct(A);
1499
+ }
1500
+ }
1501
+ function ft() {
1502
+ const t = {
1503
+ bodyPart: "FACE",
1504
+ data: S,
1505
+ justification: q
1506
+ };
1507
+ _(ht, L = !0, L), Rt(it) && wt(Rt(it)).then((y) => {
1508
+ t.livenessBlob = y.split(",")[1];
1509
+ }), window.dispatchEvent(new CustomEvent("export-face", { detail: t }));
1510
+ }
1511
+ function Ke() {
1512
+ window.dispatchEvent(new CustomEvent("face-scrapped")), _(ht, L = !1, L), _(pe, g = se.OK, g), _(Ne, m = !1, m), _(He, E = "", E), _(Be, h.unconformities = [], h);
1513
+ const t = Rt(Wt);
1514
+ t.closedMouth = !1, t.isPersonCloseEnough = !1, t.isPersonTooclose = !0, t.isPersonInFrame = !1, i(16, Ye = ""), i(15, Ve = !1), Wt.set(t), Ee && Ot();
1515
+ }
1516
+ function Jt(t) {
1517
+ let y = "", P = "success";
1518
+ t.isAlive ? y = `Vivacidade de face (${t.face_liveness.probability.toFixed(2)}) e de captura (${t.capture_liveness.probability}, ${t.capture_liveness.score.toFixed(2)}) verificados!` : t?.face_liveness?.probability && (P = "error", y = `Vivacidade de face (${t.face_liveness.probability.toFixed(2)}) e de captura (${t.capture_liveness.probability}, ${t.capture_liveness.score.toFixed(2)}) insuficientes!`), C && Pt.fire({ icon: P, title: y });
1519
+ }
1520
+ async function yi(t, y, P) {
1521
+ try {
1522
+ if (a == te.CAMERA_ORIENTATION_PORTRAIT)
1523
+ return;
1524
+ await ci();
1525
+ const { deviceId: I, width: A, height: ne, aspectRatio: xe, facingMode: $e, touchPoints: re } = await Ki(t, y, l, P);
1526
+ A < t && ne < y && _(
1527
+ Fe,
1528
+ r = {
1529
+ videoWidth: A,
1530
+ videoHeight: ne
1531
+ },
1532
+ r
1533
+ ), yt() && (!$e || re <= 1) && A > ne && _(
1534
+ Fe,
1535
+ r = {
1536
+ videoWidth: ne,
1537
+ videoHeight: A
1538
+ },
1539
+ r
1540
+ ), _(et, c = I || b[0].deviceId, c), _(fe, a = te.OK, a);
1541
+ } catch (I) {
1542
+ const A = I;
1543
+ i(12, Ee = !0);
1544
+ const ne = Et(I) && I.constraint ? I.constraint : "";
1545
+ console.error(A, ne), Et(A) && "message" in A && A.message.includes("Permission denied") && (console.error("User didn't give permission to use camera!"), _(fe, a = te.CAMERA_DENIED_ERROR, a)), Et(A) && "message" in A && A.message.includes("Requested device not found") && _(fe, a = te.DEVICE_NOT_FOUND_ERROR, a), (ne.includes("width") || ne.includes("height")) && (console.error(`Camera does not meet the minimum supported requirements! (${ne})`), _(fe, a = te.CAMERA_UNSUPPORTED, a));
1546
+ }
1547
+ }
1548
+ const Ei = Fe.subscribe((t) => {
1549
+ T && ae && (i(4, T.width = t.videoWidth, T), i(4, T.height = t.videoHeight, T), i(5, ae.width = t.videoWidth, ae), i(5, ae.height = t.videoHeight, ae), i(9, Te.width = t.videoWidth, Te), i(9, Te.height = t.videoHeight, Te), i(10, H.width = t.videoWidth, H), i(10, H.height = t.videoHeight, H));
1550
+ }), Ri = Wt.subscribe((t) => {
1551
+ let y = "";
1552
+ if (t.isPersonCloseEnough ? t.isPersonTooclose ? y = "faceCollector.moveAwayCamera" : t.isPersonInFrame ? t.closedMouth || (y = "faceCollector.dontOpenMouth") : y = "faceCollector.stayInFrame" : y = "faceCollector.comeCloserCamera", y != "" && y != Ye && (i(15, Ve = !1), setTimeout(
1553
+ () => {
1554
+ i(16, Ye = y), i(15, Ve = !0);
1555
+ },
1556
+ 1e3
1557
+ )), !m && O && !ke && t.isPersonInFrame && t.closedMouth && !(!t.isPersonCloseEnough || t.isPersonTooclose)) {
1558
+ i(7, ke = !0), i(15, Ve = !1), rt = (/* @__PURE__ */ new Date()).getTime() + It;
1559
+ const P = setInterval(
1560
+ () => {
1561
+ if (!O || m || oe() && Ee || !t.isPersonCloseEnough || t.isPersonTooclose || !t.closedMouth || !t.isPersonInFrame) {
1562
+ i(7, ke = !1), ut = !0, setTimeout(
1563
+ () => {
1564
+ ut = !1;
1565
+ },
1566
+ 1500
1567
+ ), clearInterval(P);
1568
+ return;
1569
+ }
1570
+ const I = (/* @__PURE__ */ new Date()).getTime();
1571
+ Math.floor((rt - I) % (1e3 * 60) / 1e3) <= 0 && (clearInterval(P), i(7, ke = !1), document.getElementsByTagName("biometric-collector")?.[0]?.shadowRoot?.getElementById("bry-cc-capture-btn")?.click());
1572
+ },
1573
+ 100
1574
+ );
1575
+ }
1576
+ }), Si = Ne.subscribe((t) => {
1577
+ ee && (t ? (ee.classList.remove("flex"), ee.classList.add("hidden")) : (ee.classList.add("flex"), ee.classList.remove("hidden")));
1578
+ }), Ii = bt.subscribe((t) => {
1579
+ T && t && (console.log("setting null in video srcObject"), i(4, T.srcObject = null, T), i(4, T.src = "", T));
1580
+ });
1581
+ gt.subscribe(async (t) => {
1582
+ t === vt.Face && await ci();
1583
+ });
1584
+ const Pi = et.subscribe(async (t) => {
1585
+ if (oe() || !t)
1586
+ return;
1587
+ T || i(8, _e = {});
1588
+ const { videoHeight: y, videoWidth: P } = r;
1589
+ try {
1590
+ const I = await ji(P, y, t);
1591
+ i(4, T.srcObject = I, T), _(Dt, R = I, R), _(bt, f = !1, f), ct || (_(fe, a = te.CAMERA_ORIENTATION_PORTRAIT, a), Ut());
1592
+ } catch (I) {
1593
+ const A = I;
1594
+ i(12, Ee = !0), Et(A) && "message" in A && A.message.includes("Requested device not found") && _(fe, a = te.DEVICE_NOT_FOUND_ERROR, a);
1595
+ }
1596
+ }), Ti = gt.subscribe(async (t) => {
1597
+ t === vt.Face && oe() && !Ue && !m && st && await Oe();
1598
+ }), Oi = Qe.subscribe(async (t) => {
1599
+ t && Gt();
1600
+ }), Fi = qi.subscribe(async (t) => {
1601
+ if (r) {
1602
+ if (!yt()) {
1603
+ const y = b.find((I) => I.deviceId !== c), P = y ? y.deviceId : b[0].deviceId;
1604
+ Oe(P);
1605
+ return;
1606
+ }
1607
+ t ? (_(qe, l = pt.REAR_CAMERA, l), await Oe()) : (_(qe, l = pt.FRONT_CAMERA, l), await Oe());
1608
+ }
1609
+ }), Di = Hi.subscribe(async (t) => {
1610
+ !t.isSupported || !yt() || (ct = t.orientation.includes("portrait"), ct ? (_(fe, a = te.OK, a), r && (_(et, c = "", c), _(qe, l = pt.FRONT_CAMERA, l), await Oe())) : (_(fe, a = te.CAMERA_ORIENTATION_PORTRAIT, a), Ut()));
1611
+ });
1612
+ async function Gt() {
1613
+ let t;
1614
+ if (lt >= Xt) {
1615
+ lt = 0;
1616
+ const y = await Qi(), P = await import("./face_api_0e3ce8c8_2.2.3-RC01.js");
1617
+ let I;
1618
+ I = P.detectSingleFace(H, y), t = await I.withFaceLandmarks(), ae.getContext("2d")?.clearRect(0, 0, ae.width, ae.height);
1619
+ } else
1620
+ lt++;
1621
+ t ? Xi(t, ae, Pe) : Ji(), s && ze(T, Gt);
1622
+ }
1623
+ mt.subscribe(async (t) => {
1624
+ t && (Ke(), _(mt, o = !1, o));
1625
+ });
1626
+ const Li = tt.subscribe((t) => {
1627
+ t && window.dispatchEvent(new CustomEvent("brycc-camera-ready"));
1628
+ });
1629
+ zi(() => {
1630
+ Ut(), Si(), Ri(), Ei(), Ii(), Pi(), Ti(), clearInterval(St), Oi(), Fi(), Di(), Li(), ri(), St = 0;
1631
+ }), n.$$.on_mount.push(function() {
1632
+ Pe === void 0 && !("enableMinutiae" in e || n.$$.bound[n.$$.props.enableMinutiae]) && Ie.warn("<face-collector> was created without expected prop 'enableMinutiae'"), ie === void 0 && !("videoDimensions" in e || n.$$.bound[n.$$.props.videoDimensions]) && Ie.warn("<face-collector> was created without expected prop 'videoDimensions'"), k === void 0 && !("noTabs" in e || n.$$.bound[n.$$.props.noTabs]) && Ie.warn("<face-collector> was created without expected prop 'noTabs'"), Z === void 0 && !("weightsPath" in e || n.$$.bound[n.$$.props.weightsPath]) && Ie.warn("<face-collector> was created without expected prop 'weightsPath'"), ge === void 0 && !("evaluatePhoto" in e || n.$$.bound[n.$$.props.evaluatePhoto]) && Ie.warn("<face-collector> was created without expected prop 'evaluatePhoto'"), ot === void 0 && !("showCaptureButton" in e || n.$$.bound[n.$$.props.showCaptureButton]) && Ie.warn("<face-collector> was created without expected prop 'showCaptureButton'"), at === void 0 && !("showUnconformities" in e || n.$$.bound[n.$$.props.showUnconformities]) && Ie.warn("<face-collector> was created without expected prop 'showUnconformities'"), Ae === void 0 && !("videoFilter" in e || n.$$.bound[n.$$.props.videoFilter]) && Ie.warn("<face-collector> was created without expected prop 'videoFilter'"), ce === void 0 && !("widgetInstance" in e || n.$$.bound[n.$$.props.widgetInstance]) && Ie.warn("<face-collector> was created without expected prop 'widgetInstance'");
1633
+ });
1634
+ const Fn = [
1635
+ "enableMinutiae",
1636
+ "videoDimensions",
1637
+ "noTabs",
1638
+ "weightsPath",
1639
+ "evaluatePhoto",
1640
+ "showCaptureButton",
1641
+ "showUnconformities",
1642
+ "videoFilter",
1643
+ "widgetInstance"
1644
+ ];
1645
+ Object.keys(e).forEach((t) => {
1646
+ !~Fn.indexOf(t) && t.slice(0, 2) !== "$$" && t !== "slot" && Ie.warn(`<face-collector> was created with unknown prop '${t}'`);
1647
+ });
1648
+ function Dn(t) {
1649
+ nt[t ? "unshift" : "push"](() => {
1650
+ ce = t, i(0, ce);
1651
+ });
1652
+ }
1653
+ function Ln(t) {
1654
+ nt[t ? "unshift" : "push"](() => {
1655
+ T = t, i(4, T);
1656
+ });
1657
+ }
1658
+ const An = () => {
1659
+ oe() || _(
1660
+ Fe,
1661
+ r = {
1662
+ videoHeight: T.videoHeight,
1663
+ videoWidth: T.videoWidth
1664
+ },
1665
+ r
1666
+ );
1667
+ };
1668
+ function Nn(t) {
1669
+ nt[t ? "unshift" : "push"](() => {
1670
+ H = t, i(10, H);
1671
+ });
1672
+ }
1673
+ function Bn(t) {
1674
+ nt[t ? "unshift" : "push"](() => {
1675
+ ae = t, i(5, ae);
1676
+ });
1677
+ }
1678
+ function Mn(t) {
1679
+ nt[t ? "unshift" : "push"](() => {
1680
+ Te = t, i(9, Te);
1681
+ });
1682
+ }
1683
+ const Wn = () => Qt(), Un = () => ft(), Vn = () => Ke();
1684
+ function Kn(t) {
1685
+ nt[t ? "unshift" : "push"](() => {
1686
+ ee = t, i(6, ee);
1687
+ });
1688
+ }
1689
+ const jn = () => ft(), qn = () => Ke();
1690
+ function Hn() {
1691
+ q = this.value, _t.set(q);
1692
+ }
1693
+ const zn = () => ft(), Xn = () => Ke();
1694
+ function Qn() {
1695
+ q = this.value, _t.set(q);
1696
+ }
1697
+ const Jn = () => Ke(), Gn = async () => {
1698
+ await Oe();
1699
+ };
1700
+ return n.$$set = (t) => {
1701
+ "enableMinutiae" in t && i(39, Pe = t.enableMinutiae), "videoDimensions" in t && i(40, ie = t.videoDimensions), "noTabs" in t && i(41, k = t.noTabs), "weightsPath" in t && i(42, Z = t.weightsPath), "evaluatePhoto" in t && i(43, ge = t.evaluatePhoto), "showCaptureButton" in t && i(1, ot = t.showCaptureButton), "showUnconformities" in t && i(2, at = t.showUnconformities), "videoFilter" in t && i(44, Ae = t.videoFilter), "widgetInstance" in t && i(0, ce = t.widgetInstance);
1702
+ }, n.$capture_state = () => ({
1703
+ CameraStatus: ln,
1704
+ onDestroy: zi,
1705
+ onMount: Mi,
1706
+ _: ii,
1707
+ isLoading: oi,
1708
+ get: Rt,
1709
+ writable: ui,
1710
+ selectedTab: gt,
1711
+ TabEnum: vt,
1712
+ cameraDeniedPermission: to,
1713
+ faceValidationsStore: Wt,
1714
+ getFaceUnconformities: kt,
1715
+ image: Se,
1716
+ unconformitiesStore: Be,
1717
+ setupStream: ji,
1718
+ videoStore: Fe,
1719
+ requestResult: pe,
1720
+ cameraDevicesStore: Zt,
1721
+ justification: _t,
1722
+ saved: ht,
1723
+ captured: Ne,
1724
+ _stream: Dt,
1725
+ shutOffCamera: Ut,
1726
+ ready: tt,
1727
+ clearedVideoSrcObject: bt,
1728
+ enumerateDevices: ci,
1729
+ originalCapture: He,
1730
+ automaticCapture: xt,
1731
+ selectedVideoDeviceId: et,
1732
+ unconformityToi18nKey: io,
1733
+ translateAndSetUnconformities: Ct,
1734
+ requestResultEnum: se,
1735
+ retakePhoto: mt,
1736
+ showFaceWhileValidating: ai,
1737
+ getVideoDimensions: Ki,
1738
+ FaceExportStrategy: en,
1739
+ orientationData: Hi,
1740
+ FacingModeEnum: pt,
1741
+ facingMode: qe,
1742
+ swapCamera: qi,
1743
+ ConfBtn: $i,
1744
+ CameraBtn: sn,
1745
+ ExportBtn: tn,
1746
+ enableStrategy: nn,
1747
+ exportButtonDisabled: si,
1748
+ boxStore: ei,
1749
+ drawDetectionsInFace: Xi,
1750
+ enableFaceApi: ti,
1751
+ faceFound: Bt,
1752
+ getFaceDetectorOptions: Qi,
1753
+ ovalDimensions: Nt,
1754
+ setFaceNotFoundTimeout: Ji,
1755
+ blobToBase64: wt,
1756
+ isMobile: yt,
1757
+ isObject: Et,
1758
+ loadFaceApiAndWeights: Ui,
1759
+ loopCaller: ze,
1760
+ unLockScreen: ri,
1761
+ isLivenessEnabled: oe,
1762
+ loadingGif: ki,
1763
+ getLivenessIdrnd: Vi,
1764
+ blob: it,
1765
+ idrndErrorToi18nKey: Mt,
1766
+ showLivenessResultToast: $t,
1767
+ captureLivenessIdrndEndpoint: ni,
1768
+ idrndInitialized: Lt,
1769
+ idrndVideoStoreDimensions: At,
1770
+ Swal: Bi,
1771
+ AxiosError: li,
1772
+ cameraStatusStore: fe,
1773
+ CameraStatusEnum: te,
1774
+ log: Wi,
1775
+ video: T,
1776
+ detectionsCanvas: ae,
1777
+ enclosingDiv: ee,
1778
+ isCountingDown: ke,
1779
+ unique: _e,
1780
+ loadedFaceApiAndWeights: Me,
1781
+ enableMinutiae: Pe,
1782
+ videoDimensions: ie,
1783
+ noTabs: k,
1784
+ weightsPath: Z,
1785
+ evaluatePhoto: ge,
1786
+ showCaptureButton: ot,
1787
+ showUnconformities: at,
1788
+ videoFilter: Ae,
1789
+ startFaceApi: Qe,
1790
+ dataTypePrefix: We,
1791
+ widgetInstance: ce,
1792
+ maskCanvas: Te,
1793
+ displayCanvas: H,
1794
+ capturing: Ue,
1795
+ initialized: st,
1796
+ idrndLoading: Je,
1797
+ idrndClosed: Ee,
1798
+ waitingIdrndCaptureEvent: Ge,
1799
+ intervalId: St,
1800
+ livenessError: Ce,
1801
+ faceapiCounter: lt,
1802
+ faceapiFrameRate: Xt,
1803
+ countDownCapture: It,
1804
+ rightOrientation: ct,
1805
+ countDownFinishTime: rt,
1806
+ disableCountDown: ut,
1807
+ faceNotValidated: Ve,
1808
+ faceValidationAlert: Ye,
1809
+ toast: Pt,
1810
+ drawOval: Tt,
1811
+ drawVideoOnCanvas: di,
1812
+ registerIdrndListeners: Ci,
1813
+ openCamera: Oe,
1814
+ openCameraLiveness: Ot,
1815
+ play: Ze,
1816
+ capture: Qt,
1817
+ save: ft,
1818
+ retake: Ke,
1819
+ validateLiveness: Jt,
1820
+ selectDevice: yi,
1821
+ unsubscribeVideoDimensions: Ei,
1822
+ unsubscribeFaceValidations: Ri,
1823
+ unsubscribeCapturedState: Si,
1824
+ unsubscribeClearVideoSrc: Ii,
1825
+ unsubscribeSelectedStream: Pi,
1826
+ unsubscribeChangeTab: Ti,
1827
+ unsubscribeFaceApi: Oi,
1828
+ unsubscribeSwapCamera: Fi,
1829
+ unsubscribeOrientation: Di,
1830
+ faceapiLoop: Gt,
1831
+ unsubscribeReadyCameraEventEmitter: Li,
1832
+ $retakePhoto: o,
1833
+ $startFaceApi: s,
1834
+ $cameraStatusStore: a,
1835
+ $facingMode: l,
1836
+ $selectedVideoDeviceId: c,
1837
+ $videoStore: r,
1838
+ $cameraDevicesStore: b,
1839
+ $captured: m,
1840
+ $clearedVideoSrcObject: f,
1841
+ $_stream: R,
1842
+ $automaticCapture: O,
1843
+ $showLivenessResultToast: C,
1844
+ $unconformitiesStore: h,
1845
+ $originalCapture: E,
1846
+ $requestResult: g,
1847
+ $saved: L,
1848
+ $justification: q,
1849
+ $image: S,
1850
+ $dataTypePrefix: Y,
1851
+ $boxStore: ye,
1852
+ $enableFaceApi: he,
1853
+ $ready: me,
1854
+ $selectedTab: we,
1855
+ $_: X,
1856
+ $captureLivenessIdrndEndpoint: Q,
1857
+ $blob: x,
1858
+ $idrndInitialized: J,
1859
+ $idrndVideoStoreDimensions: j,
1860
+ $ovalDimensions: M,
1861
+ $faceFound: G,
1862
+ $isLoading: V,
1863
+ $showFaceWhileValidating: $,
1864
+ $exportButtonDisabled: le
1865
+ }), n.$inject_state = (t) => {
1866
+ "video" in t && i(4, T = t.video), "detectionsCanvas" in t && i(5, ae = t.detectionsCanvas), "enclosingDiv" in t && i(6, ee = t.enclosingDiv), "isCountingDown" in t && i(7, ke = t.isCountingDown), "unique" in t && i(8, _e = t.unique), "loadedFaceApiAndWeights" in t && (Me = t.loadedFaceApiAndWeights), "enableMinutiae" in t && i(39, Pe = t.enableMinutiae), "videoDimensions" in t && i(40, ie = t.videoDimensions), "noTabs" in t && i(41, k = t.noTabs), "weightsPath" in t && i(42, Z = t.weightsPath), "evaluatePhoto" in t && i(43, ge = t.evaluatePhoto), "showCaptureButton" in t && i(1, ot = t.showCaptureButton), "showUnconformities" in t && i(2, at = t.showUnconformities), "videoFilter" in t && i(44, Ae = t.videoFilter), "widgetInstance" in t && i(0, ce = t.widgetInstance), "maskCanvas" in t && i(9, Te = t.maskCanvas), "displayCanvas" in t && i(10, H = t.displayCanvas), "capturing" in t && (Ue = t.capturing), "initialized" in t && (st = t.initialized), "idrndLoading" in t && i(11, Je = t.idrndLoading), "idrndClosed" in t && i(12, Ee = t.idrndClosed), "waitingIdrndCaptureEvent" in t && i(13, Ge = t.waitingIdrndCaptureEvent), "intervalId" in t && (St = t.intervalId), "livenessError" in t && i(14, Ce = t.livenessError), "faceapiCounter" in t && (lt = t.faceapiCounter), "faceapiFrameRate" in t && (Xt = t.faceapiFrameRate), "countDownCapture" in t && (It = t.countDownCapture), "rightOrientation" in t && (ct = t.rightOrientation), "countDownFinishTime" in t && (rt = t.countDownFinishTime), "disableCountDown" in t && (ut = t.disableCountDown), "faceNotValidated" in t && i(15, Ve = t.faceNotValidated), "faceValidationAlert" in t && i(16, Ye = t.faceValidationAlert);
1867
+ }, e && "$$inject" in e && n.$inject_state(e.$$inject), [
1868
+ ce,
1869
+ ot,
1870
+ at,
1871
+ Ze,
1872
+ T,
1873
+ ae,
1874
+ ee,
1875
+ ke,
1876
+ _e,
1877
+ Te,
1878
+ H,
1879
+ Je,
1880
+ Ee,
1881
+ Ge,
1882
+ Ce,
1883
+ Ve,
1884
+ Ye,
1885
+ a,
1886
+ r,
1887
+ m,
1888
+ h,
1889
+ g,
1890
+ L,
1891
+ q,
1892
+ S,
1893
+ Y,
1894
+ he,
1895
+ me,
1896
+ X,
1897
+ G,
1898
+ V,
1899
+ $,
1900
+ le,
1901
+ Qe,
1902
+ We,
1903
+ Oe,
1904
+ Qt,
1905
+ ft,
1906
+ Ke,
1907
+ Pe,
1908
+ ie,
1909
+ k,
1910
+ Z,
1911
+ ge,
1912
+ Ae,
1913
+ Dn,
1914
+ Ln,
1915
+ An,
1916
+ Nn,
1917
+ Bn,
1918
+ Mn,
1919
+ Wn,
1920
+ Un,
1921
+ Vn,
1922
+ Kn,
1923
+ jn,
1924
+ qn,
1925
+ Hn,
1926
+ zn,
1927
+ Xn,
1928
+ Qn,
1929
+ Jn,
1930
+ Gn
1931
+ ];
1932
+ }
1933
+ class so extends Zn {
1934
+ constructor(e) {
1935
+ super(), xn(
1936
+ this,
1937
+ {
1938
+ target: this.shadowRoot,
1939
+ props: $n(this.attributes),
1940
+ customElement: !0
1941
+ },
1942
+ ao,
1943
+ On,
1944
+ xi,
1945
+ {
1946
+ enableMinutiae: 39,
1947
+ videoDimensions: 40,
1948
+ noTabs: 41,
1949
+ weightsPath: 42,
1950
+ evaluatePhoto: 43,
1951
+ showCaptureButton: 1,
1952
+ showUnconformities: 2,
1953
+ videoFilter: 44,
1954
+ widgetInstance: 0,
1955
+ play: 3
1956
+ },
1957
+ null,
1958
+ [-1, -1, -1, -1]
1959
+ ), e && (e.target && B(e.target, this, e.anchor), e.props && (this.$set(e.props), Re()));
1960
+ }
1961
+ static get observedAttributes() {
1962
+ return [
1963
+ "enableMinutiae",
1964
+ "videoDimensions",
1965
+ "noTabs",
1966
+ "weightsPath",
1967
+ "evaluatePhoto",
1968
+ "showCaptureButton",
1969
+ "showUnconformities",
1970
+ "videoFilter",
1971
+ "widgetInstance",
1972
+ "play"
1973
+ ];
1974
+ }
1975
+ get enableMinutiae() {
1976
+ return this.$$.ctx[39];
1977
+ }
1978
+ set enableMinutiae(e) {
1979
+ this.$$set({ enableMinutiae: e }), Re();
1980
+ }
1981
+ get videoDimensions() {
1982
+ return this.$$.ctx[40];
1983
+ }
1984
+ set videoDimensions(e) {
1985
+ this.$$set({ videoDimensions: e }), Re();
1986
+ }
1987
+ get noTabs() {
1988
+ return this.$$.ctx[41];
1989
+ }
1990
+ set noTabs(e) {
1991
+ this.$$set({ noTabs: e }), Re();
1992
+ }
1993
+ get weightsPath() {
1994
+ return this.$$.ctx[42];
1995
+ }
1996
+ set weightsPath(e) {
1997
+ this.$$set({ weightsPath: e }), Re();
1998
+ }
1999
+ get evaluatePhoto() {
2000
+ return this.$$.ctx[43];
2001
+ }
2002
+ set evaluatePhoto(e) {
2003
+ this.$$set({ evaluatePhoto: e }), Re();
2004
+ }
2005
+ get showCaptureButton() {
2006
+ return this.$$.ctx[1];
2007
+ }
2008
+ set showCaptureButton(e) {
2009
+ this.$$set({ showCaptureButton: e }), Re();
2010
+ }
2011
+ get showUnconformities() {
2012
+ return this.$$.ctx[2];
2013
+ }
2014
+ set showUnconformities(e) {
2015
+ this.$$set({ showUnconformities: e }), Re();
2016
+ }
2017
+ get videoFilter() {
2018
+ return this.$$.ctx[44];
2019
+ }
2020
+ set videoFilter(e) {
2021
+ this.$$set({ videoFilter: e }), Re();
2022
+ }
2023
+ get widgetInstance() {
2024
+ return this.$$.ctx[0];
2025
+ }
2026
+ set widgetInstance(e) {
2027
+ this.$$set({ widgetInstance: e }), Re();
2028
+ }
2029
+ get play() {
2030
+ return this.$$.ctx[3];
2031
+ }
2032
+ set play(e) {
2033
+ throw new Error("<face-collector>: Cannot set read-only property 'play'");
2034
+ }
2035
+ }
2036
+ customElements.define("face-collector", so);
2037
+ export {
2038
+ so as default
2039
+ };
2040
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmFjZUNvbGxlY3Rvcl9mZWE3ZTYzZV8yLjIuMy1SQzAxLmpzIiwic291cmNlcyI6WyIuLi9zcmMvbGliL2ZhY2VUYWIvRmFjZUNvbGxlY3Rvci5zdmVsdGUiXSwic291cmNlc0NvbnRlbnQiOlsiPHN2ZWx0ZTpvcHRpb25zIHRhZz1cImZhY2UtY29sbGVjdG9yXCIgLz5cblxuPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgaW1wb3J0IENhbWVyYVN0YXR1cyBmcm9tICcuL2NhbWVyYVN0YXR1cy9DYW1lcmFTdGF0dXMuc3ZlbHRlJztcbiAgaW1wb3J0IHsgb25EZXN0cm95LCBvbk1vdW50IH0gZnJvbSAnc3ZlbHRlJztcbiAgaW1wb3J0IHR5cGUgeyBCb2R5UGFydCwgQm9keVBhcnRSZXR1cm5UeXBlIH0gZnJvbSAnLi4vdmFsaWRhdG9ycy9iaW9tZXRyaWNzVmFsaWRhdG9yJztcbiAgaW1wb3J0IHsgXywgaXNMb2FkaW5nIH0gZnJvbSAnc3ZlbHRlLWkxOG4nO1xuICBpbXBvcnQgeyBnZXQsIHdyaXRhYmxlIH0gZnJvbSAnc3ZlbHRlL3N0b3JlJztcbiAgaW1wb3J0IHsgc2VsZWN0ZWRUYWIsIFRhYkVudW0gfSBmcm9tICcuLi90YWJCdG5zL3RhYlN0b3JlJztcbiAgaW1wb3J0IHtcbiAgICBjYW1lcmFEZW5pZWRQZXJtaXNzaW9uLFxuICAgIGZhY2VWYWxpZGF0aW9uc1N0b3JlLFxuICAgIGdldEZhY2VVbmNvbmZvcm1pdGllcyxcbiAgICBpbWFnZSxcbiAgICB1bmNvbmZvcm1pdGllc1N0b3JlLFxuICAgIHNldHVwU3RyZWFtLFxuICAgIHZpZGVvU3RvcmUsXG4gICAgcmVxdWVzdFJlc3VsdCxcbiAgICBjYW1lcmFEZXZpY2VzU3RvcmUsXG4gICAganVzdGlmaWNhdGlvbixcbiAgICBzYXZlZCxcbiAgICBjYXB0dXJlZCxcbiAgICBfc3RyZWFtLFxuICAgIHNodXRPZmZDYW1lcmEsXG4gICAgcmVhZHksXG4gICAgY2xlYXJlZFZpZGVvU3JjT2JqZWN0LFxuICAgIGVudW1lcmF0ZURldmljZXMsXG4gICAgb3JpZ2luYWxDYXB0dXJlLFxuICAgIGF1dG9tYXRpY0NhcHR1cmUsXG4gICAgc2VsZWN0ZWRWaWRlb0RldmljZUlkLFxuICAgIHVuY29uZm9ybWl0eVRvaTE4bktleSxcbiAgICB0cmFuc2xhdGVBbmRTZXRVbmNvbmZvcm1pdGllcyxcbiAgICByZXF1ZXN0UmVzdWx0RW51bSxcbiAgICByZXRha2VQaG90byxcbiAgICBzaG93RmFjZVdoaWxlVmFsaWRhdGluZyxcbiAgICBnZXRWaWRlb0RpbWVuc2lvbnMsXG4gICAgRmFjZUV4cG9ydFN0cmF0ZWd5LFxuICAgIG9yaWVudGF0aW9uRGF0YSxcbiAgICBGYWNpbmdNb2RlRW51bSxcbiAgICBmYWNpbmdNb2RlXG4gIH0gZnJvbSAnLi9mYWNlU3RvcmUnO1xuICBpbXBvcnQge1xuICAgIHN3YXBDYW1lcmFcbiAgfWZyb20gJy4uL2NvbmYvY29uZlN0b3JlJzsgIFxuICBpbXBvcnQgQ29uZkJ0biBmcm9tICcuLi9jb25mL0NvbmZCdG4uc3ZlbHRlJztcbiAgaW1wb3J0IENhbWVyYUJ0biBmcm9tICcuLi9jb25mL0NhbWVyYUJ0bi5zdmVsdGUnO1xuICBpbXBvcnQgRXhwb3J0QnRuIGZyb20gJy4uL2ZpbmdlcnNUYWIvYnV0dG9ucy9leHBvcnRCdG4vRXhwb3J0QnRuLnN2ZWx0ZSc7XG4gIGltcG9ydCB7IGVuYWJsZVN0cmF0ZWd5IH0gZnJvbSAnLi4vZmluZ2Vyc1RhYi9oYW5kL2hhbmRQYXJ0cy9maW5nZXJzU3RvcmUnO1xuICBpbXBvcnQgeyBleHBvcnRCdXR0b25EaXNhYmxlZCB9IGZyb20gJy4uL2ZpbmdlcnNUYWIvYnV0dG9ucy9leHBvcnRCdG4vZXhwb3J0U3RvcmUnO1xuICBpbXBvcnQgeyBib3hTdG9yZSwgZHJhd0RldGVjdGlvbnNJbkZhY2UsIGVuYWJsZUZhY2VBcGksIGZhY2VGb3VuZCwgZ2V0RmFjZURldGVjdG9yT3B0aW9ucywgb3ZhbERpbWVuc2lvbnMsIHNldEZhY2VOb3RGb3VuZFRpbWVvdXQgfSBmcm9tICcuL2ZhY2VBcGlTdG9yZSc7XG4gIGltcG9ydCB7IGJsb2JUb0Jhc2U2NCwgaXNNb2JpbGUsIGlzT2JqZWN0LCBsb2FkRmFjZUFwaUFuZFdlaWdodHMsIGxvb3BDYWxsZXIsIHVuTG9ja1NjcmVlbn0gZnJvbSAnLi4vdXRpbC91dGlsJztcbiAgaW1wb3J0IHsgaXNMaXZlbmVzc0VuYWJsZWQgfSBmcm9tICcuLi8uLi9tYWluU3RvcmUnO1xuICBpbXBvcnQgbG9hZGluZ0dpZiBmcm9tICcuLi8uLi9hc3NldHMvaW1nL0Jsb2Nrcy0xcy0yMDBweC5naWYnO1xuICBpbXBvcnQge1xuICAgIGdldExpdmVuZXNzSWRybmQsXG4gICAgYmxvYixcbiAgICBpZHJuZEVycm9yVG9pMThuS2V5LFxuICAgIHNob3dMaXZlbmVzc1Jlc3VsdFRvYXN0LFxuICAgIGNhcHR1cmVMaXZlbmVzc0lkcm5kRW5kcG9pbnQsXG4gICAgdHlwZSBsaXZlbmVzc1Jlc3VsdCxcbiAgICB0eXBlIGxpdmVuZXNzRXJyb3JSZXN1bHQsXG4gICAgaWRybmRJbml0aWFsaXplZCxcbiAgICBpZHJuZFZpZGVvU3RvcmVEaW1lbnNpb25zLFxuICB9IGZyb20gJy4vbGl2ZW5lc3MvTGl2ZW5lc3NTdG9yZSc7XG4gIGltcG9ydCB0eXBlIHsgU3dlZXRBbGVydEljb24gfSBmcm9tICdzd2VldGFsZXJ0Mic7XG4gIGltcG9ydCBTd2FsIGZyb20gJ3N3ZWV0YWxlcnQyJztcbiAgaW1wb3J0IHsgQXhpb3NFcnJvciwgdHlwZSBBeGlvc1Jlc3BvbnNlIH0gZnJvbSAnYXhpb3MnO1xuICBpbXBvcnQgeyBjYW1lcmFTdGF0dXNTdG9yZSwgQ2FtZXJhU3RhdHVzRW51bSB9IGZyb20gJy4vY2FtZXJhU3RhdHVzL2NhbWVyYVN0YXR1c1N0b3JlJztcbiAgaW1wb3J0IHsgbG9nIH0gZnJvbSAnLi4vdXRpbC9sb2dnZXInO1xuXG4gIGxldCB2aWRlbzogSFRNTFZpZGVvRWxlbWVudDtcbiAgbGV0IGRldGVjdGlvbnNDYW52YXM6IEhUTUxDYW52YXNFbGVtZW50O1xuICBsZXQgZW5jbG9zaW5nRGl2OiBIVE1MRGl2RWxlbWVudDtcbiAgbGV0IGlzQ291bnRpbmdEb3duID0gZmFsc2U7XG4gIGxldCB1bmlxdWUgPSB7fTtcbiAgbGV0IGxvYWRlZEZhY2VBcGlBbmRXZWlnaHRzID0gZmFsc2U7XG5cbiAgLy8gUHJvcHNcbiAgZXhwb3J0IGxldCBlbmFibGVNaW51dGlhZTogYm9vbGVhbjtcbiAgZXhwb3J0IGxldCB2aWRlb0RpbWVuc2lvbnM6IHN0cmluZztcbiAgZXhwb3J0IGxldCBub1RhYnM6IGJvb2xlYW47XG4gIGV4cG9ydCBsZXQgd2VpZ2h0c1BhdGg6IHN0cmluZztcbiAgZXhwb3J0IGxldCBldmFsdWF0ZVBob3RvOiBib29sZWFuO1xuICBleHBvcnQgbGV0IHNob3dDYXB0dXJlQnV0dG9uOiBib29sZWFuO1xuICBleHBvcnQgbGV0IHNob3dVbmNvbmZvcm1pdGllczogYm9vbGVhbjtcbiAgZXhwb3J0IGxldCB2aWRlb0ZpbHRlcjogc3RyaW5nO1xuXG4gIGNvbnN0IHN0YXJ0RmFjZUFwaSA9IHdyaXRhYmxlKGZhbHNlKTtcbiAgY29uc3QgZGF0YVR5cGVQcmVmaXggPSB3cml0YWJsZSgnZGF0YTppbWFnZS9wbmc7YmFzZTY0Jyk7XG5cbiAgLy8gbGl2ZW5lc3MgcmVsYXRlZFxuICAvLyBwcm9wIHBhc3NpbmcgdXAgdG8gcGFyZW50XG4gIGV4cG9ydCBsZXQgd2lkZ2V0SW5zdGFuY2U6IEhUTUxJZExpdmVGYWNlQ2FwdHVyZUVsZW1lbnQ7XG4gIGxldCBtYXNrQ2FudmFzOiBIVE1MQ2FudmFzRWxlbWVudDtcbiAgbGV0IGRpc3BsYXlDYW52YXM6IEhUTUxDYW52YXNFbGVtZW50O1xuICBsZXQgY2FwdHVyaW5nID0gZmFsc2U7XG4gIGxldCBpbml0aWFsaXplZCA9IGZhbHNlO1xuICBsZXQgaWRybmRMb2FkaW5nID0gdHJ1ZTtcbiAgbGV0IGlkcm5kQ2xvc2VkID0gdHJ1ZTtcbiAgbGV0IHdhaXRpbmdJZHJuZENhcHR1cmVFdmVudCA9IGZhbHNlO1xuICBsZXQgaW50ZXJ2YWxJZCA9IDA7XG4gIGxldCBsaXZlbmVzc0Vycm9yID0gJyc7XG4gIGxldCBmYWNlYXBpQ291bnRlciA9IDA7XG4gIGxldCBmYWNlYXBpRnJhbWVSYXRlID0gNTtcbiAgbGV0IGNvdW50RG93bkNhcHR1cmUgPSAzMDAwO1xuICBsZXQgcmlnaHRPcmllbnRhdGlvbiA9IHRydWU7XG5cbiAgbGV0IGNvdW50RG93bkZpbmlzaFRpbWUgPSAwO1xuICBsZXQgZGlzYWJsZUNvdW50RG93biA9IGZhbHNlO1xuXG4gIC8vIGZhY2UgdmFsaWRhdGlvbiByZWxhdGVkXG4gIGxldCBmYWNlTm90VmFsaWRhdGVkID0gZmFsc2U7XG4gIGxldCBmYWNlVmFsaWRhdGlvbkFsZXJ0ID0gJyc7XG5cbiAgY29uc3QgdG9hc3QgPSBTd2FsLm1peGluKHtcbiAgICB0b2FzdDogdHJ1ZSxcbiAgICBwb3NpdGlvbjogJ2JvdHRvbS1sZWZ0JyxcbiAgICB0aW1lcjogMTMwMDAsXG4gICAgdGltZXJQcm9ncmVzc0JhcjogdHJ1ZSxcbiAgfSk7XG5cbiAgb25Nb3VudChhc3luYyAoKSA9PiB7XG4gICAgbG9nKCdNb3VudGluZyBGYWNlIENvbGxlY3RvciEnKTtcbiAgICAkcmVhZHkgPSBmYWxzZTtcbiAgICAkZmFjZUZvdW5kID0gZmFsc2U7XG4gICAgJGNhcHR1cmVkID0gZmFsc2U7XG4gICAgJGZhY2luZ01vZGUgPSBGYWNpbmdNb2RlRW51bS5GUk9OVF9DQU1FUkE7XG4gICAgaWYgKGlzTGl2ZW5lc3NFbmFibGVkKCkpIHtcbiAgICAgIGltcG9ydCgnbGl2ZW5lc3MtbGliLWRldi9pbmRleC1uby1kZXRlY3RvcicpO1xuICAgICAgcmVnaXN0ZXJJZHJuZExpc3RlbmVycygpO1xuICAgIH1cblxuICAgIGlmICgkZW5hYmxlRmFjZUFwaSkge1xuICAgICAgYXdhaXQgbG9hZEZhY2VBcGlBbmRXZWlnaHRzKHdlaWdodHNQYXRoKTtcbiAgICAgIGxvYWRlZEZhY2VBcGlBbmRXZWlnaHRzID0gdHJ1ZTtcbiAgICB9XG4gIFxuICAgIGF3YWl0IG9wZW5DYW1lcmEoKTsgLy8gb3BlbiB0aGUgZnJvbnQgY2FtZXJhXG4gIH0pO1xuXG4gIGZ1bmN0aW9uIGRyYXdPdmFsKGN0eDogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELCB2aWRlbzogSFRNTFZpZGVvRWxlbWVudCkge1xuICAgIC8vIGNsZWFyIHRoZSBhcmVhICh0aGVyZSBzaG91bGRuJ3QgZXZlbiBiZSBhbnl0aGluZyBhbnl3YXlzKVxuICAgIGN0eC5jbGVhclJlY3QoMCwgMCwgZGlzcGxheUNhbnZhcy53aWR0aCwgZGlzcGxheUNhbnZhcy5oZWlnaHQpO1xuICAgIC8vIHNhdmUgdGhlIGNvbnRleHQgc3RhdGVcbiAgICAvLyBmcm9tIG1kbiBkb2NzXG4gICAgY3R4LnNhdmUoKTtcbiAgICAvLyBhcHBseSB0aGUgYmx1ci9jb2xvciBmaWx0ZXJcbiAgICBpZiAodmlkZW9GaWx0ZXIgPT0gJ2JsdXInKXtcbiAgICAgIGN0eC5maWx0ZXIgPSBgYmx1cigke3ZpZGVvLndpZHRoLzYwfXB4KWA7XG4gICAgICBjdHgucmVjdCgwLCAwLCBkaXNwbGF5Q2FudmFzLndpZHRoLCBkaXNwbGF5Q2FudmFzLmhlaWdodCk7XG4gICAgfSBlbHNlIGlmKHZpZGVvRmlsdGVyICE9ICdub25lJykge1xuICAgICAgY3R4LmZpbGxTdHlsZSA9IHZpZGVvRmlsdGVyO1xuICAgICAgY3R4LmZpbGxSZWN0KDAsIDAsIGRpc3BsYXlDYW52YXMud2lkdGgsIGRpc3BsYXlDYW52YXMuaGVpZ2h0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gZHJhdyBhIHJlY3RhbmdsZSB3aXRoIHRoZSBzYW1lIHNpemUgYXMgdGhlIHZpZGVvXG4gICAgICBjdHguYmVnaW5QYXRoKCk7XG4gICAgICBjdHgucmVjdCgwLCAwLCBkaXNwbGF5Q2FudmFzLndpZHRoLCBkaXNwbGF5Q2FudmFzLmhlaWdodCk7XG4gICAgfVxuICAgIFxuICAgIC8vIGNhbGN1bGF0ZSB0aGUgb3ZhbCBzaXplIHVzaW5nIHZpZXdwb3J0IHVuaXRzXG4gICAgY29uc3Qgb3ZhbEhlaWdodCA9IGRpc3BsYXlDYW52YXMuaGVpZ2h0ICogMC42NTsgLy8gODAlIG9mIHRoZSB2aWV3cG9ydCBoZWlnaHRcbiAgICBjb25zdCBvdmFsV2lkdGggPSBvdmFsSGVpZ2h0IC8gMS40NTsgXG4gICAgY29uc3Qgb3ZhbFggPSAkdmlkZW9TdG9yZS52aWRlb1dpZHRoIC8gMjtcbiAgICBjb25zdCBvdmFsWSA9ICR2aWRlb1N0b3JlLnZpZGVvSGVpZ2h0ICogMC41MTtcbiAgICAkb3ZhbERpbWVuc2lvbnMud2lkdGggPSBvdmFsV2lkdGg7XG5cbiAgICAvLyBtYWtlIHRoZSBvdmFsIFxuICAgIGN0eC5lbGxpcHNlKFxuICAgICAgb3ZhbFgsXG4gICAgICBvdmFsWSxcbiAgICAgIG92YWxXaWR0aCAvIDIsXG4gICAgICBvdmFsSGVpZ2h0IC8gMixcbiAgICAgIDAsXG4gICAgICAwLFxuICAgICAgMiAqIE1hdGguUEksXG4gICAgICB0cnVlIC8vIGl0IGhhcyB0byBiZSBjb3VudGVyY2xvY2t3aXNlXG4gICAgKTtcbiAgICAvLyBjbGlwIHRoZSBvdmFsIGFnYWluc3QgdGhlIHRoZSByZWN0YW5nbGVcbiAgICAvLyBDbGlwIHBhdGhzIGNhbm5vdCBiZSByZXZlcnRlZCBkaXJlY3RseS4gWW91IG11c3Qgc2F2ZSB5b3VyIGNhbnZhcyBzdGF0ZSB1c2luZyBzYXZlKCkgYmVmb3JlIGNhbGxpbmcgY2xpcCgpLCBhbmQgcmVzdG9yZSBpdCBvbmNlIHlvdSBoYXZlIGZpbmlzaGVkIGRyYXdpbmcgaW4gdGhlIGNsaXBwZWQgYXJlYSB1c2luZyByZXN0b3JlKCkuXG4gICAgY3R4LmNsaXAoKTtcbiAgICAvLyBkcmF3IHRoZSB2aWRlb1xuICAgIC8vIHRoaXMgbWFrZXMgZmFjZSBhcGkgb25seSBhd2FyZSBvZiBvdXRzaWRlIHRoZSBvdmFsIGFyZWFcbiAgICBkcmF3VmlkZW9PbkNhbnZhcyhjdHgsIHZpZGVvLCBkaXNwbGF5Q2FudmFzKTtcbiAgICBjdHgucmVzdG9yZSgpO1xuXG4gICAgLy8gc2F2ZSBhZ2FpbiwgYmVjYXVzZSB3aGVuIHJlZHJhd2luZyB0aGUgb3ZhbCwgZXZlcnl0aGluZyBhcm91bmQgdGhlIG92YWwgaXMgbG9zdFxuICAgIGN0eC5zYXZlKCk7XG4gICAgY3R4LmJlZ2luUGF0aCgpO1xuICAgIC8vIGRyYXcgdGhlIGVsbGlwc2UgKHRoaXMgdGltZSBpdCBkb2Vzbid0IG1hdHRlciB0aGUgZGlyZWN0aW9uLCBzaW5jZSB0aGVyZSBpc24ndCBhIHJlY3RhbmdsZSBiZWhpbmQpXG4gICAgY29uc3QgcHJpbWFyeVRoZW1lID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZGlzcGxheUNhbnZhcykuZ2V0UHJvcGVydHlWYWx1ZSgnLS1wJyk7XG4gICAgY29uc3Qgc3VjY2Vzc1RoZW1lID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZGlzcGxheUNhbnZhcykuZ2V0UHJvcGVydHlWYWx1ZSgnLS1zdScpO1xuXG4gICAgY3R4LnN0cm9rZVN0eWxlID0gYGhzbCgke3ByaW1hcnlUaGVtZX0pYDtcbiAgICBjdHgubGluZVdpZHRoID0gMTY7XG4gICAgY3R4LmVsbGlwc2UoXG4gICAgICBvdmFsWCxcbiAgICAgIG92YWxZLFxuICAgICAgb3ZhbFdpZHRoIC8gMixcbiAgICAgIG92YWxIZWlnaHQgLyAyLFxuICAgICAgMCxcbiAgICAgIDAsXG4gICAgICAyICogTWF0aC5QSVxuICAgICk7XG4gICAgY3R4LnN0cm9rZSgpO1xuICAgIGlmIChpc0NvdW50aW5nRG93biAmJiAhZGlzYWJsZUNvdW50RG93bikge1xuICAgICAgY29uc3QgdGltZVJlbWFpbmluZyA9IDEgLSAoY291bnREb3duRmluaXNoVGltZSAtIG5ldyBEYXRlKCkuZ2V0VGltZSgpKSAvIGNvdW50RG93bkNhcHR1cmU7XG4gICAgICAvLyBDb3VudGVyIGNvbnRvdXJcbiAgICAgIGN0eC5zYXZlKCk7XG4gICAgICBjdHguYmVnaW5QYXRoKCk7XG4gICAgICBjdHgubGluZVdpZHRoID0gMTY7XG4gICAgICBjdHguc3Ryb2tlU3R5bGUgPSBgaHNsKCR7c3VjY2Vzc1RoZW1lfSlgO1xuICAgICAgY3R4LmVsbGlwc2UoXG4gICAgICAgIG92YWxYLFxuICAgICAgICBvdmFsWSxcbiAgICAgICAgb3ZhbFdpZHRoIC8gMixcbiAgICAgICAgb3ZhbEhlaWdodCAvIDIsXG4gICAgICAgIDAsXG4gICAgICAgIDAgLSBNYXRoLlBJIC8gMixcbiAgICAgICAgMS41ICogKE1hdGguUEkgKiAyICogdGltZVJlbWFpbmluZykgLSBNYXRoLlBJIC8gMlxuICAgICAgKTtcbiAgICAgIGN0eC5zdHJva2UoKTtcbiAgICB9XG4gICAgY3R4LmJlZ2luUGF0aCgpO1xuICAgIGNvbnN0IGNsaXBQYXRoID0gbmV3IFBhdGgyRCgpO1xuICAgIGNsaXBQYXRoLmVsbGlwc2UoXG4gICAgICBvdmFsWCxcbiAgICAgIG92YWxZLFxuICAgICAgb3ZhbFdpZHRoIC8gMixcbiAgICAgIG92YWxIZWlnaHQgLyAyLFxuICAgICAgMCxcbiAgICAgIDAsXG4gICAgICAyICogTWF0aC5QSVxuICAgICk7XG4gICAgLy8gYmFzaWNhbGx5IGNsaXBwaW5nIHRoZSBvdGhlciB3YXkgYXJvdW5kLCBzbyBmYWNlIGFwaSBpcyBhd2FyZSBvZiB0aGUgb3ZhbCBhcmVhXG4gICAgY3R4LmNsaXAoY2xpcFBhdGgpO1xuICAgIGRyYXdWaWRlb09uQ2FudmFzKGN0eCwgdmlkZW8sIGRpc3BsYXlDYW52YXMpO1xuICAgIGN0eC5yZXN0b3JlKCk7XG4gIH1cblxuICBmdW5jdGlvbiBkcmF3VmlkZW9PbkNhbnZhcyhjdHg6IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCwgdmlkZW86IEhUTUxWaWRlb0VsZW1lbnQsIGRpc3BsYXlDYW52YXM6IEhUTUxDYW52YXNFbGVtZW50KSB7XG4gICAgY29uc3QgaXNTYW1lUHJvcG9ydGlvbiA9XG4gICAgICAodmlkZW8udmlkZW9IZWlnaHQgPj0gdmlkZW8udmlkZW9XaWR0aCAmJiBkaXNwbGF5Q2FudmFzLmhlaWdodCA+PSBkaXNwbGF5Q2FudmFzLndpZHRoKSB8fFxuICAgICAgKHZpZGVvLnZpZGVvSGVpZ2h0IDwgdmlkZW8udmlkZW9XaWR0aCAmJiBkaXNwbGF5Q2FudmFzLmhlaWdodCA8IGRpc3BsYXlDYW52YXMud2lkdGgpO1xuXG4gICAgY3R4LmRyYXdJbWFnZShcbiAgICAgIHZpZGVvLFxuICAgICAgaXNTYW1lUHJvcG9ydGlvbiA/IDAgOiB2aWRlby52aWRlb1dpZHRoIC8gMiAtIGRpc3BsYXlDYW52YXMud2lkdGgsXG4gICAgICAwLFxuICAgICAgaXNTYW1lUHJvcG9ydGlvbiA/IHZpZGVvLnZpZGVvV2lkdGggOiB2aWRlby52aWRlb0hlaWdodCAqIChkaXNwbGF5Q2FudmFzLndpZHRoIC8gZGlzcGxheUNhbnZhcy5oZWlnaHQpLFxuICAgICAgdmlkZW8udmlkZW9IZWlnaHQsXG4gICAgICAwLFxuICAgICAgMCxcbiAgICAgIGRpc3BsYXlDYW52YXMud2lkdGgsXG4gICAgICBkaXNwbGF5Q2FudmFzLmhlaWdodFxuICAgICk7XG4gIH1cblxuICBmdW5jdGlvbiByZWdpc3Rlcklkcm5kTGlzdGVuZXJzKCkge1xuICAgIHdpZGdldEluc3RhbmNlLmFkZEV2ZW50TGlzdGVuZXIoJ29wZW4nLCAoZXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IHZpZGVvXyA9IGV2ZW50LmRldGFpbFswXS52aWRlbztcbiAgICAgICRpZHJuZFZpZGVvU3RvcmVEaW1lbnNpb25zID0geyB3aWR0aDogdmlkZW9fLnZpZGVvV2lkdGgsIGhlaWdodDogdmlkZW9fLnZpZGVvSGVpZ2h0IH07XG5cbiAgICAgIHZpZGVvLnNyY09iamVjdCA9IHZpZGVvXy5zcmNPYmplY3Q7XG4gICAgICBpZHJuZExvYWRpbmcgPSBmYWxzZTtcblxuICAgICAgZnVuY3Rpb24gbG9vcCgpIHtcbiAgICAgICAgaWYgKGlkcm5kQ2xvc2VkKSByZXR1cm47XG5cbiAgICAgICAgZHJhd092YWwoZGlzcGxheUNhbnZhcy5nZXRDb250ZXh0KCcyZCcpIGFzIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCwgdmlkZW9fKTtcbiAgICAgICAgbG9vcENhbGxlcih2aWRlbywgbG9vcCwgdHJ1ZSk7XG4gICAgICB9XG4gICAgICBsb29wKCk7XG4gICAgfSk7XG4gICAgd2lkZ2V0SW5zdGFuY2UuYWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCAoZSkgPT4ge1xuICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICAgIGlmIChlLmRldGFpbFswXS5tZXNzYWdlID09PSAnRGV2aWNlIGluIHVzZScpIHtcbiAgICAgICAgJGNhbWVyYVN0YXR1c1N0b3JlID0gQ2FtZXJhU3RhdHVzRW51bS5DQU1FUkFfSU5fVVNFX0VSUk9SO1xuICAgICAgfSBlbHNlIGlmIChlLmRldGFpbFswXS5tZXNzYWdlID09PSAnUGVybWlzc2lvbiBkZW5pZWQnIHx8IGUuZGV0YWlsWzBdLm1lc3NhZ2UgPT09ICdQZXJtaXNzaW9uIGRpc21pc3NlZCcpIHtcbiAgICAgICAgJGNhbWVyYVN0YXR1c1N0b3JlID0gQ2FtZXJhU3RhdHVzRW51bS5DQU1FUkFfREVOSUVEX0VSUk9SO1xuICAgICAgfSBlbHNlIGlmIChlLmRldGFpbFswXS5tZXNzYWdlID09PSAnUmVxdWVzdGVkIGRldmljZSBub3QgZm91bmQnKSB7XG4gICAgICAgICRjYW1lcmFTdGF0dXNTdG9yZSA9IENhbWVyYVN0YXR1c0VudW0uREVWSUNFX05PVF9GT1VORF9FUlJPUjtcbiAgICAgIH1cbiAgICAgIGlkcm5kTG9hZGluZyA9IGZhbHNlO1xuICAgIH0pO1xuICAgIHdpZGdldEluc3RhbmNlLmFkZEV2ZW50TGlzdGVuZXIoJ2ZhY2VEZXRlY3Rpb24nLCAoZSkgPT4ge1xuICAgICAgLy8gY29uc29sZS5sb2coZSk7XG4gICAgfSk7XG4gICAgd2lkZ2V0SW5zdGFuY2UuYWRkRXZlbnRMaXN0ZW5lcignY2xvc2UnLCBhc3luYyAoZSkgPT4ge1xuICAgICAgaWYgKCEkY2FwdHVyZWQpIHtcbiAgICAgICAgY2FwdHVyaW5nID0gZmFsc2U7XG4gICAgICB9XG4gICAgICBpZHJuZENsb3NlZCA9IHRydWU7XG4gICAgICB3YWl0aW5nSWRybmRDYXB0dXJlRXZlbnQgPSBmYWxzZTtcbiAgICAgIGlmICgkY2FtZXJhU3RhdHVzU3RvcmUgPT09IENhbWVyYVN0YXR1c0VudW0uT0spIHtcbiAgICAgICAgJGNhbWVyYVN0YXR1c1N0b3JlID0gQ2FtZXJhU3RhdHVzRW51bS5DQU1FUkFfQ0xPU0VEX0VSUk9SO1xuICAgICAgfVxuICAgICAgLy8gY29uc29sZS5sb2coZSk7XG4gICAgfSk7XG4gICAgd2lkZ2V0SW5zdGFuY2UuYWRkRXZlbnRMaXN0ZW5lcignaW5pdGlhbGl6ZScsIGFzeW5jIChlKSA9PiB7XG4gICAgICAvLyBjb25zb2xlLmxvZyhlKTtcbiAgICAgIGluaXRpYWxpemVkID0gdHJ1ZTtcbiAgICAgICRpZHJuZEluaXRpYWxpemVkID0gdHJ1ZTtcbiAgICAgIGlmICgkc2VsZWN0ZWRUYWIgPT09IFRhYkVudW0uRmFjZSkge1xuICAgICAgICBpZiAoIWNhcHR1cmluZyAmJiAhJGNhcHR1cmVkICYmIGluaXRpYWxpemVkKSB7XG4gICAgICAgICAgYXdhaXQgb3BlbkNhbWVyYUxpdmVuZXNzKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgICB3aWRnZXRJbnN0YW5jZS5hZGRFdmVudExpc3RlbmVyKCdjYXB0dXJlJywgYXN5bmMgKGV2ZW50KSA9PiB7XG4gICAgICBsaXZlbmVzc0Vycm9yID0gJyc7XG4gICAgICBjb25zdCB7IGVuY3J5cHRlZEZpbGUsIHBob3RvIH0gPSBldmVudC5kZXRhaWxbMF07XG4gICAgICAkYmxvYiA9IGVuY3J5cHRlZEZpbGU7XG4gICAgICB3YWl0aW5nSWRybmRDYXB0dXJlRXZlbnQgPSBmYWxzZTtcbiAgICAgICRyZXF1ZXN0UmVzdWx0ID0gcmVxdWVzdFJlc3VsdEVudW0uT0s7XG4gICAgICAkdW5jb25mb3JtaXRpZXNTdG9yZS5pc0xvYWRpbmcgPSB0cnVlO1xuICAgICAgJGNhcHR1cmVkID0gdHJ1ZTtcbiAgICAgIGNhcHR1cmluZyA9IGZhbHNlO1xuICAgICAgY29uc3QgaW1nID0gKGF3YWl0IGJsb2JUb0Jhc2U2NChwaG90bykpLnNwbGl0KCcsJyk7XG4gICAgICAkZGF0YVR5cGVQcmVmaXggPSBpbWdbMF07XG4gICAgICAkaW1hZ2UgPSBpbWdbMV07XG4gICAgICAkb3JpZ2luYWxDYXB0dXJlID0gaW1nWzFdO1xuICAgICAgLy8gaWYgbm8gZW5kcG9pbnQgaXMgcHJvdmlkZWQsIHdlIHVzZSB0aGUgZXZhbHVhdGUgYmlvbWV0cmljcyBlbmRwb2ludCB3aGljaCBzaG91bGQgZG8gYm90aCBsaXZlbmVzcyBhbmQgdW5jb25mb3JtaXRpZXNcbiAgICAgIGlmICghJGNhcHR1cmVMaXZlbmVzc0lkcm5kRW5kcG9pbnQpIHtcbiAgICAgICAgbGV0IGJvZHlQYXJ0cywgaWNhb1dhcm5pbmdzO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICh7IGJvZHlQYXJ0cywgaWNhb1dhcm5pbmdzIH0gPSBhd2FpdCBnZXRGYWNlVW5jb25mb3JtaXRpZXMoXG4gICAgICAgICAgICAkb3JpZ2luYWxDYXB0dXJlLFxuICAgICAgICAgICAgZXZhbHVhdGVQaG90byxcbiAgICAgICAgICAgIChhd2FpdCBibG9iVG9CYXNlNjQoZW5jcnlwdGVkRmlsZSkpLnNwbGl0KCcsJylbMV1cbiAgICAgICAgICApKTtcbiAgICAgICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChcbiAgICAgICAgICAgIG5ldyBDdXN0b21FdmVudCgnZmFjZS11bmNvbmZvcm1pdGllcy12YWxpZGF0ZWQnLCB7XG4gICAgICAgICAgICAgIGRldGFpbDogeyBib2R5UGFydHMsIGljYW9XYXJuaW5ncywgc3RhdHVzOiAkcmVxdWVzdFJlc3VsdCB9LFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICApO1xuICAgICAgICAgIC8vVE9ETzogdW5jb21tZW50IHRoaXNcbiAgICAgICAgICAvLyBpZiBldmVyeXRoaW5nIGlzIGZpbmUsIGNsb3NlIHRoZSBjYW1lcmEgYWxyZWFkeS5cbiAgICAgICAgICAvLyB3aWRnZXRJbnN0YW5jZS5jbG9zZUNhbWVyYSgpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICAgICAgICBsZXQgZXJyb3JDb2RlID0gaWRybmRFcnJvclRvaTE4bktleVsnVU5LTk9XTiddO1xuICAgICAgICAgIGxldCBib2R5UGFydHM6IEJvZHlQYXJ0W10gPSBbXTtcbiAgICAgICAgICBsZXQgaWNhb1dhcm5pbmdzID0gW107XG4gICAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBBeGlvc0Vycm9yICYmIGUucmVzcG9uc2U/LnN0YXR1cyA9PT0gNDAwKSB7XG4gICAgICAgICAgICBpZiAoZS5yZXNwb25zZS5kYXRhICYmIEFycmF5LmlzQXJyYXkoZS5yZXNwb25zZS5kYXRhLmJvZHlQYXJ0cykpIHtcbiAgICAgICAgICAgICAgYm9keVBhcnRzID0gZS5yZXNwb25zZS5kYXRhLmJvZHlQYXJ0cyBhcyBCb2R5UGFydFtdO1xuICAgICAgICAgICAgICBpY2FvV2FybmluZ3MgPSBlLnJlc3BvbnNlLmRhdGEuaWNhb1dhcm5pbmdzO1xuICAgICAgICAgICAgICBjb25zdCBmYWNlID0gYm9keVBhcnRzLmZpbmQoKGJwKSA9PiAoYnAubGl2ZW5lc3NSZXN1bHQgYXMgbGl2ZW5lc3NFcnJvclJlc3VsdCkuZXJyb3IpO1xuICAgICAgICAgICAgICBlcnJvckNvZGUgPSAoZmFjZT8ubGl2ZW5lc3NSZXN1bHQgYXMgbGl2ZW5lc3NFcnJvclJlc3VsdCkuZXJyb3JfY29kZTtcbiAgICAgICAgICAgICAgJHJlcXVlc3RSZXN1bHQgPSByZXF1ZXN0UmVzdWx0RW51bS5MSVZFTkVTU19ERVRFQ1RJT05fRkFJTFVSRTtcbiAgICAgICAgICAgICAgaWYgKCEoZmFjZT8ubGl2ZW5lc3NSZXN1bHQgYXMgbGl2ZW5lc3NFcnJvclJlc3VsdCkuZXJyb3JfY29kZSkge1xuICAgICAgICAgICAgICAgICRyZXF1ZXN0UmVzdWx0ID0gcmVxdWVzdFJlc3VsdEVudW0uVU5LTk9XTl9MSVZFTkVTU19FUlJPUjtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBsaXZlbmVzc0Vycm9yID0gaWRybmRFcnJvclRvaTE4bktleVtlcnJvckNvZGUgYXMga2V5b2YgdHlwZW9mIGlkcm5kRXJyb3JUb2kxOG5LZXldO1xuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdMaXZlbmVzcyBlcnJvcjonLCBlcnJvckNvZGUpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgLy8gaWYgYnBzIGlzIG1pc3NpbmcsIHRoaXMgaXMgbGlrZWx5IGEgdGVtcGxhdGUgZXh0cmFjdGlvbiBlcnJvclxuICAgICAgICAgICAgICAkcmVxdWVzdFJlc3VsdCA9IHJlcXVlc3RSZXN1bHRFbnVtLlRFTVBMQVRFX0VYVFJBQ1RJT05fRVJST1I7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICRyZXF1ZXN0UmVzdWx0ID0gcmVxdWVzdFJlc3VsdEVudW0uVU5LTk9XTl9MSVZFTkVTU19FUlJPUjtcbiAgICAgICAgICAgIHRvYXN0LmZpcmUoeyBpY29uOiAnZXJyb3InLCB0aXRsZTogJ0ZhbGhhIGFvIGNvbXVuaWNhciBjb20gc2VydmnDp28gZGUgTGl2ZW5lc3MnIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICAkdW5jb25mb3JtaXRpZXNTdG9yZS5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChcbiAgICAgICAgICAgIG5ldyBDdXN0b21FdmVudCgnZmFjZS11bmNvbmZvcm1pdGllcy12YWxpZGF0ZWQnLCB7XG4gICAgICAgICAgICAgIGRldGFpbDoge1xuICAgICAgICAgICAgICAgIGJvZHlQYXJ0cyxcbiAgICAgICAgICAgICAgICBlcnJvckNvZGUsXG4gICAgICAgICAgICAgICAgdHJhbnNsYXRlZEVycm9yOiAkXyhsaXZlbmVzc0Vycm9yKSxcbiAgICAgICAgICAgICAgICBzdGF0dXM6ICRyZXF1ZXN0UmVzdWx0LFxuICAgICAgICAgICAgICAgIGljYW9XYXJuaW5ncyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCRyZXF1ZXN0UmVzdWx0ICE9PSByZXF1ZXN0UmVzdWx0RW51bS5PSykge1xuICAgICAgICAgICR1bmNvbmZvcm1pdGllc1N0b3JlLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYm9keVBhcnRzWzBdLmxpdmVuZXNzUmVzdWx0KSB7XG4gICAgICAgICAgdmFsaWRhdGVMaXZlbmVzcyhib2R5UGFydHNbMF0ubGl2ZW5lc3NSZXN1bHQgYXMgbGl2ZW5lc3NSZXN1bHQpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChib2R5UGFydHMubGVuZ3RoICE9PSAwICYmIGJvZHlQYXJ0c1swXS5kYXRhKSB7XG4gICAgICAgICAgJGltYWdlID0gYm9keVBhcnRzWzBdLmRhdGE7XG4gICAgICAgIH1cblxuICAgICAgICB0cmFuc2xhdGVBbmRTZXRVbmNvbmZvcm1pdGllcyhpY2FvV2FybmluZ3MhKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgbGV0IGVycm9yQ29kZTtcbiAgICAgIGxldCBsaXZlbmVzc1Jlc3VsdDtcbiAgICAgIHRyeSB7XG4gICAgICAgIGxpdmVuZXNzUmVzdWx0ID0gYXdhaXQgZ2V0TGl2ZW5lc3NJZHJuZChlbmNyeXB0ZWRGaWxlKTtcbiAgICAgICAgdmFsaWRhdGVMaXZlbmVzcyhsaXZlbmVzc1Jlc3VsdC5kYXRhKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgJHJlcXVlc3RSZXN1bHQgPSByZXF1ZXN0UmVzdWx0RW51bS5VTktOT1dOX0xJVkVORVNTX0VSUk9SO1xuICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIEF4aW9zRXJyb3IgJiYgZS5yZXNwb25zZT8uc3RhdHVzID09PSA0MDApIHtcbiAgICAgICAgICBlcnJvckNvZGUgPSBlLnJlc3BvbnNlLmRhdGEuZXJyb3JfY29kZTtcbiAgICAgICAgICBsaXZlbmVzc0Vycm9yID0gaWRybmRFcnJvclRvaTE4bktleVtlcnJvckNvZGUgYXMga2V5b2YgdHlwZW9mIGlkcm5kRXJyb3JUb2kxOG5LZXldO1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0xpdmVuZXNzIGVycm9yOicsIGVycm9yQ29kZSk7XG4gICAgICAgICAgJHJlcXVlc3RSZXN1bHQgPSByZXF1ZXN0UmVzdWx0RW51bS5MSVZFTkVTU19ERVRFQ1RJT05fRkFJTFVSRTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0b2FzdC5maXJlKHsgaWNvbjogJ2Vycm9yJywgdGl0bGU6ICdGYWxoYSBhbyBjb211bmljYXIgY29tIHNlcnZpw6dvIGRlIExpdmVuZXNzJyB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoJHJlcXVlc3RSZXN1bHQgIT09IHJlcXVlc3RSZXN1bHRFbnVtLk9LKSB7XG4gICAgICAgICR1bmNvbmZvcm1pdGllc1N0b3JlLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChcbiAgICAgICAgICBuZXcgQ3VzdG9tRXZlbnQoJ2ZhY2UtdW5jb25mb3JtaXRpZXMtdmFsaWRhdGVkJywge1xuICAgICAgICAgICAgZGV0YWlsOiB7XG4gICAgICAgICAgICAgIGJvZHlQYXJ0czogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGJvZHlQYXJ0OiAnRkFDRScsXG4gICAgICAgICAgICAgICAgICBkYXRhOiAkb3JpZ2luYWxDYXB0dXJlLFxuICAgICAgICAgICAgICAgICAgbGl2ZW5lc3NCbG9iOiAoYXdhaXQgYmxvYlRvQmFzZTY0KGVuY3J5cHRlZEZpbGUpKS5zcGxpdCgnLCcpWzFdLFxuICAgICAgICAgICAgICAgICAgLi4uKGxpdmVuZXNzUmVzdWx0ICYmIHsgbGl2ZW5lc3NSZXN1bHQgfSksXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgLi4uKGVycm9yQ29kZSAmJiB7IGVycm9yQ29kZSB9KSxcbiAgICAgICAgICAgICAgLi4uKGxpdmVuZXNzRXJyb3IgJiYgeyB0cmFuc2xhdGVkRXJyb3I6ICRfKGxpdmVuZXNzRXJyb3IpIH0pLFxuICAgICAgICAgICAgICBzdGF0dXM6ICRyZXF1ZXN0UmVzdWx0LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBsZXQgeyBib2R5UGFydHMsIGljYW9XYXJuaW5ncyB9ID0gYXdhaXQgZ2V0RmFjZVVuY29uZm9ybWl0aWVzKCRvcmlnaW5hbENhcHR1cmUsIGV2YWx1YXRlUGhvdG8pO1xuICAgICAgd2luZG93LmRpc3BhdGNoRXZlbnQoXG4gICAgICAgIG5ldyBDdXN0b21FdmVudCgnZmFjZS11bmNvbmZvcm1pdGllcy12YWxpZGF0ZWQnLCB7XG4gICAgICAgICAgZGV0YWlsOiB7XG4gICAgICAgICAgICBib2R5UGFydHMsXG4gICAgICAgICAgICBpY2FvV2FybmluZ3MsXG4gICAgICAgICAgICBzdGF0dXM6ICRyZXF1ZXN0UmVzdWx0LFxuICAgICAgICAgICAgZXJyb3JDb2RlLFxuICAgICAgICAgICAgLi4uKGxpdmVuZXNzRXJyb3IgJiYgeyB0cmFuc2xhdGVkRXJyb3I6ICRfKGxpdmVuZXNzRXJyb3IpIH0pLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICApO1xuICAgICAgaWYgKGJvZHlQYXJ0c1swXS5kYXRhKSB7XG4gICAgICAgICRpbWFnZSA9IGJvZHlQYXJ0c1swXS5kYXRhO1xuICAgICAgfVxuICAgICAgdHJhbnNsYXRlQW5kU2V0VW5jb25mb3JtaXRpZXMoaWNhb1dhcm5pbmdzKTtcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIG9wZW5DYW1lcmEoZGV2aWNlPzogc3RyaW5nKSB7XG4gICAgLy8gdGhpcyB3ZWlyZCBzdHVmIHdpdGggaGVpZ2h0IGFuZCB3aWR0aCBpcyBoZXJlIHRvIGNvbXBlbnNhdGUgYSBzdmVsdGUgaXNzdWVcbiAgICAvLyBiZWNhdXNlIG9uTW91bnQgZ2V0cyBjYWxsZWQgdHdpY2VcbiAgICBjb25zdCBbd2lkdGgsIGhlaWdodF0gPSAodmlkZW9EaW1lbnNpb25zID8/ICcnKVxuICAgICAgPy5yZXBsYWNlQWxsKCcgJywgJycpXG4gICAgICA/LnNwbGl0KCd4JylcbiAgICAgID8ubWFwKCh2KSA9PiAodiA/IHBhcnNlSW50KHYpIDogdW5kZWZpbmVkKSk7XG4gICAgaWYgKCF3aWR0aCB8fCAhaGVpZ2h0KSByZXR1cm47XG4gICAgJHZpZGVvU3RvcmUgPSB7IHZpZGVvV2lkdGg6IHdpZHRoLCB2aWRlb0hlaWdodDogaGVpZ2h0IH07XG4gICAgLy8gZmxpcCBlbVxuICAgIGlmIChpc0xpdmVuZXNzRW5hYmxlZCgpICYmIGhlaWdodCA8IHdpZHRoICYmIGlzTW9iaWxlKCkpIHtcbiAgICAgICR2aWRlb1N0b3JlID0geyB2aWRlb1dpZHRoOiBoZWlnaHQsIHZpZGVvSGVpZ2h0OiB3aWR0aCB9O1xuICAgIH1cbiAgICBcbiAgICBpZiAoaXNMaXZlbmVzc0VuYWJsZWQoKSkge1xuICAgICAgb3BlbkNhbWVyYUxpdmVuZXNzKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgYXdhaXQgc2VsZWN0RGV2aWNlKHdpZHRoLCBoZWlnaHQsIGRldmljZSk7IC8vIG9wZW4gdGhlIGZyb250IGNhbWVyYSBcbiAgfVxuXG4gIGZ1bmN0aW9uIG9wZW5DYW1lcmFMaXZlbmVzcygpIHtcbiAgICBpZiAoIWlzTGl2ZW5lc3NFbmFibGVkKCkpIHJldHVybjtcblxuICAgICRjYW1lcmFTdGF0dXNTdG9yZSA9IENhbWVyYVN0YXR1c0VudW0uT0s7XG4gICAgaWYgKHdpZGdldEluc3RhbmNlICYmICdvcGVuQ2FtZXJhJyBpbiB3aWRnZXRJbnN0YW5jZSkgd2lkZ2V0SW5zdGFuY2Uub3BlbkNhbWVyYSgpO1xuICAgIGNhcHR1cmluZyA9IHRydWU7XG4gICAgaWRybmRDbG9zZWQgPSBmYWxzZTtcbiAgICBpZHJuZExvYWRpbmcgPSB0cnVlO1xuICB9XG5cbiAgZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHBsYXkoKSB7XG4gICAgLy8gd2FpdCBmb3IgZmFjZSBhcGkgdG8gbG9hZCB3ZWlnaHRzXG4gICAgaWYgKCRlbmFibGVGYWNlQXBpICYmICFsb2FkZWRGYWNlQXBpQW5kV2VpZ2h0cykgcmV0dXJuIGxvb3BDYWxsZXIodmlkZW8sIHBsYXkpO1xuICAgIC8vIHJldHVybiBpZiB1bmluaXRpYWxpemVkIHZpZGVvIGVsZW1lbnRcbiAgICBpZiAoIXZpZGVvKSByZXR1cm47XG4gICAgLy8gcmV0dXJuIGlmIHRoZSBjdXJyZW50IHRhYiBpc24ndCBmYWNlXG4gICAgaWYgKCEoJHNlbGVjdGVkVGFiID09PSBUYWJFbnVtLkZhY2UpICYmICFub1RhYnMpIHJldHVybiBsb29wQ2FsbGVyKHZpZGVvLCBwbGF5KTtcbiAgICAvLyBpZiBldmVyeXRoaW5nIHBhc3NlcyB3ZSBhcmUgcmVhZHkgdG8gY2FwdHVyZVxuICAgICRyZWFkeSA9IHRydWU7XG4gICAgLy8gb25seSBtYWtlIGRldGVjdGlvbnMgaWYgZmFjZSBhcGkgZW5hYmxlZFxuICAgIGlmICgkZW5hYmxlRmFjZUFwaSkge1xuICAgICAgLy8gZmlyZXMgdGhlIGxpc3RlbmVyIHRvIHN0YXJ0IHRoZSBmYWNlIGFwaSBsb29wXG4gICAgICBpZiAoISRzdGFydEZhY2VBcGkpICRzdGFydEZhY2VBcGkgPSB0cnVlO1xuXG4gICAgICBpZiAoIWlzTGl2ZW5lc3NFbmFibGVkKCkpIHtcbiAgICAgICAgZHJhd092YWwoZGlzcGxheUNhbnZhcy5nZXRDb250ZXh0KCcyZCcpIGFzIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCwgdmlkZW8pO1xuICAgICAgfVxuICAgICAgbG9vcENhbGxlcih2aWRlbywgcGxheSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRyYXdPdmFsKGRpc3BsYXlDYW52YXMuZ2V0Q29udGV4dCgnMmQnKSBhcyBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQsIHZpZGVvKTtcbiAgICAgIGxvb3BDYWxsZXIodmlkZW8sIHBsYXkpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIGNhcHR1cmUoKSB7XG4gICAgdW5Mb2NrU2NyZWVuKCk7XG4gICAgJHJlcXVlc3RSZXN1bHQgPSByZXF1ZXN0UmVzdWx0RW51bS5PSztcbiAgICBpZiAoaXNMaXZlbmVzc0VuYWJsZWQoKSkge1xuICAgICAgd2FpdGluZ0lkcm5kQ2FwdHVyZUV2ZW50ID0gdHJ1ZTtcbiAgICAgIHdpZGdldEluc3RhbmNlLnRha2VQaG90bygpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAkY2FwdHVyZWQgPSB0cnVlO1xuICAgIGlmICgkZW5hYmxlRmFjZUFwaSkge1xuICAgICAgY29uc3QgW2NhbnZhc10gPSBhd2FpdCAoYXdhaXQgaW1wb3J0KCdAdmxhZG1hbmRpYy9mYWNlLWFwaScpKS5leHRyYWN0RmFjZXModmlkZW8sIFskYm94U3RvcmVdKTtcbiAgICAgIGNvbnN0IGltZyA9IGNhbnZhcy50b0RhdGFVUkwoJ2ltYWdlL2pwZWcnKS5zcGxpdCgnLCcpO1xuICAgICAgJGRhdGFUeXBlUHJlZml4ID0gaW1nWzBdO1xuICAgICAgJGltYWdlID0gaW1nWzFdO1xuICAgICAgJG9yaWdpbmFsQ2FwdHVyZSA9IGltZ1sxXTtcbiAgICAgIGxldCB7IGJvZHlQYXJ0cywgaWNhb1dhcm5pbmdzIH0gPSBhd2FpdCBnZXRGYWNlVW5jb25mb3JtaXRpZXMoJGltYWdlLCBldmFsdWF0ZVBob3RvKTtcbiAgICAgIC8vIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIDIxMDAwMCkpO1xuICAgICAgd2luZG93LmRpc3BhdGNoRXZlbnQoXG4gICAgICAgIG5ldyBDdXN0b21FdmVudCgnZmFjZS11bmNvbmZvcm1pdGllcy12YWxpZGF0ZWQnLCB7XG4gICAgICAgICAgZGV0YWlsOiB7XG4gICAgICAgICAgICBib2R5UGFydHMsXG4gICAgICAgICAgICBpY2FvV2FybmluZ3MsXG4gICAgICAgICAgICBzdGF0dXM6ICRyZXF1ZXN0UmVzdWx0LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICApO1xuICAgICAgaWYgKGJvZHlQYXJ0cy5sZW5ndGggIT09IDAgJiYgYm9keVBhcnRzWzBdLmRhdGEpIHtcbiAgICAgICAgJGltYWdlID0gYm9keVBhcnRzWzBdLmRhdGE7XG4gICAgICB9XG4gICAgICB0cmFuc2xhdGVBbmRTZXRVbmNvbmZvcm1pdGllcyhpY2FvV2FybmluZ3MpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtcbiAgICAgIGNvbnN0IGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpO1xuICAgICAgY2FudmFzLndpZHRoID0gdmlkZW8ud2lkdGg7XG4gICAgICBjYW52YXMuaGVpZ2h0ID0gdmlkZW8uaGVpZ2h0O1xuICAgICAgY3R4Py5kcmF3SW1hZ2UodmlkZW8sIDAsIDAsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCk7XG4gICAgICBjb25zdCBpbWcgPSBjYW52YXMudG9EYXRhVVJMKCdpbWFnZS9qcGVnJykuc3BsaXQoJywnKTtcbiAgICAgICRkYXRhVHlwZVByZWZpeCA9IGltZ1swXTtcbiAgICAgICRpbWFnZSA9IGltZ1sxXTtcbiAgICAgICRvcmlnaW5hbENhcHR1cmUgPSBpbWdbMV07XG4gICAgICBsZXQgeyBib2R5UGFydHMsIGljYW9XYXJuaW5ncyB9ID0gYXdhaXQgZ2V0RmFjZVVuY29uZm9ybWl0aWVzKCRpbWFnZSwgZXZhbHVhdGVQaG90byk7XG4gICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChcbiAgICAgICAgbmV3IEN1c3RvbUV2ZW50KCdmYWNlLXVuY29uZm9ybWl0aWVzLXZhbGlkYXRlZCcsIHtcbiAgICAgICAgICBkZXRhaWw6IHtcbiAgICAgICAgICAgIGJvZHlQYXJ0cyxcbiAgICAgICAgICAgIGljYW9XYXJuaW5ncyxcbiAgICAgICAgICAgIHN0YXR1czogJHJlcXVlc3RSZXN1bHQsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgICBpZiAoYm9keVBhcnRzLmxlbmd0aCAhPT0gMCAmJiBib2R5UGFydHNbMF0uZGF0YSkge1xuICAgICAgICAkaW1hZ2UgPSBib2R5UGFydHNbMF0uZGF0YTtcbiAgICAgIH1cbiAgICAgIHRyYW5zbGF0ZUFuZFNldFVuY29uZm9ybWl0aWVzKGljYW9XYXJuaW5ncyk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gc2F2ZSgpIHtcbiAgICBjb25zdCBmYWNlOiBCb2R5UGFydCA9IHtcbiAgICAgIGJvZHlQYXJ0OiAnRkFDRScsXG4gICAgICBkYXRhOiAkaW1hZ2UsXG4gICAgICBqdXN0aWZpY2F0aW9uOiAkanVzdGlmaWNhdGlvbixcbiAgICB9O1xuICAgICRzYXZlZCA9IHRydWU7XG4gICAgLy8gc2VuZCBibG9iIGlmIHByZXNlbnRcbiAgICBpZiAoZ2V0KGJsb2IpKSB7XG4gICAgICBibG9iVG9CYXNlNjQoZ2V0KGJsb2IpKS50aGVuKChiYXNlNjQpID0+IHtcbiAgICAgICAgZmFjZS5saXZlbmVzc0Jsb2IgPSBiYXNlNjQuc3BsaXQoJywnKVsxXTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ2V4cG9ydC1mYWNlJywgeyBkZXRhaWw6IGZhY2UgfSkpO1xuICB9XG5cbiAgZnVuY3Rpb24gcmV0YWtlKCkge1xuICAgIC8vZW1pdCBhbiBlbXB0eSBldmVudCBpbmZvcm1pbmcgdGhhdCBpdCB3YXMgc2NyYXBwZWRcbiAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ2ZhY2Utc2NyYXBwZWQnKSk7XG4gICAgJHNhdmVkID0gZmFsc2U7XG4gICAgJHJlcXVlc3RSZXN1bHQgPSByZXF1ZXN0UmVzdWx0RW51bS5PSztcbiAgICAkY2FwdHVyZWQgPSBmYWxzZTtcbiAgICAkb3JpZ2luYWxDYXB0dXJlID0gJyc7XG4gICAgJHVuY29uZm9ybWl0aWVzU3RvcmUudW5jb25mb3JtaXRpZXMgPSBbXTtcbiAgICBjb25zdCBmYWNlVmFsaWRhdGlvbnMgPSBnZXQoZmFjZVZhbGlkYXRpb25zU3RvcmUpO1xuICAgIGZhY2VWYWxpZGF0aW9ucy5jbG9zZWRNb3V0aCA9IGZhbHNlO1xuICAgIGZhY2VWYWxpZGF0aW9ucy5pc1BlcnNvbkNsb3NlRW5vdWdoID0gZmFsc2U7XG4gICAgZmFjZVZhbGlkYXRpb25zLmlzUGVyc29uVG9vY2xvc2UgPSB0cnVlO1xuICAgIGZhY2VWYWxpZGF0aW9ucy5pc1BlcnNvbkluRnJhbWUgPSBmYWxzZTtcbiAgICBmYWNlVmFsaWRhdGlvbkFsZXJ0ID0gJyc7XG4gICAgZmFjZU5vdFZhbGlkYXRlZCA9IGZhbHNlO1xuICAgIGZhY2VWYWxpZGF0aW9uc1N0b3JlLnNldChmYWNlVmFsaWRhdGlvbnMpO1xuICAgIGlmIChpZHJuZENsb3NlZCkgb3BlbkNhbWVyYUxpdmVuZXNzKCk7XG4gIH1cblxuICBmdW5jdGlvbiB2YWxpZGF0ZUxpdmVuZXNzKHJlc3VsdDogbGl2ZW5lc3NSZXN1bHQpIHtcbiAgICBsZXQgdGl0bGUgPSAnJztcbiAgICBsZXQgaWNvbjogU3dlZXRBbGVydEljb24gPSAnc3VjY2Vzcyc7XG4gICAgaWYgKHJlc3VsdC5pc0FsaXZlKSB7XG4gICAgICB0aXRsZSA9IGBWaXZhY2lkYWRlIGRlIGZhY2UgKCR7cmVzdWx0LmZhY2VfbGl2ZW5lc3MucHJvYmFiaWxpdHkudG9GaXhlZCgyKX0pIGUgZGUgY2FwdHVyYSAoJHtcbiAgICAgICAgcmVzdWx0LmNhcHR1cmVfbGl2ZW5lc3MucHJvYmFiaWxpdHlcbiAgICAgIH0sICR7cmVzdWx0LmNhcHR1cmVfbGl2ZW5lc3Muc2NvcmUudG9GaXhlZCgyKX0pIHZlcmlmaWNhZG9zIWA7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChyZXN1bHQ/LmZhY2VfbGl2ZW5lc3M/LnByb2JhYmlsaXR5KSB7XG4gICAgICAgIGljb24gPSAnZXJyb3InO1xuICAgICAgICB0aXRsZSA9IGBWaXZhY2lkYWRlIGRlIGZhY2UgKCR7cmVzdWx0LmZhY2VfbGl2ZW5lc3MucHJvYmFiaWxpdHkudG9GaXhlZCgyKX0pIGUgZGUgY2FwdHVyYSAoJHtcbiAgICAgICAgICByZXN1bHQuY2FwdHVyZV9saXZlbmVzcy5wcm9iYWJpbGl0eVxuICAgICAgICB9LCAke3Jlc3VsdC5jYXB0dXJlX2xpdmVuZXNzLnNjb3JlLnRvRml4ZWQoMil9KSBpbnN1ZmljaWVudGVzIWA7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICgkc2hvd0xpdmVuZXNzUmVzdWx0VG9hc3QpIHRvYXN0LmZpcmUoeyBpY29uLCB0aXRsZSB9KTtcbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIHNlbGVjdERldmljZSh3aWR0aDogbnVtYmVyLCBoZWlnaHQ6IG51bWJlciwgZGV2aWNlPzogc3RyaW5nKSB7XG4gICAgICB0cnkge1xuICAgICAgICBpZiAoJGNhbWVyYVN0YXR1c1N0b3JlID09IENhbWVyYVN0YXR1c0VudW0uQ0FNRVJBX09SSUVOVEFUSU9OX1BPUlRSQUlUKSByZXR1cm47XG5cbiAgICAgICAgYXdhaXQgZW51bWVyYXRlRGV2aWNlcygpO1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgZGV2aWNlSWQ6IGRldmljZUlkLFxuICAgICAgICAgIHdpZHRoOiB3aWR0aENhbWVyYSxcbiAgICAgICAgICBoZWlnaHQ6IGhlaWdodENhbWVyYSxcbiAgICAgICAgICBhc3BlY3RSYXRpbzogYXNwZWN0UmF0aW9DYW1lcmEsXG4gICAgICAgICAgZmFjaW5nTW9kZTogZmFjaW5nLFxuICAgICAgICAgIHRvdWNoUG9pbnRzOiB0b3VjaFBvaW50c1xuICAgICAgICB9ID0gYXdhaXQgZ2V0VmlkZW9EaW1lbnNpb25zKHdpZHRoLCBoZWlnaHQsICRmYWNpbmdNb2RlLCBkZXZpY2UpO1xuICAgICAgICBpZiAod2lkdGhDYW1lcmEgPCB3aWR0aCAmJiBoZWlnaHRDYW1lcmEgPCBoZWlnaHQpIHtcbiAgICAgICAgICAkdmlkZW9TdG9yZSA9IHsgdmlkZW9XaWR0aDogd2lkdGhDYW1lcmEsIHZpZGVvSGVpZ2h0OiBoZWlnaHRDYW1lcmEgfTsgICAgICAgICAgXG4gICAgICAgIH1cbiAgICAgICAgLy8gdG8gd29yayBvbiBkZXZpY2UgZW11bGF0aW9uIChkZXNrdG9wKVxuICAgICAgICBpZiAoaXNNb2JpbGUoKSAmJiAoIWZhY2luZyB8fCB0b3VjaFBvaW50cyA8PSAxKSAgJiYgKHdpZHRoQ2FtZXJhID4gaGVpZ2h0Q2FtZXJhKSkgeyBcbiAgICAgICAgICAkdmlkZW9TdG9yZSA9IHsgdmlkZW9XaWR0aDogaGVpZ2h0Q2FtZXJhLCB2aWRlb0hlaWdodDogd2lkdGhDYW1lcmEgfTsgICAgICAgICAgXG4gICAgICAgIH1cbiAgICAgICAgLy8gZml4ZXMgdGhlICdjYW1lcmEgZG9lc24ndCBvcGVuIGlzc3VlJyBidXQgY2F1c2VzIGJsYWNrIHNjcmVlblxuICAgICAgICAvLyAkc2VsZWN0ZWRWaWRlb0RldmljZUlkID0gbnVsbDtcbiAgICAgICAgJHNlbGVjdGVkVmlkZW9EZXZpY2VJZCA9IGRldmljZUlkID8gZGV2aWNlSWQgOiAkY2FtZXJhRGV2aWNlc1N0b3JlWzBdLmRldmljZUlkO1xuICAgICAgICAkY2FtZXJhU3RhdHVzU3RvcmUgPSBDYW1lcmFTdGF0dXNFbnVtLk9LO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjb25zdCBlcnJvciA9IGUgYXMgRE9NRXhjZXB0aW9uO1xuICAgICAgICBpZHJuZENsb3NlZCA9IHRydWU7XG4gICAgICAgIGNvbnN0IGNvbnN0cmFpbnRFcnJvciA9IChpc09iamVjdChlKSAmJiBlLmNvbnN0cmFpbnQgPyBlLmNvbnN0cmFpbnQgOiAnJyk7IFxuICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yLCBjb25zdHJhaW50RXJyb3IpO1xuICAgICAgICBpZiAoaXNPYmplY3QoZXJyb3IpICYmICdtZXNzYWdlJyBpbiBlcnJvciAmJiBlcnJvci5tZXNzYWdlLmluY2x1ZGVzKCdQZXJtaXNzaW9uIGRlbmllZCcpKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihcIlVzZXIgZGlkbid0IGdpdmUgcGVybWlzc2lvbiB0byB1c2UgY2FtZXJhIVwiKTtcbiAgICAgICAgICAkY2FtZXJhU3RhdHVzU3RvcmUgPSBDYW1lcmFTdGF0dXNFbnVtLkNBTUVSQV9ERU5JRURfRVJST1I7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzT2JqZWN0KGVycm9yKSAmJiAnbWVzc2FnZScgaW4gZXJyb3IgJiYgZXJyb3IubWVzc2FnZS5pbmNsdWRlcygnUmVxdWVzdGVkIGRldmljZSBub3QgZm91bmQnKSkge1xuICAgICAgICAgICRjYW1lcmFTdGF0dXNTdG9yZSA9IENhbWVyYVN0YXR1c0VudW0uREVWSUNFX05PVF9GT1VORF9FUlJPUjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY29uc3RyYWludEVycm9yLmluY2x1ZGVzKCd3aWR0aCcpIHx8IGNvbnN0cmFpbnRFcnJvci5pbmNsdWRlcygnaGVpZ2h0JykpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGBDYW1lcmEgZG9lcyBub3QgbWVldCB0aGUgbWluaW11bSBzdXBwb3J0ZWQgcmVxdWlyZW1lbnRzISAoJHtjb25zdHJhaW50RXJyb3J9KWApO1xuICAgICAgICAgICRjYW1lcmFTdGF0dXNTdG9yZSA9IENhbWVyYVN0YXR1c0VudW0uQ0FNRVJBX1VOU1VQUE9SVEVEO1xuICAgICAgICB9XG4gICAgICB9XG4gIH1cblxuICAvLyBTdWJzY3JpcHRpb25zXG5cbiAgY29uc3QgdW5zdWJzY3JpYmVWaWRlb0RpbWVuc2lvbnMgPSB2aWRlb1N0b3JlLnN1YnNjcmliZSgoc3RvcmVPYmopID0+IHtcbiAgICBpZiAoIXZpZGVvKSByZXR1cm47XG4gICAgaWYgKCFkZXRlY3Rpb25zQ2FudmFzKSByZXR1cm47XG5cbiAgICB2aWRlby53aWR0aCA9IHN0b3JlT2JqLnZpZGVvV2lkdGg7XG4gICAgdmlkZW8uaGVpZ2h0ID0gc3RvcmVPYmoudmlkZW9IZWlnaHQ7XG4gICAgZGV0ZWN0aW9uc0NhbnZhcy53aWR0aCA9IHN0b3JlT2JqLnZpZGVvV2lkdGg7XG4gICAgZGV0ZWN0aW9uc0NhbnZhcy5oZWlnaHQgPSBzdG9yZU9iai52aWRlb0hlaWdodDtcbiAgICBtYXNrQ2FudmFzLndpZHRoID0gc3RvcmVPYmoudmlkZW9XaWR0aDtcbiAgICBtYXNrQ2FudmFzLmhlaWdodCA9IHN0b3JlT2JqLnZpZGVvSGVpZ2h0O1xuICAgIC8vIGlmIChpc0xpdmVuZXNzRW5hYmxlZCgpKSB7XG4gICAgLy8gY29uc29sZS5sb2coc3RvcmVPYmoudmlkZW9XaWR0aCwgc3RvcmVPYmoudmlkZW9IZWlnaHQpO1xuICAgIGRpc3BsYXlDYW52YXMud2lkdGggPSBzdG9yZU9iai52aWRlb1dpZHRoO1xuICAgIGRpc3BsYXlDYW52YXMuaGVpZ2h0ID0gc3RvcmVPYmoudmlkZW9IZWlnaHQ7XG4gICAgLy8gfVxuICB9KTtcblxuICBjb25zdCB1bnN1YnNjcmliZUZhY2VWYWxpZGF0aW9ucyA9IGZhY2VWYWxpZGF0aW9uc1N0b3JlLnN1YnNjcmliZSgobmV3VmFsdWUpID0+IHtcbiAgICBsZXQgbmV3RmFjZVZhbGlkYXRpb25BbGVydCA9ICcnO1xuXG4gICAgaWYgKCFuZXdWYWx1ZS5pc1BlcnNvbkNsb3NlRW5vdWdoKSB7XG4gICAgICBuZXdGYWNlVmFsaWRhdGlvbkFsZXJ0ID0gJ2ZhY2VDb2xsZWN0b3IuY29tZUNsb3NlckNhbWVyYSc7XG4gICAgfSBlbHNlIGlmIChuZXdWYWx1ZS5pc1BlcnNvblRvb2Nsb3NlKSB7XG4gICAgICBuZXdGYWNlVmFsaWRhdGlvbkFsZXJ0ID0gJ2ZhY2VDb2xsZWN0b3IubW92ZUF3YXlDYW1lcmEnO1xuICAgIH0gZWxzZSBpZiAoIW5ld1ZhbHVlLmlzUGVyc29uSW5GcmFtZSkge1xuICAgICAgbmV3RmFjZVZhbGlkYXRpb25BbGVydCA9ICdmYWNlQ29sbGVjdG9yLnN0YXlJbkZyYW1lJztcbiAgICB9IGVsc2UgaWYgKCFuZXdWYWx1ZS5jbG9zZWRNb3V0aCkge1xuICAgICAgbmV3RmFjZVZhbGlkYXRpb25BbGVydCA9ICdmYWNlQ29sbGVjdG9yLmRvbnRPcGVuTW91dGgnO1xuICAgIH0gXG5cbiAgICBpZiAobmV3RmFjZVZhbGlkYXRpb25BbGVydCAhPSAnJyl7XG4gICAgICAgLy9UT0RPOiB0ZXN0IG9uIGlPUyBhbmQgaWYgaXQgZG9lc24ndCB3b3JrLCBkbyBpdCBiYXNlZCBvbiB0aGUgY2xvY2tcbiAgICAgICBpZiAobmV3RmFjZVZhbGlkYXRpb25BbGVydCAhPSBmYWNlVmFsaWRhdGlvbkFsZXJ0KSB7ICAgICAgICBcbiAgICAgICAgZmFjZU5vdFZhbGlkYXRlZCA9IGZhbHNlO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICBmYWNlVmFsaWRhdGlvbkFsZXJ0ID0gbmV3RmFjZVZhbGlkYXRpb25BbGVydDtcbiAgICAgICAgICBmYWNlTm90VmFsaWRhdGVkID0gdHJ1ZTtcbiAgICAgICAgfSwgMTAwMCk7XG4gICAgICB9XG4gICAgfVxuICAgIFxuICAgIC8vIEFVVE9NQVRJQyBDQVBUVVJFXG4gICAgLy8gaWYgYWxsIHRoZSBwYXJhbWV0ZXJzIGFyZSBva1xuICAgIGlmIChcbiAgICAgICEkY2FwdHVyZWQgJiZcbiAgICAgICRhdXRvbWF0aWNDYXB0dXJlICYmXG4gICAgICAhaXNDb3VudGluZ0Rvd24gJiZcbiAgICAgIG5ld1ZhbHVlLmlzUGVyc29uSW5GcmFtZSAmJlxuICAgICAgbmV3VmFsdWUuY2xvc2VkTW91dGggJiZcbiAgICAgICEoIW5ld1ZhbHVlLmlzUGVyc29uQ2xvc2VFbm91Z2ggfHwgbmV3VmFsdWUuaXNQZXJzb25Ub29jbG9zZSlcbiAgICApIHtcbiAgICAgIC8vIHN0YXJ0IGEgY291bnRkb3duIGFuZCB0YWtlIGEgcGljdHVyZVxuICAgICAgaXNDb3VudGluZ0Rvd24gPSB0cnVlO1xuICAgICAgZmFjZU5vdFZhbGlkYXRlZCA9IGZhbHNlO1xuICAgICAgY291bnREb3duRmluaXNoVGltZSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpICsgY291bnREb3duQ2FwdHVyZTtcbiAgICAgIGNvbnN0IGNvdW50ZG93bkludGVydmFsQ2FsbGJhY2sgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICAgIC8vIHN0b3AgY291bnRpbmcgaWYgZGlzYWJsZWQgbWlkLWNvdW50IG9yIGlmIGNhcHR1cmVkIGJlZm9yZVxuICAgICAgICBpZiAoXG4gICAgICAgICAgISRhdXRvbWF0aWNDYXB0dXJlIHx8XG4gICAgICAgICAgJGNhcHR1cmVkIHx8XG4gICAgICAgICAgKGlzTGl2ZW5lc3NFbmFibGVkKCkgJiYgaWRybmRDbG9zZWQpIHx8XG4gICAgICAgICAgIW5ld1ZhbHVlLmlzUGVyc29uQ2xvc2VFbm91Z2ggfHxcbiAgICAgICAgICBuZXdWYWx1ZS5pc1BlcnNvblRvb2Nsb3NlIHx8XG4gICAgICAgICAgIW5ld1ZhbHVlLmNsb3NlZE1vdXRoIHx8XG4gICAgICAgICAgIW5ld1ZhbHVlLmlzUGVyc29uSW5GcmFtZVxuICAgICAgICApIHtcbiAgICAgICAgICBpc0NvdW50aW5nRG93biA9IGZhbHNlO1xuICAgICAgICAgIGRpc2FibGVDb3VudERvd24gPSB0cnVlO1xuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgZGlzYWJsZUNvdW50RG93biA9IGZhbHNlO1xuICAgICAgICAgIH0sIDE1MDApO1xuICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY291bnRkb3duSW50ZXJ2YWxDYWxsYmFjayk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgICAgICBjb25zdCByZW1haW5pbmdTZWNvbmRzID0gTWF0aC5mbG9vcigoKGNvdW50RG93bkZpbmlzaFRpbWUgLSBub3cpICUgKDEwMDAgKiA2MCkpIC8gMTAwMCk7XG4gICAgICAgIC8vIGNvdW50RG93bkh0bWxFbGVtZW50LmlubmVySFRNTCA9IHJlbWFpbmluZ1NlY29uZHMudG9TdHJpbmcoKTtcbiAgICAgICAgaWYgKHJlbWFpbmluZ1NlY29uZHMgPD0gMCkge1xuICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY291bnRkb3duSW50ZXJ2YWxDYWxsYmFjayk7XG4gICAgICAgICAgaXNDb3VudGluZ0Rvd24gPSBmYWxzZTtcbiAgICAgICAgICBjb25zdCBjdXN0b21FbGVtZW50ID0gZG9jdW1lbnRcbiAgICAgICAgICAgIC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnYmlvbWV0cmljLWNvbGxlY3RvcicpPy5bMF1cbiAgICAgICAgICAgID8uc2hhZG93Um9vdD8uZ2V0RWxlbWVudEJ5SWQoJ2JyeS1jYy1jYXB0dXJlLWJ0bicpO1xuICAgICAgICAgIGN1c3RvbUVsZW1lbnQ/LmNsaWNrKCk7XG4gICAgICAgIH1cbiAgICAgIH0sIDEwMCk7XG4gICAgfVxuICB9KTtcblxuICAvLyB3ZSBjb3VsZCBoYXZlIHVzZWQgaGlkZGVuPXskY2FwdHVyZWR9LCBidXQgZm9yIHNvbWUgcmVhc29uIGl0IGRvZXNuJ3Qgd29yayBzbyBkbyB0aGlzIGluc3RlYWRcbiAgY29uc3QgdW5zdWJzY3JpYmVDYXB0dXJlZFN0YXRlID0gY2FwdHVyZWQuc3Vic2NyaWJlKChuZXdWYWx1ZSkgPT4ge1xuICAgIGlmICghZW5jbG9zaW5nRGl2KSByZXR1cm47XG4gICAgaWYgKG5ld1ZhbHVlKSB7XG4gICAgICBlbmNsb3NpbmdEaXYuY2xhc3NMaXN0LnJlbW92ZSgnZmxleCcpO1xuICAgICAgZW5jbG9zaW5nRGl2LmNsYXNzTGlzdC5hZGQoJ2hpZGRlbicpO1xuICAgIH0gZWxzZSB7XG4gICAgICBlbmNsb3NpbmdEaXYuY2xhc3NMaXN0LmFkZCgnZmxleCcpO1xuICAgICAgZW5jbG9zaW5nRGl2LmNsYXNzTGlzdC5yZW1vdmUoJ2hpZGRlbicpO1xuICAgIH1cbiAgfSk7XG5cbiAgY29uc3QgdW5zdWJzY3JpYmVDbGVhclZpZGVvU3JjID0gY2xlYXJlZFZpZGVvU3JjT2JqZWN0LnN1YnNjcmliZSgobmV3VmFsdWUpID0+IHtcbiAgICBpZiAoIXZpZGVvKSByZXR1cm47XG4gICAgaWYgKG5ld1ZhbHVlKSB7XG4gICAgICBjb25zb2xlLmxvZygnc2V0dGluZyBudWxsIGluIHZpZGVvIHNyY09iamVjdCcpO1xuICAgICAgdmlkZW8uc3JjT2JqZWN0ID0gbnVsbDtcbiAgICAgIHZpZGVvLnNyYyA9ICcnO1xuICAgIH1cbiAgfSk7XG5cbiAgc2VsZWN0ZWRUYWIuc3Vic2NyaWJlKGFzeW5jICh0YWIpID0+IHtcbiAgICBpZiAodGFiID09PSBUYWJFbnVtLkZhY2UpIHtcbiAgICAgIGF3YWl0IGVudW1lcmF0ZURldmljZXMoKTtcbiAgICB9XG4gIH0pO1xuXG4gIGNvbnN0IHVuc3Vic2NyaWJlU2VsZWN0ZWRTdHJlYW0gPSBzZWxlY3RlZFZpZGVvRGV2aWNlSWQuc3Vic2NyaWJlKGFzeW5jIChuZXdEZXZpY2VJZCkgPT4ge1xuICAgIGlmIChpc0xpdmVuZXNzRW5hYmxlZCgpKSByZXR1cm47XG4gICAgaWYgKCFuZXdEZXZpY2VJZCkgcmV0dXJuO1xuICAgIGlmICghdmlkZW8pIHtcbiAgICAgIC8vIHJlcmVuZGVyIHZpZGVvIHRhZ1xuICAgICAgdW5pcXVlID0ge307XG4gICAgfVxuICAgIGNvbnN0IHsgdmlkZW9IZWlnaHQsIHZpZGVvV2lkdGggfSA9ICR2aWRlb1N0b3JlO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBzdHJlYW0gPSBhd2FpdCBzZXR1cFN0cmVhbSh2aWRlb1dpZHRoLCB2aWRlb0hlaWdodCwgbmV3RGV2aWNlSWQpO1xuICAgICAgdmlkZW8uc3JjT2JqZWN0ID0gc3RyZWFtO1xuICAgICAgJF9zdHJlYW0gPSBzdHJlYW07XG4gICAgICAkY2xlYXJlZFZpZGVvU3JjT2JqZWN0ID0gZmFsc2U7XG4gICAgICBpZiAoIXJpZ2h0T3JpZW50YXRpb24pIHtcbiAgICAgICAgJGNhbWVyYVN0YXR1c1N0b3JlID0gQ2FtZXJhU3RhdHVzRW51bS5DQU1FUkFfT1JJRU5UQVRJT05fUE9SVFJBSVQ7XG4gICAgICAgIHNodXRPZmZDYW1lcmEoKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBjb25zdCBlcnJvciA9IGUgYXMgRE9NRXhjZXB0aW9uO1xuICAgICAgaWRybmRDbG9zZWQgPSB0cnVlO1xuICAgICAgaWYgKGlzT2JqZWN0KGVycm9yKSAmJiAnbWVzc2FnZScgaW4gZXJyb3IgJiYgZXJyb3IubWVzc2FnZS5pbmNsdWRlcygnUmVxdWVzdGVkIGRldmljZSBub3QgZm91bmQnKSkge1xuICAgICAgICAkY2FtZXJhU3RhdHVzU3RvcmUgPSBDYW1lcmFTdGF0dXNFbnVtLkRFVklDRV9OT1RfRk9VTkRfRVJST1I7XG4gICAgICB9XG4gICAgfVxuXG4gIH0pO1xuXG4gIGNvbnN0IHVuc3Vic2NyaWJlQ2hhbmdlVGFiID0gc2VsZWN0ZWRUYWIuc3Vic2NyaWJlKGFzeW5jICh0YWIpID0+IHtcbiAgICBpZiAodGFiID09PSBUYWJFbnVtLkZhY2UgJiYgaXNMaXZlbmVzc0VuYWJsZWQoKSkge1xuICAgICAgaWYgKCFjYXB0dXJpbmcgJiYgISRjYXB0dXJlZCAmJiBpbml0aWFsaXplZCkgYXdhaXQgb3BlbkNhbWVyYSgpO1xuICAgIH1cbiAgfSk7XG5cbiAgY29uc3QgdW5zdWJzY3JpYmVGYWNlQXBpID0gc3RhcnRGYWNlQXBpLnN1YnNjcmliZShhc3luYyAobmV3VmFsdWUpID0+IHtcbiAgICBpZiAobmV3VmFsdWUpIGZhY2VhcGlMb29wKCk7XG4gIH0pO1xuXG4gIGNvbnN0IHVuc3Vic2NyaWJlU3dhcENhbWVyYSA9IHN3YXBDYW1lcmEuc3Vic2NyaWJlKGFzeW5jIChuZXdWYWx1ZSkgPT4ge1xuICAgIGlmICghJHZpZGVvU3RvcmUpIHJldHVybjtcblxuICAgIGlmICghaXNNb2JpbGUoKSkgeyAvLyBkZXNrdG9wIGNhbWVyYXNcbiAgICAgIGNvbnN0IG5ld0RldmljZSA9ICRjYW1lcmFEZXZpY2VzU3RvcmUuZmluZChkZXZpY2UgPT4gZGV2aWNlLmRldmljZUlkICE9PSAkc2VsZWN0ZWRWaWRlb0RldmljZUlkKTtcbiAgICAgIGNvbnN0IGRldmljZUlkID0gbmV3RGV2aWNlID8gbmV3RGV2aWNlLmRldmljZUlkIDogJGNhbWVyYURldmljZXNTdG9yZVswXS5kZXZpY2VJZDtcbiAgICAgIG9wZW5DYW1lcmEoZGV2aWNlSWQpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChuZXdWYWx1ZSkgeyAvLyBtb2JpbGUgZGV2aWNlc1xuICAgICAgICAkZmFjaW5nTW9kZSA9IEZhY2luZ01vZGVFbnVtLlJFQVJfQ0FNRVJBO1xuICAgICAgICBhd2FpdCBvcGVuQ2FtZXJhKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgJGZhY2luZ01vZGUgPSBGYWNpbmdNb2RlRW51bS5GUk9OVF9DQU1FUkE7XG4gICAgICAgIGF3YWl0IG9wZW5DYW1lcmEoKTtcbiAgICB9IFxuICB9KTtcblxuICBjb25zdCB1bnN1YnNjcmliZU9yaWVudGF0aW9uID0gb3JpZW50YXRpb25EYXRhLnN1YnNjcmliZShhc3luYyAoZGF0YSkgPT4ge1xuICAgIGlmICghZGF0YS5pc1N1cHBvcnRlZCB8fCAhaXNNb2JpbGUoKSkgcmV0dXJuO1xuXG4gICAgcmlnaHRPcmllbnRhdGlvbiA9IGRhdGEub3JpZW50YXRpb24uaW5jbHVkZXMoJ3BvcnRyYWl0Jyk7XG4gICAgaWYgKHJpZ2h0T3JpZW50YXRpb24pIHtcbiAgICAgICRjYW1lcmFTdGF0dXNTdG9yZSA9IENhbWVyYVN0YXR1c0VudW0uT0s7XG4gICAgICBpZiAoJHZpZGVvU3RvcmUpIHsgXG4gICAgICAgICRzZWxlY3RlZFZpZGVvRGV2aWNlSWQgPSAnJztcbiAgICAgICAgJGZhY2luZ01vZGUgPSBGYWNpbmdNb2RlRW51bS5GUk9OVF9DQU1FUkE7XG4gICAgICAgIGF3YWl0IG9wZW5DYW1lcmEoKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgJGNhbWVyYVN0YXR1c1N0b3JlID0gQ2FtZXJhU3RhdHVzRW51bS5DQU1FUkFfT1JJRU5UQVRJT05fUE9SVFJBSVQ7XG4gICAgICBzaHV0T2ZmQ2FtZXJhKCk7XG4gICAgfVxuICB9KTtcblxuICBhc3luYyBmdW5jdGlvbiBmYWNlYXBpTG9vcCgpIHtcbiAgICBsZXQgZGV0ZWN0aW9uc1Jlc3VsdDtcbiAgICBpZiAoZmFjZWFwaUNvdW50ZXIgPj0gZmFjZWFwaUZyYW1lUmF0ZSkge1xuICAgICAgZmFjZWFwaUNvdW50ZXIgPSAwO1xuICAgICAgY29uc3Qgb3B0aW9ucyA9IGF3YWl0IGdldEZhY2VEZXRlY3Rvck9wdGlvbnMoKTtcbiAgICAgIC8vIGRlYnVnZ2VyXG4gICAgICBjb25zdCBmYWNlYXBpID0gYXdhaXQgaW1wb3J0KCdAdmxhZG1hbmRpYy9mYWNlLWFwaScpO1xuICAgICAgbGV0IGRldGVjdGlvbnNSZXN1bHQyO1xuICAgICAgZGV0ZWN0aW9uc1Jlc3VsdDIgPSBmYWNlYXBpLmRldGVjdFNpbmdsZUZhY2UoZGlzcGxheUNhbnZhcywgb3B0aW9ucyk7XG4gICAgICBkZXRlY3Rpb25zUmVzdWx0ID0gYXdhaXQgZGV0ZWN0aW9uc1Jlc3VsdDIud2l0aEZhY2VMYW5kbWFya3MoKTtcbiAgICAgIC8vIGNsZWFyIGNhbnZhcyB3aGVuIG5vdGhpbmcgZGV0ZWN0ZWRcbiAgICAgIGRldGVjdGlvbnNDYW52YXMuZ2V0Q29udGV4dCgnMmQnKT8uY2xlYXJSZWN0KDAsIDAsIGRldGVjdGlvbnNDYW52YXMud2lkdGgsIGRldGVjdGlvbnNDYW52YXMuaGVpZ2h0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgZmFjZWFwaUNvdW50ZXIgKys7XG4gICAgfVxuICAgIFxuICAgIGlmIChkZXRlY3Rpb25zUmVzdWx0KSB7XG4gICAgICBkcmF3RGV0ZWN0aW9uc0luRmFjZShkZXRlY3Rpb25zUmVzdWx0LCBkZXRlY3Rpb25zQ2FudmFzLCBlbmFibGVNaW51dGlhZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNldEZhY2VOb3RGb3VuZFRpbWVvdXQoKTtcbiAgICB9XG4gICAgaWYgKCRzdGFydEZhY2VBcGkpIHtcbiAgICAgIGxvb3BDYWxsZXIodmlkZW8sIGZhY2VhcGlMb29wKTtcbiAgICB9XG4gIH1cblxuICByZXRha2VQaG90by5zdWJzY3JpYmUoYXN5bmMgKG52KSA9PiB7XG4gICAgaWYgKG52KSB7XG4gICAgICByZXRha2UoKTtcbiAgICAgICRyZXRha2VQaG90byA9IGZhbHNlO1xuICAgIH1cbiAgfSk7XG5cbiAgY29uc3QgdW5zdWJzY3JpYmVSZWFkeUNhbWVyYUV2ZW50RW1pdHRlciA9IHJlYWR5LnN1YnNjcmliZSgobnYpID0+IHtcbiAgICBpZiAobnYpIHtcbiAgICAgIC8vIGluZm9ybXMgdGhhdCB0aGUgY2FtZXJhIGlzIHJlYWR5ICh0byBiZSBjbG9zZWQgaWYgdGhhdCBpcyB3aGF0IHlvdSB3YW50IHRvIGRvKVxuICAgICAgd2luZG93LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCdicnljYy1jYW1lcmEtcmVhZHknKSk7XG4gICAgfVxuICB9KTtcblxuICBvbkRlc3Ryb3koKCkgPT4ge1xuICAgIHNodXRPZmZDYW1lcmEoKTtcbiAgICB1bnN1YnNjcmliZUNhcHR1cmVkU3RhdGUoKTtcbiAgICB1bnN1YnNjcmliZUZhY2VWYWxpZGF0aW9ucygpO1xuICAgIHVuc3Vic2NyaWJlVmlkZW9EaW1lbnNpb25zKCk7XG4gICAgdW5zdWJzY3JpYmVDbGVhclZpZGVvU3JjKCk7XG4gICAgdW5zdWJzY3JpYmVTZWxlY3RlZFN0cmVhbSgpO1xuICAgIHVuc3Vic2NyaWJlQ2hhbmdlVGFiKCk7XG4gICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbElkKTtcbiAgICB1bnN1YnNjcmliZUZhY2VBcGkoKTtcbiAgICB1bnN1YnNjcmliZVN3YXBDYW1lcmEoKTtcbiAgICB1bnN1YnNjcmliZU9yaWVudGF0aW9uKCk7XG4gICAgdW5zdWJzY3JpYmVSZWFkeUNhbWVyYUV2ZW50RW1pdHRlcigpO1xuICAgIHVuTG9ja1NjcmVlbigpO1xuICAgIGludGVydmFsSWQgPSAwO1xuICB9KTtcbjwvc2NyaXB0PlxuXG48IS0tIHN2ZWx0ZS1pZ25vcmUgYTExeS1tZWRpYS1oYXMtY2FwdGlvbiAtLT5cbjxkaXY+XG4gIDwhLS0ge1skdmlkZW9TdG9yZT8udmlkZW9IZWlnaHQsICR2aWRlb1N0b3JlPy52aWRlb1dpZHRoXX1cbiAge1tkaXNwbGF5Q2FudmFzPy5oZWlnaHQsIGRpc3BsYXlDYW52YXM/LndpZHRoXX1cbiAge1skX3N0cmVhbT8uZ2V0VmlkZW9UcmFja3MoKVswXT8uZ2V0U2V0dGluZ3MoKT8uaGVpZ2h0LCAkX3N0cmVhbT8uZ2V0VmlkZW9UcmFja3MoKVswXT8uZ2V0U2V0dGluZ3MoKT8ud2lkdGhdfSAtLT5cbiAgPGRpdiBiaW5kOnRoaXM9e2VuY2xvc2luZ0Rpdn0gY2xhc3M9XCJmbGV4IGZsZXgtY29sIGp1c3RpZnktYmV0d2VlblwiPlxuICAgIDxkaXYgY2xhc3M9XCJyZWxhdGl2ZSBteC1hdXRvXCI+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwicmVsYXRpdmVcIlxuICAgICAgICBoaWRkZW49eyRjYW1lcmFTdGF0dXNTdG9yZSAhPT0gQ2FtZXJhU3RhdHVzRW51bS5PSyB8fFxuICAgICAgICAgIChpc0xpdmVuZXNzRW5hYmxlZCgpICYmIChpZHJuZExvYWRpbmcgfHwgaWRybmRDbG9zZWQgfHwgd2FpdGluZ0lkcm5kQ2FwdHVyZUV2ZW50KSl9XG4gICAgICA+XG4gICAgICAgIHsjaWYgaXNMaXZlbmVzc0VuYWJsZWQoKX1cbiAgICAgICAgICA8aWRsaXZlLWZhY2UtY2FwdHVyZVxuICAgICAgICAgICAgaGlkZGVuXG4gICAgICAgICAgICBtYXNrX2hpZGRlblxuICAgICAgICAgICAgYXV0b19jYXB0dXJlX2Rpc2FibGVkXG4gICAgICAgICAgICBhdXRvX2Nsb3NlX2Rpc2FibGVkXG4gICAgICAgICAgICBiaW5kOnRoaXM9e3dpZGdldEluc3RhbmNlfVxuICAgICAgICAgIC8+XG4gICAgICAgIHsvaWZ9XG4gICAgICAgIDwhLS0gd2hlbiB1bmlxdWUgZ2V0cyByZXNzaWduZWQgaXQgd2lsbCBnZXQgcmUgcmVuZGVyZWQsIHdoaWNoIHNvbHZlcyB0aGUgJ2NhbWVyYSBub3Qgb3BlbmluZyBpc3N1ZScgLS0+XG4gICAgICAgIHsja2V5IHVuaXF1ZX1cbiAgICAgICAgICA8dmlkZW9cbiAgICAgICAgICAgIGlkPVwiYnJ5LWNjLWNhbWVyYS12aWRlby10YWdcIlxuICAgICAgICAgICAgY2xhc3M9XCJhYnNvbHV0ZSAtei0xMFwiXG4gICAgICAgICAgICBiaW5kOnRoaXM9e3ZpZGVvfVxuICAgICAgICAgICAgb246Y2FucGxheT17KCkgPT4ge1xuICAgICAgICAgICAgICBpZiAoaXNMaXZlbmVzc0VuYWJsZWQoKSkgcmV0dXJuO1xuICAgICAgICAgICAgICAkdmlkZW9TdG9yZSA9IHsgdmlkZW9IZWlnaHQ6IHZpZGVvLnZpZGVvSGVpZ2h0LCB2aWRlb1dpZHRoOiB2aWRlby52aWRlb1dpZHRoIH07XG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgb246cGxheXxvbmNlPXtwbGF5fVxuICAgICAgICAgICAgcGxheXNpbmxpbmVcbiAgICAgICAgICAgIG11dGVkXG4gICAgICAgICAgICBhdXRvcGxheVxuICAgICAgICAgIC8+XG4gICAgICAgIHsva2V5fVxuICAgICAgICA8Q29uZkJ0biBjbGFzc05hbWU9XCJib3R0b20tMFwiIC8+XG4gICAgICAgIDxDYW1lcmFCdG4gY2xhc3NOYW1lPVwiYm90dG9tLTBcIiAvPlxuICAgICAgICBcbiAgICAgICAgPCEtLSB7I2lmIGlzTGl2ZW5lc3NFbmFibGVkKCl9IC0tPlxuICAgICAgICA8IS0tIHdvcmtzIGFzIHRoZSB2aWRlbyB0YWcgd2hlbiBsaXZlbmVzcyBlbmFibGVkLiBUaGlzIGlzIHJlcXVpcmVkIHRvIGJlIGFibGUgdG8gc2V0IHZpZGVvIHJhdGlvIGNvcnJlY3RseSAtLT5cbiAgICAgICAgPGNhbnZhcyBiaW5kOnRoaXM9e2Rpc3BsYXlDYW52YXN9IGlkPVwiYnJ5LWNlLWRpc3BsYXlDYW52YXNcIiBjbGFzcz1cIm1heC13LWZ1bGwgLXNjYWxlLXgtMTAwXCIgLz5cbiAgICAgICAgPCEtLSB7L2lmfSAtLT5cbiAgICAgICAgPGNhbnZhc1xuICAgICAgICAgIGJpbmQ6dGhpcz17ZGV0ZWN0aW9uc0NhbnZhc31cbiAgICAgICAgICBpZD1cImJyeS1jZS1kZXRlY3Rpb25zQ2FudmFzXCJcbiAgICAgICAgICBjbGFzcz1cImFic29sdXRlIHRvcC0wIGxlZnQtMCBtYXgtdy1mdWxsIC1zY2FsZS14LTEwMFwiXG4gICAgICAgIC8+XG4gICAgICAgIDxjYW52YXMgYmluZDp0aGlzPXttYXNrQ2FudmFzfSBpZD1cImJyeS1jZS1tYXNrQ2FudmFzXCIgY2xhc3M9XCJhYnNvbHV0ZSB0b3AtMCBsZWZ0LTAgbWF4LXctZnVsbCAtc2NhbGUteC0xMDBcIiAvPlxuICAgICAgICB7I2lmIGlzQ291bnRpbmdEb3dufVxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICBjbGFzcz1cImFic29sdXRlIGxlZnQtMS8yIC10cmFuc2xhdGUteC0xLzIgdG9wLVs1JV0gY2UtZHVpLWJhZGdlIGNlLWR1aS1iYWRnZS1sZyBoLVsyZW1dIHRleHQtYmFzZSBiYXNlOnRleHQtYmFzZSB3LVsxMi4xZW1dXCJcbiAgICAgICAgICAgID57JF8oJ2ZhY2VDb2xsZWN0b3Iuc3RheVN0aWxsJyl9PC9zcGFuXG4gICAgICAgICAgPlxuICAgICAgICB7L2lmfVxuICAgICAgICB7I2lmICRlbmFibGVGYWNlQXBpICYmICFpc0NvdW50aW5nRG93biAmJiAkZmFjZUZvdW5kICYmIGZhY2VOb3RWYWxpZGF0ZWR9XG4gICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgIGNsYXNzPVwiYWJzb2x1dGUgbGVmdC0xLzIgLXRyYW5zbGF0ZS14LTEvMiB0b3AtWzUlXSBjZS1kdWktYmFkZ2UgY2UtZHVpLWJhZGdlLWxnIGgtWzJlbV0gdGV4dC1iYXNlIGJhc2U6dGV4dC1iYXNlIHctWzEyLjFlbV1cIlxuICAgICAgICAgICAgPnskXyhgJHtmYWNlVmFsaWRhdGlvbkFsZXJ0fWApfTwvc3BhblxuICAgICAgICAgID5cbiAgICAgICAgey9pZn1cbiAgICAgIDwvZGl2PlxuICAgICAgeyNpZiBpc0xpdmVuZXNzRW5hYmxlZCgpICYmIHdhaXRpbmdJZHJuZENhcHR1cmVFdmVudH1cbiAgICAgICAgPHNsb3QgbmFtZT1cIm9idGFpbmluZy1waG90by1naWZcIiBjbGFzcz1cImJsb2NrIGgtWzE3ZW1dIGxnOmgtWzIxLjZlbV0geGw6aC1bMzBlbV1cIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidHJhbnNsYXRlLXktMS8zIG1kOnRyYW5zbGF0ZS15LTEvNCB4bDp0cmFuc2xhdGUteS0xLzJcIj5cbiAgICAgICAgICAgIDxpbWcgc3JjPXtsb2FkaW5nR2lmfSBhbHQ9XCJsb2FkaW5nIGdpZlwiIGNsYXNzPVwibS1hdXRvIGgtWzEwZW1dIGxnOmgtWzEyZW1dXCIgLz5cbiAgICAgICAgICAgIHsjaWYgJGlzTG9hZGluZ31cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCIyeGw6dGV4dC0yeGwgbGc6dGV4dC0yeGwgdGV4dC1tZCBibG9jayBwLTIgbS1hdXRvIHRleHQtY2VudGVyXCI+T2J0YWluaW5nIHBob3RvLi4uPC9zcGFuPlxuICAgICAgICAgICAgezplbHNlfVxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIjJ4bDp0ZXh0LTJ4bCBsZzp0ZXh0LTJ4bCB0ZXh0LW1kIGJsb2NrIHAtMiBtLWF1dG8gdGV4dC1jZW50ZXJcIlxuICAgICAgICAgICAgICAgID57JF8oJ2ZhY2VDb2xsZWN0b3Iub2J0YWluaW5nUGljdHVyZScpfTwvc3BhblxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICB7L2lmfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3Nsb3Q+XG4gICAgICB7L2lmfVxuICAgICAgeyNpZiBpc0xpdmVuZXNzRW5hYmxlZCgpICYmIGlkcm5kTG9hZGluZyAmJiAkY2FtZXJhU3RhdHVzU3RvcmUgPT09IENhbWVyYVN0YXR1c0VudW0uT0t9XG4gICAgICAgIDxzbG90IG5hbWU9XCJsb2FkaW5nLWNhbWVyYS1naWZcIiBjbGFzcz1cImJsb2NrIGgtWzE3ZW1dIGxnOmgtWzIxLjZlbV0geGw6aC1bMzBlbV1cIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidHJhbnNsYXRlLXktMS8zIG1kOnRyYW5zbGF0ZS15LTEvNCB4bDp0cmFuc2xhdGUteS0xLzJcIj5cbiAgICAgICAgICAgIDxpbWcgc3JjPXtsb2FkaW5nR2lmfSBhbHQ9XCJsb2FkaW5nIGdpZlwiIGNsYXNzPVwibS1hdXRvIGgtWzEwZW1dIGxnOmgtWzEyZW1dXCIgLz5cbiAgICAgICAgICAgIHsjaWYgJGlzTG9hZGluZ31cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCIyeGw6dGV4dC0yeGwgbGc6dGV4dC0yeGwgdGV4dC1tZCBibG9jayBwLTIgbS1hdXRvIHRleHQtY2VudGVyXCI+TG9hZGluZyBjYW1lcmEuLi48L3NwYW4+XG4gICAgICAgICAgICB7OmVsc2V9XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiMnhsOnRleHQtMnhsIGxnOnRleHQtMnhsIHRleHQtbWQgYmxvY2sgcC0yIG0tYXV0byB0ZXh0LWNlbnRlclwiXG4gICAgICAgICAgICAgICAgPnskXygnZmFjZUNvbGxlY3Rvci5pbml0aWF0aW5nQ2FtZXJhJyl9PC9zcGFuXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgIHsvaWZ9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvc2xvdD5cbiAgICAgIHsvaWZ9XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwicHgtNCBzbTpweC0wIG10LVsxZW1dXCJcbiAgICAgICAgaGlkZGVuPXshc2hvd0NhcHR1cmVCdXR0b24gfHwgaXNMaXZlbmVzc0VuYWJsZWQoKSAmJiAoaWRybmRMb2FkaW5nIHx8IGlkcm5kQ2xvc2VkIHx8IHdhaXRpbmdJZHJuZENhcHR1cmVFdmVudCl9XG4gICAgICA+XG4gICAgICAgIHsjaWYgISRjYXB0dXJlZH1cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBpZD1cImJyeS1jYy1jYXB0dXJlLWJ0blwiXG4gICAgICAgICAgICBkaXNhYmxlZD17KCEkZmFjZUZvdW5kICYmICRlbmFibGVGYWNlQXBpKSB8fCAoISRyZWFkeSAmJiAhJGVuYWJsZUZhY2VBcGkpfVxuICAgICAgICAgICAgaGlkZGVuPXshc2hvd0NhcHR1cmVCdXR0b259XG4gICAgICAgICAgICBjbGFzcz1cImNlLWR1aS1idG4gY2UtZHVpLWJ0bi1ibG9jayBjZS1kdWktYnRuLXByaW1hcnkgdGV4dC14bFwiXG4gICAgICAgICAgICBvbjpjbGljaz17KCkgPT4gY2FwdHVyZSgpfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHsjaWYgJGlzTG9hZGluZ31cbiAgICAgICAgICAgICAgVGFrZSBwaWN0dXJlXG4gICAgICAgICAgICB7OmVsc2V9XG4gICAgICAgICAgICAgIHskXygnZmFjZUNvbGxlY3Rvci50YWtlUGljdHVyZScpfVxuICAgICAgICAgICAgey9pZn1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgezplbHNlfVxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjZS1kdWktYnRuLWdyb3VwIGZsZXhcIj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgb246Y2xpY2s9eygpID0+IHNhdmUoKX1cbiAgICAgICAgICAgICAgZGlzYWJsZWQ9eyRqdXN0aWZpY2F0aW9uLmxlbmd0aCA9PT0gMH1cbiAgICAgICAgICAgICAgY2xhc3M9XCJjZS1kdWktYnRuIGNlLWR1aS1idG4tcHJpbWFyeSBjZS1kdWktYnRuLWJsb2NrIGZsZXgtc2hyaW5rXCI+eyRfKCdmYWNlQ29sbGVjdG9yLmZpbmlzaCcpfTwvYnV0dG9uXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIGlkPVwiYnJ5LWNjLXJldGFrZS1idXR0b25cIlxuICAgICAgICAgICAgICBjbGFzcz1cImNlLWR1aS1idG4gY2UtZHVpLWJ0bi1ibG9jayBjZS1kdWktYnRuLW91dGxpbmUgZmxleC1zaHJpbmtcIlxuICAgICAgICAgICAgICBvbjpjbGljaz17KCkgPT4gcmV0YWtlKCl9PnskXygnZmFjZUNvbGxlY3Rvci5yZXRha2VQaG90bycpfTwvYnV0dG9uXG4gICAgICAgICAgICA+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIHsvaWZ9XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIHsjaWYgKCFpZHJuZENsb3NlZCB8fCAkY2FwdHVyZWQpICYmIHNob3dVbmNvbmZvcm1pdGllc31cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImdyaWQtY29scy0xIGdyaWQtcm93cy0yIHNtOmdyaWQtY29scy0yIHNtOmdyaWQtcm93cy0xIGdhcC1bLjVlbV0geyEkc2hvd0ZhY2VXaGlsZVZhbGlkYXRpbmcgJiZcbiAgICAgICR1bmNvbmZvcm1pdGllc1N0b3JlLmlzTG9hZGluZ1xuICAgICAgICA/ICdhYnNvbHV0ZSAtdHJhbnNsYXRlLXktMS8yIC10cmFuc2xhdGUteC0xLzIgdG9wLTEvMiBsZWZ0LTEvMiBvdmVyZmxvdy12aXNpYmxlJ1xuICAgICAgICA6ICdncmlkIG0tWzFlbV0gb3ZlcmZsb3ctaGlkZGVuJ31cIlxuICAgID5cbiAgICAgIDxpbWdcbiAgICAgICAgY2xhc3M9XCJtLWF1dG8gY29sLXN0YXJ0LTEgY29sLWVuZC0xIG1heC1oLVsyMy4yZW1dXCJcbiAgICAgICAgc3JjPXskZGF0YVR5cGVQcmVmaXggKyAnLCcgKyAkaW1hZ2V9XG4gICAgICAgIGhpZGRlbj17ISRjYXB0dXJlZCB8fCAoISRzaG93RmFjZVdoaWxlVmFsaWRhdGluZyAmJiAkdW5jb25mb3JtaXRpZXNTdG9yZS5pc0xvYWRpbmcpfVxuICAgICAgICBhbHQ9XCJcIlxuICAgICAgLz5cbiAgICAgIHsjaWYgISRjYXB0dXJlZH1cbiAgICAgICAgPGRpdiBjbGFzcz1cIlwiIC8+XG4gICAgICB7OmVsc2UgaWYgJHVuY29uZm9ybWl0aWVzU3RvcmUuaXNMb2FkaW5nfVxuICAgICAgICA8ZGl2IGNsYXNzPVwibWluLXctWzIwMHB4XVwiPlxuICAgICAgICAgIDxoMSBjbGFzcz1cImlubGluZS1ibG9jayB0ZXh0LTN4bCBmb250LWJvbGQgcGItWzFlbV0gdHJhbnNpdGlvbi1vcGFjaXR5XCI+eyRfKCdmYWNlQ29sbGVjdG9yLnZhbGlkYXRpbmcnKX08L2gxPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtbC02IGlubGluZS1ibG9jayBkb3QtdHlwaW5nXCIgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICB7OmVsc2UgaWYgJHJlcXVlc3RSZXN1bHQgIT09IHJlcXVlc3RSZXN1bHRFbnVtLk9LfVxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBqdXN0aWZ5LWJldHdlZW5cIj5cbiAgICAgICAgICB7I2lmICRyZXF1ZXN0UmVzdWx0ID09PSByZXF1ZXN0UmVzdWx0RW51bS5MSVZFTkVTU19ERVRFQ1RJT05fRkFJTFVSRSB8fCAkcmVxdWVzdFJlc3VsdCA9PT0gcmVxdWVzdFJlc3VsdEVudW0uVU5LTk9XTl9MSVZFTkVTU19FUlJPUn1cbiAgICAgICAgICAgIDxoMSBjbGFzcz1cInRleHQtM3hsIGZvbnQtYm9sZCBwYi1bMWVtXSB0cmFuc2l0aW9uLW9wYWNpdHkgdGV4dC1lcnJvclwiPlxuICAgICAgICAgICAgICB7JF8oJ2xpdmVuZXNzLmVycm9yLmVycm9yJyl9OiB7JF8obGl2ZW5lc3NFcnJvcil9LlxuICAgICAgICAgICAgPC9oMT5cbiAgICAgICAgICB7OmVsc2UgaWYgJHJlcXVlc3RSZXN1bHQgPT09IHJlcXVlc3RSZXN1bHRFbnVtLkxPV19MSVZFTkVTU19TQ09SRX1cbiAgICAgICAgICAgIDxoMSBjbGFzcz1cInRleHQtM3hsIGZvbnQtYm9sZCBwYi1bMWVtXSB0cmFuc2l0aW9uLW9wYWNpdHkgdGV4dC1lcnJvclwiPlxuICAgICAgICAgICAgICB7JF8oJ2xpdmVuZXNzLmVycm9yLmVycm9yJyl9OiB7JF8oJ2ZhY2VDb2xsZWN0b3IudW5hbGl2ZUNhcHR1cmUnKX1cbiAgICAgICAgICAgIDwvaDE+XG4gICAgICAgICAgezplbHNlIGlmICRyZXF1ZXN0UmVzdWx0ID09PSByZXF1ZXN0UmVzdWx0RW51bS5URU1QTEFURV9FWFRSQUNUSU9OX0VSUk9SIHx8ICRyZXF1ZXN0UmVzdWx0ID09PSByZXF1ZXN0UmVzdWx0RW51bS5VTktOT1dOX1RFTVBMQVRFX0VYVFJBQ1RJT05fRVJST1J9XG4gICAgICAgICAgICA8aDEgY2xhc3M9XCJ0ZXh0LTN4bCBmb250LWJvbGQgcGItWzFlbV0gdHJhbnNpdGlvbi1vcGFjaXR5IHRleHQtZXJyb3JcIj5cbiAgICAgICAgICAgICAgeyRfKCdmYWNlQ29sbGVjdG9yLmxvd1F1YWxpdHlDYXB0dXJlJyl9XG4gICAgICAgICAgICA8L2gxPlxuICAgICAgICAgIHs6ZWxzZSBpZiAkcmVxdWVzdFJlc3VsdCA9PT0gcmVxdWVzdFJlc3VsdEVudW0uVU5BQkxFX1RPX0NPTU1VTklDQVRFX1dJVEhfVEVNUExBVEVfRVhUUkFDVElPTl9TRVJWSUNFfVxuICAgICAgICAgICAgPGgxIGNsYXNzPVwidGV4dC0zeGwgZm9udC1ib2xkIHBiLVsxZW1dIHRyYW5zaXRpb24tb3BhY2l0eSB0ZXh0LWVycm9yXCI+XG4gICAgICAgICAgICAgIHskXygnZmFjZUNvbGxlY3Rvci51bmFibGVUb0NvbXBsZXRlUmVxdWVzdCcpfVxuICAgICAgICAgICAgPC9oMT5cbiAgICAgICAgICB7OmVsc2V9XG4gICAgICAgICAgICA8aDEgY2xhc3M9XCJ0ZXh0LTN4bCBmb250LWJvbGQgcGItWzFlbV0gdHJhbnNpdGlvbi1vcGFjaXR5XCI+eyRfKCdmYWNlQ29sbGVjdG9yLmV2ZXJ5dGhpbmdPaycpfTwvaDE+XG4gICAgICAgICAgey9pZn1cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2UtZHVpLWJ0bi1ncm91cCBmbGV4XCI+XG4gICAgICAgICAgICA8YnV0dG9uIG9uOmNsaWNrPXsoKSA9PiBzYXZlKCl9IGRpc2FibGVkIGNsYXNzPVwiY2UtZHVpLWJ0biBjZS1kdWktYnRuLXByaW1hcnkgY2UtZHVpLWJ0bi1ibG9jayBmbGV4LXNocmlua1wiXG4gICAgICAgICAgICAgID57JF8oJ2ZhY2VDb2xsZWN0b3IuZmluaXNoJyl9PC9idXR0b25cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgaWQ9XCJicnktY2MtcmV0YWtlLWJ1dHRvblwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiY2UtZHVpLWJ0biBjZS1kdWktYnRuLWJsb2NrIGNlLWR1aS1idG4tb3V0bGluZSBmbGV4LXNocmlua1wiXG4gICAgICAgICAgICAgIG9uOmNsaWNrPXsoKSA9PiByZXRha2UoKX0+eyRfKCdmYWNlQ29sbGVjdG9yLnJldGFrZVBob3RvJyl9PC9idXR0b25cbiAgICAgICAgICAgID5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICB7OmVsc2UgaWYgISRzYXZlZH1cbiAgICAgICAgPGRpdj5cbiAgICAgICAgICA8aDEgY2xhc3M9XCJ0ZXh0LTN4bCBmb250LWJvbGQgcGItWzFlbV0gdHJhbnNpdGlvbi1vcGFjaXR5XCI+eyRfKCdmYWNlQ29sbGVjdG9yLnVuY29uZm9ybWl0aWVzJyl9PC9oMT5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXdyYXBcIj5cbiAgICAgICAgICAgIHsjZWFjaCAkdW5jb25mb3JtaXRpZXNTdG9yZS51bmNvbmZvcm1pdGllcyBhcyB1bmNvbmZvcm1pdHl9XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjZS1kdWktYmFkZ2UgY2UtZHVpLWJhZGdlLWxnIGgtWzJlbV0gY2UtZHVpLWJhZGdlLWVycm9yIHRleHQteGwgcGItWy4yNWVtXSBtLVsuNWVtXVwiPlxuICAgICAgICAgICAgICAgIHt1bmNvbmZvcm1pdHl9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgey9lYWNofVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjZS1kdWktZm9ybS1jb250cm9sIG10LVsyLjVlbV1cIj5cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNlLWR1aS1sYWJlbFwiIGZvcj1cImp1c3RpZmljYXRpb25cIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjZS1kdWktbGFiZWwtdGV4dCB0ZXh0LWJhc2VcIlxuICAgICAgICAgICAgICAgID57JF8oJ2ZhY2VDb2xsZWN0b3IucHJvdmlkZUFSZWFzb25Gb3JUaGVMb3dRdWFsaXR5Q2FwdHVyZScpfTwvc3BhblxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgPHRleHRhcmVhXG4gICAgICAgICAgICAgIGNvbnRlbnRlZGl0YWJsZVxuICAgICAgICAgICAgICBiaW5kOnZhbHVlPXskanVzdGlmaWNhdGlvbn1cbiAgICAgICAgICAgICAgaWQ9XCJqdXN0aWZpY2F0aW9uXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJjZS1kdWktdGV4dGFyZWEgY2UtZHVpLXRleHRhcmVhLWJvcmRlcmVkIGgtWzZlbV0gdGV4dC1iYXNlXCJcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9eyRfKCdmYWNlQ29sbGVjdG9yLnlvdXJKdXN0aWZpY2F0aW9uJyl9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY2UtZHVpLWxhYmVsXCIgZm9yPVwianVzdGlmaWNhdGlvblwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNlLWR1aS1sYWJlbC10ZXh0LWFsdCB0ZXh0LWJhc2VcIj4oeyRfKCdmYWNlQ29sbGVjdG9yLnRoaXNJbmZvcm1hdGlvbklzUmVxdWlyZWQnKX0pPC9zcGFuPlxuICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB7I2lmICRjYXB0dXJlZH1cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjZS1kdWktYnRuLWdyb3VwIGZsZXhcIj5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIG9uOmNsaWNrPXsoKSA9PiBzYXZlKCl9XG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ9eyRqdXN0aWZpY2F0aW9uLmxlbmd0aCA9PT0gMH1cbiAgICAgICAgICAgICAgICBjbGFzcz1cImNlLWR1aS1idG4gY2UtZHVpLWJ0bi1wcmltYXJ5IGNlLWR1aS1idG4tYmxvY2sgZmxleC1zaHJpbmsgdGV4dC1iYXNlXCJcbiAgICAgICAgICAgICAgICA+eyRfKCdmYWNlQ29sbGVjdG9yLmZpbmlzaCcpfTwvYnV0dG9uXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGlkPVwiYnJ5LWNjLXJldGFrZS1idXR0b25cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2UtZHVpLWJ0biBjZS1kdWktYnRuLWJsb2NrIGNlLWR1aS1idG4tb3V0bGluZSBmbGV4LXNocmluayB0ZXh0LWJhc2VcIlxuICAgICAgICAgICAgICAgIG9uOmNsaWNrPXsoKSA9PiByZXRha2UoKX0+eyRfKCdmYWNlQ29sbGVjdG9yLnJldGFrZVBob3RvJyl9PC9idXR0b25cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgey9pZn1cbiAgICAgICAgPC9kaXY+XG4gICAgICB7OmVsc2V9XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgPGgxIGNsYXNzPVwidGV4dC0zeGwgZm9udC1ib2xkIHBiLVsxZW1dIHRyYW5zaXRpb24tb3BhY2l0eVwiPnskXygnZmFjZUNvbGxlY3Rvci5jYXB0dXJlZCcpfTwvaDE+XG5cbiAgICAgICAgICB7I2lmICR1bmNvbmZvcm1pdGllc1N0b3JlLnVuY29uZm9ybWl0aWVzLmxlbmd0aCAhPT0gMH1cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNlLWR1aS1sYWJlbFwiIGZvcj1cImp1c3RpZmljYXRpb25cIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjZS1kdWktbGFiZWwtdGV4dCB0ZXh0LWJhc2VcIj57JF8oJ2ZhY2VDb2xsZWN0b3IuanVzdGlmaWNhdGlvbicpfTwvc3Bhbj5cbiAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICA8dGV4dGFyZWFcbiAgICAgICAgICAgICAgY29udGVudGVkaXRhYmxlXG4gICAgICAgICAgICAgIGJpbmQ6dmFsdWU9eyRqdXN0aWZpY2F0aW9ufVxuICAgICAgICAgICAgICBpZD1cImp1c3RpZmljYXRpb25cIlxuICAgICAgICAgICAgICBjbGFzcz1cImNlLWR1aS10ZXh0YXJlYSBjZS1kdWktdGV4dGFyZWEtYm9yZGVyZWQgdGV4dGFyZWEtZ2hvc3QgaC1bNmVtXSB3LWZ1bGwgdGV4dC1iYXNlXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgey9pZn1cbiAgICAgICAgICA8ZGl2IGNsYXNzOmNlLWR1aS1idG4tZ3JvdXA9eyEkZXhwb3J0QnV0dG9uRGlzYWJsZWR9IGNsYXNzPVwiZmxleCBmbGV4LXJvd1wiPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBpZD1cImJyeS1jYy1yZXRha2UtYnV0dG9uXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJjZS1kdWktYnRuIGNlLWR1aS1idG4tYmxvY2sgZmxleC1zaHJpbmsgdGV4dC1iYXNlXCJcbiAgICAgICAgICAgICAgb246Y2xpY2s9eygpID0+IHJldGFrZSgpfT57JF8oJ2ZhY2VDb2xsZWN0b3IucmV0YWtlUGhvdG8nKX08L2J1dHRvblxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgeyNpZiBnZXQoZW5hYmxlU3RyYXRlZ3kpLmZhY2VTdHJhdGVneSAhPT0gRmFjZUV4cG9ydFN0cmF0ZWd5LkRJU0FCTEVEfVxuICAgICAgICAgICAgICA8RXhwb3J0QnRuIGNzc0NsYXNzPVwiY2UtZHVpLWJ0bi1ibG9jayBmbGV4LXNocmlua1wiIC8+XG4gICAgICAgICAgICB7L2lmfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIHsvaWZ9XG4gICAgICA8IS0tIDxoMSBoaWRkZW49eyEkY2FwdHVyZWR9IGNsYXNzPVwidGV4dC0zeGwgZm9udC1ib2xkIHBiLTQgdHJhbnNpdGlvbi1hbGxcIj5FeGNlbGVudGUhPC9oMT4gLS0+XG4gICAgPC9kaXY+XG4gIHs6ZWxzZSBpZiAkY2FtZXJhU3RhdHVzU3RvcmUgIT09IENhbWVyYVN0YXR1c0VudW0uT0t9XG4gICAgPENhbWVyYVN0YXR1c1xuICAgICAgaGFuZGxlcj17YXN5bmMgKCkgPT4ge1xuICAgICAgICBhd2FpdCBvcGVuQ2FtZXJhKCk7XG4gICAgICB9fVxuICAgIC8+XG4gIHsvaWZ9XG48L2Rpdj5cbiJdLCJuYW1lcyI6WyJpbnNlcnRfZGV2IiwidGFyZ2V0IiwiaWRsaXZlX2ZhY2VfY2FwdHVyZSIsImFuY2hvciIsInZpZGVvXzEiLCJjdHgiLCJ0X3ZhbHVlIiwic3BhbiIsImRpcnR5Iiwic2V0X2RhdGFfZGV2IiwidCIsImNyZWF0ZV9pZl9ibG9ja18xOCIsImxvYWRpbmdHaWYiLCJhdHRyX2RldiIsImltZyIsImltZ19zcmNfdmFsdWUiLCJzbG90IiwiYXBwZW5kX2RldiIsImRpdiIsImNyZWF0ZV9pZl9ibG9ja18xNiIsInQwX3ZhbHVlIiwidDJfdmFsdWUiLCJidXR0b24wIiwiYnV0dG9uMSIsInQwIiwidDIiLCJjcmVhdGVfaWZfYmxvY2tfMTQiLCJidXR0b24iLCJidXR0b25fZGlzYWJsZWRfdmFsdWUiLCJyZXF1ZXN0UmVzdWx0RW51bSIsImltZ19oaWRkZW5fdmFsdWUiLCJjdXJyZW50IiwidDNfdmFsdWUiLCJzaG93X2lmIiwiZ2V0IiwiZW5hYmxlU3RyYXRlZ3kiLCJGYWNlRXhwb3J0U3RyYXRlZ3kiLCJpZl9ibG9jazAiLCJjcmVhdGVfaWZfYmxvY2tfMTEiLCJkaXYxIiwiaDEiLCJkaXYwIiwidDMiLCJ0N192YWx1ZSIsImVhY2hfdmFsdWUiLCJpIiwiY3JlYXRlX2lmX2Jsb2NrXzkiLCJ0ZXh0YXJlYSIsInRleHRhcmVhX3BsYWNlaG9sZGVyX3ZhbHVlIiwiZGl2MiIsImxhYmVsMCIsInNwYW4wIiwibGFiZWwxIiwic3BhbjEiLCJ0NyIsInQxX3ZhbHVlIiwiY3JlYXRlX2lmX2Jsb2NrXzQiLCJjcmVhdGVfaWZfYmxvY2tfNSIsImNyZWF0ZV9pZl9ibG9ja182IiwiY3JlYXRlX2lmX2Jsb2NrXzciLCJ0MSIsImxhYmVsIiwiaXNMaXZlbmVzc0VuYWJsZWQiLCJzaG93X2lmXzEiLCJDYW1lcmFTdGF0dXNFbnVtIiwiY3JlYXRlX2lmX2Jsb2NrXzIwIiwiaWZfYmxvY2syIiwiY3JlYXRlX2lmX2Jsb2NrXzE5IiwiY3JlYXRlX2lmX2Jsb2NrXzEzIiwiZGl2MV9oaWRkZW5fdmFsdWUiLCJkaXY0IiwiZGl2MyIsImNhbnZhczAiLCJjYW52YXMxIiwiY2FudmFzMiIsImRyYXdWaWRlb09uQ2FudmFzIiwidmlkZW8iLCJkaXNwbGF5Q2FudmFzIiwiaXNTYW1lUHJvcG9ydGlvbiIsImRldGVjdGlvbnNDYW52YXMiLCJlbmNsb3NpbmdEaXYiLCJpc0NvdW50aW5nRG93biIsInVuaXF1ZSIsImxvYWRlZEZhY2VBcGlBbmRXZWlnaHRzIiwiZW5hYmxlTWludXRpYWUiLCIkJHByb3BzIiwidmlkZW9EaW1lbnNpb25zIiwibm9UYWJzIiwid2VpZ2h0c1BhdGgiLCJldmFsdWF0ZVBob3RvIiwic2hvd0NhcHR1cmVCdXR0b24iLCJzaG93VW5jb25mb3JtaXRpZXMiLCJ2aWRlb0ZpbHRlciIsInN0YXJ0RmFjZUFwaSIsIndyaXRhYmxlIiwiZGF0YVR5cGVQcmVmaXgiLCJ3aWRnZXRJbnN0YW5jZSIsIm1hc2tDYW52YXMiLCJjYXB0dXJpbmciLCJpbml0aWFsaXplZCIsImlkcm5kTG9hZGluZyIsImlkcm5kQ2xvc2VkIiwid2FpdGluZ0lkcm5kQ2FwdHVyZUV2ZW50IiwiaW50ZXJ2YWxJZCIsImxpdmVuZXNzRXJyb3IiLCJmYWNlYXBpQ291bnRlciIsImZhY2VhcGlGcmFtZVJhdGUiLCJjb3VudERvd25DYXB0dXJlIiwicmlnaHRPcmllbnRhdGlvbiIsImNvdW50RG93bkZpbmlzaFRpbWUiLCJkaXNhYmxlQ291bnREb3duIiwiZmFjZU5vdFZhbGlkYXRlZCIsImZhY2VWYWxpZGF0aW9uQWxlcnQiLCJ0b2FzdCIsIlN3YWwiLCJvbk1vdW50IiwibG9nIiwic2V0X3N0b3JlX3ZhbHVlIiwicmVhZHkiLCIkcmVhZHkiLCJmYWNlRm91bmQiLCIkZmFjZUZvdW5kIiwiY2FwdHVyZWQiLCIkY2FwdHVyZWQiLCIkZmFjaW5nTW9kZSIsIkZhY2luZ01vZGVFbnVtIiwicmVnaXN0ZXJJZHJuZExpc3RlbmVycyIsIiRlbmFibGVGYWNlQXBpIiwibG9hZEZhY2VBcGlBbmRXZWlnaHRzIiwib3BlbkNhbWVyYSIsImRyYXdPdmFsIiwib3ZhbEhlaWdodCIsIm92YWxXaWR0aCIsIm92YWxYIiwiJHZpZGVvU3RvcmUiLCJvdmFsWSIsIiRvdmFsRGltZW5zaW9ucyIsInByaW1hcnlUaGVtZSIsInN1Y2Nlc3NUaGVtZSIsInRpbWVSZW1haW5pbmciLCJjbGlwUGF0aCIsImV2ZW50IiwidmlkZW9fIiwiJGlkcm5kVmlkZW9TdG9yZURpbWVuc2lvbnMiLCIkJGludmFsaWRhdGUiLCJsb29wIiwibG9vcENhbGxlciIsImUiLCIkY2FtZXJhU3RhdHVzU3RvcmUiLCJpZHJuZEluaXRpYWxpemVkIiwiJGlkcm5kSW5pdGlhbGl6ZWQiLCIkc2VsZWN0ZWRUYWIiLCJUYWJFbnVtIiwib3BlbkNhbWVyYUxpdmVuZXNzIiwiZW5jcnlwdGVkRmlsZSIsInBob3RvIiwiYmxvYiIsIiRibG9iIiwiJHJlcXVlc3RSZXN1bHQiLCIkdW5jb25mb3JtaXRpZXNTdG9yZSIsImJsb2JUb0Jhc2U2NCIsIiRkYXRhVHlwZVByZWZpeCIsIiRpbWFnZSIsIiRvcmlnaW5hbENhcHR1cmUiLCIkY2FwdHVyZUxpdmVuZXNzSWRybmRFbmRwb2ludCIsImJvZHlQYXJ0cyIsImljYW9XYXJuaW5ncyIsImdldEZhY2VVbmNvbmZvcm1pdGllcyIsImVycm9yQ29kZSIsImlkcm5kRXJyb3JUb2kxOG5LZXkiLCJBeGlvc0Vycm9yIiwiZmFjZSIsImJwIiwiJF8iLCJ2YWxpZGF0ZUxpdmVuZXNzIiwiaW1hZ2UiLCJ0cmFuc2xhdGVBbmRTZXRVbmNvbmZvcm1pdGllcyIsImxpdmVuZXNzUmVzdWx0IiwiZ2V0TGl2ZW5lc3NJZHJuZCIsImRldmljZSIsIndpZHRoIiwiaGVpZ2h0IiwidiIsInZpZGVvU3RvcmUiLCJpc01vYmlsZSIsInNlbGVjdERldmljZSIsInBsYXkiLCIkc3RhcnRGYWNlQXBpIiwiY2FwdHVyZSIsInVuTG9ja1NjcmVlbiIsImNhbnZhcyIsIiRib3hTdG9yZSIsInNhdmUiLCIkanVzdGlmaWNhdGlvbiIsInNhdmVkIiwiJHNhdmVkIiwiYmFzZTY0IiwicmV0YWtlIiwib3JpZ2luYWxDYXB0dXJlIiwidW5jb25mb3JtaXRpZXNTdG9yZSIsImZhY2VWYWxpZGF0aW9ucyIsImZhY2VWYWxpZGF0aW9uc1N0b3JlIiwicmVzdWx0IiwidGl0bGUiLCJpY29uIiwiJHNob3dMaXZlbmVzc1Jlc3VsdFRvYXN0IiwiZW51bWVyYXRlRGV2aWNlcyIsImRldmljZUlkIiwid2lkdGhDYW1lcmEiLCJoZWlnaHRDYW1lcmEiLCJhc3BlY3RSYXRpb0NhbWVyYSIsImZhY2luZyIsInRvdWNoUG9pbnRzIiwiZ2V0VmlkZW9EaW1lbnNpb25zIiwiJHNlbGVjdGVkVmlkZW9EZXZpY2VJZCIsIiRjYW1lcmFEZXZpY2VzU3RvcmUiLCJlcnJvciIsImNvbnN0cmFpbnRFcnJvciIsImlzT2JqZWN0IiwidW5zdWJzY3JpYmVWaWRlb0RpbWVuc2lvbnMiLCJzdG9yZU9iaiIsInVuc3Vic2NyaWJlRmFjZVZhbGlkYXRpb25zIiwibmV3VmFsdWUiLCJuZXdGYWNlVmFsaWRhdGlvbkFsZXJ0IiwiJGF1dG9tYXRpY0NhcHR1cmUiLCJjb3VudGRvd25JbnRlcnZhbENhbGxiYWNrIiwibm93IiwidW5zdWJzY3JpYmVDYXB0dXJlZFN0YXRlIiwidW5zdWJzY3JpYmVDbGVhclZpZGVvU3JjIiwiY2xlYXJlZFZpZGVvU3JjT2JqZWN0Iiwic2VsZWN0ZWRUYWIiLCJ0YWIiLCJ1bnN1YnNjcmliZVNlbGVjdGVkU3RyZWFtIiwic2VsZWN0ZWRWaWRlb0RldmljZUlkIiwibmV3RGV2aWNlSWQiLCJ2aWRlb0hlaWdodCIsInZpZGVvV2lkdGgiLCJzdHJlYW0iLCJzZXR1cFN0cmVhbSIsIl9zdHJlYW0iLCIkX3N0cmVhbSIsIiRjbGVhcmVkVmlkZW9TcmNPYmplY3QiLCJzaHV0T2ZmQ2FtZXJhIiwidW5zdWJzY3JpYmVDaGFuZ2VUYWIiLCJ1bnN1YnNjcmliZUZhY2VBcGkiLCJmYWNlYXBpTG9vcCIsInVuc3Vic2NyaWJlU3dhcENhbWVyYSIsInN3YXBDYW1lcmEiLCJuZXdEZXZpY2UiLCJ1bnN1YnNjcmliZU9yaWVudGF0aW9uIiwib3JpZW50YXRpb25EYXRhIiwiZGF0YSIsImRldGVjdGlvbnNSZXN1bHQiLCJvcHRpb25zIiwiZ2V0RmFjZURldGVjdG9yT3B0aW9ucyIsImZhY2VhcGkiLCJkZXRlY3Rpb25zUmVzdWx0MiIsImRyYXdEZXRlY3Rpb25zSW5GYWNlIiwic2V0RmFjZU5vdEZvdW5kVGltZW91dCIsInJldGFrZVBob3RvIiwibnYiLCIkcmV0YWtlUGhvdG8iLCJ1bnN1YnNjcmliZVJlYWR5Q2FtZXJhRXZlbnRFbWl0dGVyIiwib25EZXN0cm95IiwiJCR2YWx1ZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUF3NUJVLE1BQUFBLEVBTUNDLEdBQUFDLEdBQUFDLENBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFJRCxNQUFBSCxFQVlDQyxHQUFBRyxHQUFBRCxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7VUFKZUUsRUFBSSxDQUFBO0FBQUEsVUFBQSxFQUFBLE1BQUEsR0FBQTtBQUFBLFVBQUE7QUFBQSxVQUFBO0FBQUEsVUFBQTtBQUFBLFFBQUE7QUFBQTs7Ozs7Ozs7Ozs7Ozs7OztT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