@projectcor/maia-components 2.11.11-7 → 2.11.12-0
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/lib/App.js +20 -10
- package/lib/components/atoms/ApprovalBox/ApprovalBox.js +5 -87
- package/lib/components/atoms/ChatClientSelector/ChatClientSelector.js +2 -1
- package/lib/components/atoms/EntitySelector/EntitySelector.js +19 -5
- package/lib/components/atoms/EntitySelector/EntitySelector.styles.js +8 -2
- package/lib/components/atoms/EntitySelector/index.js +1 -1
- package/lib/components/atoms/ProjectSelector/ProjectSelector.js +2 -1
- package/lib/components/molecules/ChatAIClientSelector/ChatAIClientSelector.js +2 -8
- package/lib/components/molecules/ChatAIContent/ChatAIContent.js +60 -3
- package/lib/components/molecules/ChatAIContent/EphemeralHome/EphemeralHome.js +68 -0
- package/lib/components/molecules/ChatAIContent/EphemeralHome/EphemeralHome.styles.js +50 -0
- package/lib/components/molecules/ChatAIContent/EphemeralHome/index.js +2 -0
- package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +1 -1
- package/lib/components/molecules/ChatAIModal/ChatAIModal.js +24 -12
- package/lib/components/molecules/ChatAIModal/ChatAIModal.styles.js +10 -4
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.js +31 -3
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.styles.js +21 -17
- package/lib/components/molecules/ChatAIModal/components/EphemeralBackBar/EphemeralBackBar.js +24 -0
- package/lib/components/molecules/ChatAIModal/components/EphemeralBackBar/EphemeralBackBar.styles.js +14 -0
- package/lib/components/molecules/ChatAIModal/components/EphemeralBackBar/index.js +2 -0
- package/lib/components/molecules/Sidebar/Sidebar.js +8 -2
- package/lib/components/organisms/ChatAI/ChatAI.js +6 -1
- package/lib/constants/config.js +4 -2
- package/lib/context/global-context.js +1 -1
- package/lib/dev/DevChatAIEphemeral.js +33 -0
- package/lib/hooks/useChatManager/useChatManager.interface.js +1 -1
- package/lib/hooks/useChatManager/useChatManager.js +28 -15
- package/lib/hooks/useChatMessages/useChatMessages.js +136 -158
- package/lib/hooks/useChats/useChats.js +10 -6
- package/lib/hooks/useOrchestratorStream/useOrchestratorStream.js +36 -13
- package/lib/hooks/useProjectSearch.js +15 -8
- package/lib/hooks/useProjectSummaryConfig.js +27 -7
- package/lib/hooks/useRecentClientsSearch.js +15 -11
- package/lib/hooks/useSectionActions.js +72 -0
- package/lib/lang/br/index.js +16 -3
- package/lib/lang/en/index.js +16 -3
- package/lib/lang/es/index.js +14 -1
- package/lib/services/maia/Actions/getActionsBySection.js +59 -0
- package/lib/services/maia/Actions/index.js +5 -0
- package/lib/services/maia/Agents/getAgents.js +76 -58
- package/lib/services/maia/Chats/getChatMessages.js +5 -4
- package/lib/services/maia/Chats/getChatsByUserId.js +4 -3
- package/lib/services/maia/Orchestrator/index.js +3 -2
- package/lib/services/maia/Orchestrator/orchestrator.js +27 -1
- package/lib/store/chatsStore.types.js +1 -1
- package/lib/store/useChatsStore.js +9 -7
- package/lib/types/SectionAction.js +2 -0
- package/package.json +1 -1
|
@@ -18,6 +18,7 @@ import { useTranslation } from 'react-i18next';
|
|
|
18
18
|
import { useSnackBarManager } from '../../../hooks/useSnackBarManager/useSnackBarManager';
|
|
19
19
|
import { fetchMaia } from '../client';
|
|
20
20
|
import { useUser, CORUserRole } from '../../../context/cor-user';
|
|
21
|
+
import { mapCORLang } from '../../../lang/utils';
|
|
21
22
|
|
|
22
23
|
/**
|
|
23
24
|
* Ordena los agentes: agentes clone primero (si existen), luego favoritos alfabéticamente, luego no favoritos alfabéticamente
|
|
@@ -197,42 +198,59 @@ export var useGetAgents = function useGetAgents(_ref) {
|
|
|
197
198
|
lastRequestRef.current = requestKey;
|
|
198
199
|
setLoading(true);
|
|
199
200
|
setError(null);
|
|
201
|
+
|
|
202
|
+
// En modo ephemeral no consultamos agentes (no hay selector de agente).
|
|
203
|
+
if (!(section === 'ephemeral')) {
|
|
204
|
+
_context.next = 3;
|
|
205
|
+
break;
|
|
206
|
+
}
|
|
207
|
+
setAgents({
|
|
208
|
+
data: [],
|
|
209
|
+
has_more: false,
|
|
210
|
+
next_offset: null
|
|
211
|
+
});
|
|
212
|
+
setLoading(false);
|
|
213
|
+
setError(null);
|
|
214
|
+
isRefreshingRef.current = false;
|
|
215
|
+
lastRequestRef.current = null;
|
|
216
|
+
return _context.abrupt("return");
|
|
217
|
+
case 3:
|
|
200
218
|
isMultiAgents = !!window.MAIA_CHAT_AI_FEATURE_ACCESS && !!window.MAIA_CHAT_AI_FEATURE_ACCESS_MULTI_AGENTS;
|
|
201
|
-
_context.prev =
|
|
219
|
+
_context.prev = 4;
|
|
202
220
|
agentParsed = [];
|
|
203
221
|
hasMore = false;
|
|
204
222
|
nextOffset = null; // Si tiene feature access multi agents, hacer dos queries (Maia + custom) en cualquier sección
|
|
205
223
|
if (!isMultiAgents) {
|
|
206
|
-
_context.next =
|
|
224
|
+
_context.next = 17;
|
|
207
225
|
break;
|
|
208
226
|
}
|
|
209
227
|
// Query 1: Agentes clone (Maia) - Solo para roles permitidos. Pueden venir múltiples agentes tipo clone
|
|
210
228
|
cloneAgents = [];
|
|
211
229
|
if (userRolesDisabled.includes(user.role_id)) {
|
|
212
|
-
_context.next =
|
|
230
|
+
_context.next = 10;
|
|
213
231
|
break;
|
|
214
232
|
}
|
|
215
|
-
_context.prev =
|
|
233
|
+
_context.prev = 5;
|
|
216
234
|
orderParam = section === 'client' ? '&order=client,project' : section === 'project' ? '&order=project,client' : '';
|
|
217
|
-
_context.next =
|
|
235
|
+
_context.next = 6;
|
|
218
236
|
return fetchMaia({
|
|
219
|
-
path: "agents?agent_type=clone&lang=".concat(i18n.language).concat(orderParam),
|
|
237
|
+
path: "agents?agent_type=clone&lang=".concat(mapCORLang(i18n.language)).concat(orderParam),
|
|
220
238
|
method: 'GET'
|
|
221
239
|
});
|
|
222
|
-
case
|
|
240
|
+
case 6:
|
|
223
241
|
maiaResponse = _context.sent;
|
|
224
|
-
_context.next =
|
|
242
|
+
_context.next = 7;
|
|
225
243
|
return maiaResponse.json();
|
|
226
|
-
case
|
|
244
|
+
case 7:
|
|
227
245
|
maiaData = _context.sent;
|
|
228
246
|
cloneAgents = ((_maiaData$data = maiaData.data) === null || _maiaData$data === void 0 ? void 0 : _maiaData$data.filter(function (ag) {
|
|
229
247
|
return ag.type === 'clone';
|
|
230
248
|
})) || [];
|
|
231
|
-
_context.next =
|
|
249
|
+
_context.next = 10;
|
|
232
250
|
break;
|
|
233
|
-
case
|
|
234
|
-
_context.prev =
|
|
235
|
-
_t = _context["catch"](
|
|
251
|
+
case 8:
|
|
252
|
+
_context.prev = 8;
|
|
253
|
+
_t = _context["catch"](5);
|
|
236
254
|
// Verificar si el error es 403
|
|
237
255
|
// fetchCOR puede lanzar diferentes tipos de errores:
|
|
238
256
|
// 1. Error con errorData.detail si incluye 'Access denied'
|
|
@@ -240,38 +258,38 @@ export var useGetAgents = function useGetAgents(_ref) {
|
|
|
240
258
|
// 3. Necesitamos verificar el status code si está disponible
|
|
241
259
|
is403Error = (_t === null || _t === void 0 || (_maiaError$response = _t.response) === null || _maiaError$response === void 0 ? void 0 : _maiaError$response.status) === 403 || (_t === null || _t === void 0 ? void 0 : _t.status) === 403 || (_t === null || _t === void 0 || (_maiaError$message = _t.message) === null || _maiaError$message === void 0 ? void 0 : _maiaError$message.includes("You don't have permission to view agents")) || (_t === null || _t === void 0 || (_maiaError$message2 = _t.message) === null || _maiaError$message2 === void 0 ? void 0 : _maiaError$message2.includes('Failed fetching data')); // fetchCOR lanza esto para 403 sin 'Access denied'
|
|
242
260
|
if (!is403Error) {
|
|
243
|
-
_context.next =
|
|
261
|
+
_context.next = 9;
|
|
244
262
|
break;
|
|
245
263
|
}
|
|
246
|
-
_context.next =
|
|
264
|
+
_context.next = 10;
|
|
247
265
|
break;
|
|
248
|
-
case 8:
|
|
249
|
-
throw _t;
|
|
250
266
|
case 9:
|
|
267
|
+
throw _t;
|
|
268
|
+
case 10:
|
|
251
269
|
// Query 2: Agentes custom con paginación
|
|
252
270
|
customAgents = [];
|
|
253
271
|
customHasMore = false;
|
|
254
272
|
customNextOffset = null;
|
|
255
|
-
_context.prev =
|
|
256
|
-
_context.next =
|
|
273
|
+
_context.prev = 11;
|
|
274
|
+
_context.next = 12;
|
|
257
275
|
return fetchMaia({
|
|
258
276
|
path: 'agents?agent_type=custom&limit=7&offset=0',
|
|
259
277
|
method: 'GET'
|
|
260
278
|
});
|
|
261
|
-
case
|
|
279
|
+
case 12:
|
|
262
280
|
customResponse = _context.sent;
|
|
263
|
-
_context.next =
|
|
281
|
+
_context.next = 13;
|
|
264
282
|
return customResponse.json();
|
|
265
|
-
case
|
|
283
|
+
case 13:
|
|
266
284
|
customData = _context.sent;
|
|
267
285
|
customAgents = customData.data || [];
|
|
268
286
|
customHasMore = customData.has_more || false;
|
|
269
287
|
customNextOffset = customData.next_offset || null;
|
|
270
|
-
_context.next =
|
|
288
|
+
_context.next = 16;
|
|
271
289
|
break;
|
|
272
|
-
case
|
|
273
|
-
_context.prev =
|
|
274
|
-
_t2 = _context["catch"](
|
|
290
|
+
case 14:
|
|
291
|
+
_context.prev = 14;
|
|
292
|
+
_t2 = _context["catch"](11);
|
|
275
293
|
// Verificar si el error es 403
|
|
276
294
|
// fetchCOR puede lanzar diferentes tipos de errores:
|
|
277
295
|
// 1. Error con errorData.detail si incluye 'Access denied'
|
|
@@ -279,14 +297,14 @@ export var useGetAgents = function useGetAgents(_ref) {
|
|
|
279
297
|
// 3. Necesitamos verificar el status code si está disponible
|
|
280
298
|
_is403Error = (_t2 === null || _t2 === void 0 || (_customError$response = _t2.response) === null || _customError$response === void 0 ? void 0 : _customError$response.status) === 403 || (_t2 === null || _t2 === void 0 ? void 0 : _t2.status) === 403 || (_t2 === null || _t2 === void 0 || (_customError$message = _t2.message) === null || _customError$message === void 0 ? void 0 : _customError$message.includes("You don't have permission to view agents")) || (_t2 === null || _t2 === void 0 || (_customError$message2 = _t2.message) === null || _customError$message2 === void 0 ? void 0 : _customError$message2.includes('Failed fetching data')); // fetchCOR lanza esto para 403 sin 'Access denied'
|
|
281
299
|
if (!_is403Error) {
|
|
282
|
-
_context.next =
|
|
300
|
+
_context.next = 15;
|
|
283
301
|
break;
|
|
284
302
|
}
|
|
285
|
-
_context.next =
|
|
303
|
+
_context.next = 16;
|
|
286
304
|
break;
|
|
287
|
-
case 14:
|
|
288
|
-
throw _t2;
|
|
289
305
|
case 15:
|
|
306
|
+
throw _t2;
|
|
307
|
+
case 16:
|
|
290
308
|
// Combinar: agentes clone primero, luego los custom (si existen)
|
|
291
309
|
// Si el usuario tiene un rol deshabilitado, no incluir cloneAgents
|
|
292
310
|
if (userRolesDisabled.includes(user.role_id)) {
|
|
@@ -314,35 +332,35 @@ export var useGetAgents = function useGetAgents(_ref) {
|
|
|
314
332
|
if (agentParsed.length === 0) {
|
|
315
333
|
setError(null);
|
|
316
334
|
}
|
|
317
|
-
_context.next =
|
|
335
|
+
_context.next = 23;
|
|
318
336
|
break;
|
|
319
|
-
case
|
|
337
|
+
case 17:
|
|
320
338
|
// Lógica para project o header sin multiAgents
|
|
321
339
|
queryParams = new URLSearchParams();
|
|
322
340
|
if (section === 'project' || section === 'client') {
|
|
323
341
|
queryParams.append('agent_type', 'clone');
|
|
324
|
-
queryParams.append('lang', i18n.language);
|
|
342
|
+
queryParams.append('lang', mapCORLang(i18n.language));
|
|
325
343
|
queryParams.append('order', section === 'client' ? 'client,project' : 'project,client');
|
|
326
344
|
} else if (section === 'header' && !isMultiAgents) {
|
|
327
345
|
// Header sin multiAgents: solo listar agentes clone (Maia)
|
|
328
346
|
queryParams.append('agent_type', 'clone');
|
|
329
|
-
queryParams.append('lang', i18n.language);
|
|
347
|
+
queryParams.append('lang', mapCORLang(i18n.language));
|
|
330
348
|
queryParams.append('limit', '7');
|
|
331
349
|
queryParams.append('offset', '0');
|
|
332
350
|
}
|
|
333
351
|
queryString = queryParams.toString();
|
|
334
352
|
path = "agents".concat(queryString ? "?".concat(queryString) : '');
|
|
335
|
-
_context.prev =
|
|
336
|
-
_context.next =
|
|
353
|
+
_context.prev = 18;
|
|
354
|
+
_context.next = 19;
|
|
337
355
|
return fetchMaia({
|
|
338
356
|
path: path,
|
|
339
357
|
method: 'GET'
|
|
340
358
|
});
|
|
341
|
-
case
|
|
359
|
+
case 19:
|
|
342
360
|
response = _context.sent;
|
|
343
|
-
_context.next =
|
|
361
|
+
_context.next = 20;
|
|
344
362
|
return response.json();
|
|
345
|
-
case
|
|
363
|
+
case 20:
|
|
346
364
|
data = _context.sent;
|
|
347
365
|
// data.data ya contiene todos los agentes clone de la query agent_type=clone
|
|
348
366
|
agentParsed = data.data || [];
|
|
@@ -353,11 +371,11 @@ export var useGetAgents = function useGetAgents(_ref) {
|
|
|
353
371
|
setAgents(_objectSpread(_objectSpread({}, data), {}, {
|
|
354
372
|
data: agentParsed
|
|
355
373
|
}));
|
|
356
|
-
_context.next =
|
|
374
|
+
_context.next = 23;
|
|
357
375
|
break;
|
|
358
|
-
case
|
|
359
|
-
_context.prev =
|
|
360
|
-
_t3 = _context["catch"](
|
|
376
|
+
case 21:
|
|
377
|
+
_context.prev = 21;
|
|
378
|
+
_t3 = _context["catch"](18);
|
|
361
379
|
// Verificar si el error es 403
|
|
362
380
|
// fetchCOR puede lanzar diferentes tipos de errores:
|
|
363
381
|
// 1. Error con errorData.detail si incluye 'Access denied'
|
|
@@ -365,7 +383,7 @@ export var useGetAgents = function useGetAgents(_ref) {
|
|
|
365
383
|
// 3. Necesitamos verificar el status code si está disponible
|
|
366
384
|
_is403Error2 = (_t3 === null || _t3 === void 0 || (_responseError$respon = _t3.response) === null || _responseError$respon === void 0 ? void 0 : _responseError$respon.status) === 403 || (_t3 === null || _t3 === void 0 ? void 0 : _t3.status) === 403 || (_t3 === null || _t3 === void 0 || (_responseError$messag = _t3.message) === null || _responseError$messag === void 0 ? void 0 : _responseError$messag.includes("You don't have permission to view agents")) || (_t3 === null || _t3 === void 0 || (_responseError$messag2 = _t3.message) === null || _responseError$messag2 === void 0 ? void 0 : _responseError$messag2.includes('Failed fetching data')); // fetchCOR lanza esto para 403 sin 'Access denied'
|
|
367
385
|
if (!_is403Error2) {
|
|
368
|
-
_context.next =
|
|
386
|
+
_context.next = 22;
|
|
369
387
|
break;
|
|
370
388
|
}
|
|
371
389
|
// Si es 403, establecer agentes vacíos y continuar
|
|
@@ -376,11 +394,11 @@ export var useGetAgents = function useGetAgents(_ref) {
|
|
|
376
394
|
});
|
|
377
395
|
// Limpiar el error para que hasNoAgents pueda ser true y se muestre el emptyState
|
|
378
396
|
setError(null);
|
|
379
|
-
_context.next =
|
|
397
|
+
_context.next = 23;
|
|
380
398
|
break;
|
|
381
|
-
case 21:
|
|
382
|
-
throw _t3;
|
|
383
399
|
case 22:
|
|
400
|
+
throw _t3;
|
|
401
|
+
case 23:
|
|
384
402
|
// Lógica de select agent - Solo seleccionar si hay agentes disponibles
|
|
385
403
|
if (agentParsed.length > 0) {
|
|
386
404
|
if (agentToSelect && agentParsed.find(function (agentToRequest) {
|
|
@@ -413,27 +431,27 @@ export var useGetAgents = function useGetAgents(_ref) {
|
|
|
413
431
|
}
|
|
414
432
|
}
|
|
415
433
|
setLoading(false);
|
|
416
|
-
_context.next =
|
|
434
|
+
_context.next = 25;
|
|
417
435
|
break;
|
|
418
|
-
case 23:
|
|
419
|
-
_context.prev = 23;
|
|
420
|
-
_t4 = _context["catch"](3);
|
|
421
|
-
setError(_t4 instanceof Error ? _t4.message : 'An unknown error occurred');
|
|
422
|
-
setLoading(false);
|
|
423
436
|
case 24:
|
|
424
437
|
_context.prev = 24;
|
|
438
|
+
_t4 = _context["catch"](4);
|
|
439
|
+
setError(_t4 instanceof Error ? _t4.message : 'An unknown error occurred');
|
|
440
|
+
setLoading(false);
|
|
441
|
+
case 25:
|
|
442
|
+
_context.prev = 25;
|
|
425
443
|
isRefreshingRef.current = false;
|
|
426
444
|
setTimeout(function () {
|
|
427
445
|
if (!isRefreshingRef.current) {
|
|
428
446
|
lastRequestRef.current = null;
|
|
429
447
|
}
|
|
430
448
|
}, 100);
|
|
431
|
-
return _context.finish(
|
|
432
|
-
case
|
|
449
|
+
return _context.finish(25);
|
|
450
|
+
case 26:
|
|
433
451
|
case "end":
|
|
434
452
|
return _context.stop();
|
|
435
453
|
}
|
|
436
|
-
}, _callee, null, [[
|
|
454
|
+
}, _callee, null, [[4, 24, 25, 26], [5, 8], [11, 14], [18, 21]]);
|
|
437
455
|
}));
|
|
438
456
|
return function (_x) {
|
|
439
457
|
return _ref5.apply(this, arguments);
|
|
@@ -462,7 +480,7 @@ export var useGetAgents = function useGetAgents(_ref) {
|
|
|
462
480
|
// Si no es multiAgents, cargar más agentes clone (Maia)
|
|
463
481
|
queryParams = new URLSearchParams();
|
|
464
482
|
queryParams.append('agent_type', 'clone');
|
|
465
|
-
queryParams.append('lang', i18n.language);
|
|
483
|
+
queryParams.append('lang', mapCORLang(i18n.language));
|
|
466
484
|
queryParams.append('limit', '7');
|
|
467
485
|
queryParams.append('offset', agents.next_offset.toString());
|
|
468
486
|
path = "agents?".concat(queryParams.toString());
|
|
@@ -562,4 +580,4 @@ export var useGetAgents = function useGetAgents(_ref) {
|
|
|
562
580
|
sortAgentsList: sortAgentsList
|
|
563
581
|
};
|
|
564
582
|
};
|
|
565
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VTdGF0ZSIsInVzZUNhbGxiYWNrIiwidXNlUmVmIiwidXNlVHJhbnNsYXRpb24iLCJ1c2VTbmFja0Jhck1hbmFnZXIiLCJmZXRjaE1haWEiLCJ1c2VVc2VyIiwiQ09SVXNlclJvbGUiLCJzb3J0QWdlbnRzIiwiYWdlbnRzIiwiY2xvbmVBZ2VudHMiLCJmaWx0ZXIiLCJhZyIsInR5cGUiLCJvdGhlckFnZW50cyIsImZhdm9yaXRlcyIsImlzX2Zhdm9yaXRlIiwic29ydCIsImEiLCJiIiwibmFtZSIsImxvY2FsZUNvbXBhcmUiLCJub25GYXZvcml0ZXMiLCJsZW5ndGgiLCJjb25jYXQiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJ1c2VHZXRBZ2VudHMiLCJfcmVmIiwic2VsZWN0QWdlbnQiLCJzZWN0aW9uIiwiYWdlbnQiLCJoYW5kbGVHb0hvbWUiLCJ1c2VyIiwiX3VzZVN0YXRlIiwiZGF0YSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsInNldEFnZW50cyIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0IiwibG9hZGluZyIsInNldExvYWRpbmciLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsImxvYWRpbmdNb3JlIiwic2V0TG9hZGluZ01vcmUiLCJfdXNlU3RhdGU3IiwiX3VzZVN0YXRlOCIsImVycm9yIiwic2V0RXJyb3IiLCJfdXNlU25hY2tCYXJNYW5hZ2VyIiwiaGFuZGxlU25hY2tiYXJFcnJvciIsIl91c2VUcmFuc2xhdGlvbiIsInQiLCJpMThuIiwibGFzdFNlbGVjdGVkQWdlbnRSZWYiLCJpc1JlZnJlc2hpbmdSZWYiLCJsYXN0UmVxdWVzdFJlZiIsInVzZXJSb2xlc0Rpc2FibGVkIiwiQ09MTEFCT1JBVE9SIiwiRlJFRUxBTkNFUiIsIkNMSUVOVCIsImFkZEFnZW50IiwibmV3QWdlbnQiLCJwcmV2IiwiYWdlbnRFeGlzdHMiLCJzb21lIiwiZXhpc3RpbmdBZ2VudCIsImlkIiwibmV3RGF0YSIsInNvcnRlZERhdGEiLCJfb2JqZWN0U3ByZWFkIiwicmVtb3ZlQWdlbnQiLCJhZ2VudElkIiwidG9TdHJpbmciLCJ1cGRhdGVBZ2VudCIsInVwZGF0ZWRBZ2VudCIsInVwZGF0ZWREYXRhIiwibWFwIiwidXBkYXRlQWdlbnRGYXZvcml0ZSIsInNob3VsZFNvcnQiLCJhcmd1bWVudHMiLCJ1bmRlZmluZWQiLCJfcmVmMiIsIm1lc3NhZ2UiLCJhZ2VudEZpZWxkcyIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsIl9leGNsdWRlZCIsIm1lcmdlZEFnZW50IiwiZmluYWxEYXRhIiwiZmluZCIsIl9yZWYzIiwiX2V4Y2x1ZGVkMiIsIl9yZWY0IiwiX2V4Y2x1ZGVkMyIsInNvcnRBZ2VudHNMaXN0Iiwic2VsZWN0Rmlyc3RBZ2VudCIsImZpcnN0QWdlbnQiLCJmaW5kSW5kZXgiLCJhZ2VudERhdGEiLCJjdXJyZW50IiwiaGFuZGxlR2V0QWdlbnRzIiwiX3JlZjUiLCJfYXN5bmNUb0dlbmVyYXRvciIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJtYXJrIiwiX2NhbGxlZSIsImFnZW50VG9TZWxlY3QiLCJfYWdlbnRUb1NlbGVjdCRpZCIsInJlcXVlc3RLZXkiLCJpc011bHRpQWdlbnRzIiwiYWdlbnRQYXJzZWQiLCJoYXNNb3JlIiwibmV4dE9mZnNldCIsIl9tYWlhRGF0YSRkYXRhIiwib3JkZXJQYXJhbSIsIm1haWFSZXNwb25zZSIsIm1haWFEYXRhIiwiX21haWFFcnJvciRyZXNwb25zZSIsIl9tYWlhRXJyb3IkbWVzc2FnZSIsIl9tYWlhRXJyb3IkbWVzc2FnZTIiLCJpczQwM0Vycm9yIiwiY3VzdG9tQWdlbnRzIiwiY3VzdG9tSGFzTW9yZSIsImN1c3RvbU5leHRPZmZzZXQiLCJjdXN0b21SZXNwb25zZSIsImN1c3RvbURhdGEiLCJfY3VzdG9tRXJyb3IkcmVzcG9uc2UiLCJfY3VzdG9tRXJyb3IkbWVzc2FnZSIsIl9jdXN0b21FcnJvciRtZXNzYWdlMiIsIl9pczQwM0Vycm9yIiwicXVlcnlQYXJhbXMiLCJxdWVyeVN0cmluZyIsInBhdGgiLCJyZXNwb25zZSIsIl9yZXNwb25zZUVycm9yJHJlc3BvbiIsIl9yZXNwb25zZUVycm9yJG1lc3NhZyIsIl9yZXNwb25zZUVycm9yJG1lc3NhZzIiLCJfaXM0MDNFcnJvcjIiLCJfYWdlbnRQYXJzZWQiLCJfYWdlbnRQYXJzZWQyIiwiX2xhc3RTZWxlY3RlZEFnZW50UmVmIiwiX2xhc3RTZWxlY3RlZEFnZW50UmVmMiIsImF2YWlsYWJsZUFnZW50cyIsIl9hdmFpbGFibGVBZ2VudHMiLCJfbGFzdFNlbGVjdGVkQWdlbnRSZWYzIiwiX2F2YWlsYWJsZUFnZW50czIiLCJfYXZhaWxhYmxlQWdlbnRzMyIsImZpcnN0QXZhaWxhYmxlQWdlbnQiLCJfdCIsIl90MiIsIl90MyIsIl90NCIsIndyYXAiLCJfY29udGV4dCIsIm5leHQiLCJhYnJ1cHQiLCJ3aW5kb3ciLCJNQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1MiLCJNQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTIiwiaW5jbHVkZXMiLCJyb2xlX2lkIiwibGFuZ3VhZ2UiLCJtZXRob2QiLCJzZW50IiwianNvbiIsInN0YXR1cyIsImhhc19tb3JlIiwibmV4dF9vZmZzZXQiLCJVUkxTZWFyY2hQYXJhbXMiLCJhcHBlbmQiLCJhZ2VudFRvUmVxdWVzdCIsImFnZW50SXRlbSIsIkVycm9yIiwic2V0VGltZW91dCIsImZpbmlzaCIsInN0b3AiLCJfeCIsImFwcGx5IiwibG9hZE1vcmVBZ2VudHMiLCJfY2FsbGVlMiIsImNhbkxvYWRNb3JlIiwiX3Q1IiwiX2NvbnRleHQyIiwiZXhpc3RpbmdDbG9uZUFnZW50cyIsImV4aXN0aW5nSWRzIiwiU2V0IiwibmV3QWdlbnRzIiwiaGFzIiwiaGFzTm9BZ2VudHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvc2VydmljZXMvbWFpYS9BZ2VudHMvZ2V0QWdlbnRzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFycyAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tbmVzdGVkLXRlcm5hcnkgKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnNvbGUgKi9cbmltcG9ydCB7IHVzZVN0YXRlLCB1c2VDYWxsYmFjaywgdXNlUmVmIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gJ3JlYWN0LWkxOG5leHQnXG5pbXBvcnQgeyB1c2VTbmFja0Jhck1hbmFnZXIgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VTbmFja0Jhck1hbmFnZXIvdXNlU25hY2tCYXJNYW5hZ2VyJ1xuaW1wb3J0IHsgZmV0Y2hNYWlhIH0gZnJvbSAnLi4vY2xpZW50J1xuaW1wb3J0IHsgQWdlbnQgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9hZ2VudCdcbmltcG9ydCB7IHVzZVVzZXIsIENPUlVzZXJSb2xlIH0gZnJvbSAnLi4vLi4vLi4vY29udGV4dC9jb3ItdXNlcidcblxuLyoqXG4gKiBPcmRlbmEgbG9zIGFnZW50ZXM6IGFnZW50ZXMgY2xvbmUgcHJpbWVybyAoc2kgZXhpc3RlbiksIGx1ZWdvIGZhdm9yaXRvcyBhbGZhYsOpdGljYW1lbnRlLCBsdWVnbyBubyBmYXZvcml0b3MgYWxmYWLDqXRpY2FtZW50ZVxuICovXG5jb25zdCBzb3J0QWdlbnRzID0gKGFnZW50czogQWdlbnRbXSk6IEFnZW50W10gPT4ge1xuICAvLyBTZXBhcmFyIGFnZW50ZXMgY2xvbmUgZGVsIHJlc3RvXG4gIGNvbnN0IGNsb25lQWdlbnRzID0gYWdlbnRzLmZpbHRlcihhZyA9PiBhZy50eXBlID09PSAnY2xvbmUnKVxuICBjb25zdCBvdGhlckFnZW50cyA9IGFnZW50cy5maWx0ZXIoYWcgPT4gYWcudHlwZSAhPT0gJ2Nsb25lJylcblxuICAvLyBTZXBhcmFyIGZhdm9yaXRvcyB5IG5vIGZhdm9yaXRvc1xuICBjb25zdCBmYXZvcml0ZXMgPSBvdGhlckFnZW50cy5maWx0ZXIoYWcgPT4gYWcuaXNfZmF2b3JpdGUpLnNvcnQoKGEsIGIpID0+IGEubmFtZS5sb2NhbGVDb21wYXJlKGIubmFtZSkpXG4gIGNvbnN0IG5vbkZhdm9yaXRlcyA9IG90aGVyQWdlbnRzLmZpbHRlcihhZyA9PiAhYWcuaXNfZmF2b3JpdGUpLnNvcnQoKGEsIGIpID0+IGEubmFtZS5sb2NhbGVDb21wYXJlKGIubmFtZSkpXG5cbiAgLy8gQ29tYmluYXI6IGNsb25lcyBwcmltZXJvLCBsdWVnbyBmYXZvcml0b3MsIGx1ZWdvIG5vIGZhdm9yaXRvc1xuICByZXR1cm4gY2xvbmVBZ2VudHMubGVuZ3RoID8gWy4uLmNsb25lQWdlbnRzLCAuLi5mYXZvcml0ZXMsIC4uLm5vbkZhdm9yaXRlc10gOiBbLi4uZmF2b3JpdGVzLCAuLi5ub25GYXZvcml0ZXNdXG59XG5cbnR5cGUgVXNlR2V0QWdlbnRzUHJvcHMgPSB7XG4gIHNlbGVjdEFnZW50OiAoYWdlbnQ6IEFnZW50KSA9PiB2b2lkXG4gIHNlY3Rpb246ICdwcm9qZWN0JyB8ICdoZWFkZXInIHwgJ2NsaWVudCdcbiAgYWdlbnQ6IEFnZW50IHwgbnVsbFxuICBoYW5kbGVHb0hvbWU6ICgpID0+IHZvaWRcbn1cblxuZXhwb3J0IGNvbnN0IHVzZUdldEFnZW50cyA9ICh7IHNlbGVjdEFnZW50LCBzZWN0aW9uLCBhZ2VudCwgaGFuZGxlR29Ib21lIH06IFVzZUdldEFnZW50c1Byb3BzKSA9PiB7XG4gIGNvbnN0IHVzZXIgPSB1c2VVc2VyKClcbiAgY29uc3QgW2FnZW50cywgc2V0QWdlbnRzXSA9IHVzZVN0YXRlPHsgZGF0YTogQWdlbnRbXTsgaGFzX21vcmU/OiBib29sZWFuOyBuZXh0X29mZnNldD86IG51bWJlciB8IG51bGwgfT4oeyBkYXRhOiBbXSB9KVxuICBjb25zdCBbbG9hZGluZywgc2V0TG9hZGluZ10gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2xvYWRpbmdNb3JlLCBzZXRMb2FkaW5nTW9yZV0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2Vycm9yLCBzZXRFcnJvcl0gPSB1c2VTdGF0ZTxzdHJpbmcgfCBudWxsPihudWxsKVxuICBjb25zdCB7IGhhbmRsZVNuYWNrYmFyRXJyb3IgfSA9IHVzZVNuYWNrQmFyTWFuYWdlcigpXG4gIGNvbnN0IHsgdCwgaTE4biB9ID0gdXNlVHJhbnNsYXRpb24oJ2NoYXRfYWlfc2VjdGlvbicpXG4gIGNvbnN0IGxhc3RTZWxlY3RlZEFnZW50UmVmID0gdXNlUmVmPEFnZW50IHwgbnVsbD4obnVsbClcbiAgY29uc3QgaXNSZWZyZXNoaW5nUmVmID0gdXNlUmVmKGZhbHNlKVxuICBjb25zdCBsYXN0UmVxdWVzdFJlZiA9IHVzZVJlZjxzdHJpbmcgfCBudWxsPihudWxsKVxuXG4gIGNvbnN0IHVzZXJSb2xlc0Rpc2FibGVkID0gW0NPUlVzZXJSb2xlLkNPTExBQk9SQVRPUiwgQ09SVXNlclJvbGUuRlJFRUxBTkNFUiwgQ09SVXNlclJvbGUuQ0xJRU5UXVxuXG4gIGNvbnN0IGFkZEFnZW50ID0gdXNlQ2FsbGJhY2soXG4gICAgKG5ld0FnZW50OiBBZ2VudCkgPT4ge1xuICAgICAgc2V0QWdlbnRzKHByZXYgPT4ge1xuICAgICAgICAvLyBWZXJpZmljYXIgc2kgZWwgYWdlbnRlIHlhIGV4aXN0ZSBwYXJhIGV2aXRhciBkdXBsaWNhZG9zXG4gICAgICAgIGNvbnN0IGFnZW50RXhpc3RzID0gcHJldi5kYXRhLnNvbWUoZXhpc3RpbmdBZ2VudCA9PiBleGlzdGluZ0FnZW50LmlkID09PSBuZXdBZ2VudC5pZClcbiAgICAgICAgaWYgKGFnZW50RXhpc3RzKSB7XG4gICAgICAgICAgcmV0dXJuIHByZXZcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBuZXdEYXRhID0gWy4uLnByZXYuZGF0YSwgbmV3QWdlbnRdXG4gICAgICAgIGNvbnN0IHNvcnRlZERhdGEgPSBzb3J0QWdlbnRzKG5ld0RhdGEpXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4ucHJldixcbiAgICAgICAgICBkYXRhOiBzb3J0ZWREYXRhLFxuICAgICAgICB9XG4gICAgICB9KVxuICAgICAgaGFuZGxlR29Ib21lKClcbiAgICB9LFxuICAgIFtoYW5kbGVHb0hvbWVdXG4gIClcblxuICBjb25zdCByZW1vdmVBZ2VudCA9IHVzZUNhbGxiYWNrKChhZ2VudElkOiBudW1iZXIgfCBzdHJpbmcpID0+IHtcbiAgICBzZXRBZ2VudHMocHJldiA9PiAoe1xuICAgICAgLi4ucHJldixcbiAgICAgIGRhdGE6IHByZXYuZGF0YS5maWx0ZXIoYSA9PiBhLmlkICE9PSBhZ2VudElkLnRvU3RyaW5nKCkpLFxuICAgIH0pKVxuICB9LCBbXSlcblxuICBjb25zdCB1cGRhdGVBZ2VudCA9IHVzZUNhbGxiYWNrKCh1cGRhdGVkQWdlbnQ6IEFnZW50KSA9PiB7XG4gICAgc2V0QWdlbnRzKHByZXYgPT4ge1xuICAgICAgY29uc3QgdXBkYXRlZERhdGEgPSBwcmV2LmRhdGEubWFwKGV4aXN0aW5nQWdlbnQgPT5cbiAgICAgICAgZXhpc3RpbmdBZ2VudC5pZCA9PT0gdXBkYXRlZEFnZW50LmlkID8gdXBkYXRlZEFnZW50IDogZXhpc3RpbmdBZ2VudFxuICAgICAgKVxuICAgICAgY29uc3Qgc29ydGVkRGF0YSA9IHNvcnRBZ2VudHModXBkYXRlZERhdGEpXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5wcmV2LFxuICAgICAgICBkYXRhOiBzb3J0ZWREYXRhLFxuICAgICAgfVxuICAgIH0pXG4gIH0sIFtdKVxuXG4gIGNvbnN0IHVwZGF0ZUFnZW50RmF2b3JpdGUgPSB1c2VDYWxsYmFjayhcbiAgICAodXBkYXRlZEFnZW50OiBBZ2VudCwgc2hvdWxkU29ydDogYm9vbGVhbiA9IGZhbHNlKSA9PiB7XG4gICAgICBzZXRBZ2VudHMocHJldiA9PiB7XG4gICAgICAgIGNvbnN0IHVwZGF0ZWREYXRhID0gcHJldi5kYXRhLm1hcChleGlzdGluZ0FnZW50ID0+IHtcbiAgICAgICAgICBpZiAoZXhpc3RpbmdBZ2VudC5pZCA9PT0gdXBkYXRlZEFnZW50LmlkKSB7XG4gICAgICAgICAgICBjb25zdCB7IG1lc3NhZ2UsIC4uLmFnZW50RmllbGRzIH0gPSB1cGRhdGVkQWdlbnQgYXMgYW55XG4gICAgICAgICAgICBjb25zdCBtZXJnZWRBZ2VudCA9IHsgLi4uZXhpc3RpbmdBZ2VudCwgLi4uYWdlbnRGaWVsZHMgfVxuICAgICAgICAgICAgcmV0dXJuIG1lcmdlZEFnZW50XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBleGlzdGluZ0FnZW50XG4gICAgICAgIH0pXG5cbiAgICAgICAgLy8gU29sbyBvcmRlbmFyIHNpIHNob3VsZFNvcnQgZXMgdHJ1ZVxuICAgICAgICBjb25zdCBmaW5hbERhdGEgPSBzaG91bGRTb3J0ID8gc29ydEFnZW50cyh1cGRhdGVkRGF0YSkgOiB1cGRhdGVkRGF0YVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4ucHJldixcbiAgICAgICAgICBkYXRhOiBmaW5hbERhdGEsXG4gICAgICAgIH1cbiAgICAgIH0pXG5cbiAgICAgIC8vIEFjdHVhbGl6YXIgZWwgYWdlbnRlIHNlbGVjY2lvbmFkbyBzaSBlcyBlbCBxdWUgc2UgZXN0w6EgYWN0dWFsaXphbmRvXG4gICAgICBpZiAoYWdlbnQ/LmlkID09PSB1cGRhdGVkQWdlbnQuaWQpIHtcbiAgICAgICAgY29uc3QgZXhpc3RpbmdBZ2VudCA9IGFnZW50cy5kYXRhLmZpbmQoYSA9PiBhLmlkID09PSB1cGRhdGVkQWdlbnQuaWQpXG4gICAgICAgIGlmIChleGlzdGluZ0FnZW50KSB7XG4gICAgICAgICAgY29uc3QgeyBtZXNzYWdlLCAuLi5hZ2VudEZpZWxkcyB9ID0gdXBkYXRlZEFnZW50IGFzIGFueVxuICAgICAgICAgIGNvbnN0IG1lcmdlZEFnZW50ID0geyAuLi5leGlzdGluZ0FnZW50LCAuLi5hZ2VudEZpZWxkcyB9XG4gICAgICAgICAgc2VsZWN0QWdlbnQobWVyZ2VkQWdlbnQpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgeyBtZXNzYWdlLCAuLi5hZ2VudEZpZWxkcyB9ID0gdXBkYXRlZEFnZW50IGFzIGFueVxuICAgICAgICAgIHNlbGVjdEFnZW50KGFnZW50RmllbGRzIGFzIEFnZW50KVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBbYWdlbnQsIHNlbGVjdEFnZW50LCBhZ2VudHMuZGF0YV1cbiAgKVxuXG4gIGNvbnN0IHNvcnRBZ2VudHNMaXN0ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIHNldEFnZW50cyhwcmV2ID0+IHtcbiAgICAgIGNvbnN0IHNvcnRlZERhdGEgPSBzb3J0QWdlbnRzKHByZXYuZGF0YSlcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnByZXYsXG4gICAgICAgIGRhdGE6IHNvcnRlZERhdGEsXG4gICAgICB9XG4gICAgfSlcbiAgfSwgW10pXG5cbiAgY29uc3Qgc2VsZWN0Rmlyc3RBZ2VudCA9IHVzZUNhbGxiYWNrKFxuICAgIChhZ2VudElkPzogc3RyaW5nKSA9PiB7XG4gICAgICBpZiAoYWdlbnRzLmRhdGEubGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IGZpcnN0QWdlbnQgPSBhZ2VudHMuZGF0YS5maW5kSW5kZXgoYWdlbnREYXRhID0+IGFnZW50RGF0YS5pZCA9PT0gYWdlbnRJZClcbiAgICAgICAgbGFzdFNlbGVjdGVkQWdlbnRSZWYuY3VycmVudCA9IGFnZW50cy5kYXRhW2ZpcnN0QWdlbnQgPT09IDAgPyAxIDogMF1cbiAgICAgICAgc2VsZWN0QWdlbnQoYWdlbnRzLmRhdGFbZmlyc3RBZ2VudCA9PT0gMCA/IDEgOiAwXSlcbiAgICAgIH1cbiAgICB9LFxuICAgIFthZ2VudHMuZGF0YSwgc2VsZWN0QWdlbnRdXG4gIClcblxuICBjb25zdCBoYW5kbGVHZXRBZ2VudHMgPSB1c2VDYWxsYmFjayhcbiAgICBhc3luYyAoYWdlbnRUb1NlbGVjdD86IEFnZW50KSA9PiB7XG4gICAgICBpZiAoaXNSZWZyZXNoaW5nUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJlcXVlc3RLZXkgPSBhZ2VudFRvU2VsZWN0Py5pZD8udG9TdHJpbmcoKSB8fCAnZGVmYXVsdCdcbiAgICAgIGlmIChsYXN0UmVxdWVzdFJlZi5jdXJyZW50ID09PSByZXF1ZXN0S2V5ICYmICFsb2FkaW5nKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBpc1JlZnJlc2hpbmdSZWYuY3VycmVudCA9IHRydWVcbiAgICAgIGxhc3RSZXF1ZXN0UmVmLmN1cnJlbnQgPSByZXF1ZXN0S2V5XG4gICAgICBzZXRMb2FkaW5nKHRydWUpXG4gICAgICBzZXRFcnJvcihudWxsKVxuXG4gICAgICBjb25zdCBpc011bHRpQWdlbnRzID0gISF3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTICYmICEhd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFNcblxuICAgICAgdHJ5IHtcbiAgICAgICAgbGV0IGFnZW50UGFyc2VkOiBBZ2VudFtdID0gW11cbiAgICAgICAgbGV0IGhhc01vcmUgPSBmYWxzZVxuICAgICAgICBsZXQgbmV4dE9mZnNldDogbnVtYmVyIHwgbnVsbCA9IG51bGxcblxuICAgICAgICAvLyBTaSB0aWVuZSBmZWF0dXJlIGFjY2VzcyBtdWx0aSBhZ2VudHMsIGhhY2VyIGRvcyBxdWVyaWVzIChNYWlhICsgY3VzdG9tKSBlbiBjdWFscXVpZXIgc2VjY2nDs25cbiAgICAgICAgaWYgKGlzTXVsdGlBZ2VudHMpIHtcbiAgICAgICAgICAvLyBRdWVyeSAxOiBBZ2VudGVzIGNsb25lIChNYWlhKSAtIFNvbG8gcGFyYSByb2xlcyBwZXJtaXRpZG9zLiBQdWVkZW4gdmVuaXIgbcO6bHRpcGxlcyBhZ2VudGVzIHRpcG8gY2xvbmVcbiAgICAgICAgICBsZXQgY2xvbmVBZ2VudHM6IEFnZW50W10gPSBbXVxuICAgICAgICAgIGlmICghdXNlclJvbGVzRGlzYWJsZWQuaW5jbHVkZXModXNlci5yb2xlX2lkKSkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgY29uc3Qgb3JkZXJQYXJhbSA9XG4gICAgICAgICAgICAgICAgc2VjdGlvbiA9PT0gJ2NsaWVudCcgPyAnJm9yZGVyPWNsaWVudCxwcm9qZWN0JyA6IHNlY3Rpb24gPT09ICdwcm9qZWN0JyA/ICcmb3JkZXI9cHJvamVjdCxjbGllbnQnIDogJydcbiAgICAgICAgICAgICAgY29uc3QgbWFpYVJlc3BvbnNlID0gYXdhaXQgZmV0Y2hNYWlhKHtcbiAgICAgICAgICAgICAgICBwYXRoOiBgYWdlbnRzP2FnZW50X3R5cGU9Y2xvbmUmbGFuZz0ke2kxOG4ubGFuZ3VhZ2V9JHtvcmRlclBhcmFtfWAsXG4gICAgICAgICAgICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgY29uc3QgbWFpYURhdGEgPSBhd2FpdCBtYWlhUmVzcG9uc2UuanNvbigpXG4gICAgICAgICAgICAgIGNsb25lQWdlbnRzID0gbWFpYURhdGEuZGF0YT8uZmlsdGVyKChhZzogQWdlbnQpID0+IGFnLnR5cGUgPT09ICdjbG9uZScpIHx8IFtdXG4gICAgICAgICAgICB9IGNhdGNoIChtYWlhRXJyb3I6IGFueSkge1xuICAgICAgICAgICAgICAvLyBWZXJpZmljYXIgc2kgZWwgZXJyb3IgZXMgNDAzXG4gICAgICAgICAgICAgIC8vIGZldGNoQ09SIHB1ZWRlIGxhbnphciBkaWZlcmVudGVzIHRpcG9zIGRlIGVycm9yZXM6XG4gICAgICAgICAgICAgIC8vIDEuIEVycm9yIGNvbiBlcnJvckRhdGEuZGV0YWlsIHNpIGluY2x1eWUgJ0FjY2VzcyBkZW5pZWQnXG4gICAgICAgICAgICAgIC8vIDIuIEVycm9yIGdlbsOpcmljbyAnRmFpbGVkIGZldGNoaW5nIGRhdGEnIHNpIGVzIDQwMyBwZXJvIG5vIGluY2x1eWUgJ0FjY2VzcyBkZW5pZWQnXG4gICAgICAgICAgICAgIC8vIDMuIE5lY2VzaXRhbW9zIHZlcmlmaWNhciBlbCBzdGF0dXMgY29kZSBzaSBlc3TDoSBkaXNwb25pYmxlXG4gICAgICAgICAgICAgIGNvbnN0IGlzNDAzRXJyb3IgPVxuICAgICAgICAgICAgICAgIG1haWFFcnJvcj8ucmVzcG9uc2U/LnN0YXR1cyA9PT0gNDAzIHx8XG4gICAgICAgICAgICAgICAgbWFpYUVycm9yPy5zdGF0dXMgPT09IDQwMyB8fFxuICAgICAgICAgICAgICAgIG1haWFFcnJvcj8ubWVzc2FnZT8uaW5jbHVkZXMoXCJZb3UgZG9uJ3QgaGF2ZSBwZXJtaXNzaW9uIHRvIHZpZXcgYWdlbnRzXCIpIHx8XG4gICAgICAgICAgICAgICAgbWFpYUVycm9yPy5tZXNzYWdlPy5pbmNsdWRlcygnRmFpbGVkIGZldGNoaW5nIGRhdGEnKSAvLyBmZXRjaENPUiBsYW56YSBlc3RvIHBhcmEgNDAzIHNpbiAnQWNjZXNzIGRlbmllZCdcblxuICAgICAgICAgICAgICBpZiAoaXM0MDNFcnJvcikge1xuICAgICAgICAgICAgICAgIC8vIFNpIGVzIDQwMywgY29udGludWFyIHNpbiBsb3MgY2xvbmVBZ2VudHNcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBTaSBlcyBvdHJvIGVycm9yLCBsYW56YXJsb1xuICAgICAgICAgICAgICAgIHRocm93IG1haWFFcnJvclxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gUXVlcnkgMjogQWdlbnRlcyBjdXN0b20gY29uIHBhZ2luYWNpw7NuXG4gICAgICAgICAgbGV0IGN1c3RvbUFnZW50czogQWdlbnRbXSA9IFtdXG4gICAgICAgICAgbGV0IGN1c3RvbUhhc01vcmUgPSBmYWxzZVxuICAgICAgICAgIGxldCBjdXN0b21OZXh0T2Zmc2V0OiBudW1iZXIgfCBudWxsID0gbnVsbFxuXG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IGN1c3RvbVJlc3BvbnNlID0gYXdhaXQgZmV0Y2hNYWlhKHtcbiAgICAgICAgICAgICAgcGF0aDogJ2FnZW50cz9hZ2VudF90eXBlPWN1c3RvbSZsaW1pdD03Jm9mZnNldD0wJyxcbiAgICAgICAgICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICBjb25zdCBjdXN0b21EYXRhID0gYXdhaXQgY3VzdG9tUmVzcG9uc2UuanNvbigpXG4gICAgICAgICAgICBjdXN0b21BZ2VudHMgPSBjdXN0b21EYXRhLmRhdGEgfHwgW11cbiAgICAgICAgICAgIGN1c3RvbUhhc01vcmUgPSBjdXN0b21EYXRhLmhhc19tb3JlIHx8IGZhbHNlXG4gICAgICAgICAgICBjdXN0b21OZXh0T2Zmc2V0ID0gY3VzdG9tRGF0YS5uZXh0X29mZnNldCB8fCBudWxsXG4gICAgICAgICAgfSBjYXRjaCAoY3VzdG9tRXJyb3I6IGFueSkge1xuICAgICAgICAgICAgLy8gVmVyaWZpY2FyIHNpIGVsIGVycm9yIGVzIDQwM1xuICAgICAgICAgICAgLy8gZmV0Y2hDT1IgcHVlZGUgbGFuemFyIGRpZmVyZW50ZXMgdGlwb3MgZGUgZXJyb3JlczpcbiAgICAgICAgICAgIC8vIDEuIEVycm9yIGNvbiBlcnJvckRhdGEuZGV0YWlsIHNpIGluY2x1eWUgJ0FjY2VzcyBkZW5pZWQnXG4gICAgICAgICAgICAvLyAyLiBFcnJvciBnZW7DqXJpY28gJ0ZhaWxlZCBmZXRjaGluZyBkYXRhJyBzaSBlcyA0MDMgcGVybyBubyBpbmNsdXllICdBY2Nlc3MgZGVuaWVkJ1xuICAgICAgICAgICAgLy8gMy4gTmVjZXNpdGFtb3MgdmVyaWZpY2FyIGVsIHN0YXR1cyBjb2RlIHNpIGVzdMOhIGRpc3BvbmlibGVcbiAgICAgICAgICAgIGNvbnN0IGlzNDAzRXJyb3IgPVxuICAgICAgICAgICAgICBjdXN0b21FcnJvcj8ucmVzcG9uc2U/LnN0YXR1cyA9PT0gNDAzIHx8XG4gICAgICAgICAgICAgIGN1c3RvbUVycm9yPy5zdGF0dXMgPT09IDQwMyB8fFxuICAgICAgICAgICAgICBjdXN0b21FcnJvcj8ubWVzc2FnZT8uaW5jbHVkZXMoXCJZb3UgZG9uJ3QgaGF2ZSBwZXJtaXNzaW9uIHRvIHZpZXcgYWdlbnRzXCIpIHx8XG4gICAgICAgICAgICAgIGN1c3RvbUVycm9yPy5tZXNzYWdlPy5pbmNsdWRlcygnRmFpbGVkIGZldGNoaW5nIGRhdGEnKSAvLyBmZXRjaENPUiBsYW56YSBlc3RvIHBhcmEgNDAzIHNpbiAnQWNjZXNzIGRlbmllZCdcblxuICAgICAgICAgICAgaWYgKGlzNDAzRXJyb3IpIHtcbiAgICAgICAgICAgICAgLy8gU2kgZXMgNDAzLCBjb250aW51YXIgc2luIGxvcyBjdXN0b21BZ2VudHMgKGN1c3RvbUFnZW50cyBxdWVkYSBjb21vIGFycmF5IHZhY8OtbylcbiAgICAgICAgICAgICAgLy8gRXN0byBwdWVkZSBvY3VycmlyIGVuIGRvcyBlc2NlbmFyaW9zOlxuICAgICAgICAgICAgICAvLyAxLiBVc3VhcmlvIE5PIGVzIGRlIHVzZXJSb2xlc0Rpc2FibGVkOiB0ZW5kcsOhIHNvbG8gbG9zIGNsb25lQWdlbnRzIChzaSBsYSBxdWVyeSBjbG9uZSBmdWUgZXhpdG9zYSlcbiAgICAgICAgICAgICAgLy8gMi4gVXN1YXJpbyBTw40gZXMgZGUgdXNlclJvbGVzRGlzYWJsZWQ6IGVsIGxpc3RhZG8gcXVlZGFyw6EgdmFjw61vIChwb3JxdWUgbm8gaGF5IGNsb25lQWdlbnRzKVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgLy8gU2kgZXMgb3RybyBlcnJvciwgbGFuemFybG9cbiAgICAgICAgICAgICAgdGhyb3cgY3VzdG9tRXJyb3JcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBDb21iaW5hcjogYWdlbnRlcyBjbG9uZSBwcmltZXJvLCBsdWVnbyBsb3MgY3VzdG9tIChzaSBleGlzdGVuKVxuICAgICAgICAgIC8vIFNpIGVsIHVzdWFyaW8gdGllbmUgdW4gcm9sIGRlc2hhYmlsaXRhZG8sIG5vIGluY2x1aXIgY2xvbmVBZ2VudHNcbiAgICAgICAgICBpZiAodXNlclJvbGVzRGlzYWJsZWQuaW5jbHVkZXModXNlci5yb2xlX2lkKSkge1xuICAgICAgICAgICAgLy8gVXN1YXJpbyBkZSByb2xlcyBkaXNhYmxlZDogc29sbyBjdXN0b21BZ2VudHNcbiAgICAgICAgICAgIC8vIFNpIGN1c3RvbUFnZW50cyBlc3TDoSB2YWPDrW8gKHBvciA0MDMpLCBhZ2VudFBhcnNlZCBzZXLDoSBbXSB5IHNlIG1vc3RyYXLDoSBlbXB0eVN0YXRlXG4gICAgICAgICAgICBhZ2VudFBhcnNlZCA9IGN1c3RvbUFnZW50c1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBVc3VhcmlvIG5vcm1hbDogY2xvbmVBZ2VudHMgKyBjdXN0b21BZ2VudHNcbiAgICAgICAgICAgIC8vIFNpIGN1c3RvbUFnZW50cyBlc3TDoSB2YWPDrW8gKHBvciA0MDMpIHBlcm8gaGF5IGNsb25lQWdlbnRzLCBhZ2VudFBhcnNlZCB0ZW5kcsOhIGxvcyBjbG9uZXNcbiAgICAgICAgICAgIC8vIFNpIG5vIGhheSBjbG9uZUFnZW50cyBuaSBjdXN0b21BZ2VudHMsIGFnZW50UGFyc2VkIHNlcsOhIFtdIHkgc2UgbW9zdHJhcsOhIGVtcHR5U3RhdGVcbiAgICAgICAgICAgIGFnZW50UGFyc2VkID0gY2xvbmVBZ2VudHMubGVuZ3RoID8gWy4uLmNsb25lQWdlbnRzLCAuLi5jdXN0b21BZ2VudHNdIDogY3VzdG9tQWdlbnRzXG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIE9yZGVuYXI6IE1haWEgcHJpbWVybywgbHVlZ28gZmF2b3JpdG9zIGFsZmFiw6l0aWNhbWVudGUsIGx1ZWdvIG5vIGZhdm9yaXRvcyBhbGZhYsOpdGljYW1lbnRlXG4gICAgICAgICAgYWdlbnRQYXJzZWQgPSBzb3J0QWdlbnRzKGFnZW50UGFyc2VkKVxuICAgICAgICAgIGhhc01vcmUgPSBjdXN0b21IYXNNb3JlXG4gICAgICAgICAgbmV4dE9mZnNldCA9IGN1c3RvbU5leHRPZmZzZXRcblxuICAgICAgICAgIHNldEFnZW50cyh7XG4gICAgICAgICAgICBkYXRhOiBhZ2VudFBhcnNlZCxcbiAgICAgICAgICAgIGhhc19tb3JlOiBoYXNNb3JlLFxuICAgICAgICAgICAgbmV4dF9vZmZzZXQ6IG5leHRPZmZzZXQsXG4gICAgICAgICAgfSlcblxuICAgICAgICAgIC8vIFNpIG5vIGhheSBhZ2VudGVzIGRlc3B1w6lzIGRlIHByb2Nlc2FyIGxhcyBxdWVyaWVzLCBsaW1waWFyIGVsIGVycm9yXG4gICAgICAgICAgLy8gcGFyYSBxdWUgaGFzTm9BZ2VudHMgcHVlZGEgc2VyIHRydWUgeSBzZSBtdWVzdHJlIGVsIGVtcHR5U3RhdGVcbiAgICAgICAgICBpZiAoYWdlbnRQYXJzZWQubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICBzZXRFcnJvcihudWxsKVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBMw7NnaWNhIHBhcmEgcHJvamVjdCBvIGhlYWRlciBzaW4gbXVsdGlBZ2VudHNcbiAgICAgICAgICBjb25zdCBxdWVyeVBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKVxuICAgICAgICAgIGlmIChzZWN0aW9uID09PSAncHJvamVjdCcgfHwgc2VjdGlvbiA9PT0gJ2NsaWVudCcpIHtcbiAgICAgICAgICAgIHF1ZXJ5UGFyYW1zLmFwcGVuZCgnYWdlbnRfdHlwZScsICdjbG9uZScpXG4gICAgICAgICAgICBxdWVyeVBhcmFtcy5hcHBlbmQoJ2xhbmcnLCBpMThuLmxhbmd1YWdlKVxuICAgICAgICAgICAgcXVlcnlQYXJhbXMuYXBwZW5kKCdvcmRlcicsIHNlY3Rpb24gPT09ICdjbGllbnQnID8gJ2NsaWVudCxwcm9qZWN0JyA6ICdwcm9qZWN0LGNsaWVudCcpXG4gICAgICAgICAgfSBlbHNlIGlmIChzZWN0aW9uID09PSAnaGVhZGVyJyAmJiAhaXNNdWx0aUFnZW50cykge1xuICAgICAgICAgICAgLy8gSGVhZGVyIHNpbiBtdWx0aUFnZW50czogc29sbyBsaXN0YXIgYWdlbnRlcyBjbG9uZSAoTWFpYSlcbiAgICAgICAgICAgIHF1ZXJ5UGFyYW1zLmFwcGVuZCgnYWdlbnRfdHlwZScsICdjbG9uZScpXG4gICAgICAgICAgICBxdWVyeVBhcmFtcy5hcHBlbmQoJ2xhbmcnLCBpMThuLmxhbmd1YWdlKVxuICAgICAgICAgICAgcXVlcnlQYXJhbXMuYXBwZW5kKCdsaW1pdCcsICc3JylcbiAgICAgICAgICAgIHF1ZXJ5UGFyYW1zLmFwcGVuZCgnb2Zmc2V0JywgJzAnKVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IHF1ZXJ5U3RyaW5nID0gcXVlcnlQYXJhbXMudG9TdHJpbmcoKVxuICAgICAgICAgIGNvbnN0IHBhdGggPSBgYWdlbnRzJHtxdWVyeVN0cmluZyA/IGA/JHtxdWVyeVN0cmluZ31gIDogJyd9YFxuXG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2hNYWlhKHtcbiAgICAgICAgICAgICAgcGF0aCxcbiAgICAgICAgICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKClcbiAgICAgICAgICAgIC8vIGRhdGEuZGF0YSB5YSBjb250aWVuZSB0b2RvcyBsb3MgYWdlbnRlcyBjbG9uZSBkZSBsYSBxdWVyeSBhZ2VudF90eXBlPWNsb25lXG4gICAgICAgICAgICBhZ2VudFBhcnNlZCA9IGRhdGEuZGF0YSB8fCBbXVxuICAgICAgICAgICAgLy8gT3JkZW5hcjogTWFpYSBwcmltZXJvLCBsdWVnbyBmYXZvcml0b3MgYWxmYWLDqXRpY2FtZW50ZSwgbHVlZ28gbm8gZmF2b3JpdG9zIGFsZmFiw6l0aWNhbWVudGVcbiAgICAgICAgICAgIGFnZW50UGFyc2VkID0gc29ydEFnZW50cyhhZ2VudFBhcnNlZClcbiAgICAgICAgICAgIGhhc01vcmUgPSBkYXRhLmhhc19tb3JlXG4gICAgICAgICAgICBuZXh0T2Zmc2V0ID0gZGF0YS5uZXh0X29mZnNldFxuXG4gICAgICAgICAgICBzZXRBZ2VudHMoe1xuICAgICAgICAgICAgICAuLi5kYXRhLFxuICAgICAgICAgICAgICBkYXRhOiBhZ2VudFBhcnNlZCxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfSBjYXRjaCAocmVzcG9uc2VFcnJvcjogYW55KSB7XG4gICAgICAgICAgICAvLyBWZXJpZmljYXIgc2kgZWwgZXJyb3IgZXMgNDAzXG4gICAgICAgICAgICAvLyBmZXRjaENPUiBwdWVkZSBsYW56YXIgZGlmZXJlbnRlcyB0aXBvcyBkZSBlcnJvcmVzOlxuICAgICAgICAgICAgLy8gMS4gRXJyb3IgY29uIGVycm9yRGF0YS5kZXRhaWwgc2kgaW5jbHV5ZSAnQWNjZXNzIGRlbmllZCdcbiAgICAgICAgICAgIC8vIDIuIEVycm9yIGdlbsOpcmljbyAnRmFpbGVkIGZldGNoaW5nIGRhdGEnIHNpIGVzIDQwMyBwZXJvIG5vIGluY2x1eWUgJ0FjY2VzcyBkZW5pZWQnXG4gICAgICAgICAgICAvLyAzLiBOZWNlc2l0YW1vcyB2ZXJpZmljYXIgZWwgc3RhdHVzIGNvZGUgc2kgZXN0w6EgZGlzcG9uaWJsZVxuICAgICAgICAgICAgY29uc3QgaXM0MDNFcnJvciA9XG4gICAgICAgICAgICAgIHJlc3BvbnNlRXJyb3I/LnJlc3BvbnNlPy5zdGF0dXMgPT09IDQwMyB8fFxuICAgICAgICAgICAgICByZXNwb25zZUVycm9yPy5zdGF0dXMgPT09IDQwMyB8fFxuICAgICAgICAgICAgICByZXNwb25zZUVycm9yPy5tZXNzYWdlPy5pbmNsdWRlcyhcIllvdSBkb24ndCBoYXZlIHBlcm1pc3Npb24gdG8gdmlldyBhZ2VudHNcIikgfHxcbiAgICAgICAgICAgICAgcmVzcG9uc2VFcnJvcj8ubWVzc2FnZT8uaW5jbHVkZXMoJ0ZhaWxlZCBmZXRjaGluZyBkYXRhJykgLy8gZmV0Y2hDT1IgbGFuemEgZXN0byBwYXJhIDQwMyBzaW4gJ0FjY2VzcyBkZW5pZWQnXG5cbiAgICAgICAgICAgIGlmIChpczQwM0Vycm9yKSB7XG4gICAgICAgICAgICAgIC8vIFNpIGVzIDQwMywgZXN0YWJsZWNlciBhZ2VudGVzIHZhY8Otb3MgeSBjb250aW51YXJcbiAgICAgICAgICAgICAgc2V0QWdlbnRzKHtcbiAgICAgICAgICAgICAgICBkYXRhOiBbXSxcbiAgICAgICAgICAgICAgICBoYXNfbW9yZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgbmV4dF9vZmZzZXQ6IG51bGwsXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIC8vIExpbXBpYXIgZWwgZXJyb3IgcGFyYSBxdWUgaGFzTm9BZ2VudHMgcHVlZGEgc2VyIHRydWUgeSBzZSBtdWVzdHJlIGVsIGVtcHR5U3RhdGVcbiAgICAgICAgICAgICAgc2V0RXJyb3IobnVsbClcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIC8vIFNpIGVzIG90cm8gZXJyb3IsIGxhbnphcmxvXG4gICAgICAgICAgICAgIHRocm93IHJlc3BvbnNlRXJyb3JcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBMw7NnaWNhIGRlIHNlbGVjdCBhZ2VudCAtIFNvbG8gc2VsZWNjaW9uYXIgc2kgaGF5IGFnZW50ZXMgZGlzcG9uaWJsZXNcbiAgICAgICAgaWYgKGFnZW50UGFyc2VkLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBpZiAoYWdlbnRUb1NlbGVjdCAmJiBhZ2VudFBhcnNlZC5maW5kKChhZ2VudFRvUmVxdWVzdDogQWdlbnQpID0+IGFnZW50VG9SZXF1ZXN0LmlkID09PSBhZ2VudFRvU2VsZWN0LmlkKSkge1xuICAgICAgICAgICAgaWYgKGxhc3RTZWxlY3RlZEFnZW50UmVmLmN1cnJlbnQ/LmlkICE9PSBhZ2VudFRvU2VsZWN0LmlkKSB7XG4gICAgICAgICAgICAgIGxhc3RTZWxlY3RlZEFnZW50UmVmLmN1cnJlbnQgPSBhZ2VudFRvU2VsZWN0XG4gICAgICAgICAgICAgIHNlbGVjdEFnZW50KGFnZW50VG9TZWxlY3QpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIGlmIChhZ2VudFBhcnNlZD8uWzBdICYmICghYWdlbnQgfHwgIWFnZW50UGFyc2VkLmZpbmQoKGE6IEFnZW50KSA9PiBhLmlkID09PSBhZ2VudC5pZCkpKSB7XG4gICAgICAgICAgICBjb25zdCBhdmFpbGFibGVBZ2VudHMgPVxuICAgICAgICAgICAgICB3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTICYmICF1c2VyUm9sZXNEaXNhYmxlZC5pbmNsdWRlcyh1c2VyLnJvbGVfaWQpXG4gICAgICAgICAgICAgICAgPyBhZ2VudFBhcnNlZFxuICAgICAgICAgICAgICAgIDogYWdlbnRQYXJzZWQuZmlsdGVyKChhZ2VudEl0ZW06IEFnZW50KSA9PiBhZ2VudEl0ZW0udHlwZSAhPT0gJ2Nsb25lJylcblxuICAgICAgICAgICAgY29uc3QgW2ZpcnN0QWdlbnRdID0gYXZhaWxhYmxlQWdlbnRzXG4gICAgICAgICAgICBpZiAoZmlyc3RBZ2VudCAmJiBsYXN0U2VsZWN0ZWRBZ2VudFJlZi5jdXJyZW50Py5pZCAhPT0gZmlyc3RBZ2VudC5pZCkge1xuICAgICAgICAgICAgICBsYXN0U2VsZWN0ZWRBZ2VudFJlZi5jdXJyZW50ID0gZmlyc3RBZ2VudFxuICAgICAgICAgICAgICBzZWxlY3RBZ2VudChmaXJzdEFnZW50KVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSBpZiAoYWdlbnRUb1NlbGVjdCAmJiBhZ2VudFBhcnNlZD8ubGVuZ3RoKSB7XG4gICAgICAgICAgICBjb25zdCBhdmFpbGFibGVBZ2VudHMgPVxuICAgICAgICAgICAgICB3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTICYmICF1c2VyUm9sZXNEaXNhYmxlZC5pbmNsdWRlcyh1c2VyLnJvbGVfaWQpXG4gICAgICAgICAgICAgICAgPyBhZ2VudFBhcnNlZFxuICAgICAgICAgICAgICAgIDogYWdlbnRQYXJzZWQuZmlsdGVyKChhZ2VudEl0ZW06IEFnZW50KSA9PiBhZ2VudEl0ZW0udHlwZSAhPT0gJ2Nsb25lJylcblxuICAgICAgICAgICAgY29uc3QgW2ZpcnN0QXZhaWxhYmxlQWdlbnRdID0gYXZhaWxhYmxlQWdlbnRzXG4gICAgICAgICAgICBpZiAoZmlyc3RBdmFpbGFibGVBZ2VudCAmJiBsYXN0U2VsZWN0ZWRBZ2VudFJlZi5jdXJyZW50Py5pZCAhPT0gZmlyc3RBdmFpbGFibGVBZ2VudC5pZCkge1xuICAgICAgICAgICAgICBsYXN0U2VsZWN0ZWRBZ2VudFJlZi5jdXJyZW50ID0gZmlyc3RBdmFpbGFibGVBZ2VudFxuICAgICAgICAgICAgICBzZWxlY3RBZ2VudChmaXJzdEF2YWlsYWJsZUFnZW50KVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHNldExvYWRpbmcoZmFsc2UpXG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgc2V0RXJyb3IoZXJyIGluc3RhbmNlb2YgRXJyb3IgPyBlcnIubWVzc2FnZSA6ICdBbiB1bmtub3duIGVycm9yIG9jY3VycmVkJylcbiAgICAgICAgc2V0TG9hZGluZyhmYWxzZSlcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIGlzUmVmcmVzaGluZ1JlZi5jdXJyZW50ID0gZmFsc2VcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgaWYgKCFpc1JlZnJlc2hpbmdSZWYuY3VycmVudCkge1xuICAgICAgICAgICAgbGFzdFJlcXVlc3RSZWYuY3VycmVudCA9IG51bGxcbiAgICAgICAgICB9XG4gICAgICAgIH0sIDEwMClcbiAgICAgIH1cbiAgICB9LFxuICAgIFtzZWxlY3RBZ2VudCwgc2VjdGlvbiwgYWdlbnQsIGxvYWRpbmddXG4gIClcblxuICBjb25zdCBsb2FkTW9yZUFnZW50cyA9IHVzZUNhbGxiYWNrKGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBpc011bHRpQWdlbnRzID0gISF3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTICYmICEhd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFNcbiAgICAvLyBDYXJnYXIgbcOhczogZW4gaGVhZGVyIHNpZW1wcmU7IGVuIHByb2plY3Qgc29sbyBzaSBpc011bHRpQWdlbnRzIChwb3JxdWUgc29sbyBlbnRvbmNlcyBoYXkgcGFnaW5hY2nDs24gZGUgY3VzdG9tKVxuICAgIGNvbnN0IGNhbkxvYWRNb3JlID0gc2VjdGlvbiA9PT0gJ2hlYWRlcicgfHwgaXNNdWx0aUFnZW50c1xuICAgIGlmICghY2FuTG9hZE1vcmUgfHwgIWFnZW50cy5oYXNfbW9yZSB8fCAhYWdlbnRzLm5leHRfb2Zmc2V0IHx8IGxvYWRpbmdNb3JlKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBzZXRMb2FkaW5nTW9yZSh0cnVlKVxuICAgIHNldEVycm9yKG51bGwpXG5cbiAgICB0cnkge1xuICAgICAgbGV0IHBhdGg6IHN0cmluZ1xuXG4gICAgICAvLyBTaSBlcyBtdWx0aUFnZW50cywgc29sbyBjYXJnYXIgYWdlbnRzIGN1c3RvbSAoTWFpYSB5YSBlc3TDoSBjYXJnYWRvKVxuICAgICAgaWYgKGlzTXVsdGlBZ2VudHMpIHtcbiAgICAgICAgcGF0aCA9IGBhZ2VudHM/YWdlbnRfdHlwZT1jdXN0b20mbGltaXQ9NyZvZmZzZXQ9JHthZ2VudHMubmV4dF9vZmZzZXR9YFxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gU2kgbm8gZXMgbXVsdGlBZ2VudHMsIGNhcmdhciBtw6FzIGFnZW50ZXMgY2xvbmUgKE1haWEpXG4gICAgICAgIGNvbnN0IHF1ZXJ5UGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcygpXG4gICAgICAgIHF1ZXJ5UGFyYW1zLmFwcGVuZCgnYWdlbnRfdHlwZScsICdjbG9uZScpXG4gICAgICAgIHF1ZXJ5UGFyYW1zLmFwcGVuZCgnbGFuZycsIGkxOG4ubGFuZ3VhZ2UpXG4gICAgICAgIHF1ZXJ5UGFyYW1zLmFwcGVuZCgnbGltaXQnLCAnNycpXG4gICAgICAgIHF1ZXJ5UGFyYW1zLmFwcGVuZCgnb2Zmc2V0JywgYWdlbnRzLm5leHRfb2Zmc2V0LnRvU3RyaW5nKCkpXG4gICAgICAgIHBhdGggPSBgYWdlbnRzPyR7cXVlcnlQYXJhbXMudG9TdHJpbmcoKX1gXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2hNYWlhKHtcbiAgICAgICAgcGF0aCxcbiAgICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgIH0pXG5cbiAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKClcblxuICAgICAgLy8gQWN1bXVsYXIgYWdlbnRlcywgZXhjbHV5ZW5kbyBkdXBsaWNhZG9zXG4gICAgICBzZXRBZ2VudHMocHJldiA9PiB7XG4gICAgICAgIGlmIChpc011bHRpQWdlbnRzKSB7XG4gICAgICAgICAgLy8gTMOzZ2ljYSBwYXJhIG11bHRpQWdlbnRzOiBzZXBhcmFyIGNsb25lIHkgY3VzdG9tXG4gICAgICAgICAgLy8gTWFudGVuZXIgdG9kb3MgbG9zIGFnZW50ZXMgY2xvbmUgZXhpc3RlbnRlcyBhbCBpbmljaW9cbiAgICAgICAgICBjb25zdCBleGlzdGluZ0Nsb25lQWdlbnRzID0gcHJldi5kYXRhLmZpbHRlcigoYWc6IEFnZW50KSA9PiBhZy50eXBlID09PSAnY2xvbmUnKVxuXG4gICAgICAgICAgLy8gT2J0ZW5lciBJRHMgZXhpc3RlbnRlcyAoZXhjbHV5ZW5kbyBjbG9uZXMpXG4gICAgICAgICAgY29uc3QgZXhpc3RpbmdJZHMgPSBuZXcgU2V0KHByZXYuZGF0YS5maWx0ZXIoKGFnOiBBZ2VudCkgPT4gYWcudHlwZSAhPT0gJ2Nsb25lJykubWFwKChhZzogQWdlbnQpID0+IGFnLmlkKSlcblxuICAgICAgICAgIC8vIEZpbHRyYXIgbnVldm9zIGFnZW50cyBxdWUgbm8gZXN0w6luIHlhIGVuIGxhIGxpc3RhICh5IHF1ZSBubyBzZWFuIGNsb25lKVxuICAgICAgICAgIGNvbnN0IG5ld0FnZW50cyA9IGRhdGEuZGF0YS5maWx0ZXIoKGFnOiBBZ2VudCkgPT4gYWcudHlwZSAhPT0gJ2Nsb25lJyAmJiAhZXhpc3RpbmdJZHMuaGFzKGFnLmlkKSlcblxuICAgICAgICAgIC8vIENvbnN0cnVpciBlbCBudWV2byBhcnJheTogY2xvbmVzIHByaW1lcm8sIGx1ZWdvIGxvcyBhZ2VudHMgZXhpc3RlbnRlcyBxdWUgbm8gc2VhbiBjbG9uZSwgbHVlZ28gbG9zIG51ZXZvc1xuICAgICAgICAgIGNvbnN0IG5ld0RhdGEgPSBleGlzdGluZ0Nsb25lQWdlbnRzLmxlbmd0aFxuICAgICAgICAgICAgPyBbLi4uZXhpc3RpbmdDbG9uZUFnZW50cywgLi4ucHJldi5kYXRhLmZpbHRlcigoYWc6IEFnZW50KSA9PiBhZy50eXBlICE9PSAnY2xvbmUnKSwgLi4ubmV3QWdlbnRzXVxuICAgICAgICAgICAgOiBbLi4ucHJldi5kYXRhLmZpbHRlcigoYWc6IEFnZW50KSA9PiBhZy50eXBlICE9PSAnY2xvbmUnKSwgLi4ubmV3QWdlbnRzXVxuXG4gICAgICAgICAgLy8gT3JkZW5hcjogTWFpYSBwcmltZXJvLCBsdWVnbyBmYXZvcml0b3MgYWxmYWLDqXRpY2FtZW50ZSwgbHVlZ28gbm8gZmF2b3JpdG9zIGFsZmFiw6l0aWNhbWVudGVcbiAgICAgICAgICBjb25zdCBzb3J0ZWREYXRhID0gc29ydEFnZW50cyhuZXdEYXRhKVxuXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGRhdGE6IHNvcnRlZERhdGEsXG4gICAgICAgICAgICBoYXNfbW9yZTogZGF0YS5oYXNfbW9yZSxcbiAgICAgICAgICAgIG5leHRfb2Zmc2V0OiBkYXRhLm5leHRfb2Zmc2V0LFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBMw7NnaWNhIHBhcmEgIWlzTXVsdGlBZ2VudHM6IHRvZG9zIGxvcyBhZ2VudGVzIHNvbiBjbG9uZSwgc2ltcGxlbWVudGUgYWdyZWdhciBldml0YW5kbyBkdXBsaWNhZG9zXG4gICAgICAgIGNvbnN0IGV4aXN0aW5nSWRzID0gbmV3IFNldChwcmV2LmRhdGEubWFwKChhZzogQWdlbnQpID0+IGFnLmlkKSlcbiAgICAgICAgY29uc3QgbmV3QWdlbnRzID0gKGRhdGEuZGF0YSB8fCBbXSkuZmlsdGVyKChhZzogQWdlbnQpID0+ICFleGlzdGluZ0lkcy5oYXMoYWcuaWQpKVxuICAgICAgICBjb25zdCBuZXdEYXRhID0gWy4uLnByZXYuZGF0YSwgLi4ubmV3QWdlbnRzXVxuXG4gICAgICAgIC8vIE9yZGVuYXI6IE1haWEgcHJpbWVybywgbHVlZ28gZmF2b3JpdG9zIGFsZmFiw6l0aWNhbWVudGUsIGx1ZWdvIG5vIGZhdm9yaXRvcyBhbGZhYsOpdGljYW1lbnRlXG4gICAgICAgIGNvbnN0IHNvcnRlZERhdGEgPSBzb3J0QWdlbnRzKG5ld0RhdGEpXG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBkYXRhOiBzb3J0ZWREYXRhLFxuICAgICAgICAgIGhhc19tb3JlOiBkYXRhLmhhc19tb3JlLFxuICAgICAgICAgIG5leHRfb2Zmc2V0OiBkYXRhLm5leHRfb2Zmc2V0LFxuICAgICAgICB9XG4gICAgICB9KVxuXG4gICAgICBzZXRMb2FkaW5nTW9yZShmYWxzZSlcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGhhbmRsZVNuYWNrYmFyRXJyb3IodCgnc25hY2tiYXIubG9hZE1vcmVBZ2VudHMuZXJyb3InKSlcbiAgICAgIHNldExvYWRpbmdNb3JlKGZhbHNlKVxuICAgIH1cbiAgfSwgW3NlY3Rpb24sIGFnZW50cy5oYXNfbW9yZSwgYWdlbnRzLm5leHRfb2Zmc2V0LCBsb2FkaW5nTW9yZSwgaTE4bi5sYW5ndWFnZV0pXG5cbiAgY29uc3QgaGFzTm9BZ2VudHMgPSAhbG9hZGluZyAmJiAhbG9hZGluZ01vcmUgJiYgIWVycm9yICYmIGFnZW50cy5kYXRhLmxlbmd0aCA9PT0gMFxuXG4gIHJldHVybiB7XG4gICAgYWdlbnRzLFxuICAgIGxvYWRpbmcsXG4gICAgbG9hZGluZ01vcmUsXG4gICAgZXJyb3IsXG4gICAgaGFzTm9BZ2VudHMsXG4gICAgaGFuZGxlR2V0QWdlbnRzLFxuICAgIGxvYWRNb3JlQWdlbnRzLFxuICAgIGFkZEFnZW50LFxuICAgIHJlbW92ZUFnZW50LFxuICAgIHVwZGF0ZUFnZW50LFxuICAgIHVwZGF0ZUFnZW50RmF2b3JpdGUsXG4gICAgc2VsZWN0Rmlyc3RBZ2VudCxcbiAgICBzb3J0QWdlbnRzTGlzdCxcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBU0EsUUFBUSxFQUFFQyxXQUFXLEVBQUVDLE1BQU0sUUFBUSxPQUFPO0FBQ3JELFNBQVNDLGNBQWMsUUFBUSxlQUFlO0FBQzlDLFNBQVNDLGtCQUFrQixRQUFRLHNEQUFzRDtBQUN6RixTQUFTQyxTQUFTLFFBQVEsV0FBVztBQUVyQyxTQUFTQyxPQUFPLEVBQUVDLFdBQVcsUUFBUSwyQkFBMkI7O0FBRWhFO0FBQ0E7QUFDQTtBQUNBLElBQU1DLFVBQVUsR0FBRyxTQUFiQSxVQUFVQSxDQUFJQyxNQUFlLEVBQWM7RUFDL0M7RUFDQSxJQUFNQyxXQUFXLEdBQUdELE1BQU0sQ0FBQ0UsTUFBTSxDQUFDLFVBQUFDLEVBQUU7SUFBQSxPQUFJQSxFQUFFLENBQUNDLElBQUksS0FBSyxPQUFPO0VBQUEsRUFBQztFQUM1RCxJQUFNQyxXQUFXLEdBQUdMLE1BQU0sQ0FBQ0UsTUFBTSxDQUFDLFVBQUFDLEVBQUU7SUFBQSxPQUFJQSxFQUFFLENBQUNDLElBQUksS0FBSyxPQUFPO0VBQUEsRUFBQzs7RUFFNUQ7RUFDQSxJQUFNRSxTQUFTLEdBQUdELFdBQVcsQ0FBQ0gsTUFBTSxDQUFDLFVBQUFDLEVBQUU7SUFBQSxPQUFJQSxFQUFFLENBQUNJLFdBQVc7RUFBQSxFQUFDLENBQUNDLElBQUksQ0FBQyxVQUFDQyxDQUFDLEVBQUVDLENBQUM7SUFBQSxPQUFLRCxDQUFDLENBQUNFLElBQUksQ0FBQ0MsYUFBYSxDQUFDRixDQUFDLENBQUNDLElBQUksQ0FBQztFQUFBLEVBQUM7RUFDdkcsSUFBTUUsWUFB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
|
|
583
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VTdGF0ZSIsInVzZUNhbGxiYWNrIiwidXNlUmVmIiwidXNlVHJhbnNsYXRpb24iLCJ1c2VTbmFja0Jhck1hbmFnZXIiLCJmZXRjaE1haWEiLCJ1c2VVc2VyIiwiQ09SVXNlclJvbGUiLCJtYXBDT1JMYW5nIiwic29ydEFnZW50cyIsImFnZW50cyIsImNsb25lQWdlbnRzIiwiZmlsdGVyIiwiYWciLCJ0eXBlIiwib3RoZXJBZ2VudHMiLCJmYXZvcml0ZXMiLCJpc19mYXZvcml0ZSIsInNvcnQiLCJhIiwiYiIsIm5hbWUiLCJsb2NhbGVDb21wYXJlIiwibm9uRmF2b3JpdGVzIiwibGVuZ3RoIiwiY29uY2F0IiwiX3RvQ29uc3VtYWJsZUFycmF5IiwidXNlR2V0QWdlbnRzIiwiX3JlZiIsInNlbGVjdEFnZW50Iiwic2VjdGlvbiIsImFnZW50IiwiaGFuZGxlR29Ib21lIiwidXNlciIsIl91c2VTdGF0ZSIsImRhdGEiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJzZXRBZ2VudHMiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImxvYWRpbmciLCJzZXRMb2FkaW5nIiwiX3VzZVN0YXRlNSIsIl91c2VTdGF0ZTYiLCJsb2FkaW5nTW9yZSIsInNldExvYWRpbmdNb3JlIiwiX3VzZVN0YXRlNyIsIl91c2VTdGF0ZTgiLCJlcnJvciIsInNldEVycm9yIiwiX3VzZVNuYWNrQmFyTWFuYWdlciIsImhhbmRsZVNuYWNrYmFyRXJyb3IiLCJfdXNlVHJhbnNsYXRpb24iLCJ0IiwiaTE4biIsImxhc3RTZWxlY3RlZEFnZW50UmVmIiwiaXNSZWZyZXNoaW5nUmVmIiwibGFzdFJlcXVlc3RSZWYiLCJ1c2VyUm9sZXNEaXNhYmxlZCIsIkNPTExBQk9SQVRPUiIsIkZSRUVMQU5DRVIiLCJDTElFTlQiLCJhZGRBZ2VudCIsIm5ld0FnZW50IiwicHJldiIsImFnZW50RXhpc3RzIiwic29tZSIsImV4aXN0aW5nQWdlbnQiLCJpZCIsIm5ld0RhdGEiLCJzb3J0ZWREYXRhIiwiX29iamVjdFNwcmVhZCIsInJlbW92ZUFnZW50IiwiYWdlbnRJZCIsInRvU3RyaW5nIiwidXBkYXRlQWdlbnQiLCJ1cGRhdGVkQWdlbnQiLCJ1cGRhdGVkRGF0YSIsIm1hcCIsInVwZGF0ZUFnZW50RmF2b3JpdGUiLCJzaG91bGRTb3J0IiwiYXJndW1lbnRzIiwidW5kZWZpbmVkIiwiX3JlZjIiLCJtZXNzYWdlIiwiYWdlbnRGaWVsZHMiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJfZXhjbHVkZWQiLCJtZXJnZWRBZ2VudCIsImZpbmFsRGF0YSIsImZpbmQiLCJfcmVmMyIsIl9leGNsdWRlZDIiLCJfcmVmNCIsIl9leGNsdWRlZDMiLCJzb3J0QWdlbnRzTGlzdCIsInNlbGVjdEZpcnN0QWdlbnQiLCJmaXJzdEFnZW50IiwiZmluZEluZGV4IiwiYWdlbnREYXRhIiwiY3VycmVudCIsImhhbmRsZUdldEFnZW50cyIsIl9yZWY1IiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwibWFyayIsIl9jYWxsZWUiLCJhZ2VudFRvU2VsZWN0IiwiX2FnZW50VG9TZWxlY3QkaWQiLCJyZXF1ZXN0S2V5IiwiaXNNdWx0aUFnZW50cyIsImFnZW50UGFyc2VkIiwiaGFzTW9yZSIsIm5leHRPZmZzZXQiLCJfbWFpYURhdGEkZGF0YSIsIm9yZGVyUGFyYW0iLCJtYWlhUmVzcG9uc2UiLCJtYWlhRGF0YSIsIl9tYWlhRXJyb3IkcmVzcG9uc2UiLCJfbWFpYUVycm9yJG1lc3NhZ2UiLCJfbWFpYUVycm9yJG1lc3NhZ2UyIiwiaXM0MDNFcnJvciIsImN1c3RvbUFnZW50cyIsImN1c3RvbUhhc01vcmUiLCJjdXN0b21OZXh0T2Zmc2V0IiwiY3VzdG9tUmVzcG9uc2UiLCJjdXN0b21EYXRhIiwiX2N1c3RvbUVycm9yJHJlc3BvbnNlIiwiX2N1c3RvbUVycm9yJG1lc3NhZ2UiLCJfY3VzdG9tRXJyb3IkbWVzc2FnZTIiLCJfaXM0MDNFcnJvciIsInF1ZXJ5UGFyYW1zIiwicXVlcnlTdHJpbmciLCJwYXRoIiwicmVzcG9uc2UiLCJfcmVzcG9uc2VFcnJvciRyZXNwb24iLCJfcmVzcG9uc2VFcnJvciRtZXNzYWciLCJfcmVzcG9uc2VFcnJvciRtZXNzYWcyIiwiX2lzNDAzRXJyb3IyIiwiX2FnZW50UGFyc2VkIiwiX2FnZW50UGFyc2VkMiIsIl9sYXN0U2VsZWN0ZWRBZ2VudFJlZiIsIl9sYXN0U2VsZWN0ZWRBZ2VudFJlZjIiLCJhdmFpbGFibGVBZ2VudHMiLCJfYXZhaWxhYmxlQWdlbnRzIiwiX2xhc3RTZWxlY3RlZEFnZW50UmVmMyIsIl9hdmFpbGFibGVBZ2VudHMyIiwiX2F2YWlsYWJsZUFnZW50czMiLCJmaXJzdEF2YWlsYWJsZUFnZW50IiwiX3QiLCJfdDIiLCJfdDMiLCJfdDQiLCJ3cmFwIiwiX2NvbnRleHQiLCJuZXh0IiwiYWJydXB0IiwiaGFzX21vcmUiLCJuZXh0X29mZnNldCIsIndpbmRvdyIsIk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTUyIsIk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFMiLCJpbmNsdWRlcyIsInJvbGVfaWQiLCJsYW5ndWFnZSIsIm1ldGhvZCIsInNlbnQiLCJqc29uIiwic3RhdHVzIiwiVVJMU2VhcmNoUGFyYW1zIiwiYXBwZW5kIiwiYWdlbnRUb1JlcXVlc3QiLCJhZ2VudEl0ZW0iLCJFcnJvciIsInNldFRpbWVvdXQiLCJmaW5pc2giLCJzdG9wIiwiX3giLCJhcHBseSIsImxvYWRNb3JlQWdlbnRzIiwiX2NhbGxlZTIiLCJjYW5Mb2FkTW9yZSIsIl90NSIsIl9jb250ZXh0MiIsImV4aXN0aW5nQ2xvbmVBZ2VudHMiLCJleGlzdGluZ0lkcyIsIlNldCIsIm5ld0FnZW50cyIsImhhcyIsImhhc05vQWdlbnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3NlcnZpY2VzL21haWEvQWdlbnRzL2dldEFnZW50cy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnMgKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLW5lc3RlZC10ZXJuYXJ5ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1jb25zb2xlICovXG5pbXBvcnQgeyB1c2VTdGF0ZSwgdXNlQ2FsbGJhY2ssIHVzZVJlZiB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tICdyZWFjdC1pMThuZXh0J1xuaW1wb3J0IHsgdXNlU25hY2tCYXJNYW5hZ2VyIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlU25hY2tCYXJNYW5hZ2VyL3VzZVNuYWNrQmFyTWFuYWdlcidcbmltcG9ydCB7IGZldGNoTWFpYSB9IGZyb20gJy4uL2NsaWVudCdcbmltcG9ydCB7IEFnZW50IH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvYWdlbnQnXG5pbXBvcnQgeyB1c2VVc2VyLCBDT1JVc2VyUm9sZSB9IGZyb20gJy4uLy4uLy4uL2NvbnRleHQvY29yLXVzZXInXG5pbXBvcnQgeyBtYXBDT1JMYW5nIH0gZnJvbSAnLi4vLi4vLi4vbGFuZy91dGlscydcblxuLyoqXG4gKiBPcmRlbmEgbG9zIGFnZW50ZXM6IGFnZW50ZXMgY2xvbmUgcHJpbWVybyAoc2kgZXhpc3RlbiksIGx1ZWdvIGZhdm9yaXRvcyBhbGZhYsOpdGljYW1lbnRlLCBsdWVnbyBubyBmYXZvcml0b3MgYWxmYWLDqXRpY2FtZW50ZVxuICovXG5jb25zdCBzb3J0QWdlbnRzID0gKGFnZW50czogQWdlbnRbXSk6IEFnZW50W10gPT4ge1xuICAvLyBTZXBhcmFyIGFnZW50ZXMgY2xvbmUgZGVsIHJlc3RvXG4gIGNvbnN0IGNsb25lQWdlbnRzID0gYWdlbnRzLmZpbHRlcihhZyA9PiBhZy50eXBlID09PSAnY2xvbmUnKVxuICBjb25zdCBvdGhlckFnZW50cyA9IGFnZW50cy5maWx0ZXIoYWcgPT4gYWcudHlwZSAhPT0gJ2Nsb25lJylcblxuICAvLyBTZXBhcmFyIGZhdm9yaXRvcyB5IG5vIGZhdm9yaXRvc1xuICBjb25zdCBmYXZvcml0ZXMgPSBvdGhlckFnZW50cy5maWx0ZXIoYWcgPT4gYWcuaXNfZmF2b3JpdGUpLnNvcnQoKGEsIGIpID0+IGEubmFtZS5sb2NhbGVDb21wYXJlKGIubmFtZSkpXG4gIGNvbnN0IG5vbkZhdm9yaXRlcyA9IG90aGVyQWdlbnRzLmZpbHRlcihhZyA9PiAhYWcuaXNfZmF2b3JpdGUpLnNvcnQoKGEsIGIpID0+IGEubmFtZS5sb2NhbGVDb21wYXJlKGIubmFtZSkpXG5cbiAgLy8gQ29tYmluYXI6IGNsb25lcyBwcmltZXJvLCBsdWVnbyBmYXZvcml0b3MsIGx1ZWdvIG5vIGZhdm9yaXRvc1xuICByZXR1cm4gY2xvbmVBZ2VudHMubGVuZ3RoID8gWy4uLmNsb25lQWdlbnRzLCAuLi5mYXZvcml0ZXMsIC4uLm5vbkZhdm9yaXRlc10gOiBbLi4uZmF2b3JpdGVzLCAuLi5ub25GYXZvcml0ZXNdXG59XG5cbnR5cGUgVXNlR2V0QWdlbnRzUHJvcHMgPSB7XG4gIHNlbGVjdEFnZW50OiAoYWdlbnQ6IEFnZW50KSA9PiB2b2lkXG4gIHNlY3Rpb246ICdwcm9qZWN0JyB8ICdoZWFkZXInIHwgJ2NsaWVudCcgfCAnZXBoZW1lcmFsJ1xuICBhZ2VudDogQWdlbnQgfCBudWxsXG4gIGhhbmRsZUdvSG9tZTogKCkgPT4gdm9pZFxufVxuXG5leHBvcnQgY29uc3QgdXNlR2V0QWdlbnRzID0gKHsgc2VsZWN0QWdlbnQsIHNlY3Rpb24sIGFnZW50LCBoYW5kbGVHb0hvbWUgfTogVXNlR2V0QWdlbnRzUHJvcHMpID0+IHtcbiAgY29uc3QgdXNlciA9IHVzZVVzZXIoKVxuICBjb25zdCBbYWdlbnRzLCBzZXRBZ2VudHNdID0gdXNlU3RhdGU8eyBkYXRhOiBBZ2VudFtdOyBoYXNfbW9yZT86IGJvb2xlYW47IG5leHRfb2Zmc2V0PzogbnVtYmVyIHwgbnVsbCB9Pih7IGRhdGE6IFtdIH0pXG4gIGNvbnN0IFtsb2FkaW5nLCBzZXRMb2FkaW5nXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbbG9hZGluZ01vcmUsIHNldExvYWRpbmdNb3JlXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbZXJyb3IsIHNldEVycm9yXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KG51bGwpXG4gIGNvbnN0IHsgaGFuZGxlU25hY2tiYXJFcnJvciB9ID0gdXNlU25hY2tCYXJNYW5hZ2VyKClcbiAgY29uc3QgeyB0LCBpMThuIH0gPSB1c2VUcmFuc2xhdGlvbignY2hhdF9haV9zZWN0aW9uJylcbiAgY29uc3QgbGFzdFNlbGVjdGVkQWdlbnRSZWYgPSB1c2VSZWY8QWdlbnQgfCBudWxsPihudWxsKVxuICBjb25zdCBpc1JlZnJlc2hpbmdSZWYgPSB1c2VSZWYoZmFsc2UpXG4gIGNvbnN0IGxhc3RSZXF1ZXN0UmVmID0gdXNlUmVmPHN0cmluZyB8IG51bGw+KG51bGwpXG5cbiAgY29uc3QgdXNlclJvbGVzRGlzYWJsZWQgPSBbQ09SVXNlclJvbGUuQ09MTEFCT1JBVE9SLCBDT1JVc2VyUm9sZS5GUkVFTEFOQ0VSLCBDT1JVc2VyUm9sZS5DTElFTlRdXG5cbiAgY29uc3QgYWRkQWdlbnQgPSB1c2VDYWxsYmFjayhcbiAgICAobmV3QWdlbnQ6IEFnZW50KSA9PiB7XG4gICAgICBzZXRBZ2VudHMocHJldiA9PiB7XG4gICAgICAgIC8vIFZlcmlmaWNhciBzaSBlbCBhZ2VudGUgeWEgZXhpc3RlIHBhcmEgZXZpdGFyIGR1cGxpY2Fkb3NcbiAgICAgICAgY29uc3QgYWdlbnRFeGlzdHMgPSBwcmV2LmRhdGEuc29tZShleGlzdGluZ0FnZW50ID0+IGV4aXN0aW5nQWdlbnQuaWQgPT09IG5ld0FnZW50LmlkKVxuICAgICAgICBpZiAoYWdlbnRFeGlzdHMpIHtcbiAgICAgICAgICByZXR1cm4gcHJldlxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG5ld0RhdGEgPSBbLi4ucHJldi5kYXRhLCBuZXdBZ2VudF1cbiAgICAgICAgY29uc3Qgc29ydGVkRGF0YSA9IHNvcnRBZ2VudHMobmV3RGF0YSlcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5wcmV2LFxuICAgICAgICAgIGRhdGE6IHNvcnRlZERhdGEsXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICBoYW5kbGVHb0hvbWUoKVxuICAgIH0sXG4gICAgW2hhbmRsZUdvSG9tZV1cbiAgKVxuXG4gIGNvbnN0IHJlbW92ZUFnZW50ID0gdXNlQ2FsbGJhY2soKGFnZW50SWQ6IG51bWJlciB8IHN0cmluZykgPT4ge1xuICAgIHNldEFnZW50cyhwcmV2ID0+ICh7XG4gICAgICAuLi5wcmV2LFxuICAgICAgZGF0YTogcHJldi5kYXRhLmZpbHRlcihhID0+IGEuaWQgIT09IGFnZW50SWQudG9TdHJpbmcoKSksXG4gICAgfSkpXG4gIH0sIFtdKVxuXG4gIGNvbnN0IHVwZGF0ZUFnZW50ID0gdXNlQ2FsbGJhY2soKHVwZGF0ZWRBZ2VudDogQWdlbnQpID0+IHtcbiAgICBzZXRBZ2VudHMocHJldiA9PiB7XG4gICAgICBjb25zdCB1cGRhdGVkRGF0YSA9IHByZXYuZGF0YS5tYXAoZXhpc3RpbmdBZ2VudCA9PlxuICAgICAgICBleGlzdGluZ0FnZW50LmlkID09PSB1cGRhdGVkQWdlbnQuaWQgPyB1cGRhdGVkQWdlbnQgOiBleGlzdGluZ0FnZW50XG4gICAgICApXG4gICAgICBjb25zdCBzb3J0ZWREYXRhID0gc29ydEFnZW50cyh1cGRhdGVkRGF0YSlcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnByZXYsXG4gICAgICAgIGRhdGE6IHNvcnRlZERhdGEsXG4gICAgICB9XG4gICAgfSlcbiAgfSwgW10pXG5cbiAgY29uc3QgdXBkYXRlQWdlbnRGYXZvcml0ZSA9IHVzZUNhbGxiYWNrKFxuICAgICh1cGRhdGVkQWdlbnQ6IEFnZW50LCBzaG91bGRTb3J0OiBib29sZWFuID0gZmFsc2UpID0+IHtcbiAgICAgIHNldEFnZW50cyhwcmV2ID0+IHtcbiAgICAgICAgY29uc3QgdXBkYXRlZERhdGEgPSBwcmV2LmRhdGEubWFwKGV4aXN0aW5nQWdlbnQgPT4ge1xuICAgICAgICAgIGlmIChleGlzdGluZ0FnZW50LmlkID09PSB1cGRhdGVkQWdlbnQuaWQpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgbWVzc2FnZSwgLi4uYWdlbnRGaWVsZHMgfSA9IHVwZGF0ZWRBZ2VudCBhcyBhbnlcbiAgICAgICAgICAgIGNvbnN0IG1lcmdlZEFnZW50ID0geyAuLi5leGlzdGluZ0FnZW50LCAuLi5hZ2VudEZpZWxkcyB9XG4gICAgICAgICAgICByZXR1cm4gbWVyZ2VkQWdlbnRcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGV4aXN0aW5nQWdlbnRcbiAgICAgICAgfSlcblxuICAgICAgICAvLyBTb2xvIG9yZGVuYXIgc2kgc2hvdWxkU29ydCBlcyB0cnVlXG4gICAgICAgIGNvbnN0IGZpbmFsRGF0YSA9IHNob3VsZFNvcnQgPyBzb3J0QWdlbnRzKHVwZGF0ZWREYXRhKSA6IHVwZGF0ZWREYXRhXG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5wcmV2LFxuICAgICAgICAgIGRhdGE6IGZpbmFsRGF0YSxcbiAgICAgICAgfVxuICAgICAgfSlcblxuICAgICAgLy8gQWN0dWFsaXphciBlbCBhZ2VudGUgc2VsZWNjaW9uYWRvIHNpIGVzIGVsIHF1ZSBzZSBlc3TDoSBhY3R1YWxpemFuZG9cbiAgICAgIGlmIChhZ2VudD8uaWQgPT09IHVwZGF0ZWRBZ2VudC5pZCkge1xuICAgICAgICBjb25zdCBleGlzdGluZ0FnZW50ID0gYWdlbnRzLmRhdGEuZmluZChhID0+IGEuaWQgPT09IHVwZGF0ZWRBZ2VudC5pZClcbiAgICAgICAgaWYgKGV4aXN0aW5nQWdlbnQpIHtcbiAgICAgICAgICBjb25zdCB7IG1lc3NhZ2UsIC4uLmFnZW50RmllbGRzIH0gPSB1cGRhdGVkQWdlbnQgYXMgYW55XG4gICAgICAgICAgY29uc3QgbWVyZ2VkQWdlbnQgPSB7IC4uLmV4aXN0aW5nQWdlbnQsIC4uLmFnZW50RmllbGRzIH1cbiAgICAgICAgICBzZWxlY3RBZ2VudChtZXJnZWRBZ2VudClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCB7IG1lc3NhZ2UsIC4uLmFnZW50RmllbGRzIH0gPSB1cGRhdGVkQWdlbnQgYXMgYW55XG4gICAgICAgICAgc2VsZWN0QWdlbnQoYWdlbnRGaWVsZHMgYXMgQWdlbnQpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIFthZ2VudCwgc2VsZWN0QWdlbnQsIGFnZW50cy5kYXRhXVxuICApXG5cbiAgY29uc3Qgc29ydEFnZW50c0xpc3QgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgc2V0QWdlbnRzKHByZXYgPT4ge1xuICAgICAgY29uc3Qgc29ydGVkRGF0YSA9IHNvcnRBZ2VudHMocHJldi5kYXRhKVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ucHJldixcbiAgICAgICAgZGF0YTogc29ydGVkRGF0YSxcbiAgICAgIH1cbiAgICB9KVxuICB9LCBbXSlcblxuICBjb25zdCBzZWxlY3RGaXJzdEFnZW50ID0gdXNlQ2FsbGJhY2soXG4gICAgKGFnZW50SWQ/OiBzdHJpbmcpID0+IHtcbiAgICAgIGlmIChhZ2VudHMuZGF0YS5sZW5ndGgpIHtcbiAgICAgICAgY29uc3QgZmlyc3RBZ2VudCA9IGFnZW50cy5kYXRhLmZpbmRJbmRleChhZ2VudERhdGEgPT4gYWdlbnREYXRhLmlkID09PSBhZ2VudElkKVxuICAgICAgICBsYXN0U2VsZWN0ZWRBZ2VudFJlZi5jdXJyZW50ID0gYWdlbnRzLmRhdGFbZmlyc3RBZ2VudCA9PT0gMCA/IDEgOiAwXVxuICAgICAgICBzZWxlY3RBZ2VudChhZ2VudHMuZGF0YVtmaXJzdEFnZW50ID09PSAwID8gMSA6IDBdKVxuICAgICAgfVxuICAgIH0sXG4gICAgW2FnZW50cy5kYXRhLCBzZWxlY3RBZ2VudF1cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZUdldEFnZW50cyA9IHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jIChhZ2VudFRvU2VsZWN0PzogQWdlbnQpID0+IHtcbiAgICAgIGlmIChpc1JlZnJlc2hpbmdSZWYuY3VycmVudCkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgY29uc3QgcmVxdWVzdEtleSA9IGFnZW50VG9TZWxlY3Q/LmlkPy50b1N0cmluZygpIHx8ICdkZWZhdWx0J1xuICAgICAgaWYgKGxhc3RSZXF1ZXN0UmVmLmN1cnJlbnQgPT09IHJlcXVlc3RLZXkgJiYgIWxvYWRpbmcpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGlzUmVmcmVzaGluZ1JlZi5jdXJyZW50ID0gdHJ1ZVxuICAgICAgbGFzdFJlcXVlc3RSZWYuY3VycmVudCA9IHJlcXVlc3RLZXlcbiAgICAgIHNldExvYWRpbmcodHJ1ZSlcbiAgICAgIHNldEVycm9yKG51bGwpXG5cbiAgICAgIC8vIEVuIG1vZG8gZXBoZW1lcmFsIG5vIGNvbnN1bHRhbW9zIGFnZW50ZXMgKG5vIGhheSBzZWxlY3RvciBkZSBhZ2VudGUpLlxuICAgICAgaWYgKHNlY3Rpb24gPT09ICdlcGhlbWVyYWwnKSB7XG4gICAgICAgIHNldEFnZW50cyh7IGRhdGE6IFtdLCBoYXNfbW9yZTogZmFsc2UsIG5leHRfb2Zmc2V0OiBudWxsIH0pXG4gICAgICAgIHNldExvYWRpbmcoZmFsc2UpXG4gICAgICAgIHNldEVycm9yKG51bGwpXG4gICAgICAgIGlzUmVmcmVzaGluZ1JlZi5jdXJyZW50ID0gZmFsc2VcbiAgICAgICAgbGFzdFJlcXVlc3RSZWYuY3VycmVudCA9IG51bGxcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGlzTXVsdGlBZ2VudHMgPSAhIXdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1MgJiYgISF3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UU1xuXG4gICAgICB0cnkge1xuICAgICAgICBsZXQgYWdlbnRQYXJzZWQ6IEFnZW50W10gPSBbXVxuICAgICAgICBsZXQgaGFzTW9yZSA9IGZhbHNlXG4gICAgICAgIGxldCBuZXh0T2Zmc2V0OiBudW1iZXIgfCBudWxsID0gbnVsbFxuXG4gICAgICAgIC8vIFNpIHRpZW5lIGZlYXR1cmUgYWNjZXNzIG11bHRpIGFnZW50cywgaGFjZXIgZG9zIHF1ZXJpZXMgKE1haWEgKyBjdXN0b20pIGVuIGN1YWxxdWllciBzZWNjacOzblxuICAgICAgICBpZiAoaXNNdWx0aUFnZW50cykge1xuICAgICAgICAgIC8vIFF1ZXJ5IDE6IEFnZW50ZXMgY2xvbmUgKE1haWEpIC0gU29sbyBwYXJhIHJvbGVzIHBlcm1pdGlkb3MuIFB1ZWRlbiB2ZW5pciBtw7psdGlwbGVzIGFnZW50ZXMgdGlwbyBjbG9uZVxuICAgICAgICAgIGxldCBjbG9uZUFnZW50czogQWdlbnRbXSA9IFtdXG4gICAgICAgICAgaWYgKCF1c2VyUm9sZXNEaXNhYmxlZC5pbmNsdWRlcyh1c2VyLnJvbGVfaWQpKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICBjb25zdCBvcmRlclBhcmFtID1cbiAgICAgICAgICAgICAgICBzZWN0aW9uID09PSAnY2xpZW50JyA/ICcmb3JkZXI9Y2xpZW50LHByb2plY3QnIDogc2VjdGlvbiA9PT0gJ3Byb2plY3QnID8gJyZvcmRlcj1wcm9qZWN0LGNsaWVudCcgOiAnJ1xuICAgICAgICAgICAgICBjb25zdCBtYWlhUmVzcG9uc2UgPSBhd2FpdCBmZXRjaE1haWEoe1xuICAgICAgICAgICAgICAgIHBhdGg6IGBhZ2VudHM/YWdlbnRfdHlwZT1jbG9uZSZsYW5nPSR7bWFwQ09STGFuZyhpMThuLmxhbmd1YWdlKX0ke29yZGVyUGFyYW19YCxcbiAgICAgICAgICAgICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICBjb25zdCBtYWlhRGF0YSA9IGF3YWl0IG1haWFSZXNwb25zZS5qc29uKClcbiAgICAgICAgICAgICAgY2xvbmVBZ2VudHMgPSBtYWlhRGF0YS5kYXRhPy5maWx0ZXIoKGFnOiBBZ2VudCkgPT4gYWcudHlwZSA9PT0gJ2Nsb25lJykgfHwgW11cbiAgICAgICAgICAgIH0gY2F0Y2ggKG1haWFFcnJvcjogYW55KSB7XG4gICAgICAgICAgICAgIC8vIFZlcmlmaWNhciBzaSBlbCBlcnJvciBlcyA0MDNcbiAgICAgICAgICAgICAgLy8gZmV0Y2hDT1IgcHVlZGUgbGFuemFyIGRpZmVyZW50ZXMgdGlwb3MgZGUgZXJyb3JlczpcbiAgICAgICAgICAgICAgLy8gMS4gRXJyb3IgY29uIGVycm9yRGF0YS5kZXRhaWwgc2kgaW5jbHV5ZSAnQWNjZXNzIGRlbmllZCdcbiAgICAgICAgICAgICAgLy8gMi4gRXJyb3IgZ2Vuw6lyaWNvICdGYWlsZWQgZmV0Y2hpbmcgZGF0YScgc2kgZXMgNDAzIHBlcm8gbm8gaW5jbHV5ZSAnQWNjZXNzIGRlbmllZCdcbiAgICAgICAgICAgICAgLy8gMy4gTmVjZXNpdGFtb3MgdmVyaWZpY2FyIGVsIHN0YXR1cyBjb2RlIHNpIGVzdMOhIGRpc3BvbmlibGVcbiAgICAgICAgICAgICAgY29uc3QgaXM0MDNFcnJvciA9XG4gICAgICAgICAgICAgICAgbWFpYUVycm9yPy5yZXNwb25zZT8uc3RhdHVzID09PSA0MDMgfHxcbiAgICAgICAgICAgICAgICBtYWlhRXJyb3I/LnN0YXR1cyA9PT0gNDAzIHx8XG4gICAgICAgICAgICAgICAgbWFpYUVycm9yPy5tZXNzYWdlPy5pbmNsdWRlcyhcIllvdSBkb24ndCBoYXZlIHBlcm1pc3Npb24gdG8gdmlldyBhZ2VudHNcIikgfHxcbiAgICAgICAgICAgICAgICBtYWlhRXJyb3I/Lm1lc3NhZ2U/LmluY2x1ZGVzKCdGYWlsZWQgZmV0Y2hpbmcgZGF0YScpIC8vIGZldGNoQ09SIGxhbnphIGVzdG8gcGFyYSA0MDMgc2luICdBY2Nlc3MgZGVuaWVkJ1xuXG4gICAgICAgICAgICAgIGlmIChpczQwM0Vycm9yKSB7XG4gICAgICAgICAgICAgICAgLy8gU2kgZXMgNDAzLCBjb250aW51YXIgc2luIGxvcyBjbG9uZUFnZW50c1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIFNpIGVzIG90cm8gZXJyb3IsIGxhbnphcmxvXG4gICAgICAgICAgICAgICAgdGhyb3cgbWFpYUVycm9yXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBRdWVyeSAyOiBBZ2VudGVzIGN1c3RvbSBjb24gcGFnaW5hY2nDs25cbiAgICAgICAgICBsZXQgY3VzdG9tQWdlbnRzOiBBZ2VudFtdID0gW11cbiAgICAgICAgICBsZXQgY3VzdG9tSGFzTW9yZSA9IGZhbHNlXG4gICAgICAgICAgbGV0IGN1c3RvbU5leHRPZmZzZXQ6IG51bWJlciB8IG51bGwgPSBudWxsXG5cbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgY3VzdG9tUmVzcG9uc2UgPSBhd2FpdCBmZXRjaE1haWEoe1xuICAgICAgICAgICAgICBwYXRoOiAnYWdlbnRzP2FnZW50X3R5cGU9Y3VzdG9tJmxpbWl0PTcmb2Zmc2V0PTAnLFxuICAgICAgICAgICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIGNvbnN0IGN1c3RvbURhdGEgPSBhd2FpdCBjdXN0b21SZXNwb25zZS5qc29uKClcbiAgICAgICAgICAgIGN1c3RvbUFnZW50cyA9IGN1c3RvbURhdGEuZGF0YSB8fCBbXVxuICAgICAgICAgICAgY3VzdG9tSGFzTW9yZSA9IGN1c3RvbURhdGEuaGFzX21vcmUgfHwgZmFsc2VcbiAgICAgICAgICAgIGN1c3RvbU5leHRPZmZzZXQgPSBjdXN0b21EYXRhLm5leHRfb2Zmc2V0IHx8IG51bGxcbiAgICAgICAgICB9IGNhdGNoIChjdXN0b21FcnJvcjogYW55KSB7XG4gICAgICAgICAgICAvLyBWZXJpZmljYXIgc2kgZWwgZXJyb3IgZXMgNDAzXG4gICAgICAgICAgICAvLyBmZXRjaENPUiBwdWVkZSBsYW56YXIgZGlmZXJlbnRlcyB0aXBvcyBkZSBlcnJvcmVzOlxuICAgICAgICAgICAgLy8gMS4gRXJyb3IgY29uIGVycm9yRGF0YS5kZXRhaWwgc2kgaW5jbHV5ZSAnQWNjZXNzIGRlbmllZCdcbiAgICAgICAgICAgIC8vIDIuIEVycm9yIGdlbsOpcmljbyAnRmFpbGVkIGZldGNoaW5nIGRhdGEnIHNpIGVzIDQwMyBwZXJvIG5vIGluY2x1eWUgJ0FjY2VzcyBkZW5pZWQnXG4gICAgICAgICAgICAvLyAzLiBOZWNlc2l0YW1vcyB2ZXJpZmljYXIgZWwgc3RhdHVzIGNvZGUgc2kgZXN0w6EgZGlzcG9uaWJsZVxuICAgICAgICAgICAgY29uc3QgaXM0MDNFcnJvciA9XG4gICAgICAgICAgICAgIGN1c3RvbUVycm9yPy5yZXNwb25zZT8uc3RhdHVzID09PSA0MDMgfHxcbiAgICAgICAgICAgICAgY3VzdG9tRXJyb3I/LnN0YXR1cyA9PT0gNDAzIHx8XG4gICAgICAgICAgICAgIGN1c3RvbUVycm9yPy5tZXNzYWdlPy5pbmNsdWRlcyhcIllvdSBkb24ndCBoYXZlIHBlcm1pc3Npb24gdG8gdmlldyBhZ2VudHNcIikgfHxcbiAgICAgICAgICAgICAgY3VzdG9tRXJyb3I/Lm1lc3NhZ2U/LmluY2x1ZGVzKCdGYWlsZWQgZmV0Y2hpbmcgZGF0YScpIC8vIGZldGNoQ09SIGxhbnphIGVzdG8gcGFyYSA0MDMgc2luICdBY2Nlc3MgZGVuaWVkJ1xuXG4gICAgICAgICAgICBpZiAoaXM0MDNFcnJvcikge1xuICAgICAgICAgICAgICAvLyBTaSBlcyA0MDMsIGNvbnRpbnVhciBzaW4gbG9zIGN1c3RvbUFnZW50cyAoY3VzdG9tQWdlbnRzIHF1ZWRhIGNvbW8gYXJyYXkgdmFjw61vKVxuICAgICAgICAgICAgICAvLyBFc3RvIHB1ZWRlIG9jdXJyaXIgZW4gZG9zIGVzY2VuYXJpb3M6XG4gICAgICAgICAgICAgIC8vIDEuIFVzdWFyaW8gTk8gZXMgZGUgdXNlclJvbGVzRGlzYWJsZWQ6IHRlbmRyw6Egc29sbyBsb3MgY2xvbmVBZ2VudHMgKHNpIGxhIHF1ZXJ5IGNsb25lIGZ1ZSBleGl0b3NhKVxuICAgICAgICAgICAgICAvLyAyLiBVc3VhcmlvIFPDjSBlcyBkZSB1c2VyUm9sZXNEaXNhYmxlZDogZWwgbGlzdGFkbyBxdWVkYXLDoSB2YWPDrW8gKHBvcnF1ZSBubyBoYXkgY2xvbmVBZ2VudHMpXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAvLyBTaSBlcyBvdHJvIGVycm9yLCBsYW56YXJsb1xuICAgICAgICAgICAgICB0aHJvdyBjdXN0b21FcnJvclxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIENvbWJpbmFyOiBhZ2VudGVzIGNsb25lIHByaW1lcm8sIGx1ZWdvIGxvcyBjdXN0b20gKHNpIGV4aXN0ZW4pXG4gICAgICAgICAgLy8gU2kgZWwgdXN1YXJpbyB0aWVuZSB1biByb2wgZGVzaGFiaWxpdGFkbywgbm8gaW5jbHVpciBjbG9uZUFnZW50c1xuICAgICAgICAgIGlmICh1c2VyUm9sZXNEaXNhYmxlZC5pbmNsdWRlcyh1c2VyLnJvbGVfaWQpKSB7XG4gICAgICAgICAgICAvLyBVc3VhcmlvIGRlIHJvbGVzIGRpc2FibGVkOiBzb2xvIGN1c3RvbUFnZW50c1xuICAgICAgICAgICAgLy8gU2kgY3VzdG9tQWdlbnRzIGVzdMOhIHZhY8OtbyAocG9yIDQwMyksIGFnZW50UGFyc2VkIHNlcsOhIFtdIHkgc2UgbW9zdHJhcsOhIGVtcHR5U3RhdGVcbiAgICAgICAgICAgIGFnZW50UGFyc2VkID0gY3VzdG9tQWdlbnRzXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIFVzdWFyaW8gbm9ybWFsOiBjbG9uZUFnZW50cyArIGN1c3RvbUFnZW50c1xuICAgICAgICAgICAgLy8gU2kgY3VzdG9tQWdlbnRzIGVzdMOhIHZhY8OtbyAocG9yIDQwMykgcGVybyBoYXkgY2xvbmVBZ2VudHMsIGFnZW50UGFyc2VkIHRlbmRyw6EgbG9zIGNsb25lc1xuICAgICAgICAgICAgLy8gU2kgbm8gaGF5IGNsb25lQWdlbnRzIG5pIGN1c3RvbUFnZW50cywgYWdlbnRQYXJzZWQgc2Vyw6EgW10geSBzZSBtb3N0cmFyw6EgZW1wdHlTdGF0ZVxuICAgICAgICAgICAgYWdlbnRQYXJzZWQgPSBjbG9uZUFnZW50cy5sZW5ndGggPyBbLi4uY2xvbmVBZ2VudHMsIC4uLmN1c3RvbUFnZW50c10gOiBjdXN0b21BZ2VudHNcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gT3JkZW5hcjogTWFpYSBwcmltZXJvLCBsdWVnbyBmYXZvcml0b3MgYWxmYWLDqXRpY2FtZW50ZSwgbHVlZ28gbm8gZmF2b3JpdG9zIGFsZmFiw6l0aWNhbWVudGVcbiAgICAgICAgICBhZ2VudFBhcnNlZCA9IHNvcnRBZ2VudHMoYWdlbnRQYXJzZWQpXG4gICAgICAgICAgaGFzTW9yZSA9IGN1c3RvbUhhc01vcmVcbiAgICAgICAgICBuZXh0T2Zmc2V0ID0gY3VzdG9tTmV4dE9mZnNldFxuXG4gICAgICAgICAgc2V0QWdlbnRzKHtcbiAgICAgICAgICAgIGRhdGE6IGFnZW50UGFyc2VkLFxuICAgICAgICAgICAgaGFzX21vcmU6IGhhc01vcmUsXG4gICAgICAgICAgICBuZXh0X29mZnNldDogbmV4dE9mZnNldCxcbiAgICAgICAgICB9KVxuXG4gICAgICAgICAgLy8gU2kgbm8gaGF5IGFnZW50ZXMgZGVzcHXDqXMgZGUgcHJvY2VzYXIgbGFzIHF1ZXJpZXMsIGxpbXBpYXIgZWwgZXJyb3JcbiAgICAgICAgICAvLyBwYXJhIHF1ZSBoYXNOb0FnZW50cyBwdWVkYSBzZXIgdHJ1ZSB5IHNlIG11ZXN0cmUgZWwgZW1wdHlTdGF0ZVxuICAgICAgICAgIGlmIChhZ2VudFBhcnNlZC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHNldEVycm9yKG51bGwpXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIEzDs2dpY2EgcGFyYSBwcm9qZWN0IG8gaGVhZGVyIHNpbiBtdWx0aUFnZW50c1xuICAgICAgICAgIGNvbnN0IHF1ZXJ5UGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcygpXG4gICAgICAgICAgaWYgKHNlY3Rpb24gPT09ICdwcm9qZWN0JyB8fCBzZWN0aW9uID09PSAnY2xpZW50Jykge1xuICAgICAgICAgICAgcXVlcnlQYXJhbXMuYXBwZW5kKCdhZ2VudF90eXBlJywgJ2Nsb25lJylcbiAgICAgICAgICAgIHF1ZXJ5UGFyYW1zLmFwcGVuZCgnbGFuZycsIG1hcENPUkxhbmcoaTE4bi5sYW5ndWFnZSkpXG4gICAgICAgICAgICBxdWVyeVBhcmFtcy5hcHBlbmQoJ29yZGVyJywgc2VjdGlvbiA9PT0gJ2NsaWVudCcgPyAnY2xpZW50LHByb2plY3QnIDogJ3Byb2plY3QsY2xpZW50JylcbiAgICAgICAgICB9IGVsc2UgaWYgKHNlY3Rpb24gPT09ICdoZWFkZXInICYmICFpc011bHRpQWdlbnRzKSB7XG4gICAgICAgICAgICAvLyBIZWFkZXIgc2luIG11bHRpQWdlbnRzOiBzb2xvIGxpc3RhciBhZ2VudGVzIGNsb25lIChNYWlhKVxuICAgICAgICAgICAgcXVlcnlQYXJhbXMuYXBwZW5kKCdhZ2VudF90eXBlJywgJ2Nsb25lJylcbiAgICAgICAgICAgIHF1ZXJ5UGFyYW1zLmFwcGVuZCgnbGFuZycsIG1hcENPUkxhbmcoaTE4bi5sYW5ndWFnZSkpXG4gICAgICAgICAgICBxdWVyeVBhcmFtcy5hcHBlbmQoJ2xpbWl0JywgJzcnKVxuICAgICAgICAgICAgcXVlcnlQYXJhbXMuYXBwZW5kKCdvZmZzZXQnLCAnMCcpXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgcXVlcnlTdHJpbmcgPSBxdWVyeVBhcmFtcy50b1N0cmluZygpXG4gICAgICAgICAgY29uc3QgcGF0aCA9IGBhZ2VudHMke3F1ZXJ5U3RyaW5nID8gYD8ke3F1ZXJ5U3RyaW5nfWAgOiAnJ31gXG5cbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaE1haWEoe1xuICAgICAgICAgICAgICBwYXRoLFxuICAgICAgICAgICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgICAgICAgfSlcblxuICAgICAgICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKVxuICAgICAgICAgICAgLy8gZGF0YS5kYXRhIHlhIGNvbnRpZW5lIHRvZG9zIGxvcyBhZ2VudGVzIGNsb25lIGRlIGxhIHF1ZXJ5IGFnZW50X3R5cGU9Y2xvbmVcbiAgICAgICAgICAgIGFnZW50UGFyc2VkID0gZGF0YS5kYXRhIHx8IFtdXG4gICAgICAgICAgICAvLyBPcmRlbmFyOiBNYWlhIHByaW1lcm8sIGx1ZWdvIGZhdm9yaXRvcyBhbGZhYsOpdGljYW1lbnRlLCBsdWVnbyBubyBmYXZvcml0b3MgYWxmYWLDqXRpY2FtZW50ZVxuICAgICAgICAgICAgYWdlbnRQYXJzZWQgPSBzb3J0QWdlbnRzKGFnZW50UGFyc2VkKVxuICAgICAgICAgICAgaGFzTW9yZSA9IGRhdGEuaGFzX21vcmVcbiAgICAgICAgICAgIG5leHRPZmZzZXQgPSBkYXRhLm5leHRfb2Zmc2V0XG5cbiAgICAgICAgICAgIHNldEFnZW50cyh7XG4gICAgICAgICAgICAgIC4uLmRhdGEsXG4gICAgICAgICAgICAgIGRhdGE6IGFnZW50UGFyc2VkLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9IGNhdGNoIChyZXNwb25zZUVycm9yOiBhbnkpIHtcbiAgICAgICAgICAgIC8vIFZlcmlmaWNhciBzaSBlbCBlcnJvciBlcyA0MDNcbiAgICAgICAgICAgIC8vIGZldGNoQ09SIHB1ZWRlIGxhbnphciBkaWZlcmVudGVzIHRpcG9zIGRlIGVycm9yZXM6XG4gICAgICAgICAgICAvLyAxLiBFcnJvciBjb24gZXJyb3JEYXRhLmRldGFpbCBzaSBpbmNsdXllICdBY2Nlc3MgZGVuaWVkJ1xuICAgICAgICAgICAgLy8gMi4gRXJyb3IgZ2Vuw6lyaWNvICdGYWlsZWQgZmV0Y2hpbmcgZGF0YScgc2kgZXMgNDAzIHBlcm8gbm8gaW5jbHV5ZSAnQWNjZXNzIGRlbmllZCdcbiAgICAgICAgICAgIC8vIDMuIE5lY2VzaXRhbW9zIHZlcmlmaWNhciBlbCBzdGF0dXMgY29kZSBzaSBlc3TDoSBkaXNwb25pYmxlXG4gICAgICAgICAgICBjb25zdCBpczQwM0Vycm9yID1cbiAgICAgICAgICAgICAgcmVzcG9uc2VFcnJvcj8ucmVzcG9uc2U/LnN0YXR1cyA9PT0gNDAzIHx8XG4gICAgICAgICAgICAgIHJlc3BvbnNlRXJyb3I/LnN0YXR1cyA9PT0gNDAzIHx8XG4gICAgICAgICAgICAgIHJlc3BvbnNlRXJyb3I/Lm1lc3NhZ2U/LmluY2x1ZGVzKFwiWW91IGRvbid0IGhhdmUgcGVybWlzc2lvbiB0byB2aWV3IGFnZW50c1wiKSB8fFxuICAgICAgICAgICAgICByZXNwb25zZUVycm9yPy5tZXNzYWdlPy5pbmNsdWRlcygnRmFpbGVkIGZldGNoaW5nIGRhdGEnKSAvLyBmZXRjaENPUiBsYW56YSBlc3RvIHBhcmEgNDAzIHNpbiAnQWNjZXNzIGRlbmllZCdcblxuICAgICAgICAgICAgaWYgKGlzNDAzRXJyb3IpIHtcbiAgICAgICAgICAgICAgLy8gU2kgZXMgNDAzLCBlc3RhYmxlY2VyIGFnZW50ZXMgdmFjw61vcyB5IGNvbnRpbnVhclxuICAgICAgICAgICAgICBzZXRBZ2VudHMoe1xuICAgICAgICAgICAgICAgIGRhdGE6IFtdLFxuICAgICAgICAgICAgICAgIGhhc19tb3JlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBuZXh0X29mZnNldDogbnVsbCxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgLy8gTGltcGlhciBlbCBlcnJvciBwYXJhIHF1ZSBoYXNOb0FnZW50cyBwdWVkYSBzZXIgdHJ1ZSB5IHNlIG11ZXN0cmUgZWwgZW1wdHlTdGF0ZVxuICAgICAgICAgICAgICBzZXRFcnJvcihudWxsKVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgLy8gU2kgZXMgb3RybyBlcnJvciwgbGFuemFybG9cbiAgICAgICAgICAgICAgdGhyb3cgcmVzcG9uc2VFcnJvclxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEzDs2dpY2EgZGUgc2VsZWN0IGFnZW50IC0gU29sbyBzZWxlY2Npb25hciBzaSBoYXkgYWdlbnRlcyBkaXNwb25pYmxlc1xuICAgICAgICBpZiAoYWdlbnRQYXJzZWQubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGlmIChhZ2VudFRvU2VsZWN0ICYmIGFnZW50UGFyc2VkLmZpbmQoKGFnZW50VG9SZXF1ZXN0OiBBZ2VudCkgPT4gYWdlbnRUb1JlcXVlc3QuaWQgPT09IGFnZW50VG9TZWxlY3QuaWQpKSB7XG4gICAgICAgICAgICBpZiAobGFzdFNlbGVjdGVkQWdlbnRSZWYuY3VycmVudD8uaWQgIT09IGFnZW50VG9TZWxlY3QuaWQpIHtcbiAgICAgICAgICAgICAgbGFzdFNlbGVjdGVkQWdlbnRSZWYuY3VycmVudCA9IGFnZW50VG9TZWxlY3RcbiAgICAgICAgICAgICAgc2VsZWN0QWdlbnQoYWdlbnRUb1NlbGVjdClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2UgaWYgKGFnZW50UGFyc2VkPy5bMF0gJiYgKCFhZ2VudCB8fCAhYWdlbnRQYXJzZWQuZmluZCgoYTogQWdlbnQpID0+IGEuaWQgPT09IGFnZW50LmlkKSkpIHtcbiAgICAgICAgICAgIGNvbnN0IGF2YWlsYWJsZUFnZW50cyA9XG4gICAgICAgICAgICAgIHdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1MgJiYgIXVzZXJSb2xlc0Rpc2FibGVkLmluY2x1ZGVzKHVzZXIucm9sZV9pZClcbiAgICAgICAgICAgICAgICA/IGFnZW50UGFyc2VkXG4gICAgICAgICAgICAgICAgOiBhZ2VudFBhcnNlZC5maWx0ZXIoKGFnZW50SXRlbTogQWdlbnQpID0+IGFnZW50SXRlbS50eXBlICE9PSAnY2xvbmUnKVxuXG4gICAgICAgICAgICBjb25zdCBbZmlyc3RBZ2VudF0gPSBhdmFpbGFibGVBZ2VudHNcbiAgICAgICAgICAgIGlmIChmaXJzdEFnZW50ICYmIGxhc3RTZWxlY3RlZEFnZW50UmVmLmN1cnJlbnQ/LmlkICE9PSBmaXJzdEFnZW50LmlkKSB7XG4gICAgICAgICAgICAgIGxhc3RTZWxlY3RlZEFnZW50UmVmLmN1cnJlbnQgPSBmaXJzdEFnZW50XG4gICAgICAgICAgICAgIHNlbGVjdEFnZW50KGZpcnN0QWdlbnQpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIGlmIChhZ2VudFRvU2VsZWN0ICYmIGFnZW50UGFyc2VkPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbnN0IGF2YWlsYWJsZUFnZW50cyA9XG4gICAgICAgICAgICAgIHdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1MgJiYgIXVzZXJSb2xlc0Rpc2FibGVkLmluY2x1ZGVzKHVzZXIucm9sZV9pZClcbiAgICAgICAgICAgICAgICA/IGFnZW50UGFyc2VkXG4gICAgICAgICAgICAgICAgOiBhZ2VudFBhcnNlZC5maWx0ZXIoKGFnZW50SXRlbTogQWdlbnQpID0+IGFnZW50SXRlbS50eXBlICE9PSAnY2xvbmUnKVxuXG4gICAgICAgICAgICBjb25zdCBbZmlyc3RBdmFpbGFibGVBZ2VudF0gPSBhdmFpbGFibGVBZ2VudHNcbiAgICAgICAgICAgIGlmIChmaXJzdEF2YWlsYWJsZUFnZW50ICYmIGxhc3RTZWxlY3RlZEFnZW50UmVmLmN1cnJlbnQ/LmlkICE9PSBmaXJzdEF2YWlsYWJsZUFnZW50LmlkKSB7XG4gICAgICAgICAgICAgIGxhc3RTZWxlY3RlZEFnZW50UmVmLmN1cnJlbnQgPSBmaXJzdEF2YWlsYWJsZUFnZW50XG4gICAgICAgICAgICAgIHNlbGVjdEFnZW50KGZpcnN0QXZhaWxhYmxlQWdlbnQpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgc2V0TG9hZGluZyhmYWxzZSlcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBzZXRFcnJvcihlcnIgaW5zdGFuY2VvZiBFcnJvciA/IGVyci5tZXNzYWdlIDogJ0FuIHVua25vd24gZXJyb3Igb2NjdXJyZWQnKVxuICAgICAgICBzZXRMb2FkaW5nKGZhbHNlKVxuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgaXNSZWZyZXNoaW5nUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICBpZiAoIWlzUmVmcmVzaGluZ1JlZi5jdXJyZW50KSB7XG4gICAgICAgICAgICBsYXN0UmVxdWVzdFJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgICAgIH1cbiAgICAgICAgfSwgMTAwKVxuICAgICAgfVxuICAgIH0sXG4gICAgW3NlbGVjdEFnZW50LCBzZWN0aW9uLCBhZ2VudCwgbG9hZGluZ11cbiAgKVxuXG4gIGNvbnN0IGxvYWRNb3JlQWdlbnRzID0gdXNlQ2FsbGJhY2soYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGlzTXVsdGlBZ2VudHMgPSAhIXdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1MgJiYgISF3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UU1xuICAgIC8vIENhcmdhciBtw6FzOiBlbiBoZWFkZXIgc2llbXByZTsgZW4gcHJvamVjdCBzb2xvIHNpIGlzTXVsdGlBZ2VudHMgKHBvcnF1ZSBzb2xvIGVudG9uY2VzIGhheSBwYWdpbmFjacOzbiBkZSBjdXN0b20pXG4gICAgY29uc3QgY2FuTG9hZE1vcmUgPSBzZWN0aW9uID09PSAnaGVhZGVyJyB8fCBpc011bHRpQWdlbnRzXG4gICAgaWYgKCFjYW5Mb2FkTW9yZSB8fCAhYWdlbnRzLmhhc19tb3JlIHx8ICFhZ2VudHMubmV4dF9vZmZzZXQgfHwgbG9hZGluZ01vcmUpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHNldExvYWRpbmdNb3JlKHRydWUpXG4gICAgc2V0RXJyb3IobnVsbClcblxuICAgIHRyeSB7XG4gICAgICBsZXQgcGF0aDogc3RyaW5nXG5cbiAgICAgIC8vIFNpIGVzIG11bHRpQWdlbnRzLCBzb2xvIGNhcmdhciBhZ2VudHMgY3VzdG9tIChNYWlhIHlhIGVzdMOhIGNhcmdhZG8pXG4gICAgICBpZiAoaXNNdWx0aUFnZW50cykge1xuICAgICAgICBwYXRoID0gYGFnZW50cz9hZ2VudF90eXBlPWN1c3RvbSZsaW1pdD03Jm9mZnNldD0ke2FnZW50cy5uZXh0X29mZnNldH1gXG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBTaSBubyBlcyBtdWx0aUFnZW50cywgY2FyZ2FyIG3DoXMgYWdlbnRlcyBjbG9uZSAoTWFpYSlcbiAgICAgICAgY29uc3QgcXVlcnlQYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKClcbiAgICAgICAgcXVlcnlQYXJhbXMuYXBwZW5kKCdhZ2VudF90eXBlJywgJ2Nsb25lJylcbiAgICAgICAgcXVlcnlQYXJhbXMuYXBwZW5kKCdsYW5nJywgbWFwQ09STGFuZyhpMThuLmxhbmd1YWdlKSlcbiAgICAgICAgcXVlcnlQYXJhbXMuYXBwZW5kKCdsaW1pdCcsICc3JylcbiAgICAgICAgcXVlcnlQYXJhbXMuYXBwZW5kKCdvZmZzZXQnLCBhZ2VudHMubmV4dF9vZmZzZXQudG9TdHJpbmcoKSlcbiAgICAgICAgcGF0aCA9IGBhZ2VudHM/JHtxdWVyeVBhcmFtcy50b1N0cmluZygpfWBcbiAgICAgIH1cblxuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaE1haWEoe1xuICAgICAgICBwYXRoLFxuICAgICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgfSlcblxuICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKVxuXG4gICAgICAvLyBBY3VtdWxhciBhZ2VudGVzLCBleGNsdXllbmRvIGR1cGxpY2Fkb3NcbiAgICAgIHNldEFnZW50cyhwcmV2ID0+IHtcbiAgICAgICAgaWYgKGlzTXVsdGlBZ2VudHMpIHtcbiAgICAgICAgICAvLyBMw7NnaWNhIHBhcmEgbXVsdGlBZ2VudHM6IHNlcGFyYXIgY2xvbmUgeSBjdXN0b21cbiAgICAgICAgICAvLyBNYW50ZW5lciB0b2RvcyBsb3MgYWdlbnRlcyBjbG9uZSBleGlzdGVudGVzIGFsIGluaWNpb1xuICAgICAgICAgIGNvbnN0IGV4aXN0aW5nQ2xvbmVBZ2VudHMgPSBwcmV2LmRhdGEuZmlsdGVyKChhZzogQWdlbnQpID0+IGFnLnR5cGUgPT09ICdjbG9uZScpXG5cbiAgICAgICAgICAvLyBPYnRlbmVyIElEcyBleGlzdGVudGVzIChleGNsdXllbmRvIGNsb25lcylcbiAgICAgICAgICBjb25zdCBleGlzdGluZ0lkcyA9IG5ldyBTZXQocHJldi5kYXRhLmZpbHRlcigoYWc6IEFnZW50KSA9PiBhZy50eXBlICE9PSAnY2xvbmUnKS5tYXAoKGFnOiBBZ2VudCkgPT4gYWcuaWQpKVxuXG4gICAgICAgICAgLy8gRmlsdHJhciBudWV2b3MgYWdlbnRzIHF1ZSBubyBlc3TDqW4geWEgZW4gbGEgbGlzdGEgKHkgcXVlIG5vIHNlYW4gY2xvbmUpXG4gICAgICAgICAgY29uc3QgbmV3QWdlbnRzID0gZGF0YS5kYXRhLmZpbHRlcigoYWc6IEFnZW50KSA9PiBhZy50eXBlICE9PSAnY2xvbmUnICYmICFleGlzdGluZ0lkcy5oYXMoYWcuaWQpKVxuXG4gICAgICAgICAgLy8gQ29uc3RydWlyIGVsIG51ZXZvIGFycmF5OiBjbG9uZXMgcHJpbWVybywgbHVlZ28gbG9zIGFnZW50cyBleGlzdGVudGVzIHF1ZSBubyBzZWFuIGNsb25lLCBsdWVnbyBsb3MgbnVldm9zXG4gICAgICAgICAgY29uc3QgbmV3RGF0YSA9IGV4aXN0aW5nQ2xvbmVBZ2VudHMubGVuZ3RoXG4gICAgICAgICAgICA/IFsuLi5leGlzdGluZ0Nsb25lQWdlbnRzLCAuLi5wcmV2LmRhdGEuZmlsdGVyKChhZzogQWdlbnQpID0+IGFnLnR5cGUgIT09ICdjbG9uZScpLCAuLi5uZXdBZ2VudHNdXG4gICAgICAgICAgICA6IFsuLi5wcmV2LmRhdGEuZmlsdGVyKChhZzogQWdlbnQpID0+IGFnLnR5cGUgIT09ICdjbG9uZScpLCAuLi5uZXdBZ2VudHNdXG5cbiAgICAgICAgICAvLyBPcmRlbmFyOiBNYWlhIHByaW1lcm8sIGx1ZWdvIGZhdm9yaXRvcyBhbGZhYsOpdGljYW1lbnRlLCBsdWVnbyBubyBmYXZvcml0b3MgYWxmYWLDqXRpY2FtZW50ZVxuICAgICAgICAgIGNvbnN0IHNvcnRlZERhdGEgPSBzb3J0QWdlbnRzKG5ld0RhdGEpXG5cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZGF0YTogc29ydGVkRGF0YSxcbiAgICAgICAgICAgIGhhc19tb3JlOiBkYXRhLmhhc19tb3JlLFxuICAgICAgICAgICAgbmV4dF9vZmZzZXQ6IGRhdGEubmV4dF9vZmZzZXQsXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIEzDs2dpY2EgcGFyYSAhaXNNdWx0aUFnZW50czogdG9kb3MgbG9zIGFnZW50ZXMgc29uIGNsb25lLCBzaW1wbGVtZW50ZSBhZ3JlZ2FyIGV2aXRhbmRvIGR1cGxpY2Fkb3NcbiAgICAgICAgY29uc3QgZXhpc3RpbmdJZHMgPSBuZXcgU2V0KHByZXYuZGF0YS5tYXAoKGFnOiBBZ2VudCkgPT4gYWcuaWQpKVxuICAgICAgICBjb25zdCBuZXdBZ2VudHMgPSAoZGF0YS5kYXRhIHx8IFtdKS5maWx0ZXIoKGFnOiBBZ2VudCkgPT4gIWV4aXN0aW5nSWRzLmhhcyhhZy5pZCkpXG4gICAgICAgIGNvbnN0IG5ld0RhdGEgPSBbLi4ucHJldi5kYXRhLCAuLi5uZXdBZ2VudHNdXG5cbiAgICAgICAgLy8gT3JkZW5hcjogTWFpYSBwcmltZXJvLCBsdWVnbyBmYXZvcml0b3MgYWxmYWLDqXRpY2FtZW50ZSwgbHVlZ28gbm8gZmF2b3JpdG9zIGFsZmFiw6l0aWNhbWVudGVcbiAgICAgICAgY29uc3Qgc29ydGVkRGF0YSA9IHNvcnRBZ2VudHMobmV3RGF0YSlcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGRhdGE6IHNvcnRlZERhdGEsXG4gICAgICAgICAgaGFzX21vcmU6IGRhdGEuaGFzX21vcmUsXG4gICAgICAgICAgbmV4dF9vZmZzZXQ6IGRhdGEubmV4dF9vZmZzZXQsXG4gICAgICAgIH1cbiAgICAgIH0pXG5cbiAgICAgIHNldExvYWRpbmdNb3JlKGZhbHNlKVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgaGFuZGxlU25hY2tiYXJFcnJvcih0KCdzbmFja2Jhci5sb2FkTW9yZUFnZW50cy5lcnJvcicpKVxuICAgICAgc2V0TG9hZGluZ01vcmUoZmFsc2UpXG4gICAgfVxuICB9LCBbc2VjdGlvbiwgYWdlbnRzLmhhc19tb3JlLCBhZ2VudHMubmV4dF9vZmZzZXQsIGxvYWRpbmdNb3JlLCBpMThuLmxhbmd1YWdlXSlcblxuICBjb25zdCBoYXNOb0FnZW50cyA9ICFsb2FkaW5nICYmICFsb2FkaW5nTW9yZSAmJiAhZXJyb3IgJiYgYWdlbnRzLmRhdGEubGVuZ3RoID09PSAwXG5cbiAgcmV0dXJuIHtcbiAgICBhZ2VudHMsXG4gICAgbG9hZGluZyxcbiAgICBsb2FkaW5nTW9yZSxcbiAgICBlcnJvcixcbiAgICBoYXNOb0FnZW50cyxcbiAgICBoYW5kbGVHZXRBZ2VudHMsXG4gICAgbG9hZE1vcmVBZ2VudHMsXG4gICAgYWRkQWdlbnQsXG4gICAgcmVtb3ZlQWdlbnQsXG4gICAgdXBkYXRlQWdlbnQsXG4gICAgdXBkYXRlQWdlbnRGYXZvcml0ZSxcbiAgICBzZWxlY3RGaXJzdEFnZW50LFxuICAgIHNvcnRBZ2VudHNMaXN0LFxuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTQSxRQUFRLEVBQUVDLFdBQVcsRUFBRUMsTUFBTSxRQUFRLE9BQU87QUFDckQsU0FBU0MsY0FBYyxRQUFRLGVBQWU7QUFDOUMsU0FBU0Msa0JBQWtCLFFBQVEsc0RBQXNEO0FBQ3pGLFNBQVNDLFNBQVMsUUFBUSxXQUFXO0FBRXJDLFNBQVNDLE9BQU8sRUFBRUMsV0FBVyxRQUFRLDJCQUEyQjtBQUNoRSxTQUFTQyxVQUFVLFFBQVEscUJBQXFCOztB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
|
|
@@ -7,14 +7,15 @@ import { fetchMaia } from '../client';
|
|
|
7
7
|
export var getChatMessages = /*#__PURE__*/function () {
|
|
8
8
|
var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(_ref) {
|
|
9
9
|
var _data$data;
|
|
10
|
-
var chatId, _ref$offset, offset, currentUser, cancelledText, response, data, agentIsDeleted, firstMessage, agentNoPermission, projectId, projectName, projectDeleted, clientId, clientName, normalizeId, i, _message$project_meta, _message$client_metad, _message$client_metad2, message, rawProjectId, normalized, rawClientId, _normalized;
|
|
10
|
+
var chatId, _ref$offset, offset, currentUser, cancelledText, lang, langParam, response, data, agentIsDeleted, firstMessage, agentNoPermission, projectId, projectName, projectDeleted, clientId, clientName, normalizeId, i, _message$project_meta, _message$client_metad, _message$client_metad2, message, rawProjectId, normalized, rawClientId, _normalized;
|
|
11
11
|
return _regeneratorRuntime.wrap(function (_context) {
|
|
12
12
|
while (1) switch (_context.prev = _context.next) {
|
|
13
13
|
case 0:
|
|
14
|
-
chatId = _ref.chatId, _ref$offset = _ref.offset, offset = _ref$offset === void 0 ? 0 : _ref$offset, currentUser = _ref.currentUser, cancelledText = _ref.cancelledText;
|
|
14
|
+
chatId = _ref.chatId, _ref$offset = _ref.offset, offset = _ref$offset === void 0 ? 0 : _ref$offset, currentUser = _ref.currentUser, cancelledText = _ref.cancelledText, lang = _ref.lang;
|
|
15
|
+
langParam = lang ? "&lang=".concat(lang) : '';
|
|
15
16
|
_context.next = 1;
|
|
16
17
|
return fetchMaia({
|
|
17
|
-
path: "sessions/".concat(chatId, "?limit=20&offset=").concat(offset)
|
|
18
|
+
path: "sessions/".concat(chatId, "?limit=20&offset=").concat(offset).concat(langParam)
|
|
18
19
|
});
|
|
19
20
|
case 1:
|
|
20
21
|
response = _context.sent;
|
|
@@ -107,4 +108,4 @@ export var getChatMessages = /*#__PURE__*/function () {
|
|
|
107
108
|
return _ref2.apply(this, arguments);
|
|
108
109
|
};
|
|
109
110
|
}();
|
|
110
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJtYXBDaGF0TWVzc2FnZXMiLCJmZXRjaE1haWEiLCJnZXRDaGF0TWVzc2FnZXMiLCJfcmVmMiIsIl9hc3luY1RvR2VuZXJhdG9yIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJfY2FsbGVlIiwiX3JlZiIsIl9kYXRhJGRhdGEiLCJjaGF0SWQiLCJfcmVmJG9mZnNldCIsIm9mZnNldCIsImN1cnJlbnRVc2VyIiwiY2FuY2VsbGVkVGV4dCIsInJlc3BvbnNlIiwiZGF0YSIsImFnZW50SXNEZWxldGVkIiwiZmlyc3RNZXNzYWdlIiwiYWdlbnROb1Blcm1pc3Npb24iLCJwcm9qZWN0SWQiLCJwcm9qZWN0TmFtZSIsInByb2plY3REZWxldGVkIiwiY2xpZW50SWQiLCJjbGllbnROYW1lIiwibm9ybWFsaXplSWQiLCJpIiwiX21lc3NhZ2UkcHJvamVjdF9tZXRhIiwiX21lc3NhZ2UkY2xpZW50X21ldGFkIiwiX21lc3NhZ2UkY2xpZW50X21ldGFkMiIsIm1lc3NhZ2UiLCJyYXdQcm9qZWN0SWQiLCJub3JtYWxpemVkIiwicmF3Q2xpZW50SWQiLCJfbm9ybWFsaXplZCIsIndyYXAiLCJfY29udGV4dCIsInByZXYiLCJuZXh0IiwicGF0aCIsImNvbmNhdCIsInNlbnQiLCJqc29uIiwiZmluZCIsIml0ZW0iLCJhZ2VudF9pc19kZWxldGVkIiwiYWdlbnRfaWQiLCJhZ2VudF9uYW1lIiwiaWQiLCJuYW1lIiwiZW1vamkiLCJ0eXBlIiwiYWdlbnRfdHlwZSIsInVuZGVmaW5lZCIsIm51bSIsInBhcnNlSW50IiwiU3RyaW5nIiwiTnVtYmVyIiwiaXNOYU4iLCJsZW5ndGgiLCJwcm9qZWN0X21ldGFkYXRhIiwiaXNfZGVsZXRlZCIsImFicnVwdCIsImNsaWVudF9tZXRhZGF0YSIsIml0ZW1zIiwibmV4dEl0ZW0iLCJuZXh0X29mZnNldCIsImhhc01vcmUiLCJoYXNfbW9yZSIsImFnZW50RGVsZXRlZCIsImRlbGV0ZWRBdCIsImFnZW50X2RlbGV0ZWRfYXQiLCJoYXNBZ2VudEFjY2VzcyIsImhhc19hZ2VudF9hY2Nlc3MiLCJoYXNBZ2VudFBlcm1pc3Npb24iLCJoYXNfYWdlbnRfcGVybWlzc2lvbiIsInN0b3AiLCJfeCIsImFwcGx5IiwiYXJndW1lbnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3NlcnZpY2VzL21haWEvQ2hhdHMvZ2V0Q2hhdE1lc3NhZ2VzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9pbmRlbnQgKi9cbmltcG9ydCB7IENoYXRNZXNzYWdlLCBDaGF0TWVzc2FnZVVzZXIgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9DaGF0J1xuaW1wb3J0IHsgbWFwQ2hhdE1lc3NhZ2VzIH0gZnJvbSAnLi4vLi4vdXRpbHMvbWFwQ2hhdE1lc3NhZ2VzJ1xuaW1wb3J0IHsgZmV0Y2hNYWlhIH0gZnJvbSAnLi4vY2xpZW50J1xuXG50eXBlIEdldENoYXRNZXNzYWdlc1BhcmFtcyA9IHtcbiAgY2hhdElkOiBzdHJpbmdcbiAgb2Zmc2V0PzogbnVtYmVyXG4gIGN1cnJlbnRVc2VyOiBDaGF0TWVzc2FnZVVzZXJcbiAgY2FuY2VsbGVkVGV4dD86IHN0cmluZ1xufVxuXG5leHBvcnQgY29uc3QgZ2V0Q2hhdE1lc3NhZ2VzID0gYXN5bmMgKHtcbiAgY2hhdElkLFxuICBvZmZzZXQgPSAwLFxuICBjdXJyZW50VXNlcixcbiAgY2FuY2VsbGVkVGV4dCxcbn06IEdldENoYXRNZXNzYWdlc1BhcmFtcyk6IFByb21pc2U8e1xuICBpdGVtczogQ2hhdE1lc3NhZ2VbXVxuICBuZXh0SXRlbTogbnVtYmVyXG4gIGhhc01vcmU6IGJvb2xlYW5cbiAgYWdlbnREZWxldGVkPzoge1xuICAgIGlkOiBzdHJpbmdcbiAgICBuYW1lOiBzdHJpbmdcbiAgICBlbW9qaTogc3RyaW5nXG4gICAgZGVsZXRlZEF0OiBzdHJpbmcgfCBudWxsXG4gIH1cbiAgYWdlbnROb1Blcm1pc3Npb24/OiB7XG4gICAgaWQ6IHN0cmluZ1xuICAgIG5hbWU6IHN0cmluZ1xuICAgIGVtb2ppOiBzdHJpbmdcbiAgICB0eXBlOiBzdHJpbmdcbiAgfVxuICBoYXNBZ2VudEFjY2Vzcz86IGJvb2xlYW5cbiAgaGFzQWdlbnRQZXJtaXNzaW9uPzogYm9vbGVhblxuICBwcm9qZWN0SWQ/OiBudW1iZXJcbiAgcHJvamVjdE5hbWU/OiBzdHJpbmdcbiAgcHJvamVjdERlbGV0ZWQ/OiB7IG5hbWU6IHN0cmluZyB9XG4gIGNsaWVudElkPzogbnVtYmVyXG4gIGNsaWVudE5hbWU/OiBzdHJpbmdcbn0+ID0+IHtcbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaE1haWEoe1xuICAgIHBhdGg6IGBzZXNzaW9ucy8ke2NoYXRJZH0/bGltaXQ9MjAmb2Zmc2V0PSR7b2Zmc2V0fWAsXG4gIH0pXG5cbiAgY29uc3QgZGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKVxuXG4gIGNvbnN0IGFnZW50SXNEZWxldGVkID0gZGF0YS5kYXRhLmZpbmQoaXRlbSA9PiAhIWl0ZW0/LmFnZW50X2lzX2RlbGV0ZWQpXG5cbiAgLy8gRXh0cmFlciBkYXRhIGRlbCBhZ2VudGUgZGVsIHByaW1lciBtZW5zYWplIHBhcmEgY2Fzb3Mgc2luIHBlcm1pc29zXG4gIGNvbnN0IGZpcnN0TWVzc2FnZSA9IGRhdGEuZGF0YT8uWzBdXG4gIGNvbnN0IGFnZW50Tm9QZXJtaXNzaW9uID1cbiAgICBmaXJzdE1lc3NhZ2U/LmFnZW50X2lkICYmIGZpcnN0TWVzc2FnZT8uYWdlbnRfbmFtZVxuICAgICAgPyB7XG4gICAgICAgICAgaWQ6IGZpcnN0TWVzc2FnZS5hZ2VudF9pZCxcbiAgICAgICAgICBuYW1lOiBmaXJzdE1lc3NhZ2UuYWdlbnRfbmFtZSxcbiAgICAgICAgICBlbW9qaTogZmlyc3RNZXNzYWdlLmVtb2ppIHx8ICfwn6SWJyxcbiAgICAgICAgICB0eXBlOiBmaXJzdE1lc3NhZ2UuYWdlbnRfdHlwZSB8fCAnY3VzdG9tJyxcbiAgICAgICAgfVxuICAgICAgOiB1bmRlZmluZWRcblxuICAvLyBCdXNjYXIgcHJvamVjdF9tZXRhZGF0YSB5IGNsaWVudF9tZXRhZGF0YSBlbiB0b2RvcyBsb3MgbWVuc2FqZXMsIGRlc2RlIGVsIG3DoXMgcmVjaWVudGUgaGFjaWEgYXRyw6FzXG4gIC8vIHByb2plY3RfbWV0YWRhdGEuaWQgLyBjbGllbnRfbWV0YWRhdGEuaWQgcHVlZGVuIHZlbmlyIGNvbW8gc3RyaW5nIG8gbnVtYmVyIGRlc2RlIGVsIGJhY2tlbmRcbiAgbGV0IHByb2plY3RJZDogbnVtYmVyIHwgdW5kZWZpbmVkXG4gIGxldCBwcm9qZWN0TmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkXG4gIGxldCBwcm9qZWN0RGVsZXRlZDogeyBuYW1lOiBzdHJpbmcgfSB8IHVuZGVmaW5lZFxuICBsZXQgY2xpZW50SWQ6IG51bWJlciB8IHVuZGVmaW5lZFxuICBsZXQgY2xpZW50TmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkXG5cbiAgY29uc3Qgbm9ybWFsaXplSWQgPSAoaWQ6IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZCk6IG51bWJlciB8IHVuZGVmaW5lZCA9PiB7XG4gICAgaWYgKGlkID09IG51bGwpIHJldHVybiB1bmRlZmluZWRcbiAgICBjb25zdCBudW0gPSB0eXBlb2YgaWQgPT09ICdudW1iZXInID8gaWQgOiBwYXJzZUludChTdHJpbmcoaWQpLCAxMClcbiAgICByZXR1cm4gTnVtYmVyLmlzTmFOKG51bSkgPyB1bmRlZmluZWQgOiBudW1cbiAgfVxuXG4gIGZvciAobGV0IGkgPSBkYXRhLmRhdGEubGVuZ3RoIC0gMTsgaSA+PSAwOyBpIC09IDEpIHtcbiAgICBjb25zdCBtZXNzYWdlID0gZGF0YS5kYXRhW2ldXG4gICAgY29uc3QgcmF3UHJvamVjdElkID0gbWVzc2FnZT8ucHJvamVjdF9tZXRhZGF0YT8uaWRcbiAgICBpZiAocmF3UHJvamVjdElkICE9IG51bGwpIHtcbiAgICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSBub3JtYWxpemVJZChyYXdQcm9qZWN0SWQpXG4gICAgICBpZiAobm9ybWFsaXplZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHByb2plY3RJZCA9IG5vcm1hbGl6ZWRcbiAgICAgICAgcHJvamVjdE5hbWUgPSBtZXNzYWdlLnByb2plY3RfbWV0YWRhdGEhLm5hbWVcbiAgICAgICAgaWYgKG1lc3NhZ2UucHJvamVjdF9tZXRhZGF0YSEuaXNfZGVsZXRlZCA9PT0gdHJ1ZSkge1xuICAgICAgICAgIHByb2plY3REZWxldGVkID0geyBuYW1lOiBtZXNzYWdlLnByb2plY3RfbWV0YWRhdGEhLm5hbWUgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBicmVha1xuICAgIH1cbiAgICBjb25zdCByYXdDbGllbnRJZCA9IG1lc3NhZ2U/LmNsaWVudF9tZXRhZGF0YT8uaWRcbiAgICBpZiAocmF3Q2xpZW50SWQgIT0gbnVsbCAmJiBtZXNzYWdlPy5jbGllbnRfbWV0YWRhdGE/Lm5hbWUpIHtcbiAgICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSBub3JtYWxpemVJZChyYXdDbGllbnRJZClcbiAgICAgIGlmIChub3JtYWxpemVkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY2xpZW50SWQgPSBub3JtYWxpemVkXG4gICAgICAgIGNsaWVudE5hbWUgPSBtZXNzYWdlLmNsaWVudF9tZXRhZGF0YS5uYW1lXG4gICAgICB9XG4gICAgICBicmVha1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgaXRlbXM6IG1hcENoYXRNZXNzYWdlcyhkYXRhLmRhdGEsIGN1cnJlbnRVc2VyLCBjYW5jZWxsZWRUZXh0KSxcbiAgICBuZXh0SXRlbTogZGF0YS5uZXh0X29mZnNldCxcbiAgICBoYXNNb3JlOiBkYXRhLmhhc19tb3JlLFxuICAgIGFnZW50RGVsZXRlZDogYWdlbnRJc0RlbGV0ZWQ/LmFnZW50X2lzX2RlbGV0ZWRcbiAgICAgID8ge1xuICAgICAgICAgIGlkOiBhZ2VudElzRGVsZXRlZC5hZ2VudF9pZCxcbiAgICAgICAgICBuYW1lOiBhZ2VudElzRGVsZXRlZC5hZ2VudF9uYW1lLFxuICAgICAgICAgIGVtb2ppOiBhZ2VudElzRGVsZXRlZC5lbW9qaSxcbiAgICAgICAgICBkZWxldGVkQXQ6IGFnZW50SXNEZWxldGVkLmFnZW50X2RlbGV0ZWRfYXQsXG4gICAgICAgIH1cbiAgICAgIDogdW5kZWZpbmVkLFxuICAgIGFnZW50Tm9QZXJtaXNzaW9uLFxuICAgIGhhc0FnZW50QWNjZXNzOiBkYXRhLmhhc19hZ2VudF9hY2Nlc3MsXG4gICAgaGFzQWdlbnRQZXJtaXNzaW9uOiBkYXRhLmhhc19hZ2VudF9wZXJtaXNzaW9uLFxuICAgIHByb2plY3RJZCxcbiAgICBwcm9qZWN0TmFtZSxcbiAgICBwcm9qZWN0RGVsZXRlZCxcbiAgICBjbGllbnRJZCxcbiAgICBjbGllbnROYW1lLFxuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7O0FBQUE7O0FBRUEsU0FBU0EsZUFBZSxRQUFRLDZCQUE2QjtBQUM3RCxTQUFTQyxTQUFTLFFBQVEsV0FBVztBQVNyQyxPQUFPLElBQU1DLGVBQWU7RUFBQSxJQUFBQyxLQUFBLEdBQUFDLGlCQUFBLGNBQUFDLG1CQUFBLENBQUFDLElBQUEsQ0FBRyxTQUFBQyxRQUFBQyxJQUFBO0lBQUEsSUFBQUMsVUFBQTtJQUFBLElBQUFDLE1BQUEsRUFBQUMsV0FBQSxFQUFBQyxNQUFBLEVBQUFDLFdBQUEsRUFBQUMsYUFBQSxFQUFBQyxRQUFBLEVBQUFDLElBQUEsRUFBQUMsY0FBQSxFQUFBQyxZQUFBLEVBQUFDLGlCQUFBLEVBQUFDLFNBQUEsRUFBQUMsV0FBQSxFQUFBQyxjQUFBLEVBQUFDLFFBQUEsRUFBQUMsVUFBQSxFQUFBQyxXQUFBLEVBQUFDLENBQUEsRUFBQUMscUJBQUEsRUFBQUMscUJBQUEsRUFBQUMsc0JBQUEsRUFBQUMsT0FBQSxFQUFBQyxZQUFBLEVBQUFDLFVBQUEsRUFBQUMsV0FBQSxFQUFBQyxXQUFBO0lBQUEsT0FBQTdCLG1CQUFBLENBQUE4QixJQUFBLFdBQUFDLFFBQUE7TUFBQSxrQkFBQUEsUUFBQSxDQUFBQyxJQUFBLEdBQUFELFFBQUEsQ0FBQUUs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
|
|
111
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJtYXBDaGF0TWVzc2FnZXMiLCJmZXRjaE1haWEiLCJnZXRDaGF0TWVzc2FnZXMiLCJfcmVmMiIsIl9hc3luY1RvR2VuZXJhdG9yIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJfY2FsbGVlIiwiX3JlZiIsIl9kYXRhJGRhdGEiLCJjaGF0SWQiLCJfcmVmJG9mZnNldCIsIm9mZnNldCIsImN1cnJlbnRVc2VyIiwiY2FuY2VsbGVkVGV4dCIsImxhbmciLCJsYW5nUGFyYW0iLCJyZXNwb25zZSIsImRhdGEiLCJhZ2VudElzRGVsZXRlZCIsImZpcnN0TWVzc2FnZSIsImFnZW50Tm9QZXJtaXNzaW9uIiwicHJvamVjdElkIiwicHJvamVjdE5hbWUiLCJwcm9qZWN0RGVsZXRlZCIsImNsaWVudElkIiwiY2xpZW50TmFtZSIsIm5vcm1hbGl6ZUlkIiwiaSIsIl9tZXNzYWdlJHByb2plY3RfbWV0YSIsIl9tZXNzYWdlJGNsaWVudF9tZXRhZCIsIl9tZXNzYWdlJGNsaWVudF9tZXRhZDIiLCJtZXNzYWdlIiwicmF3UHJvamVjdElkIiwibm9ybWFsaXplZCIsInJhd0NsaWVudElkIiwiX25vcm1hbGl6ZWQiLCJ3cmFwIiwiX2NvbnRleHQiLCJwcmV2IiwibmV4dCIsImNvbmNhdCIsInBhdGgiLCJzZW50IiwianNvbiIsImZpbmQiLCJpdGVtIiwiYWdlbnRfaXNfZGVsZXRlZCIsImFnZW50X2lkIiwiYWdlbnRfbmFtZSIsImlkIiwibmFtZSIsImVtb2ppIiwidHlwZSIsImFnZW50X3R5cGUiLCJ1bmRlZmluZWQiLCJudW0iLCJwYXJzZUludCIsIlN0cmluZyIsIk51bWJlciIsImlzTmFOIiwibGVuZ3RoIiwicHJvamVjdF9tZXRhZGF0YSIsImlzX2RlbGV0ZWQiLCJhYnJ1cHQiLCJjbGllbnRfbWV0YWRhdGEiLCJpdGVtcyIsIm5leHRJdGVtIiwibmV4dF9vZmZzZXQiLCJoYXNNb3JlIiwiaGFzX21vcmUiLCJhZ2VudERlbGV0ZWQiLCJkZWxldGVkQXQiLCJhZ2VudF9kZWxldGVkX2F0IiwiaGFzQWdlbnRBY2Nlc3MiLCJoYXNfYWdlbnRfYWNjZXNzIiwiaGFzQWdlbnRQZXJtaXNzaW9uIiwiaGFzX2FnZW50X3Blcm1pc3Npb24iLCJzdG9wIiwiX3giLCJhcHBseSIsImFyZ3VtZW50cyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9tYWlhL0NoYXRzL2dldENoYXRNZXNzYWdlcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvaW5kZW50ICovXG5pbXBvcnQgeyBDaGF0TWVzc2FnZSwgQ2hhdE1lc3NhZ2VVc2VyIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvQ2hhdCdcbmltcG9ydCB7IG1hcENoYXRNZXNzYWdlcyB9IGZyb20gJy4uLy4uL3V0aWxzL21hcENoYXRNZXNzYWdlcydcbmltcG9ydCB7IGZldGNoTWFpYSB9IGZyb20gJy4uL2NsaWVudCdcblxudHlwZSBHZXRDaGF0TWVzc2FnZXNQYXJhbXMgPSB7XG4gIGNoYXRJZDogc3RyaW5nXG4gIG9mZnNldD86IG51bWJlclxuICBjdXJyZW50VXNlcjogQ2hhdE1lc3NhZ2VVc2VyXG4gIGNhbmNlbGxlZFRleHQ/OiBzdHJpbmdcbiAgbGFuZz86IHN0cmluZ1xufVxuXG5leHBvcnQgY29uc3QgZ2V0Q2hhdE1lc3NhZ2VzID0gYXN5bmMgKHtcbiAgY2hhdElkLFxuICBvZmZzZXQgPSAwLFxuICBjdXJyZW50VXNlcixcbiAgY2FuY2VsbGVkVGV4dCxcbiAgbGFuZyxcbn06IEdldENoYXRNZXNzYWdlc1BhcmFtcyk6IFByb21pc2U8e1xuICBpdGVtczogQ2hhdE1lc3NhZ2VbXVxuICBuZXh0SXRlbTogbnVtYmVyXG4gIGhhc01vcmU6IGJvb2xlYW5cbiAgYWdlbnREZWxldGVkPzoge1xuICAgIGlkOiBzdHJpbmdcbiAgICBuYW1lOiBzdHJpbmdcbiAgICBlbW9qaTogc3RyaW5nXG4gICAgZGVsZXRlZEF0OiBzdHJpbmcgfCBudWxsXG4gIH1cbiAgYWdlbnROb1Blcm1pc3Npb24/OiB7XG4gICAgaWQ6IHN0cmluZ1xuICAgIG5hbWU6IHN0cmluZ1xuICAgIGVtb2ppOiBzdHJpbmdcbiAgICB0eXBlOiBzdHJpbmdcbiAgfVxuICBoYXNBZ2VudEFjY2Vzcz86IGJvb2xlYW5cbiAgaGFzQWdlbnRQZXJtaXNzaW9uPzogYm9vbGVhblxuICBwcm9qZWN0SWQ/OiBudW1iZXJcbiAgcHJvamVjdE5hbWU/OiBzdHJpbmdcbiAgcHJvamVjdERlbGV0ZWQ/OiB7IG5hbWU6IHN0cmluZyB9XG4gIGNsaWVudElkPzogbnVtYmVyXG4gIGNsaWVudE5hbWU/OiBzdHJpbmdcbn0+ID0+IHtcbiAgY29uc3QgbGFuZ1BhcmFtID0gbGFuZyA/IGAmbGFuZz0ke2xhbmd9YCA6ICcnXG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2hNYWlhKHtcbiAgICBwYXRoOiBgc2Vzc2lvbnMvJHtjaGF0SWR9P2xpbWl0PTIwJm9mZnNldD0ke29mZnNldH0ke2xhbmdQYXJhbX1gLFxuICB9KVxuXG4gIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKClcblxuICBjb25zdCBhZ2VudElzRGVsZXRlZCA9IGRhdGEuZGF0YS5maW5kKGl0ZW0gPT4gISFpdGVtPy5hZ2VudF9pc19kZWxldGVkKVxuXG4gIC8vIEV4dHJhZXIgZGF0YSBkZWwgYWdlbnRlIGRlbCBwcmltZXIgbWVuc2FqZSBwYXJhIGNhc29zIHNpbiBwZXJtaXNvc1xuICBjb25zdCBmaXJzdE1lc3NhZ2UgPSBkYXRhLmRhdGE/LlswXVxuICBjb25zdCBhZ2VudE5vUGVybWlzc2lvbiA9XG4gICAgZmlyc3RNZXNzYWdlPy5hZ2VudF9pZCAmJiBmaXJzdE1lc3NhZ2U/LmFnZW50X25hbWVcbiAgICAgID8ge1xuICAgICAgICAgIGlkOiBmaXJzdE1lc3NhZ2UuYWdlbnRfaWQsXG4gICAgICAgICAgbmFtZTogZmlyc3RNZXNzYWdlLmFnZW50X25hbWUsXG4gICAgICAgICAgZW1vamk6IGZpcnN0TWVzc2FnZS5lbW9qaSB8fCAn8J+klicsXG4gICAgICAgICAgdHlwZTogZmlyc3RNZXNzYWdlLmFnZW50X3R5cGUgfHwgJ2N1c3RvbScsXG4gICAgICAgIH1cbiAgICAgIDogdW5kZWZpbmVkXG5cbiAgLy8gQnVzY2FyIHByb2plY3RfbWV0YWRhdGEgeSBjbGllbnRfbWV0YWRhdGEgZW4gdG9kb3MgbG9zIG1lbnNhamVzLCBkZXNkZSBlbCBtw6FzIHJlY2llbnRlIGhhY2lhIGF0csOhc1xuICAvLyBwcm9qZWN0X21ldGFkYXRhLmlkIC8gY2xpZW50X21ldGFkYXRhLmlkIHB1ZWRlbiB2ZW5pciBjb21vIHN0cmluZyBvIG51bWJlciBkZXNkZSBlbCBiYWNrZW5kXG4gIGxldCBwcm9qZWN0SWQ6IG51bWJlciB8IHVuZGVmaW5lZFxuICBsZXQgcHJvamVjdE5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZFxuICBsZXQgcHJvamVjdERlbGV0ZWQ6IHsgbmFtZTogc3RyaW5nIH0gfCB1bmRlZmluZWRcbiAgbGV0IGNsaWVudElkOiBudW1iZXIgfCB1bmRlZmluZWRcbiAgbGV0IGNsaWVudE5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZFxuXG4gIGNvbnN0IG5vcm1hbGl6ZUlkID0gKGlkOiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQpOiBudW1iZXIgfCB1bmRlZmluZWQgPT4ge1xuICAgIGlmIChpZCA9PSBudWxsKSByZXR1cm4gdW5kZWZpbmVkXG4gICAgY29uc3QgbnVtID0gdHlwZW9mIGlkID09PSAnbnVtYmVyJyA/IGlkIDogcGFyc2VJbnQoU3RyaW5nKGlkKSwgMTApXG4gICAgcmV0dXJuIE51bWJlci5pc05hTihudW0pID8gdW5kZWZpbmVkIDogbnVtXG4gIH1cblxuICBmb3IgKGxldCBpID0gZGF0YS5kYXRhLmxlbmd0aCAtIDE7IGkgPj0gMDsgaSAtPSAxKSB7XG4gICAgY29uc3QgbWVzc2FnZSA9IGRhdGEuZGF0YVtpXVxuICAgIGNvbnN0IHJhd1Byb2plY3RJZCA9IG1lc3NhZ2U/LnByb2plY3RfbWV0YWRhdGE/LmlkXG4gICAgaWYgKHJhd1Byb2plY3RJZCAhPSBudWxsKSB7XG4gICAgICBjb25zdCBub3JtYWxpemVkID0gbm9ybWFsaXplSWQocmF3UHJvamVjdElkKVxuICAgICAgaWYgKG5vcm1hbGl6ZWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBwcm9qZWN0SWQgPSBub3JtYWxpemVkXG4gICAgICAgIHByb2plY3ROYW1lID0gbWVzc2FnZS5wcm9qZWN0X21ldGFkYXRhIS5uYW1lXG4gICAgICAgIGlmIChtZXNzYWdlLnByb2plY3RfbWV0YWRhdGEhLmlzX2RlbGV0ZWQgPT09IHRydWUpIHtcbiAgICAgICAgICBwcm9qZWN0RGVsZXRlZCA9IHsgbmFtZTogbWVzc2FnZS5wcm9qZWN0X21ldGFkYXRhIS5uYW1lIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgYnJlYWtcbiAgICB9XG4gICAgY29uc3QgcmF3Q2xpZW50SWQgPSBtZXNzYWdlPy5jbGllbnRfbWV0YWRhdGE/LmlkXG4gICAgaWYgKHJhd0NsaWVudElkICE9IG51bGwgJiYgbWVzc2FnZT8uY2xpZW50X21ldGFkYXRhPy5uYW1lKSB7XG4gICAgICBjb25zdCBub3JtYWxpemVkID0gbm9ybWFsaXplSWQocmF3Q2xpZW50SWQpXG4gICAgICBpZiAobm9ybWFsaXplZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNsaWVudElkID0gbm9ybWFsaXplZFxuICAgICAgICBjbGllbnROYW1lID0gbWVzc2FnZS5jbGllbnRfbWV0YWRhdGEubmFtZVxuICAgICAgfVxuICAgICAgYnJlYWtcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGl0ZW1zOiBtYXBDaGF0TWVzc2FnZXMoZGF0YS5kYXRhLCBjdXJyZW50VXNlciwgY2FuY2VsbGVkVGV4dCksXG4gICAgbmV4dEl0ZW06IGRhdGEubmV4dF9vZmZzZXQsXG4gICAgaGFzTW9yZTogZGF0YS5oYXNfbW9yZSxcbiAgICBhZ2VudERlbGV0ZWQ6IGFnZW50SXNEZWxldGVkPy5hZ2VudF9pc19kZWxldGVkXG4gICAgICA/IHtcbiAgICAgICAgICBpZDogYWdlbnRJc0RlbGV0ZWQuYWdlbnRfaWQsXG4gICAgICAgICAgbmFtZTogYWdlbnRJc0RlbGV0ZWQuYWdlbnRfbmFtZSxcbiAgICAgICAgICBlbW9qaTogYWdlbnRJc0RlbGV0ZWQuZW1vamksXG4gICAgICAgICAgZGVsZXRlZEF0OiBhZ2VudElzRGVsZXRlZC5hZ2VudF9kZWxldGVkX2F0LFxuICAgICAgICB9XG4gICAgICA6IHVuZGVmaW5lZCxcbiAgICBhZ2VudE5vUGVybWlzc2lvbixcbiAgICBoYXNBZ2VudEFjY2VzczogZGF0YS5oYXNfYWdlbnRfYWNjZXNzLFxuICAgIGhhc0FnZW50UGVybWlzc2lvbjogZGF0YS5oYXNfYWdlbnRfcGVybWlzc2lvbixcbiAgICBwcm9qZWN0SWQsXG4gICAgcHJvamVjdE5hbWUsXG4gICAgcHJvamVjdERlbGV0ZWQsXG4gICAgY2xpZW50SWQsXG4gICAgY2xpZW50TmFtZSxcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOztBQUFBOztBQUVBLFNBQVNBLGVBQWUsUUFBUSw2QkFBNkI7QUFDN0QsU0FBU0MsU0FBUyxRQUFRLFdBQVc7QUFVckMsT0FBTyxJQUFNQyxlQUFlO0VBQUEsSUFBQUMsS0FBQSxHQUFBQyxpQkFBQSxjQUFBQyxtQkFBQSxDQUFBQyxJQUFBLENBQUcsU0FBQUMsUUFBQUMsSUFBQTtJQUFBLElBQUFDLFVBQUE7SUFBQSxJQUFBQyxNQUFBLEVBQUFDLFdBQUEsRUFBQUMsTUFBQSxFQUFBQyxXQUFBLEVBQUFDLGFBQUEsRUFBQUMsSUFBQSxFQUFBQyxTQUFBLEVBQUFDLFFBQUEsRUFBQUMsSUFBQSxFQUFBQyxjQUFBLEVBQUFDLFlBQUEsRUFBQUMsaUJBQUEsRUFBQUMsU0FBQSxFQUFBQyxXQUFBLEVBQUFDLGNBQUEsRUFBQUMsUUFBQSxFQUFBQyxVQUFBLEVBQUFDLFdBQUEsRUFBQUMsQ0FBQSxFQUFBQyxxQkFBQSxFQUFBQyxxQkFBQSxFQUFBQyxzQkFBQSxFQUFBQyxPQUFBLEVB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
|