bry-biometric-collector 2.2.0-RC01 → 2.2.0-RC02

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,643 @@
1
+ import { ay as ae, S as z, r as q, t as K, w as F, x as r, y as T, z as N, B as j, D as U, a8 as J, ba as C, bb as V, bc as P, aJ as A, aK as I, aV as v, aL as p, aQ as f, bd as k, aS as E, be as O, aW as g, b0 as M, bf as S, bg as oe, bh as Q, at as L, I as Z, aT as ne, aX as ie, aY as ce, aP as ue, aN as re, aZ as fe, ab as me } from "./main_a9bb653b_2.2.0-RC02.js";
2
+ var y = /* @__PURE__ */ ((i) => (i.OK = "OK", i.DEVICE_NOT_FOUND_ERROR = "DEVICE_NOT_FOUND_ERROR", i.CAMERA_DENIED_ERROR = "CAMERA_DENIED_ERROR", i.CAMERA_IN_USE_ERROR = "CAMERA_IN_USE_ERROR", i.CAMERA_CLOSED_ERROR = "CAMERA_CLOSED_ERROR", i.CAMERA_UNSUPPORTED = "CAMERA_UNSUPPORTED", i.CAMERA_ORIENTATION_PORTRAIT = "CAMERA_ORIENTATION_PORTRAIT", i.CAMERA_ORIENTATION_LANDSCAPE = "CAMERA_ORIENTATION_LANDSCAPE", i))(y || {});
3
+ const H = ae(
4
+ "OK"
5
+ /* OK */
6
+ ), w = "src/lib/faceTab/cameraStatus/CameraStatus.svelte";
7
+ function W(i) {
8
+ let t, c, u, a, _, l, m, o, d, h, x = [
9
+ { class: "text-[8em] mx-auto" },
10
+ { xmlns: "http://www.w3.org/2000/svg" },
11
+ { width: "1em" },
12
+ { height: "1em" },
13
+ { viewBox: "0 0 256 256" },
14
+ /*$$props*/
15
+ i[2]
16
+ ], b = {};
17
+ for (let n = 0; n < x.length; n += 1)
18
+ b = C(b, x[n]);
19
+ const R = {
20
+ c: function() {
21
+ t = k("svg"), c = k("path"), u = E(), a = A("span"), a.textContent = "O dispositivo precisa estar na posição paisagem.", _ = E(), l = A("span"), l.textContent = "Por favor, vire o dispositivo ou pressione o botão abaixo.", m = E(), o = A("button"), o.textContent = "Ajustar Orientação", v(c, "fill", "currentColor"), v(c, "d", "M208 56h-27.72l-13.63-20.44A8 8 0 0 0 160 32H96a8 8 0 0 0-6.65 3.56L75.71 56H48a24 24 0 0 0-24 24v112a24 24 0 0 0 24 24h160a24 24 0 0 0 24-24V80a24 24 0 0 0-24-24m-51.19 110.4A48.21 48.21 0 0 1 96 163.77V168a8 8 0 0 1-16 0v-24a8 8 0 0 1 8-8h24a8 8 0 0 1 0 16h-5.15a32.12 32.12 0 0 0 40.34 1.61a8 8 0 0 1 9.62 12.79M176 120a8 8 0 0 1-8 8h-24a8 8 0 0 1 0-16h5.15a32.12 32.12 0 0 0-40.34-1.61a8 8 0 0 1-9.62-12.79a48.21 48.21 0 0 1 60.81 2.63V96a8 8 0 0 1 16 0Z"), p(c, w, 173, 6, 8313), O(t, b), p(t, w, 165, 4, 8138), v(a, "class", "text-xl font-bold text-center"), p(a, w, 178, 4, 8842), v(l, "class", "m-auto text-base block text-center"), p(l, w, 179, 4, 8946), v(o, "class", "z-20 ce-dui-btn ce-dui-btn-outline ce-dui-btn-primary m-auto"), p(o, w, 180, 4, 9065);
22
+ },
23
+ m: function(e, s) {
24
+ r(e, t, s), g(t, c), r(e, u, s), r(e, a, s), r(e, _, s), r(e, l, s), r(e, m, s), r(e, o, s), d || (h = M(
25
+ o,
26
+ "click",
27
+ /*click_handler_6*/
28
+ i[9],
29
+ !1,
30
+ !1,
31
+ !1,
32
+ !1
33
+ ), d = !0);
34
+ },
35
+ p: function(e, s) {
36
+ O(t, b = S(x, [
37
+ { class: "text-[8em] mx-auto" },
38
+ { xmlns: "http://www.w3.org/2000/svg" },
39
+ { width: "1em" },
40
+ { height: "1em" },
41
+ { viewBox: "0 0 256 256" },
42
+ s & /*$$props*/
43
+ 4 && /*$$props*/
44
+ e[2]
45
+ ]));
46
+ },
47
+ d: function(e) {
48
+ e && f(t), e && f(u), e && f(a), e && f(_), e && f(l), e && f(m), e && f(o), d = !1, h();
49
+ }
50
+ };
51
+ return N("SvelteRegisterBlock", {
52
+ block: R,
53
+ id: W.name,
54
+ type: "if",
55
+ source: "(164:81) ",
56
+ ctx: i
57
+ }), R;
58
+ }
59
+ function X(i) {
60
+ let t, c, u, a, _, l, m, o, d, h, x = [
61
+ { class: "text-[8em] mx-auto" },
62
+ { xmlns: "http://www.w3.org/2000/svg" },
63
+ { width: "1em" },
64
+ { height: "1em" },
65
+ { viewBox: "0 0 256 256" },
66
+ /*$$props*/
67
+ i[2]
68
+ ], b = {};
69
+ for (let n = 0; n < x.length; n += 1)
70
+ b = C(b, x[n]);
71
+ const R = {
72
+ c: function() {
73
+ t = k("svg"), c = k("path"), u = E(), a = A("span"), a.textContent = "O dispositivo precisa estar na posição retrato.", _ = E(), l = A("span"), l.textContent = "Por favor, vire o dispositivo ou pressione o botão abaixo.", m = E(), o = A("button"), o.textContent = "Ajustar Orientação", v(c, "fill", "currentColor"), v(c, "d", "M208 56h-27.72l-13.63-20.44A8 8 0 0 0 160 32H96a8 8 0 0 0-6.65 3.56L75.71 56H48a24 24 0 0 0-24 24v112a24 24 0 0 0 24 24h160a24 24 0 0 0 24-24V80a24 24 0 0 0-24-24m-51.19 110.4A48.21 48.21 0 0 1 96 163.77V168a8 8 0 0 1-16 0v-24a8 8 0 0 1 8-8h24a8 8 0 0 1 0 16h-5.15a32.12 32.12 0 0 0 40.34 1.61a8 8 0 0 1 9.62 12.79M176 120a8 8 0 0 1-8 8h-24a8 8 0 0 1 0-16h5.15a32.12 32.12 0 0 0-40.34-1.61a8 8 0 0 1-9.62-12.79a48.21 48.21 0 0 1 60.81 2.63V96a8 8 0 0 1 16 0Z"), p(c, w, 150, 6, 7078), O(t, b), p(t, w, 142, 4, 6903), v(a, "class", "text-xl font-bold text-center"), p(a, w, 155, 4, 7607), v(l, "class", "m-auto text-base block text-center"), p(l, w, 156, 4, 7710), v(o, "class", "z-20 ce-dui-btn ce-dui-btn-outline ce-dui-btn-primary m-auto"), p(o, w, 157, 4, 7829);
74
+ },
75
+ m: function(e, s) {
76
+ r(e, t, s), g(t, c), r(e, u, s), r(e, a, s), r(e, _, s), r(e, l, s), r(e, m, s), r(e, o, s), d || (h = M(
77
+ o,
78
+ "click",
79
+ /*click_handler_5*/
80
+ i[8],
81
+ !1,
82
+ !1,
83
+ !1,
84
+ !1
85
+ ), d = !0);
86
+ },
87
+ p: function(e, s) {
88
+ O(t, b = S(x, [
89
+ { class: "text-[8em] mx-auto" },
90
+ { xmlns: "http://www.w3.org/2000/svg" },
91
+ { width: "1em" },
92
+ { height: "1em" },
93
+ { viewBox: "0 0 256 256" },
94
+ s & /*$$props*/
95
+ 4 && /*$$props*/
96
+ e[2]
97
+ ]));
98
+ },
99
+ d: function(e) {
100
+ e && f(t), e && f(u), e && f(a), e && f(_), e && f(l), e && f(m), e && f(o), d = !1, h();
101
+ }
102
+ };
103
+ return N("SvelteRegisterBlock", {
104
+ block: R,
105
+ id: X.name,
106
+ type: "if",
107
+ source: "(141:80) ",
108
+ ctx: i
109
+ }), R;
110
+ }
111
+ function Y(i) {
112
+ let t, c, u, a, _, l, m, o, d, h, x = [
113
+ { class: "text-[8em] mx-auto" },
114
+ { xmlns: "http://www.w3.org/2000/svg" },
115
+ { width: "1em" },
116
+ { height: "1em" },
117
+ { viewBox: "0 0 256 256" },
118
+ /*$$props*/
119
+ i[2]
120
+ ], b = {};
121
+ for (let n = 0; n < x.length; n += 1)
122
+ b = C(b, x[n]);
123
+ const R = {
124
+ c: function() {
125
+ t = k("svg"), c = k("path"), u = E(), a = A("span"), a.textContent = "A câmera não atende os requisitos necessários.", _ = E(), l = A("span"), l.textContent = "Por favor, conecte outra câmera e tente novamente.", m = E(), o = A("button"), o.textContent = "Reiniciar", v(c, "fill", "currentColor"), v(c, "d", "M249.45 69.31a12 12 0 0 0-12.51 1L212 88.43V72a20 20 0 0 0-20-20h-68.12a12 12 0 0 0 0 24H188v68a12 12 0 0 0 4.46 9.33c.15.13.31.25.48.38l44 32A12 12 0 0 0 256 176V80a12 12 0 0 0-6.55-10.69M232 152.43l-20-14.54v-19.78l20-14.54ZM56.88 31.93a12 12 0 1 0-17.76 16.14L42.69 52H32a20 20 0 0 0-20 20v112a20 20 0 0 0 20 20h148.87l18.25 20.07a12 12 0 0 0 17.76-16.14ZM36 180V76h28.51l94.55 104Z"), p(c, w, 127, 6, 5942), O(t, b), p(t, w, 119, 4, 5767), v(a, "class", "text-xl font-bold text-center"), p(a, w, 132, 4, 6398), v(l, "class", "m-auto text-base block text-center"), p(l, w, 133, 4, 6500), v(o, "class", "z-20 ce-dui-btn ce-dui-btn-outline ce-dui-btn-primary m-auto"), p(o, w, 134, 4, 6611);
126
+ },
127
+ m: function(e, s) {
128
+ r(e, t, s), g(t, c), r(e, u, s), r(e, a, s), r(e, _, s), r(e, l, s), r(e, m, s), r(e, o, s), d || (h = M(
129
+ o,
130
+ "click",
131
+ /*click_handler_4*/
132
+ i[7],
133
+ !1,
134
+ !1,
135
+ !1,
136
+ !1
137
+ ), d = !0);
138
+ },
139
+ p: function(e, s) {
140
+ O(t, b = S(x, [
141
+ { class: "text-[8em] mx-auto" },
142
+ { xmlns: "http://www.w3.org/2000/svg" },
143
+ { width: "1em" },
144
+ { height: "1em" },
145
+ { viewBox: "0 0 256 256" },
146
+ s & /*$$props*/
147
+ 4 && /*$$props*/
148
+ e[2]
149
+ ]));
150
+ },
151
+ d: function(e) {
152
+ e && f(t), e && f(u), e && f(a), e && f(_), e && f(l), e && f(m), e && f(o), d = !1, h();
153
+ }
154
+ };
155
+ return N("SvelteRegisterBlock", {
156
+ block: R,
157
+ id: Y.name,
158
+ type: "if",
159
+ source: "(118:71) ",
160
+ ctx: i
161
+ }), R;
162
+ }
163
+ function G(i) {
164
+ let t, c, u, a, _, l, m, o, d, h, x = [
165
+ { class: "text-[8em] mx-auto" },
166
+ { xmlns: "http://www.w3.org/2000/svg" },
167
+ { width: "1em" },
168
+ { height: "1em" },
169
+ { viewBox: "0 0 256 256" },
170
+ /*$$props*/
171
+ i[2]
172
+ ], b = {};
173
+ for (let n = 0; n < x.length; n += 1)
174
+ b = C(b, x[n]);
175
+ const R = {
176
+ c: function() {
177
+ t = k("svg"), c = k("path"), u = E(), a = A("span"), a.textContent = "Por favor, permaneça na mesma aba durante a coleta biométrica.", _ = E(), l = A("span"), l.textContent = "Clique no botão Reiniciar para capturar novamente.", m = E(), o = A("button"), o.textContent = "Reiniciar", v(c, "fill", "currentColor"), v(c, "d", "M236.8 188.09L149.35 36.22a24.76 24.76 0 0 0-42.7 0L19.2 188.09a23.51 23.51 0 0 0 0 23.72A24.35 24.35 0 0 0 40.55 224h174.9a24.35 24.35 0 0 0 21.33-12.19a23.51 23.51 0 0 0 .02-23.72m-13.87 15.71a8.5 8.5 0 0 1-7.48 4.2H40.55a8.5 8.5 0 0 1-7.48-4.2a7.59 7.59 0 0 1 0-7.72l87.45-151.87a8.75 8.75 0 0 1 15 0l87.45 151.87a7.59 7.59 0 0 1-.04 7.72M120 144v-40a8 8 0 0 1 16 0v40a8 8 0 0 1-16 0m20 36a12 12 0 1 1-12-12a12 12 0 0 1 12 12"), p(c, w, 104, 6, 4756), O(t, b), p(t, w, 96, 4, 4581), v(a, "class", "text-xl font-bold text-center"), p(a, w, 109, 4, 5255), v(l, "class", "m-auto text-base block text-center"), p(l, w, 110, 4, 5373), v(o, "class", "z-20 ce-dui-btn ce-dui-btn-outline ce-dui-btn-primary m-auto"), p(o, w, 111, 4, 5484);
178
+ },
179
+ m: function(e, s) {
180
+ r(e, t, s), g(t, c), r(e, u, s), r(e, a, s), r(e, _, s), r(e, l, s), r(e, m, s), r(e, o, s), d || (h = M(
181
+ o,
182
+ "click",
183
+ /*click_handler_3*/
184
+ i[6],
185
+ !1,
186
+ !1,
187
+ !1,
188
+ !1
189
+ ), d = !0);
190
+ },
191
+ p: function(e, s) {
192
+ O(t, b = S(x, [
193
+ { class: "text-[8em] mx-auto" },
194
+ { xmlns: "http://www.w3.org/2000/svg" },
195
+ { width: "1em" },
196
+ { height: "1em" },
197
+ { viewBox: "0 0 256 256" },
198
+ s & /*$$props*/
199
+ 4 && /*$$props*/
200
+ e[2]
201
+ ]));
202
+ },
203
+ d: function(e) {
204
+ e && f(t), e && f(u), e && f(a), e && f(_), e && f(l), e && f(m), e && f(o), d = !1, h();
205
+ }
206
+ };
207
+ return N("SvelteRegisterBlock", {
208
+ block: R,
209
+ id: G.name,
210
+ type: "if",
211
+ source: "(95:72) ",
212
+ ctx: i
213
+ }), R;
214
+ }
215
+ function $(i) {
216
+ let t, c, u, a, _, l, m, o, d, h, x = [
217
+ { class: "text-[8em] mx-auto" },
218
+ { xmlns: "http://www.w3.org/2000/svg" },
219
+ { width: "1em" },
220
+ { height: "1em" },
221
+ { viewBox: "0 0 256 256" },
222
+ /*$$props*/
223
+ i[2]
224
+ ], b = {};
225
+ for (let n = 0; n < x.length; n += 1)
226
+ b = C(b, x[n]);
227
+ const R = {
228
+ c: function() {
229
+ t = k("svg"), c = k("path"), u = E(), a = A("span"), a.textContent = "A câmera está em uso.", _ = E(), l = A("span"), l.textContent = "Certifique-se de que a câmera não está sendo utilizada por nenhuma outra aplicação e clique no botão abaixo.", m = E(), o = A("button"), o.textContent = "Reiniciar", v(c, "fill", "currentColor"), v(c, "d", "M56.88 31.93a12 12 0 1 0-17.76 16.14l4 4.37A28 28 0 0 0 20 80v112a28 28 0 0 0 28 28h147.42l3.7 4.07a12 12 0 0 0 17.76-16.14Zm49.35 90L136 154.64a24 24 0 0 1-29.77-32.75ZM48 196a4 4 0 0 1-4-4V80a4 4 0 0 1 4-4h16.51l24.92 27.41a48 48 0 0 0 63.34 69.67L173.6 196ZM236 80v94.14a12 12 0 0 1-24 0V80a4 4 0 0 0-4-4h-32a12 12 0 0 1-10-5.34L153.57 52h-51.51a12 12 0 0 1 0-24H160a12 12 0 0 1 10 5.34L182.42 52H208a28 28 0 0 1 28 28"), p(c, w, 76, 6, 3468), O(t, b), p(t, w, 68, 4, 3293), v(a, "class", "text-xl font-bold text-center"), p(a, w, 81, 4, 3960), v(l, "class", "m-auto text-base block text-center"), p(l, w, 82, 4, 4037), v(o, "class", "z-20 ce-dui-btn ce-dui-btn-outline ce-dui-btn-primary m-auto"), p(o, w, 85, 4, 4218);
230
+ },
231
+ m: function(e, s) {
232
+ r(e, t, s), g(t, c), r(e, u, s), r(e, a, s), r(e, _, s), r(e, l, s), r(e, m, s), r(e, o, s), d || (h = M(
233
+ o,
234
+ "click",
235
+ /*click_handler_2*/
236
+ i[5],
237
+ !1,
238
+ !1,
239
+ !1,
240
+ !1
241
+ ), d = !0);
242
+ },
243
+ p: function(e, s) {
244
+ O(t, b = S(x, [
245
+ { class: "text-[8em] mx-auto" },
246
+ { xmlns: "http://www.w3.org/2000/svg" },
247
+ { width: "1em" },
248
+ { height: "1em" },
249
+ { viewBox: "0 0 256 256" },
250
+ s & /*$$props*/
251
+ 4 && /*$$props*/
252
+ e[2]
253
+ ]));
254
+ },
255
+ d: function(e) {
256
+ e && f(t), e && f(u), e && f(a), e && f(_), e && f(l), e && f(m), e && f(o), d = !1, h();
257
+ }
258
+ };
259
+ return N("SvelteRegisterBlock", {
260
+ block: R,
261
+ id: $.name,
262
+ type: "if",
263
+ source: "(67:72) ",
264
+ ctx: i
265
+ }), R;
266
+ }
267
+ function ee(i) {
268
+ let t, c, u, a, _, l, m, o, d, h, x = [
269
+ { class: "text-[8em] mx-auto" },
270
+ { xmlns: "http://www.w3.org/2000/svg" },
271
+ { width: "1em" },
272
+ { height: "1em" },
273
+ { viewBox: "0 0 256 256" },
274
+ /*$$props*/
275
+ i[2]
276
+ ], b = {};
277
+ for (let n = 0; n < x.length; n += 1)
278
+ b = C(b, x[n]);
279
+ const R = {
280
+ c: function() {
281
+ t = k("svg"), c = k("path"), u = E(), a = A("span"), a.textContent = "A câmera não foi detectada.", _ = E(), l = A("span"), l.textContent = "Por favor, conecte a sua câmera, espere alguns instantes e clique no botão Reiniciar.", m = E(), o = A("button"), o.textContent = "Reiniciar", v(c, "fill", "currentColor"), v(c, "d", "m137 168l11.52-11.51a12 12 0 0 0-17-17L120 151l-15-15l11.52-11.51a12 12 0 0 0-17-17L88 119l-15.51-15.49a12 12 0 0 0-17 17L59 124l-20.46 20.49a36 36 0 0 0 0 50.91l2.55 2.54l-25.58 25.57a12 12 0 0 0 17 17l25.57-25.58l2.54 2.55a36.06 36.06 0 0 0 50.91 0L132 197l3.51 3.52a12 12 0 0 0 17-17Zm-42.46 32.49a12 12 0 0 1-17 0l-22.03-22.06a12 12 0 0 1 0-17L76 141l39 39Zm146-185a12 12 0 0 0-17 0l-25.6 25.6l-2.54-2.55a36.05 36.05 0 0 0-50.91 0L124 59l-3.51-3.52a12 12 0 0 0-17 17l80 80a12 12 0 0 0 17-17L197 132l20.49-20.49a36 36 0 0 0 0-50.91l-2.55-2.54l25.58-25.57a12 12 0 0 0-.03-16.98Zm-40 79L180 115l-39-39l20.49-20.49a12 12 0 0 1 17 0l22.06 22.06a12 12 0 0 1 0 17Z"), p(c, w, 47, 6, 1922), O(t, b), p(t, w, 39, 4, 1747), v(a, "class", "text-xl font-bold text-center"), p(a, w, 52, 4, 2654), v(l, "class", "m-auto text-base block text-center"), p(l, w, 53, 4, 2737), v(o, "class", "z-20 ce-dui-btn ce-dui-btn-outline ce-dui-btn-primary m-auto"), p(o, w, 56, 4, 2895);
282
+ },
283
+ m: function(e, s) {
284
+ r(e, t, s), g(t, c), r(e, u, s), r(e, a, s), r(e, _, s), r(e, l, s), r(e, m, s), r(e, o, s), d || (h = M(
285
+ o,
286
+ "click",
287
+ /*click_handler_1*/
288
+ i[4],
289
+ !1,
290
+ !1,
291
+ !1,
292
+ !1
293
+ ), d = !0);
294
+ },
295
+ p: function(e, s) {
296
+ O(t, b = S(x, [
297
+ { class: "text-[8em] mx-auto" },
298
+ { xmlns: "http://www.w3.org/2000/svg" },
299
+ { width: "1em" },
300
+ { height: "1em" },
301
+ { viewBox: "0 0 256 256" },
302
+ s & /*$$props*/
303
+ 4 && /*$$props*/
304
+ e[2]
305
+ ]));
306
+ },
307
+ d: function(e) {
308
+ e && f(t), e && f(u), e && f(a), e && f(_), e && f(l), e && f(m), e && f(o), d = !1, h();
309
+ }
310
+ };
311
+ return N("SvelteRegisterBlock", {
312
+ block: R,
313
+ id: ee.name,
314
+ type: "if",
315
+ source: "(38:75) ",
316
+ ctx: i
317
+ }), R;
318
+ }
319
+ function te(i) {
320
+ let t, c, u, a, _, l, m, o, d, h, x = [
321
+ { class: "text-[8em] mx-auto" },
322
+ { xmlns: "http://www.w3.org/2000/svg" },
323
+ { width: "1em" },
324
+ { height: "1em" },
325
+ { viewBox: "0 0 256 256" },
326
+ /*$$props*/
327
+ i[2]
328
+ ], b = {};
329
+ for (let n = 0; n < x.length; n += 1)
330
+ b = C(b, x[n]);
331
+ const R = {
332
+ c: function() {
333
+ t = k("svg"), c = k("path"), u = E(), a = A("span"), a.textContent = "Por favor, conceda permissão de acesso à câmera.", _ = E(), l = A("span"), l.textContent = "Após conceder a permissão, clique no botão Reiniciar.", m = E(), o = A("button"), o.textContent = "Reiniciar", v(c, "fill", "currentColor"), v(c, "d", "M249.45 69.31a12 12 0 0 0-12.51 1L212 88.43V72a20 20 0 0 0-20-20h-68.12a12 12 0 0 0 0 24H188v68a12 12 0 0 0 4.46 9.33c.15.13.31.25.48.38l44 32A12 12 0 0 0 256 176V80a12 12 0 0 0-6.55-10.69M232 152.43l-20-14.54v-19.78l20-14.54ZM56.88 31.93a12 12 0 1 0-17.76 16.14L42.69 52H32a20 20 0 0 0-20 20v112a20 20 0 0 0 20 20h148.87l18.25 20.07a12 12 0 0 0 17.76-16.14ZM36 180V76h28.51l94.55 104Z"), p(c, w, 20, 6, 658), O(t, b), p(t, w, 12, 4, 483), v(a, "class", "text-xl font-bold text-center"), p(a, w, 25, 4, 1114), v(l, "class", "m-auto text-base block text-center"), p(l, w, 26, 4, 1218), v(o, "class", "z-20 ce-dui-btn ce-dui-btn-outline ce-dui-btn-primary m-auto"), p(o, w, 27, 4, 1332);
334
+ },
335
+ m: function(e, s) {
336
+ r(e, t, s), g(t, c), r(e, u, s), r(e, a, s), r(e, _, s), r(e, l, s), r(e, m, s), r(e, o, s), d || (h = M(
337
+ o,
338
+ "click",
339
+ /*click_handler*/
340
+ i[3],
341
+ !1,
342
+ !1,
343
+ !1,
344
+ !1
345
+ ), d = !0);
346
+ },
347
+ p: function(e, s) {
348
+ O(t, b = S(x, [
349
+ { class: "text-[8em] mx-auto" },
350
+ { xmlns: "http://www.w3.org/2000/svg" },
351
+ { width: "1em" },
352
+ { height: "1em" },
353
+ { viewBox: "0 0 256 256" },
354
+ s & /*$$props*/
355
+ 4 && /*$$props*/
356
+ e[2]
357
+ ]));
358
+ },
359
+ d: function(e) {
360
+ e && f(t), e && f(u), e && f(a), e && f(_), e && f(l), e && f(m), e && f(o), d = !1, h();
361
+ }
362
+ };
363
+ return N("SvelteRegisterBlock", {
364
+ block: R,
365
+ id: te.name,
366
+ type: "if",
367
+ source: "(11:2) {#if $cameraStatusStore === CameraStatusEnum.CAMERA_DENIED_ERROR}",
368
+ ctx: i
369
+ }), R;
370
+ }
371
+ function se(i) {
372
+ let t;
373
+ function c(l, m) {
374
+ if (
375
+ /*$cameraStatusStore*/
376
+ l[1] === y.CAMERA_DENIED_ERROR
377
+ )
378
+ return te;
379
+ if (
380
+ /*$cameraStatusStore*/
381
+ l[1] === y.DEVICE_NOT_FOUND_ERROR
382
+ )
383
+ return ee;
384
+ if (
385
+ /*$cameraStatusStore*/
386
+ l[1] === y.CAMERA_IN_USE_ERROR
387
+ )
388
+ return $;
389
+ if (
390
+ /*$cameraStatusStore*/
391
+ l[1] === y.CAMERA_CLOSED_ERROR
392
+ )
393
+ return G;
394
+ if (
395
+ /*$cameraStatusStore*/
396
+ l[1] === y.CAMERA_UNSUPPORTED
397
+ )
398
+ return Y;
399
+ if (
400
+ /*$cameraStatusStore*/
401
+ l[1] === y.CAMERA_ORIENTATION_PORTRAIT
402
+ )
403
+ return X;
404
+ if (
405
+ /*$cameraStatusStore*/
406
+ l[1] === y.CAMERA_ORIENTATION_LANDSCAPE
407
+ )
408
+ return W;
409
+ }
410
+ let u = c(i), a = u && u(i);
411
+ const _ = {
412
+ c: function() {
413
+ t = A("div"), a && a.c(), this.c = I, v(t, "class", "flex flex-col gap-4 justify-center absolute -translate-y-1/2 -translate-x-1/2 top-1/2 left-1/2 overflow-visible text-nowrap"), p(t, w, 7, 0, 222);
414
+ },
415
+ l: function(m) {
416
+ throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option");
417
+ },
418
+ m: function(m, o) {
419
+ r(m, t, o), a && a.m(t, null);
420
+ },
421
+ p: function(m, [o]) {
422
+ u === (u = c(m)) && a ? a.p(m, o) : (a && a.d(1), a = u && u(m), a && (a.c(), a.m(t, null)));
423
+ },
424
+ i: I,
425
+ o: I,
426
+ d: function(m) {
427
+ m && f(t), a && a.d();
428
+ }
429
+ };
430
+ return N("SvelteRegisterBlock", {
431
+ block: _,
432
+ id: se.name,
433
+ type: "component",
434
+ source: "",
435
+ ctx: i
436
+ }), _;
437
+ }
438
+ function de(i, t, c) {
439
+ let u;
440
+ j(H, "cameraStatusStore"), U(i, H, (n) => c(1, u = n));
441
+ let { $$slots: a = {}, $$scope: _ } = t;
442
+ J("camera-status", a, []);
443
+ let { handler: l = () => {
444
+ } } = t;
445
+ const m = () => {
446
+ l(), console.log("canicna", l);
447
+ }, o = () => {
448
+ l(), console.log("canicna", l);
449
+ }, d = () => {
450
+ l(), console.log("canicna", l);
451
+ }, h = () => {
452
+ l();
453
+ }, x = () => {
454
+ l();
455
+ }, b = () => {
456
+ P(!0);
457
+ }, R = () => {
458
+ P(!1);
459
+ };
460
+ return i.$$set = (n) => {
461
+ c(2, t = C(C({}, t), V(n))), "handler" in n && c(0, l = n.handler);
462
+ }, i.$capture_state = () => ({
463
+ handler: l,
464
+ CameraStatusEnum: y,
465
+ cameraStatusStore: H,
466
+ lockScreen: P,
467
+ $cameraStatusStore: u
468
+ }), i.$inject_state = (n) => {
469
+ c(2, t = C(C({}, t), n)), "handler" in t && c(0, l = n.handler);
470
+ }, t && "$$inject" in t && i.$inject_state(t.$$inject), t = V(t), [
471
+ l,
472
+ u,
473
+ t,
474
+ m,
475
+ o,
476
+ d,
477
+ h,
478
+ x,
479
+ b,
480
+ R
481
+ ];
482
+ }
483
+ class _e extends z {
484
+ constructor(t) {
485
+ super(), q(
486
+ this,
487
+ {
488
+ target: this.shadowRoot,
489
+ props: F(this.attributes),
490
+ customElement: !0
491
+ },
492
+ de,
493
+ se,
494
+ K,
495
+ { handler: 0 },
496
+ null
497
+ ), t && (t.target && r(t.target, this, t.anchor), t.props && (this.$set(t.props), T()));
498
+ }
499
+ static get observedAttributes() {
500
+ return ["handler"];
501
+ }
502
+ get handler() {
503
+ return this.$$.ctx[0];
504
+ }
505
+ set handler(t) {
506
+ this.$$set({ handler: t }), T();
507
+ }
508
+ }
509
+ customElements.define("camera-status", _e);
510
+ function we(i, { delay: t = 0, duration: c = 400, easing: u = oe } = {}) {
511
+ const a = +getComputedStyle(i).opacity;
512
+ return {
513
+ delay: t,
514
+ duration: c,
515
+ easing: u,
516
+ css: (_) => `opacity: ${_ * a}`
517
+ };
518
+ }
519
+ const D = "src/lib/conf/CameraBtn.svelte";
520
+ function le(i) {
521
+ let t, c, u, a, _, l, m, o, d, h, x;
522
+ t = new Q({ $$inline: !0 });
523
+ let b = [
524
+ { xmlns: "http://www.w3.org/2000/svg" },
525
+ { width: "3em" },
526
+ { height: "3em" },
527
+ { viewBox: "0 0 256 256" },
528
+ /*$$props*/
529
+ i[3]
530
+ ], R = {};
531
+ for (let e = 0; e < b.length; e += 1)
532
+ R = C(R, b[e]);
533
+ const n = {
534
+ c: function() {
535
+ ne(t.$$.fragment), c = E(), u = A("div"), a = A("label"), _ = k("svg"), l = k("path"), this.c = I, v(l, "fill", "currentColor"), v(l, "d", "M208 56h-27.72l-13.63-20.44A8 8 0 0 0 160 32H96a8 8 0 0 0-6.65 3.56L75.71 56H48a24 24 0 0 0-24 24v112a24 24 0 0 0 24 24h160a24 24 0 0 0 24-24V80a24 24 0 0 0-24-24m-51.19 110.4A48.21 48.21 0 0 1 96 163.77V168a8 8 0 0 1-16 0v-24a8 8 0 0 1 8-8h24a8 8 0 0 1 0 16h-5.15a32.12 32.12 0 0 0 40.34 1.61a8 8 0 0 1 9.62 12.79M176 120a8 8 0 0 1-8 8h-24a8 8 0 0 1 0-16h5.15a32.12 32.12 0 0 0-40.34-1.61a8 8 0 0 1-9.62-12.79a48.21 48.21 0 0 1 60.81 2.63V96a8 8 0 0 1 16 0Z"), p(l, D, 22, 6, 838), O(_, R), p(_, D, 21, 5, 731), v(a, "tabindex", "0"), a.hidden = m = /*$cameraDevicesStore*/
536
+ i[2].length == 1, v(a, "class", "ce-dui-btn ce-dui-btn-ghost m-1"), p(a, D, 20, 2, 624), v(u, "class", o = "ce-dui-dropdown ce-dui-dropdown-top absolute z-10 right-0 sm:block " + /*className*/
537
+ i[0]), p(u, D, 12, 0, 353);
538
+ },
539
+ l: function(s) {
540
+ throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option");
541
+ },
542
+ m: function(s, B) {
543
+ ie(t, s, B), r(s, c, B), r(s, u, B), g(u, a), g(a, _), g(_, l), d = !0, h || (x = M(
544
+ u,
545
+ "click",
546
+ /*click_handler*/
547
+ i[4],
548
+ !1,
549
+ !1,
550
+ !1,
551
+ !1
552
+ ), h = !0);
553
+ },
554
+ p: function(s, [B]) {
555
+ O(_, R = S(b, [
556
+ { xmlns: "http://www.w3.org/2000/svg" },
557
+ { width: "3em" },
558
+ { height: "3em" },
559
+ { viewBox: "0 0 256 256" },
560
+ B & /*$$props*/
561
+ 8 && /*$$props*/
562
+ s[3]
563
+ ])), (!d || B & /*$cameraDevicesStore*/
564
+ 4 && m !== (m = /*$cameraDevicesStore*/
565
+ s[2].length == 1)) && ce(a, "hidden", m), (!d || B & /*className*/
566
+ 1 && o !== (o = "ce-dui-dropdown ce-dui-dropdown-top absolute z-10 right-0 sm:block " + /*className*/
567
+ s[0])) && v(u, "class", o);
568
+ },
569
+ i: function(s) {
570
+ d || (ue(t.$$.fragment, s), d = !0);
571
+ },
572
+ o: function(s) {
573
+ re(t.$$.fragment, s), d = !1;
574
+ },
575
+ d: function(s) {
576
+ fe(t, s), s && f(c), s && f(u), h = !1, x();
577
+ }
578
+ };
579
+ return N("SvelteRegisterBlock", {
580
+ block: n,
581
+ id: le.name,
582
+ type: "component",
583
+ source: "",
584
+ ctx: i
585
+ }), n;
586
+ }
587
+ function ve(i, t, c) {
588
+ let u, a;
589
+ j(L, "swapCamera"), U(i, L, (d) => c(1, u = d)), j(Z, "cameraDevicesStore"), U(i, Z, (d) => c(2, a = d));
590
+ let { $$slots: _ = {}, $$scope: l } = t;
591
+ J("camera-btn", _, []);
592
+ let { className: m = "" } = t;
593
+ const o = () => {
594
+ me(L, u = !u, u);
595
+ };
596
+ return i.$$set = (d) => {
597
+ c(3, t = C(C({}, t), V(d))), "className" in d && c(0, m = d.className);
598
+ }, i.$capture_state = () => ({
599
+ swapCamera: L,
600
+ ConfModal: Q,
601
+ cameraDevicesStore: Z,
602
+ className: m,
603
+ $swapCamera: u,
604
+ $cameraDevicesStore: a
605
+ }), i.$inject_state = (d) => {
606
+ c(3, t = C(C({}, t), d)), "className" in t && c(0, m = d.className);
607
+ }, t && "$$inject" in t && i.$inject_state(t.$$inject), t = V(t), [m, u, a, t, o];
608
+ }
609
+ class be extends z {
610
+ constructor(t) {
611
+ super(), q(
612
+ this,
613
+ {
614
+ target: this.shadowRoot,
615
+ props: F(this.attributes),
616
+ customElement: !0
617
+ },
618
+ ve,
619
+ le,
620
+ K,
621
+ { className: 0 },
622
+ null
623
+ ), t && (t.target && r(t.target, this, t.anchor), t.props && (this.$set(t.props), T()));
624
+ }
625
+ static get observedAttributes() {
626
+ return ["className"];
627
+ }
628
+ get className() {
629
+ return this.$$.ctx[0];
630
+ }
631
+ set className(t) {
632
+ this.$$set({ className: t }), T();
633
+ }
634
+ }
635
+ customElements.define("camera-btn", be);
636
+ export {
637
+ y as C,
638
+ _e as a,
639
+ be as b,
640
+ H as c,
641
+ we as f
642
+ };
643
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2FtZXJhQnRuX2NmNTVlZDQ3XzIuMi4wLVJDMDIuanMiLCJzb3VyY2VzIjpbIi4uL3NyYy9saWIvZmFjZVRhYi9jYW1lcmFTdGF0dXMvY2FtZXJhU3RhdHVzU3RvcmUudHMiLCIuLi9zcmMvbGliL2ZhY2VUYWIvY2FtZXJhU3RhdHVzL0NhbWVyYVN0YXR1cy5zdmVsdGUiLCIuLi9ub2RlX21vZHVsZXMvc3ZlbHRlL3RyYW5zaXRpb24vaW5kZXgubWpzIiwiLi4vc3JjL2xpYi9jb25mL0NhbWVyYUJ0bi5zdmVsdGUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgd3JpdGFibGUgfSBmcm9tICdzdmVsdGUvc3RvcmUnO1xuXG5leHBvcnQgY29uc3QgZW51bSBDYW1lcmFTdGF0dXNFbnVtIHtcbiAgT0sgPSAnT0snLFxuICBERVZJQ0VfTk9UX0ZPVU5EX0VSUk9SID0gJ0RFVklDRV9OT1RfRk9VTkRfRVJST1InLFxuICBDQU1FUkFfREVOSUVEX0VSUk9SID0gJ0NBTUVSQV9ERU5JRURfRVJST1InLCAvLyBvciBkaXNtaXNzZWRcbiAgQ0FNRVJBX0lOX1VTRV9FUlJPUiA9ICdDQU1FUkFfSU5fVVNFX0VSUk9SJyxcbiAgQ0FNRVJBX0NMT1NFRF9FUlJPUiA9ICdDQU1FUkFfQ0xPU0VEX0VSUk9SJyxcbiAgQ0FNRVJBX1VOU1VQUE9SVEVEID0gJ0NBTUVSQV9VTlNVUFBPUlRFRCcsXG4gIENBTUVSQV9PUklFTlRBVElPTl9QT1JUUkFJVCA9ICdDQU1FUkFfT1JJRU5UQVRJT05fUE9SVFJBSVQnLFxuICBDQU1FUkFfT1JJRU5UQVRJT05fTEFORFNDQVBFID0gJ0NBTUVSQV9PUklFTlRBVElPTl9MQU5EU0NBUEUnLFxufVxuXG5leHBvcnQgY29uc3QgY2FtZXJhU3RhdHVzU3RvcmUgPSB3cml0YWJsZTxDYW1lcmFTdGF0dXNFbnVtPihDYW1lcmFTdGF0dXNFbnVtLk9LKTtcbiIsIjxzdmVsdGU6b3B0aW9ucyB0YWc9XCJjYW1lcmEtc3RhdHVzXCIgLz5cblxuPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgZXhwb3J0IGxldCBoYW5kbGVyOiBGdW5jdGlvbiA9ICgpID0+IHt9O1xuICBpbXBvcnQgeyBDYW1lcmFTdGF0dXNFbnVtLCBjYW1lcmFTdGF0dXNTdG9yZSB9IGZyb20gJy4vY2FtZXJhU3RhdHVzU3RvcmUnO1xuICBpbXBvcnQgeyBsb2NrU2NyZWVuIH0gZnJvbSAnLi4vLi4vdXRpbC91dGlsJztcbjwvc2NyaXB0PlxuXG48ZGl2XG4gIGNsYXNzPVwiZmxleCBmbGV4LWNvbCBnYXAtNCBqdXN0aWZ5LWNlbnRlciBhYnNvbHV0ZSAtdHJhbnNsYXRlLXktMS8yIC10cmFuc2xhdGUteC0xLzIgdG9wLTEvMiBsZWZ0LTEvMiBvdmVyZmxvdy12aXNpYmxlIHRleHQtbm93cmFwXCJcbj5cbiAgeyNpZiAkY2FtZXJhU3RhdHVzU3RvcmUgPT09IENhbWVyYVN0YXR1c0VudW0uQ0FNRVJBX0RFTklFRF9FUlJPUn1cbiAgICA8IS0tIGljb25pZnkgcGg6dmlkZW8tY2FtZXJhLXNsYXNoLWJvbGQgLS0+XG4gICAgPHN2Z1xuICAgICAgY2xhc3M9XCJ0ZXh0LVs4ZW1dIG14LWF1dG9cIlxuICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICB3aWR0aD1cIjFlbVwiXG4gICAgICBoZWlnaHQ9XCIxZW1cIlxuICAgICAgdmlld0JveD1cIjAgMCAyNTYgMjU2XCJcbiAgICAgIHsuLi4kJHByb3BzfVxuICAgID5cbiAgICAgIDxwYXRoXG4gICAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgICBkPVwiTTI0OS40NSA2OS4zMWExMiAxMiAwIDAgMC0xMi41MSAxTDIxMiA4OC40M1Y3MmEyMCAyMCAwIDAgMC0yMC0yMGgtNjguMTJhMTIgMTIgMCAwIDAgMCAyNEgxODh2NjhhMTIgMTIgMCAwIDAgNC40NiA5LjMzYy4xNS4xMy4zMS4yNS40OC4zOGw0NCAzMkExMiAxMiAwIDAgMCAyNTYgMTc2VjgwYTEyIDEyIDAgMCAwLTYuNTUtMTAuNjlNMjMyIDE1Mi40M2wtMjAtMTQuNTR2LTE5Ljc4bDIwLTE0LjU0Wk01Ni44OCAzMS45M2ExMiAxMiAwIDEgMC0xNy43NiAxNi4xNEw0Mi42OSA1MkgzMmEyMCAyMCAwIDAgMC0yMCAyMHYxMTJhMjAgMjAgMCAwIDAgMjAgMjBoMTQ4Ljg3bDE4LjI1IDIwLjA3YTEyIDEyIDAgMCAwIDE3Ljc2LTE2LjE0Wk0zNiAxODBWNzZoMjguNTFsOTQuNTUgMTA0WlwiXG4gICAgICAvPlxuICAgIDwvc3ZnPlxuICAgIDxzcGFuIGNsYXNzPVwidGV4dC14bCBmb250LWJvbGQgdGV4dC1jZW50ZXJcIj5Qb3IgZmF2b3IsIGNvbmNlZGEgcGVybWlzc8OjbyBkZSBhY2Vzc28gw6AgY8OibWVyYS48L3NwYW4+XG4gICAgPHNwYW4gY2xhc3M9XCJtLWF1dG8gdGV4dC1iYXNlIGJsb2NrIHRleHQtY2VudGVyXCI+QXDDs3MgY29uY2VkZXIgYSBwZXJtaXNzw6NvLCBjbGlxdWUgbm8gYm90w6NvIFJlaW5pY2lhci48L3NwYW4+XG4gICAgPGJ1dHRvblxuICAgICAgY2xhc3M9XCJ6LTIwIGNlLWR1aS1idG4gY2UtZHVpLWJ0bi1vdXRsaW5lIGNlLWR1aS1idG4tcHJpbWFyeSBtLWF1dG9cIlxuICAgICAgb246Y2xpY2s9eygpID0+IHtcbiAgICAgICAgaGFuZGxlcigpO1xuICAgICAgICBjb25zb2xlLmxvZygnY2FuaWNuYScsIGhhbmRsZXIpO1xuICAgICAgICAvLyBjYXB0dXJpbmcgPSB0cnVlO1xuICAgICAgICAvLyBjYW1lcmFEZW5pZWQgPSBmYWxzZTtcbiAgICAgICAgLy8gb3BlbkNhbWVyYSgpO1xuICAgICAgfX0+UmVpbmljaWFyPC9idXR0b25cbiAgICA+XG4gIHs6ZWxzZSBpZiAkY2FtZXJhU3RhdHVzU3RvcmUgPT09IENhbWVyYVN0YXR1c0VudW0uREVWSUNFX05PVF9GT1VORF9FUlJPUn1cbiAgICA8IS0tIGljb25pZnkgcGg6dmlkZW8tY2FtZXJhLXNsYXNoLWJvbGQgLS0+XG4gICAgPHN2Z1xuICAgICAgY2xhc3M9XCJ0ZXh0LVs4ZW1dIG14LWF1dG9cIlxuICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICB3aWR0aD1cIjFlbVwiXG4gICAgICBoZWlnaHQ9XCIxZW1cIlxuICAgICAgdmlld0JveD1cIjAgMCAyNTYgMjU2XCJcbiAgICAgIHsuLi4kJHByb3BzfVxuICAgID5cbiAgICAgIDxwYXRoXG4gICAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgICBkPVwibTEzNyAxNjhsMTEuNTItMTEuNTFhMTIgMTIgMCAwIDAtMTctMTdMMTIwIDE1MWwtMTUtMTVsMTEuNTItMTEuNTFhMTIgMTIgMCAwIDAtMTctMTdMODggMTE5bC0xNS41MS0xNS40OWExMiAxMiAwIDAgMC0xNyAxN0w1OSAxMjRsLTIwLjQ2IDIwLjQ5YTM2IDM2IDAgMCAwIDAgNTAuOTFsMi41NSAyLjU0bC0yNS41OCAyNS41N2ExMiAxMiAwIDAgMCAxNyAxN2wyNS41Ny0yNS41OGwyLjU0IDIuNTVhMzYuMDYgMzYuMDYgMCAwIDAgNTAuOTEgMEwxMzIgMTk3bDMuNTEgMy41MmExMiAxMiAwIDAgMCAxNy0xN1ptLTQyLjQ2IDMyLjQ5YTEyIDEyIDAgMCAxLTE3IDBsLTIyLjAzLTIyLjA2YTEyIDEyIDAgMCAxIDAtMTdMNzYgMTQxbDM5IDM5Wm0xNDYtMTg1YTEyIDEyIDAgMCAwLTE3IDBsLTI1LjYgMjUuNmwtMi41NC0yLjU1YTM2LjA1IDM2LjA1IDAgMCAwLTUwLjkxIDBMMTI0IDU5bC0zLjUxLTMuNTJhMTIgMTIgMCAwIDAtMTcgMTdsODAgODBhMTIgMTIgMCAwIDAgMTctMTdMMTk3IDEzMmwyMC40OS0yMC40OWEzNiAzNiAwIDAgMCAwLTUwLjkxbC0yLjU1LTIuNTRsMjUuNTgtMjUuNTdhMTIgMTIgMCAwIDAtLjAzLTE2Ljk4Wm0tNDAgNzlMMTgwIDExNWwtMzktMzlsMjAuNDktMjAuNDlhMTIgMTIgMCAwIDEgMTcgMGwyMi4wNiAyMi4wNmExMiAxMiAwIDAgMSAwIDE3WlwiXG4gICAgICAvPlxuICAgIDwvc3ZnPlxuICAgIDxzcGFuIGNsYXNzPVwidGV4dC14bCBmb250LWJvbGQgdGV4dC1jZW50ZXJcIj5BIGPDom1lcmEgbsOjbyBmb2kgZGV0ZWN0YWRhLjwvc3Bhbj5cbiAgICA8c3BhbiBjbGFzcz1cIm0tYXV0byB0ZXh0LWJhc2UgYmxvY2sgdGV4dC1jZW50ZXJcIlxuICAgICAgPlBvciBmYXZvciwgY29uZWN0ZSBhIHN1YSBjw6JtZXJhLCBlc3BlcmUgYWxndW5zIGluc3RhbnRlcyBlIGNsaXF1ZSBubyBib3TDo28gUmVpbmljaWFyLjwvc3BhblxuICAgID5cbiAgICA8YnV0dG9uXG4gICAgICBjbGFzcz1cInotMjAgY2UtZHVpLWJ0biBjZS1kdWktYnRuLW91dGxpbmUgY2UtZHVpLWJ0bi1wcmltYXJ5IG0tYXV0b1wiXG4gICAgICBvbjpjbGljaz17KCkgPT4ge1xuICAgICAgICBoYW5kbGVyKCk7XG4gICAgICAgIGNvbnNvbGUubG9nKCdjYW5pY25hJywgaGFuZGxlcik7XG4gICAgICAgIC8vIGNhcHR1cmluZyA9IHRydWU7XG4gICAgICAgIC8vIGRldmljZU5vdEZvdW5kID0gZmFsc2U7XG4gICAgICAgIC8vIG9wZW5DYW1lcmEoKTtcbiAgICAgIH19PlJlaW5pY2lhcjwvYnV0dG9uXG4gICAgPlxuICB7OmVsc2UgaWYgJGNhbWVyYVN0YXR1c1N0b3JlID09PSBDYW1lcmFTdGF0dXNFbnVtLkNBTUVSQV9JTl9VU0VfRVJST1J9XG4gICAgPCEtLSBpY29uaWZ5IHBoOndhcm5pbmcgLS0+XG4gICAgPHN2Z1xuICAgICAgY2xhc3M9XCJ0ZXh0LVs4ZW1dIG14LWF1dG9cIlxuICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICB3aWR0aD1cIjFlbVwiXG4gICAgICBoZWlnaHQ9XCIxZW1cIlxuICAgICAgdmlld0JveD1cIjAgMCAyNTYgMjU2XCJcbiAgICAgIHsuLi4kJHByb3BzfVxuICAgID5cbiAgICAgIDxwYXRoXG4gICAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgICBkPVwiTTU2Ljg4IDMxLjkzYTEyIDEyIDAgMSAwLTE3Ljc2IDE2LjE0bDQgNC4zN0EyOCAyOCAwIDAgMCAyMCA4MHYxMTJhMjggMjggMCAwIDAgMjggMjhoMTQ3LjQybDMuNyA0LjA3YTEyIDEyIDAgMCAwIDE3Ljc2LTE2LjE0Wm00OS4zNSA5MEwxMzYgMTU0LjY0YTI0IDI0IDAgMCAxLTI5Ljc3LTMyLjc1Wk00OCAxOTZhNCA0IDAgMCAxLTQtNFY4MGE0IDQgMCAwIDEgNC00aDE2LjUxbDI0LjkyIDI3LjQxYTQ4IDQ4IDAgMCAwIDYzLjM0IDY5LjY3TDE3My42IDE5NlpNMjM2IDgwdjk0LjE0YTEyIDEyIDAgMCAxLTI0IDBWODBhNCA0IDAgMCAwLTQtNGgtMzJhMTIgMTIgMCAwIDEtMTAtNS4zNEwxNTMuNTcgNTJoLTUxLjUxYTEyIDEyIDAgMCAxIDAtMjRIMTYwYTEyIDEyIDAgMCAxIDEwIDUuMzRMMTgyLjQyIDUySDIwOGEyOCAyOCAwIDAgMSAyOCAyOFwiXG4gICAgICAvPlxuICAgIDwvc3ZnPlxuICAgIDxzcGFuIGNsYXNzPVwidGV4dC14bCBmb250LWJvbGQgdGV4dC1jZW50ZXJcIj5BIGPDom1lcmEgZXN0w6EgZW0gdXNvLjwvc3Bhbj5cbiAgICA8c3BhbiBjbGFzcz1cIm0tYXV0byB0ZXh0LWJhc2UgYmxvY2sgdGV4dC1jZW50ZXJcIlxuICAgICAgPkNlcnRpZmlxdWUtc2UgZGUgcXVlIGEgY8OibWVyYSBuw6NvIGVzdMOhIHNlbmRvIHV0aWxpemFkYSBwb3IgbmVuaHVtYSBvdXRyYSBhcGxpY2HDp8OjbyBlIGNsaXF1ZSBubyBib3TDo28gYWJhaXhvLjwvc3BhblxuICAgID5cbiAgICA8YnV0dG9uXG4gICAgICBjbGFzcz1cInotMjAgY2UtZHVpLWJ0biBjZS1kdWktYnRuLW91dGxpbmUgY2UtZHVpLWJ0bi1wcmltYXJ5IG0tYXV0b1wiXG4gICAgICBvbjpjbGljaz17KCkgPT4ge1xuICAgICAgICBoYW5kbGVyKCk7XG4gICAgICAgIGNvbnNvbGUubG9nKCdjYW5pY25hJywgaGFuZGxlcik7XG4gICAgICAgIC8vIGNhcHR1cmluZyA9IHRydWU7XG4gICAgICAgIC8vIG9wZW5DYW1lcmEoKTtcbiAgICAgIH19PlJlaW5pY2lhcjwvYnV0dG9uXG4gICAgPlxuICB7OmVsc2UgaWYgJGNhbWVyYVN0YXR1c1N0b3JlID09PSBDYW1lcmFTdGF0dXNFbnVtLkNBTUVSQV9DTE9TRURfRVJST1J9XG4gICAgPCEtLSBpY29uaWZ5IHBoOndhcm5pbmcgLS0+XG4gICAgPHN2Z1xuICAgICAgY2xhc3M9XCJ0ZXh0LVs4ZW1dIG14LWF1dG9cIlxuICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICB3aWR0aD1cIjFlbVwiXG4gICAgICBoZWlnaHQ9XCIxZW1cIlxuICAgICAgdmlld0JveD1cIjAgMCAyNTYgMjU2XCJcbiAgICAgIHsuLi4kJHByb3BzfVxuICAgID5cbiAgICAgIDxwYXRoXG4gICAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgICBkPVwiTTIzNi44IDE4OC4wOUwxNDkuMzUgMzYuMjJhMjQuNzYgMjQuNzYgMCAwIDAtNDIuNyAwTDE5LjIgMTg4LjA5YTIzLjUxIDIzLjUxIDAgMCAwIDAgMjMuNzJBMjQuMzUgMjQuMzUgMCAwIDAgNDAuNTUgMjI0aDE3NC45YTI0LjM1IDI0LjM1IDAgMCAwIDIxLjMzLTEyLjE5YTIzLjUxIDIzLjUxIDAgMCAwIC4wMi0yMy43Mm0tMTMuODcgMTUuNzFhOC41IDguNSAwIDAgMS03LjQ4IDQuMkg0MC41NWE4LjUgOC41IDAgMCAxLTcuNDgtNC4yYTcuNTkgNy41OSAwIDAgMSAwLTcuNzJsODcuNDUtMTUxLjg3YTguNzUgOC43NSAwIDAgMSAxNSAwbDg3LjQ1IDE1MS44N2E3LjU5IDcuNTkgMCAwIDEtLjA0IDcuNzJNMTIwIDE0NHYtNDBhOCA4IDAgMCAxIDE2IDB2NDBhOCA4IDAgMCAxLTE2IDBtMjAgMzZhMTIgMTIgMCAxIDEtMTItMTJhMTIgMTIgMCAwIDEgMTIgMTJcIlxuICAgICAgLz5cbiAgICA8L3N2Zz5cbiAgICA8c3BhbiBjbGFzcz1cInRleHQteGwgZm9udC1ib2xkIHRleHQtY2VudGVyXCI+UG9yIGZhdm9yLCBwZXJtYW5lw6dhIG5hIG1lc21hIGFiYSBkdXJhbnRlIGEgY29sZXRhIGJpb23DqXRyaWNhLjwvc3Bhbj5cbiAgICA8c3BhbiBjbGFzcz1cIm0tYXV0byB0ZXh0LWJhc2UgYmxvY2sgdGV4dC1jZW50ZXJcIj5DbGlxdWUgbm8gYm90w6NvIFJlaW5pY2lhciBwYXJhIGNhcHR1cmFyIG5vdmFtZW50ZS48L3NwYW4+XG4gICAgPGJ1dHRvblxuICAgICAgY2xhc3M9XCJ6LTIwIGNlLWR1aS1idG4gY2UtZHVpLWJ0bi1vdXRsaW5lIGNlLWR1aS1idG4tcHJpbWFyeSBtLWF1dG9cIlxuICAgICAgb246Y2xpY2s9eygpID0+IHtcbiAgICAgICAgaGFuZGxlcigpO1xuICAgICAgfX0+UmVpbmljaWFyPC9idXR0b25cbiAgICA+XG4gIHs6ZWxzZSBpZiAkY2FtZXJhU3RhdHVzU3RvcmUgPT09IENhbWVyYVN0YXR1c0VudW0uQ0FNRVJBX1VOU1VQUE9SVEVEfVxuICAgIDwhLS0gaWNvbmlmeSBwaDp2aWRlby1jYW1lcmEtc2xhc2gtYm9sZCAtLT5cbiAgICA8c3ZnXG4gICAgICBjbGFzcz1cInRleHQtWzhlbV0gbXgtYXV0b1wiXG4gICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgIHdpZHRoPVwiMWVtXCJcbiAgICAgIGhlaWdodD1cIjFlbVwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDI1NiAyNTZcIlxuICAgICAgey4uLiQkcHJvcHN9XG4gICAgPlxuICAgICAgPHBhdGhcbiAgICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiXG4gICAgICAgIGQ9XCJNMjQ5LjQ1IDY5LjMxYTEyIDEyIDAgMCAwLTEyLjUxIDFMMjEyIDg4LjQzVjcyYTIwIDIwIDAgMCAwLTIwLTIwaC02OC4xMmExMiAxMiAwIDAgMCAwIDI0SDE4OHY2OGExMiAxMiAwIDAgMCA0LjQ2IDkuMzNjLjE1LjEzLjMxLjI1LjQ4LjM4bDQ0IDMyQTEyIDEyIDAgMCAwIDI1NiAxNzZWODBhMTIgMTIgMCAwIDAtNi41NS0xMC42OU0yMzIgMTUyLjQzbC0yMC0xNC41NHYtMTkuNzhsMjAtMTQuNTRaTTU2Ljg4IDMxLjkzYTEyIDEyIDAgMSAwLTE3Ljc2IDE2LjE0TDQyLjY5IDUySDMyYTIwIDIwIDAgMCAwLTIwIDIwdjExMmEyMCAyMCAwIDAgMCAyMCAyMGgxNDguODdsMTguMjUgMjAuMDdhMTIgMTIgMCAwIDAgMTcuNzYtMTYuMTRaTTM2IDE4MFY3NmgyOC41MWw5NC41NSAxMDRaXCJcbiAgICAgIC8+XG4gICAgPC9zdmc+XG4gICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXhsIGZvbnQtYm9sZCB0ZXh0LWNlbnRlclwiPkEgY8OibWVyYSBuw6NvIGF0ZW5kZSBvcyByZXF1aXNpdG9zIG5lY2Vzc8Ohcmlvcy48L3NwYW4+XG4gICAgPHNwYW4gY2xhc3M9XCJtLWF1dG8gdGV4dC1iYXNlIGJsb2NrIHRleHQtY2VudGVyXCI+UG9yIGZhdm9yLCBjb25lY3RlIG91dHJhIGPDom1lcmEgZSB0ZW50ZSBub3ZhbWVudGUuPC9zcGFuPlxuICAgIDxidXR0b25cbiAgICAgIGNsYXNzPVwiei0yMCBjZS1kdWktYnRuIGNlLWR1aS1idG4tb3V0bGluZSBjZS1kdWktYnRuLXByaW1hcnkgbS1hdXRvXCJcbiAgICAgIG9uOmNsaWNrPXsoKSA9PiB7XG4gICAgICAgIGhhbmRsZXIoKTtcbiAgICAgIH19PlJlaW5pY2lhcjwvYnV0dG9uXG4gICAgPlxuICB7OmVsc2UgaWYgJGNhbWVyYVN0YXR1c1N0b3JlID09PSBDYW1lcmFTdGF0dXNFbnVtLkNBTUVSQV9PUklFTlRBVElPTl9QT1JUUkFJVH1cbiAgICA8IS0tIGljb25pZnkgcGg6dmlkZW8tY2FtZXJhLXNsYXNoLWJvbGQgLS0+XG4gICAgPHN2Z1xuICAgICAgY2xhc3M9XCJ0ZXh0LVs4ZW1dIG14LWF1dG9cIlxuICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICB3aWR0aD1cIjFlbVwiXG4gICAgICBoZWlnaHQ9XCIxZW1cIlxuICAgICAgdmlld0JveD1cIjAgMCAyNTYgMjU2XCJcbiAgICAgIHsuLi4kJHByb3BzfVxuICAgID5cbiAgICAgIDxwYXRoXG4gICAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgICBkPVwiTTIwOCA1NmgtMjcuNzJsLTEzLjYzLTIwLjQ0QTggOCAwIDAgMCAxNjAgMzJIOTZhOCA4IDAgMCAwLTYuNjUgMy41Nkw3NS43MSA1Nkg0OGEyNCAyNCAwIDAgMC0yNCAyNHYxMTJhMjQgMjQgMCAwIDAgMjQgMjRoMTYwYTI0IDI0IDAgMCAwIDI0LTI0VjgwYTI0IDI0IDAgMCAwLTI0LTI0bS01MS4xOSAxMTAuNEE0OC4yMSA0OC4yMSAwIDAgMSA5NiAxNjMuNzdWMTY4YTggOCAwIDAgMS0xNiAwdi0yNGE4IDggMCAwIDEgOC04aDI0YTggOCAwIDAgMSAwIDE2aC01LjE1YTMyLjEyIDMyLjEyIDAgMCAwIDQwLjM0IDEuNjFhOCA4IDAgMCAxIDkuNjIgMTIuNzlNMTc2IDEyMGE4IDggMCAwIDEtOCA4aC0yNGE4IDggMCAwIDEgMC0xNmg1LjE1YTMyLjEyIDMyLjEyIDAgMCAwLTQwLjM0LTEuNjFhOCA4IDAgMCAxLTkuNjItMTIuNzlhNDguMjEgNDguMjEgMCAwIDEgNjAuODEgMi42M1Y5NmE4IDggMCAwIDEgMTYgMFpcIlxuICAgICAgLz5cbiAgICA8L3N2Zz5cbiAgICA8c3BhbiBjbGFzcz1cInRleHQteGwgZm9udC1ib2xkIHRleHQtY2VudGVyXCI+TyBkaXNwb3NpdGl2byBwcmVjaXNhIGVzdGFyIG5hIHBvc2nDp8OjbyByZXRyYXRvLjwvc3Bhbj5cbiAgICA8c3BhbiBjbGFzcz1cIm0tYXV0byB0ZXh0LWJhc2UgYmxvY2sgdGV4dC1jZW50ZXJcIj5Qb3IgZmF2b3IsIHZpcmUgbyBkaXNwb3NpdGl2byBvdSBwcmVzc2lvbmUgbyBib3TDo28gYWJhaXhvLjwvc3Bhbj5cbiAgICA8YnV0dG9uXG4gICAgICBjbGFzcz1cInotMjAgY2UtZHVpLWJ0biBjZS1kdWktYnRuLW91dGxpbmUgY2UtZHVpLWJ0bi1wcmltYXJ5IG0tYXV0b1wiXG4gICAgICBvbjpjbGljaz17KCkgPT4ge1xuICAgICAgICBsb2NrU2NyZWVuKHRydWUpO1xuICAgICAgfX0+QWp1c3RhciBPcmllbnRhw6fDo288L2J1dHRvblxuICAgID5cbiAgezplbHNlIGlmICRjYW1lcmFTdGF0dXNTdG9yZSA9PT0gQ2FtZXJhU3RhdHVzRW51bS5DQU1FUkFfT1JJRU5UQVRJT05fTEFORFNDQVBFfVxuICAgIDwhLS0gaWNvbmlmeSBwaDp2aWRlby1jYW1lcmEtc2xhc2gtYm9sZCAtLT5cbiAgICA8c3ZnXG4gICAgICBjbGFzcz1cInRleHQtWzhlbV0gbXgtYXV0b1wiXG4gICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgIHdpZHRoPVwiMWVtXCJcbiAgICAgIGhlaWdodD1cIjFlbVwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDI1NiAyNTZcIlxuICAgICAgey4uLiQkcHJvcHN9XG4gICAgPlxuICAgICAgPHBhdGhcbiAgICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiXG4gICAgICAgIGQ9XCJNMjA4IDU2aC0yNy43MmwtMTMuNjMtMjAuNDRBOCA4IDAgMCAwIDE2MCAzMkg5NmE4IDggMCAwIDAtNi42NSAzLjU2TDc1LjcxIDU2SDQ4YTI0IDI0IDAgMCAwLTI0IDI0djExMmEyNCAyNCAwIDAgMCAyNCAyNGgxNjBhMjQgMjQgMCAwIDAgMjQtMjRWODBhMjQgMjQgMCAwIDAtMjQtMjRtLTUxLjE5IDExMC40QTQ4LjIxIDQ4LjIxIDAgMCAxIDk2IDE2My43N1YxNjhhOCA4IDAgMCAxLTE2IDB2LTI0YTggOCAwIDAgMSA4LThoMjRhOCA4IDAgMCAxIDAgMTZoLTUuMTVhMzIuMTIgMzIuMTIgMCAwIDAgNDAuMzQgMS42MWE4IDggMCAwIDEgOS42MiAxMi43OU0xNzYgMTIwYTggOCAwIDAgMS04IDhoLTI0YTggOCAwIDAgMSAwLTE2aDUuMTVhMzIuMTIgMzIuMTIgMCAwIDAtNDAuMzQtMS42MWE4IDggMCAwIDEtOS42Mi0xMi43OWE0OC4yMSA0OC4yMSAwIDAgMSA2MC44MSAyLjYzVjk2YTggOCAwIDAgMSAxNiAwWlwiXG4gICAgICAvPlxuICAgIDwvc3ZnPlxuICAgIDxzcGFuIGNsYXNzPVwidGV4dC14bCBmb250LWJvbGQgdGV4dC1jZW50ZXJcIj5PIGRpc3Bvc2l0aXZvIHByZWNpc2EgZXN0YXIgbmEgcG9zacOnw6NvIHBhaXNhZ2VtLjwvc3Bhbj5cbiAgICA8c3BhbiBjbGFzcz1cIm0tYXV0byB0ZXh0LWJhc2UgYmxvY2sgdGV4dC1jZW50ZXJcIj5Qb3IgZmF2b3IsIHZpcmUgbyBkaXNwb3NpdGl2byBvdSBwcmVzc2lvbmUgbyBib3TDo28gYWJhaXhvLjwvc3Bhbj5cbiAgICA8YnV0dG9uXG4gICAgICBjbGFzcz1cInotMjAgY2UtZHVpLWJ0biBjZS1kdWktYnRuLW91dGxpbmUgY2UtZHVpLWJ0bi1wcmltYXJ5IG0tYXV0b1wiXG4gICAgICBvbjpjbGljaz17KCkgPT4ge1xuICAgICAgICBsb2NrU2NyZWVuKGZhbHNlKTtcbiAgICAgIH19PkFqdXN0YXIgT3JpZW50YcOnw6NvPC9idXR0b25cbiAgICA+XG4gIHsvaWZ9XG48L2Rpdj5cbiIsImltcG9ydCB7IGN1YmljSW5PdXQsIGxpbmVhciwgY3ViaWNPdXQgfSBmcm9tICcuLi9lYXNpbmcvaW5kZXgubWpzJztcbmltcG9ydCB7IHNwbGl0X2Nzc191bml0LCBpc19mdW5jdGlvbiwgYXNzaWduIH0gZnJvbSAnLi4vaW50ZXJuYWwvaW5kZXgubWpzJztcblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5Db3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi5cclxuXHJcblBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZC9vciBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgZm9yIGFueVxyXG5wdXJwb3NlIHdpdGggb3Igd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQuXHJcblxyXG5USEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiIEFORCBUSEUgQVVUSE9SIERJU0NMQUlNUyBBTEwgV0FSUkFOVElFUyBXSVRIXHJcblJFR0FSRCBUTyBUSElTIFNPRlRXQVJFIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWVxyXG5BTkQgRklUTkVTUy4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBTUEVDSUFMLCBESVJFQ1QsXHJcbklORElSRUNULCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgT1IgQU5ZIERBTUFHRVMgV0hBVFNPRVZFUiBSRVNVTFRJTkcgRlJPTVxyXG5MT1NTIE9GIFVTRSwgREFUQSBPUiBQUk9GSVRTLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUlxyXG5PVEhFUiBUT1JUSU9VUyBBQ1RJT04sIEFSSVNJTkcgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SXHJcblBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUuXHJcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovXHJcblxyXG5mdW5jdGlvbiBfX3Jlc3QocywgZSkge1xyXG4gICAgdmFyIHQgPSB7fTtcclxuICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSAmJiBlLmluZGV4T2YocCkgPCAwKVxyXG4gICAgICAgIHRbcF0gPSBzW3BdO1xyXG4gICAgaWYgKHMgIT0gbnVsbCAmJiB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA9PT0gXCJmdW5jdGlvblwiKVxyXG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBwID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzKTsgaSA8IHAubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDAgJiYgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHMsIHBbaV0pKVxyXG4gICAgICAgICAgICAgICAgdFtwW2ldXSA9IHNbcFtpXV07XHJcbiAgICAgICAgfVxyXG4gICAgcmV0dXJuIHQ7XHJcbn1cblxuZnVuY3Rpb24gYmx1cihub2RlLCB7IGRlbGF5ID0gMCwgZHVyYXRpb24gPSA0MDAsIGVhc2luZyA9IGN1YmljSW5PdXQsIGFtb3VudCA9IDUsIG9wYWNpdHkgPSAwIH0gPSB7fSkge1xuICAgIGNvbnN0IHN0eWxlID0gZ2V0Q29tcHV0ZWRTdHlsZShub2RlKTtcbiAgICBjb25zdCB0YXJnZXRfb3BhY2l0eSA9ICtzdHlsZS5vcGFjaXR5O1xuICAgIGNvbnN0IGYgPSBzdHlsZS5maWx0ZXIgPT09ICdub25lJyA/ICcnIDogc3R5bGUuZmlsdGVyO1xuICAgIGNvbnN0IG9kID0gdGFyZ2V0X29wYWNpdHkgKiAoMSAtIG9wYWNpdHkpO1xuICAgIGNvbnN0IFt2YWx1ZSwgdW5pdF0gPSBzcGxpdF9jc3NfdW5pdChhbW91bnQpO1xuICAgIHJldHVybiB7XG4gICAgICAgIGRlbGF5LFxuICAgICAgICBkdXJhdGlvbixcbiAgICAgICAgZWFzaW5nLFxuICAgICAgICBjc3M6IChfdCwgdSkgPT4gYG9wYWNpdHk6ICR7dGFyZ2V0X29wYWNpdHkgLSAob2QgKiB1KX07IGZpbHRlcjogJHtmfSBibHVyKCR7dSAqIHZhbHVlfSR7dW5pdH0pO2BcbiAgICB9O1xufVxuZnVuY3Rpb24gZmFkZShub2RlLCB7IGRlbGF5ID0gMCwgZHVyYXRpb24gPSA0MDAsIGVhc2luZyA9IGxpbmVhciB9ID0ge30pIHtcbiAgICBjb25zdCBvID0gK2dldENvbXB1dGVkU3R5bGUobm9kZSkub3BhY2l0eTtcbiAgICByZXR1cm4ge1xuICAgICAgICBkZWxheSxcbiAgICAgICAgZHVyYXRpb24sXG4gICAgICAgIGVhc2luZyxcbiAgICAgICAgY3NzOiB0ID0+IGBvcGFjaXR5OiAke3QgKiBvfWBcbiAgICB9O1xufVxuZnVuY3Rpb24gZmx5KG5vZGUsIHsgZGVsYXkgPSAwLCBkdXJhdGlvbiA9IDQwMCwgZWFzaW5nID0gY3ViaWNPdXQsIHggPSAwLCB5ID0gMCwgb3BhY2l0eSA9IDAgfSA9IHt9KSB7XG4gICAgY29uc3Qgc3R5bGUgPSBnZXRDb21wdXRlZFN0eWxlKG5vZGUpO1xuICAgIGNvbnN0IHRhcmdldF9vcGFjaXR5ID0gK3N0eWxlLm9wYWNpdHk7XG4gICAgY29uc3QgdHJhbnNmb3JtID0gc3R5bGUudHJhbnNmb3JtID09PSAnbm9uZScgPyAnJyA6IHN0eWxlLnRyYW5zZm9ybTtcbiAgICBjb25zdCBvZCA9IHRhcmdldF9vcGFjaXR5ICogKDEgLSBvcGFjaXR5KTtcbiAgICBjb25zdCBbeFZhbHVlLCB4VW5pdF0gPSBzcGxpdF9jc3NfdW5pdCh4KTtcbiAgICBjb25zdCBbeVZhbHVlLCB5VW5pdF0gPSBzcGxpdF9jc3NfdW5pdCh5KTtcbiAgICByZXR1cm4ge1xuICAgICAgICBkZWxheSxcbiAgICAgICAgZHVyYXRpb24sXG4gICAgICAgIGVhc2luZyxcbiAgICAgICAgY3NzOiAodCwgdSkgPT4gYFxuXHRcdFx0dHJhbnNmb3JtOiAke3RyYW5zZm9ybX0gdHJhbnNsYXRlKCR7KDEgLSB0KSAqIHhWYWx1ZX0ke3hVbml0fSwgJHsoMSAtIHQpICogeVZhbHVlfSR7eVVuaXR9KTtcblx0XHRcdG9wYWNpdHk6ICR7dGFyZ2V0X29wYWNpdHkgLSAob2QgKiB1KX1gXG4gICAgfTtcbn1cbmZ1bmN0aW9uIHNsaWRlKG5vZGUsIHsgZGVsYXkgPSAwLCBkdXJhdGlvbiA9IDQwMCwgZWFzaW5nID0gY3ViaWNPdXQsIGF4aXMgPSAneScgfSA9IHt9KSB7XG4gICAgY29uc3Qgc3R5bGUgPSBnZXRDb21wdXRlZFN0eWxlKG5vZGUpO1xuICAgIGNvbnN0IG9wYWNpdHkgPSArc3R5bGUub3BhY2l0eTtcbiAgICBjb25zdCBwcmltYXJ5X3Byb3BlcnR5ID0gYXhpcyA9PT0gJ3knID8gJ2hlaWdodCcgOiAnd2lkdGgnO1xuICAgIGNvbnN0IHByaW1hcnlfcHJvcGVydHlfdmFsdWUgPSBwYXJzZUZsb2F0KHN0eWxlW3ByaW1hcnlfcHJvcGVydHldKTtcbiAgICBjb25zdCBzZWNvbmRhcnlfcHJvcGVydGllcyA9IGF4aXMgPT09ICd5JyA/IFsndG9wJywgJ2JvdHRvbSddIDogWydsZWZ0JywgJ3JpZ2h0J107XG4gICAgY29uc3QgY2FwaXRhbGl6ZWRfc2Vjb25kYXJ5X3Byb3BlcnRpZXMgPSBzZWNvbmRhcnlfcHJvcGVydGllcy5tYXAoKGUpID0+IGAke2VbMF0udG9VcHBlckNhc2UoKX0ke2Uuc2xpY2UoMSl9YCk7XG4gICAgY29uc3QgcGFkZGluZ19zdGFydF92YWx1ZSA9IHBhcnNlRmxvYXQoc3R5bGVbYHBhZGRpbmcke2NhcGl0YWxpemVkX3NlY29uZGFyeV9wcm9wZXJ0aWVzWzBdfWBdKTtcbiAgICBjb25zdCBwYWRkaW5nX2VuZF92YWx1ZSA9IHBhcnNlRmxvYXQoc3R5bGVbYHBhZGRpbmcke2NhcGl0YWxpemVkX3NlY29uZGFyeV9wcm9wZXJ0aWVzWzFdfWBdKTtcbiAgICBjb25zdCBtYXJnaW5fc3RhcnRfdmFsdWUgPSBwYXJzZUZsb2F0KHN0eWxlW2BtYXJnaW4ke2NhcGl0YWxpemVkX3NlY29uZGFyeV9wcm9wZXJ0aWVzWzBdfWBdKTtcbiAgICBjb25zdCBtYXJnaW5fZW5kX3ZhbHVlID0gcGFyc2VGbG9hdChzdHlsZVtgbWFyZ2luJHtjYXBpdGFsaXplZF9zZWNvbmRhcnlfcHJvcGVydGllc1sxXX1gXSk7XG4gICAgY29uc3QgYm9yZGVyX3dpZHRoX3N0YXJ0X3ZhbHVlID0gcGFyc2VGbG9hdChzdHlsZVtgYm9yZGVyJHtjYXBpdGFsaXplZF9zZWNvbmRhcnlfcHJvcGVydGllc1swXX1XaWR0aGBdKTtcbiAgICBjb25zdCBib3JkZXJfd2lkdGhfZW5kX3ZhbHVlID0gcGFyc2VGbG9hdChzdHlsZVtgYm9yZGVyJHtjYXBpdGFsaXplZF9zZWNvbmRhcnlfcHJvcGVydGllc1sxXX1XaWR0aGBdKTtcbiAgICByZXR1cm4ge1xuICAgICAgICBkZWxheSxcbiAgICAgICAgZHVyYXRpb24sXG4gICAgICAgIGVhc2luZyxcbiAgICAgICAgY3NzOiB0ID0+ICdvdmVyZmxvdzogaGlkZGVuOycgK1xuICAgICAgICAgICAgYG9wYWNpdHk6ICR7TWF0aC5taW4odCAqIDIwLCAxKSAqIG9wYWNpdHl9O2AgK1xuICAgICAgICAgICAgYCR7cHJpbWFyeV9wcm9wZXJ0eX06ICR7dCAqIHByaW1hcnlfcHJvcGVydHlfdmFsdWV9cHg7YCArXG4gICAgICAgICAgICBgcGFkZGluZy0ke3NlY29uZGFyeV9wcm9wZXJ0aWVzWzBdfTogJHt0ICogcGFkZGluZ19zdGFydF92YWx1ZX1weDtgICtcbiAgICAgICAgICAgIGBwYWRkaW5nLSR7c2Vjb25kYXJ5X3Byb3BlcnRpZXNbMV19OiAke3QgKiBwYWRkaW5nX2VuZF92YWx1ZX1weDtgICtcbiAgICAgICAgICAgIGBtYXJnaW4tJHtzZWNvbmRhcnlfcHJvcGVydGllc1swXX06ICR7dCAqIG1hcmdpbl9zdGFydF92YWx1ZX1weDtgICtcbiAgICAgICAgICAgIGBtYXJnaW4tJHtzZWNvbmRhcnlfcHJvcGVydGllc1sxXX06ICR7dCAqIG1hcmdpbl9lbmRfdmFsdWV9cHg7YCArXG4gICAgICAgICAgICBgYm9yZGVyLSR7c2Vjb25kYXJ5X3Byb3BlcnRpZXNbMF19LXdpZHRoOiAke3QgKiBib3JkZXJfd2lkdGhfc3RhcnRfdmFsdWV9cHg7YCArXG4gICAgICAgICAgICBgYm9yZGVyLSR7c2Vjb25kYXJ5X3Byb3BlcnRpZXNbMV19LXdpZHRoOiAke3QgKiBib3JkZXJfd2lkdGhfZW5kX3ZhbHVlfXB4O2BcbiAgICB9O1xufVxuZnVuY3Rpb24gc2NhbGUobm9kZSwgeyBkZWxheSA9IDAsIGR1cmF0aW9uID0gNDAwLCBlYXNpbmcgPSBjdWJpY091dCwgc3RhcnQgPSAwLCBvcGFjaXR5ID0gMCB9ID0ge30pIHtcbiAgICBjb25zdCBzdHlsZSA9IGdldENvbXB1dGVkU3R5bGUobm9kZSk7XG4gICAgY29uc3QgdGFyZ2V0X29wYWNpdHkgPSArc3R5bGUub3BhY2l0eTtcbiAgICBjb25zdCB0cmFuc2Zvcm0gPSBzdHlsZS50cmFuc2Zvcm0gPT09ICdub25lJyA/ICcnIDogc3R5bGUudHJhbnNmb3JtO1xuICAgIGNvbnN0IHNkID0gMSAtIHN0YXJ0O1xuICAgIGNvbnN0IG9kID0gdGFyZ2V0X29wYWNpdHkgKiAoMSAtIG9wYWNpdHkpO1xuICAgIHJldHVybiB7XG4gICAgICAgIGRlbGF5LFxuICAgICAgICBkdXJhdGlvbixcbiAgICAgICAgZWFzaW5nLFxuICAgICAgICBjc3M6IChfdCwgdSkgPT4gYFxuXHRcdFx0dHJhbnNmb3JtOiAke3RyYW5zZm9ybX0gc2NhbGUoJHsxIC0gKHNkICogdSl9KTtcblx0XHRcdG9wYWNpdHk6ICR7dGFyZ2V0X29wYWNpdHkgLSAob2QgKiB1KX1cblx0XHRgXG4gICAgfTtcbn1cbmZ1bmN0aW9uIGRyYXcobm9kZSwgeyBkZWxheSA9IDAsIHNwZWVkLCBkdXJhdGlvbiwgZWFzaW5nID0gY3ViaWNJbk91dCB9ID0ge30pIHtcbiAgICBsZXQgbGVuID0gbm9kZS5nZXRUb3RhbExlbmd0aCgpO1xuICAgIGNvbnN0IHN0eWxlID0gZ2V0Q29tcHV0ZWRTdHlsZShub2RlKTtcbiAgICBpZiAoc3R5bGUuc3Ryb2tlTGluZWNhcCAhPT0gJ2J1dHQnKSB7XG4gICAgICAgIGxlbiArPSBwYXJzZUludChzdHlsZS5zdHJva2VXaWR0aCk7XG4gICAgfVxuICAgIGlmIChkdXJhdGlvbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmIChzcGVlZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBkdXJhdGlvbiA9IDgwMDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGR1cmF0aW9uID0gbGVuIC8gc3BlZWQ7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZWxzZSBpZiAodHlwZW9mIGR1cmF0aW9uID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGR1cmF0aW9uID0gZHVyYXRpb24obGVuKTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgICAgZGVsYXksXG4gICAgICAgIGR1cmF0aW9uLFxuICAgICAgICBlYXNpbmcsXG4gICAgICAgIGNzczogKF8sIHUpID0+IGBcblx0XHRcdHN0cm9rZS1kYXNoYXJyYXk6ICR7bGVufTtcblx0XHRcdHN0cm9rZS1kYXNob2Zmc2V0OiAke3UgKiBsZW59O1xuXHRcdGBcbiAgICB9O1xufVxuZnVuY3Rpb24gY3Jvc3NmYWRlKF9hKSB7XG4gICAgdmFyIHsgZmFsbGJhY2sgfSA9IF9hLCBkZWZhdWx0cyA9IF9fcmVzdChfYSwgW1wiZmFsbGJhY2tcIl0pO1xuICAgIGNvbnN0IHRvX3JlY2VpdmUgPSBuZXcgTWFwKCk7XG4gICAgY29uc3QgdG9fc2VuZCA9IG5ldyBNYXAoKTtcbiAgICBmdW5jdGlvbiBjcm9zc2ZhZGUoZnJvbV9ub2RlLCBub2RlLCBwYXJhbXMpIHtcbiAgICAgICAgY29uc3QgeyBkZWxheSA9IDAsIGR1cmF0aW9uID0gZCA9PiBNYXRoLnNxcnQoZCkgKiAzMCwgZWFzaW5nID0gY3ViaWNPdXQgfSA9IGFzc2lnbihhc3NpZ24oe30sIGRlZmF1bHRzKSwgcGFyYW1zKTtcbiAgICAgICAgY29uc3QgZnJvbSA9IGZyb21fbm9kZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgY29uc3QgdG8gPSBub2RlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICBjb25zdCBkeCA9IGZyb20ubGVmdCAtIHRvLmxlZnQ7XG4gICAgICAgIGNvbnN0IGR5ID0gZnJvbS50b3AgLSB0by50b3A7XG4gICAgICAgIGNvbnN0IGR3ID0gZnJvbS53aWR0aCAvIHRvLndpZHRoO1xuICAgICAgICBjb25zdCBkaCA9IGZyb20uaGVpZ2h0IC8gdG8uaGVpZ2h0O1xuICAgICAgICBjb25zdCBkID0gTWF0aC5zcXJ0KGR4ICogZHggKyBkeSAqIGR5KTtcbiAgICAgICAgY29uc3Qgc3R5bGUgPSBnZXRDb21wdXRlZFN0eWxlKG5vZGUpO1xuICAgICAgICBjb25zdCB0cmFuc2Zvcm0gPSBzdHlsZS50cmFuc2Zvcm0gPT09ICdub25lJyA/ICcnIDogc3R5bGUudHJhbnNmb3JtO1xuICAgICAgICBjb25zdCBvcGFjaXR5ID0gK3N0eWxlLm9wYWNpdHk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBkZWxheSxcbiAgICAgICAgICAgIGR1cmF0aW9uOiBpc19mdW5jdGlvbihkdXJhdGlvbikgPyBkdXJhdGlvbihkKSA6IGR1cmF0aW9uLFxuICAgICAgICAgICAgZWFzaW5nLFxuICAgICAgICAgICAgY3NzOiAodCwgdSkgPT4gYFxuXHRcdFx0XHRvcGFjaXR5OiAke3QgKiBvcGFjaXR5fTtcblx0XHRcdFx0dHJhbnNmb3JtLW9yaWdpbjogdG9wIGxlZnQ7XG5cdFx0XHRcdHRyYW5zZm9ybTogJHt0cmFuc2Zvcm19IHRyYW5zbGF0ZSgke3UgKiBkeH1weCwke3UgKiBkeX1weCkgc2NhbGUoJHt0ICsgKDEgLSB0KSAqIGR3fSwgJHt0ICsgKDEgLSB0KSAqIGRofSk7XG5cdFx0XHRgXG4gICAgICAgIH07XG4gICAgfVxuICAgIGZ1bmN0aW9uIHRyYW5zaXRpb24oaXRlbXMsIGNvdW50ZXJwYXJ0cywgaW50cm8pIHtcbiAgICAgICAgcmV0dXJuIChub2RlLCBwYXJhbXMpID0+IHtcbiAgICAgICAgICAgIGl0ZW1zLnNldChwYXJhbXMua2V5LCBub2RlKTtcbiAgICAgICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGNvdW50ZXJwYXJ0cy5oYXMocGFyYW1zLmtleSkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgb3RoZXJfbm9kZSA9IGNvdW50ZXJwYXJ0cy5nZXQocGFyYW1zLmtleSk7XG4gICAgICAgICAgICAgICAgICAgIGNvdW50ZXJwYXJ0cy5kZWxldGUocGFyYW1zLmtleSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjcm9zc2ZhZGUob3RoZXJfbm9kZSwgbm9kZSwgcGFyYW1zKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gaWYgdGhlIG5vZGUgaXMgZGlzYXBwZWFyaW5nIGFsdG9nZXRoZXJcbiAgICAgICAgICAgICAgICAvLyAoaS5lLiB3YXNuJ3QgY2xhaW1lZCBieSB0aGUgb3RoZXIgbGlzdClcbiAgICAgICAgICAgICAgICAvLyB0aGVuIHdlIG5lZWQgdG8gc3VwcGx5IGFuIG91dHJvXG4gICAgICAgICAgICAgICAgaXRlbXMuZGVsZXRlKHBhcmFtcy5rZXkpO1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxsYmFjayAmJiBmYWxsYmFjayhub2RlLCBwYXJhbXMsIGludHJvKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBbXG4gICAgICAgIHRyYW5zaXRpb24odG9fc2VuZCwgdG9fcmVjZWl2ZSwgZmFsc2UpLFxuICAgICAgICB0cmFuc2l0aW9uKHRvX3JlY2VpdmUsIHRvX3NlbmQsIHRydWUpXG4gICAgXTtcbn1cblxuZXhwb3J0IHsgYmx1ciwgY3Jvc3NmYWRlLCBkcmF3LCBmYWRlLCBmbHksIHNjYWxlLCBzbGlkZSB9O1xuIiwiPCEtLSBzdmVsdGUtaWdub3JlIG1pc3NpbmctZGVjbGFyYXRpb24gLS0+XG48c3ZlbHRlOm9wdGlvbnMgdGFnPVwiY2FtZXJhLWJ0blwiIC8+XG5cbjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIGltcG9ydCB7IHN3YXBDYW1lcmEgfSBmcm9tICcuL2NvbmZTdG9yZSc7XG4gIGltcG9ydCBDb25mTW9kYWwgZnJvbSAnLi9Db25mTW9kYWwuc3ZlbHRlJztcbiAgaW1wb3J0IHsgY2FtZXJhRGV2aWNlc1N0b3JlIH0gZnJvbSAnLi4vZmFjZVRhYi9mYWNlU3RvcmUnO1xuICBleHBvcnQgbGV0IGNsYXNzTmFtZSA9ICcnO1xuPC9zY3JpcHQ+XG5cbjxDb25mTW9kYWwgLz5cblxuPCEtLSBzdmVsdGUtaWdub3JlIGExMXktY2xpY2stZXZlbnRzLWhhdmUta2V5LWV2ZW50cyAtLT5cbjxkaXZcbiAgb246Y2xpY2s9eygpID0+IHtcbiAgICAkc3dhcENhbWVyYSA9ICEkc3dhcENhbWVyYTtcbiAgfX1cbiAgY2xhc3M9XCJjZS1kdWktZHJvcGRvd24gY2UtZHVpLWRyb3Bkb3duLXRvcCBhYnNvbHV0ZSB6LTEwIHJpZ2h0LTAgc206YmxvY2sge2NsYXNzTmFtZX1cIlxuPlxuICA8IS0tIHN2ZWx0ZS1pZ25vcmUgYTExeS1sYWJlbC1oYXMtYXNzb2NpYXRlZC1jb250cm9sIC0tPlxuICA8IS0tIHN2ZWx0ZS1pZ25vcmUgYTExeS1uby1ub25pbnRlcmFjdGl2ZS10YWJpbmRleCAtLT5cbiAgPGxhYmVsIHRhYmluZGV4PVwiMFwiIGhpZGRlbj17JGNhbWVyYURldmljZXNTdG9yZS5sZW5ndGggPT0gMX0gIGNsYXNzPVwiY2UtZHVpLWJ0biBjZS1kdWktYnRuLWdob3N0IG0tMVwiXG4gICAgPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiM2VtXCIgaGVpZ2h0PVwiM2VtXCIgdmlld0JveD1cIjAgMCAyNTYgMjU2XCIgey4uLiQkcHJvcHN9PlxuICAgICAgPHBhdGhcbiAgICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiXG4gICAgICAgIGQ9XCJNMjA4IDU2aC0yNy43MmwtMTMuNjMtMjAuNDRBOCA4IDAgMCAwIDE2MCAzMkg5NmE4IDggMCAwIDAtNi42NSAzLjU2TDc1LjcxIDU2SDQ4YTI0IDI0IDAgMCAwLTI0IDI0djExMmEyNCAyNCAwIDAgMCAyNCAyNGgxNjBhMjQgMjQgMCAwIDAgMjQtMjRWODBhMjQgMjQgMCAwIDAtMjQtMjRtLTUxLjE5IDExMC40QTQ4LjIxIDQ4LjIxIDAgMCAxIDk2IDE2My43N1YxNjhhOCA4IDAgMCAxLTE2IDB2LTI0YTggOCAwIDAgMSA4LThoMjRhOCA4IDAgMCAxIDAgMTZoLTUuMTVhMzIuMTIgMzIuMTIgMCAwIDAgNDAuMzQgMS42MWE4IDggMCAwIDEgOS42MiAxMi43OU0xNzYgMTIwYTggOCAwIDAgMS04IDhoLTI0YTggOCAwIDAgMSAwLTE2aDUuMTVhMzIuMTIgMzIuMTIgMCAwIDAtNDAuMzQtMS42MWE4IDggMCAwIDEtOS42Mi0xMi43OWE0OC4yMSA0OC4yMSAwIDAgMSA2MC44MSAyLjYzVjk2YTggOCAwIDAgMSAxNiAwWlwiXG4gICAgICAvPlxuICAgIDwvc3ZnPjwvbGFiZWxcbiAgPlxuPC9kaXY+XG4iXSwibmFtZXMiOlsiQ2FtZXJhU3RhdHVzRW51bSIsImNhbWVyYVN0YXR1c1N0b3JlIiwid3JpdGFibGUiLCJjdHgiLCJpbnNlcnRfZGV2IiwidGFyZ2V0Iiwic3ZnIiwiYW5jaG9yIiwiYXBwZW5kX2RldiIsInBhdGgiLCJzcGFuMCIsInNwYW4xIiwiYnV0dG9uIiwiY3JlYXRlX2lmX2Jsb2NrIiwiY3JlYXRlX2lmX2Jsb2NrXzEiLCJjcmVhdGVfaWZfYmxvY2tfMiIsImNyZWF0ZV9pZl9ibG9ja18zIiwiY3JlYXRlX2lmX2Jsb2NrXzQiLCJjcmVhdGVfaWZfYmxvY2tfNSIsImNyZWF0ZV9pZl9ibG9ja182IiwiZGl2IiwiaGFuZGxlciIsImxvY2tTY3JlZW4iLCJmYWRlIiwibm9kZSIsImRlbGF5IiwiZHVyYXRpb24iLCJlYXNpbmciLCJsaW5lYXIiLCJvIiwidCIsImxhYmVsIiwiY2xhc3NOYW1lIiwiJCRwcm9wcyIsInNldF9zdG9yZV92YWx1ZSIsInN3YXBDYW1lcmEiLCIkc3dhcENhbWVyYSJdLCJtYXBwaW5ncyI6IjtBQUVrQixJQUFBQSxzQkFBQUEsT0FDaEJBLEVBQUEsS0FBSyxNQUNMQSxFQUFBLHlCQUF5QiwwQkFDekJBLEVBQUEsc0JBQXNCLHVCQUN0QkEsRUFBQSxzQkFBc0IsdUJBQ3RC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