bry-biometric-collector 2.2.21-RC06 → 2.2.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/DocumentCollector_1f5cf5e8_2.2.22.js +1023 -0
- package/dist/FaceCollector_657bc65e_2.2.22.js +2000 -0
- package/dist/TakePictureBtn_98c2ad5f_2.2.22.js +848 -0
- package/dist/bry-biometric-collector-main.js +2 -3
- package/dist/{en-us_d35c0560_2.2.21-RC06.js → en-us_901680c0_2.2.22.js} +14 -20
- package/dist/{es-cl_735652e7_2.2.21-RC06.js → es-cl_1fe1aaa9_2.2.22.js} +2 -8
- package/dist/face_api_0e3ce8c8_2.2.22.js +36288 -0
- package/dist/fingersApi_2ff95966_2.2.22.js +131 -0
- package/dist/index-no-detector_4b302e78_2.2.22.js +10414 -0
- package/dist/index.js +2 -3
- package/dist/main_140d65a3_2.2.22.js +23866 -0
- package/dist/{pt-br_cf90e78b_2.2.21-RC06.js → pt-br_bef1149f_2.2.22.js} +8 -14
- package/dist/style.css +1 -1
- package/package.json +1 -1
- package/dist/DocumentCollector_ae7cb797_2.2.21-RC06.js +0 -1351
- package/dist/FaceCollector_82a93bfd_2.2.21-RC06.js +0 -2598
- package/dist/TakePictureBtn_7ca4cd76_2.2.21-RC06.js +0 -1066
- package/dist/face_api_0e3ce8c8_2.2.21-RC06.js +0 -36289
- package/dist/fingersApi_bca0364b_2.2.21-RC06.js +0 -132
- package/dist/index-no-detector_4b302e78_2.2.21-RC06.js +0 -10415
- package/dist/main_15d26f9a_2.2.21-RC06.js +0 -25644
@@ -1,2598 +0,0 @@
|
|
1
|
-
import { S as Mn, q as Un, r as $i, t as Wn, w as U, x as N, y as L, z as je, B as F, $ as Et, C as Vn, D as De, E as _, G as K, H as ce, I as m, J as v, K as f, L as Re, M as q, N as W, O as h, P as be, Q as J, R as Mt, T as mt, U as yi, V as ht, W as Le, X as Ei, Y as Fe, Z as $e, _ as Ut, a0 as ni, a1 as Ne, a2 as ki, a3 as Wt, a4 as Vt, a5 as Be, a6 as ge, a7 as Me, a8 as et, a9 as Ri, aa as Ti, ab as Si, ac as oi, ad as bt, ae as gt, af as Kt, ag as Oi, ah as _t, ai, aj as si, ak as vt, al as Ai, am as Ii, an as Bi, ao as wn, ap as pn, aq as Cn, ar as yn, as as li, at as Y, j as Qt, au as ri, av as jt, aw as Ht, A as ci, ax as wt, ay as qt, az as En, aA as Di, aB as ui, d as Jt, aC as zt, aD as kn, aE as fi, aF as Rn, aG as Tn, aH as Sn, aI as tt, aJ as On, aK as Pi, aL as Li, aM as Mo, aN as Kn, aO as Fi, aP as jn, aQ as Hn, aR as qn, aS as An, aT as In, aU as Bn, aV as Dn, aW as mi, aX as Uo, aY as V, aZ as Z, a_ as Ct, a$ as ae, b0 as yt, b1 as hi, b2 as pt, b3 as Xt, b4 as bi, b5 as kt, b6 as Rt, b7 as Tt, b8 as Yt, b9 as Pn, ba as Ln, bb as Wo, bc as di } from "./main_15d26f9a_2.2.21-RC06.js";
|
2
|
-
import { C as Q, c as re, a as Jn, b as zn, T as Xn } from "./TakePictureBtn_7ca4cd76_2.2.21-RC06.js";
|
3
|
-
const Fn = "src/lib/faceTab/buttons/capture/autoCaptureBtn/AutoCaptureBtn.svelte";
|
4
|
-
function Qn(n) {
|
5
|
-
let e, i, s = (
|
6
|
-
/*$_*/
|
7
|
-
n[0]("buttons.startCapture") + ""
|
8
|
-
), a, l, o;
|
9
|
-
const r = {
|
10
|
-
c: function() {
|
11
|
-
e = _("div"), i = _("button"), a = K(s), this.c = ce, m(i, "class", De() ? "ce-dui-btn ce-dui-btn-primary text-base text-xl pb-[2px] absolute z-20 bottom-10" : "ce-dui-btn ce-dui-btn-primary text-base text-xl pb-[2px] absolute z-20 bottom-2"), v(i, Fn, 11, 2, 328), m(e, "class", "flex justify-center items-center"), v(e, Fn, 10, 0, 279);
|
12
|
-
},
|
13
|
-
l: function(b) {
|
14
|
-
throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option");
|
15
|
-
},
|
16
|
-
m: function(b, d) {
|
17
|
-
U(b, e, d), f(e, i), f(i, a), l || (o = Re(
|
18
|
-
i,
|
19
|
-
"click",
|
20
|
-
/*click_handler*/
|
21
|
-
n[2],
|
22
|
-
!1,
|
23
|
-
!1,
|
24
|
-
!1,
|
25
|
-
!1
|
26
|
-
), l = !0);
|
27
|
-
},
|
28
|
-
p: function(b, [d]) {
|
29
|
-
d & /*$_*/
|
30
|
-
1 && s !== (s = /*$_*/
|
31
|
-
b[0]("buttons.startCapture") + "") && q(a, s);
|
32
|
-
},
|
33
|
-
i: ce,
|
34
|
-
o: ce,
|
35
|
-
d: function(b) {
|
36
|
-
b && W(e), l = !1, o();
|
37
|
-
}
|
38
|
-
};
|
39
|
-
return N("SvelteRegisterBlock", {
|
40
|
-
block: r,
|
41
|
-
id: Qn.name,
|
42
|
-
type: "component",
|
43
|
-
source: "",
|
44
|
-
ctx: n
|
45
|
-
}), r;
|
46
|
-
}
|
47
|
-
function Vo(n, e, i) {
|
48
|
-
let s, a;
|
49
|
-
L(je, "automaticCapture"), F(n, je, (d) => i(3, s = d)), L(Et, "_"), F(n, Et, (d) => i(0, a = d));
|
50
|
-
let { $$slots: l = {}, $$scope: o } = e;
|
51
|
-
Vn("start-auto-capture-btn", l, []);
|
52
|
-
function r() {
|
53
|
-
h(je, s = !0, s);
|
54
|
-
}
|
55
|
-
const u = [];
|
56
|
-
Object.keys(e).forEach((d) => {
|
57
|
-
!~u.indexOf(d) && d.slice(0, 2) !== "$$" && d !== "slot" && console.warn(`<start-auto-capture-btn> was created with unknown prop '${d}'`);
|
58
|
-
});
|
59
|
-
const b = () => r();
|
60
|
-
return n.$capture_state = () => ({
|
61
|
-
automaticCapture: je,
|
62
|
-
_: Et,
|
63
|
-
isMobile: De,
|
64
|
-
handleAutoCapture: r,
|
65
|
-
$automaticCapture: s,
|
66
|
-
$_: a
|
67
|
-
}), [a, r, b];
|
68
|
-
}
|
69
|
-
class en extends Mn {
|
70
|
-
constructor(e) {
|
71
|
-
super(), Un(
|
72
|
-
this,
|
73
|
-
{
|
74
|
-
target: this.shadowRoot,
|
75
|
-
props: Wn(this.attributes),
|
76
|
-
customElement: !0
|
77
|
-
},
|
78
|
-
Vo,
|
79
|
-
Qn,
|
80
|
-
$i,
|
81
|
-
{},
|
82
|
-
null
|
83
|
-
), e && e.target && U(e.target, this, e.anchor);
|
84
|
-
}
|
85
|
-
}
|
86
|
-
customElements.define("start-auto-capture-btn", en);
|
87
|
-
const { console: _e } = Uo, w = "src/lib/faceTab/FaceCollector.svelte";
|
88
|
-
function Nn(n, e, i) {
|
89
|
-
const s = n.slice();
|
90
|
-
return s[123] = e[i], s;
|
91
|
-
}
|
92
|
-
function Yn(n) {
|
93
|
-
let e;
|
94
|
-
const i = {
|
95
|
-
c: function() {
|
96
|
-
e = _("idlive-face-capture"), e.hidden = !0, Xt(e, "mask_hidden", ""), Xt(e, "auto_capture_disabled", ""), Xt(e, "auto_close_disabled", ""), Xt(
|
97
|
-
e,
|
98
|
-
"device_id",
|
99
|
-
/*$selectedVideoDeviceId*/
|
100
|
-
n[22]
|
101
|
-
), v(e, w, 974, 10, 39246);
|
102
|
-
},
|
103
|
-
m: function(a, l) {
|
104
|
-
U(a, e, l), n[52](e);
|
105
|
-
},
|
106
|
-
p: function(a, l) {
|
107
|
-
l[0] & /*$selectedVideoDeviceId*/
|
108
|
-
4194304 && Xt(
|
109
|
-
e,
|
110
|
-
"device_id",
|
111
|
-
/*$selectedVideoDeviceId*/
|
112
|
-
a[22]
|
113
|
-
);
|
114
|
-
},
|
115
|
-
d: function(a) {
|
116
|
-
a && W(e), n[52](null);
|
117
|
-
}
|
118
|
-
};
|
119
|
-
return N("SvelteRegisterBlock", {
|
120
|
-
block: i,
|
121
|
-
id: Yn.name,
|
122
|
-
type: "if",
|
123
|
-
source: "(974:8) {#if isLivenessEnabled()}",
|
124
|
-
ctx: n
|
125
|
-
}), i;
|
126
|
-
}
|
127
|
-
function Mi(n) {
|
128
|
-
let e, i, s;
|
129
|
-
const a = {
|
130
|
-
c: function() {
|
131
|
-
e = _("video"), m(e, "id", "bry-cc-camera-video-tag"), m(e, "class", "absolute -z-10"), e.playsInline = !0, e.muted = !0, e.autoplay = !0, v(e, w, 985, 10, 39634);
|
132
|
-
},
|
133
|
-
m: function(o, r) {
|
134
|
-
U(o, e, r), n[53](e), i || (s = [
|
135
|
-
Re(
|
136
|
-
e,
|
137
|
-
"canplay",
|
138
|
-
/*canplay_handler*/
|
139
|
-
n[54],
|
140
|
-
!1,
|
141
|
-
!1,
|
142
|
-
!1,
|
143
|
-
!1
|
144
|
-
),
|
145
|
-
Re(
|
146
|
-
e,
|
147
|
-
"play",
|
148
|
-
/*play*/
|
149
|
-
n[8],
|
150
|
-
{ once: !0 },
|
151
|
-
!1,
|
152
|
-
!1,
|
153
|
-
!1
|
154
|
-
)
|
155
|
-
], i = !0);
|
156
|
-
},
|
157
|
-
p: ce,
|
158
|
-
d: function(o) {
|
159
|
-
o && W(e), n[53](null), i = !1, bi(s);
|
160
|
-
}
|
161
|
-
};
|
162
|
-
return N("SvelteRegisterBlock", {
|
163
|
-
block: a,
|
164
|
-
id: Mi.name,
|
165
|
-
type: "key",
|
166
|
-
source: "(985:8) {#key unique}",
|
167
|
-
ctx: n
|
168
|
-
}), a;
|
169
|
-
}
|
170
|
-
function Ui(n) {
|
171
|
-
let e, i;
|
172
|
-
e = new jn({ $$inline: !0 });
|
173
|
-
const s = {
|
174
|
-
c: function() {
|
175
|
-
kt(e.$$.fragment);
|
176
|
-
},
|
177
|
-
m: function(l, o) {
|
178
|
-
Rt(e, l, o), i = !0;
|
179
|
-
},
|
180
|
-
i: function(l) {
|
181
|
-
i || (Z(e.$$.fragment, l), i = !0);
|
182
|
-
},
|
183
|
-
o: function(l) {
|
184
|
-
ae(e.$$.fragment, l), i = !1;
|
185
|
-
},
|
186
|
-
d: function(l) {
|
187
|
-
Tt(e, l);
|
188
|
-
}
|
189
|
-
};
|
190
|
-
return N("SvelteRegisterBlock", {
|
191
|
-
block: s,
|
192
|
-
id: Ui.name,
|
193
|
-
type: "if",
|
194
|
-
source: "(1000:8) {#if showConfigButton && $ready}",
|
195
|
-
ctx: n
|
196
|
-
}), s;
|
197
|
-
}
|
198
|
-
function Wi(n) {
|
199
|
-
let e, i;
|
200
|
-
e = new zn({ $$inline: !0 });
|
201
|
-
const s = {
|
202
|
-
c: function() {
|
203
|
-
kt(e.$$.fragment);
|
204
|
-
},
|
205
|
-
m: function(l, o) {
|
206
|
-
Rt(e, l, o), i = !0;
|
207
|
-
},
|
208
|
-
i: function(l) {
|
209
|
-
i || (Z(e.$$.fragment, l), i = !0);
|
210
|
-
},
|
211
|
-
o: function(l) {
|
212
|
-
ae(e.$$.fragment, l), i = !1;
|
213
|
-
},
|
214
|
-
d: function(l) {
|
215
|
-
Tt(e, l);
|
216
|
-
}
|
217
|
-
};
|
218
|
-
return N("SvelteRegisterBlock", {
|
219
|
-
block: s,
|
220
|
-
id: Wi.name,
|
221
|
-
type: "if",
|
222
|
-
source: "(1003:8) {#if showCameraButton && $ready}",
|
223
|
-
ctx: n
|
224
|
-
}), s;
|
225
|
-
}
|
226
|
-
function Vi(n) {
|
227
|
-
let e, i;
|
228
|
-
e = new en({ $$inline: !0 });
|
229
|
-
const s = {
|
230
|
-
c: function() {
|
231
|
-
kt(e.$$.fragment);
|
232
|
-
},
|
233
|
-
m: function(l, o) {
|
234
|
-
Rt(e, l, o), i = !0;
|
235
|
-
},
|
236
|
-
i: function(l) {
|
237
|
-
i || (Z(e.$$.fragment, l), i = !0);
|
238
|
-
},
|
239
|
-
o: function(l) {
|
240
|
-
ae(e.$$.fragment, l), i = !1;
|
241
|
-
},
|
242
|
-
d: function(l) {
|
243
|
-
Tt(e, l);
|
244
|
-
}
|
245
|
-
};
|
246
|
-
return N("SvelteRegisterBlock", {
|
247
|
-
block: s,
|
248
|
-
id: Vi.name,
|
249
|
-
type: "if",
|
250
|
-
source: "(1006:8) {#if showAutoCaptureButton && !$automaticCapture && !showCaptureButton && $ready}",
|
251
|
-
ctx: n
|
252
|
-
}), s;
|
253
|
-
}
|
254
|
-
function Ki(n) {
|
255
|
-
let e, i;
|
256
|
-
e = new Xn({
|
257
|
-
props: {
|
258
|
-
disabled: !/*enableCaptureButton*/
|
259
|
-
n[14] && /*$enableFaceApi*/
|
260
|
-
n[34] || !/*$ready*/
|
261
|
-
n[35] && !/*$enableFaceApi*/
|
262
|
-
n[34],
|
263
|
-
hidden: (
|
264
|
-
/*$cameraStatusStore*/
|
265
|
-
n[21] !== Q.OK || J() && /*idrndLoading*/
|
266
|
-
(n[17] || /*idrndClosed*/
|
267
|
-
n[18] || /*waitingIdrndCaptureEvent*/
|
268
|
-
n[19])
|
269
|
-
),
|
270
|
-
handler: (
|
271
|
-
/*capture*/
|
272
|
-
n[41]
|
273
|
-
)
|
274
|
-
},
|
275
|
-
$$inline: !0
|
276
|
-
});
|
277
|
-
const s = {
|
278
|
-
c: function() {
|
279
|
-
kt(e.$$.fragment);
|
280
|
-
},
|
281
|
-
m: function(l, o) {
|
282
|
-
Rt(e, l, o), i = !0;
|
283
|
-
},
|
284
|
-
p: function(l, o) {
|
285
|
-
const r = {};
|
286
|
-
o[0] & /*enableCaptureButton*/
|
287
|
-
16384 | o[1] & /*$enableFaceApi, $ready*/
|
288
|
-
24 && (r.disabled = !/*enableCaptureButton*/
|
289
|
-
l[14] && /*$enableFaceApi*/
|
290
|
-
l[34] || !/*$ready*/
|
291
|
-
l[35] && !/*$enableFaceApi*/
|
292
|
-
l[34]), o[0] & /*$cameraStatusStore, idrndLoading, idrndClosed, waitingIdrndCaptureEvent*/
|
293
|
-
3014656 && (r.hidden = /*$cameraStatusStore*/
|
294
|
-
l[21] !== Q.OK || J() && /*idrndLoading*/
|
295
|
-
(l[17] || /*idrndClosed*/
|
296
|
-
l[18] || /*waitingIdrndCaptureEvent*/
|
297
|
-
l[19])), e.$set(r);
|
298
|
-
},
|
299
|
-
i: function(l) {
|
300
|
-
i || (Z(e.$$.fragment, l), i = !0);
|
301
|
-
},
|
302
|
-
o: function(l) {
|
303
|
-
ae(e.$$.fragment, l), i = !1;
|
304
|
-
},
|
305
|
-
d: function(l) {
|
306
|
-
Tt(e, l);
|
307
|
-
}
|
308
|
-
};
|
309
|
-
return N("SvelteRegisterBlock", {
|
310
|
-
block: s,
|
311
|
-
id: Ki.name,
|
312
|
-
type: "if",
|
313
|
-
source: "(1009:8) {#if showCaptureButton && $ready}",
|
314
|
-
ctx: n
|
315
|
-
}), s;
|
316
|
-
}
|
317
|
-
function ji(n) {
|
318
|
-
let e, i = (
|
319
|
-
/*$_*/
|
320
|
-
n[31]("faceCollector.stayStill") + ""
|
321
|
-
), s;
|
322
|
-
const a = {
|
323
|
-
c: function() {
|
324
|
-
e = _("span"), s = K(i), m(e, "class", "absolute left-1/2 -translate-x-1/2 ce-dui-badge ce-dui-badge-lg h-[2em] text-2xl xl:text-base w-[12.1em] " + (De() ? "top-[10%]" : "top-[3%]")), v(e, w, 1027, 10, 41338);
|
325
|
-
},
|
326
|
-
m: function(o, r) {
|
327
|
-
U(o, e, r), f(e, s);
|
328
|
-
},
|
329
|
-
p: function(o, r) {
|
330
|
-
r[1] & /*$_*/
|
331
|
-
1 && i !== (i = /*$_*/
|
332
|
-
o[31]("faceCollector.stayStill") + "") && q(s, i);
|
333
|
-
},
|
334
|
-
d: function(o) {
|
335
|
-
o && W(e);
|
336
|
-
}
|
337
|
-
};
|
338
|
-
return N("SvelteRegisterBlock", {
|
339
|
-
block: a,
|
340
|
-
id: ji.name,
|
341
|
-
type: "if",
|
342
|
-
source: "(1027:8) {#if isCountingDown}",
|
343
|
-
ctx: n
|
344
|
-
}), a;
|
345
|
-
}
|
346
|
-
function Hi(n) {
|
347
|
-
let e, i = (
|
348
|
-
/*$_*/
|
349
|
-
n[31](`${/*$faceValidationAlert*/
|
350
|
-
n[26]}`) + ""
|
351
|
-
), s;
|
352
|
-
const a = {
|
353
|
-
c: function() {
|
354
|
-
e = _("span"), s = K(i), m(e, "class", "absolute left-1/2 -translate-x-1/2 ce-dui-badge ce-dui-badge-lg h-[2em] text-2xl xl:text-base w-[12.1em] " + (De() ? "top-[10%]" : "top-[3%]")), v(e, w, 1034, 10, 41681);
|
355
|
-
},
|
356
|
-
m: function(o, r) {
|
357
|
-
U(o, e, r), f(e, s);
|
358
|
-
},
|
359
|
-
p: function(o, r) {
|
360
|
-
r[0] & /*$faceValidationAlert*/
|
361
|
-
67108864 | r[1] & /*$_*/
|
362
|
-
1 && i !== (i = /*$_*/
|
363
|
-
o[31](`${/*$faceValidationAlert*/
|
364
|
-
o[26]}`) + "") && q(s, i);
|
365
|
-
},
|
366
|
-
d: function(o) {
|
367
|
-
o && W(e);
|
368
|
-
}
|
369
|
-
};
|
370
|
-
return N("SvelteRegisterBlock", {
|
371
|
-
block: a,
|
372
|
-
id: Hi.name,
|
373
|
-
type: "if",
|
374
|
-
source: "(1034:8) {#if $enableFaceApi && !isCountingDown && $faceValidationAlert}",
|
375
|
-
ctx: n
|
376
|
-
}), a;
|
377
|
-
}
|
378
|
-
function qi(n) {
|
379
|
-
let e, i, s, a, l;
|
380
|
-
function o(d, c) {
|
381
|
-
return (
|
382
|
-
/*$isLoading*/
|
383
|
-
d[36] ? Zn : Gn
|
384
|
-
);
|
385
|
-
}
|
386
|
-
let r = o(n), u = r(n);
|
387
|
-
const b = {
|
388
|
-
c: function() {
|
389
|
-
e = _("slot"), i = _("div"), s = _("img"), l = V(), u.c(), Yt(s.src, a = mi) || m(s, "src", a), m(s, "alt", "loading gif"), m(s, "class", "m-auto h-[10em] lg:h-[12em]"), v(s, w, 1044, 12, 42179), m(i, "class", "translate-y-1/3 md:translate-y-1/4 xl:translate-y-1/2"), v(i, w, 1043, 10, 42099), m(e, "name", "loading-camera-gif"), m(e, "class", "block h-[17em] lg:h-[21.6em] xl:h-[30em]"), v(e, w, 1042, 8, 42007);
|
390
|
-
},
|
391
|
-
m: function(c, g) {
|
392
|
-
U(c, e, g), f(e, i), f(i, s), f(i, l), u.m(i, null);
|
393
|
-
},
|
394
|
-
p: function(c, g) {
|
395
|
-
r === (r = o(c)) && u ? u.p(c, g) : (u.d(1), u = r(c), u && (u.c(), u.m(i, null)));
|
396
|
-
},
|
397
|
-
d: function(c) {
|
398
|
-
c && W(e), u.d();
|
399
|
-
}
|
400
|
-
};
|
401
|
-
return N("SvelteRegisterBlock", {
|
402
|
-
block: b,
|
403
|
-
id: qi.name,
|
404
|
-
type: "if",
|
405
|
-
source: "(1042:6) {#if !isLivenessEnabled() && !$ready}",
|
406
|
-
ctx: n
|
407
|
-
}), b;
|
408
|
-
}
|
409
|
-
function Gn(n) {
|
410
|
-
let e, i = (
|
411
|
-
/*$_*/
|
412
|
-
n[31]("faceCollector.initiatingCamera") + ""
|
413
|
-
), s;
|
414
|
-
const a = {
|
415
|
-
c: function() {
|
416
|
-
e = _("span"), s = K(i), m(e, "class", "2xl:text-2xl lg:text-2xl text-md block p-2 m-auto text-center"), v(e, w, 1048, 14, 42436);
|
417
|
-
},
|
418
|
-
m: function(o, r) {
|
419
|
-
U(o, e, r), f(e, s);
|
420
|
-
},
|
421
|
-
p: function(o, r) {
|
422
|
-
r[1] & /*$_*/
|
423
|
-
1 && i !== (i = /*$_*/
|
424
|
-
o[31]("faceCollector.initiatingCamera") + "") && q(s, i);
|
425
|
-
},
|
426
|
-
d: function(o) {
|
427
|
-
o && W(e);
|
428
|
-
}
|
429
|
-
};
|
430
|
-
return N("SvelteRegisterBlock", {
|
431
|
-
block: a,
|
432
|
-
id: Gn.name,
|
433
|
-
type: "else",
|
434
|
-
source: "(1048:12) {:else}",
|
435
|
-
ctx: n
|
436
|
-
}), a;
|
437
|
-
}
|
438
|
-
function Zn(n) {
|
439
|
-
let e;
|
440
|
-
const i = {
|
441
|
-
c: function() {
|
442
|
-
e = _("span"), e.textContent = "Loading camera...", m(e, "class", "2xl:text-2xl lg:text-2xl text-md block p-2 m-auto text-center"), v(e, w, 1046, 14, 42301);
|
443
|
-
},
|
444
|
-
m: function(a, l) {
|
445
|
-
U(a, e, l);
|
446
|
-
},
|
447
|
-
p: ce,
|
448
|
-
d: function(a) {
|
449
|
-
a && W(e);
|
450
|
-
}
|
451
|
-
};
|
452
|
-
return N("SvelteRegisterBlock", {
|
453
|
-
block: i,
|
454
|
-
id: Zn.name,
|
455
|
-
type: "if",
|
456
|
-
source: "(1046:12) {#if $isLoading}",
|
457
|
-
ctx: n
|
458
|
-
}), i;
|
459
|
-
}
|
460
|
-
function Ji(n) {
|
461
|
-
let e, i, s, a, l;
|
462
|
-
function o(d, c) {
|
463
|
-
return (
|
464
|
-
/*$isLoading*/
|
465
|
-
d[36] ? $n : xn
|
466
|
-
);
|
467
|
-
}
|
468
|
-
let r = o(n), u = r(n);
|
469
|
-
const b = {
|
470
|
-
c: function() {
|
471
|
-
e = _("slot"), i = _("div"), s = _("img"), l = V(), u.c(), Yt(s.src, a = mi) || m(s, "src", a), m(s, "alt", "loading gif"), m(s, "class", "m-auto h-[10em] lg:h-[12em]"), v(s, w, 1058, 12, 42894), m(i, "class", "translate-y-1/3 md:translate-y-1/4 xl:translate-y-1/2"), v(i, w, 1057, 10, 42814), m(e, "name", "obtaining-photo-gif"), m(e, "class", "block h-[17em] lg:h-[21.6em] xl:h-[30em]"), v(e, w, 1056, 8, 42721);
|
472
|
-
},
|
473
|
-
m: function(c, g) {
|
474
|
-
U(c, e, g), f(e, i), f(i, s), f(i, l), u.m(i, null);
|
475
|
-
},
|
476
|
-
p: function(c, g) {
|
477
|
-
r === (r = o(c)) && u ? u.p(c, g) : (u.d(1), u = r(c), u && (u.c(), u.m(i, null)));
|
478
|
-
},
|
479
|
-
d: function(c) {
|
480
|
-
c && W(e), u.d();
|
481
|
-
}
|
482
|
-
};
|
483
|
-
return N("SvelteRegisterBlock", {
|
484
|
-
block: b,
|
485
|
-
id: Ji.name,
|
486
|
-
type: "if",
|
487
|
-
source: "(1056:6) {#if isLivenessEnabled() && waitingIdrndCaptureEvent}",
|
488
|
-
ctx: n
|
489
|
-
}), b;
|
490
|
-
}
|
491
|
-
function xn(n) {
|
492
|
-
let e, i = (
|
493
|
-
/*$_*/
|
494
|
-
n[31]("faceCollector.obtainingPicture") + ""
|
495
|
-
), s;
|
496
|
-
const a = {
|
497
|
-
c: function() {
|
498
|
-
e = _("span"), s = K(i), m(e, "class", "2xl:text-2xl lg:text-2xl text-md block p-2 m-auto text-center"), v(e, w, 1062, 14, 43152);
|
499
|
-
},
|
500
|
-
m: function(o, r) {
|
501
|
-
U(o, e, r), f(e, s);
|
502
|
-
},
|
503
|
-
p: function(o, r) {
|
504
|
-
r[1] & /*$_*/
|
505
|
-
1 && i !== (i = /*$_*/
|
506
|
-
o[31]("faceCollector.obtainingPicture") + "") && q(s, i);
|
507
|
-
},
|
508
|
-
d: function(o) {
|
509
|
-
o && W(e);
|
510
|
-
}
|
511
|
-
};
|
512
|
-
return N("SvelteRegisterBlock", {
|
513
|
-
block: a,
|
514
|
-
id: xn.name,
|
515
|
-
type: "else",
|
516
|
-
source: "(1062:12) {:else}",
|
517
|
-
ctx: n
|
518
|
-
}), a;
|
519
|
-
}
|
520
|
-
function $n(n) {
|
521
|
-
let e;
|
522
|
-
const i = {
|
523
|
-
c: function() {
|
524
|
-
e = _("span"), e.textContent = "Obtaining photo...", m(e, "class", "2xl:text-2xl lg:text-2xl text-md block p-2 m-auto text-center"), v(e, w, 1060, 14, 43016);
|
525
|
-
},
|
526
|
-
m: function(a, l) {
|
527
|
-
U(a, e, l);
|
528
|
-
},
|
529
|
-
p: ce,
|
530
|
-
d: function(a) {
|
531
|
-
a && W(e);
|
532
|
-
}
|
533
|
-
};
|
534
|
-
return N("SvelteRegisterBlock", {
|
535
|
-
block: i,
|
536
|
-
id: $n.name,
|
537
|
-
type: "if",
|
538
|
-
source: "(1060:12) {#if $isLoading}",
|
539
|
-
ctx: n
|
540
|
-
}), i;
|
541
|
-
}
|
542
|
-
function zi(n) {
|
543
|
-
let e, i, s, a, l;
|
544
|
-
function o(d, c) {
|
545
|
-
return (
|
546
|
-
/*$isLoading*/
|
547
|
-
d[36] ? to : eo
|
548
|
-
);
|
549
|
-
}
|
550
|
-
let r = o(n), u = r(n);
|
551
|
-
const b = {
|
552
|
-
c: function() {
|
553
|
-
e = _("slot"), i = _("div"), s = _("img"), l = V(), u.c(), Yt(s.src, a = mi) || m(s, "src", a), m(s, "alt", "loading gif"), m(s, "class", "m-auto h-[10em] lg:h-[12em]"), v(s, w, 1072, 12, 43643), m(i, "class", "translate-y-1/3 md:translate-y-1/4 xl:translate-y-1/2"), v(i, w, 1071, 10, 43563), m(e, "name", "loading-camera-gif"), m(e, "class", "block h-[17em] lg:h-[21.6em] xl:h-[30em]"), v(e, w, 1070, 8, 43471);
|
554
|
-
},
|
555
|
-
m: function(c, g) {
|
556
|
-
U(c, e, g), f(e, i), f(i, s), f(i, l), u.m(i, null);
|
557
|
-
},
|
558
|
-
p: function(c, g) {
|
559
|
-
r === (r = o(c)) && u ? u.p(c, g) : (u.d(1), u = r(c), u && (u.c(), u.m(i, null)));
|
560
|
-
},
|
561
|
-
d: function(c) {
|
562
|
-
c && W(e), u.d();
|
563
|
-
}
|
564
|
-
};
|
565
|
-
return N("SvelteRegisterBlock", {
|
566
|
-
block: b,
|
567
|
-
id: zi.name,
|
568
|
-
type: "if",
|
569
|
-
source: "(1070:6) {#if isLivenessEnabled() && idrndLoading && $cameraStatusStore === CameraStatusEnum.OK}",
|
570
|
-
ctx: n
|
571
|
-
}), b;
|
572
|
-
}
|
573
|
-
function eo(n) {
|
574
|
-
let e, i = (
|
575
|
-
/*$_*/
|
576
|
-
n[31]("faceCollector.initiatingCamera") + ""
|
577
|
-
), s;
|
578
|
-
const a = {
|
579
|
-
c: function() {
|
580
|
-
e = _("span"), s = K(i), m(e, "class", "2xl:text-2xl lg:text-2xl text-md block p-2 m-auto text-center"), v(e, w, 1076, 14, 43900);
|
581
|
-
},
|
582
|
-
m: function(o, r) {
|
583
|
-
U(o, e, r), f(e, s);
|
584
|
-
},
|
585
|
-
p: function(o, r) {
|
586
|
-
r[1] & /*$_*/
|
587
|
-
1 && i !== (i = /*$_*/
|
588
|
-
o[31]("faceCollector.initiatingCamera") + "") && q(s, i);
|
589
|
-
},
|
590
|
-
d: function(o) {
|
591
|
-
o && W(e);
|
592
|
-
}
|
593
|
-
};
|
594
|
-
return N("SvelteRegisterBlock", {
|
595
|
-
block: a,
|
596
|
-
id: eo.name,
|
597
|
-
type: "else",
|
598
|
-
source: "(1076:12) {:else}",
|
599
|
-
ctx: n
|
600
|
-
}), a;
|
601
|
-
}
|
602
|
-
function to(n) {
|
603
|
-
let e;
|
604
|
-
const i = {
|
605
|
-
c: function() {
|
606
|
-
e = _("span"), e.textContent = "Loading camera...", m(e, "class", "2xl:text-2xl lg:text-2xl text-md block p-2 m-auto text-center"), v(e, w, 1074, 14, 43765);
|
607
|
-
},
|
608
|
-
m: function(a, l) {
|
609
|
-
U(a, e, l);
|
610
|
-
},
|
611
|
-
p: ce,
|
612
|
-
d: function(a) {
|
613
|
-
a && W(e);
|
614
|
-
}
|
615
|
-
};
|
616
|
-
return N("SvelteRegisterBlock", {
|
617
|
-
block: i,
|
618
|
-
id: to.name,
|
619
|
-
type: "if",
|
620
|
-
source: "(1074:12) {#if $isLoading}",
|
621
|
-
ctx: n
|
622
|
-
}), i;
|
623
|
-
}
|
624
|
-
function Xi(n) {
|
625
|
-
let e, i, s = (
|
626
|
-
/*$_*/
|
627
|
-
n[31]("faceCollector.finish") + ""
|
628
|
-
), a, l, o, r, u = (
|
629
|
-
/*$_*/
|
630
|
-
n[31]("faceCollector.retakePhoto") + ""
|
631
|
-
), b, d, c;
|
632
|
-
const g = {
|
633
|
-
c: function() {
|
634
|
-
e = _("div"), i = _("button"), a = K(s), o = V(), r = _("button"), b = K(u), i.disabled = l = /*$justification*/
|
635
|
-
n[28].length === 0, m(i, "class", "ce-dui-btn ce-dui-btn-primary ce-dui-btn-block flex-shrink"), v(i, w, 1085, 10, 44193), m(r, "id", "bry-cc-retake-button"), m(r, "class", "ce-dui-btn ce-dui-btn-block ce-dui-btn-outline flex-shrink"), v(r, w, 1090, 10, 44426), m(e, "class", "ce-dui-btn-group flex"), v(e, w, 1084, 8, 44147);
|
636
|
-
},
|
637
|
-
m: function(C, p) {
|
638
|
-
U(C, e, p), f(e, i), f(i, a), f(e, o), f(e, r), f(r, b), d || (c = [
|
639
|
-
Re(
|
640
|
-
i,
|
641
|
-
"click",
|
642
|
-
/*click_handler*/
|
643
|
-
n[58],
|
644
|
-
!1,
|
645
|
-
!1,
|
646
|
-
!1,
|
647
|
-
!1
|
648
|
-
),
|
649
|
-
Re(
|
650
|
-
r,
|
651
|
-
"click",
|
652
|
-
/*click_handler_1*/
|
653
|
-
n[59],
|
654
|
-
!1,
|
655
|
-
!1,
|
656
|
-
!1,
|
657
|
-
!1
|
658
|
-
)
|
659
|
-
], d = !0);
|
660
|
-
},
|
661
|
-
p: function(C, p) {
|
662
|
-
p[1] & /*$_*/
|
663
|
-
1 && s !== (s = /*$_*/
|
664
|
-
C[31]("faceCollector.finish") + "") && q(a, s), p[0] & /*$justification*/
|
665
|
-
268435456 && l !== (l = /*$justification*/
|
666
|
-
C[28].length === 0) && hi(i, "disabled", l), p[1] & /*$_*/
|
667
|
-
1 && u !== (u = /*$_*/
|
668
|
-
C[31]("faceCollector.retakePhoto") + "") && q(b, u);
|
669
|
-
},
|
670
|
-
d: function(C) {
|
671
|
-
C && W(e), d = !1, bi(c);
|
672
|
-
}
|
673
|
-
};
|
674
|
-
return N("SvelteRegisterBlock", {
|
675
|
-
block: g,
|
676
|
-
id: Xi.name,
|
677
|
-
type: "if",
|
678
|
-
source: "(1084:6) {#if $captured}",
|
679
|
-
ctx: n
|
680
|
-
}), g;
|
681
|
-
}
|
682
|
-
function io(n) {
|
683
|
-
let e, i;
|
684
|
-
e = new Jn({
|
685
|
-
props: { handler: (
|
686
|
-
/*func*/
|
687
|
-
n[68]
|
688
|
-
) },
|
689
|
-
$$inline: !0
|
690
|
-
});
|
691
|
-
const s = {
|
692
|
-
c: function() {
|
693
|
-
kt(e.$$.fragment);
|
694
|
-
},
|
695
|
-
m: function(l, o) {
|
696
|
-
Rt(e, l, o), i = !0;
|
697
|
-
},
|
698
|
-
p: ce,
|
699
|
-
i: function(l) {
|
700
|
-
i || (Z(e.$$.fragment, l), i = !0);
|
701
|
-
},
|
702
|
-
o: function(l) {
|
703
|
-
ae(e.$$.fragment, l), i = !1;
|
704
|
-
},
|
705
|
-
d: function(l) {
|
706
|
-
Tt(e, l);
|
707
|
-
}
|
708
|
-
};
|
709
|
-
return N("SvelteRegisterBlock", {
|
710
|
-
block: s,
|
711
|
-
id: io.name,
|
712
|
-
type: "if",
|
713
|
-
source: "(1235:55) ",
|
714
|
-
ctx: n
|
715
|
-
}), s;
|
716
|
-
}
|
717
|
-
function no(n) {
|
718
|
-
let e, i, s, a, l, o, r, u, b;
|
719
|
-
const d = [
|
720
|
-
ro,
|
721
|
-
lo,
|
722
|
-
so,
|
723
|
-
ao,
|
724
|
-
oo
|
725
|
-
], c = [];
|
726
|
-
function g(C, p) {
|
727
|
-
return (
|
728
|
-
/*$captured*/
|
729
|
-
C[24] ? (
|
730
|
-
/*$unconformitiesStore*/
|
731
|
-
C[32].isLoading ? 1 : (
|
732
|
-
/*$requestResult*/
|
733
|
-
C[30] !== Y.OK ? 2 : (
|
734
|
-
/*$saved*/
|
735
|
-
C[27] ? 4 : 3
|
736
|
-
)
|
737
|
-
)
|
738
|
-
) : 0
|
739
|
-
);
|
740
|
-
}
|
741
|
-
o = g(n), r = c[o] = d[o](n);
|
742
|
-
const O = {
|
743
|
-
c: function() {
|
744
|
-
e = _("div"), i = _("img"), l = V(), r.c(), m(i, "class", "m-auto col-start-1 col-end-1 max-h-[23.2em]"), Yt(i.src, s = /*$dataTypePrefix*/
|
745
|
-
n[33] + "," + /*$image*/
|
746
|
-
n[29]) || m(i, "src", s), i.hidden = a = !/*$captured*/
|
747
|
-
n[24] || !/*$showFaceWhileValidating*/
|
748
|
-
n[37] && /*$unconformitiesStore*/
|
749
|
-
n[32].isLoading, m(i, "alt", ""), v(i, w, 1106, 6, 45038), m(e, "class", u = "grid-cols-1 grid-rows-2 sm:grid-cols-2 sm:grid-rows-1 gap-[.5em] " + (!/*$showFaceWhileValidating*/
|
750
|
-
n[37] && /*$unconformitiesStore*/
|
751
|
-
n[32].isLoading ? "absolute -translate-y-1/2 -translate-x-1/2 top-1/2 left-1/2 overflow-visible" : "grid overflow-hidden")), v(e, w, 1100, 4, 44752);
|
752
|
-
},
|
753
|
-
m: function(p, k) {
|
754
|
-
U(p, e, k), f(e, i), f(e, l), c[o].m(e, null), b = !0;
|
755
|
-
},
|
756
|
-
p: function(p, k) {
|
757
|
-
(!b || k[0] & /*$image*/
|
758
|
-
536870912 | k[1] & /*$dataTypePrefix*/
|
759
|
-
4 && !Yt(i.src, s = /*$dataTypePrefix*/
|
760
|
-
p[33] + "," + /*$image*/
|
761
|
-
p[29])) && m(i, "src", s), (!b || k[0] & /*$captured*/
|
762
|
-
16777216 | k[1] & /*$showFaceWhileValidating, $unconformitiesStore*/
|
763
|
-
66 && a !== (a = !/*$captured*/
|
764
|
-
p[24] || !/*$showFaceWhileValidating*/
|
765
|
-
p[37] && /*$unconformitiesStore*/
|
766
|
-
p[32].isLoading)) && hi(i, "hidden", a);
|
767
|
-
let E = o;
|
768
|
-
o = g(p), o === E ? c[o].p(p, k) : (Ct(), ae(c[E], 1, 1, () => {
|
769
|
-
c[E] = null;
|
770
|
-
}), yt(), r = c[o], r ? r.p(p, k) : (r = c[o] = d[o](p), r.c()), Z(r, 1), r.m(e, null)), (!b || k[1] & /*$showFaceWhileValidating, $unconformitiesStore*/
|
771
|
-
66 && u !== (u = "grid-cols-1 grid-rows-2 sm:grid-cols-2 sm:grid-rows-1 gap-[.5em] " + (!/*$showFaceWhileValidating*/
|
772
|
-
p[37] && /*$unconformitiesStore*/
|
773
|
-
p[32].isLoading ? "absolute -translate-y-1/2 -translate-x-1/2 top-1/2 left-1/2 overflow-visible" : "grid overflow-hidden"))) && m(e, "class", u);
|
774
|
-
},
|
775
|
-
i: function(p) {
|
776
|
-
b || (Z(r), b = !0);
|
777
|
-
},
|
778
|
-
o: function(p) {
|
779
|
-
ae(r), b = !1;
|
780
|
-
},
|
781
|
-
d: function(p) {
|
782
|
-
p && W(e), c[o].d();
|
783
|
-
}
|
784
|
-
};
|
785
|
-
return N("SvelteRegisterBlock", {
|
786
|
-
block: O,
|
787
|
-
id: no.name,
|
788
|
-
type: "if",
|
789
|
-
source: "(1100:2) {#if (!idrndClosed || $captured) && showUnconformities}",
|
790
|
-
ctx: n
|
791
|
-
}), O;
|
792
|
-
}
|
793
|
-
function oo(n) {
|
794
|
-
let e, i, s = (
|
795
|
-
/*$_*/
|
796
|
-
n[31]("faceCollector.captured") + ""
|
797
|
-
), a, l, o, r, u, b = (
|
798
|
-
/*$_*/
|
799
|
-
n[31]("faceCollector.retakePhoto") + ""
|
800
|
-
), d, c, g = Qt(qn).faceStrategy !== Kn.DISABLED, O, C, p, k = (
|
801
|
-
/*$unconformitiesStore*/
|
802
|
-
n[32].unconformities.length !== 0 && Qi(n)
|
803
|
-
), E = g && co(n);
|
804
|
-
const M = {
|
805
|
-
c: function() {
|
806
|
-
e = _("div"), i = _("h1"), a = K(s), l = V(), k && k.c(), o = V(), r = _("div"), u = _("button"), d = K(b), c = V(), E && E.c(), m(i, "class", "text-3xl font-bold pb-[1em] transition-opacity"), v(i, w, 1207, 10, 50163), m(u, "id", "bry-cc-retake-button"), m(u, "class", "ce-dui-btn ce-dui-btn-block flex-shrink text-base"), v(u, w, 1221, 12, 50864), m(r, "class", "flex flex-row"), Ln(r, "ce-dui-btn-group", !/*$exportButtonDisabled*/
|
807
|
-
n[38]), v(r, w, 1220, 10, 50776), v(e, w, 1206, 8, 50147);
|
808
|
-
},
|
809
|
-
m: function(I, T) {
|
810
|
-
U(I, e, T), f(e, i), f(i, a), f(e, l), k && k.m(e, null), f(e, o), f(e, r), f(r, u), f(u, d), f(r, c), E && E.m(r, null), O = !0, C || (p = Re(
|
811
|
-
u,
|
812
|
-
"click",
|
813
|
-
/*click_handler_6*/
|
814
|
-
n[67],
|
815
|
-
!1,
|
816
|
-
!1,
|
817
|
-
!1,
|
818
|
-
!1
|
819
|
-
), C = !0);
|
820
|
-
},
|
821
|
-
p: function(I, T) {
|
822
|
-
(!O || T[1] & /*$_*/
|
823
|
-
1) && s !== (s = /*$_*/
|
824
|
-
I[31]("faceCollector.captured") + "") && q(a, s), /*$unconformitiesStore*/
|
825
|
-
I[32].unconformities.length !== 0 ? k ? k.p(I, T) : (k = Qi(I), k.c(), k.m(e, o)) : k && (k.d(1), k = null), (!O || T[1] & /*$_*/
|
826
|
-
1) && b !== (b = /*$_*/
|
827
|
-
I[31]("faceCollector.retakePhoto") + "") && q(d, b), (!O || T[1] & /*$exportButtonDisabled*/
|
828
|
-
128) && Ln(r, "ce-dui-btn-group", !/*$exportButtonDisabled*/
|
829
|
-
I[38]);
|
830
|
-
},
|
831
|
-
i: function(I) {
|
832
|
-
O || (Z(E), O = !0);
|
833
|
-
},
|
834
|
-
o: function(I) {
|
835
|
-
ae(E), O = !1;
|
836
|
-
},
|
837
|
-
d: function(I) {
|
838
|
-
I && W(e), k && k.d(), E && E.d(), C = !1, p();
|
839
|
-
}
|
840
|
-
};
|
841
|
-
return N("SvelteRegisterBlock", {
|
842
|
-
block: M,
|
843
|
-
id: oo.name,
|
844
|
-
type: "else",
|
845
|
-
source: "(1206:6) {:else}",
|
846
|
-
ctx: n
|
847
|
-
}), M;
|
848
|
-
}
|
849
|
-
function ao(n) {
|
850
|
-
let e, i, s = (
|
851
|
-
/*evaluatePhoto*/
|
852
|
-
(n[1] ? (
|
853
|
-
/*$_*/
|
854
|
-
n[31]("faceCollector.unconformities")
|
855
|
-
) : (
|
856
|
-
/*$_*/
|
857
|
-
n[31]("faceCollector.previewCapture")
|
858
|
-
)) + ""
|
859
|
-
), a, l, o, r, u, b, d = (
|
860
|
-
/*$unconformitiesStore*/
|
861
|
-
n[32].unconformities
|
862
|
-
);
|
863
|
-
Pn(d);
|
864
|
-
let c = [];
|
865
|
-
for (let k = 0; k < d.length; k += 1)
|
866
|
-
c[k] = Yi(Nn(n, d, k));
|
867
|
-
let g = (
|
868
|
-
/*evaluatePhoto*/
|
869
|
-
n[1] && /*$unconformitiesStore*/
|
870
|
-
n[32].unconformities.length == 0 && Gi(n)
|
871
|
-
), O = (
|
872
|
-
/*showJustificationField*/
|
873
|
-
n[7] && Zi(n)
|
874
|
-
), C = (
|
875
|
-
/*$captured*/
|
876
|
-
n[24] && xi(n)
|
877
|
-
);
|
878
|
-
const p = {
|
879
|
-
c: function() {
|
880
|
-
e = _("div"), i = _("h1"), a = K(s), l = V(), o = _("div");
|
881
|
-
for (let E = 0; E < c.length; E += 1)
|
882
|
-
c[E].c();
|
883
|
-
r = V(), g && g.c(), u = V(), O && O.c(), b = V(), C && C.c(), m(i, "class", "text-3xl font-bold transition-opacity"), v(i, w, 1157, 10, 47822), m(o, "class", "flex flex-wrap"), v(o, w, 1158, 10, 47980), m(e, "class", "flex flex-col justify-between"), v(e, w, 1156, 8, 47768);
|
884
|
-
},
|
885
|
-
m: function(E, M) {
|
886
|
-
U(E, e, M), f(e, i), f(i, a), f(e, l), f(e, o);
|
887
|
-
for (let B = 0; B < c.length; B += 1)
|
888
|
-
c[B] && c[B].m(o, null);
|
889
|
-
f(o, r), g && g.m(o, null), f(e, u), O && O.m(e, null), f(e, b), C && C.m(e, null);
|
890
|
-
},
|
891
|
-
p: function(E, M) {
|
892
|
-
if (M[0] & /*evaluatePhoto*/
|
893
|
-
2 | M[1] & /*$_*/
|
894
|
-
1 && s !== (s = /*evaluatePhoto*/
|
895
|
-
(E[1] ? (
|
896
|
-
/*$_*/
|
897
|
-
E[31]("faceCollector.unconformities")
|
898
|
-
) : (
|
899
|
-
/*$_*/
|
900
|
-
E[31]("faceCollector.previewCapture")
|
901
|
-
)) + "") && q(a, s), M[1] & /*$unconformitiesStore*/
|
902
|
-
2) {
|
903
|
-
d = /*$unconformitiesStore*/
|
904
|
-
E[32].unconformities, Pn(d);
|
905
|
-
let B;
|
906
|
-
for (B = 0; B < d.length; B += 1) {
|
907
|
-
const I = Nn(E, d, B);
|
908
|
-
c[B] ? c[B].p(I, M) : (c[B] = Yi(I), c[B].c(), c[B].m(o, r));
|
909
|
-
}
|
910
|
-
for (; B < c.length; B += 1)
|
911
|
-
c[B].d(1);
|
912
|
-
c.length = d.length;
|
913
|
-
}
|
914
|
-
/*evaluatePhoto*/
|
915
|
-
E[1] && /*$unconformitiesStore*/
|
916
|
-
E[32].unconformities.length == 0 ? g ? g.p(E, M) : (g = Gi(E), g.c(), g.m(o, null)) : g && (g.d(1), g = null), /*showJustificationField*/
|
917
|
-
E[7] ? O ? O.p(E, M) : (O = Zi(E), O.c(), O.m(e, b)) : O && (O.d(1), O = null), /*$captured*/
|
918
|
-
E[24] ? C ? C.p(E, M) : (C = xi(E), C.c(), C.m(e, null)) : C && (C.d(1), C = null);
|
919
|
-
},
|
920
|
-
i: ce,
|
921
|
-
o: ce,
|
922
|
-
d: function(E) {
|
923
|
-
E && W(e), Wo(c, E), g && g.d(), O && O.d(), C && C.d();
|
924
|
-
}
|
925
|
-
};
|
926
|
-
return N("SvelteRegisterBlock", {
|
927
|
-
block: p,
|
928
|
-
id: ao.name,
|
929
|
-
type: "if",
|
930
|
-
source: "(1156:24) ",
|
931
|
-
ctx: n
|
932
|
-
}), p;
|
933
|
-
}
|
934
|
-
function so(n) {
|
935
|
-
let e, i, s, a, l = (
|
936
|
-
/*$_*/
|
937
|
-
n[31]("faceCollector.finish") + ""
|
938
|
-
), o, r, u, b = (
|
939
|
-
/*$_*/
|
940
|
-
n[31]("faceCollector.retakePhoto") + ""
|
941
|
-
), d, c, g;
|
942
|
-
function O(E, M) {
|
943
|
-
return (
|
944
|
-
/*$requestResult*/
|
945
|
-
E[30] === Y.LIVENESS_DETECTION_FAILURE || /*$requestResult*/
|
946
|
-
E[30] === Y.UNKNOWN_LIVENESS_ERROR ? go : (
|
947
|
-
/*$requestResult*/
|
948
|
-
E[30] === Y.LOW_LIVENESS_SCORE ? bo : (
|
949
|
-
/*$requestResult*/
|
950
|
-
E[30] === Y.TEMPLATE_EXTRACTION_ERROR || /*$requestResult*/
|
951
|
-
E[30] === Y.UNKNOWN_TEMPLATE_EXTRACTION_ERROR ? ho : (
|
952
|
-
/*$requestResult*/
|
953
|
-
E[30] === Y.UNABLE_TO_COMMUNICATE_WITH_TEMPLATE_EXTRACTION_SERVICE ? mo : (
|
954
|
-
/*$requestResult*/
|
955
|
-
E[30] === Y.LIVENESS_EVALUATION_ERROR ? fo : uo
|
956
|
-
)
|
957
|
-
)
|
958
|
-
)
|
959
|
-
)
|
960
|
-
);
|
961
|
-
}
|
962
|
-
let C = O(n), p = C(n);
|
963
|
-
const k = {
|
964
|
-
c: function() {
|
965
|
-
e = _("div"), p.c(), i = V(), s = _("div"), a = _("button"), o = K(l), r = V(), u = _("button"), d = K(b), a.disabled = !0, m(a, "class", "ce-dui-btn ce-dui-btn-primary ce-dui-btn-block flex-shrink"), v(a, w, 1145, 12, 47292), m(u, "id", "bry-cc-retake-button"), m(u, "class", "ce-dui-btn ce-dui-btn-block ce-dui-btn-outline flex-shrink"), v(u, w, 1148, 12, 47478), m(s, "class", "ce-dui-btn-group flex"), v(s, w, 1144, 10, 47244), m(e, "class", "flex flex-col justify-between"), v(e, w, 1120, 8, 45652);
|
966
|
-
},
|
967
|
-
m: function(M, B) {
|
968
|
-
U(M, e, B), p.m(e, null), f(e, i), f(e, s), f(s, a), f(a, o), f(s, r), f(s, u), f(u, d), c || (g = [
|
969
|
-
Re(
|
970
|
-
a,
|
971
|
-
"click",
|
972
|
-
/*click_handler_2*/
|
973
|
-
n[61],
|
974
|
-
!1,
|
975
|
-
!1,
|
976
|
-
!1,
|
977
|
-
!1
|
978
|
-
),
|
979
|
-
Re(
|
980
|
-
u,
|
981
|
-
"click",
|
982
|
-
/*click_handler_3*/
|
983
|
-
n[62],
|
984
|
-
!1,
|
985
|
-
!1,
|
986
|
-
!1,
|
987
|
-
!1
|
988
|
-
)
|
989
|
-
], c = !0);
|
990
|
-
},
|
991
|
-
p: function(M, B) {
|
992
|
-
C === (C = O(M)) && p ? p.p(M, B) : (p.d(1), p = C(M), p && (p.c(), p.m(e, i))), B[1] & /*$_*/
|
993
|
-
1 && l !== (l = /*$_*/
|
994
|
-
M[31]("faceCollector.finish") + "") && q(o, l), B[1] & /*$_*/
|
995
|
-
1 && b !== (b = /*$_*/
|
996
|
-
M[31]("faceCollector.retakePhoto") + "") && q(d, b);
|
997
|
-
},
|
998
|
-
i: ce,
|
999
|
-
o: ce,
|
1000
|
-
d: function(M) {
|
1001
|
-
M && W(e), p.d(), c = !1, bi(g);
|
1002
|
-
}
|
1003
|
-
};
|
1004
|
-
return N("SvelteRegisterBlock", {
|
1005
|
-
block: k,
|
1006
|
-
id: so.name,
|
1007
|
-
type: "if",
|
1008
|
-
source: "(1120:56) ",
|
1009
|
-
ctx: n
|
1010
|
-
}), k;
|
1011
|
-
}
|
1012
|
-
function lo(n) {
|
1013
|
-
let e, i, s = (
|
1014
|
-
/*$_*/
|
1015
|
-
n[31]("faceCollector.validating") + ""
|
1016
|
-
), a, l, o;
|
1017
|
-
const r = {
|
1018
|
-
c: function() {
|
1019
|
-
e = _("div"), i = _("h1"), a = K(s), l = V(), o = _("div"), m(i, "class", "inline-block text-3xl font-bold pb-[1em] transition-opacity"), v(i, w, 1116, 10, 45407), m(o, "class", "ml-6 inline-block dot-typing"), v(o, w, 1117, 10, 45527), m(e, "class", "min-w-[200px]"), v(e, w, 1115, 8, 45369);
|
1020
|
-
},
|
1021
|
-
m: function(b, d) {
|
1022
|
-
U(b, e, d), f(e, i), f(i, a), f(e, l), f(e, o);
|
1023
|
-
},
|
1024
|
-
p: function(b, d) {
|
1025
|
-
d[1] & /*$_*/
|
1026
|
-
1 && s !== (s = /*$_*/
|
1027
|
-
b[31]("faceCollector.validating") + "") && q(a, s);
|
1028
|
-
},
|
1029
|
-
i: ce,
|
1030
|
-
o: ce,
|
1031
|
-
d: function(b) {
|
1032
|
-
b && W(e);
|
1033
|
-
}
|
1034
|
-
};
|
1035
|
-
return N("SvelteRegisterBlock", {
|
1036
|
-
block: r,
|
1037
|
-
id: lo.name,
|
1038
|
-
type: "if",
|
1039
|
-
source: "(1115:47) ",
|
1040
|
-
ctx: n
|
1041
|
-
}), r;
|
1042
|
-
}
|
1043
|
-
function ro(n) {
|
1044
|
-
let e;
|
1045
|
-
const i = {
|
1046
|
-
c: function() {
|
1047
|
-
e = _("div"), m(e, "class", ""), v(e, w, 1113, 8, 45296);
|
1048
|
-
},
|
1049
|
-
m: function(a, l) {
|
1050
|
-
U(a, e, l);
|
1051
|
-
},
|
1052
|
-
p: ce,
|
1053
|
-
i: ce,
|
1054
|
-
o: ce,
|
1055
|
-
d: function(a) {
|
1056
|
-
a && W(e);
|
1057
|
-
}
|
1058
|
-
};
|
1059
|
-
return N("SvelteRegisterBlock", {
|
1060
|
-
block: i,
|
1061
|
-
id: ro.name,
|
1062
|
-
type: "if",
|
1063
|
-
source: "(1113:6) {#if !$captured}",
|
1064
|
-
ctx: n
|
1065
|
-
}), i;
|
1066
|
-
}
|
1067
|
-
function Qi(n) {
|
1068
|
-
let e, i, s = (
|
1069
|
-
/*$_*/
|
1070
|
-
n[31]("faceCollector.justification") + ""
|
1071
|
-
), a, l, o, r, u;
|
1072
|
-
const b = {
|
1073
|
-
c: function() {
|
1074
|
-
e = _("label"), i = _("span"), a = K(s), l = V(), o = _("textarea"), m(i, "class", "ce-dui-label-text text-base"), v(i, w, 1211, 14, 50399), m(e, "class", "ce-dui-label"), m(e, "for", "justification"), v(e, w, 1210, 12, 50336), m(o, "contenteditable", ""), m(o, "id", "justification"), m(o, "class", "ce-dui-textarea ce-dui-textarea-bordered textarea-ghost h-[6em] w-full text-base"), v(o, w, 1213, 12, 50517);
|
1075
|
-
},
|
1076
|
-
m: function(c, g) {
|
1077
|
-
U(c, e, g), f(e, i), f(i, a), U(c, l, g), U(c, o, g), di(
|
1078
|
-
o,
|
1079
|
-
/*$justification*/
|
1080
|
-
n[28]
|
1081
|
-
), r || (u = Re(
|
1082
|
-
o,
|
1083
|
-
"input",
|
1084
|
-
/*textarea_input_handler_1*/
|
1085
|
-
n[66]
|
1086
|
-
), r = !0);
|
1087
|
-
},
|
1088
|
-
p: function(c, g) {
|
1089
|
-
g[1] & /*$_*/
|
1090
|
-
1 && s !== (s = /*$_*/
|
1091
|
-
c[31]("faceCollector.justification") + "") && q(a, s), g[0] & /*$justification*/
|
1092
|
-
268435456 && di(
|
1093
|
-
o,
|
1094
|
-
/*$justification*/
|
1095
|
-
c[28]
|
1096
|
-
);
|
1097
|
-
},
|
1098
|
-
d: function(c) {
|
1099
|
-
c && W(e), c && W(l), c && W(o), r = !1, u();
|
1100
|
-
}
|
1101
|
-
};
|
1102
|
-
return N("SvelteRegisterBlock", {
|
1103
|
-
block: b,
|
1104
|
-
id: Qi.name,
|
1105
|
-
type: "if",
|
1106
|
-
source: "(1210:10) {#if $unconformitiesStore.unconformities.length !== 0}",
|
1107
|
-
ctx: n
|
1108
|
-
}), b;
|
1109
|
-
}
|
1110
|
-
function co(n) {
|
1111
|
-
let e, i;
|
1112
|
-
e = new Hn({
|
1113
|
-
props: { cssClass: "ce-dui-btn-block flex-shrink" },
|
1114
|
-
$$inline: !0
|
1115
|
-
});
|
1116
|
-
const s = {
|
1117
|
-
c: function() {
|
1118
|
-
kt(e.$$.fragment);
|
1119
|
-
},
|
1120
|
-
m: function(l, o) {
|
1121
|
-
Rt(e, l, o), i = !0;
|
1122
|
-
},
|
1123
|
-
i: function(l) {
|
1124
|
-
i || (Z(e.$$.fragment, l), i = !0);
|
1125
|
-
},
|
1126
|
-
o: function(l) {
|
1127
|
-
ae(e.$$.fragment, l), i = !1;
|
1128
|
-
},
|
1129
|
-
d: function(l) {
|
1130
|
-
Tt(e, l);
|
1131
|
-
}
|
1132
|
-
};
|
1133
|
-
return N("SvelteRegisterBlock", {
|
1134
|
-
block: s,
|
1135
|
-
id: co.name,
|
1136
|
-
type: "if",
|
1137
|
-
source: "(1227:12) {#if get(enableStrategy).faceStrategy !== FaceExportStrategy.DISABLED}",
|
1138
|
-
ctx: n
|
1139
|
-
}), s;
|
1140
|
-
}
|
1141
|
-
function Yi(n) {
|
1142
|
-
let e, i = (
|
1143
|
-
/*unconformity*/
|
1144
|
-
n[123] + ""
|
1145
|
-
), s;
|
1146
|
-
const a = {
|
1147
|
-
c: function() {
|
1148
|
-
e = _("div"), s = K(i), m(e, "class", "ce-dui-badge ce-dui-badge-lg h-[2em] ce-dui-badge-error text-xl pb-[.25em] m-[.5em]"), v(e, w, 1160, 14, 48095);
|
1149
|
-
},
|
1150
|
-
m: function(o, r) {
|
1151
|
-
U(o, e, r), f(e, s);
|
1152
|
-
},
|
1153
|
-
p: function(o, r) {
|
1154
|
-
r[1] & /*$unconformitiesStore*/
|
1155
|
-
2 && i !== (i = /*unconformity*/
|
1156
|
-
o[123] + "") && q(s, i);
|
1157
|
-
},
|
1158
|
-
d: function(o) {
|
1159
|
-
o && W(e);
|
1160
|
-
}
|
1161
|
-
};
|
1162
|
-
return N("SvelteRegisterBlock", {
|
1163
|
-
block: a,
|
1164
|
-
id: Yi.name,
|
1165
|
-
type: "each",
|
1166
|
-
source: "(1160:12) {#each $unconformitiesStore.unconformities as unconformity}",
|
1167
|
-
ctx: n
|
1168
|
-
}), a;
|
1169
|
-
}
|
1170
|
-
function Gi(n) {
|
1171
|
-
let e, i = (
|
1172
|
-
/*$_*/
|
1173
|
-
n[31]("faceCollector.noNonconformity") + ""
|
1174
|
-
), s;
|
1175
|
-
const a = {
|
1176
|
-
c: function() {
|
1177
|
-
e = _("div"), s = K(i), m(e, "class", "ce-dui-badge ce-dui-badge-lg h-[2em] ce-dui-badge-info text-xl pb-[.25em] m-[.5em]"), v(e, w, 1165, 12, 48360);
|
1178
|
-
},
|
1179
|
-
m: function(o, r) {
|
1180
|
-
U(o, e, r), f(e, s);
|
1181
|
-
},
|
1182
|
-
p: function(o, r) {
|
1183
|
-
r[1] & /*$_*/
|
1184
|
-
1 && i !== (i = /*$_*/
|
1185
|
-
o[31]("faceCollector.noNonconformity") + "") && q(s, i);
|
1186
|
-
},
|
1187
|
-
d: function(o) {
|
1188
|
-
o && W(e);
|
1189
|
-
}
|
1190
|
-
};
|
1191
|
-
return N("SvelteRegisterBlock", {
|
1192
|
-
block: a,
|
1193
|
-
id: Gi.name,
|
1194
|
-
type: "if",
|
1195
|
-
source: "(1165:12) {#if evaluatePhoto && $unconformitiesStore.unconformities.length == 0}",
|
1196
|
-
ctx: n
|
1197
|
-
}), a;
|
1198
|
-
}
|
1199
|
-
function Zi(n) {
|
1200
|
-
let e, i, s, a = (
|
1201
|
-
/*$_*/
|
1202
|
-
n[31]("faceCollector.provideAReasonForTheLowQualityCapture") + ""
|
1203
|
-
), l, o, r, u, b, d, c, g, O = (
|
1204
|
-
/*$_*/
|
1205
|
-
n[31]("faceCollector.thisInformationIsRequired") + ""
|
1206
|
-
), C, p, k, E;
|
1207
|
-
const M = {
|
1208
|
-
c: function() {
|
1209
|
-
e = _("div"), i = _("label"), s = _("span"), l = K(a), o = V(), r = _("textarea"), b = V(), d = _("label"), c = _("span"), g = K("("), C = K(O), p = K(")"), m(s, "class", "ce-dui-label-text text-base"), v(s, w, 1173, 16, 48727), m(i, "class", "ce-dui-label"), m(i, "for", "justification"), v(i, w, 1172, 14, 48662), m(r, "contenteditable", ""), m(r, "id", "justification"), m(r, "class", "ce-dui-textarea ce-dui-textarea-bordered h-[6em] text-base"), m(r, "placeholder", u = /*$_*/
|
1210
|
-
n[31]("faceCollector.yourJustification")), v(r, w, 1177, 14, 48909), m(c, "class", "ce-dui-label-text-alt text-base"), v(c, w, 1185, 16, 49277), m(d, "class", "ce-dui-label"), m(d, "for", "justification"), v(d, w, 1184, 14, 49212), m(e, "class", "ce-dui-form-control"), v(e, w, 1171, 12, 48614);
|
1211
|
-
},
|
1212
|
-
m: function(I, T) {
|
1213
|
-
U(I, e, T), f(e, i), f(i, s), f(s, l), f(e, o), f(e, r), di(
|
1214
|
-
r,
|
1215
|
-
/*$justification*/
|
1216
|
-
n[28]
|
1217
|
-
), f(e, b), f(e, d), f(d, c), f(c, g), f(c, C), f(c, p), k || (E = Re(
|
1218
|
-
r,
|
1219
|
-
"input",
|
1220
|
-
/*textarea_input_handler*/
|
1221
|
-
n[63]
|
1222
|
-
), k = !0);
|
1223
|
-
},
|
1224
|
-
p: function(I, T) {
|
1225
|
-
T[1] & /*$_*/
|
1226
|
-
1 && a !== (a = /*$_*/
|
1227
|
-
I[31]("faceCollector.provideAReasonForTheLowQualityCapture") + "") && q(l, a), T[1] & /*$_*/
|
1228
|
-
1 && u !== (u = /*$_*/
|
1229
|
-
I[31]("faceCollector.yourJustification")) && m(r, "placeholder", u), T[0] & /*$justification*/
|
1230
|
-
268435456 && di(
|
1231
|
-
r,
|
1232
|
-
/*$justification*/
|
1233
|
-
I[28]
|
1234
|
-
), T[1] & /*$_*/
|
1235
|
-
1 && O !== (O = /*$_*/
|
1236
|
-
I[31]("faceCollector.thisInformationIsRequired") + "") && q(C, O);
|
1237
|
-
},
|
1238
|
-
d: function(I) {
|
1239
|
-
I && W(e), k = !1, E();
|
1240
|
-
}
|
1241
|
-
};
|
1242
|
-
return N("SvelteRegisterBlock", {
|
1243
|
-
block: M,
|
1244
|
-
id: Zi.name,
|
1245
|
-
type: "if",
|
1246
|
-
source: "(1171:10) {#if showJustificationField}",
|
1247
|
-
ctx: n
|
1248
|
-
}), M;
|
1249
|
-
}
|
1250
|
-
function xi(n) {
|
1251
|
-
let e, i, s = (
|
1252
|
-
/*$_*/
|
1253
|
-
n[31]("faceCollector.finish") + ""
|
1254
|
-
), a, l, o, r, u = (
|
1255
|
-
/*$_*/
|
1256
|
-
n[31]("faceCollector.retakePhoto") + ""
|
1257
|
-
), b, d, c;
|
1258
|
-
const g = {
|
1259
|
-
c: function() {
|
1260
|
-
e = _("div"), i = _("button"), a = K(s), o = V(), r = _("button"), b = K(u), i.disabled = l = /*$justification*/
|
1261
|
-
n[28].length === 0 && /*showJustificationField*/
|
1262
|
-
n[7], m(i, "class", "ce-dui-btn ce-dui-btn-primary ce-dui-btn-block flex-shrink text-base"), v(i, w, 1191, 14, 49526), m(r, "id", "bry-cc-retake-button"), m(r, "class", "ce-dui-btn ce-dui-btn-block ce-dui-btn-outline flex-shrink text-base"), v(r, w, 1197, 14, 49832), m(e, "class", "ce-dui-btn-group flex"), v(e, w, 1190, 12, 49476);
|
1263
|
-
},
|
1264
|
-
m: function(C, p) {
|
1265
|
-
U(C, e, p), f(e, i), f(i, a), f(e, o), f(e, r), f(r, b), d || (c = [
|
1266
|
-
Re(
|
1267
|
-
i,
|
1268
|
-
"click",
|
1269
|
-
/*click_handler_4*/
|
1270
|
-
n[64],
|
1271
|
-
!1,
|
1272
|
-
!1,
|
1273
|
-
!1,
|
1274
|
-
!1
|
1275
|
-
),
|
1276
|
-
Re(
|
1277
|
-
r,
|
1278
|
-
"click",
|
1279
|
-
/*click_handler_5*/
|
1280
|
-
n[65],
|
1281
|
-
!1,
|
1282
|
-
!1,
|
1283
|
-
!1,
|
1284
|
-
!1
|
1285
|
-
)
|
1286
|
-
], d = !0);
|
1287
|
-
},
|
1288
|
-
p: function(C, p) {
|
1289
|
-
p[1] & /*$_*/
|
1290
|
-
1 && s !== (s = /*$_*/
|
1291
|
-
C[31]("faceCollector.finish") + "") && q(a, s), p[0] & /*$justification, showJustificationField*/
|
1292
|
-
268435584 && l !== (l = /*$justification*/
|
1293
|
-
C[28].length === 0 && /*showJustificationField*/
|
1294
|
-
C[7]) && hi(i, "disabled", l), p[1] & /*$_*/
|
1295
|
-
1 && u !== (u = /*$_*/
|
1296
|
-
C[31]("faceCollector.retakePhoto") + "") && q(b, u);
|
1297
|
-
},
|
1298
|
-
d: function(C) {
|
1299
|
-
C && W(e), d = !1, bi(c);
|
1300
|
-
}
|
1301
|
-
};
|
1302
|
-
return N("SvelteRegisterBlock", {
|
1303
|
-
block: g,
|
1304
|
-
id: xi.name,
|
1305
|
-
type: "if",
|
1306
|
-
source: "(1190:10) {#if $captured}",
|
1307
|
-
ctx: n
|
1308
|
-
}), g;
|
1309
|
-
}
|
1310
|
-
function uo(n) {
|
1311
|
-
let e, i = (
|
1312
|
-
/*$_*/
|
1313
|
-
n[31]("faceCollector.everythingOk") + ""
|
1314
|
-
), s;
|
1315
|
-
const a = {
|
1316
|
-
c: function() {
|
1317
|
-
e = _("h1"), s = K(i), m(e, "class", "text-3xl font-bold pb-[1em] transition-opacity"), v(e, w, 1142, 12, 47119);
|
1318
|
-
},
|
1319
|
-
m: function(o, r) {
|
1320
|
-
U(o, e, r), f(e, s);
|
1321
|
-
},
|
1322
|
-
p: function(o, r) {
|
1323
|
-
r[1] & /*$_*/
|
1324
|
-
1 && i !== (i = /*$_*/
|
1325
|
-
o[31]("faceCollector.everythingOk") + "") && q(s, i);
|
1326
|
-
},
|
1327
|
-
d: function(o) {
|
1328
|
-
o && W(e);
|
1329
|
-
}
|
1330
|
-
};
|
1331
|
-
return N("SvelteRegisterBlock", {
|
1332
|
-
block: a,
|
1333
|
-
id: uo.name,
|
1334
|
-
type: "else",
|
1335
|
-
source: "(1142:10) {:else}",
|
1336
|
-
ctx: n
|
1337
|
-
}), a;
|
1338
|
-
}
|
1339
|
-
function fo(n) {
|
1340
|
-
let e, i = (
|
1341
|
-
/*$_*/
|
1342
|
-
n[31]("liveness.error.evaluationError") + ""
|
1343
|
-
), s;
|
1344
|
-
const a = {
|
1345
|
-
c: function() {
|
1346
|
-
e = _("h1"), s = K(i), m(e, "class", "text-3xl font-bold pb-[1em] transition-opacity text-error"), v(e, w, 1138, 12, 46947);
|
1347
|
-
},
|
1348
|
-
m: function(o, r) {
|
1349
|
-
U(o, e, r), f(e, s);
|
1350
|
-
},
|
1351
|
-
p: function(o, r) {
|
1352
|
-
r[1] & /*$_*/
|
1353
|
-
1 && i !== (i = /*$_*/
|
1354
|
-
o[31]("liveness.error.evaluationError") + "") && q(s, i);
|
1355
|
-
},
|
1356
|
-
d: function(o) {
|
1357
|
-
o && W(e);
|
1358
|
-
}
|
1359
|
-
};
|
1360
|
-
return N("SvelteRegisterBlock", {
|
1361
|
-
block: a,
|
1362
|
-
id: fo.name,
|
1363
|
-
type: "if",
|
1364
|
-
source: "(1138:83) ",
|
1365
|
-
ctx: n
|
1366
|
-
}), a;
|
1367
|
-
}
|
1368
|
-
function mo(n) {
|
1369
|
-
let e, i = (
|
1370
|
-
/*$_*/
|
1371
|
-
n[31]("faceCollector.unableToCompleteRequest") + ""
|
1372
|
-
), s;
|
1373
|
-
const a = {
|
1374
|
-
c: function() {
|
1375
|
-
e = _("h1"), s = K(i), m(e, "class", "text-3xl font-bold pb-[1em] transition-opacity text-error"), v(e, w, 1134, 12, 46702);
|
1376
|
-
},
|
1377
|
-
m: function(o, r) {
|
1378
|
-
U(o, e, r), f(e, s);
|
1379
|
-
},
|
1380
|
-
p: function(o, r) {
|
1381
|
-
r[1] & /*$_*/
|
1382
|
-
1 && i !== (i = /*$_*/
|
1383
|
-
o[31]("faceCollector.unableToCompleteRequest") + "") && q(s, i);
|
1384
|
-
},
|
1385
|
-
d: function(o) {
|
1386
|
-
o && W(e);
|
1387
|
-
}
|
1388
|
-
};
|
1389
|
-
return N("SvelteRegisterBlock", {
|
1390
|
-
block: a,
|
1391
|
-
id: mo.name,
|
1392
|
-
type: "if",
|
1393
|
-
source: "(1134:112) ",
|
1394
|
-
ctx: n
|
1395
|
-
}), a;
|
1396
|
-
}
|
1397
|
-
function ho(n) {
|
1398
|
-
let e, i = (
|
1399
|
-
/*$_*/
|
1400
|
-
n[31]("faceCollector.lowQualityCapture") + ""
|
1401
|
-
), s;
|
1402
|
-
const a = {
|
1403
|
-
c: function() {
|
1404
|
-
e = _("h1"), s = K(i), m(e, "class", "text-3xl font-bold pb-[1em] transition-opacity text-error"), v(e, w, 1130, 12, 46434);
|
1405
|
-
},
|
1406
|
-
m: function(o, r) {
|
1407
|
-
U(o, e, r), f(e, s);
|
1408
|
-
},
|
1409
|
-
p: function(o, r) {
|
1410
|
-
r[1] & /*$_*/
|
1411
|
-
1 && i !== (i = /*$_*/
|
1412
|
-
o[31]("faceCollector.lowQualityCapture") + "") && q(s, i);
|
1413
|
-
},
|
1414
|
-
d: function(o) {
|
1415
|
-
o && W(e);
|
1416
|
-
}
|
1417
|
-
};
|
1418
|
-
return N("SvelteRegisterBlock", {
|
1419
|
-
block: a,
|
1420
|
-
id: ho.name,
|
1421
|
-
type: "if",
|
1422
|
-
source: "(1130:157) ",
|
1423
|
-
ctx: n
|
1424
|
-
}), a;
|
1425
|
-
}
|
1426
|
-
function bo(n) {
|
1427
|
-
let e, i = (
|
1428
|
-
/*$_*/
|
1429
|
-
n[31]("liveness.error.error") + ""
|
1430
|
-
), s, a, l = (
|
1431
|
-
/*$_*/
|
1432
|
-
n[31]("faceCollector.unaliveCapture") + ""
|
1433
|
-
), o;
|
1434
|
-
const r = {
|
1435
|
-
c: function() {
|
1436
|
-
e = _("h1"), s = K(i), a = K(": "), o = K(l), m(e, "class", "text-3xl font-bold pb-[1em] transition-opacity text-error"), v(e, w, 1126, 12, 46094);
|
1437
|
-
},
|
1438
|
-
m: function(b, d) {
|
1439
|
-
U(b, e, d), f(e, s), f(e, a), f(e, o);
|
1440
|
-
},
|
1441
|
-
p: function(b, d) {
|
1442
|
-
d[1] & /*$_*/
|
1443
|
-
1 && i !== (i = /*$_*/
|
1444
|
-
b[31]("liveness.error.error") + "") && q(s, i), d[1] & /*$_*/
|
1445
|
-
1 && l !== (l = /*$_*/
|
1446
|
-
b[31]("faceCollector.unaliveCapture") + "") && q(o, l);
|
1447
|
-
},
|
1448
|
-
d: function(b) {
|
1449
|
-
b && W(e);
|
1450
|
-
}
|
1451
|
-
};
|
1452
|
-
return N("SvelteRegisterBlock", {
|
1453
|
-
block: r,
|
1454
|
-
id: bo.name,
|
1455
|
-
type: "if",
|
1456
|
-
source: "(1126:76) ",
|
1457
|
-
ctx: n
|
1458
|
-
}), r;
|
1459
|
-
}
|
1460
|
-
function go(n) {
|
1461
|
-
let e, i = (
|
1462
|
-
/*$_*/
|
1463
|
-
n[31]("liveness.error.error") + ""
|
1464
|
-
), s, a, l = (
|
1465
|
-
/*$_*/
|
1466
|
-
n[31](
|
1467
|
-
/*livenessError*/
|
1468
|
-
n[20]
|
1469
|
-
) + ""
|
1470
|
-
), o, r;
|
1471
|
-
const u = {
|
1472
|
-
c: function() {
|
1473
|
-
e = _("h1"), s = K(i), a = K(": "), o = K(l), r = K("."), m(e, "class", "text-3xl font-bold pb-[1em] transition-opacity text-error"), v(e, w, 1122, 12, 45851);
|
1474
|
-
},
|
1475
|
-
m: function(d, c) {
|
1476
|
-
U(d, e, c), f(e, s), f(e, a), f(e, o), f(e, r);
|
1477
|
-
},
|
1478
|
-
p: function(d, c) {
|
1479
|
-
c[1] & /*$_*/
|
1480
|
-
1 && i !== (i = /*$_*/
|
1481
|
-
d[31]("liveness.error.error") + "") && q(s, i), c[0] & /*livenessError*/
|
1482
|
-
1048576 | c[1] & /*$_*/
|
1483
|
-
1 && l !== (l = /*$_*/
|
1484
|
-
d[31](
|
1485
|
-
/*livenessError*/
|
1486
|
-
d[20]
|
1487
|
-
) + "") && q(o, l);
|
1488
|
-
},
|
1489
|
-
d: function(d) {
|
1490
|
-
d && W(e);
|
1491
|
-
}
|
1492
|
-
};
|
1493
|
-
return N("SvelteRegisterBlock", {
|
1494
|
-
block: u,
|
1495
|
-
id: go.name,
|
1496
|
-
type: "if",
|
1497
|
-
source: "(1122:10) {#if $requestResult === requestResultEnum.LIVENESS_DETECTION_FAILURE || $requestResult === requestResultEnum.UNKNOWN_LIVENESS_ERROR}",
|
1498
|
-
ctx: n
|
1499
|
-
}), u;
|
1500
|
-
}
|
1501
|
-
function _o(n) {
|
1502
|
-
let e, i, s, a, l = J(), o, r = (
|
1503
|
-
/*unique*/
|
1504
|
-
n[13]
|
1505
|
-
), u, b, d, c, g, O, C, p, k, E, M, B, I, T, ke, ne = !J() && !/*$ready*/
|
1506
|
-
n[35], ue, we = J() && /*waitingIdrndCaptureEvent*/
|
1507
|
-
n[19], He, Te = J() && /*idrndLoading*/
|
1508
|
-
n[17] && /*$cameraStatusStore*/
|
1509
|
-
n[21] === Q.OK, Ue, We, G, x, Ae, Se = l && Yn(n), pe = Mi(n), $ = (
|
1510
|
-
/*showConfigButton*/
|
1511
|
-
n[4] && /*$ready*/
|
1512
|
-
n[35] && Ui(n)
|
1513
|
-
), ee = (
|
1514
|
-
/*showCameraButton*/
|
1515
|
-
n[6] && /*$ready*/
|
1516
|
-
n[35] && Wi(n)
|
1517
|
-
), z = (
|
1518
|
-
/*showAutoCaptureButton*/
|
1519
|
-
n[5] && !/*$automaticCapture*/
|
1520
|
-
n[25] && !/*showCaptureButton*/
|
1521
|
-
n[2] && /*$ready*/
|
1522
|
-
n[35] && Vi(n)
|
1523
|
-
), te = (
|
1524
|
-
/*showCaptureButton*/
|
1525
|
-
n[2] && /*$ready*/
|
1526
|
-
n[35] && Ki(n)
|
1527
|
-
), se = (
|
1528
|
-
/*isCountingDown*/
|
1529
|
-
n[12] && ji(n)
|
1530
|
-
), le = (
|
1531
|
-
/*$enableFaceApi*/
|
1532
|
-
n[34] && !/*isCountingDown*/
|
1533
|
-
n[12] && /*$faceValidationAlert*/
|
1534
|
-
n[26] && Hi(n)
|
1535
|
-
), he = ne && qi(n), ve = we && Ji(n), A = Te && zi(n), H = (
|
1536
|
-
/*$captured*/
|
1537
|
-
n[24] && Xi(n)
|
1538
|
-
);
|
1539
|
-
const Ce = [no, io], fe = [];
|
1540
|
-
function qe(de, y) {
|
1541
|
-
return (!/*idrndClosed*/
|
1542
|
-
de[18] || /*$captured*/
|
1543
|
-
de[24]) && /*showUnconformities*/
|
1544
|
-
de[3] ? 0 : (
|
1545
|
-
/*$cameraStatusStore*/
|
1546
|
-
de[21] !== Q.OK ? 1 : -1
|
1547
|
-
);
|
1548
|
-
}
|
1549
|
-
~(G = qe(n)) && (x = fe[G] = Ce[G](n));
|
1550
|
-
const Je = {
|
1551
|
-
c: function() {
|
1552
|
-
e = _("div"), i = _("div"), s = _("div"), a = _("div"), Se && Se.c(), o = V(), pe.c(), u = V(), $ && $.c(), b = V(), ee && ee.c(), d = V(), z && z.c(), c = V(), te && te.c(), g = V(), O = _("canvas"), C = V(), p = _("canvas"), k = V(), E = _("canvas"), M = V(), se && se.c(), B = V(), le && le.c(), ke = V(), he && he.c(), ue = V(), ve && ve.c(), He = V(), A && A.c(), Ue = V(), H && H.c(), We = V(), x && x.c(), this.c = ce, m(O, "id", "bry-ce-displayCanvas"), m(O, "class", "max-w-full -scale-x-100"), v(O, w, 1018, 8, 40893), m(p, "id", "bry-ce-detectionsCanvas"), m(p, "class", "absolute top-0 left-0 max-w-full -scale-x-100"), v(p, w, 1020, 8, 41019), m(E, "id", "bry-ce-maskCanvas"), m(E, "class", "absolute top-0 left-0 max-w-full -scale-x-100"), v(E, w, 1025, 8, 41188), m(a, "class", I = /*$ready*/
|
1553
|
-
n[35] ? "relative" : "relative w-0 h-0"), a.hidden = T = /*$cameraStatusStore*/
|
1554
|
-
n[21] !== Q.OK || J() && /*idrndLoading*/
|
1555
|
-
(n[17] || /*idrndClosed*/
|
1556
|
-
n[18] || /*waitingIdrndCaptureEvent*/
|
1557
|
-
n[19]), v(a, w, 968, 6, 38973), m(s, "class", "relative mx-auto"), v(s, w, 967, 4, 38936), m(i, "class", "flex flex-col justify-between"), v(i, w, 966, 2, 38863), v(e, w, 962, 0, 38628);
|
1558
|
-
},
|
1559
|
-
l: function(y) {
|
1560
|
-
throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option");
|
1561
|
-
},
|
1562
|
-
m: function(y, j) {
|
1563
|
-
U(y, e, j), f(e, i), f(i, s), f(s, a), Se && Se.m(a, null), f(a, o), pe.m(a, null), f(a, u), $ && $.m(a, null), f(a, b), ee && ee.m(a, null), f(a, d), z && z.m(a, null), f(a, c), te && te.m(a, null), f(a, g), f(a, O), n[55](O), f(a, C), f(a, p), n[56](p), f(a, k), f(a, E), n[57](E), f(a, M), se && se.m(a, null), f(a, B), le && le.m(a, null), f(s, ke), he && he.m(s, null), f(s, ue), ve && ve.m(s, null), f(s, He), A && A.m(s, null), f(s, Ue), H && H.m(s, null), n[60](i), f(e, We), ~G && fe[G].m(e, null), Ae = !0;
|
1564
|
-
},
|
1565
|
-
p: function(y, j) {
|
1566
|
-
l && Se.p(y, j), j[0] & /*unique*/
|
1567
|
-
8192 && $i(r, r = /*unique*/
|
1568
|
-
y[13]) ? (pe.d(1), pe = Mi(y), pe.c(), pe.m(a, u)) : pe.p(y, j), /*showConfigButton*/
|
1569
|
-
y[4] && /*$ready*/
|
1570
|
-
y[35] ? $ ? j[0] & /*showConfigButton*/
|
1571
|
-
16 | j[1] & /*$ready*/
|
1572
|
-
16 && Z($, 1) : ($ = Ui(y), $.c(), Z($, 1), $.m(a, b)) : $ && (Ct(), ae($, 1, 1, () => {
|
1573
|
-
$ = null;
|
1574
|
-
}), yt()), /*showCameraButton*/
|
1575
|
-
y[6] && /*$ready*/
|
1576
|
-
y[35] ? ee ? j[0] & /*showCameraButton*/
|
1577
|
-
64 | j[1] & /*$ready*/
|
1578
|
-
16 && Z(ee, 1) : (ee = Wi(y), ee.c(), Z(ee, 1), ee.m(a, d)) : ee && (Ct(), ae(ee, 1, 1, () => {
|
1579
|
-
ee = null;
|
1580
|
-
}), yt()), /*showAutoCaptureButton*/
|
1581
|
-
y[5] && !/*$automaticCapture*/
|
1582
|
-
y[25] && !/*showCaptureButton*/
|
1583
|
-
y[2] && /*$ready*/
|
1584
|
-
y[35] ? z ? j[0] & /*showAutoCaptureButton, $automaticCapture, showCaptureButton*/
|
1585
|
-
33554468 | j[1] & /*$ready*/
|
1586
|
-
16 && Z(z, 1) : (z = Vi(y), z.c(), Z(z, 1), z.m(a, c)) : z && (Ct(), ae(z, 1, 1, () => {
|
1587
|
-
z = null;
|
1588
|
-
}), yt()), /*showCaptureButton*/
|
1589
|
-
y[2] && /*$ready*/
|
1590
|
-
y[35] ? te ? (te.p(y, j), j[0] & /*showCaptureButton*/
|
1591
|
-
4 | j[1] & /*$ready*/
|
1592
|
-
16 && Z(te, 1)) : (te = Ki(y), te.c(), Z(te, 1), te.m(a, g)) : te && (Ct(), ae(te, 1, 1, () => {
|
1593
|
-
te = null;
|
1594
|
-
}), yt()), /*isCountingDown*/
|
1595
|
-
y[12] ? se ? se.p(y, j) : (se = ji(y), se.c(), se.m(a, B)) : se && (se.d(1), se = null), /*$enableFaceApi*/
|
1596
|
-
y[34] && !/*isCountingDown*/
|
1597
|
-
y[12] && /*$faceValidationAlert*/
|
1598
|
-
y[26] ? le ? le.p(y, j) : (le = Hi(y), le.c(), le.m(a, null)) : le && (le.d(1), le = null), (!Ae || j[1] & /*$ready*/
|
1599
|
-
16 && I !== (I = /*$ready*/
|
1600
|
-
y[35] ? "relative" : "relative w-0 h-0")) && m(a, "class", I), (!Ae || j[0] & /*$cameraStatusStore, idrndLoading, idrndClosed, waitingIdrndCaptureEvent*/
|
1601
|
-
3014656 && T !== (T = /*$cameraStatusStore*/
|
1602
|
-
y[21] !== Q.OK || J() && /*idrndLoading*/
|
1603
|
-
(y[17] || /*idrndClosed*/
|
1604
|
-
y[18] || /*waitingIdrndCaptureEvent*/
|
1605
|
-
y[19]))) && hi(a, "hidden", T), j[1] & /*$ready*/
|
1606
|
-
16 && (ne = !J() && !/*$ready*/
|
1607
|
-
y[35]), ne ? he ? he.p(y, j) : (he = qi(y), he.c(), he.m(s, ue)) : he && (he.d(1), he = null), j[0] & /*waitingIdrndCaptureEvent*/
|
1608
|
-
524288 && (we = J() && /*waitingIdrndCaptureEvent*/
|
1609
|
-
y[19]), we ? ve ? ve.p(y, j) : (ve = Ji(y), ve.c(), ve.m(s, He)) : ve && (ve.d(1), ve = null), j[0] & /*idrndLoading, $cameraStatusStore*/
|
1610
|
-
2228224 && (Te = J() && /*idrndLoading*/
|
1611
|
-
y[17] && /*$cameraStatusStore*/
|
1612
|
-
y[21] === Q.OK), Te ? A ? A.p(y, j) : (A = zi(y), A.c(), A.m(s, Ue)) : A && (A.d(1), A = null), /*$captured*/
|
1613
|
-
y[24] ? H ? H.p(y, j) : (H = Xi(y), H.c(), H.m(s, null)) : H && (H.d(1), H = null);
|
1614
|
-
let Ie = G;
|
1615
|
-
G = qe(y), G === Ie ? ~G && fe[G].p(y, j) : (x && (Ct(), ae(fe[Ie], 1, 1, () => {
|
1616
|
-
fe[Ie] = null;
|
1617
|
-
}), yt()), ~G ? (x = fe[G], x ? x.p(y, j) : (x = fe[G] = Ce[G](y), x.c()), Z(x, 1), x.m(e, null)) : x = null);
|
1618
|
-
},
|
1619
|
-
i: function(y) {
|
1620
|
-
Ae || (Z($), Z(ee), Z(z), Z(te), Z(x), Ae = !0);
|
1621
|
-
},
|
1622
|
-
o: function(y) {
|
1623
|
-
ae($), ae(ee), ae(z), ae(te), ae(x), Ae = !1;
|
1624
|
-
},
|
1625
|
-
d: function(y) {
|
1626
|
-
y && W(e), Se && Se.d(), pe.d(y), $ && $.d(), ee && ee.d(), z && z.d(), te && te.d(), n[55](null), n[56](null), n[57](null), se && se.d(), le && le.d(), he && he.d(), ve && ve.d(), A && A.d(), H && H.d(), n[60](null), ~G && fe[G].d();
|
1627
|
-
}
|
1628
|
-
};
|
1629
|
-
return N("SvelteRegisterBlock", {
|
1630
|
-
block: Je,
|
1631
|
-
id: _o.name,
|
1632
|
-
type: "component",
|
1633
|
-
source: "",
|
1634
|
-
ctx: n
|
1635
|
-
}), Je;
|
1636
|
-
}
|
1637
|
-
function Ni(n, e, i) {
|
1638
|
-
const s = e.videoWidth / e.videoHeight, a = i.width / i.height;
|
1639
|
-
let l = 0, o = 0, r = e.videoWidth, u = e.videoHeight;
|
1640
|
-
s > a ? (r = e.videoHeight * a, l = (e.videoWidth - r) / 2) : s < a && (u = e.videoWidth / a, o = (e.videoHeight - u) / 2), n.drawImage(e, l, o, r, u, 0, 0, i.width, i.height);
|
1641
|
-
}
|
1642
|
-
function Ko(n, e, i) {
|
1643
|
-
let s, a, l, o, r, u, b, d, c, g, O, C, p, k, E, M, B, I, T, ke, ne, ue, we, He, Te, Ue, We, G, x, Ae, Se, pe, $, ee, z, te, se, le;
|
1644
|
-
L(Mt, "retakePhoto"), F(n, Mt, (t) => i(79, s = t)), L(mt, "faceFound"), F(n, mt, (t) => i(81, l = t)), L(re, "cameraStatusStore"), F(n, re, (t) => i(21, o = t)), L(yi, "collectorSelect"), F(n, yi, (t) => i(82, r = t)), L(ht, "facingMode"), F(n, ht, (t) => i(83, u = t)), L(Le, "selectedVideoDeviceId"), F(n, Le, (t) => i(22, b = t)), L(Ei, "cameraDevicesStore"), F(n, Ei, (t) => i(84, d = t)), L(Fe, "videoStore"), F(n, Fe, (t) => i(23, c = t)), L($e, "captured"), F(n, $e, (t) => i(24, g = t)), L(Ut, "clearedVideoSrcObject"), F(n, Ut, (t) => i(85, O = t)), L(ni, "_stream"), F(n, ni, (t) => i(86, C = t)), L(je, "automaticCapture"), F(n, je, (t) => i(25, p = t)), L(Ne, "faceValidationAlert"), F(n, Ne, (t) => i(26, k = t)), L(ki, "showLivenessResultToast"), F(n, ki, (t) => i(87, E = t)), L(Wt, "saved"), F(n, Wt, (t) => i(27, M = t)), L(Vt, "justification"), F(n, Vt, (t) => i(28, B = t)), L(Be, "image"), F(n, Be, (t) => i(29, I = t)), L(ge, "requestResult"), F(n, ge, (t) => i(30, T = t)), L(Et, "_"), F(n, Et, (t) => i(31, ke = t)), L(Me, "unconformitiesStore"), F(n, Me, (t) => i(32, ne = t)), L(et, "originalCapture"), F(n, et, (t) => i(88, ue = t)), L(Ri, "boxStore"), F(n, Ri, (t) => i(89, He = t)), L(Ti, "enableFaceApi"), F(n, Ti, (t) => i(34, Te = t)), L(Si, "eyeDistance"), F(n, Si, (t) => i(90, Ue = t)), L(oi, "screenLocked"), F(n, oi, (t) => i(91, We = t)), L(bt, "initializing"), F(n, bt, (t) => i(92, G = t)), L(gt, "ready"), F(n, gt, (t) => i(35, x = t)), L(Kt, "selectedTab"), F(n, Kt, (t) => i(93, Ae = t)), L(Oi, "captureLivenessIdrndEndpoint"), F(n, Oi, (t) => i(94, Se = t)), L(_t, "blob"), F(n, _t, (t) => i(95, pe = t)), L(ai, "idrndInitialized"), F(n, ai, (t) => i(96, $ = t)), L(si, "idrndVideoStoreDimensions"), F(n, si, (t) => i(97, ee = t)), L(vt, "ovalDimensions"), F(n, vt, (t) => i(98, z = t)), L(Ai, "isLoading"), F(n, Ai, (t) => i(36, te = t)), L(Ii, "showFaceWhileValidating"), F(n, Ii, (t) => i(37, se = t)), L(Bi, "exportButtonDisabled"), F(n, Bi, (t) => i(38, le = t));
|
1645
|
-
let { $$slots: he = {}, $$scope: ve } = e;
|
1646
|
-
Vn("face-collector", he, []);
|
1647
|
-
let A, H, Ce, fe = !1, qe = {}, Je = !1, de = !1, y = !1, j = (/* @__PURE__ */ new Date()).getTime(), { enableMinutiae: Ie } = e, { videoDimensions: ze } = e, { noTabs: it } = e, { weightsPath: nt } = e, { evaluatePhoto: Oe } = e, { showCaptureButton: ot } = e, { showUnconformities: St } = e, { videoOverlay: Xe } = e, { videoOverlayTransparency: Ve } = e, { showConfigButton: Ot } = e, { showAutoCaptureButton: Qe } = e, { showCameraButton: At } = e, { showJustificationField: It } = e, { minEyeToEyeDist: Ke } = e;
|
1648
|
-
const at = Li(!1);
|
1649
|
-
L(at, "startFaceApi"), F(n, at, (t) => i(80, a = t));
|
1650
|
-
const Ye = Li("data:image/png;base64");
|
1651
|
-
L(Ye, "dataTypePrefix"), F(n, Ye, (t) => i(33, we = t));
|
1652
|
-
let { widgetInstance: oe } = e, Pe, X, st = !1, Gt = !1, lt = !0, ye = !0, rt = !1, Zt = 0, Ee = "", Bt = 0, gi = 5, xt = 3e3, Dt = !0, Pt = 0, Lt = !1;
|
1653
|
-
const ct = wn.mixin({
|
1654
|
-
toast: !0,
|
1655
|
-
position: "bottom-left",
|
1656
|
-
timer: 13e3,
|
1657
|
-
timerProgressBar: !0
|
1658
|
-
});
|
1659
|
-
pn(async () => {
|
1660
|
-
Cn("Mounting Face Collector!"), h(bt, G = !0, G), h(gt, x = !1, x), _i(), J() && (import("./index-no-detector_4b302e78_2.2.21-RC06.js"), tn()), Te && (await yn(nt), Je = !0), await Ge(), on();
|
1661
|
-
});
|
1662
|
-
function _i() {
|
1663
|
-
h(mt, l = !1, l), h($e, g = !1, g), h(ht, u = li.FRONT_CAMERA, u), h(re, o = Q.OK, o), Qe && h(je, p = !1, p), h(Wt, M = !1, M), h(ge, T = Y.OK, T), h(et, ue = "", ue), h(Me, ne.unconformities = [], ne);
|
1664
|
-
const t = Qt(ri);
|
1665
|
-
t.closedMouth = !1, t.isPersonCloseEnough = !1, t.isPersonTooclose = !0, t.isPersonInFrame = !1, ri.set(t), h(Ne, k = "", k);
|
1666
|
-
}
|
1667
|
-
function $t(t, S) {
|
1668
|
-
t.clearRect(0, 0, X.width, X.height), t.save(), Xe != "none" ? (Ve > 0 && (t.globalAlpha = Ve / 100), t.fillStyle = Xe, t.fillRect(0, 0, X.width, X.height)) : (t.beginPath(), t.rect(0, 0, X.width, X.height));
|
1669
|
-
let R = X.height * 0.8;
|
1670
|
-
const D = c.videoWidth / 2;
|
1671
|
-
let P = c.videoHeight * 0.5;
|
1672
|
-
(Qe || ot) && (P = c.videoHeight * 0.44), De() && (R = X.height * 0.65, P = c.videoHeight * 0.51);
|
1673
|
-
const ie = R / 1.45;
|
1674
|
-
h(vt, z.width = ie, z), h(vt, z.height = R, z), h(vt, z.y = P, z), t.ellipse(D, P, ie / 2, R / 2, 0, 0, 2 * Math.PI, !0), Ve == 0 && t.clip(), Ni(t, S, X), t.restore(), t.save(), t.beginPath();
|
1675
|
-
const ft = window.getComputedStyle(X).getPropertyValue("--p"), dt = window.getComputedStyle(X).getPropertyValue("--su");
|
1676
|
-
if (t.strokeStyle = `hsl(${ft})`, t.lineWidth = 16, t.ellipse(D, P, ie / 2, R / 2, 0, 0, 2 * Math.PI), t.stroke(), fe && !Lt) {
|
1677
|
-
const Nt = 1 - (Pt - (/* @__PURE__ */ new Date()).getTime()) / xt;
|
1678
|
-
t.save(), t.beginPath(), t.lineWidth = 16, t.strokeStyle = `hsl(${dt})`, t.ellipse(D, P, ie / 2, R / 2, 0, 0 - Math.PI / 2, 1.5 * (Math.PI * 2 * Nt) - Math.PI / 2), t.stroke();
|
1679
|
-
}
|
1680
|
-
t.beginPath();
|
1681
|
-
const me = new Path2D();
|
1682
|
-
me.ellipse(D, P, ie / 2, R / 2, 0, 0, 2 * Math.PI), t.clip(me), Ni(t, S, X), t.restore();
|
1683
|
-
}
|
1684
|
-
function tn() {
|
1685
|
-
oe.addEventListener("open", (t) => {
|
1686
|
-
const S = t.detail[0].video;
|
1687
|
-
h(
|
1688
|
-
si,
|
1689
|
-
ee = {
|
1690
|
-
width: S.videoWidth,
|
1691
|
-
height: S.videoHeight
|
1692
|
-
},
|
1693
|
-
ee
|
1694
|
-
), i(9, A.srcObject = S.srcObject, A), i(17, lt = !1);
|
1695
|
-
function R() {
|
1696
|
-
ye || ($t(X.getContext("2d"), S), tt(A, R, !0));
|
1697
|
-
}
|
1698
|
-
R();
|
1699
|
-
}), oe.addEventListener("error", (t) => {
|
1700
|
-
console.error(t), t.detail[0].message === "Device in use" ? h(re, o = Q.CAMERA_IN_USE_ERROR, o) : t.detail[0].message === "Permission denied" || t.detail[0].message === "Permission dismissed" ? h(re, o = Q.CAMERA_DENIED_ERROR, o) : t.detail[0].message === "Requested device not found" && h(re, o = Q.DEVICE_NOT_FOUND_ERROR, o), i(17, lt = !1);
|
1701
|
-
}), oe.addEventListener("faceDetection", (t) => {
|
1702
|
-
}), oe.addEventListener("close", async (t) => {
|
1703
|
-
g || (st = !1), i(18, ye = !0), i(19, rt = !1), o === Q.OK && h(re, o = Q.CAMERA_CLOSED_ERROR, o);
|
1704
|
-
}), oe.addEventListener("initialize", async (t) => {
|
1705
|
-
Gt = !0, h(ai, $ = !0, $);
|
1706
|
-
}), oe.addEventListener("capture", async (t) => {
|
1707
|
-
i(20, Ee = "");
|
1708
|
-
const { encryptedFile: S, photo: R } = t.detail[0];
|
1709
|
-
h(_t, pe = S, pe), i(19, rt = !1), h(ge, T = Y.OK, T), h(Me, ne.isLoading = !0, ne), h($e, g = !0, g), st = !1;
|
1710
|
-
const D = (await jt(R)).split(",");
|
1711
|
-
if (h(Ye, we = D[0], we), h(Be, I = D[1], I), h(et, ue = D[1], ue), !Se) {
|
1712
|
-
let me, Nt;
|
1713
|
-
try {
|
1714
|
-
({ bodyParts: me, icaoWarnings: Nt } = await Ht(ue, Oe, (await jt(S)).split(",")[1])), window.dispatchEvent(new CustomEvent(
|
1715
|
-
"face-unconformities-validated",
|
1716
|
-
{
|
1717
|
-
detail: {
|
1718
|
-
bodyParts: me,
|
1719
|
-
icaoWarnings: Nt,
|
1720
|
-
status: T
|
1721
|
-
}
|
1722
|
-
}
|
1723
|
-
));
|
1724
|
-
} catch (xe) {
|
1725
|
-
console.error(xe);
|
1726
|
-
let ii = wt.UNKNOWN, Ci = [], _n = [];
|
1727
|
-
if (xe instanceof ci && xe.response?.status === 400)
|
1728
|
-
if (xe.response.data && Array.isArray(xe.response.data.bodyParts)) {
|
1729
|
-
Ci = xe.response.data.bodyParts, _n = xe.response.data.icaoWarnings;
|
1730
|
-
const vn = Ci.find((No) => No.livenessResult.error);
|
1731
|
-
ii = vn?.livenessResult.error_code, h(ge, T = Y.LIVENESS_DETECTION_FAILURE, T), vn?.livenessResult.error_code || h(ge, T = Y.UNKNOWN_LIVENESS_ERROR, T), i(20, Ee = wt[ii]), console.error("Liveness error:", ii);
|
1732
|
-
} else
|
1733
|
-
h(ge, T = Y.TEMPLATE_EXTRACTION_ERROR, T);
|
1734
|
-
else
|
1735
|
-
h(ge, T = Y.UNABLE_TO_COMMUNICATE_WITH_TEMPLATE_EXTRACTION_SERVICE, T), Oe && ct.fire({
|
1736
|
-
icon: "error",
|
1737
|
-
title: "Falha ao comunicar com serviço de Liveness"
|
1738
|
-
});
|
1739
|
-
h(Me, ne.isLoading = !1, ne), window.dispatchEvent(new CustomEvent(
|
1740
|
-
"face-unconformities-validated",
|
1741
|
-
{
|
1742
|
-
detail: {
|
1743
|
-
bodyParts: Ci,
|
1744
|
-
errorCode: ii,
|
1745
|
-
translatedError: ke(Ee),
|
1746
|
-
status: T,
|
1747
|
-
icaoWarnings: _n
|
1748
|
-
}
|
1749
|
-
}
|
1750
|
-
));
|
1751
|
-
return;
|
1752
|
-
}
|
1753
|
-
if (T !== Y.OK) {
|
1754
|
-
h(Me, ne.isLoading = !1, ne);
|
1755
|
-
return;
|
1756
|
-
}
|
1757
|
-
me[0].livenessResult && wi(me[0].livenessResult), me.length !== 0 && me[0].data && h(Be, I = me[0].data, I), qt(Nt);
|
1758
|
-
return;
|
1759
|
-
}
|
1760
|
-
let P, ie;
|
1761
|
-
try {
|
1762
|
-
ie = await En(S), wi(ie.data);
|
1763
|
-
} catch (me) {
|
1764
|
-
h(ge, T = Y.UNKNOWN_LIVENESS_ERROR, T), console.error(me), me instanceof ci && me.response?.status === 400 ? (P = me.response.data.error_code, i(20, Ee = wt[P]), console.error("Liveness error:", P), h(ge, T = Y.LIVENESS_DETECTION_FAILURE, T)) : ct.fire({
|
1765
|
-
icon: "error",
|
1766
|
-
title: "Falha ao comunicar com serviço de Liveness"
|
1767
|
-
});
|
1768
|
-
}
|
1769
|
-
if (T !== Y.OK) {
|
1770
|
-
h(Me, ne.isLoading = !1, ne), window.dispatchEvent(new CustomEvent(
|
1771
|
-
"face-unconformities-validated",
|
1772
|
-
{
|
1773
|
-
detail: {
|
1774
|
-
bodyParts: [
|
1775
|
-
{
|
1776
|
-
bodyPart: "FACE",
|
1777
|
-
data: ue,
|
1778
|
-
livenessBlob: (await jt(S)).split(",")[1],
|
1779
|
-
...ie && { livenessResult: ie }
|
1780
|
-
}
|
1781
|
-
],
|
1782
|
-
...P && { errorCode: P },
|
1783
|
-
...Ee && { translatedError: ke(Ee) },
|
1784
|
-
status: T
|
1785
|
-
}
|
1786
|
-
}
|
1787
|
-
));
|
1788
|
-
return;
|
1789
|
-
}
|
1790
|
-
let { bodyParts: ft, icaoWarnings: dt } = await Ht(ue, Oe);
|
1791
|
-
window.dispatchEvent(new CustomEvent(
|
1792
|
-
"face-unconformities-validated",
|
1793
|
-
{
|
1794
|
-
detail: {
|
1795
|
-
bodyParts: ft,
|
1796
|
-
icaoWarnings: dt,
|
1797
|
-
status: T,
|
1798
|
-
errorCode: P,
|
1799
|
-
...Ee && { translatedError: ke(Ee) }
|
1800
|
-
}
|
1801
|
-
}
|
1802
|
-
)), ft[0].data && h(Be, I = ft[0].data, I), qt(dt);
|
1803
|
-
});
|
1804
|
-
}
|
1805
|
-
async function Ge(t) {
|
1806
|
-
const [S, R] = (ze ?? "")?.replaceAll(" ", "")?.split("x")?.map((D) => D ? parseInt(D) : void 0);
|
1807
|
-
if (!(!S || !R)) {
|
1808
|
-
if (h(Fe, c = { videoWidth: S, videoHeight: R }, c), J() && R < S && De() && h(Fe, c = { videoWidth: R, videoHeight: S }, c), J()) {
|
1809
|
-
ei();
|
1810
|
-
return;
|
1811
|
-
}
|
1812
|
-
await nn(S, R, t);
|
1813
|
-
}
|
1814
|
-
}
|
1815
|
-
async function ei() {
|
1816
|
-
if (J() && (h(re, o = Q.OK, o), oe && "openCamera" in oe && oe.openCamera(), st = !0, i(18, ye = !1), i(17, lt = !0), !d[0]?.deviceId)) {
|
1817
|
-
const [t, S] = (ze ?? "")?.replaceAll(" ", "")?.split("x")?.map((R) => R ? parseInt(R) : void 0);
|
1818
|
-
if (!t || !S)
|
1819
|
-
return;
|
1820
|
-
await Di(t, S, u), await ui();
|
1821
|
-
}
|
1822
|
-
}
|
1823
|
-
async function ut() {
|
1824
|
-
if (Te && !Je)
|
1825
|
-
return tt(A, ut);
|
1826
|
-
if (A) {
|
1827
|
-
if (Ae !== fi.Face && !it)
|
1828
|
-
return tt(A, ut);
|
1829
|
-
h(gt, x = !0, x), h(bt, G = !1, G), Te ? (a || h(at, a = !0, a), J() || $t(X.getContext("2d"), A), tt(A, ut)) : ($t(X.getContext("2d"), A), tt(A, ut));
|
1830
|
-
}
|
1831
|
-
}
|
1832
|
-
async function vi() {
|
1833
|
-
if (We && (Pi(), h(oi, We = !1, We)), Ke > 0 && Ue < Ke) {
|
1834
|
-
let t = "FACE_MUITO_PEQUENA";
|
1835
|
-
const S = Fi[t];
|
1836
|
-
t = Fi.FACE_MUITO_PEQUENA, window.dispatchEvent(new CustomEvent(
|
1837
|
-
"low-quality-face",
|
1838
|
-
{
|
1839
|
-
detail: {
|
1840
|
-
errorCode: t,
|
1841
|
-
translatedError: ke(S),
|
1842
|
-
bodyParts: [
|
1843
|
-
{
|
1844
|
-
bodyPart: "FACE",
|
1845
|
-
minEyeToEyeDist: Ke,
|
1846
|
-
capturedEyeToEyeDist: Ue
|
1847
|
-
}
|
1848
|
-
]
|
1849
|
-
}
|
1850
|
-
}
|
1851
|
-
)), ct.fire({
|
1852
|
-
icon: "error",
|
1853
|
-
title: ke(S)
|
1854
|
-
});
|
1855
|
-
return;
|
1856
|
-
}
|
1857
|
-
if (h(ge, T = Y.OK, T), J()) {
|
1858
|
-
i(19, rt = !0), oe.takePhoto();
|
1859
|
-
return;
|
1860
|
-
}
|
1861
|
-
h($e, g = !0, g);
|
1862
|
-
try {
|
1863
|
-
if (Te) {
|
1864
|
-
const [t] = await (await import("./face_api_0e3ce8c8_2.2.21-RC06.js")).extractFaces(A, [He]), S = t.toDataURL("image/jpeg").split(",");
|
1865
|
-
h(Ye, we = S[0], we), h(Be, I = S[1], I), h(et, ue = S[1], ue);
|
1866
|
-
let R, D;
|
1867
|
-
({ bodyParts: R, icaoWarnings: D } = await Ht(I, Oe)), window.dispatchEvent(new CustomEvent(
|
1868
|
-
"face-unconformities-validated",
|
1869
|
-
{
|
1870
|
-
detail: {
|
1871
|
-
bodyParts: R,
|
1872
|
-
icaoWarnings: D,
|
1873
|
-
status: T
|
1874
|
-
}
|
1875
|
-
}
|
1876
|
-
)), R.length !== 0 && R[0].data && h(Be, I = R[0].data, I), qt(D);
|
1877
|
-
} else {
|
1878
|
-
const t = document.createElement("canvas"), S = t.getContext("2d");
|
1879
|
-
t.width = A.width, t.height = A.height, S?.drawImage(A, 0, 0, t.width, t.height);
|
1880
|
-
const R = t.toDataURL("image/jpeg").split(",");
|
1881
|
-
h(Ye, we = R[0], we), h(Be, I = R[1], I), h(et, ue = R[1], ue);
|
1882
|
-
let { bodyParts: D, icaoWarnings: P } = await Ht(I, Oe);
|
1883
|
-
window.dispatchEvent(new CustomEvent(
|
1884
|
-
"face-unconformities-validated",
|
1885
|
-
{
|
1886
|
-
detail: {
|
1887
|
-
bodyParts: D,
|
1888
|
-
icaoWarnings: P,
|
1889
|
-
status: T
|
1890
|
-
}
|
1891
|
-
}
|
1892
|
-
)), D.length !== 0 && D[0].data && h(Be, I = D[0].data, I), qt(P);
|
1893
|
-
}
|
1894
|
-
} catch (t) {
|
1895
|
-
console.error(t);
|
1896
|
-
let S = wt.UNKNOWN, R = [], D = [];
|
1897
|
-
if (t instanceof ci && t.response?.status === 400)
|
1898
|
-
if (t.response.data && Array.isArray(t.response.data.bodyParts)) {
|
1899
|
-
R = t.response.data.bodyParts, D = t.response.data.icaoWarnings;
|
1900
|
-
const P = R.find((ie) => ie.livenessResult.error);
|
1901
|
-
S = P?.livenessResult.error_code, h(ge, T = Y.LIVENESS_DETECTION_FAILURE, T), P?.livenessResult.error_code || h(ge, T = Y.UNKNOWN_LIVENESS_ERROR, T), i(20, Ee = wt[S]), console.error("Liveness error:", S);
|
1902
|
-
} else
|
1903
|
-
h(ge, T = Y.TEMPLATE_EXTRACTION_ERROR, T);
|
1904
|
-
else
|
1905
|
-
h(ge, T = Y.UNABLE_TO_COMMUNICATE_WITH_TEMPLATE_EXTRACTION_SERVICE, T), Oe && ct.fire({
|
1906
|
-
icon: "error",
|
1907
|
-
title: "Falha ao comunicar com serviço de Liveness"
|
1908
|
-
});
|
1909
|
-
h(Me, ne.isLoading = !1, ne), window.dispatchEvent(new CustomEvent(
|
1910
|
-
"face-unconformities-validated",
|
1911
|
-
{
|
1912
|
-
detail: {
|
1913
|
-
bodyParts: R,
|
1914
|
-
errorCode: S,
|
1915
|
-
translatedError: ke(Ee),
|
1916
|
-
status: T,
|
1917
|
-
icaoWarnings: D
|
1918
|
-
}
|
1919
|
-
}
|
1920
|
-
));
|
1921
|
-
return;
|
1922
|
-
}
|
1923
|
-
}
|
1924
|
-
function Ft() {
|
1925
|
-
const t = {
|
1926
|
-
bodyPart: "FACE",
|
1927
|
-
data: I,
|
1928
|
-
justification: B
|
1929
|
-
};
|
1930
|
-
h(Wt, M = !0, M), Qt(_t) && jt(Qt(_t)).then((S) => {
|
1931
|
-
t.livenessBlob = S.split(",")[1];
|
1932
|
-
}), window.dispatchEvent(new CustomEvent("export-face", { detail: t }));
|
1933
|
-
}
|
1934
|
-
function Ze() {
|
1935
|
-
window.dispatchEvent(new CustomEvent("face-scrapped")), _i(), ye && ei();
|
1936
|
-
}
|
1937
|
-
function wi(t) {
|
1938
|
-
let S = "", R = "success";
|
1939
|
-
t.isAlive ? S = `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 && (R = "error", S = `Vivacidade de face (${t.face_liveness.probability.toFixed(2)}) e de captura (${t.capture_liveness.probability}, ${t.capture_liveness.score.toFixed(2)}) insuficientes!`), E && ct.fire({ icon: R, title: S });
|
1940
|
-
}
|
1941
|
-
async function nn(t, S, R) {
|
1942
|
-
try {
|
1943
|
-
const { deviceId: D, width: P, height: ie, aspectRatio: ft, facingMode: dt, touchPoints: me } = await Di(t, S, u, R);
|
1944
|
-
P < t && ie < S && h(
|
1945
|
-
Fe,
|
1946
|
-
c = {
|
1947
|
-
videoWidth: P,
|
1948
|
-
videoHeight: ie
|
1949
|
-
},
|
1950
|
-
c
|
1951
|
-
), De() && (!dt || me <= 1) && P > ie && h(
|
1952
|
-
Fe,
|
1953
|
-
c = {
|
1954
|
-
videoWidth: ie,
|
1955
|
-
videoHeight: P
|
1956
|
-
},
|
1957
|
-
c
|
1958
|
-
), h(Le, b = D || d[0].deviceId, b);
|
1959
|
-
} catch (D) {
|
1960
|
-
const P = D;
|
1961
|
-
i(18, ye = !0);
|
1962
|
-
const ie = Jt(D) && D.constraint ? D.constraint : "";
|
1963
|
-
console.error(P, ie), Jt(P) && "message" in P && P.message.includes("Permission denied") && (console.error("User didn't give permission to use camera!"), h(re, o = Q.CAMERA_DENIED_ERROR, o)), Jt(P) && "message" in P && P.message.includes("Requested device not found") && h(re, o = Q.DEVICE_NOT_FOUND_ERROR, o), (ie.includes("width") || ie.includes("height")) && (console.error(`Camera does not meet the minimum supported requirements! (${ie})`), h(re, o = Q.CAMERA_UNSUPPORTED, o));
|
1964
|
-
}
|
1965
|
-
}
|
1966
|
-
async function ti() {
|
1967
|
-
h(Le, b = "", b), await Ge();
|
1968
|
-
}
|
1969
|
-
function on() {
|
1970
|
-
navigator.mediaDevices.ondevicechange = async (t) => {
|
1971
|
-
await ui(), o !== Q.OK ? await ti() : (!J() && !C.active || J() && !ye) && (zt(oe), h(re, o = Q.DEVICE_NOT_FOUND_ERROR, o), i(18, ye = !0));
|
1972
|
-
};
|
1973
|
-
}
|
1974
|
-
async function an() {
|
1975
|
-
h(mt, l = !1, l);
|
1976
|
-
const t = (/* @__PURE__ */ new Date()).getTime();
|
1977
|
-
if (t - j > 5e3) {
|
1978
|
-
i(14, y = !0), j = t;
|
1979
|
-
try {
|
1980
|
-
const R = await Bn(A);
|
1981
|
-
if (R < 50) {
|
1982
|
-
h(Ne, k = "faceCollector.illuminationTooLow", k);
|
1983
|
-
return;
|
1984
|
-
}
|
1985
|
-
if (R > 180) {
|
1986
|
-
h(Ne, k = "faceCollector.illuminationTooHigh", k);
|
1987
|
-
return;
|
1988
|
-
}
|
1989
|
-
} catch (R) {
|
1990
|
-
console.warn("An error occurred while getting the video lighting level: ", R);
|
1991
|
-
}
|
1992
|
-
try {
|
1993
|
-
if (await Dn(A) < 5) {
|
1994
|
-
h(Ne, k = "faceCollector.lowSharpness", k);
|
1995
|
-
return;
|
1996
|
-
}
|
1997
|
-
} catch (R) {
|
1998
|
-
console.warn("An error occurred while getting the video sharpness level: ", R);
|
1999
|
-
}
|
2000
|
-
h(Ne, k = "faceCollector.faceWasNotFound", k);
|
2001
|
-
} else
|
2002
|
-
de || (de = !0, setTimeout(
|
2003
|
-
() => {
|
2004
|
-
let R = [
|
2005
|
-
"faceCollector.faceWasNotFound",
|
2006
|
-
"faceCollector.illuminationTooLow",
|
2007
|
-
"faceCollector.lowSharpness",
|
2008
|
-
"faceCollector.illuminationTooHigh"
|
2009
|
-
];
|
2010
|
-
de = !1, k && !R.includes(k) && h(Ne, k = "", k);
|
2011
|
-
},
|
2012
|
-
1500
|
2013
|
-
));
|
2014
|
-
}
|
2015
|
-
const sn = Fe.subscribe((t) => {
|
2016
|
-
A && H && (i(9, A.width = t.videoWidth, A), i(9, A.height = t.videoHeight, A), i(10, H.width = t.videoWidth, H), i(10, H.height = t.videoHeight, H), i(15, Pe.width = t.videoWidth, Pe), i(15, Pe.height = t.videoHeight, Pe), i(16, X.width = t.videoWidth, X), i(16, X.height = t.videoHeight, X));
|
2017
|
-
}), ln = ri.subscribe((t) => {
|
2018
|
-
if (r == "DOCUMENT")
|
2019
|
-
return;
|
2020
|
-
let S = "";
|
2021
|
-
if (t.isPersonCloseEnough ? t.isPersonTooclose ? S = "faceCollector.moveAwayCamera" : t.isPersonInFrame ? t.closedMouth || (S = "faceCollector.dontOpenMouth") : S = "faceCollector.stayInFrame" : S = "faceCollector.comeCloserCamera", l && kn(S), !g && p && l && !fe && t.isPersonInFrame && t.closedMouth && !(!t.isPersonCloseEnough || t.isPersonTooclose)) {
|
2022
|
-
i(12, fe = !0), Pt = (/* @__PURE__ */ new Date()).getTime() + xt;
|
2023
|
-
const R = setInterval(
|
2024
|
-
() => {
|
2025
|
-
if (!p || g || J() && ye || !t.isPersonCloseEnough || t.isPersonTooclose || !t.closedMouth || !t.isPersonInFrame) {
|
2026
|
-
i(12, fe = !1), Lt = !0, setTimeout(
|
2027
|
-
() => {
|
2028
|
-
Lt = !1;
|
2029
|
-
},
|
2030
|
-
1500
|
2031
|
-
), clearInterval(R);
|
2032
|
-
return;
|
2033
|
-
}
|
2034
|
-
const D = (/* @__PURE__ */ new Date()).getTime();
|
2035
|
-
Math.floor((Pt - D) % (1e3 * 60) / 1e3) <= 0 && (clearInterval(R), i(12, fe = !1), vi());
|
2036
|
-
},
|
2037
|
-
100
|
2038
|
-
);
|
2039
|
-
}
|
2040
|
-
}), rn = $e.subscribe((t) => {
|
2041
|
-
Ce && (t ? (Ce.classList.remove("flex"), Ce.classList.add("hidden")) : (Ce.classList.add("flex"), Ce.classList.remove("hidden")));
|
2042
|
-
}), cn = Ut.subscribe((t) => {
|
2043
|
-
A && t && (console.log("setting null in video srcObject"), i(9, A.srcObject = null, A), i(9, A.src = "", A), h(Le, b = null, b));
|
2044
|
-
});
|
2045
|
-
Kt.subscribe(async (t) => {
|
2046
|
-
t === fi.Face && (await ui(), J() && h(Le, b = d[0]?.deviceId, b));
|
2047
|
-
});
|
2048
|
-
const un = Le.subscribe(async (t) => {
|
2049
|
-
if (!t || r == "DOCUMENT" || J() && ye)
|
2050
|
-
return;
|
2051
|
-
A || i(13, qe = {});
|
2052
|
-
const { videoHeight: S, videoWidth: R } = c;
|
2053
|
-
try {
|
2054
|
-
if (J()) {
|
2055
|
-
await zt(oe), await ei();
|
2056
|
-
return;
|
2057
|
-
}
|
2058
|
-
const D = await Rn(R, S, t);
|
2059
|
-
i(9, A.srcObject = D, A), h(ni, C = D, C), h(Ut, O = !1, O), Dt ? h(re, o = Q.OK, o) : h(re, o = Q.CAMERA_ORIENTATION_PORTRAIT, o), D.getTracks().forEach((P) => {
|
2060
|
-
P.readyState === "live" && console.log(`Camera ${P.label} opened successfully!`);
|
2061
|
-
});
|
2062
|
-
} catch (D) {
|
2063
|
-
const P = D;
|
2064
|
-
i(18, ye = !0), Jt(P) && "message" in P && P.message.includes("Requested device not found") && h(re, o = Q.DEVICE_NOT_FOUND_ERROR, o);
|
2065
|
-
}
|
2066
|
-
}), fn = Kt.subscribe(async (t) => {
|
2067
|
-
t === fi.Face && J() && !st && !g && Gt && await Ge();
|
2068
|
-
}), dn = at.subscribe(async (t) => {
|
2069
|
-
t && pi();
|
2070
|
-
}), mn = Tn.subscribe(async (t) => {
|
2071
|
-
if (c) {
|
2072
|
-
if (zt(), !De()) {
|
2073
|
-
const R = (d.findIndex((P) => P.deviceId === b) + 1) % d.length, D = d[R].deviceId;
|
2074
|
-
J() ? h(Le, b = D, b) : await Ge(D);
|
2075
|
-
return;
|
2076
|
-
}
|
2077
|
-
t ? (h(ht, u = li.REAR_CAMERA, u), await Ge()) : (h(ht, u = li.FRONT_CAMERA, u), await Ge());
|
2078
|
-
}
|
2079
|
-
}), hn = Sn.subscribe(async (t) => {
|
2080
|
-
!t.isSupported || !De() || r != "FACE" || (Dt = t.orientation.includes("portrait"), Dt ? h(re, o = Q.OK, o) : h(re, o = Q.CAMERA_ORIENTATION_PORTRAIT, o));
|
2081
|
-
});
|
2082
|
-
async function pi() {
|
2083
|
-
let t;
|
2084
|
-
if (Bt >= gi) {
|
2085
|
-
Bt = 0;
|
2086
|
-
const S = await In(), R = await import("./face_api_0e3ce8c8_2.2.21-RC06.js");
|
2087
|
-
let D;
|
2088
|
-
D = R.detectSingleFace(X, S), t = await D.withFaceLandmarks(), H.getContext("2d")?.clearRect(0, 0, H.width, H.height), t != null ? (An(t, H, Ie), h(mt, l = !0, l), i(14, y = !0), j = (/* @__PURE__ */ new Date()).getTime()) : an();
|
2089
|
-
} else
|
2090
|
-
Bt++;
|
2091
|
-
a && tt(A, pi);
|
2092
|
-
}
|
2093
|
-
Mt.subscribe(async (t) => {
|
2094
|
-
t && (Ze(), h(Mt, s = !1, s));
|
2095
|
-
});
|
2096
|
-
const bn = gt.subscribe((t) => {
|
2097
|
-
t && window.dispatchEvent(new CustomEvent("brycc-camera-ready"));
|
2098
|
-
}), gn = bt.subscribe((t) => {
|
2099
|
-
t && window.dispatchEvent(new CustomEvent("brycc-face-initialized"));
|
2100
|
-
});
|
2101
|
-
On(() => {
|
2102
|
-
zt(), rn(), ln(), sn(), cn(), un(), fn(), clearInterval(Zt), dn(), mn(), hn(), bn(), gn(), Pi(), Zt = 0;
|
2103
|
-
}), n.$$.on_mount.push(function() {
|
2104
|
-
Ie === void 0 && !("enableMinutiae" in e || n.$$.bound[n.$$.props.enableMinutiae]) && _e.warn("<face-collector> was created without expected prop 'enableMinutiae'"), ze === void 0 && !("videoDimensions" in e || n.$$.bound[n.$$.props.videoDimensions]) && _e.warn("<face-collector> was created without expected prop 'videoDimensions'"), it === void 0 && !("noTabs" in e || n.$$.bound[n.$$.props.noTabs]) && _e.warn("<face-collector> was created without expected prop 'noTabs'"), nt === void 0 && !("weightsPath" in e || n.$$.bound[n.$$.props.weightsPath]) && _e.warn("<face-collector> was created without expected prop 'weightsPath'"), Oe === void 0 && !("evaluatePhoto" in e || n.$$.bound[n.$$.props.evaluatePhoto]) && _e.warn("<face-collector> was created without expected prop 'evaluatePhoto'"), ot === void 0 && !("showCaptureButton" in e || n.$$.bound[n.$$.props.showCaptureButton]) && _e.warn("<face-collector> was created without expected prop 'showCaptureButton'"), St === void 0 && !("showUnconformities" in e || n.$$.bound[n.$$.props.showUnconformities]) && _e.warn("<face-collector> was created without expected prop 'showUnconformities'"), Xe === void 0 && !("videoOverlay" in e || n.$$.bound[n.$$.props.videoOverlay]) && _e.warn("<face-collector> was created without expected prop 'videoOverlay'"), Ve === void 0 && !("videoOverlayTransparency" in e || n.$$.bound[n.$$.props.videoOverlayTransparency]) && _e.warn("<face-collector> was created without expected prop 'videoOverlayTransparency'"), Ot === void 0 && !("showConfigButton" in e || n.$$.bound[n.$$.props.showConfigButton]) && _e.warn("<face-collector> was created without expected prop 'showConfigButton'"), Qe === void 0 && !("showAutoCaptureButton" in e || n.$$.bound[n.$$.props.showAutoCaptureButton]) && _e.warn("<face-collector> was created without expected prop 'showAutoCaptureButton'"), At === void 0 && !("showCameraButton" in e || n.$$.bound[n.$$.props.showCameraButton]) && _e.warn("<face-collector> was created without expected prop 'showCameraButton'"), It === void 0 && !("showJustificationField" in e || n.$$.bound[n.$$.props.showJustificationField]) && _e.warn("<face-collector> was created without expected prop 'showJustificationField'"), Ke === void 0 && !("minEyeToEyeDist" in e || n.$$.bound[n.$$.props.minEyeToEyeDist]) && _e.warn("<face-collector> was created without expected prop 'minEyeToEyeDist'"), oe === void 0 && !("widgetInstance" in e || n.$$.bound[n.$$.props.widgetInstance]) && _e.warn("<face-collector> was created without expected prop 'widgetInstance'");
|
2105
|
-
});
|
2106
|
-
const vo = [
|
2107
|
-
"enableMinutiae",
|
2108
|
-
"videoDimensions",
|
2109
|
-
"noTabs",
|
2110
|
-
"weightsPath",
|
2111
|
-
"evaluatePhoto",
|
2112
|
-
"showCaptureButton",
|
2113
|
-
"showUnconformities",
|
2114
|
-
"videoOverlay",
|
2115
|
-
"videoOverlayTransparency",
|
2116
|
-
"showConfigButton",
|
2117
|
-
"showAutoCaptureButton",
|
2118
|
-
"showCameraButton",
|
2119
|
-
"showJustificationField",
|
2120
|
-
"minEyeToEyeDist",
|
2121
|
-
"widgetInstance"
|
2122
|
-
];
|
2123
|
-
Object.keys(e).forEach((t) => {
|
2124
|
-
!~vo.indexOf(t) && t.slice(0, 2) !== "$$" && t !== "slot" && _e.warn(`<face-collector> was created with unknown prop '${t}'`);
|
2125
|
-
});
|
2126
|
-
function wo(t) {
|
2127
|
-
pt[t ? "unshift" : "push"](() => {
|
2128
|
-
oe = t, i(0, oe);
|
2129
|
-
});
|
2130
|
-
}
|
2131
|
-
function po(t) {
|
2132
|
-
pt[t ? "unshift" : "push"](() => {
|
2133
|
-
A = t, i(9, A);
|
2134
|
-
});
|
2135
|
-
}
|
2136
|
-
const Co = () => {
|
2137
|
-
J() || h(
|
2138
|
-
Fe,
|
2139
|
-
c = {
|
2140
|
-
videoHeight: A.videoHeight,
|
2141
|
-
videoWidth: A.videoWidth
|
2142
|
-
},
|
2143
|
-
c
|
2144
|
-
);
|
2145
|
-
};
|
2146
|
-
function yo(t) {
|
2147
|
-
pt[t ? "unshift" : "push"](() => {
|
2148
|
-
X = t, i(16, X);
|
2149
|
-
});
|
2150
|
-
}
|
2151
|
-
function Eo(t) {
|
2152
|
-
pt[t ? "unshift" : "push"](() => {
|
2153
|
-
H = t, i(10, H);
|
2154
|
-
});
|
2155
|
-
}
|
2156
|
-
function ko(t) {
|
2157
|
-
pt[t ? "unshift" : "push"](() => {
|
2158
|
-
Pe = t, i(15, Pe);
|
2159
|
-
});
|
2160
|
-
}
|
2161
|
-
const Ro = () => Ft(), To = () => Ze();
|
2162
|
-
function So(t) {
|
2163
|
-
pt[t ? "unshift" : "push"](() => {
|
2164
|
-
Ce = t, i(11, Ce);
|
2165
|
-
});
|
2166
|
-
}
|
2167
|
-
const Oo = () => Ft(), Ao = () => Ze();
|
2168
|
-
function Io() {
|
2169
|
-
B = this.value, Vt.set(B);
|
2170
|
-
}
|
2171
|
-
const Bo = () => Ft(), Do = () => Ze();
|
2172
|
-
function Po() {
|
2173
|
-
B = this.value, Vt.set(B);
|
2174
|
-
}
|
2175
|
-
const Lo = () => Ze(), Fo = async () => {
|
2176
|
-
await ti();
|
2177
|
-
};
|
2178
|
-
return n.$$set = (t) => {
|
2179
|
-
"enableMinutiae" in t && i(45, Ie = t.enableMinutiae), "videoDimensions" in t && i(46, ze = t.videoDimensions), "noTabs" in t && i(47, it = t.noTabs), "weightsPath" in t && i(48, nt = t.weightsPath), "evaluatePhoto" in t && i(1, Oe = t.evaluatePhoto), "showCaptureButton" in t && i(2, ot = t.showCaptureButton), "showUnconformities" in t && i(3, St = t.showUnconformities), "videoOverlay" in t && i(49, Xe = t.videoOverlay), "videoOverlayTransparency" in t && i(50, Ve = t.videoOverlayTransparency), "showConfigButton" in t && i(4, Ot = t.showConfigButton), "showAutoCaptureButton" in t && i(5, Qe = t.showAutoCaptureButton), "showCameraButton" in t && i(6, At = t.showCameraButton), "showJustificationField" in t && i(7, It = t.showJustificationField), "minEyeToEyeDist" in t && i(51, Ke = t.minEyeToEyeDist), "widgetInstance" in t && i(0, oe = t.widgetInstance);
|
2180
|
-
}, n.$capture_state = () => ({
|
2181
|
-
CameraStatus: Jn,
|
2182
|
-
onDestroy: On,
|
2183
|
-
onMount: pn,
|
2184
|
-
_: Et,
|
2185
|
-
isLoading: Ai,
|
2186
|
-
get: Qt,
|
2187
|
-
writable: Li,
|
2188
|
-
selectedTab: Kt,
|
2189
|
-
TabEnum: fi,
|
2190
|
-
cameraDeniedPermission: Mo,
|
2191
|
-
faceValidationsStore: ri,
|
2192
|
-
getFaceUnconformities: Ht,
|
2193
|
-
image: Be,
|
2194
|
-
unconformitiesStore: Me,
|
2195
|
-
setupStream: Rn,
|
2196
|
-
videoStore: Fe,
|
2197
|
-
requestResult: ge,
|
2198
|
-
cameraDevicesStore: Ei,
|
2199
|
-
justification: Vt,
|
2200
|
-
saved: Wt,
|
2201
|
-
captured: $e,
|
2202
|
-
_stream: ni,
|
2203
|
-
shutOffCamera: zt,
|
2204
|
-
ready: gt,
|
2205
|
-
initializing: bt,
|
2206
|
-
clearedVideoSrcObject: Ut,
|
2207
|
-
enumerateDevices: ui,
|
2208
|
-
originalCapture: et,
|
2209
|
-
automaticCapture: je,
|
2210
|
-
selectedVideoDeviceId: Le,
|
2211
|
-
translateAndSetUnconformities: qt,
|
2212
|
-
requestResultEnum: Y,
|
2213
|
-
retakePhoto: Mt,
|
2214
|
-
showFaceWhileValidating: Ii,
|
2215
|
-
getVideoDimensions: Di,
|
2216
|
-
FaceExportStrategy: Kn,
|
2217
|
-
orientationData: Sn,
|
2218
|
-
FacingModeEnum: li,
|
2219
|
-
facingMode: ht,
|
2220
|
-
unconformityToi18nKey: Fi,
|
2221
|
-
swapCamera: Tn,
|
2222
|
-
ConfBtn: jn,
|
2223
|
-
CameraBtn: zn,
|
2224
|
-
AutoCaptureBtn: en,
|
2225
|
-
ExportBtn: Hn,
|
2226
|
-
enableStrategy: qn,
|
2227
|
-
exportButtonDisabled: Bi,
|
2228
|
-
boxStore: Ri,
|
2229
|
-
drawDetectionsInFace: An,
|
2230
|
-
enableFaceApi: Ti,
|
2231
|
-
faceFound: mt,
|
2232
|
-
getFaceDetectorOptions: In,
|
2233
|
-
ovalDimensions: vt,
|
2234
|
-
faceValidationAlert: Ne,
|
2235
|
-
eyeDistance: Si,
|
2236
|
-
setValidationAlert: kn,
|
2237
|
-
blobToBase64: jt,
|
2238
|
-
isMobile: De,
|
2239
|
-
isObject: Jt,
|
2240
|
-
loadFaceApiAndWeights: yn,
|
2241
|
-
loopCaller: tt,
|
2242
|
-
unLockScreen: Pi,
|
2243
|
-
getImageLightness: Bn,
|
2244
|
-
getImageSharpness: Dn,
|
2245
|
-
collectorSelect: yi,
|
2246
|
-
isLivenessEnabled: J,
|
2247
|
-
screenLocked: oi,
|
2248
|
-
loadingGif: mi,
|
2249
|
-
getLivenessIdrnd: En,
|
2250
|
-
blob: _t,
|
2251
|
-
idrndErrorToi18nKey: wt,
|
2252
|
-
showLivenessResultToast: ki,
|
2253
|
-
captureLivenessIdrndEndpoint: Oi,
|
2254
|
-
idrndInitialized: ai,
|
2255
|
-
idrndVideoStoreDimensions: si,
|
2256
|
-
Swal: wn,
|
2257
|
-
AxiosError: ci,
|
2258
|
-
cameraStatusStore: re,
|
2259
|
-
CameraStatusEnum: Q,
|
2260
|
-
log: Cn,
|
2261
|
-
TakePictureBtn: Xn,
|
2262
|
-
video: A,
|
2263
|
-
detectionsCanvas: H,
|
2264
|
-
enclosingDiv: Ce,
|
2265
|
-
isCountingDown: fe,
|
2266
|
-
unique: qe,
|
2267
|
-
loadedFaceApiAndWeights: Je,
|
2268
|
-
waitingFaceNotFoundTimeout: de,
|
2269
|
-
enableCaptureButton: y,
|
2270
|
-
faceFoundStartTime: j,
|
2271
|
-
enableMinutiae: Ie,
|
2272
|
-
videoDimensions: ze,
|
2273
|
-
noTabs: it,
|
2274
|
-
weightsPath: nt,
|
2275
|
-
evaluatePhoto: Oe,
|
2276
|
-
showCaptureButton: ot,
|
2277
|
-
showUnconformities: St,
|
2278
|
-
videoOverlay: Xe,
|
2279
|
-
videoOverlayTransparency: Ve,
|
2280
|
-
showConfigButton: Ot,
|
2281
|
-
showAutoCaptureButton: Qe,
|
2282
|
-
showCameraButton: At,
|
2283
|
-
showJustificationField: It,
|
2284
|
-
minEyeToEyeDist: Ke,
|
2285
|
-
startFaceApi: at,
|
2286
|
-
dataTypePrefix: Ye,
|
2287
|
-
widgetInstance: oe,
|
2288
|
-
maskCanvas: Pe,
|
2289
|
-
displayCanvas: X,
|
2290
|
-
capturing: st,
|
2291
|
-
initialized: Gt,
|
2292
|
-
idrndLoading: lt,
|
2293
|
-
idrndClosed: ye,
|
2294
|
-
waitingIdrndCaptureEvent: rt,
|
2295
|
-
intervalId: Zt,
|
2296
|
-
livenessError: Ee,
|
2297
|
-
faceApiCounter: Bt,
|
2298
|
-
faceApiFrameRate: gi,
|
2299
|
-
countDownCapture: xt,
|
2300
|
-
rightOrientation: Dt,
|
2301
|
-
countDownFinishTime: Pt,
|
2302
|
-
disableCountDown: Lt,
|
2303
|
-
toast: ct,
|
2304
|
-
resetFaceCollector: _i,
|
2305
|
-
drawOval: $t,
|
2306
|
-
drawVideoOnCanvas: Ni,
|
2307
|
-
registerIdrndListeners: tn,
|
2308
|
-
openCamera: Ge,
|
2309
|
-
openCameraLiveness: ei,
|
2310
|
-
play: ut,
|
2311
|
-
capture: vi,
|
2312
|
-
save: Ft,
|
2313
|
-
retake: Ze,
|
2314
|
-
validateLiveness: wi,
|
2315
|
-
selectDevice: nn,
|
2316
|
-
reOpenCamera: ti,
|
2317
|
-
registerDeviceChangeListener: on,
|
2318
|
-
setFaceNotFoundAlert: an,
|
2319
|
-
unsubscribeVideoDimensions: sn,
|
2320
|
-
unsubscribeFaceValidations: ln,
|
2321
|
-
unsubscribeCapturedState: rn,
|
2322
|
-
unsubscribeClearVideoSrc: cn,
|
2323
|
-
unsubscribeSelectedStream: un,
|
2324
|
-
unsubscribeChangeTab: fn,
|
2325
|
-
unsubscribeFaceApi: dn,
|
2326
|
-
unsubscribeSwapCamera: mn,
|
2327
|
-
unsubscribeOrientation: hn,
|
2328
|
-
faceapiLoop: pi,
|
2329
|
-
unsubscribeReadyCameraEventEmitter: bn,
|
2330
|
-
unsubscribeInitializedEventEmitter: gn,
|
2331
|
-
$retakePhoto: s,
|
2332
|
-
$startFaceApi: a,
|
2333
|
-
$faceFound: l,
|
2334
|
-
$cameraStatusStore: o,
|
2335
|
-
$collectorSelect: r,
|
2336
|
-
$facingMode: u,
|
2337
|
-
$selectedVideoDeviceId: b,
|
2338
|
-
$cameraDevicesStore: d,
|
2339
|
-
$videoStore: c,
|
2340
|
-
$captured: g,
|
2341
|
-
$clearedVideoSrcObject: O,
|
2342
|
-
$_stream: C,
|
2343
|
-
$automaticCapture: p,
|
2344
|
-
$faceValidationAlert: k,
|
2345
|
-
$showLivenessResultToast: E,
|
2346
|
-
$saved: M,
|
2347
|
-
$justification: B,
|
2348
|
-
$image: I,
|
2349
|
-
$requestResult: T,
|
2350
|
-
$_: ke,
|
2351
|
-
$unconformitiesStore: ne,
|
2352
|
-
$originalCapture: ue,
|
2353
|
-
$dataTypePrefix: we,
|
2354
|
-
$boxStore: He,
|
2355
|
-
$enableFaceApi: Te,
|
2356
|
-
$eyeDistance: Ue,
|
2357
|
-
$screenLocked: We,
|
2358
|
-
$initializing: G,
|
2359
|
-
$ready: x,
|
2360
|
-
$selectedTab: Ae,
|
2361
|
-
$captureLivenessIdrndEndpoint: Se,
|
2362
|
-
$blob: pe,
|
2363
|
-
$idrndInitialized: $,
|
2364
|
-
$idrndVideoStoreDimensions: ee,
|
2365
|
-
$ovalDimensions: z,
|
2366
|
-
$isLoading: te,
|
2367
|
-
$showFaceWhileValidating: se,
|
2368
|
-
$exportButtonDisabled: le
|
2369
|
-
}), n.$inject_state = (t) => {
|
2370
|
-
"video" in t && i(9, A = t.video), "detectionsCanvas" in t && i(10, H = t.detectionsCanvas), "enclosingDiv" in t && i(11, Ce = t.enclosingDiv), "isCountingDown" in t && i(12, fe = t.isCountingDown), "unique" in t && i(13, qe = t.unique), "loadedFaceApiAndWeights" in t && (Je = t.loadedFaceApiAndWeights), "waitingFaceNotFoundTimeout" in t && (de = t.waitingFaceNotFoundTimeout), "enableCaptureButton" in t && i(14, y = t.enableCaptureButton), "faceFoundStartTime" in t && (j = t.faceFoundStartTime), "enableMinutiae" in t && i(45, Ie = t.enableMinutiae), "videoDimensions" in t && i(46, ze = t.videoDimensions), "noTabs" in t && i(47, it = t.noTabs), "weightsPath" in t && i(48, nt = t.weightsPath), "evaluatePhoto" in t && i(1, Oe = t.evaluatePhoto), "showCaptureButton" in t && i(2, ot = t.showCaptureButton), "showUnconformities" in t && i(3, St = t.showUnconformities), "videoOverlay" in t && i(49, Xe = t.videoOverlay), "videoOverlayTransparency" in t && i(50, Ve = t.videoOverlayTransparency), "showConfigButton" in t && i(4, Ot = t.showConfigButton), "showAutoCaptureButton" in t && i(5, Qe = t.showAutoCaptureButton), "showCameraButton" in t && i(6, At = t.showCameraButton), "showJustificationField" in t && i(7, It = t.showJustificationField), "minEyeToEyeDist" in t && i(51, Ke = t.minEyeToEyeDist), "widgetInstance" in t && i(0, oe = t.widgetInstance), "maskCanvas" in t && i(15, Pe = t.maskCanvas), "displayCanvas" in t && i(16, X = t.displayCanvas), "capturing" in t && (st = t.capturing), "initialized" in t && (Gt = t.initialized), "idrndLoading" in t && i(17, lt = t.idrndLoading), "idrndClosed" in t && i(18, ye = t.idrndClosed), "waitingIdrndCaptureEvent" in t && i(19, rt = t.waitingIdrndCaptureEvent), "intervalId" in t && (Zt = t.intervalId), "livenessError" in t && i(20, Ee = t.livenessError), "faceApiCounter" in t && (Bt = t.faceApiCounter), "faceApiFrameRate" in t && (gi = t.faceApiFrameRate), "countDownCapture" in t && (xt = t.countDownCapture), "rightOrientation" in t && (Dt = t.rightOrientation), "countDownFinishTime" in t && (Pt = t.countDownFinishTime), "disableCountDown" in t && (Lt = t.disableCountDown);
|
2371
|
-
}, e && "$$inject" in e && n.$inject_state(e.$$inject), [
|
2372
|
-
oe,
|
2373
|
-
Oe,
|
2374
|
-
ot,
|
2375
|
-
St,
|
2376
|
-
Ot,
|
2377
|
-
Qe,
|
2378
|
-
At,
|
2379
|
-
It,
|
2380
|
-
ut,
|
2381
|
-
A,
|
2382
|
-
H,
|
2383
|
-
Ce,
|
2384
|
-
fe,
|
2385
|
-
qe,
|
2386
|
-
y,
|
2387
|
-
Pe,
|
2388
|
-
X,
|
2389
|
-
lt,
|
2390
|
-
ye,
|
2391
|
-
rt,
|
2392
|
-
Ee,
|
2393
|
-
o,
|
2394
|
-
b,
|
2395
|
-
c,
|
2396
|
-
g,
|
2397
|
-
p,
|
2398
|
-
k,
|
2399
|
-
M,
|
2400
|
-
B,
|
2401
|
-
I,
|
2402
|
-
T,
|
2403
|
-
ke,
|
2404
|
-
ne,
|
2405
|
-
we,
|
2406
|
-
Te,
|
2407
|
-
x,
|
2408
|
-
te,
|
2409
|
-
se,
|
2410
|
-
le,
|
2411
|
-
at,
|
2412
|
-
Ye,
|
2413
|
-
vi,
|
2414
|
-
Ft,
|
2415
|
-
Ze,
|
2416
|
-
ti,
|
2417
|
-
Ie,
|
2418
|
-
ze,
|
2419
|
-
it,
|
2420
|
-
nt,
|
2421
|
-
Xe,
|
2422
|
-
Ve,
|
2423
|
-
Ke,
|
2424
|
-
wo,
|
2425
|
-
po,
|
2426
|
-
Co,
|
2427
|
-
yo,
|
2428
|
-
Eo,
|
2429
|
-
ko,
|
2430
|
-
Ro,
|
2431
|
-
To,
|
2432
|
-
So,
|
2433
|
-
Oo,
|
2434
|
-
Ao,
|
2435
|
-
Io,
|
2436
|
-
Bo,
|
2437
|
-
Do,
|
2438
|
-
Po,
|
2439
|
-
Lo,
|
2440
|
-
Fo
|
2441
|
-
];
|
2442
|
-
}
|
2443
|
-
class jo extends Mn {
|
2444
|
-
constructor(e) {
|
2445
|
-
super(), Un(
|
2446
|
-
this,
|
2447
|
-
{
|
2448
|
-
target: this.shadowRoot,
|
2449
|
-
props: Wn(this.attributes),
|
2450
|
-
customElement: !0
|
2451
|
-
},
|
2452
|
-
Ko,
|
2453
|
-
_o,
|
2454
|
-
$i,
|
2455
|
-
{
|
2456
|
-
enableMinutiae: 45,
|
2457
|
-
videoDimensions: 46,
|
2458
|
-
noTabs: 47,
|
2459
|
-
weightsPath: 48,
|
2460
|
-
evaluatePhoto: 1,
|
2461
|
-
showCaptureButton: 2,
|
2462
|
-
showUnconformities: 3,
|
2463
|
-
videoOverlay: 49,
|
2464
|
-
videoOverlayTransparency: 50,
|
2465
|
-
showConfigButton: 4,
|
2466
|
-
showAutoCaptureButton: 5,
|
2467
|
-
showCameraButton: 6,
|
2468
|
-
showJustificationField: 7,
|
2469
|
-
minEyeToEyeDist: 51,
|
2470
|
-
widgetInstance: 0,
|
2471
|
-
play: 8
|
2472
|
-
},
|
2473
|
-
null,
|
2474
|
-
[-1, -1, -1, -1, -1]
|
2475
|
-
), e && (e.target && U(e.target, this, e.anchor), e.props && (this.$set(e.props), be()));
|
2476
|
-
}
|
2477
|
-
static get observedAttributes() {
|
2478
|
-
return [
|
2479
|
-
"enableMinutiae",
|
2480
|
-
"videoDimensions",
|
2481
|
-
"noTabs",
|
2482
|
-
"weightsPath",
|
2483
|
-
"evaluatePhoto",
|
2484
|
-
"showCaptureButton",
|
2485
|
-
"showUnconformities",
|
2486
|
-
"videoOverlay",
|
2487
|
-
"videoOverlayTransparency",
|
2488
|
-
"showConfigButton",
|
2489
|
-
"showAutoCaptureButton",
|
2490
|
-
"showCameraButton",
|
2491
|
-
"showJustificationField",
|
2492
|
-
"minEyeToEyeDist",
|
2493
|
-
"widgetInstance",
|
2494
|
-
"play"
|
2495
|
-
];
|
2496
|
-
}
|
2497
|
-
get enableMinutiae() {
|
2498
|
-
return this.$$.ctx[45];
|
2499
|
-
}
|
2500
|
-
set enableMinutiae(e) {
|
2501
|
-
this.$$set({ enableMinutiae: e }), be();
|
2502
|
-
}
|
2503
|
-
get videoDimensions() {
|
2504
|
-
return this.$$.ctx[46];
|
2505
|
-
}
|
2506
|
-
set videoDimensions(e) {
|
2507
|
-
this.$$set({ videoDimensions: e }), be();
|
2508
|
-
}
|
2509
|
-
get noTabs() {
|
2510
|
-
return this.$$.ctx[47];
|
2511
|
-
}
|
2512
|
-
set noTabs(e) {
|
2513
|
-
this.$$set({ noTabs: e }), be();
|
2514
|
-
}
|
2515
|
-
get weightsPath() {
|
2516
|
-
return this.$$.ctx[48];
|
2517
|
-
}
|
2518
|
-
set weightsPath(e) {
|
2519
|
-
this.$$set({ weightsPath: e }), be();
|
2520
|
-
}
|
2521
|
-
get evaluatePhoto() {
|
2522
|
-
return this.$$.ctx[1];
|
2523
|
-
}
|
2524
|
-
set evaluatePhoto(e) {
|
2525
|
-
this.$$set({ evaluatePhoto: e }), be();
|
2526
|
-
}
|
2527
|
-
get showCaptureButton() {
|
2528
|
-
return this.$$.ctx[2];
|
2529
|
-
}
|
2530
|
-
set showCaptureButton(e) {
|
2531
|
-
this.$$set({ showCaptureButton: e }), be();
|
2532
|
-
}
|
2533
|
-
get showUnconformities() {
|
2534
|
-
return this.$$.ctx[3];
|
2535
|
-
}
|
2536
|
-
set showUnconformities(e) {
|
2537
|
-
this.$$set({ showUnconformities: e }), be();
|
2538
|
-
}
|
2539
|
-
get videoOverlay() {
|
2540
|
-
return this.$$.ctx[49];
|
2541
|
-
}
|
2542
|
-
set videoOverlay(e) {
|
2543
|
-
this.$$set({ videoOverlay: e }), be();
|
2544
|
-
}
|
2545
|
-
get videoOverlayTransparency() {
|
2546
|
-
return this.$$.ctx[50];
|
2547
|
-
}
|
2548
|
-
set videoOverlayTransparency(e) {
|
2549
|
-
this.$$set({ videoOverlayTransparency: e }), be();
|
2550
|
-
}
|
2551
|
-
get showConfigButton() {
|
2552
|
-
return this.$$.ctx[4];
|
2553
|
-
}
|
2554
|
-
set showConfigButton(e) {
|
2555
|
-
this.$$set({ showConfigButton: e }), be();
|
2556
|
-
}
|
2557
|
-
get showAutoCaptureButton() {
|
2558
|
-
return this.$$.ctx[5];
|
2559
|
-
}
|
2560
|
-
set showAutoCaptureButton(e) {
|
2561
|
-
this.$$set({ showAutoCaptureButton: e }), be();
|
2562
|
-
}
|
2563
|
-
get showCameraButton() {
|
2564
|
-
return this.$$.ctx[6];
|
2565
|
-
}
|
2566
|
-
set showCameraButton(e) {
|
2567
|
-
this.$$set({ showCameraButton: e }), be();
|
2568
|
-
}
|
2569
|
-
get showJustificationField() {
|
2570
|
-
return this.$$.ctx[7];
|
2571
|
-
}
|
2572
|
-
set showJustificationField(e) {
|
2573
|
-
this.$$set({ showJustificationField: e }), be();
|
2574
|
-
}
|
2575
|
-
get minEyeToEyeDist() {
|
2576
|
-
return this.$$.ctx[51];
|
2577
|
-
}
|
2578
|
-
set minEyeToEyeDist(e) {
|
2579
|
-
this.$$set({ minEyeToEyeDist: e }), be();
|
2580
|
-
}
|
2581
|
-
get widgetInstance() {
|
2582
|
-
return this.$$.ctx[0];
|
2583
|
-
}
|
2584
|
-
set widgetInstance(e) {
|
2585
|
-
this.$$set({ widgetInstance: e }), be();
|
2586
|
-
}
|
2587
|
-
get play() {
|
2588
|
-
return this.$$.ctx[8];
|
2589
|
-
}
|
2590
|
-
set play(e) {
|
2591
|
-
throw new Error("<face-collector>: Cannot set read-only property 'play'");
|
2592
|
-
}
|
2593
|
-
}
|
2594
|
-
customElements.define("face-collector", jo);
|
2595
|
-
export {
|
2596
|
-
jo as default
|
2597
|
-
};
|
2598
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmFjZUNvbGxlY3Rvcl84MmE5M2JmZF8yLjIuMjEtUkMwNi5qcyIsInNvdXJjZXMiOlsiLi4vc3JjL2xpYi9mYWNlVGFiL2J1dHRvbnMvY2FwdHVyZS9hdXRvQ2FwdHVyZUJ0bi9BdXRvQ2FwdHVyZUJ0bi5zdmVsdGUiLCIuLi9zcmMvbGliL2ZhY2VUYWIvRmFjZUNvbGxlY3Rvci5zdmVsdGUiXSwic291cmNlc0NvbnRlbnQiOlsiPHN2ZWx0ZTpvcHRpb25zIHRhZz1cInN0YXJ0LWF1dG8tY2FwdHVyZS1idG5cIiAvPlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICBpbXBvcnQgeyBhdXRvbWF0aWNDYXB0dXJlIH0gZnJvbSBcIi4uLy4uLy4uL2ZhY2VTdG9yZVwiO1xuICBpbXBvcnQgeyBfIH0gZnJvbSAnc3ZlbHRlLWkxOG4nO1xuICBpbXBvcnQgeyBpc01vYmlsZSB9IGZyb20gXCIuLi8uLi8uLi8uLi91dGlsL3V0aWxcIjtcblxuICBmdW5jdGlvbiBoYW5kbGVBdXRvQ2FwdHVyZSgpIHtcbiAgICAkYXV0b21hdGljQ2FwdHVyZSA9IHRydWU7XG4gIH1cbiAgICBcbjwvc2NyaXB0PlxuXG48ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWNlbnRlciBpdGVtcy1jZW50ZXJcIj5cbiAgPGJ1dHRvbiBjbGFzcz17XG4gICAgaXNNb2JpbGUoKVxuICAgID8gXCJjZS1kdWktYnRuIGNlLWR1aS1idG4tcHJpbWFyeSB0ZXh0LWJhc2UgdGV4dC14bCBwYi1bMnB4XSBhYnNvbHV0ZSB6LTIwIGJvdHRvbS0xMFwiXG4gICAgOiBcImNlLWR1aS1idG4gY2UtZHVpLWJ0bi1wcmltYXJ5IHRleHQtYmFzZSB0ZXh0LXhsIHBiLVsycHhdIGFic29sdXRlIHotMjAgYm90dG9tLTJcIn1cbiAgICBvbjpjbGljaz17KCkgPT4gaGFuZGxlQXV0b0NhcHR1cmUoKX1cbiAgICA+XG4gICAgICB7JF8oJ2J1dHRvbnMuc3RhcnRDYXB0dXJlJyl9XG4gIDwvYnV0dG9uPlxuPC9kaXY+XG4iLCI8c3ZlbHRlOm9wdGlvbnMgdGFnPVwiZmFjZS1jb2xsZWN0b3JcIiAvPlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICBpbXBvcnQgQ2FtZXJhU3RhdHVzIGZyb20gJy4vY2FtZXJhU3RhdHVzL0NhbWVyYVN0YXR1cy5zdmVsdGUnO1xuICBpbXBvcnQgeyBvbkRlc3Ryb3ksIG9uTW91bnQgfSBmcm9tICdzdmVsdGUnO1xuICBpbXBvcnQgdHlwZSB7IEJvZHlQYXJ0LCBCb2R5UGFydFJldHVyblR5cGUgfSBmcm9tICcuLi92YWxpZGF0b3JzL2Jpb21ldHJpY3NWYWxpZGF0b3InO1xuICBpbXBvcnQgeyBfLCBpc0xvYWRpbmcgfSBmcm9tICdzdmVsdGUtaTE4bic7XG4gIGltcG9ydCB7IGdldCwgd3JpdGFibGUgfSBmcm9tICdzdmVsdGUvc3RvcmUnO1xuICBpbXBvcnQgeyBzZWxlY3RlZFRhYiwgVGFiRW51bSB9IGZyb20gJy4uL3RhYkJ0bnMvdGFiU3RvcmUnO1xuICBpbXBvcnQge1xuICAgIGNhbWVyYURlbmllZFBlcm1pc3Npb24sXG4gICAgZmFjZVZhbGlkYXRpb25zU3RvcmUsXG4gICAgZ2V0RmFjZVVuY29uZm9ybWl0aWVzLFxuICAgIGltYWdlLFxuICAgIHVuY29uZm9ybWl0aWVzU3RvcmUsXG4gICAgc2V0dXBTdHJlYW0sXG4gICAgdmlkZW9TdG9yZSxcbiAgICByZXF1ZXN0UmVzdWx0LFxuICAgIGNhbWVyYURldmljZXNTdG9yZSxcbiAgICBqdXN0aWZpY2F0aW9uLFxuICAgIHNhdmVkLFxuICAgIGNhcHR1cmVkLFxuICAgIF9zdHJlYW0sXG4gICAgc2h1dE9mZkNhbWVyYSxcbiAgICByZWFkeSxcbiAgICBpbml0aWFsaXppbmcsXG4gICAgY2xlYXJlZFZpZGVvU3JjT2JqZWN0LFxuICAgIGVudW1lcmF0ZURldmljZXMsXG4gICAgb3JpZ2luYWxDYXB0dXJlLFxuICAgIGF1dG9tYXRpY0NhcHR1cmUsXG4gICAgc2VsZWN0ZWRWaWRlb0RldmljZUlkLFxuICAgIHRyYW5zbGF0ZUFuZFNldFVuY29uZm9ybWl0aWVzLFxuICAgIHJlcXVlc3RSZXN1bHRFbnVtLFxuICAgIHJldGFrZVBob3RvLFxuICAgIHNob3dGYWNlV2hpbGVWYWxpZGF0aW5nLFxuICAgIGdldFZpZGVvRGltZW5zaW9ucyxcbiAgICBGYWNlRXhwb3J0U3RyYXRlZ3ksXG4gICAgb3JpZW50YXRpb25EYXRhLFxuICAgIEZhY2luZ01vZGVFbnVtLFxuICAgIGZhY2luZ01vZGUsXG4gICAgdW5jb25mb3JtaXR5VG9pMThuS2V5XG5cbiAgfSBmcm9tICcuL2ZhY2VTdG9yZSc7XG4gIGltcG9ydCB7XG4gICAgc3dhcENhbWVyYVxuICB9ZnJvbSAnLi4vY29uZi9jb25mU3RvcmUnOyAgXG4gIGltcG9ydCBDb25mQnRuIGZyb20gJy4uL2NvbmYvQ29uZkJ0bi5zdmVsdGUnO1xuICBpbXBvcnQgQ2FtZXJhQnRuIGZyb20gJy4uL2NvbmYvQ2FtZXJhQnRuLnN2ZWx0ZSc7XG4gIGltcG9ydCBBdXRvQ2FwdHVyZUJ0biBmcm9tICcuL2J1dHRvbnMvY2FwdHVyZS9hdXRvQ2FwdHVyZUJ0bi9BdXRvQ2FwdHVyZUJ0bi5zdmVsdGUnO1xuICBpbXBvcnQgRXhwb3J0QnRuIGZyb20gJy4uL2ZpbmdlcnNUYWIvYnV0dG9ucy9leHBvcnRCdG4vRXhwb3J0QnRuLnN2ZWx0ZSc7XG4gIGltcG9ydCB7IGVuYWJsZVN0cmF0ZWd5IH0gZnJvbSAnLi4vZmluZ2Vyc1RhYi9oYW5kL2hhbmRQYXJ0cy9maW5nZXJzU3RvcmUnO1xuICBpbXBvcnQgeyBleHBvcnRCdXR0b25EaXNhYmxlZCB9IGZyb20gJy4uL2ZpbmdlcnNUYWIvYnV0dG9ucy9leHBvcnRCdG4vZXhwb3J0U3RvcmUnO1xuICBpbXBvcnQge1xuICAgIGJveFN0b3JlLFxuICAgIGRyYXdEZXRlY3Rpb25zSW5GYWNlLFxuICAgIGVuYWJsZUZhY2VBcGksXG4gICAgZmFjZUZvdW5kLFxuICAgIGdldEZhY2VEZXRlY3Rvck9wdGlvbnMsXG4gICAgb3ZhbERpbWVuc2lvbnMsXG4gICAgZmFjZVZhbGlkYXRpb25BbGVydCxcbiAgICBleWVEaXN0YW5jZSxcbiAgICBzZXRWYWxpZGF0aW9uQWxlcnQsXG4gIH0gZnJvbSAnLi9mYWNlQXBpU3RvcmUnO1xuICBpbXBvcnQgeyBibG9iVG9CYXNlNjQsIGlzTW9iaWxlLCBpc09iamVjdCwgbG9hZEZhY2VBcGlBbmRXZWlnaHRzLCBsb29wQ2FsbGVyLCB1bkxvY2tTY3JlZW4sIGdldEltYWdlTGlnaHRuZXNzLCBnZXRJbWFnZVNoYXJwbmVzc30gZnJvbSAnLi4vdXRpbC91dGlsJztcbiAgaW1wb3J0IHsgY29sbGVjdG9yU2VsZWN0LCBpc0xpdmVuZXNzRW5hYmxlZCwgc2NyZWVuTG9ja2VkIH0gZnJvbSAnLi4vLi4vbWFpblN0b3JlJztcbiAgaW1wb3J0IGxvYWRpbmdHaWYgZnJvbSAnLi4vLi4vYXNzZXRzL2ltZy9CbG9ja3MtMXMtMjAwcHguZ2lmJztcbiAgaW1wb3J0IHtcbiAgICBnZXRMaXZlbmVzc0lkcm5kLFxuICAgIGJsb2IsXG4gICAgaWRybmRFcnJvclRvaTE4bktleSxcbiAgICBzaG93TGl2ZW5lc3NSZXN1bHRUb2FzdCxcbiAgICBjYXB0dXJlTGl2ZW5lc3NJZHJuZEVuZHBvaW50LFxuICAgIHR5cGUgbGl2ZW5lc3NSZXN1bHQsXG4gICAgdHlwZSBsaXZlbmVzc0Vycm9yUmVzdWx0LFxuICAgIGlkcm5kSW5pdGlhbGl6ZWQsXG4gICAgaWRybmRWaWRlb1N0b3JlRGltZW5zaW9ucyxcbiAgfSBmcm9tICcuL2xpdmVuZXNzL0xpdmVuZXNzU3RvcmUnO1xuICBpbXBvcnQgdHlwZSB7IFN3ZWV0QWxlcnRJY29uIH0gZnJvbSAnc3dlZXRhbGVydDInO1xuICBpbXBvcnQgU3dhbCBmcm9tICdzd2VldGFsZXJ0Mic7XG4gIGltcG9ydCB7IEF4aW9zRXJyb3IsIHR5cGUgQXhpb3NSZXNwb25zZSB9IGZyb20gJ2F4aW9zJztcbiAgaW1wb3J0IHsgY2FtZXJhU3RhdHVzU3RvcmUsIENhbWVyYVN0YXR1c0VudW0gfSBmcm9tICcuL2NhbWVyYVN0YXR1cy9jYW1lcmFTdGF0dXNTdG9yZSc7XG4gIGltcG9ydCB7IGxvZyB9IGZyb20gJy4uL3V0aWwvbG9nZ2VyJztcbiAgaW1wb3J0IFRha2VQaWN0dXJlQnRuIGZyb20gJy4vYnV0dG9ucy9jYXB0dXJlL3Rha2VQaWN0dXJlQnRuL1Rha2VQaWN0dXJlQnRuLnN2ZWx0ZSc7XG4gIFxuICBsZXQgdmlkZW86IEhUTUxWaWRlb0VsZW1lbnQ7XG4gIGxldCBkZXRlY3Rpb25zQ2FudmFzOiBIVE1MQ2FudmFzRWxlbWVudDtcbiAgbGV0IGVuY2xvc2luZ0RpdjogSFRNTERpdkVsZW1lbnQ7XG4gIGxldCBpc0NvdW50aW5nRG93biA9IGZhbHNlO1xuICBsZXQgdW5pcXVlID0ge307XG4gIGxldCBsb2FkZWRGYWNlQXBpQW5kV2VpZ2h0cyA9IGZhbHNlO1xuICBsZXQgd2FpdGluZ0ZhY2VOb3RGb3VuZFRpbWVvdXQgPSBmYWxzZTtcbiAgbGV0IGVuYWJsZUNhcHR1cmVCdXR0b24gPSBmYWxzZTtcbiAgbGV0IGZhY2VGb3VuZFN0YXJ0VGltZSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuXG4gIC8vIFByb3BzXG4gIGV4cG9ydCBsZXQgZW5hYmxlTWludXRpYWU6IGJvb2xlYW47XG4gIGV4cG9ydCBsZXQgdmlkZW9EaW1lbnNpb25zOiBzdHJpbmc7XG4gIGV4cG9ydCBsZXQgbm9UYWJzOiBib29sZWFuO1xuICBleHBvcnQgbGV0IHdlaWdodHNQYXRoOiBzdHJpbmc7XG4gIGV4cG9ydCBsZXQgZXZhbHVhdGVQaG90bzogYm9vbGVhbjtcbiAgZXhwb3J0IGxldCBzaG93Q2FwdHVyZUJ1dHRvbjogYm9vbGVhbjtcbiAgZXhwb3J0IGxldCBzaG93VW5jb25mb3JtaXRpZXM6IGJvb2xlYW47XG4gIGV4cG9ydCBsZXQgdmlkZW9PdmVybGF5OiBzdHJpbmc7XG4gIGV4cG9ydCBsZXQgdmlkZW9PdmVybGF5VHJhbnNwYXJlbmN5OiBudW1iZXI7XG4gIGV4cG9ydCBsZXQgc2hvd0NvbmZpZ0J1dHRvbjogYm9vbGVhbjtcbiAgZXhwb3J0IGxldCBzaG93QXV0b0NhcHR1cmVCdXR0b246IGJvb2xlYW47XG4gIGV4cG9ydCBsZXQgc2hvd0NhbWVyYUJ1dHRvbjogYm9vbGVhbjtcbiAgZXhwb3J0IGxldCBzaG93SnVzdGlmaWNhdGlvbkZpZWxkOiBib29sZWFuO1xuICBleHBvcnQgbGV0IG1pbkV5ZVRvRXllRGlzdDogbnVtYmVyO1xuXG4gIGNvbnN0IHN0YXJ0RmFjZUFwaSA9IHdyaXRhYmxlKGZhbHNlKTtcbiAgY29uc3QgZGF0YVR5cGVQcmVmaXggPSB3cml0YWJsZSgnZGF0YTppbWFnZS9wbmc7YmFzZTY0Jyk7XG5cbiAgLy8gbGl2ZW5lc3MgcmVsYXRlZFxuICAvLyBwcm9wIHBhc3NpbmcgdXAgdG8gcGFyZW50XG4gIGV4cG9ydCBsZXQgd2lkZ2V0SW5zdGFuY2U6IEhUTUxJZExpdmVGYWNlQ2FwdHVyZUVsZW1lbnQ7XG4gIGxldCBtYXNrQ2FudmFzOiBIVE1MQ2FudmFzRWxlbWVudDtcbiAgbGV0IGRpc3BsYXlDYW52YXM6IEhUTUxDYW52YXNFbGVtZW50O1xuICBsZXQgY2FwdHVyaW5nID0gZmFsc2U7XG4gIGxldCBpbml0aWFsaXplZCA9IGZhbHNlO1xuICBsZXQgaWRybmRMb2FkaW5nID0gdHJ1ZTtcbiAgbGV0IGlkcm5kQ2xvc2VkID0gdHJ1ZTtcbiAgbGV0IHdhaXRpbmdJZHJuZENhcHR1cmVFdmVudCA9IGZhbHNlO1xuICBsZXQgaW50ZXJ2YWxJZCA9IDA7XG4gIGxldCBsaXZlbmVzc0Vycm9yID0gJyc7XG4gIGxldCBmYWNlQXBpQ291bnRlciA9IDA7XG4gIGxldCBmYWNlQXBpRnJhbWVSYXRlID0gNTtcbiAgbGV0IGNvdW50RG93bkNhcHR1cmUgPSAzMDAwO1xuICBsZXQgcmlnaHRPcmllbnRhdGlvbiA9IHRydWU7XG5cbiAgbGV0IGNvdW50RG93bkZpbmlzaFRpbWUgPSAwO1xuICBsZXQgZGlzYWJsZUNvdW50RG93biA9IGZhbHNlO1xuXG4gIGNvbnN0IHRvYXN0ID0gU3dhbC5taXhpbih7XG4gICAgdG9hc3Q6IHRydWUsXG4gICAgcG9zaXRpb246ICdib3R0b20tbGVmdCcsXG4gICAgdGltZXI6IDEzMDAwLFxuICAgIHRpbWVyUHJvZ3Jlc3NCYXI6IHRydWUsXG4gIH0pO1xuXG4gIG9uTW91bnQoYXN5bmMgKCkgPT4ge1xuICAgIGxvZygnTW91bnRpbmcgRmFjZSBDb2xsZWN0b3IhJyk7XG4gICAgJGluaXRpYWxpemluZyA9IHRydWU7XG4gICAgJHJlYWR5ID0gZmFsc2U7XG4gICAgcmVzZXRGYWNlQ29sbGVjdG9yKCkgLy8gcmVzZXQgYWxsIGZhY2UgY29sbGVjdG9yIHZhcmlhYmxlc1xuICAgIFxuICAgIGlmIChpc0xpdmVuZXNzRW5hYmxlZCgpKSB7XG4gICAgICBpbXBvcnQoJ2xpdmVuZXNzLWxpYi1kZXYvaW5kZXgtbm8tZGV0ZWN0b3InKTtcbiAgICAgIHJlZ2lzdGVySWRybmRMaXN0ZW5lcnMoKTtcbiAgICB9XG5cbiAgICBpZiAoJGVuYWJsZUZhY2VBcGkpIHtcbiAgICAgIGF3YWl0IGxvYWRGYWNlQXBpQW5kV2VpZ2h0cyh3ZWlnaHRzUGF0aCk7XG4gICAgICBsb2FkZWRGYWNlQXBpQW5kV2VpZ2h0cyA9IHRydWU7XG4gICAgfVxuICBcbiAgICBhd2FpdCBvcGVuQ2FtZXJhKCk7IC8vIG9wZW4gdGhlIGZyb250IGNhbWVyYVxuICAgIHJlZ2lzdGVyRGV2aWNlQ2hhbmdlTGlzdGVuZXIoKTtcbiAgfSk7XG5cbiAgZnVuY3Rpb24gcmVzZXRGYWNlQ29sbGVjdG9yKCkge1xuICAgICRmYWNlRm91bmQgPSBmYWxzZTtcbiAgICAkY2FwdHVyZWQgPSBmYWxzZTtcbiAgICAkZmFjaW5nTW9kZSA9IEZhY2luZ01vZGVFbnVtLkZST05UX0NBTUVSQTtcbiAgICAkY2FtZXJhU3RhdHVzU3RvcmUgPSBDYW1lcmFTdGF0dXNFbnVtLk9LO1xuICAgIC8vIGRpc2FibGUgYXV0b21hdGljIGNhcHR1cmUgaWYgc2hvd0F1dG9DYXB0dXJlQnV0dG9uIHByb3BlcnR5IGlzIHRydWVcbiAgICBpZiAoc2hvd0F1dG9DYXB0dXJlQnV0dG9uKSB7XG4gICAgICAkYXV0b21hdGljQ2FwdHVyZSA9IGZhbHNlO1xuICAgIH1cbiAgICAkc2F2ZWQgPSBmYWxzZTtcbiAgICAkcmVxdWVzdFJlc3VsdCA9IHJlcXVlc3RSZXN1bHRFbnVtLk9LO1xuICAgICRvcmlnaW5hbENhcHR1cmUgPSAnJztcbiAgICAkdW5jb25mb3JtaXRpZXNTdG9yZS51bmNvbmZvcm1pdGllcyA9IFtdO1xuICAgIGNvbnN0IGZhY2VWYWxpZGF0aW9ucyA9IGdldChmYWNlVmFsaWRhdGlvbnNTdG9yZSk7XG4gICAgZmFjZVZhbGlkYXRpb25zLmNsb3NlZE1vdXRoID0gZmFsc2U7XG4gICAgZmFjZVZhbGlkYXRpb25zLmlzUGVyc29uQ2xvc2VFbm91Z2ggPSBmYWxzZTtcbiAgICBmYWNlVmFsaWRhdGlvbnMuaXNQZXJzb25Ub29jbG9zZSA9IHRydWU7XG4gICAgZmFjZVZhbGlkYXRpb25zLmlzUGVyc29uSW5GcmFtZSA9IGZhbHNlO1xuICAgIGZhY2VWYWxpZGF0aW9uc1N0b3JlLnNldChmYWNlVmFsaWRhdGlvbnMpO1xuICAgICRmYWNlVmFsaWRhdGlvbkFsZXJ0ID0gJyc7XG4gIH1cblxuICBmdW5jdGlvbiBkcmF3T3ZhbChjdHg6IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCwgdmlkZW86IEhUTUxWaWRlb0VsZW1lbnQpIHtcbiAgICAvLyBjbGVhciB0aGUgYXJlYSAodGhlcmUgc2hvdWxkbid0IGV2ZW4gYmUgYW55dGhpbmcgYW55d2F5cylcbiAgICBjdHguY2xlYXJSZWN0KDAsIDAsIGRpc3BsYXlDYW52YXMud2lkdGgsIGRpc3BsYXlDYW52YXMuaGVpZ2h0KTtcbiAgICAvLyBzYXZlIHRoZSBjb250ZXh0IHN0YXRlXG4gICAgLy8gZnJvbSBtZG4gZG9jc1xuICAgIGN0eC5zYXZlKCk7XG4gICAgLy8gYXBwbHkgdGhlIGJsdXIvY29sb3IgZmlsdGVyXG4gICAgaWYodmlkZW9PdmVybGF5ICE9ICdub25lJykge1xuICAgICAgaWYgKHZpZGVvT3ZlcmxheVRyYW5zcGFyZW5jeSA+IDApe1xuICAgICAgICBjdHguZ2xvYmFsQWxwaGEgPSAodmlkZW9PdmVybGF5VHJhbnNwYXJlbmN5KSAvIDEwMDtcbiAgICAgIH1cbiAgICAgIGN0eC5maWxsU3R5bGUgPSB2aWRlb092ZXJsYXk7XG4gICAgICBjdHguZmlsbFJlY3QoMCwgMCwgZGlzcGxheUNhbnZhcy53aWR0aCwgZGlzcGxheUNhbnZhcy5oZWlnaHQpOyAgICAgIFxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBkcmF3IGEgcmVjdGFuZ2xlIHdpdGggdGhlIHNhbWUgc2l6ZSBhcyB0aGUgdmlkZW9cbiAgICAgIGN0eC5iZWdpblBhdGgoKTtcbiAgICAgIGN0eC5yZWN0KDAsIDAsIGRpc3BsYXlDYW52YXMud2lkdGgsIGRpc3BsYXlDYW52YXMuaGVpZ2h0KTtcbiAgICB9XG4gICAgXG4gICAgLy8gY2FsY3VsYXRlIHRoZSBvdmFsIHNpemUgdXNpbmcgdmlld3BvcnQgdW5pdHNcbiAgICBsZXQgb3ZhbEhlaWdodCA9IGRpc3BsYXlDYW52YXMuaGVpZ2h0ICogMC44MDsgLy8gODAlIG9mIHRoZSB2aWV3cG9ydCBoZWlnaHRcbiAgICBjb25zdCBvdmFsWCA9ICR2aWRlb1N0b3JlLnZpZGVvV2lkdGggLyAyO1xuICAgIGxldCBvdmFsWSA9ICR2aWRlb1N0b3JlLnZpZGVvSGVpZ2h0ICogMC41MDtcbiAgICBpZiAoc2hvd0F1dG9DYXB0dXJlQnV0dG9uIHx8IHNob3dDYXB0dXJlQnV0dG9uKSB7XG4gICAgICBvdmFsWSA9ICR2aWRlb1N0b3JlLnZpZGVvSGVpZ2h0ICogMC40NDtcbiAgICB9XG4gICAgaWYgKGlzTW9iaWxlKCkpe1xuICAgICAgb3ZhbEhlaWdodCA9IGRpc3BsYXlDYW52YXMuaGVpZ2h0ICogMC42NTsgLy8gODAlIG9mIHRoZSB2aWV3cG9ydCBoZWlnaHRcbiAgICAgIG92YWxZID0gJHZpZGVvU3RvcmUudmlkZW9IZWlnaHQgKiAwLjUxO1xuICAgIH1cbiAgICBjb25zdCBvdmFsV2lkdGggPSBvdmFsSGVpZ2h0IC8gMS40NTsgXG4gICAgJG92YWxEaW1lbnNpb25zLndpZHRoID0gb3ZhbFdpZHRoO1xuICAgICRvdmFsRGltZW5zaW9ucy5oZWlnaHQgPSBvdmFsSGVpZ2h0O1xuICAgICRvdmFsRGltZW5zaW9ucy55ID0gb3ZhbFk7XG5cbiAgICAvLyBtYWtlIHRoZSBvdmFsIFxuICAgIGN0eC5lbGxpcHNlKFxuICAgICAgb3ZhbFgsXG4gICAgICBvdmFsWSxcbiAgICAgIG92YWxXaWR0aCAvIDIsXG4gICAgICBvdmFsSGVpZ2h0IC8gMixcbiAgICAgIDAsXG4gICAgICAwLFxuICAgICAgMiAqIE1hdGguUEksXG4gICAgICB0cnVlIC8vIGl0IGhhcyB0byBiZSBjb3VudGVyY2xvY2t3aXNlXG4gICAgKTtcblxuICAgIGlmICh2aWRlb092ZXJsYXlUcmFuc3BhcmVuY3kgPT0gMCl7XG4gICAgICBjdHguY2xpcCgpO1xuICAgIH1cbiAgICAvLyBkcmF3IHRoZSB2aWRlb1xuICAgIC8vIHRoaXMgbWFrZXMgZmFjZSBhcGkgb25seSBhd2FyZSBvZiBvdXRzaWRlIHRoZSBvdmFsIGFyZWFcbiAgICBkcmF3VmlkZW9PbkNhbnZhcyhjdHgsIHZpZGVvLCBkaXNwbGF5Q2FudmFzKTtcbiAgICBjdHgucmVzdG9yZSgpO1xuXG4gICAgLy8gc2F2ZSBhZ2FpbiwgYmVjYXVzZSB3aGVuIHJlZHJhd2luZyB0aGUgb3ZhbCwgZXZlcnl0aGluZyBhcm91bmQgdGhlIG92YWwgaXMgbG9zdFxuICAgIGN0eC5zYXZlKCk7XG4gICAgY3R4LmJlZ2luUGF0aCgpO1xuICAgIC8vIGRyYXcgdGhlIGVsbGlwc2UgKHRoaXMgdGltZSBpdCBkb2Vzbid0IG1hdHRlciB0aGUgZGlyZWN0aW9uLCBzaW5jZSB0aGVyZSBpc24ndCBhIHJlY3RhbmdsZSBiZWhpbmQpXG4gICAgY29uc3QgcHJpbWFyeVRoZW1lID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZGlzcGxheUNhbnZhcykuZ2V0UHJvcGVydHlWYWx1ZSgnLS1wJyk7XG4gICAgY29uc3Qgc3VjY2Vzc1RoZW1lID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZGlzcGxheUNhbnZhcykuZ2V0UHJvcGVydHlWYWx1ZSgnLS1zdScpO1xuXG4gICAgY3R4LnN0cm9rZVN0eWxlID0gYGhzbCgke3ByaW1hcnlUaGVtZX0pYDtcbiAgICBjdHgubGluZVdpZHRoID0gMTY7XG4gICAgY3R4LmVsbGlwc2UoXG4gICAgICBvdmFsWCxcbiAgICAgIG92YWxZLFxuICAgICAgb3ZhbFdpZHRoIC8gMixcbiAgICAgIG92YWxIZWlnaHQgLyAyLFxuICAgICAgMCxcbiAgICAgIDAsXG4gICAgICAyICogTWF0aC5QSVxuICAgICk7XG4gICAgY3R4LnN0cm9rZSgpO1xuICAgIGlmIChpc0NvdW50aW5nRG93biAmJiAhZGlzYWJsZUNvdW50RG93bikge1xuICAgICAgY29uc3QgdGltZVJlbWFpbmluZyA9IDEgLSAoY291bnREb3duRmluaXNoVGltZSAtIG5ldyBEYXRlKCkuZ2V0VGltZSgpKSAvIGNvdW50RG93bkNhcHR1cmU7XG4gICAgICAvLyBDb3VudGVyIGNvbnRvdXJcbiAgICAgIGN0eC5zYXZlKCk7XG4gICAgICBjdHguYmVnaW5QYXRoKCk7XG4gICAgICBjdHgubGluZVdpZHRoID0gMTY7XG4gICAgICBjdHguc3Ryb2tlU3R5bGUgPSBgaHNsKCR7c3VjY2Vzc1RoZW1lfSlgO1xuICAgICAgY3R4LmVsbGlwc2UoXG4gICAgICAgIG92YWxYLFxuICAgICAgICBvdmFsWSxcbiAgICAgICAgb3ZhbFdpZHRoIC8gMixcbiAgICAgICAgb3ZhbEhlaWdodCAvIDIsXG4gICAgICAgIDAsXG4gICAgICAgIDAgLSBNYXRoLlBJIC8gMixcbiAgICAgICAgMS41ICogKE1hdGguUEkgKiAyICogdGltZVJlbWFpbmluZykgLSBNYXRoLlBJIC8gMlxuICAgICAgKTtcbiAgICAgIGN0eC5zdHJva2UoKTtcbiAgICB9XG4gICAgY3R4LmJlZ2luUGF0aCgpO1xuICAgIGNvbnN0IGNsaXBQYXRoID0gbmV3IFBhdGgyRCgpO1xuICAgIGNsaXBQYXRoLmVsbGlwc2UoXG4gICAgICBvdmFsWCxcbiAgICAgIG92YWxZLFxuICAgICAgb3ZhbFdpZHRoIC8gMixcbiAgICAgIG92YWxIZWlnaHQgLyAyLFxuICAgICAgMCxcbiAgICAgIDAsXG4gICAgICAyICogTWF0aC5QSVxuICAgICk7XG4gICAgLy8gYmFzaWNhbGx5IGNsaXBwaW5nIHRoZSBvdGhlciB3YXkgYXJvdW5kLCBzbyBmYWNlIGFwaSBpcyBhd2FyZSBvZiB0aGUgb3ZhbCBhcmVhXG4gICAgY3R4LmNsaXAoY2xpcFBhdGgpO1xuICAgIGRyYXdWaWRlb09uQ2FudmFzKGN0eCwgdmlkZW8sIGRpc3BsYXlDYW52YXMpO1xuICAgIGN0eC5yZXN0b3JlKCk7XG4gIH1cblxuICBmdW5jdGlvbiBkcmF3VmlkZW9PbkNhbnZhcyhjdHg6IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCwgdmlkZW86IEhUTUxWaWRlb0VsZW1lbnQsIGRpc3BsYXlDYW52YXM6IEhUTUxDYW52YXNFbGVtZW50KSB7XG4gICAgY29uc3QgdmlkZW9Bc3BlY3RSYXRpbyA9IHZpZGVvLnZpZGVvV2lkdGggLyB2aWRlby52aWRlb0hlaWdodDtcbiAgICBjb25zdCBjYW52YXNBc3BlY3RSYXRpbyA9IGRpc3BsYXlDYW52YXMud2lkdGggLyBkaXNwbGF5Q2FudmFzLmhlaWdodDtcblxuICAgIGxldCBzb3VyY2VYID0gMDtcbiAgICBsZXQgc291cmNlWSA9IDA7XG4gICAgbGV0IHNvdXJjZVdpZHRoID0gdmlkZW8udmlkZW9XaWR0aDtcbiAgICBsZXQgc291cmNlSGVpZ2h0ID0gdmlkZW8udmlkZW9IZWlnaHQ7XG5cbiAgICBpZiAodmlkZW9Bc3BlY3RSYXRpbyA+IGNhbnZhc0FzcGVjdFJhdGlvKSB7XG4gICAgICAvLyB0aGUgdmlkZW8gaXMgd2lkZXIgdGhhbiB0aGUgY2FudmFzLCBzbyBpdCBjcm9wcyB0aGUgc2lkZXNcbiAgICAgIHNvdXJjZVdpZHRoID0gdmlkZW8udmlkZW9IZWlnaHQgKiBjYW52YXNBc3BlY3RSYXRpbztcbiAgICAgIHNvdXJjZVggPSAodmlkZW8udmlkZW9XaWR0aCAtIHNvdXJjZVdpZHRoKSAvIDI7XG4gICAgfSBlbHNlIGlmICh2aWRlb0FzcGVjdFJhdGlvIDwgY2FudmFzQXNwZWN0UmF0aW8pIHtcbiAgICAgIC8vIHRoZSB2aWRlbyBpcyB0YWxsZXIgdGhhbiB0aGUgY2FudmFzLCBzbyBpdCBjcm9wcyB0aGUgdG9wIGFuZCBib3R0b21cbiAgICAgIHNvdXJjZUhlaWdodCA9IHZpZGVvLnZpZGVvV2lkdGggLyBjYW52YXNBc3BlY3RSYXRpbztcbiAgICAgIHNvdXJjZVkgPSAodmlkZW8udmlkZW9IZWlnaHQgLSBzb3VyY2VIZWlnaHQpIC8gMjtcbiAgICB9XG5cbiAgICBjdHguZHJhd0ltYWdlKFxuICAgICAgdmlkZW8sXG4gICAgICBzb3VyY2VYLFxuICAgICAgc291cmNlWSxcbiAgICAgIHNvdXJjZVdpZHRoLFxuICAgICAgc291cmNlSGVpZ2h0LFxuICAgICAgMCxcbiAgICAgIDAsXG4gICAgICBkaXNwbGF5Q2FudmFzLndpZHRoLFxuICAgICAgZGlzcGxheUNhbnZhcy5oZWlnaHRcbiAgICApO1xuICB9XG5cbiAgZnVuY3Rpb24gcmVnaXN0ZXJJZHJuZExpc3RlbmVycygpIHtcbiAgICB3aWRnZXRJbnN0YW5jZS5hZGRFdmVudExpc3RlbmVyKCdvcGVuJywgKGV2ZW50KSA9PiB7XG4gICAgICBjb25zdCB2aWRlb18gPSBldmVudC5kZXRhaWxbMF0udmlkZW87XG4gICAgICAkaWRybmRWaWRlb1N0b3JlRGltZW5zaW9ucyA9IHsgd2lkdGg6IHZpZGVvXy52aWRlb1dpZHRoLCBoZWlnaHQ6IHZpZGVvXy52aWRlb0hlaWdodCB9O1xuXG4gICAgICB2aWRlby5zcmNPYmplY3QgPSB2aWRlb18uc3JjT2JqZWN0O1xuICAgICAgaWRybmRMb2FkaW5nID0gZmFsc2U7XG5cbiAgICAgIGZ1bmN0aW9uIGxvb3AoKSB7XG4gICAgICAgIGlmIChpZHJuZENsb3NlZCkgcmV0dXJuO1xuXG4gICAgICAgIGRyYXdPdmFsKGRpc3BsYXlDYW52YXMuZ2V0Q29udGV4dCgnMmQnKSBhcyBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQsIHZpZGVvXyk7XG4gICAgICAgIGxvb3BDYWxsZXIodmlkZW8sIGxvb3AsIHRydWUpO1xuICAgICAgfVxuICAgICAgbG9vcCgpO1xuICAgIH0pO1xuICAgIHdpZGdldEluc3RhbmNlLmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgKGUpID0+IHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgICBpZiAoZS5kZXRhaWxbMF0ubWVzc2FnZSA9PT0gJ0RldmljZSBpbiB1c2UnKSB7XG4gICAgICAgICRjYW1lcmFTdGF0dXNTdG9yZSA9IENhbWVyYVN0YXR1c0VudW0uQ0FNRVJBX0lOX1VTRV9FUlJPUjtcbiAgICAgIH0gZWxzZSBpZiAoZS5kZXRhaWxbMF0ubWVzc2FnZSA9PT0gJ1Blcm1pc3Npb24gZGVuaWVkJyB8fCBlLmRldGFpbFswXS5tZXNzYWdlID09PSAnUGVybWlzc2lvbiBkaXNtaXNzZWQnKSB7XG4gICAgICAgICRjYW1lcmFTdGF0dXNTdG9yZSA9IENhbWVyYVN0YXR1c0VudW0uQ0FNRVJBX0RFTklFRF9FUlJPUjtcbiAgICAgIH0gZWxzZSBpZiAoZS5kZXRhaWxbMF0ubWVzc2FnZSA9PT0gJ1JlcXVlc3RlZCBkZXZpY2Ugbm90IGZvdW5kJykge1xuICAgICAgICAkY2FtZXJhU3RhdHVzU3RvcmUgPSBDYW1lcmFTdGF0dXNFbnVtLkRFVklDRV9OT1RfRk9VTkRfRVJST1I7XG4gICAgICB9XG4gICAgICBpZHJuZExvYWRpbmcgPSBmYWxzZTtcbiAgICB9KTtcbiAgICB3aWRnZXRJbnN0YW5jZS5hZGRFdmVudExpc3RlbmVyKCdmYWNlRGV0ZWN0aW9uJywgKGUpID0+IHtcbiAgICAgIC8vIGNvbnNvbGUubG9nKGUpO1xuICAgIH0pO1xuICAgIHdpZGdldEluc3RhbmNlLmFkZEV2ZW50TGlzdGVuZXIoJ2Nsb3NlJywgYXN5bmMgKGUpID0+IHtcbiAgICAgIGlmICghJGNhcHR1cmVkKSB7XG4gICAgICAgIGNhcHR1cmluZyA9IGZhbHNlO1xuICAgICAgfVxuICAgICAgaWRybmRDbG9zZWQgPSB0cnVlO1xuICAgICAgd2FpdGluZ0lkcm5kQ2FwdHVyZUV2ZW50ID0gZmFsc2U7XG4gICAgICBpZiAoJGNhbWVyYVN0YXR1c1N0b3JlID09PSBDYW1lcmFTdGF0dXNFbnVtLk9LKSB7XG4gICAgICAgICRjYW1lcmFTdGF0dXNTdG9yZSA9IENhbWVyYVN0YXR1c0VudW0uQ0FNRVJBX0NMT1NFRF9FUlJPUjtcbiAgICAgIH1cbiAgICAgIC8vIGNvbnNvbGUubG9nKGUpO1xuICAgIH0pO1xuICAgIHdpZGdldEluc3RhbmNlLmFkZEV2ZW50TGlzdGVuZXIoJ2luaXRpYWxpemUnLCBhc3luYyAoZSkgPT4ge1xuICAgICAgLy8gY29uc29sZS5sb2coZSk7XG4gICAgICBpbml0aWFsaXplZCA9IHRydWU7XG4gICAgICAkaWRybmRJbml0aWFsaXplZCA9IHRydWU7XG4gICAgfSk7XG4gICAgd2lkZ2V0SW5zdGFuY2UuYWRkRXZlbnRMaXN0ZW5lcignY2FwdHVyZScsIGFzeW5jIChldmVudCkgPT4ge1xuICAgICAgbGl2ZW5lc3NFcnJvciA9ICcnO1xuICAgICAgY29uc3QgeyBlbmNyeXB0ZWRGaWxlLCBwaG90byB9ID0gZXZlbnQuZGV0YWlsWzBdO1xuICAgICAgJGJsb2IgPSBlbmNyeXB0ZWRGaWxlO1xuICAgICAgd2FpdGluZ0lkcm5kQ2FwdHVyZUV2ZW50ID0gZmFsc2U7XG4gICAgICAkcmVxdWVzdFJlc3VsdCA9IHJlcXVlc3RSZXN1bHRFbnVtLk9LO1xuICAgICAgJHVuY29uZm9ybWl0aWVzU3RvcmUuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICAgICRjYXB0dXJlZCA9IHRydWU7XG4gICAgICBjYXB0dXJpbmcgPSBmYWxzZTtcbiAgICAgIGNvbnN0IGltZyA9IChhd2FpdCBibG9iVG9CYXNlNjQocGhvdG8pKS5zcGxpdCgnLCcpO1xuICAgICAgJGRhdGFUeXBlUHJlZml4ID0gaW1nWzBdO1xuICAgICAgJGltYWdlID0gaW1nWzFdO1xuICAgICAgJG9yaWdpbmFsQ2FwdHVyZSA9IGltZ1sxXTtcblxuICAgICAgLy8gaWYgbm8gZW5kcG9pbnQgaXMgcHJvdmlkZWQsIHdlIHVzZSB0aGUgZXZhbHVhdGUgYmlvbWV0cmljcyBlbmRwb2ludCB3aGljaCBzaG91bGQgZG8gYm90aCBsaXZlbmVzcyBhbmQgdW5jb25mb3JtaXRpZXNcbiAgICAgIGlmICghJGNhcHR1cmVMaXZlbmVzc0lkcm5kRW5kcG9pbnQpIHtcbiAgICAgICAgbGV0IGJvZHlQYXJ0cywgaWNhb1dhcm5pbmdzO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICh7IGJvZHlQYXJ0cywgaWNhb1dhcm5pbmdzIH0gPSBhd2FpdCBnZXRGYWNlVW5jb25mb3JtaXRpZXMoXG4gICAgICAgICAgICAkb3JpZ2luYWxDYXB0dXJlLFxuICAgICAgICAgICAgZXZhbHVhdGVQaG90byxcbiAgICAgICAgICAgIChhd2FpdCBibG9iVG9CYXNlNjQoZW5jcnlwdGVkRmlsZSkpLnNwbGl0KCcsJylbMV1cbiAgICAgICAgICApKTtcbiAgICAgICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChcbiAgICAgICAgICAgIG5ldyBDdXN0b21FdmVudCgnZmFjZS11bmNvbmZvcm1pdGllcy12YWxpZGF0ZWQnLCB7XG4gICAgICAgICAgICAgIGRldGFpbDogeyBib2R5UGFydHMsIGljYW9XYXJuaW5ncywgc3RhdHVzOiAkcmVxdWVzdFJlc3VsdCB9LFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICApO1xuICAgICAgICAgIC8vVE9ETzogdW5jb21tZW50IHRoaXNcbiAgICAgICAgICAvLyBpZiBldmVyeXRoaW5nIGlzIGZpbmUsIGNsb3NlIHRoZSBjYW1lcmEgYWxyZWFkeS5cbiAgICAgICAgICAvLyB3aWRnZXRJbnN0YW5jZS5jbG9zZUNhbWVyYSgpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICAgICAgICBsZXQgZXJyb3JDb2RlID0gaWRybmRFcnJvclRvaTE4bktleVsnVU5LTk9XTiddO1xuICAgICAgICAgIGxldCBib2R5UGFydHM6IEJvZHlQYXJ0W10gPSBbXTtcbiAgICAgICAgICBsZXQgaWNhb1dhcm5pbmdzID0gW107XG4gICAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBBeGlvc0Vycm9yICYmIGUucmVzcG9uc2U/LnN0YXR1cyA9PT0gNDAwKSB7XG4gICAgICAgICAgICBpZiAoZS5yZXNwb25zZS5kYXRhICYmIEFycmF5LmlzQXJyYXkoZS5yZXNwb25zZS5kYXRhLmJvZHlQYXJ0cykpIHtcbiAgICAgICAgICAgICAgYm9keVBhcnRzID0gZS5yZXNwb25zZS5kYXRhLmJvZHlQYXJ0cyBhcyBCb2R5UGFydFtdO1xuICAgICAgICAgICAgICBpY2FvV2FybmluZ3MgPSBlLnJlc3BvbnNlLmRhdGEuaWNhb1dhcm5pbmdzO1xuICAgICAgICAgICAgICBjb25zdCBmYWNlID0gYm9keVBhcnRzLmZpbmQoKGJwKSA9PiAoYnAubGl2ZW5lc3NSZXN1bHQgYXMgbGl2ZW5lc3NFcnJvclJlc3VsdCkuZXJyb3IpO1xuICAgICAgICAgICAgICBlcnJvckNvZGUgPSAoZmFjZT8ubGl2ZW5lc3NSZXN1bHQgYXMgbGl2ZW5lc3NFcnJvclJlc3VsdCkuZXJyb3JfY29kZTtcbiAgICAgICAgICAgICAgJHJlcXVlc3RSZXN1bHQgPSByZXF1ZXN0UmVzdWx0RW51bS5MSVZFTkVTU19ERVRFQ1RJT05fRkFJTFVSRTtcbiAgICAgICAgICAgICAgaWYgKCEoZmFjZT8ubGl2ZW5lc3NSZXN1bHQgYXMgbGl2ZW5lc3NFcnJvclJlc3VsdCkuZXJyb3JfY29kZSkge1xuICAgICAgICAgICAgICAgICRyZXF1ZXN0UmVzdWx0ID0gcmVxdWVzdFJlc3VsdEVudW0uVU5LTk9XTl9MSVZFTkVTU19FUlJPUjtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBsaXZlbmVzc0Vycm9yID0gaWRybmRFcnJvclRvaTE4bktleVtlcnJvckNvZGUgYXMga2V5b2YgdHlwZW9mIGlkcm5kRXJyb3JUb2kxOG5LZXldO1xuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdMaXZlbmVzcyBlcnJvcjonLCBlcnJvckNvZGUpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgLy8gaWYgYnBzIGlzIG1pc3NpbmcsIHRoaXMgaXMgbGlrZWx5IGEgdGVtcGxhdGUgZXh0cmFjdGlvbiBlcnJvclxuICAgICAgICAgICAgICAkcmVxdWVzdFJlc3VsdCA9IHJlcXVlc3RSZXN1bHRFbnVtLlRFTVBMQVRFX0VYVFJBQ1RJT05fRVJST1I7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICRyZXF1ZXN0UmVzdWx0ID0gcmVxdWVzdFJlc3VsdEVudW0uVU5BQkxFX1RPX0NPTU1VTklDQVRFX1dJVEhfVEVNUExBVEVfRVhUUkFDVElPTl9TRVJWSUNFOyAgICAgICAgXG4gICAgICAgICAgICBpZiAoZXZhbHVhdGVQaG90bykgeyAgXG4gICAgICAgICAgICAgIHRvYXN0LmZpcmUoeyBpY29uOiAnZXJyb3InLCB0aXRsZTogJ0ZhbGhhIGFvIGNvbXVuaWNhciBjb20gc2VydmnDp28gZGUgTGl2ZW5lc3MnIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICAkdW5jb25mb3JtaXRpZXNTdG9yZS5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChcbiAgICAgICAgICAgIG5ldyBDdXN0b21FdmVudCgnZmFjZS11bmNvbmZvcm1pdGllcy12YWxpZGF0ZWQnLCB7XG4gICAgICAgICAgICAgIGRldGFpbDoge1xuICAgICAgICAgICAgICAgIGJvZHlQYXJ0cyxcbiAgICAgICAgICAgICAgICBlcnJvckNvZGUsXG4gICAgICAgICAgICAgICAgdHJhbnNsYXRlZEVycm9yOiAkXyhsaXZlbmVzc0Vycm9yKSxcbiAgICAgICAgICAgICAgICBzdGF0dXM6ICRyZXF1ZXN0UmVzdWx0LFxuICAgICAgICAgICAgICAgIGljYW9XYXJuaW5ncyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCRyZXF1ZXN0UmVzdWx0ICE9PSByZXF1ZXN0UmVzdWx0RW51bS5PSykge1xuICAgICAgICAgICR1bmNvbmZvcm1pdGllc1N0b3JlLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYm9keVBhcnRzWzBdLmxpdmVuZXNzUmVzdWx0KSB7XG4gICAgICAgICAgdmFsaWRhdGVMaXZlbmVzcyhib2R5UGFydHNbMF0ubGl2ZW5lc3NSZXN1bHQgYXMgbGl2ZW5lc3NSZXN1bHQpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChib2R5UGFydHMubGVuZ3RoICE9PSAwICYmIGJvZHlQYXJ0c1swXS5kYXRhKSB7XG4gICAgICAgICAgJGltYWdlID0gYm9keVBhcnRzWzBdLmRhdGE7XG4gICAgICAgIH1cblxuICAgICAgICB0cmFuc2xhdGVBbmRTZXRVbmNvbmZvcm1pdGllcyhpY2FvV2FybmluZ3MhKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgbGV0IGVycm9yQ29kZTtcbiAgICAgIGxldCBsaXZlbmVzc1Jlc3VsdDtcbiAgICAgIHRyeSB7XG4gICAgICAgIGxpdmVuZXNzUmVzdWx0ID0gYXdhaXQgZ2V0TGl2ZW5lc3NJZHJuZChlbmNyeXB0ZWRGaWxlKTtcbiAgICAgICAgdmFsaWRhdGVMaXZlbmVzcyhsaXZlbmVzc1Jlc3VsdC5kYXRhKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgJHJlcXVlc3RSZXN1bHQgPSByZXF1ZXN0UmVzdWx0RW51bS5VTktOT1dOX0xJVkVORVNTX0VSUk9SO1xuICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIEF4aW9zRXJyb3IgJiYgZS5yZXNwb25zZT8uc3RhdHVzID09PSA0MDApIHtcbiAgICAgICAgICBlcnJvckNvZGUgPSBlLnJlc3BvbnNlLmRhdGEuZXJyb3JfY29kZTtcbiAgICAgICAgICBsaXZlbmVzc0Vycm9yID0gaWRybmRFcnJvclRvaTE4bktleVtlcnJvckNvZGUgYXMga2V5b2YgdHlwZW9mIGlkcm5kRXJyb3JUb2kxOG5LZXldO1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0xpdmVuZXNzIGVycm9yOicsIGVycm9yQ29kZSk7XG4gICAgICAgICAgJHJlcXVlc3RSZXN1bHQgPSByZXF1ZXN0UmVzdWx0RW51bS5MSVZFTkVTU19ERVRFQ1RJT05fRkFJTFVSRTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0b2FzdC5maXJlKHsgaWNvbjogJ2Vycm9yJywgdGl0bGU6ICdGYWxoYSBhbyBjb211bmljYXIgY29tIHNlcnZpw6dvIGRlIExpdmVuZXNzJyB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoJHJlcXVlc3RSZXN1bHQgIT09IHJlcXVlc3RSZXN1bHRFbnVtLk9LKSB7XG4gICAgICAgICR1bmNvbmZvcm1pdGllc1N0b3JlLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChcbiAgICAgICAgICBuZXcgQ3VzdG9tRXZlbnQoJ2ZhY2UtdW5jb25mb3JtaXRpZXMtdmFsaWRhdGVkJywge1xuICAgICAgICAgICAgZGV0YWlsOiB7XG4gICAgICAgICAgICAgIGJvZHlQYXJ0czogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGJvZHlQYXJ0OiAnRkFDRScsXG4gICAgICAgICAgICAgICAgICBkYXRhOiAkb3JpZ2luYWxDYXB0dXJlLFxuICAgICAgICAgICAgICAgICAgbGl2ZW5lc3NCbG9iOiAoYXdhaXQgYmxvYlRvQmFzZTY0KGVuY3J5cHRlZEZpbGUpKS5zcGxpdCgnLCcpWzFdLFxuICAgICAgICAgICAgICAgICAgLi4uKGxpdmVuZXNzUmVzdWx0ICYmIHsgbGl2ZW5lc3NSZXN1bHQgfSksXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgLi4uKGVycm9yQ29kZSAmJiB7IGVycm9yQ29kZSB9KSxcbiAgICAgICAgICAgICAgLi4uKGxpdmVuZXNzRXJyb3IgJiYgeyB0cmFuc2xhdGVkRXJyb3I6ICRfKGxpdmVuZXNzRXJyb3IpIH0pLFxuICAgICAgICAgICAgICBzdGF0dXM6ICRyZXF1ZXN0UmVzdWx0LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBsZXQgeyBib2R5UGFydHMsIGljYW9XYXJuaW5ncyB9ID0gYXdhaXQgZ2V0RmFjZVVuY29uZm9ybWl0aWVzKCRvcmlnaW5hbENhcHR1cmUsIGV2YWx1YXRlUGhvdG8pO1xuICAgICAgd2luZG93LmRpc3BhdGNoRXZlbnQoXG4gICAgICAgIG5ldyBDdXN0b21FdmVudCgnZmFjZS11bmNvbmZvcm1pdGllcy12YWxpZGF0ZWQnLCB7XG4gICAgICAgICAgZGV0YWlsOiB7XG4gICAgICAgICAgICBib2R5UGFydHMsXG4gICAgICAgICAgICBpY2FvV2FybmluZ3MsXG4gICAgICAgICAgICBzdGF0dXM6ICRyZXF1ZXN0UmVzdWx0LFxuICAgICAgICAgICAgZXJyb3JDb2RlLFxuICAgICAgICAgICAgLi4uKGxpdmVuZXNzRXJyb3IgJiYgeyB0cmFuc2xhdGVkRXJyb3I6ICRfKGxpdmVuZXNzRXJyb3IpIH0pLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICApO1xuICAgICAgaWYgKGJvZHlQYXJ0c1swXS5kYXRhKSB7XG4gICAgICAgICRpbWFnZSA9IGJvZHlQYXJ0c1swXS5kYXRhO1xuICAgICAgfVxuICAgICAgdHJhbnNsYXRlQW5kU2V0VW5jb25mb3JtaXRpZXMoaWNhb1dhcm5pbmdzKTtcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIG9wZW5DYW1lcmEoZGV2aWNlPzogc3RyaW5nKSB7XG4gICAgLy8gdGhpcyB3ZWlyZCBzdHVmIHdpdGggaGVpZ2h0IGFuZCB3aWR0aCBpcyBoZXJlIHRvIGNvbXBlbnNhdGUgYSBzdmVsdGUgaXNzdWVcbiAgICAvLyBiZWNhdXNlIG9uTW91bnQgZ2V0cyBjYWxsZWQgdHdpY2VcbiAgICBjb25zdCBbd2lkdGgsIGhlaWdodF0gPSAodmlkZW9EaW1lbnNpb25zID8/ICcnKVxuICAgICAgPy5yZXBsYWNlQWxsKCcgJywgJycpXG4gICAgICA/LnNwbGl0KCd4JylcbiAgICAgID8ubWFwKCh2KSA9PiAodiA/IHBhcnNlSW50KHYpIDogdW5kZWZpbmVkKSk7XG4gICAgaWYgKCF3aWR0aCB8fCAhaGVpZ2h0KSByZXR1cm47XG4gICAgJHZpZGVvU3RvcmUgPSB7IHZpZGVvV2lkdGg6IHdpZHRoLCB2aWRlb0hlaWdodDogaGVpZ2h0IH07XG4gICAgLy8gZmxpcCBlbVxuICAgIGlmIChpc0xpdmVuZXNzRW5hYmxlZCgpICYmIGhlaWdodCA8IHdpZHRoICYmIGlzTW9iaWxlKCkpIHtcbiAgICAgICR2aWRlb1N0b3JlID0geyB2aWRlb1dpZHRoOiBoZWlnaHQsIHZpZGVvSGVpZ2h0OiB3aWR0aCB9O1xuICAgIH1cbiAgICBcbiAgICBpZiAoaXNMaXZlbmVzc0VuYWJsZWQoKSkge1xuICAgICAgb3BlbkNhbWVyYUxpdmVuZXNzKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgYXdhaXQgc2VsZWN0RGV2aWNlKHdpZHRoLCBoZWlnaHQsIGRldmljZSk7IC8vIG9wZW4gdGhlIGZyb250IGNhbWVyYSBcbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIG9wZW5DYW1lcmFMaXZlbmVzcygpIHtcbiAgICBpZiAoIWlzTGl2ZW5lc3NFbmFibGVkKCkpIHJldHVybjtcblxuICAgICRjYW1lcmFTdGF0dXNTdG9yZSA9IENhbWVyYVN0YXR1c0VudW0uT0s7XG4gICAgaWYgKHdpZGdldEluc3RhbmNlICYmICdvcGVuQ2FtZXJhJyBpbiB3aWRnZXRJbnN0YW5jZSkgd2lkZ2V0SW5zdGFuY2Uub3BlbkNhbWVyYSgpO1xuICAgIGNhcHR1cmluZyA9IHRydWU7XG4gICAgaWRybmRDbG9zZWQgPSBmYWxzZTtcbiAgICBpZHJuZExvYWRpbmcgPSB0cnVlO1xuICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gY2FtZXJhIGRldmljZSwgZW51bWVyYXRlIGRldmljZXMgYWdhaW4uIFRoaXMgaXMgYSB3b3JrYXJvdW5kIGZvciAnYXNrJyBwZXJtaXNzaW9uIFxuICAgIGlmICghJGNhbWVyYURldmljZXNTdG9yZVswXT8uZGV2aWNlSWQpIHsgICBcbiAgICAgIGNvbnN0IFt3aWR0aCwgaGVpZ2h0XSA9ICh2aWRlb0RpbWVuc2lvbnMgPz8gJycpXG4gICAgICA/LnJlcGxhY2VBbGwoJyAnLCAnJylcbiAgICAgID8uc3BsaXQoJ3gnKVxuICAgICAgPy5tYXAoKHYpID0+ICh2ID8gcGFyc2VJbnQodikgOiB1bmRlZmluZWQpKTtcbiAgICAgIGlmICghd2lkdGggfHwgIWhlaWdodCkgcmV0dXJuO1xuICAgICAgYXdhaXQgZ2V0VmlkZW9EaW1lbnNpb25zKHdpZHRoLCBoZWlnaHQsICRmYWNpbmdNb2RlKTsgICAgXG4gICAgICBhd2FpdCBlbnVtZXJhdGVEZXZpY2VzKCk7XG4gICAgfVxuICB9XG5cbiAgZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHBsYXkoKSB7XG4gICAgLy8gd2FpdCBmb3IgZmFjZSBhcGkgdG8gbG9hZCB3ZWlnaHRzXG4gICAgaWYgKCRlbmFibGVGYWNlQXBpICYmICFsb2FkZWRGYWNlQXBpQW5kV2VpZ2h0cykgcmV0dXJuIGxvb3BDYWxsZXIodmlkZW8sIHBsYXkpO1xuICAgIC8vIHJldHVybiBpZiB1bmluaXRpYWxpemVkIHZpZGVvIGVsZW1lbnRcbiAgICBpZiAoIXZpZGVvKSByZXR1cm47XG4gICAgLy8gcmV0dXJuIGlmIHRoZSBjdXJyZW50IHRhYiBpc24ndCBmYWNlXG4gICAgaWYgKCEoJHNlbGVjdGVkVGFiID09PSBUYWJFbnVtLkZhY2UpICYmICFub1RhYnMpIHJldHVybiBsb29wQ2FsbGVyKHZpZGVvLCBwbGF5KTtcbiAgICAvLyBpZiBldmVyeXRoaW5nIHBhc3NlcyB3ZSBhcmUgcmVhZHkgdG8gY2FwdHVyZVxuICAgICRyZWFkeSA9IHRydWU7XG4gICAgJGluaXRpYWxpemluZyA9IGZhbHNlXG4gICAgLy8gb25seSBtYWtlIGRldGVjdGlvbnMgaWYgZmFjZSBhcGkgZW5hYmxlZFxuICAgIGlmICgkZW5hYmxlRmFjZUFwaSkge1xuICAgICAgLy8gZmlyZXMgdGhlIGxpc3RlbmVyIHRvIHN0YXJ0IHRoZSBmYWNlIGFwaSBsb29wXG4gICAgICBpZiAoISRzdGFydEZhY2VBcGkpICRzdGFydEZhY2VBcGkgPSB0cnVlO1xuXG4gICAgICBpZiAoIWlzTGl2ZW5lc3NFbmFibGVkKCkpIHtcbiAgICAgICAgZHJhd092YWwoZGlzcGxheUNhbnZhcy5nZXRDb250ZXh0KCcyZCcpIGFzIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCwgdmlkZW8pO1xuICAgICAgfVxuICAgICAgbG9vcENhbGxlcih2aWRlbywgcGxheSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRyYXdPdmFsKGRpc3BsYXlDYW52YXMuZ2V0Q29udGV4dCgnMmQnKSBhcyBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQsIHZpZGVvKTtcbiAgICAgIGxvb3BDYWxsZXIodmlkZW8sIHBsYXkpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIGNhcHR1cmUoKSB7XG4gICAgaWYgKCRzY3JlZW5Mb2NrZWQpIHtcbiAgICAgIHVuTG9ja1NjcmVlbigpO1xuICAgICAgJHNjcmVlbkxvY2tlZCA9IGZhbHNlO1xuICAgIH1cblxuICAgIC8vQ2hlY2tzIGlmIHRoZSBkaXN0YW5jZSBiZXR3ZWVuIHRoZSBleWVzIGluIHRoZSBjYXB0dXJlZCBwaG90byBpcyBncmVhdGVyIHRoYW4gdGhlIG1pbkV5ZVRvRXllRGlzdFxuICAgIGlmIChtaW5FeWVUb0V5ZURpc3QgPiAwICYmICRleWVEaXN0YW5jZSA8IG1pbkV5ZVRvRXllRGlzdCkge1xuICAgICAgbGV0IGVycm9yQ29kZSA9ICdGQUNFX01VSVRPX1BFUVVFTkEnO1xuICAgICAgY29uc3QgdHJhbnNsYXRlZEVycm9yID0gdW5jb25mb3JtaXR5VG9pMThuS2V5W2Vycm9yQ29kZSBhcyBrZXlvZiB0eXBlb2YgdW5jb25mb3JtaXR5VG9pMThuS2V5XTtcbiAgICAgIGVycm9yQ29kZSA9IHVuY29uZm9ybWl0eVRvaTE4bktleVsnRkFDRV9NVUlUT19QRVFVRU5BJ107XG4gICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChcbiAgICAgICAgbmV3IEN1c3RvbUV2ZW50KCdsb3ctcXVhbGl0eS1mYWNlJywge1xuICAgICAgICAgIGRldGFpbDoge1xuICAgICAgICAgICAgZXJyb3JDb2RlOiBlcnJvckNvZGUsXG4gICAgICAgICAgICB0cmFuc2xhdGVkRXJyb3I6ICRfKHRyYW5zbGF0ZWRFcnJvciksXG4gICAgICAgICAgICBib2R5UGFydHM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGJvZHlQYXJ0OiAnRkFDRScsXG4gICAgICAgICAgICAgICAgbWluRXllVG9FeWVEaXN0OiBtaW5FeWVUb0V5ZURpc3QsXG4gICAgICAgICAgICAgICAgY2FwdHVyZWRFeWVUb0V5ZURpc3Q6ICRleWVEaXN0YW5jZSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgICB0b2FzdC5maXJlKHtpY29uOiAnZXJyb3InLCB0aXRsZTogJF8odHJhbnNsYXRlZEVycm9yKX0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgICRyZXF1ZXN0UmVzdWx0ID0gcmVxdWVzdFJlc3VsdEVudW0uT0s7XG4gICAgaWYgKGlzTGl2ZW5lc3NFbmFibGVkKCkpIHtcbiAgICAgIHdhaXRpbmdJZHJuZENhcHR1cmVFdmVudCA9IHRydWU7XG4gICAgICB3aWRnZXRJbnN0YW5jZS50YWtlUGhvdG8oKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgJGNhcHR1cmVkID0gdHJ1ZTtcbiAgICB0cnkge1xuICAgICAgaWYgKCRlbmFibGVGYWNlQXBpKSB7XG4gICAgICAgIGNvbnN0IFtjYW52YXNdID0gYXdhaXQgKGF3YWl0IGltcG9ydCgnQHZsYWRtYW5kaWMvZmFjZS1hcGknKSkuZXh0cmFjdEZhY2VzKHZpZGVvLCBbJGJveFN0b3JlXSk7XG4gICAgICAgIGNvbnN0IGltZyA9IGNhbnZhcy50b0RhdGFVUkwoJ2ltYWdlL2pwZWcnKS5zcGxpdCgnLCcpO1xuICAgICAgICAkZGF0YVR5cGVQcmVmaXggPSBpbWdbMF07XG4gICAgICAgICRpbWFnZSA9IGltZ1sxXTtcbiAgICAgICAgJG9yaWdpbmFsQ2FwdHVyZSA9IGltZ1sxXTtcblxuICAgICAgICBsZXQgYm9keVBhcnRzLCBpY2FvV2FybmluZ3M7XG5cbiAgICAgICAgICAoeyBib2R5UGFydHMsIGljYW9XYXJuaW5ncyB9ID0gYXdhaXQgZ2V0RmFjZVVuY29uZm9ybWl0aWVzKCRpbWFnZSwgZXZhbHVhdGVQaG90bykpO1xuICAgICAgICAgIHdpbmRvdy5kaXNwYXRjaEV2ZW50KFxuICAgICAgICAgICAgbmV3IEN1c3RvbUV2ZW50KCdmYWNlLXVuY29uZm9ybWl0aWVzLXZhbGlkYXRlZCcsIHtcbiAgICAgICAgICAgICAgZGV0YWlsOiB7XG4gICAgICAgICAgICAgICAgYm9keVBhcnRzLFxuICAgICAgICAgICAgICAgIGljYW9XYXJuaW5ncyxcbiAgICAgICAgICAgICAgICBzdGF0dXM6ICRyZXF1ZXN0UmVzdWx0LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICApO1xuXG4gICAgICAgIGlmIChib2R5UGFydHMubGVuZ3RoICE9PSAwICYmIGJvZHlQYXJ0c1swXS5kYXRhKSB7XG4gICAgICAgICAgJGltYWdlID0gYm9keVBhcnRzWzBdLmRhdGE7XG4gICAgICAgIH1cblxuICAgICAgICB0cmFuc2xhdGVBbmRTZXRVbmNvbmZvcm1pdGllcyhpY2FvV2FybmluZ3MpO1xuICAgICAgICBcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xuICAgICAgICBjb25zdCBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTtcbiAgICAgICAgY2FudmFzLndpZHRoID0gdmlkZW8ud2lkdGg7XG4gICAgICAgIGNhbnZhcy5oZWlnaHQgPSB2aWRlby5oZWlnaHQ7XG4gICAgICAgIGN0eD8uZHJhd0ltYWdlKHZpZGVvLCAwLCAwLCBjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQpO1xuICAgICAgICBjb25zdCBpbWcgPSBjYW52YXMudG9EYXRhVVJMKCdpbWFnZS9qcGVnJykuc3BsaXQoJywnKTtcbiAgICAgICAgJGRhdGFUeXBlUHJlZml4ID0gaW1nWzBdO1xuICAgICAgICAkaW1hZ2UgPSBpbWdbMV07XG4gICAgICAgICRvcmlnaW5hbENhcHR1cmUgPSBpbWdbMV07XG4gICAgICAgIGxldCB7IGJvZHlQYXJ0cywgaWNhb1dhcm5pbmdzIH0gPSBhd2FpdCBnZXRGYWNlVW5jb25mb3JtaXRpZXMoJGltYWdlLCBldmFsdWF0ZVBob3RvKTtcbiAgICAgICAgd2luZG93LmRpc3BhdGNoRXZlbnQoXG4gICAgICAgICAgbmV3IEN1c3RvbUV2ZW50KCdmYWNlLXVuY29uZm9ybWl0aWVzLXZhbGlkYXRlZCcsIHtcbiAgICAgICAgICAgIGRldGFpbDoge1xuICAgICAgICAgICAgICBib2R5UGFydHMsXG4gICAgICAgICAgICAgIGljYW9XYXJuaW5ncyxcbiAgICAgICAgICAgICAgc3RhdHVzOiAkcmVxdWVzdFJlc3VsdCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKGJvZHlQYXJ0cy5sZW5ndGggIT09IDAgJiYgYm9keVBhcnRzWzBdLmRhdGEpIHtcbiAgICAgICAgICAkaW1hZ2UgPSBib2R5UGFydHNbMF0uZGF0YTtcbiAgICAgICAgfVxuICAgICAgICB0cmFuc2xhdGVBbmRTZXRVbmNvbmZvcm1pdGllcyhpY2FvV2FybmluZ3MpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgICBsZXQgZXJyb3JDb2RlID0gaWRybmRFcnJvclRvaTE4bktleVsnVU5LTk9XTiddO1xuICAgICAgbGV0IGJvZHlQYXJ0czogQm9keVBhcnRbXSA9IFtdO1xuICAgICAgbGV0IGljYW9XYXJuaW5ncyA9IFtdO1xuICAgICAgaWYgKGUgaW5zdGFuY2VvZiBBeGlvc0Vycm9yICYmIGUucmVzcG9uc2U/LnN0YXR1cyA9PT0gNDAwKSB7XG4gICAgICAgIGlmIChlLnJlc3BvbnNlLmRhdGEgJiYgQXJyYXkuaXNBcnJheShlLnJlc3BvbnNlLmRhdGEuYm9keVBhcnRzKSkge1xuICAgICAgICAgIGJvZHlQYXJ0cyA9IGUucmVzcG9uc2UuZGF0YS5ib2R5UGFydHMgYXMgQm9keVBhcnRbXTtcbiAgICAgICAgICBpY2FvV2FybmluZ3MgPSBlLnJlc3BvbnNlLmRhdGEuaWNhb1dhcm5pbmdzO1xuICAgICAgICAgIGNvbnN0IGZhY2UgPSBib2R5UGFydHMuZmluZCgoYnApID0+IChicC5saXZlbmVzc1Jlc3VsdCBhcyBsaXZlbmVzc0Vycm9yUmVzdWx0KS5lcnJvcik7XG4gICAgICAgICAgZXJyb3JDb2RlID0gKGZhY2U/LmxpdmVuZXNzUmVzdWx0IGFzIGxpdmVuZXNzRXJyb3JSZXN1bHQpLmVycm9yX2NvZGU7XG4gICAgICAgICAgJHJlcXVlc3RSZXN1bHQgPSByZXF1ZXN0UmVzdWx0RW51bS5MSVZFTkVTU19ERVRFQ1RJT05fRkFJTFVSRTtcbiAgICAgICAgICBpZiAoIShmYWNlPy5saXZlbmVzc1Jlc3VsdCBhcyBsaXZlbmVzc0Vycm9yUmVzdWx0KS5lcnJvcl9jb2RlKSB7XG4gICAgICAgICAgICAkcmVxdWVzdFJlc3VsdCA9IHJlcXVlc3RSZXN1bHRFbnVtLlVOS05PV05fTElWRU5FU1NfRVJST1I7XG4gICAgICAgICAgfVxuICAgICAgICAgIGxpdmVuZXNzRXJyb3IgPSBpZHJuZEVycm9yVG9pMThuS2V5W2Vycm9yQ29kZSBhcyBrZXlvZiB0eXBlb2YgaWRybmRFcnJvclRvaTE4bktleV07XG4gICAgICAgICAgY29uc29sZS5lcnJvcignTGl2ZW5lc3MgZXJyb3I6JywgZXJyb3JDb2RlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBpZiBicHMgaXMgbWlzc2luZywgdGhpcyBpcyBsaWtlbHkgYSB0ZW1wbGF0ZSBleHRyYWN0aW9uIGVycm9yXG4gICAgICAgICAgJHJlcXVlc3RSZXN1bHQgPSByZXF1ZXN0UmVzdWx0RW51bS5URU1QTEFURV9FWFRSQUNUSU9OX0VSUk9SO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAkcmVxdWVzdFJlc3VsdCA9IHJlcXVlc3RSZXN1bHRFbnVtLlVOQUJMRV9UT19DT01NVU5JQ0FURV9XSVRIX1RFTVBMQVRFX0VYVFJBQ1RJT05fU0VSVklDRTsgICAgICAgIFxuICAgICAgICBpZiAoZXZhbHVhdGVQaG90bykge1xuICAgICAgICAgIHRvYXN0LmZpcmUoeyBpY29uOiAnZXJyb3InLCB0aXRsZTogJ0ZhbGhhIGFvIGNvbXVuaWNhciBjb20gc2VydmnDp28gZGUgTGl2ZW5lc3MnIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAkdW5jb25mb3JtaXRpZXNTdG9yZS5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgIHdpbmRvdy5kaXNwYXRjaEV2ZW50KFxuICAgICAgICBuZXcgQ3VzdG9tRXZlbnQoJ2ZhY2UtdW5jb25mb3JtaXRpZXMtdmFsaWRhdGVkJywge1xuICAgICAgICAgIGRldGFpbDoge1xuICAgICAgICAgICAgYm9keVBhcnRzLFxuICAgICAgICAgICAgZXJyb3JDb2RlLFxuICAgICAgICAgICAgdHJhbnNsYXRlZEVycm9yOiAkXyhsaXZlbmVzc0Vycm9yKSxcbiAgICAgICAgICAgIHN0YXR1czogJHJlcXVlc3RSZXN1bHQsXG4gICAgICAgICAgICBpY2FvV2FybmluZ3MsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gc2F2ZSgpIHtcbiAgICBjb25zdCBmYWNlOiBCb2R5UGFydCA9IHtcbiAgICAgIGJvZHlQYXJ0OiAnRkFDRScsXG4gICAgICBkYXRhOiAkaW1hZ2UsXG4gICAgICBqdXN0aWZpY2F0aW9uOiAkanVzdGlmaWNhdGlvbixcbiAgICB9O1xuICAgICRzYXZlZCA9IHRydWU7XG4gICAgLy8gc2VuZCBibG9iIGlmIHByZXNlbnRcbiAgICBpZiAoZ2V0KGJsb2IpKSB7XG4gICAgICBibG9iVG9CYXNlNjQoZ2V0KGJsb2IpKS50aGVuKChiYXNlNjQpID0+IHtcbiAgICAgICAgZmFjZS5saXZlbmVzc0Jsb2IgPSBiYXNlNjQuc3BsaXQoJywnKVsxXTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ2V4cG9ydC1mYWNlJywgeyBkZXRhaWw6IGZhY2UgfSkpO1xuICB9XG5cbiAgZnVuY3Rpb24gcmV0YWtlKCkge1xuICAgIC8vZW1pdCBhbiBlbXB0eSBldmVudCBpbmZvcm1pbmcgdGhhdCBpdCB3YXMgc2NyYXBwZWRcbiAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ2ZhY2Utc2NyYXBwZWQnKSk7XG4gICAgcmVzZXRGYWNlQ29sbGVjdG9yKCk7XG4gICAgaWYgKGlkcm5kQ2xvc2VkKSBvcGVuQ2FtZXJhTGl2ZW5lc3MoKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHZhbGlkYXRlTGl2ZW5lc3MocmVzdWx0OiBsaXZlbmVzc1Jlc3VsdCkge1xuICAgIGxldCB0aXRsZSA9ICcnO1xuICAgIGxldCBpY29uOiBTd2VldEFsZXJ0SWNvbiA9ICdzdWNjZXNzJztcbiAgICBpZiAocmVzdWx0LmlzQWxpdmUpIHtcbiAgICAgIHRpdGxlID0gYFZpdmFjaWRhZGUgZGUgZmFjZSAoJHtyZXN1bHQuZmFjZV9saXZlbmVzcy5wcm9iYWJpbGl0eS50b0ZpeGVkKDIpfSkgZSBkZSBjYXB0dXJhICgke1xuICAgICAgICByZXN1bHQuY2FwdHVyZV9saXZlbmVzcy5wcm9iYWJpbGl0eVxuICAgICAgfSwgJHtyZXN1bHQuY2FwdHVyZV9saXZlbmVzcy5zY29yZS50b0ZpeGVkKDIpfSkgdmVyaWZpY2Fkb3MhYDtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHJlc3VsdD8uZmFjZV9saXZlbmVzcz8ucHJvYmFiaWxpdHkpIHtcbiAgICAgICAgaWNvbiA9ICdlcnJvcic7XG4gICAgICAgIHRpdGxlID0gYFZpdmFjaWRhZGUgZGUgZmFjZSAoJHtyZXN1bHQuZmFjZV9saXZlbmVzcy5wcm9iYWJpbGl0eS50b0ZpeGVkKDIpfSkgZSBkZSBjYXB0dXJhICgke1xuICAgICAgICAgIHJlc3VsdC5jYXB0dXJlX2xpdmVuZXNzLnByb2JhYmlsaXR5XG4gICAgICAgIH0sICR7cmVzdWx0LmNhcHR1cmVfbGl2ZW5lc3Muc2NvcmUudG9GaXhlZCgyKX0pIGluc3VmaWNpZW50ZXMhYDtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKCRzaG93TGl2ZW5lc3NSZXN1bHRUb2FzdCkgdG9hc3QuZmlyZSh7IGljb24sIHRpdGxlIH0pO1xuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gc2VsZWN0RGV2aWNlKHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyLCBkZXZpY2U/OiBzdHJpbmcpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICBkZXZpY2VJZDogZGV2aWNlSWQsXG4gICAgICAgICAgd2lkdGg6IHdpZHRoQ2FtZXJhLFxuICAgICAgICAgIGhlaWdodDogaGVpZ2h0Q2FtZXJhLFxuICAgICAgICAgIGFzcGVjdFJhdGlvOiBhc3BlY3RSYXRpb0NhbWVyYSxcbiAgICAgICAgICBmYWNpbmdNb2RlOiBmYWNpbmcsXG4gICAgICAgICAgdG91Y2hQb2ludHM6IHRvdWNoUG9pbnRzXG4gICAgICAgIH0gPSBhd2FpdCBnZXRWaWRlb0RpbWVuc2lvbnMod2lkdGgsIGhlaWdodCwgJGZhY2luZ01vZGUsIGRldmljZSk7XG4gICAgICAgIGlmICh3aWR0aENhbWVyYSA8IHdpZHRoICYmIGhlaWdodENhbWVyYSA8IGhlaWdodCkge1xuICAgICAgICAgICR2aWRlb1N0b3JlID0geyB2aWRlb1dpZHRoOiB3aWR0aENhbWVyYSwgdmlkZW9IZWlnaHQ6IGhlaWdodENhbWVyYSB9OyAgICAgICAgICBcbiAgICAgICAgfVxuICAgICAgICAvLyB0byB3b3JrIG9uIGRldmljZSBlbXVsYXRpb24gKGRlc2t0b3ApXG4gICAgICAgIGlmIChpc01vYmlsZSgpICYmICghZmFjaW5nIHx8IHRvdWNoUG9pbnRzIDw9IDEpICAmJiAod2lkdGhDYW1lcmEgPiBoZWlnaHRDYW1lcmEpKSB7IFxuICAgICAgICAgICR2aWRlb1N0b3JlID0geyB2aWRlb1dpZHRoOiBoZWlnaHRDYW1lcmEsIHZpZGVvSGVpZ2h0OiB3aWR0aENhbWVyYSB9OyAgICAgICAgICBcbiAgICAgICAgfVxuICAgICAgICAvLyBmaXhlcyB0aGUgJ2NhbWVyYSBkb2Vzbid0IG9wZW4gaXNzdWUnIGJ1dCBjYXVzZXMgYmxhY2sgc2NyZWVuXG4gICAgICAgIC8vICRzZWxlY3RlZFZpZGVvRGV2aWNlSWQgPSBudWxsO1xuICAgICAgICAkc2VsZWN0ZWRWaWRlb0RldmljZUlkID0gZGV2aWNlSWQgPyBkZXZpY2VJZCA6ICRjYW1lcmFEZXZpY2VzU3RvcmVbMF0uZGV2aWNlSWQ7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNvbnN0IGVycm9yID0gZSBhcyBET01FeGNlcHRpb247XG4gICAgICAgIGlkcm5kQ2xvc2VkID0gdHJ1ZTtcbiAgICAgICAgY29uc3QgY29uc3RyYWludEVycm9yID0gKGlzT2JqZWN0KGUpICYmIGUuY29uc3RyYWludCA/IGUuY29uc3RyYWludCA6ICcnKTsgXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IsIGNvbnN0cmFpbnRFcnJvcik7XG4gICAgICAgIGlmIChpc09iamVjdChlcnJvcikgJiYgJ21lc3NhZ2UnIGluIGVycm9yICYmIGVycm9yLm1lc3NhZ2UuaW5jbHVkZXMoJ1Blcm1pc3Npb24gZGVuaWVkJykpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKFwiVXNlciBkaWRuJ3QgZ2l2ZSBwZXJtaXNzaW9uIHRvIHVzZSBjYW1lcmEhXCIpO1xuICAgICAgICAgICRjYW1lcmFTdGF0dXNTdG9yZSA9IENhbWVyYVN0YXR1c0VudW0uQ0FNRVJBX0RFTklFRF9FUlJPUjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNPYmplY3QoZXJyb3IpICYmICdtZXNzYWdlJyBpbiBlcnJvciAmJiBlcnJvci5tZXNzYWdlLmluY2x1ZGVzKCdSZXF1ZXN0ZWQgZGV2aWNlIG5vdCBmb3VuZCcpKSB7XG4gICAgICAgICAgJGNhbWVyYVN0YXR1c1N0b3JlID0gQ2FtZXJhU3RhdHVzRW51bS5ERVZJQ0VfTk9UX0ZPVU5EX0VSUk9SO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjb25zdHJhaW50RXJyb3IuaW5jbHVkZXMoJ3dpZHRoJykgfHwgY29uc3RyYWludEVycm9yLmluY2x1ZGVzKCdoZWlnaHQnKSkge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYENhbWVyYSBkb2VzIG5vdCBtZWV0IHRoZSBtaW5pbXVtIHN1cHBvcnRlZCByZXF1aXJlbWVudHMhICgke2NvbnN0cmFpbnRFcnJvcn0pYCk7XG4gICAgICAgICAgJGNhbWVyYVN0YXR1c1N0b3JlID0gQ2FtZXJhU3RhdHVzRW51bS5DQU1FUkFfVU5TVVBQT1JURUQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIHJlT3BlbkNhbWVyYSgpe1xuICAgICRzZWxlY3RlZFZpZGVvRGV2aWNlSWQgPSAnJztcbiAgICBhd2FpdCBvcGVuQ2FtZXJhKCk7XG4gIH1cblxuICBmdW5jdGlvbiByZWdpc3RlckRldmljZUNoYW5nZUxpc3RlbmVyKCkge1xuICAgIG5hdmlnYXRvci5tZWRpYURldmljZXMub25kZXZpY2VjaGFuZ2UgPSBhc3luYyAoZXZlbnQpID0+IHtcbiAgICAgIGF3YWl0IGVudW1lcmF0ZURldmljZXMoKTtcbiAgICAgIGlmICgkY2FtZXJhU3RhdHVzU3RvcmUgIT09IENhbWVyYVN0YXR1c0VudW0uT0spIHtcbiAgICAgICAgYXdhaXQgcmVPcGVuQ2FtZXJhKCk7ICAgICAgICBcbiAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICghaXNMaXZlbmVzc0VuYWJsZWQoKSAmJiAhJF9zdHJlYW0uYWN0aXZlKSBcbiAgICAgICAgfHwgKGlzTGl2ZW5lc3NFbmFibGVkKCkgJiYgIWlkcm5kQ2xvc2VkKVxuICAgICAgKSB7XG4gICAgICAgIHNodXRPZmZDYW1lcmEod2lkZ2V0SW5zdGFuY2UpO1xuICAgICAgICAkY2FtZXJhU3RhdHVzU3RvcmUgPSBDYW1lcmFTdGF0dXNFbnVtLkRFVklDRV9OT1RfRk9VTkRfRVJST1I7XG4gICAgICAgIGlkcm5kQ2xvc2VkID0gdHJ1ZTtcbiAgICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIHNldEZhY2VOb3RGb3VuZEFsZXJ0ICgpIHtcbiAgICAkZmFjZUZvdW5kID0gZmFsc2U7XG4gICAgXG4gICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gICAgY29uc3QgdGltZURpZmYgPSBub3cgLSBmYWNlRm91bmRTdGFydFRpbWU7XG4gICAgaWYgKHRpbWVEaWZmID4gNTAwMCkgeyAgICAgIFxuICAgICAgZW5hYmxlQ2FwdHVyZUJ1dHRvbiA9IHRydWU7XG4gICAgICBmYWNlRm91bmRTdGFydFRpbWUgPSBub3c7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBsaWdodG5lc3MgPSBhd2FpdCBnZXRJbWFnZUxpZ2h0bmVzcyh2aWRlbyk7XG4gICAgICAgIGlmIChsaWdodG5lc3MgPCA1MCkge1xuICAgICAgICAgICRmYWNlVmFsaWRhdGlvbkFsZXJ0ID0gJ2ZhY2VDb2xsZWN0b3IuaWxsdW1pbmF0aW9uVG9vTG93JztcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobGlnaHRuZXNzID4gMTgwKSB7XG4gICAgICAgICAgJGZhY2VWYWxpZGF0aW9uQWxlcnQgPSAnZmFjZUNvbGxlY3Rvci5pbGx1bWluYXRpb25Ub29IaWdoJztcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBjb25zb2xlLndhcm4oXCJBbiBlcnJvciBvY2N1cnJlZCB3aGlsZSBnZXR0aW5nIHRoZSB2aWRlbyBsaWdodGluZyBsZXZlbDogXCIsIGVycm9yKTtcbiAgICAgIH0gXG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBzaGFycG5lc3MgPSBhd2FpdCBnZXRJbWFnZVNoYXJwbmVzcyh2aWRlbyk7XG4gICAgICAgIGlmIChzaGFycG5lc3MgPCA1KSB7XG4gICAgICAgICAgJGZhY2VWYWxpZGF0aW9uQWxlcnQgPSAnZmFjZUNvbGxlY3Rvci5sb3dTaGFycG5lc3MnO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgY29uc29sZS53YXJuKFwiQW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUgZ2V0dGluZyB0aGUgdmlkZW8gc2hhcnBuZXNzIGxldmVsOiBcIiwgZXJyb3IpO1xuICAgICAgfSBcbiAgICAgICRmYWNlVmFsaWRhdGlvbkFsZXJ0ID0gJ2ZhY2VDb2xsZWN0b3IuZmFjZVdhc05vdEZvdW5kJztcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCF3YWl0aW5nRmFjZU5vdEZvdW5kVGltZW91dCkge1xuICAgICAgICB3YWl0aW5nRmFjZU5vdEZvdW5kVGltZW91dCA9IHRydWU7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGxldCBpbnZhbGlkQWxlcnRzID0gWydmYWNlQ29sbGVjdG9yLmZhY2VXYXNOb3RGb3VuZCcsICdmYWNlQ29sbGVjdG9yLmlsbHVtaW5hdGlvblRvb0xvdycsICdmYWNlQ29sbGVjdG9yLmxvd1NoYXJwbmVzcycsICdmYWNlQ29sbGVjdG9yLmlsbHVtaW5hdGlvblRvb0hpZ2gnXTtcbiAgICAgICAgICB3YWl0aW5nRmFjZU5vdEZvdW5kVGltZW91dCA9IGZhbHNlO1xuICAgICAgICAgIGlmICgkZmFjZVZhbGlkYXRpb25BbGVydCAmJiAhaW52YWxpZEFsZXJ0cy5pbmNsdWRlcygkZmFjZVZhbGlkYXRpb25BbGVydCkpIHtcbiAgICAgICAgICAgICRmYWNlVmFsaWRhdGlvbkFsZXJ0ID0gJyc7XG4gICAgICAgICAgfVxuICAgICAgICB9LCAxNTAwKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBTdWJzY3JpcHRpb25zXG5cbiAgY29uc3QgdW5zdWJzY3JpYmVWaWRlb0RpbWVuc2lvbnMgPSB2aWRlb1N0b3JlLnN1YnNjcmliZSgoc3RvcmVPYmopID0+IHtcbiAgICBpZiAoIXZpZGVvKSByZXR1cm47XG4gICAgaWYgKCFkZXRlY3Rpb25zQ2FudmFzKSByZXR1cm47XG5cbiAgICB2aWRlby53aWR0aCA9IHN0b3JlT2JqLnZpZGVvV2lkdGg7XG4gICAgdmlkZW8uaGVpZ2h0ID0gc3RvcmVPYmoudmlkZW9IZWlnaHQ7XG4gICAgZGV0ZWN0aW9uc0NhbnZhcy53aWR0aCA9IHN0b3JlT2JqLnZpZGVvV2lkdGg7XG4gICAgZGV0ZWN0aW9uc0NhbnZhcy5oZWlnaHQgPSBzdG9yZU9iai52aWRlb0hlaWdodDtcbiAgICBtYXNrQ2FudmFzLndpZHRoID0gc3RvcmVPYmoudmlkZW9XaWR0aDtcbiAgICBtYXNrQ2FudmFzLmhlaWdodCA9IHN0b3JlT2JqLnZpZGVvSGVpZ2h0O1xuICAgIC8vIGlmIChpc0xpdmVuZXNzRW5hYmxlZCgpKSB7XG4gICAgLy8gY29uc29sZS5sb2coc3RvcmVPYmoudmlkZW9XaWR0aCwgc3RvcmVPYmoudmlkZW9IZWlnaHQpO1xuICAgIGRpc3BsYXlDYW52YXMud2lkdGggPSBzdG9yZU9iai52aWRlb1dpZHRoO1xuICAgIGRpc3BsYXlDYW52YXMuaGVpZ2h0ID0gc3RvcmVPYmoudmlkZW9IZWlnaHQ7XG4gICAgLy8gfVxuICB9KTtcblxuICBjb25zdCB1bnN1YnNjcmliZUZhY2VWYWxpZGF0aW9ucyA9IGZhY2VWYWxpZGF0aW9uc1N0b3JlLnN1YnNjcmliZSgobmV3VmFsdWUpID0+IHtcbiAgICBpZiAoJGNvbGxlY3RvclNlbGVjdCA9PSAnRE9DVU1FTlQnKSByZXR1cm47XG5cbiAgICBsZXQgbmV3RmFjZVZhbGlkYXRpb25BbGVydCA9ICcnO1xuXG4gICAgaWYgKCFuZXdWYWx1ZS5pc1BlcnNvbkNsb3NlRW5vdWdoKSB7XG4gICAgICBuZXdGYWNlVmFsaWRhdGlvbkFsZXJ0ID0gJ2ZhY2VDb2xsZWN0b3IuY29tZUNsb3NlckNhbWVyYSc7XG4gICAgfSBlbHNlIGlmIChuZXdWYWx1ZS5pc1BlcnNvblRvb2Nsb3NlKSB7XG4gICAgICBuZXdGYWNlVmFsaWRhdGlvbkFsZXJ0ID0gJ2ZhY2VDb2xsZWN0b3IubW92ZUF3YXlDYW1lcmEnO1xuICAgIH0gZWxzZSBpZiAoIW5ld1ZhbHVlLmlzUGVyc29uSW5GcmFtZSkge1xuICAgICAgbmV3RmFjZVZhbGlkYXRpb25BbGVydCA9ICdmYWNlQ29sbGVjdG9yLnN0YXlJbkZyYW1lJztcbiAgICB9IGVsc2UgaWYgKCFuZXdWYWx1ZS5jbG9zZWRNb3V0aCkge1xuICAgICAgbmV3RmFjZVZhbGlkYXRpb25BbGVydCA9ICdmYWNlQ29sbGVjdG9yLmRvbnRPcGVuTW91dGgnO1xuICAgIH1cbiAgICBcbiAgICBpZiAoJGZhY2VGb3VuZCkgc2V0VmFsaWRhdGlvbkFsZXJ0KG5ld0ZhY2VWYWxpZGF0aW9uQWxlcnQpOyAvLyBzZXQgdGhlIGFsZXJ0IG9ubHkgaWYgdGhlIGZhY2UgaXMgZm91bmRcblxuICAgIC8vIEFVVE9NQVRJQyBDQVBUVVJFXG4gICAgLy8gaWYgYWxsIHRoZSBwYXJhbWV0ZXJzIGFyZSBva1xuICAgIGlmIChcbiAgICAgICEkY2FwdHVyZWQgJiZcbiAgICAgICRhdXRvbWF0aWNDYXB0dXJlICYmXG4gICAgICAkZmFjZUZvdW5kICYmXG4gICAgICAhaXNDb3VudGluZ0Rvd24gJiZcbiAgICAgIG5ld1ZhbHVlLmlzUGVyc29uSW5GcmFtZSAmJlxuICAgICAgbmV3VmFsdWUuY2xvc2VkTW91dGggJiZcbiAgICAgICEoIW5ld1ZhbHVlLmlzUGVyc29uQ2xvc2VFbm91Z2ggfHwgbmV3VmFsdWUuaXNQZXJzb25Ub29jbG9zZSlcbiAgICApIHtcbiAgICAgIC8vIHN0YXJ0IGEgY291bnRkb3duIGFuZCB0YWtlIGEgcGljdHVyZVxuICAgICAgaXNDb3VudGluZ0Rvd24gPSB0cnVlO1xuICAgICAgY291bnREb3duRmluaXNoVGltZSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpICsgY291bnREb3duQ2FwdHVyZTtcbiAgICAgIGNvbnN0IGNvdW50ZG93bkludGVydmFsQ2FsbGJhY2sgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICAgIC8vIHN0b3AgY291bnRpbmcgaWYgZGlzYWJsZWQgbWlkLWNvdW50IG9yIGlmIGNhcHR1cmVkIGJlZm9yZVxuICAgICAgICBpZiAoXG4gICAgICAgICAgISRhdXRvbWF0aWNDYXB0dXJlIHx8XG4gICAgICAgICAgJGNhcHR1cmVkIHx8XG4gICAgICAgICAgKGlzTGl2ZW5lc3NFbmFibGVkKCkgJiYgaWRybmRDbG9zZWQpIHx8XG4gICAgICAgICAgIW5ld1ZhbHVlLmlzUGVyc29uQ2xvc2VFbm91Z2ggfHxcbiAgICAgICAgICBuZXdWYWx1ZS5pc1BlcnNvblRvb2Nsb3NlIHx8XG4gICAgICAgICAgIW5ld1ZhbHVlLmNsb3NlZE1vdXRoIHx8XG4gICAgICAgICAgIW5ld1ZhbHVlLmlzUGVyc29uSW5GcmFtZVxuICAgICAgICApIHtcbiAgICAgICAgICBpc0NvdW50aW5nRG93biA9IGZhbHNlO1xuICAgICAgICAgIGRpc2FibGVDb3VudERvd24gPSB0cnVlO1xuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgZGlzYWJsZUNvdW50RG93biA9IGZhbHNlO1xuICAgICAgICAgIH0sIDE1MDApO1xuICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY291bnRkb3duSW50ZXJ2YWxDYWxsYmFjayk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgICAgICBjb25zdCByZW1haW5pbmdTZWNvbmRzID0gTWF0aC5mbG9vcigoKGNvdW50RG93bkZpbmlzaFRpbWUgLSBub3cpICUgKDEwMDAgKiA2MCkpIC8gMTAwMCk7XG4gICAgICAgIC8vIGNvdW50RG93bkh0bWxFbGVtZW50LmlubmVySFRNTCA9IHJlbWFpbmluZ1NlY29uZHMudG9TdHJpbmcoKTtcbiAgICAgICAgaWYgKHJlbWFpbmluZ1NlY29uZHMgPD0gMCkge1xuICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY291bnRkb3duSW50ZXJ2YWxDYWxsYmFjayk7XG4gICAgICAgICAgaXNDb3VudGluZ0Rvd24gPSBmYWxzZTtcbiAgICAgICAgICBjYXB0dXJlKCk7XG4gICAgICAgIH1cbiAgICAgIH0sIDEwMCk7XG4gICAgfVxuICB9KTtcblxuICAvLyB3ZSBjb3VsZCBoYXZlIHVzZWQgaGlkZGVuPXskY2FwdHVyZWR9LCBidXQgZm9yIHNvbWUgcmVhc29uIGl0IGRvZXNuJ3Qgd29yayBzbyBkbyB0aGlzIGluc3RlYWRcbiAgY29uc3QgdW5zdWJzY3JpYmVDYXB0dXJlZFN0YXRlID0gY2FwdHVyZWQuc3Vic2NyaWJlKChuZXdWYWx1ZSkgPT4ge1xuICAgIGlmICghZW5jbG9zaW5nRGl2KSByZXR1cm47XG4gICAgaWYgKG5ld1ZhbHVlKSB7XG4gICAgICBlbmNsb3NpbmdEaXYuY2xhc3NMaXN0LnJlbW92ZSgnZmxleCcpO1xuICAgICAgZW5jbG9zaW5nRGl2LmNsYXNzTGlzdC5hZGQoJ2hpZGRlbicpO1xuICAgIH0gZWxzZSB7XG4gICAgICBlbmNsb3NpbmdEaXYuY2xhc3NMaXN0LmFkZCgnZmxleCcpO1xuICAgICAgZW5jbG9zaW5nRGl2LmNsYXNzTGlzdC5yZW1vdmUoJ2hpZGRlbicpO1xuICAgIH1cbiAgfSk7XG5cbiAgY29uc3QgdW5zdWJzY3JpYmVDbGVhclZpZGVvU3JjID0gY2xlYXJlZFZpZGVvU3JjT2JqZWN0LnN1YnNjcmliZSgobmV3VmFsdWUpID0+IHtcbiAgICBpZiAoIXZpZGVvKSByZXR1cm47XG4gICAgaWYgKG5ld1ZhbHVlKSB7XG4gICAgICBjb25zb2xlLmxvZygnc2V0dGluZyBudWxsIGluIHZpZGVvIHNyY09iamVjdCcpO1xuICAgICAgdmlkZW8uc3JjT2JqZWN0ID0gbnVsbDtcbiAgICAgIHZpZGVvLnNyYyA9ICcnO1xuICAgICAgJHNlbGVjdGVkVmlkZW9EZXZpY2VJZCA9IG51bGw7XG4gICAgfVxuICB9KTtcblxuICBzZWxlY3RlZFRhYi5zdWJzY3JpYmUoYXN5bmMgKHRhYikgPT4ge1xuICAgIGlmICh0YWIgPT09IFRhYkVudW0uRmFjZSkge1xuICAgICAgYXdhaXQgZW51bWVyYXRlRGV2aWNlcygpO1xuICAgICAgaWYgKGlzTGl2ZW5lc3NFbmFibGVkKCkpICRzZWxlY3RlZFZpZGVvRGV2aWNlSWQgPSAkY2FtZXJhRGV2aWNlc1N0b3JlWzBdPy5kZXZpY2VJZDtcbiAgICB9XG4gIH0pO1xuXG4gIGNvbnN0IHVuc3Vic2NyaWJlU2VsZWN0ZWRTdHJlYW0gPSBzZWxlY3RlZFZpZGVvRGV2aWNlSWQuc3Vic2NyaWJlKGFzeW5jIChuZXdEZXZpY2VJZCkgPT4ge1xuICAgIGlmICghbmV3RGV2aWNlSWQgfHwgJGNvbGxlY3RvclNlbGVjdCA9PSAnRE9DVU1FTlQnIHx8IChpc0xpdmVuZXNzRW5hYmxlZCgpICYmIGlkcm5kQ2xvc2VkKSkgcmV0dXJuO1xuICAgIGlmICghdmlkZW8pIHtcbiAgICAgIC8vIHJlcmVuZGVyIHZpZGVvIHRhZ1xuICAgICAgdW5pcXVlID0ge307XG4gICAgfVxuICAgIGNvbnN0IHsgdmlkZW9IZWlnaHQsIHZpZGVvV2lkdGggfSA9ICR2aWRlb1N0b3JlO1xuICAgIHRyeSB7XG4gICAgICBpZiAoaXNMaXZlbmVzc0VuYWJsZWQoKSkge1xuICAgICAgICBhd2FpdCBzaHV0T2ZmQ2FtZXJhKHdpZGdldEluc3RhbmNlKTtcbiAgICAgICAgYXdhaXQgb3BlbkNhbWVyYUxpdmVuZXNzKClcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3Qgc3RyZWFtID0gYXdhaXQgc2V0dXBTdHJlYW0odmlkZW9XaWR0aCwgdmlkZW9IZWlnaHQsIG5ld0RldmljZUlkKTtcbiAgICAgIHZpZGVvLnNyY09iamVjdCA9IHN0cmVhbTtcbiAgICAgICRfc3RyZWFtID0gc3RyZWFtO1xuICAgICAgJGNsZWFyZWRWaWRlb1NyY09iamVjdCA9IGZhbHNlO1xuICAgICAgaWYgKCFyaWdodE9yaWVudGF0aW9uKSB7XG4gICAgICAgICRjYW1lcmFTdGF0dXNTdG9yZSA9IENhbWVyYVN0YXR1c0VudW0uQ0FNRVJBX09SSUVOVEFUSU9OX1BPUlRSQUlUO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgJGNhbWVyYVN0YXR1c1N0b3JlID0gQ2FtZXJhU3RhdHVzRW51bS5PSztcbiAgICAgIH1cbiAgICAgIHN0cmVhbS5nZXRUcmFja3MoKVxuICAgICAgLmZvckVhY2goKHRyYWNrKSA9PiB7XG4gICAgICAgIGlmICh0cmFjay5yZWFkeVN0YXRlID09PSAnbGl2ZScpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgQ2FtZXJhICR7dHJhY2subGFiZWx9IG9wZW5lZCBzdWNjZXNzZnVsbHkhYCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnN0IGVycm9yID0gZSBhcyBET01FeGNlcHRpb247XG4gICAgICBpZHJuZENsb3NlZCA9IHRydWU7XG4gICAgICBpZiAoaXNPYmplY3QoZXJyb3IpICYmICdtZXNzYWdlJyBpbiBlcnJvciAmJiBlcnJvci5tZXNzYWdlLmluY2x1ZGVzKCdSZXF1ZXN0ZWQgZGV2aWNlIG5vdCBmb3VuZCcpKSB7XG4gICAgICAgICRjYW1lcmFTdGF0dXNTdG9yZSA9IENhbWVyYVN0YXR1c0VudW0uREVWSUNFX05PVF9GT1VORF9FUlJPUjtcbiAgICAgIH1cbiAgICB9XG5cbiAgfSk7XG5cbiAgY29uc3QgdW5zdWJzY3JpYmVDaGFuZ2VUYWIgPSBzZWxlY3RlZFRhYi5zdWJzY3JpYmUoYXN5bmMgKHRhYikgPT4ge1xuICAgIGlmICh0YWIgPT09IFRhYkVudW0uRmFjZSAmJiBpc0xpdmVuZXNzRW5hYmxlZCgpKSB7XG4gICAgICBpZiAoIWNhcHR1cmluZyAmJiAhJGNhcHR1cmVkICYmIGluaXRpYWxpemVkKSBhd2FpdCBvcGVuQ2FtZXJhKCk7XG4gICAgfVxuICB9KTtcblxuICBjb25zdCB1bnN1YnNjcmliZUZhY2VBcGkgPSBzdGFydEZhY2VBcGkuc3Vic2NyaWJlKGFzeW5jIChuZXdWYWx1ZSkgPT4ge1xuICAgIGlmIChuZXdWYWx1ZSkgZmFjZWFwaUxvb3AoKTtcbiAgfSk7XG5cbiAgY29uc3QgdW5zdWJzY3JpYmVTd2FwQ2FtZXJhID0gc3dhcENhbWVyYS5zdWJzY3JpYmUoYXN5bmMgKG5ld1ZhbHVlKSA9PiB7XG4gICAgaWYgKCEkdmlkZW9TdG9yZSkgcmV0dXJuO1xuICAgIHNodXRPZmZDYW1lcmEoKTtcblxuICAgIGlmICghaXNNb2JpbGUoKSkgeyAvLyBkZXNrdG9wIGNhbWVyYXNcbiAgICAgIGNvbnN0IGN1cnJlbnREZXZpY2UgPSAkY2FtZXJhRGV2aWNlc1N0b3JlLmZpbmRJbmRleChkZXZpY2UgPT4gZGV2aWNlLmRldmljZUlkID09PSAkc2VsZWN0ZWRWaWRlb0RldmljZUlkKTtcbiAgICAgIGNvbnN0IG5leHREZXZpY2UgPSAoY3VycmVudERldmljZSArIDEpICUgJGNhbWVyYURldmljZXNTdG9yZS5sZW5ndGg7XG4gICAgICBjb25zdCBkZXZpY2VJZCA9ICRjYW1lcmFEZXZpY2VzU3RvcmVbbmV4dERldmljZV0uZGV2aWNlSWQ7XG4gICAgICBpZiAoaXNMaXZlbmVzc0VuYWJsZWQoKSkge1xuICAgICAgICAkc2VsZWN0ZWRWaWRlb0RldmljZUlkID0gZGV2aWNlSWQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhd2FpdCBvcGVuQ2FtZXJhKGRldmljZUlkKTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAobmV3VmFsdWUpIHsgLy8gbW9iaWxlIGRldmljZXNcbiAgICAgICAgJGZhY2luZ01vZGUgPSBGYWNpbmdNb2RlRW51bS5SRUFSX0NBTUVSQTtcbiAgICAgICAgYXdhaXQgb3BlbkNhbWVyYSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgICRmYWNpbmdNb2RlID0gRmFjaW5nTW9kZUVudW0uRlJPTlRfQ0FNRVJBO1xuICAgICAgICBhd2FpdCBvcGVuQ2FtZXJhKCk7XG4gICAgfSBcbiAgfSk7XG5cbiAgY29uc3QgdW5zdWJzY3JpYmVPcmllbnRhdGlvbiA9IG9yaWVudGF0aW9uRGF0YS5zdWJzY3JpYmUoYXN5bmMgKGRhdGEpID0+IHtcbiAgICBpZiAoIWRhdGEuaXNTdXBwb3J0ZWQgfHwgIWlzTW9iaWxlKCkgfHwgJGNvbGxlY3RvclNlbGVjdCAhPSAnRkFDRScpIHJldHVybjtcblxuICAgIHJpZ2h0T3JpZW50YXRpb24gPSBkYXRhLm9yaWVudGF0aW9uLmluY2x1ZGVzKCdwb3J0cmFpdCcpO1xuICAgIGlmIChyaWdodE9yaWVudGF0aW9uKSB7XG4gICAgICAkY2FtZXJhU3RhdHVzU3RvcmUgPSBDYW1lcmFTdGF0dXNFbnVtLk9LO1xuICAgIH0gZWxzZSB7XG4gICAgICAkY2FtZXJhU3RhdHVzU3RvcmUgPSBDYW1lcmFTdGF0dXNFbnVtLkNBTUVSQV9PUklFTlRBVElPTl9QT1JUUkFJVDtcbiAgICB9XG4gIH0pO1xuXG5cbiAgYXN5bmMgZnVuY3Rpb24gZmFjZWFwaUxvb3AoKSB7XG4gICAgbGV0IGRldGVjdGlvbnNSZXN1bHQ7XG4gICAgaWYgKGZhY2VBcGlDb3VudGVyID49IGZhY2VBcGlGcmFtZVJhdGUpIHtcbiAgICAgIGZhY2VBcGlDb3VudGVyID0gMDtcbiAgICAgIGNvbnN0IG9wdGlvbnMgPSBhd2FpdCBnZXRGYWNlRGV0ZWN0b3JPcHRpb25zKCk7XG4gICAgICAvLyBkZWJ1Z2dlclxuICAgICAgY29uc3QgZmFjZWFwaSA9IGF3YWl0IGltcG9ydCgnQHZsYWRtYW5kaWMvZmFjZS1hcGknKTtcbiAgICAgIGxldCBkZXRlY3Rpb25zUmVzdWx0MjtcbiAgICAgIGRldGVjdGlvbnNSZXN1bHQyID0gZmFjZWFwaS5kZXRlY3RTaW5nbGVGYWNlKGRpc3BsYXlDYW52YXMsIG9wdGlvbnMpO1xuICAgICAgZGV0ZWN0aW9uc1Jlc3VsdCA9IGF3YWl0IGRldGVjdGlvbnNSZXN1bHQyLndpdGhGYWNlTGFuZG1hcmtzKCk7XG4gICAgICAvLyBjbGVhciBjYW52YXMgd2hlbiBub3RoaW5nIGRldGVjdGVkXG4gICAgICBkZXRlY3Rpb25zQ2FudmFzLmdldENvbnRleHQoJzJkJyk/LmNsZWFyUmVjdCgwLCAwLCBkZXRlY3Rpb25zQ2FudmFzLndpZHRoLCBkZXRlY3Rpb25zQ2FudmFzLmhlaWdodCk7XG5cbiAgICAgIGlmIChkZXRlY3Rpb25zUmVzdWx0ICE9IHVuZGVmaW5lZCkge1xuICAgICAgICBkcmF3RGV0ZWN0aW9uc0luRmFjZShkZXRlY3Rpb25zUmVzdWx0LCBkZXRlY3Rpb25zQ2FudmFzLCBlbmFibGVNaW51dGlhZSk7XG4gICAgICAgICRmYWNlRm91bmQgPSB0cnVlO1xuICAgICAgICBlbmFibGVDYXB0dXJlQnV0dG9uID0gdHJ1ZTtcbiAgICAgICAgZmFjZUZvdW5kU3RhcnRUaW1lID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZXRGYWNlTm90Rm91bmRBbGVydCgpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBmYWNlQXBpQ291bnRlciArKztcbiAgICB9XG4gICAgXG4gICAgaWYgKCRzdGFydEZhY2VBcGkpIHtcbiAgICAgIGxvb3BDYWxsZXIodmlkZW8sIGZhY2VhcGlMb29wKTtcbiAgICB9XG4gIH1cblxuICByZXRha2VQaG90by5zdWJzY3JpYmUoYXN5bmMgKG52KSA9PiB7XG4gICAgaWYgKG52KSB7XG4gICAgICByZXRha2UoKTtcbiAgICAgICRyZXRha2VQaG90byA9IGZhbHNlO1xuICAgIH1cbiAgfSk7XG5cbiAgY29uc3QgdW5zdWJzY3JpYmVSZWFkeUNhbWVyYUV2ZW50RW1pdHRlciA9IHJlYWR5LnN1YnNjcmliZSgobnYpID0+IHtcbiAgICBpZiAobnYpIHtcbiAgICAgIC8vIGluZm9ybXMgdGhhdCB0aGUgY2FtZXJhIGlzIHJlYWR5ICh0byBiZSBjbG9zZWQgaWYgdGhhdCBpcyB3aGF0IHlvdSB3YW50IHRvIGRvKVxuICAgICAgd2luZG93LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCdicnljYy1jYW1lcmEtcmVhZHknKSk7XG4gICAgfVxuICB9KTtcblxuICBjb25zdCB1bnN1YnNjcmliZUluaXRpYWxpemVkRXZlbnRFbWl0dGVyID0gaW5pdGlhbGl6aW5nLnN1YnNjcmliZSgobnYpID0+IHtcbiAgICBpZiAobnYpIHtcbiAgICAgIC8vIGluZm9ybXMgdGhhdCB0aGUgaWRybmQgd2lkZ2V0IGlzIGluaXRpYWxpemVkXG4gICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ2JyeWNjLWZhY2UtaW5pdGlhbGl6ZWQnKSk7XG4gICAgfVxuICB9KTtcblxuICBvbkRlc3Ryb3koKCkgPT4ge1xuICAgIHNodXRPZmZDYW1lcmEoKTtcbiAgICB1bnN1YnNjcmliZUNhcHR1cmVkU3RhdGUoKTtcbiAgICB1bnN1YnNjcmliZUZhY2VWYWxpZGF0aW9ucygpO1xuICAgIHVuc3Vic2NyaWJlVmlkZW9EaW1lbnNpb25zKCk7XG4gICAgdW5zdWJzY3JpYmVDbGVhclZpZGVvU3JjKCk7XG4gICAgdW5zdWJzY3JpYmVTZWxlY3RlZFN0cmVhbSgpO1xuICAgIHVuc3Vic2NyaWJlQ2hhbmdlVGFiKCk7XG4gICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbElkKTtcbiAgICB1bnN1YnNjcmliZUZhY2VBcGkoKTtcbiAgICB1bnN1YnNjcmliZVN3YXBDYW1lcmEoKTtcbiAgICB1bnN1YnNjcmliZU9yaWVudGF0aW9uKCk7XG4gICAgdW5zdWJzY3JpYmVSZWFkeUNhbWVyYUV2ZW50RW1pdHRlcigpO1xuICAgIHVuc3Vic2NyaWJlSW5pdGlhbGl6ZWRFdmVudEVtaXR0ZXIoKTtcbiAgICB1bkxvY2tTY3JlZW4oKTtcbiAgICBpbnRlcnZhbElkID0gMDtcbiAgfSk7XG48L3NjcmlwdD5cblxuPCEtLSBzdmVsdGUtaWdub3JlIGExMXktbWVkaWEtaGFzLWNhcHRpb24gLS0+XG48ZGl2PlxuICA8IS0tIHtbJHZpZGVvU3RvcmU/LnZpZGVvSGVpZ2h0LCAkdmlkZW9TdG9yZT8udmlkZW9XaWR0aF19XG4gIHtbZGlzcGxheUNhbnZhcz8uaGVpZ2h0LCBkaXNwbGF5Q2FudmFzPy53aWR0aF19XG4gIHtbJF9zdHJlYW0/LmdldFZpZGVvVHJhY2tzKClbMF0/LmdldFNldHRpbmdzKCk/LmhlaWdodCwgJF9zdHJlYW0/LmdldFZpZGVvVHJhY2tzKClbMF0/LmdldFNldHRpbmdzKCk/LndpZHRoXX0gLS0+XG4gIDxkaXYgYmluZDp0aGlzPXtlbmNsb3NpbmdEaXZ9IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBqdXN0aWZ5LWJldHdlZW5cIj5cbiAgICA8ZGl2IGNsYXNzPVwicmVsYXRpdmUgbXgtYXV0b1wiPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz0geyAhJHJlYWR5ID8gXCJyZWxhdGl2ZSB3LTAgaC0wXCIgOiBcInJlbGF0aXZlXCIgfVxuICAgICAgICBoaWRkZW49eyAkY2FtZXJhU3RhdHVzU3RvcmUgIT09IENhbWVyYVN0YXR1c0VudW0uT0tcbiAgICAgICAgfHwgKGlzTGl2ZW5lc3NFbmFibGVkKCkgJiYgKGlkcm5kTG9hZGluZyB8fCBpZHJuZENsb3NlZCB8fCB3YWl0aW5nSWRybmRDYXB0dXJlRXZlbnQpKX1cbiAgICAgID5cbiAgICAgICAgeyNpZiBpc0xpdmVuZXNzRW5hYmxlZCgpfVxuICAgICAgICAgIDxpZGxpdmUtZmFjZS1jYXB0dXJlXG4gICAgICAgICAgICBoaWRkZW5cbiAgICAgICAgICAgIG1hc2tfaGlkZGVuXG4gICAgICAgICAgICBhdXRvX2NhcHR1cmVfZGlzYWJsZWRcbiAgICAgICAgICAgIGF1dG9fY2xvc2VfZGlzYWJsZWRcbiAgICAgICAgICAgIGRldmljZV9pZD17JHNlbGVjdGVkVmlkZW9EZXZpY2VJZH1cbiAgICAgICAgICAgIGJpbmQ6dGhpcz17d2lkZ2V0SW5zdGFuY2V9XG4gICAgICAgICAgLz5cbiAgICAgICAgey9pZn1cbiAgICAgICAgPCEtLSB3aGVuIHVuaXF1ZSBnZXRzIHJlc3NpZ25lZCBpdCB3aWxsIGdldCByZSByZW5kZXJlZCwgd2hpY2ggc29sdmVzIHRoZSAnY2FtZXJhIG5vdCBvcGVuaW5nIGlzc3VlJyAtLT5cbiAgICAgICAgeyNrZXkgdW5pcXVlfVxuICAgICAgICAgIDx2aWRlb1xuICAgICAgICAgICAgaWQ9XCJicnktY2MtY2FtZXJhLXZpZGVvLXRhZ1wiXG4gICAgICAgICAgICBjbGFzcz1cImFic29sdXRlIC16LTEwXCJcbiAgICAgICAgICAgIGJpbmQ6dGhpcz17dmlkZW99XG4gICAgICAgICAgICBvbjpjYW5wbGF5PXsoKSA9PiB7XG4gICAgICAgICAgICAgIGlmIChpc0xpdmVuZXNzRW5hYmxlZCgpKSByZXR1cm47XG4gICAgICAgICAgICAgICR2aWRlb1N0b3JlID0geyB2aWRlb0hlaWdodDogdmlkZW8udmlkZW9IZWlnaHQsIHZpZGVvV2lkdGg6IHZpZGVvLnZpZGVvV2lkdGggfTtcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICBvbjpwbGF5fG9uY2U9e3BsYXl9XG4gICAgICAgICAgICBwbGF5c2lubGluZVxuICAgICAgICAgICAgbXV0ZWRcbiAgICAgICAgICAgIGF1dG9wbGF5XG4gICAgICAgICAgLz5cbiAgICAgICAgey9rZXl9XG4gICAgICAgIHsjaWYgc2hvd0NvbmZpZ0J1dHRvbiAmJiAkcmVhZHl9XG4gICAgICAgICAgPENvbmZCdG4vPlxuICAgICAgICB7L2lmfVxuICAgICAgICB7I2lmIHNob3dDYW1lcmFCdXR0b24gJiYgJHJlYWR5fVxuICAgICAgICAgIDxDYW1lcmFCdG4vPlxuICAgICAgICB7L2lmfVxuICAgICAgICB7I2lmIHNob3dBdXRvQ2FwdHVyZUJ1dHRvbiAmJiAhJGF1dG9tYXRpY0NhcHR1cmUgJiYgIXNob3dDYXB0dXJlQnV0dG9uICYmICRyZWFkeX1cbiAgICAgICAgICA8QXV0b0NhcHR1cmVCdG4vPlxuICAgICAgICB7L2lmfVxuICAgICAgICB7I2lmIHNob3dDYXB0dXJlQnV0dG9uICYmICRyZWFkeX1cbiAgICAgICAgICA8VGFrZVBpY3R1cmVCdG5cbiAgICAgICAgICBkaXNhYmxlZD17KCFlbmFibGVDYXB0dXJlQnV0dG9uICYmICRlbmFibGVGYWNlQXBpKSB8fCAoISRyZWFkeSAmJiAhJGVuYWJsZUZhY2VBcGkpfVxuICAgICAgICAgIGhpZGRlbj17KCRjYW1lcmFTdGF0dXNTdG9yZSAhPT0gQ2FtZXJhU3RhdHVzRW51bS5PSykgXG4gICAgICAgICAgfHwgKGlzTGl2ZW5lc3NFbmFibGVkKCkgJiYgKGlkcm5kTG9hZGluZyB8fCBpZHJuZENsb3NlZCB8fCB3YWl0aW5nSWRybmRDYXB0dXJlRXZlbnQpKX1cbiAgICAgICAgICBoYW5kbGVyPXtjYXB0dXJlfVxuICAgICAgICAgIC8+XG4gICAgICAgIHsvaWZ9XG4gICAgICAgIDwhLS0geyNpZiBpc0xpdmVuZXNzRW5hYmxlZCgpfSAtLT5cbiAgICAgICAgPCEtLSB3b3JrcyBhcyB0aGUgdmlkZW8gdGFnIHdoZW4gbGl2ZW5lc3MgZW5hYmxlZC4gVGhpcyBpcyByZXF1aXJlZCB0byBiZSBhYmxlIHRvIHNldCB2aWRlbyByYXRpbyBjb3JyZWN0bHkgLS0+XG4gICAgICAgIDxjYW52YXMgYmluZDp0aGlzPXtkaXNwbGF5Q2FudmFzfSBpZD1cImJyeS1jZS1kaXNwbGF5Q2FudmFzXCIgY2xhc3M9XCJtYXgtdy1mdWxsIC1zY2FsZS14LTEwMFwiIC8+XG4gICAgICAgIDwhLS0gey9pZn0gLS0+XG4gICAgICAgIDxjYW52YXNcbiAgICAgICAgICBiaW5kOnRoaXM9e2RldGVjdGlvbnNDYW52YXN9XG4gICAgICAgICAgaWQ9XCJicnktY2UtZGV0ZWN0aW9uc0NhbnZhc1wiXG4gICAgICAgICAgY2xhc3M9XCJhYnNvbHV0ZSB0b3AtMCBsZWZ0LTAgbWF4LXctZnVsbCAtc2NhbGUteC0xMDBcIlxuICAgICAgICAvPlxuICAgICAgICA8Y2FudmFzIGJpbmQ6dGhpcz17bWFza0NhbnZhc30gaWQ9XCJicnktY2UtbWFza0NhbnZhc1wiIGNsYXNzPVwiYWJzb2x1dGUgdG9wLTAgbGVmdC0wIG1heC13LWZ1bGwgLXNjYWxlLXgtMTAwXCIgLz5cbiAgICAgICAgeyNpZiBpc0NvdW50aW5nRG93bn1cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgY2xhc3M9XCJhYnNvbHV0ZSBsZWZ0LTEvMiAtdHJhbnNsYXRlLXgtMS8yIGNlLWR1aS1iYWRnZSBjZS1kdWktYmFkZ2UtbGcgaC1bMmVtXSB0ZXh0LTJ4bCB4bDp0ZXh0LWJhc2Ugdy1bMTIuMWVtXSB7aXNNb2JpbGUoKSBcbiAgICAgICAgICAgID8gJ3RvcC1bMTAlXScgOiAndG9wLVszJV0nfVwiXG4gICAgICAgICAgICA+eyRfKCdmYWNlQ29sbGVjdG9yLnN0YXlTdGlsbCcpfTwvc3BhblxuICAgICAgICAgID5cbiAgICAgICAgey9pZn1cbiAgICAgICAgeyNpZiAkZW5hYmxlRmFjZUFwaSAmJiAhaXNDb3VudGluZ0Rvd24gJiYgJGZhY2VWYWxpZGF0aW9uQWxlcnR9XG4gICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgIGNsYXNzPVwiYWJzb2x1dGUgbGVmdC0xLzIgLXRyYW5zbGF0ZS14LTEvMiBjZS1kdWktYmFkZ2UgY2UtZHVpLWJhZGdlLWxnIGgtWzJlbV0gdGV4dC0yeGwgeGw6dGV4dC1iYXNlIHctWzEyLjFlbV0ge2lzTW9iaWxlKCkgXG4gICAgICAgICAgICA/ICd0b3AtWzEwJV0nIDogJ3RvcC1bMyVdJ31cIlxuICAgICAgICAgICAgPnskXyhgJHskZmFjZVZhbGlkYXRpb25BbGVydH1gKX08L3NwYW5cbiAgICAgICAgICA+XG4gICAgICAgIHsvaWZ9XG4gICAgICA8L2Rpdj5cbiAgICAgIHsjaWYgIWlzTGl2ZW5lc3NFbmFibGVkKCkgJiYgISRyZWFkeX1cbiAgICAgICAgPHNsb3QgbmFtZT1cImxvYWRpbmctY2FtZXJhLWdpZlwiIGNsYXNzPVwiYmxvY2sgaC1bMTdlbV0gbGc6aC1bMjEuNmVtXSB4bDpoLVszMGVtXVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0cmFuc2xhdGUteS0xLzMgbWQ6dHJhbnNsYXRlLXktMS80IHhsOnRyYW5zbGF0ZS15LTEvMlwiPlxuICAgICAgICAgICAgPGltZyBzcmM9e2xvYWRpbmdHaWZ9IGFsdD1cImxvYWRpbmcgZ2lmXCIgY2xhc3M9XCJtLWF1dG8gaC1bMTBlbV0gbGc6aC1bMTJlbV1cIiAvPlxuICAgICAgICAgICAgeyNpZiAkaXNMb2FkaW5nfVxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIjJ4bDp0ZXh0LTJ4bCBsZzp0ZXh0LTJ4bCB0ZXh0LW1kIGJsb2NrIHAtMiBtLWF1dG8gdGV4dC1jZW50ZXJcIj5Mb2FkaW5nIGNhbWVyYS4uLjwvc3Bhbj5cbiAgICAgICAgICAgIHs6ZWxzZX1cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCIyeGw6dGV4dC0yeGwgbGc6dGV4dC0yeGwgdGV4dC1tZCBibG9jayBwLTIgbS1hdXRvIHRleHQtY2VudGVyXCJcbiAgICAgICAgICAgICAgICA+eyRfKCdmYWNlQ29sbGVjdG9yLmluaXRpYXRpbmdDYW1lcmEnKX08L3NwYW5cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgey9pZn1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9zbG90PlxuICAgICAgey9pZn1cbiAgICAgIHsjaWYgaXNMaXZlbmVzc0VuYWJsZWQoKSAmJiB3YWl0aW5nSWRybmRDYXB0dXJlRXZlbnR9XG4gICAgICAgIDxzbG90IG5hbWU9XCJvYnRhaW5pbmctcGhvdG8tZ2lmXCIgY2xhc3M9XCJibG9jayBoLVsxN2VtXSBsZzpoLVsyMS42ZW1dIHhsOmgtWzMwZW1dXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRyYW5zbGF0ZS15LTEvMyBtZDp0cmFuc2xhdGUteS0xLzQgeGw6dHJhbnNsYXRlLXktMS8yXCI+XG4gICAgICAgICAgICA8aW1nIHNyYz17bG9hZGluZ0dpZn0gYWx0PVwibG9hZGluZyBnaWZcIiBjbGFzcz1cIm0tYXV0byBoLVsxMGVtXSBsZzpoLVsxMmVtXVwiIC8+XG4gICAgICAgICAgICB7I2lmICRpc0xvYWRpbmd9XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiMnhsOnRleHQtMnhsIGxnOnRleHQtMnhsIHRleHQtbWQgYmxvY2sgcC0yIG0tYXV0byB0ZXh0LWNlbnRlclwiPk9idGFpbmluZyBwaG90by4uLjwvc3Bhbj5cbiAgICAgICAgICAgIHs6ZWxzZX1cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCIyeGw6dGV4dC0yeGwgbGc6dGV4dC0yeGwgdGV4dC1tZCBibG9jayBwLTIgbS1hdXRvIHRleHQtY2VudGVyXCJcbiAgICAgICAgICAgICAgICA+eyRfKCdmYWNlQ29sbGVjdG9yLm9idGFpbmluZ1BpY3R1cmUnKX08L3NwYW5cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgey9pZn1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9zbG90PlxuICAgICAgey9pZn1cbiAgICAgIHsjaWYgaXNMaXZlbmVzc0VuYWJsZWQoKSAmJiBpZHJuZExvYWRpbmcgJiYgJGNhbWVyYVN0YXR1c1N0b3JlID09PSBDYW1lcmFTdGF0dXNFbnVtLk9LfVxuICAgICAgICA8c2xvdCBuYW1lPVwibG9hZGluZy1jYW1lcmEtZ2lmXCIgY2xhc3M9XCJibG9jayBoLVsxN2VtXSBsZzpoLVsyMS42ZW1dIHhsOmgtWzMwZW1dXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRyYW5zbGF0ZS15LTEvMyBtZDp0cmFuc2xhdGUteS0xLzQgeGw6dHJhbnNsYXRlLXktMS8yXCI+XG4gICAgICAgICAgICA8aW1nIHNyYz17bG9hZGluZ0dpZn0gYWx0PVwibG9hZGluZyBnaWZcIiBjbGFzcz1cIm0tYXV0byBoLVsxMGVtXSBsZzpoLVsxMmVtXVwiIC8+XG4gICAgICAgICAgICB7I2lmICRpc0xvYWRpbmd9XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiMnhsOnRleHQtMnhsIGxnOnRleHQtMnhsIHRleHQtbWQgYmxvY2sgcC0yIG0tYXV0byB0ZXh0LWNlbnRlclwiPkxvYWRpbmcgY2FtZXJhLi4uPC9zcGFuPlxuICAgICAgICAgICAgezplbHNlfVxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIjJ4bDp0ZXh0LTJ4bCBsZzp0ZXh0LTJ4bCB0ZXh0LW1kIGJsb2NrIHAtMiBtLWF1dG8gdGV4dC1jZW50ZXJcIlxuICAgICAgICAgICAgICAgID57JF8oJ2ZhY2VDb2xsZWN0b3IuaW5pdGlhdGluZ0NhbWVyYScpfTwvc3BhblxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICB7L2lmfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3Nsb3Q+XG4gICAgICB7L2lmfVxuICAgICAgeyNpZiAkY2FwdHVyZWR9XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjZS1kdWktYnRuLWdyb3VwIGZsZXhcIj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBvbjpjbGljaz17KCkgPT4gc2F2ZSgpfVxuICAgICAgICAgICAgZGlzYWJsZWQ9eyRqdXN0aWZpY2F0aW9uLmxlbmd0aCA9PT0gMH1cbiAgICAgICAgICAgIGNsYXNzPVwiY2UtZHVpLWJ0biBjZS1kdWktYnRuLXByaW1hcnkgY2UtZHVpLWJ0bi1ibG9jayBmbGV4LXNocmlua1wiPnskXygnZmFjZUNvbGxlY3Rvci5maW5pc2gnKX08L2J1dHRvblxuICAgICAgICAgID5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBpZD1cImJyeS1jYy1yZXRha2UtYnV0dG9uXCJcbiAgICAgICAgICAgIGNsYXNzPVwiY2UtZHVpLWJ0biBjZS1kdWktYnRuLWJsb2NrIGNlLWR1aS1idG4tb3V0bGluZSBmbGV4LXNocmlua1wiXG4gICAgICAgICAgICBvbjpjbGljaz17KCkgPT4gcmV0YWtlKCl9PnskXygnZmFjZUNvbGxlY3Rvci5yZXRha2VQaG90bycpfTwvYnV0dG9uXG4gICAgICAgICAgPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIHsvaWZ9XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICB7I2lmICghaWRybmRDbG9zZWQgfHwgJGNhcHR1cmVkKSAmJiBzaG93VW5jb25mb3JtaXRpZXN9XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJncmlkLWNvbHMtMSBncmlkLXJvd3MtMiBzbTpncmlkLWNvbHMtMiBzbTpncmlkLXJvd3MtMSBnYXAtWy41ZW1dIHshJHNob3dGYWNlV2hpbGVWYWxpZGF0aW5nICYmXG4gICAgICAkdW5jb25mb3JtaXRpZXNTdG9yZS5pc0xvYWRpbmdcbiAgICAgICAgPyAnYWJzb2x1dGUgLXRyYW5zbGF0ZS15LTEvMiAtdHJhbnNsYXRlLXgtMS8yIHRvcC0xLzIgbGVmdC0xLzIgb3ZlcmZsb3ctdmlzaWJsZSdcbiAgICAgICAgOiAnZ3JpZCBvdmVyZmxvdy1oaWRkZW4nfVwiXG4gICAgPlxuICAgICAgPGltZ1xuICAgICAgICBjbGFzcz1cIm0tYXV0byBjb2wtc3RhcnQtMSBjb2wtZW5kLTEgbWF4LWgtWzIzLjJlbV1cIlxuICAgICAgICBzcmM9eyRkYXRhVHlwZVByZWZpeCArICcsJyArICRpbWFnZX1cbiAgICAgICAgaGlkZGVuPXshJGNhcHR1cmVkIHx8ICghJHNob3dGYWNlV2hpbGVWYWxpZGF0aW5nICYmICR1bmNvbmZvcm1pdGllc1N0b3JlLmlzTG9hZGluZyl9XG4gICAgICAgIGFsdD1cIlwiXG4gICAgICAvPlxuICAgICAgeyNpZiAhJGNhcHR1cmVkfVxuICAgICAgICA8ZGl2IGNsYXNzPVwiXCIgLz5cbiAgICAgIHs6ZWxzZSBpZiAkdW5jb25mb3JtaXRpZXNTdG9yZS5pc0xvYWRpbmd9XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtaW4tdy1bMjAwcHhdXCI+XG4gICAgICAgICAgPGgxIGNsYXNzPVwiaW5saW5lLWJsb2NrIHRleHQtM3hsIGZvbnQtYm9sZCBwYi1bMWVtXSB0cmFuc2l0aW9uLW9wYWNpdHlcIj57JF8oJ2ZhY2VDb2xsZWN0b3IudmFsaWRhdGluZycpfTwvaDE+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1sLTYgaW5saW5lLWJsb2NrIGRvdC10eXBpbmdcIiAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIHs6ZWxzZSBpZiAkcmVxdWVzdFJlc3VsdCAhPT0gcmVxdWVzdFJlc3VsdEVudW0uT0t9XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGp1c3RpZnktYmV0d2VlblwiPlxuICAgICAgICAgIHsjaWYgJHJlcXVlc3RSZXN1bHQgPT09IHJlcXVlc3RSZXN1bHRFbnVtLkxJVkVORVNTX0RFVEVDVElPTl9GQUlMVVJFIHx8ICRyZXF1ZXN0UmVzdWx0ID09PSByZXF1ZXN0UmVzdWx0RW51bS5VTktOT1dOX0xJVkVORVNTX0VSUk9SfVxuICAgICAgICAgICAgPGgxIGNsYXNzPVwidGV4dC0zeGwgZm9udC1ib2xkIHBiLVsxZW1dIHRyYW5zaXRpb24tb3BhY2l0eSB0ZXh0LWVycm9yXCI+XG4gICAgICAgICAgICAgIHskXygnbGl2ZW5lc3MuZXJyb3IuZXJyb3InKX06IHskXyhsaXZlbmVzc0Vycm9yKX0uXG4gICAgICAgICAgICA8L2gxPlxuICAgICAgICAgIHs6ZWxzZSBpZiAkcmVxdWVzdFJlc3VsdCA9PT0gcmVxdWVzdFJlc3VsdEVudW0uTE9XX0xJVkVORVNTX1NDT1JFfVxuICAgICAgICAgICAgPGgxIGNsYXNzPVwidGV4dC0zeGwgZm9udC1ib2xkIHBiLVsxZW1dIHRyYW5zaXRpb24tb3BhY2l0eSB0ZXh0LWVycm9yXCI+XG4gICAgICAgICAgICAgIHskXygnbGl2ZW5lc3MuZXJyb3IuZXJyb3InKX06IHskXygnZmFjZUNvbGxlY3Rvci51bmFsaXZlQ2FwdHVyZScpfVxuICAgICAgICAgICAgPC9oMT5cbiAgICAgICAgICB7OmVsc2UgaWYgJHJlcXVlc3RSZXN1bHQgPT09IHJlcXVlc3RSZXN1bHRFbnVtLlRFTVBMQVRFX0VYVFJBQ1RJT05fRVJST1IgfHwgJHJlcXVlc3RSZXN1bHQgPT09IHJlcXVlc3RSZXN1bHRFbnVtLlVOS05PV05fVEVNUExBVEVfRVhUUkFDVElPTl9FUlJPUn1cbiAgICAgICAgICAgIDxoMSBjbGFzcz1cInRleHQtM3hsIGZvbnQtYm9sZCBwYi1bMWVtXSB0cmFuc2l0aW9uLW9wYWNpdHkgdGV4dC1lcnJvclwiPlxuICAgICAgICAgICAgICB7JF8oJ2ZhY2VDb2xsZWN0b3IubG93UXVhbGl0eUNhcHR1cmUnKX1cbiAgICAgICAgICAgIDwvaDE+XG4gICAgICAgICAgezplbHNlIGlmICRyZXF1ZXN0UmVzdWx0ID09PSByZXF1ZXN0UmVzdWx0RW51bS5VTkFCTEVfVE9fQ09NTVVOSUNBVEVfV0lUSF9URU1QTEFURV9FWFRSQUNUSU9OX1NFUlZJQ0V9XG4gICAgICAgICAgICA8aDEgY2xhc3M9XCJ0ZXh0LTN4bCBmb250LWJvbGQgcGItWzFlbV0gdHJhbnNpdGlvbi1vcGFjaXR5IHRleHQtZXJyb3JcIj5cbiAgICAgICAgICAgICAgeyRfKCdmYWNlQ29sbGVjdG9yLnVuYWJsZVRvQ29tcGxldGVSZXF1ZXN0Jyl9XG4gICAgICAgICAgICA8L2gxPlxuICAgICAgICAgIHs6ZWxzZSBpZiAkcmVxdWVzdFJlc3VsdCA9PT0gcmVxdWVzdFJlc3VsdEVudW0uTElWRU5FU1NfRVZBTFVBVElPTl9FUlJPUn1cbiAgICAgICAgICAgIDxoMSBjbGFzcz1cInRleHQtM3hsIGZvbnQtYm9sZCBwYi1bMWVtXSB0cmFuc2l0aW9uLW9wYWNpdHkgdGV4dC1lcnJvclwiPlxuICAgICAgICAgICAgICB7JF8oJ2xpdmVuZXNzLmVycm9yLmV2YWx1YXRpb25FcnJvcicpfVxuICAgICAgICAgICAgPC9oMT5cbiAgICAgICAgICB7OmVsc2V9XG4gICAgICAgICAgICA8aDEgY2xhc3M9XCJ0ZXh0LTN4bCBmb250LWJvbGQgcGItWzFlbV0gdHJhbnNpdGlvbi1vcGFjaXR5XCI+eyRfKCdmYWNlQ29sbGVjdG9yLmV2ZXJ5dGhpbmdPaycpfTwvaDE+XG4gICAgICAgICAgey9pZn1cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2UtZHVpLWJ0bi1ncm91cCBmbGV4XCI+XG4gICAgICAgICAgICA8YnV0dG9uIG9uOmNsaWNrPXsoKSA9PiBzYXZlKCl9IGRpc2FibGVkIGNsYXNzPVwiY2UtZHVpLWJ0biBjZS1kdWktYnRuLXByaW1hcnkgY2UtZHVpLWJ0bi1ibG9jayBmbGV4LXNocmlua1wiXG4gICAgICAgICAgICAgID57JF8oJ2ZhY2VDb2xsZWN0b3IuZmluaXNoJyl9PC9idXR0b25cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgaWQ9XCJicnktY2MtcmV0YWtlLWJ1dHRvblwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiY2UtZHVpLWJ0biBjZS1kdWktYnRuLWJsb2NrIGNlLWR1aS1idG4tb3V0bGluZSBmbGV4LXNocmlua1wiXG4gICAgICAgICAgICAgIG9uOmNsaWNrPXsoKSA9PiByZXRha2UoKX0+eyRfKCdmYWNlQ29sbGVjdG9yLnJldGFrZVBob3RvJyl9PC9idXR0b25cbiAgICAgICAgICAgID5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICB7OmVsc2UgaWYgISRzYXZlZH1cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wganVzdGlmeS1iZXR3ZWVuXCI+XG4gICAgICAgICAgPGgxIGNsYXNzPVwidGV4dC0zeGwgZm9udC1ib2xkIHRyYW5zaXRpb24tb3BhY2l0eVwiPnsoZXZhbHVhdGVQaG90byA/ICRfKCdmYWNlQ29sbGVjdG9yLnVuY29uZm9ybWl0aWVzJykgOiAkXygnZmFjZUNvbGxlY3Rvci5wcmV2aWV3Q2FwdHVyZScpICl9PC9oMT5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXdyYXBcIj5cbiAgICAgICAgICAgIHsjZWFjaCAkdW5jb25mb3JtaXRpZXNTdG9yZS51bmNvbmZvcm1pdGllcyBhcyB1bmNvbmZvcm1pdHl9XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjZS1kdWktYmFkZ2UgY2UtZHVpLWJhZGdlLWxnIGgtWzJlbV0gY2UtZHVpLWJhZGdlLWVycm9yIHRleHQteGwgcGItWy4yNWVtXSBtLVsuNWVtXVwiPlxuICAgICAgICAgICAgICAgIHt1bmNvbmZvcm1pdHl9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgey9lYWNofVxuICAgICAgICAgICAgeyNpZiBldmFsdWF0ZVBob3RvICYmICR1bmNvbmZvcm1pdGllc1N0b3JlLnVuY29uZm9ybWl0aWVzLmxlbmd0aCA9PSAwfVxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNlLWR1aS1iYWRnZSBjZS1kdWktYmFkZ2UtbGcgaC1bMmVtXSBjZS1kdWktYmFkZ2UtaW5mbyB0ZXh0LXhsIHBiLVsuMjVlbV0gbS1bLjVlbV1cIj5cbiAgICAgICAgICAgICAgeyRfKCdmYWNlQ29sbGVjdG9yLm5vTm9uY29uZm9ybWl0eScpfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB7L2lmfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIHsjaWYgc2hvd0p1c3RpZmljYXRpb25GaWVsZH1cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjZS1kdWktZm9ybS1jb250cm9sXCI+XG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNlLWR1aS1sYWJlbFwiIGZvcj1cImp1c3RpZmljYXRpb25cIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNlLWR1aS1sYWJlbC10ZXh0IHRleHQtYmFzZVwiXG4gICAgICAgICAgICAgICAgICA+eyRfKCdmYWNlQ29sbGVjdG9yLnByb3ZpZGVBUmVhc29uRm9yVGhlTG93UXVhbGl0eUNhcHR1cmUnKX08L3NwYW5cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgIDx0ZXh0YXJlYVxuICAgICAgICAgICAgICAgIGNvbnRlbnRlZGl0YWJsZVxuICAgICAgICAgICAgICAgIGJpbmQ6dmFsdWU9eyRqdXN0aWZpY2F0aW9ufVxuICAgICAgICAgICAgICAgIGlkPVwianVzdGlmaWNhdGlvblwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjZS1kdWktdGV4dGFyZWEgY2UtZHVpLXRleHRhcmVhLWJvcmRlcmVkIGgtWzZlbV0gdGV4dC1iYXNlXCJcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17JF8oJ2ZhY2VDb2xsZWN0b3IueW91ckp1c3RpZmljYXRpb24nKX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY2UtZHVpLWxhYmVsXCIgZm9yPVwianVzdGlmaWNhdGlvblwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2UtZHVpLWxhYmVsLXRleHQtYWx0IHRleHQtYmFzZVwiPih7JF8oJ2ZhY2VDb2xsZWN0b3IudGhpc0luZm9ybWF0aW9uSXNSZXF1aXJlZCcpfSk8L3NwYW4+XG4gICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB7L2lmfVxuICAgICAgICAgIHsjaWYgJGNhcHR1cmVkfVxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNlLWR1aS1idG4tZ3JvdXAgZmxleFwiPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgb246Y2xpY2s9eygpID0+IHNhdmUoKX1cbiAgICAgICAgICAgICAgICBkaXNhYmxlZD17JGp1c3RpZmljYXRpb24ubGVuZ3RoID09PSAwICYmIHNob3dKdXN0aWZpY2F0aW9uRmllbGR9XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjZS1kdWktYnRuIGNlLWR1aS1idG4tcHJpbWFyeSBjZS1kdWktYnRuLWJsb2NrIGZsZXgtc2hyaW5rIHRleHQtYmFzZVwiXG4gICAgICAgICAgICAgICAgPnskXygnZmFjZUNvbGxlY3Rvci5maW5pc2gnKX08L2J1dHRvblxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBpZD1cImJyeS1jYy1yZXRha2UtYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNlLWR1aS1idG4gY2UtZHVpLWJ0bi1ibG9jayBjZS1kdWktYnRuLW91dGxpbmUgZmxleC1zaHJpbmsgdGV4dC1iYXNlXCJcbiAgICAgICAgICAgICAgICBvbjpjbGljaz17KCkgPT4gcmV0YWtlKCl9PnskXygnZmFjZUNvbGxlY3Rvci5yZXRha2VQaG90bycpfTwvYnV0dG9uXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIHsvaWZ9XG4gICAgICAgIDwvZGl2PlxuICAgICAgezplbHNlfVxuICAgICAgICA8ZGl2PlxuICAgICAgICAgIDxoMSBjbGFzcz1cInRleHQtM3hsIGZvbnQtYm9sZCBwYi1bMWVtXSB0cmFuc2l0aW9uLW9wYWNpdHlcIj57JF8oJ2ZhY2VDb2xsZWN0b3IuY2FwdHVyZWQnKX08L2gxPlxuXG4gICAgICAgICAgeyNpZiAkdW5jb25mb3JtaXRpZXNTdG9yZS51bmNvbmZvcm1pdGllcy5sZW5ndGggIT09IDB9XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjZS1kdWktbGFiZWxcIiBmb3I9XCJqdXN0aWZpY2F0aW9uXCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2UtZHVpLWxhYmVsLXRleHQgdGV4dC1iYXNlXCI+eyRfKCdmYWNlQ29sbGVjdG9yLmp1c3RpZmljYXRpb24nKX08L3NwYW4+XG4gICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgPHRleHRhcmVhXG4gICAgICAgICAgICAgIGNvbnRlbnRlZGl0YWJsZVxuICAgICAgICAgICAgICBiaW5kOnZhbHVlPXskanVzdGlmaWNhdGlvbn1cbiAgICAgICAgICAgICAgaWQ9XCJqdXN0aWZpY2F0aW9uXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJjZS1kdWktdGV4dGFyZWEgY2UtZHVpLXRleHRhcmVhLWJvcmRlcmVkIHRleHRhcmVhLWdob3N0IGgtWzZlbV0gdy1mdWxsIHRleHQtYmFzZVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIHsvaWZ9XG4gICAgICAgICAgPGRpdiBjbGFzczpjZS1kdWktYnRuLWdyb3VwPXshJGV4cG9ydEJ1dHRvbkRpc2FibGVkfSBjbGFzcz1cImZsZXggZmxleC1yb3dcIj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgaWQ9XCJicnktY2MtcmV0YWtlLWJ1dHRvblwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiY2UtZHVpLWJ0biBjZS1kdWktYnRuLWJsb2NrIGZsZXgtc2hyaW5rIHRleHQtYmFzZVwiXG4gICAgICAgICAgICAgIG9uOmNsaWNrPXsoKSA9PiByZXRha2UoKX0+eyRfKCdmYWNlQ29sbGVjdG9yLnJldGFrZVBob3RvJyl9PC9idXR0b25cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIHsjaWYgZ2V0KGVuYWJsZVN0cmF0ZWd5KS5mYWNlU3RyYXRlZ3kgIT09IEZhY2VFeHBvcnRTdHJhdGVneS5ESVNBQkxFRH1cbiAgICAgICAgICAgICAgPEV4cG9ydEJ0biBjc3NDbGFzcz1cImNlLWR1aS1idG4tYmxvY2sgZmxleC1zaHJpbmtcIiAvPlxuICAgICAgICAgICAgey9pZn1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICB7L2lmfVxuICAgICAgPCEtLSA8aDEgaGlkZGVuPXshJGNhcHR1cmVkfSBjbGFzcz1cInRleHQtM3hsIGZvbnQtYm9sZCBwYi00IHRyYW5zaXRpb24tYWxsXCI+RXhjZWxlbnRlITwvaDE+IC0tPlxuICAgIDwvZGl2PlxuICB7OmVsc2UgaWYgJGNhbWVyYVN0YXR1c1N0b3JlICE9PSBDYW1lcmFTdGF0dXNFbnVtLk9LfVxuICAgIDxDYW1lcmFTdGF0dXNcbiAgICAgIGhhbmRsZXI9e2FzeW5jICgpID0+IHtcbiAgICAgICAgYXdhaXQgcmVPcGVuQ2FtZXJhKCk7XG4gICAgICB9fVxuICAgIC8+XG4gIHsvaWZ9XG48L2Rpdj5cbiJdLCJuYW1lcyI6WyJ0X3ZhbHVlIiwiY3R4IiwiaXNNb2JpbGUiLCJpbnNlcnRfZGV2IiwidGFyZ2V0IiwiZGl2IiwiYW5jaG9yIiwiYXBwZW5kX2RldiIsImJ1dHRvbiIsImRpcnR5Iiwic2V0X2RhdGFfZGV2IiwidCIsImhhbmRsZUF1dG9DYXB0dXJlIiwic2V0X3N0b3JlX3ZhbHVlIiwiYXV0b21hdGljQ2FwdHVyZSIsIiRhdXRvbWF0aWNDYXB0dXJlIiwiaWRsaXZlX2ZhY2VfY2FwdHVyZSIsInZpZGVvXzEiLCJDYW1lcmFTdGF0dXNFbnVtIiwiaXNMaXZlbmVzc0VuYWJsZWQiLCJ0YWtlcGljdHVyZWJ0bl9jaGFuZ2VzIiwic3BhbiIsImNyZWF0ZV9pZl9ibG9ja18yMiIsImxvYWRpbmdHaWYiLCJhdHRyX2RldiIsImltZyIsImltZ19zcmNfdmFsdWUiLCJzbG90IiwiY3JlYXRlX2lmX2Jsb2NrXzIwIiwiY3JlYXRlX2lmX2Jsb2NrXzE4IiwidDBfdmFsdWUiLCJ0Ml92YWx1ZSIsImJ1dHRvbjAiLCJidXR0b24xIiwidDAiLCJ0MiIsInJlcXVlc3RSZXN1bHRFbnVtIiwiaW1nX2hpZGRlbl92YWx1ZSIsImN1cnJlbnQiLCJ0M192YWx1ZSIsInNob3dfaWYiLCJnZXQiLCJlbmFibGVTdHJhdGVneSIsIkZhY2VFeHBvcnRTdHJhdGVneSIsImlmX2Jsb2NrMCIsImNyZWF0ZV9pZl9ibG9ja18xNCIsImRpdjEiLCJoMSIsImRpdjAiLCJ0MyIsImVhY2hfdmFsdWUiLCJpIiwiY3JlYXRlX2lmX2Jsb2NrXzEyIiwiY3JlYXRlX2lmX2Jsb2NrXzExIiwiY3JlYXRlX2lmX2Jsb2NrXzEwIiwidDFfdmFsdWUiLCJjcmVhdGVfaWZfYmxvY2tfNCIsImNyZWF0ZV9pZl9ibG9ja181IiwiY3JlYXRlX2lmX2Jsb2NrXzYiLCJjcmVhdGVfaWZfYmxvY2tfNyIsImNyZWF0ZV9pZl9ibG9ja184IiwidDEiLCJsYWJlbCIsInRleHRhcmVhIiwidDRfdmFsdWUiLCJ0ZXh0YXJlYV9wbGFjZWhvbGRlcl92YWx1ZSIsImxhYmVsMCIsInNwYW4wIiwibGFiZWwxIiwic3BhbjEiLCJ0NCIsImJ1dHRvbjBfZGlzYWJsZWRfdmFsdWUiLCJzaG93X2lmXzIiLCJzaG93X2lmXzEiLCJpZl9ibG9jazEiLCJjcmVhdGVfaWZfYmxvY2tfMjgiLCJpZl9ibG9jazIiLCJjcmVhdGVfaWZfYmxvY2tfMjciLCJpZl9ibG9jazMiLCJjcmVhdGVfaWZfYmxvY2tfMjYiLCJpZl9ibG9jazQiLCJjcmVhdGVfaWZfYmxvY2tfMjUiLCJjcmVhdGVfaWZfYmxvY2tfMjQiLCJjcmVhdGVfaWZfYmxvY2tfMjMiLCJjcmVhdGVfaWZfYmxvY2tfMTYiLCJkaXYzIiwiZGl2MiIsImNhbnZhczAiLCJjYW52YXMxIiwiY2FudmFzMiIsImRyYXdWaWRlb09uQ2FudmFzIiwidmlkZW8iLCJkaXNwbGF5Q2FudmFzIiwidmlkZW9Bc3BlY3RSYXRpbyIsImNhbnZhc0FzcGVjdFJhdGlvIiwic291cmNlWCIsInNvdXJjZVkiLCJzb3VyY2VXaWR0aCIsInNvdXJjZUhlaWdodCIsImRldGVjdGlvbnNDYW52YXMiLCJlbmNsb3NpbmdEaXYiLCJpc0NvdW50aW5nRG93biIsInVuaXF1ZSIsImxvYWRlZEZhY2VBcGlBbmRXZWlnaHRzIiwid2FpdGluZ0ZhY2VOb3RGb3VuZFRpbWVvdXQiLCJlbmFibGVDYXB0dXJlQnV0dG9uIiwiZmFjZUZvdW5kU3RhcnRUaW1lIiwiZW5hYmxlTWludXRpYWUiLCIkJHByb3BzIiwidmlkZW9EaW1lbnNpb25zIiwibm9UYWJzIiwid2VpZ2h0c1BhdGgiLCJldmFsdWF0ZVBob3RvIiwic2hvd0NhcHR1cmVCdXR0b24iLCJzaG93VW5jb25mb3JtaXRpZXMiLCJ2aWRlb092ZXJsYXkiLCJ2aWRlb092ZXJsYXlUcmFuc3BhcmVuY3kiLCJzaG93Q29uZmlnQnV0dG9uIiwic2hvd0F1dG9DYXB0dXJlQnV0dG9uIiwic2hvd0NhbWVyYUJ1dHRvbiIsInNob3dKdXN0aWZpY2F0aW9uRmllbGQiLCJtaW5FeWVUb0V5ZURpc3QiLCJzdGFydEZhY2VBcGkiLCJ3cml0YWJsZSIsImRhdGFUeXBlUHJlZml4Iiwid2lkZ2V0SW5zdGFuY2UiLCJtYXNrQ2FudmFzIiwiY2FwdHVyaW5nIiwiaW5pdGlhbGl6ZWQiLCJpZHJuZExvYWRpbmciLCJpZHJuZENsb3NlZCIsIndhaXRpbmdJZHJuZENhcHR1cmVFdmVudCIsImludGVydmFsSWQiLCJsaXZlbmVzc0Vycm9yIiwiZmFjZUFwaUNvdW50ZXIiLCJmYWNlQXBpRnJhbWVSYXRlIiwiY291bnREb3duQ2FwdHVyZSIsInJpZ2h0T3JpZW50YXRpb24iLCJjb3VudERvd25GaW5pc2hUaW1lIiwiZGlzYWJsZUNvdW50RG93biIsInRvYXN0IiwiU3dhbCIsIm9uTW91bnQiLCJsb2ciLCJpbml0aWFsaXppbmciLCIkaW5pdGlhbGl6aW5nIiwicmVhZHkiLCIkcmVhZHkiLCJyZXNldEZhY2VDb2xsZWN0b3IiLCJyZWdpc3Rlcklkcm5kTGlzdGVuZXJzIiwiJGVuYWJsZUZhY2VBcGkiLCJsb2FkRmFjZUFwaUFuZFdlaWdodHMiLCJvcGVuQ2FtZXJhIiwicmVnaXN0ZXJEZXZpY2VDaGFuZ2VMaXN0ZW5lciIsImZhY2VGb3VuZCIsIiRmYWNlRm91bmQiLCJjYXB0dXJlZCIsIiRjYXB0dXJlZCIsIiRmYWNpbmdNb2RlIiwiRmFjaW5nTW9kZUVudW0iLCIkY2FtZXJhU3RhdHVzU3RvcmUiLCJzYXZlZCIsIiRzYXZlZCIsIiRyZXF1ZXN0UmVzdWx0Iiwib3JpZ2luYWxDYXB0dXJlIiwiJG9yaWdpbmFsQ2FwdHVyZSIsInVuY29uZm9ybWl0aWVzU3RvcmUiLCIkdW5jb25mb3JtaXRpZXNTdG9yZSIsImZhY2VWYWxpZGF0aW9ucyIsImZhY2VWYWxpZGF0aW9uc1N0b3JlIiwiZmFjZVZhbGlkYXRpb25BbGVydCIsIiRmYWNlVmFsaWRhdGlvbkFsZXJ0IiwiZHJhd092YWwiLCJvdmFsSGVpZ2h0Iiwib3ZhbFgiLCIkdmlkZW9TdG9yZSIsIm92YWxZIiwib3ZhbFdpZHRoIiwiJG92YWxEaW1lbnNpb25zIiwicHJpbWFyeVRoZW1lIiwic3VjY2Vzc1RoZW1lIiwidGltZVJlbWFpbmluZyIsImNsaXBQYXRoIiwiZXZlbnQiLCJ2aWRlb18iLCIkaWRybmRWaWRlb1N0b3JlRGltZW5zaW9ucyIsIiQkaW52YWxpZGF0ZSIsImxvb3AiLCJsb29wQ2FsbGVyIiwiZSIsImlkcm5kSW5pdGlhbGl6ZWQiLCIkaWRybmRJbml0aWFsaXplZCIsImVuY3J5cHRlZEZpbGUiLCJwaG90byIsImJsb2IiLCIkYmxvYiIsImJsb2JUb0Jhc2U2NCIsIiRkYXRhVHlwZVByZWZpeCIsIiRpbWFnZSIsIiRjYXB0dXJlTGl2ZW5lc3NJZHJuZEVuZHBvaW50IiwiYm9keVBhcnRzIiwiaWNhb1dhcm5pbmdzIiwiZ2V0RmFjZVVuY29uZm9ybWl0aWVzIiwiZXJyb3JDb2RlIiwiaWRybmRFcnJvclRvaTE4bktleSIsIkF4aW9zRXJyb3IiLCJmYWNlIiwiYnAiLCIkXyIsInZhbGlkYXRlTGl2ZW5lc3MiLCJpbWFnZSIsInRyYW5zbGF0ZUFuZFNldFVuY29uZm9ybWl0aWVzIiwibGl2ZW5lc3NSZXN1bHQiLCJnZXRMaXZlbmVzc0lkcm5kIiwiZGV2aWNlIiwid2lkdGgiLCJoZWlnaHQiLCJ2IiwidmlkZW9TdG9yZSIsIm9wZW5DYW1lcmFMaXZlbmVzcyIsInNlbGVjdERldmljZSIsIiRjYW1lcmFEZXZpY2VzU3RvcmUiLCJnZXRWaWRlb0RpbWVuc2lvbnMiLCJlbnVtZXJhdGVEZXZpY2VzIiwicGxheSIsIiRzZWxlY3RlZFRhYiIsIlRhYkVudW0iLCIkc3RhcnRGYWNlQXBpIiwiY2FwdHVyZSIsIiRzY3JlZW5Mb2NrZWQiLCJ1bkxvY2tTY3JlZW4iLCJzY3JlZW5Mb2NrZWQiLCIkZXllRGlzdGFuY2UiLCJ0cmFuc2xhdGVkRXJyb3IiLCJ1bmNvbmZvcm1pdHlUb2kxOG5LZXkiLCJjYW52YXMiLCIkYm94U3RvcmUiLCJzYXZlIiwiJGp1c3RpZmljYXRpb24iLCJiYXNlNjQiLCJyZXRha2UiLCJyZXN1bHQiLCJ0aXRsZSIsImljb24iLCIkc2hvd0xpdmVuZXNzUmVzdWx0VG9hc3QiLCJkZXZpY2VJZCIsIndpZHRoQ2FtZXJhIiwiaGVpZ2h0Q2FtZXJhIiwiYXNwZWN0UmF0aW9DYW1lcmEiLCJmYWNpbmciLCJ0b3VjaFBvaW50cyIsIiRzZWxlY3RlZFZpZGVvRGV2aWNlSWQiLCJlcnJvciIsImNvbnN0cmFpbnRFcnJvciIsImlzT2JqZWN0IiwicmVPcGVuQ2FtZXJhIiwic2VsZWN0ZWRWaWRlb0RldmljZUlkIiwiJF9zdHJlYW0iLCJzaHV0T2ZmQ2FtZXJhIiwic2V0RmFjZU5vdEZvdW5kQWxlcnQiLCJub3ciLCJsaWdodG5lc3MiLCJnZXRJbWFnZUxpZ2h0bmVzcyIsImdldEltYWdlU2hhcnBuZXNzIiwiaW52YWxpZEFsZXJ0cyIsInVuc3Vic2NyaWJlVmlkZW9EaW1lbnNpb25zIiwic3RvcmVPYmoiLCJ1bnN1YnNjcmliZUZhY2VWYWxpZGF0aW9ucyIsIm5ld1ZhbHVlIiwiJGNvbGxlY3RvclNlbGVjdCIsIm5ld0ZhY2VWYWxpZGF0aW9uQWxlcnQiLCJzZXRWYWxpZGF0aW9uQWxlcnQiLCJjb3VudGRvd25JbnRlcnZhbENhbGxiYWNrIiwidW5zdWJzY3JpYmVDYXB0dXJlZFN0YXRlIiwidW5zdWJzY3JpYmVDbGVhclZpZGVvU3JjIiwiY2xlYXJlZFZpZGVvU3JjT2JqZWN0Iiwic2VsZWN0ZWRUYWIiLCJ0YWIiLCJ1bnN1YnNjcmliZVNlbGVjdGVkU3RyZWFtIiwibmV3RGV2aWNlSWQiLCJ2aWRlb0hlaWdodCIsInZpZGVvV2lkdGgiLCJzdHJlYW0iLCJzZXR1cFN0cmVhbSIsIl9zdHJlYW0iLCIkY2xlYXJlZFZpZGVvU3JjT2JqZWN0IiwidHJhY2siLCJ1bnN1YnNjcmliZUNoYW5nZVRhYiIsInVuc3Vic2NyaWJlRmFjZUFwaSIsImZhY2VhcGlMb29wIiwidW5zdWJzY3JpYmVTd2FwQ2FtZXJhIiwic3dhcENhbWVyYSIsIm5leHREZXZpY2UiLCJ1bnN1YnNjcmliZU9yaWVudGF0aW9uIiwib3JpZW50YXRpb25EYXRhIiwiZGF0YSIsImRldGVjdGlvbnNSZXN1bHQiLCJvcHRpb25zIiwiZ2V0RmFjZURldGVjdG9yT3B0aW9ucyIsImZhY2VhcGkiLCJkZXRlY3Rpb25zUmVzdWx0MiIsImRyYXdEZXRlY3Rpb25zSW5GYWNlIiwicmV0YWtlUGhvdG8iLCJudiIsIiRyZXRha2VQaG90byIsInVuc3Vic2NyaWJlUmVhZHlDYW1lcmFFdmVudEVtaXR0ZXIiLCJ1bnN1YnNjcmliZUluaXRpYWxpemVkRXZlbnRFbWl0dGVyIiwib25EZXN0cm95IiwiJCR2YWx1ZSJdLCJtYXBwaW5ncyI6Ijs7OztZQW9CT0E7QUFBQTtBQUFBLElBQUFDLEtBQUcsc0JBQXNCLElBQUE7QUFBQTs7OzBFQUw1QkMsR0FBUSxJQUNOLHFGQUNBLGlGQUFpRjs7Ozs7O0FBSnZGLE1BQUFDLEVBU0tDLEdBQUFDLEdBQUFDLENBQUEsR0FSSEMsRUFPUUYsR0FBQUcsQ0FBQTs7Ozs7Ozs7Ozs7O0FBREgsTUFBQUM7QUFBQSxNQUFBLEtBQUFULE9BQUFBO0FBQUEsTUFBQUMsS0FBRyxzQkFBc0IsSUFBQSxPQUFBUyxFQUFBQyxHQUFBWCxDQUFBO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1dBYnJCWSxJQUFpQjtBQUN4QixJQUFBQyxFQUFBQyxJQUFBQyxJQUFvQixJQUFJQSxDQUFBO0FBQUE7Ozs7O2tCQVVSSDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UUNxbUNHWCxFQUFzQixFQUFBO0FBQUEsTUFBQTs7O0FBTG5DLE1BQUFFLEVBT0NDLEdB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
|