@projectcor/maia-components 2.11.50 → 2.11.51-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/components/atoms/MAIAInput/MAIAInput.js +14 -5
- package/lib/components/molecules/ChatAIModal/ChatAIModal.js +5 -2
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.js +5 -4
- package/lib/components/molecules/Sidebar/Sidebar.js +3 -2
- package/lib/constants/maiaTaskPanelAccess.js +22 -0
- package/lib/services/maia/Agents/getAgents.js +55 -46
- package/lib/types/global.d.js +1 -1
- package/package.json +1 -1
|
@@ -17,7 +17,8 @@ import { useState, useCallback, useRef } from 'react';
|
|
|
17
17
|
import { useTranslation } from 'react-i18next';
|
|
18
18
|
import { useSnackBarManager } from '../../../hooks/useSnackBarManager/useSnackBarManager';
|
|
19
19
|
import { fetchMaia } from '../client';
|
|
20
|
-
import { useUser
|
|
20
|
+
import { useUser } from '../../../context/cor-user';
|
|
21
|
+
import { isMaiaCloneAgentsRoleBlocked } from '../../../constants/maiaTaskPanelAccess';
|
|
21
22
|
import { mapCORLang } from '../../../lang/utils';
|
|
22
23
|
|
|
23
24
|
/**
|
|
@@ -79,7 +80,7 @@ export var useGetAgents = function useGetAgents(_ref) {
|
|
|
79
80
|
var lastSelectedAgentRef = useRef(null);
|
|
80
81
|
var isRefreshingRef = useRef(false);
|
|
81
82
|
var lastRequestRef = useRef(null);
|
|
82
|
-
var
|
|
83
|
+
var canFetchCloneAgents = !isMaiaCloneAgentsRoleBlocked(user, section);
|
|
83
84
|
var addAgent = useCallback(function (newAgent, options) {
|
|
84
85
|
setAgents(function (prev) {
|
|
85
86
|
// Verificar si el agente ya existe para evitar duplicados
|
|
@@ -179,7 +180,7 @@ export var useGetAgents = function useGetAgents(_ref) {
|
|
|
179
180
|
var handleGetAgents = useCallback(/*#__PURE__*/function () {
|
|
180
181
|
var _ref5 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(agentToSelect) {
|
|
181
182
|
var _agentToSelect$id;
|
|
182
|
-
var requestKey, isMultiAgents, agentParsed, hasMore, nextOffset, cloneAgents, _maiaData$data, orderParam, maiaResponse, maiaData, _maiaError$response, _maiaError$message, _maiaError$message2, is403Error, customAgents, customHasMore, customNextOffset, customResponse, customData, _customError$response, _customError$message, _customError$message2, _is403Error,
|
|
183
|
+
var requestKey, isMultiAgents, agentParsed, hasMore, nextOffset, cloneAgents, _maiaData$data, orderParam, maiaResponse, maiaData, _maiaError$response, _maiaError$message, _maiaError$message2, is403Error, customAgents, customHasMore, customNextOffset, customResponse, customData, _customError$response, _customError$message, _customError$message2, _is403Error, shouldRequestCloneAgents, queryParams, path, response, data, _responseError$respon, _responseError$messag, _responseError$messag2, _is403Error2, _agentParsed, _agentParsed2, _lastSelectedAgentRef, _lastSelectedAgentRef2, availableAgents, _availableAgents, firstAgent, _lastSelectedAgentRef3, _availableAgents2, _availableAgents3, firstAvailableAgent, _t, _t2, _t3, _t4;
|
|
183
184
|
return _regeneratorRuntime.wrap(function (_context) {
|
|
184
185
|
while (1) switch (_context.prev = _context.next) {
|
|
185
186
|
case 0:
|
|
@@ -211,7 +212,7 @@ export var useGetAgents = function useGetAgents(_ref) {
|
|
|
211
212
|
}
|
|
212
213
|
// Query 1: Agentes clone (Maia) - Solo para roles permitidos. Pueden venir múltiples agentes tipo clone
|
|
213
214
|
cloneAgents = [];
|
|
214
|
-
if (
|
|
215
|
+
if (!canFetchCloneAgents) {
|
|
215
216
|
_context.next = 9;
|
|
216
217
|
break;
|
|
217
218
|
}
|
|
@@ -292,12 +293,12 @@ export var useGetAgents = function useGetAgents(_ref) {
|
|
|
292
293
|
case 15:
|
|
293
294
|
// Combinar: agentes clone primero, luego los custom (si existen)
|
|
294
295
|
// Si el usuario tiene un rol deshabilitado, no incluir cloneAgents
|
|
295
|
-
if (
|
|
296
|
-
//
|
|
296
|
+
if (!canFetchCloneAgents) {
|
|
297
|
+
// Rol sin acceso a clones (p. ej. colaborador fuera del piloto): solo customAgents
|
|
297
298
|
// Si customAgents está vacío (por 403), agentParsed será []
|
|
298
299
|
agentParsed = customAgents;
|
|
299
300
|
} else {
|
|
300
|
-
//
|
|
301
|
+
// Rol con acceso a clones: cloneAgents + customAgents
|
|
301
302
|
// Si customAgents está vacío (por 403) pero hay cloneAgents, agentParsed tendrá los clones
|
|
302
303
|
// Si no hay cloneAgents ni customAgents, agentParsed será []
|
|
303
304
|
agentParsed = cloneAgents.length ? [].concat(_toConsumableArray(cloneAgents), _toConsumableArray(customAgents)) : customAgents;
|
|
@@ -316,48 +317,56 @@ export var useGetAgents = function useGetAgents(_ref) {
|
|
|
316
317
|
if (agentParsed.length === 0) {
|
|
317
318
|
setError(null);
|
|
318
319
|
}
|
|
319
|
-
_context.next =
|
|
320
|
+
_context.next = 23;
|
|
320
321
|
break;
|
|
321
322
|
case 16:
|
|
322
|
-
|
|
323
|
+
shouldRequestCloneAgents = canFetchCloneAgents && (section === 'project' || section === 'client' || section === 'header' || section === 'task');
|
|
324
|
+
if (shouldRequestCloneAgents) {
|
|
325
|
+
_context.next = 17;
|
|
326
|
+
break;
|
|
327
|
+
}
|
|
328
|
+
setAgents({
|
|
329
|
+
data: [],
|
|
330
|
+
has_more: false,
|
|
331
|
+
next_offset: null
|
|
332
|
+
});
|
|
333
|
+
setError(null);
|
|
334
|
+
_context.next = 23;
|
|
335
|
+
break;
|
|
336
|
+
case 17:
|
|
323
337
|
queryParams = new URLSearchParams();
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
queryParams.append('offset', '0');
|
|
331
|
-
}
|
|
338
|
+
queryParams.append('agent_type', 'clone');
|
|
339
|
+
queryParams.append('lang', mapCORLang(i18n.language));
|
|
340
|
+
queryParams.append('order', section === 'client' ? 'client,project' : 'project,client');
|
|
341
|
+
if (section === 'header') {
|
|
342
|
+
queryParams.append('limit', '7');
|
|
343
|
+
queryParams.append('offset', '0');
|
|
332
344
|
}
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
_context.
|
|
336
|
-
_context.next = 18;
|
|
345
|
+
path = "agents?".concat(queryParams.toString());
|
|
346
|
+
_context.prev = 18;
|
|
347
|
+
_context.next = 19;
|
|
337
348
|
return fetchMaia({
|
|
338
349
|
path: path,
|
|
339
350
|
method: 'GET'
|
|
340
351
|
});
|
|
341
|
-
case
|
|
352
|
+
case 19:
|
|
342
353
|
response = _context.sent;
|
|
343
|
-
_context.next =
|
|
354
|
+
_context.next = 20;
|
|
344
355
|
return response.json();
|
|
345
|
-
case
|
|
356
|
+
case 20:
|
|
346
357
|
data = _context.sent;
|
|
347
|
-
// data.data ya contiene todos los agentes clone de la query agent_type=clone
|
|
348
358
|
agentParsed = data.data || [];
|
|
349
|
-
// Ordenar: Maia primero, luego favoritos alfabéticamente, luego no favoritos alfabéticamente
|
|
350
359
|
agentParsed = sortAgents(agentParsed);
|
|
351
360
|
hasMore = data.has_more;
|
|
352
361
|
nextOffset = data.next_offset;
|
|
353
362
|
setAgents(_objectSpread(_objectSpread({}, data), {}, {
|
|
354
363
|
data: agentParsed
|
|
355
364
|
}));
|
|
356
|
-
_context.next =
|
|
365
|
+
_context.next = 23;
|
|
357
366
|
break;
|
|
358
|
-
case
|
|
359
|
-
_context.prev =
|
|
360
|
-
_t3 = _context["catch"](
|
|
367
|
+
case 21:
|
|
368
|
+
_context.prev = 21;
|
|
369
|
+
_t3 = _context["catch"](18);
|
|
361
370
|
// Verificar si el error es 403
|
|
362
371
|
// fetchCOR puede lanzar diferentes tipos de errores:
|
|
363
372
|
// 1. Error con errorData.detail si incluye 'Access denied'
|
|
@@ -365,7 +374,7 @@ export var useGetAgents = function useGetAgents(_ref) {
|
|
|
365
374
|
// 3. Necesitamos verificar el status code si está disponible
|
|
366
375
|
_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
376
|
if (!_is403Error2) {
|
|
368
|
-
_context.next =
|
|
377
|
+
_context.next = 22;
|
|
369
378
|
break;
|
|
370
379
|
}
|
|
371
380
|
// Si es 403, establecer agentes vacíos y continuar
|
|
@@ -375,11 +384,11 @@ export var useGetAgents = function useGetAgents(_ref) {
|
|
|
375
384
|
next_offset: null
|
|
376
385
|
});
|
|
377
386
|
setError(null);
|
|
378
|
-
_context.next =
|
|
387
|
+
_context.next = 23;
|
|
379
388
|
break;
|
|
380
|
-
case 21:
|
|
381
|
-
throw _t3;
|
|
382
389
|
case 22:
|
|
390
|
+
throw _t3;
|
|
391
|
+
case 23:
|
|
383
392
|
// Lógica de select agent - Solo seleccionar si hay agentes disponibles
|
|
384
393
|
if (agentParsed.length > 0) {
|
|
385
394
|
if (agentToSelect && agentParsed.find(function (agentToRequest) {
|
|
@@ -392,7 +401,7 @@ export var useGetAgents = function useGetAgents(_ref) {
|
|
|
392
401
|
} else if ((_agentParsed = agentParsed) !== null && _agentParsed !== void 0 && _agentParsed[0] && (!agent || !agentParsed.find(function (a) {
|
|
393
402
|
return a.id === agent.id;
|
|
394
403
|
}))) {
|
|
395
|
-
availableAgents = window.MAIA_CHAT_AI_FEATURE_ACCESS &&
|
|
404
|
+
availableAgents = window.MAIA_CHAT_AI_FEATURE_ACCESS && canFetchCloneAgents ? agentParsed : agentParsed.filter(function (agentItem) {
|
|
396
405
|
return agentItem.type !== 'clone';
|
|
397
406
|
});
|
|
398
407
|
_availableAgents = _slicedToArray(availableAgents, 1), firstAgent = _availableAgents[0];
|
|
@@ -401,7 +410,7 @@ export var useGetAgents = function useGetAgents(_ref) {
|
|
|
401
410
|
selectAgent(firstAgent);
|
|
402
411
|
}
|
|
403
412
|
} else if (agentToSelect && (_agentParsed2 = agentParsed) !== null && _agentParsed2 !== void 0 && _agentParsed2.length) {
|
|
404
|
-
_availableAgents2 = window.MAIA_CHAT_AI_FEATURE_ACCESS &&
|
|
413
|
+
_availableAgents2 = window.MAIA_CHAT_AI_FEATURE_ACCESS && canFetchCloneAgents ? agentParsed : agentParsed.filter(function (agentItem) {
|
|
405
414
|
return agentItem.type !== 'clone';
|
|
406
415
|
});
|
|
407
416
|
_availableAgents3 = _slicedToArray(_availableAgents2, 1), firstAvailableAgent = _availableAgents3[0];
|
|
@@ -412,32 +421,32 @@ export var useGetAgents = function useGetAgents(_ref) {
|
|
|
412
421
|
}
|
|
413
422
|
}
|
|
414
423
|
setLoading(false);
|
|
415
|
-
_context.next =
|
|
424
|
+
_context.next = 25;
|
|
416
425
|
break;
|
|
417
|
-
case
|
|
418
|
-
_context.prev =
|
|
426
|
+
case 24:
|
|
427
|
+
_context.prev = 24;
|
|
419
428
|
_t4 = _context["catch"](3);
|
|
420
429
|
setError(_t4 instanceof Error ? _t4.message : 'An unknown error occurred');
|
|
421
430
|
setLoading(false);
|
|
422
|
-
case
|
|
423
|
-
_context.prev =
|
|
431
|
+
case 25:
|
|
432
|
+
_context.prev = 25;
|
|
424
433
|
isRefreshingRef.current = false;
|
|
425
434
|
setTimeout(function () {
|
|
426
435
|
if (!isRefreshingRef.current) {
|
|
427
436
|
lastRequestRef.current = null;
|
|
428
437
|
}
|
|
429
438
|
}, 100);
|
|
430
|
-
return _context.finish(
|
|
431
|
-
case
|
|
439
|
+
return _context.finish(25);
|
|
440
|
+
case 26:
|
|
432
441
|
case "end":
|
|
433
442
|
return _context.stop();
|
|
434
443
|
}
|
|
435
|
-
}, _callee, null, [[3,
|
|
444
|
+
}, _callee, null, [[3, 24, 25, 26], [4, 7], [10, 13], [18, 21]]);
|
|
436
445
|
}));
|
|
437
446
|
return function (_x) {
|
|
438
447
|
return _ref5.apply(this, arguments);
|
|
439
448
|
};
|
|
440
|
-
}(), [selectAgent, section, agent, loading]);
|
|
449
|
+
}(), [selectAgent, section, agent, loading, canFetchCloneAgents, i18n.language]);
|
|
441
450
|
var loadMoreAgents = useCallback(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
|
|
442
451
|
var isMultiAgents, canLoadMore, path, queryParams, response, data, _t5;
|
|
443
452
|
return _regeneratorRuntime.wrap(function (_context2) {
|
|
@@ -561,4 +570,4 @@ export var useGetAgents = function useGetAgents(_ref) {
|
|
|
561
570
|
sortAgentsList: sortAgentsList
|
|
562
571
|
};
|
|
563
572
|
};
|
|
564
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VTdGF0ZSIsInVzZUNhbGxiYWNrIiwidXNlUmVmIiwidXNlVHJhbnNsYXRpb24iLCJ1c2VTbmFja0Jhck1hbmFnZXIiLCJmZXRjaE1haWEiLCJ1c2VVc2VyIiwiQ09SVXNlclJvbGUiLCJtYXBDT1JMYW5nIiwic29ydEFnZW50cyIsImFnZW50cyIsImNsb25lQWdlbnRzIiwiZmlsdGVyIiwiYWciLCJ0eXBlIiwib3RoZXJBZ2VudHMiLCJmYXZvcml0ZXMiLCJpc19mYXZvcml0ZSIsInNvcnQiLCJhIiwiYiIsIm5hbWUiLCJsb2NhbGVDb21wYXJlIiwibm9uRmF2b3JpdGVzIiwibGVuZ3RoIiwiY29uY2F0IiwiX3RvQ29uc3VtYWJsZUFycmF5IiwidXNlR2V0QWdlbnRzIiwiX3JlZiIsInNlbGVjdEFnZW50Iiwic2VjdGlvbiIsImFnZW50IiwiaGFuZGxlR29Ib21lIiwidXNlciIsIl91c2VTdGF0ZSIsImRhdGEiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJzZXRBZ2VudHMiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImxvYWRpbmciLCJzZXRMb2FkaW5nIiwiX3VzZVN0YXRlNSIsIl91c2VTdGF0ZTYiLCJsb2FkaW5nTW9yZSIsInNldExvYWRpbmdNb3JlIiwiX3VzZVN0YXRlNyIsIl91c2VTdGF0ZTgiLCJlcnJvciIsInNldEVycm9yIiwiX3VzZVNuYWNrQmFyTWFuYWdlciIsImhhbmRsZVNuYWNrYmFyRXJyb3IiLCJfdXNlVHJhbnNsYXRpb24iLCJ0IiwiaTE4biIsImxhc3RTZWxlY3RlZEFnZW50UmVmIiwiaXNSZWZyZXNoaW5nUmVmIiwibGFzdFJlcXVlc3RSZWYiLCJ1c2VyUm9sZXNEaXNhYmxlZCIsIkNPTExBQk9SQVRPUiIsIkZSRUVMQU5DRVIiLCJDTElFTlQiLCJhZGRBZ2VudCIsIm5ld0FnZW50Iiwib3B0aW9ucyIsInByZXYiLCJhZ2VudEV4aXN0cyIsInNvbWUiLCJleGlzdGluZ0FnZW50IiwiaWQiLCJuZXdEYXRhIiwic29ydGVkRGF0YSIsIl9vYmplY3RTcHJlYWQiLCJuYXZpZ2F0ZUhvbWUiLCJyZW1vdmVBZ2VudCIsImFnZW50SWQiLCJ0b1N0cmluZyIsInVwZGF0ZUFnZW50IiwidXBkYXRlZEFnZW50IiwidXBkYXRlZERhdGEiLCJtYXAiLCJ1cGRhdGVBZ2VudEZhdm9yaXRlIiwic2hvdWxkU29ydCIsImFyZ3VtZW50cyIsInVuZGVmaW5lZCIsIl9yZWYyIiwibWVzc2FnZSIsImFnZW50RmllbGRzIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIiwiX2V4Y2x1ZGVkIiwibWVyZ2VkQWdlbnQiLCJmaW5hbERhdGEiLCJmaW5kIiwiX3JlZjMiLCJfZXhjbHVkZWQyIiwiX3JlZjQiLCJfZXhjbHVkZWQzIiwic29ydEFnZW50c0xpc3QiLCJzZWxlY3RGaXJzdEFnZW50IiwiZmlyc3RBZ2VudCIsImZpbmRJbmRleCIsImFnZW50RGF0YSIsImN1cnJlbnQiLCJoYW5kbGVHZXRBZ2VudHMiLCJfcmVmNSIsIl9hc3luY1RvR2VuZXJhdG9yIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJfY2FsbGVlIiwiYWdlbnRUb1NlbGVjdCIsIl9hZ2VudFRvU2VsZWN0JGlkIiwicmVxdWVzdEtleSIsImlzTXVsdGlBZ2VudHMiLCJhZ2VudFBhcnNlZCIsImhhc01vcmUiLCJuZXh0T2Zmc2V0IiwiX21haWFEYXRhJGRhdGEiLCJvcmRlclBhcmFtIiwibWFpYVJlc3BvbnNlIiwibWFpYURhdGEiLCJfbWFpYUVycm9yJHJlc3BvbnNlIiwiX21haWFFcnJvciRtZXNzYWdlIiwiX21haWFFcnJvciRtZXNzYWdlMiIsImlzNDAzRXJyb3IiLCJjdXN0b21BZ2VudHMiLCJjdXN0b21IYXNNb3JlIiwiY3VzdG9tTmV4dE9mZnNldCIsImN1c3RvbVJlc3BvbnNlIiwiY3VzdG9tRGF0YSIsIl9jdXN0b21FcnJvciRyZXNwb25zZSIsIl9jdXN0b21FcnJvciRtZXNzYWdlIiwiX2N1c3RvbUVycm9yJG1lc3NhZ2UyIiwiX2lzNDAzRXJyb3IiLCJxdWVyeVBhcmFtcyIsInF1ZXJ5U3RyaW5nIiwicGF0aCIsInJlc3BvbnNlIiwiX3Jlc3BvbnNlRXJyb3IkcmVzcG9uIiwiX3Jlc3BvbnNlRXJyb3IkbWVzc2FnIiwiX3Jlc3BvbnNlRXJyb3IkbWVzc2FnMiIsIl9pczQwM0Vycm9yMiIsIl9hZ2VudFBhcnNlZCIsIl9hZ2VudFBhcnNlZDIiLCJfbGFzdFNlbGVjdGVkQWdlbnRSZWYiLCJfbGFzdFNlbGVjdGVkQWdlbnRSZWYyIiwiYXZhaWxhYmxlQWdlbnRzIiwiX2F2YWlsYWJsZUFnZW50cyIsIl9sYXN0U2VsZWN0ZWRBZ2VudFJlZjMiLCJfYXZhaWxhYmxlQWdlbnRzMiIsIl9hdmFpbGFibGVBZ2VudHMzIiwiZmlyc3RBdmFpbGFibGVBZ2VudCIsIl90IiwiX3QyIiwiX3QzIiwiX3Q0Iiwid3JhcCIsIl9jb250ZXh0IiwibmV4dCIsImFicnVwdCIsIndpbmRvdyIsIk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTUyIsIk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFMiLCJpbmNsdWRlcyIsInJvbGVfaWQiLCJsYW5ndWFnZSIsIm1ldGhvZCIsInNlbnQiLCJqc29uIiwic3RhdHVzIiwiaGFzX21vcmUiLCJuZXh0X29mZnNldCIsIlVSTFNlYXJjaFBhcmFtcyIsImFwcGVuZCIsImFnZW50VG9SZXF1ZXN0IiwiYWdlbnRJdGVtIiwiRXJyb3IiLCJzZXRUaW1lb3V0IiwiZmluaXNoIiwic3RvcCIsIl94IiwiYXBwbHkiLCJsb2FkTW9yZUFnZW50cyIsIl9jYWxsZWUyIiwiY2FuTG9hZE1vcmUiLCJfdDUiLCJfY29udGV4dDIiLCJleGlzdGluZ0Nsb25lQWdlbnRzIiwiZXhpc3RpbmdJZHMiLCJTZXQiLCJuZXdBZ2VudHMiLCJoYXMiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvc2VydmljZXMvbWFpYS9BZ2VudHMvZ2V0QWdlbnRzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFycyAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tbmVzdGVkLXRlcm5hcnkgKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnNvbGUgKi9cbmltcG9ydCB7IHVzZVN0YXRlLCB1c2VDYWxsYmFjaywgdXNlUmVmIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gJ3JlYWN0LWkxOG5leHQnXG5pbXBvcnQgeyB1c2VTbmFja0Jhck1hbmFnZXIgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VTbmFja0Jhck1hbmFnZXIvdXNlU25hY2tCYXJNYW5hZ2VyJ1xuaW1wb3J0IHsgZmV0Y2hNYWlhIH0gZnJvbSAnLi4vY2xpZW50J1xuaW1wb3J0IHsgQWdlbnQgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9hZ2VudCdcbmltcG9ydCB7IHVzZVVzZXIsIENPUlVzZXJSb2xlIH0gZnJvbSAnLi4vLi4vLi4vY29udGV4dC9jb3ItdXNlcidcbmltcG9ydCB7IG1hcENPUkxhbmcgfSBmcm9tICcuLi8uLi8uLi9sYW5nL3V0aWxzJ1xuXG4vKipcbiAqIE9yZGVuYSBsb3MgYWdlbnRlczogYWdlbnRlcyBjbG9uZSBwcmltZXJvIChzaSBleGlzdGVuKSwgbHVlZ28gZmF2b3JpdG9zIGFsZmFiw6l0aWNhbWVudGUsIGx1ZWdvIG5vIGZhdm9yaXRvcyBhbGZhYsOpdGljYW1lbnRlXG4gKi9cbmNvbnN0IHNvcnRBZ2VudHMgPSAoYWdlbnRzOiBBZ2VudFtdKTogQWdlbnRbXSA9PiB7XG4gIC8vIFNlcGFyYXIgYWdlbnRlcyBjbG9uZSBkZWwgcmVzdG9cbiAgY29uc3QgY2xvbmVBZ2VudHMgPSBhZ2VudHMuZmlsdGVyKGFnID0+IGFnLnR5cGUgPT09ICdjbG9uZScpXG4gIGNvbnN0IG90aGVyQWdlbnRzID0gYWdlbnRzLmZpbHRlcihhZyA9PiBhZy50eXBlICE9PSAnY2xvbmUnKVxuXG4gIC8vIFNlcGFyYXIgZmF2b3JpdG9zIHkgbm8gZmF2b3JpdG9zXG4gIGNvbnN0IGZhdm9yaXRlcyA9IG90aGVyQWdlbnRzLmZpbHRlcihhZyA9PiBhZy5pc19mYXZvcml0ZSkuc29ydCgoYSwgYikgPT4gYS5uYW1lLmxvY2FsZUNvbXBhcmUoYi5uYW1lKSlcbiAgY29uc3Qgbm9uRmF2b3JpdGVzID0gb3RoZXJBZ2VudHMuZmlsdGVyKGFnID0+ICFhZy5pc19mYXZvcml0ZSkuc29ydCgoYSwgYikgPT4gYS5uYW1lLmxvY2FsZUNvbXBhcmUoYi5uYW1lKSlcblxuICAvLyBDb21iaW5hcjogY2xvbmVzIHByaW1lcm8sIGx1ZWdvIGZhdm9yaXRvcywgbHVlZ28gbm8gZmF2b3JpdG9zXG4gIHJldHVybiBjbG9uZUFnZW50cy5sZW5ndGggPyBbLi4uY2xvbmVBZ2VudHMsIC4uLmZhdm9yaXRlcywgLi4ubm9uRmF2b3JpdGVzXSA6IFsuLi5mYXZvcml0ZXMsIC4uLm5vbkZhdm9yaXRlc11cbn1cblxudHlwZSBVc2VHZXRBZ2VudHNQcm9wcyA9IHtcbiAgc2VsZWN0QWdlbnQ6IChhZ2VudDogQWdlbnQpID0+IHZvaWRcbiAgc2VjdGlvbjogJ3Byb2plY3QnIHwgJ2hlYWRlcicgfCAnY2xpZW50JyB8ICd0YXNrJ1xuICBhZ2VudDogQWdlbnQgfCBudWxsXG4gIGhhbmRsZUdvSG9tZTogKCkgPT4gdm9pZFxufVxuXG5leHBvcnQgdHlwZSBBZGRBZ2VudE9wdGlvbnMgPSB7XG4gIC8qKiBQb3IgZGVmZWN0byBgdHJ1ZWAgKGNvbXBvcnRhbWllbnRvIEFCTSkuIFBhc2FyIGBmYWxzZWAgYWwgaW5zZXJ0YXIgYWdlbnRlIGNyZWFkbyBwb3IgY2hhdCBzaW4gY2FtYmlhciBkZSB2aXN0YS4gKi9cbiAgbmF2aWdhdGVIb21lPzogYm9vbGVhblxufVxuXG5leHBvcnQgY29uc3QgdXNlR2V0QWdlbnRzID0gKHsgc2VsZWN0QWdlbnQsIHNlY3Rpb24sIGFnZW50LCBoYW5kbGVHb0hvbWUgfTogVXNlR2V0QWdlbnRzUHJvcHMpID0+IHtcbiAgY29uc3QgdXNlciA9IHVzZVVzZXIoKVxuICBjb25zdCBbYWdlbnRzLCBzZXRBZ2VudHNdID0gdXNlU3RhdGU8eyBkYXRhOiBBZ2VudFtdOyBoYXNfbW9yZT86IGJvb2xlYW47IG5leHRfb2Zmc2V0PzogbnVtYmVyIHwgbnVsbCB9Pih7IGRhdGE6IFtdIH0pXG4gIGNvbnN0IFtsb2FkaW5nLCBzZXRMb2FkaW5nXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbbG9hZGluZ01vcmUsIHNldExvYWRpbmdNb3JlXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbZXJyb3IsIHNldEVycm9yXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KG51bGwpXG4gIGNvbnN0IHsgaGFuZGxlU25hY2tiYXJFcnJvciB9ID0gdXNlU25hY2tCYXJNYW5hZ2VyKClcbiAgY29uc3QgeyB0LCBpMThuIH0gPSB1c2VUcmFuc2xhdGlvbignY2hhdF9haV9zZWN0aW9uJylcbiAgY29uc3QgbGFzdFNlbGVjdGVkQWdlbnRSZWYgPSB1c2VSZWY8QWdlbnQgfCBudWxsPihudWxsKVxuICBjb25zdCBpc1JlZnJlc2hpbmdSZWYgPSB1c2VSZWYoZmFsc2UpXG4gIGNvbnN0IGxhc3RSZXF1ZXN0UmVmID0gdXNlUmVmPHN0cmluZyB8IG51bGw+KG51bGwpXG5cbiAgY29uc3QgdXNlclJvbGVzRGlzYWJsZWQgPSBbQ09SVXNlclJvbGUuQ09MTEFCT1JBVE9SLCBDT1JVc2VyUm9sZS5GUkVFTEFOQ0VSLCBDT1JVc2VyUm9sZS5DTElFTlRdXG5cbiAgY29uc3QgYWRkQWdlbnQgPSB1c2VDYWxsYmFjayhcbiAgICAobmV3QWdlbnQ6IEFnZW50LCBvcHRpb25zPzogQWRkQWdlbnRPcHRpb25zKSA9PiB7XG4gICAgICBzZXRBZ2VudHMocHJldiA9PiB7XG4gICAgICAgIC8vIFZlcmlmaWNhciBzaSBlbCBhZ2VudGUgeWEgZXhpc3RlIHBhcmEgZXZpdGFyIGR1cGxpY2Fkb3NcbiAgICAgICAgY29uc3QgYWdlbnRFeGlzdHMgPSBwcmV2LmRhdGEuc29tZShleGlzdGluZ0FnZW50ID0+IGV4aXN0aW5nQWdlbnQuaWQgPT09IG5ld0FnZW50LmlkKVxuICAgICAgICBpZiAoYWdlbnRFeGlzdHMpIHtcbiAgICAgICAgICByZXR1cm4gcHJldlxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG5ld0RhdGEgPSBbLi4ucHJldi5kYXRhLCBuZXdBZ2VudF1cbiAgICAgICAgY29uc3Qgc29ydGVkRGF0YSA9IHNvcnRBZ2VudHMobmV3RGF0YSlcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5wcmV2LFxuICAgICAgICAgIGRhdGE6IHNvcnRlZERhdGEsXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICBpZiAob3B0aW9ucz8ubmF2aWdhdGVIb21lICE9PSBmYWxzZSkge1xuICAgICAgICBoYW5kbGVHb0hvbWUoKVxuICAgICAgfVxuICAgIH0sXG4gICAgW2hhbmRsZUdvSG9tZV1cbiAgKVxuXG4gIGNvbnN0IHJlbW92ZUFnZW50ID0gdXNlQ2FsbGJhY2soKGFnZW50SWQ6IG51bWJlciB8IHN0cmluZykgPT4ge1xuICAgIHNldEFnZW50cyhwcmV2ID0+ICh7XG4gICAgICAuLi5wcmV2LFxuICAgICAgZGF0YTogcHJldi5kYXRhLmZpbHRlcihhID0+IGEuaWQgIT09IGFnZW50SWQudG9TdHJpbmcoKSksXG4gICAgfSkpXG4gIH0sIFtdKVxuXG4gIGNvbnN0IHVwZGF0ZUFnZW50ID0gdXNlQ2FsbGJhY2soKHVwZGF0ZWRBZ2VudDogQWdlbnQpID0+IHtcbiAgICBzZXRBZ2VudHMocHJldiA9PiB7XG4gICAgICBjb25zdCB1cGRhdGVkRGF0YSA9IHByZXYuZGF0YS5tYXAoZXhpc3RpbmdBZ2VudCA9PlxuICAgICAgICBleGlzdGluZ0FnZW50LmlkID09PSB1cGRhdGVkQWdlbnQuaWQgPyB1cGRhdGVkQWdlbnQgOiBleGlzdGluZ0FnZW50XG4gICAgICApXG4gICAgICBjb25zdCBzb3J0ZWREYXRhID0gc29ydEFnZW50cyh1cGRhdGVkRGF0YSlcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnByZXYsXG4gICAgICAgIGRhdGE6IHNvcnRlZERhdGEsXG4gICAgICB9XG4gICAgfSlcbiAgfSwgW10pXG5cbiAgY29uc3QgdXBkYXRlQWdlbnRGYXZvcml0ZSA9IHVzZUNhbGxiYWNrKFxuICAgICh1cGRhdGVkQWdlbnQ6IEFnZW50LCBzaG91bGRTb3J0OiBib29sZWFuID0gZmFsc2UpID0+IHtcbiAgICAgIHNldEFnZW50cyhwcmV2ID0+IHtcbiAgICAgICAgY29uc3QgdXBkYXRlZERhdGEgPSBwcmV2LmRhdGEubWFwKGV4aXN0aW5nQWdlbnQgPT4ge1xuICAgICAgICAgIGlmIChleGlzdGluZ0FnZW50LmlkID09PSB1cGRhdGVkQWdlbnQuaWQpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgbWVzc2FnZSwgLi4uYWdlbnRGaWVsZHMgfSA9IHVwZGF0ZWRBZ2VudCBhcyBhbnlcbiAgICAgICAgICAgIGNvbnN0IG1lcmdlZEFnZW50ID0geyAuLi5leGlzdGluZ0FnZW50LCAuLi5hZ2VudEZpZWxkcyB9XG4gICAgICAgICAgICByZXR1cm4gbWVyZ2VkQWdlbnRcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGV4aXN0aW5nQWdlbnRcbiAgICAgICAgfSlcblxuICAgICAgICAvLyBTb2xvIG9yZGVuYXIgc2kgc2hvdWxkU29ydCBlcyB0cnVlXG4gICAgICAgIGNvbnN0IGZpbmFsRGF0YSA9IHNob3VsZFNvcnQgPyBzb3J0QWdlbnRzKHVwZGF0ZWREYXRhKSA6IHVwZGF0ZWREYXRhXG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5wcmV2LFxuICAgICAgICAgIGRhdGE6IGZpbmFsRGF0YSxcbiAgICAgICAgfVxuICAgICAgfSlcblxuICAgICAgLy8gQWN0dWFsaXphciBlbCBhZ2VudGUgc2VsZWNjaW9uYWRvIHNpIGVzIGVsIHF1ZSBzZSBlc3TDoSBhY3R1YWxpemFuZG9cbiAgICAgIGlmIChhZ2VudD8uaWQgPT09IHVwZGF0ZWRBZ2VudC5pZCkge1xuICAgICAgICBjb25zdCBleGlzdGluZ0FnZW50ID0gYWdlbnRzLmRhdGEuZmluZChhID0+IGEuaWQgPT09IHVwZGF0ZWRBZ2VudC5pZClcbiAgICAgICAgaWYgKGV4aXN0aW5nQWdlbnQpIHtcbiAgICAgICAgICBjb25zdCB7IG1lc3NhZ2UsIC4uLmFnZW50RmllbGRzIH0gPSB1cGRhdGVkQWdlbnQgYXMgYW55XG4gICAgICAgICAgY29uc3QgbWVyZ2VkQWdlbnQgPSB7IC4uLmV4aXN0aW5nQWdlbnQsIC4uLmFnZW50RmllbGRzIH1cbiAgICAgICAgICBzZWxlY3RBZ2VudChtZXJnZWRBZ2VudClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCB7IG1lc3NhZ2UsIC4uLmFnZW50RmllbGRzIH0gPSB1cGRhdGVkQWdlbnQgYXMgYW55XG4gICAgICAgICAgc2VsZWN0QWdlbnQoYWdlbnRGaWVsZHMgYXMgQWdlbnQpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIFthZ2VudCwgc2VsZWN0QWdlbnQsIGFnZW50cy5kYXRhXVxuICApXG5cbiAgY29uc3Qgc29ydEFnZW50c0xpc3QgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgc2V0QWdlbnRzKHByZXYgPT4ge1xuICAgICAgY29uc3Qgc29ydGVkRGF0YSA9IHNvcnRBZ2VudHMocHJldi5kYXRhKVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ucHJldixcbiAgICAgICAgZGF0YTogc29ydGVkRGF0YSxcbiAgICAgIH1cbiAgICB9KVxuICB9LCBbXSlcblxuICBjb25zdCBzZWxlY3RGaXJzdEFnZW50ID0gdXNlQ2FsbGJhY2soXG4gICAgKGFnZW50SWQ/OiBzdHJpbmcpID0+IHtcbiAgICAgIGlmIChhZ2VudHMuZGF0YS5sZW5ndGgpIHtcbiAgICAgICAgY29uc3QgZmlyc3RBZ2VudCA9IGFnZW50cy5kYXRhLmZpbmRJbmRleChhZ2VudERhdGEgPT4gYWdlbnREYXRhLmlkID09PSBhZ2VudElkKVxuICAgICAgICBsYXN0U2VsZWN0ZWRBZ2VudFJlZi5jdXJyZW50ID0gYWdlbnRzLmRhdGFbZmlyc3RBZ2VudCA9PT0gMCA/IDEgOiAwXVxuICAgICAgICBzZWxlY3RBZ2VudChhZ2VudHMuZGF0YVtmaXJzdEFnZW50ID09PSAwID8gMSA6IDBdKVxuICAgICAgfVxuICAgIH0sXG4gICAgW2FnZW50cy5kYXRhLCBzZWxlY3RBZ2VudF1cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZUdldEFnZW50cyA9IHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jIChhZ2VudFRvU2VsZWN0PzogQWdlbnQpID0+IHtcbiAgICAgIGlmIChpc1JlZnJlc2hpbmdSZWYuY3VycmVudCkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgY29uc3QgcmVxdWVzdEtleSA9IGFnZW50VG9TZWxlY3Q/LmlkPy50b1N0cmluZygpIHx8ICdkZWZhdWx0J1xuICAgICAgaWYgKGxhc3RSZXF1ZXN0UmVmLmN1cnJlbnQgPT09IHJlcXVlc3RLZXkgJiYgIWxvYWRpbmcpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGlzUmVmcmVzaGluZ1JlZi5jdXJyZW50ID0gdHJ1ZVxuICAgICAgbGFzdFJlcXVlc3RSZWYuY3VycmVudCA9IHJlcXVlc3RLZXlcbiAgICAgIHNldExvYWRpbmcodHJ1ZSlcbiAgICAgIHNldEVycm9yKG51bGwpXG5cbiAgICAgIGNvbnN0IGlzTXVsdGlBZ2VudHMgPSAhIXdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1MgJiYgISF3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UU1xuXG4gICAgICB0cnkge1xuICAgICAgICBsZXQgYWdlbnRQYXJzZWQ6IEFnZW50W10gPSBbXVxuICAgICAgICBsZXQgaGFzTW9yZSA9IGZhbHNlXG4gICAgICAgIGxldCBuZXh0T2Zmc2V0OiBudW1iZXIgfCBudWxsID0gbnVsbFxuXG4gICAgICAgIC8vIFNpIHRpZW5lIGZlYXR1cmUgYWNjZXNzIG11bHRpIGFnZW50cywgaGFjZXIgZG9zIHF1ZXJpZXMgKE1haWEgKyBjdXN0b20pIGVuIGN1YWxxdWllciBzZWNjacOzblxuICAgICAgICBpZiAoaXNNdWx0aUFnZW50cykge1xuICAgICAgICAgIC8vIFF1ZXJ5IDE6IEFnZW50ZXMgY2xvbmUgKE1haWEpIC0gU29sbyBwYXJhIHJvbGVzIHBlcm1pdGlkb3MuIFB1ZWRlbiB2ZW5pciBtw7psdGlwbGVzIGFnZW50ZXMgdGlwbyBjbG9uZVxuICAgICAgICAgIGxldCBjbG9uZUFnZW50czogQWdlbnRbXSA9IFtdXG4gICAgICAgICAgaWYgKCF1c2VyUm9sZXNEaXNhYmxlZC5pbmNsdWRlcyh1c2VyLnJvbGVfaWQpKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICBjb25zdCBvcmRlclBhcmFtID1cbiAgICAgICAgICAgICAgICBzZWN0aW9uID09PSAnY2xpZW50J1xuICAgICAgICAgICAgICAgICAgPyAnJm9yZGVyPWNsaWVudCxwcm9qZWN0J1xuICAgICAgICAgICAgICAgICAgOiBzZWN0aW9uID09PSAncHJvamVjdCcgfHwgc2VjdGlvbiA9PT0gJ2hlYWRlcicgfHwgc2VjdGlvbiA9PT0gJ3Rhc2snXG4gICAgICAgICAgICAgICAgICAgID8gJyZvcmRlcj1wcm9qZWN0LGNsaWVudCdcbiAgICAgICAgICAgICAgICAgICAgOiAnJ1xuICAgICAgICAgICAgICBjb25zdCBtYWlhUmVzcG9uc2UgPSBhd2FpdCBmZXRjaE1haWEoe1xuICAgICAgICAgICAgICAgIHBhdGg6IGBhZ2VudHM/YWdlbnRfdHlwZT1jbG9uZSZsYW5nPSR7bWFwQ09STGFuZyhpMThuLmxhbmd1YWdlKX0ke29yZGVyUGFyYW19YCxcbiAgICAgICAgICAgICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICBjb25zdCBtYWlhRGF0YSA9IGF3YWl0IG1haWFSZXNwb25zZS5qc29uKClcbiAgICAgICAgICAgICAgY2xvbmVBZ2VudHMgPSBtYWlhRGF0YS5kYXRhPy5maWx0ZXIoKGFnOiBBZ2VudCkgPT4gYWcudHlwZSA9PT0gJ2Nsb25lJykgfHwgW11cbiAgICAgICAgICAgIH0gY2F0Y2ggKG1haWFFcnJvcjogYW55KSB7XG4gICAgICAgICAgICAgIC8vIFZlcmlmaWNhciBzaSBlbCBlcnJvciBlcyA0MDNcbiAgICAgICAgICAgICAgLy8gZmV0Y2hDT1IgcHVlZGUgbGFuemFyIGRpZmVyZW50ZXMgdGlwb3MgZGUgZXJyb3JlczpcbiAgICAgICAgICAgICAgLy8gMS4gRXJyb3IgY29uIGVycm9yRGF0YS5kZXRhaWwgc2kgaW5jbHV5ZSAnQWNjZXNzIGRlbmllZCdcbiAgICAgICAgICAgICAgLy8gMi4gRXJyb3IgZ2Vuw6lyaWNvICdGYWlsZWQgZmV0Y2hpbmcgZGF0YScgc2kgZXMgNDAzIHBlcm8gbm8gaW5jbHV5ZSAnQWNjZXNzIGRlbmllZCdcbiAgICAgICAgICAgICAgLy8gMy4gTmVjZXNpdGFtb3MgdmVyaWZpY2FyIGVsIHN0YXR1cyBjb2RlIHNpIGVzdMOhIGRpc3BvbmlibGVcbiAgICAgICAgICAgICAgY29uc3QgaXM0MDNFcnJvciA9XG4gICAgICAgICAgICAgICAgbWFpYUVycm9yPy5yZXNwb25zZT8uc3RhdHVzID09PSA0MDMgfHxcbiAgICAgICAgICAgICAgICBtYWlhRXJyb3I/LnN0YXR1cyA9PT0gNDAzIHx8XG4gICAgICAgICAgICAgICAgbWFpYUVycm9yPy5tZXNzYWdlPy5pbmNsdWRlcyhcIllvdSBkb24ndCBoYXZlIHBlcm1pc3Npb24gdG8gdmlldyBhZ2VudHNcIikgfHxcbiAgICAgICAgICAgICAgICBtYWlhRXJyb3I/Lm1lc3NhZ2U/LmluY2x1ZGVzKCdGYWlsZWQgZmV0Y2hpbmcgZGF0YScpIC8vIGZldGNoQ09SIGxhbnphIGVzdG8gcGFyYSA0MDMgc2luICdBY2Nlc3MgZGVuaWVkJ1xuXG4gICAgICAgICAgICAgIGlmIChpczQwM0Vycm9yKSB7XG4gICAgICAgICAgICAgICAgLy8gU2kgZXMgNDAzLCBjb250aW51YXIgc2luIGxvcyBjbG9uZUFnZW50c1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIFNpIGVzIG90cm8gZXJyb3IsIGxhbnphcmxvXG4gICAgICAgICAgICAgICAgdGhyb3cgbWFpYUVycm9yXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBRdWVyeSAyOiBBZ2VudGVzIGN1c3RvbSBjb24gcGFnaW5hY2nDs25cbiAgICAgICAgICBsZXQgY3VzdG9tQWdlbnRzOiBBZ2VudFtdID0gW11cbiAgICAgICAgICBsZXQgY3VzdG9tSGFzTW9yZSA9IGZhbHNlXG4gICAgICAgICAgbGV0IGN1c3RvbU5leHRPZmZzZXQ6IG51bWJlciB8IG51bGwgPSBudWxsXG5cbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgY3VzdG9tUmVzcG9uc2UgPSBhd2FpdCBmZXRjaE1haWEoe1xuICAgICAgICAgICAgICBwYXRoOiAnYWdlbnRzP2FnZW50X3R5cGU9Y3VzdG9tJmxpbWl0PTcmb2Zmc2V0PTAnLFxuICAgICAgICAgICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIGNvbnN0IGN1c3RvbURhdGEgPSBhd2FpdCBjdXN0b21SZXNwb25zZS5qc29uKClcbiAgICAgICAgICAgIGN1c3RvbUFnZW50cyA9IGN1c3RvbURhdGEuZGF0YSB8fCBbXVxuICAgICAgICAgICAgY3VzdG9tSGFzTW9yZSA9IGN1c3RvbURhdGEuaGFzX21vcmUgfHwgZmFsc2VcbiAgICAgICAgICAgIGN1c3RvbU5leHRPZmZzZXQgPSBjdXN0b21EYXRhLm5leHRfb2Zmc2V0IHx8IG51bGxcbiAgICAgICAgICB9IGNhdGNoIChjdXN0b21FcnJvcjogYW55KSB7XG4gICAgICAgICAgICAvLyBWZXJpZmljYXIgc2kgZWwgZXJyb3IgZXMgNDAzXG4gICAgICAgICAgICAvLyBmZXRjaENPUiBwdWVkZSBsYW56YXIgZGlmZXJlbnRlcyB0aXBvcyBkZSBlcnJvcmVzOlxuICAgICAgICAgICAgLy8gMS4gRXJyb3IgY29uIGVycm9yRGF0YS5kZXRhaWwgc2kgaW5jbHV5ZSAnQWNjZXNzIGRlbmllZCdcbiAgICAgICAgICAgIC8vIDIuIEVycm9yIGdlbsOpcmljbyAnRmFpbGVkIGZldGNoaW5nIGRhdGEnIHNpIGVzIDQwMyBwZXJvIG5vIGluY2x1eWUgJ0FjY2VzcyBkZW5pZWQnXG4gICAgICAgICAgICAvLyAzLiBOZWNlc2l0YW1vcyB2ZXJpZmljYXIgZWwgc3RhdHVzIGNvZGUgc2kgZXN0w6EgZGlzcG9uaWJsZVxuICAgICAgICAgICAgY29uc3QgaXM0MDNFcnJvciA9XG4gICAgICAgICAgICAgIGN1c3RvbUVycm9yPy5yZXNwb25zZT8uc3RhdHVzID09PSA0MDMgfHxcbiAgICAgICAgICAgICAgY3VzdG9tRXJyb3I/LnN0YXR1cyA9PT0gNDAzIHx8XG4gICAgICAgICAgICAgIGN1c3RvbUVycm9yPy5tZXNzYWdlPy5pbmNsdWRlcyhcIllvdSBkb24ndCBoYXZlIHBlcm1pc3Npb24gdG8gdmlldyBhZ2VudHNcIikgfHxcbiAgICAgICAgICAgICAgY3VzdG9tRXJyb3I/Lm1lc3NhZ2U/LmluY2x1ZGVzKCdGYWlsZWQgZmV0Y2hpbmcgZGF0YScpIC8vIGZldGNoQ09SIGxhbnphIGVzdG8gcGFyYSA0MDMgc2luICdBY2Nlc3MgZGVuaWVkJ1xuXG4gICAgICAgICAgICBpZiAoaXM0MDNFcnJvcikge1xuICAgICAgICAgICAgICAvLyBTaSBlcyA0MDMsIGNvbnRpbnVhciBzaW4gbG9zIGN1c3RvbUFnZW50cyAoY3VzdG9tQWdlbnRzIHF1ZWRhIGNvbW8gYXJyYXkgdmFjw61vKVxuICAgICAgICAgICAgICAvLyBFc3RvIHB1ZWRlIG9jdXJyaXIgZW4gZG9zIGVzY2VuYXJpb3M6XG4gICAgICAgICAgICAgIC8vIDEuIFVzdWFyaW8gTk8gZXMgZGUgdXNlclJvbGVzRGlzYWJsZWQ6IHRlbmRyw6Egc29sbyBsb3MgY2xvbmVBZ2VudHMgKHNpIGxhIHF1ZXJ5IGNsb25lIGZ1ZSBleGl0b3NhKVxuICAgICAgICAgICAgICAvLyAyLiBVc3VhcmlvIFPDjSBlcyBkZSB1c2VyUm9sZXNEaXNhYmxlZDogZWwgbGlzdGFkbyBxdWVkYXLDoSB2YWPDrW8gKHBvcnF1ZSBubyBoYXkgY2xvbmVBZ2VudHMpXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAvLyBTaSBlcyBvdHJvIGVycm9yLCBsYW56YXJsb1xuICAgICAgICAgICAgICB0aHJvdyBjdXN0b21FcnJvclxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIENvbWJpbmFyOiBhZ2VudGVzIGNsb25lIHByaW1lcm8sIGx1ZWdvIGxvcyBjdXN0b20gKHNpIGV4aXN0ZW4pXG4gICAgICAgICAgLy8gU2kgZWwgdXN1YXJpbyB0aWVuZSB1biByb2wgZGVzaGFiaWxpdGFkbywgbm8gaW5jbHVpciBjbG9uZUFnZW50c1xuICAgICAgICAgIGlmICh1c2VyUm9sZXNEaXNhYmxlZC5pbmNsdWRlcyh1c2VyLnJvbGVfaWQpKSB7XG4gICAgICAgICAgICAvLyBVc3VhcmlvIGRlIHJvbGVzIGRpc2FibGVkOiBzb2xvIGN1c3RvbUFnZW50c1xuICAgICAgICAgICAgLy8gU2kgY3VzdG9tQWdlbnRzIGVzdMOhIHZhY8OtbyAocG9yIDQwMyksIGFnZW50UGFyc2VkIHNlcsOhIFtdXG4gICAgICAgICAgICBhZ2VudFBhcnNlZCA9IGN1c3RvbUFnZW50c1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBVc3VhcmlvIG5vcm1hbDogY2xvbmVBZ2VudHMgKyBjdXN0b21BZ2VudHNcbiAgICAgICAgICAgIC8vIFNpIGN1c3RvbUFnZW50cyBlc3TDoSB2YWPDrW8gKHBvciA0MDMpIHBlcm8gaGF5IGNsb25lQWdlbnRzLCBhZ2VudFBhcnNlZCB0ZW5kcsOhIGxvcyBjbG9uZXNcbiAgICAgICAgICAgIC8vIFNpIG5vIGhheSBjbG9uZUFnZW50cyBuaSBjdXN0b21BZ2VudHMsIGFnZW50UGFyc2VkIHNlcsOhIFtdXG4gICAgICAgICAgICBhZ2VudFBhcnNlZCA9IGNsb25lQWdlbnRzLmxlbmd0aCA/IFsuLi5jbG9uZUFnZW50cywgLi4uY3VzdG9tQWdlbnRzXSA6IGN1c3RvbUFnZW50c1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBPcmRlbmFyOiBNYWlhIHByaW1lcm8sIGx1ZWdvIGZhdm9yaXRvcyBhbGZhYsOpdGljYW1lbnRlLCBsdWVnbyBubyBmYXZvcml0b3MgYWxmYWLDqXRpY2FtZW50ZVxuICAgICAgICAgIGFnZW50UGFyc2VkID0gc29ydEFnZW50cyhhZ2VudFBhcnNlZClcbiAgICAgICAgICBoYXNNb3JlID0gY3VzdG9tSGFzTW9yZVxuICAgICAgICAgIG5leHRPZmZzZXQgPSBjdXN0b21OZXh0T2Zmc2V0XG5cbiAgICAgICAgICBzZXRBZ2VudHMoe1xuICAgICAgICAgICAgZGF0YTogYWdlbnRQYXJzZWQsXG4gICAgICAgICAgICBoYXNfbW9yZTogaGFzTW9yZSxcbiAgICAgICAgICAgIG5leHRfb2Zmc2V0OiBuZXh0T2Zmc2V0LFxuICAgICAgICAgIH0pXG5cbiAgICAgICAgICAvLyBTaSBubyBoYXkgYWdlbnRlcyBkZXNwdcOpcyBkZSBwcm9jZXNhciBsYXMgcXVlcmllcywgbGltcGlhciBlbCBlcnJvclxuICAgICAgICAgIGlmIChhZ2VudFBhcnNlZC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHNldEVycm9yKG51bGwpXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIEzDs2dpY2EgcGFyYSBwcm9qZWN0LCBjbGllbnQgbyBoZWFkZXIgc2luIG11bHRpQWdlbnRzIChtaXNtbyBjcml0ZXJpbyBkZSBvcmRlbiBwcm9qZWN0L2NsaWVudDsgaGVhZGVyIGHDsWFkZSBwYWdpbmFjacOzbilcbiAgICAgICAgICBjb25zdCBxdWVyeVBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKVxuICAgICAgICAgIGlmIChzZWN0aW9uID09PSAncHJvamVjdCcgfHwgc2VjdGlvbiA9PT0gJ2NsaWVudCcgfHwgc2VjdGlvbiA9PT0gJ2hlYWRlcicgfHwgc2VjdGlvbiA9PT0gJ3Rhc2snKSB7XG4gICAgICAgICAgICBxdWVyeVBhcmFtcy5hcHBlbmQoJ2FnZW50X3R5cGUnLCAnY2xvbmUnKVxuICAgICAgICAgICAgcXVlcnlQYXJhbXMuYXBwZW5kKCdsYW5nJywgbWFwQ09STGFuZyhpMThuLmxhbmd1YWdlKSlcbiAgICAgICAgICAgIHF1ZXJ5UGFyYW1zLmFwcGVuZCgnb3JkZXInLCBzZWN0aW9uID09PSAnY2xpZW50JyA/ICdjbGllbnQscHJvamVjdCcgOiAncHJvamVjdCxjbGllbnQnKVxuICAgICAgICAgICAgaWYgKHNlY3Rpb24gPT09ICdoZWFkZXInKSB7XG4gICAgICAgICAgICAgIHF1ZXJ5UGFyYW1zLmFwcGVuZCgnbGltaXQnLCAnNycpXG4gICAgICAgICAgICAgIHF1ZXJ5UGFyYW1zLmFwcGVuZCgnb2Zmc2V0JywgJzAnKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IHF1ZXJ5U3RyaW5nID0gcXVlcnlQYXJhbXMudG9TdHJpbmcoKVxuICAgICAgICAgIGNvbnN0IHBhdGggPSBgYWdlbnRzJHtxdWVyeVN0cmluZyA/IGA/JHtxdWVyeVN0cmluZ31gIDogJyd9YFxuXG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2hNYWlhKHtcbiAgICAgICAgICAgICAgcGF0aCxcbiAgICAgICAgICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKClcbiAgICAgICAgICAgIC8vIGRhdGEuZGF0YSB5YSBjb250aWVuZSB0b2RvcyBsb3MgYWdlbnRlcyBjbG9uZSBkZSBsYSBxdWVyeSBhZ2VudF90eXBlPWNsb25lXG4gICAgICAgICAgICBhZ2VudFBhcnNlZCA9IGRhdGEuZGF0YSB8fCBbXVxuICAgICAgICAgICAgLy8gT3JkZW5hcjogTWFpYSBwcmltZXJvLCBsdWVnbyBmYXZvcml0b3MgYWxmYWLDqXRpY2FtZW50ZSwgbHVlZ28gbm8gZmF2b3JpdG9zIGFsZmFiw6l0aWNhbWVudGVcbiAgICAgICAgICAgIGFnZW50UGFyc2VkID0gc29ydEFnZW50cyhhZ2VudFBhcnNlZClcbiAgICAgICAgICAgIGhhc01vcmUgPSBkYXRhLmhhc19tb3JlXG4gICAgICAgICAgICBuZXh0T2Zmc2V0ID0gZGF0YS5uZXh0X29mZnNldFxuXG4gICAgICAgICAgICBzZXRBZ2VudHMoe1xuICAgICAgICAgICAgICAuLi5kYXRhLFxuICAgICAgICAgICAgICBkYXRhOiBhZ2VudFBhcnNlZCxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfSBjYXRjaCAocmVzcG9uc2VFcnJvcjogYW55KSB7XG4gICAgICAgICAgICAvLyBWZXJpZmljYXIgc2kgZWwgZXJyb3IgZXMgNDAzXG4gICAgICAgICAgICAvLyBmZXRjaENPUiBwdWVkZSBsYW56YXIgZGlmZXJlbnRlcyB0aXBvcyBkZSBlcnJvcmVzOlxuICAgICAgICAgICAgLy8gMS4gRXJyb3IgY29uIGVycm9yRGF0YS5kZXRhaWwgc2kgaW5jbHV5ZSAnQWNjZXNzIGRlbmllZCdcbiAgICAgICAgICAgIC8vIDIuIEVycm9yIGdlbsOpcmljbyAnRmFpbGVkIGZldGNoaW5nIGRhdGEnIHNpIGVzIDQwMyBwZXJvIG5vIGluY2x1eWUgJ0FjY2VzcyBkZW5pZWQnXG4gICAgICAgICAgICAvLyAzLiBOZWNlc2l0YW1vcyB2ZXJpZmljYXIgZWwgc3RhdHVzIGNvZGUgc2kgZXN0w6EgZGlzcG9uaWJsZVxuICAgICAgICAgICAgY29uc3QgaXM0MDNFcnJvciA9XG4gICAgICAgICAgICAgIHJlc3BvbnNlRXJyb3I/LnJlc3BvbnNlPy5zdGF0dXMgPT09IDQwMyB8fFxuICAgICAgICAgICAgICByZXNwb25zZUVycm9yPy5zdGF0dXMgPT09IDQwMyB8fFxuICAgICAgICAgICAgICByZXNwb25zZUVycm9yPy5tZXNzYWdlPy5pbmNsdWRlcyhcIllvdSBkb24ndCBoYXZlIHBlcm1pc3Npb24gdG8gdmlldyBhZ2VudHNcIikgfHxcbiAgICAgICAgICAgICAgcmVzcG9uc2VFcnJvcj8ubWVzc2FnZT8uaW5jbHVkZXMoJ0ZhaWxlZCBmZXRjaGluZyBkYXRhJykgLy8gZmV0Y2hDT1IgbGFuemEgZXN0byBwYXJhIDQwMyBzaW4gJ0FjY2VzcyBkZW5pZWQnXG5cbiAgICAgICAgICAgIGlmIChpczQwM0Vycm9yKSB7XG4gICAgICAgICAgICAgIC8vIFNpIGVzIDQwMywgZXN0YWJsZWNlciBhZ2VudGVzIHZhY8Otb3MgeSBjb250aW51YXJcbiAgICAgICAgICAgICAgc2V0QWdlbnRzKHtcbiAgICAgICAgICAgICAgICBkYXRhOiBbXSxcbiAgICAgICAgICAgICAgICBoYXNfbW9yZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgbmV4dF9vZmZzZXQ6IG51bGwsXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIHNldEVycm9yKG51bGwpXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAvLyBTaSBlcyBvdHJvIGVycm9yLCBsYW56YXJsb1xuICAgICAgICAgICAgICB0aHJvdyByZXNwb25zZUVycm9yXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gTMOzZ2ljYSBkZSBzZWxlY3QgYWdlbnQgLSBTb2xvIHNlbGVjY2lvbmFyIHNpIGhheSBhZ2VudGVzIGRpc3BvbmlibGVzXG4gICAgICAgIGlmIChhZ2VudFBhcnNlZC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgaWYgKGFnZW50VG9TZWxlY3QgJiYgYWdlbnRQYXJzZWQuZmluZCgoYWdlbnRUb1JlcXVlc3Q6IEFnZW50KSA9PiBhZ2VudFRvUmVxdWVzdC5pZCA9PT0gYWdlbnRUb1NlbGVjdC5pZCkpIHtcbiAgICAgICAgICAgIGlmIChsYXN0U2VsZWN0ZWRBZ2VudFJlZi5jdXJyZW50Py5pZCAhPT0gYWdlbnRUb1NlbGVjdC5pZCkge1xuICAgICAgICAgICAgICBsYXN0U2VsZWN0ZWRBZ2VudFJlZi5jdXJyZW50ID0gYWdlbnRUb1NlbGVjdFxuICAgICAgICAgICAgICBzZWxlY3RBZ2VudChhZ2VudFRvU2VsZWN0KVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSBpZiAoYWdlbnRQYXJzZWQ/LlswXSAmJiAoIWFnZW50IHx8ICFhZ2VudFBhcnNlZC5maW5kKChhOiBBZ2VudCkgPT4gYS5pZCA9PT0gYWdlbnQuaWQpKSkge1xuICAgICAgICAgICAgY29uc3QgYXZhaWxhYmxlQWdlbnRzID1cbiAgICAgICAgICAgICAgd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTUyAmJiAhdXNlclJvbGVzRGlzYWJsZWQuaW5jbHVkZXModXNlci5yb2xlX2lkKVxuICAgICAgICAgICAgICAgID8gYWdlbnRQYXJzZWRcbiAgICAgICAgICAgICAgICA6IGFnZW50UGFyc2VkLmZpbHRlcigoYWdlbnRJdGVtOiBBZ2VudCkgPT4gYWdlbnRJdGVtLnR5cGUgIT09ICdjbG9uZScpXG5cbiAgICAgICAgICAgIGNvbnN0IFtmaXJzdEFnZW50XSA9IGF2YWlsYWJsZUFnZW50c1xuICAgICAgICAgICAgaWYgKGZpcnN0QWdlbnQgJiYgbGFzdFNlbGVjdGVkQWdlbnRSZWYuY3VycmVudD8uaWQgIT09IGZpcnN0QWdlbnQuaWQpIHtcbiAgICAgICAgICAgICAgbGFzdFNlbGVjdGVkQWdlbnRSZWYuY3VycmVudCA9IGZpcnN0QWdlbnRcbiAgICAgICAgICAgICAgc2VsZWN0QWdlbnQoZmlyc3RBZ2VudClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2UgaWYgKGFnZW50VG9TZWxlY3QgJiYgYWdlbnRQYXJzZWQ/Lmxlbmd0aCkge1xuICAgICAgICAgICAgY29uc3QgYXZhaWxhYmxlQWdlbnRzID1cbiAgICAgICAgICAgICAgd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTUyAmJiAhdXNlclJvbGVzRGlzYWJsZWQuaW5jbHVkZXModXNlci5yb2xlX2lkKVxuICAgICAgICAgICAgICAgID8gYWdlbnRQYXJzZWRcbiAgICAgICAgICAgICAgICA6IGFnZW50UGFyc2VkLmZpbHRlcigoYWdlbnRJdGVtOiBBZ2VudCkgPT4gYWdlbnRJdGVtLnR5cGUgIT09ICdjbG9uZScpXG5cbiAgICAgICAgICAgIGNvbnN0IFtmaXJzdEF2YWlsYWJsZUFnZW50XSA9IGF2YWlsYWJsZUFnZW50c1xuICAgICAgICAgICAgaWYgKGZpcnN0QXZhaWxhYmxlQWdlbnQgJiYgbGFzdFNlbGVjdGVkQWdlbnRSZWYuY3VycmVudD8uaWQgIT09IGZpcnN0QXZhaWxhYmxlQWdlbnQuaWQpIHtcbiAgICAgICAgICAgICAgbGFzdFNlbGVjdGVkQWdlbnRSZWYuY3VycmVudCA9IGZpcnN0QXZhaWxhYmxlQWdlbnRcbiAgICAgICAgICAgICAgc2VsZWN0QWdlbnQoZmlyc3RBdmFpbGFibGVBZ2VudClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBzZXRMb2FkaW5nKGZhbHNlKVxuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIHNldEVycm9yKGVyciBpbnN0YW5jZW9mIEVycm9yID8gZXJyLm1lc3NhZ2UgOiAnQW4gdW5rbm93biBlcnJvciBvY2N1cnJlZCcpXG4gICAgICAgIHNldExvYWRpbmcoZmFsc2UpXG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBpc1JlZnJlc2hpbmdSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGlmICghaXNSZWZyZXNoaW5nUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICAgIGxhc3RSZXF1ZXN0UmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICAgICAgfVxuICAgICAgICB9LCAxMDApXG4gICAgICB9XG4gICAgfSxcbiAgICBbc2VsZWN0QWdlbnQsIHNlY3Rpb24sIGFnZW50LCBsb2FkaW5nXVxuICApXG5cbiAgY29uc3QgbG9hZE1vcmVBZ2VudHMgPSB1c2VDYWxsYmFjayhhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgaXNNdWx0aUFnZW50cyA9ICEhd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTUyAmJiAhIXdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTXG4gICAgLy8gQ2FyZ2FyIG3DoXM6IGVuIGhlYWRlciBzaWVtcHJlOyBlbiBwcm9qZWN0IHNvbG8gc2kgaXNNdWx0aUFnZW50cyAocG9ycXVlIHNvbG8gZW50b25jZXMgaGF5IHBhZ2luYWNpw7NuIGRlIGN1c3RvbSlcbiAgICBjb25zdCBjYW5Mb2FkTW9yZSA9IHNlY3Rpb24gPT09ICdoZWFkZXInIHx8IGlzTXVsdGlBZ2VudHNcbiAgICBpZiAoIWNhbkxvYWRNb3JlIHx8ICFhZ2VudHMuaGFzX21vcmUgfHwgIWFnZW50cy5uZXh0X29mZnNldCB8fCBsb2FkaW5nTW9yZSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgc2V0TG9hZGluZ01vcmUodHJ1ZSlcbiAgICBzZXRFcnJvcihudWxsKVxuXG4gICAgdHJ5IHtcbiAgICAgIGxldCBwYXRoOiBzdHJpbmdcblxuICAgICAgLy8gU2kgZXMgbXVsdGlBZ2VudHMsIHNvbG8gY2FyZ2FyIGFnZW50cyBjdXN0b20gKE1haWEgeWEgZXN0w6EgY2FyZ2FkbylcbiAgICAgIGlmIChpc011bHRpQWdlbnRzKSB7XG4gICAgICAgIC8vIE1hbnRlbmVyIGNhbnRpZGFkIGltcGFyIGRlIGNhcmRzOiBwcmltZXJhIGNhcmdhIDcsIHNpZ3VpZW50ZXMgKzYgKDcsIDEzLCAxOSwgLi4uKVxuICAgICAgICBwYXRoID0gYGFnZW50cz9hZ2VudF90eXBlPWN1c3RvbSZsaW1pdD02Jm9mZnNldD0ke2FnZW50cy5uZXh0X29mZnNldH1gXG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBTaSBubyBlcyBtdWx0aUFnZW50cywgY2FyZ2FyIG3DoXMgYWdlbnRlcyBjbG9uZSAoTWFpYSkg4oCUIG1pc21vIG9yZGVyIHF1ZSBwcm9qZWN0IHBhcmEgaGVhZGVyXG4gICAgICAgIGNvbnN0IHF1ZXJ5UGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcygpXG4gICAgICAgIHF1ZXJ5UGFyYW1zLmFwcGVuZCgnYWdlbnRfdHlwZScsICdjbG9uZScpXG4gICAgICAgIHF1ZXJ5UGFyYW1zLmFwcGVuZCgnbGFuZycsIG1hcENPUkxhbmcoaTE4bi5sYW5ndWFnZSkpXG4gICAgICAgIHF1ZXJ5UGFyYW1zLmFwcGVuZCgnb3JkZXInLCAncHJvamVjdCxjbGllbnQnKVxuICAgICAgICBxdWVyeVBhcmFtcy5hcHBlbmQoJ2xpbWl0JywgJzcnKVxuICAgICAgICBxdWVyeVBhcmFtcy5hcHBlbmQoJ29mZnNldCcsIGFnZW50cy5uZXh0X29mZnNldC50b1N0cmluZygpKVxuICAgICAgICBwYXRoID0gYGFnZW50cz8ke3F1ZXJ5UGFyYW1zLnRvU3RyaW5nKCl9YFxuICAgICAgfVxuXG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoTWFpYSh7XG4gICAgICAgIHBhdGgsXG4gICAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICB9KVxuXG4gICAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpXG5cbiAgICAgIC8vIEFjdW11bGFyIGFnZW50ZXMsIGV4Y2x1eWVuZG8gZHVwbGljYWRvc1xuICAgICAgc2V0QWdlbnRzKHByZXYgPT4ge1xuICAgICAgICBpZiAoaXNNdWx0aUFnZW50cykge1xuICAgICAgICAgIC8vIEzDs2dpY2EgcGFyYSBtdWx0aUFnZW50czogc2VwYXJhciBjbG9uZSB5IGN1c3RvbVxuICAgICAgICAgIC8vIE1hbnRlbmVyIHRvZG9zIGxvcyBhZ2VudGVzIGNsb25lIGV4aXN0ZW50ZXMgYWwgaW5pY2lvXG4gICAgICAgICAgY29uc3QgZXhpc3RpbmdDbG9uZUFnZW50cyA9IHByZXYuZGF0YS5maWx0ZXIoKGFnOiBBZ2VudCkgPT4gYWcudHlwZSA9PT0gJ2Nsb25lJylcblxuICAgICAgICAgIC8vIE9idGVuZXIgSURzIGV4aXN0ZW50ZXMgKGV4Y2x1eWVuZG8gY2xvbmVzKVxuICAgICAgICAgIGNvbnN0IGV4aXN0aW5nSWRzID0gbmV3IFNldChwcmV2LmRhdGEuZmlsdGVyKChhZzogQWdlbnQpID0+IGFnLnR5cGUgIT09ICdjbG9uZScpLm1hcCgoYWc6IEFnZW50KSA9PiBhZy5pZCkpXG5cbiAgICAgICAgICAvLyBGaWx0cmFyIG51ZXZvcyBhZ2VudHMgcXVlIG5vIGVzdMOpbiB5YSBlbiBsYSBsaXN0YSAoeSBxdWUgbm8gc2VhbiBjbG9uZSlcbiAgICAgICAgICBjb25zdCBuZXdBZ2VudHMgPSBkYXRhLmRhdGEuZmlsdGVyKChhZzogQWdlbnQpID0+IGFnLnR5cGUgIT09ICdjbG9uZScgJiYgIWV4aXN0aW5nSWRzLmhhcyhhZy5pZCkpXG5cbiAgICAgICAgICAvLyBDb25zdHJ1aXIgZWwgbnVldm8gYXJyYXk6IGNsb25lcyBwcmltZXJvLCBsdWVnbyBsb3MgYWdlbnRzIGV4aXN0ZW50ZXMgcXVlIG5vIHNlYW4gY2xvbmUsIGx1ZWdvIGxvcyBudWV2b3NcbiAgICAgICAgICBjb25zdCBuZXdEYXRhID0gZXhpc3RpbmdDbG9uZUFnZW50cy5sZW5ndGhcbiAgICAgICAgICAgID8gWy4uLmV4aXN0aW5nQ2xvbmVBZ2VudHMsIC4uLnByZXYuZGF0YS5maWx0ZXIoKGFnOiBBZ2VudCkgPT4gYWcudHlwZSAhPT0gJ2Nsb25lJyksIC4uLm5ld0FnZW50c11cbiAgICAgICAgICAgIDogWy4uLnByZXYuZGF0YS5maWx0ZXIoKGFnOiBBZ2VudCkgPT4gYWcudHlwZSAhPT0gJ2Nsb25lJyksIC4uLm5ld0FnZW50c11cblxuICAgICAgICAgIC8vIE9yZGVuYXI6IE1haWEgcHJpbWVybywgbHVlZ28gZmF2b3JpdG9zIGFsZmFiw6l0aWNhbWVudGUsIGx1ZWdvIG5vIGZhdm9yaXRvcyBhbGZhYsOpdGljYW1lbnRlXG4gICAgICAgICAgY29uc3Qgc29ydGVkRGF0YSA9IHNvcnRBZ2VudHMobmV3RGF0YSlcblxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBkYXRhOiBzb3J0ZWREYXRhLFxuICAgICAgICAgICAgaGFzX21vcmU6IGRhdGEuaGFzX21vcmUsXG4gICAgICAgICAgICBuZXh0X29mZnNldDogZGF0YS5uZXh0X29mZnNldCxcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gTMOzZ2ljYSBwYXJhICFpc011bHRpQWdlbnRzOiB0b2RvcyBsb3MgYWdlbnRlcyBzb24gY2xvbmUsIHNpbXBsZW1lbnRlIGFncmVnYXIgZXZpdGFuZG8gZHVwbGljYWRvc1xuICAgICAgICBjb25zdCBleGlzdGluZ0lkcyA9IG5ldyBTZXQocHJldi5kYXRhLm1hcCgoYWc6IEFnZW50KSA9PiBhZy5pZCkpXG4gICAgICAgIGNvbnN0IG5ld0FnZW50cyA9IChkYXRhLmRhdGEgfHwgW10pLmZpbHRlcigoYWc6IEFnZW50KSA9PiAhZXhpc3RpbmdJZHMuaGFzKGFnLmlkKSlcbiAgICAgICAgY29uc3QgbmV3RGF0YSA9IFsuLi5wcmV2LmRhdGEsIC4uLm5ld0FnZW50c11cblxuICAgICAgICAvLyBPcmRlbmFyOiBNYWlhIHByaW1lcm8sIGx1ZWdvIGZhdm9yaXRvcyBhbGZhYsOpdGljYW1lbnRlLCBsdWVnbyBubyBmYXZvcml0b3MgYWxmYWLDqXRpY2FtZW50ZVxuICAgICAgICBjb25zdCBzb3J0ZWREYXRhID0gc29ydEFnZW50cyhuZXdEYXRhKVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZGF0YTogc29ydGVkRGF0YSxcbiAgICAgICAgICBoYXNfbW9yZTogZGF0YS5oYXNfbW9yZSxcbiAgICAgICAgICBuZXh0X29mZnNldDogZGF0YS5uZXh0X29mZnNldCxcbiAgICAgICAgfVxuICAgICAgfSlcblxuICAgICAgc2V0TG9hZGluZ01vcmUoZmFsc2UpXG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBoYW5kbGVTbmFja2JhckVycm9yKHQoJ3NuYWNrYmFyLmxvYWRNb3JlQWdlbnRzLmVycm9yJykpXG4gICAgICBzZXRMb2FkaW5nTW9yZShmYWxzZSlcbiAgICB9XG4gIH0sIFtzZWN0aW9uLCBhZ2VudHMuaGFzX21vcmUsIGFnZW50cy5uZXh0X29mZnNldCwgbG9hZGluZ01vcmUsIGkxOG4ubGFuZ3VhZ2VdKVxuXG4gIHJldHVybiB7XG4gICAgYWdlbnRzLFxuICAgIGxvYWRpbmcsXG4gICAgbG9hZGluZ01vcmUsXG4gICAgZXJyb3IsXG4gICAgaGFuZGxlR2V0QWdlbnRzLFxuICAgIGxvYWRNb3JlQWdlbnRzLFxuICAgIGFkZEFnZW50LFxuICAgIHJlbW92ZUFnZW50LFxuICAgIHVwZGF0ZUFnZW50LFxuICAgIHVwZGF0ZUFnZW50RmF2b3JpdGUsXG4gICAgc2VsZWN0Rmlyc3RBZ2VudCxcbiAgICBzb3J0QWdlbnRzTGlzdCxcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBU0EsUUFBUSxFQUFFQyxXQUFXLEVBQUVDLE1BQU0sUUFBUSxPQUFPO0FBQ3JELFNBQVNDLGNBQWMsUUFBUSxlQUFlO0FBQzlDLFNBQVNDLGtCQUFrQixRQUFRLHNEQUFzRDtBQUN6RixTQUFTQyxTQUFTLFFBQVEsV0FBVztBQUVyQyxTQUFTQyxPQUFPLEVBQUVDLFdBQVcsUUFBUSwyQkFBMkI7QUFDaEUsU0FBU0MsVUFBVSxRQUFRLHFCQUFxQjs7QUFFaEQ7QUFDQTtBQUNBO0FBQ0EsSUFBTUMsVUFBVSxHQUFHLFNBQWJBLFVBQVVBLENBQUlDLE1BQWUsRUFBYztFQUMvQztFQUNBLElBQU1DLFdBQVcsR0FBR0QsTUFBTSxDQUFDRSxNQUFNLENBQUMsVUFBQUMsRUFBRTtJQUFBLE9BQUlBLEVBQUUsQ0FBQ0MsSUFBSSxLQUFLLE9BQU87RUFB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
|
|
573
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VTdGF0ZSIsInVzZUNhbGxiYWNrIiwidXNlUmVmIiwidXNlVHJhbnNsYXRpb24iLCJ1c2VTbmFja0Jhck1hbmFnZXIiLCJmZXRjaE1haWEiLCJ1c2VVc2VyIiwiaXNNYWlhQ2xvbmVBZ2VudHNSb2xlQmxvY2tlZCIsIm1hcENPUkxhbmciLCJzb3J0QWdlbnRzIiwiYWdlbnRzIiwiY2xvbmVBZ2VudHMiLCJmaWx0ZXIiLCJhZyIsInR5cGUiLCJvdGhlckFnZW50cyIsImZhdm9yaXRlcyIsImlzX2Zhdm9yaXRlIiwic29ydCIsImEiLCJiIiwibmFtZSIsImxvY2FsZUNvbXBhcmUiLCJub25GYXZvcml0ZXMiLCJsZW5ndGgiLCJjb25jYXQiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJ1c2VHZXRBZ2VudHMiLCJfcmVmIiwic2VsZWN0QWdlbnQiLCJzZWN0aW9uIiwiYWdlbnQiLCJoYW5kbGVHb0hvbWUiLCJ1c2VyIiwiX3VzZVN0YXRlIiwiZGF0YSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsInNldEFnZW50cyIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0IiwibG9hZGluZyIsInNldExvYWRpbmciLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsImxvYWRpbmdNb3JlIiwic2V0TG9hZGluZ01vcmUiLCJfdXNlU3RhdGU3IiwiX3VzZVN0YXRlOCIsImVycm9yIiwic2V0RXJyb3IiLCJfdXNlU25hY2tCYXJNYW5hZ2VyIiwiaGFuZGxlU25hY2tiYXJFcnJvciIsIl91c2VUcmFuc2xhdGlvbiIsInQiLCJpMThuIiwibGFzdFNlbGVjdGVkQWdlbnRSZWYiLCJpc1JlZnJlc2hpbmdSZWYiLCJsYXN0UmVxdWVzdFJlZiIsImNhbkZldGNoQ2xvbmVBZ2VudHMiLCJhZGRBZ2VudCIsIm5ld0FnZW50Iiwib3B0aW9ucyIsInByZXYiLCJhZ2VudEV4aXN0cyIsInNvbWUiLCJleGlzdGluZ0FnZW50IiwiaWQiLCJuZXdEYXRhIiwic29ydGVkRGF0YSIsIl9vYmplY3RTcHJlYWQiLCJuYXZpZ2F0ZUhvbWUiLCJyZW1vdmVBZ2VudCIsImFnZW50SWQiLCJ0b1N0cmluZyIsInVwZGF0ZUFnZW50IiwidXBkYXRlZEFnZW50IiwidXBkYXRlZERhdGEiLCJtYXAiLCJ1cGRhdGVBZ2VudEZhdm9yaXRlIiwic2hvdWxkU29ydCIsImFyZ3VtZW50cyIsInVuZGVmaW5lZCIsIl9yZWYyIiwibWVzc2FnZSIsImFnZW50RmllbGRzIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIiwiX2V4Y2x1ZGVkIiwibWVyZ2VkQWdlbnQiLCJmaW5hbERhdGEiLCJmaW5kIiwiX3JlZjMiLCJfZXhjbHVkZWQyIiwiX3JlZjQiLCJfZXhjbHVkZWQzIiwic29ydEFnZW50c0xpc3QiLCJzZWxlY3RGaXJzdEFnZW50IiwiZmlyc3RBZ2VudCIsImZpbmRJbmRleCIsImFnZW50RGF0YSIsImN1cnJlbnQiLCJoYW5kbGVHZXRBZ2VudHMiLCJfcmVmNSIsIl9hc3luY1RvR2VuZXJhdG9yIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJfY2FsbGVlIiwiYWdlbnRUb1NlbGVjdCIsIl9hZ2VudFRvU2VsZWN0JGlkIiwicmVxdWVzdEtleSIsImlzTXVsdGlBZ2VudHMiLCJhZ2VudFBhcnNlZCIsImhhc01vcmUiLCJuZXh0T2Zmc2V0IiwiX21haWFEYXRhJGRhdGEiLCJvcmRlclBhcmFtIiwibWFpYVJlc3BvbnNlIiwibWFpYURhdGEiLCJfbWFpYUVycm9yJHJlc3BvbnNlIiwiX21haWFFcnJvciRtZXNzYWdlIiwiX21haWFFcnJvciRtZXNzYWdlMiIsImlzNDAzRXJyb3IiLCJjdXN0b21BZ2VudHMiLCJjdXN0b21IYXNNb3JlIiwiY3VzdG9tTmV4dE9mZnNldCIsImN1c3RvbVJlc3BvbnNlIiwiY3VzdG9tRGF0YSIsIl9jdXN0b21FcnJvciRyZXNwb25zZSIsIl9jdXN0b21FcnJvciRtZXNzYWdlIiwiX2N1c3RvbUVycm9yJG1lc3NhZ2UyIiwiX2lzNDAzRXJyb3IiLCJzaG91bGRSZXF1ZXN0Q2xvbmVBZ2VudHMiLCJxdWVyeVBhcmFtcyIsInBhdGgiLCJyZXNwb25zZSIsIl9yZXNwb25zZUVycm9yJHJlc3BvbiIsIl9yZXNwb25zZUVycm9yJG1lc3NhZyIsIl9yZXNwb25zZUVycm9yJG1lc3NhZzIiLCJfaXM0MDNFcnJvcjIiLCJfYWdlbnRQYXJzZWQiLCJfYWdlbnRQYXJzZWQyIiwiX2xhc3RTZWxlY3RlZEFnZW50UmVmIiwiX2xhc3RTZWxlY3RlZEFnZW50UmVmMiIsImF2YWlsYWJsZUFnZW50cyIsIl9hdmFpbGFibGVBZ2VudHMiLCJfbGFzdFNlbGVjdGVkQWdlbnRSZWYzIiwiX2F2YWlsYWJsZUFnZW50czIiLCJfYXZhaWxhYmxlQWdlbnRzMyIsImZpcnN0QXZhaWxhYmxlQWdlbnQiLCJfdCIsIl90MiIsIl90MyIsIl90NCIsIndyYXAiLCJfY29udGV4dCIsIm5leHQiLCJhYnJ1cHQiLCJ3aW5kb3ciLCJNQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1MiLCJNQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTIiwibGFuZ3VhZ2UiLCJtZXRob2QiLCJzZW50IiwianNvbiIsInN0YXR1cyIsImluY2x1ZGVzIiwiaGFzX21vcmUiLCJuZXh0X29mZnNldCIsIlVSTFNlYXJjaFBhcmFtcyIsImFwcGVuZCIsImFnZW50VG9SZXF1ZXN0IiwiYWdlbnRJdGVtIiwiRXJyb3IiLCJzZXRUaW1lb3V0IiwiZmluaXNoIiwic3RvcCIsIl94IiwiYXBwbHkiLCJsb2FkTW9yZUFnZW50cyIsIl9jYWxsZWUyIiwiY2FuTG9hZE1vcmUiLCJfdDUiLCJfY29udGV4dDIiLCJleGlzdGluZ0Nsb25lQWdlbnRzIiwiZXhpc3RpbmdJZHMiLCJTZXQiLCJuZXdBZ2VudHMiLCJoYXMiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvc2VydmljZXMvbWFpYS9BZ2VudHMvZ2V0QWdlbnRzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFycyAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tbmVzdGVkLXRlcm5hcnkgKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnNvbGUgKi9cbmltcG9ydCB7IHVzZVN0YXRlLCB1c2VDYWxsYmFjaywgdXNlUmVmIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gJ3JlYWN0LWkxOG5leHQnXG5pbXBvcnQgeyB1c2VTbmFja0Jhck1hbmFnZXIgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VTbmFja0Jhck1hbmFnZXIvdXNlU25hY2tCYXJNYW5hZ2VyJ1xuaW1wb3J0IHsgZmV0Y2hNYWlhIH0gZnJvbSAnLi4vY2xpZW50J1xuaW1wb3J0IHsgQWdlbnQgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9hZ2VudCdcbmltcG9ydCB7IHVzZVVzZXIgfSBmcm9tICcuLi8uLi8uLi9jb250ZXh0L2Nvci11c2VyJ1xuaW1wb3J0IHsgaXNNYWlhQ2xvbmVBZ2VudHNSb2xlQmxvY2tlZCB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy9tYWlhVGFza1BhbmVsQWNjZXNzJ1xuaW1wb3J0IHsgbWFwQ09STGFuZyB9IGZyb20gJy4uLy4uLy4uL2xhbmcvdXRpbHMnXG5cbi8qKlxuICogT3JkZW5hIGxvcyBhZ2VudGVzOiBhZ2VudGVzIGNsb25lIHByaW1lcm8gKHNpIGV4aXN0ZW4pLCBsdWVnbyBmYXZvcml0b3MgYWxmYWLDqXRpY2FtZW50ZSwgbHVlZ28gbm8gZmF2b3JpdG9zIGFsZmFiw6l0aWNhbWVudGVcbiAqL1xuY29uc3Qgc29ydEFnZW50cyA9IChhZ2VudHM6IEFnZW50W10pOiBBZ2VudFtdID0+IHtcbiAgLy8gU2VwYXJhciBhZ2VudGVzIGNsb25lIGRlbCByZXN0b1xuICBjb25zdCBjbG9uZUFnZW50cyA9IGFnZW50cy5maWx0ZXIoYWcgPT4gYWcudHlwZSA9PT0gJ2Nsb25lJylcbiAgY29uc3Qgb3RoZXJBZ2VudHMgPSBhZ2VudHMuZmlsdGVyKGFnID0+IGFnLnR5cGUgIT09ICdjbG9uZScpXG5cbiAgLy8gU2VwYXJhciBmYXZvcml0b3MgeSBubyBmYXZvcml0b3NcbiAgY29uc3QgZmF2b3JpdGVzID0gb3RoZXJBZ2VudHMuZmlsdGVyKGFnID0+IGFnLmlzX2Zhdm9yaXRlKS5zb3J0KChhLCBiKSA9PiBhLm5hbWUubG9jYWxlQ29tcGFyZShiLm5hbWUpKVxuICBjb25zdCBub25GYXZvcml0ZXMgPSBvdGhlckFnZW50cy5maWx0ZXIoYWcgPT4gIWFnLmlzX2Zhdm9yaXRlKS5zb3J0KChhLCBiKSA9PiBhLm5hbWUubG9jYWxlQ29tcGFyZShiLm5hbWUpKVxuXG4gIC8vIENvbWJpbmFyOiBjbG9uZXMgcHJpbWVybywgbHVlZ28gZmF2b3JpdG9zLCBsdWVnbyBubyBmYXZvcml0b3NcbiAgcmV0dXJuIGNsb25lQWdlbnRzLmxlbmd0aCA/IFsuLi5jbG9uZUFnZW50cywgLi4uZmF2b3JpdGVzLCAuLi5ub25GYXZvcml0ZXNdIDogWy4uLmZhdm9yaXRlcywgLi4ubm9uRmF2b3JpdGVzXVxufVxuXG50eXBlIFVzZUdldEFnZW50c1Byb3BzID0ge1xuICBzZWxlY3RBZ2VudDogKGFnZW50OiBBZ2VudCkgPT4gdm9pZFxuICBzZWN0aW9uOiAncHJvamVjdCcgfCAnaGVhZGVyJyB8ICdjbGllbnQnIHwgJ3Rhc2snXG4gIGFnZW50OiBBZ2VudCB8IG51bGxcbiAgaGFuZGxlR29Ib21lOiAoKSA9PiB2b2lkXG59XG5cbmV4cG9ydCB0eXBlIEFkZEFnZW50T3B0aW9ucyA9IHtcbiAgLyoqIFBvciBkZWZlY3RvIGB0cnVlYCAoY29tcG9ydGFtaWVudG8gQUJNKS4gUGFzYXIgYGZhbHNlYCBhbCBpbnNlcnRhciBhZ2VudGUgY3JlYWRvIHBvciBjaGF0IHNpbiBjYW1iaWFyIGRlIHZpc3RhLiAqL1xuICBuYXZpZ2F0ZUhvbWU/OiBib29sZWFuXG59XG5cbmV4cG9ydCBjb25zdCB1c2VHZXRBZ2VudHMgPSAoeyBzZWxlY3RBZ2VudCwgc2VjdGlvbiwgYWdlbnQsIGhhbmRsZUdvSG9tZSB9OiBVc2VHZXRBZ2VudHNQcm9wcykgPT4ge1xuICBjb25zdCB1c2VyID0gdXNlVXNlcigpXG4gIGNvbnN0IFthZ2VudHMsIHNldEFnZW50c10gPSB1c2VTdGF0ZTx7IGRhdGE6IEFnZW50W107IGhhc19tb3JlPzogYm9vbGVhbjsgbmV4dF9vZmZzZXQ/OiBudW1iZXIgfCBudWxsIH0+KHsgZGF0YTogW10gfSlcbiAgY29uc3QgW2xvYWRpbmcsIHNldExvYWRpbmddID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtsb2FkaW5nTW9yZSwgc2V0TG9hZGluZ01vcmVdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtlcnJvciwgc2V0RXJyb3JdID0gdXNlU3RhdGU8c3RyaW5nIHwgbnVsbD4obnVsbClcbiAgY29uc3QgeyBoYW5kbGVTbmFja2JhckVycm9yIH0gPSB1c2VTbmFja0Jhck1hbmFnZXIoKVxuICBjb25zdCB7IHQsIGkxOG4gfSA9IHVzZVRyYW5zbGF0aW9uKCdjaGF0X2FpX3NlY3Rpb24nKVxuICBjb25zdCBsYXN0U2VsZWN0ZWRBZ2VudFJlZiA9IHVzZVJlZjxBZ2VudCB8IG51bGw+KG51bGwpXG4gIGNvbnN0IGlzUmVmcmVzaGluZ1JlZiA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3QgbGFzdFJlcXVlc3RSZWYgPSB1c2VSZWY8c3RyaW5nIHwgbnVsbD4obnVsbClcblxuICBjb25zdCBjYW5GZXRjaENsb25lQWdlbnRzID0gIWlzTWFpYUNsb25lQWdlbnRzUm9sZUJsb2NrZWQodXNlciwgc2VjdGlvbilcblxuICBjb25zdCBhZGRBZ2VudCA9IHVzZUNhbGxiYWNrKFxuICAgIChuZXdBZ2VudDogQWdlbnQsIG9wdGlvbnM/OiBBZGRBZ2VudE9wdGlvbnMpID0+IHtcbiAgICAgIHNldEFnZW50cyhwcmV2ID0+IHtcbiAgICAgICAgLy8gVmVyaWZpY2FyIHNpIGVsIGFnZW50ZSB5YSBleGlzdGUgcGFyYSBldml0YXIgZHVwbGljYWRvc1xuICAgICAgICBjb25zdCBhZ2VudEV4aXN0cyA9IHByZXYuZGF0YS5zb21lKGV4aXN0aW5nQWdlbnQgPT4gZXhpc3RpbmdBZ2VudC5pZCA9PT0gbmV3QWdlbnQuaWQpXG4gICAgICAgIGlmIChhZ2VudEV4aXN0cykge1xuICAgICAgICAgIHJldHVybiBwcmV2XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbmV3RGF0YSA9IFsuLi5wcmV2LmRhdGEsIG5ld0FnZW50XVxuICAgICAgICBjb25zdCBzb3J0ZWREYXRhID0gc29ydEFnZW50cyhuZXdEYXRhKVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLnByZXYsXG4gICAgICAgICAgZGF0YTogc29ydGVkRGF0YSxcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICAgIGlmIChvcHRpb25zPy5uYXZpZ2F0ZUhvbWUgIT09IGZhbHNlKSB7XG4gICAgICAgIGhhbmRsZUdvSG9tZSgpXG4gICAgICB9XG4gICAgfSxcbiAgICBbaGFuZGxlR29Ib21lXVxuICApXG5cbiAgY29uc3QgcmVtb3ZlQWdlbnQgPSB1c2VDYWxsYmFjaygoYWdlbnRJZDogbnVtYmVyIHwgc3RyaW5nKSA9PiB7XG4gICAgc2V0QWdlbnRzKHByZXYgPT4gKHtcbiAgICAgIC4uLnByZXYsXG4gICAgICBkYXRhOiBwcmV2LmRhdGEuZmlsdGVyKGEgPT4gYS5pZCAhPT0gYWdlbnRJZC50b1N0cmluZygpKSxcbiAgICB9KSlcbiAgfSwgW10pXG5cbiAgY29uc3QgdXBkYXRlQWdlbnQgPSB1c2VDYWxsYmFjaygodXBkYXRlZEFnZW50OiBBZ2VudCkgPT4ge1xuICAgIHNldEFnZW50cyhwcmV2ID0+IHtcbiAgICAgIGNvbnN0IHVwZGF0ZWREYXRhID0gcHJldi5kYXRhLm1hcChleGlzdGluZ0FnZW50ID0+XG4gICAgICAgIGV4aXN0aW5nQWdlbnQuaWQgPT09IHVwZGF0ZWRBZ2VudC5pZCA/IHVwZGF0ZWRBZ2VudCA6IGV4aXN0aW5nQWdlbnRcbiAgICAgIClcbiAgICAgIGNvbnN0IHNvcnRlZERhdGEgPSBzb3J0QWdlbnRzKHVwZGF0ZWREYXRhKVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ucHJldixcbiAgICAgICAgZGF0YTogc29ydGVkRGF0YSxcbiAgICAgIH1cbiAgICB9KVxuICB9LCBbXSlcblxuICBjb25zdCB1cGRhdGVBZ2VudEZhdm9yaXRlID0gdXNlQ2FsbGJhY2soXG4gICAgKHVwZGF0ZWRBZ2VudDogQWdlbnQsIHNob3VsZFNvcnQ6IGJvb2xlYW4gPSBmYWxzZSkgPT4ge1xuICAgICAgc2V0QWdlbnRzKHByZXYgPT4ge1xuICAgICAgICBjb25zdCB1cGRhdGVkRGF0YSA9IHByZXYuZGF0YS5tYXAoZXhpc3RpbmdBZ2VudCA9PiB7XG4gICAgICAgICAgaWYgKGV4aXN0aW5nQWdlbnQuaWQgPT09IHVwZGF0ZWRBZ2VudC5pZCkge1xuICAgICAgICAgICAgY29uc3QgeyBtZXNzYWdlLCAuLi5hZ2VudEZpZWxkcyB9ID0gdXBkYXRlZEFnZW50IGFzIGFueVxuICAgICAgICAgICAgY29uc3QgbWVyZ2VkQWdlbnQgPSB7IC4uLmV4aXN0aW5nQWdlbnQsIC4uLmFnZW50RmllbGRzIH1cbiAgICAgICAgICAgIHJldHVybiBtZXJnZWRBZ2VudFxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gZXhpc3RpbmdBZ2VudFxuICAgICAgICB9KVxuXG4gICAgICAgIC8vIFNvbG8gb3JkZW5hciBzaSBzaG91bGRTb3J0IGVzIHRydWVcbiAgICAgICAgY29uc3QgZmluYWxEYXRhID0gc2hvdWxkU29ydCA/IHNvcnRBZ2VudHModXBkYXRlZERhdGEpIDogdXBkYXRlZERhdGFcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLnByZXYsXG4gICAgICAgICAgZGF0YTogZmluYWxEYXRhLFxuICAgICAgICB9XG4gICAgICB9KVxuXG4gICAgICAvLyBBY3R1YWxpemFyIGVsIGFnZW50ZSBzZWxlY2Npb25hZG8gc2kgZXMgZWwgcXVlIHNlIGVzdMOhIGFjdHVhbGl6YW5kb1xuICAgICAgaWYgKGFnZW50Py5pZCA9PT0gdXBkYXRlZEFnZW50LmlkKSB7XG4gICAgICAgIGNvbnN0IGV4aXN0aW5nQWdlbnQgPSBhZ2VudHMuZGF0YS5maW5kKGEgPT4gYS5pZCA9PT0gdXBkYXRlZEFnZW50LmlkKVxuICAgICAgICBpZiAoZXhpc3RpbmdBZ2VudCkge1xuICAgICAgICAgIGNvbnN0IHsgbWVzc2FnZSwgLi4uYWdlbnRGaWVsZHMgfSA9IHVwZGF0ZWRBZ2VudCBhcyBhbnlcbiAgICAgICAgICBjb25zdCBtZXJnZWRBZ2VudCA9IHsgLi4uZXhpc3RpbmdBZ2VudCwgLi4uYWdlbnRGaWVsZHMgfVxuICAgICAgICAgIHNlbGVjdEFnZW50KG1lcmdlZEFnZW50KVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IHsgbWVzc2FnZSwgLi4uYWdlbnRGaWVsZHMgfSA9IHVwZGF0ZWRBZ2VudCBhcyBhbnlcbiAgICAgICAgICBzZWxlY3RBZ2VudChhZ2VudEZpZWxkcyBhcyBBZ2VudClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgW2FnZW50LCBzZWxlY3RBZ2VudCwgYWdlbnRzLmRhdGFdXG4gIClcblxuICBjb25zdCBzb3J0QWdlbnRzTGlzdCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBzZXRBZ2VudHMocHJldiA9PiB7XG4gICAgICBjb25zdCBzb3J0ZWREYXRhID0gc29ydEFnZW50cyhwcmV2LmRhdGEpXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5wcmV2LFxuICAgICAgICBkYXRhOiBzb3J0ZWREYXRhLFxuICAgICAgfVxuICAgIH0pXG4gIH0sIFtdKVxuXG4gIGNvbnN0IHNlbGVjdEZpcnN0QWdlbnQgPSB1c2VDYWxsYmFjayhcbiAgICAoYWdlbnRJZD86IHN0cmluZykgPT4ge1xuICAgICAgaWYgKGFnZW50cy5kYXRhLmxlbmd0aCkge1xuICAgICAgICBjb25zdCBmaXJzdEFnZW50ID0gYWdlbnRzLmRhdGEuZmluZEluZGV4KGFnZW50RGF0YSA9PiBhZ2VudERhdGEuaWQgPT09IGFnZW50SWQpXG4gICAgICAgIGxhc3RTZWxlY3RlZEFnZW50UmVmLmN1cnJlbnQgPSBhZ2VudHMuZGF0YVtmaXJzdEFnZW50ID09PSAwID8gMSA6IDBdXG4gICAgICAgIHNlbGVjdEFnZW50KGFnZW50cy5kYXRhW2ZpcnN0QWdlbnQgPT09IDAgPyAxIDogMF0pXG4gICAgICB9XG4gICAgfSxcbiAgICBbYWdlbnRzLmRhdGEsIHNlbGVjdEFnZW50XVxuICApXG5cbiAgY29uc3QgaGFuZGxlR2V0QWdlbnRzID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKGFnZW50VG9TZWxlY3Q/OiBBZ2VudCkgPT4ge1xuICAgICAgaWYgKGlzUmVmcmVzaGluZ1JlZi5jdXJyZW50KSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBjb25zdCByZXF1ZXN0S2V5ID0gYWdlbnRUb1NlbGVjdD8uaWQ/LnRvU3RyaW5nKCkgfHwgJ2RlZmF1bHQnXG4gICAgICBpZiAobGFzdFJlcXVlc3RSZWYuY3VycmVudCA9PT0gcmVxdWVzdEtleSAmJiAhbG9hZGluZykge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgaXNSZWZyZXNoaW5nUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgICBsYXN0UmVxdWVzdFJlZi5jdXJyZW50ID0gcmVxdWVzdEtleVxuICAgICAgc2V0TG9hZGluZyh0cnVlKVxuICAgICAgc2V0RXJyb3IobnVsbClcblxuICAgICAgY29uc3QgaXNNdWx0aUFnZW50cyA9ICEhd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTUyAmJiAhIXdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTXG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGxldCBhZ2VudFBhcnNlZDogQWdlbnRbXSA9IFtdXG4gICAgICAgIGxldCBoYXNNb3JlID0gZmFsc2VcbiAgICAgICAgbGV0IG5leHRPZmZzZXQ6IG51bWJlciB8IG51bGwgPSBudWxsXG5cbiAgICAgICAgLy8gU2kgdGllbmUgZmVhdHVyZSBhY2Nlc3MgbXVsdGkgYWdlbnRzLCBoYWNlciBkb3MgcXVlcmllcyAoTWFpYSArIGN1c3RvbSkgZW4gY3VhbHF1aWVyIHNlY2Npw7NuXG4gICAgICAgIGlmIChpc011bHRpQWdlbnRzKSB7XG4gICAgICAgICAgLy8gUXVlcnkgMTogQWdlbnRlcyBjbG9uZSAoTWFpYSkgLSBTb2xvIHBhcmEgcm9sZXMgcGVybWl0aWRvcy4gUHVlZGVuIHZlbmlyIG3Dumx0aXBsZXMgYWdlbnRlcyB0aXBvIGNsb25lXG4gICAgICAgICAgbGV0IGNsb25lQWdlbnRzOiBBZ2VudFtdID0gW11cbiAgICAgICAgICBpZiAoY2FuRmV0Y2hDbG9uZUFnZW50cykge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgY29uc3Qgb3JkZXJQYXJhbSA9XG4gICAgICAgICAgICAgICAgc2VjdGlvbiA9PT0gJ2NsaWVudCdcbiAgICAgICAgICAgICAgICAgID8gJyZvcmRlcj1jbGllbnQscHJvamVjdCdcbiAgICAgICAgICAgICAgICAgIDogc2VjdGlvbiA9PT0gJ3Byb2plY3QnIHx8IHNlY3Rpb24gPT09ICdoZWFkZXInIHx8IHNlY3Rpb24gPT09ICd0YXNrJ1xuICAgICAgICAgICAgICAgICAgICA/ICcmb3JkZXI9cHJvamVjdCxjbGllbnQnXG4gICAgICAgICAgICAgICAgICAgIDogJydcbiAgICAgICAgICAgICAgY29uc3QgbWFpYVJlc3BvbnNlID0gYXdhaXQgZmV0Y2hNYWlhKHtcbiAgICAgICAgICAgICAgICBwYXRoOiBgYWdlbnRzP2FnZW50X3R5cGU9Y2xvbmUmbGFuZz0ke21hcENPUkxhbmcoaTE4bi5sYW5ndWFnZSl9JHtvcmRlclBhcmFtfWAsXG4gICAgICAgICAgICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgY29uc3QgbWFpYURhdGEgPSBhd2FpdCBtYWlhUmVzcG9uc2UuanNvbigpXG4gICAgICAgICAgICAgIGNsb25lQWdlbnRzID0gbWFpYURhdGEuZGF0YT8uZmlsdGVyKChhZzogQWdlbnQpID0+IGFnLnR5cGUgPT09ICdjbG9uZScpIHx8IFtdXG4gICAgICAgICAgICB9IGNhdGNoIChtYWlhRXJyb3I6IGFueSkge1xuICAgICAgICAgICAgICAvLyBWZXJpZmljYXIgc2kgZWwgZXJyb3IgZXMgNDAzXG4gICAgICAgICAgICAgIC8vIGZldGNoQ09SIHB1ZWRlIGxhbnphciBkaWZlcmVudGVzIHRpcG9zIGRlIGVycm9yZXM6XG4gICAgICAgICAgICAgIC8vIDEuIEVycm9yIGNvbiBlcnJvckRhdGEuZGV0YWlsIHNpIGluY2x1eWUgJ0FjY2VzcyBkZW5pZWQnXG4gICAgICAgICAgICAgIC8vIDIuIEVycm9yIGdlbsOpcmljbyAnRmFpbGVkIGZldGNoaW5nIGRhdGEnIHNpIGVzIDQwMyBwZXJvIG5vIGluY2x1eWUgJ0FjY2VzcyBkZW5pZWQnXG4gICAgICAgICAgICAgIC8vIDMuIE5lY2VzaXRhbW9zIHZlcmlmaWNhciBlbCBzdGF0dXMgY29kZSBzaSBlc3TDoSBkaXNwb25pYmxlXG4gICAgICAgICAgICAgIGNvbnN0IGlzNDAzRXJyb3IgPVxuICAgICAgICAgICAgICAgIG1haWFFcnJvcj8ucmVzcG9uc2U/LnN0YXR1cyA9PT0gNDAzIHx8XG4gICAgICAgICAgICAgICAgbWFpYUVycm9yPy5zdGF0dXMgPT09IDQwMyB8fFxuICAgICAgICAgICAgICAgIG1haWFFcnJvcj8ubWVzc2FnZT8uaW5jbHVkZXMoXCJZb3UgZG9uJ3QgaGF2ZSBwZXJtaXNzaW9uIHRvIHZpZXcgYWdlbnRzXCIpIHx8XG4gICAgICAgICAgICAgICAgbWFpYUVycm9yPy5tZXNzYWdlPy5pbmNsdWRlcygnRmFpbGVkIGZldGNoaW5nIGRhdGEnKSAvLyBmZXRjaENPUiBsYW56YSBlc3RvIHBhcmEgNDAzIHNpbiAnQWNjZXNzIGRlbmllZCdcblxuICAgICAgICAgICAgICBpZiAoaXM0MDNFcnJvcikge1xuICAgICAgICAgICAgICAgIC8vIFNpIGVzIDQwMywgY29udGludWFyIHNpbiBsb3MgY2xvbmVBZ2VudHNcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBTaSBlcyBvdHJvIGVycm9yLCBsYW56YXJsb1xuICAgICAgICAgICAgICAgIHRocm93IG1haWFFcnJvclxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gUXVlcnkgMjogQWdlbnRlcyBjdXN0b20gY29uIHBhZ2luYWNpw7NuXG4gICAgICAgICAgbGV0IGN1c3RvbUFnZW50czogQWdlbnRbXSA9IFtdXG4gICAgICAgICAgbGV0IGN1c3RvbUhhc01vcmUgPSBmYWxzZVxuICAgICAgICAgIGxldCBjdXN0b21OZXh0T2Zmc2V0OiBudW1iZXIgfCBudWxsID0gbnVsbFxuXG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IGN1c3RvbVJlc3BvbnNlID0gYXdhaXQgZmV0Y2hNYWlhKHtcbiAgICAgICAgICAgICAgcGF0aDogJ2FnZW50cz9hZ2VudF90eXBlPWN1c3RvbSZsaW1pdD03Jm9mZnNldD0wJyxcbiAgICAgICAgICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICBjb25zdCBjdXN0b21EYXRhID0gYXdhaXQgY3VzdG9tUmVzcG9uc2UuanNvbigpXG4gICAgICAgICAgICBjdXN0b21BZ2VudHMgPSBjdXN0b21EYXRhLmRhdGEgfHwgW11cbiAgICAgICAgICAgIGN1c3RvbUhhc01vcmUgPSBjdXN0b21EYXRhLmhhc19tb3JlIHx8IGZhbHNlXG4gICAgICAgICAgICBjdXN0b21OZXh0T2Zmc2V0ID0gY3VzdG9tRGF0YS5uZXh0X29mZnNldCB8fCBudWxsXG4gICAgICAgICAgfSBjYXRjaCAoY3VzdG9tRXJyb3I6IGFueSkge1xuICAgICAgICAgICAgLy8gVmVyaWZpY2FyIHNpIGVsIGVycm9yIGVzIDQwM1xuICAgICAgICAgICAgLy8gZmV0Y2hDT1IgcHVlZGUgbGFuemFyIGRpZmVyZW50ZXMgdGlwb3MgZGUgZXJyb3JlczpcbiAgICAgICAgICAgIC8vIDEuIEVycm9yIGNvbiBlcnJvckRhdGEuZGV0YWlsIHNpIGluY2x1eWUgJ0FjY2VzcyBkZW5pZWQnXG4gICAgICAgICAgICAvLyAyLiBFcnJvciBnZW7DqXJpY28gJ0ZhaWxlZCBmZXRjaGluZyBkYXRhJyBzaSBlcyA0MDMgcGVybyBubyBpbmNsdXllICdBY2Nlc3MgZGVuaWVkJ1xuICAgICAgICAgICAgLy8gMy4gTmVjZXNpdGFtb3MgdmVyaWZpY2FyIGVsIHN0YXR1cyBjb2RlIHNpIGVzdMOhIGRpc3BvbmlibGVcbiAgICAgICAgICAgIGNvbnN0IGlzNDAzRXJyb3IgPVxuICAgICAgICAgICAgICBjdXN0b21FcnJvcj8ucmVzcG9uc2U/LnN0YXR1cyA9PT0gNDAzIHx8XG4gICAgICAgICAgICAgIGN1c3RvbUVycm9yPy5zdGF0dXMgPT09IDQwMyB8fFxuICAgICAgICAgICAgICBjdXN0b21FcnJvcj8ubWVzc2FnZT8uaW5jbHVkZXMoXCJZb3UgZG9uJ3QgaGF2ZSBwZXJtaXNzaW9uIHRvIHZpZXcgYWdlbnRzXCIpIHx8XG4gICAgICAgICAgICAgIGN1c3RvbUVycm9yPy5tZXNzYWdlPy5pbmNsdWRlcygnRmFpbGVkIGZldGNoaW5nIGRhdGEnKSAvLyBmZXRjaENPUiBsYW56YSBlc3RvIHBhcmEgNDAzIHNpbiAnQWNjZXNzIGRlbmllZCdcblxuICAgICAgICAgICAgaWYgKGlzNDAzRXJyb3IpIHtcbiAgICAgICAgICAgICAgLy8gU2kgZXMgNDAzLCBjb250aW51YXIgc2luIGxvcyBjdXN0b21BZ2VudHMgKGN1c3RvbUFnZW50cyBxdWVkYSBjb21vIGFycmF5IHZhY8OtbylcbiAgICAgICAgICAgICAgLy8gRXN0byBwdWVkZSBvY3VycmlyIGVuIGRvcyBlc2NlbmFyaW9zOlxuICAgICAgICAgICAgICAvLyBjYW5GZXRjaENsb25lQWdlbnRzIHRydWU6IHB1ZWRlIHF1ZWRhciBzb2xvIGNsb25lQWdlbnRzIHNpIGxhIHF1ZXJ5IGNsb25lIGZ1ZSBleGl0b3NhXG4gICAgICAgICAgICAgIC8vIGNhbkZldGNoQ2xvbmVBZ2VudHMgZmFsc2U6IGVsIGxpc3RhZG8gcXVlZGEgdmFjw61vIChubyBzZSBwaWRpZXJvbiBjbG9uZXMpXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAvLyBTaSBlcyBvdHJvIGVycm9yLCBsYW56YXJsb1xuICAgICAgICAgICAgICB0aHJvdyBjdXN0b21FcnJvclxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIENvbWJpbmFyOiBhZ2VudGVzIGNsb25lIHByaW1lcm8sIGx1ZWdvIGxvcyBjdXN0b20gKHNpIGV4aXN0ZW4pXG4gICAgICAgICAgLy8gU2kgZWwgdXN1YXJpbyB0aWVuZSB1biByb2wgZGVzaGFiaWxpdGFkbywgbm8gaW5jbHVpciBjbG9uZUFnZW50c1xuICAgICAgICAgIGlmICghY2FuRmV0Y2hDbG9uZUFnZW50cykge1xuICAgICAgICAgICAgLy8gUm9sIHNpbiBhY2Nlc28gYSBjbG9uZXMgKHAuIGVqLiBjb2xhYm9yYWRvciBmdWVyYSBkZWwgcGlsb3RvKTogc29sbyBjdXN0b21BZ2VudHNcbiAgICAgICAgICAgIC8vIFNpIGN1c3RvbUFnZW50cyBlc3TDoSB2YWPDrW8gKHBvciA0MDMpLCBhZ2VudFBhcnNlZCBzZXLDoSBbXVxuICAgICAgICAgICAgYWdlbnRQYXJzZWQgPSBjdXN0b21BZ2VudHNcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gUm9sIGNvbiBhY2Nlc28gYSBjbG9uZXM6IGNsb25lQWdlbnRzICsgY3VzdG9tQWdlbnRzXG4gICAgICAgICAgICAvLyBTaSBjdXN0b21BZ2VudHMgZXN0w6EgdmFjw61vIChwb3IgNDAzKSBwZXJvIGhheSBjbG9uZUFnZW50cywgYWdlbnRQYXJzZWQgdGVuZHLDoSBsb3MgY2xvbmVzXG4gICAgICAgICAgICAvLyBTaSBubyBoYXkgY2xvbmVBZ2VudHMgbmkgY3VzdG9tQWdlbnRzLCBhZ2VudFBhcnNlZCBzZXLDoSBbXVxuICAgICAgICAgICAgYWdlbnRQYXJzZWQgPSBjbG9uZUFnZW50cy5sZW5ndGggPyBbLi4uY2xvbmVBZ2VudHMsIC4uLmN1c3RvbUFnZW50c10gOiBjdXN0b21BZ2VudHNcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gT3JkZW5hcjogTWFpYSBwcmltZXJvLCBsdWVnbyBmYXZvcml0b3MgYWxmYWLDqXRpY2FtZW50ZSwgbHVlZ28gbm8gZmF2b3JpdG9zIGFsZmFiw6l0aWNhbWVudGVcbiAgICAgICAgICBhZ2VudFBhcnNlZCA9IHNvcnRBZ2VudHMoYWdlbnRQYXJzZWQpXG4gICAgICAgICAgaGFzTW9yZSA9IGN1c3RvbUhhc01vcmVcbiAgICAgICAgICBuZXh0T2Zmc2V0ID0gY3VzdG9tTmV4dE9mZnNldFxuXG4gICAgICAgICAgc2V0QWdlbnRzKHtcbiAgICAgICAgICAgIGRhdGE6IGFnZW50UGFyc2VkLFxuICAgICAgICAgICAgaGFzX21vcmU6IGhhc01vcmUsXG4gICAgICAgICAgICBuZXh0X29mZnNldDogbmV4dE9mZnNldCxcbiAgICAgICAgICB9KVxuXG4gICAgICAgICAgLy8gU2kgbm8gaGF5IGFnZW50ZXMgZGVzcHXDqXMgZGUgcHJvY2VzYXIgbGFzIHF1ZXJpZXMsIGxpbXBpYXIgZWwgZXJyb3JcbiAgICAgICAgICBpZiAoYWdlbnRQYXJzZWQubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICBzZXRFcnJvcihudWxsKVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBzaG91bGRSZXF1ZXN0Q2xvbmVBZ2VudHMgPVxuICAgICAgICAgICAgY2FuRmV0Y2hDbG9uZUFnZW50cyAmJlxuICAgICAgICAgICAgKHNlY3Rpb24gPT09ICdwcm9qZWN0JyB8fCBzZWN0aW9uID09PSAnY2xpZW50JyB8fCBzZWN0aW9uID09PSAnaGVhZGVyJyB8fCBzZWN0aW9uID09PSAndGFzaycpXG5cbiAgICAgICAgICBpZiAoIXNob3VsZFJlcXVlc3RDbG9uZUFnZW50cykge1xuICAgICAgICAgICAgc2V0QWdlbnRzKHsgZGF0YTogW10sIGhhc19tb3JlOiBmYWxzZSwgbmV4dF9vZmZzZXQ6IG51bGwgfSlcbiAgICAgICAgICAgIHNldEVycm9yKG51bGwpXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHF1ZXJ5UGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcygpXG4gICAgICAgICAgICBxdWVyeVBhcmFtcy5hcHBlbmQoJ2FnZW50X3R5cGUnLCAnY2xvbmUnKVxuICAgICAgICAgICAgcXVlcnlQYXJhbXMuYXBwZW5kKCdsYW5nJywgbWFwQ09STGFuZyhpMThuLmxhbmd1YWdlKSlcbiAgICAgICAgICAgIHF1ZXJ5UGFyYW1zLmFwcGVuZCgnb3JkZXInLCBzZWN0aW9uID09PSAnY2xpZW50JyA/ICdjbGllbnQscHJvamVjdCcgOiAncHJvamVjdCxjbGllbnQnKVxuICAgICAgICAgICAgaWYgKHNlY3Rpb24gPT09ICdoZWFkZXInKSB7XG4gICAgICAgICAgICAgIHF1ZXJ5UGFyYW1zLmFwcGVuZCgnbGltaXQnLCAnNycpXG4gICAgICAgICAgICAgIHF1ZXJ5UGFyYW1zLmFwcGVuZCgnb2Zmc2V0JywgJzAnKVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBwYXRoID0gYGFnZW50cz8ke3F1ZXJ5UGFyYW1zLnRvU3RyaW5nKCl9YFxuXG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoTWFpYSh7XG4gICAgICAgICAgICAgICAgcGF0aCxcbiAgICAgICAgICAgICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKClcbiAgICAgICAgICAgICAgYWdlbnRQYXJzZWQgPSBkYXRhLmRhdGEgfHwgW11cbiAgICAgICAgICAgICAgYWdlbnRQYXJzZWQgPSBzb3J0QWdlbnRzKGFnZW50UGFyc2VkKVxuICAgICAgICAgICAgICBoYXNNb3JlID0gZGF0YS5oYXNfbW9yZVxuICAgICAgICAgICAgICBuZXh0T2Zmc2V0ID0gZGF0YS5uZXh0X29mZnNldFxuXG4gICAgICAgICAgICAgIHNldEFnZW50cyh7XG4gICAgICAgICAgICAgICAgLi4uZGF0YSxcbiAgICAgICAgICAgICAgICBkYXRhOiBhZ2VudFBhcnNlZCxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH0gY2F0Y2ggKHJlc3BvbnNlRXJyb3I6IGFueSkge1xuICAgICAgICAgICAgICAvLyBWZXJpZmljYXIgc2kgZWwgZXJyb3IgZXMgNDAzXG4gICAgICAgICAgICAgIC8vIGZldGNoQ09SIHB1ZWRlIGxhbnphciBkaWZlcmVudGVzIHRpcG9zIGRlIGVycm9yZXM6XG4gICAgICAgICAgICAgIC8vIDEuIEVycm9yIGNvbiBlcnJvckRhdGEuZGV0YWlsIHNpIGluY2x1eWUgJ0FjY2VzcyBkZW5pZWQnXG4gICAgICAgICAgICAgIC8vIDIuIEVycm9yIGdlbsOpcmljbyAnRmFpbGVkIGZldGNoaW5nIGRhdGEnIHNpIGVzIDQwMyBwZXJvIG5vIGluY2x1eWUgJ0FjY2VzcyBkZW5pZWQnXG4gICAgICAgICAgICAgIC8vIDMuIE5lY2VzaXRhbW9zIHZlcmlmaWNhciBlbCBzdGF0dXMgY29kZSBzaSBlc3TDoSBkaXNwb25pYmxlXG4gICAgICAgICAgICAgIGNvbnN0IGlzNDAzRXJyb3IgPVxuICAgICAgICAgICAgICAgIHJlc3BvbnNlRXJyb3I/LnJlc3BvbnNlPy5zdGF0dXMgPT09IDQwMyB8fFxuICAgICAgICAgICAgICAgIHJlc3BvbnNlRXJyb3I/LnN0YXR1cyA9PT0gNDAzIHx8XG4gICAgICAgICAgICAgICAgcmVzcG9uc2VFcnJvcj8ubWVzc2FnZT8uaW5jbHVkZXMoXCJZb3UgZG9uJ3QgaGF2ZSBwZXJtaXNzaW9uIHRvIHZpZXcgYWdlbnRzXCIpIHx8XG4gICAgICAgICAgICAgICAgcmVzcG9uc2VFcnJvcj8ubWVzc2FnZT8uaW5jbHVkZXMoJ0ZhaWxlZCBmZXRjaGluZyBkYXRhJykgLy8gZmV0Y2hDT1IgbGFuemEgZXN0byBwYXJhIDQwMyBzaW4gJ0FjY2VzcyBkZW5pZWQnXG5cbiAgICAgICAgICAgICAgaWYgKGlzNDAzRXJyb3IpIHtcbiAgICAgICAgICAgICAgICAvLyBTaSBlcyA0MDMsIGVzdGFibGVjZXIgYWdlbnRlcyB2YWPDrW9zIHkgY29udGludWFyXG4gICAgICAgICAgICAgICAgc2V0QWdlbnRzKHtcbiAgICAgICAgICAgICAgICAgIGRhdGE6IFtdLFxuICAgICAgICAgICAgICAgICAgaGFzX21vcmU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgbmV4dF9vZmZzZXQ6IG51bGwsXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICBzZXRFcnJvcihudWxsKVxuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIFNpIGVzIG90cm8gZXJyb3IsIGxhbnphcmxvXG4gICAgICAgICAgICAgICAgdGhyb3cgcmVzcG9uc2VFcnJvclxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gTMOzZ2ljYSBkZSBzZWxlY3QgYWdlbnQgLSBTb2xvIHNlbGVjY2lvbmFyIHNpIGhheSBhZ2VudGVzIGRpc3BvbmlibGVzXG4gICAgICAgIGlmIChhZ2VudFBhcnNlZC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgaWYgKGFnZW50VG9TZWxlY3QgJiYgYWdlbnRQYXJzZWQuZmluZCgoYWdlbnRUb1JlcXVlc3Q6IEFnZW50KSA9PiBhZ2VudFRvUmVxdWVzdC5pZCA9PT0gYWdlbnRUb1NlbGVjdC5pZCkpIHtcbiAgICAgICAgICAgIGlmIChsYXN0U2VsZWN0ZWRBZ2VudFJlZi5jdXJyZW50Py5pZCAhPT0gYWdlbnRUb1NlbGVjdC5pZCkge1xuICAgICAgICAgICAgICBsYXN0U2VsZWN0ZWRBZ2VudFJlZi5jdXJyZW50ID0gYWdlbnRUb1NlbGVjdFxuICAgICAgICAgICAgICBzZWxlY3RBZ2VudChhZ2VudFRvU2VsZWN0KVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSBpZiAoYWdlbnRQYXJzZWQ/LlswXSAmJiAoIWFnZW50IHx8ICFhZ2VudFBhcnNlZC5maW5kKChhOiBBZ2VudCkgPT4gYS5pZCA9PT0gYWdlbnQuaWQpKSkge1xuICAgICAgICAgICAgY29uc3QgYXZhaWxhYmxlQWdlbnRzID1cbiAgICAgICAgICAgICAgd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTUyAmJiBjYW5GZXRjaENsb25lQWdlbnRzXG4gICAgICAgICAgICAgICAgPyBhZ2VudFBhcnNlZFxuICAgICAgICAgICAgICAgIDogYWdlbnRQYXJzZWQuZmlsdGVyKChhZ2VudEl0ZW06IEFnZW50KSA9PiBhZ2VudEl0ZW0udHlwZSAhPT0gJ2Nsb25lJylcblxuICAgICAgICAgICAgY29uc3QgW2ZpcnN0QWdlbnRdID0gYXZhaWxhYmxlQWdlbnRzXG4gICAgICAgICAgICBpZiAoZmlyc3RBZ2VudCAmJiBsYXN0U2VsZWN0ZWRBZ2VudFJlZi5jdXJyZW50Py5pZCAhPT0gZmlyc3RBZ2VudC5pZCkge1xuICAgICAgICAgICAgICBsYXN0U2VsZWN0ZWRBZ2VudFJlZi5jdXJyZW50ID0gZmlyc3RBZ2VudFxuICAgICAgICAgICAgICBzZWxlY3RBZ2VudChmaXJzdEFnZW50KVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSBpZiAoYWdlbnRUb1NlbGVjdCAmJiBhZ2VudFBhcnNlZD8ubGVuZ3RoKSB7XG4gICAgICAgICAgICBjb25zdCBhdmFpbGFibGVBZ2VudHMgPVxuICAgICAgICAgICAgICB3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTICYmIGNhbkZldGNoQ2xvbmVBZ2VudHNcbiAgICAgICAgICAgICAgICA/IGFnZW50UGFyc2VkXG4gICAgICAgICAgICAgICAgOiBhZ2VudFBhcnNlZC5maWx0ZXIoKGFnZW50SXRlbTogQWdlbnQpID0+IGFnZW50SXRlbS50eXBlICE9PSAnY2xvbmUnKVxuXG4gICAgICAgICAgICBjb25zdCBbZmlyc3RBdmFpbGFibGVBZ2VudF0gPSBhdmFpbGFibGVBZ2VudHNcbiAgICAgICAgICAgIGlmIChmaXJzdEF2YWlsYWJsZUFnZW50ICYmIGxhc3RTZWxlY3RlZEFnZW50UmVmLmN1cnJlbnQ/LmlkICE9PSBmaXJzdEF2YWlsYWJsZUFnZW50LmlkKSB7XG4gICAgICAgICAgICAgIGxhc3RTZWxlY3RlZEFnZW50UmVmLmN1cnJlbnQgPSBmaXJzdEF2YWlsYWJsZUFnZW50XG4gICAgICAgICAgICAgIHNlbGVjdEFnZW50KGZpcnN0QXZhaWxhYmxlQWdlbnQpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgc2V0TG9hZGluZyhmYWxzZSlcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBzZXRFcnJvcihlcnIgaW5zdGFuY2VvZiBFcnJvciA/IGVyci5tZXNzYWdlIDogJ0FuIHVua25vd24gZXJyb3Igb2NjdXJyZWQnKVxuICAgICAgICBzZXRMb2FkaW5nKGZhbHNlKVxuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgaXNSZWZyZXNoaW5nUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICBpZiAoIWlzUmVmcmVzaGluZ1JlZi5jdXJyZW50KSB7XG4gICAgICAgICAgICBsYXN0UmVxdWVzdFJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgICAgIH1cbiAgICAgICAgfSwgMTAwKVxuICAgICAgfVxuICAgIH0sXG4gICAgW3NlbGVjdEFnZW50LCBzZWN0aW9uLCBhZ2VudCwgbG9hZGluZywgY2FuRmV0Y2hDbG9uZUFnZW50cywgaTE4bi5sYW5ndWFnZV1cbiAgKVxuXG4gIGNvbnN0IGxvYWRNb3JlQWdlbnRzID0gdXNlQ2FsbGJhY2soYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGlzTXVsdGlBZ2VudHMgPSAhIXdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1MgJiYgISF3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UU1xuICAgIC8vIENhcmdhciBtw6FzOiBlbiBoZWFkZXIgc2llbXByZTsgZW4gcHJvamVjdCBzb2xvIHNpIGlzTXVsdGlBZ2VudHMgKHBvcnF1ZSBzb2xvIGVudG9uY2VzIGhheSBwYWdpbmFjacOzbiBkZSBjdXN0b20pXG4gICAgY29uc3QgY2FuTG9hZE1vcmUgPSBzZWN0aW9uID09PSAnaGVhZGVyJyB8fCBpc011bHRpQWdlbnRzXG4gICAgaWYgKCFjYW5Mb2FkTW9yZSB8fCAhYWdlbnRzLmhhc19tb3JlIHx8ICFhZ2VudHMubmV4dF9vZmZzZXQgfHwgbG9hZGluZ01vcmUpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHNldExvYWRpbmdNb3JlKHRydWUpXG4gICAgc2V0RXJyb3IobnVsbClcblxuICAgIHRyeSB7XG4gICAgICBsZXQgcGF0aDogc3RyaW5nXG5cbiAgICAgIC8vIFNpIGVzIG11bHRpQWdlbnRzLCBzb2xvIGNhcmdhciBhZ2VudHMgY3VzdG9tIChNYWlhIHlhIGVzdMOhIGNhcmdhZG8pXG4gICAgICBpZiAoaXNNdWx0aUFnZW50cykge1xuICAgICAgICAvLyBNYW50ZW5lciBjYW50aWRhZCBpbXBhciBkZSBjYXJkczogcHJpbWVyYSBjYXJnYSA3LCBzaWd1aWVudGVzICs2ICg3LCAxMywgMTksIC4uLilcbiAgICAgICAgcGF0aCA9IGBhZ2VudHM/YWdlbnRfdHlwZT1jdXN0b20mbGltaXQ9NiZvZmZzZXQ9JHthZ2VudHMubmV4dF9vZmZzZXR9YFxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gU2kgbm8gZXMgbXVsdGlBZ2VudHMsIGNhcmdhciBtw6FzIGFnZW50ZXMgY2xvbmUgKE1haWEpIOKAlCBtaXNtbyBvcmRlciBxdWUgcHJvamVjdCBwYXJhIGhlYWRlclxuICAgICAgICBjb25zdCBxdWVyeVBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKVxuICAgICAgICBxdWVyeVBhcmFtcy5hcHBlbmQoJ2FnZW50X3R5cGUnLCAnY2xvbmUnKVxuICAgICAgICBxdWVyeVBhcmFtcy5hcHBlbmQoJ2xhbmcnLCBtYXBDT1JMYW5nKGkxOG4ubGFuZ3VhZ2UpKVxuICAgICAgICBxdWVyeVBhcmFtcy5hcHBlbmQoJ29yZGVyJywgJ3Byb2plY3QsY2xpZW50JylcbiAgICAgICAgcXVlcnlQYXJhbXMuYXBwZW5kKCdsaW1pdCcsICc3JylcbiAgICAgICAgcXVlcnlQYXJhbXMuYXBwZW5kKCdvZmZzZXQnLCBhZ2VudHMubmV4dF9vZmZzZXQudG9TdHJpbmcoKSlcbiAgICAgICAgcGF0aCA9IGBhZ2VudHM/JHtxdWVyeVBhcmFtcy50b1N0cmluZygpfWBcbiAgICAgIH1cblxuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaE1haWEoe1xuICAgICAgICBwYXRoLFxuICAgICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgfSlcblxuICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKVxuXG4gICAgICAvLyBBY3VtdWxhciBhZ2VudGVzLCBleGNsdXllbmRvIGR1cGxpY2Fkb3NcbiAgICAgIHNldEFnZW50cyhwcmV2ID0+IHtcbiAgICAgICAgaWYgKGlzTXVsdGlBZ2VudHMpIHtcbiAgICAgICAgICAvLyBMw7NnaWNhIHBhcmEgbXVsdGlBZ2VudHM6IHNlcGFyYXIgY2xvbmUgeSBjdXN0b21cbiAgICAgICAgICAvLyBNYW50ZW5lciB0b2RvcyBsb3MgYWdlbnRlcyBjbG9uZSBleGlzdGVudGVzIGFsIGluaWNpb1xuICAgICAgICAgIGNvbnN0IGV4aXN0aW5nQ2xvbmVBZ2VudHMgPSBwcmV2LmRhdGEuZmlsdGVyKChhZzogQWdlbnQpID0+IGFnLnR5cGUgPT09ICdjbG9uZScpXG5cbiAgICAgICAgICAvLyBPYnRlbmVyIElEcyBleGlzdGVudGVzIChleGNsdXllbmRvIGNsb25lcylcbiAgICAgICAgICBjb25zdCBleGlzdGluZ0lkcyA9IG5ldyBTZXQocHJldi5kYXRhLmZpbHRlcigoYWc6IEFnZW50KSA9PiBhZy50eXBlICE9PSAnY2xvbmUnKS5tYXAoKGFnOiBBZ2VudCkgPT4gYWcuaWQpKVxuXG4gICAgICAgICAgLy8gRmlsdHJhciBudWV2b3MgYWdlbnRzIHF1ZSBubyBlc3TDqW4geWEgZW4gbGEgbGlzdGEgKHkgcXVlIG5vIHNlYW4gY2xvbmUpXG4gICAgICAgICAgY29uc3QgbmV3QWdlbnRzID0gZGF0YS5kYXRhLmZpbHRlcigoYWc6IEFnZW50KSA9PiBhZy50eXBlICE9PSAnY2xvbmUnICYmICFleGlzdGluZ0lkcy5oYXMoYWcuaWQpKVxuXG4gICAgICAgICAgLy8gQ29uc3RydWlyIGVsIG51ZXZvIGFycmF5OiBjbG9uZXMgcHJpbWVybywgbHVlZ28gbG9zIGFnZW50cyBleGlzdGVudGVzIHF1ZSBubyBzZWFuIGNsb25lLCBsdWVnbyBsb3MgbnVldm9zXG4gICAgICAgICAgY29uc3QgbmV3RGF0YSA9IGV4aXN0aW5nQ2xvbmVBZ2VudHMubGVuZ3RoXG4gICAgICAgICAgICA/IFsuLi5leGlzdGluZ0Nsb25lQWdlbnRzLCAuLi5wcmV2LmRhdGEuZmlsdGVyKChhZzogQWdlbnQpID0+IGFnLnR5cGUgIT09ICdjbG9uZScpLCAuLi5uZXdBZ2VudHNdXG4gICAgICAgICAgICA6IFsuLi5wcmV2LmRhdGEuZmlsdGVyKChhZzogQWdlbnQpID0+IGFnLnR5cGUgIT09ICdjbG9uZScpLCAuLi5uZXdBZ2VudHNdXG5cbiAgICAgICAgICAvLyBPcmRlbmFyOiBNYWlhIHByaW1lcm8sIGx1ZWdvIGZhdm9yaXRvcyBhbGZhYsOpdGljYW1lbnRlLCBsdWVnbyBubyBmYXZvcml0b3MgYWxmYWLDqXRpY2FtZW50ZVxuICAgICAgICAgIGNvbnN0IHNvcnRlZERhdGEgPSBzb3J0QWdlbnRzKG5ld0RhdGEpXG5cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZGF0YTogc29ydGVkRGF0YSxcbiAgICAgICAgICAgIGhhc19tb3JlOiBkYXRhLmhhc19tb3JlLFxuICAgICAgICAgICAgbmV4dF9vZmZzZXQ6IGRhdGEubmV4dF9vZmZzZXQsXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIEzDs2dpY2EgcGFyYSAhaXNNdWx0aUFnZW50czogdG9kb3MgbG9zIGFnZW50ZXMgc29uIGNsb25lLCBzaW1wbGVtZW50ZSBhZ3JlZ2FyIGV2aXRhbmRvIGR1cGxpY2Fkb3NcbiAgICAgICAgY29uc3QgZXhpc3RpbmdJZHMgPSBuZXcgU2V0KHByZXYuZGF0YS5tYXAoKGFnOiBBZ2VudCkgPT4gYWcuaWQpKVxuICAgICAgICBjb25zdCBuZXdBZ2VudHMgPSAoZGF0YS5kYXRhIHx8IFtdKS5maWx0ZXIoKGFnOiBBZ2VudCkgPT4gIWV4aXN0aW5nSWRzLmhhcyhhZy5pZCkpXG4gICAgICAgIGNvbnN0IG5ld0RhdGEgPSBbLi4ucHJldi5kYXRhLCAuLi5uZXdBZ2VudHNdXG5cbiAgICAgICAgLy8gT3JkZW5hcjogTWFpYSBwcmltZXJvLCBsdWVnbyBmYXZvcml0b3MgYWxmYWLDqXRpY2FtZW50ZSwgbHVlZ28gbm8gZmF2b3JpdG9zIGFsZmFiw6l0aWNhbWVudGVcbiAgICAgICAgY29uc3Qgc29ydGVkRGF0YSA9IHNvcnRBZ2VudHMobmV3RGF0YSlcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGRhdGE6IHNvcnRlZERhdGEsXG4gICAgICAgICAgaGFzX21vcmU6IGRhdGEuaGFzX21vcmUsXG4gICAgICAgICAgbmV4dF9vZmZzZXQ6IGRhdGEubmV4dF9vZmZzZXQsXG4gICAgICAgIH1cbiAgICAgIH0pXG5cbiAgICAgIHNldExvYWRpbmdNb3JlKGZhbHNlKVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgaGFuZGxlU25hY2tiYXJFcnJvcih0KCdzbmFja2Jhci5sb2FkTW9yZUFnZW50cy5lcnJvcicpKVxuICAgICAgc2V0TG9hZGluZ01vcmUoZmFsc2UpXG4gICAgfVxuICB9LCBbc2VjdGlvbiwgYWdlbnRzLmhhc19tb3JlLCBhZ2VudHMubmV4dF9vZmZzZXQsIGxvYWRpbmdNb3JlLCBpMThuLmxhbmd1YWdlXSlcblxuICByZXR1cm4ge1xuICAgIGFnZW50cyxcbiAgICBsb2FkaW5nLFxuICAgIGxvYWRpbmdNb3JlLFxuICAgIGVycm9yLFxuICAgIGhhbmRsZUdldEFnZW50cyxcbiAgICBsb2FkTW9yZUFnZW50cyxcbiAgICBhZGRBZ2VudCxcbiAgICByZW1vdmVBZ2VudCxcbiAgICB1cGRhdGVBZ2VudCxcbiAgICB1cGRhdGVBZ2VudEZhdm9yaXRlLFxuICAgIHNlbGVjdEZpcnN0QWdlbnQsXG4gICAgc29ydEFnZW50c0xpc3QsXG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVNBLFFBQVEsRUFBRUMsV0FBVyxFQUFFQyxNQUFNLFFBQVEsT0FBTztBQUNyRCxTQUFTQyxjQUFjLFFBQVEsZUFBZTtBQUM5QyxTQUFTQyxrQkFBa0IsUUFBUSxzREFBc0Q7QUFDekYsU0FBU0MsU0FBUyxRQUFRLFdBQVc7QUFFckMsU0FBU0MsT0FBTyxRQUFRLDJCQUEyQjtBQUNuRCxTQUFTQyw0QkFBNEIsUUFBUSx3Q0FBd0M7QUFDckYsU0FBU0MsVUFBVSxRQUFRLHFCQUFxQjs7QUFFaEQ7QUFDQTtBQUNBO0FBQ0EsSUFBTUMsVUFBVSxHQUFHLFNBQWJBLFVBQVVBLENBQUlDLE1BQWUsRUFBYztFQUMvQztFQUNBLElBQU1DLFdBQVcsR0FBR0QsTUFBTSxDQUFDRSxNQUFNLENBQUMsVUFBQUMsRUFBRTtJQUFBLE9BQUlBLEVBQUUsQ0FBQ0MsSUFBSSxLQUFLLE9BQU87RUFBQSxFQUFDO0VBQzVELElBQU1DLFdBQVcsR0FBR0wsTUFBTSxDQUFDRSxNQUFNLENBQUMsVUFBQUMsRUFBRTtJ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
|
package/lib/types/global.d.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3R5cGVzL2dsb2JhbC5kLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLXVuZGVmICovXG4vKiBlc2xpbnQtZGlzYWJsZSB2YXJzLW9uLXRvcCAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tdmFyICovXG4vKiBlc2xpbnQtZGlzYWJsZSBjYW1lbGNhc2UgKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7IFVzZXJQcm9wcyB9IGZyb20gJy4vdXNlclR5cGUuZCdcblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgV2luZG93IGV4dGVuZHMgV2luZG93IHtcbiAgICBsYW5nOiBzdHJpbmdcbiAgICB1c2VySW5mbzogVXNlclByb3BzXG4gICAgQXBwY3VlczogYW55XG4gICAgbWFpYVByb2plY3RTdW1tYXJ5QWNjZXNzPzogc3RyaW5nXG4gICAgbWFpYUNoYXRBaUFjY2Vzcz86IHN0cmluZ1xuICAgIE1BSUFfUFJPSkVDVF9TVU1NQVJZX0ZFQVRVUkVfQUNDRVNTPzogc3RyaW5nIHwgYm9vbGVhblxuICAgIE1BSUFfVEFTS19QQU5FTF9BQ0NFU1M/OiBzdHJpbmcgfCBib29sZWFuXG4gICAgTUFJQV9NQVJLRVRQTEFDRV9NQUlBS0VSPzogc3RyaW5nIHwgYm9vbGVhblxuICAgICRfc2M6IGFueVxuICAgIG9wZW5QYW5lbD86ICh0YXNrSWQ6IHN0cmluZyB8IG51bWJlciwgc2VjdGlvbjogc3RyaW5nKSA9PiB2b2lkXG4gICAgbmV3UHJvamVjdERhc2hib2FyZD86IHtcbiAgICAgIGFkZEV4aXN0aW5nVGFza1RvRGFzaGJvYXJkOiAodGFza0lkczogbnVtYmVyW10pID0+IHZvaWRcbiAgICAgIGVkaXRFeGlzdGluZ1Rhc2tJbkRhc2hib2FyZDogKHRhc2tJZHM6IG51bWJlcltdKSA9PiB2b2lkXG4gICAgICBkZWxldGVFeGlzdGluZ1Rhc2tGcm9tRGFzaGJvYXJkOiAodGFza0lkczogbnVtYmVyW10pID0+IHZvaWRcbiAgICB9XG4gICAgdGFza1BhbmVsPzoge1xuICAgICAgdGFza0lkOiBzdHJpbmdcbiAgICAgIHJlZmV0Y2hUYXNrOiAoKSA9PiB2b2lkXG4gICAgfVxuICB9XG4gIGludGVyZmFjZSBXaW5kb3dFdmVudE1hcCB7XG4gICAgLy8gZW5hYmxlZCB3aW5kb3cgZXZlbnQgbGlzdGVuZXIgJ2xvY2F0aW9uY2hhbmdlJ1xuICAgIGxvY2F0aW9uY2hhbmdlOiBDdXN0b21FdmVudFxuICB9XG5cbiAgdHlwZSBUcmFuc2xhdGlvbkZ1bmN0aW9uID0gKGtleTogc3RyaW5nKSA9PiBzdHJpbmdcbiAgdmFyICRfY2E6IHtcbiAgICBnZXRDb29raWVBVFM6ICgpID0+IHN0cmluZ1xuICAgIHJlZnJlc2hUb2tlbjogKCkgPT4gUHJvbWlzZTx2b2lkPlxuICB9XG4gIHZhciAkX3NjOiBhbnlcbiAgZGVjbGFyZSB2YXIgcHJvY2VzczogTm9kZUpTLlByb2Nlc3NcbiAgZGVjbGFyZSB2YXIgbWFpYUFnZW50UG1BY2Nlc3M6IHN0cmluZ1xuICBkZWNsYXJlIHZhciBNQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTOiBzdHJpbmdcbiAgZGVjbGFyZSB2YXIgTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTOiBzdHJpbmdcbiAgZGVjbGFyZSB2YXIgTUFJQV9NQVJLRVRQTEFDRV9NQUlBS0VSOiBzdHJpbmdcbiAgZGVjbGFyZSB2YXIgbWFpYVByb2plY3RTdW1tYXJ5QWNjZXNzOiBzdHJpbmdcbiAgZGVjbGFyZSB2YXIgbWFpYUZhcXNBY2Nlc3M6IHN0cmluZ1xufVxuIl0sIm1hcHBpbmdzIjoiIiwiaWdub3JlTGlzdCI6W119
|