@projectcor/maia-components 2.11.62-0 → 2.11.62-2
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/ContextMentionChip/ContextMentionChip.styles.js +3 -6
- package/lib/components/atoms/ContextMentionPopover/ContextMentionPopover.js +10 -2
- package/lib/hooks/useEntitySearch.js +283 -247
- package/lib/lang/br/index.js +4 -2
- package/lib/lang/en/index.js +4 -2
- package/lib/lang/es/index.js +4 -2
- package/lib/lang/fr/index.js +4 -2
- package/lib/utils/renderContextMentions.js +9 -4
- package/package.json +1 -1
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
|
-
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
3
1
|
import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
|
|
2
|
+
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
4
3
|
import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
|
|
4
|
+
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
5
5
|
import _typeof from "@babel/runtime/helpers/typeof";
|
|
6
|
+
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
6
7
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
7
8
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
8
|
-
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
9
9
|
import { useLazyQuery } from '@apollo/client';
|
|
10
10
|
import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
|
|
11
11
|
import { getRecentClients } from '../services/maia/RecentClients/getRecentClients';
|
|
@@ -296,44 +296,6 @@ var formatMcpPrimaryLabel = function formatMcpPrimaryLabel(slug) {
|
|
|
296
296
|
return _char.toUpperCase();
|
|
297
297
|
});
|
|
298
298
|
};
|
|
299
|
-
var SKILLS_PAGE_LIMIT = 100;
|
|
300
|
-
var _fetchAllSkillPages = /*#__PURE__*/function () {
|
|
301
|
-
var _ref = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(offset, accumulated) {
|
|
302
|
-
var _data$data;
|
|
303
|
-
var response, data, page, all, _data$next_offset;
|
|
304
|
-
return _regeneratorRuntime.wrap(function (_context) {
|
|
305
|
-
while (1) switch (_context.prev = _context.next) {
|
|
306
|
-
case 0:
|
|
307
|
-
_context.next = 1;
|
|
308
|
-
return fetchMaia({
|
|
309
|
-
path: "skills?limit=".concat(SKILLS_PAGE_LIMIT, "&offset=").concat(offset),
|
|
310
|
-
method: 'GET'
|
|
311
|
-
});
|
|
312
|
-
case 1:
|
|
313
|
-
response = _context.sent;
|
|
314
|
-
_context.next = 2;
|
|
315
|
-
return response.json();
|
|
316
|
-
case 2:
|
|
317
|
-
data = _context.sent;
|
|
318
|
-
page = (_data$data = data.data) !== null && _data$data !== void 0 ? _data$data : [];
|
|
319
|
-
all = [].concat(_toConsumableArray(accumulated), _toConsumableArray(page));
|
|
320
|
-
if (!(data.has_more && page.length >= SKILLS_PAGE_LIMIT)) {
|
|
321
|
-
_context.next = 3;
|
|
322
|
-
break;
|
|
323
|
-
}
|
|
324
|
-
return _context.abrupt("return", _fetchAllSkillPages((_data$next_offset = data.next_offset) !== null && _data$next_offset !== void 0 ? _data$next_offset : offset + SKILLS_PAGE_LIMIT, all));
|
|
325
|
-
case 3:
|
|
326
|
-
return _context.abrupt("return", all);
|
|
327
|
-
case 4:
|
|
328
|
-
case "end":
|
|
329
|
-
return _context.stop();
|
|
330
|
-
}
|
|
331
|
-
}, _callee);
|
|
332
|
-
}));
|
|
333
|
-
return function fetchAllSkillPages(_x, _x2) {
|
|
334
|
-
return _ref.apply(this, arguments);
|
|
335
|
-
};
|
|
336
|
-
}();
|
|
337
299
|
var mapSkillsToItems = function mapSkillsToItems(skills, searchValue) {
|
|
338
300
|
var q = searchValue.trim().toLowerCase();
|
|
339
301
|
var filtered = q ? skills.filter(function (s) {
|
|
@@ -389,40 +351,36 @@ export var useEntitySearch = function useEntitySearch(type, scope) {
|
|
|
389
351
|
var debouncedSearchValue = useDebounce(searchValue, SEARCH_QUERY_DEBOUNCE_MS);
|
|
390
352
|
var _useState3 = useState([]),
|
|
391
353
|
_useState4 = _slicedToArray(_useState3, 2),
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
var _useState5 = useState(
|
|
354
|
+
items = _useState4[0],
|
|
355
|
+
setItems = _useState4[1];
|
|
356
|
+
var _useState5 = useState(false),
|
|
395
357
|
_useState6 = _slicedToArray(_useState5, 2),
|
|
396
|
-
|
|
397
|
-
|
|
358
|
+
loading = _useState6[0],
|
|
359
|
+
setLoading = _useState6[1];
|
|
398
360
|
var _useState7 = useState(false),
|
|
399
361
|
_useState8 = _slicedToArray(_useState7, 2),
|
|
400
|
-
|
|
401
|
-
|
|
362
|
+
error = _useState8[0],
|
|
363
|
+
setError = _useState8[1];
|
|
402
364
|
var _useState9 = useState(false),
|
|
403
365
|
_useState0 = _slicedToArray(_useState9, 2),
|
|
404
|
-
|
|
405
|
-
|
|
366
|
+
hideRecentsLabel = _useState0[0],
|
|
367
|
+
setHideRecentsLabel = _useState0[1];
|
|
406
368
|
var _useState1 = useState(false),
|
|
407
369
|
_useState10 = _slicedToArray(_useState1, 2),
|
|
408
|
-
|
|
409
|
-
|
|
370
|
+
hasMore = _useState10[0],
|
|
371
|
+
setHasMore = _useState10[1];
|
|
410
372
|
var _useState11 = useState(false),
|
|
411
373
|
_useState12 = _slicedToArray(_useState11, 2),
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
var _useState13 = useState(
|
|
374
|
+
isLoadingMore = _useState12[0],
|
|
375
|
+
setIsLoadingMore = _useState12[1];
|
|
376
|
+
var _useState13 = useState(1),
|
|
415
377
|
_useState14 = _slicedToArray(_useState13, 2),
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
var _useState15 = useState(
|
|
378
|
+
currentPage = _useState14[0],
|
|
379
|
+
setCurrentPage = _useState14[1];
|
|
380
|
+
var _useState15 = useState('none'),
|
|
419
381
|
_useState16 = _slicedToArray(_useState15, 2),
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
var _useState17 = useState('none'),
|
|
423
|
-
_useState18 = _slicedToArray(_useState17, 2),
|
|
424
|
-
activePaginationSource = _useState18[0],
|
|
425
|
-
setActivePaginationSource = _useState18[1];
|
|
382
|
+
activePaginationSource = _useState16[0],
|
|
383
|
+
setActivePaginationSource = _useState16[1];
|
|
426
384
|
var mcpSlugsKey = ((_scope$mcpSlugs = scope === null || scope === void 0 ? void 0 : scope.mcpSlugs) !== null && _scope$mcpSlugs !== void 0 ? _scope$mcpSlugs : []).join('|');
|
|
427
385
|
var skillsKey = ((_scope$skills = scope === null || scope === void 0 ? void 0 : scope.skills) !== null && _scope$skills !== void 0 ? _scope$skills : []).map(function (s) {
|
|
428
386
|
return s.id;
|
|
@@ -516,15 +474,15 @@ export var useEntitySearch = function useEntitySearch(type, scope) {
|
|
|
516
474
|
}),
|
|
517
475
|
_useLazyQuery0 = _slicedToArray(_useLazyQuery9, 1),
|
|
518
476
|
fetchProjectsFallback = _useLazyQuery0[0];
|
|
519
|
-
var fetchRecent = useCallback(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function
|
|
520
|
-
var generation, _stableScope$mcpSlugs, slugs,
|
|
521
|
-
return _regeneratorRuntime.wrap(function (
|
|
522
|
-
while (1) switch (
|
|
477
|
+
var fetchRecent = useCallback(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
|
|
478
|
+
var generation, _stableScope$mcpSlugs, slugs, _data$data, _data$next_offset, response, data, skills, canPaginate, _data, mapped, _data2, _mapped, _fallbackData$project, _fallbackData$project2, argumentsFilter, _yield$fetchProjectsF, fallbackData, fallbackMapped, recentTaskFilters, _data3, taskItems, _fallbackData$taskFam, _fallbackData$taskFam2, filter, _yield$fetchTaskFamil, _fallbackData, _data4$users$data, _data4$users, _yield$fetchUsersDire, _data4, _mapped2, meItem, withoutMe, _t, _t2;
|
|
479
|
+
return _regeneratorRuntime.wrap(function (_context) {
|
|
480
|
+
while (1) switch (_context.prev = _context.next) {
|
|
523
481
|
case 0:
|
|
524
482
|
recentsFetchGenerationRef.current += 1;
|
|
525
483
|
generation = recentsFetchGenerationRef.current;
|
|
526
484
|
if (!(type === 'mcp')) {
|
|
527
|
-
|
|
485
|
+
_context.next = 1;
|
|
528
486
|
break;
|
|
529
487
|
}
|
|
530
488
|
slugs = (_stableScope$mcpSlugs = stableScope.mcpSlugs) !== null && _stableScope$mcpSlugs !== void 0 ? _stableScope$mcpSlugs : [];
|
|
@@ -534,113 +492,121 @@ export var useEntitySearch = function useEntitySearch(type, scope) {
|
|
|
534
492
|
setHideRecentsLabel(false);
|
|
535
493
|
setActivePaginationSource('none');
|
|
536
494
|
setHasMore(false);
|
|
537
|
-
return
|
|
495
|
+
return _context.abrupt("return");
|
|
538
496
|
case 1:
|
|
539
497
|
if (!(type === 'skill')) {
|
|
540
|
-
|
|
498
|
+
_context.next = 11;
|
|
541
499
|
break;
|
|
542
500
|
}
|
|
543
501
|
if (!stableScope.skills) {
|
|
544
|
-
|
|
502
|
+
_context.next = 2;
|
|
545
503
|
break;
|
|
546
504
|
}
|
|
547
|
-
setCachedSkills(stableScope.skills);
|
|
548
505
|
setLoading(false);
|
|
549
506
|
setError(false);
|
|
550
507
|
setItems(mapSkillsToItems(stableScope.skills, ''));
|
|
551
|
-
setHideRecentsLabel(
|
|
508
|
+
setHideRecentsLabel(true);
|
|
552
509
|
setActivePaginationSource('none');
|
|
553
510
|
setHasMore(false);
|
|
554
|
-
return
|
|
511
|
+
return _context.abrupt("return");
|
|
555
512
|
case 2:
|
|
556
513
|
setLoading(true);
|
|
557
514
|
setError(false);
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
return
|
|
515
|
+
_context.prev = 3;
|
|
516
|
+
_context.next = 4;
|
|
517
|
+
return fetchMaia({
|
|
518
|
+
path: 'skills',
|
|
519
|
+
method: 'GET'
|
|
520
|
+
});
|
|
561
521
|
case 4:
|
|
562
|
-
|
|
522
|
+
response = _context.sent;
|
|
523
|
+
_context.next = 5;
|
|
524
|
+
return response.json();
|
|
525
|
+
case 5:
|
|
526
|
+
data = _context.sent;
|
|
563
527
|
if (!(generation !== recentsFetchGenerationRef.current)) {
|
|
564
|
-
|
|
528
|
+
_context.next = 6;
|
|
565
529
|
break;
|
|
566
530
|
}
|
|
567
|
-
return
|
|
568
|
-
case 5:
|
|
569
|
-
setCachedSkills(allSkills);
|
|
570
|
-
setItems(mapSkillsToItems(allSkills, ''));
|
|
571
|
-
setHideRecentsLabel(false);
|
|
572
|
-
setActivePaginationSource('none');
|
|
573
|
-
setHasMore(false);
|
|
574
|
-
_context2.next = 8;
|
|
575
|
-
break;
|
|
531
|
+
return _context.abrupt("return");
|
|
576
532
|
case 6:
|
|
577
|
-
|
|
578
|
-
|
|
533
|
+
skills = (_data$data = data.data) !== null && _data$data !== void 0 ? _data$data : [];
|
|
534
|
+
canPaginate = !!data.has_more && data.next_offset != null;
|
|
535
|
+
setItems(mapSkillsToItems(skills, ''));
|
|
536
|
+
setHideRecentsLabel(true);
|
|
537
|
+
setHasMore(canPaginate);
|
|
538
|
+
setCurrentPage((_data$next_offset = data.next_offset) !== null && _data$next_offset !== void 0 ? _data$next_offset : 0);
|
|
539
|
+
setActivePaginationSource(canPaginate ? 'skills' : 'none');
|
|
540
|
+
_context.next = 9;
|
|
541
|
+
break;
|
|
542
|
+
case 7:
|
|
543
|
+
_context.prev = 7;
|
|
544
|
+
_t = _context["catch"](3);
|
|
579
545
|
if (!(generation !== recentsFetchGenerationRef.current)) {
|
|
580
|
-
|
|
546
|
+
_context.next = 8;
|
|
581
547
|
break;
|
|
582
548
|
}
|
|
583
|
-
return
|
|
584
|
-
case
|
|
549
|
+
return _context.abrupt("return");
|
|
550
|
+
case 8:
|
|
585
551
|
setError(true);
|
|
586
552
|
setItems([]);
|
|
587
|
-
case 8:
|
|
588
|
-
_context2.prev = 8;
|
|
589
|
-
if (generation === recentsFetchGenerationRef.current) setLoading(false);
|
|
590
|
-
return _context2.finish(8);
|
|
591
553
|
case 9:
|
|
592
|
-
|
|
554
|
+
_context.prev = 9;
|
|
555
|
+
if (generation === recentsFetchGenerationRef.current) setLoading(false);
|
|
556
|
+
return _context.finish(9);
|
|
593
557
|
case 10:
|
|
558
|
+
return _context.abrupt("return");
|
|
559
|
+
case 11:
|
|
594
560
|
setLoading(true);
|
|
595
561
|
setError(false);
|
|
596
|
-
|
|
562
|
+
_context.prev = 12;
|
|
597
563
|
if (!(type === 'client')) {
|
|
598
|
-
|
|
564
|
+
_context.next = 16;
|
|
599
565
|
break;
|
|
600
566
|
}
|
|
601
|
-
|
|
567
|
+
_context.next = 13;
|
|
602
568
|
return getRecentClients();
|
|
603
|
-
case
|
|
604
|
-
|
|
569
|
+
case 13:
|
|
570
|
+
_data = _context.sent;
|
|
605
571
|
if (!(generation !== recentsFetchGenerationRef.current)) {
|
|
606
|
-
|
|
572
|
+
_context.next = 14;
|
|
607
573
|
break;
|
|
608
574
|
}
|
|
609
|
-
return
|
|
610
|
-
case
|
|
611
|
-
mapped = (
|
|
575
|
+
return _context.abrupt("return");
|
|
576
|
+
case 14:
|
|
577
|
+
mapped = (_data !== null && _data !== void 0 ? _data : []).map(function (c) {
|
|
612
578
|
return mapClientToItem(c, '');
|
|
613
579
|
});
|
|
614
580
|
if (!(generation !== recentsFetchGenerationRef.current)) {
|
|
615
|
-
|
|
581
|
+
_context.next = 15;
|
|
616
582
|
break;
|
|
617
583
|
}
|
|
618
|
-
return
|
|
619
|
-
case
|
|
584
|
+
return _context.abrupt("return");
|
|
585
|
+
case 15:
|
|
620
586
|
setItems(mapped);
|
|
621
587
|
setHideRecentsLabel(false);
|
|
622
588
|
setActivePaginationSource('none');
|
|
623
589
|
setHasMore(false);
|
|
624
|
-
|
|
590
|
+
_context.next = 38;
|
|
625
591
|
break;
|
|
626
|
-
case
|
|
592
|
+
case 16:
|
|
627
593
|
if (!(type === 'project')) {
|
|
628
|
-
|
|
594
|
+
_context.next = 24;
|
|
629
595
|
break;
|
|
630
596
|
}
|
|
631
|
-
|
|
597
|
+
_context.next = 17;
|
|
632
598
|
return getRecentProjects(stableScope.clientId ? {
|
|
633
599
|
clientId: stableScope.clientId
|
|
634
600
|
} : undefined);
|
|
635
|
-
case
|
|
636
|
-
|
|
601
|
+
case 17:
|
|
602
|
+
_data2 = _context.sent;
|
|
637
603
|
if (!(generation !== recentsFetchGenerationRef.current)) {
|
|
638
|
-
|
|
604
|
+
_context.next = 18;
|
|
639
605
|
break;
|
|
640
606
|
}
|
|
641
|
-
return
|
|
642
|
-
case
|
|
643
|
-
_mapped = (Array.isArray(
|
|
607
|
+
return _context.abrupt("return");
|
|
608
|
+
case 18:
|
|
609
|
+
_mapped = (Array.isArray(_data2) ? _data2 : []).map(function (p) {
|
|
644
610
|
return mapSearchToItem({
|
|
645
611
|
id: p.id,
|
|
646
612
|
title: p.title,
|
|
@@ -651,13 +617,13 @@ export var useEntitySearch = function useEntitySearch(type, scope) {
|
|
|
651
617
|
}, 'project', '');
|
|
652
618
|
});
|
|
653
619
|
if (!(_mapped.length === 0)) {
|
|
654
|
-
|
|
620
|
+
_context.next = 21;
|
|
655
621
|
break;
|
|
656
622
|
}
|
|
657
623
|
argumentsFilter = stableScope.clientId !== null && stableScope.clientId !== undefined && stableScope.clientId !== '' ? {
|
|
658
624
|
client_id: [String(stableScope.clientId)]
|
|
659
625
|
} : undefined;
|
|
660
|
-
|
|
626
|
+
_context.next = 19;
|
|
661
627
|
return fetchProjectsFallback({
|
|
662
628
|
variables: _objectSpread(_objectSpread({}, argumentsFilter ? {
|
|
663
629
|
arguments: argumentsFilter
|
|
@@ -666,15 +632,15 @@ export var useEntitySearch = function useEntitySearch(type, scope) {
|
|
|
666
632
|
perPage: 20
|
|
667
633
|
})
|
|
668
634
|
});
|
|
669
|
-
case
|
|
670
|
-
_yield$fetchProjectsF =
|
|
635
|
+
case 19:
|
|
636
|
+
_yield$fetchProjectsF = _context.sent;
|
|
671
637
|
fallbackData = _yield$fetchProjectsF.data;
|
|
672
638
|
if (!(generation !== recentsFetchGenerationRef.current)) {
|
|
673
|
-
|
|
639
|
+
_context.next = 20;
|
|
674
640
|
break;
|
|
675
641
|
}
|
|
676
|
-
return
|
|
677
|
-
case
|
|
642
|
+
return _context.abrupt("return");
|
|
643
|
+
case 20:
|
|
678
644
|
fallbackMapped = ((_fallbackData$project = fallbackData === null || fallbackData === void 0 || (_fallbackData$project2 = fallbackData.projects) === null || _fallbackData$project2 === void 0 ? void 0 : _fallbackData$project2.data) !== null && _fallbackData$project !== void 0 ? _fallbackData$project : []).map(normalizeProjectsFallbackRecord).filter(function (item) {
|
|
679
645
|
return item !== null;
|
|
680
646
|
}).map(function (item) {
|
|
@@ -684,25 +650,25 @@ export var useEntitySearch = function useEntitySearch(type, scope) {
|
|
|
684
650
|
setHideRecentsLabel(fallbackMapped.length > 0);
|
|
685
651
|
setActivePaginationSource('project-fallback');
|
|
686
652
|
syncProjectFallbackPagination(fallbackData);
|
|
687
|
-
|
|
653
|
+
_context.next = 22;
|
|
688
654
|
break;
|
|
689
|
-
case
|
|
655
|
+
case 21:
|
|
690
656
|
setHideRecentsLabel(false);
|
|
691
657
|
setActivePaginationSource('none');
|
|
692
658
|
setHasMore(false);
|
|
693
|
-
case
|
|
659
|
+
case 22:
|
|
694
660
|
if (!(generation !== recentsFetchGenerationRef.current)) {
|
|
695
|
-
|
|
661
|
+
_context.next = 23;
|
|
696
662
|
break;
|
|
697
663
|
}
|
|
698
|
-
return
|
|
699
|
-
case
|
|
664
|
+
return _context.abrupt("return");
|
|
665
|
+
case 23:
|
|
700
666
|
setItems(_mapped);
|
|
701
|
-
|
|
667
|
+
_context.next = 38;
|
|
702
668
|
break;
|
|
703
|
-
case
|
|
669
|
+
case 24:
|
|
704
670
|
if (!(type === 'task')) {
|
|
705
|
-
|
|
671
|
+
_context.next = 32;
|
|
706
672
|
break;
|
|
707
673
|
}
|
|
708
674
|
if (stableScope.agentEntity === 'project') {
|
|
@@ -714,21 +680,21 @@ export var useEntitySearch = function useEntitySearch(type, scope) {
|
|
|
714
680
|
clientId: stableScope.clientId
|
|
715
681
|
};
|
|
716
682
|
}
|
|
717
|
-
|
|
683
|
+
_context.next = 25;
|
|
718
684
|
return getRecentTasks(recentTaskFilters);
|
|
719
|
-
case
|
|
720
|
-
|
|
685
|
+
case 25:
|
|
686
|
+
_data3 = _context.sent;
|
|
721
687
|
if (!(generation !== recentsFetchGenerationRef.current)) {
|
|
722
|
-
|
|
688
|
+
_context.next = 26;
|
|
723
689
|
break;
|
|
724
690
|
}
|
|
725
|
-
return
|
|
726
|
-
case
|
|
727
|
-
taskItems = (
|
|
691
|
+
return _context.abrupt("return");
|
|
692
|
+
case 26:
|
|
693
|
+
taskItems = (_data3 !== null && _data3 !== void 0 ? _data3 : []).map(function (task) {
|
|
728
694
|
return mapRecentTaskToItem(task, '', showProjectNameInTaskRow);
|
|
729
695
|
});
|
|
730
696
|
if (!(taskItems.length === 0)) {
|
|
731
|
-
|
|
697
|
+
_context.next = 29;
|
|
732
698
|
break;
|
|
733
699
|
}
|
|
734
700
|
filter = {};
|
|
@@ -738,7 +704,7 @@ export var useEntitySearch = function useEntitySearch(type, scope) {
|
|
|
738
704
|
if (stableScope.clientId !== null && stableScope.clientId !== undefined && stableScope.clientId !== '') {
|
|
739
705
|
filter.clientIds = [String(stableScope.clientId)];
|
|
740
706
|
}
|
|
741
|
-
|
|
707
|
+
_context.next = 27;
|
|
742
708
|
return fetchTaskFamilyFallback({
|
|
743
709
|
variables: {
|
|
744
710
|
filter: _objectSpread({
|
|
@@ -750,15 +716,15 @@ export var useEntitySearch = function useEntitySearch(type, scope) {
|
|
|
750
716
|
}
|
|
751
717
|
}
|
|
752
718
|
});
|
|
753
|
-
case
|
|
754
|
-
_yield$fetchTaskFamil =
|
|
719
|
+
case 27:
|
|
720
|
+
_yield$fetchTaskFamil = _context.sent;
|
|
755
721
|
_fallbackData = _yield$fetchTaskFamil.data;
|
|
756
722
|
if (!(generation !== recentsFetchGenerationRef.current)) {
|
|
757
|
-
|
|
723
|
+
_context.next = 28;
|
|
758
724
|
break;
|
|
759
725
|
}
|
|
760
|
-
return
|
|
761
|
-
case
|
|
726
|
+
return _context.abrupt("return");
|
|
727
|
+
case 28:
|
|
762
728
|
taskItems = ((_fallbackData$taskFam = _fallbackData === null || _fallbackData === void 0 || (_fallbackData$taskFam2 = _fallbackData.taskFamily) === null || _fallbackData$taskFam2 === void 0 ? void 0 : _fallbackData$taskFam2.data) !== null && _fallbackData$taskFam !== void 0 ? _fallbackData$taskFam : []).map(normalizeTaskFamilyRecord).filter(function (item) {
|
|
763
729
|
return item !== null;
|
|
764
730
|
}).map(function (task) {
|
|
@@ -767,100 +733,100 @@ export var useEntitySearch = function useEntitySearch(type, scope) {
|
|
|
767
733
|
setHideRecentsLabel(taskItems.length > 0);
|
|
768
734
|
setActivePaginationSource('task-fallback');
|
|
769
735
|
syncTaskFallbackPagination(_fallbackData);
|
|
770
|
-
|
|
736
|
+
_context.next = 30;
|
|
771
737
|
break;
|
|
772
|
-
case
|
|
738
|
+
case 29:
|
|
773
739
|
setHideRecentsLabel(false);
|
|
774
740
|
setActivePaginationSource('none');
|
|
775
741
|
setHasMore(false);
|
|
776
|
-
case
|
|
742
|
+
case 30:
|
|
777
743
|
if (!(generation !== recentsFetchGenerationRef.current)) {
|
|
778
|
-
|
|
744
|
+
_context.next = 31;
|
|
779
745
|
break;
|
|
780
746
|
}
|
|
781
|
-
return
|
|
782
|
-
case
|
|
747
|
+
return _context.abrupt("return");
|
|
748
|
+
case 31:
|
|
783
749
|
setItems(taskItems);
|
|
784
|
-
|
|
750
|
+
_context.next = 38;
|
|
785
751
|
break;
|
|
786
|
-
case
|
|
752
|
+
case 32:
|
|
787
753
|
if (!(type === 'user')) {
|
|
788
|
-
|
|
754
|
+
_context.next = 36;
|
|
789
755
|
break;
|
|
790
756
|
}
|
|
791
|
-
|
|
757
|
+
_context.next = 33;
|
|
792
758
|
return fetchUsersDirectory({
|
|
793
759
|
variables: {
|
|
794
760
|
filters: buildUsersDirectoryFilters(''),
|
|
795
761
|
page: 1
|
|
796
762
|
}
|
|
797
763
|
});
|
|
798
|
-
case
|
|
799
|
-
_yield$fetchUsersDire =
|
|
800
|
-
|
|
764
|
+
case 33:
|
|
765
|
+
_yield$fetchUsersDire = _context.sent;
|
|
766
|
+
_data4 = _yield$fetchUsersDire.data;
|
|
801
767
|
if (!(generation !== recentsFetchGenerationRef.current)) {
|
|
802
|
-
|
|
768
|
+
_context.next = 34;
|
|
803
769
|
break;
|
|
804
770
|
}
|
|
805
|
-
return
|
|
806
|
-
case
|
|
807
|
-
_mapped2 = ((
|
|
771
|
+
return _context.abrupt("return");
|
|
772
|
+
case 34:
|
|
773
|
+
_mapped2 = ((_data4$users$data = _data4 === null || _data4 === void 0 || (_data4$users = _data4.users) === null || _data4$users === void 0 ? void 0 : _data4$users.data) !== null && _data4$users$data !== void 0 ? _data4$users$data : []).map(function (u) {
|
|
808
774
|
return mapUserToItem(u, '');
|
|
809
775
|
});
|
|
810
776
|
if (!(generation !== recentsFetchGenerationRef.current)) {
|
|
811
|
-
|
|
777
|
+
_context.next = 35;
|
|
812
778
|
break;
|
|
813
779
|
}
|
|
814
|
-
return
|
|
815
|
-
case
|
|
780
|
+
return _context.abrupt("return");
|
|
781
|
+
case 35:
|
|
816
782
|
meItem = mapCorUserToUserItem(corUser, '', t('contextMention.me'));
|
|
817
783
|
withoutMe = _mapped2.filter(function (item) {
|
|
818
784
|
return String(item.id) !== String(meItem.id);
|
|
819
785
|
});
|
|
820
786
|
setItems([meItem].concat(_toConsumableArray(withoutMe)));
|
|
821
|
-
syncUsersPagination(
|
|
787
|
+
syncUsersPagination(_data4);
|
|
822
788
|
setHideRecentsLabel(false);
|
|
823
789
|
setActivePaginationSource('users');
|
|
824
|
-
|
|
790
|
+
_context.next = 38;
|
|
825
791
|
break;
|
|
826
|
-
case
|
|
792
|
+
case 36:
|
|
827
793
|
if (!(generation !== recentsFetchGenerationRef.current)) {
|
|
828
|
-
|
|
794
|
+
_context.next = 37;
|
|
829
795
|
break;
|
|
830
796
|
}
|
|
831
|
-
return
|
|
832
|
-
case
|
|
797
|
+
return _context.abrupt("return");
|
|
798
|
+
case 37:
|
|
833
799
|
setItems([]);
|
|
834
800
|
setHideRecentsLabel(false);
|
|
835
801
|
setActivePaginationSource('none');
|
|
836
802
|
setHasMore(false);
|
|
837
803
|
setCurrentPage(1);
|
|
838
|
-
case 37:
|
|
839
|
-
_context2.next = 40;
|
|
840
|
-
break;
|
|
841
804
|
case 38:
|
|
842
|
-
|
|
843
|
-
|
|
805
|
+
_context.next = 41;
|
|
806
|
+
break;
|
|
807
|
+
case 39:
|
|
808
|
+
_context.prev = 39;
|
|
809
|
+
_t2 = _context["catch"](12);
|
|
844
810
|
if (!(generation !== recentsFetchGenerationRef.current)) {
|
|
845
|
-
|
|
811
|
+
_context.next = 40;
|
|
846
812
|
break;
|
|
847
813
|
}
|
|
848
|
-
return
|
|
849
|
-
case
|
|
814
|
+
return _context.abrupt("return");
|
|
815
|
+
case 40:
|
|
850
816
|
setError(true);
|
|
851
817
|
setItems([]);
|
|
852
818
|
setHideRecentsLabel(false);
|
|
853
|
-
case
|
|
854
|
-
|
|
819
|
+
case 41:
|
|
820
|
+
_context.prev = 41;
|
|
855
821
|
if (generation === recentsFetchGenerationRef.current) {
|
|
856
822
|
setLoading(false);
|
|
857
823
|
}
|
|
858
|
-
return
|
|
859
|
-
case
|
|
824
|
+
return _context.finish(41);
|
|
825
|
+
case 42:
|
|
860
826
|
case "end":
|
|
861
|
-
return
|
|
827
|
+
return _context.stop();
|
|
862
828
|
}
|
|
863
|
-
},
|
|
829
|
+
}, _callee, null, [[3, 7, 9, 10], [12, 39, 41, 42]]);
|
|
864
830
|
})), [type, stableScope, fetchUsersDirectory, fetchTaskFamilyFallback, fetchProjectsFallback, syncUsersPagination, syncTaskFallbackPagination, syncProjectFallbackPagination, showProjectNameInTaskRow, corUser, t]);
|
|
865
831
|
|
|
866
832
|
// Disparar search al cambiar debounced value
|
|
@@ -875,9 +841,38 @@ export var useEntitySearch = function useEntitySearch(type, scope) {
|
|
|
875
841
|
return;
|
|
876
842
|
}
|
|
877
843
|
if (type === 'skill') {
|
|
878
|
-
|
|
844
|
+
if (stableScope.skills) {
|
|
845
|
+
setLoading(false);
|
|
846
|
+
setError(false);
|
|
847
|
+
setItems(mapSkillsToItems(stableScope.skills, q));
|
|
848
|
+
return;
|
|
849
|
+
}
|
|
850
|
+
if (!q) return;
|
|
851
|
+
recentsFetchGenerationRef.current += 1;
|
|
852
|
+
var searchGen = recentsFetchGenerationRef.current;
|
|
853
|
+
setLoading(true);
|
|
879
854
|
setError(false);
|
|
880
|
-
|
|
855
|
+
fetchMaia({
|
|
856
|
+
path: "skills?q=".concat(encodeURIComponent(q)),
|
|
857
|
+
method: 'GET'
|
|
858
|
+
}).then(function (r) {
|
|
859
|
+
return r.json();
|
|
860
|
+
}).then(function (data) {
|
|
861
|
+
var _data$data2, _data$next_offset2;
|
|
862
|
+
if (searchGen !== recentsFetchGenerationRef.current) return;
|
|
863
|
+
var canPaginate = !!data.has_more && data.next_offset != null;
|
|
864
|
+
setItems(mapSkillsToItems((_data$data2 = data.data) !== null && _data$data2 !== void 0 ? _data$data2 : [], q));
|
|
865
|
+
setHasMore(canPaginate);
|
|
866
|
+
setCurrentPage((_data$next_offset2 = data.next_offset) !== null && _data$next_offset2 !== void 0 ? _data$next_offset2 : 0);
|
|
867
|
+
setActivePaginationSource(canPaginate ? 'skills' : 'none');
|
|
868
|
+
setLoading(false);
|
|
869
|
+
setError(false);
|
|
870
|
+
})["catch"](function () {
|
|
871
|
+
if (searchGen !== recentsFetchGenerationRef.current) return;
|
|
872
|
+
setError(true);
|
|
873
|
+
setItems([]);
|
|
874
|
+
setLoading(false);
|
|
875
|
+
});
|
|
881
876
|
return;
|
|
882
877
|
}
|
|
883
878
|
if (!q) return;
|
|
@@ -914,7 +909,7 @@ export var useEntitySearch = function useEntitySearch(type, scope) {
|
|
|
914
909
|
setActivePaginationSource('none');
|
|
915
910
|
setHasMore(false);
|
|
916
911
|
}
|
|
917
|
-
}, [debouncedSearchValue, type, stableScope, fetchSearchEntities, fetchSearchClients, fetchUsersDirectory
|
|
912
|
+
}, [debouncedSearchValue, type, stableScope, fetchSearchEntities, fetchSearchClients, fetchUsersDirectory]);
|
|
918
913
|
|
|
919
914
|
// Sincronizar resultados de search
|
|
920
915
|
useEffect(function () {
|
|
@@ -975,28 +970,28 @@ export var useEntitySearch = function useEntitySearch(type, scope) {
|
|
|
975
970
|
}
|
|
976
971
|
}
|
|
977
972
|
}, [searchData, clientsData, usersData, searchLoading, clientsLoading, usersLoading, searchError, clientsError, usersError, debouncedSearchValue, type, syncClientsPagination, syncUsersPagination, showProjectNameInTaskRow, corUser, t]);
|
|
978
|
-
var loadMore = useCallback(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function
|
|
979
|
-
var safeCurrentPage, nextPage, q, loadMoreBaselineGen, _data$users$data, _data$users, _yield$fetchUsersDire2, data, nextItems,
|
|
980
|
-
return _regeneratorRuntime.wrap(function (
|
|
981
|
-
while (1) switch (
|
|
973
|
+
var loadMore = useCallback(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
|
|
974
|
+
var safeCurrentPage, nextPage, q, loadMoreBaselineGen, _data$users$data, _data$users, _yield$fetchUsersDire2, data, nextItems, _data5$clients$data, _data5$clients, _yield$fetchSearchCli, _data5, _nextItems, _data6$taskFamily$dat, _data6$taskFamily, filter, _yield$fetchTaskFamil2, _data6, _nextItems2, _data7$projects$data, _data7$projects, argumentsFilter, _yield$fetchProjectsF2, _data7, _nextItems3, _skillData$data, _skillData$next_offse, skillOffset, skillQ, skillPath, skillResponse, skillData, canPaginate, _nextItems4, _t3;
|
|
975
|
+
return _regeneratorRuntime.wrap(function (_context2) {
|
|
976
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
982
977
|
case 0:
|
|
983
978
|
if (!(isLoadingMore || !hasMore || activePaginationSource === 'none')) {
|
|
984
|
-
|
|
979
|
+
_context2.next = 1;
|
|
985
980
|
break;
|
|
986
981
|
}
|
|
987
|
-
return
|
|
982
|
+
return _context2.abrupt("return");
|
|
988
983
|
case 1:
|
|
989
984
|
safeCurrentPage = normalizePositiveInt(currentPage, 1);
|
|
990
985
|
nextPage = safeCurrentPage + 1;
|
|
991
986
|
q = debouncedSearchValue.trim();
|
|
992
987
|
loadMoreBaselineGen = recentsFetchGenerationRef.current;
|
|
993
988
|
setIsLoadingMore(true);
|
|
994
|
-
|
|
989
|
+
_context2.prev = 2;
|
|
995
990
|
if (!(activePaginationSource === 'users')) {
|
|
996
|
-
|
|
991
|
+
_context2.next = 5;
|
|
997
992
|
break;
|
|
998
993
|
}
|
|
999
|
-
|
|
994
|
+
_context2.next = 3;
|
|
1000
995
|
return fetchUsersDirectory({
|
|
1001
996
|
variables: {
|
|
1002
997
|
filters: buildUsersDirectoryFilters(q),
|
|
@@ -1004,13 +999,13 @@ export var useEntitySearch = function useEntitySearch(type, scope) {
|
|
|
1004
999
|
}
|
|
1005
1000
|
});
|
|
1006
1001
|
case 3:
|
|
1007
|
-
_yield$fetchUsersDire2 =
|
|
1002
|
+
_yield$fetchUsersDire2 = _context2.sent;
|
|
1008
1003
|
data = _yield$fetchUsersDire2.data;
|
|
1009
1004
|
if (!(loadMoreBaselineGen !== recentsFetchGenerationRef.current)) {
|
|
1010
|
-
|
|
1005
|
+
_context2.next = 4;
|
|
1011
1006
|
break;
|
|
1012
1007
|
}
|
|
1013
|
-
return
|
|
1008
|
+
return _context2.abrupt("return");
|
|
1014
1009
|
case 4:
|
|
1015
1010
|
nextItems = ((_data$users$data = data === null || data === void 0 || (_data$users = data.users) === null || _data$users === void 0 ? void 0 : _data$users.data) !== null && _data$users$data !== void 0 ? _data$users$data : []).map(function (u) {
|
|
1016
1011
|
return mapUserToItem(u, q);
|
|
@@ -1039,14 +1034,14 @@ export var useEntitySearch = function useEntitySearch(type, scope) {
|
|
|
1039
1034
|
return [].concat(_toConsumableArray(prev), _toConsumableArray(appended));
|
|
1040
1035
|
});
|
|
1041
1036
|
syncUsersPagination(data);
|
|
1042
|
-
|
|
1037
|
+
_context2.next = 18;
|
|
1043
1038
|
break;
|
|
1044
1039
|
case 5:
|
|
1045
1040
|
if (!(activePaginationSource === 'clients-search')) {
|
|
1046
|
-
|
|
1041
|
+
_context2.next = 8;
|
|
1047
1042
|
break;
|
|
1048
1043
|
}
|
|
1049
|
-
|
|
1044
|
+
_context2.next = 6;
|
|
1050
1045
|
return fetchSearchClients({
|
|
1051
1046
|
variables: {
|
|
1052
1047
|
filter: {
|
|
@@ -1057,15 +1052,15 @@ export var useEntitySearch = function useEntitySearch(type, scope) {
|
|
|
1057
1052
|
}
|
|
1058
1053
|
});
|
|
1059
1054
|
case 6:
|
|
1060
|
-
_yield$fetchSearchCli =
|
|
1061
|
-
|
|
1055
|
+
_yield$fetchSearchCli = _context2.sent;
|
|
1056
|
+
_data5 = _yield$fetchSearchCli.data;
|
|
1062
1057
|
if (!(loadMoreBaselineGen !== recentsFetchGenerationRef.current)) {
|
|
1063
|
-
|
|
1058
|
+
_context2.next = 7;
|
|
1064
1059
|
break;
|
|
1065
1060
|
}
|
|
1066
|
-
return
|
|
1061
|
+
return _context2.abrupt("return");
|
|
1067
1062
|
case 7:
|
|
1068
|
-
_nextItems = ((
|
|
1063
|
+
_nextItems = ((_data5$clients$data = _data5 === null || _data5 === void 0 || (_data5$clients = _data5.clients) === null || _data5$clients === void 0 ? void 0 : _data5$clients.data) !== null && _data5$clients$data !== void 0 ? _data5$clients$data : []).map(function (c) {
|
|
1069
1064
|
return mapClientToItem(c, q);
|
|
1070
1065
|
});
|
|
1071
1066
|
setItems(function (prev) {
|
|
@@ -1077,12 +1072,12 @@ export var useEntitySearch = function useEntitySearch(type, scope) {
|
|
|
1077
1072
|
});
|
|
1078
1073
|
return [].concat(_toConsumableArray(prev), _toConsumableArray(appended));
|
|
1079
1074
|
});
|
|
1080
|
-
syncClientsPagination(
|
|
1081
|
-
|
|
1075
|
+
syncClientsPagination(_data5);
|
|
1076
|
+
_context2.next = 18;
|
|
1082
1077
|
break;
|
|
1083
1078
|
case 8:
|
|
1084
1079
|
if (!(activePaginationSource === 'task-fallback')) {
|
|
1085
|
-
|
|
1080
|
+
_context2.next = 11;
|
|
1086
1081
|
break;
|
|
1087
1082
|
}
|
|
1088
1083
|
filter = {};
|
|
@@ -1092,7 +1087,7 @@ export var useEntitySearch = function useEntitySearch(type, scope) {
|
|
|
1092
1087
|
if (stableScope.clientId !== null && stableScope.clientId !== undefined && stableScope.clientId !== '') {
|
|
1093
1088
|
filter.clientIds = [String(stableScope.clientId)];
|
|
1094
1089
|
}
|
|
1095
|
-
|
|
1090
|
+
_context2.next = 9;
|
|
1096
1091
|
return fetchTaskFamilyFallback({
|
|
1097
1092
|
variables: {
|
|
1098
1093
|
filter: _objectSpread({
|
|
@@ -1105,15 +1100,15 @@ export var useEntitySearch = function useEntitySearch(type, scope) {
|
|
|
1105
1100
|
}
|
|
1106
1101
|
});
|
|
1107
1102
|
case 9:
|
|
1108
|
-
_yield$fetchTaskFamil2 =
|
|
1109
|
-
|
|
1103
|
+
_yield$fetchTaskFamil2 = _context2.sent;
|
|
1104
|
+
_data6 = _yield$fetchTaskFamil2.data;
|
|
1110
1105
|
if (!(loadMoreBaselineGen !== recentsFetchGenerationRef.current)) {
|
|
1111
|
-
|
|
1106
|
+
_context2.next = 10;
|
|
1112
1107
|
break;
|
|
1113
1108
|
}
|
|
1114
|
-
return
|
|
1109
|
+
return _context2.abrupt("return");
|
|
1115
1110
|
case 10:
|
|
1116
|
-
_nextItems2 = ((
|
|
1111
|
+
_nextItems2 = ((_data6$taskFamily$dat = _data6 === null || _data6 === void 0 || (_data6$taskFamily = _data6.taskFamily) === null || _data6$taskFamily === void 0 ? void 0 : _data6$taskFamily.data) !== null && _data6$taskFamily$dat !== void 0 ? _data6$taskFamily$dat : []).map(normalizeTaskFamilyRecord).filter(function (item) {
|
|
1117
1112
|
return item !== null;
|
|
1118
1113
|
}).map(function (task) {
|
|
1119
1114
|
return mapRecentTaskToItem(task, '', showProjectNameInTaskRow);
|
|
@@ -1127,18 +1122,18 @@ export var useEntitySearch = function useEntitySearch(type, scope) {
|
|
|
1127
1122
|
});
|
|
1128
1123
|
return [].concat(_toConsumableArray(prev), _toConsumableArray(appended));
|
|
1129
1124
|
});
|
|
1130
|
-
syncTaskFallbackPagination(
|
|
1131
|
-
|
|
1125
|
+
syncTaskFallbackPagination(_data6);
|
|
1126
|
+
_context2.next = 18;
|
|
1132
1127
|
break;
|
|
1133
1128
|
case 11:
|
|
1134
1129
|
if (!(activePaginationSource === 'project-fallback')) {
|
|
1135
|
-
|
|
1130
|
+
_context2.next = 14;
|
|
1136
1131
|
break;
|
|
1137
1132
|
}
|
|
1138
1133
|
argumentsFilter = stableScope.clientId !== null && stableScope.clientId !== undefined && stableScope.clientId !== '' ? {
|
|
1139
1134
|
client_id: [String(stableScope.clientId)]
|
|
1140
1135
|
} : undefined;
|
|
1141
|
-
|
|
1136
|
+
_context2.next = 12;
|
|
1142
1137
|
return fetchProjectsFallback({
|
|
1143
1138
|
variables: _objectSpread(_objectSpread({}, argumentsFilter ? {
|
|
1144
1139
|
arguments: argumentsFilter
|
|
@@ -1148,15 +1143,15 @@ export var useEntitySearch = function useEntitySearch(type, scope) {
|
|
|
1148
1143
|
})
|
|
1149
1144
|
});
|
|
1150
1145
|
case 12:
|
|
1151
|
-
_yield$fetchProjectsF2 =
|
|
1152
|
-
|
|
1146
|
+
_yield$fetchProjectsF2 = _context2.sent;
|
|
1147
|
+
_data7 = _yield$fetchProjectsF2.data;
|
|
1153
1148
|
if (!(loadMoreBaselineGen !== recentsFetchGenerationRef.current)) {
|
|
1154
|
-
|
|
1149
|
+
_context2.next = 13;
|
|
1155
1150
|
break;
|
|
1156
1151
|
}
|
|
1157
|
-
return
|
|
1152
|
+
return _context2.abrupt("return");
|
|
1158
1153
|
case 13:
|
|
1159
|
-
_nextItems3 = ((
|
|
1154
|
+
_nextItems3 = ((_data7$projects$data = _data7 === null || _data7 === void 0 || (_data7$projects = _data7.projects) === null || _data7$projects === void 0 ? void 0 : _data7$projects.data) !== null && _data7$projects$data !== void 0 ? _data7$projects$data : []).map(normalizeProjectsFallbackRecord).filter(function (item) {
|
|
1160
1155
|
return item !== null;
|
|
1161
1156
|
}).map(function (item) {
|
|
1162
1157
|
return mapSearchToItem(item, 'project', '');
|
|
@@ -1170,19 +1165,60 @@ export var useEntitySearch = function useEntitySearch(type, scope) {
|
|
|
1170
1165
|
});
|
|
1171
1166
|
return [].concat(_toConsumableArray(prev), _toConsumableArray(appended));
|
|
1172
1167
|
});
|
|
1173
|
-
syncProjectFallbackPagination(
|
|
1174
|
-
|
|
1175
|
-
_context3.next = 17;
|
|
1168
|
+
syncProjectFallbackPagination(_data7);
|
|
1169
|
+
_context2.next = 18;
|
|
1176
1170
|
break;
|
|
1171
|
+
case 14:
|
|
1172
|
+
if (!(activePaginationSource === 'skills')) {
|
|
1173
|
+
_context2.next = 18;
|
|
1174
|
+
break;
|
|
1175
|
+
}
|
|
1176
|
+
skillOffset = currentPage;
|
|
1177
|
+
skillQ = debouncedSearchValue.trim();
|
|
1178
|
+
skillPath = skillQ ? "skills?offset=".concat(skillOffset, "&q=").concat(encodeURIComponent(skillQ)) : "skills?offset=".concat(skillOffset);
|
|
1179
|
+
_context2.next = 15;
|
|
1180
|
+
return fetchMaia({
|
|
1181
|
+
path: skillPath,
|
|
1182
|
+
method: 'GET'
|
|
1183
|
+
});
|
|
1177
1184
|
case 15:
|
|
1178
|
-
|
|
1179
|
-
|
|
1185
|
+
skillResponse = _context2.sent;
|
|
1186
|
+
_context2.next = 16;
|
|
1187
|
+
return skillResponse.json();
|
|
1188
|
+
case 16:
|
|
1189
|
+
skillData = _context2.sent;
|
|
1180
1190
|
if (!(loadMoreBaselineGen !== recentsFetchGenerationRef.current)) {
|
|
1181
|
-
|
|
1191
|
+
_context2.next = 17;
|
|
1182
1192
|
break;
|
|
1183
1193
|
}
|
|
1184
|
-
return
|
|
1185
|
-
case
|
|
1194
|
+
return _context2.abrupt("return");
|
|
1195
|
+
case 17:
|
|
1196
|
+
canPaginate = !!skillData.has_more && skillData.next_offset != null;
|
|
1197
|
+
_nextItems4 = mapSkillsToItems((_skillData$data = skillData.data) !== null && _skillData$data !== void 0 ? _skillData$data : [], skillQ);
|
|
1198
|
+
setItems(function (prev) {
|
|
1199
|
+
var existingIds = new Set(prev.map(function (item) {
|
|
1200
|
+
return "".concat(item.type, "-").concat(item.id);
|
|
1201
|
+
}));
|
|
1202
|
+
var appended = _nextItems4.filter(function (item) {
|
|
1203
|
+
return !existingIds.has("".concat(item.type, "-").concat(item.id));
|
|
1204
|
+
});
|
|
1205
|
+
return [].concat(_toConsumableArray(prev), _toConsumableArray(appended));
|
|
1206
|
+
});
|
|
1207
|
+
setHasMore(canPaginate);
|
|
1208
|
+
setCurrentPage((_skillData$next_offse = skillData.next_offset) !== null && _skillData$next_offse !== void 0 ? _skillData$next_offse : 0);
|
|
1209
|
+
setActivePaginationSource(canPaginate ? 'skills' : 'none');
|
|
1210
|
+
case 18:
|
|
1211
|
+
_context2.next = 21;
|
|
1212
|
+
break;
|
|
1213
|
+
case 19:
|
|
1214
|
+
_context2.prev = 19;
|
|
1215
|
+
_t3 = _context2["catch"](2);
|
|
1216
|
+
if (!(loadMoreBaselineGen !== recentsFetchGenerationRef.current)) {
|
|
1217
|
+
_context2.next = 20;
|
|
1218
|
+
break;
|
|
1219
|
+
}
|
|
1220
|
+
return _context2.abrupt("return");
|
|
1221
|
+
case 20:
|
|
1186
1222
|
console.error('[useEntitySearch] loadMore failed', {
|
|
1187
1223
|
source: activePaginationSource,
|
|
1188
1224
|
nextPage: nextPage,
|
|
@@ -1191,15 +1227,15 @@ export var useEntitySearch = function useEntitySearch(type, scope) {
|
|
|
1191
1227
|
// Evita loop de reintentos automáticos por scroll cuando backend está caído (ej. 503).
|
|
1192
1228
|
setError(true);
|
|
1193
1229
|
setHasMore(false);
|
|
1194
|
-
case
|
|
1195
|
-
|
|
1230
|
+
case 21:
|
|
1231
|
+
_context2.prev = 21;
|
|
1196
1232
|
setIsLoadingMore(false);
|
|
1197
|
-
return
|
|
1198
|
-
case
|
|
1233
|
+
return _context2.finish(21);
|
|
1234
|
+
case 22:
|
|
1199
1235
|
case "end":
|
|
1200
|
-
return
|
|
1236
|
+
return _context2.stop();
|
|
1201
1237
|
}
|
|
1202
|
-
},
|
|
1238
|
+
}, _callee2, null, [[2, 19, 21, 22]]);
|
|
1203
1239
|
})), [isLoadingMore, hasMore, currentPage, activePaginationSource, debouncedSearchValue, fetchUsersDirectory, fetchSearchClients, fetchTaskFamilyFallback, fetchProjectsFallback, stableScope.projectId, stableScope.clientId, showProjectNameInTaskRow, corUser, t, syncClientsPagination, syncUsersPagination, syncTaskFallbackPagination, syncProjectFallbackPagination]);
|
|
1204
1240
|
|
|
1205
1241
|
// Mantenemos una ref a la última fetchRecent para que el effect de recents no se
|
|
@@ -1232,4 +1268,4 @@ export var useEntitySearch = function useEntitySearch(type, scope) {
|
|
|
1232
1268
|
fetchRecent: fetchRecent
|
|
1233
1269
|
};
|
|
1234
1270
|
};
|
|
1235
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VMYXp5UXVlcnkiLCJ1c2VDYWxsYmFjayIsInVzZUVmZmVjdCIsInVzZU1lbW8iLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsImdldFJlY2VudENsaWVudHMiLCJnZXRSZWNlbnRQcm9qZWN0cyIsImdldFJlY2VudFRhc2tzIiwidXNlVXNlciIsIlBST0pFQ1RTX0ZBTExCQUNLIiwiU0VBUkNIX0VOVElUSUVTIiwiVEFTS19GQU1JTFlfRkFMTEJBQ0siLCJTRUFSQ0hfQ0xJRU5UUyIsIlVTRVJTX0RJUkVDVE9SWSIsIlNFQVJDSF9RVUVSWV9ERUJPVU5DRV9NUyIsInVzZURlYm91bmNlIiwidXNlVCIsImZldGNoTWFpYSIsIm5vcm1hbGl6ZVBvc2l0aXZlSW50IiwidmFsdWUiLCJmYWxsYmFjayIsInBhcnNlZCIsIk51bWJlciIsImlzRmluaXRlIiwibm9ybWFsaXplZCIsIk1hdGgiLCJmbG9vciIsIkJBU0VfRklMVEVSU19CWV9UWVBFIiwicHJvamVjdCIsImFyY2hpdmVkIiwidGFzayIsImJ1aWxkVGFza1NlYXJjaEV4dHJhRW50cmllcyIsInNjb3BlIiwicmF3Q2xpZW50IiwiY2xpZW50SWQiLCJ1bmRlZmluZWQiLCJTdHJpbmciLCJyYXdQcm9qZWN0IiwicHJvamVjdElkIiwiYWdlbnRFbnRpdHkiLCJlbnRyaWVzIiwicHVzaENsaWVudCIsInB1c2giLCJwdXNoUHJvamVjdCIsImJ1aWxkVGFza1NlYXJjaEV4dHJhIiwibGVuZ3RoIiwiSlNPTiIsInN0cmluZ2lmeSIsImJ1aWxkUHJvamVjdFNlYXJjaEV4dHJhIiwiYnVpbGRTZWFyY2hFbnRpdGllc0V4dHJhIiwidHlwZSIsImJ1aWxkRmlsdGVyc0ZvclR5cGUiLCJidWlsZFVzZXJzRGlyZWN0b3J5RmlsdGVycyIsInEiLCJiYXNlIiwid2l0aFBvc2l0aW9uIiwid2l0aFRlYW1zIiwidHJpbW1lZFEiLCJ0cmltIiwic2VhcmNoSW5wdXQiLCJoaWdobGlnaHRSYW5nZSIsInRleHQiLCJzZWFyY2hWYWx1ZSIsImlkeCIsInRvTG93ZXJDYXNlIiwiaW5kZXhPZiIsInN0YXJ0IiwiZmlyc3REZWZpbmVkIiwiX2xlbiIsImFyZ3VtZW50cyIsInZhbHVlcyIsIkFycmF5IiwiX2tleSIsImZpbmQiLCJub3JtYWxpemVUcmltbWVkU3RyaW5nIiwiZ2V0VXNlclBvc2l0aW9uTmFtZSIsInVzZXJQb3NpdGlvbiIsIl90eXBlb2YiLCJuYW1lIiwibWFwQ2xpZW50VG9JdGVtIiwiYyIsIl9jJHRvdGFsUHJveWVjdG9zIiwiX2MkdG90YWxQcm95ZWN0b3MyIiwiaWQiLCJwcmltYXJ5IiwicHJpbWFyeUhpZ2hsaWdodCIsImJyZWFkY3J1bWIiLCJjb3VudCIsInRvdGFsUHJveWVjdG9zIiwiY291bnRMYWJlbCIsInJhdyIsIm1hcFVzZXJUb0l0ZW0iLCJ1IiwiX3UkZmlyc3ROYW1lIiwiX3UkbGFzdE5hbWUiLCJfdSRwaWN0dXJlIiwiX3UkdXNlclBvc2l0aW9uJG5hbWUiLCJfdSR1c2VyUG9zaXRpb24iLCJfdSRlbWFpbCIsImZ1bGxOYW1lIiwiY29uY2F0IiwiZmlyc3ROYW1lIiwibGFzdE5hbWUiLCJlbWFpbCIsInBpY3R1cmUiLCJwb3NpdGlvbk5hbWUiLCJtYXBDb3JVc2VyVG9Vc2VySXRlbSIsInVzZXIiLCJtZUxhYmVsIiwiX3VzZXIkZmlyc3ROYW1lIiwiX3VzZXIkbGFzdE5hbWUiLCJwb3NpdGlvbkxpbmUiLCJ1c2VyX3Bvc2l0aW9uIiwibWFwUmVjZW50VGFza1RvSXRlbSIsIl90YXNrJHByb2plY3ROYW1lIiwic2hvd1Byb2plY3ROYW1lSW5UYXNrUm93IiwidGl0bGUiLCJwcm9qZWN0TmFtZSIsInBhcmVudCIsIm5vcm1hbGl6ZVRhc2tGYW1pbHlSZWNvcmQiLCJyZWNvcmQiLCJfcmVjb3JkJHRpdGxlIiwiX2ZpcnN0RGVmaW5lZCIsIl9yZWNvcmQkcHJvamVjdCIsIl9yZWNvcmQkZmF0aGVyIiwiX3JlY29yZCRmYXRoZXIyIiwidGFza0ZhbWlseUlkIiwiX2lkIiwiZmF0aGVyIiwiaGFzRmF0aGVyIiwidGFza0ZhdGhlciIsIm5vcm1hbGl6ZVByb2plY3RzRmFsbGJhY2tSZWNvcmQiLCJfcmVjb3JkJG5hbWUiLCJfZmlyc3REZWZpbmVkMiIsIl9yZWNvcmQkY2xpZW50IiwiX3JlY29yZCRjbGllbnQkbmFtZSIsIl9yZWNvcmQkY2xpZW50MiIsImNsaWVudCIsImNsaWVudE5hbWUiLCJtYXBTZWFyY2hUb0l0ZW0iLCJyIiwiX3IkcHJvamVjdE5hbWUiLCJfciRwcm9qZWN0TmFtZTIiLCJfciRjbGllbnRJZCIsIl9yJGNsaWVudE5hbWUiLCJfciRmZWVJZCIsIl9mYXRoZXIkdGl0bGUiLCJ0YXNrUHJvamVjdE5hbWUiLCJmZWVJZCIsImZhdGhlcklkIiwiZmF0aGVyVGl0bGUiLCJmb3JtYXRNY3BQcmltYXJ5TGFiZWwiLCJzbHVnIiwicmVwbGFjZSIsImNoYXIiLCJ0b1VwcGVyQ2FzZSIsIlNLSUxMU19QQUdFX0xJTUlUIiwiZmV0Y2hBbGxTa2lsbFBhZ2VzIiwiX3JlZiIsIl9hc3luY1RvR2VuZXJhdG9yIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJfY2FsbGVlIiwib2Zmc2V0IiwiYWNjdW11bGF0ZWQiLCJfZGF0YSRkYXRhIiwicmVzcG9uc2UiLCJkYXRhIiwicGFnZSIsImFsbCIsIl9kYXRhJG5leHRfb2Zmc2V0Iiwid3JhcCIsIl9jb250ZXh0IiwicHJldiIsIm5leHQiLCJwYXRoIiwibWV0aG9kIiwic2VudCIsImpzb24iLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJoYXNfbW9yZSIsImFicnVwdCIsIm5leHRfb2Zmc2V0Iiwic3RvcCIsIl94IiwiX3gyIiwiYXBwbHkiLCJtYXBTa2lsbHNUb0l0ZW1zIiwic2tpbGxzIiwiZmlsdGVyZWQiLCJmaWx0ZXIiLCJzIiwiaW5jbHVkZXMiLCJtYXAiLCJza2lsbCIsIm1hcE1jcFNsdWdzVG9JdGVtcyIsInNsdWdzIiwidXNlRW50aXR5U2VhcmNoIiwiX3Njb3BlJG1jcFNsdWdzIiwiX3Njb3BlJHNraWxscyIsIl9zdGFibGVTY29wZSRwcm9qZWN0SSIsIl9zdGFibGVTY29wZSRjbGllbnRJZCIsIl9zdGFibGVTY29wZSRhZ2VudEVudCIsImNvclVzZXIiLCJfdXNlVCIsInQiLCJyZWNlbnRzRmV0Y2hHZW5lcmF0aW9uUmVmIiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5Iiwic2V0U2VhcmNoVmFsdWUiLCJkZWJvdW5jZWRTZWFyY2hWYWx1ZSIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0IiwiY2FjaGVkU2tpbGxzIiwic2V0Q2FjaGVkU2tpbGxzIiwiX3VzZVN0YXRlNSIsIl91c2VTdGF0ZTYiLCJpdGVtcyIsInNldEl0ZW1zIiwiX3VzZVN0YXRlNyIsIl91c2VTdGF0ZTgiLCJsb2FkaW5nIiwic2V0TG9hZGluZyIsIl91c2VTdGF0ZTkiLCJfdXNlU3RhdGUwIiwiZXJyb3IiLCJzZXRFcnJvciIsIl91c2VTdGF0ZTEiLCJfdXNlU3RhdGUxMCIsImhpZGVSZWNlbnRzTGFiZWwiLCJzZXRIaWRlUmVjZW50c0xhYmVsIiwiX3VzZVN0YXRlMTEiLCJfdXNlU3RhdGUxMiIsImhhc01vcmUiLCJzZXRIYXNNb3JlIiwiX3VzZVN0YXRlMTMiLCJfdXNlU3RhdGUxNCIsImlzTG9hZGluZ01vcmUiLCJzZXRJc0xvYWRpbmdNb3JlIiwiX3VzZVN0YXRlMTUiLCJfdXNlU3RhdGUxNiIsImN1cnJlbnRQYWdlIiwic2V0Q3VycmVudFBhZ2UiLCJfdXNlU3RhdGUxNyIsIl91c2VTdGF0ZTE4IiwiYWN0aXZlUGFnaW5hdGlvblNvdXJjZSIsInNldEFjdGl2ZVBhZ2luYXRpb25Tb3VyY2UiLCJtY3BTbHVnc0tleSIsIm1jcFNsdWdzIiwiam9pbiIsInNraWxsc0tleSIsInN0YWJsZVNjb3BlIiwiX3Njb3BlJGNsaWVudElkIiwiX3Njb3BlJHByb2plY3RJZCIsIl9zY29wZSRtY3BTbHVnczIiLCJfc2NvcGUkYWdlbnRFbnRpdHkiLCJfdXNlTGF6eVF1ZXJ5IiwidmFyaWFibGVzIiwibGltaXQiLCJmZXRjaFBvbGljeSIsIl91c2VMYXp5UXVlcnkyIiwiZmV0Y2hTZWFyY2hFbnRpdGllcyIsIl91c2VMYXp5UXVlcnkyJCIsInNlYXJjaERhdGEiLCJzZWFyY2hMb2FkaW5nIiwic2VhcmNoRXJyb3IiLCJfdXNlTGF6eVF1ZXJ5MyIsIl91c2VMYXp5UXVlcnk0IiwiZmV0Y2hTZWFyY2hDbGllbnRzIiwiX3VzZUxhenlRdWVyeTQkIiwiY2xpZW50c0RhdGEiLCJjbGllbnRzTG9hZGluZyIsImNsaWVudHNFcnJvciIsIl91c2VMYXp5UXVlcnk1IiwiX3VzZUxhenlRdWVyeTYiLCJmZXRjaFVzZXJzRGlyZWN0b3J5IiwiX3VzZUxhenlRdWVyeTYkIiwidXNlcnNEYXRhIiwidXNlcnNMb2FkaW5nIiwidXNlcnNFcnJvciIsInN5bmNVc2Vyc1BhZ2luYXRpb24iLCJwYXlsb2FkIiwiX3BheWxvYWQkdXNlcnMiLCJfcGF5bG9hZCR1c2VyczIiLCJ1c2VycyIsImxhc3RQYWdlIiwic3luY0NsaWVudHNQYWdpbmF0aW9uIiwiX3BheWxvYWQkY2xpZW50cyIsIl9wYXlsb2FkJGNsaWVudHMyIiwiY2xpZW50cyIsInN5bmNUYXNrRmFsbGJhY2tQYWdpbmF0aW9uIiwiX3BheWxvYWQkdGFza0ZhbWlseSIsIl9wYXlsb2FkJHRhc2tGYW1pbHkyIiwicmF3UGFnZSIsInRhc2tGYW1pbHkiLCJzeW5jUHJvamVjdEZhbGxiYWNrUGFnaW5hdGlvbiIsIl9wYXlsb2FkJHByb2plY3RzIiwiX3BheWxvYWQkcHJvamVjdHMyIiwicHJvamVjdHMiLCJfdXNlTGF6eVF1ZXJ5NyIsIl91c2VMYXp5UXVlcnk4IiwiZmV0Y2hUYXNrRmFtaWx5RmFsbGJhY2siLCJfdXNlTGF6eVF1ZXJ5OSIsIl91c2VMYXp5UXVlcnkwIiwiZmV0Y2hQcm9qZWN0c0ZhbGxiYWNrIiwiZmV0Y2hSZWNlbnQiLCJfY2FsbGVlMiIsImdlbmVyYXRpb24iLCJfc3RhYmxlU2NvcGUkbWNwU2x1Z3MiLCJhbGxTa2lsbHMiLCJtYXBwZWQiLCJfZGF0YSIsIl9tYXBwZWQiLCJfZmFsbGJhY2tEYXRhJHByb2plY3QiLCJfZmFsbGJhY2tEYXRhJHByb2plY3QyIiwiYXJndW1lbnRzRmlsdGVyIiwiX3lpZWxkJGZldGNoUHJvamVjdHNGIiwiZmFsbGJhY2tEYXRhIiwiZmFsbGJhY2tNYXBwZWQiLCJyZWNlbnRUYXNrRmlsdGVycyIsIl9kYXRhMiIsInRhc2tJdGVtcyIsIl9mYWxsYmFja0RhdGEkdGFza0ZhbSIsIl9mYWxsYmFja0RhdGEkdGFza0ZhbTIiLCJfeWllbGQkZmV0Y2hUYXNrRmFtaWwiLCJfZmFsbGJhY2tEYXRhIiwiX2RhdGEzJHVzZXJzJGRhdGEiLCJfZGF0YTMkdXNlcnMiLCJfeWllbGQkZmV0Y2hVc2Vyc0RpcmUiLCJfZGF0YTMiLCJfbWFwcGVkMiIsIm1lSXRlbSIsIndpdGhvdXRNZSIsIl90IiwiX3QyIiwiX2NvbnRleHQyIiwiY3VycmVudCIsImZpbmlzaCIsImlzQXJyYXkiLCJwIiwiY2xpZW50X2lkIiwiX29iamVjdFNwcmVhZCIsInBlclBhZ2UiLCJpdGVtIiwicHJvamVjdElkcyIsImNsaWVudElkcyIsInBhZ2luYXRpb24iLCJzaXplIiwiZmlsdGVycyIsIl9zdGFibGVTY29wZSRtY3BTbHVnczIiLCJleHRyYSIsIl9jbGllbnRzRGF0YSRjbGllbnRzIiwiX3VzZXJzRGF0YSR1c2VycyIsIm1lSWQiLCJoYXNNZUluUmVzdWx0cyIsInNvbWUiLCJzZWFyY2giLCJsb2FkTW9yZSIsIl9jYWxsZWUzIiwic2FmZUN1cnJlbnRQYWdlIiwibmV4dFBhZ2UiLCJsb2FkTW9yZUJhc2VsaW5lR2VuIiwiX2RhdGEkdXNlcnMkZGF0YSIsIl9kYXRhJHVzZXJzIiwiX3lpZWxkJGZldGNoVXNlcnNEaXJlMiIsIm5leHRJdGVtcyIsIl9kYXRhNCRjbGllbnRzJGRhdGEiLCJfZGF0YTQkY2xpZW50cyIsIl95aWVsZCRmZXRjaFNlYXJjaENsaSIsIl9kYXRhNCIsIl9uZXh0SXRlbXMiLCJfZGF0YTUkdGFza0ZhbWlseSRkYXQiLCJfZGF0YTUkdGFza0ZhbWlseSIsIl95aWVsZCRmZXRjaFRhc2tGYW1pbDIiLCJfZGF0YTUiLCJfbmV4dEl0ZW1zMiIsIl9kYXRhNiRwcm9qZWN0cyRkYXRhIiwiX2RhdGE2JHByb2plY3RzIiwiX3lpZWxkJGZldGNoUHJvamVjdHNGMiIsIl9kYXRhNiIsIl9uZXh0SXRlbXMzIiwiX3QzIiwiX2NvbnRleHQzIiwiX3ByZXYkIiwiZXhpc3RpbmdJZHMiLCJTZXQiLCJhcHBlbmRlZCIsImhhcyIsImNvbnNvbGUiLCJzb3VyY2UiLCJmZXRjaFJlY2VudFJlZiIsInJlY2VudHNUcmlnZ2VyIiwidXBkYXRlU2VhcmNoVmFsdWUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvaG9va3MvdXNlRW50aXR5U2VhcmNoLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZUxhenlRdWVyeSB9IGZyb20gJ0BhcG9sbG8vY2xpZW50J1xuaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlTWVtbywgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgZ2V0UmVjZW50Q2xpZW50cyB9IGZyb20gJy4uL3NlcnZpY2VzL21haWEvUmVjZW50Q2xpZW50cy9nZXRSZWNlbnRDbGllbnRzJ1xuaW1wb3J0IHsgZ2V0UmVjZW50UHJvamVjdHMgfSBmcm9tICcuLi9zZXJ2aWNlcy9tYWlhL1JlY2VudFByb2plY3RzL2dldFJlY2VudFByb2plY3RzJ1xuaW1wb3J0IHsgZ2V0UmVjZW50VGFza3MgfSBmcm9tICcuLi9zZXJ2aWNlcy9tYWlhL1JlY2VudFRhc2tzL2dldFJlY2VudFRhc2tzJ1xuaW1wb3J0IHR5cGUgeyBSZWNlbnRUYXNrSXRlbSB9IGZyb20gJy4uL3NlcnZpY2VzL21haWEvUmVjZW50VGFza3MvZ2V0UmVjZW50VGFza3MnXG5pbXBvcnQgeyB1c2VVc2VyIH0gZnJvbSAnLi4vY29udGV4dC9jb3ItdXNlcidcbmltcG9ydCB7IFBST0pFQ1RTX0ZBTExCQUNLLCBTRUFSQ0hfRU5USVRJRVMsIFRBU0tfRkFNSUxZX0ZBTExCQUNLIH0gZnJvbSAnLi4vc2VydmljZXMvcXVlcnkvZW50aXR5U2VhcmNoUXVlcnknXG5pbXBvcnQgeyBTRUFSQ0hfQ0xJRU5UUyB9IGZyb20gJy4uL3NlcnZpY2VzL3F1ZXJ5L0NsaWVudFNlYXJjaFF1ZXJ5J1xuaW1wb3J0IHsgVVNFUlNfRElSRUNUT1JZIH0gZnJvbSAnLi4vc2VydmljZXMvcXVlcnkvdXNlcnNEaXJlY3RvcnlRdWVyeSdcbmltcG9ydCB7IFNFQVJDSF9RVUVSWV9ERUJPVU5DRV9NUyB9IGZyb20gJy4uL2NvbnN0YW50cy9jb25maWcnXG5pbXBvcnQgeyB1c2VEZWJvdW5jZSB9IGZyb20gJy4vdXNlRGVib3VuY2UnXG5pbXBvcnQgeyB1c2VUIH0gZnJvbSAnLi91c2VUJ1xuaW1wb3J0IHsgQ29udGV4dEVudGl0eVR5cGUsIENvbnRleHRNZW50aW9uSXRlbSB9IGZyb20gJy4uL3R5cGVzL2NvbnRleHRNZW50aW9uJ1xuaW1wb3J0IHR5cGUgeyBBZ2VudEVudGl0eSB9IGZyb20gJy4uL3R5cGVzL2FnZW50J1xuaW1wb3J0IHR5cGUgeyBTa2lsbCB9IGZyb20gJy4uL3R5cGVzL3NraWxsJ1xuaW1wb3J0IHsgZmV0Y2hNYWlhIH0gZnJvbSAnLi4vc2VydmljZXMvbWFpYS9jbGllbnQnXG5cbnR5cGUgUmF3U2VhcmNoUmVzdWx0ID0ge1xuICBpZDogc3RyaW5nIHwgbnVtYmVyXG4gIHRpdGxlOiBzdHJpbmdcbiAgdHlwZT86IHN0cmluZ1xuICBjbGllbnRJZD86IG51bWJlciB8IHN0cmluZyB8IG51bGxcbiAgZmVlSWQ/OiBudW1iZXIgfCBzdHJpbmcgfCBudWxsXG4gIGNsaWVudE5hbWU/OiBzdHJpbmcgfCBudWxsXG4gIHByb2plY3ROYW1lPzogc3RyaW5nIHwgbnVsbFxuICBmYXRoZXI/OiB7IGlkOiBzdHJpbmcgfCBudW1iZXI7IHRpdGxlPzogc3RyaW5nIHwgbnVsbCB9IHwgbnVsbFxufVxuXG50eXBlIFJhd0NsaWVudCA9IHtcbiAgaWQ6IG51bWJlciB8IHN0cmluZ1xuICBuYW1lOiBzdHJpbmdcbiAgdG90YWxQcm95ZWN0b3M/OiBudW1iZXIgfCBudWxsXG59XG5cbnR5cGUgUmF3RGlyZWN0b3J5VXNlciA9IHtcbiAgaWQ6IHN0cmluZyB8IG51bWJlclxuICBmaXJzdE5hbWU/OiBzdHJpbmcgfCBudWxsXG4gIGxhc3ROYW1lPzogc3RyaW5nIHwgbnVsbFxuICBlbWFpbD86IHN0cmluZyB8IG51bGxcbiAgcGljdHVyZT86IHN0cmluZyB8IG51bGxcbiAgdXNlclBvc2l0aW9uPzogeyBuYW1lPzogc3RyaW5nIHwgbnVsbCB9IHwgbnVsbFxufVxuXG50eXBlIFNlYXJjaEVudGl0aWVzRGF0YSA9IHsgc2VhcmNoOiBSYXdTZWFyY2hSZXN1bHRbXSB8IG51bGwgfVxudHlwZSBTZWFyY2hDbGllbnRzRGF0YSA9IHtcbiAgY2xpZW50czoge1xuICAgIHRvdGFsPzogbnVtYmVyIHwgbnVsbFxuICAgIHBlclBhZ2U/OiBudW1iZXIgfCBudWxsXG4gICAgcGFnZT86IG51bWJlciB8IG51bGxcbiAgICBsYXN0UGFnZT86IG51bWJlciB8IG51bGxcbiAgICBkYXRhOiBSYXdDbGllbnRbXVxuICB9IHwgbnVsbFxufVxudHlwZSBVc2Vyc0RpcmVjdG9yeURhdGEgPSB7XG4gIHVzZXJzOiB7XG4gICAgdG90YWw/OiBudW1iZXIgfCBudWxsXG4gICAgcGVyUGFnZT86IG51bWJlciB8IG51bGxcbiAgICBwYWdlPzogbnVtYmVyIHwgbnVsbFxuICAgIGxhc3RQYWdlPzogbnVtYmVyIHwgbnVsbFxuICAgIGRhdGE6IFJhd0RpcmVjdG9yeVVzZXJbXSB8IG51bGxcbiAgfSB8IG51bGxcbn1cblxudHlwZSBUYXNrRmFtaWx5UmVjb3JkID0ge1xuICBfaWQ/OiBzdHJpbmcgfCBudW1iZXIgfCBudWxsXG4gIHRpdGxlPzogc3RyaW5nIHwgbnVsbFxuICBwcm9qZWN0SWQ/OiBzdHJpbmcgfCBudW1iZXIgfCBudWxsXG4gIHRhc2tGYXRoZXI/OiBzdHJpbmcgfCBudW1iZXIgfCBudWxsXG4gIGZhdGhlcj86IHsgaWQ/OiBzdHJpbmcgfCBudW1iZXIgfCBudWxsOyB0aXRsZT86IHN0cmluZyB8IG51bGwgfSB8IG51bGxcbiAgcHJvamVjdD86IHsgaWQ/OiBzdHJpbmcgfCBudW1iZXIgfCBudWxsOyBuYW1lPzogc3RyaW5nIHwgbnVsbCB9IHwgbnVsbFxufVxuXG50eXBlIFRhc2tGYW1pbHlEYXRhID0ge1xuICB0YXNrRmFtaWx5Pzoge1xuICAgIHRvdGFsPzogbnVtYmVyIHwgbnVsbFxuICAgIHBlclBhZ2U/OiBudW1iZXIgfCBudWxsXG4gICAgcGFnZT86IG51bWJlciB8IG51bGxcbiAgICBsYXN0UGFnZT86IG51bWJlciB8IG51bGxcbiAgICBkYXRhPzogVGFza0ZhbWlseVJlY29yZFtdIHwgbnVsbFxuICB9IHwgbnVsbFxufVxuXG50eXBlIEZhbGxiYWNrUHJvamVjdFJlY29yZCA9IHtcbiAgaWQ/OiBzdHJpbmcgfCBudW1iZXIgfCBudWxsXG4gIG5hbWU/OiBzdHJpbmcgfCBudWxsXG4gIGNsaWVudElkPzogc3RyaW5nIHwgbnVtYmVyIHwgbnVsbFxuICBjbGllbnQ/OiB7IGlkPzogc3RyaW5nIHwgbnVtYmVyIHwgbnVsbDsgbmFtZT86IHN0cmluZyB8IG51bGwgfSB8IG51bGxcbn1cblxudHlwZSBQcm9qZWN0c0ZhbGxiYWNrRGF0YSA9IHtcbiAgcHJvamVjdHM/OiB7XG4gICAgdG90YWw/OiBudW1iZXIgfCBudWxsXG4gICAgcGVyUGFnZT86IG51bWJlciB8IG51bGxcbiAgICBwYWdlPzogbnVtYmVyIHwgbnVsbFxuICAgIGxhc3RQYWdlPzogbnVtYmVyIHwgbnVsbFxuICAgIGRhdGE/OiBGYWxsYmFja1Byb2plY3RSZWNvcmRbXSB8IG51bGxcbiAgfSB8IG51bGxcbn1cblxudHlwZSBQYWdpbmF0aW9uU291cmNlID0gJ25vbmUnIHwgJ3VzZXJzJyB8ICdjbGllbnRzLXNlYXJjaCcgfCAndGFzay1mYWxsYmFjaycgfCAncHJvamVjdC1mYWxsYmFjaydcblxuY29uc3Qgbm9ybWFsaXplUG9zaXRpdmVJbnQgPSAodmFsdWU6IHVua25vd24sIGZhbGxiYWNrOiBudW1iZXIpOiBudW1iZXIgPT4ge1xuICBjb25zdCBwYXJzZWQgPSBOdW1iZXIodmFsdWUpXG4gIGlmICghTnVtYmVyLmlzRmluaXRlKHBhcnNlZCkpIHJldHVybiBmYWxsYmFja1xuICBjb25zdCBub3JtYWxpemVkID0gTWF0aC5mbG9vcihwYXJzZWQpXG4gIHJldHVybiBub3JtYWxpemVkID4gMCA/IG5vcm1hbGl6ZWQgOiBmYWxsYmFja1xufVxuXG4vKipcbiAqIFJlc3RyaW5nZSBsb3MgcmVzdWx0YWRvcyBhbCBgY2xpZW50SWRgL2Bwcm9qZWN0SWRgIGRlbCBhZ2VudGUgYWN0aXZvLlxuICogQ3VhbmRvIGVsIGFnZW50ZSBlc3TDoSBzY29wZWFkbyBhIHVuIGNsaWVudC9wcm9qZWN0LCB0YW50byBsb3MgcmVjZW50cyBjb21vXG4gKiBlbCBzZWFyY2ggZGViZW4gZmlsdHJhciBwb3IgZXNlIGNvbnRleHRvLiBTaSBlbCBiYWNrZW5kIG5vIGVudGllbmRlIGFsZ8O6blxuICogY2FtcG8gbG8gaWdub3JhIHkgc2UgY2FlIGFsIGNvbXBvcnRhbWllbnRvIGdsb2JhbC5cbiAqL1xuZXhwb3J0IHR5cGUgRW50aXR5U2VhcmNoU2NvcGUgPSB7XG4gIGNsaWVudElkPzogc3RyaW5nIHwgbnVtYmVyIHwgbnVsbFxuICBwcm9qZWN0SWQ/OiBzdHJpbmcgfCBudW1iZXIgfCBudWxsXG4gIC8qKiBTbHVncyBkZWwgY29uZWN0b3IgTUNQIGRlbCBhZ2VudGUgKGxpc3RhZG8gbG9jYWwsIHNpbiBHcmFwaFFMKS4gKi9cbiAgbWNwU2x1Z3M/OiBzdHJpbmdbXVxuICAvKipcbiAgICogU2tpbGxzIHByZWNhcmdhZGFzIChsaXN0YWRvIGxvY2FsLCBzaW4gUkVTVCkuIEN1YW5kbyBzZSBwcm92ZWVuLCBzZSB1c2FuIGRpcmVjdGFtZW50ZVxuICAgKiBlbiBsdWdhciBkZSBmZXRjaGVhciBkZXNkZSBsYSBBUEkuIMOadGlsIHBhcmEgZGV2L3Rlc3RpbmcgeSBwYXJhIFNTUi5cbiAgICovXG4gIHNraWxscz86IFNraWxsW11cbiAgLyoqXG4gICAqIGBlbnRpdHlgIGRlbCBhZ2VudGUgYWN0aXZvLiBQYXJhIGVzcGVjaWFsaXN0YXM6XG4gICAqIC0gYHByb2plY3RgOiBiw7pzcXVlZGEgZGUgdGFyZWFzIGZ1ZXJ6YSBmaWx0cm8gcG9yIGBwcm9qZWN0SWRgIGRlbCBjb250ZXh0by5cbiAgICogLSBgY2xpZW50YDogYsO6c3F1ZWRhIGRlIHByb3llY3RvcyBwb3IgYGNsaWVudElkYDsgdGFyZWFzIHBvciBjbGllbnRlICh5IHByb3llY3RvIHNpIGFwbGljYSkuXG4gICAqL1xuICBhZ2VudEVudGl0eT86IEFnZW50RW50aXR5IHwgbnVsbFxufVxuXG50eXBlIFNlYXJjaEZpbHRlcmFibGVUeXBlID0gJ3Byb2plY3QnIHwgJ3Rhc2snXG5cbmNvbnN0IEJBU0VfRklMVEVSU19CWV9UWVBFOiBSZWNvcmQ8U2VhcmNoRmlsdGVyYWJsZVR5cGUsIFJlY29yZDxzdHJpbmcsIHN0cmluZz4+ID0ge1xuICBwcm9qZWN0OiB7IHByb2plY3Q6ICd0cnVlJywgYXJjaGl2ZWQ6ICdhbGwnIH0sXG4gIHRhc2s6IHsgdGFzazogJ3RydWUnLCBhcmNoaXZlZDogJ2ZhbHNlJyB9LFxufVxuXG4vKipcbiAqIEVudHJhZGFzIHBhcmEgZWwgYXJndW1lbnRvIEdyYXBoUUwgYGV4dHJhYCAoSlNPTiBzdHJpbmcgZGUgYXJyYXkpIGFsIGJ1c2NhciB0YXJlYXMgY29uIGNvbnRleHRvLlxuICogRWouOiBbe1wicHJvamVjdElkXCI6XCI4ODE1NTJcIn1dXG4gKi9cbmNvbnN0IGJ1aWxkVGFza1NlYXJjaEV4dHJhRW50cmllcyA9IChzY29wZT86IEVudGl0eVNlYXJjaFNjb3BlKTogQXJyYXk8UmVjb3JkPHN0cmluZywgc3RyaW5nPj4gPT4ge1xuICBjb25zdCByYXdDbGllbnQgPVxuICAgIHNjb3BlPy5jbGllbnRJZCAhPT0gdW5kZWZpbmVkICYmIHNjb3BlPy5jbGllbnRJZCAhPT0gbnVsbCAmJiBzY29wZT8uY2xpZW50SWQgIT09ICcnID8gU3RyaW5nKHNjb3BlLmNsaWVudElkKSA6IG51bGxcbiAgY29uc3QgcmF3UHJvamVjdCA9XG4gICAgc2NvcGU/LnByb2plY3RJZCAhPT0gdW5kZWZpbmVkICYmIHNjb3BlPy5wcm9qZWN0SWQgIT09IG51bGwgJiYgc2NvcGU/LnByb2plY3RJZCAhPT0gJydcbiAgICAgID8gU3RyaW5nKHNjb3BlLnByb2plY3RJZClcbiAgICAgIDogbnVsbFxuXG4gIGNvbnN0IGFnZW50RW50aXR5ID0gc2NvcGU/LmFnZW50RW50aXR5XG4gIGNvbnN0IGVudHJpZXM6IEFycmF5PFJlY29yZDxzdHJpbmcsIHN0cmluZz4+ID0gW11cblxuICBjb25zdCBwdXNoQ2xpZW50ID0gKCkgPT4ge1xuICAgIGlmIChyYXdDbGllbnQpIGVudHJpZXMucHVzaCh7IGNsaWVudElkOiByYXdDbGllbnQgfSlcbiAgfVxuICBjb25zdCBwdXNoUHJvamVjdCA9ICgpID0+IHtcbiAgICBpZiAocmF3UHJvamVjdCkgZW50cmllcy5wdXNoKHsgcHJvamVjdElkOiByYXdQcm9qZWN0IH0pXG4gIH1cblxuICBpZiAoYWdlbnRFbnRpdHkgPT09ICdwcm9qZWN0Jykge1xuICAgIGlmIChyYXdQcm9qZWN0KSB7XG4gICAgICBwdXNoUHJvamVjdCgpXG4gICAgfSBlbHNlIGlmIChyYXdDbGllbnQpIHtcbiAgICAgIHB1c2hDbGllbnQoKVxuICAgIH1cbiAgfSBlbHNlIGlmIChhZ2VudEVudGl0eSA9PT0gJ2NsaWVudCcpIHtcbiAgICBwdXNoQ2xpZW50KClcbiAgICBwdXNoUHJvamVjdCgpXG4gIH0gZWxzZSB7XG4gICAgcHVzaENsaWVudCgpXG4gICAgcHVzaFByb2plY3QoKVxuICB9XG5cbiAgcmV0dXJuIGVudHJpZXNcbn1cblxuY29uc3QgYnVpbGRUYXNrU2VhcmNoRXh0cmEgPSAoc2NvcGU/OiBFbnRpdHlTZWFyY2hTY29wZSk6IHN0cmluZyB8IHVuZGVmaW5lZCA9PiB7XG4gIGNvbnN0IGVudHJpZXMgPSBidWlsZFRhc2tTZWFyY2hFeHRyYUVudHJpZXMoc2NvcGUpXG4gIGlmIChlbnRyaWVzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIHVuZGVmaW5lZFxuICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoZW50cmllcylcbn1cblxuLyoqXG4gKiBUYWIgcHJveWVjdG86IGNvbiBgY2xpZW50SWRgIGVuIGVsIHNjb3BlLCBgZXh0cmFgIGFjb3RhIGxhIGLDunNxdWVkYSBhIHByb3llY3RvcyBkZSBlc2UgY2xpZW50ZS5cbiAqIEVqLjogYFt7XCJjbGllbnRJZFwiOlwiNDcxMDVcIn1dYCBqdW50byBhIGBmaWx0ZXJzYCBge1wicHJvamVjdFwiOlwidHJ1ZVwiLFwiYXJjaGl2ZWRcIjpcImFsbFwifWAuXG4gKi9cbmNvbnN0IGJ1aWxkUHJvamVjdFNlYXJjaEV4dHJhID0gKHNjb3BlPzogRW50aXR5U2VhcmNoU2NvcGUpOiBzdHJpbmcgfCB1bmRlZmluZWQgPT4ge1xuICBjb25zdCByYXdDbGllbnQgPVxuICAgIHNjb3BlPy5jbGllbnRJZCAhPT0gdW5kZWZpbmVkICYmIHNjb3BlPy5jbGllbnRJZCAhPT0gbnVsbCAmJiBzY29wZT8uY2xpZW50SWQgIT09ICcnID8gU3RyaW5nKHNjb3BlLmNsaWVudElkKSA6IG51bGxcbiAgaWYgKCFyYXdDbGllbnQpIHJldHVybiB1bmRlZmluZWRcbiAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KFt7IGNsaWVudElkOiByYXdDbGllbnQgfV0pXG59XG5cbmNvbnN0IGJ1aWxkU2VhcmNoRW50aXRpZXNFeHRyYSA9ICh0eXBlOiBTZWFyY2hGaWx0ZXJhYmxlVHlwZSwgc2NvcGU/OiBFbnRpdHlTZWFyY2hTY29wZSk6IHN0cmluZyB8IHVuZGVmaW5lZCA9PiB7XG4gIGlmICh0eXBlID09PSAndGFzaycpIHJldHVybiBidWlsZFRhc2tTZWFyY2hFeHRyYShzY29wZSlcbiAgaWYgKHR5cGUgPT09ICdwcm9qZWN0JykgcmV0dXJuIGJ1aWxkUHJvamVjdFNlYXJjaEV4dHJhKHNjb3BlKVxuICByZXR1cm4gdW5kZWZpbmVkXG59XG5cbi8qKlxuICogVGFiIGB0YXNrYCAvIGBwcm9qZWN0YDogYGZpbHRlcnNgIHPDs2xvIHRpcG8gKyBhcmNoaXZlZCAodGFyZWFzOiBubyBhcmNoaXZhZGFzKTsgc2NvcGUgKGNsaWVudElkIC8gcHJvamVjdElkIGVuIHRhcmVhcykgZW4gYGV4dHJhYC5cbiAqL1xuY29uc3QgYnVpbGRGaWx0ZXJzRm9yVHlwZSA9ICh0eXBlOiBTZWFyY2hGaWx0ZXJhYmxlVHlwZSk6IHN0cmluZyA9PiB7XG4gIGlmICh0eXBlID09PSAncHJvamVjdCcpIHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoQkFTRV9GSUxURVJTX0JZX1RZUEUucHJvamVjdClcbiAgfVxuICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoQkFTRV9GSUxURVJTX0JZX1RZUEUudGFzaylcbn1cblxuLyoqXG4gKiBGaWx0cm9zIHBhcmEgbGEgcXVlcnkgdXNlcnMuIEVsIGJhY2tlbmQgZXNwZXJhIHVuIEpTT04gc3RyaW5nIGNvblxuICogd2l0aFBvc2l0aW9uLCB3aXRoVGVhbXMgeSBzZWFyY2hJbnB1dC4gTGUgYWdyZWdhbW9zIGNsaWVudElkL3Byb2plY3RJZFxuICogZGVsIHNjb3BlIGVuIGNhc28gZGUgcXVlIGVsIGJhY2tlbmQgbG9zIGFwcm92ZWNoZSBwYXJhIGZpbHRyYXIgcG9yXG4gKiBjb250ZXh0byAoc2kgbm8gbG9zIGVudGllbmRlIGxvcyBpZ25vcmEpLlxuICovXG5jb25zdCBidWlsZFVzZXJzRGlyZWN0b3J5RmlsdGVycyA9IChxOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBjb25zdCBiYXNlOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHtcbiAgICB3aXRoUG9zaXRpb246IHRydWUsXG4gICAgd2l0aFRlYW1zOiB0cnVlLFxuICB9XG4gIGNvbnN0IHRyaW1tZWRRID0gcS50cmltKClcbiAgaWYgKHRyaW1tZWRRKSB7XG4gICAgYmFzZS5zZWFyY2hJbnB1dCA9IHRyaW1tZWRRXG4gIH1cbiAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGJhc2UpXG59XG5cbmNvbnN0IGhpZ2hsaWdodFJhbmdlID0gKHRleHQ6IHN0cmluZywgc2VhcmNoVmFsdWU6IHN0cmluZykgPT4ge1xuICBpZiAoIXNlYXJjaFZhbHVlKSByZXR1cm4gdW5kZWZpbmVkXG4gIGNvbnN0IGlkeCA9IHRleHQudG9Mb3dlckNhc2UoKS5pbmRleE9mKHNlYXJjaFZhbHVlLnRvTG93ZXJDYXNlKCkpXG4gIGlmIChpZHggPCAwKSByZXR1cm4gdW5kZWZpbmVkXG4gIHJldHVybiB7IHN0YXJ0OiBpZHgsIGxlbmd0aDogc2VhcmNoVmFsdWUubGVuZ3RoIH1cbn1cblxuY29uc3QgZmlyc3REZWZpbmVkID0gPFQ+KC4uLnZhbHVlczogQXJyYXk8VCB8IG51bGwgfCB1bmRlZmluZWQ+KTogVCB8IHVuZGVmaW5lZCA9PlxuICB2YWx1ZXMuZmluZCh2YWx1ZSA9PiB2YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHZhbHVlICE9PSBudWxsKVxuXG5jb25zdCBub3JtYWxpemVUcmltbWVkU3RyaW5nID0gKHZhbHVlOiB1bmtub3duKTogc3RyaW5nID0+IHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3N0cmluZycpIHJldHVybiAnJ1xuICByZXR1cm4gdmFsdWUudHJpbSgpXG59XG5cbmNvbnN0IGdldFVzZXJQb3NpdGlvbk5hbWUgPSAodXNlclBvc2l0aW9uOiBSZXR1cm5UeXBlPHR5cGVvZiB1c2VVc2VyPlsndXNlcl9wb3NpdGlvbiddKTogc3RyaW5nID0+IHtcbiAgaWYgKHR5cGVvZiB1c2VyUG9zaXRpb24gPT09ICdzdHJpbmcnKSByZXR1cm4gdXNlclBvc2l0aW9uLnRyaW0oKVxuICBpZiAodXNlclBvc2l0aW9uICYmIHR5cGVvZiB1c2VyUG9zaXRpb24gPT09ICdvYmplY3QnICYmICduYW1lJyBpbiB1c2VyUG9zaXRpb24pIHtcbiAgICByZXR1cm4gbm9ybWFsaXplVHJpbW1lZFN0cmluZyh1c2VyUG9zaXRpb24ubmFtZSlcbiAgfVxuICByZXR1cm4gJydcbn1cblxuY29uc3QgbWFwQ2xpZW50VG9JdGVtID0gKGM6IFJhd0NsaWVudCwgc2VhcmNoVmFsdWU6IHN0cmluZyk6IENvbnRleHRNZW50aW9uSXRlbSA9PiAoe1xuICBpZDogYy5pZCxcbiAgdHlwZTogJ2NsaWVudCcsXG4gIHByaW1hcnk6IGMubmFtZSxcbiAgcHJpbWFyeUhpZ2hsaWdodDogaGlnaGxpZ2h0UmFuZ2UoYy5uYW1lLCBzZWFyY2hWYWx1ZSksXG4gIGJyZWFkY3J1bWI6IHtcbiAgICBjb3VudDogYy50b3RhbFByb3llY3RvcyA/PyB1bmRlZmluZWQsXG4gICAgY291bnRMYWJlbDogJ3Byb2plY3RzJyxcbiAgfSxcbiAgcmF3OiB7XG4gICAgaWQ6IGMuaWQsXG4gICAgbmFtZTogYy5uYW1lLFxuICAgIHRvdGFsUHJveWVjdG9zOiBjLnRvdGFsUHJveWVjdG9zID8/IG51bGwsXG4gIH0sXG59KVxuXG5jb25zdCBtYXBVc2VyVG9JdGVtID0gKHU6IFJhd0RpcmVjdG9yeVVzZXIsIHNlYXJjaFZhbHVlOiBzdHJpbmcpOiBDb250ZXh0TWVudGlvbkl0ZW0gPT4ge1xuICBjb25zdCBmdWxsTmFtZSA9IGAke3UuZmlyc3ROYW1lID8/ICcnfSAke3UubGFzdE5hbWUgPz8gJyd9YC50cmltKClcbiAgY29uc3QgcHJpbWFyeSA9IGZ1bGxOYW1lIHx8IHUuZW1haWwgfHwgU3RyaW5nKHUuaWQpXG5cbiAgcmV0dXJuIHtcbiAgICBpZDogdS5pZCxcbiAgICB0eXBlOiAndXNlcicsXG4gICAgcHJpbWFyeSxcbiAgICBwcmltYXJ5SGlnaGxpZ2h0OiBoaWdobGlnaHRSYW5nZShwcmltYXJ5LCBzZWFyY2hWYWx1ZSksXG4gICAgcmF3OiB7XG4gICAgICBpZDogdS5pZCxcbiAgICAgIG5hbWU6IHByaW1hcnksXG4gICAgICBwaWN0dXJlOiB1LnBpY3R1cmUgPz8gbnVsbCxcbiAgICAgIHBvc2l0aW9uTmFtZTogdS51c2VyUG9zaXRpb24/Lm5hbWUgPz8gbnVsbCxcbiAgICAgIGVtYWlsOiB1LmVtYWlsID8/IG51bGwsXG4gICAgfSxcbiAgfVxufVxuXG5jb25zdCBtYXBDb3JVc2VyVG9Vc2VySXRlbSA9IChcbiAgdXNlcjogUmV0dXJuVHlwZTx0eXBlb2YgdXNlVXNlcj4sXG4gIHNlYXJjaFZhbHVlOiBzdHJpbmcsXG4gIG1lTGFiZWw6IHN0cmluZ1xuKTogQ29udGV4dE1lbnRpb25JdGVtID0+IHtcbiAgY29uc3QgZnVsbE5hbWUgPSBgJHt1c2VyLmZpcnN0TmFtZSA/PyAnJ30gJHt1c2VyLmxhc3ROYW1lID8/ICcnfWAudHJpbSgpXG4gIC8qKiBTb2xvIGNhcmdvIHJlYWw7IHNpbiBmYWxsYmFjayBhIGByb2xlYCAobGEgVUkgbXVlc3RyYSDigJxTaW4gcG9zaWNpw7Nu4oCdIHNpIGZhbHRhKS4gKi9cbiAgY29uc3QgcG9zaXRpb25MaW5lID0gZ2V0VXNlclBvc2l0aW9uTmFtZSh1c2VyLnVzZXJfcG9zaXRpb24pIHx8IG51bGxcbiAgY29uc3QgZW1haWwgPSBub3JtYWxpemVUcmltbWVkU3RyaW5nKHVzZXIuZW1haWwpIHx8IG51bGxcblxuICByZXR1cm4ge1xuICAgIGlkOiB1c2VyLmlkLFxuICAgIHR5cGU6ICd1c2VyJyxcbiAgICBwcmltYXJ5OiBtZUxhYmVsLFxuICAgIHByaW1hcnlIaWdobGlnaHQ6IGhpZ2hsaWdodFJhbmdlKG1lTGFiZWwsIHNlYXJjaFZhbHVlKSxcbiAgICByYXc6IHtcbiAgICAgIGlkOiB1c2VyLmlkLFxuICAgICAgbmFtZTogZnVsbE5hbWUgfHwgU3RyaW5nKHVzZXIuaWQpLFxuICAgICAgcGljdHVyZTogdXNlci5waWN0dXJlIHx8IG51bGwsXG4gICAgICBwb3NpdGlvbk5hbWU6IHBvc2l0aW9uTGluZSxcbiAgICAgIGVtYWlsLFxuICAgIH0sXG4gIH1cbn1cblxuY29uc3QgbWFwUmVjZW50VGFza1RvSXRlbSA9IChcbiAgdGFzazogUmVjZW50VGFza0l0ZW0sXG4gIHNlYXJjaFZhbHVlOiBzdHJpbmcsXG4gIHNob3dQcm9qZWN0TmFtZUluVGFza1JvdyA9IHRydWVcbik6IENvbnRleHRNZW50aW9uSXRlbSA9PiB7XG4gIGNvbnN0IHByaW1hcnkgPSAodGFzay50aXRsZSAmJiB0YXNrLnRpdGxlLnRyaW0oKSkgfHwgU3RyaW5nKHRhc2suaWQpXG4gIGNvbnN0IHByb2plY3ROYW1lID0gc2hvd1Byb2plY3ROYW1lSW5UYXNrUm93ID8gKHRhc2sucHJvamVjdE5hbWUgPz8gbnVsbCkgOiBudWxsXG4gIHJldHVybiB7XG4gICAgaWQ6IHRhc2suaWQsXG4gICAgdHlwZTogJ3Rhc2snLFxuICAgIHByaW1hcnksXG4gICAgcHJpbWFyeUhpZ2hsaWdodDogaGlnaGxpZ2h0UmFuZ2UocHJpbWFyeSwgc2VhcmNoVmFsdWUpLFxuICAgIGJyZWFkY3J1bWI6IHByb2plY3ROYW1lID8geyBwYXJlbnQ6IHByb2plY3ROYW1lIH0gOiB1bmRlZmluZWQsXG4gICAgcmF3OiB7XG4gICAgICBpZDogdGFzay5pZCxcbiAgICAgIG5hbWU6IHByaW1hcnksXG4gICAgICBwcm9qZWN0TmFtZSxcbiAgICB9LFxuICB9XG59XG5cbmNvbnN0IG5vcm1hbGl6ZVRhc2tGYW1pbHlSZWNvcmQgPSAocmVjb3JkOiBUYXNrRmFtaWx5UmVjb3JkKTogUmVjZW50VGFza0l0ZW0gfCBudWxsID0+IHtcbiAgY29uc3QgeyBfaWQ6IHRhc2tGYW1pbHlJZCB9ID0gcmVjb3JkXG4gIGNvbnN0IGlkID0gdGFza0ZhbWlseUlkXG4gIGlmIChpZCA9PT0gdW5kZWZpbmVkIHx8IGlkID09PSBudWxsIHx8IFN0cmluZyhpZCkgPT09ICcnKSByZXR1cm4gbnVsbFxuICBjb25zdCB0aXRsZSA9IChyZWNvcmQudGl0bGUgPz8gJycpLnRyaW0oKSB8fCBTdHJpbmcoaWQpXG4gIGNvbnN0IHByb2plY3ROYW1lID0gZmlyc3REZWZpbmVkKHJlY29yZC5wcm9qZWN0Py5uYW1lLCByZWNvcmQuZmF0aGVyPy50aXRsZSkgPz8gbnVsbFxuICBjb25zdCBoYXNGYXRoZXIgPSAhIWZpcnN0RGVmaW5lZChyZWNvcmQudGFza0ZhdGhlciwgcmVjb3JkLmZhdGhlcj8uaWQpXG4gIHJldHVybiB7XG4gICAgaWQsXG4gICAgdGl0bGUsXG4gICAgdHlwZTogaGFzRmF0aGVyID8gJ3N1YnRhc2snIDogJ3Rhc2snLFxuICAgIHByb2plY3ROYW1lLFxuICB9XG59XG5cbmNvbnN0IG5vcm1hbGl6ZVByb2plY3RzRmFsbGJhY2tSZWNvcmQgPSAocmVjb3JkOiBGYWxsYmFja1Byb2plY3RSZWNvcmQpOiBSYXdTZWFyY2hSZXN1bHQgfCBudWxsID0+IHtcbiAgY29uc3QgeyBpZCB9ID0gcmVjb3JkXG4gIGlmIChpZCA9PT0gdW5kZWZpbmVkIHx8IGlkID09PSBudWxsIHx8IFN0cmluZyhpZCkgPT09ICcnKSByZXR1cm4gbnVsbFxuICBjb25zdCB0aXRsZSA9IHJlY29yZC5uYW1lID8/ICcnXG4gIGNvbnN0IGNsaWVudElkID0gZmlyc3REZWZpbmVkKHJlY29yZC5jbGllbnRJZCwgcmVjb3JkLmNsaWVudD8uaWQpID8/IG51bGxcbiAgY29uc3QgY2xpZW50TmFtZSA9IHJlY29yZC5jbGllbnQ/Lm5hbWUgPz8gbnVsbFxuICByZXR1cm4ge1xuICAgIGlkLFxuICAgIHRpdGxlLFxuICAgIHR5cGU6ICdwcm9qZWN0JyxcbiAgICBjbGllbnRJZCxcbiAgICBjbGllbnROYW1lLFxuICB9XG59XG5cbmNvbnN0IG1hcFNlYXJjaFRvSXRlbSA9IChcbiAgcjogUmF3U2VhcmNoUmVzdWx0LFxuICB0eXBlOiBDb250ZXh0RW50aXR5VHlwZSxcbiAgc2VhcmNoVmFsdWU6IHN0cmluZyxcbiAgc2hvd1Byb2plY3ROYW1lSW5UYXNrUm93ID0gdHJ1ZVxuKTogQ29udGV4dE1lbnRpb25JdGVtID0+IHtcbiAgY29uc3QgcHJpbWFyeSA9IHIudGl0bGUgfHwgci5wcm9qZWN0TmFtZSB8fCAnJ1xuICBsZXQgcGFyZW50OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkXG4gIGlmICh0eXBlID09PSAncHJvamVjdCcpIHBhcmVudCA9IHIuY2xpZW50TmFtZVxuICBlbHNlIGlmICh0eXBlID09PSAndGFzaycpIHBhcmVudCA9IHVuZGVmaW5lZFxuICBlbHNlIHBhcmVudCA9IHIucHJvamVjdE5hbWUgPz8gci5jbGllbnROYW1lXG5cbiAgY29uc3QgZmF0aGVyID0gdHlwZSA9PT0gJ3Rhc2snID8gci5mYXRoZXIgOiBudWxsXG4gIGNvbnN0IGhhc0ZhdGhlciA9IHR5cGUgPT09ICd0YXNrJyAmJiBmYXRoZXIgIT0gbnVsbCAmJiBmYXRoZXIuaWQgIT0gbnVsbCAmJiBTdHJpbmcoZmF0aGVyLmlkKS5sZW5ndGggPiAwXG5cbiAgY29uc3QgdGFza1Byb2plY3ROYW1lID0gdHlwZSA9PT0gJ3Rhc2snICYmICFzaG93UHJvamVjdE5hbWVJblRhc2tSb3cgPyBudWxsIDogKHIucHJvamVjdE5hbWUgPz8gbnVsbClcblxuICByZXR1cm4ge1xuICAgIGlkOiByLmlkLFxuICAgIHR5cGUsXG4gICAgcHJpbWFyeSxcbiAgICBwcmltYXJ5SGlnaGxpZ2h0OiBoaWdobGlnaHRSYW5nZShwcmltYXJ5LCBzZWFyY2hWYWx1ZSksXG4gICAgYnJlYWRjcnVtYjogcGFyZW50ID8geyBwYXJlbnQgfSA6IHVuZGVmaW5lZCxcbiAgICByYXc6IHtcbiAgICAgIGlkOiByLmlkLFxuICAgICAgbmFtZTogcHJpbWFyeSxcbiAgICAgIGNsaWVudElkOiByLmNsaWVudElkID8/IG51bGwsXG4gICAgICBjbGllbnROYW1lOiByLmNsaWVudE5hbWUgPz8gbnVsbCxcbiAgICAgIHByb2plY3ROYW1lOiB0YXNrUHJvamVjdE5hbWUsXG4gICAgICBmZWVJZDogci5mZWVJZCA/PyBudWxsLFxuICAgICAgZmF0aGVySWQ6IGhhc0ZhdGhlciA/IGZhdGhlci5pZCA6IG51bGwsXG4gICAgICBmYXRoZXJUaXRsZTogaGFzRmF0aGVyID8gZmF0aGVyLnRpdGxlPy50cmltKCkgfHwgbnVsbCA6IG51bGwsXG4gICAgfSxcbiAgfVxufVxuXG5jb25zdCBmb3JtYXRNY3BQcmltYXJ5TGFiZWwgPSAoc2x1Zzogc3RyaW5nKTogc3RyaW5nID0+XG4gIHNsdWcucmVwbGFjZSgvXy9nLCAnICcpLnJlcGxhY2UoL1xcYlxcdy9nLCBjaGFyID0+IGNoYXIudG9VcHBlckNhc2UoKSlcblxuY29uc3QgU0tJTExTX1BBR0VfTElNSVQgPSAxMDBcblxuY29uc3QgZmV0Y2hBbGxTa2lsbFBhZ2VzID0gYXN5bmMgKG9mZnNldDogbnVtYmVyLCBhY2N1bXVsYXRlZDogU2tpbGxbXSk6IFByb21pc2U8U2tpbGxbXT4gPT4ge1xuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoTWFpYSh7IHBhdGg6IGBza2lsbHM/bGltaXQ9JHtTS0lMTFNfUEFHRV9MSU1JVH0mb2Zmc2V0PSR7b2Zmc2V0fWAsIG1ldGhvZDogJ0dFVCcgfSlcbiAgY29uc3QgZGF0YTogeyBkYXRhPzogU2tpbGxbXTsgaGFzX21vcmU/OiBib29sZWFuOyBuZXh0X29mZnNldD86IG51bWJlciB8IG51bGwgfSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKVxuICBjb25zdCBwYWdlOiBTa2lsbFtdID0gZGF0YS5kYXRhID8/IFtdXG4gIGNvbnN0IGFsbCA9IFsuLi5hY2N1bXVsYXRlZCwgLi4ucGFnZV1cbiAgaWYgKGRhdGEuaGFzX21vcmUgJiYgcGFnZS5sZW5ndGggPj0gU0tJTExTX1BBR0VfTElNSVQpIHtcbiAgICByZXR1cm4gZmV0Y2hBbGxTa2lsbFBhZ2VzKGRhdGEubmV4dF9vZmZzZXQgPz8gb2Zmc2V0ICsgU0tJTExTX1BBR0VfTElNSVQsIGFsbClcbiAgfVxuICByZXR1cm4gYWxsXG59XG5cbmNvbnN0IG1hcFNraWxsc1RvSXRlbXMgPSAoc2tpbGxzOiBTa2lsbFtdLCBzZWFyY2hWYWx1ZTogc3RyaW5nKTogQ29udGV4dE1lbnRpb25JdGVtW10gPT4ge1xuICBjb25zdCBxID0gc2VhcmNoVmFsdWUudHJpbSgpLnRvTG93ZXJDYXNlKClcbiAgY29uc3QgZmlsdGVyZWQgPSBxID8gc2tpbGxzLmZpbHRlcihzID0+IHMubmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHEpKSA6IHNraWxsc1xuICByZXR1cm4gZmlsdGVyZWQubWFwKHNraWxsID0+ICh7XG4gICAgaWQ6IHNraWxsLmlkLFxuICAgIHR5cGU6ICdza2lsbCcgYXMgY29uc3QsXG4gICAgcHJpbWFyeTogc2tpbGwubmFtZSxcbiAgICBwcmltYXJ5SGlnaGxpZ2h0OiBoaWdobGlnaHRSYW5nZShza2lsbC5uYW1lLCBzZWFyY2hWYWx1ZSksXG4gICAgcmF3OiB7XG4gICAgICBpZDogc2tpbGwuaWQsXG4gICAgICBuYW1lOiBza2lsbC5uYW1lLFxuICAgIH0sXG4gIH0pKVxufVxuXG5jb25zdCBtYXBNY3BTbHVnc1RvSXRlbXMgPSAoc2x1Z3M6IHN0cmluZ1tdLCBzZWFyY2hWYWx1ZTogc3RyaW5nKTogQ29udGV4dE1lbnRpb25JdGVtW10gPT4ge1xuICBjb25zdCBxID0gc2VhcmNoVmFsdWUudHJpbSgpLnRvTG93ZXJDYXNlKClcbiAgbGV0IGZpbHRlcmVkID0gc2x1Z3NcbiAgaWYgKHEpIHtcbiAgICBmaWx0ZXJlZCA9IHNsdWdzLmZpbHRlcihzID0+IHtcbiAgICAgIGNvbnN0IHByaW1hcnkgPSBmb3JtYXRNY3BQcmltYXJ5TGFiZWwocylcbiAgICAgIHJldHVybiBzLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMocSkgfHwgcHJpbWFyeS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHEpXG4gICAgfSlcbiAgfVxuICByZXR1cm4gZmlsdGVyZWQubWFwKHNsdWcgPT4ge1xuICAgIGNvbnN0IHByaW1hcnkgPSBmb3JtYXRNY3BQcmltYXJ5TGFiZWwoc2x1ZylcbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IHNsdWcsXG4gICAgICB0eXBlOiAnbWNwJyBhcyBjb25zdCxcbiAgICAgIHByaW1hcnksXG4gICAgICBwcmltYXJ5SGlnaGxpZ2h0OiBoaWdobGlnaHRSYW5nZShwcmltYXJ5LCBzZWFyY2hWYWx1ZSksXG4gICAgICByYXc6IHtcbiAgICAgICAgaWQ6IHNsdWcsXG4gICAgICAgIG5hbWU6IHByaW1hcnksXG4gICAgICB9LFxuICAgIH1cbiAgfSlcbn1cblxuZXhwb3J0IGNvbnN0IHVzZUVudGl0eVNlYXJjaCA9ICh0eXBlOiBDb250ZXh0RW50aXR5VHlwZSwgc2NvcGU/OiBFbnRpdHlTZWFyY2hTY29wZSkgPT4ge1xuICBjb25zdCBjb3JVc2VyID0gdXNlVXNlcigpXG4gIGNvbnN0IHsgdCB9ID0gdXNlVCgpXG4gIC8qKiBFdml0YSBhcGxpY2FyIHJlc3VsdGFkb3MgZGUgdW4gYGZldGNoUmVjZW50YCB2aWVqbyBjdWFuZG8gZWwgdXN1YXJpbyB5YSBjYW1iacOzIGRlIHRhYiAocmFjZSBhc3luYykuICovXG4gIGNvbnN0IHJlY2VudHNGZXRjaEdlbmVyYXRpb25SZWYgPSB1c2VSZWYoMClcbiAgY29uc3QgW3NlYXJjaFZhbHVlLCBzZXRTZWFyY2hWYWx1ZV0gPSB1c2VTdGF0ZSgnJylcbiAgY29uc3QgZGVib3VuY2VkU2VhcmNoVmFsdWUgPSB1c2VEZWJvdW5jZShzZWFyY2hWYWx1ZSwgU0VBUkNIX1FVRVJZX0RFQk9VTkNFX01TKVxuICBjb25zdCBbY2FjaGVkU2tpbGxzLCBzZXRDYWNoZWRTa2lsbHNdID0gdXNlU3RhdGU8U2tpbGxbXT4oW10pXG5cbiAgY29uc3QgW2l0ZW1zLCBzZXRJdGVtc10gPSB1c2VTdGF0ZTxDb250ZXh0TWVudGlvbkl0ZW1bXT4oW10pXG4gIGNvbnN0IFtsb2FkaW5nLCBzZXRMb2FkaW5nXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbZXJyb3IsIHNldEVycm9yXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbaGlkZVJlY2VudHNMYWJlbCwgc2V0SGlkZVJlY2VudHNMYWJlbF0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2hhc01vcmUsIHNldEhhc01vcmVdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtpc0xvYWRpbmdNb3JlLCBzZXRJc0xvYWRpbmdNb3JlXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbY3VycmVudFBhZ2UsIHNldEN1cnJlbnRQYWdlXSA9IHVzZVN0YXRlKDEpXG4gIGNvbnN0IFthY3RpdmVQYWdpbmF0aW9uU291cmNlLCBzZXRBY3RpdmVQYWdpbmF0aW9uU291cmNlXSA9IHVzZVN0YXRlPFBhZ2luYXRpb25Tb3VyY2U+KCdub25lJylcblxuICBjb25zdCBtY3BTbHVnc0tleSA9IChzY29wZT8ubWNwU2x1Z3MgPz8gW10pLmpvaW4oJ3wnKVxuICBjb25zdCBza2lsbHNLZXkgPSAoc2NvcGU/LnNraWxscyA/PyBbXSkubWFwKHMgPT4gcy5pZCkuam9pbignfCcpXG4gIGNvbnN0IHNob3dQcm9qZWN0TmFtZUluVGFza1JvdyA9IHNjb3BlPy5hZ2VudEVudGl0eSAhPT0gJ3Byb2plY3QnXG5cbiAgLy8gRXN0YWJpbGl6YW1vcyBlbCBzY29wZSBwYXJhIG5vIGRpc3BhcmFyIGZldGNocyBwb3IgY2FtYmlvcyBkZSBpZGVudGlkYWQgZGUgb2JqZXRvLlxuICBjb25zdCBzdGFibGVTY29wZSA9IHVzZU1lbW88RW50aXR5U2VhcmNoU2NvcGU+KFxuICAgICgpID0+ICh7XG4gICAgICBjbGllbnRJZDogc2NvcGU/LmNsaWVudElkID8/IG51bGwsXG4gICAgICBwcm9qZWN0SWQ6IHNjb3BlPy5wcm9qZWN0SWQgPz8gbnVsbCxcbiAgICAgIG1jcFNsdWdzOiBzY29wZT8ubWNwU2x1Z3MgPz8gW10sXG4gICAgICBza2lsbHM6IHNjb3BlPy5za2lsbHMsXG4gICAgICBhZ2VudEVudGl0eTogc2NvcGU/LmFnZW50RW50aXR5ID8/IG51bGwsXG4gICAgfSksXG4gICAgW3Njb3BlPy5jbGllbnRJZCwgc2NvcGU/LnByb2plY3RJZCwgbWNwU2x1Z3NLZXksIHNraWxsc0tleSwgc2NvcGU/LmFnZW50RW50aXR5XVxuICApXG5cbiAgLy8gLS0tIFNlYXJjaDogcHJvamVjdCB8IHRhc2sgKEdyYXBoUUw6IHNlYXJjaCkgLS0tXG4gIGNvbnN0IFtmZXRjaFNlYXJjaEVudGl0aWVzLCB7IGRhdGE6IHNlYXJjaERhdGEsIGxvYWRpbmc6IHNlYXJjaExvYWRpbmcsIGVycm9yOiBzZWFyY2hFcnJvciB9XSA9XG4gICAgdXNlTGF6eVF1ZXJ5PFNlYXJjaEVudGl0aWVzRGF0YT4oU0VBUkNIX0VOVElUSUVTLCB7XG4gICAgICB2YXJpYWJsZXM6IHsgbGltaXQ6IDIwIH0sXG4gICAgICBmZXRjaFBvbGljeTogJ25ldHdvcmstb25seScsXG4gICAgfSlcblxuICAvLyAtLS0gU2VhcmNoOiBjbGllbnQgKEdyYXBoUUwpIC0tLVxuICBjb25zdCBbZmV0Y2hTZWFyY2hDbGllbnRzLCB7IGRhdGE6IGNsaWVudHNEYXRhLCBsb2FkaW5nOiBjbGllbnRzTG9hZGluZywgZXJyb3I6IGNsaWVudHNFcnJvciB9XSA9XG4gICAgdXNlTGF6eVF1ZXJ5PFNlYXJjaENsaWVudHNEYXRhPihTRUFSQ0hfQ0xJRU5UUywge1xuICAgICAgZmV0Y2hQb2xpY3k6ICduZXR3b3JrLW9ubHknLFxuICAgIH0pXG5cbiAgLy8gLS0tIFNlYXJjaDogdXNlciAoR3JhcGhRTDogdXNlcnMpIC0tLVxuICBjb25zdCBbZmV0Y2hVc2Vyc0RpcmVjdG9yeSwgeyBkYXRhOiB1c2Vyc0RhdGEsIGxvYWRpbmc6IHVzZXJzTG9hZGluZywgZXJyb3I6IHVzZXJzRXJyb3IgfV0gPVxuICAgIHVzZUxhenlRdWVyeTxVc2Vyc0RpcmVjdG9yeURhdGE+KFVTRVJTX0RJUkVDVE9SWSwge1xuICAgICAgZmV0Y2hQb2xpY3k6ICduZXR3b3JrLW9ubHknLFxuICAgIH0pXG5cbiAgY29uc3Qgc3luY1VzZXJzUGFnaW5hdGlvbiA9IHVzZUNhbGxiYWNrKChwYXlsb2FkPzogVXNlcnNEaXJlY3RvcnlEYXRhIHwgbnVsbCkgPT4ge1xuICAgIGNvbnN0IHBhZ2UgPSBub3JtYWxpemVQb3NpdGl2ZUludChwYXlsb2FkPy51c2Vycz8ucGFnZSwgMSlcbiAgICBjb25zdCBsYXN0UGFnZSA9IG5vcm1hbGl6ZVBvc2l0aXZlSW50KHBheWxvYWQ/LnVzZXJzPy5sYXN0UGFnZSwgcGFnZSlcbiAgICBzZXRDdXJyZW50UGFnZShwYWdlKVxuICAgIHNldEhhc01vcmUocGFnZSA8IGxhc3RQYWdlKVxuICB9LCBbXSlcblxuICBjb25zdCBzeW5jQ2xpZW50c1BhZ2luYXRpb24gPSB1c2VDYWxsYmFjaygocGF5bG9hZD86IFNlYXJjaENsaWVudHNEYXRhIHwgbnVsbCkgPT4ge1xuICAgIGNvbnN0IHBhZ2UgPSBub3JtYWxpemVQb3NpdGl2ZUludChwYXlsb2FkPy5jbGllbnRzPy5wYWdlLCAxKVxuICAgIGNvbnN0IGxhc3RQYWdlID0gbm9ybWFsaXplUG9zaXRpdmVJbnQocGF5bG9hZD8uY2xpZW50cz8ubGFzdFBhZ2UsIHBhZ2UpXG4gICAgc2V0Q3VycmVudFBhZ2UocGFnZSlcbiAgICBzZXRIYXNNb3JlKHBhZ2UgPCBsYXN0UGFnZSlcbiAgfSwgW10pXG5cbiAgY29uc3Qgc3luY1Rhc2tGYWxsYmFja1BhZ2luYXRpb24gPSB1c2VDYWxsYmFjaygocGF5bG9hZD86IFRhc2tGYW1pbHlEYXRhIHwgbnVsbCkgPT4ge1xuICAgIGNvbnN0IHJhd1BhZ2UgPSBOdW1iZXIocGF5bG9hZD8udGFza0ZhbWlseT8ucGFnZSlcbiAgICAvLyB0YXNrRmFtaWx5IHVzYSBww6FnaW5hcyAwLWJhc2VkOyBjb252ZXJ0aW1vcyBhIDEtYmFzZWQgcGFyYSBjb25zaXN0ZW5jaWEgY29uIGVsIHJlc3RvXG4gICAgY29uc3QgcGFnZSA9IE51bWJlci5pc0Zpbml0ZShyYXdQYWdlKSAmJiByYXdQYWdlID49IDAgPyBNYXRoLmZsb29yKHJhd1BhZ2UpICsgMSA6IDFcbiAgICBjb25zdCBsYXN0UGFnZSA9IG5vcm1hbGl6ZVBvc2l0aXZlSW50KHBheWxvYWQ/LnRhc2tGYW1pbHk/Lmxhc3RQYWdlLCBwYWdlKVxuICAgIHNldEN1cnJlbnRQYWdlKHBhZ2UpXG4gICAgc2V0SGFzTW9yZShwYWdlIDwgbGFzdFBhZ2UpXG4gIH0sIFtdKVxuXG4gIGNvbnN0IHN5bmNQcm9qZWN0RmFsbGJhY2tQYWdpbmF0aW9uID0gdXNlQ2FsbGJhY2soKHBheWxvYWQ/OiBQcm9qZWN0c0ZhbGxiYWNrRGF0YSB8IG51bGwpID0+IHtcbiAgICBjb25zdCBwYWdlID0gbm9ybWFsaXplUG9zaXRpdmVJbnQocGF5bG9hZD8ucHJvamVjdHM/LnBhZ2UsIDEpXG4gICAgY29uc3QgbGFzdFBhZ2UgPSBub3JtYWxpemVQb3NpdGl2ZUludChwYXlsb2FkPy5wcm9qZWN0cz8ubGFzdFBhZ2UsIHBhZ2UpXG4gICAgc2V0Q3VycmVudFBhZ2UocGFnZSlcbiAgICBzZXRIYXNNb3JlKHBhZ2UgPCBsYXN0UGFnZSlcbiAgfSwgW10pXG5cbiAgY29uc3QgW2ZldGNoVGFza0ZhbWlseUZhbGxiYWNrXSA9IHVzZUxhenlRdWVyeTxUYXNrRmFtaWx5RGF0YT4oVEFTS19GQU1JTFlfRkFMTEJBQ0ssIHtcbiAgICBmZXRjaFBvbGljeTogJ25ldHdvcmstb25seScsXG4gIH0pXG5cbiAgY29uc3QgW2ZldGNoUHJvamVjdHNGYWxsYmFja10gPSB1c2VMYXp5UXVlcnk8UHJvamVjdHNGYWxsYmFja0RhdGE+KFBST0pFQ1RTX0ZBTExCQUNLLCB7XG4gICAgZmV0Y2hQb2xpY3k6ICduZXR3b3JrLW9ubHknLFxuICB9KVxuXG4gIGNvbnN0IGZldGNoUmVjZW50ID0gdXNlQ2FsbGJhY2soYXN5bmMgKCkgPT4ge1xuICAgIHJlY2VudHNGZXRjaEdlbmVyYXRpb25SZWYuY3VycmVudCArPSAxXG4gICAgY29uc3QgZ2VuZXJhdGlvbiA9IHJlY2VudHNGZXRjaEdlbmVyYXRpb25SZWYuY3VycmVudFxuXG4gICAgaWYgKHR5cGUgPT09ICdtY3AnKSB7XG4gICAgICBjb25zdCBzbHVncyA9IHN0YWJsZVNjb3BlLm1jcFNsdWdzID8/IFtdXG4gICAgICBzZXRMb2FkaW5nKGZhbHNlKVxuICAgICAgc2V0RXJyb3IoZmFsc2UpXG4gICAgICBzZXRJdGVtcyhtYXBNY3BTbHVnc1RvSXRlbXMoc2x1Z3MsICcnKSlcbiAgICAgIHNldEhpZGVSZWNlbnRzTGFiZWwoZmFsc2UpXG4gICAgICBzZXRBY3RpdmVQYWdpbmF0aW9uU291cmNlKCdub25lJylcbiAgICAgIHNldEhhc01vcmUoZmFsc2UpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAodHlwZSA9PT0gJ3NraWxsJykge1xuICAgICAgLy8gU2kgZWwgc2NvcGUgeWEgcHJvdmVlIHNraWxscyAoZGV2L21vY2spLCB1c2FybGFzIGRpcmVjdGFtZW50ZSBzaW4gZmV0Y2guXG4gICAgICBpZiAoc3RhYmxlU2NvcGUuc2tpbGxzKSB7XG4gICAgICAgIHNldENhY2hlZFNraWxscyhzdGFibGVTY29wZS5za2lsbHMpXG4gICAgICAgIHNldExvYWRpbmcoZmFsc2UpXG4gICAgICAgIHNldEVycm9yKGZhbHNlKVxuICAgICAgICBzZXRJdGVtcyhtYXBTa2lsbHNUb0l0ZW1zKHN0YWJsZVNjb3BlLnNraWxscywgJycpKVxuICAgICAgICBzZXRIaWRlUmVjZW50c0xhYmVsKGZhbHNlKVxuICAgICAgICBzZXRBY3RpdmVQYWdpbmF0aW9uU291cmNlKCdub25lJylcbiAgICAgICAgc2V0SGFzTW9yZShmYWxzZSlcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBzZXRMb2FkaW5nKHRydWUpXG4gICAgICBzZXRFcnJvcihmYWxzZSlcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGFsbFNraWxscyA9IGF3YWl0IGZldGNoQWxsU2tpbGxQYWdlcygwLCBbXSlcbiAgICAgICAgaWYgKGdlbmVyYXRpb24gIT09IHJlY2VudHNGZXRjaEdlbmVyYXRpb25SZWYuY3VycmVudCkgcmV0dXJuXG4gICAgICAgIHNldENhY2hlZFNraWxscyhhbGxTa2lsbHMpXG4gICAgICAgIHNldEl0ZW1zKG1hcFNraWxsc1RvSXRlbXMoYWxsU2tpbGxzLCAnJykpXG4gICAgICAgIHNldEhpZGVSZWNlbnRzTGFiZWwoZmFsc2UpXG4gICAgICAgIHNldEFjdGl2ZVBhZ2luYXRpb25Tb3VyY2UoJ25vbmUnKVxuICAgICAgICBzZXRIYXNNb3JlKGZhbHNlKVxuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIGlmIChnZW5lcmF0aW9uICE9PSByZWNlbnRzRmV0Y2hHZW5lcmF0aW9uUmVmLmN1cnJlbnQpIHJldHVyblxuICAgICAgICBzZXRFcnJvcih0cnVlKVxuICAgICAgICBzZXRJdGVtcyhbXSlcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIGlmIChnZW5lcmF0aW9uID09PSByZWNlbnRzRmV0Y2hHZW5lcmF0aW9uUmVmLmN1cnJlbnQpIHNldExvYWRpbmcoZmFsc2UpXG4gICAgICB9XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBzZXRMb2FkaW5nKHRydWUpXG4gICAgc2V0RXJyb3IoZmFsc2UpXG4gICAgdHJ5IHtcbiAgICAgIGlmICh0eXBlID09PSAnY2xpZW50Jykge1xuICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgZ2V0UmVjZW50Q2xpZW50cygpXG4gICAgICAgIGlmIChnZW5lcmF0aW9uICE9PSByZWNlbnRzRmV0Y2hHZW5lcmF0aW9uUmVmLmN1cnJlbnQpIHJldHVyblxuICAgICAgICBjb25zdCBtYXBwZWQgPSAoZGF0YSA/PyBbXSkubWFwKGMgPT4gbWFwQ2xpZW50VG9JdGVtKGMsICcnKSlcbiAgICAgICAgaWYgKGdlbmVyYXRpb24gIT09IHJlY2VudHNGZXRjaEdlbmVyYXRpb25SZWYuY3VycmVudCkgcmV0dXJuXG4gICAgICAgIHNldEl0ZW1zKG1hcHBlZClcbiAgICAgICAgc2V0SGlkZVJlY2VudHNMYWJlbChmYWxzZSlcbiAgICAgICAgc2V0QWN0aXZlUGFnaW5hdGlvblNvdXJjZSgnbm9uZScpXG4gICAgICAgIHNldEhhc01vcmUoZmFsc2UpXG4gICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdwcm9qZWN0Jykge1xuICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgZ2V0UmVjZW50UHJvamVjdHMoc3RhYmxlU2NvcGUuY2xpZW50SWQgPyB7IGNsaWVudElkOiBzdGFibGVTY29wZS5jbGllbnRJZCB9IDogdW5kZWZpbmVkKVxuICAgICAgICBpZiAoZ2VuZXJhdGlvbiAhPT0gcmVjZW50c0ZldGNoR2VuZXJhdGlvblJlZi5jdXJyZW50KSByZXR1cm5cbiAgICAgICAgbGV0IG1hcHBlZCA9IChBcnJheS5pc0FycmF5KGRhdGEpID8gZGF0YSA6IFtdKS5tYXAocCA9PlxuICAgICAgICAgIG1hcFNlYXJjaFRvSXRlbShcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgaWQ6IHAuaWQsXG4gICAgICAgICAgICAgIHRpdGxlOiBwLnRpdGxlLFxuICAgICAgICAgICAgICB0eXBlOiAncHJvamVjdCcsXG4gICAgICAgICAgICAgIGNsaWVudElkOiBwLmNsaWVudElkLFxuICAgICAgICAgICAgICBmZWVJZDogcC5mZWVJZCxcbiAgICAgICAgICAgICAgY2xpZW50TmFtZTogcC5jbGllbnROYW1lLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICdwcm9qZWN0JyxcbiAgICAgICAgICAgICcnXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICAgIGlmIChtYXBwZWQubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgY29uc3QgYXJndW1lbnRzRmlsdGVyID1cbiAgICAgICAgICAgIHN0YWJsZVNjb3BlLmNsaWVudElkICE9PSBudWxsICYmIHN0YWJsZVNjb3BlLmNsaWVudElkICE9PSB1bmRlZmluZWQgJiYgc3RhYmxlU2NvcGUuY2xpZW50SWQgIT09ICcnXG4gICAgICAgICAgICAgID8geyBjbGllbnRfaWQ6IFtTdHJpbmcoc3RhYmxlU2NvcGUuY2xpZW50SWQpXSB9XG4gICAgICAgICAgICAgIDogdW5kZWZpbmVkXG4gICAgICAgICAgY29uc3QgeyBkYXRhOiBmYWxsYmFja0RhdGEgfSA9IGF3YWl0IGZldGNoUHJvamVjdHNGYWxsYmFjayh7XG4gICAgICAgICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgICAgICAgLi4uKGFyZ3VtZW50c0ZpbHRlciA/IHsgYXJndW1lbnRzOiBhcmd1bWVudHNGaWx0ZXIgfSA6IHt9KSxcbiAgICAgICAgICAgICAgcGFnZTogMSxcbiAgICAgICAgICAgICAgcGVyUGFnZTogMjAsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0pXG4gICAgICAgICAgaWYgKGdlbmVyYXRpb24gIT09IHJlY2VudHNGZXRjaEdlbmVyYXRpb25SZWYuY3VycmVudCkgcmV0dXJuXG4gICAgICAgICAgY29uc3QgZmFsbGJhY2tNYXBwZWQgPSAoZmFsbGJhY2tEYXRhPy5wcm9qZWN0cz8uZGF0YSA/PyBbXSlcbiAgICAgICAgICAgIC5tYXAobm9ybWFsaXplUHJvamVjdHNGYWxsYmFja1JlY29yZClcbiAgICAgICAgICAgIC5maWx0ZXIoKGl0ZW0pOiBpdGVtIGlzIFJhd1NlYXJjaFJlc3VsdCA9PiBpdGVtICE9PSBudWxsKVxuICAgICAgICAgICAgLm1hcChpdGVtID0+IG1hcFNlYXJjaFRvSXRlbShpdGVtLCAncHJvamVjdCcsICcnKSlcbiAgICAgICAgICBtYXBwZWQgPSBmYWxsYmFja01hcHBlZFxuICAgICAgICAgIHNldEhpZGVSZWNlbnRzTGFiZWwoZmFsbGJhY2tNYXBwZWQubGVuZ3RoID4gMClcbiAgICAgICAgICBzZXRBY3RpdmVQYWdpbmF0aW9uU291cmNlKCdwcm9qZWN0LWZhbGxiYWNrJylcbiAgICAgICAgICBzeW5jUHJvamVjdEZhbGxiYWNrUGFnaW5hdGlvbihmYWxsYmFja0RhdGEpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc2V0SGlkZVJlY2VudHNMYWJlbChmYWxzZSlcbiAgICAgICAgICBzZXRBY3RpdmVQYWdpbmF0aW9uU291cmNlKCdub25lJylcbiAgICAgICAgICBzZXRIYXNNb3JlKGZhbHNlKVxuICAgICAgICB9XG4gICAgICAgIGlmIChnZW5lcmF0aW9uICE9PSByZWNlbnRzRmV0Y2hHZW5lcmF0aW9uUmVmLmN1cnJlbnQpIHJldHVyblxuICAgICAgICBzZXRJdGVtcyhtYXBwZWQpXG4gICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICd0YXNrJykge1xuICAgICAgICBsZXQgcmVjZW50VGFza0ZpbHRlcnM6IHsgcHJvamVjdElkPzogc3RyaW5nIHwgbnVtYmVyIHwgbnVsbDsgY2xpZW50SWQ/OiBzdHJpbmcgfCBudW1iZXIgfCBudWxsIH0gfCB1bmRlZmluZWRcbiAgICAgICAgaWYgKHN0YWJsZVNjb3BlLmFnZW50RW50aXR5ID09PSAncHJvamVjdCcpIHtcbiAgICAgICAgICByZWNlbnRUYXNrRmlsdGVycyA9IHsgcHJvamVjdElkOiBzdGFibGVTY29wZS5wcm9qZWN0SWQgfVxuICAgICAgICB9IGVsc2UgaWYgKHN0YWJsZVNjb3BlLmFnZW50RW50aXR5ID09PSAnY2xpZW50Jykge1xuICAgICAgICAgIHJlY2VudFRhc2tGaWx0ZXJzID0geyBjbGllbnRJZDogc3RhYmxlU2NvcGUuY2xpZW50SWQgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBnZXRSZWNlbnRUYXNrcyhyZWNlbnRUYXNrRmlsdGVycylcbiAgICAgICAgaWYgKGdlbmVyYXRpb24gIT09IHJlY2VudHNGZXRjaEdlbmVyYXRpb25SZWYuY3VycmVudCkgcmV0dXJuXG4gICAgICAgIGxldCB0YXNrSXRlbXMgPSAoZGF0YSA/PyBbXSkubWFwKHRhc2sgPT4gbWFwUmVjZW50VGFza1RvSXRlbSh0YXNrLCAnJywgc2hvd1Byb2plY3ROYW1lSW5UYXNrUm93KSlcbiAgICAgICAgaWYgKHRhc2tJdGVtcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICBjb25zdCBmaWx0ZXI6IFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPiA9IHt9XG4gICAgICAgICAgaWYgKHN0YWJsZVNjb3BlLnByb2plY3RJZCAhPT0gbnVsbCAmJiBzdGFibGVTY29wZS5wcm9qZWN0SWQgIT09IHVuZGVmaW5lZCAmJiBzdGFibGVTY29wZS5wcm9qZWN0SWQgIT09ICcnKSB7XG4gICAgICAgICAgICBmaWx0ZXIucHJvamVjdElkcyA9IFtTdHJpbmcoc3RhYmxlU2NvcGUucHJvamVjdElkKV1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHN0YWJsZVNjb3BlLmNsaWVudElkICE9PSBudWxsICYmIHN0YWJsZVNjb3BlLmNsaWVudElkICE9PSB1bmRlZmluZWQgJiYgc3RhYmxlU2NvcGUuY2xpZW50SWQgIT09ICcnKSB7XG4gICAgICAgICAgICBmaWx0ZXIuY2xpZW50SWRzID0gW1N0cmluZyhzdGFibGVTY29wZS5jbGllbnRJZCldXG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IHsgZGF0YTogZmFsbGJhY2tEYXRhIH0gPSBhd2FpdCBmZXRjaFRhc2tGYW1pbHlGYWxsYmFjayh7XG4gICAgICAgICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgICAgICAgZmlsdGVyOiB7IGFyY2hpdmVkOiBmYWxzZSwgLi4uZmlsdGVyIH0sXG4gICAgICAgICAgICAgIHBhZ2luYXRpb246IHsgb2Zmc2V0OiAwLCBzaXplOiAyMCB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KVxuICAgICAgICAgIGlmIChnZW5lcmF0aW9uICE9PSByZWNlbnRzRmV0Y2hHZW5lcmF0aW9uUmVmLmN1cnJlbnQpIHJldHVyblxuICAgICAgICAgIHRhc2tJdGVtcyA9IChmYWxsYmFja0RhdGE/LnRhc2tGYW1pbHk/LmRhdGEgPz8gW10pXG4gICAgICAgICAgICAubWFwKG5vcm1hbGl6ZVRhc2tGYW1pbHlSZWNvcmQpXG4gICAgICAgICAgICAuZmlsdGVyKChpdGVtKTogaXRlbSBpcyBSZWNlbnRUYXNrSXRlbSA9PiBpdGVtICE9PSBudWxsKVxuICAgICAgICAgICAgLm1hcCh0YXNrID0+IG1hcFJlY2VudFRhc2tUb0l0ZW0odGFzaywgJycsIHNob3dQcm9qZWN0TmFtZUluVGFza1JvdykpXG4gICAgICAgICAgc2V0SGlkZVJlY2VudHNMYWJlbCh0YXNrSXRlbXMubGVuZ3RoID4gMClcbiAgICAgICAgICBzZXRBY3RpdmVQYWdpbmF0aW9uU291cmNlKCd0YXNrLWZhbGxiYWNrJylcbiAgICAgICAgICBzeW5jVGFza0ZhbGxiYWNrUGFnaW5hdGlvbihmYWxsYmFja0RhdGEpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc2V0SGlkZVJlY2VudHNMYWJlbChmYWxzZSlcbiAgICAgICAgICBzZXRBY3RpdmVQYWdpbmF0aW9uU291cmNlKCdub25lJylcbiAgICAgICAgICBzZXRIYXNNb3JlKGZhbHNlKVxuICAgICAgICB9XG4gICAgICAgIGlmIChnZW5lcmF0aW9uICE9PSByZWNlbnRzRmV0Y2hHZW5lcmF0aW9uUmVmLmN1cnJlbnQpIHJldHVyblxuICAgICAgICBzZXRJdGVtcyh0YXNrSXRlbXMpXG4gICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICd1c2VyJykge1xuICAgICAgICBjb25zdCB7IGRhdGEgfSA9IGF3YWl0IGZldGNoVXNlcnNEaXJlY3Rvcnkoe1xuICAgICAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICAgICAgZmlsdGVyczogYnVpbGRVc2Vyc0RpcmVjdG9yeUZpbHRlcnMoJycpLFxuICAgICAgICAgICAgcGFnZTogMSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICBpZiAoZ2VuZXJhdGlvbiAhPT0gcmVjZW50c0ZldGNoR2VuZXJhdGlvblJlZi5jdXJyZW50KSByZXR1cm5cbiAgICAgICAgY29uc3QgbWFwcGVkID0gKGRhdGE/LnVzZXJzPy5kYXRhID8/IFtdKS5tYXAodSA9PiBtYXBVc2VyVG9JdGVtKHUsICcnKSlcbiAgICAgICAgaWYgKGdlbmVyYXRpb24gIT09IHJlY2VudHNGZXRjaEdlbmVyYXRpb25SZWYuY3VycmVudCkgcmV0dXJuXG4gICAgICAgIGNvbnN0IG1lSXRlbSA9IG1hcENvclVzZXJUb1VzZXJJdGVtKGNvclVzZXIsICcnLCB0KCdjb250ZXh0TWVudGlvbi5tZScpKVxuICAgICAgICBjb25zdCB3aXRob3V0TWUgPSBtYXBwZWQuZmlsdGVyKGl0ZW0gPT4gU3RyaW5nKGl0ZW0uaWQpICE9PSBTdHJpbmcobWVJdGVtLmlkKSlcbiAgICAgICAgc2V0SXRlbXMoW21lSXRlbSwgLi4ud2l0aG91dE1lXSlcbiAgICAgICAgc3luY1VzZXJzUGFnaW5hdGlvbihkYXRhKVxuICAgICAgICBzZXRIaWRlUmVjZW50c0xhYmVsKGZhbHNlKVxuICAgICAgICBzZXRBY3RpdmVQYWdpbmF0aW9uU291cmNlKCd1c2VycycpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoZ2VuZXJhdGlvbiAhPT0gcmVjZW50c0ZldGNoR2VuZXJhdGlvblJlZi5jdXJyZW50KSByZXR1cm5cbiAgICAgICAgc2V0SXRlbXMoW10pXG4gICAgICAgIHNldEhpZGVSZWNlbnRzTGFiZWwoZmFsc2UpXG4gICAgICAgIHNldEFjdGl2ZVBhZ2luYXRpb25Tb3VyY2UoJ25vbmUnKVxuICAgICAgICBzZXRIYXNNb3JlKGZhbHNlKVxuICAgICAgICBzZXRDdXJyZW50UGFnZSgxKVxuICAgICAgfVxuICAgIH0gY2F0Y2gge1xuICAgICAgaWYgKGdlbmVyYXRpb24gIT09IHJlY2VudHNGZXRjaEdlbmVyYXRpb25SZWYuY3VycmVudCkgcmV0dXJuXG4gICAgICBzZXRFcnJvcih0cnVlKVxuICAgICAgc2V0SXRlbXMoW10pXG4gICAgICBzZXRIaWRlUmVjZW50c0xhYmVsKGZhbHNlKVxuICAgIH0gZmluYWxseSB7XG4gICAgICBpZiAoZ2VuZXJhdGlvbiA9PT0gcmVjZW50c0ZldGNoR2VuZXJhdGlvblJlZi5jdXJyZW50KSB7XG4gICAgICAgIHNldExvYWRpbmcoZmFsc2UpXG4gICAgICB9XG4gICAgfVxuICB9LCBbXG4gICAgdHlwZSxcbiAgICBzdGFibGVTY29wZSxcbiAgICBmZXRjaFVzZXJzRGlyZWN0b3J5LFxuICAgIGZldGNoVGFza0ZhbWlseUZhbGxiYWNrLFxuICAgIGZldGNoUHJvamVjdHNGYWxsYmFjayxcbiAgICBzeW5jVXNlcnNQYWdpbmF0aW9uLFxuICAgIHN5bmNUYXNrRmFsbGJhY2tQYWdpbmF0aW9uLFxuICAgIHN5bmNQcm9qZWN0RmFsbGJhY2tQYWdpbmF0aW9uLFxuICAgIHNob3dQcm9qZWN0TmFtZUluVGFza1JvdyxcbiAgICBjb3JVc2VyLFxuICAgIHQsXG4gIF0pXG5cbiAgLy8gRGlzcGFyYXIgc2VhcmNoIGFsIGNhbWJpYXIgZGVib3VuY2VkIHZhbHVlXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgcSA9IGRlYm91bmNlZFNlYXJjaFZhbHVlLnRyaW0oKVxuXG4gICAgaWYgKHR5cGUgPT09ICdtY3AnKSB7XG4gICAgICBjb25zdCBzbHVncyA9IHN0YWJsZVNjb3BlLm1jcFNsdWdzID8/IFtdXG4gICAgICBzZXRMb2FkaW5nKGZhbHNlKVxuICAgICAgc2V0RXJyb3IoZmFsc2UpXG4gICAgICBzZXRJdGVtcyhtYXBNY3BTbHVnc1RvSXRlbXMoc2x1Z3MsIHEpKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKHR5cGUgPT09ICdza2lsbCcpIHtcbiAgICAgIHNldExvYWRpbmcoZmFsc2UpXG4gICAgICBzZXRFcnJvcihmYWxzZSlcbiAgICAgIHNldEl0ZW1zKG1hcFNraWxsc1RvSXRlbXMoY2FjaGVkU2tpbGxzLCBxKSlcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmICghcSkgcmV0dXJuXG5cbiAgICBpZiAodHlwZSA9PT0gJ2NsaWVudCcpIHtcbiAgICAgIGZldGNoU2VhcmNoQ2xpZW50cyh7XG4gICAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICAgIGZpbHRlcjogeyBuYW1lOiBxIH0sXG4gICAgICAgICAgcGFnZTogMSxcbiAgICAgICAgICBwZXJQYWdlOiAyMCxcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgICBzZXRBY3RpdmVQYWdpbmF0aW9uU291cmNlKCdjbGllbnRzLXNlYXJjaCcpXG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAndXNlcicpIHtcbiAgICAgIGZldGNoVXNlcnNEaXJlY3Rvcnkoe1xuICAgICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgICBmaWx0ZXJzOiBidWlsZFVzZXJzRGlyZWN0b3J5RmlsdGVycyhxKSxcbiAgICAgICAgICBwYWdlOiAxLFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICAgIHNldEFjdGl2ZVBhZ2luYXRpb25Tb3VyY2UoJ3VzZXJzJylcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgZmlsdGVycyA9IGJ1aWxkRmlsdGVyc0ZvclR5cGUodHlwZSlcbiAgICAgIGNvbnN0IGV4dHJhID0gYnVpbGRTZWFyY2hFbnRpdGllc0V4dHJhKHR5cGUsIHN0YWJsZVNjb3BlKVxuICAgICAgZmV0Y2hTZWFyY2hFbnRpdGllcyh7XG4gICAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICAgIHEsXG4gICAgICAgICAgZmlsdGVycyxcbiAgICAgICAgICAuLi4oZXh0cmEgIT09IHVuZGVmaW5lZCA/IHsgZXh0cmEgfSA6IHt9KSxcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgICBzZXRBY3RpdmVQYWdpbmF0aW9uU291cmNlKCdub25lJylcbiAgICAgIHNldEhhc01vcmUoZmFsc2UpXG4gICAgfVxuICB9LCBbXG4gICAgZGVib3VuY2VkU2VhcmNoVmFsdWUsXG4gICAgdHlwZSxcbiAgICBzdGFibGVTY29wZSxcbiAgICBmZXRjaFNlYXJjaEVudGl0aWVzLFxuICAgIGZldGNoU2VhcmNoQ2xpZW50cyxcbiAgICBmZXRjaFVzZXJzRGlyZWN0b3J5LFxuICAgIGNhY2hlZFNraWxscyxcbiAgXSlcblxuICAvLyBTaW5jcm9uaXphciByZXN1bHRhZG9zIGRlIHNlYXJjaFxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICh0eXBlID09PSAnbWNwJykgcmV0dXJuXG4gICAgaWYgKHR5cGUgPT09ICdza2lsbCcpIHJldHVyblxuXG4gICAgY29uc3QgcSA9IGRlYm91bmNlZFNlYXJjaFZhbHVlLnRyaW0oKVxuICAgIGlmICghcSkgcmV0dXJuXG4gICAgc2V0SGlkZVJlY2VudHNMYWJlbChmYWxzZSlcblxuICAgIGlmICh0eXBlID09PSAnY2xpZW50Jykge1xuICAgICAgc2V0TG9hZGluZyhjbGllbnRzTG9hZGluZylcbiAgICAgIGlmIChjbGllbnRzRXJyb3IpIHtcbiAgICAgICAgc2V0RXJyb3IodHJ1ZSlcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBpZiAoY2xpZW50c0RhdGE/LmNsaWVudHM/LmRhdGEpIHtcbiAgICAgICAgc2V0SXRlbXMoY2xpZW50c0RhdGEuY2xpZW50cy5kYXRhLm1hcChjID0+IG1hcENsaWVudFRvSXRlbShjLCBxKSkpXG4gICAgICAgIHN5bmNDbGllbnRzUGFnaW5hdGlvbihjbGllbnRzRGF0YSlcbiAgICAgICAgc2V0RXJyb3IoZmFsc2UpXG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAndXNlcicpIHtcbiAgICAgIHNldExvYWRpbmcodXNlcnNMb2FkaW5nKVxuICAgICAgaWYgKHVzZXJzRXJyb3IpIHtcbiAgICAgICAgc2V0RXJyb3IodHJ1ZSlcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBpZiAodXNlcnNEYXRhPy51c2Vycz8uZGF0YSkge1xuICAgICAgICBjb25zdCBtYXBwZWQgPSB1c2Vyc0RhdGEudXNlcnMuZGF0YS5tYXAodSA9PiBtYXBVc2VyVG9JdGVtKHUsIHEpKVxuICAgICAgICBjb25zdCBtZUlkID0gU3RyaW5nKGNvclVzZXIuaWQpXG4gICAgICAgIGNvbnN0IGhhc01lSW5SZXN1bHRzID0gbWFwcGVkLnNvbWUoaXRlbSA9PiBTdHJpbmcoaXRlbS5pZCkgPT09IG1lSWQpXG4gICAgICAgIGNvbnN0IHdpdGhvdXRNZSA9IG1hcHBlZC5maWx0ZXIoaXRlbSA9PiBTdHJpbmcoaXRlbS5pZCkgIT09IG1lSWQpXG4gICAgICAgIGNvbnN0IG1lSXRlbSA9IG1hcENvclVzZXJUb1VzZXJJdGVtKGNvclVzZXIsIHEsIHQoJ2NvbnRleHRNZW50aW9uLm1lJykpXG4gICAgICAgIHNldEl0ZW1zKGhhc01lSW5SZXN1bHRzID8gW21lSXRlbSwgLi4ud2l0aG91dE1lXSA6IG1hcHBlZClcbiAgICAgICAgc3luY1VzZXJzUGFnaW5hdGlvbih1c2Vyc0RhdGEpXG4gICAgICAgIHNldEVycm9yKGZhbHNlKVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBzZXRMb2FkaW5nKHNlYXJjaExvYWRpbmcpXG4gICAgICBpZiAoc2VhcmNoRXJyb3IpIHtcbiAgICAgICAgc2V0RXJyb3IodHJ1ZSlcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBpZiAoc2VhcmNoRGF0YT8uc2VhcmNoKSB7XG4gICAgICAgIHNldEl0ZW1zKHNlYXJjaERhdGEuc2VhcmNoLm1hcChyID0+IG1hcFNlYXJjaFRvSXRlbShyLCB0eXBlLCBxLCBzaG93UHJvamVjdE5hbWVJblRhc2tSb3cpKSlcbiAgICAgICAgc2V0SGFzTW9yZShmYWxzZSlcbiAgICAgICAgc2V0RXJyb3IoZmFsc2UpXG4gICAgICB9XG4gICAgfVxuICB9LCBbXG4gICAgc2VhcmNoRGF0YSxcbiAgICBjbGllbnRzRGF0YSxcbiAgICB1c2Vyc0RhdGEsXG4gICAgc2VhcmNoTG9hZGluZyxcbiAgICBjbGllbnRzTG9hZGluZyxcbiAgICB1c2Vyc0xvYWRpbmcsXG4gICAgc2VhcmNoRXJyb3IsXG4gICAgY2xpZW50c0Vycm9yLFxuICAgIHVzZXJzRXJyb3IsXG4gICAgZGVib3VuY2VkU2VhcmNoVmFsdWUsXG4gICAgdHlwZSxcbiAgICBzeW5jQ2xpZW50c1BhZ2luYXRpb24sXG4gICAgc3luY1VzZXJzUGFnaW5hdGlvbixcbiAgICBzaG93UHJvamVjdE5hbWVJblRhc2tSb3csXG4gICAgY29yVXNlcixcbiAgICB0LFxuICBdKVxuXG4gIGNvbnN0IGxvYWRNb3JlID0gdXNlQ2FsbGJhY2soYXN5bmMgKCkgPT4ge1xuICAgIGlmIChpc0xvYWRpbmdNb3JlIHx8ICFoYXNNb3JlIHx8IGFjdGl2ZVBhZ2luYXRpb25Tb3VyY2UgPT09ICdub25lJykge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGNvbnN0IHNhZmVDdXJyZW50UGFnZSA9IG5vcm1hbGl6ZVBvc2l0aXZlSW50KGN1cnJlbnRQYWdlLCAxKVxuICAgIGNvbnN0IG5leHRQYWdlID0gc2FmZUN1cnJlbnRQYWdlICsgMVxuICAgIGNvbnN0IHEgPSBkZWJvdW5jZWRTZWFyY2hWYWx1ZS50cmltKClcbiAgICBjb25zdCBsb2FkTW9yZUJhc2VsaW5lR2VuID0gcmVjZW50c0ZldGNoR2VuZXJhdGlvblJlZi5jdXJyZW50XG4gICAgc2V0SXNMb2FkaW5nTW9yZSh0cnVlKVxuICAgIHRyeSB7XG4gICAgICBpZiAoYWN0aXZlUGFnaW5hdGlvblNvdXJjZSA9PT0gJ3VzZXJzJykge1xuICAgICAgICBjb25zdCB7IGRhdGEgfSA9IGF3YWl0IGZldGNoVXNlcnNEaXJlY3Rvcnkoe1xuICAgICAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICAgICAgZmlsdGVyczogYnVpbGRVc2Vyc0RpcmVjdG9yeUZpbHRlcnMocSksXG4gICAgICAgICAgICBwYWdlOiBuZXh0UGFnZSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICBpZiAobG9hZE1vcmVCYXNlbGluZUdlbiAhPT0gcmVjZW50c0ZldGNoR2VuZXJhdGlvblJlZi5jdXJyZW50KSByZXR1cm5cbiAgICAgICAgY29uc3QgbmV4dEl0ZW1zID0gKGRhdGE/LnVzZXJzPy5kYXRhID8/IFtdKS5tYXAodSA9PiBtYXBVc2VyVG9JdGVtKHUsIHEpKVxuICAgICAgICBzZXRJdGVtcyhwcmV2ID0+IHtcbiAgICAgICAgICBpZiAoIXEpIHtcbiAgICAgICAgICAgIGNvbnN0IG1lSXRlbSA9XG4gICAgICAgICAgICAgIHByZXZbMF0/LnR5cGUgPT09ICd1c2VyJyA/IHByZXZbMF0gOiBtYXBDb3JVc2VyVG9Vc2VySXRlbShjb3JVc2VyLCAnJywgdCgnY29udGV4dE1lbnRpb24ubWUnKSlcbiAgICAgICAgICAgIGNvbnN0IGV4aXN0aW5nSWRzID0gbmV3IFNldChwcmV2Lm1hcChpdGVtID0+IFN0cmluZyhpdGVtLmlkKSkpXG4gICAgICAgICAgICBjb25zdCBhcHBlbmRlZCA9IG5leHRJdGVtcy5maWx0ZXIoaXRlbSA9PiAhZXhpc3RpbmdJZHMuaGFzKFN0cmluZyhpdGVtLmlkKSkpXG4gICAgICAgICAgICBjb25zdCB3aXRob3V0TWUgPSBwcmV2LmZpbHRlcihpdGVtID0+IFN0cmluZyhpdGVtLmlkKSAhPT0gU3RyaW5nKG1lSXRlbS5pZCkpXG4gICAgICAgICAgICByZXR1cm4gW21lSXRlbSwgLi4ud2l0aG91dE1lLCAuLi5hcHBlbmRlZF1cbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgZXhpc3RpbmdJZHMgPSBuZXcgU2V0KHByZXYubWFwKGl0ZW0gPT4gYCR7aXRlbS50eXBlfS0ke2l0ZW0uaWR9YCkpXG4gICAgICAgICAgY29uc3QgYXBwZW5kZWQgPSBuZXh0SXRlbXMuZmlsdGVyKGl0ZW0gPT4gIWV4aXN0aW5nSWRzLmhhcyhgJHtpdGVtLnR5cGV9LSR7aXRlbS5pZH1gKSlcbiAgICAgICAgICByZXR1cm4gWy4uLnByZXYsIC4uLmFwcGVuZGVkXVxuICAgICAgICB9KVxuICAgICAgICBzeW5jVXNlcnNQYWdpbmF0aW9uKGRhdGEpXG4gICAgICB9IGVsc2UgaWYgKGFjdGl2ZVBhZ2luYXRpb25Tb3VyY2UgPT09ICdjbGllbnRzLXNlYXJjaCcpIHtcbiAgICAgICAgY29uc3QgeyBkYXRhIH0gPSBhd2FpdCBmZXRjaFNlYXJjaENsaWVudHMoe1xuICAgICAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICAgICAgZmlsdGVyOiB7IG5hbWU6IHEgfSxcbiAgICAgICAgICAgIHBhZ2U6IG5leHRQYWdlLFxuICAgICAgICAgICAgcGVyUGFnZTogMjAsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgaWYgKGxvYWRNb3JlQmFzZWxpbmVHZW4gIT09IHJlY2VudHNGZXRjaEdlbmVyYXRpb25SZWYuY3VycmVudCkgcmV0dXJuXG4gICAgICAgIGNvbnN0IG5leHRJdGVtcyA9IChkYXRhPy5jbGllbnRzPy5kYXRhID8/IFtdKS5tYXAoYyA9PiBtYXBDbGllbnRUb0l0ZW0oYywgcSkpXG4gICAgICAgIHNldEl0ZW1zKHByZXYgPT4ge1xuICAgICAgICAgIGNvbnN0IGV4aXN0aW5nSWRzID0gbmV3IFNldChwcmV2Lm1hcChpdGVtID0+IGAke2l0ZW0udHlwZX0tJHtpdGVtLmlkfWApKVxuICAgICAgICAgIGNvbnN0IGFwcGVuZGVkID0gbmV4dEl0ZW1zLmZpbHRlcihpdGVtID0+ICFleGlzdGluZ0lkcy5oYXMoYCR7aXRlbS50eXBlfS0ke2l0ZW0uaWR9YCkpXG4gICAgICAgICAgcmV0dXJuIFsuLi5wcmV2LCAuLi5hcHBlbmRlZF1cbiAgICAgICAgfSlcbiAgICAgICAgc3luY0NsaWVudHNQYWdpbmF0aW9uKGRhdGEpXG4gICAgICB9IGVsc2UgaWYgKGFjdGl2ZVBhZ2luYXRpb25Tb3VyY2UgPT09ICd0YXNrLWZhbGxiYWNrJykge1xuICAgICAgICBjb25zdCBmaWx0ZXI6IFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPiA9IHt9XG4gICAgICAgIGlmIChzdGFibGVTY29wZS5wcm9qZWN0SWQgIT09IG51bGwgJiYgc3RhYmxlU2NvcGUucHJvamVjdElkICE9PSB1bmRlZmluZWQgJiYgc3RhYmxlU2NvcGUucHJvamVjdElkICE9PSAnJykge1xuICAgICAgICAgIGZpbHRlci5wcm9qZWN0SWRzID0gW1N0cmluZyhzdGFibGVTY29wZS5wcm9qZWN0SWQpXVxuICAgICAgICB9XG4gICAgICAgIGlmIChzdGFibGVTY29wZS5jbGllbnRJZCAhPT0gbnVsbCAmJiBzdGFibGVTY29wZS5jbGllbnRJZCAhPT0gdW5kZWZpbmVkICYmIHN0YWJsZVNjb3BlLmNsaWVudElkICE9PSAnJykge1xuICAgICAgICAgIGZpbHRlci5jbGllbnRJZHMgPSBbU3RyaW5nKHN0YWJsZVNjb3BlLmNsaWVudElkKV1cbiAgICAgICAgfVxuICAgICAgICBjb25zdCB7IGRhdGEgfSA9IGF3YWl0IGZldGNoVGFza0ZhbWlseUZhbGxiYWNrKHtcbiAgICAgICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgICAgIGZpbHRlcjogeyBhcmNoaXZlZDogZmFsc2UsIC4uLmZpbHRlciB9LFxuICAgICAgICAgICAgcGFnaW5hdGlvbjogeyBvZmZzZXQ6IChuZXh0UGFnZSAtIDEpICogMjAsIHNpemU6IDIwIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgaWYgKGxvYWRNb3JlQmFzZWxpbmVHZW4gIT09IHJlY2VudHNGZXRjaEdlbmVyYXRpb25SZWYuY3VycmVudCkgcmV0dXJuXG4gICAgICAgIGNvbnN0IG5leHRJdGVtcyA9IChkYXRhPy50YXNrRmFtaWx5Py5kYXRhID8/IFtdKVxuICAgICAgICAgIC5tYXAobm9ybWFsaXplVGFza0ZhbWlseVJlY29yZClcbiAgICAgICAgICAuZmlsdGVyKChpdGVtKTogaXRlbSBpcyBSZWNlbnRUYXNrSXRlbSA9PiBpdGVtICE9PSBudWxsKVxuICAgICAgICAgIC5tYXAodGFzayA9PiBtYXBSZWNlbnRUYXNrVG9JdGVtKHRhc2ssICcnLCBzaG93UHJvamVjdE5hbWVJblRhc2tSb3cpKVxuICAgICAgICBzZXRJdGVtcyhwcmV2ID0+IHtcbiAgICAgICAgICBjb25zdCBleGlzdGluZ0lkcyA9IG5ldyBTZXQocHJldi5tYXAoaXRlbSA9PiBgJHtpdGVtLnR5cGV9LSR7aXRlbS5pZH1gKSlcbiAgICAgICAgICBjb25zdCBhcHBlbmRlZCA9IG5leHRJdGVtcy5maWx0ZXIoaXRlbSA9PiAhZXhpc3RpbmdJZHMuaGFzKGAke2l0ZW0udHlwZX0tJHtpdGVtLmlkfWApKVxuICAgICAgICAgIHJldHVybiBbLi4ucHJldiwgLi4uYXBwZW5kZWRdXG4gICAgICAgIH0pXG4gICAgICAgIHN5bmNUYXNrRmFsbGJhY2tQYWdpbmF0aW9uKGRhdGEpXG4gICAgICB9IGVsc2UgaWYgKGFjdGl2ZVBhZ2luYXRpb25Tb3VyY2UgPT09ICdwcm9qZWN0LWZhbGxiYWNrJykge1xuICAgICAgICBjb25zdCBhcmd1bWVudHNGaWx0ZXIgPVxuICAgICAgICAgIHN0YWJsZVNjb3BlLmNsaWVudElkICE9PSBudWxsICYmIHN0YWJsZVNjb3BlLmNsaWVudElkICE9PSB1bmRlZmluZWQgJiYgc3RhYmxlU2NvcGUuY2xpZW50SWQgIT09ICcnXG4gICAgICAgICAgICA/IHsgY2xpZW50X2lkOiBbU3RyaW5nKHN0YWJsZVNjb3BlLmNsaWVudElkKV0gfVxuICAgICAgICAgICAgOiB1bmRlZmluZWRcbiAgICAgICAgY29uc3QgeyBkYXRhIH0gPSBhd2FpdCBmZXRjaFByb2plY3RzRmFsbGJhY2soe1xuICAgICAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICAgICAgLi4uKGFyZ3VtZW50c0ZpbHRlciA/IHsgYXJndW1lbnRzOiBhcmd1bWVudHNGaWx0ZXIgfSA6IHt9KSxcbiAgICAgICAgICAgIHBhZ2U6IG5leHRQYWdlLFxuICAgICAgICAgICAgcGVyUGFnZTogMjAsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgaWYgKGxvYWRNb3JlQmFzZWxpbmVHZW4gIT09IHJlY2VudHNGZXRjaEdlbmVyYXRpb25SZWYuY3VycmVudCkgcmV0dXJuXG4gICAgICAgIGNvbnN0IG5leHRJdGVtcyA9IChkYXRhPy5wcm9qZWN0cz8uZGF0YSA/PyBbXSlcbiAgICAgICAgICAubWFwKG5vcm1hbGl6ZVByb2plY3RzRmFsbGJhY2tSZWNvcmQpXG4gICAgICAgICAgLmZpbHRlcigoaXRlbSk6IGl0ZW0gaXMgUmF3U2VhcmNoUmVzdWx0ID0+IGl0ZW0gIT09IG51bGwpXG4gICAgICAgICAgLm1hcChpdGVtID0+IG1hcFNlYXJjaFRvSXRlbShpdGVtLCAncHJvamVjdCcsICcnKSlcbiAgICAgICAgc2V0SXRlbXMocHJldiA9PiB7XG4gICAgICAgICAgY29uc3QgZXhpc3RpbmdJZHMgPSBuZXcgU2V0KHByZXYubWFwKGl0ZW0gPT4gYCR7aXRlbS50eXBlfS0ke2l0ZW0uaWR9YCkpXG4gICAgICAgICAgY29uc3QgYXBwZW5kZWQgPSBuZXh0SXRlbXMuZmlsdGVyKGl0ZW0gPT4gIWV4aXN0aW5nSWRzLmhhcyhgJHtpdGVtLnR5cGV9LSR7aXRlbS5pZH1gKSlcbiAgICAgICAgICByZXR1cm4gWy4uLnByZXYsIC4uLmFwcGVuZGVkXVxuICAgICAgICB9KVxuICAgICAgICBzeW5jUHJvamVjdEZhbGxiYWNrUGFnaW5hdGlvbihkYXRhKVxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgaWYgKGxvYWRNb3JlQmFzZWxpbmVHZW4gIT09IHJlY2VudHNGZXRjaEdlbmVyYXRpb25SZWYuY3VycmVudCkgcmV0dXJuXG4gICAgICBjb25zb2xlLmVycm9yKCdbdXNlRW50aXR5U2VhcmNoXSBsb2FkTW9yZSBmYWlsZWQnLCB7XG4gICAgICAgIHNvdXJjZTogYWN0aXZlUGFnaW5hdGlvblNvdXJjZSxcbiAgICAgICAgbmV4dFBhZ2UsXG4gICAgICAgIGVycm9yOiBlcnIsXG4gICAgICB9KVxuICAgICAgLy8gRXZpdGEgbG9vcCBkZSByZWludGVudG9zIGF1dG9tw6F0aWNvcyBwb3Igc2Nyb2xsIGN1YW5kbyBiYWNrZW5kIGVzdMOhIGNhw61kbyAoZWouIDUwMykuXG4gICAgICBzZXRFcnJvcih0cnVlKVxuICAgICAgc2V0SGFzTW9yZShmYWxzZSlcbiAgICB9IGZpbmFsbHkge1xuICAgICAgc2V0SXNMb2FkaW5nTW9yZShmYWxzZSlcbiAgICB9XG4gIH0sIFtcbiAgICBpc0xvYWRpbmdNb3JlLFxuICAgIGhhc01vcmUsXG4gICAgY3VycmVudFBhZ2UsXG4gICAgYWN0aXZlUGFnaW5hdGlvblNvdXJjZSxcbiAgICBkZWJvdW5jZWRTZWFyY2hWYWx1ZSxcbiAgICBmZXRjaFVzZXJzRGlyZWN0b3J5LFxuICAgIGZldGNoU2VhcmNoQ2xpZW50cyxcbiAgICBmZXRjaFRhc2tGYW1pbHlGYWxsYmFjayxcbiAgICBmZXRjaFByb2plY3RzRmFsbGJhY2ssXG4gICAgc3RhYmxlU2NvcGUucHJvamVjdElkLFxuICAgIHN0YWJsZVNjb3BlLmNsaWVudElkLFxuICAgIHNob3dQcm9qZWN0TmFtZUluVGFza1JvdyxcbiAgICBjb3JVc2VyLFxuICAgIHQsXG4gICAgc3luY0NsaWVudHNQYWdpbmF0aW9uLFxuICAgIHN5bmNVc2Vyc1BhZ2luYXRpb24sXG4gICAgc3luY1Rhc2tGYWxsYmFja1BhZ2luYXRpb24sXG4gICAgc3luY1Byb2plY3RGYWxsYmFja1BhZ2luYXRpb24sXG4gIF0pXG5cbiAgLy8gTWFudGVuZW1vcyB1bmEgcmVmIGEgbGEgw7psdGltYSBmZXRjaFJlY2VudCBwYXJhIHF1ZSBlbCBlZmZlY3QgZGUgcmVjZW50cyBubyBzZVxuICAvLyByZS1kaXNwYXJlIHNvbG8gcG9ycXVlIGNhbWJpw7MgbGEgaWRlbnRpZGFkIGRlIGZldGNoUmVjZW50IChzY29wZS9jb3JVc2VyL3QpLlxuICBjb25zdCBmZXRjaFJlY2VudFJlZiA9IHVzZVJlZihmZXRjaFJlY2VudClcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBmZXRjaFJlY2VudFJlZi5jdXJyZW50ID0gZmV0Y2hSZWNlbnRcbiAgfSwgW2ZldGNoUmVjZW50XSlcblxuICAvLyBUcmlnZ2VyIGRlIHJlY2VudHM6IGxvcyByZWNlbnRzIGRlIHVzZXIgTk8gZGVwZW5kZW4gZGVsIHNjb3BlLCBhc8OtIHF1ZSBjYW1iaWFyXG4gIC8vIGRlIHByb3llY3RvL2NsaWVudGUgbm8gZGViZSByZS1mZXRjaGVhcmxvcy4gTG9zIHRpcG9zIHNjb3BlYWRvcyAocHJvamVjdC90YXNrKSBzw60uXG4gIGNvbnN0IHJlY2VudHNUcmlnZ2VyID1cbiAgICB0eXBlID09PSAndXNlcicgfHwgdHlwZSA9PT0gJ3NraWxsJ1xuICAgICAgPyB0eXBlXG4gICAgICA6IGAke3R5cGV9fCR7c3RhYmxlU2NvcGUucHJvamVjdElkID8/ICcnfXwke3N0YWJsZVNjb3BlLmNsaWVudElkID8/ICcnfXwke3N0YWJsZVNjb3BlLmFnZW50RW50aXR5ID8/ICcnfXwke21jcFNsdWdzS2V5fWBcblxuICAvLyBDdWFuZG8gc2UgbGltcGlhIGVsIHNlYXJjaCwgdm9sdmVyIGEgcmVjZW50c1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghZGVib3VuY2VkU2VhcmNoVmFsdWUudHJpbSgpKSB7XG4gICAgICBmZXRjaFJlY2VudFJlZi5jdXJyZW50KClcbiAgICB9XG4gIH0sIFtkZWJvdW5jZWRTZWFyY2hWYWx1ZSwgcmVjZW50c1RyaWdnZXJdKVxuXG4gIHJldHVybiB7XG4gICAgaXRlbXMsXG4gICAgbG9hZGluZyxcbiAgICBlcnJvcixcbiAgICBoaWRlUmVjZW50c0xhYmVsLFxuICAgIGhhc01vcmUsXG4gICAgaXNMb2FkaW5nTW9yZSxcbiAgICBsb2FkTW9yZSxcbiAgICBzZWFyY2hWYWx1ZSxcbiAgICB1cGRhdGVTZWFyY2hWYWx1ZTogc2V0U2VhcmNoVmFsdWUsXG4gICAgZmV0Y2hSZWNlbnQsXG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSxTQUFTQSxZQUFZLFFBQVEsZ0JBQWdCO0FBQzdDLFNBQVNDLFdBQVcsRUFBRUMsU0FBUyxFQUFFQyxPQUFPLEVBQUVDLE1BQU0sRUFBRUMsUUFBUSxRQUFRLE9BQU87QUFDekUsU0FBU0MsZ0JBQWdCLFFBQVEsaURBQWlEO0FBQ2xGLFNBQVNDLGlCQUFpQixRQUFRLG1EQUFtRDtBQUNyRixTQUFTQyxjQUFjLFFBQVEsNkNBQTZDO0FBRTVFLFNBQVNDLE9BQU8sUUFBUSxxQkFBcUI7QUFDN0MsU0FBU0MsaUJBQWlCLEVBQUVDLGVBQWUsRUFBRUMsb0JBQW9CLFFBQVEscUNBQXFDO0FBQzlHLFNBQVNDLGNBQWMsUUFBUSxxQ0FBcUM7QUFDcEUsU0FBU0MsZUFBZSxRQUFRLHVDQUF1QztBQUN2RSxTQUFTQyx3QkFBd0IsUUFBUSxxQkFBcUI7QUFDOUQsU0FBU0MsV0FBVyxRQUFRLGVBQWU7QUFDM0MsU0FBU0MsSUFBSSxRQUFRLFFBQVE7QUFJN0IsU0FBU0MsU0FBUyxRQUFRLHlCQUF5QjtBQXNGbkQsSUFBTUMsb0JBQW9CLEdBQUcsU0FBdkJBLG9CQUFvQkEsQ0FBSUMsS0FBYyxFQUFFQyxRQUFnQixFQUFhO0VBQ3pFLElBQU1DLE1BQU0sR0FBR0MsTUFBTSxDQUFDSCxLQUFLLENBQUM7RUFDNUIsSUFBSSxDQUFDRyxNQUFNLENBQUNDLFFBQVEsQ0FBQ0YsTUFBTSxDQUFDLEVBQUUsT0FBT0QsUUFBUTtFQUM3QyxJQUFNSSxVQUFV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
|
|
1271
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VMYXp5UXVlcnkiLCJ1c2VDYWxsYmFjayIsInVzZUVmZmVjdCIsInVzZU1lbW8iLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsImdldFJlY2VudENsaWVudHMiLCJnZXRSZWNlbnRQcm9qZWN0cyIsImdldFJlY2VudFRhc2tzIiwidXNlVXNlciIsIlBST0pFQ1RTX0ZBTExCQUNLIiwiU0VBUkNIX0VOVElUSUVTIiwiVEFTS19GQU1JTFlfRkFMTEJBQ0siLCJTRUFSQ0hfQ0xJRU5UUyIsIlVTRVJTX0RJUkVDVE9SWSIsIlNFQVJDSF9RVUVSWV9ERUJPVU5DRV9NUyIsInVzZURlYm91bmNlIiwidXNlVCIsImZldGNoTWFpYSIsIm5vcm1hbGl6ZVBvc2l0aXZlSW50IiwidmFsdWUiLCJmYWxsYmFjayIsInBhcnNlZCIsIk51bWJlciIsImlzRmluaXRlIiwibm9ybWFsaXplZCIsIk1hdGgiLCJmbG9vciIsIkJBU0VfRklMVEVSU19CWV9UWVBFIiwicHJvamVjdCIsImFyY2hpdmVkIiwidGFzayIsImJ1aWxkVGFza1NlYXJjaEV4dHJhRW50cmllcyIsInNjb3BlIiwicmF3Q2xpZW50IiwiY2xpZW50SWQiLCJ1bmRlZmluZWQiLCJTdHJpbmciLCJyYXdQcm9qZWN0IiwicHJvamVjdElkIiwiYWdlbnRFbnRpdHkiLCJlbnRyaWVzIiwicHVzaENsaWVudCIsInB1c2giLCJwdXNoUHJvamVjdCIsImJ1aWxkVGFza1NlYXJjaEV4dHJhIiwibGVuZ3RoIiwiSlNPTiIsInN0cmluZ2lmeSIsImJ1aWxkUHJvamVjdFNlYXJjaEV4dHJhIiwiYnVpbGRTZWFyY2hFbnRpdGllc0V4dHJhIiwidHlwZSIsImJ1aWxkRmlsdGVyc0ZvclR5cGUiLCJidWlsZFVzZXJzRGlyZWN0b3J5RmlsdGVycyIsInEiLCJiYXNlIiwid2l0aFBvc2l0aW9uIiwid2l0aFRlYW1zIiwidHJpbW1lZFEiLCJ0cmltIiwic2VhcmNoSW5wdXQiLCJoaWdobGlnaHRSYW5nZSIsInRleHQiLCJzZWFyY2hWYWx1ZSIsImlkeCIsInRvTG93ZXJDYXNlIiwiaW5kZXhPZiIsInN0YXJ0IiwiZmlyc3REZWZpbmVkIiwiX2xlbiIsImFyZ3VtZW50cyIsInZhbHVlcyIsIkFycmF5IiwiX2tleSIsImZpbmQiLCJub3JtYWxpemVUcmltbWVkU3RyaW5nIiwiZ2V0VXNlclBvc2l0aW9uTmFtZSIsInVzZXJQb3NpdGlvbiIsIl90eXBlb2YiLCJuYW1lIiwibWFwQ2xpZW50VG9JdGVtIiwiYyIsIl9jJHRvdGFsUHJveWVjdG9zIiwiX2MkdG90YWxQcm95ZWN0b3MyIiwiaWQiLCJwcmltYXJ5IiwicHJpbWFyeUhpZ2hsaWdodCIsImJyZWFkY3J1bWIiLCJjb3VudCIsInRvdGFsUHJveWVjdG9zIiwiY291bnRMYWJlbCIsInJhdyIsIm1hcFVzZXJUb0l0ZW0iLCJ1IiwiX3UkZmlyc3ROYW1lIiwiX3UkbGFzdE5hbWUiLCJfdSRwaWN0dXJlIiwiX3UkdXNlclBvc2l0aW9uJG5hbWUiLCJfdSR1c2VyUG9zaXRpb24iLCJfdSRlbWFpbCIsImZ1bGxOYW1lIiwiY29uY2F0IiwiZmlyc3ROYW1lIiwibGFzdE5hbWUiLCJlbWFpbCIsInBpY3R1cmUiLCJwb3NpdGlvbk5hbWUiLCJtYXBDb3JVc2VyVG9Vc2VySXRlbSIsInVzZXIiLCJtZUxhYmVsIiwiX3VzZXIkZmlyc3ROYW1lIiwiX3VzZXIkbGFzdE5hbWUiLCJwb3NpdGlvbkxpbmUiLCJ1c2VyX3Bvc2l0aW9uIiwibWFwUmVjZW50VGFza1RvSXRlbSIsIl90YXNrJHByb2plY3ROYW1lIiwic2hvd1Byb2plY3ROYW1lSW5UYXNrUm93IiwidGl0bGUiLCJwcm9qZWN0TmFtZSIsInBhcmVudCIsIm5vcm1hbGl6ZVRhc2tGYW1pbHlSZWNvcmQiLCJyZWNvcmQiLCJfcmVjb3JkJHRpdGxlIiwiX2ZpcnN0RGVmaW5lZCIsIl9yZWNvcmQkcHJvamVjdCIsIl9yZWNvcmQkZmF0aGVyIiwiX3JlY29yZCRmYXRoZXIyIiwidGFza0ZhbWlseUlkIiwiX2lkIiwiZmF0aGVyIiwiaGFzRmF0aGVyIiwidGFza0ZhdGhlciIsIm5vcm1hbGl6ZVByb2plY3RzRmFsbGJhY2tSZWNvcmQiLCJfcmVjb3JkJG5hbWUiLCJfZmlyc3REZWZpbmVkMiIsIl9yZWNvcmQkY2xpZW50IiwiX3JlY29yZCRjbGllbnQkbmFtZSIsIl9yZWNvcmQkY2xpZW50MiIsImNsaWVudCIsImNsaWVudE5hbWUiLCJtYXBTZWFyY2hUb0l0ZW0iLCJyIiwiX3IkcHJvamVjdE5hbWUiLCJfciRwcm9qZWN0TmFtZTIiLCJfciRjbGllbnRJZCIsIl9yJGNsaWVudE5hbWUiLCJfciRmZWVJZCIsIl9mYXRoZXIkdGl0bGUiLCJ0YXNrUHJvamVjdE5hbWUiLCJmZWVJZCIsImZhdGhlcklkIiwiZmF0aGVyVGl0bGUiLCJmb3JtYXRNY3BQcmltYXJ5TGFiZWwiLCJzbHVnIiwicmVwbGFjZSIsImNoYXIiLCJ0b1VwcGVyQ2FzZSIsIm1hcFNraWxsc1RvSXRlbXMiLCJza2lsbHMiLCJmaWx0ZXJlZCIsImZpbHRlciIsInMiLCJpbmNsdWRlcyIsIm1hcCIsInNraWxsIiwibWFwTWNwU2x1Z3NUb0l0ZW1zIiwic2x1Z3MiLCJ1c2VFbnRpdHlTZWFyY2giLCJfc2NvcGUkbWNwU2x1Z3MiLCJfc2NvcGUkc2tpbGxzIiwiX3N0YWJsZVNjb3BlJHByb2plY3RJIiwiX3N0YWJsZVNjb3BlJGNsaWVudElkIiwiX3N0YWJsZVNjb3BlJGFnZW50RW50IiwiY29yVXNlciIsIl91c2VUIiwidCIsInJlY2VudHNGZXRjaEdlbmVyYXRpb25SZWYiLCJfdXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJzZXRTZWFyY2hWYWx1ZSIsImRlYm91bmNlZFNlYXJjaFZhbHVlIiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJpdGVtcyIsInNldEl0ZW1zIiwiX3VzZVN0YXRlNSIsIl91c2VTdGF0ZTYiLCJsb2FkaW5nIiwic2V0TG9hZGluZyIsIl91c2VTdGF0ZTciLCJfdXNlU3RhdGU4IiwiZXJyb3IiLCJzZXRFcnJvciIsIl91c2VTdGF0ZTkiLCJfdXNlU3RhdGUwIiwiaGlkZVJlY2VudHNMYWJlbCIsInNldEhpZGVSZWNlbnRzTGFiZWwiLCJfdXNlU3RhdGUxIiwiX3VzZVN0YXRlMTAiLCJoYXNNb3JlIiwic2V0SGFzTW9yZSIsIl91c2VTdGF0ZTExIiwiX3VzZVN0YXRlMTIiLCJpc0xvYWRpbmdNb3JlIiwic2V0SXNMb2FkaW5nTW9yZSIsIl91c2VTdGF0ZTEzIiwiX3VzZVN0YXRlMTQiLCJjdXJyZW50UGFnZSIsInNldEN1cnJlbnRQYWdlIiwiX3VzZVN0YXRlMTUiLCJfdXNlU3RhdGUxNiIsImFjdGl2ZVBhZ2luYXRpb25Tb3VyY2UiLCJzZXRBY3RpdmVQYWdpbmF0aW9uU291cmNlIiwibWNwU2x1Z3NLZXkiLCJtY3BTbHVncyIsImpvaW4iLCJza2lsbHNLZXkiLCJzdGFibGVTY29wZSIsIl9zY29wZSRjbGllbnRJZCIsIl9zY29wZSRwcm9qZWN0SWQiLCJfc2NvcGUkbWNwU2x1Z3MyIiwiX3Njb3BlJGFnZW50RW50aXR5IiwiX3VzZUxhenlRdWVyeSIsInZhcmlhYmxlcyIsImxpbWl0IiwiZmV0Y2hQb2xpY3kiLCJfdXNlTGF6eVF1ZXJ5MiIsImZldGNoU2VhcmNoRW50aXRpZXMiLCJfdXNlTGF6eVF1ZXJ5MiQiLCJzZWFyY2hEYXRhIiwiZGF0YSIsInNlYXJjaExvYWRpbmciLCJzZWFyY2hFcnJvciIsIl91c2VMYXp5UXVlcnkzIiwiX3VzZUxhenlRdWVyeTQiLCJmZXRjaFNlYXJjaENsaWVudHMiLCJfdXNlTGF6eVF1ZXJ5NCQiLCJjbGllbnRzRGF0YSIsImNsaWVudHNMb2FkaW5nIiwiY2xpZW50c0Vycm9yIiwiX3VzZUxhenlRdWVyeTUiLCJfdXNlTGF6eVF1ZXJ5NiIsImZldGNoVXNlcnNEaXJlY3RvcnkiLCJfdXNlTGF6eVF1ZXJ5NiQiLCJ1c2Vyc0RhdGEiLCJ1c2Vyc0xvYWRpbmciLCJ1c2Vyc0Vycm9yIiwic3luY1VzZXJzUGFnaW5hdGlvbiIsInBheWxvYWQiLCJfcGF5bG9hZCR1c2VycyIsIl9wYXlsb2FkJHVzZXJzMiIsInBhZ2UiLCJ1c2VycyIsImxhc3RQYWdlIiwic3luY0NsaWVudHNQYWdpbmF0aW9uIiwiX3BheWxvYWQkY2xpZW50cyIsIl9wYXlsb2FkJGNsaWVudHMyIiwiY2xpZW50cyIsInN5bmNUYXNrRmFsbGJhY2tQYWdpbmF0aW9uIiwiX3BheWxvYWQkdGFza0ZhbWlseSIsIl9wYXlsb2FkJHRhc2tGYW1pbHkyIiwicmF3UGFnZSIsInRhc2tGYW1pbHkiLCJzeW5jUHJvamVjdEZhbGxiYWNrUGFnaW5hdGlvbiIsIl9wYXlsb2FkJHByb2plY3RzIiwiX3BheWxvYWQkcHJvamVjdHMyIiwicHJvamVjdHMiLCJfdXNlTGF6eVF1ZXJ5NyIsIl91c2VMYXp5UXVlcnk4IiwiZmV0Y2hUYXNrRmFtaWx5RmFsbGJhY2siLCJfdXNlTGF6eVF1ZXJ5OSIsIl91c2VMYXp5UXVlcnkwIiwiZmV0Y2hQcm9qZWN0c0ZhbGxiYWNrIiwiZmV0Y2hSZWNlbnQiLCJfYXN5bmNUb0dlbmVyYXRvciIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJtYXJrIiwiX2NhbGxlZSIsImdlbmVyYXRpb24iLCJfc3RhYmxlU2NvcGUkbWNwU2x1Z3MiLCJfZGF0YSRkYXRhIiwiX2RhdGEkbmV4dF9vZmZzZXQiLCJyZXNwb25zZSIsImNhblBhZ2luYXRlIiwiX2RhdGEiLCJtYXBwZWQiLCJfZGF0YTIiLCJfbWFwcGVkIiwiX2ZhbGxiYWNrRGF0YSRwcm9qZWN0IiwiX2ZhbGxiYWNrRGF0YSRwcm9qZWN0MiIsImFyZ3VtZW50c0ZpbHRlciIsIl95aWVsZCRmZXRjaFByb2plY3RzRiIsImZhbGxiYWNrRGF0YSIsImZhbGxiYWNrTWFwcGVkIiwicmVjZW50VGFza0ZpbHRlcnMiLCJfZGF0YTMiLCJ0YXNrSXRlbXMiLCJfZmFsbGJhY2tEYXRhJHRhc2tGYW0iLCJfZmFsbGJhY2tEYXRhJHRhc2tGYW0yIiwiX3lpZWxkJGZldGNoVGFza0ZhbWlsIiwiX2ZhbGxiYWNrRGF0YSIsIl9kYXRhNCR1c2VycyRkYXRhIiwiX2RhdGE0JHVzZXJzIiwiX3lpZWxkJGZldGNoVXNlcnNEaXJlIiwiX2RhdGE0IiwiX21hcHBlZDIiLCJtZUl0ZW0iLCJ3aXRob3V0TWUiLCJfdCIsIl90MiIsIndyYXAiLCJfY29udGV4dCIsInByZXYiLCJuZXh0IiwiY3VycmVudCIsImFicnVwdCIsInBhdGgiLCJtZXRob2QiLCJzZW50IiwianNvbiIsImhhc19tb3JlIiwibmV4dF9vZmZzZXQiLCJmaW5pc2giLCJpc0FycmF5IiwicCIsImNsaWVudF9pZCIsIl9vYmplY3RTcHJlYWQiLCJwZXJQYWdlIiwiaXRlbSIsInByb2plY3RJZHMiLCJjbGllbnRJZHMiLCJwYWdpbmF0aW9uIiwib2Zmc2V0Iiwic2l6ZSIsImZpbHRlcnMiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJzdG9wIiwiX3N0YWJsZVNjb3BlJG1jcFNsdWdzMiIsInNlYXJjaEdlbiIsImVuY29kZVVSSUNvbXBvbmVudCIsInRoZW4iLCJfZGF0YSRkYXRhMiIsIl9kYXRhJG5leHRfb2Zmc2V0MiIsImV4dHJhIiwiX2NsaWVudHNEYXRhJGNsaWVudHMiLCJfdXNlcnNEYXRhJHVzZXJzIiwibWVJZCIsImhhc01lSW5SZXN1bHRzIiwic29tZSIsInNlYXJjaCIsImxvYWRNb3JlIiwiX2NhbGxlZTIiLCJzYWZlQ3VycmVudFBhZ2UiLCJuZXh0UGFnZSIsImxvYWRNb3JlQmFzZWxpbmVHZW4iLCJfZGF0YSR1c2VycyRkYXRhIiwiX2RhdGEkdXNlcnMiLCJfeWllbGQkZmV0Y2hVc2Vyc0RpcmUyIiwibmV4dEl0ZW1zIiwiX2RhdGE1JGNsaWVudHMkZGF0YSIsIl9kYXRhNSRjbGllbnRzIiwiX3lpZWxkJGZldGNoU2VhcmNoQ2xpIiwiX2RhdGE1IiwiX25leHRJdGVtcyIsIl9kYXRhNiR0YXNrRmFtaWx5JGRhdCIsIl9kYXRhNiR0YXNrRmFtaWx5IiwiX3lpZWxkJGZldGNoVGFza0ZhbWlsMiIsIl9kYXRhNiIsIl9uZXh0SXRlbXMyIiwiX2RhdGE3JHByb2plY3RzJGRhdGEiLCJfZGF0YTckcHJvamVjdHMiLCJfeWllbGQkZmV0Y2hQcm9qZWN0c0YyIiwiX2RhdGE3IiwiX25leHRJdGVtczMiLCJfc2tpbGxEYXRhJGRhdGEiLCJfc2tpbGxEYXRhJG5leHRfb2Zmc2UiLCJza2lsbE9mZnNldCIsInNraWxsUSIsInNraWxsUGF0aCIsInNraWxsUmVzcG9uc2UiLCJza2lsbERhdGEiLCJfbmV4dEl0ZW1zNCIsIl90MyIsIl9jb250ZXh0MiIsIl9wcmV2JCIsImV4aXN0aW5nSWRzIiwiU2V0IiwiYXBwZW5kZWQiLCJoYXMiLCJjb25zb2xlIiwic291cmNlIiwiZmV0Y2hSZWNlbnRSZWYiLCJyZWNlbnRzVHJpZ2dlciIsInVwZGF0ZVNlYXJjaFZhbHVlIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2hvb2tzL3VzZUVudGl0eVNlYXJjaC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VMYXp5UXVlcnkgfSBmcm9tICdAYXBvbGxvL2NsaWVudCdcbmltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IGdldFJlY2VudENsaWVudHMgfSBmcm9tICcuLi9zZXJ2aWNlcy9tYWlhL1JlY2VudENsaWVudHMvZ2V0UmVjZW50Q2xpZW50cydcbmltcG9ydCB7IGdldFJlY2VudFByb2plY3RzIH0gZnJvbSAnLi4vc2VydmljZXMvbWFpYS9SZWNlbnRQcm9qZWN0cy9nZXRSZWNlbnRQcm9qZWN0cydcbmltcG9ydCB7IGdldFJlY2VudFRhc2tzIH0gZnJvbSAnLi4vc2VydmljZXMvbWFpYS9SZWNlbnRUYXNrcy9nZXRSZWNlbnRUYXNrcydcbmltcG9ydCB0eXBlIHsgUmVjZW50VGFza0l0ZW0gfSBmcm9tICcuLi9zZXJ2aWNlcy9tYWlhL1JlY2VudFRhc2tzL2dldFJlY2VudFRhc2tzJ1xuaW1wb3J0IHsgdXNlVXNlciB9IGZyb20gJy4uL2NvbnRleHQvY29yLXVzZXInXG5pbXBvcnQgeyBQUk9KRUNUU19GQUxMQkFDSywgU0VBUkNIX0VOVElUSUVTLCBUQVNLX0ZBTUlMWV9GQUxMQkFDSyB9IGZyb20gJy4uL3NlcnZpY2VzL3F1ZXJ5L2VudGl0eVNlYXJjaFF1ZXJ5J1xuaW1wb3J0IHsgU0VBUkNIX0NMSUVOVFMgfSBmcm9tICcuLi9zZXJ2aWNlcy9xdWVyeS9DbGllbnRTZWFyY2hRdWVyeSdcbmltcG9ydCB7IFVTRVJTX0RJUkVDVE9SWSB9IGZyb20gJy4uL3NlcnZpY2VzL3F1ZXJ5L3VzZXJzRGlyZWN0b3J5UXVlcnknXG5pbXBvcnQgeyBTRUFSQ0hfUVVFUllfREVCT1VOQ0VfTVMgfSBmcm9tICcuLi9jb25zdGFudHMvY29uZmlnJ1xuaW1wb3J0IHsgdXNlRGVib3VuY2UgfSBmcm9tICcuL3VzZURlYm91bmNlJ1xuaW1wb3J0IHsgdXNlVCB9IGZyb20gJy4vdXNlVCdcbmltcG9ydCB7IENvbnRleHRFbnRpdHlUeXBlLCBDb250ZXh0TWVudGlvbkl0ZW0gfSBmcm9tICcuLi90eXBlcy9jb250ZXh0TWVudGlvbidcbmltcG9ydCB0eXBlIHsgQWdlbnRFbnRpdHkgfSBmcm9tICcuLi90eXBlcy9hZ2VudCdcbmltcG9ydCB0eXBlIHsgU2tpbGwgfSBmcm9tICcuLi90eXBlcy9za2lsbCdcbmltcG9ydCB7IGZldGNoTWFpYSB9IGZyb20gJy4uL3NlcnZpY2VzL21haWEvY2xpZW50J1xuXG50eXBlIFJhd1NlYXJjaFJlc3VsdCA9IHtcbiAgaWQ6IHN0cmluZyB8IG51bWJlclxuICB0aXRsZTogc3RyaW5nXG4gIHR5cGU/OiBzdHJpbmdcbiAgY2xpZW50SWQ/OiBudW1iZXIgfCBzdHJpbmcgfCBudWxsXG4gIGZlZUlkPzogbnVtYmVyIHwgc3RyaW5nIHwgbnVsbFxuICBjbGllbnROYW1lPzogc3RyaW5nIHwgbnVsbFxuICBwcm9qZWN0TmFtZT86IHN0cmluZyB8IG51bGxcbiAgZmF0aGVyPzogeyBpZDogc3RyaW5nIHwgbnVtYmVyOyB0aXRsZT86IHN0cmluZyB8IG51bGwgfSB8IG51bGxcbn1cblxudHlwZSBSYXdDbGllbnQgPSB7XG4gIGlkOiBudW1iZXIgfCBzdHJpbmdcbiAgbmFtZTogc3RyaW5nXG4gIHRvdGFsUHJveWVjdG9zPzogbnVtYmVyIHwgbnVsbFxufVxuXG50eXBlIFJhd0RpcmVjdG9yeVVzZXIgPSB7XG4gIGlkOiBzdHJpbmcgfCBudW1iZXJcbiAgZmlyc3ROYW1lPzogc3RyaW5nIHwgbnVsbFxuICBsYXN0TmFtZT86IHN0cmluZyB8IG51bGxcbiAgZW1haWw/OiBzdHJpbmcgfCBudWxsXG4gIHBpY3R1cmU/OiBzdHJpbmcgfCBudWxsXG4gIHVzZXJQb3NpdGlvbj86IHsgbmFtZT86IHN0cmluZyB8IG51bGwgfSB8IG51bGxcbn1cblxudHlwZSBTZWFyY2hFbnRpdGllc0RhdGEgPSB7IHNlYXJjaDogUmF3U2VhcmNoUmVzdWx0W10gfCBudWxsIH1cbnR5cGUgU2VhcmNoQ2xpZW50c0RhdGEgPSB7XG4gIGNsaWVudHM6IHtcbiAgICB0b3RhbD86IG51bWJlciB8IG51bGxcbiAgICBwZXJQYWdlPzogbnVtYmVyIHwgbnVsbFxuICAgIHBhZ2U/OiBudW1iZXIgfCBudWxsXG4gICAgbGFzdFBhZ2U/OiBudW1iZXIgfCBudWxsXG4gICAgZGF0YTogUmF3Q2xpZW50W11cbiAgfSB8IG51bGxcbn1cbnR5cGUgVXNlcnNEaXJlY3RvcnlEYXRhID0ge1xuICB1c2Vyczoge1xuICAgIHRvdGFsPzogbnVtYmVyIHwgbnVsbFxuICAgIHBlclBhZ2U/OiBudW1iZXIgfCBudWxsXG4gICAgcGFnZT86IG51bWJlciB8IG51bGxcbiAgICBsYXN0UGFnZT86IG51bWJlciB8IG51bGxcbiAgICBkYXRhOiBSYXdEaXJlY3RvcnlVc2VyW10gfCBudWxsXG4gIH0gfCBudWxsXG59XG5cbnR5cGUgVGFza0ZhbWlseVJlY29yZCA9IHtcbiAgX2lkPzogc3RyaW5nIHwgbnVtYmVyIHwgbnVsbFxuICB0aXRsZT86IHN0cmluZyB8IG51bGxcbiAgcHJvamVjdElkPzogc3RyaW5nIHwgbnVtYmVyIHwgbnVsbFxuICB0YXNrRmF0aGVyPzogc3RyaW5nIHwgbnVtYmVyIHwgbnVsbFxuICBmYXRoZXI/OiB7IGlkPzogc3RyaW5nIHwgbnVtYmVyIHwgbnVsbDsgdGl0bGU/OiBzdHJpbmcgfCBudWxsIH0gfCBudWxsXG4gIHByb2plY3Q/OiB7IGlkPzogc3RyaW5nIHwgbnVtYmVyIHwgbnVsbDsgbmFtZT86IHN0cmluZyB8IG51bGwgfSB8IG51bGxcbn1cblxudHlwZSBUYXNrRmFtaWx5RGF0YSA9IHtcbiAgdGFza0ZhbWlseT86IHtcbiAgICB0b3RhbD86IG51bWJlciB8IG51bGxcbiAgICBwZXJQYWdlPzogbnVtYmVyIHwgbnVsbFxuICAgIHBhZ2U/OiBudW1iZXIgfCBudWxsXG4gICAgbGFzdFBhZ2U/OiBudW1iZXIgfCBudWxsXG4gICAgZGF0YT86IFRhc2tGYW1pbHlSZWNvcmRbXSB8IG51bGxcbiAgfSB8IG51bGxcbn1cblxudHlwZSBGYWxsYmFja1Byb2plY3RSZWNvcmQgPSB7XG4gIGlkPzogc3RyaW5nIHwgbnVtYmVyIHwgbnVsbFxuICBuYW1lPzogc3RyaW5nIHwgbnVsbFxuICBjbGllbnRJZD86IHN0cmluZyB8IG51bWJlciB8IG51bGxcbiAgY2xpZW50PzogeyBpZD86IHN0cmluZyB8IG51bWJlciB8IG51bGw7IG5hbWU/OiBzdHJpbmcgfCBudWxsIH0gfCBudWxsXG59XG5cbnR5cGUgUHJvamVjdHNGYWxsYmFja0RhdGEgPSB7XG4gIHByb2plY3RzPzoge1xuICAgIHRvdGFsPzogbnVtYmVyIHwgbnVsbFxuICAgIHBlclBhZ2U/OiBudW1iZXIgfCBudWxsXG4gICAgcGFnZT86IG51bWJlciB8IG51bGxcbiAgICBsYXN0UGFnZT86IG51bWJlciB8IG51bGxcbiAgICBkYXRhPzogRmFsbGJhY2tQcm9qZWN0UmVjb3JkW10gfCBudWxsXG4gIH0gfCBudWxsXG59XG5cbnR5cGUgUGFnaW5hdGlvblNvdXJjZSA9ICdub25lJyB8ICd1c2VycycgfCAnY2xpZW50cy1zZWFyY2gnIHwgJ3Rhc2stZmFsbGJhY2snIHwgJ3Byb2plY3QtZmFsbGJhY2snIHwgJ3NraWxscydcblxuY29uc3Qgbm9ybWFsaXplUG9zaXRpdmVJbnQgPSAodmFsdWU6IHVua25vd24sIGZhbGxiYWNrOiBudW1iZXIpOiBudW1iZXIgPT4ge1xuICBjb25zdCBwYXJzZWQgPSBOdW1iZXIodmFsdWUpXG4gIGlmICghTnVtYmVyLmlzRmluaXRlKHBhcnNlZCkpIHJldHVybiBmYWxsYmFja1xuICBjb25zdCBub3JtYWxpemVkID0gTWF0aC5mbG9vcihwYXJzZWQpXG4gIHJldHVybiBub3JtYWxpemVkID4gMCA/IG5vcm1hbGl6ZWQgOiBmYWxsYmFja1xufVxuXG4vKipcbiAqIFJlc3RyaW5nZSBsb3MgcmVzdWx0YWRvcyBhbCBgY2xpZW50SWRgL2Bwcm9qZWN0SWRgIGRlbCBhZ2VudGUgYWN0aXZvLlxuICogQ3VhbmRvIGVsIGFnZW50ZSBlc3TDoSBzY29wZWFkbyBhIHVuIGNsaWVudC9wcm9qZWN0LCB0YW50byBsb3MgcmVjZW50cyBjb21vXG4gKiBlbCBzZWFyY2ggZGViZW4gZmlsdHJhciBwb3IgZXNlIGNvbnRleHRvLiBTaSBlbCBiYWNrZW5kIG5vIGVudGllbmRlIGFsZ8O6blxuICogY2FtcG8gbG8gaWdub3JhIHkgc2UgY2FlIGFsIGNvbXBvcnRhbWllbnRvIGdsb2JhbC5cbiAqL1xuZXhwb3J0IHR5cGUgRW50aXR5U2VhcmNoU2NvcGUgPSB7XG4gIGNsaWVudElkPzogc3RyaW5nIHwgbnVtYmVyIHwgbnVsbFxuICBwcm9qZWN0SWQ/OiBzdHJpbmcgfCBudW1iZXIgfCBudWxsXG4gIC8qKiBTbHVncyBkZWwgY29uZWN0b3IgTUNQIGRlbCBhZ2VudGUgKGxpc3RhZG8gbG9jYWwsIHNpbiBHcmFwaFFMKS4gKi9cbiAgbWNwU2x1Z3M/OiBzdHJpbmdbXVxuICAvKipcbiAgICogU2tpbGxzIHByZWNhcmdhZGFzIChsaXN0YWRvIGxvY2FsLCBzaW4gUkVTVCkuIEN1YW5kbyBzZSBwcm92ZWVuLCBzZSB1c2FuIGRpcmVjdGFtZW50ZVxuICAgKiBlbiBsdWdhciBkZSBmZXRjaGVhciBkZXNkZSBsYSBBUEkuIMOadGlsIHBhcmEgZGV2L3Rlc3RpbmcgeSBwYXJhIFNTUi5cbiAgICovXG4gIHNraWxscz86IFNraWxsW11cbiAgLyoqXG4gICAqIGBlbnRpdHlgIGRlbCBhZ2VudGUgYWN0aXZvLiBQYXJhIGVzcGVjaWFsaXN0YXM6XG4gICAqIC0gYHByb2plY3RgOiBiw7pzcXVlZGEgZGUgdGFyZWFzIGZ1ZXJ6YSBmaWx0cm8gcG9yIGBwcm9qZWN0SWRgIGRlbCBjb250ZXh0by5cbiAgICogLSBgY2xpZW50YDogYsO6c3F1ZWRhIGRlIHByb3llY3RvcyBwb3IgYGNsaWVudElkYDsgdGFyZWFzIHBvciBjbGllbnRlICh5IHByb3llY3RvIHNpIGFwbGljYSkuXG4gICAqL1xuICBhZ2VudEVudGl0eT86IEFnZW50RW50aXR5IHwgbnVsbFxufVxuXG50eXBlIFNlYXJjaEZpbHRlcmFibGVUeXBlID0gJ3Byb2plY3QnIHwgJ3Rhc2snXG5cbmNvbnN0IEJBU0VfRklMVEVSU19CWV9UWVBFOiBSZWNvcmQ8U2VhcmNoRmlsdGVyYWJsZVR5cGUsIFJlY29yZDxzdHJpbmcsIHN0cmluZz4+ID0ge1xuICBwcm9qZWN0OiB7IHByb2plY3Q6ICd0cnVlJywgYXJjaGl2ZWQ6ICdhbGwnIH0sXG4gIHRhc2s6IHsgdGFzazogJ3RydWUnLCBhcmNoaXZlZDogJ2ZhbHNlJyB9LFxufVxuXG4vKipcbiAqIEVudHJhZGFzIHBhcmEgZWwgYXJndW1lbnRvIEdyYXBoUUwgYGV4dHJhYCAoSlNPTiBzdHJpbmcgZGUgYXJyYXkpIGFsIGJ1c2NhciB0YXJlYXMgY29uIGNvbnRleHRvLlxuICogRWouOiBbe1wicHJvamVjdElkXCI6XCI4ODE1NTJcIn1dXG4gKi9cbmNvbnN0IGJ1aWxkVGFza1NlYXJjaEV4dHJhRW50cmllcyA9IChzY29wZT86IEVudGl0eVNlYXJjaFNjb3BlKTogQXJyYXk8UmVjb3JkPHN0cmluZywgc3RyaW5nPj4gPT4ge1xuICBjb25zdCByYXdDbGllbnQgPVxuICAgIHNjb3BlPy5jbGllbnRJZCAhPT0gdW5kZWZpbmVkICYmIHNjb3BlPy5jbGllbnRJZCAhPT0gbnVsbCAmJiBzY29wZT8uY2xpZW50SWQgIT09ICcnID8gU3RyaW5nKHNjb3BlLmNsaWVudElkKSA6IG51bGxcbiAgY29uc3QgcmF3UHJvamVjdCA9XG4gICAgc2NvcGU/LnByb2plY3RJZCAhPT0gdW5kZWZpbmVkICYmIHNjb3BlPy5wcm9qZWN0SWQgIT09IG51bGwgJiYgc2NvcGU/LnByb2plY3RJZCAhPT0gJydcbiAgICAgID8gU3RyaW5nKHNjb3BlLnByb2plY3RJZClcbiAgICAgIDogbnVsbFxuXG4gIGNvbnN0IGFnZW50RW50aXR5ID0gc2NvcGU/LmFnZW50RW50aXR5XG4gIGNvbnN0IGVudHJpZXM6IEFycmF5PFJlY29yZDxzdHJpbmcsIHN0cmluZz4+ID0gW11cblxuICBjb25zdCBwdXNoQ2xpZW50ID0gKCkgPT4ge1xuICAgIGlmIChyYXdDbGllbnQpIGVudHJpZXMucHVzaCh7IGNsaWVudElkOiByYXdDbGllbnQgfSlcbiAgfVxuICBjb25zdCBwdXNoUHJvamVjdCA9ICgpID0+IHtcbiAgICBpZiAocmF3UHJvamVjdCkgZW50cmllcy5wdXNoKHsgcHJvamVjdElkOiByYXdQcm9qZWN0IH0pXG4gIH1cblxuICBpZiAoYWdlbnRFbnRpdHkgPT09ICdwcm9qZWN0Jykge1xuICAgIGlmIChyYXdQcm9qZWN0KSB7XG4gICAgICBwdXNoUHJvamVjdCgpXG4gICAgfSBlbHNlIGlmIChyYXdDbGllbnQpIHtcbiAgICAgIHB1c2hDbGllbnQoKVxuICAgIH1cbiAgfSBlbHNlIGlmIChhZ2VudEVudGl0eSA9PT0gJ2NsaWVudCcpIHtcbiAgICBwdXNoQ2xpZW50KClcbiAgICBwdXNoUHJvamVjdCgpXG4gIH0gZWxzZSB7XG4gICAgcHVzaENsaWVudCgpXG4gICAgcHVzaFByb2plY3QoKVxuICB9XG5cbiAgcmV0dXJuIGVudHJpZXNcbn1cblxuY29uc3QgYnVpbGRUYXNrU2VhcmNoRXh0cmEgPSAoc2NvcGU/OiBFbnRpdHlTZWFyY2hTY29wZSk6IHN0cmluZyB8IHVuZGVmaW5lZCA9PiB7XG4gIGNvbnN0IGVudHJpZXMgPSBidWlsZFRhc2tTZWFyY2hFeHRyYUVudHJpZXMoc2NvcGUpXG4gIGlmIChlbnRyaWVzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIHVuZGVmaW5lZFxuICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoZW50cmllcylcbn1cblxuLyoqXG4gKiBUYWIgcHJveWVjdG86IGNvbiBgY2xpZW50SWRgIGVuIGVsIHNjb3BlLCBgZXh0cmFgIGFjb3RhIGxhIGLDunNxdWVkYSBhIHByb3llY3RvcyBkZSBlc2UgY2xpZW50ZS5cbiAqIEVqLjogYFt7XCJjbGllbnRJZFwiOlwiNDcxMDVcIn1dYCBqdW50byBhIGBmaWx0ZXJzYCBge1wicHJvamVjdFwiOlwidHJ1ZVwiLFwiYXJjaGl2ZWRcIjpcImFsbFwifWAuXG4gKi9cbmNvbnN0IGJ1aWxkUHJvamVjdFNlYXJjaEV4dHJhID0gKHNjb3BlPzogRW50aXR5U2VhcmNoU2NvcGUpOiBzdHJpbmcgfCB1bmRlZmluZWQgPT4ge1xuICBjb25zdCByYXdDbGllbnQgPVxuICAgIHNjb3BlPy5jbGllbnRJZCAhPT0gdW5kZWZpbmVkICYmIHNjb3BlPy5jbGllbnRJZCAhPT0gbnVsbCAmJiBzY29wZT8uY2xpZW50SWQgIT09ICcnID8gU3RyaW5nKHNjb3BlLmNsaWVudElkKSA6IG51bGxcbiAgaWYgKCFyYXdDbGllbnQpIHJldHVybiB1bmRlZmluZWRcbiAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KFt7IGNsaWVudElkOiByYXdDbGllbnQgfV0pXG59XG5cbmNvbnN0IGJ1aWxkU2VhcmNoRW50aXRpZXNFeHRyYSA9ICh0eXBlOiBTZWFyY2hGaWx0ZXJhYmxlVHlwZSwgc2NvcGU/OiBFbnRpdHlTZWFyY2hTY29wZSk6IHN0cmluZyB8IHVuZGVmaW5lZCA9PiB7XG4gIGlmICh0eXBlID09PSAndGFzaycpIHJldHVybiBidWlsZFRhc2tTZWFyY2hFeHRyYShzY29wZSlcbiAgaWYgKHR5cGUgPT09ICdwcm9qZWN0JykgcmV0dXJuIGJ1aWxkUHJvamVjdFNlYXJjaEV4dHJhKHNjb3BlKVxuICByZXR1cm4gdW5kZWZpbmVkXG59XG5cbi8qKlxuICogVGFiIGB0YXNrYCAvIGBwcm9qZWN0YDogYGZpbHRlcnNgIHPDs2xvIHRpcG8gKyBhcmNoaXZlZCAodGFyZWFzOiBubyBhcmNoaXZhZGFzKTsgc2NvcGUgKGNsaWVudElkIC8gcHJvamVjdElkIGVuIHRhcmVhcykgZW4gYGV4dHJhYC5cbiAqL1xuY29uc3QgYnVpbGRGaWx0ZXJzRm9yVHlwZSA9ICh0eXBlOiBTZWFyY2hGaWx0ZXJhYmxlVHlwZSk6IHN0cmluZyA9PiB7XG4gIGlmICh0eXBlID09PSAncHJvamVjdCcpIHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoQkFTRV9GSUxURVJTX0JZX1RZUEUucHJvamVjdClcbiAgfVxuICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoQkFTRV9GSUxURVJTX0JZX1RZUEUudGFzaylcbn1cblxuLyoqXG4gKiBGaWx0cm9zIHBhcmEgbGEgcXVlcnkgdXNlcnMuIEVsIGJhY2tlbmQgZXNwZXJhIHVuIEpTT04gc3RyaW5nIGNvblxuICogd2l0aFBvc2l0aW9uLCB3aXRoVGVhbXMgeSBzZWFyY2hJbnB1dC4gTGUgYWdyZWdhbW9zIGNsaWVudElkL3Byb2plY3RJZFxuICogZGVsIHNjb3BlIGVuIGNhc28gZGUgcXVlIGVsIGJhY2tlbmQgbG9zIGFwcm92ZWNoZSBwYXJhIGZpbHRyYXIgcG9yXG4gKiBjb250ZXh0byAoc2kgbm8gbG9zIGVudGllbmRlIGxvcyBpZ25vcmEpLlxuICovXG5jb25zdCBidWlsZFVzZXJzRGlyZWN0b3J5RmlsdGVycyA9IChxOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBjb25zdCBiYXNlOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHtcbiAgICB3aXRoUG9zaXRpb246IHRydWUsXG4gICAgd2l0aFRlYW1zOiB0cnVlLFxuICB9XG4gIGNvbnN0IHRyaW1tZWRRID0gcS50cmltKClcbiAgaWYgKHRyaW1tZWRRKSB7XG4gICAgYmFzZS5zZWFyY2hJbnB1dCA9IHRyaW1tZWRRXG4gIH1cbiAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGJhc2UpXG59XG5cbmNvbnN0IGhpZ2hsaWdodFJhbmdlID0gKHRleHQ6IHN0cmluZywgc2VhcmNoVmFsdWU6IHN0cmluZykgPT4ge1xuICBpZiAoIXNlYXJjaFZhbHVlKSByZXR1cm4gdW5kZWZpbmVkXG4gIGNvbnN0IGlkeCA9IHRleHQudG9Mb3dlckNhc2UoKS5pbmRleE9mKHNlYXJjaFZhbHVlLnRvTG93ZXJDYXNlKCkpXG4gIGlmIChpZHggPCAwKSByZXR1cm4gdW5kZWZpbmVkXG4gIHJldHVybiB7IHN0YXJ0OiBpZHgsIGxlbmd0aDogc2VhcmNoVmFsdWUubGVuZ3RoIH1cbn1cblxuY29uc3QgZmlyc3REZWZpbmVkID0gPFQ+KC4uLnZhbHVlczogQXJyYXk8VCB8IG51bGwgfCB1bmRlZmluZWQ+KTogVCB8IHVuZGVmaW5lZCA9PlxuICB2YWx1ZXMuZmluZCh2YWx1ZSA9PiB2YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHZhbHVlICE9PSBudWxsKVxuXG5jb25zdCBub3JtYWxpemVUcmltbWVkU3RyaW5nID0gKHZhbHVlOiB1bmtub3duKTogc3RyaW5nID0+IHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3N0cmluZycpIHJldHVybiAnJ1xuICByZXR1cm4gdmFsdWUudHJpbSgpXG59XG5cbmNvbnN0IGdldFVzZXJQb3NpdGlvbk5hbWUgPSAodXNlclBvc2l0aW9uOiBSZXR1cm5UeXBlPHR5cGVvZiB1c2VVc2VyPlsndXNlcl9wb3NpdGlvbiddKTogc3RyaW5nID0+IHtcbiAgaWYgKHR5cGVvZiB1c2VyUG9zaXRpb24gPT09ICdzdHJpbmcnKSByZXR1cm4gdXNlclBvc2l0aW9uLnRyaW0oKVxuICBpZiAodXNlclBvc2l0aW9uICYmIHR5cGVvZiB1c2VyUG9zaXRpb24gPT09ICdvYmplY3QnICYmICduYW1lJyBpbiB1c2VyUG9zaXRpb24pIHtcbiAgICByZXR1cm4gbm9ybWFsaXplVHJpbW1lZFN0cmluZyh1c2VyUG9zaXRpb24ubmFtZSlcbiAgfVxuICByZXR1cm4gJydcbn1cblxuY29uc3QgbWFwQ2xpZW50VG9JdGVtID0gKGM6IFJhd0NsaWVudCwgc2VhcmNoVmFsdWU6IHN0cmluZyk6IENvbnRleHRNZW50aW9uSXRlbSA9PiAoe1xuICBpZDogYy5pZCxcbiAgdHlwZTogJ2NsaWVudCcsXG4gIHByaW1hcnk6IGMubmFtZSxcbiAgcHJpbWFyeUhpZ2hsaWdodDogaGlnaGxpZ2h0UmFuZ2UoYy5uYW1lLCBzZWFyY2hWYWx1ZSksXG4gIGJyZWFkY3J1bWI6IHtcbiAgICBjb3VudDogYy50b3RhbFByb3llY3RvcyA/PyB1bmRlZmluZWQsXG4gICAgY291bnRMYWJlbDogJ3Byb2plY3RzJyxcbiAgfSxcbiAgcmF3OiB7XG4gICAgaWQ6IGMuaWQsXG4gICAgbmFtZTogYy5uYW1lLFxuICAgIHRvdGFsUHJveWVjdG9zOiBjLnRvdGFsUHJveWVjdG9zID8/IG51bGwsXG4gIH0sXG59KVxuXG5jb25zdCBtYXBVc2VyVG9JdGVtID0gKHU6IFJhd0RpcmVjdG9yeVVzZXIsIHNlYXJjaFZhbHVlOiBzdHJpbmcpOiBDb250ZXh0TWVudGlvbkl0ZW0gPT4ge1xuICBjb25zdCBmdWxsTmFtZSA9IGAke3UuZmlyc3ROYW1lID8/ICcnfSAke3UubGFzdE5hbWUgPz8gJyd9YC50cmltKClcbiAgY29uc3QgcHJpbWFyeSA9IGZ1bGxOYW1lIHx8IHUuZW1haWwgfHwgU3RyaW5nKHUuaWQpXG5cbiAgcmV0dXJuIHtcbiAgICBpZDogdS5pZCxcbiAgICB0eXBlOiAndXNlcicsXG4gICAgcHJpbWFyeSxcbiAgICBwcmltYXJ5SGlnaGxpZ2h0OiBoaWdobGlnaHRSYW5nZShwcmltYXJ5LCBzZWFyY2hWYWx1ZSksXG4gICAgcmF3OiB7XG4gICAgICBpZDogdS5pZCxcbiAgICAgIG5hbWU6IHByaW1hcnksXG4gICAgICBwaWN0dXJlOiB1LnBpY3R1cmUgPz8gbnVsbCxcbiAgICAgIHBvc2l0aW9uTmFtZTogdS51c2VyUG9zaXRpb24/Lm5hbWUgPz8gbnVsbCxcbiAgICAgIGVtYWlsOiB1LmVtYWlsID8/IG51bGwsXG4gICAgfSxcbiAgfVxufVxuXG5jb25zdCBtYXBDb3JVc2VyVG9Vc2VySXRlbSA9IChcbiAgdXNlcjogUmV0dXJuVHlwZTx0eXBlb2YgdXNlVXNlcj4sXG4gIHNlYXJjaFZhbHVlOiBzdHJpbmcsXG4gIG1lTGFiZWw6IHN0cmluZ1xuKTogQ29udGV4dE1lbnRpb25JdGVtID0+IHtcbiAgY29uc3QgZnVsbE5hbWUgPSBgJHt1c2VyLmZpcnN0TmFtZSA/PyAnJ30gJHt1c2VyLmxhc3ROYW1lID8/ICcnfWAudHJpbSgpXG4gIC8qKiBTb2xvIGNhcmdvIHJlYWw7IHNpbiBmYWxsYmFjayBhIGByb2xlYCAobGEgVUkgbXVlc3RyYSDigJxTaW4gcG9zaWNpw7Nu4oCdIHNpIGZhbHRhKS4gKi9cbiAgY29uc3QgcG9zaXRpb25MaW5lID0gZ2V0VXNlclBvc2l0aW9uTmFtZSh1c2VyLnVzZXJfcG9zaXRpb24pIHx8IG51bGxcbiAgY29uc3QgZW1haWwgPSBub3JtYWxpemVUcmltbWVkU3RyaW5nKHVzZXIuZW1haWwpIHx8IG51bGxcblxuICByZXR1cm4ge1xuICAgIGlkOiB1c2VyLmlkLFxuICAgIHR5cGU6ICd1c2VyJyxcbiAgICBwcmltYXJ5OiBtZUxhYmVsLFxuICAgIHByaW1hcnlIaWdobGlnaHQ6IGhpZ2hsaWdodFJhbmdlKG1lTGFiZWwsIHNlYXJjaFZhbHVlKSxcbiAgICByYXc6IHtcbiAgICAgIGlkOiB1c2VyLmlkLFxuICAgICAgbmFtZTogZnVsbE5hbWUgfHwgU3RyaW5nKHVzZXIuaWQpLFxuICAgICAgcGljdHVyZTogdXNlci5waWN0dXJlIHx8IG51bGwsXG4gICAgICBwb3NpdGlvbk5hbWU6IHBvc2l0aW9uTGluZSxcbiAgICAgIGVtYWlsLFxuICAgIH0sXG4gIH1cbn1cblxuY29uc3QgbWFwUmVjZW50VGFza1RvSXRlbSA9IChcbiAgdGFzazogUmVjZW50VGFza0l0ZW0sXG4gIHNlYXJjaFZhbHVlOiBzdHJpbmcsXG4gIHNob3dQcm9qZWN0TmFtZUluVGFza1JvdyA9IHRydWVcbik6IENvbnRleHRNZW50aW9uSXRlbSA9PiB7XG4gIGNvbnN0IHByaW1hcnkgPSAodGFzay50aXRsZSAmJiB0YXNrLnRpdGxlLnRyaW0oKSkgfHwgU3RyaW5nKHRhc2suaWQpXG4gIGNvbnN0IHByb2plY3ROYW1lID0gc2hvd1Byb2plY3ROYW1lSW5UYXNrUm93ID8gKHRhc2sucHJvamVjdE5hbWUgPz8gbnVsbCkgOiBudWxsXG4gIHJldHVybiB7XG4gICAgaWQ6IHRhc2suaWQsXG4gICAgdHlwZTogJ3Rhc2snLFxuICAgIHByaW1hcnksXG4gICAgcHJpbWFyeUhpZ2hsaWdodDogaGlnaGxpZ2h0UmFuZ2UocHJpbWFyeSwgc2VhcmNoVmFsdWUpLFxuICAgIGJyZWFkY3J1bWI6IHByb2plY3ROYW1lID8geyBwYXJlbnQ6IHByb2plY3ROYW1lIH0gOiB1bmRlZmluZWQsXG4gICAgcmF3OiB7XG4gICAgICBpZDogdGFzay5pZCxcbiAgICAgIG5hbWU6IHByaW1hcnksXG4gICAgICBwcm9qZWN0TmFtZSxcbiAgICB9LFxuICB9XG59XG5cbmNvbnN0IG5vcm1hbGl6ZVRhc2tGYW1pbHlSZWNvcmQgPSAocmVjb3JkOiBUYXNrRmFtaWx5UmVjb3JkKTogUmVjZW50VGFza0l0ZW0gfCBudWxsID0+IHtcbiAgY29uc3QgeyBfaWQ6IHRhc2tGYW1pbHlJZCB9ID0gcmVjb3JkXG4gIGNvbnN0IGlkID0gdGFza0ZhbWlseUlkXG4gIGlmIChpZCA9PT0gdW5kZWZpbmVkIHx8IGlkID09PSBudWxsIHx8IFN0cmluZyhpZCkgPT09ICcnKSByZXR1cm4gbnVsbFxuICBjb25zdCB0aXRsZSA9IChyZWNvcmQudGl0bGUgPz8gJycpLnRyaW0oKSB8fCBTdHJpbmcoaWQpXG4gIGNvbnN0IHByb2plY3ROYW1lID0gZmlyc3REZWZpbmVkKHJlY29yZC5wcm9qZWN0Py5uYW1lLCByZWNvcmQuZmF0aGVyPy50aXRsZSkgPz8gbnVsbFxuICBjb25zdCBoYXNGYXRoZXIgPSAhIWZpcnN0RGVmaW5lZChyZWNvcmQudGFza0ZhdGhlciwgcmVjb3JkLmZhdGhlcj8uaWQpXG4gIHJldHVybiB7XG4gICAgaWQsXG4gICAgdGl0bGUsXG4gICAgdHlwZTogaGFzRmF0aGVyID8gJ3N1YnRhc2snIDogJ3Rhc2snLFxuICAgIHByb2plY3ROYW1lLFxuICB9XG59XG5cbmNvbnN0IG5vcm1hbGl6ZVByb2plY3RzRmFsbGJhY2tSZWNvcmQgPSAocmVjb3JkOiBGYWxsYmFja1Byb2plY3RSZWNvcmQpOiBSYXdTZWFyY2hSZXN1bHQgfCBudWxsID0+IHtcbiAgY29uc3QgeyBpZCB9ID0gcmVjb3JkXG4gIGlmIChpZCA9PT0gdW5kZWZpbmVkIHx8IGlkID09PSBudWxsIHx8IFN0cmluZyhpZCkgPT09ICcnKSByZXR1cm4gbnVsbFxuICBjb25zdCB0aXRsZSA9IHJlY29yZC5uYW1lID8/ICcnXG4gIGNvbnN0IGNsaWVudElkID0gZmlyc3REZWZpbmVkKHJlY29yZC5jbGllbnRJZCwgcmVjb3JkLmNsaWVudD8uaWQpID8/IG51bGxcbiAgY29uc3QgY2xpZW50TmFtZSA9IHJlY29yZC5jbGllbnQ/Lm5hbWUgPz8gbnVsbFxuICByZXR1cm4ge1xuICAgIGlkLFxuICAgIHRpdGxlLFxuICAgIHR5cGU6ICdwcm9qZWN0JyxcbiAgICBjbGllbnRJZCxcbiAgICBjbGllbnROYW1lLFxuICB9XG59XG5cbmNvbnN0IG1hcFNlYXJjaFRvSXRlbSA9IChcbiAgcjogUmF3U2VhcmNoUmVzdWx0LFxuICB0eXBlOiBDb250ZXh0RW50aXR5VHlwZSxcbiAgc2VhcmNoVmFsdWU6IHN0cmluZyxcbiAgc2hvd1Byb2plY3ROYW1lSW5UYXNrUm93ID0gdHJ1ZVxuKTogQ29udGV4dE1lbnRpb25JdGVtID0+IHtcbiAgY29uc3QgcHJpbWFyeSA9IHIudGl0bGUgfHwgci5wcm9qZWN0TmFtZSB8fCAnJ1xuICBsZXQgcGFyZW50OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkXG4gIGlmICh0eXBlID09PSAncHJvamVjdCcpIHBhcmVudCA9IHIuY2xpZW50TmFtZVxuICBlbHNlIGlmICh0eXBlID09PSAndGFzaycpIHBhcmVudCA9IHVuZGVmaW5lZFxuICBlbHNlIHBhcmVudCA9IHIucHJvamVjdE5hbWUgPz8gci5jbGllbnROYW1lXG5cbiAgY29uc3QgZmF0aGVyID0gdHlwZSA9PT0gJ3Rhc2snID8gci5mYXRoZXIgOiBudWxsXG4gIGNvbnN0IGhhc0ZhdGhlciA9IHR5cGUgPT09ICd0YXNrJyAmJiBmYXRoZXIgIT0gbnVsbCAmJiBmYXRoZXIuaWQgIT0gbnVsbCAmJiBTdHJpbmcoZmF0aGVyLmlkKS5sZW5ndGggPiAwXG5cbiAgY29uc3QgdGFza1Byb2plY3ROYW1lID0gdHlwZSA9PT0gJ3Rhc2snICYmICFzaG93UHJvamVjdE5hbWVJblRhc2tSb3cgPyBudWxsIDogKHIucHJvamVjdE5hbWUgPz8gbnVsbClcblxuICByZXR1cm4ge1xuICAgIGlkOiByLmlkLFxuICAgIHR5cGUsXG4gICAgcHJpbWFyeSxcbiAgICBwcmltYXJ5SGlnaGxpZ2h0OiBoaWdobGlnaHRSYW5nZShwcmltYXJ5LCBzZWFyY2hWYWx1ZSksXG4gICAgYnJlYWRjcnVtYjogcGFyZW50ID8geyBwYXJlbnQgfSA6IHVuZGVmaW5lZCxcbiAgICByYXc6IHtcbiAgICAgIGlkOiByLmlkLFxuICAgICAgbmFtZTogcHJpbWFyeSxcbiAgICAgIGNsaWVudElkOiByLmNsaWVudElkID8/IG51bGwsXG4gICAgICBjbGllbnROYW1lOiByLmNsaWVudE5hbWUgPz8gbnVsbCxcbiAgICAgIHByb2plY3ROYW1lOiB0YXNrUHJvamVjdE5hbWUsXG4gICAgICBmZWVJZDogci5mZWVJZCA/PyBudWxsLFxuICAgICAgZmF0aGVySWQ6IGhhc0ZhdGhlciA/IGZhdGhlci5pZCA6IG51bGwsXG4gICAgICBmYXRoZXJUaXRsZTogaGFzRmF0aGVyID8gZmF0aGVyLnRpdGxlPy50cmltKCkgfHwgbnVsbCA6IG51bGwsXG4gICAgfSxcbiAgfVxufVxuXG5jb25zdCBmb3JtYXRNY3BQcmltYXJ5TGFiZWwgPSAoc2x1Zzogc3RyaW5nKTogc3RyaW5nID0+XG4gIHNsdWcucmVwbGFjZSgvXy9nLCAnICcpLnJlcGxhY2UoL1xcYlxcdy9nLCBjaGFyID0+IGNoYXIudG9VcHBlckNhc2UoKSlcblxudHlwZSBTa2lsbHNBcGlSZXNwb25zZSA9IHsgZGF0YT86IFNraWxsW107IGhhc19tb3JlPzogYm9vbGVhbjsgbmV4dF9vZmZzZXQ/OiBudW1iZXIgfCBudWxsIH1cblxuY29uc3QgbWFwU2tpbGxzVG9JdGVtcyA9IChza2lsbHM6IFNraWxsW10sIHNlYXJjaFZhbHVlOiBzdHJpbmcpOiBDb250ZXh0TWVudGlvbkl0ZW1bXSA9PiB7XG4gIGNvbnN0IHEgPSBzZWFyY2hWYWx1ZS50cmltKCkudG9Mb3dlckNhc2UoKVxuICBjb25zdCBmaWx0ZXJlZCA9IHEgPyBza2lsbHMuZmlsdGVyKHMgPT4gcy5uYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMocSkpIDogc2tpbGxzXG4gIHJldHVybiBmaWx0ZXJlZC5tYXAoc2tpbGwgPT4gKHtcbiAgICBpZDogc2tpbGwuaWQsXG4gICAgdHlwZTogJ3NraWxsJyBhcyBjb25zdCxcbiAgICBwcmltYXJ5OiBza2lsbC5uYW1lLFxuICAgIHByaW1hcnlIaWdobGlnaHQ6IGhpZ2hsaWdodFJhbmdlKHNraWxsLm5hbWUsIHNlYXJjaFZhbHVlKSxcbiAgICByYXc6IHtcbiAgICAgIGlkOiBza2lsbC5pZCxcbiAgICAgIG5hbWU6IHNraWxsLm5hbWUsXG4gICAgfSxcbiAgfSkpXG59XG5cbmNvbnN0IG1hcE1jcFNsdWdzVG9JdGVtcyA9IChzbHVnczogc3RyaW5nW10sIHNlYXJjaFZhbHVlOiBzdHJpbmcpOiBDb250ZXh0TWVudGlvbkl0ZW1bXSA9PiB7XG4gIGNvbnN0IHEgPSBzZWFyY2hWYWx1ZS50cmltKCkudG9Mb3dlckNhc2UoKVxuICBsZXQgZmlsdGVyZWQgPSBzbHVnc1xuICBpZiAocSkge1xuICAgIGZpbHRlcmVkID0gc2x1Z3MuZmlsdGVyKHMgPT4ge1xuICAgICAgY29uc3QgcHJpbWFyeSA9IGZvcm1hdE1jcFByaW1hcnlMYWJlbChzKVxuICAgICAgcmV0dXJuIHMudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhxKSB8fCBwcmltYXJ5LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMocSlcbiAgICB9KVxuICB9XG4gIHJldHVybiBmaWx0ZXJlZC5tYXAoc2x1ZyA9PiB7XG4gICAgY29uc3QgcHJpbWFyeSA9IGZvcm1hdE1jcFByaW1hcnlMYWJlbChzbHVnKVxuICAgIHJldHVybiB7XG4gICAgICBpZDogc2x1ZyxcbiAgICAgIHR5cGU6ICdtY3AnIGFzIGNvbnN0LFxuICAgICAgcHJpbWFyeSxcbiAgICAgIHByaW1hcnlIaWdobGlnaHQ6IGhpZ2hsaWdodFJhbmdlKHByaW1hcnksIHNlYXJjaFZhbHVlKSxcbiAgICAgIHJhdzoge1xuICAgICAgICBpZDogc2x1ZyxcbiAgICAgICAgbmFtZTogcHJpbWFyeSxcbiAgICAgIH0sXG4gICAgfVxuICB9KVxufVxuXG5leHBvcnQgY29uc3QgdXNlRW50aXR5U2VhcmNoID0gKHR5cGU6IENvbnRleHRFbnRpdHlUeXBlLCBzY29wZT86IEVudGl0eVNlYXJjaFNjb3BlKSA9PiB7XG4gIGNvbnN0IGNvclVzZXIgPSB1c2VVc2VyKClcbiAgY29uc3QgeyB0IH0gPSB1c2VUKClcbiAgLyoqIEV2aXRhIGFwbGljYXIgcmVzdWx0YWRvcyBkZSB1biBgZmV0Y2hSZWNlbnRgIHZpZWpvIGN1YW5kbyBlbCB1c3VhcmlvIHlhIGNhbWJpw7MgZGUgdGFiIChyYWNlIGFzeW5jKS4gKi9cbiAgY29uc3QgcmVjZW50c0ZldGNoR2VuZXJhdGlvblJlZiA9IHVzZVJlZigwKVxuICBjb25zdCBbc2VhcmNoVmFsdWUsIHNldFNlYXJjaFZhbHVlXSA9IHVzZVN0YXRlKCcnKVxuICBjb25zdCBkZWJvdW5jZWRTZWFyY2hWYWx1ZSA9IHVzZURlYm91bmNlKHNlYXJjaFZhbHVlLCBTRUFSQ0hfUVVFUllfREVCT1VOQ0VfTVMpXG4gIGNvbnN0IFtpdGVtcywgc2V0SXRlbXNdID0gdXNlU3RhdGU8Q29udGV4dE1lbnRpb25JdGVtW10+KFtdKVxuICBjb25zdCBbbG9hZGluZywgc2V0TG9hZGluZ10gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2Vycm9yLCBzZXRFcnJvcl0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2hpZGVSZWNlbnRzTGFiZWwsIHNldEhpZGVSZWNlbnRzTGFiZWxdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtoYXNNb3JlLCBzZXRIYXNNb3JlXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbaXNMb2FkaW5nTW9yZSwgc2V0SXNMb2FkaW5nTW9yZV0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2N1cnJlbnRQYWdlLCBzZXRDdXJyZW50UGFnZV0gPSB1c2VTdGF0ZSgxKVxuICBjb25zdCBbYWN0aXZlUGFnaW5hdGlvblNvdXJjZSwgc2V0QWN0aXZlUGFnaW5hdGlvblNvdXJjZV0gPSB1c2VTdGF0ZTxQYWdpbmF0aW9uU291cmNlPignbm9uZScpXG5cbiAgY29uc3QgbWNwU2x1Z3NLZXkgPSAoc2NvcGU/Lm1jcFNsdWdzID8/IFtdKS5qb2luKCd8JylcbiAgY29uc3Qgc2tpbGxzS2V5ID0gKHNjb3BlPy5za2lsbHMgPz8gW10pLm1hcChzID0+IHMuaWQpLmpvaW4oJ3wnKVxuICBjb25zdCBzaG93UHJvamVjdE5hbWVJblRhc2tSb3cgPSBzY29wZT8uYWdlbnRFbnRpdHkgIT09ICdwcm9qZWN0J1xuXG4gIC8vIEVzdGFiaWxpemFtb3MgZWwgc2NvcGUgcGFyYSBubyBkaXNwYXJhciBmZXRjaHMgcG9yIGNhbWJpb3MgZGUgaWRlbnRpZGFkIGRlIG9iamV0by5cbiAgY29uc3Qgc3RhYmxlU2NvcGUgPSB1c2VNZW1vPEVudGl0eVNlYXJjaFNjb3BlPihcbiAgICAoKSA9PiAoe1xuICAgICAgY2xpZW50SWQ6IHNjb3BlPy5jbGllbnRJZCA/PyBudWxsLFxuICAgICAgcHJvamVjdElkOiBzY29wZT8ucHJvamVjdElkID8/IG51bGwsXG4gICAgICBtY3BTbHVnczogc2NvcGU/Lm1jcFNsdWdzID8/IFtdLFxuICAgICAgc2tpbGxzOiBzY29wZT8uc2tpbGxzLFxuICAgICAgYWdlbnRFbnRpdHk6IHNjb3BlPy5hZ2VudEVudGl0eSA/PyBudWxsLFxuICAgIH0pLFxuICAgIFtzY29wZT8uY2xpZW50SWQsIHNjb3BlPy5wcm9qZWN0SWQsIG1jcFNsdWdzS2V5LCBza2lsbHNLZXksIHNjb3BlPy5hZ2VudEVudGl0eV1cbiAgKVxuXG4gIC8vIC0tLSBTZWFyY2g6IHByb2plY3QgfCB0YXNrIChHcmFwaFFMOiBzZWFyY2gpIC0tLVxuICBjb25zdCBbZmV0Y2hTZWFyY2hFbnRpdGllcywgeyBkYXRhOiBzZWFyY2hEYXRhLCBsb2FkaW5nOiBzZWFyY2hMb2FkaW5nLCBlcnJvcjogc2VhcmNoRXJyb3IgfV0gPVxuICAgIHVzZUxhenlRdWVyeTxTZWFyY2hFbnRpdGllc0RhdGE+KFNFQVJDSF9FTlRJVElFUywge1xuICAgICAgdmFyaWFibGVzOiB7IGxpbWl0OiAyMCB9LFxuICAgICAgZmV0Y2hQb2xpY3k6ICduZXR3b3JrLW9ubHknLFxuICAgIH0pXG5cbiAgLy8gLS0tIFNlYXJjaDogY2xpZW50IChHcmFwaFFMKSAtLS1cbiAgY29uc3QgW2ZldGNoU2VhcmNoQ2xpZW50cywgeyBkYXRhOiBjbGllbnRzRGF0YSwgbG9hZGluZzogY2xpZW50c0xvYWRpbmcsIGVycm9yOiBjbGllbnRzRXJyb3IgfV0gPVxuICAgIHVzZUxhenlRdWVyeTxTZWFyY2hDbGllbnRzRGF0YT4oU0VBUkNIX0NMSUVOVFMsIHtcbiAgICAgIGZldGNoUG9saWN5OiAnbmV0d29yay1vbmx5JyxcbiAgICB9KVxuXG4gIC8vIC0tLSBTZWFyY2g6IHVzZXIgKEdyYXBoUUw6IHVzZXJzKSAtLS1cbiAgY29uc3QgW2ZldGNoVXNlcnNEaXJlY3RvcnksIHsgZGF0YTogdXNlcnNEYXRhLCBsb2FkaW5nOiB1c2Vyc0xvYWRpbmcsIGVycm9yOiB1c2Vyc0Vycm9yIH1dID1cbiAgICB1c2VMYXp5UXVlcnk8VXNlcnNEaXJlY3RvcnlEYXRhPihVU0VSU19ESVJFQ1RPUlksIHtcbiAgICAgIGZldGNoUG9saWN5OiAnbmV0d29yay1vbmx5JyxcbiAgICB9KVxuXG4gIGNvbnN0IHN5bmNVc2Vyc1BhZ2luYXRpb24gPSB1c2VDYWxsYmFjaygocGF5bG9hZD86IFVzZXJzRGlyZWN0b3J5RGF0YSB8IG51bGwpID0+IHtcbiAgICBjb25zdCBwYWdlID0gbm9ybWFsaXplUG9zaXRpdmVJbnQocGF5bG9hZD8udXNlcnM/LnBhZ2UsIDEpXG4gICAgY29uc3QgbGFzdFBhZ2UgPSBub3JtYWxpemVQb3NpdGl2ZUludChwYXlsb2FkPy51c2Vycz8ubGFzdFBhZ2UsIHBhZ2UpXG4gICAgc2V0Q3VycmVudFBhZ2UocGFnZSlcbiAgICBzZXRIYXNNb3JlKHBhZ2UgPCBsYXN0UGFnZSlcbiAgfSwgW10pXG5cbiAgY29uc3Qgc3luY0NsaWVudHNQYWdpbmF0aW9uID0gdXNlQ2FsbGJhY2soKHBheWxvYWQ/OiBTZWFyY2hDbGllbnRzRGF0YSB8IG51bGwpID0+IHtcbiAgICBjb25zdCBwYWdlID0gbm9ybWFsaXplUG9zaXRpdmVJbnQocGF5bG9hZD8uY2xpZW50cz8ucGFnZSwgMSlcbiAgICBjb25zdCBsYXN0UGFnZSA9IG5vcm1hbGl6ZVBvc2l0aXZlSW50KHBheWxvYWQ/LmNsaWVudHM/Lmxhc3RQYWdlLCBwYWdlKVxuICAgIHNldEN1cnJlbnRQYWdlKHBhZ2UpXG4gICAgc2V0SGFzTW9yZShwYWdlIDwgbGFzdFBhZ2UpXG4gIH0sIFtdKVxuXG4gIGNvbnN0IHN5bmNUYXNrRmFsbGJhY2tQYWdpbmF0aW9uID0gdXNlQ2FsbGJhY2soKHBheWxvYWQ/OiBUYXNrRmFtaWx5RGF0YSB8IG51bGwpID0+IHtcbiAgICBjb25zdCByYXdQYWdlID0gTnVtYmVyKHBheWxvYWQ/LnRhc2tGYW1pbHk/LnBhZ2UpXG4gICAgLy8gdGFza0ZhbWlseSB1c2EgcMOhZ2luYXMgMC1iYXNlZDsgY29udmVydGltb3MgYSAxLWJhc2VkIHBhcmEgY29uc2lzdGVuY2lhIGNvbiBlbCByZXN0b1xuICAgIGNvbnN0IHBhZ2UgPSBOdW1iZXIuaXNGaW5pdGUocmF3UGFnZSkgJiYgcmF3UGFnZSA+PSAwID8gTWF0aC5mbG9vcihyYXdQYWdlKSArIDEgOiAxXG4gICAgY29uc3QgbGFzdFBhZ2UgPSBub3JtYWxpemVQb3NpdGl2ZUludChwYXlsb2FkPy50YXNrRmFtaWx5Py5sYXN0UGFnZSwgcGFnZSlcbiAgICBzZXRDdXJyZW50UGFnZShwYWdlKVxuICAgIHNldEhhc01vcmUocGFnZSA8IGxhc3RQYWdlKVxuICB9LCBbXSlcblxuICBjb25zdCBzeW5jUHJvamVjdEZhbGxiYWNrUGFnaW5hdGlvbiA9IHVzZUNhbGxiYWNrKChwYXlsb2FkPzogUHJvamVjdHNGYWxsYmFja0RhdGEgfCBudWxsKSA9PiB7XG4gICAgY29uc3QgcGFnZSA9IG5vcm1hbGl6ZVBvc2l0aXZlSW50KHBheWxvYWQ/LnByb2plY3RzPy5wYWdlLCAxKVxuICAgIGNvbnN0IGxhc3RQYWdlID0gbm9ybWFsaXplUG9zaXRpdmVJbnQocGF5bG9hZD8ucHJvamVjdHM/Lmxhc3RQYWdlLCBwYWdlKVxuICAgIHNldEN1cnJlbnRQYWdlKHBhZ2UpXG4gICAgc2V0SGFzTW9yZShwYWdlIDwgbGFzdFBhZ2UpXG4gIH0sIFtdKVxuXG4gIGNvbnN0IFtmZXRjaFRhc2tGYW1pbHlGYWxsYmFja10gPSB1c2VMYXp5UXVlcnk8VGFza0ZhbWlseURhdGE+KFRBU0tfRkFNSUxZX0ZBTExCQUNLLCB7XG4gICAgZmV0Y2hQb2xpY3k6ICduZXR3b3JrLW9ubHknLFxuICB9KVxuXG4gIGNvbnN0IFtmZXRjaFByb2plY3RzRmFsbGJhY2tdID0gdXNlTGF6eVF1ZXJ5PFByb2plY3RzRmFsbGJhY2tEYXRhPihQUk9KRUNUU19GQUxMQkFDSywge1xuICAgIGZldGNoUG9saWN5OiAnbmV0d29yay1vbmx5JyxcbiAgfSlcblxuICBjb25zdCBmZXRjaFJlY2VudCA9IHVzZUNhbGxiYWNrKGFzeW5jICgpID0+IHtcbiAgICByZWNlbnRzRmV0Y2hHZW5lcmF0aW9uUmVmLmN1cnJlbnQgKz0gMVxuICAgIGNvbnN0IGdlbmVyYXRpb24gPSByZWNlbnRzRmV0Y2hHZW5lcmF0aW9uUmVmLmN1cnJlbnRcblxuICAgIGlmICh0eXBlID09PSAnbWNwJykge1xuICAgICAgY29uc3Qgc2x1Z3MgPSBzdGFibGVTY29wZS5tY3BTbHVncyA/PyBbXVxuICAgICAgc2V0TG9hZGluZyhmYWxzZSlcbiAgICAgIHNldEVycm9yKGZhbHNlKVxuICAgICAgc2V0SXRlbXMobWFwTWNwU2x1Z3NUb0l0ZW1zKHNsdWdzLCAnJykpXG4gICAgICBzZXRIaWRlUmVjZW50c0xhYmVsKGZhbHNlKVxuICAgICAgc2V0QWN0aXZlUGFnaW5hdGlvblNvdXJjZSgnbm9uZScpXG4gICAgICBzZXRIYXNNb3JlKGZhbHNlKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKHR5cGUgPT09ICdza2lsbCcpIHtcbiAgICAgIGlmIChzdGFibGVTY29wZS5za2lsbHMpIHtcbiAgICAgICAgc2V0TG9hZGluZyhmYWxzZSlcbiAgICAgICAgc2V0RXJyb3IoZmFsc2UpXG4gICAgICAgIHNldEl0ZW1zKG1hcFNraWxsc1RvSXRlbXMoc3RhYmxlU2NvcGUuc2tpbGxzLCAnJykpXG4gICAgICAgIHNldEhpZGVSZWNlbnRzTGFiZWwodHJ1ZSlcbiAgICAgICAgc2V0QWN0aXZlUGFnaW5hdGlvblNvdXJjZSgnbm9uZScpXG4gICAgICAgIHNldEhhc01vcmUoZmFsc2UpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgc2V0TG9hZGluZyh0cnVlKVxuICAgICAgc2V0RXJyb3IoZmFsc2UpXG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoTWFpYSh7IHBhdGg6ICdza2lsbHMnLCBtZXRob2Q6ICdHRVQnIH0pXG4gICAgICAgIGNvbnN0IGRhdGE6IFNraWxsc0FwaVJlc3BvbnNlID0gYXdhaXQgcmVzcG9uc2UuanNvbigpXG4gICAgICAgIGlmIChnZW5lcmF0aW9uICE9PSByZWNlbnRzRmV0Y2hHZW5lcmF0aW9uUmVmLmN1cnJlbnQpIHJldHVyblxuICAgICAgICBjb25zdCBza2lsbHM6IFNraWxsW10gPSBkYXRhLmRhdGEgPz8gW11cbiAgICAgICAgY29uc3QgY2FuUGFnaW5hdGUgPSAhIWRhdGEuaGFzX21vcmUgJiYgZGF0YS5uZXh0X29mZnNldCAhPSBudWxsXG4gICAgICAgIHNldEl0ZW1zKG1hcFNraWxsc1RvSXRlbXMoc2tpbGxzLCAnJykpXG4gICAgICAgIHNldEhpZGVSZWNlbnRzTGFiZWwodHJ1ZSlcbiAgICAgICAgc2V0SGFzTW9yZShjYW5QYWdpbmF0ZSlcbiAgICAgICAgc2V0Q3VycmVudFBhZ2UoZGF0YS5uZXh0X29mZnNldCA/PyAwKVxuICAgICAgICBzZXRBY3RpdmVQYWdpbmF0aW9uU291cmNlKGNhblBhZ2luYXRlID8gJ3NraWxscycgOiAnbm9uZScpXG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgaWYgKGdlbmVyYXRpb24gIT09IHJlY2VudHNGZXRjaEdlbmVyYXRpb25SZWYuY3VycmVudCkgcmV0dXJuXG4gICAgICAgIHNldEVycm9yKHRydWUpXG4gICAgICAgIHNldEl0ZW1zKFtdKVxuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgaWYgKGdlbmVyYXRpb24gPT09IHJlY2VudHNGZXRjaEdlbmVyYXRpb25SZWYuY3VycmVudCkgc2V0TG9hZGluZyhmYWxzZSlcbiAgICAgIH1cbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHNldExvYWRpbmcodHJ1ZSlcbiAgICBzZXRFcnJvcihmYWxzZSlcbiAgICB0cnkge1xuICAgICAgaWYgKHR5cGUgPT09ICdjbGllbnQnKSB7XG4gICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBnZXRSZWNlbnRDbGllbnRzKClcbiAgICAgICAgaWYgKGdlbmVyYXRpb24gIT09IHJlY2VudHNGZXRjaEdlbmVyYXRpb25SZWYuY3VycmVudCkgcmV0dXJuXG4gICAgICAgIGNvbnN0IG1hcHBlZCA9IChkYXRhID8/IFtdKS5tYXAoYyA9PiBtYXBDbGllbnRUb0l0ZW0oYywgJycpKVxuICAgICAgICBpZiAoZ2VuZXJhdGlvbiAhPT0gcmVjZW50c0ZldGNoR2VuZXJhdGlvblJlZi5jdXJyZW50KSByZXR1cm5cbiAgICAgICAgc2V0SXRlbXMobWFwcGVkKVxuICAgICAgICBzZXRIaWRlUmVjZW50c0xhYmVsKGZhbHNlKVxuICAgICAgICBzZXRBY3RpdmVQYWdpbmF0aW9uU291cmNlKCdub25lJylcbiAgICAgICAgc2V0SGFzTW9yZShmYWxzZSlcbiAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ3Byb2plY3QnKSB7XG4gICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBnZXRSZWNlbnRQcm9qZWN0cyhzdGFibGVTY29wZS5jbGllbnRJZCA/IHsgY2xpZW50SWQ6IHN0YWJsZVNjb3BlLmNsaWVudElkIH0gOiB1bmRlZmluZWQpXG4gICAgICAgIGlmIChnZW5lcmF0aW9uICE9PSByZWNlbnRzRmV0Y2hHZW5lcmF0aW9uUmVmLmN1cnJlbnQpIHJldHVyblxuICAgICAgICBsZXQgbWFwcGVkID0gKEFycmF5LmlzQXJyYXkoZGF0YSkgPyBkYXRhIDogW10pLm1hcChwID0+XG4gICAgICAgICAgbWFwU2VhcmNoVG9JdGVtKFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBpZDogcC5pZCxcbiAgICAgICAgICAgICAgdGl0bGU6IHAudGl0bGUsXG4gICAgICAgICAgICAgIHR5cGU6ICdwcm9qZWN0JyxcbiAgICAgICAgICAgICAgY2xpZW50SWQ6IHAuY2xpZW50SWQsXG4gICAgICAgICAgICAgIGZlZUlkOiBwLmZlZUlkLFxuICAgICAgICAgICAgICBjbGllbnROYW1lOiBwLmNsaWVudE5hbWUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgJ3Byb2plY3QnLFxuICAgICAgICAgICAgJydcbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgICAgaWYgKG1hcHBlZC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICBjb25zdCBhcmd1bWVudHNGaWx0ZXIgPVxuICAgICAgICAgICAgc3RhYmxlU2NvcGUuY2xpZW50SWQgIT09IG51bGwgJiYgc3RhYmxlU2NvcGUuY2xpZW50SWQgIT09IHVuZGVmaW5lZCAmJiBzdGFibGVTY29wZS5jbGllbnRJZCAhPT0gJydcbiAgICAgICAgICAgICAgPyB7IGNsaWVudF9pZDogW1N0cmluZyhzdGFibGVTY29wZS5jbGllbnRJZCldIH1cbiAgICAgICAgICAgICAgOiB1bmRlZmluZWRcbiAgICAgICAgICBjb25zdCB7IGRhdGE6IGZhbGxiYWNrRGF0YSB9ID0gYXdhaXQgZmV0Y2hQcm9qZWN0c0ZhbGxiYWNrKHtcbiAgICAgICAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICAgICAgICAuLi4oYXJndW1lbnRzRmlsdGVyID8geyBhcmd1bWVudHM6IGFyZ3VtZW50c0ZpbHRlciB9IDoge30pLFxuICAgICAgICAgICAgICBwYWdlOiAxLFxuICAgICAgICAgICAgICBwZXJQYWdlOiAyMCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSlcbiAgICAgICAgICBpZiAoZ2VuZXJhdGlvbiAhPT0gcmVjZW50c0ZldGNoR2VuZXJhdGlvblJlZi5jdXJyZW50KSByZXR1cm5cbiAgICAgICAgICBjb25zdCBmYWxsYmFja01hcHBlZCA9IChmYWxsYmFja0RhdGE/LnByb2plY3RzPy5kYXRhID8/IFtdKVxuICAgICAgICAgICAgLm1hcChub3JtYWxpemVQcm9qZWN0c0ZhbGxiYWNrUmVjb3JkKVxuICAgICAgICAgICAgLmZpbHRlcigoaXRlbSk6IGl0ZW0gaXMgUmF3U2VhcmNoUmVzdWx0ID0+IGl0ZW0gIT09IG51bGwpXG4gICAgICAgICAgICAubWFwKGl0ZW0gPT4gbWFwU2VhcmNoVG9JdGVtKGl0ZW0sICdwcm9qZWN0JywgJycpKVxuICAgICAgICAgIG1hcHBlZCA9IGZhbGxiYWNrTWFwcGVkXG4gICAgICAgICAgc2V0SGlkZVJlY2VudHNMYWJlbChmYWxsYmFja01hcHBlZC5sZW5ndGggPiAwKVxuICAgICAgICAgIHNldEFjdGl2ZVBhZ2luYXRpb25Tb3VyY2UoJ3Byb2plY3QtZmFsbGJhY2snKVxuICAgICAgICAgIHN5bmNQcm9qZWN0RmFsbGJhY2tQYWdpbmF0aW9uKGZhbGxiYWNrRGF0YSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzZXRIaWRlUmVjZW50c0xhYmVsKGZhbHNlKVxuICAgICAgICAgIHNldEFjdGl2ZVBhZ2luYXRpb25Tb3VyY2UoJ25vbmUnKVxuICAgICAgICAgIHNldEhhc01vcmUoZmFsc2UpXG4gICAgICAgIH1cbiAgICAgICAgaWYgKGdlbmVyYXRpb24gIT09IHJlY2VudHNGZXRjaEdlbmVyYXRpb25SZWYuY3VycmVudCkgcmV0dXJuXG4gICAgICAgIHNldEl0ZW1zKG1hcHBlZClcbiAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ3Rhc2snKSB7XG4gICAgICAgIGxldCByZWNlbnRUYXNrRmlsdGVyczogeyBwcm9qZWN0SWQ/OiBzdHJpbmcgfCBudW1iZXIgfCBudWxsOyBjbGllbnRJZD86IHN0cmluZyB8IG51bWJlciB8IG51bGwgfSB8IHVuZGVmaW5lZFxuICAgICAgICBpZiAoc3RhYmxlU2NvcGUuYWdlbnRFbnRpdHkgPT09ICdwcm9qZWN0Jykge1xuICAgICAgICAgIHJlY2VudFRhc2tGaWx0ZXJzID0geyBwcm9qZWN0SWQ6IHN0YWJsZVNjb3BlLnByb2plY3RJZCB9XG4gICAgICAgIH0gZWxzZSBpZiAoc3RhYmxlU2NvcGUuYWdlbnRFbnRpdHkgPT09ICdjbGllbnQnKSB7XG4gICAgICAgICAgcmVjZW50VGFza0ZpbHRlcnMgPSB7IGNsaWVudElkOiBzdGFibGVTY29wZS5jbGllbnRJZCB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IGdldFJlY2VudFRhc2tzKHJlY2VudFRhc2tGaWx0ZXJzKVxuICAgICAgICBpZiAoZ2VuZXJhdGlvbiAhPT0gcmVjZW50c0ZldGNoR2VuZXJhdGlvblJlZi5jdXJyZW50KSByZXR1cm5cbiAgICAgICAgbGV0IHRhc2tJdGVtcyA9IChkYXRhID8/IFtdKS5tYXAodGFzayA9PiBtYXBSZWNlbnRUYXNrVG9JdGVtKHRhc2ssICcnLCBzaG93UHJvamVjdE5hbWVJblRhc2tSb3cpKVxuICAgICAgICBpZiAodGFza0l0ZW1zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIGNvbnN0IGZpbHRlcjogUmVjb3JkPHN0cmluZywgc3RyaW5nW10+ID0ge31cbiAgICAgICAgICBpZiAoc3RhYmxlU2NvcGUucHJvamVjdElkICE9PSBudWxsICYmIHN0YWJsZVNjb3BlLnByb2plY3RJZCAhPT0gdW5kZWZpbmVkICYmIHN0YWJsZVNjb3BlLnByb2plY3RJZCAhPT0gJycpIHtcbiAgICAgICAgICAgIGZpbHRlci5wcm9qZWN0SWRzID0gW1N0cmluZyhzdGFibGVTY29wZS5wcm9qZWN0SWQpXVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoc3RhYmxlU2NvcGUuY2xpZW50SWQgIT09IG51bGwgJiYgc3RhYmxlU2NvcGUuY2xpZW50SWQgIT09IHVuZGVmaW5lZCAmJiBzdGFibGVTY29wZS5jbGllbnRJZCAhPT0gJycpIHtcbiAgICAgICAgICAgIGZpbHRlci5jbGllbnRJZHMgPSBbU3RyaW5nKHN0YWJsZVNjb3BlLmNsaWVudElkKV1cbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgeyBkYXRhOiBmYWxsYmFja0RhdGEgfSA9IGF3YWl0IGZldGNoVGFza0ZhbWlseUZhbGxiYWNrKHtcbiAgICAgICAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICAgICAgICBmaWx0ZXI6IHsgYXJjaGl2ZWQ6IGZhbHNlLCAuLi5maWx0ZXIgfSxcbiAgICAgICAgICAgICAgcGFnaW5hdGlvbjogeyBvZmZzZXQ6IDAsIHNpemU6IDIwIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0pXG4gICAgICAgICAgaWYgKGdlbmVyYXRpb24gIT09IHJlY2VudHNGZXRjaEdlbmVyYXRpb25SZWYuY3VycmVudCkgcmV0dXJuXG4gICAgICAgICAgdGFza0l0ZW1zID0gKGZhbGxiYWNrRGF0YT8udGFza0ZhbWlseT8uZGF0YSA/PyBbXSlcbiAgICAgICAgICAgIC5tYXAobm9ybWFsaXplVGFza0ZhbWlseVJlY29yZClcbiAgICAgICAgICAgIC5maWx0ZXIoKGl0ZW0pOiBpdGVtIGlzIFJlY2VudFRhc2tJdGVtID0+IGl0ZW0gIT09IG51bGwpXG4gICAgICAgICAgICAubWFwKHRhc2sgPT4gbWFwUmVjZW50VGFza1RvSXRlbSh0YXNrLCAnJywgc2hvd1Byb2plY3ROYW1lSW5UYXNrUm93KSlcbiAgICAgICAgICBzZXRIaWRlUmVjZW50c0xhYmVsKHRhc2tJdGVtcy5sZW5ndGggPiAwKVxuICAgICAgICAgIHNldEFjdGl2ZVBhZ2luYXRpb25Tb3VyY2UoJ3Rhc2stZmFsbGJhY2snKVxuICAgICAgICAgIHN5bmNUYXNrRmFsbGJhY2tQYWdpbmF0aW9uKGZhbGxiYWNrRGF0YSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzZXRIaWRlUmVjZW50c0xhYmVsKGZhbHNlKVxuICAgICAgICAgIHNldEFjdGl2ZVBhZ2luYXRpb25Tb3VyY2UoJ25vbmUnKVxuICAgICAgICAgIHNldEhhc01vcmUoZmFsc2UpXG4gICAgICAgIH1cbiAgICAgICAgaWYgKGdlbmVyYXRpb24gIT09IHJlY2VudHNGZXRjaEdlbmVyYXRpb25SZWYuY3VycmVudCkgcmV0dXJuXG4gICAgICAgIHNldEl0ZW1zKHRhc2tJdGVtcylcbiAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ3VzZXInKSB7XG4gICAgICAgIGNvbnN0IHsgZGF0YSB9ID0gYXdhaXQgZmV0Y2hVc2Vyc0RpcmVjdG9yeSh7XG4gICAgICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgICAgICBmaWx0ZXJzOiBidWlsZFVzZXJzRGlyZWN0b3J5RmlsdGVycygnJyksXG4gICAgICAgICAgICBwYWdlOiAxLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIGlmIChnZW5lcmF0aW9uICE9PSByZWNlbnRzRmV0Y2hHZW5lcmF0aW9uUmVmLmN1cnJlbnQpIHJldHVyblxuICAgICAgICBjb25zdCBtYXBwZWQgPSAoZGF0YT8udXNlcnM/LmRhdGEgPz8gW10pLm1hcCh1ID0+IG1hcFVzZXJUb0l0ZW0odSwgJycpKVxuICAgICAgICBpZiAoZ2VuZXJhdGlvbiAhPT0gcmVjZW50c0ZldGNoR2VuZXJhdGlvblJlZi5jdXJyZW50KSByZXR1cm5cbiAgICAgICAgY29uc3QgbWVJdGVtID0gbWFwQ29yVXNlclRvVXNlckl0ZW0oY29yVXNlciwgJycsIHQoJ2NvbnRleHRNZW50aW9uLm1lJykpXG4gICAgICAgIGNvbnN0IHdpdGhvdXRNZSA9IG1hcHBlZC5maWx0ZXIoaXRlbSA9PiBTdHJpbmcoaXRlbS5pZCkgIT09IFN0cmluZyhtZUl0ZW0uaWQpKVxuICAgICAgICBzZXRJdGVtcyhbbWVJdGVtLCAuLi53aXRob3V0TWVdKVxuICAgICAgICBzeW5jVXNlcnNQYWdpbmF0aW9uKGRhdGEpXG4gICAgICAgIHNldEhpZGVSZWNlbnRzTGFiZWwoZmFsc2UpXG4gICAgICAgIHNldEFjdGl2ZVBhZ2luYXRpb25Tb3VyY2UoJ3VzZXJzJylcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChnZW5lcmF0aW9uICE9PSByZWNlbnRzRmV0Y2hHZW5lcmF0aW9uUmVmLmN1cnJlbnQpIHJldHVyblxuICAgICAgICBzZXRJdGVtcyhbXSlcbiAgICAgICAgc2V0SGlkZVJlY2VudHNMYWJlbChmYWxzZSlcbiAgICAgICAgc2V0QWN0aXZlUGFnaW5hdGlvblNvdXJjZSgnbm9uZScpXG4gICAgICAgIHNldEhhc01vcmUoZmFsc2UpXG4gICAgICAgIHNldEN1cnJlbnRQYWdlKDEpXG4gICAgICB9XG4gICAgfSBjYXRjaCB7XG4gICAgICBpZiAoZ2VuZXJhdGlvbiAhPT0gcmVjZW50c0ZldGNoR2VuZXJhdGlvblJlZi5jdXJyZW50KSByZXR1cm5cbiAgICAgIHNldEVycm9yKHRydWUpXG4gICAgICBzZXRJdGVtcyhbXSlcbiAgICAgIHNldEhpZGVSZWNlbnRzTGFiZWwoZmFsc2UpXG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmIChnZW5lcmF0aW9uID09PSByZWNlbnRzRmV0Y2hHZW5lcmF0aW9uUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgc2V0TG9hZGluZyhmYWxzZSlcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtcbiAgICB0eXBlLFxuICAgIHN0YWJsZVNjb3BlLFxuICAgIGZldGNoVXNlcnNEaXJlY3RvcnksXG4gICAgZmV0Y2hUYXNrRmFtaWx5RmFsbGJhY2ssXG4gICAgZmV0Y2hQcm9qZWN0c0ZhbGxiYWNrLFxuICAgIHN5bmNVc2Vyc1BhZ2luYXRpb24sXG4gICAgc3luY1Rhc2tGYWxsYmFja1BhZ2luYXRpb24sXG4gICAgc3luY1Byb2plY3RGYWxsYmFja1BhZ2luYXRpb24sXG4gICAgc2hvd1Byb2plY3ROYW1lSW5UYXNrUm93LFxuICAgIGNvclVzZXIsXG4gICAgdCxcbiAgXSlcblxuICAvLyBEaXNwYXJhciBzZWFyY2ggYWwgY2FtYmlhciBkZWJvdW5jZWQgdmFsdWVcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBxID0gZGVib3VuY2VkU2VhcmNoVmFsdWUudHJpbSgpXG5cbiAgICBpZiAodHlwZSA9PT0gJ21jcCcpIHtcbiAgICAgIGNvbnN0IHNsdWdzID0gc3RhYmxlU2NvcGUubWNwU2x1Z3MgPz8gW11cbiAgICAgIHNldExvYWRpbmcoZmFsc2UpXG4gICAgICBzZXRFcnJvcihmYWxzZSlcbiAgICAgIHNldEl0ZW1zKG1hcE1jcFNsdWdzVG9JdGVtcyhzbHVncywgcSkpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAodHlwZSA9PT0gJ3NraWxsJykge1xuICAgICAgaWYgKHN0YWJsZVNjb3BlLnNraWxscykge1xuICAgICAgICBzZXRMb2FkaW5nKGZhbHNlKVxuICAgICAgICBzZXRFcnJvcihmYWxzZSlcbiAgICAgICAgc2V0SXRlbXMobWFwU2tpbGxzVG9JdGVtcyhzdGFibGVTY29wZS5za2lsbHMsIHEpKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIGlmICghcSkgcmV0dXJuXG4gICAgICByZWNlbnRzRmV0Y2hHZW5lcmF0aW9uUmVmLmN1cnJlbnQgKz0gMVxuICAgICAgY29uc3Qgc2VhcmNoR2VuID0gcmVjZW50c0ZldGNoR2VuZXJhdGlvblJlZi5jdXJyZW50XG4gICAgICBzZXRMb2FkaW5nKHRydWUpXG4gICAgICBzZXRFcnJvcihmYWxzZSlcbiAgICAgIGZldGNoTWFpYSh7XG4gICAgICAgIHBhdGg6IGBza2lsbHM/cT0ke2VuY29kZVVSSUNvbXBvbmVudChxKX1gLFxuICAgICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgfSlcbiAgICAgICAgLnRoZW4ociA9PiByLmpzb24oKSBhcyBQcm9taXNlPFNraWxsc0FwaVJlc3BvbnNlPilcbiAgICAgICAgLnRoZW4oZGF0YSA9PiB7XG4gICAgICAgICAgaWYgKHNlYXJjaEdlbiAhPT0gcmVjZW50c0ZldGNoR2VuZXJhdGlvblJlZi5jdXJyZW50KSByZXR1cm5cbiAgICAgICAgICBjb25zdCBjYW5QYWdpbmF0ZSA9ICEhZGF0YS5oYXNfbW9yZSAmJiBkYXRhLm5leHRfb2Zmc2V0ICE9IG51bGxcbiAgICAgICAgICBzZXRJdGVtcyhtYXBTa2lsbHNUb0l0ZW1zKGRhdGEuZGF0YSA/PyBbXSwgcSkpXG4gICAgICAgICAgc2V0SGFzTW9yZShjYW5QYWdpbmF0ZSlcbiAgICAgICAgICBzZXRDdXJyZW50UGFnZShkYXRhLm5leHRfb2Zmc2V0ID8/IDApXG4gICAgICAgICAgc2V0QWN0aXZlUGFnaW5hdGlvblNvdXJjZShjYW5QYWdpbmF0ZSA/ICdza2lsbHMnIDogJ25vbmUnKVxuICAgICAgICAgIHNldExvYWRpbmcoZmFsc2UpXG4gICAgICAgICAgc2V0RXJyb3IoZmFsc2UpXG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaCgoKSA9PiB7XG4gICAgICAgICAgaWYgKHNlYXJjaEdlbiAhPT0gcmVjZW50c0ZldGNoR2VuZXJhdGlvblJlZi5jdXJyZW50KSByZXR1cm5cbiAgICAgICAgICBzZXRFcnJvcih0cnVlKVxuICAgICAgICAgIHNldEl0ZW1zKFtdKVxuICAgICAgICAgIHNldExvYWRpbmcoZmFsc2UpXG4gICAgICAgIH0pXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoIXEpIHJldHVyblxuXG4gICAgaWYgKHR5cGUgPT09ICdjbGllbnQnKSB7XG4gICAgICBmZXRjaFNlYXJjaENsaWVudHMoe1xuICAgICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgICBmaWx0ZXI6IHsgbmFtZTogcSB9LFxuICAgICAgICAgIHBhZ2U6IDEsXG4gICAgICAgICAgcGVyUGFnZTogMjAsXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgICAgc2V0QWN0aXZlUGFnaW5hdGlvblNvdXJjZSgnY2xpZW50cy1zZWFyY2gnKVxuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ3VzZXInKSB7XG4gICAgICBmZXRjaFVzZXJzRGlyZWN0b3J5KHtcbiAgICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgICAgZmlsdGVyczogYnVpbGRVc2Vyc0RpcmVjdG9yeUZpbHRlcnMocSksXG4gICAgICAgICAgcGFnZTogMSxcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgICBzZXRBY3RpdmVQYWdpbmF0aW9uU291cmNlKCd1c2VycycpXG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGZpbHRlcnMgPSBidWlsZEZpbHRlcnNGb3JUeXBlKHR5cGUpXG4gICAgICBjb25zdCBleHRyYSA9IGJ1aWxkU2VhcmNoRW50aXRpZXNFeHRyYSh0eXBlLCBzdGFibGVTY29wZSlcbiAgICAgIGZldGNoU2VhcmNoRW50aXRpZXMoe1xuICAgICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgICBxLFxuICAgICAgICAgIGZpbHRlcnMsXG4gICAgICAgICAgLi4uKGV4dHJhICE9PSB1bmRlZmluZWQgPyB7IGV4dHJhIH0gOiB7fSksXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgICAgc2V0QWN0aXZlUGFnaW5hdGlvblNvdXJjZSgnbm9uZScpXG4gICAgICBzZXRIYXNNb3JlKGZhbHNlKVxuICAgIH1cbiAgfSwgW2RlYm91bmNlZFNlYXJjaFZhbHVlLCB0eXBlLCBzdGFibGVTY29wZSwgZmV0Y2hTZWFyY2hFbnRpdGllcywgZmV0Y2hTZWFyY2hDbGllbnRzLCBmZXRjaFVzZXJzRGlyZWN0b3J5XSlcblxuICAvLyBTaW5jcm9uaXphciByZXN1bHRhZG9zIGRlIHNlYXJjaFxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICh0eXBlID09PSAnbWNwJykgcmV0dXJuXG4gICAgaWYgKHR5cGUgPT09ICdza2lsbCcpIHJldHVyblxuXG4gICAgY29uc3QgcSA9IGRlYm91bmNlZFNlYXJjaFZhbHVlLnRyaW0oKVxuICAgIGlmICghcSkgcmV0dXJuXG4gICAgc2V0SGlkZVJlY2VudHNMYWJlbChmYWxzZSlcblxuICAgIGlmICh0eXBlID09PSAnY2xpZW50Jykge1xuICAgICAgc2V0TG9hZGluZyhjbGllbnRzTG9hZGluZylcbiAgICAgIGlmIChjbGllbnRzRXJyb3IpIHtcbiAgICAgICAgc2V0RXJyb3IodHJ1ZSlcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBpZiAoY2xpZW50c0RhdGE/LmNsaWVudHM/LmRhdGEpIHtcbiAgICAgICAgc2V0SXRlbXMoY2xpZW50c0RhdGEuY2xpZW50cy5kYXRhLm1hcChjID0+IG1hcENsaWVudFRvSXRlbShjLCBxKSkpXG4gICAgICAgIHN5bmNDbGllbnRzUGFnaW5hdGlvbihjbGllbnRzRGF0YSlcbiAgICAgICAgc2V0RXJyb3IoZmFsc2UpXG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAndXNlcicpIHtcbiAgICAgIHNldExvYWRpbmcodXNlcnNMb2FkaW5nKVxuICAgICAgaWYgKHVzZXJzRXJyb3IpIHtcbiAgICAgICAgc2V0RXJyb3IodHJ1ZSlcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBpZiAodXNlcnNEYXRhPy51c2Vycz8uZGF0YSkge1xuICAgICAgICBjb25zdCBtYXBwZWQgPSB1c2Vyc0RhdGEudXNlcnMuZGF0YS5tYXAodSA9PiBtYXBVc2VyVG9JdGVtKHUsIHEpKVxuICAgICAgICBjb25zdCBtZUlkID0gU3RyaW5nKGNvclVzZXIuaWQpXG4gICAgICAgIGNvbnN0IGhhc01lSW5SZXN1bHRzID0gbWFwcGVkLnNvbWUoaXRlbSA9PiBTdHJpbmcoaXRlbS5pZCkgPT09IG1lSWQpXG4gICAgICAgIGNvbnN0IHdpdGhvdXRNZSA9IG1hcHBlZC5maWx0ZXIoaXRlbSA9PiBTdHJpbmcoaXRlbS5pZCkgIT09IG1lSWQpXG4gICAgICAgIGNvbnN0IG1lSXRlbSA9IG1hcENvclVzZXJUb1VzZXJJdGVtKGNvclVzZXIsIHEsIHQoJ2NvbnRleHRNZW50aW9uLm1lJykpXG4gICAgICAgIHNldEl0ZW1zKGhhc01lSW5SZXN1bHRzID8gW21lSXRlbSwgLi4ud2l0aG91dE1lXSA6IG1hcHBlZClcbiAgICAgICAgc3luY1VzZXJzUGFnaW5hdGlvbih1c2Vyc0RhdGEpXG4gICAgICAgIHNldEVycm9yKGZhbHNlKVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBzZXRMb2FkaW5nKHNlYXJjaExvYWRpbmcpXG4gICAgICBpZiAoc2VhcmNoRXJyb3IpIHtcbiAgICAgICAgc2V0RXJyb3IodHJ1ZSlcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBpZiAoc2VhcmNoRGF0YT8uc2VhcmNoKSB7XG4gICAgICAgIHNldEl0ZW1zKHNlYXJjaERhdGEuc2VhcmNoLm1hcChyID0+IG1hcFNlYXJjaFRvSXRlbShyLCB0eXBlLCBxLCBzaG93UHJvamVjdE5hbWVJblRhc2tSb3cpKSlcbiAgICAgICAgc2V0SGFzTW9yZShmYWxzZSlcbiAgICAgICAgc2V0RXJyb3IoZmFsc2UpXG4gICAgICB9XG4gICAgfVxuICB9LCBbXG4gICAgc2VhcmNoRGF0YSxcbiAgICBjbGllbnRzRGF0YSxcbiAgICB1c2Vyc0RhdGEsXG4gICAgc2VhcmNoTG9hZGluZyxcbiAgICBjbGllbnRzTG9hZGluZyxcbiAgICB1c2Vyc0xvYWRpbmcsXG4gICAgc2VhcmNoRXJyb3IsXG4gICAgY2xpZW50c0Vycm9yLFxuICAgIHVzZXJzRXJyb3IsXG4gICAgZGVib3VuY2VkU2VhcmNoVmFsdWUsXG4gICAgdHlwZSxcbiAgICBzeW5jQ2xpZW50c1BhZ2luYXRpb24sXG4gICAgc3luY1VzZXJzUGFnaW5hdGlvbixcbiAgICBzaG93UHJvamVjdE5hbWVJblRhc2tSb3csXG4gICAgY29yVXNlcixcbiAgICB0LFxuICBdKVxuXG4gIGNvbnN0IGxvYWRNb3JlID0gdXNlQ2FsbGJhY2soYXN5bmMgKCkgPT4ge1xuICAgIGlmIChpc0xvYWRpbmdNb3JlIHx8ICFoYXNNb3JlIHx8IGFjdGl2ZVBhZ2luYXRpb25Tb3VyY2UgPT09ICdub25lJykge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGNvbnN0IHNhZmVDdXJyZW50UGFnZSA9IG5vcm1hbGl6ZVBvc2l0aXZlSW50KGN1cnJlbnRQYWdlLCAxKVxuICAgIGNvbnN0IG5leHRQYWdlID0gc2FmZUN1cnJlbnRQYWdlICsgMVxuICAgIGNvbnN0IHEgPSBkZWJvdW5jZWRTZWFyY2hWYWx1ZS50cmltKClcbiAgICBjb25zdCBsb2FkTW9yZUJhc2VsaW5lR2VuID0gcmVjZW50c0ZldGNoR2VuZXJhdGlvblJlZi5jdXJyZW50XG4gICAgc2V0SXNMb2FkaW5nTW9yZSh0cnVlKVxuICAgIHRyeSB7XG4gICAgICBpZiAoYWN0aXZlUGFnaW5hdGlvblNvdXJjZSA9PT0gJ3VzZXJzJykge1xuICAgICAgICBjb25zdCB7IGRhdGEgfSA9IGF3YWl0IGZldGNoVXNlcnNEaXJlY3Rvcnkoe1xuICAgICAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICAgICAgZmlsdGVyczogYnVpbGRVc2Vyc0RpcmVjdG9yeUZpbHRlcnMocSksXG4gICAgICAgICAgICBwYWdlOiBuZXh0UGFnZSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICBpZiAobG9hZE1vcmVCYXNlbGluZUdlbiAhPT0gcmVjZW50c0ZldGNoR2VuZXJhdGlvblJlZi5jdXJyZW50KSByZXR1cm5cbiAgICAgICAgY29uc3QgbmV4dEl0ZW1zID0gKGRhdGE/LnVzZXJzPy5kYXRhID8/IFtdKS5tYXAodSA9PiBtYXBVc2VyVG9JdGVtKHUsIHEpKVxuICAgICAgICBzZXRJdGVtcyhwcmV2ID0+IHtcbiAgICAgICAgICBpZiAoIXEpIHtcbiAgICAgICAgICAgIGNvbnN0IG1lSXRlbSA9XG4gICAgICAgICAgICAgIHByZXZbMF0/LnR5cGUgPT09ICd1c2VyJyA/IHByZXZbMF0gOiBtYXBDb3JVc2VyVG9Vc2VySXRlbShjb3JVc2VyLCAnJywgdCgnY29udGV4dE1lbnRpb24ubWUnKSlcbiAgICAgICAgICAgIGNvbnN0IGV4aXN0aW5nSWRzID0gbmV3IFNldChwcmV2Lm1hcChpdGVtID0+IFN0cmluZyhpdGVtLmlkKSkpXG4gICAgICAgICAgICBjb25zdCBhcHBlbmRlZCA9IG5leHRJdGVtcy5maWx0ZXIoaXRlbSA9PiAhZXhpc3RpbmdJZHMuaGFzKFN0cmluZyhpdGVtLmlkKSkpXG4gICAgICAgICAgICBjb25zdCB3aXRob3V0TWUgPSBwcmV2LmZpbHRlcihpdGVtID0+IFN0cmluZyhpdGVtLmlkKSAhPT0gU3RyaW5nKG1lSXRlbS5pZCkpXG4gICAgICAgICAgICByZXR1cm4gW21lSXRlbSwgLi4ud2l0aG91dE1lLCAuLi5hcHBlbmRlZF1cbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgZXhpc3RpbmdJZHMgPSBuZXcgU2V0KHByZXYubWFwKGl0ZW0gPT4gYCR7aXRlbS50eXBlfS0ke2l0ZW0uaWR9YCkpXG4gICAgICAgICAgY29uc3QgYXBwZW5kZWQgPSBuZXh0SXRlbXMuZmlsdGVyKGl0ZW0gPT4gIWV4aXN0aW5nSWRzLmhhcyhgJHtpdGVtLnR5cGV9LSR7aXRlbS5pZH1gKSlcbiAgICAgICAgICByZXR1cm4gWy4uLnByZXYsIC4uLmFwcGVuZGVkXVxuICAgICAgICB9KVxuICAgICAgICBzeW5jVXNlcnNQYWdpbmF0aW9uKGRhdGEpXG4gICAgICB9IGVsc2UgaWYgKGFjdGl2ZVBhZ2luYXRpb25Tb3VyY2UgPT09ICdjbGllbnRzLXNlYXJjaCcpIHtcbiAgICAgICAgY29uc3QgeyBkYXRhIH0gPSBhd2FpdCBmZXRjaFNlYXJjaENsaWVudHMoe1xuICAgICAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICAgICAgZmlsdGVyOiB7IG5hbWU6IHEgfSxcbiAgICAgICAgICAgIHBhZ2U6IG5leHRQYWdlLFxuICAgICAgICAgICAgcGVyUGFnZTogMjAsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgaWYgKGxvYWRNb3JlQmFzZWxpbmVHZW4gIT09IHJlY2VudHNGZXRjaEdlbmVyYXRpb25SZWYuY3VycmVudCkgcmV0dXJuXG4gICAgICAgIGNvbnN0IG5leHRJdGVtcyA9IChkYXRhPy5jbGllbnRzPy5kYXRhID8/IFtdKS5tYXAoYyA9PiBtYXBDbGllbnRUb0l0ZW0oYywgcSkpXG4gICAgICAgIHNldEl0ZW1zKHByZXYgPT4ge1xuICAgICAgICAgIGNvbnN0IGV4aXN0aW5nSWRzID0gbmV3IFNldChwcmV2Lm1hcChpdGVtID0+IGAke2l0ZW0udHlwZX0tJHtpdGVtLmlkfWApKVxuICAgICAgICAgIGNvbnN0IGFwcGVuZGVkID0gbmV4dEl0ZW1zLmZpbHRlcihpdGVtID0+ICFleGlzdGluZ0lkcy5oYXMoYCR7aXRlbS50eXBlfS0ke2l0ZW0uaWR9YCkpXG4gICAgICAgICAgcmV0dXJuIFsuLi5wcmV2LCAuLi5hcHBlbmRlZF1cbiAgICAgICAgfSlcbiAgICAgICAgc3luY0NsaWVudHNQYWdpbmF0aW9uKGRhdGEpXG4gICAgICB9IGVsc2UgaWYgKGFjdGl2ZVBhZ2luYXRpb25Tb3VyY2UgPT09ICd0YXNrLWZhbGxiYWNrJykge1xuICAgICAgICBjb25zdCBmaWx0ZXI6IFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPiA9IHt9XG4gICAgICAgIGlmIChzdGFibGVTY29wZS5wcm9qZWN0SWQgIT09IG51bGwgJiYgc3RhYmxlU2NvcGUucHJvamVjdElkICE9PSB1bmRlZmluZWQgJiYgc3RhYmxlU2NvcGUucHJvamVjdElkICE9PSAnJykge1xuICAgICAgICAgIGZpbHRlci5wcm9qZWN0SWRzID0gW1N0cmluZyhzdGFibGVTY29wZS5wcm9qZWN0SWQpXVxuICAgICAgICB9XG4gICAgICAgIGlmIChzdGFibGVTY29wZS5jbGllbnRJZCAhPT0gbnVsbCAmJiBzdGFibGVTY29wZS5jbGllbnRJZCAhPT0gdW5kZWZpbmVkICYmIHN0YWJsZVNjb3BlLmNsaWVudElkICE9PSAnJykge1xuICAgICAgICAgIGZpbHRlci5jbGllbnRJZHMgPSBbU3RyaW5nKHN0YWJsZVNjb3BlLmNsaWVudElkKV1cbiAgICAgICAgfVxuICAgICAgICBjb25zdCB7IGRhdGEgfSA9IGF3YWl0IGZldGNoVGFza0ZhbWlseUZhbGxiYWNrKHtcbiAgICAgICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgICAgIGZpbHRlcjogeyBhcmNoaXZlZDogZmFsc2UsIC4uLmZpbHRlciB9LFxuICAgICAgICAgICAgcGFnaW5hdGlvbjogeyBvZmZzZXQ6IChuZXh0UGFnZSAtIDEpICogMjAsIHNpemU6IDIwIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgaWYgKGxvYWRNb3JlQmFzZWxpbmVHZW4gIT09IHJlY2VudHNGZXRjaEdlbmVyYXRpb25SZWYuY3VycmVudCkgcmV0dXJuXG4gICAgICAgIGNvbnN0IG5leHRJdGVtcyA9IChkYXRhPy50YXNrRmFtaWx5Py5kYXRhID8/IFtdKVxuICAgICAgICAgIC5tYXAobm9ybWFsaXplVGFza0ZhbWlseVJlY29yZClcbiAgICAgICAgICAuZmlsdGVyKChpdGVtKTogaXRlbSBpcyBSZWNlbnRUYXNrSXRlbSA9PiBpdGVtICE9PSBudWxsKVxuICAgICAgICAgIC5tYXAodGFzayA9PiBtYXBSZWNlbnRUYXNrVG9JdGVtKHRhc2ssICcnLCBzaG93UHJvamVjdE5hbWVJblRhc2tSb3cpKVxuICAgICAgICBzZXRJdGVtcyhwcmV2ID0+IHtcbiAgICAgICAgICBjb25zdCBleGlzdGluZ0lkcyA9IG5ldyBTZXQocHJldi5tYXAoaXRlbSA9PiBgJHtpdGVtLnR5cGV9LSR7aXRlbS5pZH1gKSlcbiAgICAgICAgICBjb25zdCBhcHBlbmRlZCA9IG5leHRJdGVtcy5maWx0ZXIoaXRlbSA9PiAhZXhpc3RpbmdJZHMuaGFzKGAke2l0ZW0udHlwZX0tJHtpdGVtLmlkfWApKVxuICAgICAgICAgIHJldHVybiBbLi4ucHJldiwgLi4uYXBwZW5kZWRdXG4gICAgICAgIH0pXG4gICAgICAgIHN5bmNUYXNrRmFsbGJhY2tQYWdpbmF0aW9uKGRhdGEpXG4gICAgICB9IGVsc2UgaWYgKGFjdGl2ZVBhZ2luYXRpb25Tb3VyY2UgPT09ICdwcm9qZWN0LWZhbGxiYWNrJykge1xuICAgICAgICBjb25zdCBhcmd1bWVudHNGaWx0ZXIgPVxuICAgICAgICAgIHN0YWJsZVNjb3BlLmNsaWVudElkICE9PSBudWxsICYmIHN0YWJsZVNjb3BlLmNsaWVudElkICE9PSB1bmRlZmluZWQgJiYgc3RhYmxlU2NvcGUuY2xpZW50SWQgIT09ICcnXG4gICAgICAgICAgICA/IHsgY2xpZW50X2lkOiBbU3RyaW5nKHN0YWJsZVNjb3BlLmNsaWVudElkKV0gfVxuICAgICAgICAgICAgOiB1bmRlZmluZWRcbiAgICAgICAgY29uc3QgeyBkYXRhIH0gPSBhd2FpdCBmZXRjaFByb2plY3RzRmFsbGJhY2soe1xuICAgICAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICAgICAgLi4uKGFyZ3VtZW50c0ZpbHRlciA/IHsgYXJndW1lbnRzOiBhcmd1bWVudHNGaWx0ZXIgfSA6IHt9KSxcbiAgICAgICAgICAgIHBhZ2U6IG5leHRQYWdlLFxuICAgICAgICAgICAgcGVyUGFnZTogMjAsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgaWYgKGxvYWRNb3JlQmFzZWxpbmVHZW4gIT09IHJlY2VudHNGZXRjaEdlbmVyYXRpb25SZWYuY3VycmVudCkgcmV0dXJuXG4gICAgICAgIGNvbnN0IG5leHRJdGVtcyA9IChkYXRhPy5wcm9qZWN0cz8uZGF0YSA/PyBbXSlcbiAgICAgICAgICAubWFwKG5vcm1hbGl6ZVByb2plY3RzRmFsbGJhY2tSZWNvcmQpXG4gICAgICAgICAgLmZpbHRlcigoaXRlbSk6IGl0ZW0gaXMgUmF3U2VhcmNoUmVzdWx0ID0+IGl0ZW0gIT09IG51bGwpXG4gICAgICAgICAgLm1hcChpdGVtID0+IG1hcFNlYXJjaFRvSXRlbShpdGVtLCAncHJvamVjdCcsICcnKSlcbiAgICAgICAgc2V0SXRlbXMocHJldiA9PiB7XG4gICAgICAgICAgY29uc3QgZXhpc3RpbmdJZHMgPSBuZXcgU2V0KHByZXYubWFwKGl0ZW0gPT4gYCR7aXRlbS50eXBlfS0ke2l0ZW0uaWR9YCkpXG4gICAgICAgICAgY29uc3QgYXBwZW5kZWQgPSBuZXh0SXRlbXMuZmlsdGVyKGl0ZW0gPT4gIWV4aXN0aW5nSWRzLmhhcyhgJHtpdGVtLnR5cGV9LSR7aXRlbS5pZH1gKSlcbiAgICAgICAgICByZXR1cm4gWy4uLnByZXYsIC4uLmFwcGVuZGVkXVxuICAgICAgICB9KVxuICAgICAgICBzeW5jUHJvamVjdEZhbGxiYWNrUGFnaW5hdGlvbihkYXRhKVxuICAgICAgfSBlbHNlIGlmIChhY3RpdmVQYWdpbmF0aW9uU291cmNlID09PSAnc2tpbGxzJykge1xuICAgICAgICBjb25zdCBza2lsbE9mZnNldCA9IGN1cnJlbnRQYWdlXG4gICAgICAgIGNvbnN0IHNraWxsUSA9IGRlYm91bmNlZFNlYXJjaFZhbHVlLnRyaW0oKVxuICAgICAgICBjb25zdCBza2lsbFBhdGggPSBza2lsbFFcbiAgICAgICAgICA/IGBza2lsbHM/b2Zmc2V0PSR7c2tpbGxPZmZzZXR9JnE9JHtlbmNvZGVVUklDb21wb25lbnQoc2tpbGxRKX1gXG4gICAgICAgICAgOiBgc2tpbGxzP29mZnNldD0ke3NraWxsT2Zmc2V0fWBcbiAgICAgICAgY29uc3Qgc2tpbGxSZXNwb25zZSA9IGF3YWl0IGZldGNoTWFpYSh7IHBhdGg6IHNraWxsUGF0aCwgbWV0aG9kOiAnR0VUJyB9KVxuICAgICAgICBjb25zdCBza2lsbERhdGE6IFNraWxsc0FwaVJlc3BvbnNlID0gYXdhaXQgc2tpbGxSZXNwb25zZS5qc29uKClcbiAgICAgICAgaWYgKGxvYWRNb3JlQmFzZWxpbmVHZW4gIT09IHJlY2VudHNGZXRjaEdlbmVyYXRpb25SZWYuY3VycmVudCkgcmV0dXJuXG4gICAgICAgIGNvbnN0IGNhblBhZ2luYXRlID0gISFza2lsbERhdGEuaGFzX21vcmUgJiYgc2tpbGxEYXRhLm5leHRfb2Zmc2V0ICE9IG51bGxcbiAgICAgICAgY29uc3QgbmV4dEl0ZW1zID0gbWFwU2tpbGxzVG9JdGVtcyhza2lsbERhdGEuZGF0YSA/PyBbXSwgc2tpbGxRKVxuICAgICAgICBzZXRJdGVtcyhwcmV2ID0+IHtcbiAgICAgICAgICBjb25zdCBleGlzdGluZ0lkcyA9IG5ldyBTZXQocHJldi5tYXAoaXRlbSA9PiBgJHtpdGVtLnR5cGV9LSR7aXRlbS5pZH1gKSlcbiAgICAgICAgICBjb25zdCBhcHBlbmRlZCA9IG5leHRJdGVtcy5maWx0ZXIoaXRlbSA9PiAhZXhpc3RpbmdJZHMuaGFzKGAke2l0ZW0udHlwZX0tJHtpdGVtLmlkfWApKVxuICAgICAgICAgIHJldHVybiBbLi4ucHJldiwgLi4uYXBwZW5kZWRdXG4gICAgICAgIH0pXG4gICAgICAgIHNldEhhc01vcmUoY2FuUGFnaW5hdGUpXG4gICAgICAgIHNldEN1cnJlbnRQYWdlKHNraWxsRGF0YS5uZXh0X29mZnNldCA/PyAwKVxuICAgICAgICBzZXRBY3RpdmVQYWdpbmF0aW9uU291cmNlKGNhblBhZ2luYXRlID8gJ3NraWxscycgOiAnbm9uZScpXG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBpZiAobG9hZE1vcmVCYXNlbGluZUdlbiAhPT0gcmVjZW50c0ZldGNoR2VuZXJhdGlvblJlZi5jdXJyZW50KSByZXR1cm5cbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1t1c2VFbnRpdHlTZWFyY2hdIGxvYWRNb3JlIGZhaWxlZCcsIHtcbiAgICAgICAgc291cmNlOiBhY3RpdmVQYWdpbmF0aW9uU291cmNlLFxuICAgICAgICBuZXh0UGFnZSxcbiAgICAgICAgZXJyb3I6IGVycixcbiAgICAgIH0pXG4gICAgICAvLyBFdml0YSBsb29wIGRlIHJlaW50ZW50b3MgYXV0b23DoXRpY29zIHBvciBzY3JvbGwgY3VhbmRvIGJhY2tlbmQgZXN0w6EgY2HDrWRvIChlai4gNTAzKS5cbiAgICAgIHNldEVycm9yKHRydWUpXG4gICAgICBzZXRIYXNNb3JlKGZhbHNlKVxuICAgIH0gZmluYWxseSB7XG4gICAgICBzZXRJc0xvYWRpbmdNb3JlKGZhbHNlKVxuICAgIH1cbiAgfSwgW1xuICAgIGlzTG9hZGluZ01vcmUsXG4gICAgaGFzTW9yZSxcbiAgICBjdXJyZW50UGFnZSxcbiAgICBhY3RpdmVQYWdpbmF0aW9uU291cmNlLFxuICAgIGRlYm91bmNlZFNlYXJjaFZhbHVlLFxuICAgIGZldGNoVXNlcnNEaXJlY3RvcnksXG4gICAgZmV0Y2hTZWFyY2hDbGllbnRzLFxuICAgIGZldGNoVGFza0ZhbWlseUZhbGxiYWNrLFxuICAgIGZldGNoUHJvamVjdHNGYWxsYmFjayxcbiAgICBzdGFibGVTY29wZS5wcm9qZWN0SWQsXG4gICAgc3RhYmxlU2NvcGUuY2xpZW50SWQsXG4gICAgc2hvd1Byb2plY3ROYW1lSW5UYXNrUm93LFxuICAgIGNvclVzZXIsXG4gICAgdCxcbiAgICBzeW5jQ2xpZW50c1BhZ2luYXRpb24sXG4gICAgc3luY1VzZXJzUGFnaW5hdGlvbixcbiAgICBzeW5jVGFza0ZhbGxiYWNrUGFnaW5hdGlvbixcbiAgICBzeW5jUHJvamVjdEZhbGxiYWNrUGFnaW5hdGlvbixcbiAgXSlcblxuICAvLyBNYW50ZW5lbW9zIHVuYSByZWYgYSBsYSDDumx0aW1hIGZldGNoUmVjZW50IHBhcmEgcXVlIGVsIGVmZmVjdCBkZSByZWNlbnRzIG5vIHNlXG4gIC8vIHJlLWRpc3BhcmUgc29sbyBwb3JxdWUgY2FtYmnDsyBsYSBpZGVudGlkYWQgZGUgZmV0Y2hSZWNlbnQgKHNjb3BlL2NvclVzZXIvdCkuXG4gIGNvbnN0IGZldGNoUmVjZW50UmVmID0gdXNlUmVmKGZldGNoUmVjZW50KVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGZldGNoUmVjZW50UmVmLmN1cnJlbnQgPSBmZXRjaFJlY2VudFxuICB9LCBbZmV0Y2hSZWNlbnRdKVxuXG4gIC8vIFRyaWdnZXIgZGUgcmVjZW50czogbG9zIHJlY2VudHMgZGUgdXNlciBOTyBkZXBlbmRlbiBkZWwgc2NvcGUsIGFzw60gcXVlIGNhbWJpYXJcbiAgLy8gZGUgcHJveWVjdG8vY2xpZW50ZSBubyBkZWJlIHJlLWZldGNoZWFybG9zLiBMb3MgdGlwb3Mgc2NvcGVhZG9zIChwcm9qZWN0L3Rhc2spIHPDrS5cbiAgY29uc3QgcmVjZW50c1RyaWdnZXIgPVxuICAgIHR5cGUgPT09ICd1c2VyJyB8fCB0eXBlID09PSAnc2tpbGwnXG4gICAgICA/IHR5cGVcbiAgICAgIDogYCR7dHlwZX18JHtzdGFibGVTY29wZS5wcm9qZWN0SWQgPz8gJyd9fCR7c3RhYmxlU2NvcGUuY2xpZW50SWQgPz8gJyd9fCR7c3RhYmxlU2NvcGUuYWdlbnRFbnRpdHkgPz8gJyd9fCR7bWNwU2x1Z3NLZXl9YFxuXG4gIC8vIEN1YW5kbyBzZSBsaW1waWEgZWwgc2VhcmNoLCB2b2x2ZXIgYSByZWNlbnRzXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFkZWJvdW5jZWRTZWFyY2hWYWx1ZS50cmltKCkpIHtcbiAgICAgIGZldGNoUmVjZW50UmVmLmN1cnJlbnQoKVxuICAgIH1cbiAgfSwgW2RlYm91bmNlZFNlYXJjaFZhbHVlLCByZWNlbnRzVHJpZ2dlcl0pXG5cbiAgcmV0dXJuIHtcbiAgICBpdGVtcyxcbiAgICBsb2FkaW5nLFxuICAgIGVycm9yLFxuICAgIGhpZGVSZWNlbnRzTGFiZWwsXG4gICAgaGFzTW9yZSxcbiAgICBpc0xvYWRpbmdNb3JlLFxuICAgIGxvYWRNb3JlLFxuICAgIHNlYXJjaFZhbHVlLFxuICAgIHVwZGF0ZVNlYXJjaFZhbHVlOiBzZXRTZWFyY2hWYWx1ZSxcbiAgICBmZXRjaFJlY2VudCxcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLFNBQVNBLFlBQVksUUFBUSxnQkFBZ0I7QUFDN0MsU0FBU0MsV0FBVyxFQUFFQyxTQUFTLEVBQUVDLE9BQU8sRUFBRUMsTUFBTSxFQUFFQyxRQUFRLFFBQVEsT0FBTztBQUN6RSxTQUFTQyxnQkFBZ0IsUUFBUSxpREFBaUQ7QUFDbEYsU0FBU0MsaUJBQWlCLFFBQVEsbURBQW1EO0FBQ3JGLFNBQVNDLGNBQWMsUUFBUSw2Q0FBNkM7QUFFNUUsU0FBU0MsT0FBTyxRQUFRLHFCQUFxQjtBQUM3QyxTQUFTQyxpQkFBaUIsRUFBRUMsZUFBZSxFQUFFQyxvQkFBb0IsUUFBUSxxQ0FBcUM7QUFDOUcsU0FBU0MsY0FBYyxRQUFRLHFDQUFxQztBQUNwRSxTQUFTQyxlQUFlLFFBQVEsdUNBQXVDO0FBQ3ZFLFNBQVNDLHdCQUF3QixRQUFRLHFCQUFxQjtBQUM5RCxTQUFTQyxXQUFXLFFBQVEsZUFBZTtBQUMzQyxTQUFTQyxJQUFJLFFBQVEsUUFBUTtBQUk3QixTQUFTQyxTQUFTLFFBQVEseUJBQXlCO0FBc0ZuRCxJQUFNQyxvQkFBb0IsR0FBRyxTQUF2QkEsb0JBQW9CQSxDQUFJQyxLQUFjLEVBQUVDLFFBQWdCLEVBQWE7RUFDekUsSUFBTUMsTUFBTSxHQUFHQyxNQUFNLENBQUNILEtBQUssQ0FBQztFQUM1QixJQUFJLENBQUNHLE1BQU0sQ0FBQ0MsUUFBUSxDQUFDRixNQUFNLENBQUMsRUFBRSxPQUFPRCxRQUFRO0VBQzdDLElBQU1JLFVBQVUsR0FBR0MsSUFBSSxDQUFDQyxLQUFLLENBQUNMLE1BQU0sQ0FBQztFQUNyQyxPQUFPRyxVQUFVLEdBQUcsQ0FBQyxHQUFHQSxVQUFVLEdBQUdKLFFBQVE7QUFDL0MsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBcUJBLElBQU1PLG9CQUEwRSxHQUFHO0VBQ2pGQyxPQUFPLEVBQUU7SUFBRUEsT0FBTyxFQUFFLE1BQU07SUFBRUMsUUFBUSxFQUFFO0VBQU0sQ0FBQztFQUM3Q0MsSUFBSSxFQUFFO0lBQUVBLElBQUksRUFBRSxNQUFNO0lBQUVELFFBQVEsRUFBRTtFQUFRO0FBQzFDLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFNRSwyQkFBMkIsR0FBRyxTQUE5QkEsMkJBQTJCQSxDQUFJQyxLQUF5QixFQUFvQztFQUNoRyxJQUFNQyxTQUFTLEdBQ2IsQ0FBQUQsS0FBSyxhQUFMQSxLQUFLLHVCQUFMQSxLQUFLLENBQUVFLFFBQVEsTUFBS0MsU0FBUyxJQUFJLENBQUFILEtBQUssYUFBTEEsS0FBSyx1QkFBTEEsS0FBSyxDQUFFRSxRQUFRLE1BQUssSUFBSSxJQUFJLENBQUFGLEtBQUssYUFBTEEsS0FBSyx1QkFBTEEsS0FBSyxDQUFFRSxRQUFRLE1BQUssRUFBRSxHQUFHRSxNQUFNLENBQUNKLEtBQUssQ0FBQ0UsUUFBUSxDQUFDLEdBQUcsSUFBSTtFQUNySCxJQUFNRyxVQUFVLEdBQ2QsQ0FBQUwsS0FBSyxhQUFMQSxLQUFLLHVCQUFMQSxLQUFLLENBQUVNLFNBQVMsTUFBS0gsU0FBUyxJQUFJLENBQUFILEtBQUssYUFBTEEsS0FBSyx1QkFBTEEsS0FBSyxDQUFFTSxTQUFTLE1BQUssSUFBSSxJQUFJLENBQUFOLEtBQUssYUFBTEEsS0FBSyx1QkFBTEEsS0FBSyxDQUFFTSxTQUFTLE1BQUssRUFBRSxHQUNsRkYsTUFBTSxDQUFDSixLQUFLLENBQUNNLFNBQVMsQ0FBQyxHQUN2QixJQUFJO0VBRVYsSUFBTUMsV0FBVyxHQUFHUCxLQUFLLGFBQUxBLEtBQUssdUJBQUxBLEtBQUssQ0FBRU8sV0FBVztFQUN0QyxJQUFNQyxPQUFzQyxHQUFHLEVBQUU7RUFFakQsSUFBTUMsVUFBVSxHQUFHLFNBQWJBLFVBQVVBLENBQUEsRUFBUztJQUN2QixJQUFJUixTQUFTLEVBQUVPLE9BQU8sQ0FBQ0UsSUFBSSxDQUFDO01BQUVSLFFBQVEsRUFBRUQ7SUFBVSxDQUFDLENBQUM7RUFDdEQsQ0FBQztFQUNELElBQU1VLFdBQVcsR0FBRyxTQUFkQSxXQUFXQSxDQUFBLEVBQVM7SUFDeEIsSUFBSU4sVUFBVSxFQUFFRyxPQUFPLENBQUNFLElBQUksQ0FBQztNQUFFSixTQUFTLEVBQUVEO0lBQVcsQ0FBQyxDQUFDO0VBQ3pELENBQUM7RUFFRCxJQUFJRSxXQUFXLEtBQUssU0FBUyxFQUFFO0lBQzdCLElBQUlGLFVBQVUsRUFBRTtNQUNkTSxXQUFXLENBQUMsQ0FBQztJQUNmLENBQUMsTUFBTSxJQUFJVixTQUFTLEVBQUU7TUFDcEJRLFVBQVUsQ0FBQyxDQUFDO0lBQ2Q7RUFDRixDQUFDLE1BQU0sSUFBSUYsV0FBVyxLQUFLLFFBQVEsRUFBRTtJQUNuQ0UsVUFBVSxDQUFDLENBQUM7SUFDWkUsV0FBVyxDQUFDLENBQUM7RUFDZixDQUFDLE1BQU07SUFDTEYsVUFBVSxDQUFDLENBQUM7SUFDWkUsV0FBVyxDQUFDLENBQUM7RUFDZjtFQUVBLE9BQU9ILE9BQU87QUFDaEIsQ0FBQztBQUVELElBQU1JLG9CQUFvQixHQUFHLFNBQXZCQSxvQkFBb0JBLENBQUlaLEtBQXlCLEVBQXlCO0VBQzlFLElBQU1RLE9BQU8sR0FBR1QsMkJBQTJCLENBQUNDLEtBQUssQ0FBQztFQUNsRCxJQUFJUSxPQUFPLENBQUNLLE1BQU0sS0FBSyxDQUFDLEVBQUUsT0FBT1YsU0FBUztFQUMxQyxPQUFPVyxJQUFJLENBQUNDLFNBQVMsQ0FBQ1AsT0FBTyxDQUFDO0FBQ2hDLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFNUSx1QkFBdUIsR0FBRyxTQUExQkEsdUJBQXVCQSxDQUFJaEIsS0FBeUIsRUFBeUI7RUFDakYsSUFBTUMsU0FBUyxHQUNiLENBQUFELEtBQUssYUFBTEEsS0FBSyx1QkFBTEEsS0FBSyxDQUFFRSxRQUFRLE1BQUtDLFNBQVMsSUFBSSxDQUFBSCxLQUFLLGFBQUxBLEtBQUssdUJBQUxBLEtBQUssQ0FBRUUsUUFBUSxNQUFLLElBQUksSUFBSSxDQUFBRixLQUFLLGFBQUxBLEtBQUssdUJBQUxBLEtBQUssQ0FBRUUsUUFBUSxNQUFLLEVBQUUsR0FBR0UsTUFBTSxDQUFDSixLQUFLLENBQUNFLFFBQVEsQ0FBQyxHQUFHLElBQUk7RUFDckgsSUFBSSxDQUFDRCxTQUFTLEVBQUUsT0FBT0UsU0FBUztFQUNoQyxPQUFPVyxJQUFJLENBQUNDLFNBQVMsQ0FBQyxDQUFDO0lBQUViLFFBQVEsRUFBRUQ7RUFBVSxDQUFDLENBQUMsQ0FBQztBQUNsRCxDQUFDO0FBRUQsSUFBTWdCLHdCQUF3QixHQUFHLFNBQTNCQSx3QkFBd0JBLENBQUlDLElBQTBCLEVBQUVsQixLQUF5QixFQUF5QjtFQUM5RyxJQUFJa0IsSUFBSSxLQUFLLE1BQU0sRUFBRSxPQUFPTixvQkFBb0IsQ0FBQ1osS0FBSyxDQUFDO0VBQ3ZELElBQUlrQixJQUFJLEtBQUssU0FBUyxFQUFFLE9BQU9GLHVCQUF1QixDQUFDaEIsS0FBSyxDQUFDO0VBQzdELE9BQU9HLFNBQVM7QUFDbEIsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQSxJQUFNZ0IsbUJBQW1CLEdBQUcsU0FBdEJBLG1CQUFtQkEsQ0FBSUQsSUFBMEIsRUFBYTtFQUNsRSxJQUFJQSxJQUFJLEtBQUssU0FBUyxFQUFFO0lBQ3RCLE9BQU9KLElBQUksQ0FBQ0MsU0FBUyxDQUFDcEIsb0JBQW9CLENBQUNDLE9BQU8sQ0FBQztFQUNyRDtFQUNBLE9BQU9rQixJQUFJLENBQUNDLFNBQVMsQ0FBQ3BCLG9CQUFvQixDQUFDRyxJQUFJLENBQUM7QUFDbEQsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFNc0IsMEJBQTBCLEdBQUcsU0FBN0JBLDBCQUEwQkEsQ0FBSUMsQ0FBUyxFQUFhO0VBQ3hELElBQU1DLElBQTZCLEdBQUc7SUFDcENDLFlBQVksRUFBRSxJQUFJO0lBQ2xCQyxTQUFTLEVBQUU7RUFDYixDQUFDO0VBQ0QsSUFBTUMsUUFBUSxHQUFHSixDQUFDLENBQUNLLElBQUksQ0FBQyxDQUFDO0VBQ3pCLElBQUlELFFBQVEsRUFBRTtJQUNaSCxJQUFJLENBQUNLLFdBQVcsR0FBR0YsUUFBUTtFQUM3QjtFQUNBLE9BQU9YLElBQUksQ0FBQ0MsU0FBUyxDQUFDTyxJQUFJLENBQUM7QUFDN0IsQ0FBQztBQUVELElBQU1NLGNBQWMsR0FBRyxTQUFqQkEsY0FBY0EsQ0FBSUMsSUFBWSxFQUFFQyxXQUFtQixFQUFLO0VBQzVELElBQUksQ0FBQ0EsV0FBVyxFQUFFLE9BQU8zQixTQUFTO0VBQ2xDLElBQU00QixHQUFHLEdBQUdGLElBQUksQ0FBQ0csV0FBVyxDQUFDLENBQUMsQ0FBQ0MsT0FBTyxDQUFDSCxXQUFXLENBQUNFLFdBQVcsQ0FBQyxDQUFDLENBQUM7RUFDakUsSUFBSUQsR0FBRyxHQUFHLENBQUMsRUFBRSxPQUFPNUIsU0FBUztFQUM3QixPQUFPO0lBQUUrQixLQUFLLEVBQUVILEdBQUc7SUFBRWxCLE1BQU0sRUFBRWlCLFdBQVcsQ0FBQ2pCO0VBQU8sQ0FBQztBQUNuRCxDQUFDO0FBRUQsSUFBTXNCLFlBQVksR0FBRyxTQUFmQSxZQUFZQSxDQUFBO0VBQUEsU0FBQUMsSUFBQSxHQUFBQyxTQUFBLENBQUF4QixNQUFBLEVBQVV5QixNQUFNLE9BQUFDLEtBQUEsQ0FBQUgsSUFBQSxHQUFBSSxJQUFBLE1BQUFBLElBQUEsR0FBQUosSUFBQSxFQUFBSSxJQUFBO0lBQU5GLE1BQU0sQ0FBQUUsSUFBQSxJQUFBSCxTQUFBLENBQUFHLElBQUE7RUFBQTtFQUFBLE9BQ2hDRixNQUFNLENBQUNHLElBQUksQ0FBQyxVQUFBdEQsS0FBSztJQUFBLE9BQUlBLEtBQUssS0FBS2dCLFNBQVMsSUFBSWhCLEtBQUssS0FBSyxJQUFJO0VBQUEsRUFBQztBQUFBO0FBRTdELElBQU11RCxzQkFBc0IsR0FBRyxTQUF6QkEsc0JBQXNCQSxDQUFJdkQsS0FBYyxFQUFhO0VBQ3pELElBQUksT0FBT0EsS0FBSyxLQUFLLFFBQVEsRUFBRSxPQUFPLEVBQUU7RUFDeEMsT0FBT0EsS0FBSyxDQUFDdUMsSUFBSSxDQUFDLENBQUM7QUFDckIsQ0FBQztBQUVELElBQU1pQixtQkFBbUIsR0FBRyxTQUF0QkEsbUJBQW1CQSxDQUFJQyxZQUF5RCxFQUFhO0VBQ2pHLElBQUksT0FBT0EsWUFBWSxLQUFLLFFBQVEsRUFBRSxPQUFPQSxZQUFZLENBQUNsQixJQUFJLENBQUMsQ0FBQztFQUNoRSxJQUFJa0IsWUFBWSxJQUFJQyxPQUFBLENBQU9ELFlBQVksTUFBSyxRQUFRLElBQUksTUFBTSxJQUFJQSxZQUFZLEVBQUU7SUFDOUUsT0FBT0Ysc0JBQXNCLENBQUNFLFlBQVksQ0FBQ0UsSUFBSSxDQUFDO0VBQ2xEO0VBQ0EsT0FBTyxFQUFFO0FBQ1gsQ0FBQztBQUVELElBQU1DLGVBQWUsR0FBRyxTQUFsQkEsZUFBZUEsQ0FBSUMsQ0FBWSxFQUFFbEIsV0FBbUI7RUFBQSxJQUFBbUIsaUJBQUEsRUFBQUMsa0JBQUE7RUFBQSxPQUEwQjtJQUNsRkMsRUFBRSxFQUFFSCxDQUFDLENBQUNHLEVBQUU7SUFDUmpDLElBQUksRUFBRSxRQUFRO0lBQ2RrQyxPQUFPLEVBQUVKLENBQUMsQ0FBQ0YsSUFBSTtJQUNmTyxnQkFBZ0IsRUFBRXpCLGNBQWMsQ0FBQ29CLENBQUMsQ0FBQ0YsSUFBSSxFQUFFaEIsV0FBVyxDQUFDO0lBQ3JEd0IsVUFBVSxFQUFFO01BQ1ZDLEtBQUssR0FBQU4saUJBQUEsR0FBRUQsQ0FBQyxDQUFDUSxjQUFjLGNBQUFQLGlCQUFBLGNBQUFBLGlCQUFBLEdBQUk5QyxTQUFTO01BQ3BDc0QsVUFBVSxFQUFFO0lBQ2QsQ0FBQztJQUNEQyxHQUFHLEVBQUU7TUFDSFAsRUFBRSxFQUFFSCxDQUFDLENBQUNHLEVBQUU7TUFDUkwsSUFBSSxFQUFFRSxDQUFDLENBQUNGLElBQUk7TUFDWlUsY0FBYyxHQUFBTixrQkFBQSxHQUFFRixDQUFDLENBQUNRLGNBQWMsY0FBQU4sa0JBQUEsY0FBQUEsa0JBQUEsR0FBSTtJQUN0QztFQUNGLENBQUM7QUFBQSxDQUFDO0FBRUYsSUFBTVMsYUFBYSxHQUFHLFNBQWhCQSxhQUFhQSxDQUFJQyxDQUFtQixFQUFFOUIsV0FBbUIsRUFBeUI7RUFBQSxJQUFBK0IsWUFBQSxFQUFBQyxXQUFBLEVBQUFDLFVBQUEsRUFBQUMsb0JBQUEsRUFBQUMsZUFBQSxFQUFBQyxRQUFBO0VBQ3RGLElBQU1DLFFBQVEsR0FBRyxHQUFBQyxNQUFBLEVBQUFQLFlBQUEsR0FBR0QsQ0FBQyxDQUFDUyxTQUFTLGNBQUFSLFlBQUEsY0FBQUEsWUFBQSxHQUFJLEVBQUUsT0FBQU8sTUFBQSxFQUFBTixXQUFBLEdBQUlGLENBQUMsQ0FBQ1UsUUFBUSxjQUFBUixXQUFBLGNBQUFBLFdBQUEsR0FBSSxFQUFFLEVBQUdwQyxJQUFJLENBQUMsQ0FBQztFQUNsRSxJQUFNMEIsT0FBTyxHQUFHZSxRQUFRLElBQUlQLENBQUMsQ0FBQ1csS0FBSyxJQUFJbkUsTUFBTSxDQUFDd0QsQ0FBQyxDQUFDVCxFQUFFLENBQUM7RUFFbkQsT0FBTztJQUNMQSxFQUFFLEVBQUVTLENBQUMsQ0FBQ1QsRUFBRTtJQUNSakMsSUFBSSxFQUFFLE1BQU07SUFDWmtDLE9BQU8sRUFBUEEsT0FBTztJQUNQQyxnQkFBZ0IsRUFBRXpCLGNBQWMsQ0FBQ3dCLE9BQU8sRUFBRXRCLFdBQVcsQ0FBQztJQUN0RDRCLEdBQUcsRUFBRTtNQUNIUCxFQUFFLEVBQUVTLENBQUMsQ0FBQ1QsRUFBRTtNQUNSTCxJQUFJLEVBQUVNLE9BQU87TUFDYm9CLE9BQU8sR0FBQVQsVUFBQSxHQUFFSCxDQUFDLENBQUNZLE9BQU8sY0FBQVQsVUFBQSxjQUFBQSxVQUFBLEdBQUksSUFBSTtNQUMxQlUsWUFBWSxHQUFBVCxvQkFBQSxJQUFBQyxlQUFBLEdBQUVMLENBQUMsQ0FBQ2hCLFlBQVksY0FBQXFCLGVBQUEsdUJBQWRBLGVBQUEsQ0FBZ0JuQixJQUFJLGNBQUFrQixvQkFBQSxjQUFBQSxvQkFBQSxHQUFJLElBQUk7TUFDMUNPLEtBQUssR0FBQUwsUUFBQSxHQUFFTixDQUFDLENBQUNXLEtBQUssY0FBQUwsUUFBQSxjQUFBQSxRQUFBLEdBQUk7SUFDcEI7RUFDRixDQUFDO0FBQ0gsQ0FBQztBQUVELElBQU1RLG9CQUFvQixHQUFHLFNBQXZCQSxvQkFBb0JBLENBQ3hCQyxJQUFnQyxFQUNoQzdDLFdBQW1CLEVBQ25COEMsT0FBZSxFQUNRO0VBQUEsSUFBQUMsZUFBQSxFQUFBQyxjQUFBO0VBQ3ZCLElBQU1YLFFBQVEsR0FBRyxHQUFBQyxNQUFBLEVBQUFTLGVBQUEsR0FBR0YsSUFBSSxDQUFDTixTQUFTLGNBQUFRLGVBQUEsY0FBQUEsZUFBQSxHQUFJLEVBQUUsT0FBQVQsTUFBQSxFQUFBVSxjQUFBLEdBQUlILElBQUksQ0FBQ0wsUUFBUSxjQUFBUSxjQUFBLGNBQUFBLGNBQUEsR0FBSSxFQUFFLEVBQUdwRCxJQUFJLENBQUMsQ0FBQztFQUN4RTtFQUNBLElBQU1xRCxZQUFZLEdBQUdwQyxtQkFBbUIsQ0FBQ2dDLElBQUksQ0FBQ0ssYUFBYSxDQUFDLElBQUksSUFBSTtFQUNwRSxJQUFNVCxLQUFLLEdBQUc3QixzQkFBc0IsQ0FBQ2lDLElBQUksQ0FBQ0osS0FBSyxDQUFDLElBQUksSUFBSTtFQUV4RCxPQUFPO0lBQ0xwQixFQUFFLEVBQUV3QixJQUFJLENBQUN4QixFQUFFO0lBQ1hqQyxJQUFJLEVBQUUsTUFBTTtJQUNaa0MsT0FBTyxFQUFFd0IsT0FBTztJQUNoQnZCLGdCQUFnQixFQUFFekIsY0FBYyxDQUFDZ0QsT0FBTyxFQUFFOUMsV0FBVyxDQUFDO0lBQ3RENEIsR0FBRyxFQUFFO01BQ0hQLEVBQUUsRUFBRXdCLElBQUksQ0FBQ3hCLEVBQUU7TUFDWEwsSUFBSSxFQUFFcUIsUUFBUSxJQUFJL0QsTUFBTSxDQUFDdUUsSUFBSSxDQUFDeEIsRUFBRSxDQUFDO01BQ2pDcUIsT0FBTyxFQUFFRyxJQUFJLENBQUNILE9BQU8sSUFBSSxJQUFJO01BQzdCQyxZQUFZLEVBQUVNLFlBQVk7TUFDMUJSLEtBQUssRUFBTEE7SUFDRjtFQUNGLENBQUM7QUFDSCxDQUFDO0FBRUQsSUFBTVUsbUJBQW1CLEdBQUcsU0FBdEJBLG1CQUFtQkEsQ0FDdkJuRixJQUFvQixFQUNwQmdDLFdBQW1CLEVBRUk7RUFBQSxJQUFBb0QsaUJBQUE7RUFBQSxJQUR2QkMsd0JBQXdCLEdBQUE5QyxTQUFBLENBQUF4QixNQUFBLFFBQUF3QixTQUFBLFFBQUFsQyxTQUFBLEdBQUFrQyxTQUFBLE1BQUcsSUFBSTtFQUUvQixJQUFNZSxPQUFPLEdBQUl0RCxJQUFJLENBQUNzRixLQUFLLElBQUl0RixJQUFJLENBQUNzRixLQUFLLENBQUMxRCxJQUFJLENBQUMsQ0FBQyxJQUFLdEIsTUFBTSxDQUFDTixJQUFJLENBQUNxRCxFQUFFLENBQUM7RUFDcEUsSUFBTWtDLFdBQVcsR0FBR0Ysd0JBQXdCLElBQUFELGlCQUFBLEdBQUlwRixJQUFJLENBQUN1RixXQUFXLGNBQUFILGlCQUFBLGNBQUFBLGlCQUFBLEdBQUksSUFBSSxHQUFJLElBQUk7RUFDaEYsT0FBTztJQUNML0IsRUFBRSxFQUFFckQsSUFBSSxDQUFDcUQsRUFBRTtJQUNYakMsSUFBSSxFQUFFLE1BQU07SUFDWmtDLE9BQU8sRUFBUEEsT0FBTztJQUNQQyxnQkFBZ0IsRUFBRXpCLGNBQWMsQ0FBQ3dCLE9BQU8sRUFBRXRCLFdBQVcsQ0FBQztJQUN0RHdCLFVBQVUsRUFBRStCLFdBQVcsR0FBRztNQUFFQyxNQUFNLEVBQUVEO0lBQVksQ0FBQyxHQUFHbEYsU0FBUztJQUM3RHVELEdBQUcsRUFBRTtNQUNIUCxFQUFFLEVBQUVyRCxJQUFJLENBQUNxRCxFQUFFO01BQ1hMLElBQUksRUFBRU0sT0FBTztNQUNiaUMsV0FBVyxFQUFYQTtJQUNGO0VBQ0YsQ0FBQztBQUNILENBQUM7QUFFRCxJQUFNRSx5QkFBeUIsR0FBRyxTQUE1QkEseUJBQXlCQSxDQUFJQyxNQUF3QixFQUE0QjtFQUFBLElBQUFDLGFBQUEsRUFBQUMsYUFBQSxFQUFBQyxlQUFBLEVBQUFDLGNBQUEsRUFBQUMsZUFBQTtFQUNyRixJQUFhQyxZQUFZLEdBQUtOLE1BQU0sQ0FBNUJPLEdBQUc7RUFDWCxJQUFNNUMsRUFBRSxHQUFHMkMsWUFBWTtFQUN2QixJQUFJM0MsRUFBRSxLQUFLaEQsU0FBUyxJQUFJZ0QsRUFBRSxLQUFLLElBQUksSUFBSS9DLE1BQU0sQ0FBQytDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxPQUFPLElBQUk7RUFDckUsSUFBTWlDLEtBQUssR0FBRyxFQUFBSyxhQUFBLEdBQUNELE1BQU0sQ0FBQ0osS0FBSyxjQUFBSyxhQUFBLGNBQUFBLGFBQUEsR0FBSSxFQUFFLEVBQUUvRCxJQUFJLENBQUMsQ0FBQyxJQUFJdEIsTUFBTSxDQUFDK0MsRUFBRSxDQUFDO0VBQ3ZELElBQU1rQyxXQUFXLElBQUFLLGFBQUEsR0FBR3ZELFlBQVksRUFBQXdELGVBQUEsR0FBQ0gsTUFBTSxDQUFDNUYsT0FBTyxjQUFBK0YsZUFBQSx1QkFBZEEsZUFBQSxDQUFnQjdDLElBQUksR0FBQThDLGNBQUEsR0FBRUosTUFBTSxDQUFDUSxNQUFNLGNBQUFKLGNBQUEsdUJBQWJBLGNBQUEsQ0FBZVIsS0FBSyxDQUFDLGNBQUFNLGFBQUEsY0FBQUEsYUFBQSxHQUFJLElBQUk7RUFDcEYsSUFBTU8sU0FBUyxHQUFHLENBQUMsQ0FBQzlELFlBQVksQ0FBQ3FELE1BQU0sQ0FBQ1UsVUFBVSxHQUFBTCxlQUFBLEdBQUVMLE1BQU0sQ0FBQ1EsTUFBTSxjQUFBSCxlQUFBLHVCQUFiQSxlQUFBLENBQWUxQyxFQUFFLENBQUM7RUFDdEUsT0FBTztJQUNMQSxFQUFFLEVBQUZBLEVBQUU7SUFDRmlDLEtBQUssRUFBTEEsS0FBSztJQUNMbEUsSUFBSSxFQUFFK0UsU0FBUyxHQUFHLFNBQVMsR0FBRyxNQUFNO0lBQ3BDWixXQUFXLEVBQVhBO0VBQ0YsQ0FBQztBQUNILENBQUM7QUFFRCxJQUFNYywrQkFBK0IsR0FBRyxTQUFsQ0EsK0JBQStCQSxDQUFJWCxNQUE2QixFQUE2QjtFQUFBLElBQUFZLFlBQUEsRUFBQUMsY0FBQSxFQUFBQyxjQUFBLEVBQUFDLG1CQUFBLEVBQUFDLGVBQUE7RUFDakcsSUFBUXJELEVBQUUsR0FBS3FDLE1BQU0sQ0FBYnJDLEVBQUU7RUFDVixJQUFJQSxFQUFFLEtBQUtoRCxTQUFTLElBQUlnRCxFQUFFLEtBQUssSUFBSSxJQUFJL0MsTUFBTSxDQUFDK0MsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLE9BQU8sSUFBSTtFQUNyRSxJQUFNaUMsS0FBSyxJQUFBZ0IsWUFBQSxHQUFHWixNQUFNLENBQUMxQyxJQUFJLGNBQUFzRCxZQUFBLGNBQUFBLFlBQUEsR0FBSSxFQUFFO0VBQy9CLElBQU1sRyxRQUFRLElBQUFtRyxjQUFBLEdBQUdsRSxZQUFZLENBQUNxRCxNQUFNLENBQUN0RixRQUFRLEdBQUFvRyxjQUFBLEdBQUVkLE1BQU0sQ0FBQ2lCLE1BQU0sY0FBQUgsY0FBQSx1QkFBYkEsY0FBQSxDQUFlbkQsRUFBRSxDQUFDLGNBQUFrRCxjQUFBLGNBQUFBLGNBQUEsR0FBSSxJQUFJO0VBQ3pFLElBQU1LLFVBQVUsSUFBQUgsbUJBQUEsSUFBQUMsZUFBQSxHQUFHaEIsTUFBTSxDQUFDaUIsTUFBTSxjQUFBRCxlQUFBLHVCQUFiQSxlQUFBLENBQWUxRCxJQUFJLGNBQUF5RCxtQkFBQSxjQUFBQSxtQkFBQSxHQUFJLElBQUk7RUFDOUMsT0FBTztJQUNMcEQsRUFBRSxFQUFGQSxFQUFFO0lBQ0ZpQyxLQUFLLEVBQUxBLEtBQUs7SUFDTGxFLElBQUksRUFBRSxTQUFTO0lBQ2ZoQixRQUFRLEVBQVJBLFFBQVE7SUFDUndHLFVBQVUsRUFBVkE7RUFDRixDQUFDO0FBQ0gsQ0FBQztBQUVELElBQU1DLGVBQWUsR0FBRyxTQUFsQkEsZUFBZUEsQ0FDbkJDLENBQWtCLEVBQ2xCMUYsSUFBdUIsRUFDdkJZLFdBQW1CLEVBRUk7RUFBQSxJQUFBK0UsY0FBQSxFQUFBQyxlQUFBLEVBQUFDLFdBQUEsRUFBQUMsYUFBQSxFQUFBQyxRQUFBLEVBQUFDLGFBQUE7RUFBQSxJQUR2Qi9CLHdCQUF3QixHQUFBOUMsU0FBQSxDQUFBeEIsTUFBQSxRQUFBd0IsU0FBQSxRQUFBbEMsU0FBQSxHQUFBa0MsU0FBQSxNQUFHLElBQUk7RUFFL0IsSUFBTWUsT0FBTyxHQUFHd0QsQ0FBQyxDQUFDeEIsS0FBSyxJQUFJd0IsQ0FBQyxDQUFDdkIsV0FBVyxJQUFJLEVBQUU7RUFDOUMsSUFBSUMsTUFBaUM7RUFDckMsSUFBSXBFLElBQUksS0FBSyxTQUFTLEVBQUVvRSxNQUFNLEdBQUdzQixDQUFDLENBQUNGLFVBQVUsTUFDeEMsSUFBSXhGLElBQUksS0FBSyxNQUFNLEVBQUVvRSxNQUFNLEdBQUduRixTQUFTLE1BQ3ZDbUYsTUFBTSxJQUFBdUIsY0FBQSxHQUFHRCxDQUFDLENBQUN2QixXQUFXLGNBQUF3QixjQUFBLGNBQUFBLGNBQUEsR0FBSUQsQ0FBQyxDQUFDRixVQUFVO0VBRTNDLElBQU1WLE1BQU0sR0FBRzlFLElBQUksS0FBSyxNQUFNLEdBQUcwRixDQUFDLENBQUNaLE1BQU0sR0FBRyxJQUFJO0VBQ2hELElBQU1DLFNBQVMsR0FBRy9FLElBQUksS0FBSyxNQUFNLElBQUk4RSxNQUFNLElBQUksSUFBSSxJQUFJQSxNQUFNLENBQUM3QyxFQUFFLElBQUksSUFBSSxJQUFJL0MsTUFBTSxDQUFDNEYsTUFBTSxDQUFDN0MsRUFBRSxDQUFDLENBQUN0QyxNQUFNLEdBQUcsQ0FBQztFQUV4RyxJQUFNc0csZUFBZSxHQUFHakcsSUFBSSxLQUFLLE1BQU0sSUFBSSxDQUFDaUUsd0JBQXdCLEdBQUcsSUFBSSxJQUFBMkIsZUFBQSxHQUFJRixDQUFDLENBQUN2QixXQUFXLGNBQUF5QixlQUFBLGNBQUFBLGVBQUEsR0FBSSxJQUFLO0VBRXJHLE9BQU87SUFDTDNELEVBQUUsRUFBRXlELENBQUMsQ0FBQ3pELEVBQUU7SUFDUmpDLElBQUksRUFBSkEsSUFBSTtJQUNKa0MsT0FBTyxFQUFQQSxPQUFPO0lBQ1BDLGdCQUFnQixFQUFFekIsY0FBYyxDQUFDd0IsT0FBTyxFQUFFdEIsV0FBVyxDQUFDO0lBQ3REd0IsVUFBVSxFQUFFZ0MsTUFBTSxHQUFHO01BQUVBLE1BQU0sRUFBTkE7SUFBTyxDQUFDLEdBQUduRixTQUFTO0lBQzNDdUQsR0FBRyxFQUFFO01BQ0hQLEVBQUUsRUFBRXlELENBQUMsQ0FBQ3pELEVBQUU7TUFDUkwsSUFBSSxFQUFFTSxPQUFPO01BQ2JsRCxRQUFRLEdBQUE2RyxXQUFBLEdBQUVILENBQUMsQ0FBQzFHLFFBQVEsY0FBQTZHLFdBQUEsY0FBQUEsV0FBQSxHQUFJLElBQUk7TUFDNUJMLFVBQVUsR0FBQU0sYUFBQSxHQUFFSixDQUFDLENBQUNGLFVBQVUsY0FBQU0sYUFBQSxjQUFBQSxhQUFBLEdBQUksSUFBSTtNQUNoQzNCLFdBQVcsRUFBRThCLGVBQWU7TUFDNUJDLEtBQUssR0FBQUgsUUFBQSxHQUFFTCxDQUFDLENBQUNRLEtBQUssY0FBQUgsUUFBQSxjQUFBQSxRQUFBLEdBQUksSUFBSTtNQUN0QkksUUFBUSxFQUFFcEIsU0FBUyxHQUFHRCxNQUFNLENBQUM3QyxFQUFFLEdBQUcsSUFBSTtNQUN0Q21FLFdBQVcsRUFBRXJCLFNBQVMsR0FBRyxFQUFBaUIsYUFBQSxHQUFBbEIsTUFBTSxDQUFDWixLQUFLLGNBQUE4QixhQUFBLHVCQUFaQSxhQUFBLENBQWN4RixJQUFJLENBQUMsQ0FBQyxLQUFJLElBQUksR0FBRztJQUMxRDtFQUNGLENBQUM7QUFDSCxDQUFDO0FBRUQsSUFBTTZGLHFCQUFxQixHQUFHLFNBQXhCQSxxQkFBcUJBLENBQUlDLElBQVk7RUFBQSxPQUN6Q0EsSUFBSSxDQUFDQyxPQUFPLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDQSxPQUFPLENBQUMsT0FBTyxFQUFFLFVBQUFDLEtBQUk7SUFBQSxPQUFJQSxLQUFJLENBQUNDLFdBQVcsQ0FBQyxDQUFDO0VBQUEsRUFBQztBQUFBO0FBSXRFLElBQU1DLGdCQUFnQixHQUFHLFNBQW5CQSxnQkFBZ0JBLENBQUlDLE1BQWUsRUFBRS9GLFdBQW1CLEVBQTJCO0VBQ3ZGLElBQU1ULENBQUMsR0FBR1MsV0FBVyxDQUFDSixJQUFJLENBQUMsQ0FBQyxDQUFDTSxXQUFXLENBQUMsQ0FBQztFQUMxQyxJQUFNOEYsUUFBUSxHQUFHekcsQ0FBQyxHQUFHd0csTUFBTSxDQUFDRSxNQUFNLENBQUMsVUFBQUMsQ0FBQztJQUFBLE9BQUlBLENBQUMsQ0FBQ2xGLElBQUksQ0FBQ2QsV0FBVyxDQUFDLENBQUMsQ0FBQ2lHLFFBQVEsQ0FBQzVHLENBQUMsQ0FBQztFQUFBLEVBQUMsR0FBR3dHLE1BQU07RUFDbEYsT0FBT0MsUUFBUSxDQUFDSSxHQUFHLENBQUMsVUFBQUMsS0FBSztJQUFBLE9BQUs7TUFDNUJoRixFQUFFLEVBQUVnRixLQUFLLENBQUNoRixFQUFFO01BQ1pqQyxJQUFJLEVBQUUsT0FBZ0I7TUFDdEJrQyxPQUFPLEVBQUUrRSxLQUFLLENBQUNyRixJQUFJO01BQ25CTyxnQkFBZ0IsRUFBRXpCLGNBQWMsQ0FBQ3VHLEtBQUssQ0FBQ3JGLElBQUksRUFBRWhCLFdBQVcsQ0FBQztNQUN6RDRCLEdBQUcsRUFBRTtRQUNIUCxFQUFFLEVBQUVnRixLQUFLLENBQUNoRixFQUFFO1FBQ1pMLElBQUksRUFBRXFGLEtBQUssQ0FBQ3JGO01BQ2Q7SUFDRixDQUFDO0VBQUEsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVELElBQU1zRixrQkFBa0IsR0FBRyxTQUFyQkEsa0JBQWtCQSxDQUFJQyxLQUFlLEVBQUV2RyxXQUFtQixFQUEyQjtFQUN6RixJQUFNVCxDQUFDLEdBQUdTLFdBQVcsQ0FBQ0osSUFBSSxDQUFDLENBQUMsQ0FBQ00sV0FBVyxDQUFDLENBQUM7RUFDMUMsSUFBSThGLFFBQVEsR0FBR08sS0FBSztFQUNwQixJQUFJaEgsQ0FBQyxFQUFFO0lBQ0x5RyxRQUFRLEdBQUdPLEtBQUssQ0FBQ04sTUFBTSxDQUFDLFVBQUFDLENBQUMsRUFBSTtNQUMzQixJQUFNNUUsT0FBTyxHQUFHbUUscUJBQXFCLENBQUNTLENBQUMsQ0FBQztNQUN4QyxPQUFPQSxDQUFDLENBQUNoRyxXQUFXLENBQUMsQ0FBQyxDQUFDaUcsUUFBUSxDQUFDNUcsQ0FBQyxDQUFDLElBQUkrQixPQUFPLENBQUNwQixXQUFXLENBQUMsQ0FBQyxDQUFDaUcsUUFBUSxDQUFDNUcsQ0FBQyxDQUFDO0lBQ3pFLENBQUMsQ0FBQztFQUNKO0VBQ0EsT0FBT3lHLFFBQVEsQ0FBQ0ksR0FBRyxDQUFDLFVBQUFWLElBQUksRUFBSTtJQUMxQixJQUFNcEUsT0FBTyxHQUFHbUUscUJBQXFCLENBQUNDLElBQUksQ0FBQztJQUMzQyxPQUFPO01BQ0xyRSxFQUFFLEVBQUVxRSxJQUFJO01BQ1J0RyxJQUFJLEVBQUUsS0FBYztNQUNwQmtDLE9BQU8sRUFBUEEsT0FBTztNQUNQQyxnQkFBZ0IsRUFBRXpCLGNBQWMsQ0FBQ3dCLE9BQU8sRUFBRXRCLFdBQVcsQ0FBQztNQUN0RDRCLEdBQUcsRUFBRTtRQUNIUCxFQUFFLEVBQUVxRSxJQUFJO1FBQ1IxRSxJQUFJLEVBQUVNO01BQ1I7SUFDRixDQUFDO0VBQ0gsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUVELE9BQU8sSUFBTWtGLGVBQWUsR0FBRyxTQUFsQkEsZUFBZUEsQ0FBSXBILElBQXVCLEVBQUVsQixLQUF5QixFQUFLO0VBQUEsSUFBQXVJLGVBQUEsRUFBQUMsYUFBQSxFQUFBQyxxQkFBQSxFQUFBQyxxQkFBQSxFQUFBQyxxQkFBQTtFQUNyRixJQUFNQyxPQUFPLEdBQUdwSyxPQUFPLENBQUMsQ0FBQztFQUN6QixJQUFBcUssS0FBQSxHQUFjN0osSUFBSSxDQUFDLENBQUM7SUFBWjhKLENBQUMsR0FBQUQsS0FBQSxDQUFEQyxDQUFDO0VBQ1Q7RUFDQSxJQUFNQyx5QkFBeUIsR0FBRzVLLE1BQU0sQ0FBQyxDQUFDLENBQUM7RUFDM0MsSUFBQTZLLFNBQUEsR0FBc0M1SyxRQUFRLENBQUMsRUFBRSxDQUFDO0lBQUE2SyxVQUFBLEdBQUFDLGNBQUEsQ0FBQUYsU0FBQTtJQUEzQ2xILFdBQVcsR0FBQW1ILFVBQUE7SUFBRUUsY0FBYyxHQUFBRixVQUFBO0VBQ2xDLElBQU1HLG9CQUFvQixHQUFHckssV0FBVyxDQUFDK0MsV0FBVyxFQUFFaEQsd0JBQXdCLENBQUM7RUFDL0UsSUFBQXVLLFVBQUEsR0FBMEJqTCxRQUFRLENBQXVCLEVBQUUsQ0FBQztJQUFBa0wsVUFBQSxHQUFBSixjQUFBLENBQUFHLFVBQUE7SUFBckRFLEtBQUssR0FBQUQsVUFBQTtJQUFFRSxRQUFRLEdBQUFGLFVBQUE7RUFDdEIsSUFBQUcsVUFBQSxHQUE4QnJMLFFBQVEsQ0FBQyxLQUFLLENBQUM7SUFBQXNMLFVBQUEsR0FBQVIsY0FBQSxDQUFBTyxVQUFBO0lBQXRDRSxPQUFPLEdBQUFELFVBQUE7SUFBRUUsVUFBVSxHQUFBRixVQUFBO0VBQzFCLElBQUFHLFVBQUEsR0FBMEJ6TCxRQUFRLENBQUMsS0FBSyxDQUFDO0lBQUEwTCxVQUFBLEdBQUFaLGNBQUEsQ0FBQVcsVUFBQTtJQUFsQ0UsS0FBSyxHQUFBRCxVQUFBO0lBQUVFLFFBQVEsR0FBQUYsVUFBQTtFQUN0QixJQUFBRyxVQUFBLEdBQWdEN0wsUUFBUSxDQUFDLEtBQUssQ0FBQztJQUFBOEwsVUFBQSxHQUFBaEIsY0FBQSxDQUFBZSxVQUFBO0lBQXhERSxnQkFBZ0IsR0FBQUQsVUFBQTtJQUFFRSxtQkFBbUIsR0FBQUYsVUFBQTtFQUM1QyxJQUFBRyxVQUFBLEdBQThCak0sUUFBUSxDQUFDLEtBQUssQ0FBQztJQUFBa00sV0FBQSxHQUFBcEIsY0FBQSxDQUFBbUIsVUFBQTtJQUF0Q0UsT0FBTyxHQUFBRCxXQUFBO0lBQUVFLFVBQVUsR0FBQUYsV0FBQTtFQUMxQixJQUFBRyxXQUFBLEdBQTBDck0sUUFBUSxDQUFDLEtBQUssQ0FBQztJQUFBc00sV0FBQSxHQUFBeEIsY0FBQSxDQUFBdUIsV0FBQTtJQUFsREUsYUFBYSxHQUFBRCxXQUFBO0lBQUVFLGdCQUFnQixHQUFBRixXQUFBO0VBQ3RDLElBQUFHLFdBQUEsR0FBc0N6TSxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQUEwTSxXQUFBLEdBQUE1QixjQUFBLENBQUEyQixXQUFBO0lBQTFDRSxXQUFXLEdBQUFELFdBQUE7SUFBRUUsY0FBYyxHQUFBRixXQUFBO0VBQ2xDLElBQUFHLFdBQUEsR0FBNEQ3TSxRQUFRLENBQW1CLE1BQU0sQ0FBQztJQUFBOE0sV0FBQSxHQUFBaEMsY0FBQSxDQUFBK0IsV0FBQTtJQUF2RkUsc0JBQXNCLEdBQUFELFdBQUE7SUFBRUUseUJBQXlCLEdBQUFGLFdBQUE7RUFFeEQsSUFBTUcsV0FBVyxHQUFHLEVBQUE5QyxlQUFBLEdBQUN2SSxLQUFLLGFBQUxBLEtBQUssdUJBQUxBLEtBQUssQ0FBRXNMLFFBQVEsY0FBQS9DLGVBQUEsY0FBQUEsZUFBQSxHQUFJLEVBQUUsRUFBRWdELElBQUksQ0FBQyxHQUFHLENBQUM7RUFDckQsSUFBTUMsU0FBUyxHQUFHLEVBQUFoRCxhQUFBLEdBQUN4SSxLQUFLLGFBQUxBLEtBQUssdUJBQUxBLEtBQUssQ0FBRTZILE1BQU0sY0FBQVcsYUFBQSxjQUFBQSxhQUFBLEdBQUksRUFBRSxFQUFFTixHQUFHLENBQUMsVUFBQUYsQ0FBQztJQUFBLE9BQUlBLENBQUMsQ0FBQzdFLEVBQUU7RUFBQSxFQUFDLENBQUNvSSxJQUFJLENBQUMsR0FBRyxDQUFDO0VBQ2hFLElBQU1wRyx3QkFBd0IsR0FBRyxDQUFBbkYsS0FBSyxhQUFMQSxLQUFLLHVCQUFMQSxLQUFLLENBQUVPLFdBQVcsTUFBSyxTQUFTOztFQUVqRTtFQUNBLElBQU1rTCxXQUFXLEdBQUd2TixPQUFPLENBQ3pCO0lBQUEsSUFBQXdOLGVBQUEsRUFBQUMsZ0JBQUEsRUFBQUMsZ0JBQUEsRUFBQUMsa0JBQUE7SUFBQSxPQUFPO01BQ0wzTCxRQUFRLEdBQUF3TCxlQUFBLEdBQUUxTCxLQUFLLGFBQUxBLEtBQUssdUJBQUxBLEtBQUssQ0FBRUUsUUFBUSxjQUFBd0wsZUFBQSxjQUFBQSxlQUFBLEdBQUksSUFBSTtNQUNqQ3BMLFNBQVMsR0FBQXFMLGdCQUFBLEdBQUUzTCxLQUFLLGFBQUxBLEtBQUssdUJBQUxBLEtBQUssQ0FBRU0sU0FBUyxjQUFBcUwsZ0JBQUEsY0FBQUEsZ0JBQUEsR0FBSSxJQUFJO01BQ25DTCxRQUFRLEdBQUFNLGdCQUFBLEdBQUU1TCxLQUFLLGFBQUxBLEtBQUssdUJBQUxBLEtBQUssQ0FBRXNMLFFBQVEsY0FBQU0sZ0JBQUEsY0FBQUEsZ0JBQUEsR0FBSSxFQUFFO01BQy9CL0QsTUFBTSxFQUFFN0gsS0FBSyxhQUFMQSxLQUFLLHVCQUFMQSxLQUFLLENBQUU2SCxNQUFNO01BQ3JCdEgsV0FBVyxHQUFBc0wsa0JBQUEsR0FBRTdMLEtBQUssYUFBTEEsS0FBSyx1QkFBTEEsS0FBSyxDQUFFTyxXQUFXLGNBQUFzTCxrQkFBQSxjQUFBQSxrQkFBQSxHQUFJO0lBQ3JDLENBQUM7RUFBQSxDQUFDLEVBQ0YsQ0FBQzdMLEtBQUssYUFBTEEsS0FBSyx1QkFBTEEsS0FBSyxDQUFFRSxRQUFRLEVBQUVGLEtBQUssYUFBTEEsS0FBSyx1QkFBTEEsS0FBSyxDQUFFTSxTQUFTLEVBQUUrSyxXQUFXLEVBQUVHLFNBQVMsRUFBRXhMLEtBQUssYUFBTEEsS0FBSyx1QkFBTEEsS0FBSyxDQUFFTyxXQUFXLENBQ2hGLENBQUM7O0VBRUQ7RUFDQSxJQUFBdUwsYUFBQSxHQUNFL04sWUFBWSxDQUFxQlcsZUFBZSxFQUFFO01BQ2hEcU4sU0FBUyxFQUFFO1FBQUVDLEtBQUssRUFBRTtNQUFHLENBQUM7TUFDeEJDLFdBQVcsRUFBRTtJQUNmLENBQUMsQ0FBQztJQUFBQyxjQUFBLEdBQUFoRCxjQUFBLENBQUE0QyxhQUFBO0lBSkdLLG1CQUFtQixHQUFBRCxjQUFBO0lBQUFFLGVBQUEsR0FBQUYsY0FBQTtJQUFVRyxVQUFVLEdBQUFELGVBQUEsQ0FBaEJFLElBQUk7SUFBdUJDLGFBQWEsR0FBQUgsZUFBQSxDQUF0QnpDLE9BQU87SUFBd0I2QyxXQUFXLEdBQUFKLGVBQUEsQ0FBbEJyQyxLQUFLOztFQU03RTtFQUNBLElBQUEwQyxjQUFBLEdBQ0UxTyxZQUFZLENBQW9CYSxjQUFjLEVBQUU7TUFDOUNxTixXQUFXLEVBQUU7SUFDZixDQUFDLENBQUM7SUFBQVMsY0FBQSxHQUFBeEQsY0FBQSxDQUFBdUQsY0FBQTtJQUhHRSxrQkFBa0IsR0FBQUQsY0FBQTtJQUFBRSxlQUFBLEdBQUFGLGNBQUE7SUFBVUcsV0FBVyxHQUFBRCxlQUFBLENBQWpCTixJQUFJO0lBQXdCUSxjQUFjLEdBQUFGLGVBQUEsQ0FBdkJqRCxPQUFPO0lBQXlCb0QsWUFBWSxHQUFBSCxlQUFBLENBQW5CN0MsS0FBSzs7RUFLOUU7RUFDQSxJQUFBaUQsY0FBQSxHQUNFalAsWUFBWSxDQUFxQmMsZUFBZSxFQUFFO01BQ2hEb04sV0FBVyxFQUFFO0lBQ2YsQ0FBQyxDQUFDO0lBQUFnQixjQUFBLEdBQUEvRCxjQUFBLENBQUE4RCxjQUFBO0lBSEdFLG1CQUFtQixHQUFBRCxjQUFBO0lBQUFFLGVBQUEsR0FBQUYsY0FBQTtJQUFVRyxTQUFTLEdBQUFELGVBQUEsQ0FBZmIsSUFBSTtJQUFzQmUsWUFBWSxHQUFBRixlQUFBLENBQXJCeEQsT0FBTztJQUF1QjJELFVBQVUsR0FBQUgsZUFBQSxDQUFqQnBELEtBQUs7RUFLM0UsSUFBTXdELG1CQUFtQixHQUFHdlAsV0FBVyxDQUFDLFVBQUN3UCxPQUFtQyxFQUFLO0lBQUEsSUFBQUMsY0FBQSxFQUFBQyxlQUFBO0lBQy9FLElBQU1DLElBQUksR0FBR3pPLG9CQUFvQixDQUFDc08sT0FBTyxhQUFQQSxPQUFPLGdCQUFBQyxjQUFBLEdBQVBELE9BQU8sQ0FBRUksS0FBSyxjQUFBSCxjQUFBLHVCQUFkQSxjQUFBLENBQWdCRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzFELElBQU1FLFFBQVEsR0FBRzNPLG9CQUFvQixDQUFDc08sT0FBTyxhQUFQQSxPQUFPLGdCQUFBRSxlQUFBLEdBQVBGLE9BQU8sQ0FBRUksS0FBSyxjQUFBRixlQUFBLHVCQUFkQSxlQUFBLENBQWdCRyxRQUFRLEVBQUVGLElBQUksQ0FBQztJQUNyRTNDLGNBQWMsQ0FBQzJDLElBQUksQ0FBQztJQUNwQm5ELFVBQVUsQ0FBQ21ELElBQUksR0FBR0UsUUFBUSxDQUFDO0VBQzdCLENBQUMsRUFBRSxFQUFFLENBQUM7RUFFTixJQUFNQyxxQkFBcUIsR0FBRzlQLFdBQVcsQ0FBQyxVQUFDd1AsT0FBa0MsRUFBSztJQUFBLElBQUFPLGdCQUFBLEVBQUFDLGlCQUFBO0lBQ2hGLElBQU1MLElBQUksR0FBR3pPLG9CQUFvQixDQUFDc08sT0FBTyxhQUFQQSxPQUFPLGdCQUFBTyxnQkFBQSxHQUFQUCxPQUFPLENBQUVTLE9BQU8sY0FBQUYsZ0JBQUEsdUJBQWhCQSxnQkFBQSxDQUFrQkosSUFBSSxFQUFFLENBQUMsQ0FBQztJQUM1RCxJQUFNRSxRQUFRLEdBQUczTyxvQkFBb0IsQ0FBQ3NPLE9BQU8sYUFBUEEsT0FBTyxnQkFBQVEsaUJBQUEsR0FBUFIsT0FBTyxDQUFFUyxPQUFPLGNBQUFELGlCQUFBLHVCQUFoQkEsaUJBQUEsQ0FBa0JILFFBQVEsRUFBRUYsSUFBSSxDQUFDO0lBQ3ZFM0MsY0FBYyxDQUFDMkMsSUFBSSxDQUFDO0lBQ3BCbkQsVUFBVSxDQUFDbUQsSUFBSSxHQUFHRSxRQUFRLENBQUM7RUFDN0IsQ0FBQyxFQUFFLEVBQUUsQ0FBQztFQUVOLElBQU1LLDBCQUEwQixHQUFHbFEsV0FBVyxDQUFDLFVBQUN3UCxPQUErQixFQUFLO0lBQUEsSUFBQVcsbUJBQUEsRUFBQUMsb0JBQUE7SUFDbEYsSUFBTUMsT0FBTyxHQUFHL08sTUFBTSxDQUFDa08sT0FBTyxhQUFQQSxPQUFPLGdCQUFBVyxtQkFBQSxHQUFQWCxPQUFPLENBQUVjLFVBQVUsY0FBQUgsbUJBQUEsdUJBQW5CQSxtQkFBQSxDQUFxQlIsSUFBSSxDQUFDO0lBQ2pEO0lBQ0EsSUFBTUEsSUFBSSxHQUFHck8sTUFBTSxDQUFDQyxRQUFRLENBQUM4TyxPQUFPLENBQUMsSUFBSUEsT0FBTyxJQUFJLENBQUMsR0FBRzVPLElBQUksQ0FBQ0MsS0FBSyxDQUFDMk8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUM7SUFDbkYsSUFBTVIsUUFBUSxHQUFHM08sb0JBQW9CLENBQUNzTyxPQUFPLGFBQVBBLE9BQU8sZ0JBQUFZLG9CQUFBLEdBQVBaLE9BQU8sQ0FBRWMsVUFBVSxjQUFBRixvQkFBQSx1QkFBbkJBLG9CQUFBLENBQXFCUCxRQUFRLEVBQUVGLElBQUksQ0FBQztJQUMxRTNDLGNBQWMsQ0FBQzJDLElBQUksQ0FBQztJQUNwQm5ELFVBQVUsQ0FBQ21ELElBQUksR0FBR0UsUUFBUSxDQUFDO0VBQzdCLENBQUMsRUFBRSxFQUFFLENBQUM7RUFFTixJQUFNVSw2QkFBNkIsR0FBR3ZRLFdBQVcsQ0FBQyxVQUFDd1AsT0FBcUMsRUFBSztJQUFBLElBQUFnQixpQkFBQSxFQUFBQyxrQkFBQTtJQUMzRixJQUFNZCxJQUFJLEdBQUd6TyxvQkFBb0IsQ0FBQ3NPLE9BQU8sYUFBUEEsT0FBTyxnQkFBQWdCLGlCQUFBLEdBQVBoQixPQUFPLENBQUVrQixRQUFRLGNBQUFGLGlCQUFBLHVCQUFqQkEsaUJBQUEsQ0FBbUJiLElBQUksRUFBRSxDQUFDLENBQUM7SUFDN0QsSUFBTUUsUUFBUSxHQUFHM08sb0JBQW9CLENBQUNzTyxPQUFPLGFBQVBBLE9BQU8sZ0JBQUFpQixrQkFBQSxHQUFQakIsT0FBTyxDQUFFa0IsUUFBUSxjQUFBRCxrQkFBQSx1QkFBakJBLGtCQUFBLENBQW1CWixRQUFRLEVBQUVGLElBQUksQ0FBQztJQUN4RTNDLGNBQWMsQ0FBQzJDLElBQUksQ0FBQztJQUNwQm5ELFVBQVUsQ0FBQ21ELElBQUksR0FBR0UsUUFBUSxDQUFDO0VBQzdCLENBQUMsRUFBRSxFQUFFLENBQUM7RUFFTixJQUFBYyxjQUFBLEdBQWtDNVEsWUFBWSxDQUFpQlksb0JBQW9CLEVBQUU7TUFDbkZzTixXQUFXLEVBQUU7SUFDZixDQUFDLENBQUM7SUFBQTJDLGNBQUEsR0FBQTFGLGNBQUEsQ0FBQXlGLGNBQUE7SUFGS0UsdUJBQXVCLEdBQUFELGNBQUE7RUFJOUIsSUFBQUUsY0FBQSxHQUFnQy9RLFlBQVksQ0FBdUJVLGlCQUFpQixFQUFFO01BQ3BGd04sV0FBVyxFQUFFO0lBQ2YsQ0FBQyxDQUFDO0lBQUE4QyxjQUFBLEdBQUE3RixjQUFBLENBQUE0RixjQUFBO0lBRktFLHFCQUFxQixHQUFBRCxjQUFBO0VBSTVCLElBQU1FLFdBQVcsR0FBR2pSLFdBQVcsY0FBQWtSLGlCQUFBLGNBQUFDLG1CQUFBLENBQUFDLElBQUEsQ0FBQyxTQUFBQyxRQUFBO0lBQUEsSUFBQUMsVUFBQSxFQUFBQyxxQkFBQSxFQUFBbEgsS0FBQSxFQUFBbUgsVUFBQSxFQUFBQyxpQkFBQSxFQUFBQyxRQUFBLEVBQUFwRCxJQUFBLEVBQUF6RSxNQUFBLEVBQUE4SCxXQUFBLEVBQUFDLEtBQUEsRUFBQUMsTUFBQSxFQUFBQyxNQUFBLEVBQUFDLE9BQUEsRUFBQUMscUJBQUEsRUFBQUMsc0JBQUEsRUFBQUMsZUFBQSxFQUFBQyxxQkFBQSxFQUFBQyxZQUFBLEVBQUFDLGNBQUEsRUFBQUMsaUJBQUEsRUFBQUMsTUFBQSxFQUFBQyxTQUFBLEVBQUFDLHFCQUFBLEVBQUFDLHNCQUFBLEVBQUEzSSxNQUFBLEVBQUE0SSxxQkFBQSxFQUFBQyxhQUFBLEVBQUFDLGlCQUFBLEVBQUFDLFlBQUEsRUFBQUMscUJBQUEsRUFBQUMsTUFBQSxFQUFBQyxRQUFBLEVBQUFDLE1BQUEsRUFBQUMsU0FBQSxFQUFBQyxFQUFBLEVBQUFDLEdBQUE7SUFBQSxPQUFBbEMsbUJBQUEsQ0FBQW1DLElBQUEsV0FBQUMsUUFBQTtNQUFBLGtCQUFBQSxRQUFBLENBQUFDLElBQUEsR0FBQUQsUUFBQSxDQUFBRSxJQUFBO1FBQUE7VUFDOUIxSSx5QkFBeUIsQ0FBQzJJLE9BQU8sSUFBSSxDQUFDO1VBQ2hDcEMsVUFBVSxHQUFHdkcseUJBQXlCLENBQUMySSxPQUFPO1VBQUEsTUFFaER4USxJQUFJLEtBQUssS0FBSztZQUFBcVEsUUFBQSxDQUFBRSxJQUFBO1lBQUE7VUFBQTtVQUNWcEosS0FBSyxJQUFBa0gscUJBQUEsR0FBRzlELFdBQVcsQ0FBQ0gsUUFBUSxjQUFBaUUscUJBQUEsY0FBQUEscUJBQUEsR0FBSSxFQUFFO1VBQ3hDM0YsVUFBVSxDQUFDLEtBQUssQ0FBQztVQUNqQkksUUFBUSxDQUFDLEtBQUssQ0FBQztVQUNmUixRQUFRLENBQUNwQixrQkFBa0IsQ0FBQ0MsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1VBQ3ZDK0IsbUJBQW1CLENBQUMsS0FBSyxDQUFDO1VBQzFCZ0IseUJBQXlCLENBQUMsTUFBTSxDQUFDO1VBQ2pDWixVQUFVLENBQUMsS0FBSyxDQUFDO1VBQUEsT0FBQStHLFFBQUEsQ0FBQUksTUFBQTtRQUFBO1VBQUEsTUFJZnpRLElBQUksS0FBSyxPQUFPO1lBQUFxUSxRQUFBLENBQUFFLElBQUE7WUFBQTtVQUFBO1VBQUEsS0FDZGhHLFdBQVcsQ0FBQzVELE1BQU07WUFBQTBKLFFBQUEsQ0FBQUUsSUFBQTtZQUFBO1VBQUE7VUFDcEI3SCxVQUFVLENBQUMsS0FBSyxDQUFDO1VBQ2pCSSxRQUFRLENBQUMsS0FBSyxDQUFDO1VBQ2ZSLFFBQVEsQ0FBQzVCLGdCQUFnQixDQUFDNkQsV0FBVyxDQUFDNUQsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1VBQ2xEdUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDO1VBQ3pCZ0IseUJBQXlCLENBQUMsTUFBTSxDQUFDO1VBQ2pDWixVQUFVLENBQUMsS0FBSyxDQUFDO1VBQUEsT0FBQStHLFFBQUEsQ0FBQUksTUFBQTtRQUFBO1VBR25CL0gsVUFBVSxDQUFDLElBQUksQ0FBQztVQUNoQkksUUFBUSxDQUFDLEtBQUssQ0FBQztVQUFBdUgsUUFBQSxDQUFBQyxJQUFBO1VBQUFELFFBQUEsQ0FBQUUsSUFBQTtVQUFBLE9BRVV4UyxTQUFTLENBQUM7WUFBRTJTLElBQUksRUFBRSxRQUFRO1lBQUVDLE1BQU0sRUFBRTtVQUFNLENBQUMsQ0FBQztRQUFBO1VBQTdEbkMsUUFBUSxHQUFBNkIsUUFBQSxDQUFBTyxJQUFBO1VBQUFQLFFBQUEsQ0FBQUUsSUFBQTtVQUFBLE9BQ3dCL0IsUUFBUSxDQUFDcUMsSUFBSSxDQUFDLENBQUM7UUFBQTtVQUEvQ3pGLElBQXVCLEdBQUFpRixRQUFBLENBQUFPLElBQUE7VUFBQSxNQUN6QnhDLFVBQVUsS0FBS3ZHLHlCQUF5QixDQUFDMkksT0FBTztZQUFBSCxRQUFBLENBQUFFLElBQUE7WUFBQTtVQUFBO1VBQUEsT0FBQUYsUUFBQSxDQUFBSSxNQUFBO1FBQUE7VUFDOUM5SixNQUFlLElBQUEySCxVQUFBLEdBQUdsRCxJQUFJLENBQUNBLElBQUksY0FBQWtELFVBQUEsY0FBQUEsVUFBQSxHQUFJLEVBQUU7VUFDakNHLFdBQVcsR0FBRyxDQUFDLENBQUNyRCxJQUFJLENBQUMwRixRQUFRLElBQUkxRixJQUFJLENBQUMyRixXQUFXLElBQUksSUFBSTtVQUMvRHpJLFFBQVEsQ0FBQzVCLGdCQUFnQixDQUFDQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7VUFDdEN1QyxtQkFBbUIsQ0FBQyxJQUFJLENBQUM7VUFDekJJLFVBQVUsQ0FBQ21GLFdBQVcsQ0FBQztVQUN2QjNFLGNBQWMsRUFBQXlFLGlCQUFBLEdBQUNuRCxJQUFJLENBQUMyRixXQUFXLGNBQUF4QyxpQkFBQSxjQUFBQSxpQkFBQSxHQUFJLENBQUMsQ0FBQztVQUNyQ3JFLHlCQUF5QixDQUFDdUUsV0FBVyxHQUFHLFFBQVEsR0FBRyxNQUFNLENBQUM7VUFBQTRCLFFBQUEsQ0FBQUUsSUFBQTtVQUFBO1FBQUE7VUFBQUYsUUFBQSxDQUFBQyxJQUFBO1VBQUFKLEVBQUEsR0FBQUcsUUFBQTtVQUFBLE1BRXREakMsVUFBVSxLQUFLdkcseUJBQXlCLENBQUMySSxPQUFPO1lBQUFILFFBQUEsQ0FBQUUsSUFBQTtZQUFBO1VBQUE7VUFBQSxPQUFBRixRQUFBLENBQUFJLE1BQUE7UUFBQTtVQUNwRDNILFFBQVEsQ0FBQyxJQUFJLENBQUM7VUFDZFIsUUFBUSxDQUFDLEVBQUUsQ0FBQztRQUFBO1VBQUErSCxRQUFBLENBQUFDLElBQUE7VUFFWixJQUFJbEMsVUFBVSxLQUFLdkcseUJBQXlCLENBQUMySSxPQUFPLEVBQUU5SCxVQUFVLENBQUMsS0FBSyxDQUFDO1VBQUEsT0FBQTJILFFBQUEsQ0FBQVcsTUFBQTtRQUFBO1VBQUEsT0FBQVgsUUFBQSxDQUFBSSxNQUFBO1FBQUE7VUFLM0UvSCxVQUFVLENBQUMsSUFBSSxDQUFDO1VBQ2hCSSxRQUFRLENBQUMsS0FBSyxDQUFDO1VBQUF1SCxRQUFBLENBQUFDLElBQUE7VUFBQSxNQUVUdFEsSUFBSSxLQUFLLFFBQVE7WUFBQXFRLFFBQUEsQ0FBQUUsSUFBQTtZQUFBO1VBQUE7VUFBQUYsUUFBQSxDQUFBRSxJQUFBO1VBQUEsT0FDQXBULGdCQUFnQixDQUFDLENBQUM7UUFBQTtVQUEvQmlPLEtBQUksR0FBQWlGLFFBQUEsQ0FBQU8sSUFBQTtVQUFBLE1BQ054QyxVQUFVLEtBQUt2Ryx5QkFBeUIsQ0FBQzJJLE9BQU87WUFBQUgsUUFBQSxDQUFBRSxJQUFBO1lBQUE7VUFBQTtVQUFBLE9BQUFGLFFBQUEsQ0FBQUksTUFBQTtRQUFBO1VBQzlDOUIsTUFBTSxHQUFHLENBQUN2RCxLQUFJLGFBQUpBLEtBQUksY0FBSkEsS0FBSSxHQUFJLEVBQUUsRUFBRXBFLEdBQUcsQ0FBQyxVQUFBbEYsQ0FBQztZQUFBLE9BQUlELGVBQWUsQ0FBQ0MsQ0FBQyxFQUFFLEVBQUUsQ0FBQztVQUFBLEVBQUM7VUFBQSxNQUN4RHNNLFVBQVUsS0FBS3ZHLHlCQUF5QixDQUFDMkksT0FBTztZQUFBSCxRQUFBLENBQUFFLElBQUE7WUFBQTtVQUFBO1VBQUEsT0FBQUYsUUFBQSxDQUFBSSxNQUFBO1FBQUE7VUFDcERuSSxRQUFRLENBQUNxRyxNQUFNLENBQUM7VUFDaEJ6RixtQkFBbUIsQ0FBQyxLQUFLLENBQUM7VUFDMUJnQix5QkFBeUIsQ0FBQyxNQUFNLENBQUM7VUFDakNaLFVBQVUsQ0FBQyxLQUFLLENBQUM7VUFBQStHLFFBQUEsQ0FBQUUsSUFBQTtVQUFBO1FBQUE7VUFBQSxNQUNSdlEsSUFBSSxLQUFLLFNBQVM7WUFBQXFRLFFBQUEsQ0FBQUUsSUFBQTtZQUFBO1VBQUE7VUFBQUYsUUFBQSxDQUFBRSxJQUFBO1VBQUEsT0FDUm5ULGlCQUFpQixDQUFDbU4sV0FBVyxDQUFDdkwsUUFBUSxHQUFHO1lBQUVBLFFBQVEsRUFBRXVMLFdBQVcsQ0FBQ3ZMO1VBQVMsQ0FBQyxHQUFHQyxTQUFTLENBQUM7UUFBQTtVQUFyR21NLE1BQUksR0FBQWlGLFFBQUEsQ0FBQU8sSUFBQTtVQUFBLE1BQ054QyxVQUFVLEtBQUt2Ryx5QkFBeUIsQ0FBQzJJLE9BQU87WUFBQUgsUUFBQSxDQUFBRSxJQUFBO1lBQUE7VUFBQTtVQUFBLE9BQUFGLFFBQUEsQ0FBQUksTUFBQTtRQUFBO1VBQ2hEOUIsT0FBTSxHQUFHLENBQUN0TixLQUFLLENBQUM0UCxPQUFPLENBQUM3RixNQUFJLENBQUMsR0FBR0EsTUFBSSxHQUFHLEVBQUUsRUFBRXBFLEdBQUcsQ0FBQyxVQUFBa0ssQ0FBQztZQUFBLE9BQ2xEekwsZUFBZSxDQUNiO2NBQ0V4RCxFQUFFLEVBQUVpUCxDQUFDLENBQUNqUCxFQUFFO2NBQ1JpQyxLQUFLLEVBQUVnTixDQUFDLENBQUNoTixLQUFLO2NBQ2RsRSxJQUFJLEVBQUUsU0FBUztjQUNmaEIsUUFBUSxFQUFFa1MsQ0FBQyxDQUFDbFMsUUFBUTtjQUNwQmtILEtBQUssRUFBRWdMLENBQUMsQ0FBQ2hMLEtBQUs7Y0FDZFYsVUFBVSxFQUFFMEwsQ0FBQyxDQUFDMUw7WUFDaEIsQ0FBQyxFQUNELFNBQVMsRUFDVCxFQUNGLENBQUM7VUFBQSxDQUNILENBQUM7VUFBQSxNQUNHbUosT0FBTSxDQUFDaFAsTUFBTSxLQUFLLENBQUM7WUFBQTBRLFFBQUEsQ0FBQUUsSUFBQTtZQUFBO1VBQUE7VUFDZnZCLGVBQWUsR0FDbkJ6RSxXQUFXLENBQUN2TCxRQUFRLEtBQUssSUFBSSxJQUFJdUwsV0FBVyxDQUFDdkwsUUFBUSxLQUFLQyxTQUFTLElBQUlzTCxXQUFXLENBQUN2TCxRQUFRLEtBQUssRUFBRSxHQUM5RjtZQUFFbVMsU0FBUyxFQUFFLENBQUNqUyxNQUFNLENBQUNxTCxXQUFXLENBQUN2TCxRQUFRLENBQUM7VUFBRSxDQUFDLEdBQzdDQyxTQUFTO1VBQUFvUixRQUFBLENBQUFFLElBQUE7VUFBQSxPQUNzQnpDLHFCQUFxQixDQUFDO1lBQ3pEakQsU0FBUyxFQUFBdUcsYUFBQSxDQUFBQSxhQUFBLEtBQ0hwQyxlQUFlLEdBQUc7Y0FBRTdOLFNBQVMsRUFBRTZOO1lBQWdCLENBQUMsR0FBRyxDQUFDLENBQUM7Y0FDekR2QyxJQUFJLEVBQUUsQ0FBQztjQUNQNEUsT0FBTyxFQUFFO1lBQUU7VUFFZixDQUFDLENBQUM7UUFBQTtVQUFBcEMscUJBQUEsR0FBQW9CLFFBQUEsQ0FBQU8sSUFBQTtVQU5ZMUIsWUFBWSxHQUFBRCxxQkFBQSxDQUFsQjdELElBQUk7VUFBQSxNQU9SZ0QsVUFBVSxLQUFLdkcseUJBQXlCLENBQUMySSxPQUFPO1lBQUFILFFBQUEsQ0FBQUUsSUFBQTtZQUFBO1VBQUE7VUFBQSxPQUFBRixRQUFBLENBQUFJLE1BQUE7UUFBQTtVQUM5Q3RCLGNBQWMsR0FBRyxFQUFBTCxxQkFBQSxHQUFDSSxZQUFZLGFBQVpBLFlBQVksZ0JBQUFILHNCQUFBLEdBQVpHLFlBQVksQ0FBRTFCLFFBQVEsY0FBQXVCLHNCQUFBLHVCQUF0QkEsc0JBQUEsQ0FBd0IzRCxJQUFJLGNBQUEwRCxxQkFBQSxjQUFBQSxxQkFBQSxHQUFJLEVBQUUsRUFDdkQ5SCxHQUFHLENBQUMvQiwrQkFBK0IsQ0FBQyxDQUNwQzRCLE1BQU0sQ0FBQyxVQUFDeUssSUFBSTtZQUFBLE9BQThCQSxJQUFJLEtBQUssSUFBSTtVQUFBLEVBQUMsQ0FDeER0SyxHQUFHLENBQUMsVUFBQXNLLElBQUk7WUFBQSxPQUFJN0wsZUFBZSxDQUFDNkwsSUFBSSxFQUFFLFNBQVMsRUFBRSxFQUFFLENBQUM7VUFBQSxFQUFDO1VBQ3BEM0MsT0FBTSxHQUFHUSxjQUFjO1VBQ3ZCakcsbUJBQW1CLENBQUNpRyxjQUFjLENBQUN4UCxNQUFNLEdBQUcsQ0FBQyxDQUFDO1VBQzlDdUsseUJBQXlCLENBQUMsa0JBQWtCLENBQUM7VUFDN0NtRCw2QkFBNkIsQ0FBQzZCLFlBQVksQ0FBQztVQUFBbUIsUUFBQSxDQUFBRSxJQUFBO1VBQUE7UUFBQTtVQUUzQ3JILG1CQUFtQixDQUFDLEtBQUssQ0FBQztVQUMxQmdCLHlCQUF5QixDQUFDLE1BQU0sQ0FBQztVQUNqQ1osVUFBVSxDQUFDLEtBQUssQ0FBQztRQUFBO1VBQUEsTUFFZjhFLFVBQVUsS0FBS3ZHLHlCQUF5QixDQUFDMkksT0FBTztZQUFBSCxRQUFBLENBQUFFLElBQUE7WUFBQTtVQUFBO1VBQUEsT0FBQUYsUUFBQSxDQUFBSSxNQUFBO1FBQUE7VUFDcERuSSxRQUFRLENBQUNxRyxPQUFNLENBQUM7VUFBQTBCLFFBQUEsQ0FBQUUsSUFBQTtVQUFBO1FBQUE7VUFBQSxNQUNQdlEsSUFBSSxLQUFLLE1BQU07WUFBQXFRLFFBQUEsQ0FBQUUsSUFBQTtZQUFBO1VBQUE7VUFFeEIsSUFBSWhHLFdBQVcsQ0FBQ2xMLFdBQVcsS0FBSyxTQUFTLEVBQUU7WUFDekMrUCxpQkFBaUIsR0FBRztjQUFFaFEsU0FBUyxFQUFFbUwsV0FBVyxDQUFDbkw7WUFBVSxDQUFDO1VBQzFELENBQUMsTUFBTSxJQUFJbUwsV0FBVyxDQUFDbEwsV0FBVyxLQUFLLFFBQVEsRUFBRTtZQUMvQytQLGlCQUFpQixHQUFHO2NBQUVwUSxRQUFRLEVBQUV1TCxXQUFXLENBQUN2TDtZQUFTLENBQUM7VUFDeEQ7VUFBQ3FSLFFBQUEsQ0FBQUUsSUFBQTtVQUFBLE9BQ2tCbFQsY0FBYyxDQUFDK1IsaUJBQWlCLENBQUM7UUFBQTtVQUE5Q2hFLE1BQUksR0FBQWlGLFFBQUEsQ0FBQU8sSUFBQTtVQUFBLE1BQ054QyxVQUFVLEtBQUt2Ryx5QkFBeUIsQ0FBQzJJLE9BQU87WUFBQUgsUUFBQSxDQUFBRSxJQUFBO1lBQUE7VUFBQTtVQUFBLE9BQUFGLFFBQUEsQ0FBQUksTUFBQTtRQUFBO1VBQ2hEbkIsU0FBUyxHQUFHLENBQUNsRSxNQUFJLGFBQUpBLE1BQUksY0FBSkEsTUFBSSxHQUFJLEVBQUUsRUFBRXBFLEdBQUcsQ0FBQyxVQUFBcEksSUFBSTtZQUFBLE9BQUltRixtQkFBbUIsQ0FBQ25GLElBQUksRUFBRSxFQUFFLEVBQUVxRix3QkFBd0IsQ0FBQztVQUFBLEVBQUM7VUFBQSxNQUM3RnFMLFNBQVMsQ0FBQzNQLE1BQU0sS0FBSyxDQUFDO1lBQUEwUSxRQUFBLENBQUFFLElBQUE7WUFBQTtVQUFBO1VBQ2xCMUosTUFBZ0MsR0FBRyxDQUFDLENBQUM7VUFDM0MsSUFBSTBELFdBQVcsQ0FBQ25MLFNBQVMsS0FBSyxJQUFJLElBQUltTCxXQUFXLENBQUNuTCxTQUFTLEtBQUtILFNBQVMsSUFBSXNMLFdBQVcsQ0FBQ25MLFNBQVMsS0FBSyxFQUFFLEVBQUU7WUFDekd5SCxNQUFNLENBQUMwSyxVQUFVLEdBQUcsQ0FBQ3JTLE1BQU0sQ0FBQ3FMLFdBQVcsQ0FBQ25MLFNBQVMsQ0FBQyxDQUFDO1VBQ3JEO1VBQ0EsSUFBSW1MLFdBQVcsQ0FBQ3ZMLFFBQVEsS0FBSyxJQUFJLElBQUl1TCxXQUFXLENBQUN2TCxRQUFRLEtBQUtDLFNBQVMsSUFBSXNMLFdBQVcsQ0FBQ3ZMLFFBQVEsS0FBSyxFQUFFLEVBQUU7WUFDdEc2SCxNQUFNLENBQUMySyxTQUFTLEdBQUcsQ0FBQ3RTLE1BQU0sQ0FBQ3FMLFdBQVcsQ0FBQ3ZMLFFBQVEsQ0FBQyxDQUFDO1VBQ25EO1VBQUNxUixRQUFBLENBQUFFLElBQUE7VUFBQSxPQUNvQzVDLHVCQUF1QixDQUFDO1lBQzNEOUMsU0FBUyxFQUFFO2NBQ1RoRSxNQUFNLEVBQUF1SyxhQUFBO2dCQUFJelMsUUFBUSxFQUFFO2NBQUssR0FBS2tJLE1BQU0sQ0FBRTtjQUN0QzRLLFVBQVUsRUFBRTtnQkFBRUMsTUFBTSxFQUFFLENBQUM7Z0JBQUVDLElBQUksRUFBRTtjQUFHO1lBQ3BDO1VBQ0YsQ0FBQyxDQUFDO1FBQUE7VUFBQWxDLHFCQUFBLEdBQUFZLFFBQUEsQ0FBQU8sSUFBQTtVQUxZMUIsYUFBWSxHQUFBTyxxQkFBQSxDQUFsQnJFLElBQUk7VUFBQSxNQU1SZ0QsVUFBVSxLQUFLdkcseUJBQXlCLENBQUMySSxPQUFPO1lBQUFILFFBQUEsQ0FBQUUsSUFBQTtZQUFBO1VBQUE7VUFBQSxPQUFBRixRQUFBLENBQUFJLE1BQUE7UUFBQTtVQUNwRG5CLFNBQVMsR0FBRyxFQUFBQyxxQkFBQSxHQUFDTCxhQUFZLGFBQVpBLGFBQVksZ0JBQUFNLHNCQUFBLEdBQVpOLGFBQVksQ0FBRTlCLFVBQVUsY0FBQW9DLHNCQUFBLHVCQUF4QkEsc0JBQUEsQ0FBMEJwRSxJQUFJLGNBQUFtRSxxQkFBQSxjQUFBQSxxQkFBQSxHQUFJLEVBQUUsRUFDOUN2SSxHQUFHLENBQUMzQyx5QkFBeUIsQ0FBQyxDQUM5QndDLE1BQU0sQ0FBQyxVQUFDeUssSUFBSTtZQUFBLE9BQTZCQSxJQUFJLEtBQUssSUFBSTtVQUFBLEVBQUMsQ0FDdkR0SyxHQUFHLENBQUMsVUFBQXBJLElBQUk7WUFBQSxPQUFJbUYsbUJBQW1CLENBQUNuRixJQUFJLEVBQUUsRUFBRSxFQUFFcUYsd0JBQXdCLENBQUM7VUFBQSxFQUFDO1VBQ3ZFaUYsbUJBQW1CLENBQUNvRyxTQUFTLENBQUMzUCxNQUFNLEdBQUcsQ0FBQyxDQUFDO1VBQ3pDdUsseUJBQXlCLENBQUMsZUFBZSxDQUFDO1VBQzFDOEMsMEJBQTBCLENBQUNrQyxhQUFZLENBQUM7VUFBQW1CLFFBQUEsQ0FBQUUsSUFBQTtVQUFBO1FBQUE7VUFFeENySCxtQkFBbUIsQ0FBQyxLQUFLLENBQUM7VUFDMUJnQix5QkFBeUIsQ0FBQyxNQUFNLENBQUM7VUFDakNaLFVBQVUsQ0FBQyxLQUFLLENBQUM7UUFBQTtVQUFBLE1BRWY4RSxVQUFVLEtBQUt2Ryx5QkFBeUIsQ0FBQzJJLE9BQU87WUFBQUgsUUFBQSxDQUFBRSxJQUFBO1lBQUE7VUFBQTtVQUFBLE9BQUFGLFFBQUEsQ0FBQUksTUFBQTtRQUFBO1VBQ3BEbkksUUFBUSxDQUFDZ0gsU0FBUyxDQUFDO1VBQUFlLFFBQUEsQ0FBQUUsSUFBQTtVQUFBO1FBQUE7VUFBQSxNQUNWdlEsSUFBSSxLQUFLLE1BQU07WUFBQXFRLFFBQUEsQ0FBQUUsSUFBQTtZQUFBO1VBQUE7VUFBQUYsUUFBQSxDQUFBRSxJQUFBO1VBQUEsT0FDRHZFLG1CQUFtQixDQUFDO1lBQ3pDbkIsU0FBUyxFQUFFO2NBQ1QrRyxPQUFPLEVBQUUxUiwwQkFBMEIsQ0FBQyxFQUFFLENBQUM7Y0FDdkN1TSxJQUFJLEVBQUU7WUFDUjtVQUNGLENBQUMsQ0FBQztRQUFBO1VBQUFvRCxxQkFBQSxHQUFBUSxRQUFBLENBQUFPLElBQUE7VUFMTXhGLE1BQUksR0FBQXlFLHFCQUFBLENBQUp6RSxJQUFJO1VBQUEsTUFNUmdELFVBQVUsS0FBS3ZHLHlCQUF5QixDQUFDMkksT0FBTztZQUFBSCxRQUFBLENBQUFFLElBQUE7WUFBQTtVQUFBO1VBQUEsT0FBQUYsUUFBQSxDQUFBSSxNQUFBO1FBQUE7VUFDOUM5QixRQUFNLEdBQUcsRUFBQWdCLGlCQUFBLEdBQUN2RSxNQUFJLGFBQUpBLE1BQUksZ0JBQUF3RSxZQUFBLEdBQUp4RSxNQUFJLENBQUVzQixLQUFLLGNBQUFrRCxZQUFBLHVCQUFYQSxZQUFBLENBQWF4RSxJQUFJLGNBQUF1RSxpQkFBQSxjQUFBQSxpQkFBQSxHQUFJLEVBQUUsRUFBRTNJLEdBQUcsQ0FBQyxVQUFBdEUsQ0FBQztZQUFBLE9BQUlELGFBQWEsQ0FBQ0MsQ0FBQyxFQUFFLEVBQUUsQ0FBQztVQUFBLEVBQUM7VUFBQSxNQUNuRTBMLFVBQVUsS0FBS3ZHLHlCQUF5QixDQUFDMkksT0FBTztZQUFBSCxRQUFBLENBQUFFLElBQUE7WUFBQTtVQUFBO1VBQUEsT0FBQUYsUUFBQSxDQUFBSSxNQUFBO1FBQUE7VUFDOUNULE1BQU0sR0FBR3hNLG9CQUFvQixDQUFDa0UsT0FBTyxFQUFFLEVBQUUsRUFBRUUsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLENBQUM7VUFDbEVxSSxTQUFTLEdBQUd0QixRQUFNLENBQUM5SCxNQUFNLENBQUMsVUFBQXlLLElBQUk7WUFBQSxPQUFJcFMsTUFBTSxDQUFDb1MsSUFBSSxDQUFDclAsRUFBRSxDQUFDLEtBQUsvQyxNQUFNLENBQUM4USxNQUFNLENBQUMvTixFQUFFLENBQUM7VUFBQSxFQUFDO1VBQzlFcUcsUUFBUSxFQUFFMEgsTUFBTSxFQUFBOU0sTUFBQSxDQUFBMk8sa0JBQUEsQ0FBSzVCLFNBQVMsRUFBQyxDQUFDO1VBQ2hDNUQsbUJBQW1CLENBQUNqQixNQUFJLENBQUM7VUFDekJsQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUM7VUFDMUJnQix5QkFBeUIsQ0FBQyxPQUFPLENBQUM7VUFBQW1HLFFBQUEsQ0FBQUUsSUFBQTtVQUFBO1FBQUE7VUFBQSxNQUU5Qm5DLFVBQVUsS0FBS3ZHLHlCQUF5QixDQUFDMkksT0FBTztZQUFBSCxRQUFBLENBQUFFLElBQUE7WUFBQTtVQUFBO1VBQUEsT0FBQUYsUUFBQSxDQUFBSSxNQUFBO1FBQUE7VUFDcERuSSxRQUFRLENBQUMsRUFBRSxDQUFDO1VBQ1pZLG1CQUFtQixDQUFDLEtBQUssQ0FBQztVQUMxQmdCLHlCQUF5QixDQUFDLE1BQU0sQ0FBQztVQUNqQ1osVUFBVSxDQUFDLEtBQUssQ0FBQztVQUNqQlEsY0FBYyxDQUFDLENBQUMsQ0FBQztRQUFBO1VBQUF1RyxRQUFBLENBQUFFLElBQUE7VUFBQTtRQUFBO1VBQUFGLFFBQUEsQ0FBQUMsSUFBQTtVQUFBSCxHQUFBLEdBQUFFLFFBQUE7VUFBQSxNQUdmakMsVUFBVSxLQUFLdkcseUJBQXlCLENBQUMySSxPQUFPO1lBQUFILFFBQUEsQ0FBQUUsSUFBQTtZQUFBO1VBQUE7VUFBQSxPQUFBRixRQUFBLENBQUFJLE1BQUE7UUFBQTtVQUNwRDNILFFBQVEsQ0FBQyxJQUFJLENBQUM7VUFDZFIsUUFBUSxDQUFDLEVBQUUsQ0FBQztVQUNaWSxtQkFBbUIsQ0FBQyxLQUFLLENBQUM7UUFBQTtVQUFBbUgsUUFBQSxDQUFBQyxJQUFBO1VBRTFCLElBQUlsQyxVQUFVLEtBQUt2Ryx5QkFBeUIsQ0FBQzJJLE9BQU8sRUFBRTtZQUNwRDlILFVBQVUsQ0FBQyxLQUFLLENBQUM7VUFDbkI7VUFBQyxPQUFBMkgsUUFBQSxDQUFBVyxNQUFBO1FBQUE7UUFBQTtVQUFBLE9BQUFYLFFBQUEsQ0FBQXlCLElBQUE7TUFBQTtJQUFBLEdBQUEzRCxPQUFBO0VBQUEsQ0FFSixJQUFFLENBQ0RuTyxJQUFJLEVBQ0p1SyxXQUFXLEVBQ1h5QixtQkFBbUIsRUFDbkIyQix1QkFBdUIsRUFDdkJHLHFCQUFxQixFQUNyQnpCLG1CQUFtQixFQUNuQlcsMEJBQTBCLEVBQzFCSyw2QkFBNkIsRUFDN0JwSix3QkFBd0IsRUFDeEJ5RCxPQUFPLEVBQ1BFLENBQUMsQ0FDRixDQUFDOztFQUVGO0VBQ0E3SyxTQUFTLENBQUMsWUFBTTtJQUNkLElBQU1vRCxDQUFDLEdBQUcrSCxvQkFBb0IsQ0FBQzFILElBQUksQ0FBQyxDQUFDO0lBRXJDLElBQUlSLElBQUksS0FBSyxLQUFLLEVBQUU7TUFBQSxJQUFBK1Isc0JBQUE7TUFDbEIsSUFBTTVLLEtBQUssSUFBQTRLLHNCQUFBLEdBQUd4SCxXQUFXLENBQUNILFFBQVEsY0FBQTJILHNCQUFBLGNBQUFBLHNCQUFBLEdBQUksRUFBRTtNQUN4Q3JKLFVBQVUsQ0FBQyxLQUFLLENBQUM7TUFDakJJLFFBQVEsQ0FBQyxLQUFLLENBQUM7TUFDZlIsUUFBUSxDQUFDcEIsa0JBQWtCLENBQUNDLEtBQUssRUFBRWhILENBQUMsQ0FBQyxDQUFDO01BQ3RDO0lBQ0Y7SUFFQSxJQUFJSCxJQUFJLEtBQUssT0FBTyxFQUFFO01BQ3BCLElBQUl1SyxXQUFXLENBQUM1RCxNQUFNLEVBQUU7UUFDdEIrQixVQUFVLENBQUMsS0FBSyxDQUFDO1FBQ2pCSSxRQUFRLENBQUMsS0FBSyxDQUFDO1FBQ2ZSLFFBQVEsQ0FBQzVCLGdCQUFnQixDQUFDNkQsV0FBVyxDQUFDNUQsTUFBTSxFQUFFeEcsQ0FBQyxDQUFDLENBQUM7UUFDakQ7TUFDRjtNQUNBLElBQUksQ0FBQ0EsQ0FBQyxFQUFFO01BQ1IwSCx5QkFBeUIsQ0FBQzJJLE9BQU8sSUFBSSxDQUFDO01BQ3RDLElBQU13QixTQUFTLEdBQUduSyx5QkFBeUIsQ0FBQzJJLE9BQU87TUFDbkQ5SCxVQUFVLENBQUMsSUFBSSxDQUFDO01BQ2hCSSxRQUFRLENBQUMsS0FBSyxDQUFDO01BQ2YvSyxTQUFTLENBQUM7UUFDUjJTLElBQUksY0FBQXhOLE1BQUEsQ0FBYytPLGtCQUFrQixDQUFDOVIsQ0FBQyxDQUFDLENBQUU7UUFDekN3USxNQUFNLEVBQUU7TUFDVixDQUFDLENBQUMsQ0FDQ3VCLElBQUksQ0FBQyxVQUFBeE0sQ0FBQztRQUFBLE9BQUlBLENBQUMsQ0FBQ21MLElBQUksQ0FBQyxDQUFDO01BQUEsQ0FBOEIsQ0FBQyxDQUNqRHFCLElBQUksQ0FBQyxVQUFBOUcsSUFBSSxFQUFJO1FBQUEsSUFBQStHLFdBQUEsRUFBQUMsa0JBQUE7UUFDWixJQUFJSixTQUFTLEtBQUtuSyx5QkFBeUIsQ0FBQzJJLE9BQU8sRUFBRTtRQUNyRCxJQUFNL0IsV0FBVyxHQUFHLENBQUMsQ0FBQ3JELElBQUksQ0FBQzBGLFFBQVEsSUFBSTFGLElBQUksQ0FBQzJGLFdBQVcsSUFBSSxJQUFJO1FBQy9EekksUUFBUSxDQUFDNUIsZ0JBQWdCLEVBQUF5TCxXQUFBLEdBQUMvRyxJQUFJLENBQUNBLElBQUksY0FBQStHLFdBQUEsY0FBQUEsV0FBQSxHQUFJLEVBQUUsRUFBRWhTLENBQUMsQ0FBQyxDQUFDO1FBQzlDbUosVUFBVSxDQUFDbUYsV0FBVyxDQUFDO1FBQ3ZCM0UsY0FBYyxFQUFBc0ksa0JBQUEsR0FBQ2hILElBQUksQ0FBQzJGLFdBQVcsY0FBQXFCLGtCQUFBLGNBQUFBLGtCQUFBLEdBQUksQ0FBQyxDQUFDO1FBQ3JDbEkseUJBQXlCLENBQUN1RSxXQUFXLEdBQUcsUUFBUSxHQUFHLE1BQU0sQ0FBQztRQUMxRC9GLFVBQVUsQ0FBQyxLQUFLLENBQUM7UUFDakJJLFFBQVEsQ0FBQyxLQUFLLENBQUM7TUFDakIsQ0FBQyxDQUFDLFNBQ0ksQ0FBQyxZQUFNO1FBQ1gsSUFBSWtKLFNBQVMsS0FBS25LLHlCQUF5QixDQUFDMkksT0FBTyxFQUFFO1FBQ3JEMUgsUUFBUSxDQUFDLElBQUksQ0FBQztRQUNkUixRQUFRLENBQUMsRUFBRSxDQUFDO1FBQ1pJLFVBQVUsQ0FBQyxLQUFLLENBQUM7TUFDbkIsQ0FBQyxDQUFDO01BQ0o7SUFDRjtJQUVBLElBQUksQ0FBQ3ZJLENBQUMsRUFBRTtJQUVSLElBQUlILElBQUksS0FBSyxRQUFRLEVBQUU7TUFDckJ5TCxrQkFBa0IsQ0FBQztRQUNqQlosU0FBUyxFQUFFO1VBQ1RoRSxNQUFNLEVBQUU7WUFBRWpGLElBQUksRUFBRXpCO1VBQUUsQ0FBQztVQUNuQnNNLElBQUksRUFBRSxDQUFDO1VBQ1A0RSxPQUFPLEVBQUU7UUFDWDtNQUNGLENBQUMsQ0FBQztNQUNGbkgseUJBQXlCLENBQUMsZ0JBQWdCLENBQUM7SUFDN0MsQ0FBQyxNQUFNLElBQUlsSyxJQUFJLEtBQUssTUFBTSxFQUFFO01BQzFCZ00sbUJBQW1CLENBQUM7UUFDbEJuQixTQUFTLEVBQUU7VUFDVCtHLE9BQU8sRUFBRTFSLDBCQUEwQixDQUFDQyxDQUFDLENBQUM7VUFDdENzTSxJQUFJLEVBQUU7UUFDUjtNQUNGLENBQUMsQ0FBQztNQUNGdkMseUJBQXlCLENBQUMsT0FBTyxDQUFDO0lBQ3BDLENBQUMsTUFBTTtNQUNMLElBQU0wSCxPQUFPLEdBQUczUixtQkFBbUIsQ0FBQ0QsSUFBSSxDQUFDO01BQ3pDLElBQU1xUyxLQUFLLEdBQUd0Uyx3QkFBd0IsQ0FBQ0MsSUFBSSxFQUFFdUssV0FBVyxDQUFDO01BQ3pEVSxtQkFBbUIsQ0FBQztRQUNsQkosU0FBUyxFQUFBdUcsYUFBQTtVQUNQalIsQ0FBQyxFQUFEQSxDQUFDO1VBQ0R5UixPQUFPLEVBQVBBO1FBQU8sR0FDSFMsS0FBSyxLQUFLcFQsU0FBUyxHQUFHO1VBQUVvVCxLQUFLLEVBQUxBO1FBQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztNQUU1QyxDQUFDLENBQUM7TUFDRm5JLHlCQUF5QixDQUFDLE1BQU0sQ0FBQztNQUNqQ1osVUFBVSxDQUFDLEtBQUssQ0FBQztJQUNuQjtFQUNGLENBQUMsRUFBRSxDQUFDcEIsb0JBQW9CLEVBQUVsSSxJQUFJLEVBQUV1SyxXQUFXLEVBQUVVLG1CQUFtQixFQUFFUSxrQkFBa0IsRUFBRU8sbUJBQW1CLENBQUMsQ0FBQzs7RUFFM0c7RUFDQWpQLFNBQVMsQ0FBQyxZQUFNO0lBQ2QsSUFBSWlELElBQUksS0FBSyxLQUFLLEVBQUU7SUFDcEIsSUFBSUEsSUFBSSxLQUFLLE9BQU8sRUFBRTtJQUV0QixJQUFNRyxDQUFDLEdBQUcrSCxvQkFBb0IsQ0FBQzFILElBQUksQ0FBQyxDQUFDO0lBQ3JDLElBQUksQ0FBQ0wsQ0FBQyxFQUFFO0lBQ1IrSSxtQkFBbUIsQ0FBQyxLQUFLLENBQUM7SUFFMUIsSUFBSWxKLElBQUksS0FBSyxRQUFRLEVBQUU7TUFBQSxJQUFBc1Msb0JBQUE7TUFDckI1SixVQUFVLENBQUNrRCxjQUFjLENBQUM7TUFDMUIsSUFBSUMsWUFBWSxFQUFFO1FBQ2hCL0MsUUFBUSxDQUFDLElBQUksQ0FBQztRQUNkO01BQ0Y7TUFDQSxJQUFJNkMsV0FBVyxhQUFYQSxXQUFXLGdCQUFBMkcsb0JBQUEsR0FBWDNHLFdBQVcsQ0FBRW9CLE9BQU8sY0FBQXVGLG9CQUFBLGVBQXBCQSxvQkFBQSxDQUFzQmxILElBQUksRUFBRTtRQUM5QjlDLFFBQVEsQ0FBQ3FELFdBQVcsQ0FBQ29CLE9BQU8sQ0FBQzNCLElBQUksQ0FBQ3BFLEdBQUcsQ0FBQyxVQUFBbEYsQ0FBQztVQUFBLE9BQUlELGVBQWUsQ0FBQ0MsQ0FBQyxFQUFFM0IsQ0FBQyxDQUFDO1FBQUEsRUFBQyxDQUFDO1FBQ2xFeU0scUJBQXFCLENBQUNqQixXQUFXLENBQUM7UUFDbEM3QyxRQUFRLENBQUMsS0FBSyxDQUFDO01BQ2pCO0lBQ0YsQ0FBQyxNQUFNLElBQUk5SSxJQUFJLEtBQUssTUFBTSxFQUFFO01BQUEsSUFBQXVTLGdCQUFBO01BQzFCN0osVUFBVSxDQUFDeUQsWUFBWSxDQUFDO01BQ3hCLElBQUlDLFVBQVUsRUFBRTtRQUNkdEQsUUFBUSxDQUFDLElBQUksQ0FBQztRQUNkO01BQ0Y7TUFDQSxJQUFJb0QsU0FBUyxhQUFUQSxTQUFTLGdCQUFBcUcsZ0JBQUEsR0FBVHJHLFNBQVMsQ0FBRVEsS0FBSyxjQUFBNkYsZ0JBQUEsZUFBaEJBLGdCQUFBLENBQWtCbkgsSUFBSSxFQUFFO1FBQzFCLElBQU11RCxNQUFNLEdBQUd6QyxTQUFTLENBQUNRLEtBQUssQ0FBQ3RCLElBQUksQ0FBQ3BFLEdBQUcsQ0FBQyxVQUFBdEUsQ0FBQztVQUFBLE9BQUlELGFBQWEsQ0FBQ0MsQ0FBQyxFQUFFdkMsQ0FBQyxDQUFDO1FBQUEsRUFBQztRQUNqRSxJQUFNcVMsSUFBSSxHQUFHdFQsTUFBTSxDQUFDd0ksT0FBTyxDQUFDekYsRUFBRSxDQUFDO1FBQy9CLElBQU13USxjQUFjLEdBQUc5RCxNQUFNLENBQUMrRCxJQUFJLENBQUMsVUFBQXBCLElBQUk7VUFBQSxPQUFJcFMsTUFBTSxDQUFDb1MsSUFBSSxDQUFDclAsRUFBRSxDQUFDLEtBQUt1USxJQUFJO1FBQUEsRUFBQztRQUNwRSxJQUFNdkMsU0FBUyxHQUFHdEIsTUFBTSxDQUFDOUgsTUFBTSxDQUFDLFVBQUF5SyxJQUFJO1VBQUEsT0FBSXBTLE1BQU0sQ0FBQ29TLElBQUksQ0FBQ3JQLEVBQUUsQ0FBQyxLQUFLdVEsSUFBSTtRQUFBLEVBQUM7UUFDakUsSUFBTXhDLE1BQU0sR0FBR3hNLG9CQUFvQixDQUFDa0UsT0FBTyxFQUFFdkgsQ0FBQyxFQUFFeUgsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDdkVVLFFBQVEsQ0FBQ21LLGNBQWMsSUFBSXpDLE1BQU0sRUFBQTlNLE1BQUEsQ0FBQTJPLGtCQUFBLENBQUs1QixTQUFTLEtBQUl0QixNQUFNLENBQUM7UUFDMUR0QyxtQkFBbUIsQ0FBQ0gsU0FBUyxDQUFDO1FBQzlCcEQsUUFBUSxDQUFDLEtBQUssQ0FBQztNQUNqQjtJQUNGLENBQUMsTUFBTTtNQUNMSixVQUFVLENBQUMyQyxhQUFhLENBQUM7TUFDekIsSUFBSUMsV0FBVyxFQUFFO1FBQ2Z4QyxRQUFRLENBQUMsSUFBSSxDQUFDO1FBQ2Q7TUFDRjtNQUNBLElBQUlxQyxVQUFVLGFBQVZBLFVBQVUsZUFBVkEsVUFBVSxDQUFFd0gsTUFBTSxFQUFFO1FBQ3RCckssUUFBUSxDQUFDNkMsVUFBVSxDQUFDd0gsTUFBTSxDQUFDM0wsR0FBRyxDQUFDLFVBQUF0QixDQUFDO1VBQUEsT0FBSUQsZUFBZSxDQUFDQyxDQUFDLEVBQUUxRixJQUFJLEVBQUVHLENBQUMsRUFBRThELHdCQUF3QixDQUFDO1FBQUEsRUFBQyxDQUFDO1FBQzNGcUYsVUFBVSxDQUFDLEtBQUssQ0FBQztRQUNqQlIsUUFBUSxDQUFDLEtBQUssQ0FBQztNQUNqQjtJQUNGO0VBQ0YsQ0FBQyxFQUFFLENBQ0RxQyxVQUFVLEVBQ1ZRLFdBQVcsRUFDWE8sU0FBUyxFQUNUYixhQUFhLEVBQ2JPLGNBQWMsRUFDZE8sWUFBWSxFQUNaYixXQUFXLEVBQ1hPLFlBQVksRUFDWk8sVUFBVSxFQUNWbEUsb0JBQW9CLEVBQ3BCbEksSUFBSSxFQUNKNE0scUJBQXFCLEVBQ3JCUCxtQkFBbUIsRUFDbkJwSSx3QkFBd0IsRUFDeEJ5RCxPQUFPLEVBQ1BFLENBQUMsQ0FDRixDQUFDO0VBRUYsSUFBTWdMLFFBQVEsR0FBRzlWLFdBQVcsY0FBQWtSLGlCQUFBLGNBQUFDLG1CQUFBLENBQUFDLElBQUEsQ0FBQyxTQUFBMkUsU0FBQTtJQUFBLElBQUFDLGVBQUEsRUFBQUMsUUFBQSxFQUFBNVMsQ0FBQSxFQUFBNlMsbUJBQUEsRUFBQUMsZ0JBQUEsRUFBQUMsV0FBQSxFQUFBQyxzQkFBQSxFQUFBL0gsSUFBQSxFQUFBZ0ksU0FBQSxFQUFBQyxtQkFBQSxFQUFBQyxjQUFBLEVBQUFDLHFCQUFBLEVBQUFDLE1BQUEsRUFBQUMsVUFBQSxFQUFBQyxxQkFBQSxFQUFBQyxpQkFBQSxFQUFBOU0sTUFBQSxFQUFBK00sc0JBQUEsRUFBQUMsTUFBQSxFQUFBQyxXQUFBLEVBQUFDLG9CQUFBLEVBQUFDLGVBQUEsRUFBQWhGLGVBQUEsRUFBQWlGLHNCQUFBLEVBQUFDLE1BQUEsRUFBQUMsV0FBQSxFQUFBQyxlQUFBLEVBQUFDLHFCQUFBLEVBQUFDLFdBQUEsRUFBQUMsTUFBQSxFQUFBQyxTQUFBLEVBQUFDLGFBQUEsRUFBQUMsU0FBQSxFQUFBakcsV0FBQSxFQUFBa0csV0FBQSxFQUFBQyxHQUFBO0lBQUEsT0FBQTNHLG1CQUFBLENBQUFtQyxJQUFBLFdBQUF5RSxTQUFBO01BQUEsa0JBQUFBLFNBQUEsQ0FBQXZFLElBQUEsR0FBQXVFLFNBQUEsQ0FBQXRFLElBQUE7UUFBQTtVQUFBLE1BQ3ZCOUcsYUFBYSxJQUFJLENBQUNKLE9BQU8sSUFBSVksc0JBQXNCLEtBQUssTUFBTTtZQUFBNEssU0FBQSxDQUFBdEUsSUFBQTtZQUFBO1VBQUE7VUFBQSxPQUFBc0UsU0FBQSxDQUFBcEUsTUFBQTtRQUFBO1VBRzVEcUMsZUFBZSxHQUFHOVUsb0JBQW9CLENBQUM2TCxXQUFXLEVBQUUsQ0FBQyxDQUFDO1VBQ3REa0osUUFBUSxHQUFHRCxlQUFlLEdBQUcsQ0FBQztVQUM5QjNTLENBQUMsR0FBRytILG9CQUFvQixDQUFDMUgsSUFBSSxDQUFDLENBQUM7VUFDL0J3UyxtQkFBbUIsR0FBR25MLHlCQUF5QixDQUFDMkksT0FBTztVQUM3RDlHLGdCQUFnQixDQUFDLElBQUksQ0FBQztVQUFBbUwsU0FBQSxDQUFBdkUsSUFBQTtVQUFBLE1BRWhCckcsc0JBQXNCLEtBQUssT0FBTztZQUFBNEssU0FBQSxDQUFBdEUsSUFBQTtZQUFBO1VBQUE7VUFBQXNFLFNBQUEsQ0FBQXRFLElBQUE7VUFBQSxPQUNidkUsbUJBQW1CLENBQUM7WUFDekNuQixTQUFTLEVBQUU7Y0FDVCtHLE9BQU8sRUFBRTFSLDBCQUEwQixDQUFDQyxDQUFDLENBQUM7Y0FDdENzTSxJQUFJLEVBQUVzRztZQUNSO1VBQ0YsQ0FBQyxDQUFDO1FBQUE7VUFBQUksc0JBQUEsR0FBQTBCLFNBQUEsQ0FBQWpFLElBQUE7VUFMTXhGLElBQUksR0FBQStILHNCQUFBLENBQUovSCxJQUFJO1VBQUEsTUFNUjRILG1CQUFtQixLQUFLbkwseUJBQXlCLENBQUMySSxPQUFPO1lBQUFxRSxTQUFBLENBQUF0RSxJQUFBO1lBQUE7VUFBQTtVQUFBLE9BQUFzRSxTQUFBLENBQUFwRSxNQUFBO1FBQUE7VUFDdkQyQyxTQUFTLEdBQUcsRUFBQUgsZ0JBQUEsR0FBQzdILElBQUksYUFBSkEsSUFBSSxnQkFBQThILFdBQUEsR0FBSjlILElBQUksQ0FBRXNCLEtBQUssY0FBQXdHLFdBQUEsdUJBQVhBLFdBQUEsQ0FBYTlILElBQUksY0FBQTZILGdCQUFBLGNBQUFBLGdCQUFBLEdBQUksRUFBRSxFQUFFak0sR0FBRyxDQUFDLFVBQUF0RSxDQUFDO1lBQUEsT0FBSUQsYUFBYSxDQUFDQyxDQUFDLEVBQUV2QyxDQUFDLENBQUM7VUFBQSxFQUFDO1VBQ3pFbUksUUFBUSxDQUFDLFVBQUFnSSxJQUFJLEVBQUk7WUFDZixJQUFJLENBQUNuUSxDQUFDLEVBQUU7Y0FBQSxJQUFBMlUsTUFBQTtjQUNOLElBQU05RSxNQUFNLEdBQ1YsRUFBQThFLE1BQUEsR0FBQXhFLElBQUksQ0FBQyxDQUFDLENBQUMsY0FBQXdFLE1BQUEsdUJBQVBBLE1BQUEsQ0FBUzlVLElBQUksTUFBSyxNQUFNLEdBQUdzUSxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUc5TSxvQkFBb0IsQ0FBQ2tFLE9BQU8sRUFBRSxFQUFFLEVBQUVFLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO2NBQ2hHLElBQU1tTixZQUFXLEdBQUcsSUFBSUMsR0FBRyxDQUFDMUUsSUFBSSxDQUFDdEosR0FBRyxDQUFDLFVBQUFzSyxJQUFJO2dCQUFBLE9BQUlwUyxNQUFNLENBQUNvUyxJQUFJLENBQUNyUCxFQUFFLENBQUM7Y0FBQSxFQUFDLENBQUM7Y0FDOUQsSUFBTWdULFNBQVEsR0FBRzdCLFNBQVMsQ0FBQ3ZNLE1BQU0sQ0FBQyxVQUFBeUssSUFBSTtnQkFBQSxPQUFJLENBQUN5RCxZQUFXLENBQUNHLEdBQUcsQ0FBQ2hXLE1BQU0sQ0FBQ29TLElBQUksQ0FBQ3JQLEVBQUUsQ0FBQyxDQUFDO2NBQUEsRUFBQztjQUM1RSxJQUFNZ08sU0FBUyxHQUFHSyxJQUFJLENBQUN6SixNQUFNLENBQUMsVUFBQXlLLElBQUk7Z0JBQUEsT0FBSXBTLE1BQU0sQ0FBQ29TLElBQUksQ0FBQ3JQLEVBQUUsQ0FBQyxLQUFLL0MsTUFBTSxDQUFDOFEsTUFBTSxDQUFDL04sRUFBRSxDQUFDO2NBQUEsRUFBQztjQUM1RSxRQUFRK04sTUFBTSxFQUFBOU0sTUFBQSxDQUFBMk8sa0JBQUEsQ0FBSzVCLFNBQVMsR0FBQTRCLGtCQUFBLENBQUtvRCxTQUFRO1lBQzNDO1lBQ0EsSUFBTUYsV0FBVyxHQUFHLElBQUlDLEdBQUcsQ0FBQzFFLElBQUksQ0FBQ3RKLEdBQUcsQ0FBQyxVQUFBc0ssSUFBSTtjQUFBLFVBQUFwTyxNQUFBLENBQU9vTyxJQUFJLENBQUN0UixJQUFJLE9BQUFrRCxNQUFBLENBQUlvTyxJQUFJLENBQUNyUCxFQUFFO1lBQUEsQ0FBRSxDQUFDLENBQUM7WUFDeEUsSUFBTWdULFFBQVEsR0FBRzdCLFNBQVMsQ0FBQ3ZNLE1BQU0sQ0FBQyxVQUFBeUssSUFBSTtjQUFBLE9BQUksQ0FBQ3lELFdBQVcsQ0FBQ0csR0FBRyxJQUFBaFMsTUFBQSxDQUFJb08sSUFBSSxDQUFDdFIsSUFBSSxPQUFBa0QsTUFBQSxDQUFJb08sSUFBSSxDQUFDclAsRUFBRSxDQUFFLENBQUM7WUFBQSxFQUFDO1lBQ3RGLFVBQUFpQixNQUFBLENBQUEyTyxrQkFBQSxDQUFXdkIsSUFBSSxHQUFBdUIsa0JBQUEsQ0FBS29ELFFBQVE7VUFDOUIsQ0FBQyxDQUFDO1VBQ0Y1SSxtQkFBbUIsQ0FBQ2pCLElBQUksQ0FBQztVQUFBeUosU0FBQSxDQUFBdEUsSUFBQTtVQUFBO1FBQUE7VUFBQSxNQUNoQnRHLHNCQUFzQixLQUFLLGdCQUFnQjtZQUFBNEssU0FBQSxDQUFBdEUsSUFBQTtZQUFBO1VBQUE7VUFBQXNFLFNBQUEsQ0FBQXRFLElBQUE7VUFBQSxPQUM3QjlFLGtCQUFrQixDQUFDO1lBQ3hDWixTQUFTLEVBQUU7Y0FDVGhFLE1BQU0sRUFBRTtnQkFBRWpGLElBQUksRUFBRXpCO2NBQUUsQ0FBQztjQUNuQnNNLElBQUksRUFBRXNHLFFBQVE7Y0FDZDFCLE9BQU8sRUFBRTtZQUNYO1VBQ0YsQ0FBQyxDQUFDO1FBQUE7VUFBQWtDLHFCQUFBLEdBQUFzQixTQUFBLENBQUFqRSxJQUFBO1VBTk14RixNQUFJLEdBQUFtSSxxQkFBQSxDQUFKbkksSUFBSTtVQUFBLE1BT1I0SCxtQkFBbUIsS0FBS25MLHlCQUF5QixDQUFDMkksT0FBTztZQUFBcUUsU0FBQSxDQUFBdEUsSUFBQTtZQUFBO1VBQUE7VUFBQSxPQUFBc0UsU0FBQSxDQUFBcEUsTUFBQTtRQUFBO1VBQ3ZEMkMsVUFBUyxHQUFHLEVBQUFDLG1CQUFBLEdBQUNqSSxNQUFJLGFBQUpBLE1BQUksZ0JBQUFrSSxjQUFBLEdBQUpsSSxNQUFJLENBQUUyQixPQUFPLGNBQUF1RyxjQUFBLHVCQUFiQSxjQUFBLENBQWVsSSxJQUFJLGNBQUFpSSxtQkFBQSxjQUFBQSxtQkFBQSxHQUFJLEVBQUUsRUFBRXJNLEdBQUcsQ0FBQyxVQUFBbEYsQ0FBQztZQUFBLE9BQUlELGVBQWUsQ0FBQ0MsQ0FBQyxFQUFFM0IsQ0FBQyxDQUFDO1VBQUEsRUFBQztVQUM3RW1JLFFBQVEsQ0FBQyxVQUFBZ0ksSUFBSSxFQUFJO1lBQ2YsSUFBTXlFLFdBQVcsR0FBRyxJQUFJQyxHQUFHLENBQUMxRSxJQUFJLENBQUN0SixHQUFHLENBQUMsVUFBQXNLLElBQUk7Y0FBQSxVQUFBcE8sTUFBQSxDQUFPb08sSUFBSSxDQUFDdFIsSUFBSSxPQUFBa0QsTUFBQSxDQUFJb08sSUFBSSxDQUFDclAsRUFBRTtZQUFBLENBQUUsQ0FBQyxDQUFDO1lBQ3hFLElBQU1nVCxRQUFRLEdBQUc3QixVQUFTLENBQUN2TSxNQUFNLENBQUMsVUFBQXlLLElBQUk7Y0FBQSxPQUFJLENBQUN5RCxXQUFXLENBQUNHLEdBQUcsSUFBQWhTLE1BQUEsQ0FBSW9PLElBQUksQ0FBQ3RSLElBQUksT0FBQWtELE1BQUEsQ0FBSW9PLElBQUksQ0FBQ3JQLEVBQUUsQ0FBRSxDQUFDO1lBQUEsRUFBQztZQUN0RixVQUFBaUIsTUFBQSxDQUFBMk8sa0JBQUEsQ0FBV3ZCLElBQUksR0FBQXVCLGtCQUFBLENBQUtvRCxRQUFRO1VBQzlCLENBQUMsQ0FBQztVQUNGckkscUJBQXFCLENBQUN4QixNQUFJLENBQUM7VUFBQXlKLFNBQUEsQ0FBQXRFLElBQUE7VUFBQTtRQUFBO1VBQUEsTUFDbEJ0RyxzQkFBc0IsS0FBSyxlQUFlO1lBQUE0SyxTQUFBLENBQUF0RSxJQUFBO1lBQUE7VUFBQTtVQUM3QzFKLE1BQWdDLEdBQUcsQ0FBQyxDQUFDO1VBQzNDLElBQUkwRCxXQUFXLENBQUNuTCxTQUFTLEtBQUssSUFBSSxJQUFJbUwsV0FBVyxDQUFDbkwsU0FBUyxLQUFLSCxTQUFTLElBQUlzTCxXQUFXLENBQUNuTCxTQUFTLEtBQUssRUFBRSxFQUFFO1lBQ3pHeUgsTUFBTSxDQUFDMEssVUFBVSxHQUFHLENBQUNyUyxNQUFNLENBQUNxTCxXQUFXLENBQUNuTCxTQUFTLENBQUMsQ0FBQztVQUNyRDtVQUNBLElBQUltTCxXQUFXLENBQUN2TCxRQUFRLEtBQUssSUFBSSxJQUFJdUwsV0FBVyxDQUFDdkwsUUFBUSxLQUFLQyxTQUFTLElBQUlzTCxXQUFXLENBQUN2TCxRQUFRLEtBQUssRUFBRSxFQUFFO1lBQ3RHNkgsTUFBTSxDQUFDMkssU0FBUyxHQUFHLENBQUN0UyxNQUFNLENBQUNxTCxXQUFXLENBQUN2TCxRQUFRLENBQUMsQ0FBQztVQUNuRDtVQUFDNlYsU0FBQSxDQUFBdEUsSUFBQTtVQUFBLE9BQ3NCNUMsdUJBQXVCLENBQUM7WUFDN0M5QyxTQUFTLEVBQUU7Y0FDVGhFLE1BQU0sRUFBQXVLLGFBQUE7Z0JBQUl6UyxRQUFRLEVBQUU7Y0FBSyxHQUFLa0ksTUFBTSxDQUFFO2NBQ3RDNEssVUFBVSxFQUFFO2dCQUFFQyxNQUFNLEVBQUUsQ0FBQ3FCLFFBQVEsR0FBRyxDQUFDLElBQUksRUFBRTtnQkFBRXBCLElBQUksRUFBRTtjQUFHO1lBQ3REO1VBQ0YsQ0FBQyxDQUFDO1FBQUE7VUFBQWlDLHNCQUFBLEdBQUFpQixTQUFBLENBQUFqRSxJQUFBO1VBTE14RixNQUFJLEdBQUF3SSxzQkFBQSxDQUFKeEksSUFBSTtVQUFBLE1BTVI0SCxtQkFBbUIsS0FBS25MLHlCQUF5QixDQUFDMkksT0FBTztZQUFBcUUsU0FBQSxDQUFBdEUsSUFBQTtZQUFBO1VBQUE7VUFBQSxPQUFBc0UsU0FBQSxDQUFBcEUsTUFBQTtRQUFBO1VBQ3ZEMkMsV0FBUyxHQUFHLEVBQUFNLHFCQUFBLEdBQUN0SSxNQUFJLGFBQUpBLE1BQUksZ0JBQUF1SSxpQkFBQSxHQUFKdkksTUFBSSxDQUFFZ0MsVUFBVSxjQUFBdUcsaUJBQUEsdUJBQWhCQSxpQkFBQSxDQUFrQnZJLElBQUksY0FBQXNJLHFCQUFBLGNBQUFBLHFCQUFBLEdBQUksRUFBRSxFQUM1QzFNLEdBQUcsQ0FBQzNDLHlCQUF5QixDQUFDLENBQzlCd0MsTUFBTSxDQUFDLFVBQUN5SyxJQUFJO1lBQUEsT0FBNkJBLElBQUksS0FBSyxJQUFJO1VBQUEsRUFBQyxDQUN2RHRLLEdBQUcsQ0FBQyxVQUFBcEksSUFBSTtZQUFBLE9BQUltRixtQkFBbUIsQ0FBQ25GLElBQUksRUFBRSxFQUFFLEVBQUVxRix3QkFBd0IsQ0FBQztVQUFBLEVBQUM7VUFDdkVxRSxRQUFRLENBQUMsVUFBQWdJLElBQUksRUFBSTtZQUNmLElBQU15RSxXQUFXLEdBQUcsSUFBSUMsR0FBRyxDQUFDMUUsSUFBSSxDQUFDdEosR0FBRyxDQUFDLFVBQUFzSyxJQUFJO2NBQUEsVUFBQXBPLE1BQUEsQ0FBT29PLElBQUksQ0FBQ3RSLElBQUksT0FBQWtELE1BQUEsQ0FBSW9PLElBQUksQ0FBQ3JQLEVBQUU7WUFBQSxDQUFFLENBQUMsQ0FBQztZQUN4RSxJQUFNZ1QsUUFBUSxHQUFHN0IsV0FBUyxDQUFDdk0sTUFBTSxDQUFDLFVBQUF5SyxJQUFJO2NBQUEsT0FBSSxDQUFDeUQsV0FBVyxDQUFDRyxHQUFHLElBQUFoUyxNQUFBLENBQUlvTyxJQUFJLENBQUN0UixJQUFJLE9BQUFrRCxNQUFBLENBQUlvTyxJQUFJLENBQUNyUCxFQUFFLENBQUUsQ0FBQztZQUFBLEVBQUM7WUFDdEYsVUFBQWlCLE1BQUEsQ0FBQTJPLGtCQUFBLENBQVd2QixJQUFJLEdBQUF1QixrQkFBQSxDQUFLb0QsUUFBUTtVQUM5QixDQUFDLENBQUM7VUFDRmpJLDBCQUEwQixDQUFDNUIsTUFBSSxDQUFDO1VBQUF5SixTQUFBLENBQUF0RSxJQUFBO1VBQUE7UUFBQTtVQUFBLE1BQ3ZCdEcsc0JBQXNCLEtBQUssa0JBQWtCO1lBQUE0SyxTQUFBLENBQUF0RSxJQUFBO1lBQUE7VUFBQTtVQUNoRHZCLGVBQWUsR0FDbkJ6RSxXQUFXLENBQUN2TCxRQUFRLEtBQUssSUFBSSxJQUFJdUwsV0FBVyxDQUFDdkwsUUFBUSxLQUFLQyxTQUFTLElBQUlzTCxXQUFXLENBQUN2TCxRQUFRLEtBQUssRUFBRSxHQUM5RjtZQUFFbVMsU0FBUyxFQUFFLENBQUNqUyxNQUFNLENBQUNxTCxXQUFXLENBQUN2TCxRQUFRLENBQUM7VUFBRSxDQUFDLEdBQzdDQyxTQUFTO1VBQUE0VixTQUFBLENBQUF0RSxJQUFBO1VBQUEsT0FDUXpDLHFCQUFxQixDQUFDO1lBQzNDakQsU0FBUyxFQUFBdUcsYUFBQSxDQUFBQSxhQUFBLEtBQ0hwQyxlQUFlLEdBQUc7Y0FBRTdOLFNBQVMsRUFBRTZOO1lBQWdCLENBQUMsR0FBRyxDQUFDLENBQUM7Y0FDekR2QyxJQUFJLEVBQUVzRyxRQUFRO2NBQ2QxQixPQUFPLEVBQUU7WUFBRTtVQUVmLENBQUMsQ0FBQztRQUFBO1VBQUE0QyxzQkFBQSxHQUFBWSxTQUFBLENBQUFqRSxJQUFBO1VBTk14RixNQUFJLEdBQUE2SSxzQkFBQSxDQUFKN0ksSUFBSTtVQUFBLE1BT1I0SCxtQkFBbUIsS0FBS25MLHlCQUF5QixDQUFDMkksT0FBTztZQUFBcUUsU0FBQSxDQUFBdEUsSUFBQTtZQUFBO1VBQUE7VUFBQSxPQUFBc0UsU0FBQSxDQUFBcEUsTUFBQTtRQUFBO1VBQ3ZEMkMsV0FBUyxHQUFHLEVBQUFXLG9CQUFBLEdBQUMzSSxNQUFJLGFBQUpBLE1BQUksZ0JBQUE0SSxlQUFBLEdBQUo1SSxNQUFJLENBQUVvQyxRQUFRLGNBQUF3RyxlQUFBLHVCQUFkQSxlQUFBLENBQWdCNUksSUFBSSxjQUFBMkksb0JBQUEsY0FBQUEsb0JBQUEsR0FBSSxFQUFFLEVBQzFDL00sR0FBRyxDQUFDL0IsK0JBQStCLENBQUMsQ0FDcEM0QixNQUFNLENBQUMsVUFBQ3lLLElBQUk7WUFBQSxPQUE4QkEsSUFBSSxLQUFLLElBQUk7VUFBQSxFQUFDLENBQ3hEdEssR0FBRyxDQUFDLFVBQUFzSyxJQUFJO1lBQUEsT0FBSTdMLGVBQWUsQ0FBQzZMLElBQUksRUFBRSxTQUFTLEVBQUUsRUFBRSxDQUFDO1VBQUEsRUFBQztVQUNwRGhKLFFBQVEsQ0FBQyxVQUFBZ0ksSUFBSSxFQUFJO1lBQ2YsSUFBTXlFLFdBQVcsR0FBRyxJQUFJQyxHQUFHLENBQUMxRSxJQUFJLENBQUN0SixHQUFHLENBQUMsVUFBQXNLLElBQUk7Y0FBQSxVQUFBcE8sTUFBQSxDQUFPb08sSUFBSSxDQUFDdFIsSUFBSSxPQUFBa0QsTUFBQSxDQUFJb08sSUFBSSxDQUFDclAsRUFBRTtZQUFBLENBQUUsQ0FBQyxDQUFDO1lBQ3hFLElBQU1nVCxRQUFRLEdBQUc3QixXQUFTLENBQUN2TSxNQUFNLENBQUMsVUFBQXlLLElBQUk7Y0FBQSxPQUFJLENBQUN5RCxXQUFXLENBQUNHLEdBQUcsSUFBQWhTLE1BQUEsQ0FBSW9PLElBQUksQ0FBQ3RSLElBQUksT0FBQWtELE1BQUEsQ0FBSW9PLElBQUksQ0FBQ3JQLEVBQUUsQ0FBRSxDQUFDO1lBQUEsRUFBQztZQUN0RixVQUFBaUIsTUFBQSxDQUFBMk8sa0JBQUEsQ0FBV3ZCLElBQUksR0FBQXVCLGtCQUFBLENBQUtvRCxRQUFRO1VBQzlCLENBQUMsQ0FBQztVQUNGNUgsNkJBQTZCLENBQUNqQyxNQUFJLENBQUM7VUFBQXlKLFNBQUEsQ0FBQXRFLElBQUE7VUFBQTtRQUFBO1VBQUEsTUFDMUJ0RyxzQkFBc0IsS0FBSyxRQUFRO1lBQUE0SyxTQUFBLENBQUF0RSxJQUFBO1lBQUE7VUFBQTtVQUN0QytELFdBQVcsR0FBR3pLLFdBQVc7VUFDekIwSyxNQUFNLEdBQUdyTSxvQkFBb0IsQ0FBQzFILElBQUksQ0FBQyxDQUFDO1VBQ3BDZ1UsU0FBUyxHQUFHRCxNQUFNLG9CQUFBclIsTUFBQSxDQUNIb1IsV0FBVyxTQUFBcFIsTUFBQSxDQUFNK08sa0JBQWtCLENBQUNzQyxNQUFNLENBQUMscUJBQUFyUixNQUFBLENBQzNDb1IsV0FBVyxDQUFFO1VBQUFPLFNBQUEsQ0FBQXRFLElBQUE7VUFBQSxPQUNOeFMsU0FBUyxDQUFDO1lBQUUyUyxJQUFJLEVBQUU4RCxTQUFTO1lBQUU3RCxNQUFNLEVBQUU7VUFBTSxDQUFDLENBQUM7UUFBQTtVQUFuRThELGFBQWEsR0FBQUksU0FBQSxDQUFBakUsSUFBQTtVQUFBaUUsU0FBQSxDQUFBdEUsSUFBQTtVQUFBLE9BQ3dCa0UsYUFBYSxDQUFDNUQsSUFBSSxDQUFDLENBQUM7UUFBQTtVQUF6RDZELFNBQTRCLEdBQUFHLFNBQUEsQ0FBQWpFLElBQUE7VUFBQSxNQUM5Qm9DLG1CQUFtQixLQUFLbkwseUJBQXlCLENBQUMySSxPQUFPO1lBQUFxRSxTQUFBLENBQUF0RSxJQUFBO1lBQUE7VUFBQTtVQUFBLE9BQUFzRSxTQUFBLENBQUFwRSxNQUFBO1FBQUE7VUFDdkRoQyxXQUFXLEdBQUcsQ0FBQyxDQUFDaUcsU0FBUyxDQUFDNUQsUUFBUSxJQUFJNEQsU0FBUyxDQUFDM0QsV0FBVyxJQUFJLElBQUk7VUFDbkVxQyxXQUFTLEdBQUcxTSxnQkFBZ0IsRUFBQTBOLGVBQUEsR0FBQ00sU0FBUyxDQUFDdEosSUFBSSxjQUFBZ0osZUFBQSxjQUFBQSxlQUFBLEdBQUksRUFBRSxFQUFFRyxNQUFNLENBQUM7VUFDaEVqTSxRQUFRLENBQUMsVUFBQWdJLElBQUksRUFBSTtZQUNmLElBQU15RSxXQUFXLEdBQUcsSUFBSUMsR0FBRyxDQUFDMUUsSUFBSSxDQUFDdEosR0FBRyxDQUFDLFVBQUFzSyxJQUFJO2NBQUEsVUFBQXBPLE1BQUEsQ0FBT29PLElBQUksQ0FBQ3RSLElBQUksT0FBQWtELE1BQUEsQ0FBSW9PLElBQUksQ0FBQ3JQLEVBQUU7WUFBQSxDQUFFLENBQUMsQ0FBQztZQUN4RSxJQUFNZ1QsUUFBUSxHQUFHN0IsV0FBUyxDQUFDdk0sTUFBTSxDQUFDLFVBQUF5SyxJQUFJO2NBQUEsT0FBSSxDQUFDeUQsV0FBVyxDQUFDRyxHQUFHLElBQUFoUyxNQUFBLENBQUlvTyxJQUFJLENBQUN0UixJQUFJLE9BQUFrRCxNQUFBLENBQUlvTyxJQUFJLENBQUNyUCxFQUFFLENBQUUsQ0FBQztZQUFBLEVBQUM7WUFDdEYsVUFBQWlCLE1BQUEsQ0FBQTJPLGtCQUFBLENBQVd2QixJQUFJLEdBQUF1QixrQkFBQSxDQUFLb0QsUUFBUTtVQUM5QixDQUFDLENBQUM7VUFDRjNMLFVBQVUsQ0FBQ21GLFdBQVcsQ0FBQztVQUN2QjNFLGNBQWMsRUFBQXVLLHFCQUFBLEdBQUNLLFNBQVMsQ0FBQzNELFdBQVcsY0FBQXNELHFCQUFBLGNBQUFBLHFCQUFBLEdBQUksQ0FBQyxDQUFDO1VBQzFDbksseUJBQXlCLENBQUN1RSxXQUFXLEdBQUcsUUFBUSxHQUFHLE1BQU0sQ0FBQztRQUFBO1VBQUFvRyxTQUFBLENBQUF0RSxJQUFBO1VBQUE7UUFBQTtVQUFBc0UsU0FBQSxDQUFBdkUsSUFBQTtVQUFBc0UsR0FBQSxHQUFBQyxTQUFBO1VBQUEsTUFHeEQ3QixtQkFBbUIsS0FBS25MLHlCQUF5QixDQUFDMkksT0FBTztZQUFBcUUsU0FBQSxDQUFBdEUsSUFBQTtZQUFBO1VBQUE7VUFBQSxPQUFBc0UsU0FBQSxDQUFBcEUsTUFBQTtRQUFBO1VBQzdEMEUsT0FBTyxDQUFDdE0sS0FBSyxDQUFDLG1DQUFtQyxFQUFFO1lBQ2pEdU0sTUFBTSxFQUFFbkwsc0JBQXNCO1lBQzlCOEksUUFBUSxFQUFSQSxRQUFRO1lBQ1JsSyxLQUFLLEVBQUErTDtVQUNQLENBQUMsQ0FBQztVQUNGO1VBQ0E5TCxRQUFRLENBQUMsSUFBSSxDQUFDO1VBQ2RRLFVBQVUsQ0FBQyxLQUFLLENBQUM7UUFBQTtVQUFBdUwsU0FBQSxDQUFBdkUsSUFBQTtVQUVqQjVHLGdCQUFnQixDQUFDLEtBQUssQ0FBQztVQUFBLE9BQUFtTCxTQUFBLENBQUE3RCxNQUFBO1FBQUE7UUFBQTtVQUFBLE9BQUE2RCxTQUFBLENBQUEvQyxJQUFBO01BQUE7SUFBQSxHQUFBZSxRQUFBO0VBQUEsQ0FFMUIsSUFBRSxDQUNEcEosYUFBYSxFQUNiSixPQUFPLEVBQ1BRLFdBQVcsRUFDWEksc0JBQXNCLEVBQ3RCL0Isb0JBQW9CLEVBQ3BCOEQsbUJBQW1CLEVBQ25CUCxrQkFBa0IsRUFDbEJrQyx1QkFBdUIsRUFDdkJHLHFCQUFxQixFQUNyQnZELFdBQVcsQ0FBQ25MLFNBQVMsRUFDckJtTCxXQUFXLENBQUN2TCxRQUFRLEVBQ3BCaUYsd0JBQXdCLEVBQ3hCeUQsT0FBTyxFQUNQRSxDQUFDLEVBQ0RnRixxQkFBcUIsRUFDckJQLG1CQUFtQixFQUNuQlcsMEJBQTBCLEVBQzFCSyw2QkFBNkIsQ0FDOUIsQ0FBQzs7RUFFRjtFQUNBO0VBQ0EsSUFBTWdJLGNBQWMsR0FBR3BZLE1BQU0sQ0FBQzhRLFdBQVcsQ0FBQztFQUMxQ2hSLFNBQVMsQ0FBQyxZQUFNO0lBQ2RzWSxjQUFjLENBQUM3RSxPQUFPLEdBQUd6QyxXQUFXO0VBQ3RDLENBQUMsRUFBRSxDQUFDQSxXQUFXLENBQUMsQ0FBQzs7RUFFakI7RUFDQTtFQUNBLElBQU11SCxjQUFjLEdBQ2xCdFYsSUFBSSxLQUFLLE1BQU0sSUFBSUEsSUFBSSxLQUFLLE9BQU8sR0FDL0JBLElBQUksTUFBQWtELE1BQUEsQ0FDRGxELElBQUksT0FBQWtELE1BQUEsRUFBQXFFLHFCQUFBLEdBQUlnRCxXQUFXLENBQUNuTCxTQUFTLGNBQUFtSSxxQkFBQSxjQUFBQSxxQkFBQSxHQUFJLEVBQUUsT0FBQXJFLE1BQUEsRUFBQXNFLHFCQUFBLEdBQUkrQyxXQUFXLENBQUN2TCxRQUFRLGNBQUF3SSxxQkFBQSxjQUFBQSxxQkFBQSxHQUFJLEVBQUUsT0FBQXRFLE1BQUEsRUFBQXVFLHFCQUFBLEdBQUk4QyxXQUFXLENBQUNsTCxXQUFXLGNBQUFvSSxxQkFBQSxjQUFBQSxxQkFBQSxHQUFJLEVBQUUsT0FBQXZFLE1BQUEsQ0FBSWlILFdBQVcsQ0FBRTs7RUFFNUg7RUFDQXBOLFNBQVMsQ0FBQyxZQUFNO0lBQ2QsSUFBSSxDQUFDbUwsb0JBQW9CLENBQUMxSCxJQUFJLENBQUMsQ0FBQyxFQUFFO01BQ2hDNlUsY0FBYyxDQUFDN0UsT0FBTyxDQUFDLENBQUM7SUFDMUI7RUFDRixDQUFDLEVBQUUsQ0FBQ3RJLG9CQUFvQixFQUFFb04sY0FBYyxDQUFDLENBQUM7RUFFMUMsT0FBTztJQUNMak4sS0FBSyxFQUFMQSxLQUFLO0lBQ0xJLE9BQU8sRUFBUEEsT0FBTztJQUNQSSxLQUFLLEVBQUxBLEtBQUs7SUFDTEksZ0JBQWdCLEVBQWhCQSxnQkFBZ0I7SUFDaEJJLE9BQU8sRUFBUEEsT0FBTztJQUNQSSxhQUFhLEVBQWJBLGFBQWE7SUFDYm1KLFFBQVEsRUFBUkEsUUFBUTtJQUNSaFMsV0FBVyxFQUFYQSxXQUFXO0lBQ1gyVSxpQkFBaUIsRUFBRXROLGNBQWM7SUFDakM4RixXQUFXLEVBQVhBO0VBQ0YsQ0FBQztBQUNILENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=
|