my-orders-tickets-widget 1.0.0-beta.49 → 1.0.0-beta.50
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +137 -108
- package/package.json +3 -3
package/dist/index.js
CHANGED
|
@@ -298,7 +298,8 @@ const getUserOrders = _ref2 => {
|
|
|
298
298
|
summit
|
|
299
299
|
}
|
|
300
300
|
} = getState();
|
|
301
|
-
const accessToken = await (0,_utils_auth__WEBPACK_IMPORTED_MODULE_7__.getAccessTokenSafely)()
|
|
301
|
+
const accessToken = await (0,_utils_auth__WEBPACK_IMPORTED_MODULE_7__.getAccessTokenSafely)();
|
|
302
|
+
if (!accessToken) return (0,_utils_auth__WEBPACK_IMPORTED_MODULE_7__.authPromiseReject)();
|
|
302
303
|
dispatch((0,openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.startLoading)());
|
|
303
304
|
const params = {
|
|
304
305
|
access_token: accessToken,
|
|
@@ -355,7 +356,8 @@ const getUserTickets = _ref4 => {
|
|
|
355
356
|
userProfile
|
|
356
357
|
} = user;
|
|
357
358
|
if (!summit) return Promise.reject();
|
|
358
|
-
const accessToken = await (0,_utils_auth__WEBPACK_IMPORTED_MODULE_7__.getAccessTokenSafely)()
|
|
359
|
+
const accessToken = await (0,_utils_auth__WEBPACK_IMPORTED_MODULE_7__.getAccessTokenSafely)();
|
|
360
|
+
if (!accessToken) return (0,_utils_auth__WEBPACK_IMPORTED_MODULE_7__.authPromiseReject)();
|
|
359
361
|
const fields = ["order.id", "order.owner_first_name", "order.owner_last_name", "order.owner_email", "owner.id", "owner.email", "owner.first_name", "owner.last_name", "owner.status", "badge.none"];
|
|
360
362
|
dispatch((0,openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.startLoading)());
|
|
361
363
|
const params = {
|
|
@@ -396,7 +398,8 @@ const getTicketsByOrder = _ref6 => {
|
|
|
396
398
|
apiBaseUrl
|
|
397
399
|
} = _ref7;
|
|
398
400
|
dispatch((0,openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.startLoading)());
|
|
399
|
-
const accessToken = await (0,_utils_auth__WEBPACK_IMPORTED_MODULE_7__.getAccessTokenSafely)()
|
|
401
|
+
const accessToken = await (0,_utils_auth__WEBPACK_IMPORTED_MODULE_7__.getAccessTokenSafely)();
|
|
402
|
+
if (!accessToken) return (0,_utils_auth__WEBPACK_IMPORTED_MODULE_7__.authPromiseReject)();
|
|
400
403
|
const params = {
|
|
401
404
|
access_token: accessToken,
|
|
402
405
|
"filter[]": [],
|
|
@@ -428,7 +431,8 @@ const resendNotification = ticket => async (dispatch, getState, _ref8) => {
|
|
|
428
431
|
let {
|
|
429
432
|
apiBaseUrl
|
|
430
433
|
} = _ref8;
|
|
431
|
-
const accessToken = await (0,_utils_auth__WEBPACK_IMPORTED_MODULE_7__.getAccessTokenSafely)()
|
|
434
|
+
const accessToken = await (0,_utils_auth__WEBPACK_IMPORTED_MODULE_7__.getAccessTokenSafely)();
|
|
435
|
+
if (!accessToken) return (0,_utils_auth__WEBPACK_IMPORTED_MODULE_7__.authPromiseReject)();
|
|
432
436
|
const {
|
|
433
437
|
message
|
|
434
438
|
} = ticket;
|
|
@@ -456,7 +460,8 @@ const refundTicket = _ref9 => {
|
|
|
456
460
|
let {
|
|
457
461
|
apiBaseUrl
|
|
458
462
|
} = _ref10;
|
|
459
|
-
const accessToken = await (0,_utils_auth__WEBPACK_IMPORTED_MODULE_7__.getAccessTokenSafely)()
|
|
463
|
+
const accessToken = await (0,_utils_auth__WEBPACK_IMPORTED_MODULE_7__.getAccessTokenSafely)();
|
|
464
|
+
if (!accessToken) return (0,_utils_auth__WEBPACK_IMPORTED_MODULE_7__.authPromiseReject)();
|
|
460
465
|
dispatch((0,openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.startLoading)());
|
|
461
466
|
const orderId = ticket.order ? ticket.order.id : ticket.order_id;
|
|
462
467
|
const params = {
|
|
@@ -507,7 +512,8 @@ const getExtraQuestions = attendeeId => async (dispatch, getState, _ref12) => {
|
|
|
507
512
|
summit
|
|
508
513
|
}
|
|
509
514
|
} = getState();
|
|
510
|
-
const accessToken = await (0,_utils_auth__WEBPACK_IMPORTED_MODULE_7__.getAccessTokenSafely)()
|
|
515
|
+
const accessToken = await (0,_utils_auth__WEBPACK_IMPORTED_MODULE_7__.getAccessTokenSafely)();
|
|
516
|
+
if (!accessToken) return (0,_utils_auth__WEBPACK_IMPORTED_MODULE_7__.authPromiseReject)();
|
|
511
517
|
const params = {
|
|
512
518
|
page: 1,
|
|
513
519
|
per_page: _utils_constants__WEBPACK_IMPORTED_MODULE_8__.FIFTY_PER_PAGE,
|
|
@@ -524,13 +530,14 @@ const getTicket = (ticketId, orderId) => async (dispatch, getState, _ref13) => {
|
|
|
524
530
|
let {
|
|
525
531
|
apiBaseUrl
|
|
526
532
|
} = _ref13;
|
|
527
|
-
const accessToken = await (0,_utils_auth__WEBPACK_IMPORTED_MODULE_7__.getAccessTokenSafely)()
|
|
533
|
+
const accessToken = await (0,_utils_auth__WEBPACK_IMPORTED_MODULE_7__.getAccessTokenSafely)();
|
|
534
|
+
if (!accessToken) return (0,_utils_auth__WEBPACK_IMPORTED_MODULE_7__.authPromiseReject)();
|
|
528
535
|
dispatch((0,openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.startLoading)());
|
|
529
536
|
const params = {
|
|
530
537
|
access_token: accessToken,
|
|
531
|
-
expand: "owner,owner.extra_questions,owner.extra_questions.question,ticket_type,order",
|
|
532
|
-
relations: "owner.extra_questions.question.none",
|
|
533
|
-
fields: "owner.extra_questions.question.id,owner.extra_questions.question.name,owner.extra_questions.question.type"
|
|
538
|
+
expand: "owner,owner.extra_questions,owner.extra_questions.question,ticket_type,order,promo_code",
|
|
539
|
+
relations: "owner.extra_questions,owner.extra_questions.question.none,promo_code.none,ticket_type.none",
|
|
540
|
+
fields: "owner.extra_questions.question.id,owner.extra_questions.question.name,owner.extra_questions.question.type,promo_code.id,promo_code.code,promo_code.allows_to_delegate,promo_code.allows_to_reassign,ticket_type.id,ticket_type.name,ticket_type.allows_to_delegate,ticket_type.allows_to_reassign,ticket_type.cost,ticket_type.created"
|
|
534
541
|
};
|
|
535
542
|
const endpoint = "".concat(apiBaseUrl, "/api/v1/summits/all/orders/").concat(orderId, "/tickets/").concat(ticketId);
|
|
536
543
|
return (0,openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.getRequest)((0,openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.createAction)(RESET_TICKET), (0,openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.createAction)(RECEIVE_TICKET), endpoint, customAuthErrorHandler)(params)(dispatch).finally(() => {
|
|
@@ -588,8 +595,8 @@ const saveTicketDetails = (ticket, answers) => async (dispatch, getState, _ref15
|
|
|
588
595
|
let {
|
|
589
596
|
apiBaseUrl
|
|
590
597
|
} = _ref15;
|
|
591
|
-
const accessToken = await (0,_utils_auth__WEBPACK_IMPORTED_MODULE_7__.getAccessTokenSafely)()
|
|
592
|
-
if (!accessToken) return
|
|
598
|
+
const accessToken = await (0,_utils_auth__WEBPACK_IMPORTED_MODULE_7__.getAccessTokenSafely)();
|
|
599
|
+
if (!accessToken) return (0,_utils_auth__WEBPACK_IMPORTED_MODULE_7__.authPromiseReject)();
|
|
593
600
|
dispatch((0,openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.startLoading)());
|
|
594
601
|
const params = {
|
|
595
602
|
access_token: accessToken,
|
|
@@ -622,12 +629,12 @@ const assignAttendee = function (orderId, ticketId, attendee_email) {
|
|
|
622
629
|
let {
|
|
623
630
|
apiBaseUrl
|
|
624
631
|
} = _ref16;
|
|
625
|
-
const accessToken = await (0,_utils_auth__WEBPACK_IMPORTED_MODULE_7__.getAccessTokenSafely)()
|
|
632
|
+
const accessToken = await (0,_utils_auth__WEBPACK_IMPORTED_MODULE_7__.getAccessTokenSafely)();
|
|
626
633
|
const payload = {
|
|
627
634
|
attendee_email
|
|
628
635
|
};
|
|
629
636
|
if (message) payload.message = message;
|
|
630
|
-
if (!accessToken) return
|
|
637
|
+
if (!accessToken) return (0,_utils_auth__WEBPACK_IMPORTED_MODULE_7__.authPromiseReject)();
|
|
631
638
|
dispatch((0,openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.startLoading)());
|
|
632
639
|
const params = {
|
|
633
640
|
access_token: accessToken,
|
|
@@ -644,8 +651,8 @@ const reassignTicket = (orderId, ticketId, email, message) => async (dispatch, g
|
|
|
644
651
|
let {
|
|
645
652
|
apiBaseUrl
|
|
646
653
|
} = _ref17;
|
|
647
|
-
const accessToken = await (0,_utils_auth__WEBPACK_IMPORTED_MODULE_7__.getAccessTokenSafely)()
|
|
648
|
-
if (!accessToken) return
|
|
654
|
+
const accessToken = await (0,_utils_auth__WEBPACK_IMPORTED_MODULE_7__.getAccessTokenSafely)();
|
|
655
|
+
if (!accessToken) return (0,_utils_auth__WEBPACK_IMPORTED_MODULE_7__.authPromiseReject)();
|
|
649
656
|
dispatch((0,openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.startLoading)());
|
|
650
657
|
const params = {
|
|
651
658
|
access_token: accessToken,
|
|
@@ -657,7 +664,7 @@ const delegateTicket = (orderId, ticketId, firstName, lastName, email) => async
|
|
|
657
664
|
let {
|
|
658
665
|
apiBaseUrl
|
|
659
666
|
} = _ref18;
|
|
660
|
-
const accessToken = await (0,_utils_auth__WEBPACK_IMPORTED_MODULE_7__.getAccessTokenSafely)()
|
|
667
|
+
const accessToken = await (0,_utils_auth__WEBPACK_IMPORTED_MODULE_7__.getAccessTokenSafely)();
|
|
661
668
|
const {
|
|
662
669
|
widgetState: {
|
|
663
670
|
summit
|
|
@@ -668,7 +675,7 @@ const delegateTicket = (orderId, ticketId, firstName, lastName, email) => async
|
|
|
668
675
|
attendee_last_name: lastName,
|
|
669
676
|
attendee_email: email
|
|
670
677
|
};
|
|
671
|
-
if (!accessToken) return
|
|
678
|
+
if (!accessToken) return (0,_utils_auth__WEBPACK_IMPORTED_MODULE_7__.authPromiseReject)();
|
|
672
679
|
dispatch((0,openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.startLoading)());
|
|
673
680
|
const params = {
|
|
674
681
|
access_token: accessToken,
|
|
@@ -684,8 +691,8 @@ const saveExtraQuestions = (ticket, answers) => async (dispatch, getState, _ref1
|
|
|
684
691
|
let {
|
|
685
692
|
apiBaseUrl
|
|
686
693
|
} = _ref19;
|
|
687
|
-
const accessToken = await (0,_utils_auth__WEBPACK_IMPORTED_MODULE_7__.getAccessTokenSafely)()
|
|
688
|
-
if (!accessToken) return
|
|
694
|
+
const accessToken = await (0,_utils_auth__WEBPACK_IMPORTED_MODULE_7__.getAccessTokenSafely)();
|
|
695
|
+
if (!accessToken) return (0,_utils_auth__WEBPACK_IMPORTED_MODULE_7__.authPromiseReject)();
|
|
689
696
|
dispatch((0,openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.startLoading)());
|
|
690
697
|
const params = {
|
|
691
698
|
access_token: accessToken,
|
|
@@ -704,8 +711,8 @@ const getTicketPDF = ticket => async (dispatch, getState, _ref20) => {
|
|
|
704
711
|
let {
|
|
705
712
|
apiBaseUrl
|
|
706
713
|
} = _ref20;
|
|
707
|
-
const accessToken = await (0,_utils_auth__WEBPACK_IMPORTED_MODULE_7__.getAccessTokenSafely)()
|
|
708
|
-
if (!accessToken) return
|
|
714
|
+
const accessToken = await (0,_utils_auth__WEBPACK_IMPORTED_MODULE_7__.getAccessTokenSafely)();
|
|
715
|
+
if (!accessToken) return (0,_utils_auth__WEBPACK_IMPORTED_MODULE_7__.authPromiseReject)();
|
|
709
716
|
dispatch((0,openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.startLoading)());
|
|
710
717
|
const params = {
|
|
711
718
|
access_token: accessToken
|
|
@@ -6013,7 +6020,7 @@ const TicketAssign = _ref => {
|
|
|
6013
6020
|
id: "reassignDrawer",
|
|
6014
6021
|
title: title,
|
|
6015
6022
|
open: open,
|
|
6016
|
-
onClose:
|
|
6023
|
+
onClose: onCloseEQForm,
|
|
6017
6024
|
children: ticket && extraQuestions && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_4__.Box, {
|
|
6018
6025
|
className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_16__.ticketReassignContainer,
|
|
6019
6026
|
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(Header, {
|
|
@@ -7465,6 +7472,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
7465
7472
|
/* harmony import */ var _actions__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./actions */ "./src/actions.js");
|
|
7466
7473
|
/* harmony import */ var _utils_constants__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./utils/constants */ "./src/utils/constants.js");
|
|
7467
7474
|
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./utils */ "./src/utils/index.js");
|
|
7475
|
+
/* harmony import */ var _utils_ticketUtils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./utils/ticketUtils */ "./src/utils/ticketUtils.js");
|
|
7468
7476
|
|
|
7469
7477
|
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; }
|
|
7470
7478
|
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) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(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; }
|
|
@@ -7485,6 +7493,7 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
|
|
|
7485
7493
|
|
|
7486
7494
|
|
|
7487
7495
|
|
|
7496
|
+
|
|
7488
7497
|
const DEFAULT_FILTER_STATE = {
|
|
7489
7498
|
[_actions__WEBPACK_IMPORTED_MODULE_3__.FILTER_VAR_BADGE_FEATURE]: [],
|
|
7490
7499
|
[_actions__WEBPACK_IMPORTED_MODULE_3__.FILTER_VAR_TICKET_TYPE]: [],
|
|
@@ -7686,18 +7695,15 @@ const WidgetReducer = function () {
|
|
|
7686
7695
|
{
|
|
7687
7696
|
const ticketData = payload.response;
|
|
7688
7697
|
const newOrders = state.memberOrders.map(order => {
|
|
7689
|
-
const newTickets = order.memberTickets
|
|
7690
|
-
if (ticket.id === ticketData.id) {
|
|
7691
|
-
return ticketData;
|
|
7692
|
-
}
|
|
7693
|
-
return ticket;
|
|
7694
|
-
});
|
|
7698
|
+
const newTickets = (0,_utils_ticketUtils__WEBPACK_IMPORTED_MODULE_6__.updateTicketCollection)(order.memberTickets, ticketData);
|
|
7695
7699
|
return _objectSpread(_objectSpread({}, order), {}, {
|
|
7696
7700
|
memberTickets: newTickets
|
|
7697
7701
|
});
|
|
7698
7702
|
});
|
|
7703
|
+
const newUserTickets = (0,_utils_ticketUtils__WEBPACK_IMPORTED_MODULE_6__.updateTicketCollection)(state.userTickets, ticketData);
|
|
7699
7704
|
return _objectSpread(_objectSpread({}, state), {}, {
|
|
7700
|
-
memberOrders: newOrders
|
|
7705
|
+
memberOrders: newOrders,
|
|
7706
|
+
userTickets: newUserTickets
|
|
7701
7707
|
});
|
|
7702
7708
|
}
|
|
7703
7709
|
case _actions__WEBPACK_IMPORTED_MODULE_3__.DELEGATE_TICKET:
|
|
@@ -7705,12 +7711,7 @@ const WidgetReducer = function () {
|
|
|
7705
7711
|
{
|
|
7706
7712
|
const ticketData = payload.response;
|
|
7707
7713
|
const newOrders = state.memberOrders.map(order => {
|
|
7708
|
-
const newTickets = order.memberTickets.map(
|
|
7709
|
-
if (ticket.id === ticketData.id) {
|
|
7710
|
-
return ticketData;
|
|
7711
|
-
}
|
|
7712
|
-
return ticket;
|
|
7713
|
-
});
|
|
7714
|
+
const newTickets = order.memberTickets.map(t => t.id === ticketData.id ? ticketData : t);
|
|
7714
7715
|
return _objectSpread(_objectSpread({}, order), {}, {
|
|
7715
7716
|
memberTickets: newTickets
|
|
7716
7717
|
});
|
|
@@ -7810,6 +7811,7 @@ const useInitStore = config => {
|
|
|
7810
7811
|
|
|
7811
7812
|
__webpack_require__.r(__webpack_exports__);
|
|
7812
7813
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
7814
|
+
/* harmony export */ authPromiseReject: () => (/* binding */ authPromiseReject),
|
|
7813
7815
|
/* harmony export */ getAccessTokenSafely: () => (/* binding */ getAccessTokenSafely)
|
|
7814
7816
|
/* harmony export */ });
|
|
7815
7817
|
/* harmony import */ var openstack_uicore_foundation_lib_security_methods__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! openstack-uicore-foundation/lib/security/methods */ "openstack-uicore-foundation/lib/security/methods");
|
|
@@ -7818,16 +7820,28 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
7818
7820
|
/* harmony import */ var _sentry_react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_sentry_react__WEBPACK_IMPORTED_MODULE_1__);
|
|
7819
7821
|
|
|
7820
7822
|
|
|
7823
|
+
|
|
7824
|
+
// eslint-disable-next-line no-unused-vars
|
|
7825
|
+
const getAccessTokenMock = () => {
|
|
7826
|
+
throw new Error("Access token error");
|
|
7827
|
+
// return authPromiseReject();
|
|
7828
|
+
};
|
|
7821
7829
|
const getAccessTokenSafely = async () => {
|
|
7822
7830
|
try {
|
|
7823
|
-
return await (0,openstack_uicore_foundation_lib_security_methods__WEBPACK_IMPORTED_MODULE_0__.getAccessToken)()
|
|
7831
|
+
return await (0,openstack_uicore_foundation_lib_security_methods__WEBPACK_IMPORTED_MODULE_0__.getAccessToken)().catch(e => {
|
|
7832
|
+
console.log("my-orders-tickets-widget::getAccessTokenSafely error: ", e);
|
|
7833
|
+
_sentry_react__WEBPACK_IMPORTED_MODULE_1__.captureException(e);
|
|
7834
|
+
(0,openstack_uicore_foundation_lib_security_methods__WEBPACK_IMPORTED_MODULE_0__.initLogOut)();
|
|
7835
|
+
return null;
|
|
7836
|
+
});
|
|
7824
7837
|
} catch (e) {
|
|
7825
7838
|
console.log("my-orders-tickets-widget::getAccessTokenSafely error: ", e);
|
|
7826
7839
|
_sentry_react__WEBPACK_IMPORTED_MODULE_1__.captureException(e);
|
|
7827
7840
|
(0,openstack_uicore_foundation_lib_security_methods__WEBPACK_IMPORTED_MODULE_0__.initLogOut)();
|
|
7828
|
-
return
|
|
7841
|
+
return null;
|
|
7829
7842
|
}
|
|
7830
7843
|
};
|
|
7844
|
+
const authPromiseReject = async () => Promise.reject(new Error("Auth Token error"));
|
|
7831
7845
|
|
|
7832
7846
|
/***/ }),
|
|
7833
7847
|
|
|
@@ -8182,15 +8196,21 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
8182
8196
|
/* harmony export */ isTicketRefundable: () => (/* binding */ isTicketRefundable),
|
|
8183
8197
|
/* harmony export */ parseAnswers: () => (/* binding */ parseAnswers),
|
|
8184
8198
|
/* harmony export */ statusData: () => (/* binding */ statusData),
|
|
8185
|
-
/* harmony export */ ticketsRefundable: () => (/* binding */ ticketsRefundable)
|
|
8199
|
+
/* harmony export */ ticketsRefundable: () => (/* binding */ ticketsRefundable),
|
|
8200
|
+
/* harmony export */ updateTicketCollection: () => (/* binding */ updateTicketCollection)
|
|
8186
8201
|
/* harmony export */ });
|
|
8187
|
-
/* harmony import */ var
|
|
8188
|
-
/* harmony import */ var
|
|
8189
|
-
/* harmony import */ var
|
|
8190
|
-
/* harmony import */ var
|
|
8191
|
-
/* harmony import */ var
|
|
8192
|
-
/* harmony import */ var
|
|
8193
|
-
/* harmony import */ var
|
|
8202
|
+
/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "@babel/runtime/helpers/defineProperty");
|
|
8203
|
+
/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);
|
|
8204
|
+
/* harmony import */ var yup__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! yup */ "yup");
|
|
8205
|
+
/* harmony import */ var yup__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(yup__WEBPACK_IMPORTED_MODULE_1__);
|
|
8206
|
+
/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../i18n */ "./src/i18n/index.js");
|
|
8207
|
+
/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./constants */ "./src/utils/constants.js");
|
|
8208
|
+
/* harmony import */ var _components_TicketDetail_constants__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../components/TicketDetail/constants */ "./src/components/TicketDetail/constants.js");
|
|
8209
|
+
/* harmony import */ var _components_ExtraQuestionsFields_components_utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../components/ExtraQuestionsFields/components/utils */ "./src/components/ExtraQuestionsFields/components/utils.js");
|
|
8210
|
+
/* harmony import */ var _components_ExtraQuestionsFields_constants__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../components/ExtraQuestionsFields/constants */ "./src/components/ExtraQuestionsFields/constants.js");
|
|
8211
|
+
|
|
8212
|
+
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; }
|
|
8213
|
+
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) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(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; }
|
|
8194
8214
|
|
|
8195
8215
|
|
|
8196
8216
|
|
|
@@ -8198,31 +8218,31 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
8198
8218
|
|
|
8199
8219
|
|
|
8200
8220
|
const statusData = {
|
|
8201
|
-
[
|
|
8202
|
-
type:
|
|
8203
|
-
text:
|
|
8221
|
+
[_constants__WEBPACK_IMPORTED_MODULE_3__.STATUS_UNASSIGNED]: {
|
|
8222
|
+
type: _constants__WEBPACK_IMPORTED_MODULE_3__.STATUS_UNASSIGNED,
|
|
8223
|
+
text: _i18n__WEBPACK_IMPORTED_MODULE_2__["default"].t("ticket_status.unassigned")
|
|
8204
8224
|
},
|
|
8205
|
-
[
|
|
8206
|
-
type:
|
|
8207
|
-
text:
|
|
8225
|
+
[_constants__WEBPACK_IMPORTED_MODULE_3__.STATUS_INCOMPLETE]: {
|
|
8226
|
+
type: _constants__WEBPACK_IMPORTED_MODULE_3__.STATUS_INCOMPLETE,
|
|
8227
|
+
text: _i18n__WEBPACK_IMPORTED_MODULE_2__["default"].t("ticket_status.incomplete")
|
|
8208
8228
|
},
|
|
8209
|
-
[
|
|
8210
|
-
type:
|
|
8211
|
-
text:
|
|
8229
|
+
[_constants__WEBPACK_IMPORTED_MODULE_3__.STATUS_COMPLETE]: {
|
|
8230
|
+
type: _constants__WEBPACK_IMPORTED_MODULE_3__.STATUS_COMPLETE,
|
|
8231
|
+
text: _i18n__WEBPACK_IMPORTED_MODULE_2__["default"].t("ticket_status.complete")
|
|
8212
8232
|
},
|
|
8213
|
-
[
|
|
8214
|
-
type:
|
|
8215
|
-
text:
|
|
8233
|
+
[_constants__WEBPACK_IMPORTED_MODULE_3__.STATUS_CANCELLED]: {
|
|
8234
|
+
type: _constants__WEBPACK_IMPORTED_MODULE_3__.STATUS_CANCELLED,
|
|
8235
|
+
text: _i18n__WEBPACK_IMPORTED_MODULE_2__["default"].t("ticket_status.cancelled")
|
|
8216
8236
|
}
|
|
8217
8237
|
};
|
|
8218
8238
|
const getTicketStatusKey = ticket => {
|
|
8219
8239
|
var _ticket$owner, _ticket$owner2, _ticket$owner3, _ticket$owner4;
|
|
8220
|
-
if (!ticket.is_active) return
|
|
8221
|
-
if (ticket.owner_id === 0) return
|
|
8222
|
-
if (!((_ticket$owner = ticket.owner) !== null && _ticket$owner !== void 0 && _ticket$owner.first_name) || !((_ticket$owner2 = ticket.owner) !== null && _ticket$owner2 !== void 0 && _ticket$owner2.last_name)) return
|
|
8223
|
-
if (ticket.owner && ((_ticket$owner3 = ticket.owner) === null || _ticket$owner3 === void 0 ? void 0 : _ticket$owner3.status) === "Incomplete") return
|
|
8224
|
-
if (ticket.owner && ((_ticket$owner4 = ticket.owner) === null || _ticket$owner4 === void 0 ? void 0 : _ticket$owner4.status) === "Complete") return
|
|
8225
|
-
return
|
|
8240
|
+
if (!ticket.is_active) return _constants__WEBPACK_IMPORTED_MODULE_3__.STATUS_CANCELLED;
|
|
8241
|
+
if (ticket.owner_id === 0) return _constants__WEBPACK_IMPORTED_MODULE_3__.STATUS_UNASSIGNED;
|
|
8242
|
+
if (!((_ticket$owner = ticket.owner) !== null && _ticket$owner !== void 0 && _ticket$owner.first_name) || !((_ticket$owner2 = ticket.owner) !== null && _ticket$owner2 !== void 0 && _ticket$owner2.last_name)) return _constants__WEBPACK_IMPORTED_MODULE_3__.STATUS_INCOMPLETE;
|
|
8243
|
+
if (ticket.owner && ((_ticket$owner3 = ticket.owner) === null || _ticket$owner3 === void 0 ? void 0 : _ticket$owner3.status) === "Incomplete") return _constants__WEBPACK_IMPORTED_MODULE_3__.STATUS_INCOMPLETE;
|
|
8244
|
+
if (ticket.owner && ((_ticket$owner4 = ticket.owner) === null || _ticket$owner4 === void 0 ? void 0 : _ticket$owner4.status) === "Complete") return _constants__WEBPACK_IMPORTED_MODULE_3__.STATUS_COMPLETE;
|
|
8245
|
+
return _constants__WEBPACK_IMPORTED_MODULE_3__.STATUS_INCOMPLETE;
|
|
8226
8246
|
};
|
|
8227
8247
|
const getTicketStatusData = (ticket, isSummitPast) => statusData[getTicketStatusKey(ticket, isSummitPast)];
|
|
8228
8248
|
const getTicketRole = ticket => {
|
|
@@ -8236,18 +8256,18 @@ const getTicketRole = ticket => {
|
|
|
8236
8256
|
const getTicketType = (ticket, summit) => summit.ticket_types.find(type => type.id === ticket.ticket_type_id);
|
|
8237
8257
|
const isTicketRefundable = ticket => {
|
|
8238
8258
|
var _ticket$refund_reques;
|
|
8239
|
-
return (ticket === null || ticket === void 0 ? void 0 : ticket.final_amount) > 0 && (ticket === null || ticket === void 0 ? void 0 : ticket.net_selling_cost) > ticket.refunded_amount && !(ticket !== null && ticket !== void 0 && (_ticket$refund_reques = ticket.refund_requests) !== null && _ticket$refund_reques !== void 0 && _ticket$refund_reques.some(rr => rr.status ===
|
|
8259
|
+
return (ticket === null || ticket === void 0 ? void 0 : ticket.final_amount) > 0 && (ticket === null || ticket === void 0 ? void 0 : ticket.net_selling_cost) > ticket.refunded_amount && !(ticket !== null && ticket !== void 0 && (_ticket$refund_reques = ticket.refund_requests) !== null && _ticket$refund_reques !== void 0 && _ticket$refund_reques.some(rr => rr.status === _constants__WEBPACK_IMPORTED_MODULE_3__.STATUS_REFUND_PENDING_LC));
|
|
8240
8260
|
};
|
|
8241
8261
|
const ticketsRefundable = tickets => (tickets === null || tickets === void 0 ? void 0 : tickets.filter(ticket => isTicketRefundable(ticket)).length) || 0;
|
|
8242
8262
|
const getRefundedRequestedTickets = tickets => tickets === null || tickets === void 0 ? void 0 : tickets.filter(ticket => {
|
|
8243
8263
|
var _ticket$refund_reques2;
|
|
8244
|
-
return (_ticket$refund_reques2 = ticket.refund_requests) === null || _ticket$refund_reques2 === void 0 ? void 0 : _ticket$refund_reques2.some(rr => rr.status ===
|
|
8264
|
+
return (_ticket$refund_reques2 = ticket.refund_requests) === null || _ticket$refund_reques2 === void 0 ? void 0 : _ticket$refund_reques2.some(rr => rr.status === _constants__WEBPACK_IMPORTED_MODULE_3__.STATUS_REFUND_PENDING_LC);
|
|
8245
8265
|
});
|
|
8246
8266
|
const getAllRefundRequestedTickets = tickets => {
|
|
8247
8267
|
const allTickets = [];
|
|
8248
8268
|
tickets === null || tickets === void 0 || tickets.map(ticket => {
|
|
8249
8269
|
var _ticket$refund_reques3, _ticket$refund_reques4, _ticket$refund_reques5;
|
|
8250
|
-
if ((_ticket$refund_reques3 = ticket.refund_requests) !== null && _ticket$refund_reques3 !== void 0 && _ticket$refund_reques3.some(rr => rr.status ===
|
|
8270
|
+
if ((_ticket$refund_reques3 = ticket.refund_requests) !== null && _ticket$refund_reques3 !== void 0 && _ticket$refund_reques3.some(rr => rr.status === _constants__WEBPACK_IMPORTED_MODULE_3__.STATUS_REFUND_PENDING_LC) || (_ticket$refund_reques4 = ticket.refund_requests) !== null && _ticket$refund_reques4 !== void 0 && _ticket$refund_reques4.some(rr => rr.status === _constants__WEBPACK_IMPORTED_MODULE_3__.STATUS_REFUND_APPROVED_LC) || (_ticket$refund_reques5 = ticket.refund_requests) !== null && _ticket$refund_reques5 !== void 0 && _ticket$refund_reques5.some(rr => rr.status === _constants__WEBPACK_IMPORTED_MODULE_3__.STATUS_REFUND_REJECTED_LC)) {
|
|
8251
8271
|
allTickets.push(ticket);
|
|
8252
8272
|
}
|
|
8253
8273
|
return ticket;
|
|
@@ -8256,22 +8276,22 @@ const getAllRefundRequestedTickets = tickets => {
|
|
|
8256
8276
|
};
|
|
8257
8277
|
const getRefundedRequestedStatus = ticket => {
|
|
8258
8278
|
var _ticket$refund_reques6, _ticket$refund_reques7, _ticket$refund_reques8;
|
|
8259
|
-
if ((_ticket$refund_reques6 = ticket.refund_requests) !== null && _ticket$refund_reques6 !== void 0 && _ticket$refund_reques6.some(rr => rr.status ===
|
|
8260
|
-
if ((_ticket$refund_reques7 = ticket.refund_requests) !== null && _ticket$refund_reques7 !== void 0 && _ticket$refund_reques7.some(rr => rr.status ===
|
|
8261
|
-
if ((_ticket$refund_reques8 = ticket.refund_requests) !== null && _ticket$refund_reques8 !== void 0 && _ticket$refund_reques8.some(rr => rr.status ===
|
|
8262
|
-
return
|
|
8279
|
+
if ((_ticket$refund_reques6 = ticket.refund_requests) !== null && _ticket$refund_reques6 !== void 0 && _ticket$refund_reques6.some(rr => rr.status === _constants__WEBPACK_IMPORTED_MODULE_3__.STATUS_REFUND_PENDING_LC)) return _constants__WEBPACK_IMPORTED_MODULE_3__.STATUS_REFUND_PENDING;
|
|
8280
|
+
if ((_ticket$refund_reques7 = ticket.refund_requests) !== null && _ticket$refund_reques7 !== void 0 && _ticket$refund_reques7.some(rr => rr.status === _constants__WEBPACK_IMPORTED_MODULE_3__.STATUS_REFUND_APPROVED_LC)) return _constants__WEBPACK_IMPORTED_MODULE_3__.STATUS_REFUND_APPROVED;
|
|
8281
|
+
if ((_ticket$refund_reques8 = ticket.refund_requests) !== null && _ticket$refund_reques8 !== void 0 && _ticket$refund_reques8.some(rr => rr.status === _constants__WEBPACK_IMPORTED_MODULE_3__.STATUS_REFUND_REJECTED_LC)) return _constants__WEBPACK_IMPORTED_MODULE_3__.STATUS_REFUND_REJECTED;
|
|
8282
|
+
return _constants__WEBPACK_IMPORTED_MODULE_3__.STATUS_REFUND_PENDING;
|
|
8263
8283
|
};
|
|
8264
8284
|
const getRefundRequestedStatusColor = ticket => {
|
|
8265
8285
|
const status = getRefundedRequestedStatus(ticket);
|
|
8266
8286
|
let statusColor = "";
|
|
8267
8287
|
switch (status) {
|
|
8268
|
-
case
|
|
8288
|
+
case _constants__WEBPACK_IMPORTED_MODULE_3__.STATUS_REFUND_PENDING:
|
|
8269
8289
|
statusColor = "pending";
|
|
8270
8290
|
break;
|
|
8271
|
-
case
|
|
8291
|
+
case _constants__WEBPACK_IMPORTED_MODULE_3__.STATUS_REFUND_APPROVED:
|
|
8272
8292
|
statusColor = "approved";
|
|
8273
8293
|
break;
|
|
8274
|
-
case
|
|
8294
|
+
case _constants__WEBPACK_IMPORTED_MODULE_3__.STATUS_REFUND_REJECTED:
|
|
8275
8295
|
statusColor = "rejected";
|
|
8276
8296
|
break;
|
|
8277
8297
|
default:
|
|
@@ -8282,23 +8302,23 @@ const getRefundRequestedStatusColor = ticket => {
|
|
|
8282
8302
|
const getTypeValidation = (type, name, isRequired) => {
|
|
8283
8303
|
let schema;
|
|
8284
8304
|
switch (type) {
|
|
8285
|
-
case
|
|
8286
|
-
schema =
|
|
8305
|
+
case _components_ExtraQuestionsFields_constants__WEBPACK_IMPORTED_MODULE_6__.QuestionType_Checkbox:
|
|
8306
|
+
schema = yup__WEBPACK_IMPORTED_MODULE_1__.bool().oneOf([true], _i18n__WEBPACK_IMPORTED_MODULE_2__["default"].t("validation.checkbox.required"));
|
|
8287
8307
|
break;
|
|
8288
|
-
case
|
|
8289
|
-
schema =
|
|
8308
|
+
case _components_ExtraQuestionsFields_constants__WEBPACK_IMPORTED_MODULE_6__.QuestionType_RadioButtonList:
|
|
8309
|
+
schema = yup__WEBPACK_IMPORTED_MODULE_1__.string("Enter ".concat(name));
|
|
8290
8310
|
break;
|
|
8291
|
-
case
|
|
8292
|
-
schema =
|
|
8311
|
+
case _components_ExtraQuestionsFields_constants__WEBPACK_IMPORTED_MODULE_6__.QuestionType_CheckBoxList:
|
|
8312
|
+
schema = yup__WEBPACK_IMPORTED_MODULE_1__.array().of(yup__WEBPACK_IMPORTED_MODULE_1__.string());
|
|
8293
8313
|
// eslint-disable-next-line no-magic-numbers
|
|
8294
8314
|
if (isRequired) schema = schema.min(1, "".concat(name, " is required"));
|
|
8295
8315
|
break;
|
|
8296
|
-
case
|
|
8297
|
-
case
|
|
8298
|
-
schema =
|
|
8316
|
+
case _components_ExtraQuestionsFields_constants__WEBPACK_IMPORTED_MODULE_6__.QuestionType_CountryComboBox:
|
|
8317
|
+
case _components_ExtraQuestionsFields_constants__WEBPACK_IMPORTED_MODULE_6__.QuestionType_ComboBox:
|
|
8318
|
+
schema = yup__WEBPACK_IMPORTED_MODULE_1__.string("Enter ".concat(name));
|
|
8299
8319
|
break;
|
|
8300
8320
|
default:
|
|
8301
|
-
schema =
|
|
8321
|
+
schema = yup__WEBPACK_IMPORTED_MODULE_1__.string("Enter ".concat(name));
|
|
8302
8322
|
break;
|
|
8303
8323
|
}
|
|
8304
8324
|
if (isRequired) {
|
|
@@ -8314,11 +8334,11 @@ const parseSubQuestionAnswer = (q, answers, answer, initialValues, onlyRelevant)
|
|
|
8314
8334
|
sub_question,
|
|
8315
8335
|
answer_values
|
|
8316
8336
|
} = rule;
|
|
8317
|
-
const subQuestionSlug = (0,
|
|
8337
|
+
const subQuestionSlug = (0,_components_ExtraQuestionsFields_components_utils__WEBPACK_IMPORTED_MODULE_5__.toSlug)(sub_question.name, sub_question.id);
|
|
8318
8338
|
const subAnswer = answers[subQuestionSlug];
|
|
8319
|
-
const match = (0,
|
|
8339
|
+
const match = (0,_components_ExtraQuestionsFields_components_utils__WEBPACK_IMPORTED_MODULE_5__.checkIfValueMatch)(answer, answer_values);
|
|
8320
8340
|
if (!onlyRelevant || match) {
|
|
8321
|
-
initialValues[subQuestionSlug] = subAnswer || (0,
|
|
8341
|
+
initialValues[subQuestionSlug] = subAnswer || (0,_components_ExtraQuestionsFields_components_utils__WEBPACK_IMPORTED_MODULE_5__.getTypeInitialValue)(sub_question);
|
|
8322
8342
|
}
|
|
8323
8343
|
parseSubQuestionAnswer(sub_question, answers, subAnswer, initialValues, onlyRelevant);
|
|
8324
8344
|
});
|
|
@@ -8328,18 +8348,18 @@ const parseAnswers = function (owner, extraQuestions, answers, includeAttendeeIn
|
|
|
8328
8348
|
let onlyRelevant = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : false;
|
|
8329
8349
|
const initialValues = {};
|
|
8330
8350
|
if (includeAttendeeInfo) {
|
|
8331
|
-
initialValues[
|
|
8332
|
-
initialValues[
|
|
8333
|
-
initialValues[
|
|
8334
|
-
initialValues[
|
|
8351
|
+
initialValues[_components_TicketDetail_constants__WEBPACK_IMPORTED_MODULE_4__.TICKET_ATTENDEE_KEYS.email] = answers[_components_TicketDetail_constants__WEBPACK_IMPORTED_MODULE_4__.TICKET_ATTENDEE_KEYS.email] || owner.email || "";
|
|
8352
|
+
initialValues[_components_TicketDetail_constants__WEBPACK_IMPORTED_MODULE_4__.TICKET_ATTENDEE_KEYS.firstName] = answers[_components_TicketDetail_constants__WEBPACK_IMPORTED_MODULE_4__.TICKET_ATTENDEE_KEYS.firstName] || owner.first_name || "";
|
|
8353
|
+
initialValues[_components_TicketDetail_constants__WEBPACK_IMPORTED_MODULE_4__.TICKET_ATTENDEE_KEYS.lastName] = answers[_components_TicketDetail_constants__WEBPACK_IMPORTED_MODULE_4__.TICKET_ATTENDEE_KEYS.lastName] || owner.last_name || "";
|
|
8354
|
+
initialValues[_components_TicketDetail_constants__WEBPACK_IMPORTED_MODULE_4__.TICKET_ATTENDEE_KEYS.company] = answers[_components_TicketDetail_constants__WEBPACK_IMPORTED_MODULE_4__.TICKET_ATTENDEE_KEYS.company] || owner.company;
|
|
8335
8355
|
}
|
|
8336
8356
|
if (includeDisclaimer) {
|
|
8337
|
-
initialValues[
|
|
8357
|
+
initialValues[_components_TicketDetail_constants__WEBPACK_IMPORTED_MODULE_4__.TICKET_ATTENDEE_KEYS.disclaimerAccepted] = answers[_components_TicketDetail_constants__WEBPACK_IMPORTED_MODULE_4__.TICKET_ATTENDEE_KEYS.disclaimerAccepted] || owner.disclaimer_accepted;
|
|
8338
8358
|
}
|
|
8339
8359
|
extraQuestions.forEach(q => {
|
|
8340
|
-
const questionSlug = (0,
|
|
8360
|
+
const questionSlug = (0,_components_ExtraQuestionsFields_components_utils__WEBPACK_IMPORTED_MODULE_5__.toSlug)(q.name, q.id);
|
|
8341
8361
|
const answer = answers[questionSlug];
|
|
8342
|
-
initialValues[questionSlug] = answer || (0,
|
|
8362
|
+
initialValues[questionSlug] = answer || (0,_components_ExtraQuestionsFields_components_utils__WEBPACK_IMPORTED_MODULE_5__.getTypeInitialValue)(q);
|
|
8343
8363
|
parseSubQuestionAnswer(q, answers, answer, initialValues, onlyRelevant);
|
|
8344
8364
|
});
|
|
8345
8365
|
return initialValues;
|
|
@@ -8347,20 +8367,20 @@ const parseAnswers = function (owner, extraQuestions, answers, includeAttendeeIn
|
|
|
8347
8367
|
const buildSubQuestionValidationSchema = (questionSlug, rule, schema) => {
|
|
8348
8368
|
var _subQuestion$sub_ques;
|
|
8349
8369
|
const subQuestion = rule.sub_question;
|
|
8350
|
-
const subQuestionSlug = (0,
|
|
8370
|
+
const subQuestionSlug = (0,_components_ExtraQuestionsFields_components_utils__WEBPACK_IMPORTED_MODULE_5__.toSlug)(subQuestion.name, subQuestion.id);
|
|
8351
8371
|
schema[subQuestionSlug] = getTypeValidation(subQuestion.type, subQuestion.name, false).nullable().when(questionSlug, {
|
|
8352
8372
|
is: questionAns => {
|
|
8353
|
-
const ansValueMatch = (0,
|
|
8373
|
+
const ansValueMatch = (0,_components_ExtraQuestionsFields_components_utils__WEBPACK_IMPORTED_MODULE_5__.checkIfValueMatch)(questionAns, rule.answer_values);
|
|
8354
8374
|
// check if question is visible to add validation
|
|
8355
8375
|
const isVisible = !!document.getElementById("".concat(questionSlug, "_container"));
|
|
8356
8376
|
return ansValueMatch && isVisible;
|
|
8357
8377
|
},
|
|
8358
8378
|
then: sch => {
|
|
8359
|
-
if (subQuestion.type ===
|
|
8379
|
+
if (subQuestion.type === _components_ExtraQuestionsFields_constants__WEBPACK_IMPORTED_MODULE_6__.QuestionType_CheckBoxList) {
|
|
8360
8380
|
// eslint-disable-next-line no-magic-numbers
|
|
8361
|
-
return sch.min(1).required(
|
|
8381
|
+
return sch.min(1).required(_i18n__WEBPACK_IMPORTED_MODULE_2__["default"].t("validation.required_question"));
|
|
8362
8382
|
}
|
|
8363
|
-
return sch.required(
|
|
8383
|
+
return sch.required(_i18n__WEBPACK_IMPORTED_MODULE_2__["default"].t("validation.required_question"));
|
|
8364
8384
|
}
|
|
8365
8385
|
});
|
|
8366
8386
|
if (((_subQuestion$sub_ques = subQuestion.sub_question_rules) === null || _subQuestion$sub_ques === void 0 ? void 0 : _subQuestion$sub_ques.length) > 0) {
|
|
@@ -8372,13 +8392,13 @@ const buildSubQuestionValidationSchema = (questionSlug, rule, schema) => {
|
|
|
8372
8392
|
const buildValidationSchema = (extraQuestions, includeAttendeeInfo, disclaimerMandatory) => {
|
|
8373
8393
|
const schema = {};
|
|
8374
8394
|
if (includeAttendeeInfo) {
|
|
8375
|
-
schema[
|
|
8376
|
-
schema[
|
|
8377
|
-
schema[
|
|
8378
|
-
schema[
|
|
8395
|
+
schema[_components_TicketDetail_constants__WEBPACK_IMPORTED_MODULE_4__.TICKET_ATTENDEE_KEYS.email] = yup__WEBPACK_IMPORTED_MODULE_1__.string(_i18n__WEBPACK_IMPORTED_MODULE_2__["default"].t("validation.email.string")).email(_i18n__WEBPACK_IMPORTED_MODULE_2__["default"].t("validation.email.format")).required(_i18n__WEBPACK_IMPORTED_MODULE_2__["default"].t("validation.email.required"));
|
|
8396
|
+
schema[_components_TicketDetail_constants__WEBPACK_IMPORTED_MODULE_4__.TICKET_ATTENDEE_KEYS.firstName] = yup__WEBPACK_IMPORTED_MODULE_1__.string(_i18n__WEBPACK_IMPORTED_MODULE_2__["default"].t("validation.first_name.string")).required(_i18n__WEBPACK_IMPORTED_MODULE_2__["default"].t("validation.first_name.required"));
|
|
8397
|
+
schema[_components_TicketDetail_constants__WEBPACK_IMPORTED_MODULE_4__.TICKET_ATTENDEE_KEYS.lastName] = yup__WEBPACK_IMPORTED_MODULE_1__.string(_i18n__WEBPACK_IMPORTED_MODULE_2__["default"].t("validation.last_name.string")).required(_i18n__WEBPACK_IMPORTED_MODULE_2__["default"].t("validation.last_name.required"));
|
|
8398
|
+
schema[_components_TicketDetail_constants__WEBPACK_IMPORTED_MODULE_4__.TICKET_ATTENDEE_KEYS.company] = yup__WEBPACK_IMPORTED_MODULE_1__.lazy(value => typeof value === "object" ? yup__WEBPACK_IMPORTED_MODULE_1__.object().required(_i18n__WEBPACK_IMPORTED_MODULE_2__["default"].t("validation.company.required")).typeError(_i18n__WEBPACK_IMPORTED_MODULE_2__["default"].t("validation.required_field")) : yup__WEBPACK_IMPORTED_MODULE_1__.string().required(_i18n__WEBPACK_IMPORTED_MODULE_2__["default"].t("validation.company.required")));
|
|
8379
8399
|
}
|
|
8380
8400
|
if (disclaimerMandatory) {
|
|
8381
|
-
schema[
|
|
8401
|
+
schema[_components_TicketDetail_constants__WEBPACK_IMPORTED_MODULE_4__.TICKET_ATTENDEE_KEYS.disclaimerAccepted] = yup__WEBPACK_IMPORTED_MODULE_1__.bool().oneOf([true], _i18n__WEBPACK_IMPORTED_MODULE_2__["default"].t("validation.checkbox.required"));
|
|
8382
8402
|
}
|
|
8383
8403
|
extraQuestions.forEach(q => {
|
|
8384
8404
|
const {
|
|
@@ -8388,7 +8408,7 @@ const buildValidationSchema = (extraQuestions, includeAttendeeInfo, disclaimerMa
|
|
|
8388
8408
|
mandatory,
|
|
8389
8409
|
sub_question_rules
|
|
8390
8410
|
} = q;
|
|
8391
|
-
const questionSlug = (0,
|
|
8411
|
+
const questionSlug = (0,_components_ExtraQuestionsFields_components_utils__WEBPACK_IMPORTED_MODULE_5__.toSlug)(name, id);
|
|
8392
8412
|
schema[questionSlug] = getTypeValidation(type, name, mandatory);
|
|
8393
8413
|
if ((sub_question_rules === null || sub_question_rules === void 0 ? void 0 : sub_question_rules.length) > 0) {
|
|
8394
8414
|
sub_question_rules.forEach(rule => {
|
|
@@ -8396,8 +8416,17 @@ const buildValidationSchema = (extraQuestions, includeAttendeeInfo, disclaimerMa
|
|
|
8396
8416
|
});
|
|
8397
8417
|
}
|
|
8398
8418
|
});
|
|
8399
|
-
return
|
|
8400
|
-
};
|
|
8419
|
+
return yup__WEBPACK_IMPORTED_MODULE_1__.object(schema);
|
|
8420
|
+
};
|
|
8421
|
+
const updateTicketCollection = (tickets, ticket) => tickets.map(t => {
|
|
8422
|
+
var _t$owner, _ticket$owner5, _t$owner2, _ticket$owner6;
|
|
8423
|
+
const tmpTicket = _objectSpread({}, t);
|
|
8424
|
+
// update attendee
|
|
8425
|
+
if (((_t$owner = t.owner) === null || _t$owner === void 0 ? void 0 : _t$owner.id) === ((_ticket$owner5 = ticket.owner) === null || _ticket$owner5 === void 0 ? void 0 : _ticket$owner5.id) && ((_t$owner2 = t.owner) === null || _t$owner2 === void 0 ? void 0 : _t$owner2.status) !== ((_ticket$owner6 = ticket.owner) === null || _ticket$owner6 === void 0 ? void 0 : _ticket$owner6.status)) {
|
|
8426
|
+
tmpTicket.owner = ticket.owner;
|
|
8427
|
+
}
|
|
8428
|
+
return t.id === ticket.id ? ticket : tmpTicket;
|
|
8429
|
+
});
|
|
8401
8430
|
|
|
8402
8431
|
/***/ }),
|
|
8403
8432
|
|
|
@@ -9619,4 +9648,4 @@ MyOrdersMyTicketsWidget.propTypes = {
|
|
|
9619
9648
|
/******/ })()
|
|
9620
9649
|
;
|
|
9621
9650
|
});
|
|
9622
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDaXVCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUM5Qmp1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQzRmOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUN2QjVmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDMkU7Ozs7Ozs7Ozs7Ozs7Ozs7QUNMM0U7QUFDQTtBQUNBO0FBQ3dEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDSHhEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNnSDs7Ozs7Ozs7Ozs7Ozs7OztBQ05oSDtBQUNBO0FBQ0E7QUFDd0U7Ozs7Ozs7Ozs7Ozs7OztBQ0h4RTtBQUNBO0FBQzBCOzs7Ozs7Ozs7Ozs7Ozs7O0FDRjFCO0FBQ0E7QUFDQTtBQUM0Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNINUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDOFg7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ25COVg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNnTTs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNSaE07QUFDQTtBQUNBO0FBQ0E7QUFDZ0U7Ozs7Ozs7Ozs7Ozs7OztBQ0poRTtBQUNBO0FBQ21DOzs7Ozs7Ozs7OztBQ0ZuQzs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1VDQUE7VUFDQTs7VUFFQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTs7VUFFQTtVQUNBOztVQUVBO1VBQ0E7VUFDQTs7Ozs7V0N0QkE7V0FDQTtXQUNBO1dBQ0E7V0FDQTtXQUNBLGlDQUFpQyxXQUFXO1dBQzVDO1dBQ0E7Ozs7O1dDUEE7V0FDQTtXQUNBO1dBQ0E7V0FDQSx5Q0FBeUMsd0NBQXdDO1dBQ2pGO1dBQ0E7V0FDQTs7Ozs7V0NQQTs7Ozs7V0NBQTtXQUNBO1dBQ0E7V0FDQSx1REFBdUQsaUJBQWlCO1dBQ3hFO1dBQ0EsZ0RBQWdELGFBQWE7V0FDN0Q7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDTkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ3lDO0FBQ047QUFDSTtBQUN1QjtBQUNUO0FBQ2Q7QUFDa0I7QUFFRjtBQUFBO0FBRXZELE1BQU13Qix1QkFBdUIsR0FBSW5nQixLQUFLLElBQUs7RUFDekMsTUFBTTtJQUNKNlcsUUFBUTtJQUNSdUosWUFBWTtJQUNadnRDLE1BQU07SUFDTnlELFVBQVU7SUFDVnhELElBQUk7SUFDSjhqQyxRQUFRO0lBQ1JoOEI7RUFDRixDQUFDLEdBQUdvbEIsS0FBSztFQUVULE1BQU07SUFBRStXLEtBQUs7SUFBRVc7RUFBVSxDQUFDLEdBQUdGLG9EQUFZLENBQUM7SUFDeENYLFFBQVE7SUFDUnVKLFlBQVk7SUFDWnZ0QyxNQUFNO0lBQ05DLElBQUk7SUFDSndELFVBQVU7SUFDVnNnQyxRQUFRO0lBQ1JoOEI7RUFDRixDQUFDLENBQUM7RUFFRixNQUFNeWxDLGdCQUFnQixHQUFHQSxDQUFBLEtBQU07SUFDN0IsTUFBTXpwQyxNQUFNLEdBQUcsSUFBSTBwQyxlQUFlLENBQUM1aUMsTUFBTSxDQUFDNCtCLFFBQVEsQ0FBQ2lFLE1BQU0sQ0FBQztJQUMxRCxNQUFNQyxLQUFLLEdBQUc1cEMsTUFBTSxDQUFDNnBDLEdBQUcsQ0FBQyxZQUFZLENBQUM7SUFDdEMsSUFBSUQsS0FBSyxFQUFFekosS0FBSyxDQUFDdmtDLFFBQVEsQ0FBQztNQUFFaVksSUFBSSxFQUFFM2EsaURBQVc7TUFBRTJFLE9BQU8sRUFBRTtJQUFLLENBQUMsQ0FBQztFQUNqRSxDQUFDO0VBRUQyWixnREFBUyxDQUFDLE1BQU07SUFDZDJvQixLQUFLLENBQUN2a0MsUUFBUSxDQUFDSSx5REFBZSxDQUFDQyxNQUFNLEVBQUVDLElBQUksQ0FBQyxDQUFDO0VBQy9DLENBQUMsRUFBRSxDQUFDRCxNQUFNLEVBQUVDLElBQUksQ0FBQyxDQUFDO0VBRWxCLG9CQUNFK0wsc0RBQUEsQ0FBQzR4QixpREFBUTtJQUFDc0csS0FBSyxFQUFFQSxLQUFNO0lBQUFuM0IsUUFBQSxlQUNyQmYsc0RBQUEsQ0FBQ3FoQyx3RUFBVztNQUNWUSxZQUFZLEVBQUVMLGdCQUFpQjtNQUMvQmxRLE9BQU8sRUFBRSxJQUFLO01BQ2R1SCxTQUFTLEVBQUVBLFNBQVU7TUFBQTkzQixRQUFBLGVBRXJCZixzREFBQSxDQUFDZ21CLCtEQUFvQjtRQUFDNEIsV0FBVztRQUFBN21CLFFBQUEsZUFDL0JmLHNEQUFBLENBQUNveEIsaUVBQWEsSUFBRTtNQUFDLENBQ0c7SUFBQyxDQUNaO0VBQUMsQ0FDTixDQUFDO0FBRWYsQ0FBQztBQUVEa1EsdUJBQXVCLENBQUMvL0IsU0FBUyxHQUFHO0VBQ2xDeTJCLFFBQVEsRUFBRTM0QiwwREFBZ0I7RUFDMUJraUMsWUFBWSxFQUFFbGlDLDBEQUFnQjtFQUM5QnJMLE1BQU0sRUFBRXFMLDBEQUFnQjtFQUN4QjVILFVBQVUsRUFBRTRILDBEQUFnQjtFQUM1QnBMLElBQUksRUFBRW9MLDBEQUFnQjtFQUN0QjA0QixRQUFRLEVBQUUxNEIsMERBQWdCO0VBQzFCdEQsYUFBYSxFQUFFc0Qsd0RBQWNxQztBQUMvQixDQUFDO0FBRUQsaUVBQWU0L0IsdUJBQXVCLEUiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvd2VicGFjay91bml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9hY3Rpb25zLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0Fzc2lnbkVRRm9ybS9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9Db3B5VGV4dC9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9DdXN0b21EaWFsb2cvQ29udGV4dC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9DdXN0b21EaWFsb2cvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvQ3VzdG9tVGhlbWUuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy9DaGVja2JveExpc3RRdWVzdGlvbkZpZWxkLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvQ2hlY2tib3hRdWVzdGlvbkZpZWxkLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvRHJvcGRvd25RdWVzdGlvbkZpZWxkLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvUmFkaW9MaXN0UXVlc3Rpb25GaWVsZC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL1RleHRRdWVzdGlvbkZpZWxkLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvdXRpbHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29uc3RhbnRzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlcnMvQXNzaWduZWRGaWx0ZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVycy9CYWRnZUZlYXR1cmVGaWx0ZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVycy9GaWx0ZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVycy9GcmVlUGFpZEZpbHRlci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJzL1Byb21vQ29kZUZpbHRlci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJzL1NlYXJjaC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJzL1NvcnQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVycy9TdGF0dXNGaWx0ZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVycy9UaWNrZXRUeXBlRmlsdGVyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlcnMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRm9ybUZvb3Rlci9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9MYWJlbHMvRXJyb3JMYWJlbC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9Mb2FkZXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvTXlPcmRlcnNUaWNrZXRzL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyU3VtbWFyeS9PcmRlclN1bW1hcnlUYWJsZS5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlclN1bW1hcnkvUmVmdW5kRW1haWxTdXBwb3J0LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyU3VtbWFyeS9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlcnNMaXN0L0Fzc2lnbmVkVG9NZS5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlcnNMaXN0L0F0dGVuZGVlU3RhdHVzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyc0xpc3QvT3JkZXJMaXN0SXRlbS5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlcnNMaXN0L09yZGVyTGlzdFRpY2tldHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJzTGlzdC9PcmRlcnNMaXN0RGVza3RvcE1vYmlsZS5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlcnNMaXN0L2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1JlZnVuZFJlcXVlc3RzL1JlZnVuZERldGFpbHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvUmVmdW5kUmVxdWVzdHMvUmVmdW5kUmVxdWVzdGVkVGlja2V0LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1JlZnVuZFJlcXVlc3RzL1JlZnVuZFN0YXR1cy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9SZWZ1bmRSZXF1ZXN0cy9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9SaWdodERyYXdlci9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9TdW1taXRIZWFkZXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0QXNzaWduL2NvbXBvbmVudHMvRGVsZWdhdGVGb3JtL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldEFzc2lnbi9jb21wb25lbnRzL0hlYWRlci9Bc3NpZ25IZWFkZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0QXNzaWduL2NvbXBvbmVudHMvSGVhZGVyL1JlYXNzaWduSGVhZGVyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldEFzc2lnbi9jb21wb25lbnRzL1JlYXNzaWduRm9ybS9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXRBc3NpZ24vaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvQ29tcGFueUZpZWxkL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL1JlZ2lzdHJhdGlvbkRpc2NsYWltZXIvUmVnaXN0cmF0aW9uRGlzY2xhaW1lci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9UaWNrZXRGb3JtL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL1RpY2tldE93bmVyRmllbGRzL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb25zdGFudHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldFN0YXR1cy9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9XaWRnZXRUYWJzL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1dpZGdldFdyYXBwZXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2hvb2tzL3VzZUdldFRpY2tldC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvaG9va3MvdXNlU2Nyb2xsVG9FcnJvci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvaG9va3MvdXNlVGlja2V0RGV0YWlscy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvaTE4bi9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvcmVkdWNlci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvc3RvcmUuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL3V0aWxzL2F1dGguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL3V0aWxzL2NvbnN0YW50cy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvdXRpbHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL3V0aWxzL3N1bW1pdFV0aWxzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy91dGlscy90aWNrZXRVdGlscy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9Db3B5VGV4dC9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVycy9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRm9ybUZvb3Rlci9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvTGFiZWxzL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9NeU9yZGVyc1RpY2tldHMvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyU3VtbWFyeS9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJzTGlzdC9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvUmVmdW5kUmVxdWVzdHMvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1JpZ2h0RHJhd2VyL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9TdW1taXRIZWFkZXIvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldEFzc2lnbi9jb21wb25lbnRzL0hlYWRlci9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0QXNzaWduL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9SZWdpc3RyYXRpb25EaXNjbGFpbWVyL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9UaWNrZXRPd25lckZpZWxkcy9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXRTdGF0dXMvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1dpZGdldFRhYnMvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1dpZGdldFdyYXBwZXIvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHlcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ2hlY2tDaXJjbGVcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0Nsb3NlXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbC9Db250ZW50Q29weVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRXJyb3JcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0V4cGFuZE1vcmVcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0ZpbHRlckxpc3RcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0ltcG9ydEV4cG9ydFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvSW5mb1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvU2VhcmNoXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvQ2hlY2tib3hcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL0RpdmlkZXJcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL0lucHV0QmFzZVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvU3RhY2tcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL1RhYlwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvVGFic1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvVG9vbHRpcFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvc3R5bGVzXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC91c2VNZWRpYVF1ZXJ5XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQHJlZHV4anMvdG9vbGtpdFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBzZW50cnkvcmVhY3RcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJmb3JtaWtcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJpMThuZXh0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiaTE4bmV4dC1icm93c2VyLWxhbmd1YWdlZGV0ZWN0b3JcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJpZHRva2VuLXZlcmlmaWVyXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwibW9tZW50LXRpbWV6b25lXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9jb21wb25lbnRzL3Jhdy1odG1sXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9zZWN1cml0eS9hY3Rpb25zXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9zZWN1cml0eS9tZXRob2RzXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9hY3Rpb25zXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9tZXRob2RzXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9xdWVyeS1hY3Rpb25zXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicC1saW1pdFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInByb3AtdHlwZXNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWFjdFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlYWN0LWkxOG5leHRcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWFjdC1pbmZpbml0ZS1zY3JvbGwtY29tcG9uZW50XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3QtcXItY29kZVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlYWN0LXJlZHV4XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3QvanN4LXJ1bnRpbWVcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWR1eFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlZHV4LXBlcnNpc3RcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWR1eC1wZXJzaXN0L2ludGVncmF0aW9uL3JlYWN0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVkdXgtcGVyc2lzdC9saWIvc3RvcmFnZVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInl1cFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvd2VicGFjay9ydW50aW1lL2NvbXBhdCBnZXQgZGVmYXVsdCBleHBvcnQiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L3dlYnBhY2svcnVudGltZS9kZWZpbmUgcHJvcGVydHkgZ2V0dGVycyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvd2VicGFjay9ydW50aW1lL2hhc093blByb3BlcnR5IHNob3J0aGFuZCIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvd2VicGFjay9ydW50aW1lL21ha2UgbmFtZXNwYWNlIG9iamVjdCIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbiB3ZWJwYWNrVW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbihyb290LCBmYWN0b3J5KSB7XG5cdGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0Jylcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkoKTtcblx0ZWxzZSBpZih0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpXG5cdFx0ZGVmaW5lKFwibXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0XCIsIFtdLCBmYWN0b3J5KTtcblx0ZWxzZSBpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcpXG5cdFx0ZXhwb3J0c1tcIm15LW9yZGVycy10aWNrZXRzLXdpZGdldFwiXSA9IGZhY3RvcnkoKTtcblx0ZWxzZVxuXHRcdHJvb3RbXCJteS1vcmRlcnMtdGlja2V0cy13aWRnZXRcIl0gPSBmYWN0b3J5KCk7XG59KSh0aGlzLCAoKSA9PiB7XG5yZXR1cm4gIiwiaW1wb3J0IHtcbiAgYXV0aEVycm9ySGFuZGxlcixcbiAgY3JlYXRlQWN0aW9uLFxuICBkZWxldGVSZXF1ZXN0LFxuICBnZXRSZXF1ZXN0LFxuICBwdXRSZXF1ZXN0LFxuICBzdGFydExvYWRpbmcsXG4gIHN0b3BMb2FkaW5nXG59IGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL2FjdGlvbnNcIjtcbmltcG9ydCBwTGltaXQgZnJvbSBcInAtbGltaXRcIjtcbmltcG9ydCB7IGdldElkVG9rZW4gfSBmcm9tIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9zZWN1cml0eS9tZXRob2RzXCI7XG5pbXBvcnQgeyBvYmplY3RUb1F1ZXJ5U3RyaW5nIH0gZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvbWV0aG9kc1wiO1xuaW1wb3J0IElkVG9rZW5WZXJpZmllciBmcm9tIFwiaWR0b2tlbi12ZXJpZmllclwiO1xuaW1wb3J0IGkxOG4gZnJvbSBcImkxOG5leHRcIjtcbmltcG9ydCB7IGdldEFjY2Vzc1Rva2VuU2FmZWx5IH0gZnJvbSBcIi4vdXRpbHMvYXV0aFwiO1xuaW1wb3J0IHtcbiAgREVGQVVMVF9JVEVNU19QRVJfUEFHRSxcbiAgRVJST1JfQ09ERVMsXG4gIEZJRlRZX1BFUl9QQUdFLFxuICBGSVJTVF9QQUdFLFxuICBQUk9NSVNFX0JBVENIX0xJTUlULFxuICBUQUJTXG59IGZyb20gXCIuL3V0aWxzL2NvbnN0YW50c1wiO1xuXG5leHBvcnQgY29uc3QgUkVTRVRfU1RBVEUgPSBcIlJFU0VUX1NUQVRFXCI7XG5leHBvcnQgY29uc3QgUkVTRVRfRklMVEVSID0gXCJSRVNFVF9GSUxURVJcIjtcbmV4cG9ydCBjb25zdCBSRVNFVF9BUElfRVJST1IgPSBcIlJFU0VUX0FQSV9FUlJPUlwiO1xuZXhwb3J0IGNvbnN0IFNFVF9TVEFURSA9IFwiU0VUX1NUQVRFXCI7XG5leHBvcnQgY29uc3QgU0VUX0FQSV9FUlJPUiA9IFwiU0VUX0FQSV9FUlJPUlwiO1xuZXhwb3J0IGNvbnN0IENIQU5HRV9GSUxURVIgPSBcIkNIQU5HRV9GSUxURVJcIjtcbmV4cG9ydCBjb25zdCBDSEFOR0VfU09SVCA9IFwiQ0hBTkdFX1NPUlRcIjtcblxuLy8gT1JERVJTIENPTlNUU1xuZXhwb3J0IGNvbnN0IEdFVF9VU0VSX09SREVSUyA9IFwiR0VUX09SREVSU1wiO1xuZXhwb3J0IGNvbnN0IFJFRlVORF9PUkRFUiA9IFwiUkVGVU5EX09SREVSXCI7XG5leHBvcnQgY29uc3QgU0VUX0FDVElWRV9PUkRFUl9JRCA9IFwiU0VUX0FDVElWRV9PUkRFUl9JRFwiO1xuZXhwb3J0IGNvbnN0IEZJTFRFUl9VU0VSX09SREVSUyA9IFwiRklMVEVSX1VTRVJfT1JERVJTXCI7XG5cbi8vIFRJQ0tFVFMgQ09OU1RTXG5leHBvcnQgY29uc3QgR0VUX01ZX0FTU0lHTkVEX1RJQ0tFVFMgPSBcIkdFVF9NWV9BU1NJR05FRF9USUNLRVRTXCI7XG5leHBvcnQgY29uc3QgVVBEQVRFX1RJQ0tFVCA9IFwiVVBEQVRFX1RJQ0tFVFwiO1xuZXhwb3J0IGNvbnN0IFJFU0VUX1RJQ0tFVCA9IFwiUkVTRVRfVElDS0VUXCI7XG5leHBvcnQgY29uc3QgUkVDRUlWRV9USUNLRVQgPSBcIlJFQ0VJVkVfVElDS0VUXCI7XG5leHBvcnQgY29uc3QgUkVNT1ZFX1RJQ0tFVF9BVFRFTkRFRSA9IFwiUkVNT1ZFX1RJQ0tFVF9BVFRFTkRFRVwiO1xuZXhwb3J0IGNvbnN0IEFTU0lHTl9USUNLRVQgPSBcIkFTU0lHTl9USUNLRVRcIjtcbmV4cG9ydCBjb25zdCBERUxFR0FURV9USUNLRVQgPSBcIkRFTEVHQVRFX1RJQ0tFVFwiO1xuZXhwb3J0IGNvbnN0IFJFRlVORF9USUNLRVQgPSBcIlJFRlVORF9USUNLRVRcIjtcbmV4cG9ydCBjb25zdCBSRVNFTkRfTk9USUZJQ0FUSU9OID0gXCJSRVNFTkRfTk9USUZJQ0FUSU9OXCI7XG5leHBvcnQgY29uc3QgR0VUX1RJQ0tFVFNfQllfT1JERVIgPSBcIkdFVF9USUNLRVRTX0JZX09SREVSXCI7XG5leHBvcnQgY29uc3QgR0VUX1RJQ0tFVFNfQllfT1JERVJfRVJST1IgPSBcIkdFVF9USUNLRVRTX0JZX09SREVSX0VSUk9SXCI7XG5leHBvcnQgY29uc3QgR0VUX09SREVSX1RJQ0tFVF9ERVRBSUxTID0gXCJHRVRfT1JERVJfVElDS0VUX0RFVEFJTFNcIjtcbmV4cG9ydCBjb25zdCBHRVRfVElDS0VUX0RFVEFJTFMgPSBcIkdFVF9USUNLRVRfREVUQUlMU1wiO1xuZXhwb3J0IGNvbnN0IFJFQ0VJVkVfRVhUUkFfUVVFU1RJT05TID0gXCJSRUNFSVZFX0VYVFJBX1FVRVNUSU9OU1wiO1xuZXhwb3J0IGNvbnN0IFRJQ0tFVF9BVFRFTkRFRV9LRVlTID0ge1xuICBlbWFpbDogXCJhdHRlbmRlZV9lbWFpbFwiLFxuICBmaXJzdE5hbWU6IFwiYXR0ZW5kZWVfZmlyc3RfbmFtZVwiLFxuICBsYXN0TmFtZTogXCJhdHRlbmRlZV9sYXN0X25hbWVcIixcbiAgY29tcGFueTogXCJhdHRlbmRlZV9jb21wYW55XCIsXG4gIGRpc2NsYWltZXJBY2NlcHRlZDogXCJkaXNjbGFpbWVyX2FjY2VwdGVkXCIsXG4gIGV4dHJhUXVlc3Rpb25zOiBcImV4dHJhX3F1ZXN0aW9uc1wiXG59O1xuZXhwb3J0IGNvbnN0IFVQREFURV9USUNLRVRTX1JFRlVORF9SRVFVRVNURUQgPVxuICBcIlVQREFURV9USUNLRVRTX1JFRlVORF9SRVFVRVNURURcIjtcblxuLy8gVVNFUiBDT05UU1xuZXhwb3J0IGNvbnN0IFNUQVJUX0xPQURJTkdfSURQX1BST0ZJTEUgPSBcIlNUQVJUX0xPQURJTkdfSURQX1BST0ZJTEVcIjtcbmV4cG9ydCBjb25zdCBTVE9QX0xPQURJTkdfSURQX1BST0ZJTEUgPSBcIlNUT1BfTE9BRElOR19JRFBfUFJPRklMRVwiO1xuZXhwb3J0IGNvbnN0IFVQREFURV9JRFBfUFJPRklMRSA9IFwiVVBEQVRFX0lEUF9QUk9GSUxFXCI7XG5leHBvcnQgY29uc3QgU0VUX1VTRVIgPSBcIlNFVF9VU0VSXCI7XG5cbi8vIFNVTU1JVCBDT05TVFNcbmV4cG9ydCBjb25zdCBTRVRfU1VNTUlUID0gXCJTRVRfU1VNTUlUXCI7XG5leHBvcnQgY29uc3QgR0VUX01BSU5fRVhUUkFfUVVFU1RJT05TID0gXCJHRVRfTUFJTl9FWFRSQV9RVUVTVElPTlNcIjtcbmV4cG9ydCBjb25zdCBSRUNFSVZFX01BUktFVElOR19TRVRUSU5HUyA9IFwiUkVDRUlWRV9NQVJLRVRJTkdfU0VUVElOR1NcIjtcbmV4cG9ydCBjb25zdCBDTEVBUl9NQVJLRVRJTkdfU0VUVElOR1MgPSBcIkNMRUFSX01BUktFVElOR19TRVRUSU5HU1wiO1xuXG5leHBvcnQgY29uc3QgcmVzZXRUaWNrZXQgPSAoKSA9PiAoZGlzcGF0Y2gpID0+IHtcbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKFJFU0VUX1RJQ0tFVCkoe30pKTtcbn07XG5cbmV4cG9ydCBjb25zdCByZXNldFN0YXRlID0gKCkgPT4gKGRpc3BhdGNoKSA9PiB7XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihSRVNFVF9TVEFURSkoe30pKTtcbn07XG5cbmV4cG9ydCBjb25zdCByZXNldEZpbHRlciA9ICgpID0+IChkaXNwYXRjaCkgPT4ge1xuICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oUkVTRVRfRklMVEVSKSh7fSkpO1xufTtcblxuZXhwb3J0IGNvbnN0IHJlc2V0RXJyb3IgPSAoKSA9PiAoZGlzcGF0Y2gpID0+IHtcbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKFJFU0VUX0FQSV9FUlJPUikoe30pKTtcbn07XG5cbmV4cG9ydCBjb25zdCBzZXRSZWR1Y2VyU3RhdGUgPSAoc3VtbWl0LCB1c2VyKSA9PiAoZGlzcGF0Y2gpID0+IHtcbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKFNFVF9TVEFURSkoeyBzdW1taXQsIHVzZXIgfSkpO1xufTtcblxuLy8gRklMVEVSIC8gU09SVCBDT05TVEFOVFNcbmV4cG9ydCBjb25zdCBGSUxURVJfVkFSX0RBVEUgPSBcIkZJTFRFUl9WQVJfREFURVwiO1xuZXhwb3J0IGNvbnN0IEZJTFRFUl9WQVJfQkFER0VfRkVBVFVSRSA9IFwiRklMVEVSX1ZBUl9CQURHRV9GRUFUVVJFXCI7XG5leHBvcnQgY29uc3QgRklMVEVSX1ZBUl9USUNLRVRfVFlQRSA9IFwiRklMVEVSX1ZBUl9USUNLRVRfVFlQRVwiO1xuZXhwb3J0IGNvbnN0IEZJTFRFUl9WQVJfVElDS0VUX0FTU0lHTkVEID0gXCJGSUxURVJfVkFSX1RJQ0tFVF9BU1NJR05FRFwiO1xuZXhwb3J0IGNvbnN0IEZJTFRFUl9WQVJfT1dORVJfU1RBVFVTID0gXCJGSUxURVJfVkFSX09XTkVSX1NUQVRVU1wiO1xuZXhwb3J0IGNvbnN0IEZJTFRFUl9WQVJfUFJPTU9DT0RFID0gXCJGSUxURVJfVkFSX1BST01PQ09ERVwiO1xuZXhwb3J0IGNvbnN0IEZJTFRFUl9WQVJfRlJFRV9QQUlEID0gXCJGSUxURVJfVkFSX0ZSRUVfUEFJRFwiO1xuZXhwb3J0IGNvbnN0IEZJTFRFUl9WQVJfT1JERVJfTlVNQkVSID0gXCJGSUxURVJfVkFSX09SREVSX05VTUJFUlwiO1xuXG4vLyBGSUxURVIgLyBTT1JUIEFDVElPTlNcbmV4cG9ydCBjb25zdCBjaGFuZ2VGaWx0ZXIgPSAoZmlsdGVyKSA9PiAoZGlzcGF0Y2gpID0+IHtcbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKENIQU5HRV9GSUxURVIpKGZpbHRlcikpO1xufTtcblxuZXhwb3J0IGNvbnN0IGNoYW5nZVNvcnQgPSAoc29ydCkgPT4gKGRpc3BhdGNoKSA9PiB7XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihDSEFOR0VfU09SVCkoc29ydCkpO1xufTtcblxuLy8gRklMVEVSL1NPUlQgUEFSU0VcbmNvbnN0IHBhcnNlRmlsdGVyID0gKGZpbHRlck9iaiwgY3VycmVudFRhYikgPT4ge1xuICBjb25zdCBmaWx0ZXIgPSBbXTtcbiAgaWYgKGZpbHRlck9iai5GSUxURVJfVkFSX0RBVEUpIHtcbiAgICBmaWx0ZXIucHVzaChgY3JlYXRlZFtdJHtmaWx0ZXJPYmoubG93ZXJ9JiYke2ZpbHRlck9iai51cHBlcn1gKTtcbiAgfVxuICBpZiAoXG4gICAgZmlsdGVyT2JqLkZJTFRFUl9WQVJfQkFER0VfRkVBVFVSRSAmJlxuICAgIGZpbHRlck9iai5GSUxURVJfVkFSX0JBREdFX0ZFQVRVUkUubGVuZ3RoID4gMFxuICApIHtcbiAgICBjb25zdCBmaWx0ZXJOYW1lID1cbiAgICAgIGN1cnJlbnRUYWIgPT09IFRBQlMuT1JERVJTXG4gICAgICAgID8gXCJ0aWNrZXRzX2JhZGdlX2ZlYXR1cmVzX2lkXCJcbiAgICAgICAgOiBcImJhZGdlX2ZlYXR1cmVzX2lkXCI7XG4gICAgZmlsdGVyLnB1c2goXG4gICAgICBgJHtmaWx0ZXJOYW1lfT09JHtmaWx0ZXJPYmouRklMVEVSX1ZBUl9CQURHRV9GRUFUVVJFLmpvaW4oXCJ8fFwiKX1gXG4gICAgKTtcbiAgfVxuICBpZiAoXG4gICAgZmlsdGVyT2JqLkZJTFRFUl9WQVJfVElDS0VUX1RZUEUgJiZcbiAgICBmaWx0ZXJPYmouRklMVEVSX1ZBUl9USUNLRVRfVFlQRS5sZW5ndGggPiAwXG4gICkge1xuICAgIGNvbnN0IGZpbHRlck5hbWUgPVxuICAgICAgY3VycmVudFRhYiA9PT0gVEFCUy5PUkRFUlMgPyBcInRpY2tldHNfdHlwZV9pZFwiIDogXCJ0aWNrZXRfdHlwZV9pZFwiO1xuICAgIGZpbHRlci5wdXNoKFxuICAgICAgYCR7ZmlsdGVyTmFtZX09PSR7ZmlsdGVyT2JqLkZJTFRFUl9WQVJfVElDS0VUX1RZUEUuam9pbihcInx8XCIpfWBcbiAgICApO1xuICB9XG4gIGlmIChmaWx0ZXJPYmouRklMVEVSX1ZBUl9USUNLRVRfQVNTSUdORUQpIHtcbiAgICBjb25zdCBmaWx0ZXJOYW1lID1cbiAgICAgIGN1cnJlbnRUYWIgPT09IFRBQlMuT1JERVJTID8gXCJ0aWNrZXRzX2Fzc2lnbmVkX3RvXCIgOiBcImFzc2lnbmVkX3RvXCI7XG4gICAgZmlsdGVyLnB1c2goYCR7ZmlsdGVyTmFtZX09PSR7ZmlsdGVyT2JqLkZJTFRFUl9WQVJfVElDS0VUX0FTU0lHTkVEfWApO1xuICB9XG4gIGlmIChmaWx0ZXJPYmouRklMVEVSX1ZBUl9PV05FUl9TVEFUVVMpIHtcbiAgICBjb25zdCBmaWx0ZXJOYW1lID1cbiAgICAgIGN1cnJlbnRUYWIgPT09IFRBQlMuT1JERVJTID8gXCJ0aWNrZXRzX293bmVyX3N0YXR1c1wiIDogXCJvd25lcl9zdGF0dXNcIjtcbiAgICBmaWx0ZXIucHVzaChgJHtmaWx0ZXJOYW1lfT09JHtmaWx0ZXJPYmouRklMVEVSX1ZBUl9PV05FUl9TVEFUVVN9YCk7XG4gIH1cbiAgaWYgKGZpbHRlck9iai5GSUxURVJfVkFSX0ZSRUVfUEFJRCkge1xuICAgIGNvbnN0IGZpbHRlck5hbWUgPSBjdXJyZW50VGFiID09PSBUQUJTLk9SREVSUyA/IFwiYW1vdW50XCIgOiBcImZpbmFsX2Ftb3VudFwiO1xuICAgIGZpbHRlci5wdXNoKFxuICAgICAgYCR7ZmlsdGVyTmFtZX0ke2ZpbHRlck9iai5GSUxURVJfVkFSX0ZSRUVfUEFJRCA9PT0gXCJGcmVlXCIgPyBcIj09MFwiIDogXCI+MFwifWBcbiAgICApO1xuICB9XG4gIGlmIChmaWx0ZXJPYmouRklMVEVSX1ZBUl9QUk9NT0NPREUpIHtcbiAgICBjb25zdCBmaWx0ZXJOYW1lID1cbiAgICAgIGN1cnJlbnRUYWIgPT09IFRBQlMuT1JERVJTID8gXCJ0aWNrZXRzX3Byb21vX2NvZGVcIiA6IFwicHJvbW9fY29kZVwiO1xuICAgIGZpbHRlci5wdXNoKGAke2ZpbHRlck5hbWV9PUAke2ZpbHRlck9iai5GSUxURVJfVkFSX1BST01PQ09ERX1gKTtcbiAgfVxuICBpZiAoZmlsdGVyT2JqLkZJTFRFUl9WQVJfT1JERVJfTlVNQkVSKSB7XG4gICAgZmlsdGVyLnB1c2goYG51bWJlcj1AJHtmaWx0ZXJPYmouRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVJ9YCk7XG4gIH1cbiAgcmV0dXJuIGZpbHRlcjtcbn07XG5cbmNvbnN0IGdldFNvcnREaXJlY3Rpb24gPSAoZGlyZWN0aW9uKSA9PiAoZGlyZWN0aW9uID09PSBcImFzY1wiID8gXCIrXCIgOiBcIi1cIik7XG5cbi8vIHBheWxvYWQ6IHsgaHR0cENvZGUsIHRpdGxlLCBodG1sOiBjb250ZW50LCB0eXBlIH1cbmNvbnN0IGVycm9ySGFuZGxlck5vdGlmeSA9IChwYXlsb2FkLCBjYWxsYmFjaykgPT4gKGRpc3BhdGNoKSA9PiB7XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihTRVRfQVBJX0VSUk9SKShwYXlsb2FkKSk7XG4gIGlmIChjYWxsYmFjaykgY2FsbGJhY2soKTtcbn07XG5cbmNvbnN0IGN1c3RvbUF1dGhFcnJvckhhbmRsZXIgPSAoZXJyLCByZXMpID0+IChkaXNwYXRjaCkgPT4ge1xuICBkaXNwYXRjaChhdXRoRXJyb3JIYW5kbGVyKGVyciwgcmVzLCBlcnJvckhhbmRsZXJOb3RpZnkpKTtcbn07XG5cbmNvbnN0IGN1c3RvbUZldGNoRXJyb3JIYW5kbGVyID0gKHJlc3BvbnNlKSA9PiAoZGlzcGF0Y2gpID0+IHtcbiAgY29uc3QgY29kZSA9IHJlc3BvbnNlLnN0YXR1cztcbiAgbGV0IG1zZztcbiAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gIHN3aXRjaCAoY29kZSkge1xuICAgIGNhc2UgRVJST1JfQ09ERVNbXCI0MDNcIl06XG4gICAgICBtc2cgPSBpMThuLnQoXCJlcnJvcnMudXNlcl9ub3RfYXV0aHpcIik7XG4gICAgICBicmVhaztcbiAgICBjYXNlIEVSUk9SX0NPREVTW1wiNDAxXCJdOlxuICAgICAgbXNnID0gaTE4bi50KFwiZXJyb3JzLnNlc3Npb25fZXhwaXJlZFwiKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgRVJST1JfQ09ERVNbXCI0MTJcIl06XG4gICAgICBtc2cgPSBcIlwiO1xuICAgICAgT2JqZWN0LmVudHJpZXMocmVzcG9uc2UuZXJyb3JzKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgICAgaWYgKE51bWJlci5pc05hTihrZXkpKSB7XG4gICAgICAgICAgbXNnID0gYCR7bXNnfSAke2tleX06IGA7XG4gICAgICAgIH1cblxuICAgICAgICBtc2cgPSBgJHttc2d9ICR7dmFsdWV9IDxicj5gO1xuICAgICAgfSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIEVSUk9SX0NPREVTW1wiNTAwXCJdOlxuICAgICAgbXNnID0gaTE4bi50KFwiZXJyb3JzLnNlcnZlcl9lcnJvclwiKTtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICBtc2cgPSByZXNwb25zZS5zdGF0dXNUZXh0O1xuICB9XG5cbiAgZGlzcGF0Y2goZXJyb3JIYW5kbGVyTm90aWZ5KHsgdGl0bGU6IGkxOG4udChcImVycm9ycy5lcnJvclwiKSwgaHRtbDogbXNnIH0pKTtcbn07XG5cbi8vIE9SREVSUyBBQ1RJT05TXG5leHBvcnQgY29uc3QgZ2V0VXNlck9yZGVycyA9XG4gICh7XG4gICAgcGFnZSA9IEZJUlNUX1BBR0UsXG4gICAgcGVyUGFnZSA9IERFRkFVTFRfSVRFTVNfUEVSX1BBR0UsXG4gICAgZmlsdGVyID0ge30sXG4gICAgc29ydCA9IHt9XG4gIH0pID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgd2lkZ2V0U3RhdGU6IHsgc3VtbWl0IH1cbiAgICB9ID0gZ2V0U3RhdGUoKTtcblxuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKS5jYXRjaCgoKSA9PlxuICAgICAgUHJvbWlzZS5yZWplY3QoKVxuICAgICk7XG5cbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIG9yZGVyOiBcIi1jcmVhdGVkXCIsXG4gICAgICBcImZpbHRlcltdXCI6IFtcInN0YXR1cz09UGFpZFwiXSxcbiAgICAgIHJlbGF0aW9uczogXCJub25lXCIsXG4gICAgICBwYWdlLFxuICAgICAgcGVyX3BhZ2U6IHBlclBhZ2VcbiAgICB9O1xuXG4gICAgaWYgKE9iamVjdC5rZXlzKGZpbHRlcikubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgZmlsdGVycyA9IHBhcnNlRmlsdGVyKGZpbHRlciwgVEFCUy5PUkRFUlMpO1xuICAgICAgcGFyYW1zW1wiZmlsdGVyW11cIl0gPSBbLi4ucGFyYW1zW1wiZmlsdGVyW11cIl0sIC4uLmZpbHRlcnNdO1xuICAgIH1cbiAgICBpZiAoT2JqZWN0LmtleXMoc29ydCkubGVuZ3RoID4gMCkge1xuICAgICAgcGFyYW1zLm9yZGVyID0gYCR7Z2V0U29ydERpcmVjdGlvbihzb3J0LmRpcmVjdGlvbil9JHtzb3J0Lm5hbWV9YDtcbiAgICB9XG5cbiAgICByZXR1cm4gZ2V0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oR0VUX1VTRVJfT1JERVJTKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzLyR7c3VtbWl0LmlkfS9vcmRlcnMvbWVgLFxuICAgICAgY3VzdG9tQXV0aEVycm9ySGFuZGxlcixcbiAgICAgIHsgZmlsdGVyLCBzb3J0IH1cbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpXG4gICAgICAudGhlbigocGF5bG9hZCkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICByZXR1cm4gZTtcbiAgICAgIH0pO1xuICB9O1xuXG5leHBvcnQgY29uc3Qgc2V0QWN0aXZlT3JkZXJJZCA9IChvcmRlcklkKSA9PiBhc3luYyAoZGlzcGF0Y2gpID0+XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihTRVRfQUNUSVZFX09SREVSX0lEKShvcmRlcklkKSk7XG5cbi8vIFVTRVIgQUNUSU9OU1xuZXhwb3J0IGNvbnN0IHNldFVzZXIgPSAodXNlcikgPT4gKGRpc3BhdGNoKSA9PlxuICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oU0VUX1VTRVIpKHVzZXIpKTtcblxuLy8gVElDS0VUIEFDVElPTlNcblxuZXhwb3J0IGNvbnN0IGdldFVzZXJUaWNrZXRzID1cbiAgKHtcbiAgICBwYWdlID0gRklSU1RfUEFHRSxcbiAgICBwZXJQYWdlID0gREVGQVVMVF9JVEVNU19QRVJfUEFHRSxcbiAgICBmaWx0ZXIgPSB7fSxcbiAgICBzb3J0ID0ge31cbiAgfSkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCB7XG4gICAgICB3aWRnZXRTdGF0ZTogeyBzdW1taXQsIHVzZXIgfVxuICAgIH0gPSBnZXRTdGF0ZSgpO1xuICAgIGNvbnN0IHsgdXNlclByb2ZpbGUgfSA9IHVzZXI7XG4gICAgaWYgKCFzdW1taXQpIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKS5jYXRjaCgoKSA9PlxuICAgICAgUHJvbWlzZS5yZWplY3QoKVxuICAgICk7XG4gICAgY29uc3QgZmllbGRzID0gW1xuICAgICAgXCJvcmRlci5pZFwiLFxuICAgICAgXCJvcmRlci5vd25lcl9maXJzdF9uYW1lXCIsXG4gICAgICBcIm9yZGVyLm93bmVyX2xhc3RfbmFtZVwiLFxuICAgICAgXCJvcmRlci5vd25lcl9lbWFpbFwiLFxuICAgICAgXCJvd25lci5pZFwiLFxuICAgICAgXCJvd25lci5lbWFpbFwiLFxuICAgICAgXCJvd25lci5maXJzdF9uYW1lXCIsXG4gICAgICBcIm93bmVyLmxhc3RfbmFtZVwiLFxuICAgICAgXCJvd25lci5zdGF0dXNcIixcbiAgICAgIFwiYmFkZ2Uubm9uZVwiXG4gICAgXTtcbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIFwiZmlsdGVyW11cIjogW1wic3RhdHVzPT1QYWlkXCIsIGBvcmRlcl9vd25lcl9pZDw+JHt1c2VyUHJvZmlsZS5pZH1gXSxcbiAgICAgIGV4cGFuZDogXCJvcmRlcixvd25lcix0aWNrZXRfdHlwZSxiYWRnZSxiYWRnZS5mZWF0dXJlc1wiLFxuICAgICAgb3JkZXI6IFwiLWlkXCIsXG4gICAgICBmaWVsZHM6IGZpZWxkcy5qb2luKFwiLFwiKSxcbiAgICAgIHJlbGF0aW9uczogXCJub25lLGJhZGdlLmZlYXR1cmVzXCIsXG4gICAgICBwYWdlLFxuICAgICAgcGVyX3BhZ2U6IHBlclBhZ2VcbiAgICB9O1xuICAgIGlmIChPYmplY3Qua2V5cyhmaWx0ZXIpLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGZpbHRlcnMgPSBwYXJzZUZpbHRlcihmaWx0ZXIsIFRBQlMuVElDS0VUUyk7XG4gICAgICBwYXJhbXNbXCJmaWx0ZXJbXVwiXSA9IFsuLi5wYXJhbXNbXCJmaWx0ZXJbXVwiXSwgLi4uZmlsdGVyc107XG4gICAgfVxuICAgIGlmIChPYmplY3Qua2V5cyhzb3J0KS5sZW5ndGggPiAwKSB7XG4gICAgICBwYXJhbXMub3JkZXIgPSBgJHtnZXRTb3J0RGlyZWN0aW9uKHNvcnQuZGlyZWN0aW9uKX0ke3NvcnQubmFtZX1gO1xuICAgIH1cbiAgICByZXR1cm4gZ2V0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oR0VUX01ZX0FTU0lHTkVEX1RJQ0tFVFMpLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvJHtzdW1taXQuaWR9L29yZGVycy9hbGwvdGlja2V0cy9tZWAsXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKVxuICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIHJldHVybiBlO1xuICAgICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCBnZXRUaWNrZXRzQnlPcmRlciA9XG4gICh7XG4gICAgb3JkZXJJZCxcbiAgICBwYWdlID0gRklSU1RfUEFHRSxcbiAgICBwZXJQYWdlID0gREVGQVVMVF9JVEVNU19QRVJfUEFHRSxcbiAgICBmaWx0ZXIsXG4gICAgc29ydFxuICB9KSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCkuY2F0Y2goKCkgPT5cbiAgICAgIFByb21pc2UucmVqZWN0KClcbiAgICApO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIFwiZmlsdGVyW11cIjogW10sXG4gICAgICBmaWVsZHM6IFwiYmFkZ2Uubm9uZVwiLFxuICAgICAgZXhwYW5kOlxuICAgICAgICBcInJlZnVuZF9yZXF1ZXN0cyxyZWZ1bmRfcmVxdWVzdHMucmVmdW5kZWRfdGF4ZXMscmVmdW5kX3JlcXVlc3RzLnJlZnVuZGVkX3RheGVzLnRheCxvd25lcixvd25lci5leHRyYV9xdWVzdGlvbnMsYmFkZ2UsYmFkZ2UuZmVhdHVyZXMsdGlja2V0X3R5cGVcIixcbiAgICAgIG9yZGVyOiBcIitpZFwiLFxuICAgICAgcmVsYXRpb25zOiBcIm5vbmUsYmFkZ2UuZmVhdHVyZXNcIixcbiAgICAgIHBhZ2UsXG4gICAgICBwZXJfcGFnZTogcGVyUGFnZVxuICAgIH07XG4gICAgaWYgKE9iamVjdC5rZXlzKGZpbHRlcikubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgZmlsdGVycyA9IHBhcnNlRmlsdGVyKGZpbHRlciwgVEFCUy5USUNLRVRTKTtcbiAgICAgIHBhcmFtc1tcImZpbHRlcltdXCJdID0gWy4uLnBhcmFtc1tcImZpbHRlcltdXCJdLCAuLi5maWx0ZXJzXTtcbiAgICB9XG4gICAgaWYgKE9iamVjdC5rZXlzKHNvcnQpLmxlbmd0aCA+IDApIHtcbiAgICAgIHBhcmFtcy5vcmRlciA9IGAke2dldFNvcnREaXJlY3Rpb24oc29ydC5kaXJlY3Rpb24pfSR7c29ydC5uYW1lfWA7XG4gICAgfVxuICAgIHJldHVybiBnZXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihHRVRfVElDS0VUU19CWV9PUkRFUiksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzLyR7b3JkZXJJZH0vdGlja2V0c2AsXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKVxuICAgICAgLnRoZW4oKHBheWxvYWQpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKEdFVF9USUNLRVRTX0JZX09SREVSX0VSUk9SKSk7XG4gICAgICAgIHJldHVybiBlO1xuICAgICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCByZXNlbmROb3RpZmljYXRpb24gPVxuICAodGlja2V0KSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKS5jYXRjaCgoKSA9PlxuICAgICAgUHJvbWlzZS5yZWplY3QoKVxuICAgICk7XG5cbiAgICBjb25zdCB7IG1lc3NhZ2UgfSA9IHRpY2tldDtcblxuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcblxuICAgIGNvbnN0IG9yZGVySWQgPSB0aWNrZXQub3JkZXIgPyB0aWNrZXQub3JkZXIuaWQgOiB0aWNrZXQub3JkZXJfaWQ7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuXG4gICAgfTtcblxuICAgIHJldHVybiBwdXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihSRVNFTkRfTk9USUZJQ0FUSU9OKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzL2FsbC9vcmRlcnMvJHtvcmRlcklkfS90aWNrZXRzLyR7dGlja2V0LmlkfS9hdHRlbmRlZS9yZWludml0ZWAsXG4gICAgICB7IG1lc3NhZ2UgfSxcbiAgICAgIGN1c3RvbUF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpXG4gICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgcmV0dXJuIGU7XG4gICAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IHJlZnVuZFRpY2tldCA9XG4gICh7IHRpY2tldCB9KSA9PlxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCkuY2F0Y2goKCkgPT5cbiAgICAgIFByb21pc2UucmVqZWN0KClcbiAgICApO1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuXG4gICAgY29uc3Qgb3JkZXJJZCA9IHRpY2tldC5vcmRlciA/IHRpY2tldC5vcmRlci5pZCA6IHRpY2tldC5vcmRlcl9pZDtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBleHBhbmQ6IFwicmVmdW5kX3JlcXVlc3RzLHRpY2tldF90eXBlXCIsXG4gICAgICBmaWVsZHM6IFwicmVmdW5kX3JlcXVlc3RzLnN0YXR1c1wiXG4gICAgfTtcblxuICAgIHJldHVybiBkZWxldGVSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihSRUZVTkRfVElDS0VUKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzL2FsbC9vcmRlcnMvJHtvcmRlcklkfS90aWNrZXRzLyR7dGlja2V0LmlkfS9yZWZ1bmRgLFxuICAgICAge30sXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKVxuICAgICAgLnRoZW4oKHBheWxvYWQpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgcmV0dXJuIGU7XG4gICAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IHJlZnVuZEJ1bGtUaWNrZXRzID1cbiAgKHsgdGlja2V0cyB9KSA9PlxuICBhc3luYyAoZGlzcGF0Y2gpID0+IHtcbiAgICBjb25zdCBsaW1pdCA9IHBMaW1pdChQUk9NSVNFX0JBVENIX0xJTUlUKTtcbiAgICBjb25zdCBhbGxSZWZ1bmRUaWNrZXRDYWxscyA9IHRpY2tldHMubWFwKCh0aWNrZXQpID0+XG4gICAgICBsaW1pdCgoKSA9PiBkaXNwYXRjaChyZWZ1bmRUaWNrZXQoeyB0aWNrZXQgfSkpKVxuICAgICk7XG4gICAgcmV0dXJuIFByb21pc2UuYWxsKFsuLi5hbGxSZWZ1bmRUaWNrZXRDYWxsc10pXG4gICAgICAudGhlbigocmVzKSA9PiB7XG4gICAgICAgIGNvbnN0IHN1Y2Nlc3NmdWxseVJlcXVlc3RlZCA9IHJlc1xuICAgICAgICAgIC5maWx0ZXIoKHIpID0+IHIucmVzcG9uc2U/LnJlZnVuZF9yZXF1ZXN0cz8ubGVuZ3RoKVxuICAgICAgICAgIC5tYXAoKHIpID0+IHIucmVzcG9uc2UpO1xuICAgICAgICByZXR1cm4gc3VjY2Vzc2Z1bGx5UmVxdWVzdGVkO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZSkgPT4gZSk7XG4gIH07XG5cbi8vIHVwZGF0ZSB0aGUgdGlja2V0cyB0aGF0IGhhdmUgYmVlbiBzdWNlc3NmdWxseSByZWZ1bmRlZFxuZXhwb3J0IGNvbnN0IHVwZGF0ZVRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQgPVxuICAodGlja2V0c1JlZnVuZFJlcXVlc3RlZCkgPT4gKGRpc3BhdGNoKSA9PlxuICAgIGRpc3BhdGNoKFxuICAgICAgY3JlYXRlQWN0aW9uKFVQREFURV9USUNLRVRTX1JFRlVORF9SRVFVRVNURUQpKHRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQpXG4gICAgKTtcblxuLy8gU1VNTUlUIEFDVElPTlNcblxuZXhwb3J0IGNvbnN0IGdldEV4dHJhUXVlc3Rpb25zID1cbiAgKGF0dGVuZGVlSWQpID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgd2lkZ2V0U3RhdGU6IHsgc3VtbWl0IH1cbiAgICB9ID0gZ2V0U3RhdGUoKTtcblxuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKS5jYXRjaCgoKSA9PlxuICAgICAgUHJvbWlzZS5yZWplY3QoKVxuICAgICk7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBwYWdlOiAxLFxuICAgICAgcGVyX3BhZ2U6IEZJRlRZX1BFUl9QQUdFLFxuICAgICAgZXhwYW5kOiBcIipzdWJfcXVlc3Rpb25fcnVsZXMsKnN1Yl9xdWVzdGlvbiwqdmFsdWVzXCIsXG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgXCJmaWx0ZXJbXVwiOiBcInRpY2tldHNfZXhjbHVkZV9pbmFjdGl2ZXM9PXRydWVcIlxuICAgIH07XG5cbiAgICBjb25zdCBlbmRwb2ludCA9IGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzLyR7c3VtbWl0LmlkfS9hdHRlbmRlZXMvJHthdHRlbmRlZUlkfS9hbGxvd2VkLWV4dHJhLXF1ZXN0aW9uc2A7XG5cbiAgICByZXR1cm4gZ2V0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oUkVDRUlWRV9FWFRSQV9RVUVTVElPTlMpLFxuICAgICAgZW5kcG9pbnQsXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKS50aGVuKCgpID0+IHtcbiAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgIH0pO1xuICB9O1xuXG5leHBvcnQgY29uc3QgZ2V0VGlja2V0ID1cbiAgKHRpY2tldElkLCBvcmRlcklkKSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKS5jYXRjaCgoKSA9PlxuICAgICAgUHJvbWlzZS5yZWplY3QoKVxuICAgICk7XG5cbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgZXhwYW5kOlxuICAgICAgICBcIm93bmVyLG93bmVyLmV4dHJhX3F1ZXN0aW9ucyxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24sdGlja2V0X3R5cGUsb3JkZXJcIixcbiAgICAgIHJlbGF0aW9uczogXCJvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24ubm9uZVwiLFxuICAgICAgZmllbGRzOlxuICAgICAgICBcIm93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi5pZCxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24ubmFtZSxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24udHlwZVwiXG4gICAgfTtcblxuICAgIGNvbnN0IGVuZHBvaW50ID0gYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvYWxsL29yZGVycy8ke29yZGVySWR9L3RpY2tldHMvJHt0aWNrZXRJZH1gO1xuXG4gICAgcmV0dXJuIGdldFJlcXVlc3QoXG4gICAgICBjcmVhdGVBY3Rpb24oUkVTRVRfVElDS0VUKSxcbiAgICAgIGNyZWF0ZUFjdGlvbihSRUNFSVZFX1RJQ0tFVCksXG4gICAgICBlbmRwb2ludCxcbiAgICAgIGN1c3RvbUF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgfSk7XG4gIH07XG5cbmNvbnN0IG5vcm1hbGl6ZVRpY2tldCA9IChlbnRpdHkpID0+IHtcbiAgY29uc3Qgbm9ybWFsaXplZEVudGl0eSA9IHsgLi4uZW50aXR5IH07XG5cbiAgaWYgKCFlbnRpdHkuYXR0ZW5kZWVfY29tcGFueS5pZCkge1xuICAgIG5vcm1hbGl6ZWRFbnRpdHkuYXR0ZW5kZWVfY29tcGFueSA9IGVudGl0eS5hdHRlbmRlZV9jb21wYW55O1xuICB9IGVsc2Uge1xuICAgIGRlbGV0ZSBub3JtYWxpemVkRW50aXR5LmF0dGVuZGVlX2NvbXBhbnk7XG4gICAgbm9ybWFsaXplZEVudGl0eS5hdHRlbmRlZV9jb21wYW55X2lkID0gZW50aXR5LmF0dGVuZGVlX2NvbXBhbnkuaWQ7XG4gIH1cblxuICByZXR1cm4gbm9ybWFsaXplZEVudGl0eTtcbn07XG5cbmV4cG9ydCBjb25zdCByZWZyZXNoUHJvZmlsZSA9XG4gIChkYXRhLCBjb21wYW55LCB0aWNrZXRPd25lcikgPT5cbiAgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyB1cGRhdGVQcm9maWxlIH0pID0+IHtcbiAgICBjb25zdCB7XG4gICAgICB3aWRnZXRTdGF0ZTogeyB1c2VyIH1cbiAgICB9ID0gZ2V0U3RhdGUoKTtcbiAgICBjb25zdCB7IHVzZXJQcm9maWxlIH0gPSB1c2VyO1xuXG4gICAgLy8gZW1haWwgc2hvdWxkIG1hdGNoICggb25seSB1cGRhdGUgbXkgcHJvZmlsZSBpcyB0aWNrZXQgYmVsb25ncyB0byBtZSEpXG4gICAgLy8gYW5kIGlmIHRoZSB0aWNrZXQgZG9lc24ndCBoYXZlIGEgbWFuYWdlclxuICAgIC8vIENoZWNrIGlmIHRoZXJlJ3MgY2hhbmdlcyBpbiB0aGUgdGlja2V0IGRhdGEgdG8gdXBkYXRlIHRoZSBwcm9maWxlXG4gICAgY29uc3Qge1xuICAgICAgYXR0ZW5kZWVfZW1haWwsXG4gICAgICBhdHRlbmRlZV9maXJzdF9uYW1lLFxuICAgICAgYXR0ZW5kZWVfbGFzdF9uYW1lLFxuICAgICAgYXR0ZW5kZWVfY29tcGFueVxuICAgIH0gPSBkYXRhO1xuICAgIGNvbnN0IGhhc01hbmFnZXIgPSB0aWNrZXRPd25lcj8ubWFuYWdlcj8uaWQgfHwgdGlja2V0T3duZXI/Lm1hbmFnZXJfaWQ7XG4gICAgY29uc3QgaXRzTWUgPSB1c2VyUHJvZmlsZS5lbWFpbCA9PT0gYXR0ZW5kZWVfZW1haWw7XG4gICAgY29uc3QgcHJvZmlsZUNoYW5nZWQgPVxuICAgICAgYXR0ZW5kZWVfY29tcGFueS5uYW1lICE9PSBjb21wYW55IHx8XG4gICAgICBhdHRlbmRlZV9maXJzdF9uYW1lICE9PSB1c2VyUHJvZmlsZS5maXJzdF9uYW1lIHx8XG4gICAgICBhdHRlbmRlZV9sYXN0X25hbWUgIT09IHVzZXJQcm9maWxlLmxhc3RfbmFtZTtcblxuICAgIGlmIChpdHNNZSAmJiAhaGFzTWFuYWdlciAmJiBwcm9maWxlQ2hhbmdlZCkge1xuICAgICAgY29uc3QgbmV3UHJvZmlsZSA9IHtcbiAgICAgICAgZmlyc3RfbmFtZTogYXR0ZW5kZWVfZmlyc3RfbmFtZSxcbiAgICAgICAgbGFzdF9uYW1lOiBhdHRlbmRlZV9sYXN0X25hbWUsXG4gICAgICAgIGNvbXBhbnk6IGF0dGVuZGVlX2NvbXBhbnkubmFtZSB8fCBhdHRlbmRlZV9jb21wYW55XG4gICAgICB9O1xuXG4gICAgICAvLyB0aGlzIGlzIGEgY2FsbGJhY2sgbWV0aG9kIHRoYXQgdXBkYXRlcyB1c2VyUHJvZmlsZSBpbiBBUEkgYW5kIGV2ZW50LXNpdGVcbiAgICAgIHVwZGF0ZVByb2ZpbGUobmV3UHJvZmlsZSk7XG4gICAgfVxuICB9O1xuXG5leHBvcnQgY29uc3Qgc2F2ZVRpY2tldERldGFpbHMgPVxuICAodGlja2V0LCBhbnN3ZXJzKSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKS5jYXRjaChQcm9taXNlLnJlamVjdCk7XG5cbiAgICBpZiAoIWFjY2Vzc1Rva2VuKSByZXR1cm4gUHJvbWlzZS5yZWplY3QoKTtcblxuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBleHBhbmQ6XG4gICAgICAgIFwicmVmdW5kX3JlcXVlc3RzLG93bmVyLG93bmVyLmV4dHJhX3F1ZXN0aW9ucyxiYWRnZSxiYWRnZS5mZWF0dXJlcyx0aWNrZXRfdHlwZVwiXG4gICAgfTtcblxuICAgIGNvbnN0IGlkVG9rZW4gPSBnZXRJZFRva2VuKCk7XG4gICAgbGV0IGNvbXBhbnkgPSBcIlwiO1xuICAgIGlmIChpZFRva2VuKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCB2ZXJpZmllciA9IG5ldyBJZFRva2VuVmVyaWZpZXIoKTtcbiAgICAgICAgY29uc3Qgand0ID0gdmVyaWZpZXIuZGVjb2RlKGlkVG9rZW4pO1xuICAgICAgICBjb21wYW55ID0gand0LnBheWxvYWQuY29tcGFueTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgY29uc29sZS5sb2coXCJlcnJvclwiLCBlKTtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3Qgbm9ybWFsaXplZEVudGl0eSA9IG5vcm1hbGl6ZVRpY2tldChhbnN3ZXJzKTtcblxuICAgIHJldHVybiBwdXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihVUERBVEVfVElDS0VUKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzL2FsbC9vcmRlcnMvYWxsL3RpY2tldHMvJHt0aWNrZXQuaWR9YCxcbiAgICAgIG5vcm1hbGl6ZWRFbnRpdHksXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKVxuICAgICAgLnRoZW4oYXN5bmMgKCkgPT4ge1xuICAgICAgICBkaXNwYXRjaChyZWZyZXNoUHJvZmlsZShhbnN3ZXJzLCBjb21wYW55LCB0aWNrZXQub3duZXIpKTtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICByZXR1cm4gZTtcbiAgICAgIH0pO1xuICB9O1xuXG5leHBvcnQgY29uc3QgYXNzaWduQXR0ZW5kZWUgPVxuICAob3JkZXJJZCwgdGlja2V0SWQsIGF0dGVuZGVlX2VtYWlsLCBtZXNzYWdlID0gbnVsbCkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCkuY2F0Y2goUHJvbWlzZS5yZWplY3QpO1xuXG4gICAgY29uc3QgcGF5bG9hZCA9IHsgYXR0ZW5kZWVfZW1haWwgfTtcbiAgICBpZiAobWVzc2FnZSkgcGF5bG9hZC5tZXNzYWdlID0gbWVzc2FnZTtcblxuICAgIGlmICghYWNjZXNzVG9rZW4pIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIGV4cGFuZDpcbiAgICAgICAgXCJvd25lcixvd25lci5leHRyYV9xdWVzdGlvbnMsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLHRpY2tldF90eXBlLG9yZGVyXCIsXG4gICAgICByZWxhdGlvbnM6IFwib3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLm5vbmVcIixcbiAgICAgIGZpZWxkczpcbiAgICAgICAgXCJvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24uaWQsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLm5hbWUsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLnR5cGVcIlxuICAgIH07XG5cbiAgICByZXR1cm4gcHV0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oQVNTSUdOX1RJQ0tFVCksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzLyR7b3JkZXJJZH0vdGlja2V0cy8ke3RpY2tldElkfS9hdHRlbmRlZWAsXG4gICAgICBwYXlsb2FkLFxuICAgICAgY3VzdG9tQXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaCkuZmluYWxseSgoKSA9PiB7XG4gICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IHJlYXNzaWduVGlja2V0ID1cbiAgKG9yZGVySWQsIHRpY2tldElkLCBlbWFpbCwgbWVzc2FnZSkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCkuY2F0Y2goUHJvbWlzZS5yZWplY3QpO1xuXG4gICAgaWYgKCFhY2Nlc3NUb2tlbikgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7XG5cbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgZXhwYW5kOiBcIm9yZGVyLCBvd25lciwgb3duZXIuZXh0cmFfcXVlc3Rpb25zLCBvcmRlci5zdW1taXRcIlxuICAgIH07XG5cbiAgICByZXR1cm4gZGVsZXRlUmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oUkVNT1ZFX1RJQ0tFVF9BVFRFTkRFRSksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzLyR7b3JkZXJJZH0vdGlja2V0cy8ke3RpY2tldElkfS9hdHRlbmRlZWAsXG4gICAgICB7fSxcbiAgICAgIGN1c3RvbUF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpLnRoZW4oKCkgPT5cbiAgICAgIGRpc3BhdGNoKGFzc2lnbkF0dGVuZGVlKG9yZGVySWQsIHRpY2tldElkLCBlbWFpbCwgbWVzc2FnZSkpXG4gICAgKTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IGRlbGVnYXRlVGlja2V0ID1cbiAgKG9yZGVySWQsIHRpY2tldElkLCBmaXJzdE5hbWUsIGxhc3ROYW1lLCBlbWFpbCkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCkuY2F0Y2goUHJvbWlzZS5yZWplY3QpO1xuICAgIGNvbnN0IHtcbiAgICAgIHdpZGdldFN0YXRlOiB7IHN1bW1pdCB9XG4gICAgfSA9IGdldFN0YXRlKCk7XG4gICAgY29uc3QgcGF5bG9hZCA9IHtcbiAgICAgIGF0dGVuZGVlX2ZpcnN0X25hbWU6IGZpcnN0TmFtZSxcbiAgICAgIGF0dGVuZGVlX2xhc3RfbmFtZTogbGFzdE5hbWUsXG4gICAgICBhdHRlbmRlZV9lbWFpbDogZW1haWxcbiAgICB9O1xuXG4gICAgaWYgKCFhY2Nlc3NUb2tlbikgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7XG5cbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgZXhwYW5kOlxuICAgICAgICBcIm93bmVyLG93bmVyLmV4dHJhX3F1ZXN0aW9ucyxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24sdGlja2V0X3R5cGUsb3JkZXJcIixcbiAgICAgIHJlbGF0aW9uczogXCJvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24ubm9uZVwiLFxuICAgICAgZmllbGRzOlxuICAgICAgICBcIm93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi5pZCxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24ubmFtZSxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24udHlwZVwiXG4gICAgfTtcblxuICAgIHJldHVybiBwdXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihERUxFR0FURV9USUNLRVQpLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvJHtzdW1taXQuaWR9L29yZGVycy8ke29yZGVySWR9L3RpY2tldHMvJHt0aWNrZXRJZH0vZGVsZWdhdGVgLFxuICAgICAgcGF5bG9hZCxcbiAgICAgIGN1c3RvbUF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCBzYXZlRXh0cmFRdWVzdGlvbnMgPVxuICAodGlja2V0LCBhbnN3ZXJzKSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKS5jYXRjaChQcm9taXNlLnJlamVjdCk7XG5cbiAgICBpZiAoIWFjY2Vzc1Rva2VuKSByZXR1cm4gUHJvbWlzZS5yZWplY3QoKTtcblxuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBleHBhbmQ6XG4gICAgICAgIFwicmVmdW5kX3JlcXVlc3RzLG93bmVyLG93bmVyLmV4dHJhX3F1ZXN0aW9ucyxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24sYmFkZ2UsYmFkZ2UuZmVhdHVyZXMsdGlja2V0X3R5cGUsb3JkZXJcIixcbiAgICAgIHJlbGF0aW9uczogXCJvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24ubm9uZVwiLFxuICAgICAgZmllbGRzOlxuICAgICAgICBcIm93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi5pZCxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24ubmFtZSxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24udHlwZVwiXG4gICAgfTtcblxuICAgIHJldHVybiBwdXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihVUERBVEVfVElDS0VUKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzL2FsbC9vcmRlcnMvYWxsL3RpY2tldHMvJHt0aWNrZXQuaWR9YCxcbiAgICAgIGFuc3dlcnMsXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKVxuICAgICAgLnRoZW4oYXN5bmMgKCkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIHJldHVybiBlO1xuICAgICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCBnZXRUaWNrZXRQREYgPVxuICAodGlja2V0KSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKS5jYXRjaChQcm9taXNlLnJlamVjdCk7XG5cbiAgICBpZiAoIWFjY2Vzc1Rva2VuKSByZXR1cm4gUHJvbWlzZS5yZWplY3QoKTtcblxuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW5cbiAgICB9O1xuXG4gICAgY29uc3Qgb3JkZXJJZCA9IHRpY2tldC5vcmRlciA/IHRpY2tldC5vcmRlci5pZCA6IHRpY2tldC5vcmRlcl9pZDtcblxuICAgIGNvbnN0IHF1ZXJ5U3RyaW5nID0gb2JqZWN0VG9RdWVyeVN0cmluZyhwYXJhbXMpO1xuICAgIGNvbnN0IGFwaVVybCA9IGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzL2FsbC9vcmRlcnMvJHtvcmRlcklkfS90aWNrZXRzLyR7dGlja2V0LmlkfS9wZGY/JHtxdWVyeVN0cmluZ31gO1xuXG4gICAgcmV0dXJuIGZldGNoKGFwaVVybCwge1xuICAgICAgcmVzcG9uc2VUeXBlOiBcIkJsb2JcIixcbiAgICAgIGhlYWRlcnM6IHsgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9wZGZcIiB9XG4gICAgfSlcbiAgICAgIC50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgICAgdGhyb3cgcmVzcG9uc2U7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHJlc3BvbnNlLmJsb2IoKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICAgIC50aGVuKChwZGYpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIGNvbnN0IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiYVwiKTtcbiAgICAgICAgY29uc3QgdXJsID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwocGRmKTtcbiAgICAgICAgbGluay5ocmVmID0gdXJsO1xuICAgICAgICBsaW5rLmRvd25sb2FkID0gXCJ0aWNrZXQucGRmXCI7XG4gICAgICAgIGxpbmsuZGlzcGF0Y2hFdmVudChuZXcgTW91c2VFdmVudChcImNsaWNrXCIpKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goY3VzdG9tRmV0Y2hFcnJvckhhbmRsZXIpO1xuICB9O1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQm94IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZUZvcm1payB9IGZyb20gXCJmb3JtaWtcIjtcbmltcG9ydCBFeHRyYVF1ZXN0aW9uc0ZpZWxkcyBmcm9tIFwiLi4vRXh0cmFRdWVzdGlvbnNGaWVsZHNcIjtcbmltcG9ydCBGb3JtRm9vdGVyIGZyb20gXCIuLi9Gb3JtRm9vdGVyXCI7XG5pbXBvcnQgdXNlU2Nyb2xsVG9FcnJvciBmcm9tIFwiLi4vLi4vaG9va3MvdXNlU2Nyb2xsVG9FcnJvclwiO1xuaW1wb3J0IFJlZ2lzdHJhdGlvbkRpc2NsYWltZXIgZnJvbSBcIi4uL1RpY2tldERldGFpbC9jb21wb25lbnRzL1JlZ2lzdHJhdGlvbkRpc2NsYWltZXIvUmVnaXN0cmF0aW9uRGlzY2xhaW1lclwiO1xuaW1wb3J0IHsgYnVpbGRWYWxpZGF0aW9uU2NoZW1hLCBwYXJzZUFuc3dlcnMgfSBmcm9tIFwiLi4vLi4vdXRpbHMvdGlja2V0VXRpbHNcIjtcblxuY29uc3QgQXNzaWduRVFGb3JtID0gKHtcbiAgdGlja2V0LFxuICBzdW1taXQsXG4gIGV4dHJhUXVlc3Rpb25zLFxuICBvblN1Ym1pdCxcbiAgb25DbG9zZVxufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG5cbiAgY29uc3QgZm9ybWlrID0gdXNlRm9ybWlrKHtcbiAgICBpbml0aWFsVmFsdWVzOiBwYXJzZUFuc3dlcnModGlja2V0Lm93bmVyLCBleHRyYVF1ZXN0aW9ucywge30sIGZhbHNlLCB0cnVlKSxcbiAgICB2YWxpZGF0aW9uU2NoZW1hOiBidWlsZFZhbGlkYXRpb25TY2hlbWEoXG4gICAgICBleHRyYVF1ZXN0aW9ucyxcbiAgICAgIGZhbHNlLFxuICAgICAgc3VtbWl0LnJlZ2lzdHJhdGlvbl9kaXNjbGFpbWVyX21hbmRhdG9yeVxuICAgICksXG4gICAgb25TdWJtaXQ6ICh2YWx1ZXMpID0+IHtcbiAgICAgIGNvbnN0IHJlbGV2YW50QW5zd2VycyA9IHBhcnNlQW5zd2VycyhcbiAgICAgICAgdGlja2V0Lm93bmVyLFxuICAgICAgICBleHRyYVF1ZXN0aW9ucyxcbiAgICAgICAgdmFsdWVzLFxuICAgICAgICBmYWxzZSxcbiAgICAgICAgdHJ1ZSxcbiAgICAgICAgdHJ1ZVxuICAgICAgKTtcbiAgICAgIHJldHVybiBvblN1Ym1pdChyZWxldmFudEFuc3dlcnMpO1xuICAgIH0sXG4gICAgZW5hYmxlUmVpbml0aWFsaXplOiB0cnVlXG4gIH0pO1xuXG4gIC8vIGNvbnNvbGUubG9nKFwiU1VNTUlUOiBcIiwgc3VtbWl0KTtcbiAgLy8gY29uc29sZS5sb2coXCJUSUNLRVQ6IFwiLCB0aWNrZXQpO1xuICAvLyBjb25zb2xlLmxvZyhcIlFVRVNUSVVPTnM6IFwiLCBleHRyYVF1ZXN0aW9ucyk7XG4gIC8vIGNvbnNvbGUubG9nKFwiQU5TV0VSUzogXCIsIGFuc3dlcnMpO1xuICAvLyBjb25zb2xlLmxvZyhcIkVSUk9SczogXCIsIGZvcm1pay5lcnJvcnMpO1xuICAvLyBjb25zb2xlLmxvZyhcIlZBTFVFUzogXCIsIGZvcm1pay52YWx1ZXMpO1xuICAvLyBjb25zb2xlLmxvZyhcIklOSVRJQUw6IFwiLCBmb3JtaWsuaW5pdGlhbFZhbHVlcyk7XG4gIC8vIGNvbnNvbGUubG9nKFwiVE9VQ0hFRDogXCIsIGZvcm1pay50b3VjaGVkKTtcblxuICAvLyBTQ1JPTEwgVE8gRVJST1JcbiAgdXNlU2Nyb2xsVG9FcnJvcihmb3JtaWssIFwicmVhc3NpZ25EcmF3ZXJcIik7XG5cbiAgaWYgKGV4dHJhUXVlc3Rpb25zPy5sZW5ndGggPT09IDApIHJldHVybiBudWxsO1xuXG4gIHJldHVybiAoXG4gICAgPGZvcm0gb25TdWJtaXQ9e2Zvcm1pay5oYW5kbGVTdWJtaXR9IG5vVmFsaWRhdGU+XG4gICAgICA8Qm94PlxuICAgICAgICA8RXh0cmFRdWVzdGlvbnNGaWVsZHMgZXh0cmFRdWVzdGlvbnM9e2V4dHJhUXVlc3Rpb25zfSBmb3JtaWs9e2Zvcm1pa30gLz5cbiAgICAgICAge3N1bW1pdC5yZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9jb250ZW50ICYmIChcbiAgICAgICAgICA8UmVnaXN0cmF0aW9uRGlzY2xhaW1lclxuICAgICAgICAgICAgZm9ybWlrPXtmb3JtaWt9XG4gICAgICAgICAgICBkaXNjbGFpbWVyPXtzdW1taXQucmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfY29udGVudH1cbiAgICAgICAgICAgIGlzUmVxdWlyZWQ9e3N1bW1pdC5yZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9tYW5kYXRvcnl9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgIDwvQm94PlxuICAgICAgPEZvcm1Gb290ZXJcbiAgICAgICAgc2F2ZUxhYmVsPXt0KFwidGlja2V0X2Fzc2lnbi5leHRyYV9xdWVzdGlvbnNfZm9ybS5zYXZlXCIpfVxuICAgICAgICBjYW5jZWxMYWJlbD17dChcInRpY2tldF9hc3NpZ24uZXh0cmFfcXVlc3Rpb25zX2Zvcm0uY2FuY2VsXCIpfVxuICAgICAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgICAgICBkaXNhYmxlZD17Zm9ybWlrLmlzU3VibWl0dGluZ31cbiAgICAgIC8+XG4gICAgPC9mb3JtPlxuICApO1xufTtcblxuQXNzaWduRVFGb3JtLnByb3BUeXBlcyA9IHtcbiAgdGlja2V0OiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBleHRyYVF1ZXN0aW9uczogUHJvcFR5cGVzLmFycmF5LmlzUmVxdWlyZWQsXG4gIG9uU3VibWl0OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkXG59O1xuXG5leHBvcnQgZGVmYXVsdCBBc3NpZ25FUUZvcm07XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgQ29udGVudENvcHlJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0NvbnRlbnRDb3B5XCI7XG5pbXBvcnQgeyBUb29sdGlwIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IE1JTExJU0VDX1RPX1NFQyB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBkZWZhdWx0V2lkdGggPSA5MDtcblxuY29uc3QgQ29weVRleHQgPSAoe1xuICB0ZXh0LFxuICB0b29sdGlwVGV4dCxcbiAgaGlkZUNvcHkgPSBmYWxzZSxcbiAgdHJ1bmNhdGVkID0gdHJ1ZSxcbiAgcmV2ZXJzZWQgPSBmYWxzZSxcbiAgd2lkdGggPSBkZWZhdWx0V2lkdGhcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCB0b29sdGlwVGV4dFRvVXNlID0gdG9vbHRpcFRleHQgfHwgdChcImdlbmVyYWwuY29weV90b19jbGlwYm9hcmRcIik7XG4gIGNvbnN0IFt0b29sdGlwLCBzZXRUb29sdGlwXSA9IFJlYWN0LnVzZVN0YXRlKHRvb2x0aXBUZXh0VG9Vc2UpO1xuICBjb25zdCBjbGFzc05hbWVzID0gYCR7dHJ1bmNhdGVkICYmIHN0eWxlcy50cnVuY2F0ZWR9ICR7XG4gICAgcmV2ZXJzZWQgJiYgc3R5bGVzLnJldmVyc2VkXG4gIH1gO1xuXG4gIGNvbnN0IGhhbmRsZUNvcHkgPSAoKSA9PiB7XG4gICAgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQodGV4dCk7XG4gICAgc2V0VG9vbHRpcCh0KFwiZ2VuZXJhbC5jb3BpZWRcIikpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgc2V0VG9vbHRpcCh0b29sdGlwVGV4dFRvVXNlKTtcbiAgICB9LCBNSUxMSVNFQ19UT19TRUMpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy53cmFwcGVyfT5cbiAgICAgIDxzcGFuIGNsYXNzTmFtZT17Y2xhc3NOYW1lc30gc3R5bGU9e3sgd2lkdGggfX0+XG4gICAgICAgIHt0ZXh0fVxuICAgICAgPC9zcGFuPlxuICAgICAgeyFoaWRlQ29weSAmJiAoXG4gICAgICAgIDxUb29sdGlwIHRpdGxlPXt0b29sdGlwfT5cbiAgICAgICAgICA8Q29udGVudENvcHlJY29uXG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5jb3B5SWNvbn1cbiAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZUNvcHl9XG4gICAgICAgICAgICBkYXRhLXRlc3RpZD1cImNvcHktbnVtYmVyLWJ1dHRvblwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgKX1cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbkNvcHlUZXh0LnByb3BUeXBlcyA9IHtcbiAgdGV4dDogUHJvcFR5cGVzLnN0cmluZyxcbiAgdG9vbHRpcFRleHQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGhpZGVDb3B5OiBQcm9wVHlwZXMuYm9vbCxcbiAgdHJ1bmNhdGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgcmV2ZXJzZWQ6IFByb3BUeXBlcy5ib29sLFxuICB3aWR0aDogUHJvcFR5cGVzLm51bWJlclxufTtcblxuZXhwb3J0IGRlZmF1bHQgQ29weVRleHQ7XG4iLCJpbXBvcnQgeyBjcmVhdGVDb250ZXh0IH0gZnJvbSBcInJlYWN0XCI7XG5cbmNvbnN0IGRlZmF1bHRDb250ZXh0VmFsdWUgPSB7XG4gIHNldE1lc3NhZ2U6ICgpID0+IHt9LFxuICBzZXRNZXNzYWdlQ2FsbGJhY2s6ICgpID0+IHt9XG59O1xuXG5jb25zdCBDdXN0b21EaWFsb2dDb250ZXh0ID0gY3JlYXRlQ29udGV4dChkZWZhdWx0Q29udGV4dFZhbHVlKTtcblxuZXhwb3J0IGRlZmF1bHQgQ3VzdG9tRGlhbG9nQ29udGV4dDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIERpYWxvZyxcbiAgRGlhbG9nQ29udGVudCxcbiAgRGlhbG9nQ29udGVudFRleHQsXG4gIERpYWxvZ1RpdGxlXG59IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5cbmNvbnN0IEN1c3RvbURpYWxvZyA9ICh7IG9wZW4sIG9uQ2xvc2UsIHRpdGxlLCBib2R5IH0pID0+IChcbiAgPERpYWxvZ1xuICAgIG9wZW49e29wZW59XG4gICAgb25DbG9zZT17b25DbG9zZX1cbiAgICBhcmlhLWxhYmVsbGVkYnk9XCJhbGVydC1kaWFsb2ctdGl0bGVcIlxuICAgIGFyaWEtZGVzY3JpYmVkYnk9XCJhbGVydC1kaWFsb2ctZGVzY3JpcHRpb25cIlxuICA+XG4gICAgPERpYWxvZ1RpdGxlIGlkPVwiYWxlcnQtZGlhbG9nLXRpdGxlXCI+e3RpdGxlfTwvRGlhbG9nVGl0bGU+XG4gICAgPERpYWxvZ0NvbnRlbnQ+XG4gICAgICA8RGlhbG9nQ29udGVudFRleHRcbiAgICAgICAgaWQ9XCJhbGVydC1kaWFsb2ctZGVzY3JpcHRpb25cIlxuICAgICAgICBkYW5nZXJvdXNseVNldElubmVySFRNTD17eyBfX2h0bWw6IGJvZHkgfX1cbiAgICAgIC8+XG4gICAgPC9EaWFsb2dDb250ZW50PlxuICA8L0RpYWxvZz5cbik7XG5cbkN1c3RvbURpYWxvZy5wcm9wVHlwZXMgPSB7XG4gIG9wZW46IFByb3BUeXBlcy5ib29sLFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYyxcbiAgdGl0bGU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGJvZHk6IFByb3BUeXBlcy5zdHJpbmdcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEN1c3RvbURpYWxvZztcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IFRoZW1lUHJvdmlkZXIgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgY3JlYXRlVGhlbWUgfSBmcm9tIFwiQG11aS9tYXRlcmlhbC9zdHlsZXNcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcblxubGV0IGRhcmtDb2xvciA9IFwiXCI7XG5pZiAodHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAvLyBHZXQgdGhlIHJvb3QgZWxlbWVudFxuICBjb25zdCByb290ID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuXG4gIC8vIFJldHJpZXZlIHRoZSBjdXJyZW50IHZhbHVlIG9mIGEgQ1NTIHZhcmlhYmxlXG4gIGRhcmtDb2xvciA9IGdldENvbXB1dGVkU3R5bGUocm9vdCkuZ2V0UHJvcGVydHlWYWx1ZShcbiAgICBcIi0tY29sb3JfYmFja2dyb3VuZF9kYXJrXCJcbiAgKTtcbn1cblxuY29uc3QgdGhlbWUgPSBjcmVhdGVUaGVtZSh7XG4gIHBhbGV0dGU6IHtcbiAgICBwcmltYXJ5OiB7XG4gICAgICBtYWluOiBkYXJrQ29sb3JcbiAgICB9LFxuICAgIHRleHQ6IHtcbiAgICAgIHByaW1hcnk6IFwiIzAwMDAwMERFXCIsXG4gICAgICBzZWNvbmRhcnk6IFwiIzAwMDAwMDk5XCJcbiAgICB9XG4gIH0sXG4gIHR5cG9ncmFwaHk6IHtcbiAgICBib2R5MToge1xuICAgICAgZm9udFNpemU6IFwiMWVtXCJcbiAgICB9LFxuICAgIGg1OiB7XG4gICAgICBmb250U2l6ZTogXCIxLjZlbVwiLFxuICAgICAgZm9udFdlaWdodDogNDAwLFxuICAgICAgXCImLk11aVR5cG9ncmFwaHktZ3V0dGVyQm90dG9tXCI6IHtcbiAgICAgICAgbWFyZ2luQm90dG9tOiBcIjIwcHhcIlxuICAgICAgfVxuICAgIH0sXG4gICAgaDY6IHtcbiAgICAgIGZvbnRTaXplOiBcIjEuNGVtXCIsXG4gICAgICBmb250V2VpZ2h0OiA1MDAsXG4gICAgICBcIiYuTXVpVHlwb2dyYXBoeS1ndXR0ZXJCb3R0b21cIjoge1xuICAgICAgICBtYXJnaW5Cb3R0b206IFwiMjBweFwiXG4gICAgICB9XG4gICAgfVxuICB9LFxuICBjb21wb25lbnRzOiB7XG4gICAgTXVpRm9ybUhlbHBlclRleHQ6IHtcbiAgICAgIHN0eWxlT3ZlcnJpZGVzOiB7XG4gICAgICAgIHJvb3Q6IHtcbiAgICAgICAgICBmb250U2l6ZTogXCIuOGVtXCJcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgTXVpQnV0dG9uOiB7XG4gICAgICBzdHlsZU92ZXJyaWRlczoge1xuICAgICAgICByb290OiB7XG4gICAgICAgICAgZm9udFNpemU6IFwiMWVtXCIsXG4gICAgICAgICAgZm9udFdlaWdodDogNTAwLFxuICAgICAgICAgIGxpbmVIZWlnaHQ6IFwiMjJweFwiXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIE11aVRhYjoge1xuICAgICAgc3R5bGVPdmVycmlkZXM6IHtcbiAgICAgICAgcm9vdDoge1xuICAgICAgICAgIGZvbnRTaXplOiBcIjE0cHhcIixcbiAgICAgICAgICBjb2xvcjogXCIjMDAwMDAwOTlcIixcbiAgICAgICAgICBcIiYuTXVpLXNlbGVjdGVkXCI6IHtcbiAgICAgICAgICAgIGNvbG9yOiBcIiMyMTk2ZjNcIlxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgTXVpVGFiczoge1xuICAgICAgc3R5bGVPdmVycmlkZXM6IHtcbiAgICAgICAgaW5kaWNhdG9yOiB7XG4gICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBcIiMyMTk2ZjNcIlxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59KTtcblxuY29uc3QgQ3VzdG9tVGhlbWUgPSAoeyBjaGlsZHJlbiB9KSA9PiAoXG4gIDxUaGVtZVByb3ZpZGVyIHRoZW1lPXt0aGVtZX0+e2NoaWxkcmVufTwvVGhlbWVQcm92aWRlcj5cbik7XG5cbkN1c3RvbVRoZW1lLnByb3BUeXBlcyA9IHtcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLmlzUmVxdWlyZWRcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEN1c3RvbVRoZW1lO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHtcbiAgQ2hlY2tib3gsXG4gIEZvcm1Db250cm9sLFxuICBGb3JtQ29udHJvbExhYmVsLFxuICBGb3JtR3JvdXAsXG4gIEZvcm1IZWxwZXJUZXh0LFxuICBGb3JtTGFiZWxcbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IGdldExhYmVsLCB0b1NsdWcgfSBmcm9tIFwiLi91dGlsc1wiO1xuXG5jb25zdCBDaGVja2JveExpc3RRdWVzdGlvbkZpZWxkID0gKHtcbiAgcXVlc3Rpb24sXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lID0gXCJcIixcbiAgaXNEaXNhYmxlZCA9IGZhbHNlLFxuICBjaGlsZHJlbixcbiAgdmFsdWUsXG4gIG9uQ2hhbmdlLFxuICBzZXRGaWVsZFZhbHVlLFxuICBlcnJvcixcbiAgaGVscGVyVGV4dCxcbiAgLi4ucmVzdFxufSkgPT4ge1xuICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocXVlc3Rpb24ubmFtZSwgcXVlc3Rpb24uaWQpO1xuICBjb25zdCBxdWVzdGlvbkxhYmVsID0gZ2V0TGFiZWwocXVlc3Rpb24pO1xuICBjb25zdCBpc1JlcXVpcmVkID0gcXVlc3Rpb24ubWFuZGF0b3J5O1xuICBjb25zdCBxdWVzdGlvbk1heFZhbHVlcyA9IHF1ZXN0aW9uLm1heF9zZWxlY3RlZF92YWx1ZXM7XG5cbiAgY29uc3QgcXVlc3Rpb25PcHRpb25zID1cbiAgICBxdWVzdGlvbi52YWx1ZXM/Lm1hcCgodmFsKSA9PiAoe1xuICAgICAgbGFiZWw6IHZhbC5sYWJlbCxcbiAgICAgIHZhbHVlOiB2YWwuaWQudG9TdHJpbmcoKVxuICAgIH0pKSB8fCBbXTtcblxuICBjb25zdCBoYW5kbGVDaGVja2JveExpc3RDaGFuZ2UgPSAoY2hlY2tlZCwgdmFsKSA9PiB7XG4gICAgY29uc3QgY3VycmVudEFucyA9IHZhbHVlIHx8IFtdO1xuICAgIGNvbnN0IG1heFNlbGVjdGlvblJlYWNoZWQgPVxuICAgICAgcXVlc3Rpb25NYXhWYWx1ZXMgIT09IDAgJiYgY3VycmVudEFucy5sZW5ndGggPT09IHF1ZXN0aW9uTWF4VmFsdWVzO1xuICAgIGxldCBuZXdWYWx1ZTtcblxuICAgIGlmIChjaGVja2VkKSB7XG4gICAgICBuZXdWYWx1ZSA9IG1heFNlbGVjdGlvblJlYWNoZWQgPyBjdXJyZW50QW5zIDogWy4uLmN1cnJlbnRBbnMsIHZhbF07XG4gICAgfSBlbHNlIHtcbiAgICAgIG5ld1ZhbHVlID0gY3VycmVudEFucy5maWx0ZXIoKHYpID0+IHYgIT09IHZhbCk7XG4gICAgfVxuXG4gICAgc2V0RmllbGRWYWx1ZShxdWVzdGlvblNsdWcsIG5ld1ZhbHVlKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGtleT17cXVlc3Rpb25TbHVnfVxuICAgICAgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fY29udGFpbmVyYH1cbiAgICAgIGNsYXNzTmFtZT17cXVlc3Rpb25DbGFzc05hbWV9XG4gICAgPlxuICAgICAgPEZvcm1Db250cm9sXG4gICAgICAgIGRpc2FibGVkPXtpc0Rpc2FibGVkfVxuICAgICAgICByZXF1aXJlZD17aXNSZXF1aXJlZH1cbiAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgIG1hcmdpbj1cIm5vcm1hbFwiXG4gICAgICAgIGVycm9yPXtlcnJvcn1cbiAgICAgID5cbiAgICAgICAgPEZvcm1MYWJlbD57cXVlc3Rpb25MYWJlbH08L0Zvcm1MYWJlbD5cbiAgICAgICAge2Vycm9yICYmIDxGb3JtSGVscGVyVGV4dD57aGVscGVyVGV4dCA/PyBcIiBcIn08L0Zvcm1IZWxwZXJUZXh0Pn1cbiAgICAgICAgPEZvcm1Hcm91cD5cbiAgICAgICAgICB7cXVlc3Rpb25PcHRpb25zLm1hcCgob3ApID0+IChcbiAgICAgICAgICAgIDxGb3JtQ29udHJvbExhYmVsXG4gICAgICAgICAgICAgIGtleT17b3AubGFiZWx9XG4gICAgICAgICAgICAgIG5hbWU9e3F1ZXN0aW9uU2x1Z31cbiAgICAgICAgICAgICAgY29udHJvbD17XG4gICAgICAgICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICAgICAgICBjaGVja2VkPXt2YWx1ZT8uaW5jbHVkZXMob3AudmFsdWUpfVxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhldikgPT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlQ2hlY2tib3hMaXN0Q2hhbmdlKGV2LnRhcmdldC5jaGVja2VkLCBvcC52YWx1ZSlcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nICovXG4gICAgICAgICAgICAgICAgICB7Li4ucmVzdH1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGxhYmVsPXtvcC5sYWJlbH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvRm9ybUdyb3VwPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L0Zvcm1Db250cm9sPlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZC5wcm9wVHlwZXMgPSB7XG4gIHF1ZXN0aW9uOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHZhbHVlOiBQcm9wVHlwZXMuYXJyYXksXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBpc0Rpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgb25DaGFuZ2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgc2V0RmllbGRWYWx1ZTogUHJvcFR5cGVzLmZ1bmMsXG4gIGVycm9yOiBQcm9wVHlwZXMuYm9vbCxcbiAgaGVscGVyVGV4dDogUHJvcFR5cGVzLnN0cmluZ1xufTtcblxuZXhwb3J0IGRlZmF1bHQgQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIENoZWNrYm94LFxuICBGb3JtQ29udHJvbCxcbiAgRm9ybUNvbnRyb2xMYWJlbCxcbiAgRm9ybUhlbHBlclRleHRcbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBSYXdIVE1MIGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL2NvbXBvbmVudHMvcmF3LWh0bWxcIjtcbmltcG9ydCB7IGdldExhYmVsLCB0b1NsdWcgfSBmcm9tIFwiLi91dGlsc1wiO1xuXG5jb25zdCBDaGVja2JveFF1ZXN0aW9uRmllbGQgPSAoe1xuICBxdWVzdGlvbixcbiAgcXVlc3Rpb25DbGFzc05hbWUgPSBcIlwiLFxuICBpc0Rpc2FibGVkID0gZmFsc2UsXG4gIGNoaWxkcmVuLFxuICB2YWx1ZSxcbiAgZXJyb3IsXG4gIGhlbHBlclRleHQsXG4gIHNldEZpZWxkVmFsdWUsXG4gIC4uLnJlc3Rcbn0pID0+IHtcbiAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKHF1ZXN0aW9uLm5hbWUsIHF1ZXN0aW9uLmlkKTtcbiAgY29uc3QgcXVlc3Rpb25MYWJlbCA9IGdldExhYmVsKHF1ZXN0aW9uKTtcbiAgY29uc3QgaXNSZXF1aXJlZCA9IHF1ZXN0aW9uLm1hbmRhdG9yeTtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGtleT17cXVlc3Rpb25TbHVnfVxuICAgICAgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fY29udGFpbmVyYH1cbiAgICAgIGNsYXNzTmFtZT17cXVlc3Rpb25DbGFzc05hbWV9XG4gICAgPlxuICAgICAgPEZvcm1Db250cm9sIGZ1bGxXaWR0aCBtYXJnaW49XCJub3JtYWxcIiBlcnJvcj17ZXJyb3J9PlxuICAgICAgICA8Rm9ybUNvbnRyb2xMYWJlbFxuICAgICAgICAgIHN4PXt7IGFsaWduSXRlbXM6IFwiZmxleC1zdGFydFwiIH19XG4gICAgICAgICAgY29udHJvbD17XG4gICAgICAgICAgICA8Q2hlY2tib3hcbiAgICAgICAgICAgICAgbmFtZT17cXVlc3Rpb25TbHVnfVxuICAgICAgICAgICAgICBjaGVja2VkPXshIXZhbHVlfVxuICAgICAgICAgICAgICBsYWJlbD17PFJhd0hUTUw+e3F1ZXN0aW9uTGFiZWx9PC9SYXdIVE1MPn1cbiAgICAgICAgICAgICAgc3g9e3sgbWFyZ2luVG9wOiAtMSB9fVxuICAgICAgICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvanN4LXByb3BzLW5vLXNwcmVhZGluZyAqL1xuICAgICAgICAgICAgICB7Li4ucmVzdH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgfVxuICAgICAgICAgIGxhYmVsPXs8UmF3SFRNTD57cXVlc3Rpb25MYWJlbH08L1Jhd0hUTUw+fVxuICAgICAgICAgIGRpc2FibGVkPXtpc0Rpc2FibGVkfVxuICAgICAgICAgIHJlcXVpcmVkPXtpc1JlcXVpcmVkfVxuICAgICAgICAvPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgIHtlcnJvciAmJiA8Rm9ybUhlbHBlclRleHQ+e2hlbHBlclRleHQgPz8gXCIgXCJ9PC9Gb3JtSGVscGVyVGV4dD59XG4gICAgICA8L0Zvcm1Db250cm9sPlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuQ2hlY2tib3hRdWVzdGlvbkZpZWxkLnByb3BUeXBlcyA9IHtcbiAgcXVlc3Rpb246IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgdmFsdWU6IFByb3BUeXBlcy5ib29sLFxuICBxdWVzdGlvbkNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgaXNEaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgc2V0RmllbGRWYWx1ZTogUHJvcFR5cGVzLmZ1bmMsXG4gIGVycm9yOiBQcm9wVHlwZXMuYm9vbCxcbiAgaGVscGVyVGV4dDogUHJvcFR5cGVzLnN0cmluZ1xufTtcblxuZXhwb3J0IGRlZmF1bHQgQ2hlY2tib3hRdWVzdGlvbkZpZWxkO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIElucHV0TGFiZWwsIE1lbnVJdGVtLCBTZWxlY3QgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgZ2V0TGFiZWwsIHRvU2x1ZyB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmNvbnN0IERyb3Bkb3duUXVlc3Rpb25GaWVsZCA9ICh7XG4gIHF1ZXN0aW9uLFxuICBxdWVzdGlvbkNsYXNzTmFtZSA9IFwiXCIsXG4gIGlzRGlzYWJsZWQgPSBmYWxzZSxcbiAgc2V0RmllbGRWYWx1ZSxcbiAgY2hpbGRyZW4sXG4gIGVycm9yLFxuICBoZWxwZXJUZXh0LFxuICAuLi5yZXN0XG59KSA9PiB7XG4gIGNvbnN0IHF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhxdWVzdGlvbi5uYW1lLCBxdWVzdGlvbi5pZCk7XG4gIGNvbnN0IHF1ZXN0aW9uTGFiZWwgPSBnZXRMYWJlbChxdWVzdGlvbik7XG4gIGNvbnN0IGlzUmVxdWlyZWQgPSBxdWVzdGlvbi5tYW5kYXRvcnk7XG5cbiAgY29uc3QgcXVlc3Rpb25PcHRpb25zID1cbiAgICBxdWVzdGlvbi52YWx1ZXM/Lm1hcCgodmFsKSA9PiAoe1xuICAgICAgbGFiZWw6IHZhbC5sYWJlbCxcbiAgICAgIHZhbHVlOiB2YWwuaWRcbiAgICB9KSkgfHwgW107XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBrZXk9e3F1ZXN0aW9uU2x1Z31cbiAgICAgIGlkPXtgJHtxdWVzdGlvblNsdWd9X2NvbnRhaW5lcmB9XG4gICAgICBjbGFzc05hbWU9e3F1ZXN0aW9uQ2xhc3NOYW1lfVxuICAgID5cbiAgICAgIDxGb3JtQ29udHJvbFxuICAgICAgICBkaXNhYmxlZD17aXNEaXNhYmxlZH1cbiAgICAgICAgcmVxdWlyZWQ9e2lzUmVxdWlyZWR9XG4gICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICBtYXJnaW49XCJub3JtYWxcIlxuICAgICAgICBlcnJvcj17ZXJyb3J9XG4gICAgICA+XG4gICAgICAgIDxJbnB1dExhYmVsIGlkPXtgJHtxdWVzdGlvblNsdWd9X2xhYmVsYH0+e3F1ZXN0aW9uTGFiZWx9PC9JbnB1dExhYmVsPlxuICAgICAgICA8U2VsZWN0XG4gICAgICAgICAgbGFiZWxJZD17YCR7cXVlc3Rpb25TbHVnfV9sYWJlbGB9XG4gICAgICAgICAgbmFtZT17cXVlc3Rpb25TbHVnfVxuICAgICAgICAgIGlkPXtxdWVzdGlvblNsdWd9XG4gICAgICAgICAgbGFiZWw9e3F1ZXN0aW9uTGFiZWx9XG4gICAgICAgICAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmcgKi9cbiAgICAgICAgICB7Li4ucmVzdH1cbiAgICAgICAgICBzdHlsZT17eyBtYXJnaW5Cb3R0b206IDIwIH19XG4gICAgICAgID5cbiAgICAgICAgICB7cXVlc3Rpb25PcHRpb25zLm1hcCgob3ApID0+IChcbiAgICAgICAgICAgIDxNZW51SXRlbSBrZXk9e29wLmxhYmVsfSB2YWx1ZT17b3AudmFsdWV9PlxuICAgICAgICAgICAgICB7b3AubGFiZWx9XG4gICAgICAgICAgICA8L01lbnVJdGVtPlxuICAgICAgICAgICkpfVxuICAgICAgICA8L1NlbGVjdD5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgPC9Gb3JtQ29udHJvbD5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbkRyb3Bkb3duUXVlc3Rpb25GaWVsZC5wcm9wVHlwZXMgPSB7XG4gIHF1ZXN0aW9uOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBpc0Rpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICBlcnJvcjogUHJvcFR5cGVzLmJvb2wsXG4gIGhlbHBlclRleHQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHNldEZpZWxkVmFsdWU6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBEcm9wZG93blF1ZXN0aW9uRmllbGQ7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQge1xuICBGb3JtQ29udHJvbCxcbiAgRm9ybUNvbnRyb2xMYWJlbCxcbiAgRm9ybUhlbHBlclRleHQsXG4gIEZvcm1MYWJlbCxcbiAgUmFkaW8sXG4gIFJhZGlvR3JvdXBcbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IGdldExhYmVsLCB0b1NsdWcgfSBmcm9tIFwiLi91dGlsc1wiO1xuXG5jb25zdCBSYWRpb0xpc3RRdWVzdGlvbkZpZWxkID0gKHtcbiAgcXVlc3Rpb24sXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lID0gXCJcIixcbiAgaXNEaXNhYmxlZCA9IGZhbHNlLFxuICBjaGlsZHJlbixcbiAgZXJyb3IsXG4gIGhlbHBlclRleHQsXG4gIHNldEZpZWxkVmFsdWUsXG4gIC4uLnJlc3Rcbn0pID0+IHtcbiAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKHF1ZXN0aW9uLm5hbWUsIHF1ZXN0aW9uLmlkKTtcbiAgY29uc3QgcXVlc3Rpb25MYWJlbCA9IGdldExhYmVsKHF1ZXN0aW9uKTtcbiAgY29uc3QgaXNSZXF1aXJlZCA9IHF1ZXN0aW9uLm1hbmRhdG9yeTtcblxuICBjb25zdCBxdWVzdGlvbk9wdGlvbnMgPVxuICAgIHF1ZXN0aW9uLnZhbHVlcz8ubWFwKCh2YWwpID0+ICh7XG4gICAgICBsYWJlbDogdmFsLmxhYmVsLFxuICAgICAgdmFsdWU6IHZhbC5pZC50b1N0cmluZygpXG4gICAgfSkpIHx8IFtdO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAga2V5PXtxdWVzdGlvblNsdWd9XG4gICAgICBpZD17YCR7cXVlc3Rpb25TbHVnfV9jb250YWluZXJgfVxuICAgICAgY2xhc3NOYW1lPXtxdWVzdGlvbkNsYXNzTmFtZX1cbiAgICA+XG4gICAgICA8Rm9ybUNvbnRyb2xcbiAgICAgICAgZGlzYWJsZWQ9e2lzRGlzYWJsZWR9XG4gICAgICAgIHJlcXVpcmVkPXtpc1JlcXVpcmVkfVxuICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgbWFyZ2luPVwibm9ybWFsXCJcbiAgICAgICAgZXJyb3I9e2Vycm9yfVxuICAgICAgPlxuICAgICAgICA8Rm9ybUxhYmVsIGlkPXtgJHtxdWVzdGlvblNsdWd9X2xhYmVsYH0+e3F1ZXN0aW9uTGFiZWx9PC9Gb3JtTGFiZWw+XG4gICAgICAgIHtlcnJvciAmJiA8Rm9ybUhlbHBlclRleHQ+e2hlbHBlclRleHQgPz8gXCIgXCJ9PC9Gb3JtSGVscGVyVGV4dD59XG4gICAgICAgIDxSYWRpb0dyb3VwXG4gICAgICAgICAgYXJpYS1sYWJlbGxlZGJ5PXtgJHtxdWVzdGlvblNsdWd9X2xhYmVsYH1cbiAgICAgICAgICBuYW1lPXtxdWVzdGlvblNsdWd9XG4gICAgICAgICAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmcgKi9cbiAgICAgICAgICB7Li4ucmVzdH1cbiAgICAgICAgPlxuICAgICAgICAgIHtxdWVzdGlvbk9wdGlvbnMubWFwKChvcCkgPT4gKFxuICAgICAgICAgICAgPEZvcm1Db250cm9sTGFiZWxcbiAgICAgICAgICAgICAga2V5PXtvcC5sYWJlbH1cbiAgICAgICAgICAgICAgdmFsdWU9e29wLnZhbHVlfVxuICAgICAgICAgICAgICBjb250cm9sPXs8UmFkaW8gLz59XG4gICAgICAgICAgICAgIGxhYmVsPXtvcC5sYWJlbH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvUmFkaW9Hcm91cD5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgPC9Gb3JtQ29udHJvbD5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cblJhZGlvTGlzdFF1ZXN0aW9uRmllbGQucHJvcFR5cGVzID0ge1xuICBxdWVzdGlvbjogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBxdWVzdGlvbkNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgaXNEaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgZXJyb3I6IFByb3BUeXBlcy5ib29sLFxuICBoZWxwZXJUZXh0OiBQcm9wVHlwZXMuc3RyaW5nLFxuICBzZXRGaWVsZFZhbHVlOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgUmFkaW9MaXN0UXVlc3Rpb25GaWVsZDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IEZvcm1Hcm91cCwgVGV4dEZpZWxkIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IGdldExhYmVsLCB0b1NsdWcgfSBmcm9tIFwiLi91dGlsc1wiO1xuXG5jb25zdCBUZXh0UXVlc3Rpb25GaWVsZCA9ICh7XG4gIHF1ZXN0aW9uLFxuICBxdWVzdGlvbkNsYXNzTmFtZSA9IFwiXCIsXG4gIGlzRGlzYWJsZWQgPSBmYWxzZSxcbiAgY2hpbGRyZW4sXG4gIHNldEZpZWxkVmFsdWUsXG4gIC4uLnJlc3Rcbn0pID0+IHtcbiAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKHF1ZXN0aW9uLm5hbWUsIHF1ZXN0aW9uLmlkKTtcbiAgY29uc3QgcXVlc3Rpb25MYWJlbCA9IGdldExhYmVsKHF1ZXN0aW9uKTtcbiAgY29uc3QgaXNSZXF1aXJlZCA9IHF1ZXN0aW9uLm1hbmRhdG9yeTtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGtleT17cXVlc3Rpb25TbHVnfVxuICAgICAgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fY29udGFpbmVyYH1cbiAgICAgIGNsYXNzTmFtZT17cXVlc3Rpb25DbGFzc05hbWV9XG4gICAgPlxuICAgICAgPEZvcm1Hcm91cD5cbiAgICAgICAgPFRleHRGaWVsZFxuICAgICAgICAgIG5hbWU9e3F1ZXN0aW9uU2x1Z31cbiAgICAgICAgICBsYWJlbD17cXVlc3Rpb25MYWJlbH1cbiAgICAgICAgICBkaXNhYmxlZD17aXNEaXNhYmxlZH1cbiAgICAgICAgICByZXF1aXJlZD17aXNSZXF1aXJlZH1cbiAgICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgICBtYXJnaW49XCJub3JtYWxcIlxuICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nICovXG4gICAgICAgICAgey4uLnJlc3R9XG4gICAgICAgIC8+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvRm9ybUdyb3VwPlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuVGV4dFF1ZXN0aW9uRmllbGQucHJvcFR5cGVzID0ge1xuICBxdWVzdGlvbjogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBxdWVzdGlvbkNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgaXNEaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgc2V0RmllbGRWYWx1ZTogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRleHRRdWVzdGlvbkZpZWxkO1xuIiwiaW1wb3J0IHtcbiAgUXVlc3Rpb25UeXBlX0NoZWNrYm94LFxuICBRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0LFxuICBRdWVzdGlvblR5cGVfQ29tYm9Cb3gsXG4gIFF1ZXN0aW9uVHlwZV9Db3VudHJ5Q29tYm9Cb3gsXG4gIFF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbkxpc3Rcbn0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuXG5leHBvcnQgY29uc3QgY2hlY2tSdWxlID0gKHZhbHVlLCBydWxlKSA9PiB7XG4gIGNvbnN0IHZhbHVlcyA9IHJ1bGUuYW5zd2VyX3ZhbHVlcztcblxuICBpZiAoIXZhbHVlKSByZXR1cm4gZmFsc2U7XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgaWYgKCF2YWx1ZS5sZW5ndGgpIHJldHVybiBmYWxzZTtcbiAgICBsZXQgcmVzID0gcnVsZS5hbnN3ZXJfdmFsdWVzX29wZXJhdG9yID09PSBcIkFuZFwiO1xuICAgIHZhbHVlcy5mb3JFYWNoKCh2KSA9PiB7XG4gICAgICBpZiAocnVsZS5hbnN3ZXJfdmFsdWVzX29wZXJhdG9yID09PSBcIkFuZFwiKSB7XG4gICAgICAgIHJlcyA9IHJlcyAmJiB2YWx1ZS5pbmNsdWRlcyh2KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIE9yXG4gICAgICAgIHJlcyA9IHJlcyB8fCB2YWx1ZS5pbmNsdWRlcyh2KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gcmVzO1xuICB9XG4gIHJldHVybiB2YWx1ZXMuaW5jbHVkZXModmFsdWU/LnRvU3RyaW5nKCkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGNoZWNrVmlzaWJpbGl0eSA9IChydWxlLCBydWxlUmVzdWx0KSA9PiB7XG4gIGlmIChydWxlLnZpc2liaWxpdHkgPT09IFwiVmlzaWJsZVwiKSB7XG4gICAgaWYgKHJ1bGUudmlzaWJpbGl0eV9jb25kaXRpb24gPT09IFwiRXF1YWxcIikge1xuICAgICAgcmV0dXJuICEhcnVsZVJlc3VsdDtcbiAgICB9XG4gICAgLy8gTm9uIEVxdWFsXG4gICAgcmV0dXJuICFydWxlUmVzdWx0O1xuICB9XG4gIC8vIG5vdCB2aXNpYmxlXG4gIGlmIChydWxlLnZpc2liaWxpdHlfY29uZGl0aW9uID09PSBcIkVxdWFsXCIpIHtcbiAgICByZXR1cm4gIXJ1bGVSZXN1bHQ7XG4gIH1cbiAgcmV0dXJuICEhcnVsZVJlc3VsdDtcbn07XG5cbmV4cG9ydCBjb25zdCB0b1NsdWcgPSAodGV4dCwgcXVlc3Rpb25JZCkgPT4ge1xuICBjb25zdCB0ZXh0TEMgPSB0ZXh0LnRvTG93ZXJDYXNlKCk7XG4gIHJldHVybiBgJHt0ZXh0TEMucmVwbGFjZSgvW15hLXpBLVowLTldKy9nLCBcIl9cIil9XyR7cXVlc3Rpb25JZH1gO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldExhYmVsID0gKHEpID0+XG4gIC8vIHJlcGxhY2UgbGluZSBicmVha3MgYW5kIHJlbW92ZSBvdXRlciA8cD5cbiAgcT8ubGFiZWw/LnJlcGxhY2UoL1xcbi9nLCBcIiBcIikucmVwbGFjZSgvPHA+KC4qKTxcXC9wPi9naSwgXCIkMVwiKTtcblxuZXhwb3J0IGNvbnN0IGlzQW5zd2VyZWQgPSAoYW5zd2VyKSA9PiB7XG4gIGlmICghYW5zd2VyKSByZXR1cm4gZmFsc2U7XG4gIC8vIGNoZWNrIHR5cGVcbiAgaWYgKEFycmF5LmlzQXJyYXkoYW5zd2VyKSkgcmV0dXJuIGFuc3dlci5sZW5ndGggPiAwO1xuICBpZiAodHlwZW9mIGFuc3dlciA9PT0gXCJzdHJpbmdcIikgcmV0dXJuIGFuc3dlci5sZW5ndGggPiAwO1xuICBpZiAodHlwZW9mIGFuc3dlciA9PT0gXCJudW1iZXJcIikgcmV0dXJuIGFuc3dlciA+IDA7XG4gIGlmICh0eXBlb2YgYW5zd2VyID09PSBcImJvb2xlYW5cIikgcmV0dXJuIGFuc3dlcjtcbiAgcmV0dXJuIGZhbHNlO1xufTtcblxuZXhwb3J0IGNvbnN0IGNoZWNrSWZWYWx1ZU1hdGNoID0gKGFuc3dlciwgY29tcGFyZVZhbCkgPT4ge1xuICBjb25zdCBhbnN3ZXJBcnJheSA9IEFycmF5LmlzQXJyYXkoYW5zd2VyKSA/IGFuc3dlciA6IFthbnN3ZXJdO1xuXG4gIHJldHVybiBhbnN3ZXJBcnJheS5zb21lKCh2KSA9PiB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoY29tcGFyZVZhbCkpIHtcbiAgICAgIHJldHVybiBjb21wYXJlVmFsLmluY2x1ZGVzKHYpO1xuICAgIH1cbiAgICByZXR1cm4gdiA9PT0gY29tcGFyZVZhbDtcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VHlwZUluaXRpYWxWYWx1ZSA9IChxKSA9PiB7XG4gIHN3aXRjaCAocS50eXBlKSB7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tib3g6XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0OlxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0OlxuICAgICAgcmV0dXJuIFtdO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveDpcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9Db21ib0JveDpcbiAgICAgIHJldHVybiBcIlwiO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gXCJcIjtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGdldFR5cGVWYWx1ZSA9IChhbnMsIHR5cGUpID0+IHtcbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tib3g6XG4gICAgICByZXR1cm4gYW5zID09PSBcInRydWVcIjtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3Q6XG4gICAgICByZXR1cm4gYW5zPy5zcGxpdChcIixcIikgfHwgW107XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94OlxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvbWJvQm94OlxuICAgICAgcmV0dXJuIGFucyB8fCBcIlwiO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdDpcbiAgICAgIHJldHVybiBhbnMgfHwgbnVsbDtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGFucztcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IHRyYW5zZm9ybUFud2Vyc0Zvcm1hdCA9IChhbnN3ZXJzKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBhdHRlbmRlZV9lbWFpbCxcbiAgICBhdHRlbmRlZV9maXJzdF9uYW1lLFxuICAgIGF0dGVuZGVlX2xhc3RfbmFtZSxcbiAgICBhdHRlbmRlZV9jb21wYW55LFxuICAgIGRpc2NsYWltZXJfYWNjZXB0ZWQsXG4gICAgLi4uZXh0cmFfcXVlc3Rpb25zXG4gIH0gPSBhbnN3ZXJzO1xuXG4gIGNvbnN0IGZvcm1hdHRlZEVRID0gT2JqZWN0LmVudHJpZXMoZXh0cmFfcXVlc3Rpb25zKS5tYXAoKFtrZXksIHZhbHVlXSkgPT4gKHtcbiAgICBxdWVzdGlvbl9pZDogcGFyc2VJbnQoa2V5LnNwbGl0KFwiX1wiKS5wb3AoKSwgMTApLFxuICAgIGFuc3dlcjogdmFsdWU/LnRvU3RyaW5nKCkgfHwgbnVsbFxuICB9KSk7XG5cbiAgcmV0dXJuIHtcbiAgICBhdHRlbmRlZV9lbWFpbCxcbiAgICBhdHRlbmRlZV9maXJzdF9uYW1lLFxuICAgIGF0dGVuZGVlX2xhc3RfbmFtZSxcbiAgICBhdHRlbmRlZV9jb21wYW55LFxuICAgIGRpc2NsYWltZXJfYWNjZXB0ZWQsXG4gICAgZXh0cmFfcXVlc3Rpb25zOiBmb3JtYXR0ZWRFUVxuICB9O1xufTtcbiIsImV4cG9ydCBjb25zdCBRdWVzdGlvblR5cGVfVGV4dCA9IFwiVGV4dFwiO1xuZXhwb3J0IGNvbnN0IFF1ZXN0aW9uVHlwZV9UZXh0QXJlYSA9IFwiVGV4dEFyZWFcIjtcbmV4cG9ydCBjb25zdCBRdWVzdGlvblR5cGVfQ2hlY2tib3ggPSBcIkNoZWNrQm94XCI7XG5leHBvcnQgY29uc3QgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdCA9IFwiUmFkaW9CdXR0b25MaXN0XCI7XG5leHBvcnQgY29uc3QgUXVlc3Rpb25UeXBlX0NvbWJvQm94ID0gXCJDb21ib0JveFwiO1xuZXhwb3J0IGNvbnN0IFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3QgPSBcIkNoZWNrQm94TGlzdFwiO1xuZXhwb3J0IGNvbnN0IFF1ZXN0aW9uVHlwZV9Db3VudHJ5Q29tYm9Cb3ggPSBcIkNvdW50cnlDb21ib0JveFwiO1xuZXhwb3J0IGNvbnN0IFF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbiA9IFwiUmFkaW9CdXR0b25cIjtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcblxuaW1wb3J0IHtcbiAgdG9TbHVnLFxuICBpc0Fuc3dlcmVkLFxuICBjaGVja1Zpc2liaWxpdHksXG4gIGNoZWNrUnVsZVxufSBmcm9tIFwiLi9jb21wb25lbnRzL3V0aWxzXCI7XG5pbXBvcnQge1xuICBRdWVzdGlvblR5cGVfQ2hlY2tib3gsXG4gIFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3QsXG4gIFF1ZXN0aW9uVHlwZV9Db21ib0JveCxcbiAgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveCxcbiAgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdCxcbiAgUXVlc3Rpb25UeXBlX1RleHQsXG4gIFF1ZXN0aW9uVHlwZV9UZXh0QXJlYVxufSBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmltcG9ydCBUZXh0UXVlc3Rpb25GaWVsZCBmcm9tIFwiLi9jb21wb25lbnRzL1RleHRRdWVzdGlvbkZpZWxkXCI7XG5pbXBvcnQgQ2hlY2tib3hRdWVzdGlvbkZpZWxkIGZyb20gXCIuL2NvbXBvbmVudHMvQ2hlY2tib3hRdWVzdGlvbkZpZWxkXCI7XG5pbXBvcnQgUmFkaW9MaXN0UXVlc3Rpb25GaWVsZCBmcm9tIFwiLi9jb21wb25lbnRzL1JhZGlvTGlzdFF1ZXN0aW9uRmllbGRcIjtcbmltcG9ydCBDaGVja2JveExpc3RRdWVzdGlvbkZpZWxkIGZyb20gXCIuL2NvbXBvbmVudHMvQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZFwiO1xuaW1wb3J0IERyb3Bkb3duUXVlc3Rpb25GaWVsZCBmcm9tIFwiLi9jb21wb25lbnRzL0Ryb3Bkb3duUXVlc3Rpb25GaWVsZFwiO1xuXG5jb25zdCBnZXRRdWVzdGlvbkZpZWxkQ29tcG9uZW50ID0gKHF1ZXN0aW9uVHlwZSkgPT4ge1xuICBzd2l0Y2ggKHF1ZXN0aW9uVHlwZSkge1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX1RleHRBcmVhOlxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX1RleHQ6IHtcbiAgICAgIHJldHVybiBUZXh0UXVlc3Rpb25GaWVsZDtcbiAgICB9XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tib3g6IHtcbiAgICAgIHJldHVybiBDaGVja2JveFF1ZXN0aW9uRmllbGQ7XG4gICAgfVxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdDoge1xuICAgICAgcmV0dXJuIFJhZGlvTGlzdFF1ZXN0aW9uRmllbGQ7XG4gICAgfVxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdDoge1xuICAgICAgcmV0dXJuIENoZWNrYm94TGlzdFF1ZXN0aW9uRmllbGQ7XG4gICAgfVxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveDpcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9Db21ib0JveDoge1xuICAgICAgcmV0dXJuIERyb3Bkb3duUXVlc3Rpb25GaWVsZDtcbiAgICB9XG4gICAgZGVmYXVsdDoge1xuICAgICAgcmV0dXJuIFJlYWN0LkZyYWdtZW50O1xuICAgIH1cbiAgfVxufTtcblxuY29uc3QgRXh0cmFRdWVzdGlvbnNGaWVsZHMgPSAoe1xuICBleHRyYVF1ZXN0aW9ucyxcbiAgY2xhc3NOYW1lID0gXCJleHRyYVF1ZXN0aW9uc1wiLFxuICBxdWVzdGlvbkNsYXNzTmFtZSA9IFwiZXh0cmFRdWVzdGlvblwiLFxuICByZWFkT25seSA9IGZhbHNlLFxuICBhbGxvd0VkaXQgPSB0cnVlLFxuICBmb3JtaWtcbn0pID0+IHtcbiAgY29uc3QgcmVuZGVyUnVsZSA9IChydWxlLCBxdWVzdGlvblNsdWcpID0+IHtcbiAgICBjb25zdCBydWxlUmVzdWx0ID0gY2hlY2tSdWxlKGZvcm1pay52YWx1ZXNbcXVlc3Rpb25TbHVnXSwgcnVsZSk7XG4gICAgY29uc3QgaXNWaXNpYmxlID0gY2hlY2tWaXNpYmlsaXR5KHJ1bGUsIHJ1bGVSZXN1bHQpO1xuXG4gICAgaWYgKGlzVmlzaWJsZSkge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVzZS1iZWZvcmUtZGVmaW5lXG4gICAgICByZXR1cm4gcmVuZGVyUXVlc3Rpb24ocnVsZS5zdWJfcXVlc3Rpb24pO1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9O1xuXG4gIGNvbnN0IHJlbmRlclF1ZXN0aW9uID0gKHEpID0+IHtcbiAgICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocS5uYW1lLCBxLmlkKTtcbiAgICAvLyBkaXNhYmxlIGZpZWxkIGlmIGVkaXQgaXNuJ3QgYWxsb3dlZCBhbmQgdGhlIHF1ZXN0aW9ucyBpcyBhbnN3ZXJlZFxuICAgIGNvbnN0IGlzRGlzYWJsZWQgPVxuICAgICAgKCFhbGxvd0VkaXQgJiYgaXNBbnN3ZXJlZChmb3JtaWsudmFsdWVzW3F1ZXN0aW9uU2x1Z10pKSB8fCByZWFkT25seTtcbiAgICBjb25zdCBRdWVzdGlvbkZpZWxkQ29tcG9uZW50ID0gZ2V0UXVlc3Rpb25GaWVsZENvbXBvbmVudChxLnR5cGUpO1xuXG4gICAgY29uc3QgZm9ybWlrUHJvcHMgPSB7XG4gICAgICB2YWx1ZTogZm9ybWlrLnZhbHVlc1txdWVzdGlvblNsdWddLFxuICAgICAgb25DaGFuZ2U6IGZvcm1pay5oYW5kbGVDaGFuZ2UsXG4gICAgICBvbkJsdXI6IGZvcm1pay5oYW5kbGVCbHVyLFxuICAgICAgZXJyb3I6XG4gICAgICAgIGZvcm1pay50b3VjaGVkW3F1ZXN0aW9uU2x1Z10gJiYgQm9vbGVhbihmb3JtaWsuZXJyb3JzW3F1ZXN0aW9uU2x1Z10pLFxuICAgICAgaGVscGVyVGV4dDogZm9ybWlrLnRvdWNoZWRbcXVlc3Rpb25TbHVnXSAmJiBmb3JtaWsuZXJyb3JzW3F1ZXN0aW9uU2x1Z10sXG4gICAgICBzZXRGaWVsZFZhbHVlOiBmb3JtaWsuc2V0RmllbGRWYWx1ZVxuICAgIH07XG5cbiAgICByZXR1cm4gKFxuICAgICAgPFF1ZXN0aW9uRmllbGRDb21wb25lbnRcbiAgICAgICAga2V5PXtxdWVzdGlvblNsdWd9XG4gICAgICAgIHF1ZXN0aW9uPXtxfVxuICAgICAgICBxdWVzdGlvbkNsYXNzTmFtZT17cXVlc3Rpb25DbGFzc05hbWV9XG4gICAgICAgIGlzRGlzYWJsZWQ9e2lzRGlzYWJsZWR9XG4gICAgICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nICovXG4gICAgICAgIHsuLi5mb3JtaWtQcm9wc31cbiAgICAgID5cbiAgICAgICAge3Euc3ViX3F1ZXN0aW9uX3J1bGVzPy5tYXAoKHJ1bGUpID0+IHJlbmRlclJ1bGUocnVsZSwgcXVlc3Rpb25TbHVnKSl9XG4gICAgICA8L1F1ZXN0aW9uRmllbGRDb21wb25lbnQ+XG4gICAgKTtcbiAgfTtcblxuICByZXR1cm4gPGRpdiBjbGFzc05hbWU9e2NsYXNzTmFtZX0+e2V4dHJhUXVlc3Rpb25zLm1hcChyZW5kZXJRdWVzdGlvbil9PC9kaXY+O1xufTtcblxuRXh0cmFRdWVzdGlvbnNGaWVsZHMucHJvcFR5cGVzID0ge1xuICBleHRyYVF1ZXN0aW9uczogUHJvcFR5cGVzLmFycmF5LmlzUmVxdWlyZWQsXG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgcXVlc3Rpb25DbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGFsbG93RWRpdDogUHJvcFR5cGVzLmJvb2wsXG4gIHJlYWRPbmx5OiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgRXh0cmFRdWVzdGlvbnNGaWVsZHM7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZVNlbGVjdG9yLCBzaGFsbG93RXF1YWwgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIEJveCxcbiAgRm9ybUNvbnRyb2xMYWJlbCxcbiAgQ2FyZEhlYWRlcixcbiAgSWNvbkJ1dHRvbixcbiAgQ29sbGFwc2UsXG4gIENhcmRDb250ZW50LFxuICBSYWRpb0dyb3VwLFxuICBSYWRpb1xufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IEV4cGFuZE1vcmVJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0V4cGFuZE1vcmVcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB7IEZJTFRFUl9WQVJfVElDS0VUX0FTU0lHTkVEIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcblxuY29uc3QgQXNzaWduZWRGaWx0ZXIgPSAoeyBvbkZpbHRlciB9KSA9PiB7XG4gIGNvbnN0IHtcbiAgICBmaWx0ZXI6IHsgRklMVEVSX1ZBUl9USUNLRVRfQVNTSUdORUQ6IGZpbHRlclZhbHVlcyB9XG4gIH0gPSB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlIHx8IHt9LCBzaGFsbG93RXF1YWwpO1xuXG4gIGNvbnN0IFtpc0V4cGFuZGVkLCBzZXRJc0V4cGFuZGVkXSA9IHVzZVN0YXRlKCEhZmlsdGVyVmFsdWVzKTtcblxuICBjb25zdCBhc3NpZ25lZFZhbHVlcyA9IFtcbiAgICB7IHZhbHVlOiBcIk1lXCIsIGxhYmVsOiBcIk1lXCIgfSxcbiAgICB7IHZhbHVlOiBcIlNvbWVvbmVFbHNlXCIsIGxhYmVsOiBcIlNvbWVvbmUgRWxzZVwiIH0sXG4gICAgeyB2YWx1ZTogXCJOb2JvZHlcIiwgbGFiZWw6IFwiTm9ib2R5XCIgfVxuICBdO1xuXG4gIGNvbnN0IGhhbmRsZUZpbHRlckNoYW5nZSA9IChldiwgdmFsdWUpID0+IHtcbiAgICBjb25zdCBuZXdGaWx0ZXIgPSB2YWx1ZTtcbiAgICBvbkZpbHRlcih7XG4gICAgICBbRklMVEVSX1ZBUl9USUNLRVRfQVNTSUdORURdOiBuZXdGaWx0ZXJcbiAgICB9KTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxCb3g+XG4gICAgICA8Q2FyZEhlYWRlclxuICAgICAgICB0aXRsZT1cIkFzc2lnbmVkXCJcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGl0bGVXcmFwcGVyfVxuICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRJc0V4cGFuZGVkKCFpc0V4cGFuZGVkKX1cbiAgICAgICAgYWN0aW9uPXtcbiAgICAgICAgICA8SWNvbkJ1dHRvbiBhcmlhLWxhYmVsPVwiZXhwYW5kXCIgZGlzYWJsZVJpcHBsZT5cbiAgICAgICAgICAgIDxFeHBhbmRNb3JlSWNvblxuICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogaXNFeHBhbmRlZCA/IFwicm90YXRlKDE4MGRlZylcIiA6IFwicm90YXRlKDBkZWcpXCIsXG4gICAgICAgICAgICAgICAgdHJhbnNpdGlvbjogXCJ0cmFuc2Zvcm0gMC4zc1wiXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgfVxuICAgICAgLz5cbiAgICAgIDxDb2xsYXBzZSBpbj17aXNFeHBhbmRlZH0gdGltZW91dD1cImF1dG9cIiB1bm1vdW50T25FeGl0PlxuICAgICAgICA8Q2FyZENvbnRlbnRcbiAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgcHk6IDAsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IFwiIzAwMDAwMDBBXCIsXG4gICAgICAgICAgICBcIiY6bGFzdC1jaGlsZFwiOiB7XG4gICAgICAgICAgICAgIHBiOiAwXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIDxSYWRpb0dyb3VwIHZhbHVlPXtmaWx0ZXJWYWx1ZXN9IG9uQ2hhbmdlPXtoYW5kbGVGaWx0ZXJDaGFuZ2V9PlxuICAgICAgICAgICAge2Fzc2lnbmVkVmFsdWVzLm1hcCgoYXNzaWduZWQpID0+IChcbiAgICAgICAgICAgICAgPEJveFxuICAgICAgICAgICAgICAgIHN4PXt7IHB5OiAxIH19XG4gICAgICAgICAgICAgICAga2V5PXtgZmlsdGVyLWJhZGdlLWZlYXR1cmUtJHthc3NpZ25lZC5sYWJlbH19YH1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxGb3JtQ29udHJvbExhYmVsXG4gICAgICAgICAgICAgICAgICBjb250cm9sPXtcbiAgICAgICAgICAgICAgICAgICAgPFJhZGlvXG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2Fzc2lnbmVkLnZhbHVlfVxuICAgICAgICAgICAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgICAgICAgICAgICBcIiYgLk11aVN2Z0ljb24tcm9vdFwiOiB7IGZvbnRTaXplOiAxOCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgXCImLk11aS1jaGVja2VkXCI6IHsgY29sb3I6IFwiIzIxOTZGM1wiIH1cbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgbGFiZWw9e2Fzc2lnbmVkLmxhYmVsfVxuICAgICAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICAgICAgXCImIC5NdWlGb3JtQ29udHJvbExhYmVsLWxhYmVsXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTogXCIxZW1cIlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgKSl9XG4gICAgICAgICAgPC9SYWRpb0dyb3VwPlxuICAgICAgICA8L0NhcmRDb250ZW50PlxuICAgICAgPC9Db2xsYXBzZT5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbkFzc2lnbmVkRmlsdGVyLnByb3BUeXBlcyA9IHtcbiAgb25GaWx0ZXI6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBBc3NpZ25lZEZpbHRlcjtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VTZWxlY3Rvciwgc2hhbGxvd0VxdWFsIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQge1xuICBCb3gsXG4gIEZvcm1Db250cm9sTGFiZWwsXG4gIENoZWNrYm94LFxuICBDYXJkSGVhZGVyLFxuICBJY29uQnV0dG9uLFxuICBDb2xsYXBzZSxcbiAgQ2FyZENvbnRlbnRcbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBFeHBhbmRNb3JlSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9FeHBhbmRNb3JlXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgeyBGSUxURVJfVkFSX0JBREdFX0ZFQVRVUkUgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuXG5jb25zdCBCYWRnZUZlYXR1cmVGaWx0ZXIgPSAoeyBvbkZpbHRlciB9KSA9PiB7XG4gIGNvbnN0IHtcbiAgICBzdW1taXQ6IHsgYmFkZ2VfZmVhdHVyZXNfdHlwZXMgfSxcbiAgICBmaWx0ZXI6IHsgRklMVEVSX1ZBUl9CQURHRV9GRUFUVVJFOiBmaWx0ZXJWYWx1ZXMgfVxuICB9ID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSB8fCB7fSwgc2hhbGxvd0VxdWFsKTtcblxuICBjb25zdCBbaXNFeHBhbmRlZCwgc2V0SXNFeHBhbmRlZF0gPSB1c2VTdGF0ZSghIWZpbHRlclZhbHVlcy5sZW5ndGgpO1xuXG4gIGNvbnN0IGhhbmRsZUZpbHRlckNoYW5nZSA9ICh2YWx1ZSkgPT4ge1xuICAgIGNvbnN0IG5ld0ZpbHRlcnMgPSBmaWx0ZXJWYWx1ZXM/LmluY2x1ZGVzKHZhbHVlKVxuICAgICAgPyBmaWx0ZXJWYWx1ZXMuZmlsdGVyKChmKSA9PiBmICE9PSB2YWx1ZSlcbiAgICAgIDogWy4uLmZpbHRlclZhbHVlcywgdmFsdWVdO1xuICAgIG9uRmlsdGVyKHtcbiAgICAgIFtGSUxURVJfVkFSX0JBREdFX0ZFQVRVUkVdOiBuZXdGaWx0ZXJzXG4gICAgfSk7XG4gIH07XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRJc0V4cGFuZGVkKCEhZmlsdGVyVmFsdWVzLmxlbmd0aCk7XG4gIH0sIFtmaWx0ZXJWYWx1ZXNdKTtcblxuICByZXR1cm4gKFxuICAgIDxCb3g+XG4gICAgICA8Q2FyZEhlYWRlclxuICAgICAgICB0aXRsZT1cIkJhZGdlIEZlYXR1cmVcIlxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aXRsZVdyYXBwZXJ9XG4gICAgICAgIG9uQ2xpY2s9eygpID0+IHNldElzRXhwYW5kZWQoIWlzRXhwYW5kZWQpfVxuICAgICAgICBhY3Rpb249e1xuICAgICAgICAgIDxJY29uQnV0dG9uIGFyaWEtbGFiZWw9XCJleHBhbmRcIiBkaXNhYmxlUmlwcGxlPlxuICAgICAgICAgICAgPEV4cGFuZE1vcmVJY29uXG4gICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiBpc0V4cGFuZGVkID8gXCJyb3RhdGUoMTgwZGVnKVwiIDogXCJyb3RhdGUoMGRlZylcIixcbiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uOiBcInRyYW5zZm9ybSAwLjNzXCJcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICB9XG4gICAgICAvPlxuICAgICAgPENvbGxhcHNlIGluPXtpc0V4cGFuZGVkfSB0aW1lb3V0PVwiYXV0b1wiIHVubW91bnRPbkV4aXQ+XG4gICAgICAgIDxDYXJkQ29udGVudFxuICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICBweTogMCxcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogXCIjMDAwMDAwMEFcIixcbiAgICAgICAgICAgIFwiJjpsYXN0LWNoaWxkXCI6IHtcbiAgICAgICAgICAgICAgcGI6IDBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9fVxuICAgICAgICA+XG4gICAgICAgICAge2JhZGdlX2ZlYXR1cmVzX3R5cGVzLm1hcCgoYmYpID0+IChcbiAgICAgICAgICAgIDxCb3ggc3g9e3sgcHk6IDEgfX0ga2V5PXtgZmlsdGVyLWJhZGdlLWZlYXR1cmUtJHtiZi5uYW1lfX1gfT5cbiAgICAgICAgICAgICAgPEZvcm1Db250cm9sTGFiZWxcbiAgICAgICAgICAgICAgICBjb250cm9sPXtcbiAgICAgICAgICAgICAgICAgIDxDaGVja2JveFxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KCkgPT4gaGFuZGxlRmlsdGVyQ2hhbmdlKGJmLmlkKX1cbiAgICAgICAgICAgICAgICAgICAgY2hlY2tlZD17ZmlsdGVyVmFsdWVzLmluY2x1ZGVzKGJmLmlkKX1cbiAgICAgICAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICAgICAgICBcIiYgLk11aVN2Z0ljb24tcm9vdFwiOiB7IGZvbnRTaXplOiAxOCB9LFxuICAgICAgICAgICAgICAgICAgICAgIFwiJi5NdWktY2hlY2tlZFwiOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogXCIjMjE5NkYzXCJcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBsYWJlbD17YmYubmFtZX1cbiAgICAgICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICAgICAgXCImIC5NdWlGb3JtQ29udHJvbExhYmVsLWxhYmVsXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgZm9udFNpemU6IFwiMWVtXCJcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvQ2FyZENvbnRlbnQ+XG4gICAgICA8L0NvbGxhcHNlPlxuICAgIDwvQm94PlxuICApO1xufTtcblxuQmFkZ2VGZWF0dXJlRmlsdGVyLnByb3BUeXBlcyA9IHtcbiAgb25GaWx0ZXI6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBCYWRnZUZlYXR1cmVGaWx0ZXI7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUsIHVzZVJlZiwgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgU3RhY2sgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvU3RhY2tcIjtcbmltcG9ydCBGaWx0ZXJMaXN0SWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9GaWx0ZXJMaXN0XCI7XG5pbXBvcnQge1xuICBCYWRnZSxcbiAgQm94LFxuICBCdXR0b24sXG4gIENhcmQsXG4gIENhcmRIZWFkZXIsXG4gIERpdmlkZXIsXG4gIFBhcGVyXG59IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBjb25uZWN0IH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgQmFkZ2VGZWF0dXJlRmlsdGVyIGZyb20gXCIuL0JhZGdlRmVhdHVyZUZpbHRlclwiO1xuaW1wb3J0IHtcbiAgRklMVEVSX1ZBUl9CQURHRV9GRUFUVVJFLFxuICBGSUxURVJfVkFSX0ZSRUVfUEFJRCxcbiAgRklMVEVSX1ZBUl9PV05FUl9TVEFUVVMsXG4gIEZJTFRFUl9WQVJfUFJPTU9DT0RFLFxuICBGSUxURVJfVkFSX1RJQ0tFVF9BU1NJR05FRCxcbiAgRklMVEVSX1ZBUl9USUNLRVRfVFlQRVxufSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuaW1wb3J0IFRpY2tldFR5cGVGaWx0ZXIgZnJvbSBcIi4vVGlja2V0VHlwZUZpbHRlclwiO1xuaW1wb3J0IEFzc2lnbmVkRmlsdGVyIGZyb20gXCIuL0Fzc2lnbmVkRmlsdGVyXCI7XG5pbXBvcnQgU3RhdHVzRmlsdGVyIGZyb20gXCIuL1N0YXR1c0ZpbHRlclwiO1xuaW1wb3J0IEZyZWVQYWlkRmlsdGVyIGZyb20gXCIuL0ZyZWVQYWlkRmlsdGVyXCI7XG5pbXBvcnQgUHJvbW9Db2RlRmlsdGVyIGZyb20gXCIuL1Byb21vQ29kZUZpbHRlclwiO1xuXG5jb25zdCBGaWx0ZXIgPSAoeyBvbkZpbHRlciwgb25SZXNldCwgZmlsdGVyIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBbc2hvd0ZpbHRlckxpc3QsIHNldFNob3dGaWx0ZXJMaXN0XSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW3Nob3dEYXRlcGlja2VyLCBzZXRTaG93RGF0ZXBpY2tlcl0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtmaWx0ZXJOdW1BY3RpdmUsIHNldEZpbHRlck51bUFjdGl2ZV0gPSB1c2VTdGF0ZShudWxsKTtcbiAgY29uc3QgZmlsdGVyUmVmID0gdXNlUmVmKG51bGwpO1xuICBjb25zdCBoYW5kbGVGaWx0ZXJDbGlja091dHNpZGUgPSAoZXZlbnQpID0+IHtcbiAgICBpZiAoZmlsdGVyUmVmLmN1cnJlbnQgJiYgIWZpbHRlclJlZi5jdXJyZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpIHtcbiAgICAgIGlmIChzaG93RmlsdGVyTGlzdCkge1xuICAgICAgICBzZXRTaG93RmlsdGVyTGlzdChmYWxzZSk7XG4gICAgICAgIHNldFNob3dEYXRlcGlja2VyKGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGhhbmRsZUZpbHRlckNsaWNrT3V0c2lkZSwgZmFsc2UpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgaGFuZGxlRmlsdGVyQ2xpY2tPdXRzaWRlLCBmYWxzZSk7XG4gICAgfTtcbiAgfSwgW3Nob3dGaWx0ZXJMaXN0XSk7XG5cbiAgY29uc3QgTUFSR0lOX1JJR0hUX1dJVEhfQkFER0UgPSAxO1xuICBjb25zdCBBRERfRklMVEVSX05VTUJFUiA9IDE7XG5cbiAgY29uc3QgY2FsY3VsYXRlQWN0aXZlRmlsdGVycyA9IChmaWx0ZXJzKSA9PiB7XG4gICAgbGV0IGNvdW50ID0gMDtcbiAgICBPYmplY3QuZW50cmllcyhmaWx0ZXJzKS5mb3JFYWNoKChbLCB2YWx1ZV0pID0+IHtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICBjb3VudCArPSB2YWx1ZS5sZW5ndGg7XG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiAmJiB2YWx1ZS50cmltKCkgIT09IFwiXCIpIHtcbiAgICAgICAgY291bnQgKz0gQUREX0ZJTFRFUl9OVU1CRVI7XG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJudW1iZXJcIiAmJiB2YWx1ZSA+IDApIHtcbiAgICAgICAgY291bnQgKz0gQUREX0ZJTFRFUl9OVU1CRVI7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGNvdW50O1xuICB9O1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0RmlsdGVyTnVtQWN0aXZlKGNhbGN1bGF0ZUFjdGl2ZUZpbHRlcnMoZmlsdGVyKSk7XG4gIH0sIFtmaWx0ZXJdKTtcblxuICBjb25zdCB0b2dnbGUgPSAoKSA9PiB7XG4gICAgc2V0U2hvd0ZpbHRlckxpc3QoIXNob3dGaWx0ZXJMaXN0KTtcbiAgICBzZXRTaG93RGF0ZXBpY2tlcighc2hvd0RhdGVwaWNrZXIpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUZpbHRlclJlc2V0ID0gKCkgPT4ge1xuICAgIHNldEZpbHRlck51bUFjdGl2ZSgwKTtcbiAgICBvblJlc2V0KCk7XG4gICAgdG9nZ2xlKCk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmZpbHRlckNvbnRhaW5lcn0gcmVmPXtmaWx0ZXJSZWZ9PlxuICAgICAgPFN0YWNrXG4gICAgICAgIGFsaWduSXRlbXM9XCJjZW50ZXJcIlxuICAgICAgICBkaXJlY3Rpb249XCJyb3dcIlxuICAgICAgICBzeD17eyBwdDogMiwgcGI6IDIgfX1cbiAgICAgICAgb25DbGljaz17dG9nZ2xlfVxuICAgICAgPlxuICAgICAgICA8QmFkZ2VcbiAgICAgICAgICBiYWRnZUNvbnRlbnQ9e2ZpbHRlck51bUFjdGl2ZX1cbiAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgIHN4PXt7IG1yOiBmaWx0ZXJOdW1BY3RpdmUgPiAwID8gTUFSR0lOX1JJR0hUX1dJVEhfQkFER0UgOiBcIlwiIH19XG4gICAgICAgID5cbiAgICAgICAgICA8RmlsdGVyTGlzdEljb24gZm9udFNpemU9XCJsYXJnZVwiIGNsYXNzTmFtZT17c3R5bGVzLmZpbHRlckljb259IC8+XG4gICAgICAgIDwvQmFkZ2U+XG4gICAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzLmZpbHRlckxhYmVsfT57dChcImZpbHRlci5maWx0ZXJcIil9PC9zcGFuPlxuICAgICAgPC9TdGFjaz5cbiAgICAgIDxCb3hcbiAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuZmlsdGVyTGlzdENvbnRhaW5lcn0gJHtzdHlsZXMuY29udGFpbmVyfSAke1xuICAgICAgICAgIHNob3dGaWx0ZXJMaXN0ID8gc3R5bGVzLnNob3dGaWx0ZXJMaXN0IDogXCJcIlxuICAgICAgICB9YH1cbiAgICAgID5cbiAgICAgICAgPFBhcGVyIGVsZXZhdGlvbj17OH0gY2xhc3NOYW1lPXtzdHlsZXMuZmlsdGVyQ2hlY2tib3hDb250YWluZXJ9PlxuICAgICAgICAgIDxDYXJkIHZhcmlhbnQ9XCJvdXRsaW5lZFwiPlxuICAgICAgICAgICAgPENhcmRIZWFkZXJcbiAgICAgICAgICAgICAgdGl0bGU9XCJGaWx0ZXJzXCJcbiAgICAgICAgICAgICAgYWN0aW9uPXtcbiAgICAgICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAgICBkaXNhYmxlUmlwcGxlXG4gICAgICAgICAgICAgICAgICB2YXJpYW50PVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVGaWx0ZXJSZXNldH1cbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNsZWFuQnV0dG9ufVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHt0KFwiZmlsdGVyLmNsZWFyXCIpfVxuICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPERpdmlkZXIgLz5cbiAgICAgICAgICAgIDxCYWRnZUZlYXR1cmVGaWx0ZXJcbiAgICAgICAgICAgICAgdmFsdWVzPXtmaWx0ZXJbRklMVEVSX1ZBUl9CQURHRV9GRUFUVVJFXX1cbiAgICAgICAgICAgICAgb25GaWx0ZXI9eyhuZXdGaWx0ZXIpID0+IG9uRmlsdGVyKG5ld0ZpbHRlcil9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPEFzc2lnbmVkRmlsdGVyXG4gICAgICAgICAgICAgIHZhbHVlcz17ZmlsdGVyW0ZJTFRFUl9WQVJfVElDS0VUX0FTU0lHTkVEXX1cbiAgICAgICAgICAgICAgb25GaWx0ZXI9eyhuZXdGaWx0ZXIpID0+IG9uRmlsdGVyKG5ld0ZpbHRlcil9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPFN0YXR1c0ZpbHRlclxuICAgICAgICAgICAgICB2YWx1ZXM9e2ZpbHRlcltGSUxURVJfVkFSX09XTkVSX1NUQVRVU119XG4gICAgICAgICAgICAgIG9uRmlsdGVyPXsobmV3RmlsdGVyKSA9PiBvbkZpbHRlcihuZXdGaWx0ZXIpfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxUaWNrZXRUeXBlRmlsdGVyXG4gICAgICAgICAgICAgIHZhbHVlcz17ZmlsdGVyW0ZJTFRFUl9WQVJfVElDS0VUX1RZUEVdfVxuICAgICAgICAgICAgICBvbkZpbHRlcj17KG5ld0ZpbHRlcikgPT4gb25GaWx0ZXIobmV3RmlsdGVyKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8UHJvbW9Db2RlRmlsdGVyXG4gICAgICAgICAgICAgIHZhbHVlcz17ZmlsdGVyW0ZJTFRFUl9WQVJfUFJPTU9DT0RFXX1cbiAgICAgICAgICAgICAgb25GaWx0ZXI9eyhuZXdGaWx0ZXIpID0+IG9uRmlsdGVyKG5ld0ZpbHRlcil9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPEZyZWVQYWlkRmlsdGVyXG4gICAgICAgICAgICAgIHZhbHVlcz17ZmlsdGVyW0ZJTFRFUl9WQVJfRlJFRV9QQUlEXX1cbiAgICAgICAgICAgICAgb25GaWx0ZXI9eyhuZXdGaWx0ZXIpID0+IG9uRmlsdGVyKG5ld0ZpbHRlcil9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvQ2FyZD5cbiAgICAgICAgPC9QYXBlcj5cbiAgICAgIDwvQm94PlxuICAgIDwvQm94PlxuICApO1xufTtcblxuRmlsdGVyLnByb3BUeXBlcyA9IHtcbiAgb25GaWx0ZXI6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5jb25zdCBtYXBTdGF0ZVRvUHJvcHMgPSAoeyB3aWRnZXRTdGF0ZSB9KSA9PiAoe1xuICBzb3J0OiB3aWRnZXRTdGF0ZS5zb3J0LFxuICBmaWx0ZXI6IHdpZGdldFN0YXRlLmZpbHRlclxufSk7XG5cbmV4cG9ydCBkZWZhdWx0IGNvbm5lY3QobWFwU3RhdGVUb1Byb3BzLCB7fSkoRmlsdGVyKTtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlU2VsZWN0b3IsIHNoYWxsb3dFcXVhbCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHtcbiAgQm94LFxuICBGb3JtQ29udHJvbExhYmVsLFxuICBDYXJkSGVhZGVyLFxuICBJY29uQnV0dG9uLFxuICBDb2xsYXBzZSxcbiAgQ2FyZENvbnRlbnQsXG4gIFJhZGlvR3JvdXAsXG4gIFJhZGlvXG59IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgRXhwYW5kTW9yZUljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRXhwYW5kTW9yZVwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHsgRklMVEVSX1ZBUl9GUkVFX1BBSUQgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuXG5jb25zdCBGcmVlUGFpZEZpbHRlciA9ICh7IG9uRmlsdGVyIH0pID0+IHtcbiAgY29uc3Qge1xuICAgIGZpbHRlcjogeyBGSUxURVJfVkFSX0ZSRUVfUEFJRDogZmlsdGVyVmFsdWVzIH1cbiAgfSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30sIHNoYWxsb3dFcXVhbCk7XG5cbiAgY29uc3QgW2lzRXhwYW5kZWQsIHNldElzRXhwYW5kZWRdID0gdXNlU3RhdGUoISFmaWx0ZXJWYWx1ZXMpO1xuXG4gIGNvbnN0IGFzc2lnbmVkVmFsdWVzID0gW1xuICAgIHsgdmFsdWU6IFwiRnJlZVwiLCBsYWJlbDogXCJGcmVlXCIgfSxcbiAgICB7IHZhbHVlOiBcIlBhaWRcIiwgbGFiZWw6IFwiUGFpZFwiIH1cbiAgXTtcblxuICBjb25zdCBoYW5kbGVGaWx0ZXJDaGFuZ2UgPSAoZXYsIHZhbHVlKSA9PiB7XG4gICAgY29uc3QgbmV3RmlsdGVyID0gdmFsdWU7XG4gICAgb25GaWx0ZXIoe1xuICAgICAgW0ZJTFRFUl9WQVJfRlJFRV9QQUlEXTogbmV3RmlsdGVyXG4gICAgfSk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94PlxuICAgICAgPENhcmRIZWFkZXJcbiAgICAgICAgdGl0bGU9XCJGcmVlIC8gUGFpZFwiXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpdGxlV3JhcHBlcn1cbiAgICAgICAgb25DbGljaz17KCkgPT4gc2V0SXNFeHBhbmRlZCghaXNFeHBhbmRlZCl9XG4gICAgICAgIGFjdGlvbj17XG4gICAgICAgICAgPEljb25CdXR0b24gYXJpYS1sYWJlbD1cImV4cGFuZFwiIGRpc2FibGVSaXBwbGU+XG4gICAgICAgICAgICA8RXhwYW5kTW9yZUljb25cbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IGlzRXhwYW5kZWQgPyBcInJvdGF0ZSgxODBkZWcpXCIgOiBcInJvdGF0ZSgwZGVnKVwiLFxuICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IFwidHJhbnNmb3JtIDAuM3NcIlxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgIH1cbiAgICAgIC8+XG4gICAgICA8Q29sbGFwc2UgaW49e2lzRXhwYW5kZWR9IHRpbWVvdXQ9XCJhdXRvXCIgdW5tb3VudE9uRXhpdD5cbiAgICAgICAgPENhcmRDb250ZW50XG4gICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgIHB5OiAwLFxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBcIiMwMDAwMDAwQVwiLFxuICAgICAgICAgICAgXCImOmxhc3QtY2hpbGRcIjoge1xuICAgICAgICAgICAgICBwYjogMFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICA8UmFkaW9Hcm91cCB2YWx1ZT17ZmlsdGVyVmFsdWVzfSBvbkNoYW5nZT17aGFuZGxlRmlsdGVyQ2hhbmdlfT5cbiAgICAgICAgICAgIHthc3NpZ25lZFZhbHVlcy5tYXAoKGFzc2lnbmVkKSA9PiAoXG4gICAgICAgICAgICAgIDxCb3hcbiAgICAgICAgICAgICAgICBzeD17eyBweTogMSB9fVxuICAgICAgICAgICAgICAgIGtleT17YGZpbHRlci1iYWRnZS1mZWF0dXJlLSR7YXNzaWduZWQubGFiZWx9fWB9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8Rm9ybUNvbnRyb2xMYWJlbFxuICAgICAgICAgICAgICAgICAgY29udHJvbD17XG4gICAgICAgICAgICAgICAgICAgIDxSYWRpb1xuICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXthc3NpZ25lZC52YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICAgICAgICAgICAgXCImIC5NdWlTdmdJY29uLXJvb3RcIjogeyBmb250U2l6ZTogMTggfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiJi5NdWktY2hlY2tlZFwiOiB7IGNvbG9yOiBcIiMyMTk2RjNcIiB9XG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIGxhYmVsPXthc3NpZ25lZC5sYWJlbH1cbiAgICAgICAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgICAgICAgIFwiJiAuTXVpRm9ybUNvbnRyb2xMYWJlbC1sYWJlbFwiOiB7XG4gICAgICAgICAgICAgICAgICAgICAgZm9udFNpemU6IFwiMWVtXCJcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgICkpfVxuICAgICAgICAgIDwvUmFkaW9Hcm91cD5cbiAgICAgICAgPC9DYXJkQ29udGVudD5cbiAgICAgIDwvQ29sbGFwc2U+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5GcmVlUGFpZEZpbHRlci5wcm9wVHlwZXMgPSB7XG4gIG9uRmlsdGVyOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgRnJlZVBhaWRGaWx0ZXI7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VTZWxlY3Rvciwgc2hhbGxvd0VxdWFsIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQge1xuICBCb3gsXG4gIENhcmRIZWFkZXIsXG4gIEljb25CdXR0b24sXG4gIENvbGxhcHNlLFxuICBDYXJkQ29udGVudCxcbiAgVGV4dEZpZWxkXG59IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgRXhwYW5kTW9yZUljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRXhwYW5kTW9yZVwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHsgRklMVEVSX1ZBUl9QUk9NT0NPREUgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuXG5jb25zdCBQcm9tb0NvZGVGaWx0ZXIgPSAoeyBvbkZpbHRlciB9KSA9PiB7XG4gIGNvbnN0IHtcbiAgICBmaWx0ZXI6IHsgRklMVEVSX1ZBUl9QUk9NT0NPREU6IGZpbHRlclZhbHVlcyB9XG4gIH0gPSB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlIHx8IHt9LCBzaGFsbG93RXF1YWwpO1xuXG4gIGNvbnN0IFtpc0V4cGFuZGVkLCBzZXRJc0V4cGFuZGVkXSA9IHVzZVN0YXRlKCEhZmlsdGVyVmFsdWVzKTtcbiAgY29uc3QgW3Byb21vQ29kZSwgc2V0UHJvbW9Db2RlXSA9IHVzZVN0YXRlKGZpbHRlclZhbHVlcyB8fCBcIlwiKTtcblxuICBjb25zdCBkZWJvdW5jZVRpbWVyID0gdXNlUmVmKG51bGwpO1xuICBjb25zdCBERUJPVU5DRV9WQUxVRSA9IDUwMDtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHNldFByb21vQ29kZShmaWx0ZXJWYWx1ZXMgfHwgXCJcIik7XG4gICAgc2V0SXNFeHBhbmRlZCghIWZpbHRlclZhbHVlcyk7XG4gIH0sIFtmaWx0ZXJWYWx1ZXNdKTtcblxuICBjb25zdCBoYW5kbGVGaWx0ZXJDaGFuZ2UgPSAoZXYpID0+IHtcbiAgICBjb25zdCBuZXdQcm9tb0NvZGUgPSBldi50YXJnZXQudmFsdWU7XG4gICAgLy8gdXBkYXRlIGxvY2FsIHN0YXRlIHNvIHRoZSBpbnB1dCByZWZsZWN0cyBjaGFuZ2VzXG4gICAgc2V0UHJvbW9Db2RlKG5ld1Byb21vQ29kZSk7XG5cbiAgICAvLyByZW1vdmUgY3VycmVudCBkZWJvdW5jZVxuICAgIGlmIChkZWJvdW5jZVRpbWVyLmN1cnJlbnQpIHtcbiAgICAgIGNsZWFyVGltZW91dChkZWJvdW5jZVRpbWVyLmN1cnJlbnQpO1xuICAgIH1cblxuICAgIC8vIGRlYm91bmNlIHNldCB0byA1MDAgbXNcbiAgICBkZWJvdW5jZVRpbWVyLmN1cnJlbnQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIG9uRmlsdGVyKHtcbiAgICAgICAgW0ZJTFRFUl9WQVJfUFJPTU9DT0RFXTogbmV3UHJvbW9Db2RlXG4gICAgICB9KTtcbiAgICB9LCBERUJPVU5DRV9WQUxVRSk7XG4gIH07XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAvLyByZW1vdmUgZGVib3VuY2Ugb24gcmVsb2FkXG4gICAgaWYgKGRlYm91bmNlVGltZXIuY3VycmVudCkge1xuICAgICAgY2xlYXJUaW1lb3V0KGRlYm91bmNlVGltZXIuY3VycmVudCk7XG4gICAgfVxuICB9LCBbXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94PlxuICAgICAgPENhcmRIZWFkZXJcbiAgICAgICAgdGl0bGU9XCJQcm9tbyBDb2RlXCJcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGl0bGVXcmFwcGVyfVxuICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRJc0V4cGFuZGVkKCFpc0V4cGFuZGVkKX1cbiAgICAgICAgYWN0aW9uPXtcbiAgICAgICAgICA8SWNvbkJ1dHRvbiBhcmlhLWxhYmVsPVwiZXhwYW5kXCIgZGlzYWJsZVJpcHBsZT5cbiAgICAgICAgICAgIDxFeHBhbmRNb3JlSWNvblxuICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogaXNFeHBhbmRlZCA/IFwicm90YXRlKDE4MGRlZylcIiA6IFwicm90YXRlKDBkZWcpXCIsXG4gICAgICAgICAgICAgICAgdHJhbnNpdGlvbjogXCJ0cmFuc2Zvcm0gMC4zc1wiXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgfVxuICAgICAgLz5cbiAgICAgIDxDb2xsYXBzZSBpbj17aXNFeHBhbmRlZH0gdGltZW91dD1cImF1dG9cIiB1bm1vdW50T25FeGl0PlxuICAgICAgICA8Q2FyZENvbnRlbnRcbiAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBcIiMwMDAwMDAwQVwiLFxuICAgICAgICAgICAgXCImOmxhc3QtY2hpbGRcIjoge1xuICAgICAgICAgICAgICBweTogMVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICA8VGV4dEZpZWxkXG4gICAgICAgICAgICB2YXJpYW50PVwib3V0bGluZWRcIlxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJFbnRlciBwcm9tbyBjb2RlXCJcbiAgICAgICAgICAgIHZhbHVlPXtwcm9tb0NvZGV9XG4gICAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlRmlsdGVyQ2hhbmdlfVxuICAgICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9DYXJkQ29udGVudD5cbiAgICAgIDwvQ29sbGFwc2U+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5Qcm9tb0NvZGVGaWx0ZXIucHJvcFR5cGVzID0ge1xuICBvbkZpbHRlcjogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFByb21vQ29kZUZpbHRlcjtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgc3R5bGVkIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWwvc3R5bGVzXCI7XG5pbXBvcnQgU2VhcmNoSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9TZWFyY2hcIjtcbmltcG9ydCBDbG9zZUljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ2xvc2VcIjtcbmltcG9ydCBJbnB1dEJhc2UgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvSW5wdXRCYXNlXCI7XG5pbXBvcnQgeyBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVIgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuXG5jb25zdCBTZWFyY2hDb250YWluZXIgPSBzdHlsZWQoXCJkaXZcIikoKCkgPT4gKHtcbiAgcG9zaXRpb246IFwicmVsYXRpdmVcIixcbiAgbWFyZ2luUmlnaHQ6IFwiMFwiLFxuICBtYXJnaW5MZWZ0OiBcIjBcIixcbiAgd2lkdGg6IFwiMTAwJVwiLFxuICBkaXNwbGF5OiBcImJsb2NrXCJcbn0pKTtcbmNvbnN0IFNlYXJjaEljb25XcmFwcGVyID0gc3R5bGVkKFwiZGl2XCIpKCgpID0+ICh7XG4gIGhlaWdodDogXCIxMDAlXCIsXG4gIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gIGRpc3BsYXk6IFwiZmxleFwiLFxuICBhbGlnbkl0ZW1zOiBcImNlbnRlclwiLFxuICBqdXN0aWZ5Q29udGVudDogXCJjZW50ZXJcIlxufSkpO1xuY29uc3QgU3R5bGVkSW5wdXRCYXNlID0gc3R5bGVkKElucHV0QmFzZSkoKCkgPT4gKHtcbiAgY29sb3I6IFwiaW5oZXJpdFwiLFxuICBib3JkZXJCb3R0b206IFwiMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC40MilcIixcbiAgcGFkZGluZ0xlZnQ6IFwiMjVweFwiLFxuICBwYWRkaW5nUmlnaHQ6IFwiMjVweFwiLFxuICBmb250U2l6ZTogXCIxZW1cIlxufSkpO1xuY29uc3QgQ2xvc2VJY29uV3JhcHBlciA9IHN0eWxlZChDbG9zZUljb24pKCgpID0+ICh7XG4gIHBhZGRpbmc6IFwiMnB4XCIsXG4gIGZvbnRTaXplOiBcIjEuNWVtXCIsXG4gIGhlaWdodDogXCIxMDAlXCIsXG4gIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gIHRvcDogXCIwXCIsXG4gIHJpZ2h0OiBcIjBcIixcbiAgZGlzcGxheTogXCJmbGV4XCIsXG4gIGFsaWduSXRlbXM6IFwiY2VudGVyXCIsXG4gIGp1c3RpZnlDb250ZW50OiBcImNlbnRlclwiLFxuICBjdXJzb3I6IFwicG9pbnRlclwiLFxuICB6SW5kZXg6IFwiMTAwMFwiXG59KSk7XG5cbmNvbnN0IFNlYXJjaCA9ICh7IG9uU2VhcmNoIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBbc2hvd0Nsb3NlLCBzZXRTaG93Q2xvc2VdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbc2VhcmNoVmFsdWUsIHNldFNlYXJjaFZhbHVlXSA9IHVzZVN0YXRlKFwiXCIpO1xuICBjb25zdCBvbktleURvd24gPSAoZXZlbnQpID0+IHtcbiAgICBjb25zdCB7XG4gICAgICBrZXksXG4gICAgICBuYXRpdmVFdmVudDoge1xuICAgICAgICB0YXJnZXQ6IHsgdmFsdWUgfVxuICAgICAgfVxuICAgIH0gPSBldmVudDtcbiAgICBpZiAoa2V5ID09PSBcIkVudGVyXCIpIHtcbiAgICAgIG9uU2VhcmNoKHtcbiAgICAgICAgW0ZJTFRFUl9WQVJfT1JERVJfTlVNQkVSXTogdmFsdWVcbiAgICAgIH0pO1xuICAgICAgc2V0U2hvd0Nsb3NlKHRydWUpO1xuICAgIH1cbiAgfTtcbiAgY29uc3QgcmVzZXRTZWFyY2ggPSAoKSA9PiB7XG4gICAgc2V0U2VhcmNoVmFsdWUoXCJcIik7XG4gICAgb25TZWFyY2goe1xuICAgICAgW0ZJTFRFUl9WQVJfT1JERVJfTlVNQkVSXTogXCJcIlxuICAgIH0pO1xuICAgIHNldFNob3dDbG9zZSh0cnVlKTtcbiAgICBzZXRTaG93Q2xvc2UoZmFsc2UpO1xuICB9O1xuICByZXR1cm4gKFxuICAgIDxCb3g+XG4gICAgICA8U2VhcmNoQ29udGFpbmVyPlxuICAgICAgICB7c2hvd0Nsb3NlICYmIChcbiAgICAgICAgICA8Q2xvc2VJY29uV3JhcHBlciBvbkNsaWNrPXtyZXNldFNlYXJjaH0+XG4gICAgICAgICAgICA8Q2xvc2VJY29uIC8+XG4gICAgICAgICAgPC9DbG9zZUljb25XcmFwcGVyPlxuICAgICAgICApfVxuICAgICAgICA8U2VhcmNoSWNvbldyYXBwZXI+XG4gICAgICAgICAgPFNlYXJjaEljb24gLz5cbiAgICAgICAgPC9TZWFyY2hJY29uV3JhcHBlcj5cbiAgICAgICAgPFN0eWxlZElucHV0QmFzZVxuICAgICAgICAgIHBsYWNlaG9sZGVyPXt0KFwib3JkZXJfc2VhcmNoLm9yZGVyX251bWJlclwiKX1cbiAgICAgICAgICBpbnB1dFByb3BzPXt7IFwiYXJpYS1sYWJlbFwiOiBcInNlYXJjaFwiIH19XG4gICAgICAgICAgdmFsdWU9e3NlYXJjaFZhbHVlfVxuICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gc2V0U2VhcmNoVmFsdWUoZS50YXJnZXQudmFsdWUpfVxuICAgICAgICAgIG9uS2V5RG93bj17b25LZXlEb3dufVxuICAgICAgICAvPlxuICAgICAgPC9TZWFyY2hDb250YWluZXI+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5TZWFyY2gucHJvcFR5cGVzID0ge1xuICBvblNlYXJjaDogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFNlYXJjaDtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSwgdXNlUmVmLCB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBTdGFjayBmcm9tIFwiQG11aS9tYXRlcmlhbC9TdGFja1wiO1xuaW1wb3J0IHsgQm94LCBCdXR0b24sIFBhcGVyIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBJbXBvcnRFeHBvcnRJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0ltcG9ydEV4cG9ydFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBTb3J0ID0gKHsgb25Tb3J0IH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBbc2hvd1NvcnQsIHNldFNob3dTb3J0XSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3Qgc29ydFJlZiA9IHVzZVJlZihudWxsKTtcbiAgY29uc3QgaGFuZGxlU29ydENsaWNrT3V0c2lkZSA9IChldmVudCkgPT4ge1xuICAgIGlmIChzb3J0UmVmLmN1cnJlbnQgJiYgIXNvcnRSZWYuY3VycmVudC5jb250YWlucyhldmVudC50YXJnZXQpKSB7XG4gICAgICBzZXRTaG93U29ydChmYWxzZSk7XG4gICAgfVxuICB9O1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBoYW5kbGVTb3J0Q2xpY2tPdXRzaWRlLCBmYWxzZSk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBoYW5kbGVTb3J0Q2xpY2tPdXRzaWRlLCBmYWxzZSk7XG4gICAgfTtcbiAgfSwgW3Nob3dTb3J0XSk7XG5cbiAgY29uc3QgdG9nZ2xlID0gKCkgPT4ge1xuICAgIHNldFNob3dTb3J0KCFzaG93U29ydCk7XG4gIH07XG4gIHJldHVybiAoXG4gICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5zb3J0Q29udGFpbmVyfSBvbkNsaWNrPXt0b2dnbGV9PlxuICAgICAgPFN0YWNrXG4gICAgICAgIHJlZj17c29ydFJlZn1cbiAgICAgICAgYWxpZ25JdGVtcz1cImNlbnRlclwiXG4gICAgICAgIGRpcmVjdGlvbj1cInJvd1wiXG4gICAgICAgIHN4PXt7IHB0OiAyLCBwYjogMiB9fVxuICAgICAgPlxuICAgICAgICA8SW1wb3J0RXhwb3J0SWNvbiBmb250U2l6ZT1cImxhcmdlXCIgY2xhc3NOYW1lPXtzdHlsZXMuc29ydEljb259IC8+XG4gICAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzLnNvcnRMYWJlbH0+e3QoXCJzb3J0LnNvcnRcIil9PC9zcGFuPlxuICAgICAgPC9TdGFjaz5cbiAgICAgIHtzaG93U29ydCAmJiAoXG4gICAgICAgIDxQYXBlclxuICAgICAgICAgIGVsZXZhdGlvbj17OH1cbiAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5zb3J0TGlzdENvbnRhaW5lcn0gJHtzdHlsZXMuY29udGFpbmVyfWB9XG4gICAgICAgID5cbiAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICBkaXNhYmxlUmlwcGxlXG4gICAgICAgICAgICB2YXJpYW50PVwidGV4dFwiXG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5sYWJlbH1cbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG9uU29ydCh7IGRpcmVjdGlvbjogXCJkZXNjXCIsIG5hbWU6IFwiY3JlYXRlZFwiIH0pfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt0KFwic29ydC5uZXdfZmlyc3RcIil9XG4gICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgZGlzYWJsZVJpcHBsZVxuICAgICAgICAgICAgdmFyaWFudD1cInRleHRcIlxuICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMubGFiZWx9XG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBvblNvcnQoeyBkaXJlY3Rpb246IFwiYXNjXCIsIG5hbWU6IFwiY3JlYXRlZFwiIH0pfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt0KFwic29ydC5vbGRfZmlyc3RcIil9XG4gICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgIDwvUGFwZXI+XG4gICAgICApfVxuICAgIDwvQm94PlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgU29ydDtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlU2VsZWN0b3IsIHNoYWxsb3dFcXVhbCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHtcbiAgQm94LFxuICBGb3JtQ29udHJvbExhYmVsLFxuICBDYXJkSGVhZGVyLFxuICBJY29uQnV0dG9uLFxuICBDb2xsYXBzZSxcbiAgQ2FyZENvbnRlbnQsXG4gIFJhZGlvR3JvdXAsXG4gIFJhZGlvXG59IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgRXhwYW5kTW9yZUljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRXhwYW5kTW9yZVwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHsgRklMVEVSX1ZBUl9PV05FUl9TVEFUVVMgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuXG5jb25zdCBTdGF0dXNGaWx0ZXIgPSAoeyBvbkZpbHRlciB9KSA9PiB7XG4gIGNvbnN0IHtcbiAgICBmaWx0ZXI6IHsgRklMVEVSX1ZBUl9PV05FUl9TVEFUVVM6IGZpbHRlclZhbHVlcyB9XG4gIH0gPSB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlIHx8IHt9LCBzaGFsbG93RXF1YWwpO1xuXG4gIGNvbnN0IFtpc0V4cGFuZGVkLCBzZXRJc0V4cGFuZGVkXSA9IHVzZVN0YXRlKCEhZmlsdGVyVmFsdWVzKTtcblxuICBjb25zdCBhc3NpZ25lZFZhbHVlcyA9IFtcbiAgICB7IHZhbHVlOiBcIkluY29tcGxldGVcIiwgbGFiZWw6IFwiSW5jb21wbGV0ZVwiIH0sXG4gICAgeyB2YWx1ZTogXCJDb21wbGV0ZVwiLCBsYWJlbDogXCJDb21wbGV0ZVwiIH1cbiAgXTtcblxuICBjb25zdCBoYW5kbGVGaWx0ZXJDaGFuZ2UgPSAoZXYsIHZhbHVlKSA9PiB7XG4gICAgY29uc3QgbmV3RmlsdGVyID0gdmFsdWU7XG4gICAgb25GaWx0ZXIoe1xuICAgICAgW0ZJTFRFUl9WQVJfT1dORVJfU1RBVFVTXTogbmV3RmlsdGVyXG4gICAgfSk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94PlxuICAgICAgPENhcmRIZWFkZXJcbiAgICAgICAgdGl0bGU9XCJTdGF0dXNcIlxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aXRsZVdyYXBwZXJ9XG4gICAgICAgIG9uQ2xpY2s9eygpID0+IHNldElzRXhwYW5kZWQoIWlzRXhwYW5kZWQpfVxuICAgICAgICBhY3Rpb249e1xuICAgICAgICAgIDxJY29uQnV0dG9uIGFyaWEtbGFiZWw9XCJleHBhbmRcIiBkaXNhYmxlUmlwcGxlPlxuICAgICAgICAgICAgPEV4cGFuZE1vcmVJY29uXG4gICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiBpc0V4cGFuZGVkID8gXCJyb3RhdGUoMTgwZGVnKVwiIDogXCJyb3RhdGUoMGRlZylcIixcbiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uOiBcInRyYW5zZm9ybSAwLjNzXCJcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICB9XG4gICAgICAvPlxuICAgICAgPENvbGxhcHNlIGluPXtpc0V4cGFuZGVkfSB0aW1lb3V0PVwiYXV0b1wiIHVubW91bnRPbkV4aXQ+XG4gICAgICAgIDxDYXJkQ29udGVudFxuICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICBweTogMCxcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogXCIjMDAwMDAwMEFcIixcbiAgICAgICAgICAgIFwiJjpsYXN0LWNoaWxkXCI6IHtcbiAgICAgICAgICAgICAgcGI6IDBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9fVxuICAgICAgICA+XG4gICAgICAgICAgPFJhZGlvR3JvdXAgdmFsdWU9e2ZpbHRlclZhbHVlc30gb25DaGFuZ2U9e2hhbmRsZUZpbHRlckNoYW5nZX0+XG4gICAgICAgICAgICB7YXNzaWduZWRWYWx1ZXMubWFwKChhc3NpZ25lZCkgPT4gKFxuICAgICAgICAgICAgICA8Qm94XG4gICAgICAgICAgICAgICAgc3g9e3sgcHk6IDEgfX1cbiAgICAgICAgICAgICAgICBrZXk9e2BmaWx0ZXItYmFkZ2UtZmVhdHVyZS0ke2Fzc2lnbmVkLmxhYmVsfX1gfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPEZvcm1Db250cm9sTGFiZWxcbiAgICAgICAgICAgICAgICAgIGNvbnRyb2w9e1xuICAgICAgICAgICAgICAgICAgICA8UmFkaW9cbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17YXNzaWduZWQudmFsdWV9XG4gICAgICAgICAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiJiAuTXVpU3ZnSWNvbi1yb290XCI6IHsgZm9udFNpemU6IDE4IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBcIiYuTXVpLWNoZWNrZWRcIjogeyBjb2xvcjogXCIjMjE5NkYzXCIgfVxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBsYWJlbD17YXNzaWduZWQubGFiZWx9XG4gICAgICAgICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICAgICAgICBcIiYgLk11aUZvcm1Db250cm9sTGFiZWwtbGFiZWxcIjoge1xuICAgICAgICAgICAgICAgICAgICAgIGZvbnRTaXplOiBcIjFlbVwiXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICApKX1cbiAgICAgICAgICA8L1JhZGlvR3JvdXA+XG4gICAgICAgIDwvQ2FyZENvbnRlbnQ+XG4gICAgICA8L0NvbGxhcHNlPlxuICAgIDwvQm94PlxuICApO1xufTtcblxuU3RhdHVzRmlsdGVyLnByb3BUeXBlcyA9IHtcbiAgb25GaWx0ZXI6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBTdGF0dXNGaWx0ZXI7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUsIHVzZUVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlU2VsZWN0b3IsIHNoYWxsb3dFcXVhbCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHtcbiAgQm94LFxuICBGb3JtQ29udHJvbExhYmVsLFxuICBDaGVja2JveCxcbiAgQ2FyZEhlYWRlcixcbiAgSWNvbkJ1dHRvbixcbiAgQ29sbGFwc2UsXG4gIENhcmRDb250ZW50XG59IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgRXhwYW5kTW9yZUljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRXhwYW5kTW9yZVwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHsgRklMVEVSX1ZBUl9USUNLRVRfVFlQRSB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5cbmNvbnN0IFRpY2tldFR5cGVGaWx0ZXIgPSAoeyBvbkZpbHRlciB9KSA9PiB7XG4gIGNvbnN0IHtcbiAgICBzdW1taXQ6IHsgdGlja2V0X3R5cGVzIH0sXG4gICAgZmlsdGVyOiB7IEZJTFRFUl9WQVJfVElDS0VUX1RZUEU6IGZpbHRlclZhbHVlcyB9XG4gIH0gPSB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlIHx8IHt9LCBzaGFsbG93RXF1YWwpO1xuXG4gIGNvbnN0IFtpc0V4cGFuZGVkLCBzZXRJc0V4cGFuZGVkXSA9IHVzZVN0YXRlKCEhZmlsdGVyVmFsdWVzLmxlbmd0aCk7XG5cbiAgY29uc3QgaGFuZGxlRmlsdGVyQ2hhbmdlID0gKHZhbHVlKSA9PiB7XG4gICAgY29uc3QgbmV3RmlsdGVycyA9IGZpbHRlclZhbHVlcz8uaW5jbHVkZXModmFsdWUpXG4gICAgICA/IGZpbHRlclZhbHVlcy5maWx0ZXIoKGYpID0+IGYgIT09IHZhbHVlKVxuICAgICAgOiBbLi4uZmlsdGVyVmFsdWVzLCB2YWx1ZV07XG4gICAgb25GaWx0ZXIoe1xuICAgICAgW0ZJTFRFUl9WQVJfVElDS0VUX1RZUEVdOiBuZXdGaWx0ZXJzXG4gICAgfSk7XG4gIH07XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRJc0V4cGFuZGVkKCEhZmlsdGVyVmFsdWVzLmxlbmd0aCk7XG4gIH0sIFtmaWx0ZXJWYWx1ZXNdKTtcblxuICByZXR1cm4gKFxuICAgIDxCb3g+XG4gICAgICA8Q2FyZEhlYWRlclxuICAgICAgICB0aXRsZT1cIlRpY2tldCBUeXBlXCJcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGl0bGVXcmFwcGVyfVxuICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRJc0V4cGFuZGVkKCFpc0V4cGFuZGVkKX1cbiAgICAgICAgYWN0aW9uPXtcbiAgICAgICAgICA8SWNvbkJ1dHRvbiBhcmlhLWxhYmVsPVwiZXhwYW5kXCIgZGlzYWJsZVJpcHBsZT5cbiAgICAgICAgICAgIDxFeHBhbmRNb3JlSWNvblxuICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogaXNFeHBhbmRlZCA/IFwicm90YXRlKDE4MGRlZylcIiA6IFwicm90YXRlKDBkZWcpXCIsXG4gICAgICAgICAgICAgICAgdHJhbnNpdGlvbjogXCJ0cmFuc2Zvcm0gMC4zc1wiXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgfVxuICAgICAgLz5cbiAgICAgIDxDb2xsYXBzZSBpbj17aXNFeHBhbmRlZH0gdGltZW91dD1cImF1dG9cIiB1bm1vdW50T25FeGl0PlxuICAgICAgICA8Q2FyZENvbnRlbnRcbiAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgcHk6IDAsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IFwiIzAwMDAwMDBBXCIsXG4gICAgICAgICAgICBcIiY6bGFzdC1jaGlsZFwiOiB7XG4gICAgICAgICAgICAgIHBiOiAwXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIHt0aWNrZXRfdHlwZXMubWFwKChiZikgPT4gKFxuICAgICAgICAgICAgPEJveCBzeD17eyBweTogMSB9fSBrZXk9e2BmaWx0ZXItYmFkZ2UtZmVhdHVyZS0ke2JmLm5hbWV9fWB9PlxuICAgICAgICAgICAgICA8Rm9ybUNvbnRyb2xMYWJlbFxuICAgICAgICAgICAgICAgIGNvbnRyb2w9e1xuICAgICAgICAgICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoKSA9PiBoYW5kbGVGaWx0ZXJDaGFuZ2UoYmYuaWQpfVxuICAgICAgICAgICAgICAgICAgICBjaGVja2VkPXtmaWx0ZXJWYWx1ZXMuaW5jbHVkZXMoYmYuaWQpfVxuICAgICAgICAgICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICAgICAgICAgIFwiJiAuTXVpU3ZnSWNvbi1yb290XCI6IHsgZm9udFNpemU6IDE4IH0sXG4gICAgICAgICAgICAgICAgICAgICAgXCImLk11aS1jaGVja2VkXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBcIiMyMTk2RjNcIlxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGxhYmVsPXtiZi5uYW1lfVxuICAgICAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgICAgICBcIiYgLk11aUZvcm1Db250cm9sTGFiZWwtbGFiZWxcIjoge1xuICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTogXCIxZW1cIlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9DYXJkQ29udGVudD5cbiAgICAgIDwvQ29sbGFwc2U+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5UaWNrZXRUeXBlRmlsdGVyLnByb3BUeXBlcyA9IHtcbiAgb25GaWx0ZXI6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBUaWNrZXRUeXBlRmlsdGVyO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgR3JpZCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgRmlsdGVyIGZyb20gXCIuL0ZpbHRlclwiO1xuaW1wb3J0IFNvcnQgZnJvbSBcIi4vU29ydFwiO1xuaW1wb3J0IFNlYXJjaCBmcm9tIFwiLi9TZWFyY2hcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgRmlsdGVycyA9ICh7IG9uRmlsdGVyLCBvblNvcnQsIG9uU2VhcmNoLCBvblJlc2V0IH0pID0+IChcbiAgPEdyaWQgY29udGFpbmVyIGp1c3RpZnk9XCJmbGV4LWVuZFwiIGFsaWduSXRlbXM9XCJjZW50ZXJcIj5cbiAgICA8R3JpZFxuICAgICAgaXRlbVxuICAgICAgeHM9ezZ9XG4gICAgICBjb250YWluZXJcbiAgICAgIHBhZGRpbmc9ezF9XG4gICAgICBnYXA9ezJ9XG4gICAgICBjbGFzc05hbWU9e3N0eWxlcy5maWx0ZXJTb3J0Q29udGFpbmVyfVxuICAgICAgc3g9e3sgcHQ6IDIsIHBiOiAyIH19XG4gICAgPlxuICAgICAgPEdyaWQgaXRlbT5cbiAgICAgICAgPEZpbHRlciBvbkZpbHRlcj17b25GaWx0ZXJ9IG9uUmVzZXQ9e29uUmVzZXR9IC8+XG4gICAgICA8L0dyaWQ+XG4gICAgICA8R3JpZCBpdGVtPlxuICAgICAgICA8U29ydCBvblNvcnQ9e29uU29ydH0gLz5cbiAgICAgIDwvR3JpZD5cbiAgICA8L0dyaWQ+XG4gICAgPEdyaWQgaXRlbSB4cz17Nn0gY29udGFpbmVyIGp1c3RpZnlDb250ZW50PVwiZmxleC1lbmRcIj5cbiAgICAgIDxTZWFyY2ggb25TZWFyY2g9e29uU2VhcmNofSAvPlxuICAgIDwvR3JpZD5cbiAgPC9HcmlkPlxuKTtcblxuRmlsdGVycy5wcm9wVHlwZXMgPSB7XG4gIG9uRmlsdGVyOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25Tb3J0OiBQcm9wVHlwZXMuZnVuYyxcbiAgb25TZWFyY2g6IFByb3BUeXBlcy5mdW5jLFxuICBvblJlc2V0OiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgRmlsdGVycztcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IEJveCwgQnV0dG9uIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBGb3JtRm9vdGVyID0gKHsgc2F2ZUxhYmVsLCBjYW5jZWxMYWJlbCwgb25DbG9zZSwgZGlzYWJsZWQgfSkgPT4gKFxuICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmZvb3Rlcn0+XG4gICAgPEJ1dHRvblxuICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuY2FuY2VsQnRufVxuICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICB2YXJpYW50PVwib3V0bGluZWRcIlxuICAgICAgb25DbGljaz17b25DbG9zZX1cbiAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICA+XG4gICAgICB7Y2FuY2VsTGFiZWx9XG4gICAgPC9CdXR0b24+XG4gICAgPEJ1dHRvblxuICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICBjbGFzc05hbWU9e3N0eWxlcy5zYXZlQnRufVxuICAgICAgdmFyaWFudD1cImNvbnRhaW5lZFwiXG4gICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICA+XG4gICAgICB7c2F2ZUxhYmVsfVxuICAgIDwvQnV0dG9uPlxuICA8L0JveD5cbik7XG5cbkZvcm1Gb290ZXIucHJvcFR5cGVzID0ge1xuICBzYXZlTGFiZWw6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGNhbmNlbExhYmVsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYyxcbiAgZGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBGb3JtRm9vdGVyO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IEVycm9ySWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9FcnJvclwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5mdW5jdGlvbiBFcnJvckxhYmVsKHsgbWVzc2FnZSwgY29sb3IsIGNsYXNzTmFtZXMsIGRhdGFUZXN0SWQgfSkge1xuICByZXR1cm4gKFxuICAgIDxzcGFuXG4gICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5lcnJvckxhYmVsfSAke2NsYXNzTmFtZXMgJiYgY2xhc3NOYW1lc31gfVxuICAgICAgc3R5bGU9e3sgY29sb3IgfX1cbiAgICAgIGRhdGEtdGVzdGlkPXtkYXRhVGVzdElkfVxuICAgID5cbiAgICAgIDxFcnJvckljb24gc3g9e3sgY29sb3IgfX0gLz5cbiAgICAgIHttZXNzYWdlfVxuICAgIDwvc3Bhbj5cbiAgKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgRXJyb3JMYWJlbDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IEJhY2tkcm9wLCBDaXJjdWxhclByb2dyZXNzIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcblxuY29uc3QgTG9hZGVyID0gKHsgb3BlbiB9KSA9PiAoXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1tYWdpYy1udW1iZXJzXG4gIDxCYWNrZHJvcCBvcGVuPXtvcGVufSBzeD17KHRoZW1lKSA9PiAoeyB6SW5kZXg6IHRoZW1lLnpJbmRleC5kcmF3ZXIgKyAxIH0pfT5cbiAgICA8Q2lyY3VsYXJQcm9ncmVzcyBjb2xvcj1cImluaGVyaXRcIiAvPlxuICA8L0JhY2tkcm9wPlxuKTtcblxuTG9hZGVyLnByb3BUeXBlcyA9IHtcbiAgb3BlbjogUHJvcFR5cGVzLmJvb2xcbn07XG5cbmV4cG9ydCBkZWZhdWx0IExvYWRlcjtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZVNlbGVjdG9yLCBzaGFsbG93RXF1YWwgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgU2VhcmNoSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9TZWFyY2hcIjtcbmltcG9ydCBDbG9zZUljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ2xvc2VcIjtcbmltcG9ydCBJbmZpbml0ZVNjcm9sbCBmcm9tIFwicmVhY3QtaW5maW5pdGUtc2Nyb2xsLWNvbXBvbmVudFwiO1xuaW1wb3J0IE9yZGVyc0xpc3QgZnJvbSBcIi4uL09yZGVyc0xpc3RcIjtcbmltcG9ydCB7IE9ORV9QQUdFX05FWFQgfSBmcm9tIFwiLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5cbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgTXlPcmRlcnNUaWNrZXRzID0gKHsgZmV0Y2hEYXRhIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCB7IHN1bW1pdCwgbWVtYmVyT3JkZXJzLCBvcmRlcnNfY3VycmVudF9wYWdlLCBvcmRlcnNfbGFzdF9wYWdlIH0gPVxuICAgIHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30sIHNoYWxsb3dFcXVhbCk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGlkPVwiaW5maW5pdGVXcmFwcGVyXCIgY2xhc3NOYW1lPXtzdHlsZXMubXlPcmRlcnNXcmFwcGVyfT5cbiAgICAgIHtcIiBcIn1cbiAgICAgIHttZW1iZXJPcmRlcnM/Lmxlbmd0aCA/IChcbiAgICAgICAgPEluZmluaXRlU2Nyb2xsXG4gICAgICAgICAgZGF0YUxlbmd0aD17bWVtYmVyT3JkZXJzPy5sZW5ndGh9XG4gICAgICAgICAgbmV4dD17KCkgPT4gZmV0Y2hEYXRhKG9yZGVyc19jdXJyZW50X3BhZ2UgKyBPTkVfUEFHRV9ORVhUKX1cbiAgICAgICAgICBoYXNNb3JlPXtvcmRlcnNfY3VycmVudF9wYWdlIDwgb3JkZXJzX2xhc3RfcGFnZX1cbiAgICAgICAgICBzY3JvbGxUaHJlc2hvbGQ9ezF9XG4gICAgICAgID5cbiAgICAgICAgICB7bWVtYmVyT3JkZXJzPy5tYXAoKG9yZGVyKSA9PiAoXG4gICAgICAgICAgICA8T3JkZXJzTGlzdFxuICAgICAgICAgICAgICBrZXk9e29yZGVyLm51bWJlciArIG9yZGVyLmlkfVxuICAgICAgICAgICAgICBvcmRlcj17b3JkZXJ9XG4gICAgICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9JbmZpbml0ZVNjcm9sbD5cbiAgICAgICkgOiAoXG4gICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMubm9PcmRlcnNGb3VuZH0+XG4gICAgICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5ub09yZGVyc0ljb25XcmFwcGVyfT5cbiAgICAgICAgICAgIDxTZWFyY2hJY29uIHN4PXt7IGZvbnRTaXplOiA0NCwgY29sb3I6IFwiIzAwMDAwMDhGXCIgfX0gLz5cbiAgICAgICAgICAgIDxDbG9zZUljb25cbiAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICBmb250U2l6ZTogMTgsXG4gICAgICAgICAgICAgICAgcG9zaXRpb246IFwiYWJzb2x1dGVcIixcbiAgICAgICAgICAgICAgICB0b3A6IDAsXG4gICAgICAgICAgICAgICAgcmlnaHQ6IDAsXG4gICAgICAgICAgICAgICAgY29sb3I6IFwiIzAwMDAwMDhGXCJcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAge3QoXCJvcmRlcnMubm9fb3JkZXJzXCIpfVxuICAgICAgICA8L0JveD5cbiAgICAgICl9XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBNeU9yZGVyc1RpY2tldHM7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBHcmlkLCBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IERpdmlkZXIgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvRGl2aWRlclwiO1xuaW1wb3J0IHsgY2FsY3VsYXRlT3JkZXJUb3RhbHMsIGZvcm1hdEN1cnJlbmN5IH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IE9yZGVyU3VtbWFyeVRhYmxlID0gKHsgb3JkZXIsIHN1bW1pdCB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgeyBkaXNjb3VudFRvdGFsLCByZWZ1bmRUb3RhbCwgdGF4ZXNUb3RhbCwgYW1vdW50VG90YWwsIHRpY2tldFN1bW1hcnkgfSA9XG4gICAgY2FsY3VsYXRlT3JkZXJUb3RhbHMoeyBvcmRlciwgc3VtbWl0IH0pO1xuICBjb25zdCBodW5kcmVkID0gMTAwO1xuXG4gIHJldHVybiAoXG4gICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclN1bW1hcnlUYWJsZX0+XG4gICAgICB7dGlja2V0U3VtbWFyeT8ubGVuZ3RoID4gMCAmJiAoXG4gICAgICAgIDw+XG4gICAgICAgICAge3RpY2tldFN1bW1hcnkubWFwKCh0aWNrZXQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHRpY2tldFRvdGFsID1cbiAgICAgICAgICAgICAgKHRpY2tldC5xdHkgKiAodGlja2V0LnRpY2tldF90eXBlLmNvc3QgKiBodW5kcmVkKSkgLyBodW5kcmVkO1xuXG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICA8R3JpZFxuICAgICAgICAgICAgICAgIGNvbnRhaW5lclxuICAgICAgICAgICAgICAgIGtleT17YHRpeG9yZGVyXyR7dGlja2V0LnRpY2tldF90eXBlLmNyZWF0ZWR9YH1cbiAgICAgICAgICAgICAgICBzeD17eyBwYjogMSB9fVxuICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwib3JkZXItc3VtbWFyeS1pdGVtaXplZFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8R3JpZCB4cz17OH0gaXRlbT5cbiAgICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICB4e3RpY2tldC5xdHl9IHt0aWNrZXQudGlja2V0X3R5cGUubmFtZX1cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgICAgICAgPEdyaWQgeHM9ezR9IGl0ZW0gYWxpZ249XCJyaWdodFwiPlxuICAgICAgICAgICAgICAgICAge2Zvcm1hdEN1cnJlbmN5KHRpY2tldFRvdGFsLCB7IGN1cnJlbmN5OiBvcmRlci5jdXJyZW5jeSB9KX1cbiAgICAgICAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSl9XG4gICAgICAgIDwvPlxuICAgICAgKX1cbiAgICAgIHtvcmRlci5kaXNjb3VudF9hbW91bnQgPiAwICYmIChcbiAgICAgICAgPEdyaWQgY29udGFpbmVyIHN4PXt7IHBiOiAxIH19PlxuICAgICAgICAgIDxHcmlkIHhzPXs4fSBpdGVtPlxuICAgICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LmRpc2NvdW50c1wiKX1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgPEdyaWQgeHM9ezR9IGl0ZW0gYWxpZ249XCJyaWdodFwiPlxuICAgICAgICAgICAgLXtkaXNjb3VudFRvdGFsfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgKX1cbiAgICAgIHtvcmRlci50YXhlc19hbW91bnQgPiAwICYmIChcbiAgICAgICAgPEdyaWQgY29udGFpbmVyIHN4PXt7IHBiOiAxIH19PlxuICAgICAgICAgIDxHcmlkIHhzPXs4fSBpdGVtPlxuICAgICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LnRheGVzXCIpfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICA8R3JpZCB4cz17NH0gaXRlbSBhbGlnbj1cInJpZ2h0XCI+XG4gICAgICAgICAgICB7dGF4ZXNUb3RhbH1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICl9XG4gICAgICB7b3JkZXIuc3RhdHVzID09PSBcIlBhaWRcIiAmJiAoXG4gICAgICAgIDxHcmlkIGNvbnRhaW5lciBzeD17eyBwYjogMSB9fT5cbiAgICAgICAgICA8R3JpZCB4cz17OH0gaXRlbT5cbiAgICAgICAgICAgIHt0KFwib3JkZXJfc3VtbWFyeS5hbW91bnRfcGFpZFwiKX1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgPEdyaWQgeHM9ezR9IGl0ZW0gYWxpZ249XCJyaWdodFwiPlxuICAgICAgICAgICAgLXthbW91bnRUb3RhbH1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICl9XG4gICAgICB7cmVmdW5kVG90YWwgPiAwICYmIChcbiAgICAgICAgPEdyaWQgY29udGFpbmVyIHN4PXt7IHBiOiAxIH19PlxuICAgICAgICAgIDxHcmlkIHhzPXs4fSBpdGVtPlxuICAgICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LnJlZnVuZHNcIil9XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgIDxHcmlkIHhzPXs0fSBpdGVtIGFsaWduPVwicmlnaHRcIj5cbiAgICAgICAgICAgIHtyZWZ1bmRUb3RhbH1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICl9XG4gICAgICA8RGl2aWRlciAvPlxuICAgICAgPEdyaWQgY29udGFpbmVyIHN4PXt7IHB0OiAxLCBwYjogMSB9fT5cbiAgICAgICAgPEdyaWQgeHM9ezh9IGl0ZW0+XG4gICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LnRvdGFsXCIpfVxuICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDxHcmlkIHhzPXs0fSBpdGVtIGFsaWduPVwicmlnaHRcIj5cbiAgICAgICAgICB7b3JkZXIuc3RhdHVzID09PSBcIlBhaWRcIiA/IFwiJDAuMDBcIiA6IGFtb3VudFRvdGFsfVxuICAgICAgICA8L0dyaWQ+XG4gICAgICA8L0dyaWQ+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5PcmRlclN1bW1hcnlUYWJsZS5wcm9wVHlwZXMgPSB7XG4gIG9yZGVyOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIGN1cnJlbmN5OiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIGRpc2NvdW50X2Ftb3VudDogUHJvcFR5cGVzLm51bWJlcixcbiAgICB0YXhlc19hbW91bnQ6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgc3RhdHVzOiBQcm9wVHlwZXMuc3RyaW5nXG4gIH0pLFxuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3Rcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE9yZGVyU3VtbWFyeVRhYmxlO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZU5vdyB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuaW1wb3J0IHsgdGlja2V0c1JlZnVuZGFibGUgfSBmcm9tIFwiLi4vLi4vdXRpbHMvdGlja2V0VXRpbHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgUmVmdW5kRW1haWxTdXBwb3J0ID0gKHtcbiAgc3VtbWl0LFxuICB0aWNrZXRzLFxuICBzdWJtaXRSZXF1ZXN0LFxuICBvblJlZnVuZENsaWNrLFxuICBvblJlZnVuZERldGFpbENsaWNrXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3Qgbm93ID0gdXNlTm93KCk7XG4gIGNvbnN0IGlzSW5SZWZ1bmRhYmxlUGVyaW9kID1cbiAgICBzdW1taXQucmVnaXN0cmF0aW9uX2FsbG93ZWRfcmVmdW5kX3JlcXVlc3RfdGlsbF9kYXRlID4gbm93O1xuICBjb25zdCBhdExlYXN0T25lUmVmdW5kYWJsZVRpY2tldCA9IHRpY2tldHNSZWZ1bmRhYmxlKHRpY2tldHMpO1xuICBjb25zdCBpc1JlZnVuZGFibGUgPSAhIShpc0luUmVmdW5kYWJsZVBlcmlvZCAmJiBhdExlYXN0T25lUmVmdW5kYWJsZVRpY2tldCk7XG4gIGNvbnN0IGhhc1JlZnVuZFJlcXVlc3RzID0gdGlja2V0cz8uc29tZSgodCkgPT4gdC5yZWZ1bmRfcmVxdWVzdHMubGVuZ3RoID4gMCk7XG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIHtpc1JlZnVuZGFibGUgJiYgKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgYXJpYS1sYWJlbD1cInJlZnVuZCByZXF1ZXN0IGJ1dHRvblwiXG4gICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMub3JkZXJTdW1tYXJ5QnV0dG9ufVxuICAgICAgICAgICR7c3VibWl0UmVxdWVzdCA/IHN0eWxlcy5yZWZ1bmREaXNhYmxlZCA6IFwiXCJ9YH1cbiAgICAgICAgICB2YXJpYW50PVwib3V0bGluZWRcIlxuICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgb25DbGljaz17b25SZWZ1bmRDbGlja31cbiAgICAgICAgICBkaXNhYmxlZD17c3VibWl0UmVxdWVzdH1cbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwib3JkZXJfc3VtbWFyeS5yZXF1ZXN0X3JlZnVuZFwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApfVxuICAgICAge2hhc1JlZnVuZFJlcXVlc3RzICYmIChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJyZWZ1bmQgZGV0YWlscyBidXR0b25cIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyU3VtbWFyeUJ1dHRvbn1cbiAgICAgICAgICB2YXJpYW50PVwib3V0bGluZWRcIlxuICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgb25DbGljaz17b25SZWZ1bmREZXRhaWxDbGlja31cbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwib3JkZXJfc3VtbWFyeS5yZWZ1bmRfZGV0YWlsc1wiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApfVxuICAgICAgPEJ1dHRvblxuICAgICAgICBhcmlhLWxhYmVsPVwiZW1haWwgc3VwcG9ydCBidXR0b25cIlxuICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJTdW1tYXJ5QnV0dG9ufVxuICAgICAgICB2YXJpYW50PVwib3V0bGluZWRcIlxuICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICB0YXJnZXQ9XCJfdG9wXCJcbiAgICAgICAgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiXG4gICAgICAgIGhyZWY9e2BtYWlsdG86JHtzdW1taXQuc3VwcG9ydF9lbWFpbH1gfVxuICAgICAgPlxuICAgICAgICB7dChcIm9yZGVyX2luZm8uZW1haWxfc3VwcG9ydFwiKX1cbiAgICAgIDwvQnV0dG9uPlxuICAgIDwvPlxuICApO1xufTtcblxuUmVmdW5kRW1haWxTdXBwb3J0LnByb3BUeXBlcyA9IHtcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LFxuICB0aWNrZXRzOiBQcm9wVHlwZXMuYXJyYXlPZihPYmplY3QpLFxuICBvblJlZnVuZENsaWNrOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25SZWZ1bmREZXRhaWxDbGljazogUHJvcFR5cGVzLmZ1bmMsXG4gIHN1Ym1pdFJlcXVlc3Q6IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBSZWZ1bmRFbWFpbFN1cHBvcnQ7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBHcmlkLCBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IE9yZGVyU3VtbWFyeVRhYmxlIGZyb20gXCIuL09yZGVyU3VtbWFyeVRhYmxlXCI7XG5pbXBvcnQgUmVmdW5kRW1haWxTdXBwb3J0IGZyb20gXCIuL1JlZnVuZEVtYWlsU3VwcG9ydFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBPcmRlclN1bW1hcnkgPSAoe1xuICBvcmRlcixcbiAgc3VtbWl0LFxuICBvblJlZnVuZENsaWNrLFxuICBzdWJtaXRSZXF1ZXN0LFxuICBvblJlZnVuZERldGFpbENsaWNrXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPEJveFxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclN1bW1hcnlXcmFwcGVyfVxuICAgICAgICBzeD17eyBwdDogNCwgcHg6IDQgfX1cbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJvcmRlci1zdW1tYXJ5LWNvbnRhaW5lclwiXG4gICAgICA+XG4gICAgICAgIDxoMz57dChcIm9yZGVyX3N1bW1hcnkub3JkZXJfc3VtbWFyeVwiKX08L2gzPlxuICAgICAgICA8R3JpZCBjb250YWluZXI+XG4gICAgICAgICAgPEdyaWRcbiAgICAgICAgICAgIHhzPXsxMn1cbiAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyU3VtbWFyeVB1cmNoYXNlZEluZm99XG4gICAgICAgICAgICBzeD17eyBwYjogMyB9fVxuICAgICAgICAgICAgaXRlbVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxPcmRlclN1bW1hcnlUYWJsZSBvcmRlcj17b3JkZXJ9IHN1bW1pdD17c3VtbWl0fSAvPlxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgPC9Cb3g+XG4gICAgICA8Qm94IHhzPXsxMn0gc3g9e3sgcGI6IDMgfX0+XG4gICAgICAgIDxSZWZ1bmRFbWFpbFN1cHBvcnRcbiAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICB0aWNrZXRzPXtvcmRlcj8ubWVtYmVyVGlja2V0c31cbiAgICAgICAgICBzdWJtaXRSZXF1ZXN0PXtzdWJtaXRSZXF1ZXN0fVxuICAgICAgICAgIG9uUmVmdW5kQ2xpY2s9e29uUmVmdW5kQ2xpY2t9XG4gICAgICAgICAgb25SZWZ1bmREZXRhaWxDbGljaz17b25SZWZ1bmREZXRhaWxDbGlja31cbiAgICAgICAgLz5cbiAgICAgIDwvQm94PlxuICAgIDwvPlxuICApO1xufTtcbk9yZGVyU3VtbWFyeS5wcm9wVHlwZXMgPSB7XG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdCxcbiAgb3JkZXI6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgbWVtYmVyVGlja2V0czogUHJvcFR5cGVzLmFycmF5T2YoT2JqZWN0KVxuICB9KSxcbiAgb25SZWZ1bmRDbGljazogUHJvcFR5cGVzLmZ1bmMsXG4gIHN1Ym1pdFJlcXVlc3Q6IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBPcmRlclN1bW1hcnk7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VTZWxlY3Rvciwgc2hhbGxvd0VxdWFsIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgSW5maW5pdGVTY3JvbGwgZnJvbSBcInJlYWN0LWluZmluaXRlLXNjcm9sbC1jb21wb25lbnRcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgU2VhcmNoSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9TZWFyY2hcIjtcbmltcG9ydCBDbG9zZUljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ2xvc2VcIjtcbmltcG9ydCBPcmRlckxpc3RUaWNrZXRzIGZyb20gXCIuL09yZGVyTGlzdFRpY2tldHNcIjtcbmltcG9ydCB7IE9ORV9QQUdFX05FWFQgfSBmcm9tIFwiLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IEFzc2lnblRvTWUgPSAoeyBmZXRjaERhdGEgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IHtcbiAgICBzdW1taXQsXG4gICAgdXNlclRpY2tldHMsXG4gICAgdXNlcl90aWNrZXRzX2N1cnJlbnRfcGFnZSxcbiAgICB1c2VyX3RpY2tldHNfbGFzdF9wYWdlXG4gIH0gPSB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlIHx8IHt9LCBzaGFsbG93RXF1YWwpO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclRpY2tldENvbnRhaW5lcn0+XG4gICAgICA8ZGl2IGlkPVwiYXNzaWduZWRUb01lV3JhcHBlclwiIGNsYXNzTmFtZT17c3R5bGVzLmFzc2lnbmVkVG9NZVdyYXBwZXJ9PlxuICAgICAgICB7dXNlclRpY2tldHM/Lmxlbmd0aCA/IChcbiAgICAgICAgICA8SW5maW5pdGVTY3JvbGxcbiAgICAgICAgICAgIGRhdGFMZW5ndGg9e3VzZXJUaWNrZXRzPy5sZW5ndGh9XG4gICAgICAgICAgICBuZXh0PXsoKSA9PiBmZXRjaERhdGEodXNlcl90aWNrZXRzX2N1cnJlbnRfcGFnZSArIE9ORV9QQUdFX05FWFQpfVxuICAgICAgICAgICAgaGFzTW9yZT17dXNlcl90aWNrZXRzX2N1cnJlbnRfcGFnZSA8IHVzZXJfdGlja2V0c19sYXN0X3BhZ2V9XG4gICAgICAgICAgICBzY3JvbGxUaHJlc2hvbGQ9ezF9XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRMaXN0Q29udGFpbmVyfT5cbiAgICAgICAgICAgICAge3VzZXJUaWNrZXRzLm1hcCgodGlja2V0KSA9PiAoXG4gICAgICAgICAgICAgICAgPE9yZGVyTGlzdFRpY2tldHNcbiAgICAgICAgICAgICAgICAgIGtleT17dGlja2V0LmlkfVxuICAgICAgICAgICAgICAgICAgdGlja2V0PXt0aWNrZXR9XG4gICAgICAgICAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICAgICAgICAgIGlzUmVmdW5kTW9kYWw9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgaXNTZWxlY3RlZFRvUmVmdW5kPXtbXX1cbiAgICAgICAgICAgICAgICAgIHNlbGVjdFRvUmVmdW5kPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgIGlzRXh0ZXJuYWxBc3NpZ25lZFRpY2tldFxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9JbmZpbml0ZVNjcm9sbD5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLm5vVGlja2V0c0ZvdW5kfT5cbiAgICAgICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMubm9PcmRlcnNJY29uV3JhcHBlcn0+XG4gICAgICAgICAgICAgIDxTZWFyY2hJY29uIHN4PXt7IGZvbnRTaXplOiA0NCwgY29sb3I6IFwiIzAwMDAwMDhGXCIgfX0gLz5cbiAgICAgICAgICAgICAgPENsb3NlSWNvblxuICAgICAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgICAgICBmb250U2l6ZTogMTgsXG4gICAgICAgICAgICAgICAgICBwb3NpdGlvbjogXCJhYnNvbHV0ZVwiLFxuICAgICAgICAgICAgICAgICAgdG9wOiAwLFxuICAgICAgICAgICAgICAgICAgcmlnaHQ6IDAsXG4gICAgICAgICAgICAgICAgICBjb2xvcjogXCIjMDAwMDAwOEZcIlxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgIHt0KFwidGlja2V0cy5ub190aWNrZXRzXCIpfVxuICAgICAgICAgIDwvQm94PlxuICAgICAgICApfVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBBc3NpZ25Ub01lO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQm94LCBHcmlkLCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgQXNzaWduZWRUbyA9ICh7IGVtYWlsIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuXG4gIHJldHVybiAoXG4gICAgPEJveD5cbiAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMubGFiZWx9Pnt0KFwidGlja2V0X3N0YXR1cy5hc3NpZ25lZF90b1wiKX06PC9Cb3g+XG4gICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiYm9keTFcIiBkYXRhLXRlc3RpZD1cImF0dGVuZGVlLXN0YXR1cy1hc3NpZ25lZFwiPlxuICAgICAgICB7ZW1haWx9XG4gICAgICA8L1R5cG9ncmFwaHk+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5jb25zdCBFeHRlcm5hbEFzc2lnbmVkVG8gPSAoeyBmaXJzdE5hbWUsIGxhc3ROYW1lIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuXG4gIHJldHVybiAoXG4gICAgPEJveD5cbiAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMubGFiZWx9Pnt0KFwidGlja2V0X3N0YXR1cy5hc3NpZ25lZF9ieVwiKX06PC9Cb3g+XG4gICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiYm9keTFcIj5cbiAgICAgICAge2ZpcnN0TmFtZX0ge2xhc3ROYW1lfVxuICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgIDwvQm94PlxuICApO1xufTtcblxuY29uc3QgTWFuYWdlRm9yID0gKHsgZmlyc3ROYW1lLCBsYXN0TmFtZSB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcblxuICByZXR1cm4gKFxuICAgIDxCb3g+XG4gICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmxhYmVsfT57dChcInRpY2tldF9zdGF0dXMubWFuYWdlX2ZvclwiKX06PC9Cb3g+XG4gICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiYm9keTFcIj5cbiAgICAgICAge2ZpcnN0TmFtZX0ge2xhc3ROYW1lfVxuICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgIDwvQm94PlxuICApO1xufTtcblxuY29uc3QgQXR0ZW5kZWVTdGF0dXMgPSAoeyB0aWNrZXQsIGlzRXh0ZXJuYWxBc3NpZ25lZFRpY2tldCB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgaXNVbmFzc2lnbmVkID0gIXRpY2tldC5vd25lcj8uZW1haWwgJiYgdGlja2V0LmlzX2FjdGl2ZTtcbiAgY29uc3QgaXNEZWxlZ2F0ZWQgPSAhIXRpY2tldC5vd25lcj8ubWFuYWdlcl9pZDtcblxuICBpZiAoaXNVbmFzc2lnbmVkKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxzcGFuXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldE93bmVyRW1haWx9XG4gICAgICAgIGRhdGEtdGVzdGlkPVwiYXR0ZW5kZWUtc3RhdHVzLXVuYXNzaWduZWRcIlxuICAgICAgPlxuICAgICAgICB7dChcInRpY2tldF9zdGF0dXMuYXR0ZW5kZWVfc3RhdHVzX3VuYXNzaWduZWRcIil9XG4gICAgICA8L3NwYW4+XG4gICAgKTtcbiAgfVxuXG4gIGlmICh0aWNrZXQub3duZXI/LmVtYWlsKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxHcmlkIGNvbnRhaW5lcj5cbiAgICAgICAgPEdyaWQgaXRlbT5cbiAgICAgICAgICA8QXNzaWduZWRUbyBlbWFpbD17dGlja2V0Lm93bmVyLmVtYWlsfSAvPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICAgIHtpc0V4dGVybmFsQXNzaWduZWRUaWNrZXQgJiYgKFxuICAgICAgICAgIDxHcmlkIGl0ZW0gY2xhc3NOYW1lPXtzdHlsZXMuYXNzaWduZWRCeVRleHR9PlxuICAgICAgICAgICAgPEV4dGVybmFsQXNzaWduZWRUb1xuICAgICAgICAgICAgICBmaXJzdE5hbWU9e3RpY2tldC5vcmRlcj8ub3duZXJfZmlyc3RfbmFtZX1cbiAgICAgICAgICAgICAgbGFzdE5hbWU9e3RpY2tldC5vcmRlcj8ub3duZXJfbGFzdF9uYW1lfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICl9XG4gICAgICAgIHtpc0RlbGVnYXRlZCAmJiAoXG4gICAgICAgICAgPEdyaWQgaXRlbSBjbGFzc05hbWU9e3N0eWxlcy5hc3NpZ25lZEJ5VGV4dH0+XG4gICAgICAgICAgICA8TWFuYWdlRm9yXG4gICAgICAgICAgICAgIGZpcnN0TmFtZT17dGlja2V0Lm93bmVyPy5maXJzdF9uYW1lfVxuICAgICAgICAgICAgICBsYXN0TmFtZT17dGlja2V0Lm93bmVyPy5sYXN0X25hbWV9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgKX1cbiAgICAgIDwvR3JpZD5cbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59O1xuXG5BdHRlbmRlZVN0YXR1cy5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldDogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBvd25lcjogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAgIGVtYWlsOiBQcm9wVHlwZXMuc3RyaW5nXG4gICAgfSksXG4gICAgaXNfYWN0aXZlOiBQcm9wVHlwZXMuYm9vbFxuICB9KSxcbiAgaXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0OiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgQXR0ZW5kZWVTdGF0dXM7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgT3JkZXJMaXN0VGlja2V0cyBmcm9tIFwiLi9PcmRlckxpc3RUaWNrZXRzXCI7XG5pbXBvcnQgeyBQQUdJTkFUSU9OX0RJU1BMQVlfQ09VTlQgfSBmcm9tIFwiLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IE9yZGVyTGlzdEl0ZW0gPSAoe1xuICBzdW1taXQsXG4gIG9yZGVyLFxuICBvblBhZ2luYXRlQ2xpY2ssXG4gIHRpY2tldHNUb1JlZnVuZCxcbiAgc2VsZWN0VG9SZWZ1bmRcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBbaXRlbXNUb0Rpc3BsYXksIHNldEl0ZW1zVG9EaXNwbGF5XSA9IHVzZVN0YXRlKFxuICAgIFBBR0lOQVRJT05fRElTUExBWV9DT1VOVFxuICApO1xuXG4gIGlmICghb3JkZXI/Lm1lbWJlclRpY2tldHM/Lmxlbmd0aCkgcmV0dXJuIG51bGw7XG4gIGNvbnN0IHNsaWNlZFRpY2tldHMgPSBvcmRlcj8ubWVtYmVyVGlja2V0cz8uc2xpY2UoMCwgaXRlbXNUb0Rpc3BsYXkpO1xuXG4gIGNvbnN0IG9uVmlld01vcmUgPSAoKSA9PiB7XG4gICAgaWYgKG9yZGVyPy50aWNrZXRzX3RvdGFsID4gb3JkZXI/Lm1lbWJlclRpY2tldHMubGVuZ3RoKSB7XG4gICAgICBvblBhZ2luYXRlQ2xpY2soKTtcbiAgICB9XG4gICAgc2V0SXRlbXNUb0Rpc3BsYXkoaXRlbXNUb0Rpc3BsYXkgKyBQQUdJTkFUSU9OX0RJU1BMQVlfQ09VTlQpO1xuICB9O1xuXG4gIGNvbnN0IG9uVmlld0xlc3MgPSAoKSA9PiBzZXRJdGVtc1RvRGlzcGxheShQQUdJTkFUSU9OX0RJU1BMQVlfQ09VTlQpO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIHtzbGljZWRUaWNrZXRzPy5tYXAoKHRpY2tldCkgPT4gKFxuICAgICAgICA8T3JkZXJMaXN0VGlja2V0c1xuICAgICAgICAgIGtleT17dGlja2V0LmlkfVxuICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgIGlzUmVmdW5kTW9kYWw9e2ZhbHNlfVxuICAgICAgICAgIGlzU2VsZWN0ZWRUb1JlZnVuZD17ISF0aWNrZXRzVG9SZWZ1bmQuZmluZCgodCkgPT4gdC5pZCA9PT0gdGlja2V0LmlkKX1cbiAgICAgICAgICBzZWxlY3RUb1JlZnVuZD17c2VsZWN0VG9SZWZ1bmR9XG4gICAgICAgIC8+XG4gICAgICApKX1cbiAgICAgIHtvcmRlcj8udGlja2V0c190b3RhbCA+IGl0ZW1zVG9EaXNwbGF5ID8gKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgYXJpYS1sYWJlbD1cInZpZXcgbW9yZSBidXR0b25cIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnZpZXdNb3JlQnV0dG9ufVxuICAgICAgICAgIG9uQ2xpY2s9e29uVmlld01vcmV9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcIm9yZGVycy10aWNrZXRzLnZpZXdfbW9yZVwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApIDogKFxuICAgICAgICBcIlwiXG4gICAgICApfVxuICAgICAge3NsaWNlZFRpY2tldHM/Lmxlbmd0aCA+IFBBR0lOQVRJT05fRElTUExBWV9DT1VOVCAmJlxuICAgICAgc2xpY2VkVGlja2V0cz8ubGVuZ3RoID09PSBvcmRlcj8udGlja2V0c190b3RhbCA/IChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJ2aWV3IGxlc3MgYnV0dG9uXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy52aWV3TW9yZUJ1dHRvbn1cbiAgICAgICAgICBvbkNsaWNrPXtvblZpZXdMZXNzfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJvcmRlcnMtdGlja2V0cy52aWV3X2xlc3NcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgKSA6IChcbiAgICAgICAgXCJcIlxuICAgICAgKX1cbiAgICA8Lz5cbiAgKTtcbn07XG5cbk9yZGVyTGlzdEl0ZW0ucHJvcFR5cGVzID0ge1xuICBvcmRlcjogUHJvcFR5cGVzLm9iamVjdCxcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0XG59O1xuXG5leHBvcnQgZGVmYXVsdCBPcmRlckxpc3RJdGVtO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBHcmlkLCBCdXR0b24sIEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgU3RhY2sgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvU3RhY2tcIjtcbmltcG9ydCBDaGVja2JveCBmcm9tIFwiQG11aS9tYXRlcmlhbC9DaGVja2JveFwiO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2ggfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCBUaWNrZXRTdGF0dXMgZnJvbSBcIi4uL1RpY2tldFN0YXR1c1wiO1xuaW1wb3J0IHsgZ2V0U3VtbWl0UmVhc3NpZ25EYXRlIH0gZnJvbSBcIi4uLy4uL3V0aWxzL3N1bW1pdFV0aWxzXCI7XG5pbXBvcnQgeyB1c2VOb3cgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcbmltcG9ydCBBdHRlbmRlZVN0YXR1cyBmcm9tIFwiLi9BdHRlbmRlZVN0YXR1c1wiO1xuaW1wb3J0IFRpY2tldERldGFpbCBmcm9tIFwiLi4vVGlja2V0RGV0YWlsXCI7XG5pbXBvcnQgeyB1c2VUaWNrZXREZXRhaWxzIH0gZnJvbSBcIi4uLy4uL2hvb2tzL3VzZVRpY2tldERldGFpbHNcIjtcbmltcG9ydCBDb3B5VGV4dCBmcm9tIFwiLi4vQ29weVRleHRcIjtcbmltcG9ydCBUaWNrZXRBc3NpZ24gZnJvbSBcIi4uL1RpY2tldEFzc2lnblwiO1xuaW1wb3J0IHsgcmVzZXRUaWNrZXQgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBtb2RhbFZpZXdzID0ge1xuICBkZXRhaWw6IFwiREVUQUlMXCIsXG4gIHJlYXNzaWduOiBcIlJFQVNTSUdOXCIsXG4gIGFzc2lnbjogXCJBU1NJR05cIlxufTtcblxuY29uc3QgVGlja2V0Q1RBcyA9ICh7XG4gIGlzSW5jb21wbGV0ZSxcbiAgaXNVbmFzc2lnbmVkLFxuICBpc1JlYXNzaWduYWJsZSxcbiAgb25PcGVuQ2xpY2tcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuXG4gIGlmIChpc1VuYXNzaWduZWQpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPEJ1dHRvblxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5hc3NpZ25UaWNrZXRCdXR0b259XG4gICAgICAgIG9uQ2xpY2s9eygpID0+IG9uT3BlbkNsaWNrKG1vZGFsVmlld3MuYXNzaWduKX1cbiAgICAgID5cbiAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLmFzc2lnbl90aWNrZXRcIil9XG4gICAgICA8L0J1dHRvbj5cbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8U3RhY2tcbiAgICAgIHN4PXt7XG4gICAgICAgIGp1c3RpZnlDb250ZW50OiBcImVuZFwiLFxuICAgICAgICB3aWR0aDogXCIxMDAlXCJcbiAgICAgIH19XG4gICAgICBhbGlnbkl0ZW1zPVwiY2VudGVyXCJcbiAgICAgIGRpcmVjdGlvbj1cInJvd1wiXG4gICAgPlxuICAgICAgPEJ1dHRvblxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy52aWV3RmluaXNoVGlja2V0QnV0dG9ufVxuICAgICAgICBvbkNsaWNrPXsoKSA9PiBvbk9wZW5DbGljayhtb2RhbFZpZXdzLmRldGFpbCl9XG4gICAgICA+XG4gICAgICAgIHtpc0luY29tcGxldGVcbiAgICAgICAgICA/IHQoXCJ0aWNrZXRfc3RhdHVzLmZpbmlzaF90aWNrZXRcIilcbiAgICAgICAgICA6IHQoXCJ0aWNrZXRfc3RhdHVzLnZpZXdfdGlja2V0XCIpfVxuICAgICAgPC9CdXR0b24+XG4gICAgICB7aXNSZWFzc2lnbmFibGUgJiYgKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgYXJpYS1sYWJlbD1cInJlYXNzaWduIHRpY2tldCBidXR0b25cIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnJlYXNzaWduQnV0dG9ufVxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG9uT3BlbkNsaWNrKG1vZGFsVmlld3MucmVhc3NpZ24pfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnJlYXNzaWduX3RpY2tldFwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApfVxuICAgIDwvU3RhY2s+XG4gICk7XG59O1xuXG5UaWNrZXRDVEFzLnByb3BUeXBlcyA9IHtcbiAgaXNJbmNvbXBsZXRlOiBQcm9wVHlwZXMuYm9vbC5pc1JlcXVpcmVkLFxuICBpc1VuYXNzaWduZWQ6IFByb3BUeXBlcy5ib29sLmlzUmVxdWlyZWQsXG4gIGlzUmVhc3NpZ25hYmxlOiBQcm9wVHlwZXMuYm9vbC5pc1JlcXVpcmVkLFxuICBvbk9wZW5DbGljazogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZFxufTtcblxuY29uc3QgT3JkZXJMaXN0VGlja2V0cyA9ICh7XG4gIHRpY2tldCxcbiAgc3VtbWl0LFxuICBpc1JlZnVuZE1vZGFsLFxuICBpc1NlbGVjdGVkVG9SZWZ1bmQsXG4gIHNlbGVjdFRvUmVmdW5kLFxuICBpc0V4dGVybmFsQXNzaWduZWRUaWNrZXRcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG4gIGNvbnN0IG5vdyA9IHVzZU5vdygpO1xuICBjb25zdCB7IGlzUmVmdW5kYWJsZSwgaXNVbmFzc2lnbmVkLCBpc0luY29tcGxldGUsIGNhblJlYXNzaWduIH0gPVxuICAgIHVzZVRpY2tldERldGFpbHModGlja2V0KTtcbiAgY29uc3QgW21vZGFsT3Blbiwgc2V0TW9kYWxPcGVuXSA9IHVzZVN0YXRlKG51bGwpO1xuICBjb25zdCByZWFzc2lnbkRhdGUgPSBnZXRTdW1taXRSZWFzc2lnbkRhdGUoc3VtbWl0KTtcbiAgY29uc3Qgb25SZWFzc2lnbmFibGVQZXJpb2QgPSByZWFzc2lnbkRhdGUgPiBub3c7XG4gIGNvbnN0IGlzUmVhc3NpZ25hYmxlID1cbiAgICBvblJlYXNzaWduYWJsZVBlcmlvZCAmJiBjYW5SZWFzc2lnbiAmJiAhaXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0O1xuXG4gIGNvbnN0IGhhbmRsZUNsb3NlTW9kYWwgPSAoKSA9PiB7XG4gICAgZGlzcGF0Y2gocmVzZXRUaWNrZXQoKSk7XG4gICAgc2V0TW9kYWxPcGVuKG51bGwpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZU9wZW5Nb2RhbCA9ICh2aWV3KSA9PiB7XG4gICAgZGlzcGF0Y2gocmVzZXRUaWNrZXQoKSk7XG4gICAgc2V0TW9kYWxPcGVuKHZpZXcpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPEdyaWRcbiAgICAgIGNvbnRhaW5lclxuICAgICAga2V5PXt0aWNrZXQuaWR9XG4gICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5vcmRlcldyYXBwZXJ9ICR7XG4gICAgICAgIGlzUmVmdW5kTW9kYWwgPyBzdHlsZXMucmVmdW5kTW9kYWwgOiBcIlwiXG4gICAgICB9ICR7aXNSZWZ1bmRNb2RhbCAmJiAhaXNSZWZ1bmRhYmxlID8gc3R5bGVzLmRpc2FibGVkUmVmdW5kIDogXCJcIn0gJHtcbiAgICAgICAgaXNTZWxlY3RlZFRvUmVmdW5kID8gc3R5bGVzLnNlbGVjdGVkIDogXCJcIlxuICAgICAgfWB9XG4gICAgPlxuICAgICAge2lzUmVmdW5kTW9kYWwgJiYgKFxuICAgICAgICA8R3JpZCBpdGVtIHhzPXsxfSBwYWRkaW5nPXsyfSBjbGFzc05hbWU9e3N0eWxlcy5jaGVja2JveH0+XG4gICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICBhcmlhLWxhYmVsPVwicmVmdW5kIHRpY2tldCBjaGVja2JveFwiXG4gICAgICAgICAgICByb2xlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgY2hlY2tlZD17aXNTZWxlY3RlZFRvUmVmdW5kfVxuICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBzZWxlY3RUb1JlZnVuZChlLCB0aWNrZXQpfVxuICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgXCImIC5NdWlTdmdJY29uLXJvb3RcIjoge1xuICAgICAgICAgICAgICAgIGZvbnRTaXplOiAxOFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgZGlzYWJsZWQ9eyFpc1JlZnVuZGFibGV9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgKX1cbiAgICAgIDxHcmlkXG4gICAgICAgIGl0ZW1cbiAgICAgICAgY29udGFpbmVyXG4gICAgICAgIGRhdGEtdGVzdGlkPVwib3JkZXItbGlzdC10aWNrZXRcIlxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICAgICAgeHM9e2lzUmVmdW5kTW9kYWwgPyAxMSA6IDEyfVxuICAgICAgPlxuICAgICAgICA8R3JpZFxuICAgICAgICAgIHhzPXs4fVxuICAgICAgICAgIHB5PXsyfVxuICAgICAgICAgIHBsPXs0fVxuICAgICAgICAgIGl0ZW1cbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRUaWNrZXRUeXBlfVxuICAgICAgICAgIGp1c3RpZnk9XCJzcGFjZS1iZXR3ZWVuXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxTdGFja1xuICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6IFwiZmxleC1zdGFydFwiXG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgZGlyZWN0aW9uPVwicm93XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aDQ+e3RpY2tldC50aWNrZXRfdHlwZT8ubmFtZX08L2g0PlxuICAgICAgICAgIDwvU3RhY2s+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICAgPEdyaWQgY2xhc3NOYW1lPXtzdHlsZXMuYmFkZ2VGZWF0dXJlV3JhcHBlcn0geHM9ezR9IHB5PXsyfSBwcj17NH0gaXRlbT5cbiAgICAgICAgICB7LyogVG8gYWRkIGJhZGdlIGZlYXR1cmVzICovfVxuICAgICAgICAgIHt0aWNrZXQuYmFkZ2U/LmZlYXR1cmVzLm1hcCgoYmYpID0+IChcbiAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuYmFkZ2VGZWF0dXJlfVxuICAgICAgICAgICAgICBzcmM9e2JmLmltYWdlfVxuICAgICAgICAgICAgICBhbHQ9e2JmLm5hbWV9XG4gICAgICAgICAgICAgIGtleT17YmYubmFtZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICAgPEdyaWQgeHM9ezEyfSBzeD17eyBweDogNCwgcGI6IDIgfX0gaXRlbT5cbiAgICAgICAgICA8QXR0ZW5kZWVTdGF0dXNcbiAgICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgICAgaXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0PXshIWlzRXh0ZXJuYWxBc3NpZ25lZFRpY2tldH1cbiAgICAgICAgICAvPlxuICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldE5vfT5cbiAgICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy50aWNrZXRfbm9cIil9OntcIiBcIn1cbiAgICAgICAgICAgIDxDb3B5VGV4dFxuICAgICAgICAgICAgICB0ZXh0PXt0aWNrZXQubnVtYmVyfVxuICAgICAgICAgICAgICB0b29sdGlwVGV4dD17dChcInRpY2tldF9zdGF0dXMuY29weV90aWNrZXRfbnVtYmVyXCIpfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICAgPEJveCBzeD17eyBkaXNwbGF5OiBcImZsZXhcIiwgZmxleFdyYXA6IFwid3JhcFwiLCB3aWR0aDogXCIxMDAlXCIgfX0+XG4gICAgICAgICAgPEJveCBzeD17eyBtaW5XaWR0aDogXCIzMDBweFwiIH19PlxuICAgICAgICAgICAgPFRpY2tldFN0YXR1cyB0aWNrZXQ9e3RpY2tldH0gLz5cbiAgICAgICAgICA8L0JveD5cbiAgICAgICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldEFjdGlvbkJ1dHRvbnN9PlxuICAgICAgICAgICAge3RpY2tldC5pc19hY3RpdmUgJiYgIWlzUmVmdW5kTW9kYWwgJiYgKFxuICAgICAgICAgICAgICA8VGlja2V0Q1RBc1xuICAgICAgICAgICAgICAgIGlzVW5hc3NpZ25lZD17aXNVbmFzc2lnbmVkfVxuICAgICAgICAgICAgICAgIGlzSW5jb21wbGV0ZT17aXNJbmNvbXBsZXRlfVxuICAgICAgICAgICAgICAgIGlzUmVhc3NpZ25hYmxlPXtpc1JlYXNzaWduYWJsZSAmJiAhaXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0fVxuICAgICAgICAgICAgICAgIG9uT3BlbkNsaWNrPXtoYW5kbGVPcGVuTW9kYWx9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvQm94PlxuICAgICAgICA8L0JveD5cbiAgICAgICAgPFRpY2tldERldGFpbFxuICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgIHRpY2tldElkPXt0aWNrZXQ/LmlkfVxuICAgICAgICAgIG9yZGVySWQ9e3RpY2tldD8ub3JkZXJfaWQgfHwgdGlja2V0Py5vcmRlcj8uaWR9XG4gICAgICAgICAgb3duZXJJZD17dGlja2V0Py5vd25lcj8uaWR9XG4gICAgICAgICAgb3Blbj17bW9kYWxPcGVuID09PSBtb2RhbFZpZXdzLmRldGFpbH1cbiAgICAgICAgICBvbkNsb3NlPXtoYW5kbGVDbG9zZU1vZGFsfVxuICAgICAgICAvPlxuICAgICAgICA8VGlja2V0QXNzaWduXG4gICAgICAgICAgdGlja2V0SWQ9e3RpY2tldD8uaWR9XG4gICAgICAgICAgb3JkZXJJZD17dGlja2V0Py5vcmRlcl9pZCB8fCB0aWNrZXQ/Lm9yZGVyPy5pZH1cbiAgICAgICAgICBvd25lcklkPXt0aWNrZXQ/Lm93bmVyPy5pZH1cbiAgICAgICAgICBvcGVuPXtbbW9kYWxWaWV3cy5yZWFzc2lnbiwgbW9kYWxWaWV3cy5hc3NpZ25dLmluY2x1ZGVzKG1vZGFsT3Blbil9XG4gICAgICAgICAgb25DbG9zZT17aGFuZGxlQ2xvc2VNb2RhbH1cbiAgICAgICAgLz5cbiAgICAgIDwvR3JpZD5cbiAgICA8L0dyaWQ+XG4gICk7XG59O1xuXG5PcmRlckxpc3RUaWNrZXRzLnByb3BUeXBlcyA9IHtcbiAgdGlja2V0OiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIGlkOiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIG9yZGVyX2lkOiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIG93bmVyOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgICAgaWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgICBlbWFpbDogUHJvcFR5cGVzLnN0cmluZ1xuICAgIH0pLFxuICAgIG51bWJlcjogUHJvcFR5cGVzLnN0cmluZyxcbiAgICB0b3RhbF9yZWZ1bmRlZF9hbW91bnQ6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgdGlja2V0X3R5cGU6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICBuYW1lOiBQcm9wVHlwZXMuc3RyaW5nXG4gICAgfSksXG4gICAgaXNfYWN0aXZlOiBQcm9wVHlwZXMuYm9vbFxuICB9KSxcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LFxuICBpc1JlZnVuZE1vZGFsOiBQcm9wVHlwZXMuYm9vbCxcbiAgaXNTZWxlY3RlZFRvUmVmdW5kOiBQcm9wVHlwZXMuYm9vbCxcbiAgc2VsZWN0VG9SZWZ1bmQ6IFByb3BUeXBlcy5mdW5jLFxuICBpc0V4dGVybmFsQXNzaWduZWRUaWNrZXQ6IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBPcmRlckxpc3RUaWNrZXRzO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBHcmlkLCBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IFRhYnMgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvVGFic1wiO1xuaW1wb3J0IFRhYiBmcm9tIFwiQG11aS9tYXRlcmlhbC9UYWJcIjtcbmltcG9ydCBPcmRlckxpc3RJdGVtIGZyb20gXCIuL09yZGVyTGlzdEl0ZW1cIjtcbmltcG9ydCBPcmRlclN1bW1hcnkgZnJvbSBcIi4uL09yZGVyU3VtbWFyeVwiO1xuaW1wb3J0IFJlZnVuZFJlcXVlc3RzTW9kYWwgZnJvbSBcIi4uL1JlZnVuZFJlcXVlc3RzXCI7XG5pbXBvcnQgRXJyb3JMYWJlbCBmcm9tIFwiLi4vTGFiZWxzL0Vycm9yTGFiZWxcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCBSZWZ1bmREZXRhaWxzIGZyb20gXCIuLi9SZWZ1bmRSZXF1ZXN0cy9SZWZ1bmREZXRhaWxzXCI7XG5cbmNvbnN0IFRhYlBhbmVsID0gKHByb3BzKSA9PiB7XG4gIGNvbnN0IHsgY2hpbGRyZW4sIHZhbHVlLCBpbmRleCB9ID0gcHJvcHM7XG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgcm9sZT1cInRhYnBhbmVsXCJcbiAgICAgIGhpZGRlbj17dmFsdWUgIT09IGluZGV4fVxuICAgICAgaWQ9e2B0YWJwYW5lbC0ke2luZGV4fWB9XG4gICAgICBhcmlhLWxhYmVsbGVkYnk9e2B0YWItJHtpbmRleH1gfVxuICAgID5cbiAgICAgIHt2YWx1ZSA9PT0gaW5kZXggJiYgY2hpbGRyZW59XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5jb25zdCBPcmRlcnNMaXN0RGVza3RvcE1vYmlsZSA9ICh7XG4gIGlzTW9iaWxlLFxuICBzdW1taXQsXG4gIG9yZGVyLFxuICBkZXRhaWxzUmVxdWlyZWQsXG4gIG9uUGFnaW5hdGVDbGlja1xufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IFt2YWx1ZSwgc2V0VmFsdWVdID0gdXNlU3RhdGUoMCk7XG4gIGNvbnN0IGhhbmRsZUNoYW5nZSA9IChfLCBuZXdWYWx1ZSkgPT4ge1xuICAgIHNldFZhbHVlKG5ld1ZhbHVlKTtcbiAgfTtcbiAgY29uc3QgW3RpY2tldHNUb1JlZnVuZCwgc2V0VGlja2V0c1RvUmVmdW5kXSA9IHVzZVN0YXRlKFtdKTtcbiAgY29uc3QgW3N1Ym1pdFJlcXVlc3QsIHNldFN1Ym1pdFJlcXVlc3RdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbcmVmdW5kRGV0YWlsc09wZW4sIHNldFJlZnVuZERldGFpbHNPcGVuXSA9IHVzZVN0YXRlKGZhbHNlKTtcblxuICBjb25zdCBvblJlZnVuZENsaWNrID0gKCkgPT4ge1xuICAgIHNldFN1Ym1pdFJlcXVlc3QodHJ1ZSk7XG4gIH07XG4gIGNvbnN0IHVuc2VsZWN0UmVmdW5kVGlja2V0cyA9ICh0aWNrZXQpID0+IHtcbiAgICBjb25zdCBmaWx0ZXJTZWxlY3RlZCA9IHRpY2tldHNUb1JlZnVuZC5maWx0ZXIoKHQpID0+IHQuaWQgIT09IHRpY2tldC5pZCk7XG4gICAgc2V0VGlja2V0c1RvUmVmdW5kKGZpbHRlclNlbGVjdGVkKTtcbiAgfTtcbiAgY29uc3Qgc2VsZWN0VG9SZWZ1bmQgPSAoZSwgdGlja2V0KSA9PiB7XG4gICAgY29uc3QgeyBjaGVja2VkIH0gPSBlLnRhcmdldDtcbiAgICBpZiAoY2hlY2tlZCkge1xuICAgICAgY29uc3Qgc2VsZWN0ZWRUaWNrZXQgPSBvcmRlcj8ubWVtYmVyVGlja2V0cz8uZmluZChcbiAgICAgICAgKHQpID0+IHQuaWQgPT09IHRpY2tldC5pZFxuICAgICAgKTtcbiAgICAgIHNldFRpY2tldHNUb1JlZnVuZChbLi4udGlja2V0c1RvUmVmdW5kLCBzZWxlY3RlZFRpY2tldF0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB1bnNlbGVjdFJlZnVuZFRpY2tldHModGlja2V0KTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgY2xvc2VTdWJtaXRSZXF1ZXN0ID0gKCkgPT4ge1xuICAgIHNldFN1Ym1pdFJlcXVlc3QoZmFsc2UpO1xuICAgIHNldFRpY2tldHNUb1JlZnVuZChbXSk7XG4gIH07XG5cbiAgY29uc3QgcmVzZXRBbGxSZWZ1bmRTdGF0dXNlcyA9ICgpID0+IHtcbiAgICBzZXRTdWJtaXRSZXF1ZXN0KGZhbHNlKTtcbiAgICBzZXRUaWNrZXRzVG9SZWZ1bmQoW10pO1xuICB9O1xuXG4gIGNvbnN0IG1vcmVEZXRhaWxzID0gKCkgPT5cbiAgICBkZXRhaWxzUmVxdWlyZWQgJiYgKFxuICAgICAgPEVycm9yTGFiZWxcbiAgICAgICAgbWVzc2FnZT17dChcInRpY2tldF9zdGF0dXMuc3RhdHVzX2RldGFpbHNfcmVxdWlyZWRcIil9XG4gICAgICAgIGNvbG9yPVwiI2ZmOTgwMFwiXG4gICAgICAgIGRhdGFUZXN0SWQ9XCJtb3JlLWRldGFpbHMtbGFiZWxcIlxuICAgICAgLz5cbiAgICApO1xuXG4gIHJldHVybiBpc01vYmlsZSA/IChcbiAgICA8Qm94XG4gICAgICBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRMaXN0Q29udGFpbmVyfVxuICAgICAgZGF0YS10ZXN0aWQ9XCJtb2JpbGUtb3JkZXJzLWxpc3QtY29udGFpbmVyXCJcbiAgICA+XG4gICAgICA8Qm94IHN4PXt7IGJvcmRlckNvbG9yOiBcImRpdmlkZXJcIiwgcGI6IDIgfX0+XG4gICAgICAgIDxUYWJzXG4gICAgICAgICAgdmFsdWU9e3ZhbHVlfVxuICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgYXJpYS1sYWJlbD1cIlRpY2tldHMgJiBTdW1tYXJ5XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxUYWIgbGFiZWw9e3QoXCJsYWJlbHMudGlja2V0c1wiKX0gY2xhc3NOYW1lPXtzdHlsZXMudGFiQnV0dG9uc30gLz5cbiAgICAgICAgICA8VGFiIGxhYmVsPXt0KFwibGFiZWxzLnN1bW1hcnlcIil9IGNsYXNzTmFtZT17c3R5bGVzLnRhYkJ1dHRvbnN9IC8+XG4gICAgICAgIDwvVGFicz5cbiAgICAgIDwvQm94PlxuICAgICAge21vcmVEZXRhaWxzKCl9XG4gICAgICA8VGFiUGFuZWwgdmFsdWU9e3ZhbHVlfSBpbmRleD17MH0+XG4gICAgICAgIDxPcmRlckxpc3RJdGVtXG4gICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgb3JkZXI9e29yZGVyfVxuICAgICAgICAgIG9uUGFnaW5hdGVDbGljaz17b25QYWdpbmF0ZUNsaWNrfVxuICAgICAgICAgIHRpY2tldHNUb1JlZnVuZD17dGlja2V0c1RvUmVmdW5kfVxuICAgICAgICAgIHNlbGVjdFRvUmVmdW5kPXtzZWxlY3RUb1JlZnVuZH1cbiAgICAgICAgICBzdWJtaXRSZXF1ZXN0PXtzdWJtaXRSZXF1ZXN0fVxuICAgICAgICAgIHVuc2VsZWN0UmVmdW5kVGlja2V0cz17dW5zZWxlY3RSZWZ1bmRUaWNrZXRzfVxuICAgICAgICAvPlxuICAgICAgPC9UYWJQYW5lbD5cbiAgICAgIDxUYWJQYW5lbCB2YWx1ZT17dmFsdWV9IGluZGV4PXsxfT5cbiAgICAgICAgPE9yZGVyU3VtbWFyeVxuICAgICAgICAgIG9yZGVyPXtvcmRlcn1cbiAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICBvblJlZnVuZENsaWNrPXtvblJlZnVuZENsaWNrfVxuICAgICAgICAgIHN1Ym1pdFJlcXVlc3Q9e3N1Ym1pdFJlcXVlc3R9XG4gICAgICAgIC8+XG4gICAgICA8L1RhYlBhbmVsPlxuICAgIDwvQm94PlxuICApIDogKFxuICAgIDw+XG4gICAgICA8R3JpZCBpdGVtIG1kPXsxMn0+XG4gICAgICAgIHttb3JlRGV0YWlscygpfVxuICAgICAgPC9HcmlkPlxuICAgICAgPEdyaWRcbiAgICAgICAgcGFkZGluZz17MX1cbiAgICAgICAgaXRlbVxuICAgICAgICBtZD17N31cbiAgICAgICAgb3JkZXI9e3sgbWQ6IDEgfX1cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0TGlzdENvbnRhaW5lcn1cbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJkZXNrdG9wLW9yZGVycy1saXN0LWNvbnRhaW5lclwiXG4gICAgICA+XG4gICAgICAgIDxPcmRlckxpc3RJdGVtXG4gICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgb3JkZXI9e29yZGVyfVxuICAgICAgICAgIG9uUGFnaW5hdGVDbGljaz17b25QYWdpbmF0ZUNsaWNrfVxuICAgICAgICAgIHRpY2tldHNUb1JlZnVuZD17dGlja2V0c1RvUmVmdW5kfVxuICAgICAgICAgIHNlbGVjdFRvUmVmdW5kPXtzZWxlY3RUb1JlZnVuZH1cbiAgICAgICAgICBzdWJtaXRSZXF1ZXN0PXtzdWJtaXRSZXF1ZXN0fVxuICAgICAgICAgIHVuc2VsZWN0UmVmdW5kVGlja2V0cz17dW5zZWxlY3RSZWZ1bmRUaWNrZXRzfVxuICAgICAgICAvPlxuICAgICAgPC9HcmlkPlxuICAgICAgPEdyaWQgcGFkZGluZz17MX0gaXRlbSBtZD17NX0gb3JkZXI9e3sgbWQ6IDEgfX0+XG4gICAgICAgIDxPcmRlclN1bW1hcnlcbiAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICBvcmRlcj17b3JkZXJ9XG4gICAgICAgICAgb25SZWZ1bmRDbGljaz17b25SZWZ1bmRDbGlja31cbiAgICAgICAgICBzdWJtaXRSZXF1ZXN0PXtzdWJtaXRSZXF1ZXN0fVxuICAgICAgICAgIG9uUmVmdW5kRGV0YWlsQ2xpY2s9eygpID0+IHNldFJlZnVuZERldGFpbHNPcGVuKHRydWUpfVxuICAgICAgICAvPlxuICAgICAgPC9HcmlkPlxuICAgICAgPFJlZnVuZFJlcXVlc3RzTW9kYWxcbiAgICAgICAgdGlja2V0cz17b3JkZXI/Lm1lbWJlclRpY2tldHMgfHwgW119XG4gICAgICAgIG9wZW49e3N1Ym1pdFJlcXVlc3R9XG4gICAgICAgIG9uUmVmdW5kU3VjY2Vzc0Nsb3NlPXsoKSA9PiByZXNldEFsbFJlZnVuZFN0YXR1c2VzKCl9XG4gICAgICAgIG9uQ2xvc2VTbGlkZXI9eygpID0+IGNsb3NlU3VibWl0UmVxdWVzdCgpfVxuICAgICAgICB0aWNrZXRzVG9SZWZ1bmQ9e3RpY2tldHNUb1JlZnVuZH1cbiAgICAgICAgc2VsZWN0VG9SZWZ1bmQ9e3NlbGVjdFRvUmVmdW5kfVxuICAgICAgICB1bnNlbGVjdFJlZnVuZFRpY2tldHM9e3Vuc2VsZWN0UmVmdW5kVGlja2V0c31cbiAgICAgIC8+XG4gICAgICA8UmVmdW5kRGV0YWlsc1xuICAgICAgICB0aWNrZXRzPXtvcmRlcj8ubWVtYmVyVGlja2V0c31cbiAgICAgICAgY3VycmVuY3k9e29yZGVyLmN1cnJlbmN5fVxuICAgICAgICBvcGVuPXtyZWZ1bmREZXRhaWxzT3Blbn1cbiAgICAgICAgb25DbG9zZVNsaWRlcj17KCkgPT4gc2V0UmVmdW5kRGV0YWlsc09wZW4oZmFsc2UpfVxuICAgICAgLz5cbiAgICA8Lz5cbiAgKTtcbn07XG5cbk9yZGVyc0xpc3REZXNrdG9wTW9iaWxlLnByb3BUeXBlcyA9IHtcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LFxuICBvcmRlcjogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBtZW1iZXJUaWNrZXRzOiBQcm9wVHlwZXMuYXJyYXlPZihPYmplY3QpXG4gIH0pLFxuICBpc01vYmlsZTogUHJvcFR5cGVzLmJvb2wsXG4gIGRldGFpbHNSZXF1aXJlZDogUHJvcFR5cGVzLmJvb2wsXG4gIG9uUGFnaW5hdGVDbGljazogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE9yZGVyc0xpc3REZXNrdG9wTW9iaWxlO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCwgdXNlU2VsZWN0b3IsIHNoYWxsb3dFcXVhbCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgR3JpZCwgQm94LCBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVGhlbWUgfSBmcm9tIFwiQG11aS9tYXRlcmlhbC9zdHlsZXNcIjtcbmltcG9ydCB1c2VNZWRpYVF1ZXJ5IGZyb20gXCJAbXVpL21hdGVyaWFsL3VzZU1lZGlhUXVlcnlcIjtcbmltcG9ydCB7IGdldFRpY2tldHNCeU9yZGVyIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcbmltcG9ydCB7IGdldEZvcm1hdHRlZERhdGUgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcbmltcG9ydCB7IE9ORV9QQUdFX05FWFQgfSBmcm9tIFwiLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5pbXBvcnQgT3JkZXJzTGlzdERlc2t0b3BNb2JpbGUgZnJvbSBcIi4vT3JkZXJzTGlzdERlc2t0b3BNb2JpbGVcIjtcbmltcG9ydCBDb3B5VGV4dCBmcm9tIFwiLi4vQ29weVRleHRcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgT3JkZXJzTGlzdCA9ICh7IHN1bW1pdCwgb3JkZXIgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3QgeyB0aWNrZXRfcGVyX3BhZ2UsIGZpbHRlciwgc29ydCB9ID0gdXNlU2VsZWN0b3IoXG4gICAgKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSB8fCB7fSxcbiAgICBzaGFsbG93RXF1YWxcbiAgKTtcbiAgY29uc3QgdGhlbWUgPSB1c2VUaGVtZSgpO1xuICBjb25zdCBpc01vYmlsZSA9IHVzZU1lZGlhUXVlcnkodGhlbWUuYnJlYWtwb2ludHMuZG93bihcImxnXCIpKTtcbiAgY29uc3QgW2lzTW9iaWxlVmlld2FibGUsIHNldE1vYmlsZVZpZXdhYmxlXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgZGV0YWlsc1JlcXVpcmVkID0gb3JkZXIubWVtYmVyVGlja2V0cz8uZmluZChcbiAgICAodGlja2V0KSA9PiB0aWNrZXQub3duZXI/LnN0YXR1cyA9PT0gXCJJbmNvbXBsZXRlXCJcbiAgKTtcblxuICBjb25zdCBvblBhZ2luYXRlQ2xpY2sgPSAoKSA9PlxuICAgIGRpc3BhdGNoKFxuICAgICAgZ2V0VGlja2V0c0J5T3JkZXIoe1xuICAgICAgICBvcmRlcklkOiBvcmRlci5pZCxcbiAgICAgICAgcGFnZTogb3JkZXIudGlja2V0c19wYWdlX2N1cnJlbnQgKyBPTkVfUEFHRV9ORVhULFxuICAgICAgICBwZXJQYWdlOiB0aWNrZXRfcGVyX3BhZ2UsXG4gICAgICAgIGZpbHRlcixcbiAgICAgICAgc29ydFxuICAgICAgfSlcbiAgICApO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxCb3hcbiAgICAgICAgc3g9e3tcbiAgICAgICAgICBwYWRkaW5nOiB7XG4gICAgICAgICAgICB4czogMixcbiAgICAgICAgICAgIG1kOiAxLFxuICAgICAgICAgICAgbGc6IDBcbiAgICAgICAgICB9XG4gICAgICAgIH19XG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyVGlja2V0SW5mb0NvbnRhaW5lcn1cbiAgICAgID5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclRpY2tldEluZm99XG4gICAgICAgICAgZGF0YS10ZXN0aWQ9XCJvcmRlci10aWNrZXQtaW5mby1jb250YWluZXJcIlxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJvcmRlcnMucHVyY2hhc2VkXCIpfToge2dldEZvcm1hdHRlZERhdGUob3JkZXIuY3JlYXRlZCl9IHx7XCIgXCJ9XG4gICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5Lm9yZGVyX25vXCIpfTp7XCIgXCJ9XG4gICAgICAgICAgPENvcHlUZXh0XG4gICAgICAgICAgICB0ZXh0PXtvcmRlci5udW1iZXJ9XG4gICAgICAgICAgICB0b29sdGlwVGV4dD17dChcIm9yZGVyX3N1bW1hcnkuY29weV9vcmRlcl9udW1iZXJcIil9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICB7aXNNb2JpbGUgJiYgKFxuICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgIHN4PXt7IHBhZGRpbmc6IFwiNXB4IDEwcHhcIiB9fVxuICAgICAgICAgICAgdmFyaWFudD1cImNvbnRhaW5lZFwiXG4gICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0TW9iaWxlVmlld2FibGUoIWlzTW9iaWxlVmlld2FibGUpfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtpc01vYmlsZVZpZXdhYmxlXG4gICAgICAgICAgICAgID8gdChcInRpY2tldF9zdGF0dXMuaGlkZV90aWNrZXRzXCIpXG4gICAgICAgICAgICAgIDogdChcInRpY2tldF9zdGF0dXMudmlld190aWNrZXRzXCIpfVxuICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICApfVxuICAgICAgPC9Cb3g+XG4gICAgICA8R3JpZFxuICAgICAgICBrZXk9e29yZGVyLmlkfVxuICAgICAgICBjb250YWluZXJcbiAgICAgICAgcm93U3BhY2luZz17MX1cbiAgICAgICAgY29sdW1uU3BhY2luZz17eyB4czogMSwgc206IDIsIG1kOiAzIH19XG4gICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLm9yZGVyVGlja2V0Q29udGFpbmVyfSAke1xuICAgICAgICAgIGlzTW9iaWxlICYmICFpc01vYmlsZVZpZXdhYmxlID8gc3R5bGVzLmRpc3BsYXlfbm9uZSA6IFwiXCJcbiAgICAgICAgfWB9XG4gICAgICAgIHN4PXt7XG4gICAgICAgICAgZmxleERpcmVjdGlvbjoge1xuICAgICAgICAgICAgbWQ6IFwicm93XCIsXG4gICAgICAgICAgICBsZzogXCJyb3dcIlxuICAgICAgICAgIH0sXG4gICAgICAgICAgcGFkZGluZzoge1xuICAgICAgICAgICAgeHM6IDIsXG4gICAgICAgICAgICBtZDogNCxcbiAgICAgICAgICAgIGxnOiAwXG4gICAgICAgICAgfVxuICAgICAgICB9fVxuICAgICAgPlxuICAgICAgICA8T3JkZXJzTGlzdERlc2t0b3BNb2JpbGVcbiAgICAgICAgICBpc01vYmlsZT17aXNNb2JpbGV9XG4gICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgb3JkZXI9e29yZGVyfVxuICAgICAgICAgIGRldGFpbHNSZXF1aXJlZD17ISFkZXRhaWxzUmVxdWlyZWR9XG4gICAgICAgICAgb25QYWdpbmF0ZUNsaWNrPXtvblBhZ2luYXRlQ2xpY2t9XG4gICAgICAgIC8+XG4gICAgICA8L0dyaWQ+XG4gICAgPC8+XG4gICk7XG59O1xuXG5PcmRlcnNMaXN0LnByb3BUeXBlcyA9IHtcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LFxuICBvcmRlcjogUHJvcFR5cGVzLm9iamVjdFxufTtcblxuZXhwb3J0IGRlZmF1bHQgT3JkZXJzTGlzdDtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VNZW1vIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IFJpZ2h0RHJhd2VyIGZyb20gXCIuLi9SaWdodERyYXdlclwiO1xuaW1wb3J0IFJlZnVuZFJlcXVlc3RlZFRpY2tldCBmcm9tIFwiLi9SZWZ1bmRSZXF1ZXN0ZWRUaWNrZXRcIjtcbmltcG9ydCB7IGdldEFsbFJlZnVuZFJlcXVlc3RlZFRpY2tldHMgfSBmcm9tIFwiLi4vLi4vdXRpbHMvdGlja2V0VXRpbHNcIjtcblxuY29uc3QgUmVmdW5kRGV0YWlscyA9ICh7IHRpY2tldHMsIGN1cnJlbmN5LCBvcGVuLCBvbkNsb3NlU2xpZGVyIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCByZXF1ZXN0ZWRUaWNrZXRzID0gdXNlTWVtbyhcbiAgICAoKSA9PiBnZXRBbGxSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXRzKHRpY2tldHMpLFxuICAgIFt0aWNrZXRzXVxuICApO1xuICBjb25zdCBjbG9zZVNsaWRlciA9ICgpID0+IHtcbiAgICBvbkNsb3NlU2xpZGVyKCk7XG4gIH07XG4gIHJldHVybiAoXG4gICAgPFJpZ2h0RHJhd2VyXG4gICAgICBpZD1cInJlZnVuZC1kZXRhaWxzXCJcbiAgICAgIG9wZW49e29wZW59XG4gICAgICBvbkNsb3NlPXtjbG9zZVNsaWRlcn1cbiAgICAgIHRpdGxlPXt0KFwib3JkZXJfc3VtbWFyeS5yZWZ1bmRfZGV0YWlsc1wiKX1cbiAgICA+XG4gICAgICA8Qm94XG4gICAgICAgIHN4PXt7XG4gICAgICAgICAgZGlzcGxheTogXCJmbGV4XCIsXG4gICAgICAgICAgZmxleERpcmVjdGlvbjogXCJjb2x1bW5cIixcbiAgICAgICAgICBhbGlnbkl0ZW1zOiBcImNlbnRlclwiLFxuICAgICAgICAgIHBhZGRpbmc6IFwiMCA1cmVtXCJcbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAge3JlcXVlc3RlZFRpY2tldHM/Lm1hcCgodGlja2V0KSA9PiAoXG4gICAgICAgICAgPFJlZnVuZFJlcXVlc3RlZFRpY2tldFxuICAgICAgICAgICAga2V5PXtgcmVmdW5kX3JlcV8ke3RpY2tldD8uaWR9YH1cbiAgICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgICAgY3VycmVuY3k9e2N1cnJlbmN5fVxuICAgICAgICAgICAgcmVmdW5kRGV0YWlsc1xuICAgICAgICAgIC8+XG4gICAgICAgICkpfVxuICAgICAgPC9Cb3g+XG4gICAgPC9SaWdodERyYXdlcj5cbiAgKTtcbn07XG5cblJlZnVuZERldGFpbHMucHJvcFR5cGVzID0ge1xuICB0aWNrZXRzOiBQcm9wVHlwZXMuYXJyYXlPZihPYmplY3QpLFxuICBvcGVuOiBQcm9wVHlwZXMuYm9vbCxcbiAgb25DbG9zZVNsaWRlcjogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJlZnVuZERldGFpbHM7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBHcmlkLCBJY29uQnV0dG9uLCBUb29sdGlwIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHRvb2x0aXBDbGFzc2VzIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWwvVG9vbHRpcFwiO1xuaW1wb3J0IHsgc3R5bGVkIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWwvc3R5bGVzXCI7XG5pbXBvcnQgSW5mb0ljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvSW5mb1wiO1xuaW1wb3J0IFN0YWNrIGZyb20gXCJAbXVpL21hdGVyaWFsL1N0YWNrXCI7XG5pbXBvcnQgbW9tZW50IGZyb20gXCJtb21lbnQtdGltZXpvbmVcIjtcbmltcG9ydCBBdHRlbmRlZVN0YXR1cyBmcm9tIFwiLi4vT3JkZXJzTGlzdC9BdHRlbmRlZVN0YXR1c1wiO1xuaW1wb3J0IFJlZnVuZFN0YXR1cyBmcm9tIFwiLi9SZWZ1bmRTdGF0dXNcIjtcbmltcG9ydCBDb3B5VGV4dCBmcm9tIFwiLi4vQ29weVRleHRcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IFRpY2tldFN0YXR1cyBmcm9tIFwiLi4vVGlja2V0U3RhdHVzXCI7XG5pbXBvcnQgeyBNSUxMSVNFQ19UT19TRUMgfSBmcm9tIFwiLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBmb3JtYXRDdXJyZW5jeSB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuXG5jb25zdCBSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXQgPSAoeyB0aWNrZXQsIGN1cnJlbmN5LCByZWZ1bmREZXRhaWxzIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuXG4gIGNvbnN0IEdSSURfOCA9IDg7XG4gIGNvbnN0IEdSSURfMTIgPSAxMjtcblxuICBjb25zdCBQQURESU5HXzIgPSAyO1xuXG4gIGNvbnN0IGFwcHJvdmVkUmVmdW5kcyA9IHRpY2tldC5yZWZ1bmRfcmVxdWVzdHMuZmlsdGVyKFxuICAgIChyZWZ1bmQpID0+IHJlZnVuZC5zdGF0dXMgPT09IFwiQXBwcm92ZWRcIlxuICApO1xuXG4gIGNvbnN0IHJlZnVuZGVkVGF4ZXNTdW1tYXRvcnkgPSB7fTtcblxuICBhcHByb3ZlZFJlZnVuZHMuZm9yRWFjaCgocmVmdW5kKSA9PiB7XG4gICAgcmVmdW5kLnJlZnVuZGVkX3RheGVzLmZvckVhY2goKHJ0KSA9PiB7XG4gICAgICBjb25zdCB0YXhJZCA9IHJ0LnRheC5pZDtcbiAgICAgIGlmICghcmVmdW5kZWRUYXhlc1N1bW1hdG9yeVt0YXhJZF0pIHtcbiAgICAgICAgcmVmdW5kZWRUYXhlc1N1bW1hdG9yeVt0YXhJZF0gPSB7XG4gICAgICAgICAgbmFtZTogcnQudGF4Lm5hbWUsXG4gICAgICAgICAgdG90YWxSZWZ1bmRlZFRheEFtb3VudDogMFxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgcmVmdW5kZWRUYXhlc1N1bW1hdG9yeVt0YXhJZF0udG90YWxSZWZ1bmRlZFRheEFtb3VudCArPVxuICAgICAgICBydC5yZWZ1bmRlZF9hbW91bnQ7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGNvbnN0IEh0bWxUb29sdGlwID0gc3R5bGVkKCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSkgPT4gKFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgIDxUb29sdGlwIHsuLi5wcm9wc30gY2xhc3Nlcz17eyBwb3BwZXI6IGNsYXNzTmFtZSB9fSAvPlxuICApKSgoKSA9PiAoe1xuICAgIFtgJiAuJHt0b29sdGlwQ2xhc3Nlcy50b29sdGlwfWBdOiB7XG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6IFwiI2Y1ZjVmOVwiLFxuICAgICAgY29sb3I6IFwicmdiYSgwLCAwLCAwLCAwLjg3KVwiLFxuICAgICAgbWF4V2lkdGg6IDIyMCxcbiAgICAgIGZvbnRTaXplOiBcIjFlbVwiLFxuICAgICAgYm9yZGVyOiBcIjFweCBzb2xpZCAjZGFkZGU5XCJcbiAgICB9XG4gIH0pKTtcblxuICByZXR1cm4gKFxuICAgIDxHcmlkXG4gICAgICBjb250YWluZXJcbiAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLnJlZnVuZFRpY2tldEJveENvbnRhaW5lcn0gJHtcbiAgICAgICAgcmVmdW5kRGV0YWlscyA/IHN0eWxlcy5yZWZ1bmREZXRhaWwgOiBcIlwiXG4gICAgICB9IGB9XG4gICAgICBkYXRhLXRlc3RpZD1cInJlZnVuZC1yZXF1ZXN0ZWQtdGlja2V0LWNvbnRhaW5lclwiXG4gICAgPlxuICAgICAgPEdyaWRcbiAgICAgICAgeHM9e3JlZnVuZERldGFpbHMgPyBHUklEXzggOiBHUklEXzEyfVxuICAgICAgICBpdGVtXG4gICAgICAgIGp1c3RpZnk9XCJzcGFjZS1iZXR3ZWVuXCJcbiAgICAgICAgcHQ9ezJ9XG4gICAgICAgIHB4PXs0fVxuICAgICAgPlxuICAgICAgICA8U3RhY2tcbiAgICAgICAgICBzeD17e1xuICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6IFwic3BhY2UtYmV0d2VlblwiLFxuICAgICAgICAgICAgYWxpZ25JdGVtczogXCJjZW50ZXJcIlxuICAgICAgICAgIH19XG4gICAgICAgICAgZGlyZWN0aW9uPVwicm93XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxoND57dGlja2V0LnRpY2tldF90eXBlPy5uYW1lfTwvaDQ+XG4gICAgICAgICAgPEdyaWQgY2xhc3NOYW1lPXtzdHlsZXMuYmFkZ2VGZWF0dXJlV3JhcHBlcn0geHM9ezR9IGl0ZW0+XG4gICAgICAgICAgICB7dGlja2V0LmJhZGdlPy5mZWF0dXJlcy5tYXAoKGJmKSA9PiAoXG4gICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5iYWRnZUZlYXR1cmV9XG4gICAgICAgICAgICAgICAgc3JjPXtiZi5pbWFnZX1cbiAgICAgICAgICAgICAgICBhbHQ9e2JmLm5hbWV9XG4gICAgICAgICAgICAgICAga2V5PXtiZi5uYW1lfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKSl9XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICA8L1N0YWNrPlxuICAgICAgPC9HcmlkPlxuICAgICAge3JlZnVuZERldGFpbHMgJiYgKFxuICAgICAgICA8R3JpZCB4cz17NH0gcGFkZGluZz17Mn0gaXRlbT5cbiAgICAgICAgICA8UmVmdW5kU3RhdHVzIHRpY2tldD17dGlja2V0fSAvPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICApfVxuICAgICAgPEdyaWQgeHM9ezEyfSBpdGVtIHB4PXs0fSBwYj17cmVmdW5kRGV0YWlscyA/IFBBRERJTkdfMiA6IDB9IGNvbnRhaW5lcj5cbiAgICAgICAgPEdyaWQgeHM9ezh9IGNsYXNzTmFtZT17c3R5bGVzLnJlZnVuZFRpY2tldEF0dGVuZGVlfT5cbiAgICAgICAgICA8QXR0ZW5kZWVTdGF0dXMgdGlja2V0PXt0aWNrZXR9IC8+XG4gICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0Tm99PlxuICAgICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnRpY2tldF9ub1wiKX06IDxDb3B5VGV4dCB0ZXh0PXt0aWNrZXQubnVtYmVyfSAvPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgICB7cmVmdW5kRGV0YWlscyAmJiB0aWNrZXQudG90YWxfcmVmdW5kZWRfYW1vdW50ID4gMCAmJiAoXG4gICAgICAgICAgPEdyaWQgeHM9ezR9IHBsPXs0fT5cbiAgICAgICAgICAgIHtmb3JtYXRDdXJyZW5jeSh0aWNrZXQudG90YWxfcmVmdW5kZWRfYW1vdW50LCB7IGN1cnJlbmN5IH0pfXtcIiBcIn1cbiAgICAgICAgICAgIFJlZnVuZGVkXG4gICAgICAgICAgICB7YXBwcm92ZWRSZWZ1bmRzLnNvbWUoKHIpID0+IHIucmVmdW5kZWRfdGF4ZXMubGVuZ3RoID4gMCkgJiYgKFxuICAgICAgICAgICAgICA8SHRtbFRvb2x0aXBcbiAgICAgICAgICAgICAgICB0aXRsZT17XG4gICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgICAgICAgICB7Zm9ybWF0Q3VycmVuY3kodGlja2V0LnJlZnVuZGVkX2Ftb3VudCwgeyBjdXJyZW5jeSB9KX17XCIgXCJ9XG4gICAgICAgICAgICAgICAgICAgICAgVGlja2V0IEFtb3VudFxuICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgIDxiPlRheGVzPC9iPlxuICAgICAgICAgICAgICAgICAgICB7T2JqZWN0LmtleXMocmVmdW5kZWRUYXhlc1N1bW1hdG9yeSkubWFwKCh0YXhJZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgdG90YWxSZWZ1bmRlZFRheEFtb3VudCwgbmFtZSB9ID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZnVuZGVkVGF4ZXNTdW1tYXRvcnlbdGF4SWRdO1xuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8cCBrZXk9e3RheElkfT57YCR7bmFtZX0gLSAke2Zvcm1hdEN1cnJlbmN5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICB0b3RhbFJlZnVuZGVkVGF4QW1vdW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgICB7IGN1cnJlbmN5IH1cbiAgICAgICAgICAgICAgICAgICAgICAgICl9YH08L3A+XG4gICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8SWNvbkJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDxJbmZvSWNvbiAvPlxuICAgICAgICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgICAgICAgPC9IdG1sVG9vbHRpcD5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8YnIgLz5cbiAgICAgICAgICAgIHttb21lbnQoXG4gICAgICAgICAgICAgIHRpY2tldC5yZWZ1bmRfcmVxdWVzdHNbMF0uYWN0aW9uX2RhdGUgKiBNSUxMSVNFQ19UT19TRUNcbiAgICAgICAgICAgICkuZm9ybWF0KFwiTU1NIERELCBZWVlZXCIpfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgKX1cbiAgICAgIDwvR3JpZD5cbiAgICAgIHshcmVmdW5kRGV0YWlscyAmJiAoXG4gICAgICAgIDxHcmlkIHhzPXsxMn0gcHI9ezR9IHBiPXsyfT5cbiAgICAgICAgICA8R3JpZCB4cz17MTJ9IGl0ZW0+XG4gICAgICAgICAgICA8VGlja2V0U3RhdHVzIHRpY2tldD17dGlja2V0fSAvPlxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgKX1cbiAgICA8L0dyaWQ+XG4gICk7XG59O1xuXG5SZWZ1bmRSZXF1ZXN0ZWRUaWNrZXQucHJvcFR5cGVzID0ge1xuICB0aWNrZXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIHJlZnVuZERldGFpbHM6IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXQ7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlTWVtbyB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQ2hpcCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBnZXRSZWZ1bmRSZXF1ZXN0ZWRTdGF0dXNDb2xvciB9IGZyb20gXCIuLi8uLi91dGlscy90aWNrZXRVdGlsc1wiO1xuXG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IFJlZnVuZFN0YXR1cyA9ICh7IHRpY2tldCB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3Qgc3RhdHVzQ29sb3IgPSB1c2VNZW1vKFxuICAgICgpID0+IGdldFJlZnVuZFJlcXVlc3RlZFN0YXR1c0NvbG9yKHRpY2tldCksXG4gICAgW3RpY2tldF1cbiAgKTtcbiAgcmV0dXJuIChcbiAgICA8Q2hpcFxuICAgICAgYXJpYS1sYWJlbD1cInRpY2tldCByZWZ1bmQgc3RhdHVzIGxhYmVsXCJcbiAgICAgIGxhYmVsPXt0KGB0aWNrZXRfc3RhdHVzLnJlZnVuZF9yZXF1ZXN0XyR7c3RhdHVzQ29sb3J9YCl9XG4gICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5idXR0b25QaWxsfSAke3N0eWxlc1tzdGF0dXNDb2xvcl19YH1cbiAgICAvPlxuICApO1xufTtcblxuUmVmdW5kU3RhdHVzLnByb3BUeXBlcyA9IHtcbiAgdGlja2V0OiBQcm9wVHlwZXMub2JqZWN0XG59O1xuXG5leHBvcnQgZGVmYXVsdCBSZWZ1bmRTdGF0dXM7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyBCb3gsIEJ1dHRvbiwgU3R5bGVkRW5naW5lUHJvdmlkZXIgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IENoZWNrQ2lyY2xlSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9DaGVja0NpcmNsZVwiO1xuaW1wb3J0IFJpZ2h0RHJhd2VyIGZyb20gXCIuLi9SaWdodERyYXdlclwiO1xuaW1wb3J0IEVycm9yTGFiZWwgZnJvbSBcIi4uL0xhYmVscy9FcnJvckxhYmVsXCI7XG5pbXBvcnQgeyByZWZ1bmRCdWxrVGlja2V0cywgdXBkYXRlVGlja2V0c1JlZnVuZFJlcXVlc3RlZCB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5pbXBvcnQgeyBTVEVQX09ORSwgU1RFUF9USFJFRSwgU1RFUF9UV08gfSBmcm9tIFwiLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgT3JkZXJMaXN0VGlja2V0cyBmcm9tIFwiLi4vT3JkZXJzTGlzdC9PcmRlckxpc3RUaWNrZXRzXCI7XG5pbXBvcnQgUmVmdW5kUmVxdWVzdGVkVGlja2V0IGZyb20gXCIuL1JlZnVuZFJlcXVlc3RlZFRpY2tldFwiO1xuXG5jb25zdCBSZWZ1bmRSZXF1ZXN0c01vZGFsID0gKHtcbiAgdGlja2V0cyxcbiAgc3VtbWl0LFxuICBvcGVuLFxuICBvblJlZnVuZFN1Y2Nlc3NDbG9zZSxcbiAgb25DbG9zZVNsaWRlcixcbiAgdGlja2V0c1RvUmVmdW5kLFxuICBzZWxlY3RUb1JlZnVuZCxcbiAgdW5zZWxlY3RSZWZ1bmRUaWNrZXRzXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCBbc3RlcCwgc2V0U3RlcF0gPSB1c2VTdGF0ZShTVEVQX09ORSk7XG4gIGNvbnN0IFtlcnJvck1zZywgc2V0RXJyb3JNc2ddID0gdXNlU3RhdGUoXCJcIik7XG4gIGNvbnN0IFtyZWZ1bmRTdWNjZXNzLCBzZXRSZWZ1bmRTdWNjZXNzXSA9IHVzZVN0YXRlKGZhbHNlKTtcblxuICBjb25zdCBjbG9zZVNsaWRlciA9ICgpID0+IHtcbiAgICBzZXRFcnJvck1zZyhcIlwiKTtcbiAgICBvbkNsb3NlU2xpZGVyKCk7XG4gICAgc2V0U3RlcChTVEVQX09ORSk7XG4gICAgaWYgKHJlZnVuZFN1Y2Nlc3MpIHtcbiAgICAgIG9uUmVmdW5kU3VjY2Vzc0Nsb3NlKCk7IC8vIGlmIHRoZSByZWZ1bmQgaXMgYSBzdWNjZXNzLCB0cmlnZ2VyIGFuZCByZS1yZXRyaWV2ZSB0aWNrZXRzIGJ5IG9yZGVyXG4gICAgICBzZXRSZWZ1bmRTdWNjZXNzKGZhbHNlKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgY29uZmlybVJlZnVuZCA9ICgpID0+IHtcbiAgICBzZXRTdGVwKFNURVBfVFdPKTtcbiAgfTtcblxuICBjb25zdCBnb0JhY2tUb1JlZnVuZCA9ICgpID0+IHtcbiAgICBzZXRTdGVwKFNURVBfT05FKTtcbiAgfTtcblxuICBjb25zdCByZWZ1bmRUaWNrZXRzID0gYXN5bmMgKCkgPT4ge1xuICAgIGRpc3BhdGNoKHJlZnVuZEJ1bGtUaWNrZXRzKHsgdGlja2V0czogdGlja2V0c1RvUmVmdW5kIH0pKS50aGVuKChyZXMpID0+IHtcbiAgICAgIGRpc3BhdGNoKHVwZGF0ZVRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQocmVzKSk7IC8vIHJldHVybmluZyB3aGljaCB0aWNrZXRzIHdlcmUgc3VjY2Vzc2Z1bFxuICAgICAgaWYgKHJlcz8ubGVuZ3RoID09PSB0aWNrZXRzVG9SZWZ1bmQubGVuZ3RoKSB7XG4gICAgICAgIHNldFN0ZXAoU1RFUF9USFJFRSk7IC8vIHN1Y2Nlc3MsIGFsbCByZWZ1bmRzIHdlcmUgcmVxdWVzdGVkXG4gICAgICAgIHNldFJlZnVuZFN1Y2Nlc3ModHJ1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZXRFcnJvck1zZyh0KFwiZXJyb3JzLnJlZnVuZF91bnN1Y2Nlc3NmdWxcIikpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHNldEVycm9yTXNnKFwiXCIpO1xuICB9O1xuXG4gIGNvbnN0IHJlZnVuZFN0ZXBPbmUgPSAoKSA9PiAoXG4gICAgPD5cbiAgICAgIDxoMiBjbGFzc05hbWU9e3N0eWxlcy5zdWJ0aXRsZX0+XG4gICAgICAgIHt0KFwiY29uZmlybV9wb3B1cC5xdWVzdGlvbl90ZXh0X3NlbGVjdF9yZWZ1bmRcIil9XG4gICAgICA8L2gyPlxuICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRMaXN0fT5cbiAgICAgICAge3RpY2tldHMubWFwKCh0aWNrZXQpID0+IChcbiAgICAgICAgICA8T3JkZXJMaXN0VGlja2V0c1xuICAgICAgICAgICAga2V5PXtgdGlja2V0LSR7dGlja2V0LmlkfWB9XG4gICAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgICAgaXNTZWxlY3RlZFRvUmVmdW5kPXtcbiAgICAgICAgICAgICAgISF0aWNrZXRzVG9SZWZ1bmQuZmluZCgodCkgPT4gdC5pZCA9PT0gdGlja2V0LmlkKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2VsZWN0VG9SZWZ1bmQ9e3NlbGVjdFRvUmVmdW5kfVxuICAgICAgICAgICAgdW5zZWxlY3RSZWZ1bmRUaWNrZXRzPXt1bnNlbGVjdFJlZnVuZFRpY2tldHN9XG4gICAgICAgICAgICBpc1JlZnVuZE1vZGFsXG4gICAgICAgICAgLz5cbiAgICAgICAgKSl9XG4gICAgICA8L0JveD5cbiAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuYWN0aW9uQnV0dG9uc30+XG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBhcmlhLWxhYmVsPVwicmVmdW5kLWNhbmNlbC1idXR0b25cIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNhbmNlbEJ1dHRvbn1cbiAgICAgICAgICBvbkNsaWNrPXtjbG9zZVNsaWRlcn1cbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwiZ2VuZXJhbC5jYW5jZWxcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgYXJpYS1sYWJlbD1cInJlZnVuZC1jb250aW51ZS1idXR0b25cIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNvbnRpbnVlQnV0dG9ufVxuICAgICAgICAgIG9uQ2xpY2s9e2NvbmZpcm1SZWZ1bmR9XG4gICAgICAgICAgZGlzYWJsZWQ9e3RpY2tldHNUb1JlZnVuZC5sZW5ndGggPT09IDB9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcImdlbmVyYWwuY29udGludWVcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgPC9Cb3g+XG4gICAgPC8+XG4gICk7XG5cbiAgY29uc3QgcmVmdW5kU3RlcFR3byA9ICgpID0+IChcbiAgICA8Qm94IGRhdGEtdGVzdGlkPVwicmVmdW5kLXJlcXVlc3Qtc3VjY2Vzc2Z1bFwiPlxuICAgICAgPGgzIGNsYXNzTmFtZT17c3R5bGVzLnN1YnRpdGxlfT5cbiAgICAgICAge3QoXCJjb25maXJtX3BvcHVwLnF1ZXN0aW9uX3RleHRfY29uZmlybV9yZWZ1bmRcIil9XG4gICAgICA8L2gzPlxuICAgICAge2Vycm9yTXNnICYmIChcbiAgICAgICAgPEVycm9yTGFiZWxcbiAgICAgICAgICBjbGFzc05hbWVzPXtzdHlsZXMucmVmdW5kRXJyb3JNc2d9XG4gICAgICAgICAgY29sb3I9XCIjRkYwMDAwXCJcbiAgICAgICAgICBkYXRhVGVzdElkPVwiZmFpbGVkLXJlZnVuZC1tZXNzYWdlXCJcbiAgICAgICAgICBtZXNzYWdlPXtlcnJvck1zZ31cbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldExpc3R9PlxuICAgICAgICB7dGlja2V0c1RvUmVmdW5kLm1hcCgodGlja2V0KSA9PiAoXG4gICAgICAgICAgPFJlZnVuZFJlcXVlc3RlZFRpY2tldFxuICAgICAgICAgICAga2V5PXtgcmVmdW5kX3JlcV8ke3RpY2tldD8uaWR9YH1cbiAgICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgIC8+XG4gICAgICAgICkpfVxuICAgICAgPC9Cb3g+XG4gICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLkNUQUJ1dHRvbldyYXBwZXJ9PlxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgYXJpYS1sYWJlbD1cInJlZnVuZC1yZXR1cm4tYnV0dG9uXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5jYW5jZWxCdXR0b259XG4gICAgICAgICAgb25DbGljaz17Z29CYWNrVG9SZWZ1bmR9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcImdlbmVyYWwuYmFja1wiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBhcmlhLWxhYmVsPVwicmVmdW5kLWNvbnRpbnVlLWJ1dHRvblwiXG4gICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuY29udGludWVCdXR0b259XG4gICAgICAgICAgb25DbGljaz17cmVmdW5kVGlja2V0c31cbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwiZ2VuZXJhbC5jb250aW51ZVwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICA8L0JveD5cbiAgICA8L0JveD5cbiAgKTtcblxuICBjb25zdCByZWZ1bmRTdGVwVGhyZWUgPSAoKSA9PiAoXG4gICAgPEJveFxuICAgICAgY2xhc3NOYW1lPXtzdHlsZXMucmVmdW5kU3VjY2Vzc2Z1bH1cbiAgICAgIGRhdGEtdGVzdGlkPVwicmVmdW5kLXJlcXVlc3Qtc3VjY2Vzc2Z1bFwiXG4gICAgPlxuICAgICAgPENoZWNrQ2lyY2xlSWNvbiBzeD17eyBjb2xvcjogXCIjNGNhZjUwXCIgfX0gLz5cbiAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzLnN1Y2Nlc3NNc2d9PlxuICAgICAgICB7dChcInRpY2tldHMucmVmdW5kX3JlcXVlc3Rfc3VjY2Vzc18xXCIpfVxuICAgICAgPC9zcGFuPlxuICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXMuc3VjY2Vzc01zZzJ9PlxuICAgICAgICB7dChcInRpY2tldHMucmVmdW5kX3JlcXVlc3Rfc3VjY2Vzc18yXCIpfVxuICAgICAgPC9zcGFuPlxuICAgICAgPEJ1dHRvblxuICAgICAgICBhcmlhLWxhYmVsPVwicmVmdW5kLWZpbmlzaC1idXR0b25cIlxuICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuY29udGludWVCdXR0b259XG4gICAgICAgIG9uQ2xpY2s9e2Nsb3NlU2xpZGVyfVxuICAgICAgPlxuICAgICAgICB7dChcImdlbmVyYWwuZmluaXNoXCIpfVxuICAgICAgPC9CdXR0b24+XG4gICAgPC9Cb3g+XG4gICk7XG5cbiAgY29uc3QgcmVuZGVyU3RlcHMgPSAoKSA9PiB7XG4gICAgc3dpdGNoIChzdGVwKSB7XG4gICAgICBjYXNlIFNURVBfT05FOlxuICAgICAgICByZXR1cm4gcmVmdW5kU3RlcE9uZSgpO1xuICAgICAgY2FzZSBTVEVQX1RXTzpcbiAgICAgICAgcmV0dXJuIHJlZnVuZFN0ZXBUd28oKTtcbiAgICAgIGNhc2UgU1RFUF9USFJFRTpcbiAgICAgICAgcmV0dXJuIHJlZnVuZFN0ZXBUaHJlZSgpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIHJlZnVuZFN0ZXBPbmUoKTtcbiAgICB9XG4gIH07XG4gIHJldHVybiAoXG4gICAgPFN0eWxlZEVuZ2luZVByb3ZpZGVyIGluamVjdEZpcnN0PlxuICAgICAgPFJpZ2h0RHJhd2VyXG4gICAgICAgIGlkPVwicmVmdW5kLXJlcXVlc3RzXCJcbiAgICAgICAgb3Blbj17b3Blbn1cbiAgICAgICAgb25DbG9zZT17Y2xvc2VTbGlkZXJ9XG4gICAgICAgIHRpdGxlPXt0KFwib3JkZXJfc3VtbWFyeS5yZXF1ZXN0X3JlZnVuZFwiKX1cbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJyZWZ1bmQtcmVxdWVzdC1tb2RhbFwiXG4gICAgICA+XG4gICAgICAgIHtyZW5kZXJTdGVwcygpfVxuICAgICAgPC9SaWdodERyYXdlcj5cbiAgICA8L1N0eWxlZEVuZ2luZVByb3ZpZGVyPlxuICApO1xufTtcblxuUmVmdW5kUmVxdWVzdHNNb2RhbC5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldHM6IFByb3BUeXBlcy5hcnJheU9mKE9iamVjdCksXG4gIG9wZW46IFByb3BUeXBlcy5ib29sLFxuICBvblJlZnVuZFN1Y2Nlc3NDbG9zZTogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uQ2xvc2VTbGlkZXI6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBSZWZ1bmRSZXF1ZXN0c01vZGFsO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgQm94LCBJY29uQnV0dG9uLCBUeXBvZ3JhcGh5LCBEcmF3ZXIgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgQ2xvc2UgYXMgQ2xvc2VJY29uIH0gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWxcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgUmlnaHREcmF3ZXIgPSAoeyBpZCwgdGl0bGUsIGNoaWxkcmVuLCBvcGVuLCBvbkNsb3NlLCBjbGFzc05hbWUgfSkgPT4gKFxuICA8RHJhd2VyXG4gICAgaWQ9e2lkfVxuICAgIG9wZW49e29wZW59XG4gICAgb25DbG9zZT17b25DbG9zZX1cbiAgICBhbmNob3I9XCJyaWdodFwiXG4gICAgTW9kYWxQcm9wcz17eyBrZWVwTW91bnRlZDogZmFsc2UgfX1cbiAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy53cmFwcGVyfSAke2NsYXNzTmFtZX1gfVxuICA+XG4gICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5oZWFkZXJ9PlxuICAgICAgPEljb25CdXR0b25cbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJjbG9zZS1kcmF3ZXJcIlxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5jbG9zZUJ0bn1cbiAgICAgICAgb25DbGljaz17b25DbG9zZX1cbiAgICAgICAgc3g9e3sgZmxvYXQ6IFwicmlnaHRcIiB9fVxuICAgICAgICBmb250U2l6ZT1cImxhcmdlXCJcbiAgICAgID5cbiAgICAgICAgPENsb3NlSWNvbiAvPlxuICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImg2XCIgZ3V0dGVyQm90dG9tIGNsYXNzTmFtZT17c3R5bGVzLnRpdGxlfT5cbiAgICAgICAge3RpdGxlfVxuICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgIDwvQm94PlxuICAgIHtjaGlsZHJlbn1cbiAgPC9EcmF3ZXI+XG4pO1xuXG5SaWdodERyYXdlci5wcm9wVHlwZXMgPSB7XG4gIGlkOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIHRpdGxlOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuc3RyaW5nLCBQcm9wVHlwZXMubm9kZV0pLFxuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gIG9wZW46IFByb3BUeXBlcy5ib29sLFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYyxcbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nXG59O1xuXG5leHBvcnQgZGVmYXVsdCBSaWdodERyYXdlcjtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHNoYWxsb3dFcXVhbCwgdXNlU2VsZWN0b3IgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5cbmltcG9ydCB7IGdldFN1bW1pdEZvcm1hdHRlZERhdGUgfSBmcm9tIFwiLi4vLi4vdXRpbHMvc3VtbWl0VXRpbHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgU3VtbWl0SGVhZGVyID0gKCkgPT4ge1xuICBjb25zdCB7IHN1bW1pdCB9ID0gdXNlU2VsZWN0b3IoXG4gICAgKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSB8fCB7fSxcbiAgICBzaGFsbG93RXF1YWxcbiAgKTtcbiAgcmV0dXJuIChcbiAgICA8Qm94XG4gICAgICBjbGFzc05hbWU9e3N0eWxlcy53aWRnZXRIZWFkZXJ9XG4gICAgICBzeD17eyBwYWRkaW5nOiB7IHhzOiAyLCBtZDogMCwgbGc6IDAgfSB9fVxuICAgICAgZGF0YS10ZXN0aWQ9XCJteS1vcmRlcnMtdGlja2V0LWhlYWRlclwiXG4gICAgPlxuICAgICAgPGgyIGNsYXNzTmFtZT17c3R5bGVzLnN1bW1pdFRpdGxlRGF0ZX0+e3N1bW1pdD8ubmFtZX08L2gyPlxuICAgICAgPGgyIGNsYXNzTmFtZT17c3R5bGVzLnN1bW1pdFRpdGxlRGF0ZX0+XG4gICAgICAgIHtnZXRTdW1taXRGb3JtYXR0ZWREYXRlKHN1bW1pdCl9XG4gICAgICA8L2gyPlxuICAgIDwvQm94PlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgU3VtbWl0SGVhZGVyO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgVGV4dEZpZWxkLCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZUZvcm1payB9IGZyb20gXCJmb3JtaWtcIjtcbmltcG9ydCAqIGFzIHl1cCBmcm9tIFwieXVwXCI7XG5cbmltcG9ydCBGb3JtRm9vdGVyIGZyb20gXCIuLi8uLi8uLi9Gb3JtRm9vdGVyXCI7XG5cbmNvbnN0IERlbGVnYXRlRm9ybSA9ICh7IG9uU3VibWl0LCBvbkNsb3NlIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuXG4gIGNvbnN0IGZvcm1payA9IHVzZUZvcm1payh7XG4gICAgaW5pdGlhbFZhbHVlczoge1xuICAgICAgZGVsZWdhdGVfZmlyc3RfbmFtZTogXCJcIixcbiAgICAgIGRlbGVnYXRlX2xhc3RfbmFtZTogXCJcIixcbiAgICAgIGRlbGVnYXRlX2VtYWlsOiBcIlwiXG4gICAgfSxcbiAgICB2YWxpZGF0aW9uU2NoZW1hOiB5dXAub2JqZWN0KHtcbiAgICAgIGRlbGVnYXRlX2ZpcnN0X25hbWU6IHl1cFxuICAgICAgICAuc3RyaW5nKHQoXCJ2YWxpZGF0aW9uLmZpcnN0X25hbWUuc3RyaW5nXCIpKVxuICAgICAgICAucmVxdWlyZWQodChcInZhbGlkYXRpb24uZmlyc3RfbmFtZS5yZXF1aXJlZFwiKSksXG4gICAgICBkZWxlZ2F0ZV9sYXN0X25hbWU6IHl1cFxuICAgICAgICAuc3RyaW5nKHQoXCJ2YWxpZGF0aW9uLmxhc3RfbmFtZS5zdHJpbmdcIikpXG4gICAgICAgIC5yZXF1aXJlZCh0KFwidmFsaWRhdGlvbi5sYXN0X25hbWUucmVxdWlyZWRcIikpLFxuICAgICAgZGVsZWdhdGVfZW1haWw6IHl1cFxuICAgICAgICAuc3RyaW5nKHQoXCJ2YWxpZGF0aW9uLmVtYWlsLnN0cmluZ1wiKSlcbiAgICAgICAgLmVtYWlsKHQoXCJ2YWxpZGF0aW9uLmVtYWlsLmZvcm1hdFwiKSlcbiAgICB9KSxcbiAgICBvblN1Ym1pdDogKHZhbHVlcywgeyByZXNldEZvcm0gfSkgPT4ge1xuICAgICAgb25TdWJtaXQodmFsdWVzKTtcbiAgICAgIHJlc2V0Rm9ybSgpO1xuICAgIH1cbiAgfSk7XG5cbiAgY29uc3QgaGFuZGxlQ2FuY2VsID0gKCkgPT4ge1xuICAgIGZvcm1pay5yZXNldEZvcm0oKTtcbiAgICBvbkNsb3NlKCk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImg2XCIgZ3V0dGVyQm90dG9tPlxuICAgICAgICB7dChcInRpY2tldF9hc3NpZ24uZGVsZWdhdGVfZm9ybS50aXRsZVwiKX1cbiAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJib2R5MVwiIGd1dHRlckJvdHRvbSBzeD17eyBjb2xvcjogXCJ0ZXh0LnNlY29uZGFyeVwiIH19PlxuICAgICAgICB7dChcInRpY2tldF9hc3NpZ24uZGVsZWdhdGVfZm9ybS5ib2R5XCIpfVxuICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgPGZvcm0gb25TdWJtaXQ9e2Zvcm1pay5oYW5kbGVTdWJtaXR9IG5vVmFsaWRhdGU+XG4gICAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgICBuYW1lPVwiZGVsZWdhdGVfZmlyc3RfbmFtZVwiXG4gICAgICAgICAgbWFyZ2luPVwibm9ybWFsXCJcbiAgICAgICAgICBsYWJlbD17dChcInRpY2tldF9hc3NpZ24uZGVsZWdhdGVfZm9ybS5maXJzdF9uYW1lXCIpfVxuICAgICAgICAgIHZhbHVlPXtmb3JtaWsudmFsdWVzLmRlbGVnYXRlX2ZpcnN0X25hbWV9XG4gICAgICAgICAgb25DaGFuZ2U9e2Zvcm1pay5oYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgb25CbHVyPXtmb3JtaWsuaGFuZGxlQmx1cn1cbiAgICAgICAgICBlcnJvcj17XG4gICAgICAgICAgICBmb3JtaWsudG91Y2hlZC5kZWxlZ2F0ZV9maXJzdF9uYW1lICYmXG4gICAgICAgICAgICBCb29sZWFuKGZvcm1pay5lcnJvcnMuZGVsZWdhdGVfZmlyc3RfbmFtZSlcbiAgICAgICAgICB9XG4gICAgICAgICAgaGVscGVyVGV4dD17XG4gICAgICAgICAgICBmb3JtaWsudG91Y2hlZC5kZWxlZ2F0ZV9maXJzdF9uYW1lICYmXG4gICAgICAgICAgICBmb3JtaWsuZXJyb3JzLmRlbGVnYXRlX2ZpcnN0X25hbWVcbiAgICAgICAgICB9XG4gICAgICAgICAgcmVxdWlyZWRcbiAgICAgICAgLz5cbiAgICAgICAgPFRleHRGaWVsZFxuICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgIG5hbWU9XCJkZWxlZ2F0ZV9sYXN0X25hbWVcIlxuICAgICAgICAgIG1hcmdpbj1cIm5vcm1hbFwiXG4gICAgICAgICAgbGFiZWw9e3QoXCJ0aWNrZXRfYXNzaWduLmRlbGVnYXRlX2Zvcm0ubGFzdF9uYW1lXCIpfVxuICAgICAgICAgIHZhbHVlPXtmb3JtaWsudmFsdWVzLmRlbGVnYXRlX2xhc3RfbmFtZX1cbiAgICAgICAgICBvbkNoYW5nZT17Zm9ybWlrLmhhbmRsZUNoYW5nZX1cbiAgICAgICAgICBvbkJsdXI9e2Zvcm1pay5oYW5kbGVCbHVyfVxuICAgICAgICAgIGVycm9yPXtcbiAgICAgICAgICAgIGZvcm1pay50b3VjaGVkLmRlbGVnYXRlX2xhc3RfbmFtZSAmJlxuICAgICAgICAgICAgQm9vbGVhbihmb3JtaWsuZXJyb3JzLmRlbGVnYXRlX2xhc3RfbmFtZSlcbiAgICAgICAgICB9XG4gICAgICAgICAgaGVscGVyVGV4dD17XG4gICAgICAgICAgICBmb3JtaWsudG91Y2hlZC5kZWxlZ2F0ZV9sYXN0X25hbWUgJiZcbiAgICAgICAgICAgIGZvcm1pay5lcnJvcnMuZGVsZWdhdGVfbGFzdF9uYW1lXG4gICAgICAgICAgfVxuICAgICAgICAvPlxuICAgICAgICA8VGV4dEZpZWxkXG4gICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgbmFtZT1cImRlbGVnYXRlX2VtYWlsXCJcbiAgICAgICAgICBsYWJlbD17dChcInRpY2tldF9hc3NpZ24uZGVsZWdhdGVfZm9ybS5lbWFpbFwiKX1cbiAgICAgICAgICBtYXJnaW49XCJub3JtYWxcIlxuICAgICAgICAgIHZhbHVlPXtmb3JtaWsudmFsdWVzLmRlbGVnYXRlX2VtYWlsfVxuICAgICAgICAgIG9uQ2hhbmdlPXtmb3JtaWsuaGFuZGxlQ2hhbmdlfVxuICAgICAgICAgIG9uQmx1cj17Zm9ybWlrLmhhbmRsZUJsdXJ9XG4gICAgICAgICAgZXJyb3I9e1xuICAgICAgICAgICAgZm9ybWlrLnRvdWNoZWQuZGVsZWdhdGVfZW1haWwgJiZcbiAgICAgICAgICAgIEJvb2xlYW4oZm9ybWlrLmVycm9ycy5kZWxlZ2F0ZV9lbWFpbClcbiAgICAgICAgICB9XG4gICAgICAgICAgaGVscGVyVGV4dD17XG4gICAgICAgICAgICBmb3JtaWsudG91Y2hlZC5kZWxlZ2F0ZV9lbWFpbCAmJiBmb3JtaWsuZXJyb3JzLmRlbGVnYXRlX2VtYWlsXG4gICAgICAgICAgfVxuICAgICAgICAvPlxuICAgICAgICA8Rm9ybUZvb3RlclxuICAgICAgICAgIHNhdmVMYWJlbD17dChcInRpY2tldF9hc3NpZ24uZGVsZWdhdGVfZm9ybS5zYXZlXCIpfVxuICAgICAgICAgIGNhbmNlbExhYmVsPXt0KFwidGlja2V0X2Fzc2lnbi5kZWxlZ2F0ZV9mb3JtLmNhbmNlbFwiKX1cbiAgICAgICAgICBvbkNsb3NlPXtoYW5kbGVDYW5jZWx9XG4gICAgICAgICAgZGlzYWJsZWQ9e2Zvcm1pay5pc1N1Ym1pdHRpbmd9XG4gICAgICAgIC8+XG4gICAgICA8L2Zvcm0+XG4gICAgPC8+XG4gICk7XG59O1xuXG5EZWxlZ2F0ZUZvcm0ucHJvcFR5cGVzID0ge1xuICBvblN1Ym1pdDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgb25DbG9zZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZFxufTtcblxuZXhwb3J0IGRlZmF1bHQgRGVsZWdhdGVGb3JtO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQm94LCBMaW5rLCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBDb3B5VGV4dCBmcm9tIFwiLi4vLi4vLi4vQ29weVRleHRcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgQXNzaWduSGVhZGVyID0gKHsgaW5Qcm9ncmVzcywgdGlja2V0LCB1c2VyRW1haWwsIG9uQ2xvc2UgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGFzc2lnbmVkVG9Zb3UgPSB0aWNrZXQ/Lm93bmVyPy5lbWFpbCA9PT0gdXNlckVtYWlsO1xuXG4gIGNvbnN0IGdldFNlY29uZGFyeVRpdGxlID0gKCkgPT4ge1xuICAgIGlmIChpblByb2dyZXNzID09PSBcIm1hbmFnZVwiKSB7XG4gICAgICByZXR1cm4gYCR7dChcInRpY2tldF9hc3NpZ24uaGVhZGVyX2Fzc2lnbi5kZWxlZ2F0ZWRcIil9ICR7XG4gICAgICAgIHRpY2tldC5vd25lci5maXJzdF9uYW1lXG4gICAgICB9ICR7dGlja2V0Lm93bmVyLmxhc3RfbmFtZX0uYDtcbiAgICB9XG5cbiAgICBpZiAoaW5Qcm9ncmVzcykge1xuICAgICAgY29uc3QgdXNlciA9IGFzc2lnbmVkVG9Zb3UgPyBcInlvdVwiIDogdGlja2V0Py5vd25lcj8uZW1haWw7XG4gICAgICByZXR1cm4gYCR7dChcInRpY2tldF9hc3NpZ24uaGVhZGVyX2Fzc2lnbi5hc3NpZ25lZF90b1wiKX0gJHt1c2VyfWA7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRpY2tldC50aWNrZXRfdHlwZS5uYW1lO1xuICB9O1xuXG4gIGNvbnN0IGdldEhlYWRlck5vdGUgPSAoKSA9PiB7XG4gICAgaWYgKGluUHJvZ3Jlc3MpIHtcbiAgICAgIGNvbnN0IHRyYW5zS2V5ID0gYXNzaWduZWRUb1lvdVxuICAgICAgICA/IFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfYXNzaWduLmFuc3dlcl95b3VyX2VxXCJcbiAgICAgICAgOiBcInRpY2tldF9hc3NpZ24uaGVhZGVyX2Fzc2lnbi5hbnN3ZXJfb3RoZXJzX2VxXCI7XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDw+XG4gICAgICAgICAge3QodHJhbnNLZXkpfVxuICAgICAgICAgIDxiciAvPlxuICAgICAgICAgIHsvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganN4LWExMXkvYW5jaG9yLWlzLXZhbGlkICovfVxuICAgICAgICAgIDxMaW5rXG4gICAgICAgICAgICBjb21wb25lbnQ9XCJidXR0b25cIlxuICAgICAgICAgICAgdmFyaWFudD1cImJvZHkxXCJcbiAgICAgICAgICAgIG9uQ2xpY2s9e29uQ2xvc2V9XG4gICAgICAgICAgICBzeD17eyBmb250V2VpZ2h0OiA3MDAsIG1hcmdpbjogXCIyMHB4IDAgMTBweFwiIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3QoXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9hc3NpZ24uY29tcGxldGVfbGF0ZXJcIil9XG4gICAgICAgICAgPC9MaW5rPlxuICAgICAgICA8Lz5cbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIFwiXCI7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLndyYXBwZXJ9PlxuICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5wdXJjaGFzZWRCeVdyYXBwZXJ9PlxuICAgICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiYm9keTFcIiBndXR0ZXJCb3R0b20gY2xhc3NOYW1lPXtzdHlsZXMucHVyY2hhc2VkQnl9PlxuICAgICAgICAgIHt0KFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfYXNzaWduLnB1cmNoYXNlZF9ieVwiKX17XCIgXCJ9XG4gICAgICAgICAge3RpY2tldD8ub3JkZXI/Lm93bmVyX2VtYWlsfVxuICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJib2R5MVwiIGd1dHRlckJvdHRvbSBjbGFzc05hbWU9e3N0eWxlcy5vcmRlck5vfT5cbiAgICAgICAgICA8Q29weVRleHRcbiAgICAgICAgICAgIHRleHQ9e3RpY2tldD8ub3JkZXI/Lm51bWJlcn1cbiAgICAgICAgICAgIHJldmVyc2VkXG4gICAgICAgICAgICB3aWR0aD17MjUwfVxuICAgICAgICAgICAgdG9vbHRpcFRleHQ9e3QoXCJvcmRlcl9zdW1tYXJ5LmNvcHlfb3JkZXJfbnVtYmVyXCIpfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgIDwvQm94PlxuICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImg1XCIgZ3V0dGVyQm90dG9tPlxuICAgICAgICB7Z2V0U2Vjb25kYXJ5VGl0bGUoKX1cbiAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgIDxUeXBvZ3JhcGh5XG4gICAgICAgIHZhcmlhbnQ9XCJib2R5MVwiXG4gICAgICAgIGd1dHRlckJvdHRvbVxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5oZWFkZXJOb3RlfVxuICAgICAgICBzeD17eyBjb2xvcjogXCJ0ZXh0LnNlY29uZGFyeVwiIH19XG4gICAgICA+XG4gICAgICAgIHtnZXRIZWFkZXJOb3RlKCl9XG4gICAgICA8L1R5cG9ncmFwaHk+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG4vLyBBZGRpbmcgcHJvcC10eXBlcyBmb3IgdHlwZS1jaGVja2luZ1xuQXNzaWduSGVhZGVyLnByb3BUeXBlcyA9IHtcbiAgaW5Qcm9ncmVzczogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICB0aWNrZXQ6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgdXNlckVtYWlsOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWRcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEFzc2lnbkhlYWRlcjtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJveCwgTGluaywgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IFJlYXNzaWduSGVhZGVyID0gKHtcbiAgaW5Qcm9ncmVzcyxcbiAgYWxsb3dzRGVsZWdhdGUsXG4gIHRpY2tldCxcbiAgdXNlckVtYWlsLFxuICBvbkNsb3NlXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgYXNzaWduZWRUb1lvdSA9IHRpY2tldD8ub3duZXI/LmVtYWlsID09PSB1c2VyRW1haWw7XG5cbiAgY29uc3QgZ2V0U2Vjb25kYXJ5VGl0bGUgPSAoKSA9PiB7XG4gICAgY29uc3QgdXNlciA9IGFzc2lnbmVkVG9Zb3VcbiAgICAgID8gdChcInRpY2tldF9hc3NpZ24uaGVhZGVyX3JlYXNzaWduLnlvdXJzZWxmXCIpXG4gICAgICA6IHRpY2tldD8ub3duZXI/LmVtYWlsO1xuXG4gICAgaWYgKGluUHJvZ3Jlc3MgPT09IFwibWFuYWdlXCIpIHtcbiAgICAgIHJldHVybiBgJHt0KFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfcmVhc3NpZ24uZGVsZWdhdGVkXCIpfSAke1xuICAgICAgICB0aWNrZXQub3duZXIuZmlyc3RfbmFtZVxuICAgICAgfSAke3RpY2tldC5vd25lci5sYXN0X25hbWV9LmA7XG4gICAgfVxuXG4gICAgaWYgKCFpblByb2dyZXNzKSB7XG4gICAgICByZXR1cm4gYCR7dChcInRpY2tldF9hc3NpZ24uaGVhZGVyX3JlYXNzaWduLmFzc2lnbmVkX3RvXCIpfSAke3VzZXJ9YDtcbiAgICB9XG5cbiAgICByZXR1cm4gYCR7dChcInRpY2tldF9hc3NpZ24uaGVhZGVyX3JlYXNzaWduLnJlYXNzaWduZWRfdG9cIil9ICR7dXNlcn1gO1xuICB9O1xuXG4gIGNvbnN0IGdldEhlYWRlck5vdGUgPSAoKSA9PiB7XG4gICAgaWYgKCFpblByb2dyZXNzKSB7XG4gICAgICByZXR1cm4gYWxsb3dzRGVsZWdhdGVcbiAgICAgICAgPyB0KFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfcmVhc3NpZ24uY2hvb3NlX29wdGlvblwiKVxuICAgICAgICA6IHQoXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9yZWFzc2lnbi5jaG9vc2Vfb3B0aW9uX25vX2RlbGVnYXRlXCIpO1xuICAgIH1cblxuICAgIGNvbnN0IHRyYW5zS2V5ID0gYXNzaWduZWRUb1lvdVxuICAgICAgPyBcInRpY2tldF9hc3NpZ24uaGVhZGVyX3JlYXNzaWduLmFuc3dlcl95b3VyX2VxXCJcbiAgICAgIDogXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9yZWFzc2lnbi5hbnN3ZXJfb3RoZXJzX2VxXCI7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPD5cbiAgICAgICAge3QodHJhbnNLZXkpfVxuICAgICAgICA8YnIgLz5cbiAgICAgICAgey8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc3gtYTExeS9hbmNob3ItaXMtdmFsaWQgKi99XG4gICAgICAgIDxMaW5rXG4gICAgICAgICAgY29tcG9uZW50PVwiYnV0dG9uXCJcbiAgICAgICAgICB2YXJpYW50PVwiYm9keTFcIlxuICAgICAgICAgIG9uQ2xpY2s9e29uQ2xvc2V9XG4gICAgICAgICAgc3g9e3sgZm9udFdlaWdodDogNzAwLCBtYXJnaW46IFwiMjBweCAwIDEwcHhcIiB9fVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9yZWFzc2lnbi5jb21wbGV0ZV9sYXRlclwiKX1cbiAgICAgICAgPC9MaW5rPlxuICAgICAgPC8+XG4gICAgKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMud3JhcHBlcn0+XG4gICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiaDVcIiBndXR0ZXJCb3R0b20+XG4gICAgICAgIHtnZXRTZWNvbmRhcnlUaXRsZSgpfVxuICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgPFR5cG9ncmFwaHlcbiAgICAgICAgdmFyaWFudD1cImJvZHkxXCJcbiAgICAgICAgZ3V0dGVyQm90dG9tXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmhlYWRlck5vdGV9XG4gICAgICAgIHN4PXt7IGNvbG9yOiBcInRleHQuc2Vjb25kYXJ5XCIgfX1cbiAgICAgID5cbiAgICAgICAge2dldEhlYWRlck5vdGUoKX1cbiAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbi8vIEFkZGluZyBwcm9wLXR5cGVzIGZvciB0eXBlLWNoZWNraW5nXG5SZWFzc2lnbkhlYWRlci5wcm9wVHlwZXMgPSB7XG4gIGluUHJvZ3Jlc3M6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgdGlja2V0OiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHVzZXJFbWFpbDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkXG59O1xuXG5leHBvcnQgZGVmYXVsdCBSZWFzc2lnbkhlYWRlcjtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IFRleHRGaWVsZCwgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VGb3JtaWsgfSBmcm9tIFwiZm9ybWlrXCI7XG5pbXBvcnQgKiBhcyB5dXAgZnJvbSBcInl1cFwiO1xuXG5pbXBvcnQgRm9ybUZvb3RlciBmcm9tIFwiLi4vLi4vLi4vRm9ybUZvb3RlclwiO1xuXG5jb25zdCBSZWFzc2lnbkZvcm0gPSAoeyBvblN1Ym1pdCwgb25DbG9zZSB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcblxuICBjb25zdCBmb3JtaWsgPSB1c2VGb3JtaWsoe1xuICAgIGluaXRpYWxWYWx1ZXM6IHtcbiAgICAgIG5ld19hdHRlbmRlZV9lbWFpbDogXCJcIixcbiAgICAgIHBlcnNvbmFsX21lc3NhZ2U6IFwiXCJcbiAgICB9LFxuICAgIHZhbGlkYXRpb25TY2hlbWE6IHl1cC5vYmplY3Qoe1xuICAgICAgbmV3X2F0dGVuZGVlX2VtYWlsOiB5dXBcbiAgICAgICAgLnN0cmluZyh0KFwidmFsaWRhdGlvbi5lbWFpbC5zdHJpbmdcIikpXG4gICAgICAgIC5lbWFpbCh0KFwidmFsaWRhdGlvbi5lbWFpbC5mb3JtYXRcIikpXG4gICAgICAgIC5yZXF1aXJlZCh0KFwidmFsaWRhdGlvbi5lbWFpbC5yZXF1aXJlZFwiKSksXG4gICAgICBwZXJzb25hbF9tZXNzYWdlOiB5dXAuc3RyaW5nKHQoXCJ2YWxpZGF0aW9uLnRleHQuc3RyaW5nXCIpKVxuICAgIH0pLFxuICAgIG9uU3VibWl0OiAodmFsdWVzLCB7IHJlc2V0Rm9ybSB9KSA9PiB7XG4gICAgICBvblN1Ym1pdCh2YWx1ZXMpO1xuICAgICAgcmVzZXRGb3JtKCk7XG4gICAgfVxuICB9KTtcblxuICBjb25zdCBoYW5kbGVDYW5jZWwgPSAoKSA9PiB7XG4gICAgZm9ybWlrLnJlc2V0Rm9ybSgpO1xuICAgIG9uQ2xvc2UoKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiaDZcIiBndXR0ZXJCb3R0b20+XG4gICAgICAgIHt0KFwidGlja2V0X2Fzc2lnbi5yZWFzc2lnbl9mb3JtLnRpdGxlXCIpfVxuICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImJvZHkxXCIgZ3V0dGVyQm90dG9tIHN4PXt7IGNvbG9yOiBcInRleHQuc2Vjb25kYXJ5XCIgfX0+XG4gICAgICAgIHt0KFwidGlja2V0X2Fzc2lnbi5yZWFzc2lnbl9mb3JtLmJvZHlcIil9XG4gICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICA8Zm9ybSBvblN1Ym1pdD17Zm9ybWlrLmhhbmRsZVN1Ym1pdH0gbm9WYWxpZGF0ZT5cbiAgICAgICAgPFRleHRGaWVsZFxuICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgIG5hbWU9XCJuZXdfYXR0ZW5kZWVfZW1haWxcIlxuICAgICAgICAgIGxhYmVsPXt0KFwidGlja2V0X2Fzc2lnbi5yZWFzc2lnbl9mb3JtLm5ld19hdHRlbmRlZV9lbWFpbFwiKX1cbiAgICAgICAgICBtYXJnaW49XCJub3JtYWxcIlxuICAgICAgICAgIHZhbHVlPXtmb3JtaWsudmFsdWVzLm5ld19hdHRlbmRlZV9lbWFpbH1cbiAgICAgICAgICBvbkNoYW5nZT17Zm9ybWlrLmhhbmRsZUNoYW5nZX1cbiAgICAgICAgICBvbkJsdXI9e2Zvcm1pay5oYW5kbGVCbHVyfVxuICAgICAgICAgIGVycm9yPXtcbiAgICAgICAgICAgIGZvcm1pay50b3VjaGVkLm5ld19hdHRlbmRlZV9lbWFpbCAmJlxuICAgICAgICAgICAgQm9vbGVhbihmb3JtaWsuZXJyb3JzLm5ld19hdHRlbmRlZV9lbWFpbClcbiAgICAgICAgICB9XG4gICAgICAgICAgaGVscGVyVGV4dD17XG4gICAgICAgICAgICBmb3JtaWsudG91Y2hlZC5uZXdfYXR0ZW5kZWVfZW1haWwgJiZcbiAgICAgICAgICAgIGZvcm1pay5lcnJvcnMubmV3X2F0dGVuZGVlX2VtYWlsXG4gICAgICAgICAgfVxuICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgIC8+XG4gICAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgICBuYW1lPVwicGVyc29uYWxfbWVzc2FnZVwiXG4gICAgICAgICAgbGFiZWw9e3QoXCJ0aWNrZXRfYXNzaWduLnJlYXNzaWduX2Zvcm0ucGVyc29uYWxfbWVzc2FnZVwiKX1cbiAgICAgICAgICB2YWx1ZT17Zm9ybWlrLnZhbHVlcy5wZXJzb25hbF9tZXNzYWdlfVxuICAgICAgICAgIG1hcmdpbj1cIm5vcm1hbFwiXG4gICAgICAgICAgbXVsdGlsaW5lXG4gICAgICAgICAgbWluUm93cz17NH1cbiAgICAgICAgICBvbkNoYW5nZT17Zm9ybWlrLmhhbmRsZUNoYW5nZX1cbiAgICAgICAgICBvbkJsdXI9e2Zvcm1pay5oYW5kbGVCbHVyfVxuICAgICAgICAgIGVycm9yPXtcbiAgICAgICAgICAgIGZvcm1pay50b3VjaGVkLnBlcnNvbmFsX21lc3NhZ2UgJiZcbiAgICAgICAgICAgIEJvb2xlYW4oZm9ybWlrLmVycm9ycy5wZXJzb25hbF9tZXNzYWdlKVxuICAgICAgICAgIH1cbiAgICAgICAgICBoZWxwZXJUZXh0PXtcbiAgICAgICAgICAgIGZvcm1pay50b3VjaGVkLnBlcnNvbmFsX21lc3NhZ2UgJiYgZm9ybWlrLmVycm9ycy5wZXJzb25hbF9tZXNzYWdlXG4gICAgICAgICAgfVxuICAgICAgICAvPlxuICAgICAgICA8Rm9ybUZvb3RlclxuICAgICAgICAgIHNhdmVMYWJlbD17dChcInRpY2tldF9hc3NpZ24ucmVhc3NpZ25fZm9ybS5zYXZlXCIpfVxuICAgICAgICAgIGNhbmNlbExhYmVsPXt0KFwidGlja2V0X2Fzc2lnbi5yZWFzc2lnbl9mb3JtLmNhbmNlbFwiKX1cbiAgICAgICAgICBvbkNsb3NlPXtoYW5kbGVDYW5jZWx9XG4gICAgICAgICAgZGlzYWJsZWQ9e2Zvcm1pay5pc1N1Ym1pdHRpbmd9XG4gICAgICAgIC8+XG4gICAgICA8L2Zvcm0+XG4gICAgPC8+XG4gICk7XG59O1xuXG5SZWFzc2lnbkZvcm0ucHJvcFR5cGVzID0ge1xuICBvblN1Ym1pdDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgb25DbG9zZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZFxufTtcblxuZXhwb3J0IGRlZmF1bHQgUmVhc3NpZ25Gb3JtO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCwgdXNlU2VsZWN0b3IgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJveCwgQnV0dG9uLCBDb2xsYXBzZSwgRGl2aWRlciB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQge1xuICBhc3NpZ25BdHRlbmRlZSxcbiAgZGVsZWdhdGVUaWNrZXQsXG4gIHJlYXNzaWduVGlja2V0LFxuICBzYXZlRXh0cmFRdWVzdGlvbnNcbn0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcbmltcG9ydCBSZWFzc2lnbkZvcm0gZnJvbSBcIi4vY29tcG9uZW50cy9SZWFzc2lnbkZvcm1cIjtcbmltcG9ydCBSaWdodERyYXdlciBmcm9tIFwiLi4vUmlnaHREcmF3ZXJcIjtcbmltcG9ydCBBc3NpZ25FUUZvcm0gZnJvbSBcIi4uL0Fzc2lnbkVRRm9ybVwiO1xuaW1wb3J0IHsgdHJhbnNmb3JtQW53ZXJzRm9ybWF0IH0gZnJvbSBcIi4uL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvdXRpbHNcIjtcbmltcG9ydCBDdXN0b21EaWFsb2cgZnJvbSBcIi4uL0N1c3RvbURpYWxvZ1wiO1xuaW1wb3J0IHVzZUdldFRpY2tldCBmcm9tIFwiLi4vLi4vaG9va3MvdXNlR2V0VGlja2V0XCI7XG5pbXBvcnQgeyBNSUxMSVNFQ19UT19TRUMgfSBmcm9tIFwiLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5pbXBvcnQgRGVsZWdhdGVGb3JtIGZyb20gXCIuL2NvbXBvbmVudHMvRGVsZWdhdGVGb3JtXCI7XG5pbXBvcnQgQXNzaWduSGVhZGVyIGZyb20gXCIuL2NvbXBvbmVudHMvSGVhZGVyL0Fzc2lnbkhlYWRlclwiO1xuaW1wb3J0IFJlYXNzaWduSGVhZGVyIGZyb20gXCIuL2NvbXBvbmVudHMvSGVhZGVyL1JlYXNzaWduSGVhZGVyXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgeyB1c2VUaWNrZXREZXRhaWxzIH0gZnJvbSBcIi4uLy4uL2hvb2tzL3VzZVRpY2tldERldGFpbHNcIjtcblxuY29uc3QgVGlja2V0QXNzaWduID0gKHsgdGlja2V0SWQsIG9yZGVySWQsIG93bmVySWQsIG9wZW4sIG9uQ2xvc2UgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3QgW3NhdmVNZXNzYWdlLCBzZXRTYXZlTWVzc2FnZV0gPSB1c2VTdGF0ZShudWxsKTtcbiAgY29uc3QgW2Fzc2lnbk9wdGlvbiwgc2V0QXNzaWduT3B0aW9uXSA9IHVzZVN0YXRlKG51bGwpO1xuICBjb25zdCBbYXNzaWduYXRpb25JblByb2dyZXNzLCBzZXRBc3NpZ25hdGlvbkluUHJvZ3Jlc3NdID0gdXNlU3RhdGUoXCJcIik7XG4gIGNvbnN0IHtcbiAgICBzdW1taXQsXG4gICAgdXNlcjogeyB1c2VyUHJvZmlsZSB9XG4gIH0gPSB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlKTtcbiAgY29uc3QgeyB0aWNrZXQsIGV4dHJhUXVlc3Rpb25zIH0gPSB1c2VHZXRUaWNrZXQoXG4gICAgdGlja2V0SWQsXG4gICAgb3JkZXJJZCxcbiAgICBvd25lcklkLFxuICAgIG9wZW5cbiAgKTtcbiAgY29uc3QgaXNBc3NpZ25lZFRvTWUgPSB1c2VyUHJvZmlsZT8uZW1haWwgPT09IHRpY2tldD8ub3duZXI/LmVtYWlsO1xuICBjb25zdCB7IGFsbG93c0RlbGVnYXRlIH0gPSB1c2VUaWNrZXREZXRhaWxzKHRpY2tldCk7XG5cbiAgY29uc3Qgb25Bc3NpZ24gPSAoZW1haWwsIG1lc3NhZ2UgPSBcIlwiKSA9PiB7XG4gICAgaWYgKG93bmVySWQpIHtcbiAgICAgIGRpc3BhdGNoKHJlYXNzaWduVGlja2V0KG9yZGVySWQsIHRpY2tldElkLCBlbWFpbCwgbWVzc2FnZSkpLnRoZW4oKCkgPT4ge1xuICAgICAgICBzZXRBc3NpZ25hdGlvbkluUHJvZ3Jlc3MoYCR7YXNzaWduT3B0aW9ufWApO1xuICAgICAgICBzZXRBc3NpZ25PcHRpb24obnVsbCk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgZGlzcGF0Y2goYXNzaWduQXR0ZW5kZWUob3JkZXJJZCwgdGlja2V0SWQsIGVtYWlsKSkudGhlbigoKSA9PiB7XG4gICAgICAgIHNldEFzc2lnbmF0aW9uSW5Qcm9ncmVzcyhgJHthc3NpZ25PcHRpb259YCk7XG4gICAgICAgIHNldEFzc2lnbk9wdGlvbihudWxsKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBvbkRlbGVnYXRlID0gKGZpcnN0TmFtZSwgbGFzdE5hbWUsIGVtYWlsKSA9PiB7XG4gICAgZGlzcGF0Y2goXG4gICAgICBkZWxlZ2F0ZVRpY2tldChvcmRlcklkLCB0aWNrZXRJZCwgZmlyc3ROYW1lLCBsYXN0TmFtZSwgZW1haWwpXG4gICAgKS50aGVuKCgpID0+IHtcbiAgICAgIHNldEFzc2lnbmF0aW9uSW5Qcm9ncmVzcyhgJHthc3NpZ25PcHRpb259YCk7XG4gICAgICBzZXRBc3NpZ25PcHRpb24obnVsbCk7XG4gICAgfSk7XG4gIH07XG5cbiAgY29uc3Qgb25DbG9zZUVRRm9ybSA9ICgpID0+IHtcbiAgICBzZXRBc3NpZ25hdGlvbkluUHJvZ3Jlc3MoXCJcIik7XG4gICAgb25DbG9zZSgpO1xuICB9O1xuXG4gIGNvbnN0IG9uQ2xvc2VTYXZlTWVzc2FnZSA9ICgpID0+IHtcbiAgICBzZXRTYXZlTWVzc2FnZShudWxsKTtcbiAgICBzZXRBc3NpZ25hdGlvbkluUHJvZ3Jlc3MoXCJcIik7XG4gICAgc2V0VGltZW91dChvbkNsb3NlLCBNSUxMSVNFQ19UT19TRUMpO1xuICB9O1xuXG4gIGNvbnN0IG9uU2F2ZUVRID0gKHZhbCkgPT4ge1xuICAgIGNvbnN0IGFuc3dlcnMgPSB0cmFuc2Zvcm1BbndlcnNGb3JtYXQodmFsKTtcblxuICAgIHJldHVybiBkaXNwYXRjaChzYXZlRXh0cmFRdWVzdGlvbnModGlja2V0LCBhbnN3ZXJzKSlcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgc2V0U2F2ZU1lc3NhZ2Uoe1xuICAgICAgICAgIHRpdGxlOiB0KFwidGlja2V0X2Fzc2lnbi5zYXZpbmdfc3VjY2Vzc1wiKSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogdChcInRpY2tldF9hc3NpZ24uc2F2aW5nX3N1Y2Nlc3NfZGVzY3JpcHRpb25cIilcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGVycikgPT4ge1xuICAgICAgICBzZXRTYXZlTWVzc2FnZSh7XG4gICAgICAgICAgdGl0bGU6IHQoXCJ0aWNrZXRfYXNzaWduLnNhdmluZ19lcnJvclwiKSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogZXJyLnRvU3RyaW5nKClcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xuICAgICAgfSk7XG4gIH07XG5cbiAgY29uc3QgdGl0bGUgPSBvd25lcklkXG4gICAgPyB0KFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfcmVhc3NpZ24udGl0bGVcIilcbiAgICA6IHQoXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9hc3NpZ24udGl0bGVcIik7XG4gIGNvbnN0IEhlYWRlciA9IG93bmVySWQgPyBSZWFzc2lnbkhlYWRlciA6IEFzc2lnbkhlYWRlcjtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8UmlnaHREcmF3ZXJcbiAgICAgICAgaWQ9XCJyZWFzc2lnbkRyYXdlclwiXG4gICAgICAgIHRpdGxlPXt0aXRsZX1cbiAgICAgICAgb3Blbj17b3Blbn1cbiAgICAgICAgb25DbG9zZT17b25DbG9zZX1cbiAgICAgID5cbiAgICAgICAge3RpY2tldCAmJiBleHRyYVF1ZXN0aW9ucyAmJiAoXG4gICAgICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRSZWFzc2lnbkNvbnRhaW5lcn0+XG4gICAgICAgICAgICA8SGVhZGVyXG4gICAgICAgICAgICAgIGluUHJvZ3Jlc3M9e2Fzc2lnbmF0aW9uSW5Qcm9ncmVzc31cbiAgICAgICAgICAgICAgYWxsb3dzRGVsZWdhdGU9e2FsbG93c0RlbGVnYXRlfVxuICAgICAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICAgICAgdXNlckVtYWlsPXt1c2VyUHJvZmlsZS5lbWFpbH1cbiAgICAgICAgICAgICAgb25DbG9zZT17b25DbG9zZUVRRm9ybX1cbiAgICAgICAgICAgIC8+XG5cbiAgICAgICAgICAgIHthc3NpZ25hdGlvbkluUHJvZ3Jlc3MgPyAoXG4gICAgICAgICAgICAgIDxBc3NpZ25FUUZvcm1cbiAgICAgICAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICAgICAgICBleHRyYVF1ZXN0aW9ucz17ZXh0cmFRdWVzdGlvbnN9XG4gICAgICAgICAgICAgICAgb25TdWJtaXQ9e29uU2F2ZUVRfVxuICAgICAgICAgICAgICAgIG9uQ2xvc2U9e29uQ2xvc2VFUUZvcm19XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmFzc2lnbk9wdGlvbnNXcmFwcGVyfT5cbiAgICAgICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAgICB2YXJpYW50PVwiY29udGFpbmVkXCJcbiAgICAgICAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2lzQXNzaWduZWRUb01lfVxuICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gb25Bc3NpZ24odXNlclByb2ZpbGUuZW1haWwsIFwiXCIpfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHt0KFwidGlja2V0X2Fzc2lnbi5hc3NpZ25fdG9fbWVcIil9XG4gICAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgICAgPERpdmlkZXIgdmFyaWFudD1cIm1pZGRsZVwiIHN4PXt7IG15OiAzLCBweDogNCB9fT5cbiAgICAgICAgICAgICAgICAgIG9yXG4gICAgICAgICAgICAgICAgPC9EaXZpZGVyPlxuICAgICAgICAgICAgICAgIDxCb3g+XG4gICAgICAgICAgICAgICAgICA8Q29sbGFwc2UgaW49e2Fzc2lnbk9wdGlvbiA9PT0gXCJvdGhlclwifSB0aW1lb3V0PXs1MDB9PlxuICAgICAgICAgICAgICAgICAgICA8UmVhc3NpZ25Gb3JtXG4gICAgICAgICAgICAgICAgICAgICAgdGlja2V0PXt0aWNrZXR9XG4gICAgICAgICAgICAgICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgICAgICAgICAgICAgb25TdWJtaXQ9eyh2YWwpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkFzc2lnbih2YWwubmV3X2F0dGVuZGVlX2VtYWlsLCB2YWwucGVyc29uYWxfbWVzc2FnZSlcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgb25DbG9zZT17KCkgPT4gc2V0QXNzaWduT3B0aW9uKG51bGwpfVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgPC9Db2xsYXBzZT5cbiAgICAgICAgICAgICAgICAgIHthc3NpZ25PcHRpb24gIT09IFwib3RoZXJcIiAmJiAoXG4gICAgICAgICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwiY29udGFpbmVkXCJcbiAgICAgICAgICAgICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0QXNzaWduT3B0aW9uKFwib3RoZXJcIil9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7dChcInRpY2tldF9hc3NpZ24uYXNzaWduX3RvX290aGVyXCIpfVxuICAgICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICAgICAge2FsbG93c0RlbGVnYXRlICYmIChcbiAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgIDxEaXZpZGVyIHZhcmlhbnQ9XCJtaWRkbGVcIiBzeD17eyBteTogMywgcHg6IDQgfX0+XG4gICAgICAgICAgICAgICAgICAgICAgb3JcbiAgICAgICAgICAgICAgICAgICAgPC9EaXZpZGVyPlxuICAgICAgICAgICAgICAgICAgICA8Q29sbGFwc2UgaW49e2Fzc2lnbk9wdGlvbiA9PT0gXCJtYW5hZ2VcIn0gdGltZW91dD17NTAwfT5cbiAgICAgICAgICAgICAgICAgICAgICA8RGVsZWdhdGVGb3JtXG4gICAgICAgICAgICAgICAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgICAgICAgICAgICAgICAgb25TdWJtaXQ9eyh2YWwpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uRGVsZWdhdGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsLmRlbGVnYXRlX2ZpcnN0X25hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsLmRlbGVnYXRlX2xhc3RfbmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwuZGVsZWdhdGVfZW1haWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbG9zZT17KCkgPT4gc2V0QXNzaWduT3B0aW9uKG51bGwpfVxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvQ29sbGFwc2U+XG4gICAgICAgICAgICAgICAgICAgIHthc3NpZ25PcHRpb24gIT09IFwibWFuYWdlXCIgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJjb250YWluZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRBc3NpZ25PcHRpb24oXCJtYW5hZ2VcIil9XG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfYXNzaWduLm1hbmFnZV90aWNrZXRcIil9XG4gICAgICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9Cb3g+XG4gICAgICAgICl9XG4gICAgICA8L1JpZ2h0RHJhd2VyPlxuICAgICAgPEN1c3RvbURpYWxvZ1xuICAgICAgICBvcGVuPXshIXNhdmVNZXNzYWdlfVxuICAgICAgICBvbkNsb3NlPXtvbkNsb3NlU2F2ZU1lc3NhZ2V9XG4gICAgICAgIHRpdGxlPXtzYXZlTWVzc2FnZT8udGl0bGV9XG4gICAgICAgIGRlc2NyaXB0aW9uPXtzYXZlTWVzc2FnZT8uZGVzY3JpcHRpb259XG4gICAgICAvPlxuICAgIDwvPlxuICApO1xufTtcblxuVGlja2V0QXNzaWduLnByb3BUeXBlcyA9IHtcbiAgdGlja2V0SWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gIG9yZGVySWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gIG93bmVySWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gIG9wZW46IFByb3BUeXBlcy5ib29sLFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgVGlja2V0QXNzaWduO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgVGV4dEZpZWxkLCBBdXRvY29tcGxldGUsIFR5cG9ncmFwaHkgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgcXVlcnlSZWdpc3RyYXRpb25Db21wYW5pZXMgfSBmcm9tIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9xdWVyeS1hY3Rpb25zXCI7XG5pbXBvcnQgeyBUSUNLRVRfQVRURU5ERUVfS0VZUyB9IGZyb20gXCIuLi8uLi9jb25zdGFudHNcIjtcblxuY29uc3QgQ29tcGFueUZpZWxkID0gKHsgZm9ybWlrLCBzdW1taXRJZCwgaXNSZXF1aXJlZCB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgW2lucHV0VmFsdWUsIHNldElucHV0VmFsdWVdID0gUmVhY3QudXNlU3RhdGUoXCJcIik7XG4gIGNvbnN0IFtvcHRpb25zLCBzZXRPcHRpb25zXSA9IFJlYWN0LnVzZVN0YXRlKFtdKTtcbiAgY29uc3Qge1xuICAgIGVycm9ycyxcbiAgICB2YWx1ZXMsXG4gICAgdG91Y2hlZCxcbiAgICBzZXRGaWVsZFRvdWNoZWQsXG4gICAgc2V0RmllbGRWYWx1ZSxcbiAgICBpbml0aWFsVmFsdWVzXG4gIH0gPSBmb3JtaWs7XG4gIGNvbnN0IG5hbWUgPSBUSUNLRVRfQVRURU5ERUVfS0VZUy5jb21wYW55O1xuICBjb25zdCB2YWx1ZSA9IHZhbHVlc1tuYW1lXTtcbiAgY29uc3QgZGlzYWJsZWQgPSAhIWluaXRpYWxWYWx1ZXNbbmFtZV07XG4gIGNvbnN0IGVycm9yID0gdG91Y2hlZFtuYW1lXSAmJiBCb29sZWFuKGVycm9yc1tuYW1lXSk7XG4gIGNvbnN0IGhlbHBlclRleHQgPSB0b3VjaGVkW25hbWVdICYmIGVycm9yc1tuYW1lXTtcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChpbnB1dFZhbHVlID09PSBcIlwiKSB7XG4gICAgICBzZXRPcHRpb25zKHZhbHVlID8gW3ZhbHVlXSA6IFtdKTtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcXVlcnlSZWdpc3RyYXRpb25Db21wYW5pZXMoc3VtbWl0SWQsIGlucHV0VmFsdWUsIChyZXN1bHRzKSA9PiB7XG4gICAgICBsZXQgbmV3T3B0aW9ucyA9IFtdO1xuXG4gICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgbmV3T3B0aW9ucyA9IFt2YWx1ZV07XG4gICAgICB9XG5cbiAgICAgIGlmIChyZXN1bHRzKSB7XG4gICAgICAgIG5ld09wdGlvbnMgPSBbLi4ubmV3T3B0aW9ucywgLi4ucmVzdWx0c107XG4gICAgICB9XG5cbiAgICAgIHNldE9wdGlvbnMobmV3T3B0aW9ucyk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfSwgW3ZhbHVlLCBpbnB1dFZhbHVlXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8QXV0b2NvbXBsZXRlXG4gICAgICBuYW1lPXtuYW1lfVxuICAgICAgb3B0aW9ucz17b3B0aW9uc31cbiAgICAgIGF1dG9Db21wbGV0ZVxuICAgICAgZnJlZVNvbG9cbiAgICAgIGluY2x1ZGVJbnB1dEluTGlzdFxuICAgICAgZmlsdGVyU2VsZWN0ZWRPcHRpb25zXG4gICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICB2YWx1ZT17dmFsdWV9XG4gICAgICBvbkJsdXI9eygpID0+IHNldEZpZWxkVG91Y2hlZChuYW1lLCB0cnVlLCB0cnVlKX1cbiAgICAgIGdldE9wdGlvbkxhYmVsPXsob3B0aW9uKSA9PiB7XG4gICAgICAgIC8vIFZhbHVlIHNlbGVjdGVkIHdpdGggZW50ZXIsIHJpZ2h0IGZyb20gdGhlIGlucHV0XG4gICAgICAgIGlmICh0eXBlb2Ygb3B0aW9uID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgcmV0dXJuIG9wdGlvbjtcbiAgICAgICAgfVxuICAgICAgICAvLyBBZGQgXCJ4eHhcIiBvcHRpb24gY3JlYXRlZCBkeW5hbWljYWxseVxuICAgICAgICBpZiAob3B0aW9uLmlucHV0VmFsdWUpIHtcbiAgICAgICAgICByZXR1cm4gb3B0aW9uLmlucHV0VmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgLy8gUmVndWxhciBvcHRpb25cbiAgICAgICAgcmV0dXJuIG9wdGlvbi5uYW1lO1xuICAgICAgfX1cbiAgICAgIG9uQ2hhbmdlPXsoZXZlbnQsIG5ld1ZhbHVlKSA9PiB7XG4gICAgICAgIGNvbnN0IHRtcFZhbHVlID0gbmV3VmFsdWU/LmlucHV0VmFsdWUgfHwgbmV3VmFsdWU7XG4gICAgICAgIHNldE9wdGlvbnModG1wVmFsdWUgPyBbdG1wVmFsdWUsIC4uLm9wdGlvbnNdIDogb3B0aW9ucyk7XG4gICAgICAgIHNldEZpZWxkVmFsdWUobmFtZSwgdG1wVmFsdWUpO1xuICAgICAgfX1cbiAgICAgIG9uSW5wdXRDaGFuZ2U9eyhldmVudCwgbmV3SW5wdXRWYWx1ZSkgPT4ge1xuICAgICAgICBzZXRJbnB1dFZhbHVlKG5ld0lucHV0VmFsdWUpO1xuICAgICAgfX1cbiAgICAgIGZpbHRlck9wdGlvbnM9eyhvcHRpb25zLCBwYXJhbXMpID0+IHtcbiAgICAgICAgY29uc3QgeyBpbnB1dFZhbHVlIH0gPSBwYXJhbXM7XG4gICAgICAgIGNvbnN0IGZpbHRlcmVkID0gWy4uLm9wdGlvbnNdO1xuICAgICAgICAvLyBTdWdnZXN0IHRoZSBjcmVhdGlvbiBvZiBhIG5ldyB2YWx1ZVxuICAgICAgICBjb25zdCBpc0V4aXN0aW5nID0gb3B0aW9ucy5zb21lKFxuICAgICAgICAgIChvcHRpb24pID0+IGlucHV0VmFsdWUgPT09IG9wdGlvbi50aXRsZVxuICAgICAgICApO1xuICAgICAgICBpZiAoaW5wdXRWYWx1ZSAhPT0gXCJcIiAmJiAhaXNFeGlzdGluZykge1xuICAgICAgICAgIGZpbHRlcmVkLnB1c2goe1xuICAgICAgICAgICAgaW5wdXRWYWx1ZSxcbiAgICAgICAgICAgIG5hbWU6IGBTZWxlY3QgXCIke2lucHV0VmFsdWV9XCJgXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmlsdGVyZWQ7XG4gICAgICB9fVxuICAgICAgcmVuZGVySW5wdXQ9eyhwYXJhbXMpID0+IChcbiAgICAgICAgPFRleHRGaWVsZFxuICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nICovXG4gICAgICAgICAgey4uLnBhcmFtc31cbiAgICAgICAgICBsYWJlbD17dChcInRpY2tldF9kZXRhaWwuYXR0ZW5kZWVfY29tcGFueVwiKX1cbiAgICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgICByZXF1aXJlZD17aXNSZXF1aXJlZH1cbiAgICAgICAgICBoZWxwZXJUZXh0PXtoZWxwZXJUZXh0fVxuICAgICAgICAgIGVycm9yPXtlcnJvcn1cbiAgICAgICAgICBtYXJnaW49XCJub3JtYWxcIlxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICAgIHJlbmRlck9wdGlvbj17KHByb3BzLCBvcHRpb24pID0+IHtcbiAgICAgICAgY29uc3QgeyBrZXksIC4uLm9wdGlvblByb3BzIH0gPSBwcm9wcztcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvanN4LXByb3BzLW5vLXNwcmVhZGluZ1xuICAgICAgICAgIDxsaSBrZXk9e2tleX0gey4uLm9wdGlvblByb3BzfT5cbiAgICAgICAgICAgIDxUeXBvZ3JhcGh5XG4gICAgICAgICAgICAgIHZhcmlhbnQ9XCJib2R5MlwiXG4gICAgICAgICAgICAgIHN4PXt7IGZvbnRTaXplOiBcIjFlbVwiLCBjb2xvcjogXCJ0ZXh0LnNlY29uZGFyeVwiIH19XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHtvcHRpb24ubmFtZX1cbiAgICAgICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgICA8L2xpPlxuICAgICAgICApO1xuICAgICAgfX1cbiAgICAvPlxuICApO1xufTtcblxuQ29tcGFueUZpZWxkLnByb3BUeXBlcyA9IHtcbiAgZm9ybWlrOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHN1bW1pdElkOiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWRcbn07XG5cbmV4cG9ydCBkZWZhdWx0IENvbXBhbnlGaWVsZDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIEJveCxcbiAgQ2hlY2tib3gsXG4gIEZvcm1Db250cm9sLFxuICBGb3JtQ29udHJvbExhYmVsLFxuICBGb3JtSGVscGVyVGV4dFxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IFJhd0hUTUwgZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvY29tcG9uZW50cy9yYXctaHRtbFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgVElDS0VUX0FUVEVOREVFX0tFWVMgfSBmcm9tIFwiLi4vLi4vY29uc3RhbnRzXCI7XG5cbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgUmVnaXN0cmF0aW9uRGlzY2xhaW1lciA9ICh7XG4gIGRpc2NsYWltZXIsXG4gIGZvcm1payxcbiAgaXNEaXNhYmxlZCA9IGZhbHNlLFxuICBpc1JlcXVpcmVkID0gdHJ1ZVxufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IG5hbWUgPSBUSUNLRVRfQVRURU5ERUVfS0VZUy5kaXNjbGFpbWVyQWNjZXB0ZWQ7XG4gIGNvbnN0IHsgZXJyb3JzLCB2YWx1ZXMsIHRvdWNoZWQsIGhhbmRsZUNoYW5nZSwgaGFuZGxlQmx1ciB9ID0gZm9ybWlrO1xuICBjb25zdCB2YWx1ZSA9IHZhbHVlc1tuYW1lXTtcbiAgY29uc3QgZXJyb3IgPSB0b3VjaGVkW25hbWVdICYmIEJvb2xlYW4oZXJyb3JzW25hbWVdKTtcbiAgY29uc3QgaGVscGVyVGV4dCA9IHRvdWNoZWRbbmFtZV0gJiYgZXJyb3JzW25hbWVdO1xuXG4gIHJldHVybiAoXG4gICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy53cmFwcGVyfT5cbiAgICAgIDxSYXdIVE1MPntkaXNjbGFpbWVyfTwvUmF3SFRNTD5cbiAgICAgIDxGb3JtQ29udHJvbCBmdWxsV2lkdGggZXJyb3I9e2Vycm9yfT5cbiAgICAgICAgPEZvcm1Db250cm9sTGFiZWxcbiAgICAgICAgICBjb250cm9sPXtcbiAgICAgICAgICAgIDxDaGVja2JveFxuICAgICAgICAgICAgICBuYW1lPXtuYW1lfVxuICAgICAgICAgICAgICBjaGVja2VkPXshIXZhbHVlfVxuICAgICAgICAgICAgICBsYWJlbD17dChcInRpY2tldF9hc3NpZ24uZXh0cmFfcXVlc3Rpb25zX2Zvcm0uZGlzY2xhaW1lcl9sYWJlbFwiKX1cbiAgICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgICAgICAgb25CbHVyPXtoYW5kbGVCbHVyfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICB9XG4gICAgICAgICAgbGFiZWw9e3QoXCJ0aWNrZXRfYXNzaWduLmV4dHJhX3F1ZXN0aW9uc19mb3JtLmRpc2NsYWltZXJfbGFiZWxcIil9XG4gICAgICAgICAgZGlzYWJsZWQ9e2lzRGlzYWJsZWR9XG4gICAgICAgICAgcmVxdWlyZWQ9e2lzUmVxdWlyZWR9XG4gICAgICAgIC8+XG4gICAgICAgIHtlcnJvciAmJiA8Rm9ybUhlbHBlclRleHQ+e2hlbHBlclRleHQgPz8gXCIgXCJ9PC9Gb3JtSGVscGVyVGV4dD59XG4gICAgICA8L0Zvcm1Db250cm9sPlxuICAgIDwvQm94PlxuICApO1xufTtcblxuUmVnaXN0cmF0aW9uRGlzY2xhaW1lci5wcm9wVHlwZXMgPSB7XG4gIGRpc2NsYWltZXI6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgZm9ybWlrOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIGlzRGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICBpc1JlcXVpcmVkOiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgUmVnaXN0cmF0aW9uRGlzY2xhaW1lcjtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJveCwgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VGb3JtaWsgfSBmcm9tIFwiZm9ybWlrXCI7XG5pbXBvcnQgRXh0cmFRdWVzdGlvbnNGaWVsZHMgZnJvbSBcIi4uLy4uLy4uL0V4dHJhUXVlc3Rpb25zRmllbGRzXCI7XG5cbmltcG9ydCB7XG4gIGdldFR5cGVWYWx1ZSxcbiAgdG9TbHVnXG59IGZyb20gXCIuLi8uLi8uLi9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL3V0aWxzXCI7XG5cbmltcG9ydCBUaWNrZXRPd25lckZpZWxkcyBmcm9tIFwiLi4vVGlja2V0T3duZXJGaWVsZHNcIjtcbmltcG9ydCBSZWdpc3RyYXRpb25EaXNjbGFpbWVyIGZyb20gXCIuLi9SZWdpc3RyYXRpb25EaXNjbGFpbWVyL1JlZ2lzdHJhdGlvbkRpc2NsYWltZXJcIjtcbmltcG9ydCBGb3JtRm9vdGVyIGZyb20gXCIuLi8uLi8uLi9Gb3JtRm9vdGVyXCI7XG5pbXBvcnQgdXNlU2Nyb2xsVG9FcnJvciBmcm9tIFwiLi4vLi4vLi4vLi4vaG9va3MvdXNlU2Nyb2xsVG9FcnJvclwiO1xuaW1wb3J0IHtcbiAgcGFyc2VBbnN3ZXJzLFxuICBidWlsZFZhbGlkYXRpb25TY2hlbWFcbn0gZnJvbSBcIi4uLy4uLy4uLy4uL3V0aWxzL3RpY2tldFV0aWxzXCI7XG5cbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi4vLi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IFRpY2tldEZvcm0gPSAoe1xuICB0aWNrZXQsXG4gIGV4dHJhUXVlc3Rpb25zLFxuICBzdW1taXQsXG4gIGNhbkVkaXQsXG4gIG9uU3VibWl0LFxuICBvbkNsb3NlXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgYW5zd2VycyA9IHRpY2tldD8ub3duZXI/LmV4dHJhX3F1ZXN0aW9ucy5yZWR1Y2UoKHJlcywgYW5zKSA9PiB7XG4gICAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKGFucy5xdWVzdGlvbi5uYW1lLCBhbnMucXVlc3Rpb24uaWQpO1xuICAgIHJlc1txdWVzdGlvblNsdWddID0gZ2V0VHlwZVZhbHVlKGFucy52YWx1ZSwgYW5zLnF1ZXN0aW9uLnR5cGUpO1xuICAgIHJldHVybiByZXM7XG4gIH0sIHt9KTtcblxuICBjb25zdCBmb3JtaWsgPSB1c2VGb3JtaWsoe1xuICAgIGluaXRpYWxWYWx1ZXM6IHBhcnNlQW5zd2VycyhcbiAgICAgIHRpY2tldC5vd25lcixcbiAgICAgIGV4dHJhUXVlc3Rpb25zLFxuICAgICAgYW5zd2VycyxcbiAgICAgIHRydWUsXG4gICAgICB0cnVlXG4gICAgKSxcbiAgICB2YWxpZGF0aW9uU2NoZW1hOiBidWlsZFZhbGlkYXRpb25TY2hlbWEoXG4gICAgICBleHRyYVF1ZXN0aW9ucyxcbiAgICAgIHRydWUsXG4gICAgICBzdW1taXQucmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfbWFuZGF0b3J5XG4gICAgKSxcbiAgICBvblN1Ym1pdDogKHZhbHVlcykgPT4ge1xuICAgICAgY29uc3QgcmVsZXZhbnRBbnN3ZXJzID0gcGFyc2VBbnN3ZXJzKFxuICAgICAgICB0aWNrZXQub3duZXIsXG4gICAgICAgIGV4dHJhUXVlc3Rpb25zLFxuICAgICAgICB2YWx1ZXMsXG4gICAgICAgIHRydWUsXG4gICAgICAgIHRydWUsXG4gICAgICAgIHRydWVcbiAgICAgICk7XG5cbiAgICAgIHJldHVybiBvblN1Ym1pdChyZWxldmFudEFuc3dlcnMpO1xuICAgIH0sXG4gICAgZW5hYmxlUmVpbml0aWFsaXplOiB0cnVlXG4gIH0pO1xuXG4gIC8vIGNvbnNvbGUubG9nKFwiU1VNTUlUOiBcIiwgc3VtbWl0KTtcbiAgLy8gY29uc29sZS5sb2coXCJUSUNLRVQ6IFwiLCB0aWNrZXQpO1xuICAvLyBjb25zb2xlLmxvZyhcIlFVRVNUSVVPTnM6IFwiLCBleHRyYVF1ZXN0aW9ucyk7XG4gIC8vIGNvbnNvbGUubG9nKFwiQU5TV0VSUzogXCIsIGFuc3dlcnMpO1xuICAvLyBjb25zb2xlLmxvZyhcIkVSUk9SczogXCIsIGZvcm1pay5lcnJvcnMpO1xuICAvLyBjb25zb2xlLmxvZyhcIlZBTFVFUzogXCIsIGZvcm1pay52YWx1ZXMpO1xuICAvLyBjb25zb2xlLmxvZyhcIklOSVRJQUw6IFwiLCBmb3JtaWsuaW5pdGlhbFZhbHVlcyk7XG4gIC8vIGNvbnNvbGUubG9nKFwiVE9VQ0hFRDogXCIsIGZvcm1pay50b3VjaGVkKTtcblxuICAvLyBTQ1JPTEwgVE8gRVJST1JcbiAgdXNlU2Nyb2xsVG9FcnJvcihmb3JtaWssIFwiZGV0YWlsc0RyYXdlclwiKTtcblxuICByZXR1cm4gKFxuICAgIDxmb3JtIG9uU3VibWl0PXtmb3JtaWsuaGFuZGxlU3VibWl0fSBub1ZhbGlkYXRlPlxuICAgICAgPFRpY2tldE93bmVyRmllbGRzXG4gICAgICAgIGZvcm1paz17Zm9ybWlrfVxuICAgICAgICBpc0RlbGVnYXRlZD17ISF0aWNrZXQub3duZXI/Lm1hbmFnZXJfaWR9XG4gICAgICAgIHN1bW1pdElkPXtzdW1taXQuaWR9XG4gICAgICAgIGRpc2FibGVkPXshY2FuRWRpdH1cbiAgICAgIC8+XG5cbiAgICAgIHtleHRyYVF1ZXN0aW9ucz8ubGVuZ3RoID4gMCAmJiAoXG4gICAgICAgIDxCb3g+XG4gICAgICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImJvZHkyXCIgY2xhc3NOYW1lPXtzdHlsZXMuYWRkaXRpb25hbERldGFpbHN9PlxuICAgICAgICAgICAge3QoXCJ0aWNrZXRfZGV0YWlsLmFkaXRpb25hbF9kZXRhaWxzXCIpfVxuICAgICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgICA8RXh0cmFRdWVzdGlvbnNGaWVsZHNcbiAgICAgICAgICAgIGV4dHJhUXVlc3Rpb25zPXtleHRyYVF1ZXN0aW9uc31cbiAgICAgICAgICAgIGFsbG93RWRpdD17Y2FuRWRpdH1cbiAgICAgICAgICAgIGZvcm1paz17Zm9ybWlrfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvQm94PlxuICAgICAgKX1cblxuICAgICAge3N1bW1pdC5yZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9jb250ZW50ICYmIChcbiAgICAgICAgPFJlZ2lzdHJhdGlvbkRpc2NsYWltZXJcbiAgICAgICAgICBmb3JtaWs9e2Zvcm1pa31cbiAgICAgICAgICBkaXNjbGFpbWVyPXtzdW1taXQucmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfY29udGVudH1cbiAgICAgICAgICBpc1JlcXVpcmVkPXtzdW1taXQucmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfbWFuZGF0b3J5fVxuICAgICAgICAgIGlzRGlzYWJsZWQ9eyFjYW5FZGl0fVxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICAgIDxGb3JtRm9vdGVyXG4gICAgICAgIHNhdmVMYWJlbD17dChcInRpY2tldF9kZXRhaWwuc2F2ZVwiKX1cbiAgICAgICAgY2FuY2VsTGFiZWw9e3QoXCJ0aWNrZXRfZGV0YWlsLmNhbmNlbFwiKX1cbiAgICAgICAgb25DbG9zZT17b25DbG9zZX1cbiAgICAgICAgZGlzYWJsZWQ9e2Zvcm1pay5pc1N1Ym1pdHRpbmd9XG4gICAgICAvPlxuICAgIDwvZm9ybT5cbiAgKTtcbn07XG5cblRpY2tldEZvcm0ucHJvcFR5cGVzID0ge1xuICB0aWNrZXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIGV4dHJhUXVlc3Rpb25zOiBQcm9wVHlwZXMuYXJyYXkuaXNSZXF1aXJlZCxcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIGNhbkVkaXQ6IFByb3BUeXBlcy5ib29sLFxuICBvblN1Ym1pdDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgb25DbG9zZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZFxufTtcblxuZXhwb3J0IGRlZmF1bHQgVGlja2V0Rm9ybTtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IEJveCwgVGV4dEZpZWxkLCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHsgVElDS0VUX0FUVEVOREVFX0tFWVMgfSBmcm9tIFwiLi4vLi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgQ29tcGFueUZpZWxkIGZyb20gXCIuLi9Db21wYW55RmllbGRcIjtcblxuY29uc3QgVGlja2V0T3duZXJGaWVsZHMgPSAoeyBmb3JtaWssIHN1bW1pdElkLCBkaXNhYmxlZCwgaXNEZWxlZ2F0ZWQgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IHsgZXJyb3JzLCB2YWx1ZXMsIHRvdWNoZWQsIGhhbmRsZUNoYW5nZSwgaGFuZGxlQmx1ciwgaW5pdGlhbFZhbHVlcyB9ID1cbiAgICBmb3JtaWs7XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLndyYXBwZXJ9PlxuICAgICAgPFRleHRGaWVsZFxuICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgbmFtZT17VElDS0VUX0FUVEVOREVFX0tFWVMuZW1haWx9XG4gICAgICAgIGxhYmVsPXt0KFwidGlja2V0X2RldGFpbC5lbWFpbFwiKX1cbiAgICAgICAgZGlzYWJsZWRcbiAgICAgICAgdmFsdWU9e3ZhbHVlc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5lbWFpbF19XG4gICAgICAgIG1hcmdpbj1cIm5vcm1hbFwiXG4gICAgICAvPlxuICAgICAge2lzRGVsZWdhdGVkICYmIChcbiAgICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImJvZHkxXCIgc3g9e3sgZm9udFdlaWdodDogNTAwLCBtYXJnaW46IFwiMTBweCAwXCIgfX0+XG4gICAgICAgICAge3QoXCJ0aWNrZXRfZGV0YWlsLm1hbmFnZV9mb3JcIil9XG4gICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICl9XG4gICAgICB7W1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmZpcnN0TmFtZSwgVElDS0VUX0FUVEVOREVFX0tFWVMubGFzdE5hbWVdLm1hcChcbiAgICAgICAgKG5hbWUpID0+IChcbiAgICAgICAgICA8VGV4dEZpZWxkXG4gICAgICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgICAgIGtleT17bmFtZX1cbiAgICAgICAgICAgIG5hbWU9e25hbWV9XG4gICAgICAgICAgICBsYWJlbD17dChgdGlja2V0X2RldGFpbC4ke25hbWV9YCl9XG4gICAgICAgICAgICB2YWx1ZT17dmFsdWVzW25hbWVdfVxuICAgICAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkIHx8IGlzRGVsZWdhdGVkIHx8ICEhaW5pdGlhbFZhbHVlc1tuYW1lXX1cbiAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgICBvbkJsdXI9e2hhbmRsZUJsdXJ9XG4gICAgICAgICAgICBlcnJvcj17dG91Y2hlZFtuYW1lXSAmJiBCb29sZWFuKGVycm9yc1tuYW1lXSl9XG4gICAgICAgICAgICBoZWxwZXJUZXh0PXtmb3JtaWsudG91Y2hlZFtuYW1lXSAmJiBmb3JtaWsuZXJyb3JzW25hbWVdfVxuICAgICAgICAgICAgcmVxdWlyZWRcbiAgICAgICAgICAgIG1hcmdpbj1cIm5vcm1hbFwiXG4gICAgICAgICAgLz5cbiAgICAgICAgKVxuICAgICAgKX1cbiAgICAgIDxDb21wYW55RmllbGQgZm9ybWlrPXtmb3JtaWt9IHN1bW1pdElkPXtzdW1taXRJZH0gaXNSZXF1aXJlZCAvPlxuICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5pbmZvTm90ZX0+e3QoXCJ0aWNrZXRfZGV0YWlsLmluZm9fbm90ZVwiKX08L0JveD5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cblRpY2tldE93bmVyRmllbGRzLnByb3BUeXBlcyA9IHtcbiAgZm9ybWlrOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHN1bW1pdElkOiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQsXG4gIGRpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgaXNEZWxlZ2F0ZWQ6IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBUaWNrZXRPd25lckZpZWxkcztcbiIsImV4cG9ydCBjb25zdCBUSUNLRVRfQVRURU5ERUVfS0VZUyA9IHtcbiAgZW1haWw6IFwiYXR0ZW5kZWVfZW1haWxcIixcbiAgZmlyc3ROYW1lOiBcImF0dGVuZGVlX2ZpcnN0X25hbWVcIixcbiAgbGFzdE5hbWU6IFwiYXR0ZW5kZWVfbGFzdF9uYW1lXCIsXG4gIGNvbXBhbnk6IFwiYXR0ZW5kZWVfY29tcGFueVwiLFxuICBkaXNjbGFpbWVyQWNjZXB0ZWQ6IFwiZGlzY2xhaW1lcl9hY2NlcHRlZFwiXG59O1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCwgdXNlU2VsZWN0b3IgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCBRUkNvZGUgZnJvbSBcInJlYWN0LXFyLWNvZGVcIjtcbmltcG9ydCB7IEJveCwgQnV0dG9uLCBEcmF3ZXIsIEljb25CdXR0b24sIFR5cG9ncmFwaHkgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHtcbiAgQ2xvc2UgYXMgQ2xvc2VJY29uLFxuICBGaWxlRG93bmxvYWRPdXRsaW5lZCBhcyBEb3dubG9hZEljb24sXG4gIEVtYWlsT3V0bGluZWQgYXMgRW1haWxJY29uXG59IGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VUaWNrZXREZXRhaWxzIH0gZnJvbSBcIi4uLy4uL2hvb2tzL3VzZVRpY2tldERldGFpbHNcIjtcbmltcG9ydCBDb3B5VGV4dCBmcm9tIFwiLi4vQ29weVRleHRcIjtcbmltcG9ydCB1c2VHZXRUaWNrZXQgZnJvbSBcIi4uLy4uL2hvb2tzL3VzZUdldFRpY2tldFwiO1xuaW1wb3J0IHsgdHJhbnNmb3JtQW53ZXJzRm9ybWF0IH0gZnJvbSBcIi4uL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvdXRpbHNcIjtcbmltcG9ydCBDdXN0b21EaWFsb2cgZnJvbSBcIi4uL0N1c3RvbURpYWxvZ1wiO1xuaW1wb3J0IHsgTUlMTElTRUNfVE9fU0VDLCBUV09fSVRFTSB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCBUaWNrZXRGb3JtIGZyb20gXCIuL2NvbXBvbmVudHMvVGlja2V0Rm9ybVwiO1xuaW1wb3J0IHtcbiAgZ2V0VGlja2V0UERGLFxuICBzYXZlVGlja2V0RGV0YWlscyxcbiAgcmVzZW5kTm90aWZpY2F0aW9uXG59IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5cbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgVGlja2V0RGV0YWlsID0gKHtcbiAgc3VtbWl0LFxuICB0aWNrZXRJZCxcbiAgb3JkZXJJZCxcbiAgb3duZXJJZCxcbiAgb3BlbixcbiAgb25DbG9zZVxufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3Qge1xuICAgIHVzZXI6IHsgdXNlclByb2ZpbGUgfVxuICB9ID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSk7XG4gIGNvbnN0IHsgdGlja2V0LCBleHRyYVF1ZXN0aW9ucyB9ID0gdXNlR2V0VGlja2V0KFxuICAgIHRpY2tldElkLFxuICAgIG9yZGVySWQsXG4gICAgb3duZXJJZCxcbiAgICBvcGVuXG4gICk7XG4gIGNvbnN0IFtzYXZlTWVzc2FnZSwgc2V0U2F2ZU1lc3NhZ2VdID0gdXNlU3RhdGUobnVsbCk7XG4gIGNvbnN0IFtzZW50Q29uZmlybWF0aW9uLCBzZXRTZW50Q29uZmlybWF0aW9uXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgaXNVc2VyT3JkZXJPd25lciA9IHRpY2tldD8ub3JkZXI/Lm93bmVyX2lkID09PSB1c2VyUHJvZmlsZT8uaWQ7XG4gIGNvbnN0IGlzVXNlclRpY2tldE93bmVyID0gdGlja2V0Py5vd25lcj8uZW1haWwgPT09IHVzZXJQcm9maWxlPy5lbWFpbDtcbiAgY29uc3QgY2FuRWRpdFRpY2tldERhdGEgPVxuICAgIChpc1VzZXJUaWNrZXRPd25lciB8fCBpc1VzZXJPcmRlck93bmVyKSAmJlxuICAgIHN1bW1pdC5hbGxvd191cGRhdGVfYXR0ZW5kZWVfZXh0cmFfcXVlc3Rpb25zO1xuICBjb25zdCB7IGlzQ29tcGxldGUgfSA9IHVzZVRpY2tldERldGFpbHModGlja2V0KTtcblxuICBjb25zdCBvblNhdmUgPSAodmFsKSA9PiB7XG4gICAgY29uc3QgYW5zd2VycyA9IHRyYW5zZm9ybUFud2Vyc0Zvcm1hdCh2YWwpO1xuXG4gICAgcmV0dXJuIGRpc3BhdGNoKHNhdmVUaWNrZXREZXRhaWxzKHRpY2tldCwgYW5zd2VycykpXG4gICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgIHNldFNhdmVNZXNzYWdlKHtcbiAgICAgICAgICB0aXRsZTogdChcInRpY2tldF9kZXRhaWwuc2F2aW5nX3N1Y2Nlc3NcIiksXG4gICAgICAgICAgZGVzY3JpcHRpb246IHQoXCJ0aWNrZXRfZGV0YWlsLnNhdmluZ19zdWNjZXNzX2Rlc2NyaXB0aW9uXCIpXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlcnIpID0+IHtcbiAgICAgICAgc2V0U2F2ZU1lc3NhZ2Uoe1xuICAgICAgICAgIHRpdGxlOiB0KFwidGlja2V0X2RldGFpbC5zYXZpbmdfZXJyb3JcIiksXG4gICAgICAgICAgZGVzY3JpcHRpb246IGVyci50b1N0cmluZygpXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoKTtcbiAgICAgIH0pO1xuICB9O1xuXG4gIGNvbnN0IG9uQ2xvc2VTYXZlTWVzc2FnZSA9ICgpID0+IHtcbiAgICBzZXRTYXZlTWVzc2FnZShudWxsKTtcbiAgICBzZXRUaW1lb3V0KG9uQ2xvc2UsIE1JTExJU0VDX1RPX1NFQyk7XG4gIH07XG5cbiAgY29uc3QgZG93bmxvYWRUaWNrZXRQZGYgPSAoKSA9PiB7XG4gICAgZGlzcGF0Y2goZ2V0VGlja2V0UERGKHRpY2tldCkpO1xuICB9O1xuXG4gIGNvbnN0IG9uU2VuZEVtYWlsID0gKCkgPT4ge1xuICAgIGRpc3BhdGNoKHJlc2VuZE5vdGlmaWNhdGlvbih0aWNrZXQpKS50aGVuKCgpID0+IHtcbiAgICAgIHNldFNlbnRDb25maXJtYXRpb24odHJ1ZSk7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgc2V0U2VudENvbmZpcm1hdGlvbihmYWxzZSk7XG4gICAgICB9LCBNSUxMSVNFQ19UT19TRUMgKiBUV09fSVRFTSk7XG4gICAgfSk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPERyYXdlclxuICAgICAgICBpZD1cImRldGFpbHNEcmF3ZXJcIlxuICAgICAgICBvcGVuPXtvcGVufVxuICAgICAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgICAgICBhbmNob3I9XCJyaWdodFwiXG4gICAgICAgIE1vZGFsUHJvcHM9e3sga2VlcE1vdW50ZWQ6IGZhbHNlIH19XG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldERldGFpbENvbnRhaW5lcn1cbiAgICAgID5cbiAgICAgICAge3RpY2tldCAmJiBleHRyYVF1ZXN0aW9ucyAmJiAoXG4gICAgICAgICAgPD5cbiAgICAgICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuaGVhZGVyfT5cbiAgICAgICAgICAgICAgPEljb25CdXR0b25cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5jbG9zZUJ0bn1cbiAgICAgICAgICAgICAgICBvbkNsaWNrPXtvbkNsb3NlfVxuICAgICAgICAgICAgICAgIHN4PXt7IGZsb2F0OiBcInJpZ2h0XCIgfX1cbiAgICAgICAgICAgICAgICBmb250U2l6ZT1cImxhcmdlXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxDbG9zZUljb24gLz5cbiAgICAgICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICAgICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiaDRcIiBndXR0ZXJCb3R0b20gY2xhc3NOYW1lPXtzdHlsZXMudGl0bGV9PlxuICAgICAgICAgICAgICAgIHt0aWNrZXQ/LnRpY2tldF90eXBlPy5uYW1lfVxuICAgICAgICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgICAgICAgIDxUeXBvZ3JhcGh5XG4gICAgICAgICAgICAgICAgdmFyaWFudD1cImJvZHkyXCJcbiAgICAgICAgICAgICAgICBndXR0ZXJCb3R0b21cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5zdWJ0aXRsZX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt0KFwidGlja2V0X2RldGFpbC5wdXJjaGFzZWRfYnlcIil9IHt0aWNrZXQ/Lm9yZGVyPy5vd25lcl9lbWFpbH1cbiAgICAgICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuXG4gICAgICAgICAgICAgIHtpc0NvbXBsZXRlICYmIChcbiAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5xckNvZGV9PlxuICAgICAgICAgICAgICAgICAgICA8UVJDb2RlXG4gICAgICAgICAgICAgICAgICAgICAgc2l6ZT17MjU2fVxuICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IFwiYXV0b1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWF4V2lkdGg6IFwiMTAwJVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IFwiMTAwJVwiXG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17dGlja2V0LnFyX2NvZGV9XG4gICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyNTYgMjU2XCJcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPXtzdHlsZXMuc3RhdHVzfT57dChcInRpY2tldF9kZXRhaWwuc3RhdHVzXCIpfTwvcD5cbiAgICAgICAgICAgICAgICAgIDxUeXBvZ3JhcGh5XG4gICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJib2R5MlwiXG4gICAgICAgICAgICAgICAgICAgIGd1dHRlckJvdHRvbVxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5xck5vdGV9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt0KFwidGlja2V0X2RldGFpbC5xcl9ub3RlXCIpfVxuICAgICAgICAgICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICApfVxuXG4gICAgICAgICAgICAgIHshc3VtbWl0Py5pc192aXJ0dWFsICYmIGlzQ29tcGxldGUgJiYgKFxuICAgICAgICAgICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuYWN0aW9uQnV0dG9uc0NvbnRhaW5lcn0+XG4gICAgICAgICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmRvd25sb2FkQnRufVxuICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwiY29udGFpbmVkXCJcbiAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17ZG93bmxvYWRUaWNrZXRQZGZ9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxEb3dubG9hZEljb24gZm9udFNpemU9XCJsYXJnZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgIHt0KFwidGlja2V0X2RldGFpbC5kb3dubG9hZFwiKX1cbiAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5zZW5kQnRufSAke1xuICAgICAgICAgICAgICAgICAgICAgIHNlbnRDb25maXJtYXRpb24gPyBzdHlsZXMuc2VudCA6IFwiXCJcbiAgICAgICAgICAgICAgICAgICAgfWB9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e29uU2VuZEVtYWlsfVxuICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17c2VudENvbmZpcm1hdGlvbn1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPEVtYWlsSWNvbiBmb250U2l6ZT1cImxhcmdlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAge3NlbnRDb25maXJtYXRpb25cbiAgICAgICAgICAgICAgICAgICAgICA/IHQoXCJ0aWNrZXRfZGV0YWlsLnNlbnRcIilcbiAgICAgICAgICAgICAgICAgICAgICA6IHQoXCJ0aWNrZXRfZGV0YWlsLnNlbmRcIil9XG4gICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyTnVtYmVyfT5cbiAgICAgICAgICAgICAgICA8Q29weVRleHRcbiAgICAgICAgICAgICAgICAgIHRleHQ9e3RpY2tldD8ub3JkZXI/Lm51bWJlcn1cbiAgICAgICAgICAgICAgICAgIHJldmVyc2VkXG4gICAgICAgICAgICAgICAgICB3aWR0aD17MTUwfVxuICAgICAgICAgICAgICAgICAgdG9vbHRpcFRleHQ9e3QoXCJvcmRlcl9zdW1tYXJ5LmNvcHlfb3JkZXJfbnVtYmVyXCIpfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmF0dGVuZGVlQ29udGFpbmVyfT5cbiAgICAgICAgICAgICAgPFR5cG9ncmFwaHlcbiAgICAgICAgICAgICAgICB2YXJpYW50PVwiaDRcIlxuICAgICAgICAgICAgICAgIGd1dHRlckJvdHRvbVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmF0dGVuZGVlSW5mb1RpdGxlfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfZGV0YWlsLmF0dGVuZGVlX2luZm9ybWF0aW9uXCIpfVxuICAgICAgICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgICAgICAgIHt0aWNrZXQgJiYgKFxuICAgICAgICAgICAgICAgIDxUaWNrZXRGb3JtXG4gICAgICAgICAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICAgICAgICAgIGV4dHJhUXVlc3Rpb25zPXtleHRyYVF1ZXN0aW9uc31cbiAgICAgICAgICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgICAgICAgICAgY2FuRWRpdD17Y2FuRWRpdFRpY2tldERhdGF9XG4gICAgICAgICAgICAgICAgICBvblN1Ym1pdD17b25TYXZlfVxuICAgICAgICAgICAgICAgICAgb25DbG9zZT17b25DbG9zZX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgPC8+XG4gICAgICAgICl9XG4gICAgICA8L0RyYXdlcj5cbiAgICAgIDxDdXN0b21EaWFsb2dcbiAgICAgICAgb3Blbj17ISFzYXZlTWVzc2FnZX1cbiAgICAgICAgb25DbG9zZT17b25DbG9zZVNhdmVNZXNzYWdlfVxuICAgICAgICB0aXRsZT17c2F2ZU1lc3NhZ2U/LnRpdGxlfVxuICAgICAgICBkZXNjcmlwdGlvbj17c2F2ZU1lc3NhZ2U/LmRlc2NyaXB0aW9ufVxuICAgICAgLz5cbiAgICA8Lz5cbiAgKTtcbn07XG5cblRpY2tldERldGFpbC5wcm9wVHlwZXMgPSB7XG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdCxcbiAgdGlja2V0SWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gIG9yZGVySWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gIG93bmVySWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gIG9uQ2xvc2U6IFByb3BUeXBlcy5mdW5jLFxuICBvcGVuOiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgVGlja2V0RGV0YWlsO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQ29udGFpbmVyLCBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVGlja2V0RGV0YWlscyB9IGZyb20gXCIuLi8uLi9ob29rcy91c2VUaWNrZXREZXRhaWxzXCI7XG5cbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgVGlja2V0U3RhdHVzID0gKHsgdGlja2V0IH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBpc0FjdGl2ZSA9IHRpY2tldC5pc19hY3RpdmU7XG4gIGNvbnN0IHJlZnVuZFJlcXVlc3RzID0gdGlja2V0LnJlZnVuZF9yZXF1ZXN0cz8uZmluZChcbiAgICAocikgPT4gci5zdGF0dXMgPT09IFwiUmVxdWVzdGVkXCJcbiAgKTtcbiAgY29uc3QgeyBpc0luY29tcGxldGUsIGlzVW5hc3NpZ25lZCwgaXNDb21wbGV0ZSB9ID0gdXNlVGlja2V0RGV0YWlscyh0aWNrZXQpO1xuXG4gIHJldHVybiAoXG4gICAgPENvbnRhaW5lciBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRTdGF0dXNDb250YWluZXJ9PlxuICAgICAge2lzQWN0aXZlID8gKFxuICAgICAgICA8PlxuICAgICAgICAgIHshIXJlZnVuZFJlcXVlc3RzICYmIChcbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJ0aWNrZXQgc3RhdHVzIHJlZnVuZCByZXF1ZXN0ZWRcIlxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5idXR0b25QaWxsfSAke3N0eWxlcy5idXR0b25SZWZ1bmRSZXF1ZXN0ZWR9YH1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnN0YXR1c19yZWZ1bmRfcmVxdWVzdGVkXCIpfVxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgKX1cbiAgICAgICAgICB7aXNJbmNvbXBsZXRlICYmIChcbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJ0aWNrZXQgc3RhdHVzIGluY29tcGxldGVcIlxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5idXR0b25QaWxsfSAke3N0eWxlcy5idXR0b25JbmNvbXBsZXRlfWB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5zdGF0dXNfaW5jb21wbGV0ZVwiKX1cbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICl9XG4gICAgICAgICAge2lzVW5hc3NpZ25lZCAmJiAoXG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwidGlja2V0IHN0YXR1cyB1bmFzc2lnbmVkXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuYnV0dG9uUGlsbH0gJHtzdHlsZXMuYnV0dG9uVW5hc3NpZ25lZH1gfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMuc3RhdHVzX3VuYXNzaWduZWRcIil9XG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICApfVxuICAgICAgICAgIHtpc0NvbXBsZXRlICYmIChcbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJ0aWNrZXQgc3RhdHVzIGNvbXBsZXRlXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuYnV0dG9uUGlsbH0gJHtzdHlsZXMuYnV0dG9uQ29tcGxldGV9YH1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnN0YXR1c19jb21wbGV0ZVwiKX1cbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvPlxuICAgICAgKSA6IChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJ0aWNrZXQgc3RhdHVzIGNhbmNlbGxlZFwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuYnV0dG9uUGlsbH0gJHtzdHlsZXMuYnV0dG9uQ2FuY2VsbGVkfWB9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMuc3RhdHVzX2NhbmNlbGxlZFwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApfVxuICAgIDwvQ29udGFpbmVyPlxuICApO1xufTtcblxuVGlja2V0U3RhdHVzLnByb3BUeXBlcyA9IHtcbiAgdGlja2V0OiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIG93bmVyOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgICAgc3RhdHVzOiBQcm9wVHlwZXMuc3RyaW5nXG4gICAgfSksXG4gICAgcmVmdW5kUmVxdWVzdHM6IFByb3BUeXBlcy5hcnJheU9mKE9iamVjdClcbiAgfSlcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRpY2tldFN0YXR1cztcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCwgdXNlU2VsZWN0b3IgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7XG4gIEJveCxcbiAgRGl2aWRlcixcbiAgVGFiLFxuICBUYWJzLFxuICB1c2VNZWRpYVF1ZXJ5LFxuICB1c2VUaGVtZVxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHtcbiAgREVGQVVMVF9JVEVNU19QRVJfUEFHRSxcbiAgRklSU1RfUEFHRSxcbiAgVEFCU1xufSBmcm9tIFwiLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgTXlPcmRlcnNUaWNrZXRzIGZyb20gXCIuLi9NeU9yZGVyc1RpY2tldHNcIjtcbmltcG9ydCBBc3NpZ25lZFRvTWUgZnJvbSBcIi4uL09yZGVyc0xpc3QvQXNzaWduZWRUb01lXCI7XG5pbXBvcnQge1xuICBnZXRUaWNrZXRzQnlPcmRlcixcbiAgZ2V0VXNlck9yZGVycyxcbiAgZ2V0VXNlclRpY2tldHNcbn0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcblxuY29uc3QgV2lkZ2V0VGFicyA9ICh7IHRpdGxlIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBbdGFiLCBzZXRUYWJdID0gdXNlU3RhdGUoVEFCUy5PUkRFUlMpO1xuICBjb25zdCBbdGlja2V0c0Z1bGx5TG9hZGVkLCBzZXRUaWNrZXRzRnVsbHlMb2FkZWRdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG4gIGNvbnN0IHtcbiAgICBmaWx0ZXIsXG4gICAgc29ydCxcbiAgICBvcmRlcnNfcGVyX3BhZ2U6IG9yZGVyc1BlclBhZ2UsXG4gICAgdGlja2V0X3Blcl9wYWdlOiB0aWNrZXRQZXJQYWdlLFxuICAgIHVzZXJUaWNrZXRzLFxuICAgIG1lbWJlck9yZGVyc1xuICB9ID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSk7XG4gIGNvbnN0IHRoZW1lID0gdXNlVGhlbWUoKTtcbiAgY29uc3QgaXNNb2JpbGUgPSB1c2VNZWRpYVF1ZXJ5KHRoZW1lLmJyZWFrcG9pbnRzLmRvd24oXCJsZ1wiKSk7XG5cbiAgY29uc3QgaGFuZGxlVGFiQ2hhbmdlID0gKF8sIG5ld1RhYikgPT4ge1xuICAgIHNldFRhYihuZXdUYWIpO1xuICB9O1xuXG4gIGNvbnN0IGZldGNoQXNzaWduZWRUaWNrZXRzID0gKHBhZ2UpID0+XG4gICAgZGlzcGF0Y2goXG4gICAgICBnZXRVc2VyVGlja2V0cyh7IHBhZ2UsIHBlclBhZ2U6IERFRkFVTFRfSVRFTVNfUEVSX1BBR0UsIGZpbHRlciwgc29ydCB9KVxuICAgICk7XG5cbiAgY29uc3QgZmV0Y2hPcmRlclRpY2tldHMgPSAocGFnZSkgPT5cbiAgICBkaXNwYXRjaChcbiAgICAgIGdldFVzZXJPcmRlcnMoe1xuICAgICAgICBwYWdlLFxuICAgICAgICBwZXJQYWdlOiBvcmRlcnNQZXJQYWdlLFxuICAgICAgICBmaWx0ZXIsXG4gICAgICAgIHNvcnRcbiAgICAgIH0pXG4gICAgKS50aGVuKChwYXlsb2FkKSA9PiB7XG4gICAgICBjb25zdCB7IGRhdGEgfSA9IHBheWxvYWQucmVzcG9uc2U7XG4gICAgICBjb25zdCBvcmRlclRpY2tldHNQcm9taXNlcyA9IGRhdGEubWFwKChvcmRlcikgPT5cbiAgICAgICAgZGlzcGF0Y2goXG4gICAgICAgICAgZ2V0VGlja2V0c0J5T3JkZXIoe1xuICAgICAgICAgICAgb3JkZXJJZDogb3JkZXIuaWQsXG4gICAgICAgICAgICBjdXJyZW50X3BhZ2U6IEZJUlNUX1BBR0UsXG4gICAgICAgICAgICBwZXJQYWdlOiB0aWNrZXRQZXJQYWdlLFxuICAgICAgICAgICAgZmlsdGVyLFxuICAgICAgICAgICAgc29ydFxuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgICk7XG5cbiAgICAgIHJldHVybiBQcm9taXNlLmFsbChvcmRlclRpY2tldHNQcm9taXNlcyk7XG4gICAgfSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBmZXRjaFByb21pc2VzID0gW1xuICAgICAgZmV0Y2hBc3NpZ25lZFRpY2tldHMoRklSU1RfUEFHRSksXG4gICAgICBmZXRjaE9yZGVyVGlja2V0cyhGSVJTVF9QQUdFKVxuICAgIF07XG4gICAgUHJvbWlzZS5hbGwoZmV0Y2hQcm9taXNlcykudGhlbigoKSA9PiBzZXRUaWNrZXRzRnVsbHlMb2FkZWQodHJ1ZSkpO1xuICB9LCBbZmlsdGVyLCBzb3J0XSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAodGlja2V0c0Z1bGx5TG9hZGVkKSB7XG4gICAgICBpZiAobWVtYmVyT3JkZXJzPy5sZW5ndGggPT09IDAgJiYgdXNlclRpY2tldHM/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgc2V0VGFiKFRBQlMuVElDS0VUUyk7XG4gICAgICB9XG4gICAgfVxuICB9LCBbdGlja2V0c0Z1bGx5TG9hZGVkXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLnRhYldyYXBwZXJ9PlxuICAgICAgPFRhYnNcbiAgICAgICAgdmFsdWU9e3RhYn1cbiAgICAgICAgb25DaGFuZ2U9e2hhbmRsZVRhYkNoYW5nZX1cbiAgICAgICAgdmFyaWFudD17aXNNb2JpbGUgPyBcImZ1bGxXaWR0aFwiIDogXCJzdGFuZGFyZFwifVxuICAgICAgPlxuICAgICAgICA8VGFiIGxhYmVsPXt0KFwib3JkZXJzLnRpdGxlXCIpfSB2YWx1ZT17VEFCUy5PUkRFUlN9IC8+XG4gICAgICAgIDxUYWIgbGFiZWw9e3QoXCJsYWJlbHMuYXNzaWduZWRfdG9fbWVcIil9IHZhbHVlPXtUQUJTLlRJQ0tFVFN9IC8+XG4gICAgICA8L1RhYnM+XG4gICAgICA8RGl2aWRlciAvPlxuICAgICAgPEJveCBzeD17eyBwdDogNiwgcGI6IDMgfX0+e3RpdGxlfTwvQm94PlxuICAgICAge3RhYiA9PT0gVEFCUy5PUkRFUlMgJiYgPE15T3JkZXJzVGlja2V0cyBmZXRjaERhdGE9e2ZldGNoT3JkZXJUaWNrZXRzfSAvPn1cbiAgICAgIHt0YWIgPT09IFRBQlMuVElDS0VUUyAmJiAoXG4gICAgICAgIDxBc3NpZ25lZFRvTWUgZmV0Y2hEYXRhPXtmZXRjaEFzc2lnbmVkVGlja2V0c30gLz5cbiAgICAgICl9XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBXaWRnZXRUYWJzO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cbmltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCwgdXNlU2VsZWN0b3IsIHNoYWxsb3dFcXVhbCwgY29ubmVjdCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgQm94IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7XG4gIHJlc2V0RmlsdGVyLFxuICByZXNldEVycm9yLFxuICBjaGFuZ2VTb3J0LFxuICBjaGFuZ2VGaWx0ZXJcbn0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcbmltcG9ydCBDdXN0b21UaGVtZSBmcm9tIFwiLi4vQ3VzdG9tVGhlbWVcIjtcbmltcG9ydCBMb2FkZXIgZnJvbSBcIi4uL0xvYWRlclwiO1xuaW1wb3J0IEN1c3RvbURpYWxvZ0NvbnRleHQgZnJvbSBcIi4uL0N1c3RvbURpYWxvZy9Db250ZXh0XCI7XG5pbXBvcnQgQ3VzdG9tRGlhbG9nIGZyb20gXCIuLi9DdXN0b21EaWFsb2dcIjtcblxuaW1wb3J0IEZpbHRlcnMgZnJvbSBcIi4uL0ZpbHRlcnNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCBXaWRnZXRUYWJzIGZyb20gXCIuLi9XaWRnZXRUYWJzXCI7XG5pbXBvcnQgU3VtbWl0SGVhZGVyIGZyb20gXCIuLi9TdW1taXRIZWFkZXJcIjtcblxuY29uc3QgV2lkZ2V0V3JhcHBlciA9ICgpID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG4gIGNvbnN0IFttZXNzYWdlLCBzZXRNZXNzYWdlXSA9IHVzZVN0YXRlKFwiXCIpO1xuICBjb25zdCBbbWVzc2FnZUNhbGxiYWNrLCBzZXRNZXNzYWdlQ2FsbGJhY2tdID0gdXNlU3RhdGUobnVsbCk7XG4gIGNvbnN0IHtcbiAgICBsb2FkaW5nLFxuICAgIGFwaUVycm9yLFxuICAgIGZpbHRlcjogeyBGSUxURVJfVkFSX09SREVSX05VTUJFUjogZmlsdGVyVmFsdWVzIH1cbiAgfSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30sIHNoYWxsb3dFcXVhbCk7XG5cbiAgY29uc3Qgb25SZXNldCA9ICgpID0+IHtcbiAgICBkaXNwYXRjaChyZXNldEZpbHRlcigpKTtcbiAgfTtcblxuICBjb25zdCByZXNldEFwaUVycm9yID0gKCkgPT4ge1xuICAgIGRpc3BhdGNoKHJlc2V0RXJyb3IoKSk7XG4gIH07XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoYXBpRXJyb3IpIHtcbiAgICAgIHNldE1lc3NhZ2UoYXBpRXJyb3IpO1xuICAgICAgc2V0TWVzc2FnZUNhbGxiYWNrKHJlc2V0QXBpRXJyb3IpO1xuICAgIH1cbiAgfSwgW2FwaUVycm9yXSk7XG5cbiAgY29uc3Qgb25GaWx0ZXIgPSAoZmlsdGVyVmFsdWUpID0+IHtcbiAgICBkaXNwYXRjaChjaGFuZ2VGaWx0ZXIoZmlsdGVyVmFsdWUpKTtcbiAgfTtcblxuICBjb25zdCBvblNvcnQgPSAoc29ydFZhbHVlKSA9PiB7XG4gICAgZGlzcGF0Y2goY2hhbmdlU29ydChzb3J0VmFsdWUpKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxDdXN0b21UaGVtZT5cbiAgICAgIDxMb2FkZXIgb3Blbj17bG9hZGluZ30gLz5cbiAgICAgIDxDdXN0b21EaWFsb2dcbiAgICAgICAgb3Blbj17ISFtZXNzYWdlfVxuICAgICAgICBvbkNsb3NlPXsoKSA9PiB7XG4gICAgICAgICAgc2V0TWVzc2FnZShudWxsKTtcbiAgICAgICAgICBpZiAobWVzc2FnZUNhbGxiYWNrKSBtZXNzYWdlQ2FsbGJhY2soKTtcbiAgICAgICAgfX1cbiAgICAgICAgYm9keT17bWVzc2FnZT8uYm9keX1cbiAgICAgICAgdGl0bGU9e21lc3NhZ2U/LnRpdGxlfVxuICAgICAgLz5cbiAgICAgIDxGaWx0ZXJzXG4gICAgICAgIG9uRmlsdGVyPXtvbkZpbHRlcn1cbiAgICAgICAgb25Tb3J0PXtvblNvcnR9XG4gICAgICAgIG9uU2VhcmNoPXtvbkZpbHRlcn1cbiAgICAgICAgb25SZXNldD17b25SZXNldH1cbiAgICAgIC8+XG4gICAgICA8Qm94IHN4PXt7IHBhZGRpbmc6IHsgeHM6IDIsIG1kOiAwLCBsZzogMCB9IH19PlxuICAgICAgICA8aDMgY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0c1RpdGxlVGV4dH0+XG4gICAgICAgICAge2ZpbHRlclZhbHVlc1xuICAgICAgICAgICAgPyB0KFwibGFiZWxzLnNlYXJjaF9yZXN1bHRzXCIsIHsgZmlsdGVyOiBmaWx0ZXJWYWx1ZXMgfSlcbiAgICAgICAgICAgIDogdChcImxhYmVscy50aWNrZXRzXCIpfVxuICAgICAgICA8L2gzPlxuICAgICAgPC9Cb3g+XG4gICAgICA8Q3VzdG9tRGlhbG9nQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17KHNldE1lc3NhZ2UsIHNldE1lc3NhZ2VDYWxsYmFjayl9PlxuICAgICAgICA8V2lkZ2V0VGFicyB0aXRsZT17PFN1bW1pdEhlYWRlciAvPn0gLz5cbiAgICAgIDwvQ3VzdG9tRGlhbG9nQ29udGV4dC5Qcm92aWRlcj5cbiAgICA8L0N1c3RvbVRoZW1lPlxuICApO1xufTtcblxuY29uc3QgbWFwU3RhdGVUb1Byb3BzID0gKHsgd2lkZ2V0U3RhdGUgfSkgPT4gKHtcbiAgc29ydDogd2lkZ2V0U3RhdGUuc29ydCxcbiAgZmlsdGVyOiB3aWRnZXRTdGF0ZS5maWx0ZXJcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBjb25uZWN0KG1hcFN0YXRlVG9Qcm9wcywge30pKFdpZGdldFdyYXBwZXIpO1xuIiwiaW1wb3J0IHsgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCwgdXNlU2VsZWN0b3IgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IGdldEV4dHJhUXVlc3Rpb25zLCBnZXRUaWNrZXQgfSBmcm9tIFwiLi4vYWN0aW9uc1wiO1xuXG5jb25zdCB1c2VHZXRUaWNrZXQgPSAodGlja2V0SWQsIG9yZGVySWQsIG93bmVySWQsIHJ1bikgPT4ge1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAocnVuKSB7XG4gICAgICBpZiAodGlja2V0SWQgJiYgb3JkZXJJZCkge1xuICAgICAgICBkaXNwYXRjaChnZXRUaWNrZXQodGlja2V0SWQsIG9yZGVySWQpKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG93bmVySWQpIHtcbiAgICAgICAgZGlzcGF0Y2goZ2V0RXh0cmFRdWVzdGlvbnMob3duZXJJZCkpO1xuICAgICAgfVxuICAgIH1cbiAgfSwgW3RpY2tldElkLCBvcmRlcklkLCBvd25lcklkLCBydW5dKTtcblxuICBjb25zdCB7IGV4dHJhUXVlc3Rpb25zLCBjdXJyZW50VGlja2V0OiB0aWNrZXQgfSA9IHVzZVNlbGVjdG9yKFxuICAgIChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGVcbiAgKTtcblxuICByZXR1cm4geyB0aWNrZXQsIGV4dHJhUXVlc3Rpb25zIH07XG59O1xuXG5leHBvcnQgZGVmYXVsdCB1c2VHZXRUaWNrZXQ7XG4iLCJpbXBvcnQgeyB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcblxuLy8gU21vb3RoIHNjcm9sbGluZyBmdW5jdGlvbiB1c2luZyByZXF1ZXN0QW5pbWF0aW9uRnJhbWVcbmZ1bmN0aW9uIHNtb290aFNjcm9sbFRvKGNvbnRhaW5lciwgdGFyZ2V0U2Nyb2xsVG9wLCBkdXJhdGlvbikge1xuICBjb25zdCBzdGFydFNjcm9sbFRvcCA9IGNvbnRhaW5lci5zY3JvbGxUb3A7XG4gIGNvbnN0IGRpc3RhbmNlID0gdGFyZ2V0U2Nyb2xsVG9wIC0gc3RhcnRTY3JvbGxUb3A7XG4gIGxldCBzdGFydFRpbWUgPSBudWxsO1xuXG4gIGZ1bmN0aW9uIGFuaW1hdGlvblN0ZXAodGltZXN0YW1wKSB7XG4gICAgaWYgKCFzdGFydFRpbWUpIHN0YXJ0VGltZSA9IHRpbWVzdGFtcDtcbiAgICBjb25zdCBlbGFwc2VkID0gdGltZXN0YW1wIC0gc3RhcnRUaW1lO1xuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW1hZ2ljLW51bWJlcnNcbiAgICBjb25zdCBwcm9ncmVzcyA9IE1hdGgubWluKGVsYXBzZWQgLyBkdXJhdGlvbiwgMSk7XG4gICAgY29uc3QgZWFzZUluT3V0UXVhZCA9XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbWFnaWMtbnVtYmVyc1xuICAgICAgcHJvZ3Jlc3MgPCAwLjUgPyAyICogcHJvZ3Jlc3MgKiogMiA6IDEgLSAoLTIgKiBwcm9ncmVzcyArIDIpICoqIDIgLyAyO1xuXG4gICAgY29udGFpbmVyLnNjcm9sbFRvcCA9IHN0YXJ0U2Nyb2xsVG9wICsgZGlzdGFuY2UgKiBlYXNlSW5PdXRRdWFkO1xuXG4gICAgaWYgKGVsYXBzZWQgPCBkdXJhdGlvbikge1xuICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGFuaW1hdGlvblN0ZXApO1xuICAgIH1cbiAgfVxuXG4gIHJlcXVlc3RBbmltYXRpb25GcmFtZShhbmltYXRpb25TdGVwKTtcbn1cblxuY29uc3QgdXNlU2Nyb2xsVG9FcnJvciA9IChmb3JtaWssIGNvbnRhaW5lcklkKSA9PiB7XG4gIGNvbnN0IHsgZXJyb3JzLCBpc1ZhbGlkLCBpc1N1Ym1pdHRpbmcgfSA9IGZvcm1paztcbiAgY29uc3QgZXJyb3JBcnJheSA9IE9iamVjdC5rZXlzKGVycm9ycyk7XG4gIGNvbnN0IGVycm9yQ291bnQgPSBlcnJvckFycmF5Lmxlbmd0aDtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChpc1ZhbGlkIHx8IGVycm9yQ291bnQgPT09IDApIHJldHVybjtcblxuICAgIC8vIHNvcnQgZWxlbWVudHMgYnkgcG9zaXRpb25cbiAgICBjb25zdCBlbGVtZW50c1NvcnRlZCA9IGVycm9yQXJyYXlcbiAgICAgIC5yZWR1Y2UoKHJlc3VsdCwgZXJyb3IpID0+IHtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYFtuYW1lPScke2Vycm9yfSddYCk7XG4gICAgICAgIGlmICghZWxlbWVudCkgcmV0dXJuIHJlc3VsdDtcblxuICAgICAgICBjb25zdCBlbFJlY3QgPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICByZXN1bHQucHVzaCh7IGVsZW1lbnQsIGVycm9yLCB0b3A6IGVsUmVjdC50b3AgfSk7XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH0sIFtdKVxuICAgICAgLnNvcnQoKGEsIGIpID0+IGEudG9wIC0gYi50b3ApO1xuXG4gICAgaWYgKGVsZW1lbnRzU29ydGVkLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuXG4gICAgY29uc3QgY29udGFpbmVyID0gZG9jdW1lbnRcbiAgICAgIC5nZXRFbGVtZW50QnlJZChjb250YWluZXJJZClcbiAgICAgIC5xdWVyeVNlbGVjdG9yKFwiLk11aURyYXdlci1wYXBlclwiKTtcbiAgICBjb25zdCB0YXJnZXQgPSBlbGVtZW50c1NvcnRlZFswXTtcblxuICAgIGlmIChjb250YWluZXI/LmNvbnRhaW5zKHRhcmdldC5lbGVtZW50KSkge1xuICAgICAgY29uc3QgY29udGFpbmVyUmVjdCA9IGNvbnRhaW5lci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgICAgLy8gQ2FsY3VsYXRlIHRoZSBvZmZzZXQgb2YgdGhlIHRhcmdldCBlbGVtZW50IHJlbGF0aXZlIHRvIHRoZSBjb250YWluZXJcbiAgICAgIGNvbnN0IGVsZW1PZmZlc3QgPSAxMDA7XG4gICAgICBjb25zdCBhbmltYXRpb25EdXJhdGlvbiA9IDUwMDtcbiAgICAgIGNvbnN0IHNjcm9sbFRvcCA9XG4gICAgICAgIHRhcmdldC50b3AgLSBjb250YWluZXJSZWN0LnRvcCArIGNvbnRhaW5lci5zY3JvbGxUb3AgLSBlbGVtT2ZmZXN0O1xuXG4gICAgICAvLyBTY3JvbGwgdGhlIGNvbnRhaW5lciB0byB0aGUgdGFyZ2V0IGVsZW1lbnQncyBwb3NpdGlvblxuICAgICAgc21vb3RoU2Nyb2xsVG8oY29udGFpbmVyLCBzY3JvbGxUb3AsIGFuaW1hdGlvbkR1cmF0aW9uKTsgLy8gNTAwbXMgZHVyYXRpb25cbiAgICB9XG4gIH0sIFtpc1N1Ym1pdHRpbmddKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IHVzZVNjcm9sbFRvRXJyb3I7XG4iLCJpbXBvcnQgeyBpc1RpY2tldFJlZnVuZGFibGUgfSBmcm9tIFwiLi4vdXRpbHMvdGlja2V0VXRpbHNcIjtcblxuZXhwb3J0IGNvbnN0IFNUQVRVU19DT01QTEVURSA9IFwiQ29tcGxldGVcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfSU5DT01QTEVURSA9IFwiSW5jb21wbGV0ZVwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19DQU5DRUxMRUQgPSBcIkNhbmNlbGxlZFwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19VTkFTU0lHTkVEID0gXCJVbmFzc2lnbmVkXCI7XG5cbmV4cG9ydCBjb25zdCB1c2VUaWNrZXREZXRhaWxzID0gKHRpY2tldCkgPT4ge1xuICBjb25zdCBnZXRTdGF0dXMgPSAoKSA9PiB7XG4gICAgaWYgKCF0aWNrZXQuaXNfYWN0aXZlKSByZXR1cm4gU1RBVFVTX0NBTkNFTExFRDtcbiAgICBpZiAodGlja2V0Lm93bmVyX2lkID09PSAwKSByZXR1cm4gU1RBVFVTX1VOQVNTSUdORUQ7XG4gICAgaWYgKCF0aWNrZXQub3duZXI/LmZpcnN0X25hbWUgfHwgIXRpY2tldC5vd25lcj8ubGFzdF9uYW1lKVxuICAgICAgcmV0dXJuIFNUQVRVU19JTkNPTVBMRVRFO1xuICAgIHJldHVybiB0aWNrZXQub3duZXIuc3RhdHVzO1xuICB9O1xuXG4gIGlmICghdGlja2V0KSByZXR1cm4ge307XG5cbiAgY29uc3Qgc3RhdHVzID0gZ2V0U3RhdHVzKCk7XG4gIGNvbnN0IGlzQWN0aXZlID0gdGlja2V0LmlzX2FjdGl2ZSAmJiBzdGF0dXMgIT09IFNUQVRVU19DQU5DRUxMRUQ7XG4gIGNvbnN0IGlzUmVmdW5kYWJsZSA9IGlzVGlja2V0UmVmdW5kYWJsZSh0aWNrZXQpO1xuICBjb25zdCBhbGxvd3NEZWxlZ2F0ZSA9XG4gICAgdGlja2V0Py50aWNrZXRfdHlwZT8uYWxsb3dzX3RvX2RlbGVnYXRlIHx8XG4gICAgdGlja2V0Py5wcm9tb19jb2RlPy5hbGxvd3NfdG9fZGVsZWdhdGU7XG4gIGNvbnN0IGlzQ29tcGxldGUgPSBzdGF0dXMgPT09IFNUQVRVU19DT01QTEVURTtcbiAgY29uc3QgaXNVbmFzc2lnbmVkID0gc3RhdHVzID09PSBTVEFUVVNfVU5BU1NJR05FRDtcbiAgY29uc3QgaXNJbmNvbXBsZXRlID0gc3RhdHVzID09PSBTVEFUVVNfSU5DT01QTEVURTtcbiAgY29uc3QgY2FuUmVhc3NpZ24gPVxuICAgICFpc1VuYXNzaWduZWQgJiZcbiAgICB0aWNrZXQudGlja2V0X3R5cGU/LmFsbG93c190b19yZWFzc2lnbiAmJlxuICAgICghdGlja2V0LnByb21vX2NvZGUgfHwgdGlja2V0LnByb21vX2NvZGU/LmFsbG93c190b19yZWFzc2lnbik7XG5cbiAgcmV0dXJuIHtcbiAgICBzdGF0dXMsXG4gICAgaXNDb21wbGV0ZSxcbiAgICBpc1VuYXNzaWduZWQsXG4gICAgaXNJbmNvbXBsZXRlLFxuICAgIGlzQWN0aXZlLFxuICAgIGlzUmVmdW5kYWJsZSxcbiAgICBhbGxvd3NEZWxlZ2F0ZSxcbiAgICBjYW5SZWFzc2lnblxuICB9O1xufTtcbiIsImltcG9ydCBpMThuIGZyb20gXCJpMThuZXh0XCI7XG5pbXBvcnQgeyBpbml0UmVhY3RJMThuZXh0IH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCBMYW5ndWFnZURldGVjdG9yIGZyb20gXCJpMThuZXh0LWJyb3dzZXItbGFuZ3VhZ2VkZXRlY3RvclwiO1xuaW1wb3J0IGVuIGZyb20gXCIuL2xvY2FsZXMvZW4uanNvblwiO1xuaW1wb3J0IGVzIGZyb20gXCIuL2xvY2FsZXMvZXMuanNvblwiO1xuXG4vLyBpbXBvcnQgQmFja2VuZCBmcm9tICdpMThuZXh0LWh0dHAtYmFja2VuZCc7XG4vLyBkb24ndCB3YW50IHRvIHVzZSB0aGlzP1xuLy8gaGF2ZSBhIGxvb2sgYXQgdGhlIFF1aWNrIHN0YXJ0IGd1aWRlXG4vLyBmb3IgcGFzc2luZyBpbiBsbmcgYW5kIHRyYW5zbGF0aW9ucyBvbiBpbml0XG5cbmkxOG5cbiAgLy8gbG9hZCB0cmFuc2xhdGlvbiB1c2luZyBodHRwIC0+IHNlZSAvcHVibGljL2xvY2FsZXMgKGkuZS4gaHR0cHM6Ly9naXRodWIuY29tL2kxOG5leHQvcmVhY3QtaTE4bmV4dC90cmVlL21hc3Rlci9leGFtcGxlL3JlYWN0L3B1YmxpYy9sb2NhbGVzKVxuICAvLyBsZWFybiBtb3JlOiBodHRwczovL2dpdGh1Yi5jb20vaTE4bmV4dC9pMThuZXh0LWh0dHAtYmFja2VuZFxuICAvLyB3YW50IHlvdXIgdHJhbnNsYXRpb25zIHRvIGJlIGxvYWRlZCBmcm9tIGEgcHJvZmVzc2lvbmFsIENETj8gPT4gaHR0cHM6Ly9naXRodWIuY29tL2xvY2l6ZS9yZWFjdC10dXRvcmlhbCNzdGVwLTItLS11c2UtdGhlLWxvY2l6ZS1jZG5cbiAgLy8gLnVzZShCYWNrZW5kKVxuICAvLyBkZXRlY3QgdXNlciBsYW5ndWFnZVxuICAvLyBsZWFybiBtb3JlOiBodHRwczovL2dpdGh1Yi5jb20vaTE4bmV4dC9pMThuZXh0LWJyb3dzZXItbGFuZ3VhZ2VEZXRlY3RvclxuICAudXNlKExhbmd1YWdlRGV0ZWN0b3IpXG4gIC8vIHBhc3MgdGhlIGkxOG4gaW5zdGFuY2UgdG8gcmVhY3QtaTE4bmV4dC5cbiAgLnVzZShpbml0UmVhY3RJMThuZXh0KVxuICAvLyBpbml0IGkxOG5leHRcbiAgLy8gZm9yIGFsbCBvcHRpb25zIHJlYWQ6IGh0dHBzOi8vd3d3LmkxOG5leHQuY29tL292ZXJ2aWV3L2NvbmZpZ3VyYXRpb24tb3B0aW9uc1xuICAuaW5pdCh7XG4gICAgZmFsbGJhY2tMbmc6IFwiZW5cIixcbiAgICBkZWJ1ZzogZmFsc2UsXG4gICAgcmVzb3VyY2VzOiB7XG4gICAgICBlbjogeyB0cmFuc2xhdGlvbjogZW4gfSxcbiAgICAgIGVzOiB7IHRyYW5zbGF0aW9uOiBlcyB9XG4gICAgfSxcbiAgICBpbnRlcnBvbGF0aW9uOiB7XG4gICAgICBlc2NhcGVWYWx1ZTogZmFsc2UgLy8gbm90IG5lZWRlZCBmb3IgcmVhY3QgYXMgaXQgZXNjYXBlcyBieSBkZWZhdWx0XG4gICAgfVxuICB9KTtcblxuZXhwb3J0IGRlZmF1bHQgaTE4bjtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5pbXBvcnQgeyBMT0dPVVRfVVNFUiB9IGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3NlY3VyaXR5L2FjdGlvbnNcIjtcbmltcG9ydCB7XG4gIFNUQVJUX0xPQURJTkcsXG4gIFNUT1BfTE9BRElORyxcbiAgUkVTRVRfTE9BRElOR1xufSBmcm9tIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9hY3Rpb25zXCI7XG5pbXBvcnQge1xuICBSRVNFVF9TVEFURSxcbiAgUkVTRVRfRklMVEVSLFxuICBTRVRfU1RBVEUsXG4gIFNFVF9VU0VSLFxuICBHRVRfVVNFUl9PUkRFUlMsXG4gIEdFVF9NWV9BU1NJR05FRF9USUNLRVRTLFxuICBHRVRfVElDS0VUU19CWV9PUkRFUixcbiAgVVBEQVRFX1RJQ0tFVFNfUkVGVU5EX1JFUVVFU1RFRCxcbiAgUkVDRUlWRV9USUNLRVQsXG4gIFJFQ0VJVkVfRVhUUkFfUVVFU1RJT05TLFxuICBVUERBVEVfVElDS0VULFxuICBBU1NJR05fVElDS0VULFxuICBSRVNFVF9BUElfRVJST1IsXG4gIFNFVF9BUElfRVJST1IsXG4gIFJFU0VUX1RJQ0tFVCxcbiAgQ0hBTkdFX0ZJTFRFUixcbiAgQ0hBTkdFX1NPUlQsXG4gIEZJTFRFUl9WQVJfQkFER0VfRkVBVFVSRSxcbiAgRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVIsXG4gIEZJTFRFUl9WQVJfREFURSxcbiAgRklMVEVSX1ZBUl9USUNLRVRfVFlQRSxcbiAgRklMVEVSX1ZBUl9GUkVFX1BBSUQsXG4gIEZJTFRFUl9WQVJfT1dORVJfU1RBVFVTLFxuICBGSUxURVJfVkFSX1RJQ0tFVF9BU1NJR05FRCxcbiAgRklMVEVSX1ZBUl9QUk9NT0NPREUsXG4gIERFTEVHQVRFX1RJQ0tFVFxufSBmcm9tIFwiLi9hY3Rpb25zXCI7XG5pbXBvcnQgeyBGSVJTVF9QQUdFLCBUQUJTIH0gZnJvbSBcIi4vdXRpbHMvY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBoYXNMb2FkZWRBbGxEYXRhIH0gZnJvbSBcIi4vdXRpbHNcIjtcblxuY29uc3QgREVGQVVMVF9GSUxURVJfU1RBVEUgPSB7XG4gIFtGSUxURVJfVkFSX0JBREdFX0ZFQVRVUkVdOiBbXSxcbiAgW0ZJTFRFUl9WQVJfVElDS0VUX1RZUEVdOiBbXSxcbiAgW0ZJTFRFUl9WQVJfRlJFRV9QQUlEXTogXCJcIixcbiAgW0ZJTFRFUl9WQVJfT1dORVJfU1RBVFVTXTogXCJcIixcbiAgW0ZJTFRFUl9WQVJfVElDS0VUX0FTU0lHTkVEXTogXCJcIixcbiAgW0ZJTFRFUl9WQVJfUFJPTU9DT0RFXTogXCJcIixcbiAgW0ZJTFRFUl9WQVJfT1JERVJfTlVNQkVSXTogXCJcIixcbiAgW0ZJTFRFUl9WQVJfREFURV06IG51bGxcbn07XG5cbmNvbnN0IERFRkFVTFRfU1RBVEUgPSB7XG4gIHN1bW1pdDogbnVsbCxcbiAgdXNlcjoge30sXG4gIHdpZGdldExvYWRpbmc6IGZhbHNlLFxuICBtZW1iZXJPcmRlcnM6IFtdLFxuICB1c2VyVGlja2V0czogW10sXG4gIGV4dHJhUXVlc3Rpb25zOiBbXSxcbiAgY3VycmVudFRpY2tldDogbnVsbCxcbiAgZXJyb3JzOiB7fSxcbiAgbG9hZGluZzogZmFsc2UsXG4gIGN1cnJlbnRfdGFiOiBUQUJTLk9SREVSUyxcbiAgc29ydDoge30sXG4gIGZpbHRlcjogREVGQVVMVF9GSUxURVJfU1RBVEUsXG4gIG9yZGVyc19jdXJyZW50X3BhZ2U6IDAsXG4gIG9yZGVyc19sYXN0X3BhZ2U6IDAsXG4gIG9yZGVyc19wZXJfcGFnZTogNSxcbiAgb3JkZXJzX3RvdGFsOiAwLFxuICB0aWNrZXRfY3VycmVudF9wYWdlOiAwLFxuICB0aWNrZXRfbGFzdF9wYWdlOiAwLFxuICB0aWNrZXRfcGVyX3BhZ2U6IDUsXG4gIHRpY2tldF90b3RhbDogMCxcbiAgdXNlcl90aWNrZXRzX3RvdGFsOiAwLFxuICB1c2VyX3RpY2tldHNfY3VycmVudF9wYWdlOiAwLFxuICB1c2VyX3RpY2tldHNfbGFzdF9wYWdlOiAwLFxuICBhcGlFcnJvcjogbnVsbFxufTtcblxuY29uc3QgV2lkZ2V0UmVkdWNlciA9IChzdGF0ZSA9IERFRkFVTFRfU1RBVEUsIHsgdHlwZSwgcGF5bG9hZCB9ID0ge30pID0+IHtcbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSBMT0dPVVRfVVNFUjpcbiAgICBjYXNlIFJFU0VUX1NUQVRFOlxuICAgICAgcmV0dXJuIERFRkFVTFRfU1RBVEU7XG4gICAgY2FzZSBTVEFSVF9MT0FESU5HOlxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIGxvYWRpbmc6IHRydWUgfTtcbiAgICBjYXNlIFNUT1BfTE9BRElORzpcbiAgICBjYXNlIFJFU0VUX0xPQURJTkc6XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgbG9hZGluZzogZmFsc2UgfTtcbiAgICBjYXNlIFJFU0VUX0FQSV9FUlJPUjpcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBhcGlFcnJvcjogbnVsbCB9O1xuICAgIGNhc2UgUkVTRVRfRklMVEVSOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIGZpbHRlcjogREVGQVVMVF9GSUxURVJfU1RBVEUsXG4gICAgICAgIHNvcnQ6IHt9LFxuICAgICAgICBvcmRlcnNfY3VycmVudF9wYWdlOiAxLFxuICAgICAgICBvcmRlcnNfbGFzdF9wYWdlOiAxXG4gICAgICB9O1xuICAgIGNhc2UgU0VUX1NUQVRFOlxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIC4uLnBheWxvYWQgfTtcbiAgICBjYXNlIFNFVF9BUElfRVJST1I6IHtcbiAgICAgIGNvbnN0IHsgdGl0bGUsIGh0bWw6IGJvZHkgfSA9IHBheWxvYWQ7XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgYXBpRXJyb3I6IHsgdGl0bGUsIGJvZHkgfSB9O1xuICAgIH1cbiAgICBjYXNlIFNFVF9VU0VSOlxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIHVzZXI6IHBheWxvYWQgfTtcbiAgICBjYXNlIENIQU5HRV9GSUxURVI6IHtcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBmaWx0ZXI6IHsgLi4uc3RhdGUuZmlsdGVyLCAuLi5wYXlsb2FkIH0gfTtcbiAgICB9XG4gICAgY2FzZSBDSEFOR0VfU09SVDoge1xuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIHNvcnQ6IHsgLi4ucGF5bG9hZCB9IH07XG4gICAgfVxuICAgIGNhc2UgR0VUX1VTRVJfT1JERVJTOiB7XG4gICAgICBjb25zdCB7IGRhdGEsIHRvdGFsLCBjdXJyZW50X3BhZ2UsIGxhc3RfcGFnZSB9ID0gcGF5bG9hZC5yZXNwb25zZTtcblxuICAgICAgaWYgKGhhc0xvYWRlZEFsbERhdGEoY3VycmVudF9wYWdlLCBzdGF0ZS5tZW1iZXJPcmRlcnMsIHRvdGFsKSlcbiAgICAgICAgcmV0dXJuIHN0YXRlO1xuXG4gICAgICBjb25zdCBtZW1iZXJPcmRlcnMgPVxuICAgICAgICBjdXJyZW50X3BhZ2UgPT09IEZJUlNUX1BBR0UgPyBkYXRhIDogWy4uLnN0YXRlLm1lbWJlck9yZGVycywgLi4uZGF0YV07XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBtZW1iZXJPcmRlcnMsXG4gICAgICAgIG9yZGVyc190b3RhbDogdG90YWwsXG4gICAgICAgIG9yZGVyc19jdXJyZW50X3BhZ2U6IGN1cnJlbnRfcGFnZSxcbiAgICAgICAgb3JkZXJzX2xhc3RfcGFnZTogbGFzdF9wYWdlXG4gICAgICB9O1xuICAgIH1cbiAgICBjYXNlIEdFVF9NWV9BU1NJR05FRF9USUNLRVRTOiB7XG4gICAgICBjb25zdCB7IGRhdGEsIHRvdGFsLCBjdXJyZW50X3BhZ2UsIGxhc3RfcGFnZSB9ID0gcGF5bG9hZC5yZXNwb25zZTtcblxuICAgICAgaWYgKGhhc0xvYWRlZEFsbERhdGEoY3VycmVudF9wYWdlLCBzdGF0ZS51c2VyVGlja2V0cywgdG90YWwpKVxuICAgICAgICByZXR1cm4gc3RhdGU7XG5cbiAgICAgIGNvbnN0IHVzZXJUaWNrZXRzID1cbiAgICAgICAgY3VycmVudF9wYWdlID09PSBGSVJTVF9QQUdFID8gZGF0YSA6IFsuLi5zdGF0ZS51c2VyVGlja2V0cywgLi4uZGF0YV07XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICB1c2VyVGlja2V0cyxcbiAgICAgICAgdXNlcl90aWNrZXRzX3RvdGFsOiB0b3RhbCxcbiAgICAgICAgdXNlcl90aWNrZXRzX2N1cnJlbnRfcGFnZTogY3VycmVudF9wYWdlLFxuICAgICAgICB1c2VyX3RpY2tldHNfbGFzdF9wYWdlOiBsYXN0X3BhZ2VcbiAgICAgIH07XG4gICAgfVxuICAgIGNhc2UgR0VUX1RJQ0tFVFNfQllfT1JERVI6IHtcbiAgICAgIGNvbnN0IHsgbWVtYmVyT3JkZXJzIH0gPSBzdGF0ZTtcbiAgICAgIGNvbnN0IHsgZGF0YSwgdG90YWwsIGN1cnJlbnRfcGFnZSwgbGFzdF9wYWdlIH0gPSBwYXlsb2FkLnJlc3BvbnNlO1xuICAgICAgY29uc3QgZm9ybWVyT3JkZXIgPSBtZW1iZXJPcmRlcnMuZmluZCgobykgPT4gby5pZCA9PT0gZGF0YVswXT8ub3JkZXJfaWQpO1xuXG4gICAgICBpZiAoaGFzTG9hZGVkQWxsRGF0YShjdXJyZW50X3BhZ2UsIGZvcm1lck9yZGVyPy5tZW1iZXJUaWNrZXRzLCB0b3RhbCkpXG4gICAgICAgIHJldHVybiBzdGF0ZTtcblxuICAgICAgY29uc3QgdXBkYXRlZE9yZGVyID0ge1xuICAgICAgICAuLi5mb3JtZXJPcmRlcixcbiAgICAgICAgbWVtYmVyVGlja2V0czpcbiAgICAgICAgICBjdXJyZW50X3BhZ2UgPT09IEZJUlNUX1BBR0VcbiAgICAgICAgICAgID8gZGF0YVxuICAgICAgICAgICAgOiBbLi4uZm9ybWVyT3JkZXIubWVtYmVyVGlja2V0cywgLi4uZGF0YV0sXG4gICAgICAgIHRpY2tldHNfcGFnZV9jdXJyZW50OiBjdXJyZW50X3BhZ2UsXG4gICAgICAgIHRpY2tldHNfcGFnZV9sYXN0OiBsYXN0X3BhZ2UsXG4gICAgICAgIHRpY2tldHNfdG90YWw6IHRvdGFsXG4gICAgICB9O1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIG1lbWJlck9yZGVyczogbWVtYmVyT3JkZXJzLm1hcCgobW8pID0+XG4gICAgICAgICAgbW8uaWQgPT09IHVwZGF0ZWRPcmRlci5pZCA/IHVwZGF0ZWRPcmRlciA6IG1vXG4gICAgICAgIClcbiAgICAgIH07XG4gICAgfVxuICAgIGNhc2UgVVBEQVRFX1RJQ0tFVFNfUkVGVU5EX1JFUVVFU1RFRDoge1xuICAgICAgY29uc3QgeyBtZW1iZXJPcmRlcnMgfSA9IHN0YXRlO1xuICAgICAgY29uc3QgdGlja2V0c1JlZnVuZFJlcXVlc3RlZCA9IHBheWxvYWQ7XG4gICAgICBjb25zdCBvcmRlciA9IG1lbWJlck9yZGVycy5maW5kKFxuICAgICAgICAobykgPT4gby5pZCA9PT0gdGlja2V0c1JlZnVuZFJlcXVlc3RlZFswXT8ub3JkZXJfaWRcbiAgICAgICk7XG4gICAgICBjb25zdCB1cGRhdGVkVGlja2V0cyA9IG9yZGVyPy5tZW1iZXJUaWNrZXRzLm1hcChcbiAgICAgICAgKHRpY2tldCkgPT5cbiAgICAgICAgICB0aWNrZXRzUmVmdW5kUmVxdWVzdGVkLmZpbmQoKHRycikgPT4gdHJyLmlkID09PSB0aWNrZXQuaWQpIHx8IHRpY2tldFxuICAgICAgKTtcbiAgICAgIGNvbnN0IHVwZGF0ZWRPcmRlciA9IHtcbiAgICAgICAgLi4ub3JkZXIsXG4gICAgICAgIG1lbWJlclRpY2tldHM6IHVwZGF0ZWRUaWNrZXRzXG4gICAgICB9O1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIG1lbWJlck9yZGVyczogbWVtYmVyT3JkZXJzLm1hcCgobW8pID0+XG4gICAgICAgICAgbW8uaWQgPT09IHVwZGF0ZWRPcmRlci5pZCA/IHVwZGF0ZWRPcmRlciA6IG1vXG4gICAgICAgIClcbiAgICAgIH07XG4gICAgfVxuICAgIGNhc2UgUkVTRVRfVElDS0VUOiB7XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgY3VycmVudFRpY2tldDogbnVsbCB9O1xuICAgIH1cbiAgICBjYXNlIFJFQ0VJVkVfVElDS0VUOiB7XG4gICAgICBjb25zdCB0aWNrZXQgPSBwYXlsb2FkLnJlc3BvbnNlO1xuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIGN1cnJlbnRUaWNrZXQ6IHRpY2tldCB9O1xuICAgIH1cbiAgICBjYXNlIFJFQ0VJVkVfRVhUUkFfUVVFU1RJT05TOiB7XG4gICAgICBjb25zdCB7IGRhdGEgfSA9IHBheWxvYWQucmVzcG9uc2U7XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgZXh0cmFRdWVzdGlvbnM6IGRhdGEgfTtcbiAgICB9XG4gICAgY2FzZSBVUERBVEVfVElDS0VUOiB7XG4gICAgICBjb25zdCB0aWNrZXREYXRhID0gcGF5bG9hZC5yZXNwb25zZTtcbiAgICAgIGNvbnN0IG5ld09yZGVycyA9IHN0YXRlLm1lbWJlck9yZGVycy5tYXAoKG9yZGVyKSA9PiB7XG4gICAgICAgIGNvbnN0IG5ld1RpY2tldHMgPSBvcmRlci5tZW1iZXJUaWNrZXRzLm1hcCgodGlja2V0KSA9PiB7XG4gICAgICAgICAgaWYgKHRpY2tldC5pZCA9PT0gdGlja2V0RGF0YS5pZCkge1xuICAgICAgICAgICAgcmV0dXJuIHRpY2tldERhdGE7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB0aWNrZXQ7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiB7IC4uLm9yZGVyLCBtZW1iZXJUaWNrZXRzOiBuZXdUaWNrZXRzIH07XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIG1lbWJlck9yZGVyczogbmV3T3JkZXJzIH07XG4gICAgfVxuICAgIGNhc2UgREVMRUdBVEVfVElDS0VUOlxuICAgIGNhc2UgQVNTSUdOX1RJQ0tFVDoge1xuICAgICAgY29uc3QgdGlja2V0RGF0YSA9IHBheWxvYWQucmVzcG9uc2U7XG4gICAgICBjb25zdCBuZXdPcmRlcnMgPSBzdGF0ZS5tZW1iZXJPcmRlcnMubWFwKChvcmRlcikgPT4ge1xuICAgICAgICBjb25zdCBuZXdUaWNrZXRzID0gb3JkZXIubWVtYmVyVGlja2V0cy5tYXAoKHRpY2tldCkgPT4ge1xuICAgICAgICAgIGlmICh0aWNrZXQuaWQgPT09IHRpY2tldERhdGEuaWQpIHtcbiAgICAgICAgICAgIHJldHVybiB0aWNrZXREYXRhO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdGlja2V0O1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4geyAuLi5vcmRlciwgbWVtYmVyVGlja2V0czogbmV3VGlja2V0cyB9O1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBjdXJyZW50VGlja2V0OiB0aWNrZXREYXRhLCBtZW1iZXJPcmRlcnM6IG5ld09yZGVycyB9O1xuICAgIH1cbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIHN0YXRlO1xuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBXaWRnZXRSZWR1Y2VyO1xuIiwiaW1wb3J0IHsgdXNlTWVtbyB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgY29uZmlndXJlU3RvcmUgfSBmcm9tIFwiQHJlZHV4anMvdG9vbGtpdFwiO1xuaW1wb3J0IHtcbiAgcGVyc2lzdFN0b3JlLFxuICBwZXJzaXN0UmVkdWNlcixcbiAgRkxVU0gsXG4gIFJFSFlEUkFURSxcbiAgUEFVU0UsXG4gIFBFUlNJU1QsXG4gIFBVUkdFLFxuICBSRUdJU1RFUlxufSBmcm9tIFwicmVkdXgtcGVyc2lzdFwiO1xuaW1wb3J0IHN0b3JhZ2UgZnJvbSBcInJlZHV4LXBlcnNpc3QvbGliL3N0b3JhZ2VcIjtcbmltcG9ydCB7IGNvbWJpbmVSZWR1Y2VycyB9IGZyb20gXCJyZWR1eFwiO1xuaW1wb3J0IFdpZGdldFJlZHVjZXIgZnJvbSBcIi4vcmVkdWNlclwiO1xuXG5leHBvcnQgY29uc3QgZ2V0U3RvcmUgPSAoe1xuICBjbGllbnRJZCxcbiAgbG9naW5VcmwsXG4gIHN1bW1pdCxcbiAgYXBpQmFzZVVybCxcbiAgdXBkYXRlUHJvZmlsZVxufSkgPT4ge1xuICAvLyB0byBhZGQgb3RoZXIgcmVkdWNlcnMgbGF0ZXJcbiAgY29uc3QgcmVkdWNlcnMgPSBjb21iaW5lUmVkdWNlcnMoe1xuICAgIHdpZGdldFN0YXRlOiBXaWRnZXRSZWR1Y2VyXG4gIH0pO1xuXG4gIGNvbnN0IHN0b3JlID0gY29uZmlndXJlU3RvcmUoe1xuICAgIHJlZHVjZXI6IHBlcnNpc3RSZWR1Y2VyKFxuICAgICAge1xuICAgICAgICBrZXk6IGByb290X215X29yZGVyc190aWNrZXRzXyR7Y2xpZW50SWR9YCxcbiAgICAgICAgc3RvcmFnZVxuICAgICAgfSxcbiAgICAgIHJlZHVjZXJzXG4gICAgKSxcbiAgICBtaWRkbGV3YXJlOiAoZ2V0RGVmYXVsdE1pZGRsZXdhcmUpID0+XG4gICAgICBnZXREZWZhdWx0TWlkZGxld2FyZSh7XG4gICAgICAgIHRodW5rOiB7XG4gICAgICAgICAgZXh0cmFBcmd1bWVudDoge1xuICAgICAgICAgICAgY2xpZW50SWQsXG4gICAgICAgICAgICBhcGlCYXNlVXJsLFxuICAgICAgICAgICAgc3VtbWl0LFxuICAgICAgICAgICAgbG9naW5VcmwsXG4gICAgICAgICAgICB1cGRhdGVQcm9maWxlXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBpbW11dGFibGVDaGVjazogZmFsc2UsXG4gICAgICAgIHNlcmlhbGl6YWJsZUNoZWNrOiB7XG4gICAgICAgICAgaWdub3JlZEFjdGlvbnM6IFtGTFVTSCwgUkVIWURSQVRFLCBQQVVTRSwgUEVSU0lTVCwgUFVSR0UsIFJFR0lTVEVSXVxuICAgICAgICB9XG4gICAgICB9KVxuICB9KTtcblxuICByZXR1cm4gc3RvcmU7XG59O1xuXG5leHBvcnQgY29uc3QgdXNlSW5pdFN0b3JlID0gKGNvbmZpZykgPT4ge1xuICBjb25zdCBzdG9yZSA9IHVzZU1lbW8oKCkgPT4gZ2V0U3RvcmUoY29uZmlnKSwgW10pO1xuICBjb25zdCBwZXJzaXN0b3IgPSB1c2VNZW1vKCgpID0+IHBlcnNpc3RTdG9yZShzdG9yZSksIFtzdG9yZV0pO1xuXG4gIHJldHVybiB7XG4gICAgc3RvcmUsXG4gICAgcGVyc2lzdG9yXG4gIH07XG59O1xuIiwiaW1wb3J0IHtcbiAgaW5pdExvZ091dCxcbiAgZ2V0QWNjZXNzVG9rZW5cbn0gZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvc2VjdXJpdHkvbWV0aG9kc1wiO1xuaW1wb3J0ICogYXMgU2VudHJ5IGZyb20gXCJAc2VudHJ5L3JlYWN0XCI7XG5cbmV4cG9ydCBjb25zdCBnZXRBY2Nlc3NUb2tlblNhZmVseSA9IGFzeW5jICgpID0+IHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gYXdhaXQgZ2V0QWNjZXNzVG9rZW4oKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGNvbnNvbGUubG9nKFwibXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0OjpnZXRBY2Nlc3NUb2tlblNhZmVseSBlcnJvcjogXCIsIGUpO1xuICAgIFNlbnRyeS5jYXB0dXJlRXhjZXB0aW9uKGUpO1xuICAgIGluaXRMb2dPdXQoKTtcbiAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoKTtcbiAgfVxufTtcbiIsImV4cG9ydCBjb25zdCBMQVNUX0hPVVJfT0ZfMjRfSE9VUiA9IDIzO1xuZXhwb3J0IGNvbnN0IExBU1RfTUlOVVRFX09GX0hPVVIgPSA1OTtcbmV4cG9ydCBjb25zdCBPTkVfUEFHRV9ORVhUID0gMTtcbmV4cG9ydCBjb25zdCBNSUxMSVNFQ19UT19TRUMgPSAxMDAwO1xuZXhwb3J0IGNvbnN0IE9ORV9EQVkgPSAxO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfSVRFTVNfUEVSX1BBR0UgPSA1O1xuZXhwb3J0IGNvbnN0IEZJUlNUX1BBR0UgPSAxO1xuZXhwb3J0IGNvbnN0IFBBR0lOQVRJT05fRElTUExBWV9DT1VOVCA9IDU7XG5leHBvcnQgY29uc3QgU1RFUF9PTkUgPSAxO1xuZXhwb3J0IGNvbnN0IFNURVBfVFdPID0gMjtcbmV4cG9ydCBjb25zdCBTVEVQX1RIUkVFID0gMztcblxuZXhwb3J0IGNvbnN0IFNUQVRVU19DT01QTEVURSA9IFwiU1RBVFVTX0NPTVBMRVRFXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX0lOQ09NUExFVEUgPSBcIlNUQVRVU19JTkNPTVBMRVRFXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1BFTkRJTkcgPSBcIlNUQVRVU19QRU5ESU5HXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX0NBTkNFTExFRCA9IFwiU1RBVFVTX0NBTkNFTExFRFwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19FUlJPUiA9IFwiU1RBVFVTX0VSUk9SXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1BST0NFU1NJTkcgPSBcIlNUQVRVU19QUk9DRVNTSU5HXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1VOQVNTSUdORUQgPSBcIlNUQVRVU19VTkFTU0lHTkVEXCI7XG5cbmV4cG9ydCBjb25zdCBTVEFUVVNfUkVGVU5EX1BFTkRJTkcgPSBcIlNUQVRVU19SRUZVTkRfUEVORElOR1wiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19SRUZVTkRfQVBQUk9WRUQgPSBcIlNUQVRVU19SRUZVTkRfQVBQUk9WRURcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfUkVGVU5EX1JFSkVDVEVEID0gXCJTVEFUVVNfUkVGVU5EX1JFSkVDVEVEXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1JFRlVORF9QRU5ESU5HX0xDID0gXCJSZXF1ZXN0ZWRcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfUkVGVU5EX0FQUFJPVkVEX0xDID0gXCJBcHByb3ZlZFwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19SRUZVTkRfUkVKRUNURURfTEMgPSBcIlJlamVjdGVkXCI7XG5cbmV4cG9ydCBjb25zdCBKRVNUX1RJTUVPVVRfSU5fTUlMTElTRUMgPSAxMDAwMDtcblxuZXhwb3J0IGNvbnN0IE9ORV9JVEVNID0gMTtcbmV4cG9ydCBjb25zdCBUV09fSVRFTSA9IDI7XG5leHBvcnQgY29uc3QgRklWRV9JVEVNID0gNTtcbmV4cG9ydCBjb25zdCBTSVhfSVRFTSA9IDY7XG5cbmV4cG9ydCBjb25zdCBQUk9NSVNFX0JBVENIX0xJTUlUID0gMTA7XG5leHBvcnQgY29uc3QgRklGVFlfUEVSX1BBR0UgPSA1MDtcblxuZXhwb3J0IGNvbnN0IEVSUk9SX0NPREVTID0ge1xuICA0MDE6IDQwMSxcbiAgNDAzOiA0MDEsXG4gIDQxMjogNDAxLFxuICA1MDA6IDUwMFxufTtcblxuZXhwb3J0IGNvbnN0IFRBQlMgPSB7XG4gIE9SREVSUzogXCJPUkRFUlNcIixcbiAgVElDS0VUUzogXCJUSUNLRVRTXCJcbn07XG4iLCJpbXBvcnQgbW9tZW50IGZyb20gXCJtb21lbnQtdGltZXpvbmVcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQge1xuICBMQVNUX0hPVVJfT0ZfMjRfSE9VUixcbiAgTEFTVF9NSU5VVEVfT0ZfSE9VUixcbiAgTUlMTElTRUNfVE9fU0VDLFxuICBGSVJTVF9QQUdFXG59IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuXG5leHBvcnQgY29uc3QgZm9ybWF0Q3VycmVuY3kgPSAodmFsdWUsIHsgbG9jYWxlID0gXCJlbi1VU1wiLCAuLi5vcHRpb25zIH0pID0+IHtcbiAgY29uc3QgZGVmYXVsdE9wdGlvbnMgPSB7XG4gICAgY3VycmVuY3k6IFwiVVNEXCIsXG4gICAgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAyLFxuICAgIG1heGltdW1GcmFjdGlvbkRpZ2l0czogMlxuICB9O1xuXG4gIGNvbnN0IGZvcm1hdHRlciA9IG5ldyBJbnRsLk51bWJlckZvcm1hdChsb2NhbGUsIHtcbiAgICBzdHlsZTogXCJjdXJyZW5jeVwiLFxuICAgIC4uLmRlZmF1bHRPcHRpb25zLFxuICAgIC4uLm9wdGlvbnNcbiAgfSk7XG5cbiAgcmV0dXJuIGZvcm1hdHRlci5mb3JtYXQodmFsdWUpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEZvcm1hdHRlZERhdGUgPSAoZGF0ZXRpbWUsIHRpbWVab25lKSA9PiB7XG4gIGlmICh0aW1lWm9uZSlcbiAgICByZXR1cm4gbW9tZW50XG4gICAgICAudHooZGF0ZXRpbWUgKiBNSUxMSVNFQ19UT19TRUMsIHRpbWVab25lKVxuICAgICAgLmZvcm1hdChcIk1NTU0gREQsIFlZWVlcIik7XG5cbiAgcmV0dXJuIG1vbWVudC51bml4KGRhdGV0aW1lKS5mb3JtYXQoXCJNTU1NIERELCBZWVlZXCIpO1xufTtcblxuZXhwb3J0IGNvbnN0IGNhbGN1bGF0ZU9yZGVyVG90YWxzID0gKHsgb3JkZXIsIHN1bW1pdCB9KSA9PiB7XG4gIGlmICghb3JkZXIgfHwgIXN1bW1pdCkgcmV0dXJuIHt9O1xuICBjb25zdCB0aWNrZXRzID0gb3JkZXI/Lm1lbWJlclRpY2tldHM7XG4gIGlmICghdGlja2V0cykgcmV0dXJuIHt9O1xuXG4gIGNvbnN0IHsgcmVmdW5kZWRfYW1vdW50LCBkaXNjb3VudF9hbW91bnQsIHRheGVzX2Ftb3VudCwgYW1vdW50IH0gPSBvcmRlcjtcbiAgY29uc3QgeyB0aWNrZXRfdHlwZXMgfSA9IHN1bW1pdDtcblxuICBjb25zdCB0aWNrZXRTdW1tYXJ5ID0gW107XG4gIGxldCBwdXJjaGFzZVRpY2tldFRvdGFsID0gMDtcblxuICBjb25zdCBjdXJyZW5jeU9iamVjdCA9IHsgY3VycmVuY3k6IG9yZGVyLmN1cnJlbmN5IH07XG5cbiAgT2JqZWN0LmtleXMob3JkZXIudGlja2V0c19leGNlcnB0X2J5X3RpY2tldF90eXBlKS5tYXAoKHRpY2tldCkgPT4ge1xuICAgIGNvbnN0IHRpY2tldFR5cGUgPSB0aWNrZXRfdHlwZXM/LmZpbmQoKHR0KSA9PiB0dC5uYW1lID09PSB0aWNrZXQpO1xuICAgIGlmICghdGlja2V0VHlwZSkgcmV0dXJuIG51bGw7XG4gICAgdGlja2V0U3VtbWFyeS5wdXNoKHtcbiAgICAgIHRpY2tldF90eXBlX2lkOiB0aWNrZXRUeXBlLmlkLFxuICAgICAgdGlja2V0X3R5cGU6IHRpY2tldFR5cGUsXG4gICAgICBuYW1lOiB0aWNrZXQsXG4gICAgICBxdHk6IG9yZGVyLnRpY2tldHNfZXhjZXJwdF9ieV90aWNrZXRfdHlwZVt0aWNrZXRdXG4gICAgfSk7XG4gICAgcHVyY2hhc2VUaWNrZXRUb3RhbCArPVxuICAgICAgdGlja2V0VHlwZS5jb3N0ICogb3JkZXIudGlja2V0c19leGNlcnB0X2J5X3RpY2tldF90eXBlW3RpY2tldF07XG5cbiAgICByZXR1cm4gdGlja2V0U3VtbWFyeTtcbiAgfSk7XG5cbiAgY29uc3QgcHVyY2hhc2VUb3RhbCA9IGZvcm1hdEN1cnJlbmN5KHB1cmNoYXNlVGlja2V0VG90YWwsIGN1cnJlbmN5T2JqZWN0KTtcblxuICBjb25zdCBkaXNjb3VudFRvdGFsID0gZm9ybWF0Q3VycmVuY3koZGlzY291bnRfYW1vdW50LCBjdXJyZW5jeU9iamVjdCk7XG4gIGNvbnN0IHJlZnVuZFRvdGFsID0gZm9ybWF0Q3VycmVuY3kocmVmdW5kZWRfYW1vdW50LCBjdXJyZW5jeU9iamVjdCk7XG4gIGNvbnN0IHRheGVzVG90YWwgPSBmb3JtYXRDdXJyZW5jeSh0YXhlc19hbW91bnQsIGN1cnJlbmN5T2JqZWN0KTtcbiAgY29uc3QgYW1vdW50VG90YWwgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob3JkZXIsIFwiYW1vdW50XCIpXG4gICAgPyBmb3JtYXRDdXJyZW5jeShhbW91bnQsIGN1cnJlbmN5T2JqZWN0KVxuICAgIDogZm9ybWF0Q3VycmVuY3kocHVyY2hhc2VUb3RhbCwgY3VycmVuY3lPYmplY3QpO1xuXG4gIHJldHVybiB7XG4gICAgZGlzY291bnRUb3RhbCxcbiAgICByZWZ1bmRUb3RhbCxcbiAgICB0YXhlc1RvdGFsLFxuICAgIGFtb3VudFRvdGFsLFxuICAgIHRpY2tldFN1bW1hcnlcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRPcmRlclRpY2tldHMgPSAobWVtYmVyT3JkZXJzLCBvcmRlcklkKSA9PiB7XG4gIGNvbnN0IG9yZGVycyA9IG1lbWJlck9yZGVycy5maWx0ZXIoKG8pID0+IG8uaWQgPT09IG9yZGVySWQpO1xuICByZXR1cm4gb3JkZXJzWzBdPy5tZW1iZXJUaWNrZXRzO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEVwb2NoTG93ZXJVcHBlckluU2Vjb25kcyA9ICh0cykgPT4ge1xuICBjb25zdCBsb3dlciA9IHRzLnNldEhvdXJzKDAsIDAsIDAsIDApIC8gTUlMTElTRUNfVE9fU0VDO1xuICBjb25zdCB1cHBlciA9XG4gICAgdHMuc2V0SG91cnMoTEFTVF9IT1VSX09GXzI0X0hPVVIsIExBU1RfTUlOVVRFX09GX0hPVVIsIDAsIDApIC9cbiAgICBNSUxMSVNFQ19UT19TRUM7XG4gIHJldHVybiB7XG4gICAgbG93ZXIsXG4gICAgdXBwZXJcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0Q3VycmVudFRpbWUgPSAoKSA9PlxuICBNYXRoLnJvdW5kKCtuZXcgRGF0ZSgpIC8gTUlMTElTRUNfVE9fU0VDKTtcblxuZXhwb3J0IGNvbnN0IGdldE5vdyA9ICgpID0+IChkaXNwYXRjaCwgZ2V0U3RhdGUpID0+IHtcbiAgY29uc3QgeyB0aW1lclN0YXRlIH0gPSBnZXRTdGF0ZSgpO1xuICByZXR1cm4gdGltZXJTdGF0ZT8ubm93VXRjID09IG51bGwgPyBkZWZhdWx0Q3VycmVudFRpbWUoKSA6IHRpbWVyU3RhdGU/Lm5vd1V0Yztcbn07XG5cbmV4cG9ydCBjb25zdCB1c2VOb3cgPSAoKSA9PiB7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcblxuICByZXR1cm4gZGlzcGF0Y2goZ2V0Tm93KCkpO1xufTtcblxuLyoqXG4gKiBAcGFyYW0gY3VycmVudFBhZ2VcbiAqIEBwYXJhbSBkYXRhXG4gKiBAcGFyYW0gdG90YWxcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5leHBvcnQgY29uc3QgaGFzTG9hZGVkQWxsRGF0YSA9IChjdXJyZW50UGFnZSwgZGF0YSwgdG90YWwpID0+IHtcbiAgbGV0IHJlcyA9IGZhbHNlO1xuICBjb25zdCBkYXRhTGVuZ3RoID0gQXJyYXkuaXNBcnJheShkYXRhKSA/IGRhdGEubGVuZ3RoIDogMDtcbiAgLy8gd2UgYWxyZWFkeSBsb2FkZWQgYWxsICBkYXRhICggZmlyc3QgcGFnZSBpcyBhbHdheXMgcmVsb2FkZWQgaXQgKVxuICBpZiAoY3VycmVudFBhZ2UgPiBGSVJTVF9QQUdFICYmIGRhdGFMZW5ndGggPiAwICYmIGRhdGFMZW5ndGggPT09IHRvdGFsKVxuICAgIHJlcyA9IHRydWU7XG4gIHJldHVybiByZXM7XG59O1xuIiwiaW1wb3J0IG1vbWVudCBmcm9tIFwibW9tZW50LXRpbWV6b25lXCI7XG5pbXBvcnQgeyBNSUxMSVNFQ19UT19TRUMsIE9ORV9EQVkgfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IHVzZU5vdyB9IGZyb20gXCIuXCI7XG5cbmV4cG9ydCBjb25zdCBjaGVja1N1bW1pdFBhc3QgPSAoc3VtbWl0LCBub3cpID0+IHtcbiAgaWYgKCFzdW1taXQpIHJldHVybiBudWxsO1xuXG4gIGNvbnN0IHJlYXNzaWduX2RhdGUgPVxuICAgIHN1bW1pdD8ucmVhc3NpZ25fdGlja2V0X3RpbGxfZGF0ZSAmJlxuICAgIHN1bW1pdC5yZWFzc2lnbl90aWNrZXRfdGlsbF9kYXRlIDwgc3VtbWl0LmVuZF9kYXRlXG4gICAgICA/IHN1bW1pdC5yZWFzc2lnbl90aWNrZXRfdGlsbF9kYXRlXG4gICAgICA6IHN1bW1pdC5lbmRfZGF0ZTtcblxuICByZXR1cm4gbm93ID4gcmVhc3NpZ25fZGF0ZTtcbn07XG5cbmV4cG9ydCBjb25zdCBjaGVja1N1bW1pdFN0YXJ0ZWQgPSAoc3VtbWl0LCBub3cpID0+IHtcbiAgaWYgKCFzdW1taXQpIHJldHVybiBudWxsO1xuXG4gIHJldHVybiBzdW1taXQuc3RhcnRfZGF0ZSA8IG5vdztcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTdW1taXREYXlzRGlmZiA9IChzdW1taXQpID0+IHtcbiAgaWYgKCFzdW1taXQpIHJldHVybiBudWxsO1xuICBjb25zdCBzdGFydERheSA9IG1vbWVudChzdW1taXQuc3RhcnRfZGF0ZSAqIE1JTExJU0VDX1RPX1NFQykudHooXG4gICAgc3VtbWl0LnRpbWVfem9uZV9pZFxuICApO1xuICBjb25zdCBlbmREYXkgPSBtb21lbnQoc3VtbWl0LmVuZF9kYXRlICogTUlMTElTRUNfVE9fU0VDKS50eihcbiAgICBzdW1taXQudGltZV96b25lX2lkXG4gICk7XG4gIGNvbnN0IGRheXMgPSBlbmREYXk/LmRpZmYoc3RhcnREYXksIFwiZGF5c1wiKTtcbiAgcmV0dXJuIHtcbiAgICBzdGFydERheSxcbiAgICBlbmREYXksXG4gICAgZGF5c1xuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFN1bW1pdEZvcm1hdHRlZERhdGUgPSAoc3VtbWl0KSA9PiB7XG4gIGlmICghc3VtbWl0KSByZXR1cm4gbnVsbDtcbiAgY29uc3QgeyBzdGFydERheSwgZW5kRGF5LCBkYXlzIH0gPSBnZXRTdW1taXREYXlzRGlmZihzdW1taXQpO1xuICBpZiAoIXN0YXJ0RGF5IHx8ICFlbmREYXkpIHJldHVybiBudWxsO1xuICBsZXQgZm9ybWF0U3RhcnREYXRlID0gXCJNTU1NIERELCBZWVlZXCI7XG4gIGxldCBmb3JtYXRFbmREYXRlID0gXCJNTU1NIERELCBZWVlZXCI7XG4gIGlmIChzdGFydERheS55ZWFyKCkgPT09IGVuZERheS55ZWFyKCkpIGZvcm1hdFN0YXJ0RGF0ZSA9IFwiTU1NTSBERFwiO1xuICBpZiAoc3RhcnREYXkubW9udGgoKSA9PT0gZW5kRGF5Lm1vbnRoKCkpIGZvcm1hdEVuZERhdGUgPSBcIkRELCBZWVlZXCI7XG5cbiAgY29uc3Qgc3RhcnREYXRlID0gc3RhcnREYXkuZm9ybWF0KGZvcm1hdFN0YXJ0RGF0ZSk7XG4gIGNvbnN0IGVuZERhdGUgPSBlbmREYXkuZm9ybWF0KGZvcm1hdEVuZERhdGUpO1xuXG4gIGlmIChkYXlzID4gT05FX0RBWSkgcmV0dXJuIGAke3N0YXJ0RGF0ZX0gLSAke2VuZERhdGV9YDtcblxuICByZXR1cm4gc3RhcnREYXRlO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFN1bW1pdExvY2F0aW9uID0gKHN1bW1pdCkgPT4ge1xuICBpZiAoIXN1bW1pdCkgcmV0dXJuIG51bGw7XG5cbiAgY29uc3QgbG9jYXRpb24gPSBzdW1taXQubG9jYXRpb25zPy5maW5kKFxuICAgIChsKSA9PiBsLmNsYXNzX25hbWUgPT09IFwiU3VtbWl0VmVudWVcIiAmJiBsLmlzX21haW4gPT09IHRydWVcbiAgKTtcblxuICBpZiAoIWxvY2F0aW9uKSByZXR1cm4gbnVsbDtcblxuICByZXR1cm4gYCR7bG9jYXRpb24uY2l0eX0sICR7bG9jYXRpb24uY291bnRyeX1gO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFN1bW1pdFJlYXNzaWduRGF0ZSA9IChzdW1taXQpID0+IHtcbiAgaWYgKCFzdW1taXQpIHJldHVybiBudWxsO1xuXG4gIHJldHVybiBzdW1taXQucmVhc3NpZ25fdGlja2V0X3RpbGxfZGF0ZSAmJlxuICAgIHN1bW1pdC5yZWFzc2lnbl90aWNrZXRfdGlsbF9kYXRlIDwgc3VtbWl0LmVuZF9kYXRlXG4gICAgPyBzdW1taXQucmVhc3NpZ25fdGlja2V0X3RpbGxfZGF0ZVxuICAgIDogc3VtbWl0LmVuZF9kYXRlO1xufTtcblxuZXhwb3J0IGNvbnN0IHVzZVN1bW1pdERldGFpbHMgPSAoeyBzdW1taXQgfSkgPT4ge1xuICBjb25zdCBub3cgPSB1c2VOb3coKTtcblxuICBpZiAoIXN1bW1pdCkgcmV0dXJuIHt9O1xuXG4gIGNvbnN0IGxvY2F0aW9uID0gZ2V0U3VtbWl0TG9jYXRpb24oc3VtbWl0KTtcbiAgY29uc3QgZm9ybWF0dGVkRGF0ZSA9IGdldFN1bW1pdEZvcm1hdHRlZERhdGUoc3VtbWl0KTtcbiAgY29uc3QgcmVhc3NpZ25EYXRlID0gZ2V0U3VtbWl0UmVhc3NpZ25EYXRlKHN1bW1pdCk7XG4gIGNvbnN0IGZvcm1hdHRlZFJlYXNzaWduRGF0ZSA9IG1vbWVudC50eihcbiAgICByZWFzc2lnbkRhdGUsXG4gICAgc3VtbWl0LnRpbWVfem9uZT8udGltZV96b25lX2lkXG4gICk7XG4gIGNvbnN0IGRheXNVbnRpbFJlYXNzaWduRGVhZGxpbmUgPSBnZXRTdW1taXREYXlzRGlmZihcbiAgICBub3csXG4gICAgcmVhc3NpZ25EYXRlLFxuICAgIHN1bW1pdC50aW1lX3pvbmU/Lm5hbWVcbiAgKTtcblxuICBjb25zdCBpc1Bhc3QgPSBjaGVja1N1bW1pdFBhc3Qoc3VtbWl0LCBub3cpO1xuICBjb25zdCBpc1N0YXJ0ZWQgPSBjaGVja1N1bW1pdFN0YXJ0ZWQoc3VtbWl0LCBub3cpO1xuICBjb25zdCBpc1JlYXNzaWduYWJsZSA9IHJlYXNzaWduRGF0ZSA+IG5vdztcblxuICByZXR1cm4ge1xuICAgIG5hbWU6IHN1bW1pdD8ubmFtZSxcbiAgICBub3csXG4gICAgbG9jYXRpb24sXG4gICAgZm9ybWF0dGVkRGF0ZSxcbiAgICByZWFzc2lnbkRhdGUsXG4gICAgZm9ybWF0dGVkUmVhc3NpZ25EYXRlLFxuICAgIGRheXNVbnRpbFJlYXNzaWduRGVhZGxpbmUsXG4gICAgaXNQYXN0LFxuICAgIGlzU3RhcnRlZCxcbiAgICBpc1JlYXNzaWduYWJsZVxuICB9O1xufTtcbiIsImltcG9ydCAqIGFzIHl1cCBmcm9tIFwieXVwXCI7XG5pbXBvcnQgaTE4biBmcm9tIFwiLi4vaTE4blwiO1xuaW1wb3J0IHtcbiAgU1RBVFVTX0NBTkNFTExFRCxcbiAgU1RBVFVTX0NPTVBMRVRFLFxuICBTVEFUVVNfSU5DT01QTEVURSxcbiAgU1RBVFVTX1JFRlVORF9BUFBST1ZFRCxcbiAgU1RBVFVTX1JFRlVORF9BUFBST1ZFRF9MQyxcbiAgU1RBVFVTX1JFRlVORF9QRU5ESU5HLFxuICBTVEFUVVNfUkVGVU5EX1BFTkRJTkdfTEMsXG4gIFNUQVRVU19SRUZVTkRfUkVKRUNURUQsXG4gIFNUQVRVU19SRUZVTkRfUkVKRUNURURfTEMsXG4gIFNUQVRVU19VTkFTU0lHTkVEXG59IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgVElDS0VUX0FUVEVOREVFX0tFWVMgfSBmcm9tIFwiLi4vY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29uc3RhbnRzXCI7XG5pbXBvcnQge1xuICBjaGVja0lmVmFsdWVNYXRjaCxcbiAgZ2V0VHlwZUluaXRpYWxWYWx1ZSxcbiAgdG9TbHVnXG59IGZyb20gXCIuLi9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvdXRpbHNcIjtcbmltcG9ydCB7XG4gIFF1ZXN0aW9uVHlwZV9DaGVja2JveCxcbiAgUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdCxcbiAgUXVlc3Rpb25UeXBlX0NvbWJvQm94LFxuICBRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94LFxuICBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0XG59IGZyb20gXCIuLi9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbnN0YW50c1wiO1xuXG5leHBvcnQgY29uc3Qgc3RhdHVzRGF0YSA9IHtcbiAgW1NUQVRVU19VTkFTU0lHTkVEXToge1xuICAgIHR5cGU6IFNUQVRVU19VTkFTU0lHTkVELFxuICAgIHRleHQ6IGkxOG4udChcInRpY2tldF9zdGF0dXMudW5hc3NpZ25lZFwiKVxuICB9LFxuICBbU1RBVFVTX0lOQ09NUExFVEVdOiB7XG4gICAgdHlwZTogU1RBVFVTX0lOQ09NUExFVEUsXG4gICAgdGV4dDogaTE4bi50KFwidGlja2V0X3N0YXR1cy5pbmNvbXBsZXRlXCIpXG4gIH0sXG4gIFtTVEFUVVNfQ09NUExFVEVdOiB7XG4gICAgdHlwZTogU1RBVFVTX0NPTVBMRVRFLFxuICAgIHRleHQ6IGkxOG4udChcInRpY2tldF9zdGF0dXMuY29tcGxldGVcIilcbiAgfSxcbiAgW1NUQVRVU19DQU5DRUxMRURdOiB7XG4gICAgdHlwZTogU1RBVFVTX0NBTkNFTExFRCxcbiAgICB0ZXh0OiBpMThuLnQoXCJ0aWNrZXRfc3RhdHVzLmNhbmNlbGxlZFwiKVxuICB9XG59O1xuZXhwb3J0IGNvbnN0IGdldFRpY2tldFN0YXR1c0tleSA9ICh0aWNrZXQpID0+IHtcbiAgaWYgKCF0aWNrZXQuaXNfYWN0aXZlKSByZXR1cm4gU1RBVFVTX0NBTkNFTExFRDtcblxuICBpZiAodGlja2V0Lm93bmVyX2lkID09PSAwKSByZXR1cm4gU1RBVFVTX1VOQVNTSUdORUQ7XG5cbiAgaWYgKCF0aWNrZXQub3duZXI/LmZpcnN0X25hbWUgfHwgIXRpY2tldC5vd25lcj8ubGFzdF9uYW1lKVxuICAgIHJldHVybiBTVEFUVVNfSU5DT01QTEVURTtcblxuICBpZiAodGlja2V0Lm93bmVyICYmIHRpY2tldC5vd25lcj8uc3RhdHVzID09PSBcIkluY29tcGxldGVcIilcbiAgICByZXR1cm4gU1RBVFVTX0lOQ09NUExFVEU7XG5cbiAgaWYgKHRpY2tldC5vd25lciAmJiB0aWNrZXQub3duZXI/LnN0YXR1cyA9PT0gXCJDb21wbGV0ZVwiKVxuICAgIHJldHVybiBTVEFUVVNfQ09NUExFVEU7XG5cbiAgcmV0dXJuIFNUQVRVU19JTkNPTVBMRVRFO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFRpY2tldFN0YXR1c0RhdGEgPSAodGlja2V0LCBpc1N1bW1pdFBhc3QpID0+XG4gIHN0YXR1c0RhdGFbZ2V0VGlja2V0U3RhdHVzS2V5KHRpY2tldCwgaXNTdW1taXRQYXN0KV07XG5cbmV4cG9ydCBjb25zdCBnZXRUaWNrZXRSb2xlID0gKHRpY2tldCkgPT4ge1xuICBpZiAoIXRpY2tldC5iYWRnZSkgcmV0dXJuIG51bGw7XG5cbiAgY29uc3QgeyBmZWF0dXJlcyB9ID0gdGlja2V0LmJhZGdlO1xuXG4gIGlmIChmZWF0dXJlcy5sZW5ndGggPiAwKVxuICAgIHJldHVybiBmZWF0dXJlcy5tYXAoKGZlYXR1cmUpID0+IGZlYXR1cmUubmFtZSkuam9pbihcIiwgXCIpO1xuXG4gIHJldHVybiBudWxsO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFRpY2tldFR5cGUgPSAodGlja2V0LCBzdW1taXQpID0+XG4gIHN1bW1pdC50aWNrZXRfdHlwZXMuZmluZCgodHlwZSkgPT4gdHlwZS5pZCA9PT0gdGlja2V0LnRpY2tldF90eXBlX2lkKTtcblxuZXhwb3J0IGNvbnN0IGlzVGlja2V0UmVmdW5kYWJsZSA9ICh0aWNrZXQpID0+XG4gIHRpY2tldD8uZmluYWxfYW1vdW50ID4gMCAmJlxuICB0aWNrZXQ/Lm5ldF9zZWxsaW5nX2Nvc3QgPiB0aWNrZXQucmVmdW5kZWRfYW1vdW50ICYmXG4gICF0aWNrZXQ/LnJlZnVuZF9yZXF1ZXN0cz8uc29tZShcbiAgICAocnIpID0+IHJyLnN0YXR1cyA9PT0gU1RBVFVTX1JFRlVORF9QRU5ESU5HX0xDXG4gICk7XG5cbmV4cG9ydCBjb25zdCB0aWNrZXRzUmVmdW5kYWJsZSA9ICh0aWNrZXRzKSA9PlxuICB0aWNrZXRzPy5maWx0ZXIoKHRpY2tldCkgPT4gaXNUaWNrZXRSZWZ1bmRhYmxlKHRpY2tldCkpLmxlbmd0aCB8fCAwO1xuXG5leHBvcnQgY29uc3QgZ2V0UmVmdW5kZWRSZXF1ZXN0ZWRUaWNrZXRzID0gKHRpY2tldHMpID0+XG4gIHRpY2tldHM/LmZpbHRlcigodGlja2V0KSA9PlxuICAgIHRpY2tldC5yZWZ1bmRfcmVxdWVzdHM/LnNvbWUoKHJyKSA9PiByci5zdGF0dXMgPT09IFNUQVRVU19SRUZVTkRfUEVORElOR19MQylcbiAgKTtcbmV4cG9ydCBjb25zdCBnZXRBbGxSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXRzID0gKHRpY2tldHMpID0+IHtcbiAgY29uc3QgYWxsVGlja2V0cyA9IFtdO1xuICB0aWNrZXRzPy5tYXAoKHRpY2tldCkgPT4ge1xuICAgIGlmIChcbiAgICAgIHRpY2tldC5yZWZ1bmRfcmVxdWVzdHM/LnNvbWUoXG4gICAgICAgIChycikgPT4gcnIuc3RhdHVzID09PSBTVEFUVVNfUkVGVU5EX1BFTkRJTkdfTENcbiAgICAgICkgfHxcbiAgICAgIHRpY2tldC5yZWZ1bmRfcmVxdWVzdHM/LnNvbWUoXG4gICAgICAgIChycikgPT4gcnIuc3RhdHVzID09PSBTVEFUVVNfUkVGVU5EX0FQUFJPVkVEX0xDXG4gICAgICApIHx8XG4gICAgICB0aWNrZXQucmVmdW5kX3JlcXVlc3RzPy5zb21lKFxuICAgICAgICAocnIpID0+IHJyLnN0YXR1cyA9PT0gU1RBVFVTX1JFRlVORF9SRUpFQ1RFRF9MQ1xuICAgICAgKVxuICAgICkge1xuICAgICAgYWxsVGlja2V0cy5wdXNoKHRpY2tldCk7XG4gICAgfVxuICAgIHJldHVybiB0aWNrZXQ7XG4gIH0pO1xuICByZXR1cm4gYWxsVGlja2V0cztcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRSZWZ1bmRlZFJlcXVlc3RlZFN0YXR1cyA9ICh0aWNrZXQpID0+IHtcbiAgaWYgKFxuICAgIHRpY2tldC5yZWZ1bmRfcmVxdWVzdHM/LnNvbWUoKHJyKSA9PiByci5zdGF0dXMgPT09IFNUQVRVU19SRUZVTkRfUEVORElOR19MQylcbiAgKVxuICAgIHJldHVybiBTVEFUVVNfUkVGVU5EX1BFTkRJTkc7XG4gIGlmIChcbiAgICB0aWNrZXQucmVmdW5kX3JlcXVlc3RzPy5zb21lKFxuICAgICAgKHJyKSA9PiByci5zdGF0dXMgPT09IFNUQVRVU19SRUZVTkRfQVBQUk9WRURfTENcbiAgICApXG4gIClcbiAgICByZXR1cm4gU1RBVFVTX1JFRlVORF9BUFBST1ZFRDtcbiAgaWYgKFxuICAgIHRpY2tldC5yZWZ1bmRfcmVxdWVzdHM/LnNvbWUoXG4gICAgICAocnIpID0+IHJyLnN0YXR1cyA9PT0gU1RBVFVTX1JFRlVORF9SRUpFQ1RFRF9MQ1xuICAgIClcbiAgKVxuICAgIHJldHVybiBTVEFUVVNfUkVGVU5EX1JFSkVDVEVEO1xuICByZXR1cm4gU1RBVFVTX1JFRlVORF9QRU5ESU5HO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFJlZnVuZFJlcXVlc3RlZFN0YXR1c0NvbG9yID0gKHRpY2tldCkgPT4ge1xuICBjb25zdCBzdGF0dXMgPSBnZXRSZWZ1bmRlZFJlcXVlc3RlZFN0YXR1cyh0aWNrZXQpO1xuICBsZXQgc3RhdHVzQ29sb3IgPSBcIlwiO1xuICBzd2l0Y2ggKHN0YXR1cykge1xuICAgIGNhc2UgU1RBVFVTX1JFRlVORF9QRU5ESU5HOlxuICAgICAgc3RhdHVzQ29sb3IgPSBcInBlbmRpbmdcIjtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgU1RBVFVTX1JFRlVORF9BUFBST1ZFRDpcbiAgICAgIHN0YXR1c0NvbG9yID0gXCJhcHByb3ZlZFwiO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBTVEFUVVNfUkVGVU5EX1JFSkVDVEVEOlxuICAgICAgc3RhdHVzQ29sb3IgPSBcInJlamVjdGVkXCI7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgc3RhdHVzQ29sb3IgPSBcInBlbmRpbmdcIjtcbiAgfVxuICByZXR1cm4gc3RhdHVzQ29sb3I7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VHlwZVZhbGlkYXRpb24gPSAodHlwZSwgbmFtZSwgaXNSZXF1aXJlZCkgPT4ge1xuICBsZXQgc2NoZW1hO1xuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja2JveDpcbiAgICAgIHNjaGVtYSA9IHl1cC5ib29sKCkub25lT2YoW3RydWVdLCBpMThuLnQoXCJ2YWxpZGF0aW9uLmNoZWNrYm94LnJlcXVpcmVkXCIpKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdDpcbiAgICAgIHNjaGVtYSA9IHl1cC5zdHJpbmcoYEVudGVyICR7bmFtZX1gKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdDpcbiAgICAgIHNjaGVtYSA9IHl1cC5hcnJheSgpLm9mKHl1cC5zdHJpbmcoKSk7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbWFnaWMtbnVtYmVyc1xuICAgICAgaWYgKGlzUmVxdWlyZWQpIHNjaGVtYSA9IHNjaGVtYS5taW4oMSwgYCR7bmFtZX0gaXMgcmVxdWlyZWRgKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveDpcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9Db21ib0JveDpcbiAgICAgIHNjaGVtYSA9IHl1cC5zdHJpbmcoYEVudGVyICR7bmFtZX1gKTtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICBzY2hlbWEgPSB5dXAuc3RyaW5nKGBFbnRlciAke25hbWV9YCk7XG4gICAgICBicmVhaztcbiAgfVxuXG4gIGlmIChpc1JlcXVpcmVkKSB7XG4gICAgc2NoZW1hID0gc2NoZW1hLnJlcXVpcmVkKGAke25hbWV9IGlzIHJlcXVpcmVkYCk7XG4gIH1cblxuICByZXR1cm4gc2NoZW1hO1xufTtcblxuY29uc3QgcGFyc2VTdWJRdWVzdGlvbkFuc3dlciA9IChcbiAgcSxcbiAgYW5zd2VycyxcbiAgYW5zd2VyLFxuICBpbml0aWFsVmFsdWVzLFxuICBvbmx5UmVsZXZhbnRcbikgPT4ge1xuICBpZiAocS5zdWJfcXVlc3Rpb25fcnVsZXM/Lmxlbmd0aCA+IDApIHtcbiAgICBxLnN1Yl9xdWVzdGlvbl9ydWxlcy5mb3JFYWNoKChydWxlKSA9PiB7XG4gICAgICBjb25zdCB7IHN1Yl9xdWVzdGlvbiwgYW5zd2VyX3ZhbHVlcyB9ID0gcnVsZTtcbiAgICAgIGNvbnN0IHN1YlF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhzdWJfcXVlc3Rpb24ubmFtZSwgc3ViX3F1ZXN0aW9uLmlkKTtcbiAgICAgIGNvbnN0IHN1YkFuc3dlciA9IGFuc3dlcnNbc3ViUXVlc3Rpb25TbHVnXTtcbiAgICAgIGNvbnN0IG1hdGNoID0gY2hlY2tJZlZhbHVlTWF0Y2goYW5zd2VyLCBhbnN3ZXJfdmFsdWVzKTtcblxuICAgICAgaWYgKCFvbmx5UmVsZXZhbnQgfHwgbWF0Y2gpIHtcbiAgICAgICAgaW5pdGlhbFZhbHVlc1tzdWJRdWVzdGlvblNsdWddID1cbiAgICAgICAgICBzdWJBbnN3ZXIgfHwgZ2V0VHlwZUluaXRpYWxWYWx1ZShzdWJfcXVlc3Rpb24pO1xuICAgICAgfVxuXG4gICAgICBwYXJzZVN1YlF1ZXN0aW9uQW5zd2VyKFxuICAgICAgICBzdWJfcXVlc3Rpb24sXG4gICAgICAgIGFuc3dlcnMsXG4gICAgICAgIHN1YkFuc3dlcixcbiAgICAgICAgaW5pdGlhbFZhbHVlcyxcbiAgICAgICAgb25seVJlbGV2YW50XG4gICAgICApO1xuICAgIH0pO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgcGFyc2VBbnN3ZXJzID0gKFxuICBvd25lcixcbiAgZXh0cmFRdWVzdGlvbnMsXG4gIGFuc3dlcnMsXG4gIGluY2x1ZGVBdHRlbmRlZUluZm8sXG4gIGluY2x1ZGVEaXNjbGFpbWVyLFxuICBvbmx5UmVsZXZhbnQgPSBmYWxzZVxuKSA9PiB7XG4gIGNvbnN0IGluaXRpYWxWYWx1ZXMgPSB7fTtcblxuICBpZiAoaW5jbHVkZUF0dGVuZGVlSW5mbykge1xuICAgIGluaXRpYWxWYWx1ZXNbVElDS0VUX0FUVEVOREVFX0tFWVMuZW1haWxdID1cbiAgICAgIGFuc3dlcnNbVElDS0VUX0FUVEVOREVFX0tFWVMuZW1haWxdIHx8IG93bmVyLmVtYWlsIHx8IFwiXCI7XG4gICAgaW5pdGlhbFZhbHVlc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5maXJzdE5hbWVdID1cbiAgICAgIGFuc3dlcnNbVElDS0VUX0FUVEVOREVFX0tFWVMuZmlyc3ROYW1lXSB8fCBvd25lci5maXJzdF9uYW1lIHx8IFwiXCI7XG4gICAgaW5pdGlhbFZhbHVlc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5sYXN0TmFtZV0gPVxuICAgICAgYW5zd2Vyc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5sYXN0TmFtZV0gfHwgb3duZXIubGFzdF9uYW1lIHx8IFwiXCI7XG4gICAgaW5pdGlhbFZhbHVlc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5jb21wYW55XSA9XG4gICAgICBhbnN3ZXJzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmNvbXBhbnldIHx8IG93bmVyLmNvbXBhbnk7XG4gIH1cblxuICBpZiAoaW5jbHVkZURpc2NsYWltZXIpIHtcbiAgICBpbml0aWFsVmFsdWVzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmRpc2NsYWltZXJBY2NlcHRlZF0gPVxuICAgICAgYW5zd2Vyc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5kaXNjbGFpbWVyQWNjZXB0ZWRdIHx8XG4gICAgICBvd25lci5kaXNjbGFpbWVyX2FjY2VwdGVkO1xuICB9XG5cbiAgZXh0cmFRdWVzdGlvbnMuZm9yRWFjaCgocSkgPT4ge1xuICAgIGNvbnN0IHF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhxLm5hbWUsIHEuaWQpO1xuICAgIGNvbnN0IGFuc3dlciA9IGFuc3dlcnNbcXVlc3Rpb25TbHVnXTtcbiAgICBpbml0aWFsVmFsdWVzW3F1ZXN0aW9uU2x1Z10gPSBhbnN3ZXIgfHwgZ2V0VHlwZUluaXRpYWxWYWx1ZShxKTtcblxuICAgIHBhcnNlU3ViUXVlc3Rpb25BbnN3ZXIocSwgYW5zd2VycywgYW5zd2VyLCBpbml0aWFsVmFsdWVzLCBvbmx5UmVsZXZhbnQpO1xuICB9KTtcblxuICByZXR1cm4gaW5pdGlhbFZhbHVlcztcbn07XG5cbmNvbnN0IGJ1aWxkU3ViUXVlc3Rpb25WYWxpZGF0aW9uU2NoZW1hID0gKHF1ZXN0aW9uU2x1ZywgcnVsZSwgc2NoZW1hKSA9PiB7XG4gIGNvbnN0IHN1YlF1ZXN0aW9uID0gcnVsZS5zdWJfcXVlc3Rpb247XG4gIGNvbnN0IHN1YlF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhzdWJRdWVzdGlvbi5uYW1lLCBzdWJRdWVzdGlvbi5pZCk7XG5cbiAgc2NoZW1hW3N1YlF1ZXN0aW9uU2x1Z10gPSBnZXRUeXBlVmFsaWRhdGlvbihcbiAgICBzdWJRdWVzdGlvbi50eXBlLFxuICAgIHN1YlF1ZXN0aW9uLm5hbWUsXG4gICAgZmFsc2VcbiAgKVxuICAgIC5udWxsYWJsZSgpXG4gICAgLndoZW4ocXVlc3Rpb25TbHVnLCB7XG4gICAgICBpczogKHF1ZXN0aW9uQW5zKSA9PiB7XG4gICAgICAgIGNvbnN0IGFuc1ZhbHVlTWF0Y2ggPSBjaGVja0lmVmFsdWVNYXRjaChcbiAgICAgICAgICBxdWVzdGlvbkFucyxcbiAgICAgICAgICBydWxlLmFuc3dlcl92YWx1ZXNcbiAgICAgICAgKTtcbiAgICAgICAgLy8gY2hlY2sgaWYgcXVlc3Rpb24gaXMgdmlzaWJsZSB0byBhZGQgdmFsaWRhdGlvblxuICAgICAgICBjb25zdCBpc1Zpc2libGUgPSAhIWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFxuICAgICAgICAgIGAke3F1ZXN0aW9uU2x1Z31fY29udGFpbmVyYFxuICAgICAgICApO1xuICAgICAgICByZXR1cm4gYW5zVmFsdWVNYXRjaCAmJiBpc1Zpc2libGU7XG4gICAgICB9LFxuICAgICAgdGhlbjogKHNjaCkgPT4ge1xuICAgICAgICBpZiAoc3ViUXVlc3Rpb24udHlwZSA9PT0gUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdCkge1xuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1tYWdpYy1udW1iZXJzXG4gICAgICAgICAgcmV0dXJuIHNjaC5taW4oMSkucmVxdWlyZWQoaTE4bi50KFwidmFsaWRhdGlvbi5yZXF1aXJlZF9xdWVzdGlvblwiKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHNjaC5yZXF1aXJlZChpMThuLnQoXCJ2YWxpZGF0aW9uLnJlcXVpcmVkX3F1ZXN0aW9uXCIpKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICBpZiAoc3ViUXVlc3Rpb24uc3ViX3F1ZXN0aW9uX3J1bGVzPy5sZW5ndGggPiAwKSB7XG4gICAgc3ViUXVlc3Rpb24uc3ViX3F1ZXN0aW9uX3J1bGVzLmZvckVhY2goKHN1YlJ1bGUpID0+IHtcbiAgICAgIGJ1aWxkU3ViUXVlc3Rpb25WYWxpZGF0aW9uU2NoZW1hKHN1YlF1ZXN0aW9uU2x1Zywgc3ViUnVsZSwgc2NoZW1hKTtcbiAgICB9KTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGJ1aWxkVmFsaWRhdGlvblNjaGVtYSA9IChcbiAgZXh0cmFRdWVzdGlvbnMsXG4gIGluY2x1ZGVBdHRlbmRlZUluZm8sXG4gIGRpc2NsYWltZXJNYW5kYXRvcnlcbikgPT4ge1xuICBjb25zdCBzY2hlbWEgPSB7fTtcblxuICBpZiAoaW5jbHVkZUF0dGVuZGVlSW5mbykge1xuICAgIHNjaGVtYVtUSUNLRVRfQVRURU5ERUVfS0VZUy5lbWFpbF0gPSB5dXBcbiAgICAgIC5zdHJpbmcoaTE4bi50KFwidmFsaWRhdGlvbi5lbWFpbC5zdHJpbmdcIikpXG4gICAgICAuZW1haWwoaTE4bi50KFwidmFsaWRhdGlvbi5lbWFpbC5mb3JtYXRcIikpXG4gICAgICAucmVxdWlyZWQoaTE4bi50KFwidmFsaWRhdGlvbi5lbWFpbC5yZXF1aXJlZFwiKSk7XG4gICAgc2NoZW1hW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmZpcnN0TmFtZV0gPSB5dXBcbiAgICAgIC5zdHJpbmcoaTE4bi50KFwidmFsaWRhdGlvbi5maXJzdF9uYW1lLnN0cmluZ1wiKSlcbiAgICAgIC5yZXF1aXJlZChpMThuLnQoXCJ2YWxpZGF0aW9uLmZpcnN0X25hbWUucmVxdWlyZWRcIikpO1xuICAgIHNjaGVtYVtUSUNLRVRfQVRURU5ERUVfS0VZUy5sYXN0TmFtZV0gPSB5dXBcbiAgICAgIC5zdHJpbmcoaTE4bi50KFwidmFsaWRhdGlvbi5sYXN0X25hbWUuc3RyaW5nXCIpKVxuICAgICAgLnJlcXVpcmVkKGkxOG4udChcInZhbGlkYXRpb24ubGFzdF9uYW1lLnJlcXVpcmVkXCIpKTtcbiAgICBzY2hlbWFbVElDS0VUX0FUVEVOREVFX0tFWVMuY29tcGFueV0gPSB5dXAubGF6eSgodmFsdWUpID0+XG4gICAgICB0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCJcbiAgICAgICAgPyB5dXBcbiAgICAgICAgICAgIC5vYmplY3QoKVxuICAgICAgICAgICAgLnJlcXVpcmVkKGkxOG4udChcInZhbGlkYXRpb24uY29tcGFueS5yZXF1aXJlZFwiKSlcbiAgICAgICAgICAgIC50eXBlRXJyb3IoaTE4bi50KFwidmFsaWRhdGlvbi5yZXF1aXJlZF9maWVsZFwiKSlcbiAgICAgICAgOiB5dXAuc3RyaW5nKCkucmVxdWlyZWQoaTE4bi50KFwidmFsaWRhdGlvbi5jb21wYW55LnJlcXVpcmVkXCIpKVxuICAgICk7XG4gIH1cblxuICBpZiAoZGlzY2xhaW1lck1hbmRhdG9yeSkge1xuICAgIHNjaGVtYVtUSUNLRVRfQVRURU5ERUVfS0VZUy5kaXNjbGFpbWVyQWNjZXB0ZWRdID0geXVwXG4gICAgICAuYm9vbCgpXG4gICAgICAub25lT2YoW3RydWVdLCBpMThuLnQoXCJ2YWxpZGF0aW9uLmNoZWNrYm94LnJlcXVpcmVkXCIpKTtcbiAgfVxuXG4gIGV4dHJhUXVlc3Rpb25zLmZvckVhY2goKHEpID0+IHtcbiAgICBjb25zdCB7IGlkLCBuYW1lLCB0eXBlLCBtYW5kYXRvcnksIHN1Yl9xdWVzdGlvbl9ydWxlcyB9ID0gcTtcbiAgICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcobmFtZSwgaWQpO1xuICAgIHNjaGVtYVtxdWVzdGlvblNsdWddID0gZ2V0VHlwZVZhbGlkYXRpb24odHlwZSwgbmFtZSwgbWFuZGF0b3J5KTtcblxuICAgIGlmIChzdWJfcXVlc3Rpb25fcnVsZXM/Lmxlbmd0aCA+IDApIHtcbiAgICAgIHN1Yl9xdWVzdGlvbl9ydWxlcy5mb3JFYWNoKChydWxlKSA9PiB7XG4gICAgICAgIGJ1aWxkU3ViUXVlc3Rpb25WYWxpZGF0aW9uU2NoZW1hKHF1ZXN0aW9uU2x1ZywgcnVsZSwgc2NoZW1hKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIHl1cC5vYmplY3Qoc2NoZW1hKTtcbn07XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiY29weUljb25fX19sSTNlUVwiO1xudmFyIF8yID0gXCJyZXZlcnNlZF9fX3pKem1EXCI7XG52YXIgXzMgPSBcInRydW5jYXRlZF9fX2pXU25VXCI7XG52YXIgXzQgPSBcIndyYXBwZXJfX19tVlBpUlwiO1xuZXhwb3J0IHsgXzEgYXMgXCJjb3B5SWNvblwiLCBfMiBhcyBcInJldmVyc2VkXCIsIF8zIGFzIFwidHJ1bmNhdGVkXCIsIF80IGFzIFwid3JhcHBlclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJNdWlPdXRsaW5lZElucHV0LW5vdGNoZWRPdXRsaW5lX19fbXhFS1dcIjtcbnZhciBfMiA9IFwiTXVpUGlja2Vyc0NhbGVuZGFySGVhZGVyLWxhYmVsQ29udGFpbmVyX19fTzRzU3NcIjtcbnZhciBfMyA9IFwiY2FsZW5kYXJEaXNwbGF5X19fRjNudUtcIjtcbnZhciBfNCA9IFwiY2xlYW5CdXR0b25fX19xcUR2VVwiO1xudmFyIF81ID0gXCJjb250YWluZXJfX19RZVFZX1wiO1xudmFyIF82ID0gXCJkYXRlUGlja2VyQ29udGFpbmVyX19fWjQybXdcIjtcbnZhciBfNyA9IFwiZGF0ZXBpY2tlckNsb3NlX19fVFo3a0pcIjtcbnZhciBfOCA9IFwiZmlsdGVyQ2hlY2tib3hDb250YWluZXJfX19rVW5XOVwiO1xudmFyIF85ID0gXCJmaWx0ZXJDb250YWluZXJfX19ycnFwOVwiO1xudmFyIF9hID0gXCJmaWx0ZXJEYXRlTGFiZWxfX19KZ2Jjc1wiO1xudmFyIF9iID0gXCJmaWx0ZXJJY29uX19faWlPem9cIjtcbnZhciBfYyA9IFwiZmlsdGVyTGFiZWxfX19za1pQN1wiO1xudmFyIF9kID0gXCJmaWx0ZXJMaXN0Q29udGFpbmVyX19fSURybFNcIjtcbnZhciBfZSA9IFwiZmlsdGVyTnVtQWN0aXZlX19fa21FRUtcIjtcbnZhciBfZiA9IFwiZmlsdGVyU29ydENvbnRhaW5lcl9fX25oTkpzXCI7XG52YXIgXzEwID0gXCJsYWJlbF9fX0xBbWVfXCI7XG52YXIgXzExID0gXCJzaG93RmlsdGVyTGlzdF9fX0lXNHhHXCI7XG52YXIgXzEyID0gXCJzb3J0Q29udGFpbmVyX19fc2I1QmRcIjtcbnZhciBfMTMgPSBcInNvcnRJY29uX19fY19YWmlcIjtcbnZhciBfMTQgPSBcInNvcnRMYWJlbF9fX2RYaU15XCI7XG52YXIgXzE1ID0gXCJzb3J0TGlzdENvbnRhaW5lcl9fX1BwMlhnXCI7XG52YXIgXzE2ID0gXCJ0aXRsZVdyYXBwZXJfX19QNm1QdVwiO1xuZXhwb3J0IHsgXzEgYXMgXCJNdWlPdXRsaW5lZElucHV0LW5vdGNoZWRPdXRsaW5lXCIsIF8yIGFzIFwiTXVpUGlja2Vyc0NhbGVuZGFySGVhZGVyLWxhYmVsQ29udGFpbmVyXCIsIF8zIGFzIFwiY2FsZW5kYXJEaXNwbGF5XCIsIF80IGFzIFwiY2xlYW5CdXR0b25cIiwgXzUgYXMgXCJjb250YWluZXJcIiwgXzYgYXMgXCJkYXRlUGlja2VyQ29udGFpbmVyXCIsIF83IGFzIFwiZGF0ZXBpY2tlckNsb3NlXCIsIF84IGFzIFwiZmlsdGVyQ2hlY2tib3hDb250YWluZXJcIiwgXzkgYXMgXCJmaWx0ZXJDb250YWluZXJcIiwgX2EgYXMgXCJmaWx0ZXJEYXRlTGFiZWxcIiwgX2IgYXMgXCJmaWx0ZXJJY29uXCIsIF9jIGFzIFwiZmlsdGVyTGFiZWxcIiwgX2QgYXMgXCJmaWx0ZXJMaXN0Q29udGFpbmVyXCIsIF9lIGFzIFwiZmlsdGVyTnVtQWN0aXZlXCIsIF9mIGFzIFwiZmlsdGVyU29ydENvbnRhaW5lclwiLCBfMTAgYXMgXCJsYWJlbFwiLCBfMTEgYXMgXCJzaG93RmlsdGVyTGlzdFwiLCBfMTIgYXMgXCJzb3J0Q29udGFpbmVyXCIsIF8xMyBhcyBcInNvcnRJY29uXCIsIF8xNCBhcyBcInNvcnRMYWJlbFwiLCBfMTUgYXMgXCJzb3J0TGlzdENvbnRhaW5lclwiLCBfMTYgYXMgXCJ0aXRsZVdyYXBwZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiY2FuY2VsQnRuX19fcURleGhcIjtcbnZhciBfMiA9IFwiZm9vdGVyX19fU043MHlcIjtcbnZhciBfMyA9IFwic2F2ZUJ0bl9fX25iVTZjXCI7XG5leHBvcnQgeyBfMSBhcyBcImNhbmNlbEJ0blwiLCBfMiBhcyBcImZvb3RlclwiLCBfMyBhcyBcInNhdmVCdG5cIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiZXJyb3JMYWJlbF9fX25vY3lYXCI7XG5leHBvcnQgeyBfMSBhcyBcImVycm9yTGFiZWxcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwibXlPcmRlcnNXcmFwcGVyX19fSEpteXNcIjtcbnZhciBfMiA9IFwibm9PcmRlcnNGb3VuZF9fX0RSd2dvXCI7XG52YXIgXzMgPSBcIm5vT3JkZXJzSWNvbldyYXBwZXJfX190UFRtWVwiO1xuZXhwb3J0IHsgXzEgYXMgXCJteU9yZGVyc1dyYXBwZXJcIiwgXzIgYXMgXCJub09yZGVyc0ZvdW5kXCIsIF8zIGFzIFwibm9PcmRlcnNJY29uV3JhcHBlclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJvcmRlckRldGFpbHNNbW91bnRfX19yM2tSQVwiO1xudmFyIF8yID0gXCJvcmRlckRldGFpbHNUaWNrZXRzX19fbTRJaktcIjtcbnZhciBfMyA9IFwib3JkZXJTdW1tYXJ5QnV0dG9uX19fdXhqaHRcIjtcbnZhciBfNCA9IFwib3JkZXJTdW1tYXJ5UHVyY2hhc2VkSW5mb19fX19SQlhFXCI7XG52YXIgXzUgPSBcIm9yZGVyU3VtbWFyeVRhYmxlX19fWURueFZcIjtcbnZhciBfNiA9IFwib3JkZXJTdW1tYXJ5V3JhcHBlcl9fX1J3SUVSXCI7XG52YXIgXzcgPSBcInJlZnVuZERpc2FibGVkX19fanZyazNcIjtcbmV4cG9ydCB7IF8xIGFzIFwib3JkZXJEZXRhaWxzTW1vdW50XCIsIF8yIGFzIFwib3JkZXJEZXRhaWxzVGlja2V0c1wiLCBfMyBhcyBcIm9yZGVyU3VtbWFyeUJ1dHRvblwiLCBfNCBhcyBcIm9yZGVyU3VtbWFyeVB1cmNoYXNlZEluZm9cIiwgXzUgYXMgXCJvcmRlclN1bW1hcnlUYWJsZVwiLCBfNiBhcyBcIm9yZGVyU3VtbWFyeVdyYXBwZXJcIiwgXzcgYXMgXCJyZWZ1bmREaXNhYmxlZFwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJhc3NpZ25UaWNrZXRCdXR0b25fX196ekxzY1wiO1xudmFyIF8yID0gXCJhc3NpZ25Ub01lVGV4dF9fX1pQYWV4XCI7XG52YXIgXzMgPSBcImFzc2lnbmVkQnlUZXh0X19fYk5aN3pcIjtcbnZhciBfNCA9IFwiYXNzaWduZWRUb01lRGVzX19fR2pGa1ZcIjtcbnZhciBfNSA9IFwiYXNzaWduZWRUb01lV3JhcHBlcl9fX1V4YzJ5XCI7XG52YXIgXzYgPSBcImJhZGdlRmVhdHVyZV9fX0EyTE1WXCI7XG52YXIgXzcgPSBcImJhZGdlRmVhdHVyZVdyYXBwZXJfX19JUUxOUFwiO1xudmFyIF84ID0gXCJjaGVja2JveF9fX1haSnBiXCI7XG52YXIgXzkgPSBcImRpc2FibGVkUmVmdW5kX19fU2ZmbDdcIjtcbnZhciBfYSA9IFwiZGlzcGxheV9ub25lX19fQ3FwTDNcIjtcbnZhciBfYiA9IFwibGFiZWxfX196WERXelwiO1xudmFyIF9jID0gXCJub09yZGVyc0ljb25XcmFwcGVyX19fZWZ5cnBcIjtcbnZhciBfZCA9IFwibm9UaWNrZXRzRm91bmRfX19qTG9jb1wiO1xudmFyIF9lID0gXCJvcmRlclRpY2tldENvbnRhaW5lcl9fX1pKTHprXCI7XG52YXIgX2YgPSBcIm9yZGVyVGlja2V0SW5mb19fX2dlbXFCXCI7XG52YXIgXzEwID0gXCJvcmRlclRpY2tldEluZm9Db250YWluZXJfX19fcDY2VlwiO1xudmFyIF8xMSA9IFwib3JkZXJXcmFwcGVyX19feURCQW9cIjtcbnZhciBfMTIgPSBcInJlYXNzaWduQnV0dG9uX19fUm9qTTVcIjtcbnZhciBfMTMgPSBcInJlZnVuZEJ1dHRvbnNfX19qRGw0SFwiO1xudmFyIF8xNCA9IFwicmVmdW5kTW9kYWxfX19FcWdQRlwiO1xudmFyIF8xNSA9IFwic2VsZWN0ZWRfX19IV0dOY1wiO1xudmFyIF8xNiA9IFwidGFiQnV0dG9uc19fX3hUeUpBXCI7XG52YXIgXzE3ID0gXCJ0aWNrZXRBY3Rpb25CdXR0b25zX19fcnBTTVFcIjtcbnZhciBfMTggPSBcInRpY2tldExpc3RDb250YWluZXJfX19jZm1yclwiO1xudmFyIF8xOSA9IFwidGlja2V0Tm9fX19hMmlNOVwiO1xudmFyIF8xYSA9IFwidGlja2V0T3duZXJFbWFpbF9fX1p0NE9FXCI7XG52YXIgXzFiID0gXCJ0aWNrZXRUaWNrZXRUeXBlX19fWnFfZjBcIjtcbnZhciBfMWMgPSBcInZpZXdGaW5pc2hUaWNrZXRCdXR0b25fX19IRjZJbVwiO1xudmFyIF8xZCA9IFwidmlld01vcmVCdXR0b25fX19LXzF6VFwiO1xuZXhwb3J0IHsgXzEgYXMgXCJhc3NpZ25UaWNrZXRCdXR0b25cIiwgXzIgYXMgXCJhc3NpZ25Ub01lVGV4dFwiLCBfMyBhcyBcImFzc2lnbmVkQnlUZXh0XCIsIF80IGFzIFwiYXNzaWduZWRUb01lRGVzXCIsIF81IGFzIFwiYXNzaWduZWRUb01lV3JhcHBlclwiLCBfNiBhcyBcImJhZGdlRmVhdHVyZVwiLCBfNyBhcyBcImJhZGdlRmVhdHVyZVdyYXBwZXJcIiwgXzggYXMgXCJjaGVja2JveFwiLCBfOSBhcyBcImRpc2FibGVkUmVmdW5kXCIsIF9hIGFzIFwiZGlzcGxheV9ub25lXCIsIF9iIGFzIFwibGFiZWxcIiwgX2MgYXMgXCJub09yZGVyc0ljb25XcmFwcGVyXCIsIF9kIGFzIFwibm9UaWNrZXRzRm91bmRcIiwgX2UgYXMgXCJvcmRlclRpY2tldENvbnRhaW5lclwiLCBfZiBhcyBcIm9yZGVyVGlja2V0SW5mb1wiLCBfMTAgYXMgXCJvcmRlclRpY2tldEluZm9Db250YWluZXJcIiwgXzExIGFzIFwib3JkZXJXcmFwcGVyXCIsIF8xMiBhcyBcInJlYXNzaWduQnV0dG9uXCIsIF8xMyBhcyBcInJlZnVuZEJ1dHRvbnNcIiwgXzE0IGFzIFwicmVmdW5kTW9kYWxcIiwgXzE1IGFzIFwic2VsZWN0ZWRcIiwgXzE2IGFzIFwidGFiQnV0dG9uc1wiLCBfMTcgYXMgXCJ0aWNrZXRBY3Rpb25CdXR0b25zXCIsIF8xOCBhcyBcInRpY2tldExpc3RDb250YWluZXJcIiwgXzE5IGFzIFwidGlja2V0Tm9cIiwgXzFhIGFzIFwidGlja2V0T3duZXJFbWFpbFwiLCBfMWIgYXMgXCJ0aWNrZXRUaWNrZXRUeXBlXCIsIF8xYyBhcyBcInZpZXdGaW5pc2hUaWNrZXRCdXR0b25cIiwgXzFkIGFzIFwidmlld01vcmVCdXR0b25cIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiQ1RBQnV0dG9uV3JhcHBlcl9fX0tncTZnXCI7XG52YXIgXzIgPSBcImFjdGlvbkJ1dHRvbnNfX191N21QU1wiO1xudmFyIF8zID0gXCJhcHByb3ZlZF9fX3N4RUpXXCI7XG52YXIgXzQgPSBcImJhZGdlRmVhdHVyZV9fX3RMaEVwXCI7XG52YXIgXzUgPSBcImJhZGdlRmVhdHVyZVdyYXBwZXJfX19fOUdiRFwiO1xudmFyIF82ID0gXCJidXR0b25QaWxsX19fTGVzYXpcIjtcbnZhciBfNyA9IFwiY2FuY2VsQnV0dG9uX19feWZoWWJcIjtcbnZhciBfOCA9IFwiY29udGludWVCdXR0b25fX19OeVgzc1wiO1xudmFyIF85ID0gXCJkZWxldGVJY29uX19fRlN3eWVcIjtcbnZhciBfYSA9IFwicGVuZGluZ19fX2FFYld3XCI7XG52YXIgX2IgPSBcInJlZnVuZERldGFpbF9fX2NRMjhWXCI7XG52YXIgX2MgPSBcInJlZnVuZEVycm9yTXNnX19fQWFoenJcIjtcbnZhciBfZCA9IFwicmVmdW5kU3VjY2Vzc2Z1bF9fX3pyRFFZXCI7XG52YXIgX2UgPSBcInJlZnVuZFRleHRfX19hRW5MOVwiO1xudmFyIF9mID0gXCJyZWZ1bmRUaWNrZXRBdHRlbmRlZV9fX1FYQ2pNXCI7XG52YXIgXzEwID0gXCJyZWZ1bmRUaWNrZXRCb3hDb250YWluZXJfX195YTYxM1wiO1xudmFyIF8xMSA9IFwicmVqZWN0ZWRfX19OSkU0WlwiO1xudmFyIF8xMiA9IFwic3VidGl0bGVfX19QdERlMlwiO1xudmFyIF8xMyA9IFwic3VjY2Vzc01zZ19fX0h0TXNlXCI7XG52YXIgXzE0ID0gXCJzdWNjZXNzTXNnMl9fX1E2em5hXCI7XG52YXIgXzE1ID0gXCJ0aWNrZXRMaXN0X19fZURRUjNcIjtcbnZhciBfMTYgPSBcInRpY2tldE5vX19fX0VBRDRcIjtcbmV4cG9ydCB7IF8xIGFzIFwiQ1RBQnV0dG9uV3JhcHBlclwiLCBfMiBhcyBcImFjdGlvbkJ1dHRvbnNcIiwgXzMgYXMgXCJhcHByb3ZlZFwiLCBfNCBhcyBcImJhZGdlRmVhdHVyZVwiLCBfNSBhcyBcImJhZGdlRmVhdHVyZVdyYXBwZXJcIiwgXzYgYXMgXCJidXR0b25QaWxsXCIsIF83IGFzIFwiY2FuY2VsQnV0dG9uXCIsIF84IGFzIFwiY29udGludWVCdXR0b25cIiwgXzkgYXMgXCJkZWxldGVJY29uXCIsIF9hIGFzIFwicGVuZGluZ1wiLCBfYiBhcyBcInJlZnVuZERldGFpbFwiLCBfYyBhcyBcInJlZnVuZEVycm9yTXNnXCIsIF9kIGFzIFwicmVmdW5kU3VjY2Vzc2Z1bFwiLCBfZSBhcyBcInJlZnVuZFRleHRcIiwgX2YgYXMgXCJyZWZ1bmRUaWNrZXRBdHRlbmRlZVwiLCBfMTAgYXMgXCJyZWZ1bmRUaWNrZXRCb3hDb250YWluZXJcIiwgXzExIGFzIFwicmVqZWN0ZWRcIiwgXzEyIGFzIFwic3VidGl0bGVcIiwgXzEzIGFzIFwic3VjY2Vzc01zZ1wiLCBfMTQgYXMgXCJzdWNjZXNzTXNnMlwiLCBfMTUgYXMgXCJ0aWNrZXRMaXN0XCIsIF8xNiBhcyBcInRpY2tldE5vXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImNsb3NlQnRuX19feVNRQ09cIjtcbnZhciBfMiA9IFwiaGVhZGVyX19fZkJYRzlcIjtcbnZhciBfMyA9IFwidGl0bGVfX190eVplUVwiO1xudmFyIF80ID0gXCJ3cmFwcGVyX19fUk9KR3NcIjtcbmV4cG9ydCB7IF8xIGFzIFwiY2xvc2VCdG5cIiwgXzIgYXMgXCJoZWFkZXJcIiwgXzMgYXMgXCJ0aXRsZVwiLCBfNCBhcyBcIndyYXBwZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwic3VtbWl0VGl0bGVEYXRlX19fWG5ycEZcIjtcbnZhciBfMiA9IFwid2lkZ2V0SGVhZGVyX19fZ2dMdE1cIjtcbmV4cG9ydCB7IF8xIGFzIFwic3VtbWl0VGl0bGVEYXRlXCIsIF8yIGFzIFwid2lkZ2V0SGVhZGVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImhlYWRlck5vdGVfX19BZTVFQVwiO1xudmFyIF8yID0gXCJvcmRlck5vX19fVk9QUndcIjtcbnZhciBfMyA9IFwicHVyY2hhc2VkQnlfX19NTmlIVFwiO1xudmFyIF80ID0gXCJwdXJjaGFzZWRCeVdyYXBwZXJfX19EaDZIVVwiO1xudmFyIF81ID0gXCJ3cmFwcGVyX19fbVZ1aVpcIjtcbmV4cG9ydCB7IF8xIGFzIFwiaGVhZGVyTm90ZVwiLCBfMiBhcyBcIm9yZGVyTm9cIiwgXzMgYXMgXCJwdXJjaGFzZWRCeVwiLCBfNCBhcyBcInB1cmNoYXNlZEJ5V3JhcHBlclwiLCBfNSBhcyBcIndyYXBwZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiYXNzaWduT3B0aW9uc1dyYXBwZXJfX19vakZfN1wiO1xudmFyIF8yID0gXCJ0aWNrZXRSZWFzc2lnbkNvbnRhaW5lcl9fX2dPdGFKXCI7XG5leHBvcnQgeyBfMSBhcyBcImFzc2lnbk9wdGlvbnNXcmFwcGVyXCIsIF8yIGFzIFwidGlja2V0UmVhc3NpZ25Db250YWluZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwid3JhcHBlcl9fX0V3T1J6XCI7XG5leHBvcnQgeyBfMSBhcyBcIndyYXBwZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiaW5mb05vdGVfX19pMVhZOVwiO1xudmFyIF8yID0gXCJ3cmFwcGVyX19fTUF1TlNcIjtcbmV4cG9ydCB7IF8xIGFzIFwiaW5mb05vdGVcIiwgXzIgYXMgXCJ3cmFwcGVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImFjdGlvbkJ1dHRvbnNDb250YWluZXJfX19BdXZyblwiO1xudmFyIF8yID0gXCJhZGRpdGlvbmFsRGV0YWlsc19fX21QMWlKXCI7XG52YXIgXzMgPSBcImF0dGVuZGVlQ29udGFpbmVyX19fUTBWVXpcIjtcbnZhciBfNCA9IFwiYXR0ZW5kZWVJbmZvVGl0bGVfX19MbXJtNFwiO1xudmFyIF81ID0gXCJjbG9zZUJ0bl9fX1dOSmxFXCI7XG52YXIgXzYgPSBcImNvcHlCdG5fX19fdXRBNlwiO1xudmFyIF83ID0gXCJkZWxlZ2F0ZWRUb19fX1NHVlFJXCI7XG52YXIgXzggPSBcImRvd25sb2FkQnRuX19fcWpZaHpcIjtcbnZhciBfOSA9IFwiaGVhZGVyX19fQXVnbnpcIjtcbnZhciBfYSA9IFwib3JkZXJOdW1iZXJfX19MNVE1YVwiO1xudmFyIF9iID0gXCJxckNvZGVfX19md3FacVwiO1xudmFyIF9jID0gXCJxck5vdGVfX19HYzdLblwiO1xudmFyIF9kID0gXCJzZW5kQnRuX19fa29XTTJcIjtcbnZhciBfZSA9IFwic2VudF9fX2s2V0t4XCI7XG52YXIgX2YgPSBcInN0YXR1c19fX2t3Qzh5XCI7XG52YXIgXzEwID0gXCJzdWJ0aXRsZV9fX3lfTnVPXCI7XG52YXIgXzExID0gXCJ0aWNrZXREZXRhaWxDb250YWluZXJfX19iMlRMUlwiO1xudmFyIF8xMiA9IFwidGl0bGVfX193UXpVTlwiO1xuZXhwb3J0IHsgXzEgYXMgXCJhY3Rpb25CdXR0b25zQ29udGFpbmVyXCIsIF8yIGFzIFwiYWRkaXRpb25hbERldGFpbHNcIiwgXzMgYXMgXCJhdHRlbmRlZUNvbnRhaW5lclwiLCBfNCBhcyBcImF0dGVuZGVlSW5mb1RpdGxlXCIsIF81IGFzIFwiY2xvc2VCdG5cIiwgXzYgYXMgXCJjb3B5QnRuXCIsIF83IGFzIFwiZGVsZWdhdGVkVG9cIiwgXzggYXMgXCJkb3dubG9hZEJ0blwiLCBfOSBhcyBcImhlYWRlclwiLCBfYSBhcyBcIm9yZGVyTnVtYmVyXCIsIF9iIGFzIFwicXJDb2RlXCIsIF9jIGFzIFwicXJOb3RlXCIsIF9kIGFzIFwic2VuZEJ0blwiLCBfZSBhcyBcInNlbnRcIiwgX2YgYXMgXCJzdGF0dXNcIiwgXzEwIGFzIFwic3VidGl0bGVcIiwgXzExIGFzIFwidGlja2V0RGV0YWlsQ29udGFpbmVyXCIsIF8xMiBhcyBcInRpdGxlXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImJ1dHRvbkNhbmNlbGxlZF9fX0VybERaXCI7XG52YXIgXzIgPSBcImJ1dHRvbkNvbXBsZXRlX19fbGxXa1pcIjtcbnZhciBfMyA9IFwiYnV0dG9uSW5jb21wbGV0ZV9fX1RvbEhnXCI7XG52YXIgXzQgPSBcImJ1dHRvblBpbGxfX196cTJ0Y1wiO1xudmFyIF81ID0gXCJidXR0b25SZWZ1bmRSZXF1ZXN0ZWRfX19wV3QzMFwiO1xudmFyIF82ID0gXCJidXR0b25VbmFzc2lnbmVkX19fWURkOFhcIjtcbnZhciBfNyA9IFwidGlja2V0U3RhdHVzQ29udGFpbmVyX19fcWo2ZmJcIjtcbmV4cG9ydCB7IF8xIGFzIFwiYnV0dG9uQ2FuY2VsbGVkXCIsIF8yIGFzIFwiYnV0dG9uQ29tcGxldGVcIiwgXzMgYXMgXCJidXR0b25JbmNvbXBsZXRlXCIsIF80IGFzIFwiYnV0dG9uUGlsbFwiLCBfNSBhcyBcImJ1dHRvblJlZnVuZFJlcXVlc3RlZFwiLCBfNiBhcyBcImJ1dHRvblVuYXNzaWduZWRcIiwgXzcgYXMgXCJ0aWNrZXRTdGF0dXNDb250YWluZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiYWN0aXZlX19fdEx5V1pcIjtcbnZhciBfMiA9IFwidGFiT3B0aW9uX19fSDRIMXVcIjtcbnZhciBfMyA9IFwidGFiV3JhcHBlcl9fX3UyMXNHXCI7XG5leHBvcnQgeyBfMSBhcyBcImFjdGl2ZVwiLCBfMiBhcyBcInRhYk9wdGlvblwiLCBfMyBhcyBcInRhYldyYXBwZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwidGlja2V0c1RpdGxlVGV4dF9fX1REUG1wXCI7XG5leHBvcnQgeyBfMSBhcyBcInRpY2tldHNUaXRsZVRleHRcIiB9XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2RlZmluZVByb3BlcnR5XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvb2JqZWN0V2l0aG91dFByb3BlcnRpZXNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL0NoZWNrQ2lyY2xlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ2xvc2VcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9Db250ZW50Q29weVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL0Vycm9yXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRXhwYW5kTW9yZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL0ZpbHRlckxpc3RcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9JbXBvcnRFeHBvcnRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9JbmZvXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvU2VhcmNoXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWxcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9DaGVja2JveFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL0RpdmlkZXJcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9JbnB1dEJhc2VcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9TdGFja1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL1RhYlwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL1RhYnNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9Ub29sdGlwXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvc3R5bGVzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvdXNlTWVkaWFRdWVyeVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAcmVkdXhqcy90b29sa2l0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBzZW50cnkvcmVhY3RcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiZm9ybWlrXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImkxOG5leHRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiaTE4bmV4dC1icm93c2VyLWxhbmd1YWdlZGV0ZWN0b3JcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiaWR0b2tlbi12ZXJpZmllclwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtb21lbnQtdGltZXpvbmVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9jb21wb25lbnRzL3Jhdy1odG1sXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvc2VjdXJpdHkvYWN0aW9uc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3NlY3VyaXR5L21ldGhvZHNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9hY3Rpb25zXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvbWV0aG9kc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL3F1ZXJ5LWFjdGlvbnNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicC1saW1pdFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJwcm9wLXR5cGVzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0LWkxOG5leHRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3QtaW5maW5pdGUtc2Nyb2xsLWNvbXBvbmVudFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWFjdC1xci1jb2RlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0LXJlZHV4XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0L2pzeC1ydW50aW1lXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlZHV4XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlZHV4LXBlcnNpc3RcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVkdXgtcGVyc2lzdC9pbnRlZ3JhdGlvbi9yZWFjdFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWR1eC1wZXJzaXN0L2xpYi9zdG9yYWdlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInl1cFwiKTsiLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdC8vIG5vIG1vZHVsZS5pZCBuZWVkZWRcblx0XHQvLyBubyBtb2R1bGUubG9hZGVkIG5lZWRlZFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdKG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG5cdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbn1cblxuIiwiLy8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbl9fd2VicGFja19yZXF1aXJlX18ubiA9IChtb2R1bGUpID0+IHtcblx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG5cdFx0KCkgPT4gKG1vZHVsZVsnZGVmYXVsdCddKSA6XG5cdFx0KCkgPT4gKG1vZHVsZSk7XG5cdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsIHsgYTogZ2V0dGVyIH0pO1xuXHRyZXR1cm4gZ2V0dGVyO1xufTsiLCIvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9ucyBmb3IgaGFybW9ueSBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSAoZXhwb3J0cywgZGVmaW5pdGlvbikgPT4ge1xuXHRmb3IodmFyIGtleSBpbiBkZWZpbml0aW9uKSB7XG5cdFx0aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKGRlZmluaXRpb24sIGtleSkgJiYgIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBrZXkpKSB7XG5cdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZGVmaW5pdGlvbltrZXldIH0pO1xuXHRcdH1cblx0fVxufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSAob2JqLCBwcm9wKSA9PiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCkpIiwiLy8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5yID0gKGV4cG9ydHMpID0+IHtcblx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG5cdH1cblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbn07IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cbmltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IFByb3ZpZGVyIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyBQZXJzaXN0R2F0ZSB9IGZyb20gXCJyZWR1eC1wZXJzaXN0L2ludGVncmF0aW9uL3JlYWN0XCI7XG5pbXBvcnQgeyBTdHlsZWRFbmdpbmVQcm92aWRlciB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VJbml0U3RvcmUgfSBmcm9tIFwiLi9zdG9yZVwiO1xuaW1wb3J0IHsgUkVTRVRfU1RBVEUsIHNldFJlZHVjZXJTdGF0ZSB9IGZyb20gXCIuL2FjdGlvbnNcIjtcblxuaW1wb3J0IFdpZGdldFdyYXBwZXIgZnJvbSBcIi4vY29tcG9uZW50cy9XaWRnZXRXcmFwcGVyXCI7XG5cbmNvbnN0IE15T3JkZXJzTXlUaWNrZXRzV2lkZ2V0ID0gKHByb3BzKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBsb2dpblVybCxcbiAgICBzdXBwb3J0RW1haWwsXG4gICAgc3VtbWl0LFxuICAgIGFwaUJhc2VVcmwsXG4gICAgdXNlcixcbiAgICBjbGllbnRJZCxcbiAgICB1cGRhdGVQcm9maWxlXG4gIH0gPSBwcm9wcztcblxuICBjb25zdCB7IHN0b3JlLCBwZXJzaXN0b3IgfSA9IHVzZUluaXRTdG9yZSh7XG4gICAgbG9naW5VcmwsXG4gICAgc3VwcG9ydEVtYWlsLFxuICAgIHN1bW1pdCxcbiAgICB1c2VyLFxuICAgIGFwaUJhc2VVcmwsXG4gICAgY2xpZW50SWQsXG4gICAgdXBkYXRlUHJvZmlsZVxuICB9KTtcblxuICBjb25zdCBoYW5kbGVCZWZvcmVMaWZ0ID0gKCkgPT4ge1xuICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMod2luZG93LmxvY2F0aW9uLnNlYXJjaCk7XG4gICAgY29uc3QgZmx1c2ggPSBwYXJhbXMuaGFzKFwiZmx1c2hTdGF0ZVwiKTtcbiAgICBpZiAoZmx1c2gpIHN0b3JlLmRpc3BhdGNoKHsgdHlwZTogUkVTRVRfU1RBVEUsIHBheWxvYWQ6IG51bGwgfSk7XG4gIH07XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzdG9yZS5kaXNwYXRjaChzZXRSZWR1Y2VyU3RhdGUoc3VtbWl0LCB1c2VyKSk7XG4gIH0sIFtzdW1taXQsIHVzZXJdKTtcblxuICByZXR1cm4gKFxuICAgIDxQcm92aWRlciBzdG9yZT17c3RvcmV9PlxuICAgICAgPFBlcnNpc3RHYXRlXG4gICAgICAgIG9uQmVmb3JlTGlmdD17aGFuZGxlQmVmb3JlTGlmdH1cbiAgICAgICAgbG9hZGluZz17bnVsbH1cbiAgICAgICAgcGVyc2lzdG9yPXtwZXJzaXN0b3J9XG4gICAgICA+XG4gICAgICAgIDxTdHlsZWRFbmdpbmVQcm92aWRlciBpbmplY3RGaXJzdD5cbiAgICAgICAgICA8V2lkZ2V0V3JhcHBlciAvPlxuICAgICAgICA8L1N0eWxlZEVuZ2luZVByb3ZpZGVyPlxuICAgICAgPC9QZXJzaXN0R2F0ZT5cbiAgICA8L1Byb3ZpZGVyPlxuICApO1xufTtcblxuTXlPcmRlcnNNeVRpY2tldHNXaWRnZXQucHJvcFR5cGVzID0ge1xuICBsb2dpblVybDogUHJvcFR5cGVzLnN0cmluZyxcbiAgc3VwcG9ydEVtYWlsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIGFwaUJhc2VVcmw6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHVzZXI6IFByb3BUeXBlcy5vYmplY3QsXG4gIGNsaWVudElkOiBQcm9wVHlwZXMuc3RyaW5nLFxuICB1cGRhdGVQcm9maWxlOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgTXlPcmRlcnNNeVRpY2tldHNXaWRnZXQ7XG4iXSwibmFtZXMiOlsiYXV0aEVycm9ySGFuZGxlciIsImNyZWF0ZUFjdGlvbiIsImRlbGV0ZVJlcXVlc3QiLCJnZXRSZXF1ZXN0IiwicHV0UmVxdWVzdCIsInN0YXJ0TG9hZGluZyIsInN0b3BMb2FkaW5nIiwicExpbWl0IiwiZ2V0SWRUb2tlbiIsIm9iamVjdFRvUXVlcnlTdHJpbmciLCJJZFRva2VuVmVyaWZpZXIiLCJpMThuIiwiZ2V0QWNjZXNzVG9rZW5TYWZlbHkiLCJERUZBVUxUX0lURU1TX1BFUl9QQUdFIiwiRVJST1JfQ09ERVMiLCJGSUZUWV9QRVJfUEFHRSIsIkZJUlNUX1BBR0UiLCJQUk9NSVNFX0JBVENIX0xJTUlUIiwiVEFCUyIsIlJFU0VUX1NUQVRFIiwiUkVTRVRfRklMVEVSIiwiUkVTRVRfQVBJX0VSUk9SIiwiU0VUX1NUQVRFIiwiU0VUX0FQSV9FUlJPUiIsIkNIQU5HRV9GSUxURVIiLCJDSEFOR0VfU09SVCIsIkdFVF9VU0VSX09SREVSUyIsIlJFRlVORF9PUkRFUiIsIlNFVF9BQ1RJVkVfT1JERVJfSUQiLCJGSUxURVJfVVNFUl9PUkRFUlMiLCJHRVRfTVlfQVNTSUdORURfVElDS0VUUyIsIlVQREFURV9USUNLRVQiLCJSRVNFVF9USUNLRVQiLCJSRUNFSVZFX1RJQ0tFVCIsIlJFTU9WRV9USUNLRVRfQVRURU5ERUUiLCJBU1NJR05fVElDS0VUIiwiREVMRUdBVEVfVElDS0VUIiwiUkVGVU5EX1RJQ0tFVCIsIlJFU0VORF9OT1RJRklDQVRJT04iLCJHRVRfVElDS0VUU19CWV9PUkRFUiIsIkdFVF9USUNLRVRTX0JZX09SREVSX0VSUk9SIiwiR0VUX09SREVSX1RJQ0tFVF9ERVRBSUxTIiwiR0VUX1RJQ0tFVF9ERVRBSUxTIiwiUkVDRUlWRV9FWFRSQV9RVUVTVElPTlMiLCJUSUNLRVRfQVRURU5ERUVfS0VZUyIsImVtYWlsIiwiZmlyc3ROYW1lIiwibGFzdE5hbWUiLCJjb21wYW55IiwiZGlzY2xhaW1lckFjY2VwdGVkIiwiZXh0cmFRdWVzdGlvbnMiLCJVUERBVEVfVElDS0VUU19SRUZVTkRfUkVRVUVTVEVEIiwiU1RBUlRfTE9BRElOR19JRFBfUFJPRklMRSIsIlNUT1BfTE9BRElOR19JRFBfUFJPRklMRSIsIlVQREFURV9JRFBfUFJPRklMRSIsIlNFVF9VU0VSIiwiU0VUX1NVTU1JVCIsIkdFVF9NQUlOX0VYVFJBX1FVRVNUSU9OUyIsIlJFQ0VJVkVfTUFSS0VUSU5HX1NFVFRJTkdTIiwiQ0xFQVJfTUFSS0VUSU5HX1NFVFRJTkdTIiwicmVzZXRUaWNrZXQiLCJkaXNwYXRjaCIsInJlc2V0U3RhdGUiLCJyZXNldEZpbHRlciIsInJlc2V0RXJyb3IiLCJzZXRSZWR1Y2VyU3RhdGUiLCJzdW1taXQiLCJ1c2VyIiwiRklMVEVSX1ZBUl9EQVRFIiwiRklMVEVSX1ZBUl9CQURHRV9GRUFUVVJFIiwiRklMVEVSX1ZBUl9USUNLRVRfVFlQRSIsIkZJTFRFUl9WQVJfVElDS0VUX0FTU0lHTkVEIiwiRklMVEVSX1ZBUl9PV05FUl9TVEFUVVMiLCJGSUxURVJfVkFSX1BST01PQ09ERSIsIkZJTFRFUl9WQVJfRlJFRV9QQUlEIiwiRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVIiLCJjaGFuZ2VGaWx0ZXIiLCJmaWx0ZXIiLCJjaGFuZ2VTb3J0Iiwic29ydCIsInBhcnNlRmlsdGVyIiwiZmlsdGVyT2JqIiwiY3VycmVudFRhYiIsInB1c2giLCJjb25jYXQiLCJsb3dlciIsInVwcGVyIiwibGVuZ3RoIiwiZmlsdGVyTmFtZSIsIk9SREVSUyIsImpvaW4iLCJnZXRTb3J0RGlyZWN0aW9uIiwiZGlyZWN0aW9uIiwiZXJyb3JIYW5kbGVyTm90aWZ5IiwicGF5bG9hZCIsImNhbGxiYWNrIiwiY3VzdG9tQXV0aEVycm9ySGFuZGxlciIsImVyciIsInJlcyIsImN1c3RvbUZldGNoRXJyb3JIYW5kbGVyIiwicmVzcG9uc2UiLCJjb2RlIiwic3RhdHVzIiwibXNnIiwidCIsIk9iamVjdCIsImVudHJpZXMiLCJlcnJvcnMiLCJmb3JFYWNoIiwiX3JlZiIsImtleSIsInZhbHVlIiwiTnVtYmVyIiwiaXNOYU4iLCJzdGF0dXNUZXh0IiwidGl0bGUiLCJodG1sIiwiZ2V0VXNlck9yZGVycyIsIl9yZWYyIiwicGFnZSIsInBlclBhZ2UiLCJnZXRTdGF0ZSIsIl9yZWYzIiwiYXBpQmFzZVVybCIsIndpZGdldFN0YXRlIiwiYWNjZXNzVG9rZW4iLCJjYXRjaCIsIlByb21pc2UiLCJyZWplY3QiLCJwYXJhbXMiLCJhY2Nlc3NfdG9rZW4iLCJvcmRlciIsInJlbGF0aW9ucyIsInBlcl9wYWdlIiwia2V5cyIsImZpbHRlcnMiLCJuYW1lIiwiaWQiLCJ0aGVuIiwiZSIsInNldEFjdGl2ZU9yZGVySWQiLCJvcmRlcklkIiwic2V0VXNlciIsImdldFVzZXJUaWNrZXRzIiwiX3JlZjQiLCJfcmVmNSIsInVzZXJQcm9maWxlIiwiZmllbGRzIiwiZXhwYW5kIiwiVElDS0VUUyIsImdldFRpY2tldHNCeU9yZGVyIiwiX3JlZjYiLCJfcmVmNyIsInJlc2VuZE5vdGlmaWNhdGlvbiIsInRpY2tldCIsIl9yZWY4IiwibWVzc2FnZSIsIm9yZGVyX2lkIiwicmVmdW5kVGlja2V0IiwiX3JlZjkiLCJfcmVmMTAiLCJyZWZ1bmRCdWxrVGlja2V0cyIsIl9yZWYxMSIsInRpY2tldHMiLCJsaW1pdCIsImFsbFJlZnVuZFRpY2tldENhbGxzIiwibWFwIiwiYWxsIiwic3VjY2Vzc2Z1bGx5UmVxdWVzdGVkIiwiciIsIl9yJHJlc3BvbnNlIiwicmVmdW5kX3JlcXVlc3RzIiwidXBkYXRlVGlja2V0c1JlZnVuZFJlcXVlc3RlZCIsInRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQiLCJnZXRFeHRyYVF1ZXN0aW9ucyIsImF0dGVuZGVlSWQiLCJfcmVmMTIiLCJlbmRwb2ludCIsImdldFRpY2tldCIsInRpY2tldElkIiwiX3JlZjEzIiwiZmluYWxseSIsIm5vcm1hbGl6ZVRpY2tldCIsImVudGl0eSIsIm5vcm1hbGl6ZWRFbnRpdHkiLCJfb2JqZWN0U3ByZWFkIiwiYXR0ZW5kZWVfY29tcGFueSIsImF0dGVuZGVlX2NvbXBhbnlfaWQiLCJyZWZyZXNoUHJvZmlsZSIsImRhdGEiLCJ0aWNrZXRPd25lciIsIl9yZWYxNCIsIl90aWNrZXRPd25lciRtYW5hZ2VyIiwidXBkYXRlUHJvZmlsZSIsImF0dGVuZGVlX2VtYWlsIiwiYXR0ZW5kZWVfZmlyc3RfbmFtZSIsImF0dGVuZGVlX2xhc3RfbmFtZSIsImhhc01hbmFnZXIiLCJtYW5hZ2VyIiwibWFuYWdlcl9pZCIsIml0c01lIiwicHJvZmlsZUNoYW5nZWQiLCJmaXJzdF9uYW1lIiwibGFzdF9uYW1lIiwibmV3UHJvZmlsZSIsInNhdmVUaWNrZXREZXRhaWxzIiwiYW5zd2VycyIsIl9yZWYxNSIsImlkVG9rZW4iLCJ2ZXJpZmllciIsImp3dCIsImRlY29kZSIsImNvbnNvbGUiLCJsb2ciLCJvd25lciIsImFzc2lnbkF0dGVuZGVlIiwiYXJndW1lbnRzIiwidW5kZWZpbmVkIiwiX3JlZjE2IiwicmVhc3NpZ25UaWNrZXQiLCJfcmVmMTciLCJkZWxlZ2F0ZVRpY2tldCIsIl9yZWYxOCIsInNhdmVFeHRyYVF1ZXN0aW9ucyIsIl9yZWYxOSIsImdldFRpY2tldFBERiIsIl9yZWYyMCIsInF1ZXJ5U3RyaW5nIiwiYXBpVXJsIiwiZmV0Y2giLCJyZXNwb25zZVR5cGUiLCJoZWFkZXJzIiwib2siLCJibG9iIiwicGRmIiwibGluayIsImRvY3VtZW50IiwiY3JlYXRlRWxlbWVudCIsInVybCIsIndpbmRvdyIsIlVSTCIsImNyZWF0ZU9iamVjdFVSTCIsImhyZWYiLCJkb3dubG9hZCIsImRpc3BhdGNoRXZlbnQiLCJNb3VzZUV2ZW50IiwiUmVhY3QiLCJQcm9wVHlwZXMiLCJ1c2VUcmFuc2xhdGlvbiIsIkJveCIsInVzZUZvcm1payIsIkV4dHJhUXVlc3Rpb25zRmllbGRzIiwiRm9ybUZvb3RlciIsInVzZVNjcm9sbFRvRXJyb3IiLCJSZWdpc3RyYXRpb25EaXNjbGFpbWVyIiwiYnVpbGRWYWxpZGF0aW9uU2NoZW1hIiwicGFyc2VBbnN3ZXJzIiwianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsIkFzc2lnbkVRRm9ybSIsIm9uU3VibWl0Iiwib25DbG9zZSIsImZvcm1payIsImluaXRpYWxWYWx1ZXMiLCJ2YWxpZGF0aW9uU2NoZW1hIiwicmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfbWFuZGF0b3J5IiwidmFsdWVzIiwicmVsZXZhbnRBbnN3ZXJzIiwiZW5hYmxlUmVpbml0aWFsaXplIiwiaGFuZGxlU3VibWl0Iiwibm9WYWxpZGF0ZSIsImNoaWxkcmVuIiwicmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfY29udGVudCIsImRpc2NsYWltZXIiLCJpc1JlcXVpcmVkIiwic2F2ZUxhYmVsIiwiY2FuY2VsTGFiZWwiLCJkaXNhYmxlZCIsImlzU3VibWl0dGluZyIsInByb3BUeXBlcyIsIm9iamVjdCIsImFycmF5IiwiZnVuYyIsIkNvbnRlbnRDb3B5SWNvbiIsIlRvb2x0aXAiLCJNSUxMSVNFQ19UT19TRUMiLCJzdHlsZXMiLCJkZWZhdWx0V2lkdGgiLCJDb3B5VGV4dCIsInRleHQiLCJ0b29sdGlwVGV4dCIsImhpZGVDb3B5IiwidHJ1bmNhdGVkIiwicmV2ZXJzZWQiLCJ3aWR0aCIsInRvb2x0aXBUZXh0VG9Vc2UiLCJ0b29sdGlwIiwic2V0VG9vbHRpcCIsInVzZVN0YXRlIiwiY2xhc3NOYW1lcyIsImhhbmRsZUNvcHkiLCJuYXZpZ2F0b3IiLCJjbGlwYm9hcmQiLCJ3cml0ZVRleHQiLCJzZXRUaW1lb3V0IiwiY2xhc3NOYW1lIiwid3JhcHBlciIsInN0eWxlIiwiY29weUljb24iLCJvbkNsaWNrIiwic3RyaW5nIiwiYm9vbCIsIm51bWJlciIsImNyZWF0ZUNvbnRleHQiLCJkZWZhdWx0Q29udGV4dFZhbHVlIiwic2V0TWVzc2FnZSIsInNldE1lc3NhZ2VDYWxsYmFjayIsIkN1c3RvbURpYWxvZ0NvbnRleHQiLCJEaWFsb2ciLCJEaWFsb2dDb250ZW50IiwiRGlhbG9nQ29udGVudFRleHQiLCJEaWFsb2dUaXRsZSIsIkN1c3RvbURpYWxvZyIsIm9wZW4iLCJib2R5IiwiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwiLCJfX2h0bWwiLCJUaGVtZVByb3ZpZGVyIiwiY3JlYXRlVGhlbWUiLCJkYXJrQ29sb3IiLCJyb290IiwiZG9jdW1lbnRFbGVtZW50IiwiZ2V0Q29tcHV0ZWRTdHlsZSIsImdldFByb3BlcnR5VmFsdWUiLCJ0aGVtZSIsInBhbGV0dGUiLCJwcmltYXJ5IiwibWFpbiIsInNlY29uZGFyeSIsInR5cG9ncmFwaHkiLCJib2R5MSIsImZvbnRTaXplIiwiaDUiLCJmb250V2VpZ2h0IiwibWFyZ2luQm90dG9tIiwiaDYiLCJjb21wb25lbnRzIiwiTXVpRm9ybUhlbHBlclRleHQiLCJzdHlsZU92ZXJyaWRlcyIsIk11aUJ1dHRvbiIsImxpbmVIZWlnaHQiLCJNdWlUYWIiLCJjb2xvciIsIk11aVRhYnMiLCJpbmRpY2F0b3IiLCJiYWNrZ3JvdW5kQ29sb3IiLCJDdXN0b21UaGVtZSIsIm5vZGUiLCJDaGVja2JveCIsIkZvcm1Db250cm9sIiwiRm9ybUNvbnRyb2xMYWJlbCIsIkZvcm1Hcm91cCIsIkZvcm1IZWxwZXJUZXh0IiwiRm9ybUxhYmVsIiwiZ2V0TGFiZWwiLCJ0b1NsdWciLCJDaGVja2JveExpc3RRdWVzdGlvbkZpZWxkIiwiX3F1ZXN0aW9uJHZhbHVlcyIsInF1ZXN0aW9uIiwicXVlc3Rpb25DbGFzc05hbWUiLCJpc0Rpc2FibGVkIiwib25DaGFuZ2UiLCJzZXRGaWVsZFZhbHVlIiwiZXJyb3IiLCJoZWxwZXJUZXh0IiwicmVzdCIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsIl9leGNsdWRlZCIsInF1ZXN0aW9uU2x1ZyIsInF1ZXN0aW9uTGFiZWwiLCJtYW5kYXRvcnkiLCJxdWVzdGlvbk1heFZhbHVlcyIsIm1heF9zZWxlY3RlZF92YWx1ZXMiLCJxdWVzdGlvbk9wdGlvbnMiLCJ2YWwiLCJsYWJlbCIsInRvU3RyaW5nIiwiaGFuZGxlQ2hlY2tib3hMaXN0Q2hhbmdlIiwiY2hlY2tlZCIsImN1cnJlbnRBbnMiLCJtYXhTZWxlY3Rpb25SZWFjaGVkIiwibmV3VmFsdWUiLCJ2IiwicmVxdWlyZWQiLCJmdWxsV2lkdGgiLCJtYXJnaW4iLCJvcCIsImNvbnRyb2wiLCJpbmNsdWRlcyIsImV2IiwidGFyZ2V0IiwiUmF3SFRNTCIsIkNoZWNrYm94UXVlc3Rpb25GaWVsZCIsInN4IiwiYWxpZ25JdGVtcyIsIm1hcmdpblRvcCIsIklucHV0TGFiZWwiLCJNZW51SXRlbSIsIlNlbGVjdCIsIkRyb3Bkb3duUXVlc3Rpb25GaWVsZCIsImxhYmVsSWQiLCJSYWRpbyIsIlJhZGlvR3JvdXAiLCJSYWRpb0xpc3RRdWVzdGlvbkZpZWxkIiwiVGV4dEZpZWxkIiwiVGV4dFF1ZXN0aW9uRmllbGQiLCJRdWVzdGlvblR5cGVfQ2hlY2tib3giLCJRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0IiwiUXVlc3Rpb25UeXBlX0NvbWJvQm94IiwiUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveCIsIlF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbkxpc3QiLCJjaGVja1J1bGUiLCJydWxlIiwiYW5zd2VyX3ZhbHVlcyIsIkFycmF5IiwiaXNBcnJheSIsImFuc3dlcl92YWx1ZXNfb3BlcmF0b3IiLCJjaGVja1Zpc2liaWxpdHkiLCJydWxlUmVzdWx0IiwidmlzaWJpbGl0eSIsInZpc2liaWxpdHlfY29uZGl0aW9uIiwicXVlc3Rpb25JZCIsInRleHRMQyIsInRvTG93ZXJDYXNlIiwicmVwbGFjZSIsInEiLCJfcSRsYWJlbCIsImlzQW5zd2VyZWQiLCJhbnN3ZXIiLCJjaGVja0lmVmFsdWVNYXRjaCIsImNvbXBhcmVWYWwiLCJhbnN3ZXJBcnJheSIsInNvbWUiLCJnZXRUeXBlSW5pdGlhbFZhbHVlIiwidHlwZSIsImdldFR5cGVWYWx1ZSIsImFucyIsInNwbGl0IiwidHJhbnNmb3JtQW53ZXJzRm9ybWF0IiwiZGlzY2xhaW1lcl9hY2NlcHRlZCIsImV4dHJhX3F1ZXN0aW9ucyIsImZvcm1hdHRlZEVRIiwicXVlc3Rpb25faWQiLCJwYXJzZUludCIsInBvcCIsIlF1ZXN0aW9uVHlwZV9UZXh0IiwiUXVlc3Rpb25UeXBlX1RleHRBcmVhIiwiUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uIiwiZ2V0UXVlc3Rpb25GaWVsZENvbXBvbmVudCIsInF1ZXN0aW9uVHlwZSIsIkZyYWdtZW50IiwicmVhZE9ubHkiLCJhbGxvd0VkaXQiLCJyZW5kZXJSdWxlIiwiaXNWaXNpYmxlIiwicmVuZGVyUXVlc3Rpb24iLCJzdWJfcXVlc3Rpb24iLCJfcSRzdWJfcXVlc3Rpb25fcnVsZXMiLCJRdWVzdGlvbkZpZWxkQ29tcG9uZW50IiwiZm9ybWlrUHJvcHMiLCJoYW5kbGVDaGFuZ2UiLCJvbkJsdXIiLCJoYW5kbGVCbHVyIiwidG91Y2hlZCIsIkJvb2xlYW4iLCJzdWJfcXVlc3Rpb25fcnVsZXMiLCJ1c2VTZWxlY3RvciIsInNoYWxsb3dFcXVhbCIsIkNhcmRIZWFkZXIiLCJJY29uQnV0dG9uIiwiQ29sbGFwc2UiLCJDYXJkQ29udGVudCIsIkV4cGFuZE1vcmVJY29uIiwiQXNzaWduZWRGaWx0ZXIiLCJvbkZpbHRlciIsImZpbHRlclZhbHVlcyIsInN0YXRlIiwiaXNFeHBhbmRlZCIsInNldElzRXhwYW5kZWQiLCJhc3NpZ25lZFZhbHVlcyIsImhhbmRsZUZpbHRlckNoYW5nZSIsIm5ld0ZpbHRlciIsInRpdGxlV3JhcHBlciIsImFjdGlvbiIsImRpc2FibGVSaXBwbGUiLCJ0cmFuc2Zvcm0iLCJ0cmFuc2l0aW9uIiwiaW4iLCJ0aW1lb3V0IiwidW5tb3VudE9uRXhpdCIsInB5IiwicGIiLCJhc3NpZ25lZCIsInVzZUVmZmVjdCIsIkJhZGdlRmVhdHVyZUZpbHRlciIsImJhZGdlX2ZlYXR1cmVzX3R5cGVzIiwibmV3RmlsdGVycyIsImYiLCJiZiIsInVzZVJlZiIsIlN0YWNrIiwiRmlsdGVyTGlzdEljb24iLCJCYWRnZSIsIkJ1dHRvbiIsIkNhcmQiLCJEaXZpZGVyIiwiUGFwZXIiLCJjb25uZWN0IiwiVGlja2V0VHlwZUZpbHRlciIsIlN0YXR1c0ZpbHRlciIsIkZyZWVQYWlkRmlsdGVyIiwiUHJvbW9Db2RlRmlsdGVyIiwiRmlsdGVyIiwib25SZXNldCIsInNob3dGaWx0ZXJMaXN0Iiwic2V0U2hvd0ZpbHRlckxpc3QiLCJzaG93RGF0ZXBpY2tlciIsInNldFNob3dEYXRlcGlja2VyIiwiZmlsdGVyTnVtQWN0aXZlIiwic2V0RmlsdGVyTnVtQWN0aXZlIiwiZmlsdGVyUmVmIiwiaGFuZGxlRmlsdGVyQ2xpY2tPdXRzaWRlIiwiZXZlbnQiLCJjdXJyZW50IiwiY29udGFpbnMiLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsIk1BUkdJTl9SSUdIVF9XSVRIX0JBREdFIiwiQUREX0ZJTFRFUl9OVU1CRVIiLCJjYWxjdWxhdGVBY3RpdmVGaWx0ZXJzIiwiY291bnQiLCJ0cmltIiwidG9nZ2xlIiwiaGFuZGxlRmlsdGVyUmVzZXQiLCJmaWx0ZXJDb250YWluZXIiLCJyZWYiLCJwdCIsImJhZGdlQ29udGVudCIsIm1yIiwiZmlsdGVySWNvbiIsImZpbHRlckxhYmVsIiwiZmlsdGVyTGlzdENvbnRhaW5lciIsImNvbnRhaW5lciIsImVsZXZhdGlvbiIsImZpbHRlckNoZWNrYm94Q29udGFpbmVyIiwidmFyaWFudCIsImNsZWFuQnV0dG9uIiwibWFwU3RhdGVUb1Byb3BzIiwicHJvbW9Db2RlIiwic2V0UHJvbW9Db2RlIiwiZGVib3VuY2VUaW1lciIsIkRFQk9VTkNFX1ZBTFVFIiwibmV3UHJvbW9Db2RlIiwiY2xlYXJUaW1lb3V0IiwicGxhY2Vob2xkZXIiLCJzdHlsZWQiLCJTZWFyY2hJY29uIiwiQ2xvc2VJY29uIiwiSW5wdXRCYXNlIiwiU2VhcmNoQ29udGFpbmVyIiwicG9zaXRpb24iLCJtYXJnaW5SaWdodCIsIm1hcmdpbkxlZnQiLCJkaXNwbGF5IiwiU2VhcmNoSWNvbldyYXBwZXIiLCJoZWlnaHQiLCJqdXN0aWZ5Q29udGVudCIsIlN0eWxlZElucHV0QmFzZSIsImJvcmRlckJvdHRvbSIsInBhZGRpbmdMZWZ0IiwicGFkZGluZ1JpZ2h0IiwiQ2xvc2VJY29uV3JhcHBlciIsInBhZGRpbmciLCJ0b3AiLCJyaWdodCIsImN1cnNvciIsInpJbmRleCIsIlNlYXJjaCIsIm9uU2VhcmNoIiwic2hvd0Nsb3NlIiwic2V0U2hvd0Nsb3NlIiwic2VhcmNoVmFsdWUiLCJzZXRTZWFyY2hWYWx1ZSIsIm9uS2V5RG93biIsIm5hdGl2ZUV2ZW50IiwicmVzZXRTZWFyY2giLCJpbnB1dFByb3BzIiwiSW1wb3J0RXhwb3J0SWNvbiIsIlNvcnQiLCJvblNvcnQiLCJzaG93U29ydCIsInNldFNob3dTb3J0Iiwic29ydFJlZiIsImhhbmRsZVNvcnRDbGlja091dHNpZGUiLCJzb3J0Q29udGFpbmVyIiwic29ydEljb24iLCJzb3J0TGFiZWwiLCJzb3J0TGlzdENvbnRhaW5lciIsInRpY2tldF90eXBlcyIsIkdyaWQiLCJGaWx0ZXJzIiwianVzdGlmeSIsIml0ZW0iLCJ4cyIsImdhcCIsImZpbHRlclNvcnRDb250YWluZXIiLCJmb290ZXIiLCJjYW5jZWxCdG4iLCJzaXplIiwic2F2ZUJ0biIsIkVycm9ySWNvbiIsIkVycm9yTGFiZWwiLCJkYXRhVGVzdElkIiwiZXJyb3JMYWJlbCIsIkJhY2tkcm9wIiwiQ2lyY3VsYXJQcm9ncmVzcyIsIkxvYWRlciIsImRyYXdlciIsIkluZmluaXRlU2Nyb2xsIiwiT3JkZXJzTGlzdCIsIk9ORV9QQUdFX05FWFQiLCJNeU9yZGVyc1RpY2tldHMiLCJmZXRjaERhdGEiLCJtZW1iZXJPcmRlcnMiLCJvcmRlcnNfY3VycmVudF9wYWdlIiwib3JkZXJzX2xhc3RfcGFnZSIsIm15T3JkZXJzV3JhcHBlciIsImRhdGFMZW5ndGgiLCJuZXh0IiwiaGFzTW9yZSIsInNjcm9sbFRocmVzaG9sZCIsIm5vT3JkZXJzRm91bmQiLCJub09yZGVyc0ljb25XcmFwcGVyIiwiY2FsY3VsYXRlT3JkZXJUb3RhbHMiLCJmb3JtYXRDdXJyZW5jeSIsIl9GcmFnbWVudCIsIk9yZGVyU3VtbWFyeVRhYmxlIiwiZGlzY291bnRUb3RhbCIsInJlZnVuZFRvdGFsIiwidGF4ZXNUb3RhbCIsImFtb3VudFRvdGFsIiwidGlja2V0U3VtbWFyeSIsImh1bmRyZWQiLCJvcmRlclN1bW1hcnlUYWJsZSIsInRpY2tldFRvdGFsIiwicXR5IiwidGlja2V0X3R5cGUiLCJjb3N0IiwiYWxpZ24iLCJjdXJyZW5jeSIsImNyZWF0ZWQiLCJkaXNjb3VudF9hbW91bnQiLCJ0YXhlc19hbW91bnQiLCJzaGFwZSIsInVzZU5vdyIsInRpY2tldHNSZWZ1bmRhYmxlIiwiUmVmdW5kRW1haWxTdXBwb3J0Iiwic3VibWl0UmVxdWVzdCIsIm9uUmVmdW5kQ2xpY2siLCJvblJlZnVuZERldGFpbENsaWNrIiwibm93IiwiaXNJblJlZnVuZGFibGVQZXJpb2QiLCJyZWdpc3RyYXRpb25fYWxsb3dlZF9yZWZ1bmRfcmVxdWVzdF90aWxsX2RhdGUiLCJhdExlYXN0T25lUmVmdW5kYWJsZVRpY2tldCIsImlzUmVmdW5kYWJsZSIsImhhc1JlZnVuZFJlcXVlc3RzIiwicm9sZSIsIm9yZGVyU3VtbWFyeUJ1dHRvbiIsInJlZnVuZERpc2FibGVkIiwicmVsIiwic3VwcG9ydF9lbWFpbCIsImFycmF5T2YiLCJPcmRlclN1bW1hcnkiLCJvcmRlclN1bW1hcnlXcmFwcGVyIiwicHgiLCJvcmRlclN1bW1hcnlQdXJjaGFzZWRJbmZvIiwibWVtYmVyVGlja2V0cyIsIk9yZGVyTGlzdFRpY2tldHMiLCJBc3NpZ25Ub01lIiwidXNlclRpY2tldHMiLCJ1c2VyX3RpY2tldHNfY3VycmVudF9wYWdlIiwidXNlcl90aWNrZXRzX2xhc3RfcGFnZSIsIm9yZGVyVGlja2V0Q29udGFpbmVyIiwiYXNzaWduZWRUb01lV3JhcHBlciIsInRpY2tldExpc3RDb250YWluZXIiLCJpc1JlZnVuZE1vZGFsIiwiaXNTZWxlY3RlZFRvUmVmdW5kIiwic2VsZWN0VG9SZWZ1bmQiLCJpc0V4dGVybmFsQXNzaWduZWRUaWNrZXQiLCJub1RpY2tldHNGb3VuZCIsIlR5cG9ncmFwaHkiLCJBc3NpZ25lZFRvIiwiRXh0ZXJuYWxBc3NpZ25lZFRvIiwiTWFuYWdlRm9yIiwiQXR0ZW5kZWVTdGF0dXMiLCJfdGlja2V0JG93bmVyIiwiX3RpY2tldCRvd25lcjIiLCJfdGlja2V0JG93bmVyMyIsImlzVW5hc3NpZ25lZCIsImlzX2FjdGl2ZSIsImlzRGVsZWdhdGVkIiwidGlja2V0T3duZXJFbWFpbCIsIl90aWNrZXQkb3JkZXIiLCJfdGlja2V0JG9yZGVyMiIsIl90aWNrZXQkb3duZXI0IiwiX3RpY2tldCRvd25lcjUiLCJhc3NpZ25lZEJ5VGV4dCIsIm93bmVyX2ZpcnN0X25hbWUiLCJvd25lcl9sYXN0X25hbWUiLCJQQUdJTkFUSU9OX0RJU1BMQVlfQ09VTlQiLCJPcmRlckxpc3RJdGVtIiwiX29yZGVyJG1lbWJlclRpY2tldHMiLCJfb3JkZXIkbWVtYmVyVGlja2V0czIiLCJvblBhZ2luYXRlQ2xpY2siLCJ0aWNrZXRzVG9SZWZ1bmQiLCJpdGVtc1RvRGlzcGxheSIsInNldEl0ZW1zVG9EaXNwbGF5Iiwic2xpY2VkVGlja2V0cyIsInNsaWNlIiwib25WaWV3TW9yZSIsInRpY2tldHNfdG90YWwiLCJvblZpZXdMZXNzIiwiZmluZCIsInZpZXdNb3JlQnV0dG9uIiwidXNlRGlzcGF0Y2giLCJUaWNrZXRTdGF0dXMiLCJnZXRTdW1taXRSZWFzc2lnbkRhdGUiLCJUaWNrZXREZXRhaWwiLCJ1c2VUaWNrZXREZXRhaWxzIiwiVGlja2V0QXNzaWduIiwibW9kYWxWaWV3cyIsImRldGFpbCIsInJlYXNzaWduIiwiYXNzaWduIiwiVGlja2V0Q1RBcyIsImlzSW5jb21wbGV0ZSIsImlzUmVhc3NpZ25hYmxlIiwib25PcGVuQ2xpY2siLCJhc3NpZ25UaWNrZXRCdXR0b24iLCJ2aWV3RmluaXNoVGlja2V0QnV0dG9uIiwicmVhc3NpZ25CdXR0b24iLCJfdGlja2V0JHRpY2tldF90eXBlIiwiX3RpY2tldCRiYWRnZSIsImNhblJlYXNzaWduIiwibW9kYWxPcGVuIiwic2V0TW9kYWxPcGVuIiwicmVhc3NpZ25EYXRlIiwib25SZWFzc2lnbmFibGVQZXJpb2QiLCJoYW5kbGVDbG9zZU1vZGFsIiwiaGFuZGxlT3Blbk1vZGFsIiwidmlldyIsIm9yZGVyV3JhcHBlciIsInJlZnVuZE1vZGFsIiwiZGlzYWJsZWRSZWZ1bmQiLCJzZWxlY3RlZCIsImNoZWNrYm94IiwicGwiLCJ0aWNrZXRUaWNrZXRUeXBlIiwiYmFkZ2VGZWF0dXJlV3JhcHBlciIsInByIiwiYmFkZ2UiLCJmZWF0dXJlcyIsImJhZGdlRmVhdHVyZSIsInNyYyIsImltYWdlIiwiYWx0IiwidGlja2V0Tm8iLCJmbGV4V3JhcCIsIm1pbldpZHRoIiwidGlja2V0QWN0aW9uQnV0dG9ucyIsIm93bmVySWQiLCJ0b3RhbF9yZWZ1bmRlZF9hbW91bnQiLCJUYWJzIiwiVGFiIiwiUmVmdW5kUmVxdWVzdHNNb2RhbCIsIlJlZnVuZERldGFpbHMiLCJUYWJQYW5lbCIsInByb3BzIiwiaW5kZXgiLCJoaWRkZW4iLCJPcmRlcnNMaXN0RGVza3RvcE1vYmlsZSIsImlzTW9iaWxlIiwiZGV0YWlsc1JlcXVpcmVkIiwic2V0VmFsdWUiLCJfIiwic2V0VGlja2V0c1RvUmVmdW5kIiwic2V0U3VibWl0UmVxdWVzdCIsInJlZnVuZERldGFpbHNPcGVuIiwic2V0UmVmdW5kRGV0YWlsc09wZW4iLCJ1bnNlbGVjdFJlZnVuZFRpY2tldHMiLCJmaWx0ZXJTZWxlY3RlZCIsInNlbGVjdGVkVGlja2V0IiwiY2xvc2VTdWJtaXRSZXF1ZXN0IiwicmVzZXRBbGxSZWZ1bmRTdGF0dXNlcyIsIm1vcmVEZXRhaWxzIiwiYm9yZGVyQ29sb3IiLCJ0YWJCdXR0b25zIiwibWQiLCJvblJlZnVuZFN1Y2Nlc3NDbG9zZSIsIm9uQ2xvc2VTbGlkZXIiLCJ1c2VUaGVtZSIsInVzZU1lZGlhUXVlcnkiLCJnZXRGb3JtYXR0ZWREYXRlIiwidGlja2V0X3Blcl9wYWdlIiwiYnJlYWtwb2ludHMiLCJkb3duIiwiaXNNb2JpbGVWaWV3YWJsZSIsInNldE1vYmlsZVZpZXdhYmxlIiwidGlja2V0c19wYWdlX2N1cnJlbnQiLCJsZyIsIm9yZGVyVGlja2V0SW5mb0NvbnRhaW5lciIsIm9yZGVyVGlja2V0SW5mbyIsInJvd1NwYWNpbmciLCJjb2x1bW5TcGFjaW5nIiwic20iLCJkaXNwbGF5X25vbmUiLCJmbGV4RGlyZWN0aW9uIiwidXNlTWVtbyIsIlJpZ2h0RHJhd2VyIiwiUmVmdW5kUmVxdWVzdGVkVGlja2V0IiwiZ2V0QWxsUmVmdW5kUmVxdWVzdGVkVGlja2V0cyIsInJlcXVlc3RlZFRpY2tldHMiLCJjbG9zZVNsaWRlciIsInJlZnVuZERldGFpbHMiLCJ0b29sdGlwQ2xhc3NlcyIsIkluZm9JY29uIiwibW9tZW50IiwiUmVmdW5kU3RhdHVzIiwiR1JJRF84IiwiR1JJRF8xMiIsIlBBRERJTkdfMiIsImFwcHJvdmVkUmVmdW5kcyIsInJlZnVuZCIsInJlZnVuZGVkVGF4ZXNTdW1tYXRvcnkiLCJyZWZ1bmRlZF90YXhlcyIsInJ0IiwidGF4SWQiLCJ0YXgiLCJ0b3RhbFJlZnVuZGVkVGF4QW1vdW50IiwicmVmdW5kZWRfYW1vdW50IiwiSHRtbFRvb2x0aXAiLCJjbGFzc2VzIiwicG9wcGVyIiwibWF4V2lkdGgiLCJib3JkZXIiLCJyZWZ1bmRUaWNrZXRCb3hDb250YWluZXIiLCJyZWZ1bmREZXRhaWwiLCJyZWZ1bmRUaWNrZXRBdHRlbmRlZSIsImFjdGlvbl9kYXRlIiwiZm9ybWF0IiwiQ2hpcCIsImdldFJlZnVuZFJlcXVlc3RlZFN0YXR1c0NvbG9yIiwic3RhdHVzQ29sb3IiLCJidXR0b25QaWxsIiwiU3R5bGVkRW5naW5lUHJvdmlkZXIiLCJDaGVja0NpcmNsZUljb24iLCJTVEVQX09ORSIsIlNURVBfVEhSRUUiLCJTVEVQX1RXTyIsInN0ZXAiLCJzZXRTdGVwIiwiZXJyb3JNc2ciLCJzZXRFcnJvck1zZyIsInJlZnVuZFN1Y2Nlc3MiLCJzZXRSZWZ1bmRTdWNjZXNzIiwiY29uZmlybVJlZnVuZCIsImdvQmFja1RvUmVmdW5kIiwicmVmdW5kVGlja2V0cyIsInJlZnVuZFN0ZXBPbmUiLCJzdWJ0aXRsZSIsInRpY2tldExpc3QiLCJhY3Rpb25CdXR0b25zIiwiY2FuY2VsQnV0dG9uIiwiY29udGludWVCdXR0b24iLCJyZWZ1bmRTdGVwVHdvIiwicmVmdW5kRXJyb3JNc2ciLCJDVEFCdXR0b25XcmFwcGVyIiwicmVmdW5kU3RlcFRocmVlIiwicmVmdW5kU3VjY2Vzc2Z1bCIsInN1Y2Nlc3NNc2ciLCJzdWNjZXNzTXNnMiIsInJlbmRlclN0ZXBzIiwiaW5qZWN0Rmlyc3QiLCJEcmF3ZXIiLCJDbG9zZSIsImFuY2hvciIsIk1vZGFsUHJvcHMiLCJrZWVwTW91bnRlZCIsImhlYWRlciIsImNsb3NlQnRuIiwiZmxvYXQiLCJndXR0ZXJCb3R0b20iLCJvbmVPZlR5cGUiLCJnZXRTdW1taXRGb3JtYXR0ZWREYXRlIiwiU3VtbWl0SGVhZGVyIiwid2lkZ2V0SGVhZGVyIiwic3VtbWl0VGl0bGVEYXRlIiwieXVwIiwiRGVsZWdhdGVGb3JtIiwiZGVsZWdhdGVfZmlyc3RfbmFtZSIsImRlbGVnYXRlX2xhc3RfbmFtZSIsImRlbGVnYXRlX2VtYWlsIiwicmVzZXRGb3JtIiwiaGFuZGxlQ2FuY2VsIiwiTGluayIsIkFzc2lnbkhlYWRlciIsImluUHJvZ3Jlc3MiLCJ1c2VyRW1haWwiLCJhc3NpZ25lZFRvWW91IiwiZ2V0U2Vjb25kYXJ5VGl0bGUiLCJnZXRIZWFkZXJOb3RlIiwidHJhbnNLZXkiLCJjb21wb25lbnQiLCJwdXJjaGFzZWRCeVdyYXBwZXIiLCJwdXJjaGFzZWRCeSIsIm93bmVyX2VtYWlsIiwib3JkZXJObyIsImhlYWRlck5vdGUiLCJSZWFzc2lnbkhlYWRlciIsImFsbG93c0RlbGVnYXRlIiwiUmVhc3NpZ25Gb3JtIiwibmV3X2F0dGVuZGVlX2VtYWlsIiwicGVyc29uYWxfbWVzc2FnZSIsIm11bHRpbGluZSIsIm1pblJvd3MiLCJ1c2VHZXRUaWNrZXQiLCJzYXZlTWVzc2FnZSIsInNldFNhdmVNZXNzYWdlIiwiYXNzaWduT3B0aW9uIiwic2V0QXNzaWduT3B0aW9uIiwiYXNzaWduYXRpb25JblByb2dyZXNzIiwic2V0QXNzaWduYXRpb25JblByb2dyZXNzIiwiaXNBc3NpZ25lZFRvTWUiLCJvbkFzc2lnbiIsIm9uRGVsZWdhdGUiLCJvbkNsb3NlRVFGb3JtIiwib25DbG9zZVNhdmVNZXNzYWdlIiwib25TYXZlRVEiLCJkZXNjcmlwdGlvbiIsInJlc29sdmUiLCJIZWFkZXIiLCJ0aWNrZXRSZWFzc2lnbkNvbnRhaW5lciIsImFzc2lnbk9wdGlvbnNXcmFwcGVyIiwibXkiLCJBdXRvY29tcGxldGUiLCJxdWVyeVJlZ2lzdHJhdGlvbkNvbXBhbmllcyIsIkNvbXBhbnlGaWVsZCIsInN1bW1pdElkIiwiaW5wdXRWYWx1ZSIsInNldElucHV0VmFsdWUiLCJvcHRpb25zIiwic2V0T3B0aW9ucyIsInNldEZpZWxkVG91Y2hlZCIsInJlc3VsdHMiLCJuZXdPcHRpb25zIiwiYXV0b0NvbXBsZXRlIiwiZnJlZVNvbG8iLCJpbmNsdWRlSW5wdXRJbkxpc3QiLCJmaWx0ZXJTZWxlY3RlZE9wdGlvbnMiLCJnZXRPcHRpb25MYWJlbCIsIm9wdGlvbiIsInRtcFZhbHVlIiwib25JbnB1dENoYW5nZSIsIm5ld0lucHV0VmFsdWUiLCJmaWx0ZXJPcHRpb25zIiwiZmlsdGVyZWQiLCJpc0V4aXN0aW5nIiwicmVuZGVySW5wdXQiLCJyZW5kZXJPcHRpb24iLCJvcHRpb25Qcm9wcyIsIlRpY2tldE93bmVyRmllbGRzIiwiVGlja2V0Rm9ybSIsImNhbkVkaXQiLCJyZWR1Y2UiLCJhZGRpdGlvbmFsRGV0YWlscyIsImluZm9Ob3RlIiwiUVJDb2RlIiwiRmlsZURvd25sb2FkT3V0bGluZWQiLCJEb3dubG9hZEljb24iLCJFbWFpbE91dGxpbmVkIiwiRW1haWxJY29uIiwiVFdPX0lURU0iLCJfdGlja2V0JG9yZGVyMyIsInNlbnRDb25maXJtYXRpb24iLCJzZXRTZW50Q29uZmlybWF0aW9uIiwiaXNVc2VyT3JkZXJPd25lciIsIm93bmVyX2lkIiwiaXNVc2VyVGlja2V0T3duZXIiLCJjYW5FZGl0VGlja2V0RGF0YSIsImFsbG93X3VwZGF0ZV9hdHRlbmRlZV9leHRyYV9xdWVzdGlvbnMiLCJpc0NvbXBsZXRlIiwib25TYXZlIiwiZG93bmxvYWRUaWNrZXRQZGYiLCJvblNlbmRFbWFpbCIsInRpY2tldERldGFpbENvbnRhaW5lciIsInFyQ29kZSIsInFyX2NvZGUiLCJ2aWV3Qm94IiwicXJOb3RlIiwiaXNfdmlydHVhbCIsImFjdGlvbkJ1dHRvbnNDb250YWluZXIiLCJkb3dubG9hZEJ0biIsInNlbmRCdG4iLCJzZW50Iiwib3JkZXJOdW1iZXIiLCJhdHRlbmRlZUNvbnRhaW5lciIsImF0dGVuZGVlSW5mb1RpdGxlIiwiQ29udGFpbmVyIiwiX3RpY2tldCRyZWZ1bmRfcmVxdWVzIiwiaXNBY3RpdmUiLCJyZWZ1bmRSZXF1ZXN0cyIsInRpY2tldFN0YXR1c0NvbnRhaW5lciIsImJ1dHRvblJlZnVuZFJlcXVlc3RlZCIsImJ1dHRvbkluY29tcGxldGUiLCJidXR0b25VbmFzc2lnbmVkIiwiYnV0dG9uQ29tcGxldGUiLCJidXR0b25DYW5jZWxsZWQiLCJBc3NpZ25lZFRvTWUiLCJXaWRnZXRUYWJzIiwidGFiIiwic2V0VGFiIiwidGlja2V0c0Z1bGx5TG9hZGVkIiwic2V0VGlja2V0c0Z1bGx5TG9hZGVkIiwib3JkZXJzX3Blcl9wYWdlIiwib3JkZXJzUGVyUGFnZSIsInRpY2tldFBlclBhZ2UiLCJoYW5kbGVUYWJDaGFuZ2UiLCJuZXdUYWIiLCJmZXRjaEFzc2lnbmVkVGlja2V0cyIsImZldGNoT3JkZXJUaWNrZXRzIiwib3JkZXJUaWNrZXRzUHJvbWlzZXMiLCJjdXJyZW50X3BhZ2UiLCJmZXRjaFByb21pc2VzIiwidGFiV3JhcHBlciIsIldpZGdldFdyYXBwZXIiLCJtZXNzYWdlQ2FsbGJhY2siLCJsb2FkaW5nIiwiYXBpRXJyb3IiLCJyZXNldEFwaUVycm9yIiwiZmlsdGVyVmFsdWUiLCJzb3J0VmFsdWUiLCJ0aWNrZXRzVGl0bGVUZXh0IiwiUHJvdmlkZXIiLCJydW4iLCJjdXJyZW50VGlja2V0Iiwic21vb3RoU2Nyb2xsVG8iLCJ0YXJnZXRTY3JvbGxUb3AiLCJkdXJhdGlvbiIsInN0YXJ0U2Nyb2xsVG9wIiwic2Nyb2xsVG9wIiwiZGlzdGFuY2UiLCJzdGFydFRpbWUiLCJhbmltYXRpb25TdGVwIiwidGltZXN0YW1wIiwiZWxhcHNlZCIsInByb2dyZXNzIiwiTWF0aCIsIm1pbiIsImVhc2VJbk91dFF1YWQiLCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJjb250YWluZXJJZCIsImlzVmFsaWQiLCJlcnJvckFycmF5IiwiZXJyb3JDb3VudCIsImVsZW1lbnRzU29ydGVkIiwicmVzdWx0IiwiZWxlbWVudCIsInF1ZXJ5U2VsZWN0b3IiLCJlbFJlY3QiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJhIiwiYiIsImdldEVsZW1lbnRCeUlkIiwiY29udGFpbmVyUmVjdCIsImVsZW1PZmZlc3QiLCJhbmltYXRpb25EdXJhdGlvbiIsImlzVGlja2V0UmVmdW5kYWJsZSIsIlNUQVRVU19DT01QTEVURSIsIlNUQVRVU19JTkNPTVBMRVRFIiwiU1RBVFVTX0NBTkNFTExFRCIsIlNUQVRVU19VTkFTU0lHTkVEIiwiX3RpY2tldCRwcm9tb19jb2RlIiwiX3RpY2tldCR0aWNrZXRfdHlwZTIiLCJfdGlja2V0JHByb21vX2NvZGUyIiwiZ2V0U3RhdHVzIiwiYWxsb3dzX3RvX2RlbGVnYXRlIiwicHJvbW9fY29kZSIsImFsbG93c190b19yZWFzc2lnbiIsImluaXRSZWFjdEkxOG5leHQiLCJMYW5ndWFnZURldGVjdG9yIiwiZW4iLCJlcyIsInVzZSIsImluaXQiLCJmYWxsYmFja0xuZyIsImRlYnVnIiwicmVzb3VyY2VzIiwidHJhbnNsYXRpb24iLCJpbnRlcnBvbGF0aW9uIiwiZXNjYXBlVmFsdWUiLCJMT0dPVVRfVVNFUiIsIlNUQVJUX0xPQURJTkciLCJTVE9QX0xPQURJTkciLCJSRVNFVF9MT0FESU5HIiwiaGFzTG9hZGVkQWxsRGF0YSIsIkRFRkFVTFRfRklMVEVSX1NUQVRFIiwiREVGQVVMVF9TVEFURSIsIndpZGdldExvYWRpbmciLCJjdXJyZW50X3RhYiIsIm9yZGVyc190b3RhbCIsInRpY2tldF9jdXJyZW50X3BhZ2UiLCJ0aWNrZXRfbGFzdF9wYWdlIiwidGlja2V0X3RvdGFsIiwidXNlcl90aWNrZXRzX3RvdGFsIiwiV2lkZ2V0UmVkdWNlciIsInRvdGFsIiwibGFzdF9wYWdlIiwiZm9ybWVyT3JkZXIiLCJvIiwiX2RhdGEkIiwidXBkYXRlZE9yZGVyIiwidGlja2V0c19wYWdlX2xhc3QiLCJtbyIsIl90aWNrZXRzUmVmdW5kUmVxdWVzdCIsInVwZGF0ZWRUaWNrZXRzIiwidHJyIiwidGlja2V0RGF0YSIsIm5ld09yZGVycyIsIm5ld1RpY2tldHMiLCJjb25maWd1cmVTdG9yZSIsInBlcnNpc3RTdG9yZSIsInBlcnNpc3RSZWR1Y2VyIiwiRkxVU0giLCJSRUhZRFJBVEUiLCJQQVVTRSIsIlBFUlNJU1QiLCJQVVJHRSIsIlJFR0lTVEVSIiwic3RvcmFnZSIsImNvbWJpbmVSZWR1Y2VycyIsImdldFN0b3JlIiwiY2xpZW50SWQiLCJsb2dpblVybCIsInJlZHVjZXJzIiwic3RvcmUiLCJyZWR1Y2VyIiwibWlkZGxld2FyZSIsImdldERlZmF1bHRNaWRkbGV3YXJlIiwidGh1bmsiLCJleHRyYUFyZ3VtZW50IiwiaW1tdXRhYmxlQ2hlY2siLCJzZXJpYWxpemFibGVDaGVjayIsImlnbm9yZWRBY3Rpb25zIiwidXNlSW5pdFN0b3JlIiwiY29uZmlnIiwicGVyc2lzdG9yIiwiaW5pdExvZ091dCIsImdldEFjY2Vzc1Rva2VuIiwiU2VudHJ5IiwiY2FwdHVyZUV4Y2VwdGlvbiIsIkxBU1RfSE9VUl9PRl8yNF9IT1VSIiwiTEFTVF9NSU5VVEVfT0ZfSE9VUiIsIk9ORV9EQVkiLCJTVEFUVVNfUEVORElORyIsIlNUQVRVU19FUlJPUiIsIlNUQVRVU19QUk9DRVNTSU5HIiwiU1RBVFVTX1JFRlVORF9QRU5ESU5HIiwiU1RBVFVTX1JFRlVORF9BUFBST1ZFRCIsIlNUQVRVU19SRUZVTkRfUkVKRUNURUQiLCJTVEFUVVNfUkVGVU5EX1BFTkRJTkdfTEMiLCJTVEFUVVNfUkVGVU5EX0FQUFJPVkVEX0xDIiwiU1RBVFVTX1JFRlVORF9SRUpFQ1RFRF9MQyIsIkpFU1RfVElNRU9VVF9JTl9NSUxMSVNFQyIsIk9ORV9JVEVNIiwiRklWRV9JVEVNIiwiU0lYX0lURU0iLCJsb2NhbGUiLCJkZWZhdWx0T3B0aW9ucyIsIm1pbmltdW1GcmFjdGlvbkRpZ2l0cyIsIm1heGltdW1GcmFjdGlvbkRpZ2l0cyIsImZvcm1hdHRlciIsIkludGwiLCJOdW1iZXJGb3JtYXQiLCJkYXRldGltZSIsInRpbWVab25lIiwidHoiLCJ1bml4IiwiYW1vdW50IiwicHVyY2hhc2VUaWNrZXRUb3RhbCIsImN1cnJlbmN5T2JqZWN0IiwidGlja2V0c19leGNlcnB0X2J5X3RpY2tldF90eXBlIiwidGlja2V0VHlwZSIsInR0IiwidGlja2V0X3R5cGVfaWQiLCJwdXJjaGFzZVRvdGFsIiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiZ2V0T3JkZXJUaWNrZXRzIiwiX29yZGVycyQiLCJvcmRlcnMiLCJnZXRFcG9jaExvd2VyVXBwZXJJblNlY29uZHMiLCJ0cyIsInNldEhvdXJzIiwiZGVmYXVsdEN1cnJlbnRUaW1lIiwicm91bmQiLCJEYXRlIiwiZ2V0Tm93IiwidGltZXJTdGF0ZSIsIm5vd1V0YyIsImN1cnJlbnRQYWdlIiwiY2hlY2tTdW1taXRQYXN0IiwicmVhc3NpZ25fZGF0ZSIsInJlYXNzaWduX3RpY2tldF90aWxsX2RhdGUiLCJlbmRfZGF0ZSIsImNoZWNrU3VtbWl0U3RhcnRlZCIsInN0YXJ0X2RhdGUiLCJnZXRTdW1taXREYXlzRGlmZiIsInN0YXJ0RGF5IiwidGltZV96b25lX2lkIiwiZW5kRGF5IiwiZGF5cyIsImRpZmYiLCJmb3JtYXRTdGFydERhdGUiLCJmb3JtYXRFbmREYXRlIiwieWVhciIsIm1vbnRoIiwic3RhcnREYXRlIiwiZW5kRGF0ZSIsImdldFN1bW1pdExvY2F0aW9uIiwiX3N1bW1pdCRsb2NhdGlvbnMiLCJsb2NhdGlvbiIsImxvY2F0aW9ucyIsImwiLCJjbGFzc19uYW1lIiwiaXNfbWFpbiIsImNpdHkiLCJjb3VudHJ5IiwidXNlU3VtbWl0RGV0YWlscyIsIl9zdW1taXQkdGltZV96b25lIiwiX3N1bW1pdCR0aW1lX3pvbmUyIiwiZm9ybWF0dGVkRGF0ZSIsImZvcm1hdHRlZFJlYXNzaWduRGF0ZSIsInRpbWVfem9uZSIsImRheXNVbnRpbFJlYXNzaWduRGVhZGxpbmUiLCJpc1Bhc3QiLCJpc1N0YXJ0ZWQiLCJzdGF0dXNEYXRhIiwiZ2V0VGlja2V0U3RhdHVzS2V5IiwiZ2V0VGlja2V0U3RhdHVzRGF0YSIsImlzU3VtbWl0UGFzdCIsImdldFRpY2tldFJvbGUiLCJmZWF0dXJlIiwiZ2V0VGlja2V0VHlwZSIsImZpbmFsX2Ftb3VudCIsIm5ldF9zZWxsaW5nX2Nvc3QiLCJyciIsImdldFJlZnVuZGVkUmVxdWVzdGVkVGlja2V0cyIsIl90aWNrZXQkcmVmdW5kX3JlcXVlczIiLCJhbGxUaWNrZXRzIiwiX3RpY2tldCRyZWZ1bmRfcmVxdWVzMyIsIl90aWNrZXQkcmVmdW5kX3JlcXVlczQiLCJfdGlja2V0JHJlZnVuZF9yZXF1ZXM1IiwiZ2V0UmVmdW5kZWRSZXF1ZXN0ZWRTdGF0dXMiLCJfdGlja2V0JHJlZnVuZF9yZXF1ZXM2IiwiX3RpY2tldCRyZWZ1bmRfcmVxdWVzNyIsIl90aWNrZXQkcmVmdW5kX3JlcXVlczgiLCJnZXRUeXBlVmFsaWRhdGlvbiIsInNjaGVtYSIsIm9uZU9mIiwib2YiLCJwYXJzZVN1YlF1ZXN0aW9uQW5zd2VyIiwib25seVJlbGV2YW50Iiwic3ViUXVlc3Rpb25TbHVnIiwic3ViQW5zd2VyIiwibWF0Y2giLCJpbmNsdWRlQXR0ZW5kZWVJbmZvIiwiaW5jbHVkZURpc2NsYWltZXIiLCJidWlsZFN1YlF1ZXN0aW9uVmFsaWRhdGlvblNjaGVtYSIsIl9zdWJRdWVzdGlvbiRzdWJfcXVlcyIsInN1YlF1ZXN0aW9uIiwibnVsbGFibGUiLCJ3aGVuIiwiaXMiLCJxdWVzdGlvbkFucyIsImFuc1ZhbHVlTWF0Y2giLCJzY2giLCJzdWJSdWxlIiwiZGlzY2xhaW1lck1hbmRhdG9yeSIsImxhenkiLCJ0eXBlRXJyb3IiLCJQZXJzaXN0R2F0ZSIsIk15T3JkZXJzTXlUaWNrZXRzV2lkZ2V0Iiwic3VwcG9ydEVtYWlsIiwiaGFuZGxlQmVmb3JlTGlmdCIsIlVSTFNlYXJjaFBhcmFtcyIsInNlYXJjaCIsImZsdXNoIiwiaGFzIiwib25CZWZvcmVMaWZ0Il0sInNvdXJjZVJvb3QiOiIifQ==
|
|
9651
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNELE87Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNGdUQ7QUFDMUI7QUFDaUQ7QUFDTTtBQUNyQztBQUNwQjtBQUM0QztBQVE1QztBQUVwQixNQUFNb0IsV0FBVyxHQUFHLGFBQWE7QUFDakMsTUFBTUMsWUFBWSxHQUFHLGNBQWM7QUFDbkMsTUFBTUMsZUFBZSxHQUFHLGlCQUFpQjtBQUN6QyxNQUFNQyxTQUFTLEdBQUcsV0FBVztBQUM3QixNQUFNQyxhQUFhLEdBQUcsZUFBZTtBQUNyQyxNQUFNQyxhQUFhLEdBQUcsZUFBZTtBQUNyQyxNQUFNQyxXQUFXLEdBQUcsYUFBYTs7QUFFeEM7QUFDTyxNQUFNQyxlQUFlLEdBQUcsWUFBWTtBQUNwQyxNQUFNQyxZQUFZLEdBQUcsY0FBYztBQUNuQyxNQUFNQyxtQkFBbUIsR0FBRyxxQkFBcUI7QUFDakQsTUFBTUMsa0JBQWtCLEdBQUcsb0JBQW9COztBQUV0RDtBQUNPLE1BQU1DLHVCQUF1QixHQUFHLHlCQUF5QjtBQUN6RCxNQUFNQyxhQUFhLEdBQUcsZUFBZTtBQUNyQyxNQUFNQyxZQUFZLEdBQUcsY0FBYztBQUNuQyxNQUFNQyxjQUFjLEdBQUcsZ0JBQWdCO0FBQ3ZDLE1BQU1DLHNCQUFzQixHQUFHLHdCQUF3QjtBQUN2RCxNQUFNQyxhQUFhLEdBQUcsZUFBZTtBQUNyQyxNQUFNQyxlQUFlLEdBQUcsaUJBQWlCO0FBQ3pDLE1BQU1DLGFBQWEsR0FBRyxlQUFlO0FBQ3JDLE1BQU1DLG1CQUFtQixHQUFHLHFCQUFxQjtBQUNqRCxNQUFNQyxvQkFBb0IsR0FBRyxzQkFBc0I7QUFDbkQsTUFBTUMsMEJBQTBCLEdBQUcsNEJBQTRCO0FBQy9ELE1BQU1DLHdCQUF3QixHQUFHLDBCQUEwQjtBQUMzRCxNQUFNQyxrQkFBa0IsR0FBRyxvQkFBb0I7QUFDL0MsTUFBTUMsdUJBQXVCLEdBQUcseUJBQXlCO0FBQ3pELE1BQU1DLG9CQUFvQixHQUFHO0VBQ2xDQyxLQUFLLEVBQUUsZ0JBQWdCO0VBQ3ZCQyxTQUFTLEVBQUUscUJBQXFCO0VBQ2hDQyxRQUFRLEVBQUUsb0JBQW9CO0VBQzlCQyxPQUFPLEVBQUUsa0JBQWtCO0VBQzNCQyxrQkFBa0IsRUFBRSxxQkFBcUI7RUFDekNDLGNBQWMsRUFBRTtBQUNsQixDQUFDO0FBQ00sTUFBTUMsK0JBQStCLEdBQzFDLGlDQUFpQzs7QUFFbkM7QUFDTyxNQUFNQyx5QkFBeUIsR0FBRywyQkFBMkI7QUFDN0QsTUFBTUMsd0JBQXdCLEdBQUcsMEJBQTBCO0FBQzNELE1BQU1DLGtCQUFrQixHQUFHLG9CQUFvQjtBQUMvQyxNQUFNQyxRQUFRLEdBQUcsVUFBVTs7QUFFbEM7QUFDTyxNQUFNQyxVQUFVLEdBQUcsWUFBWTtBQUMvQixNQUFNQyx3QkFBd0IsR0FBRywwQkFBMEI7QUFDM0QsTUFBTUMsMEJBQTBCLEdBQUcsNEJBQTRCO0FBQy9ELE1BQU1DLHdCQUF3QixHQUFHLDBCQUEwQjtBQUUzRCxNQUFNQyxXQUFXLEdBQUdBLENBQUEsS0FBT0MsUUFBUSxJQUFLO0VBQzdDQSxRQUFRLENBQUM3RCwyRkFBWSxDQUFDZ0MsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMxQyxDQUFDO0FBRU0sTUFBTThCLFVBQVUsR0FBR0EsQ0FBQSxLQUFPRCxRQUFRLElBQUs7RUFDNUNBLFFBQVEsQ0FBQzdELDJGQUFZLENBQUNtQixXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3pDLENBQUM7QUFFTSxNQUFNNEMsV0FBVyxHQUFHQSxDQUFBLEtBQU9GLFFBQVEsSUFBSztFQUM3Q0EsUUFBUSxDQUFDN0QsMkZBQVksQ0FBQ29CLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDMUMsQ0FBQztBQUVNLE1BQU00QyxVQUFVLEdBQUdBLENBQUEsS0FBT0gsUUFBUSxJQUFLO0VBQzVDQSxRQUFRLENBQUM3RCwyRkFBWSxDQUFDcUIsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM3QyxDQUFDO0FBRU0sTUFBTTRDLGVBQWUsR0FBR0EsQ0FBQ0MsTUFBTSxFQUFFQyxJQUFJLEtBQU1OLFFBQVEsSUFBSztFQUM3REEsUUFBUSxDQUFDN0QsMkZBQVksQ0FBQ3NCLFNBQVMsQ0FBQyxDQUFDO0lBQUU0QyxNQUFNO0lBQUVDO0VBQUssQ0FBQyxDQUFDLENBQUM7QUFDckQsQ0FBQzs7QUFFRDtBQUNPLE1BQU1DLGVBQWUsR0FBRyxpQkFBaUI7QUFDekMsTUFBTUMsd0JBQXdCLEdBQUcsMEJBQTBCO0FBQzNELE1BQU1DLHNCQUFzQixHQUFHLHdCQUF3QjtBQUN2RCxNQUFNQywwQkFBMEIsR0FBRyw0QkFBNEI7QUFDL0QsTUFBTUMsdUJBQXVCLEdBQUcseUJBQXlCO0FBQ3pELE1BQU1DLG9CQUFvQixHQUFHLHNCQUFzQjtBQUNuRCxNQUFNQyxvQkFBb0IsR0FBRyxzQkFBc0I7QUFDbkQsTUFBTUMsdUJBQXVCLEdBQUcseUJBQXlCOztBQUVoRTtBQUNPLE1BQU1DLFlBQVksR0FBSUMsTUFBTSxJQUFNaEIsUUFBUSxJQUFLO0VBQ3BEQSxRQUFRLENBQUM3RCwyRkFBWSxDQUFDd0IsYUFBYSxDQUFDLENBQUNxRCxNQUFNLENBQUMsQ0FBQztBQUMvQyxDQUFDO0FBRU0sTUFBTUMsVUFBVSxHQUFJQyxJQUFJLElBQU1sQixRQUFRLElBQUs7RUFDaERBLFFBQVEsQ0FBQzdELDJGQUFZLENBQUN5QixXQUFXLENBQUMsQ0FBQ3NELElBQUksQ0FBQyxDQUFDO0FBQzNDLENBQUM7O0FBRUQ7QUFDQSxNQUFNQyxXQUFXLEdBQUdBLENBQUNDLFNBQVMsRUFBRUMsVUFBVSxLQUFLO0VBQzdDLE1BQU1MLE1BQU0sR0FBRyxFQUFFO0VBQ2pCLElBQUlJLFNBQVMsQ0FBQ2IsZUFBZSxFQUFFO0lBQzdCUyxNQUFNLENBQUNNLElBQUksYUFBQUMsTUFBQSxDQUFhSCxTQUFTLENBQUNJLEtBQUssUUFBQUQsTUFBQSxDQUFLSCxTQUFTLENBQUNLLEtBQUssQ0FBRSxDQUFDO0VBQ2hFO0VBQ0EsSUFDRUwsU0FBUyxDQUFDWix3QkFBd0IsSUFDbENZLFNBQVMsQ0FBQ1osd0JBQXdCLENBQUNrQixNQUFNLEdBQUcsQ0FBQyxFQUM3QztJQUNBLE1BQU1DLFVBQVUsR0FDZE4sVUFBVSxLQUFLaEUsa0RBQUksQ0FBQ3VFLE1BQU0sR0FDdEIsMkJBQTJCLEdBQzNCLG1CQUFtQjtJQUN6QlosTUFBTSxDQUFDTSxJQUFJLElBQUFDLE1BQUEsQ0FDTkksVUFBVSxRQUFBSixNQUFBLENBQUtILFNBQVMsQ0FBQ1osd0JBQXdCLENBQUNxQixJQUFJLENBQUMsSUFBSSxDQUFDLENBQ2pFLENBQUM7RUFDSDtFQUNBLElBQ0VULFNBQVMsQ0FBQ1gsc0JBQXNCLElBQ2hDVyxTQUFTLENBQUNYLHNCQUFzQixDQUFDaUIsTUFBTSxHQUFHLENBQUMsRUFDM0M7SUFDQSxNQUFNQyxVQUFVLEdBQ2ROLFVBQVUsS0FBS2hFLGtEQUFJLENBQUN1RSxNQUFNLEdBQUcsaUJBQWlCLEdBQUcsZ0JBQWdCO0lBQ25FWixNQUFNLENBQUNNLElBQUksSUFBQUMsTUFBQSxDQUNOSSxVQUFVLFFBQUFKLE1BQUEsQ0FBS0gsU0FBUyxDQUFDWCxzQkFBc0IsQ0FBQ29CLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FDL0QsQ0FBQztFQUNIO0VBQ0EsSUFBSVQsU0FBUyxDQUFDViwwQkFBMEIsRUFBRTtJQUN4QyxNQUFNaUIsVUFBVSxHQUNkTixVQUFVLEtBQUtoRSxrREFBSSxDQUFDdUUsTUFBTSxHQUFHLHFCQUFxQixHQUFHLGFBQWE7SUFDcEVaLE1BQU0sQ0FBQ00sSUFBSSxJQUFBQyxNQUFBLENBQUlJLFVBQVUsUUFBQUosTUFBQSxDQUFLSCxTQUFTLENBQUNWLDBCQUEwQixDQUFFLENBQUM7RUFDdkU7RUFDQSxJQUFJVSxTQUFTLENBQUNULHVCQUF1QixFQUFFO0lBQ3JDLE1BQU1nQixVQUFVLEdBQ2ROLFVBQVUsS0FBS2hFLGtEQUFJLENBQUN1RSxNQUFNLEdBQUcsc0JBQXNCLEdBQUcsY0FBYztJQUN0RVosTUFBTSxDQUFDTSxJQUFJLElBQUFDLE1BQUEsQ0FBSUksVUFBVSxRQUFBSixNQUFBLENBQUtILFNBQVMsQ0FBQ1QsdUJBQXVCLENBQUUsQ0FBQztFQUNwRTtFQUNBLElBQUlTLFNBQVMsQ0FBQ1Asb0JBQW9CLEVBQUU7SUFDbEMsTUFBTWMsVUFBVSxHQUFHTixVQUFVLEtBQUtoRSxrREFBSSxDQUFDdUUsTUFBTSxHQUFHLFFBQVEsR0FBRyxjQUFjO0lBQ3pFWixNQUFNLENBQUNNLElBQUksSUFBQUMsTUFBQSxDQUNOSSxVQUFVLEVBQUFKLE1BQUEsQ0FBR0gsU0FBUyxDQUFDUCxvQkFBb0IsS0FBSyxNQUFNLEdBQUcsS0FBSyxHQUFHLElBQUksQ0FDMUUsQ0FBQztFQUNIO0VBQ0EsSUFBSU8sU0FBUyxDQUFDUixvQkFBb0IsRUFBRTtJQUNsQyxNQUFNZSxVQUFVLEdBQ2ROLFVBQVUsS0FBS2hFLGtEQUFJLENBQUN1RSxNQUFNLEdBQUcsb0JBQW9CLEdBQUcsWUFBWTtJQUNsRVosTUFBTSxDQUFDTSxJQUFJLElBQUFDLE1BQUEsQ0FBSUksVUFBVSxRQUFBSixNQUFBLENBQUtILFNBQVMsQ0FBQ1Isb0JBQW9CLENBQUUsQ0FBQztFQUNqRTtFQUNBLElBQUlRLFNBQVMsQ0FBQ04sdUJBQXVCLEVBQUU7SUFDckNFLE1BQU0sQ0FBQ00sSUFBSSxZQUFBQyxNQUFBLENBQVlILFNBQVMsQ0FBQ04sdUJBQXVCLENBQUUsQ0FBQztFQUM3RDtFQUNBLE9BQU9FLE1BQU07QUFDZixDQUFDO0FBRUQsTUFBTWMsZ0JBQWdCLEdBQUlDLFNBQVMsSUFBTUEsU0FBUyxLQUFLLEtBQUssR0FBRyxHQUFHLEdBQUcsR0FBSTs7QUFFekU7QUFDQSxNQUFNQyxrQkFBa0IsR0FBR0EsQ0FBQ0MsT0FBTyxFQUFFQyxRQUFRLEtBQU1sQyxRQUFRLElBQUs7RUFDOURBLFFBQVEsQ0FBQzdELDJGQUFZLENBQUN1QixhQUFhLENBQUMsQ0FBQ3VFLE9BQU8sQ0FBQyxDQUFDO0VBQzlDLElBQUlDLFFBQVEsRUFBRUEsUUFBUSxDQUFDLENBQUM7QUFDMUIsQ0FBQztBQUVELE1BQU1DLHNCQUFzQixHQUFHQSxDQUFDQyxHQUFHLEVBQUVDLEdBQUcsS0FBTXJDLFFBQVEsSUFBSztFQUN6REEsUUFBUSxDQUFDOUQsK0ZBQWdCLENBQUNrRyxHQUFHLEVBQUVDLEdBQUcsRUFBRUwsa0JBQWtCLENBQUMsQ0FBQztBQUMxRCxDQUFDO0FBRUQsTUFBTU0sdUJBQXVCLEdBQUlDLFFBQVEsSUFBTXZDLFFBQVEsSUFBSztFQUMxRCxNQUFNd0MsSUFBSSxHQUFHRCxRQUFRLENBQUNFLE1BQU07RUFDNUIsSUFBSUMsR0FBRztFQUNQMUMsUUFBUSxDQUFDeEQsMEZBQVcsQ0FBQyxDQUFDLENBQUM7RUFDdkIsUUFBUWdHLElBQUk7SUFDVixLQUFLdkYseURBQVcsQ0FBQyxLQUFLLENBQUM7TUFDckJ5RixHQUFHLEdBQUc3RixnREFBTSxDQUFDLHVCQUF1QixDQUFDO01BQ3JDO0lBQ0YsS0FBS0kseURBQVcsQ0FBQyxLQUFLLENBQUM7TUFDckJ5RixHQUFHLEdBQUc3RixnREFBTSxDQUFDLHdCQUF3QixDQUFDO01BQ3RDO0lBQ0YsS0FBS0kseURBQVcsQ0FBQyxLQUFLLENBQUM7TUFDckJ5RixHQUFHLEdBQUcsRUFBRTtNQUNSRSxNQUFNLENBQUNDLE9BQU8sQ0FBQ04sUUFBUSxDQUFDTyxNQUFNLENBQUMsQ0FBQ0MsT0FBTyxDQUFDQyxJQUFBLElBQWtCO1FBQUEsSUFBakIsQ0FBQ0MsR0FBRyxFQUFFQyxLQUFLLENBQUMsR0FBQUYsSUFBQTtRQUNuRCxJQUFJRyxNQUFNLENBQUNDLEtBQUssQ0FBQ0gsR0FBRyxDQUFDLEVBQUU7VUFDckJQLEdBQUcsTUFBQW5CLE1BQUEsQ0FBTW1CLEdBQUcsT0FBQW5CLE1BQUEsQ0FBSTBCLEdBQUcsT0FBSTtRQUN6QjtRQUVBUCxHQUFHLE1BQUFuQixNQUFBLENBQU1tQixHQUFHLE9BQUFuQixNQUFBLENBQUkyQixLQUFLLFVBQU87TUFDOUIsQ0FBQyxDQUFDO01BQ0Y7SUFDRixLQUFLakcseURBQVcsQ0FBQyxLQUFLLENBQUM7TUFDckJ5RixHQUFHLEdBQUc3RixnREFBTSxDQUFDLHFCQUFxQixDQUFDO01BQ25DO0lBQ0Y7TUFDRTZGLEdBQUcsR0FBR0gsUUFBUSxDQUFDYyxVQUFVO0VBQzdCO0VBRUFyRCxRQUFRLENBQUNnQyxrQkFBa0IsQ0FBQztJQUFFc0IsS0FBSyxFQUFFekcsZ0RBQU0sQ0FBQyxjQUFjLENBQUM7SUFBRTBHLElBQUksRUFBRWI7RUFBSSxDQUFDLENBQUMsQ0FBQztBQUM1RSxDQUFDOztBQUVEO0FBQ08sTUFBTWMsYUFBYSxHQUN4QkMsS0FBQTtFQUFBLElBQUM7SUFDQ0MsSUFBSSxHQUFHdkcsd0RBQVU7SUFDakJ3RyxPQUFPLEdBQUczRyxvRUFBc0I7SUFDaENnRSxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQ1hFLElBQUksR0FBRyxDQUFDO0VBQ1YsQ0FBQyxHQUFBdUMsS0FBQTtFQUFBLE9BQ0QsT0FBT3pELFFBQVEsRUFBRTRELFFBQVEsRUFBQUMsS0FBQSxLQUFxQjtJQUFBLElBQW5CO01BQUVDO0lBQVcsQ0FBQyxHQUFBRCxLQUFBO0lBQ3ZDLE1BQU07TUFDSkUsV0FBVyxFQUFFO1FBQUUxRDtNQUFPO0lBQ3hCLENBQUMsR0FBR3VELFFBQVEsQ0FBQyxDQUFDO0lBRWQsTUFBTUksV0FBVyxHQUFHLE1BQU1qSCxpRUFBb0IsQ0FBQyxDQUFDO0lBRWhELElBQUksQ0FBQ2lILFdBQVcsRUFBRSxPQUFPbEgsOERBQWlCLENBQUMsQ0FBQztJQUU1Q2tELFFBQVEsQ0FBQ3pELDJGQUFZLENBQUMsQ0FBQyxDQUFDO0lBQ3hCLE1BQU0wSCxNQUFNLEdBQUc7TUFDYkMsWUFBWSxFQUFFRixXQUFXO01BQ3pCRyxLQUFLLEVBQUUsVUFBVTtNQUNqQixVQUFVLEVBQUUsQ0FBQyxjQUFjLENBQUM7TUFDNUJDLFNBQVMsRUFBRSxNQUFNO01BQ2pCVixJQUFJO01BQ0pXLFFBQVEsRUFBRVY7SUFDWixDQUFDO0lBRUQsSUFBSWYsTUFBTSxDQUFDMEIsSUFBSSxDQUFDdEQsTUFBTSxDQUFDLENBQUNVLE1BQU0sR0FBRyxDQUFDLEVBQUU7TUFDbEMsTUFBTTZDLE9BQU8sR0FBR3BELFdBQVcsQ0FBQ0gsTUFBTSxFQUFFM0Qsa0RBQUksQ0FBQ3VFLE1BQU0sQ0FBQztNQUNoRHFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEdBQUdBLE1BQU0sQ0FBQyxVQUFVLENBQUMsRUFBRSxHQUFHTSxPQUFPLENBQUM7SUFDMUQ7SUFDQSxJQUFJM0IsTUFBTSxDQUFDMEIsSUFBSSxDQUFDcEQsSUFBSSxDQUFDLENBQUNRLE1BQU0sR0FBRyxDQUFDLEVBQUU7TUFDaEN1QyxNQUFNLENBQUNFLEtBQUssTUFBQTVDLE1BQUEsQ0FBTU8sZ0JBQWdCLENBQUNaLElBQUksQ0FBQ2EsU0FBUyxDQUFDLEVBQUFSLE1BQUEsQ0FBR0wsSUFBSSxDQUFDc0QsSUFBSSxDQUFFO0lBQ2xFO0lBRUEsT0FBT25JLHlGQUFVLENBQ2YsSUFBSSxFQUNKRiwyRkFBWSxDQUFDMEIsZUFBZSxDQUFDLEtBQUEwRCxNQUFBLENBQzFCdUMsVUFBVSxzQkFBQXZDLE1BQUEsQ0FBbUJsQixNQUFNLENBQUNvRSxFQUFFLGlCQUN6Q3RDLHNCQUFzQixFQUN0QjtNQUFFbkIsTUFBTTtNQUFFRTtJQUFLLENBQ2pCLENBQUMsQ0FBQytDLE1BQU0sQ0FBQyxDQUFDakUsUUFBUSxDQUFDLENBQ2hCMEUsSUFBSSxDQUFFekMsT0FBTyxJQUFLO01BQ2pCakMsUUFBUSxDQUFDeEQsMEZBQVcsQ0FBQyxDQUFDLENBQUM7TUFDdkIsT0FBT3lGLE9BQU87SUFDaEIsQ0FBQyxDQUFDLENBQ0QwQyxLQUFLLENBQUVDLENBQUMsSUFBSztNQUNaNUUsUUFBUSxDQUFDeEQsMEZBQVcsQ0FBQyxDQUFDLENBQUM7TUFDdkIsT0FBT29JLENBQUM7SUFDVixDQUFDLENBQUM7RUFDTixDQUFDO0FBQUE7QUFFSSxNQUFNQyxnQkFBZ0IsR0FBSUMsT0FBTyxJQUFLLE1BQU85RSxRQUFRLElBQzFEQSxRQUFRLENBQUM3RCwyRkFBWSxDQUFDNEIsbUJBQW1CLENBQUMsQ0FBQytHLE9BQU8sQ0FBQyxDQUFDOztBQUV0RDtBQUNPLE1BQU1DLE9BQU8sR0FBSXpFLElBQUksSUFBTU4sUUFBUSxJQUN4Q0EsUUFBUSxDQUFDN0QsMkZBQVksQ0FBQ3VELFFBQVEsQ0FBQyxDQUFDWSxJQUFJLENBQUMsQ0FBQzs7QUFFeEM7O0FBRU8sTUFBTTBFLGNBQWMsR0FDekJDLEtBQUE7RUFBQSxJQUFDO0lBQ0N2QixJQUFJLEdBQUd2Ryx3REFBVTtJQUNqQndHLE9BQU8sR0FBRzNHLG9FQUFzQjtJQUNoQ2dFLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDWEUsSUFBSSxHQUFHLENBQUM7RUFDVixDQUFDLEdBQUErRCxLQUFBO0VBQUEsT0FDRCxPQUFPakYsUUFBUSxFQUFFNEQsUUFBUSxFQUFBc0IsS0FBQSxLQUFxQjtJQUFBLElBQW5CO01BQUVwQjtJQUFXLENBQUMsR0FBQW9CLEtBQUE7SUFDdkMsTUFBTTtNQUNKbkIsV0FBVyxFQUFFO1FBQUUxRCxNQUFNO1FBQUVDO01BQUs7SUFDOUIsQ0FBQyxHQUFHc0QsUUFBUSxDQUFDLENBQUM7SUFDZCxNQUFNO01BQUV1QjtJQUFZLENBQUMsR0FBRzdFLElBQUk7SUFDNUIsSUFBSSxDQUFDRCxNQUFNLEVBQUUsT0FBTytFLE9BQU8sQ0FBQ0MsTUFBTSxDQUFDLENBQUM7SUFDcEMsTUFBTXJCLFdBQVcsR0FBRyxNQUFNakgsaUVBQW9CLENBQUMsQ0FBQztJQUVoRCxJQUFJLENBQUNpSCxXQUFXLEVBQUUsT0FBT2xILDhEQUFpQixDQUFDLENBQUM7SUFFNUMsTUFBTXdJLE1BQU0sR0FBRyxDQUNiLFVBQVUsRUFDVix3QkFBd0IsRUFDeEIsdUJBQXVCLEVBQ3ZCLG1CQUFtQixFQUNuQixVQUFVLEVBQ1YsYUFBYSxFQUNiLGtCQUFrQixFQUNsQixpQkFBaUIsRUFDakIsY0FBYyxFQUNkLFlBQVksQ0FDYjtJQUNEdEYsUUFBUSxDQUFDekQsMkZBQVksQ0FBQyxDQUFDLENBQUM7SUFDeEIsTUFBTTBILE1BQU0sR0FBRztNQUNiQyxZQUFZLEVBQUVGLFdBQVc7TUFDekIsVUFBVSxFQUFFLENBQUMsY0FBYyxxQkFBQXpDLE1BQUEsQ0FBcUI0RCxXQUFXLENBQUNWLEVBQUUsRUFBRztNQUNqRWMsTUFBTSxFQUFFLDhDQUE4QztNQUN0RHBCLEtBQUssRUFBRSxLQUFLO01BQ1ptQixNQUFNLEVBQUVBLE1BQU0sQ0FBQ3pELElBQUksQ0FBQyxHQUFHLENBQUM7TUFDeEJ1QyxTQUFTLEVBQUUscUJBQXFCO01BQ2hDVixJQUFJO01BQ0pXLFFBQVEsRUFBRVY7SUFDWixDQUFDO0lBQ0QsSUFBSWYsTUFBTSxDQUFDMEIsSUFBSSxDQUFDdEQsTUFBTSxDQUFDLENBQUNVLE1BQU0sR0FBRyxDQUFDLEVBQUU7TUFDbEMsTUFBTTZDLE9BQU8sR0FBR3BELFdBQVcsQ0FBQ0gsTUFBTSxFQUFFM0Qsa0RBQUksQ0FBQ21JLE9BQU8sQ0FBQztNQUNqRHZCLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEdBQUdBLE1BQU0sQ0FBQyxVQUFVLENBQUMsRUFBRSxHQUFHTSxPQUFPLENBQUM7SUFDMUQ7SUFDQSxJQUFJM0IsTUFBTSxDQUFDMEIsSUFBSSxDQUFDcEQsSUFBSSxDQUFDLENBQUNRLE1BQU0sR0FBRyxDQUFDLEVBQUU7TUFDaEN1QyxNQUFNLENBQUNFLEtBQUssTUFBQTVDLE1BQUEsQ0FBTU8sZ0JBQWdCLENBQUNaLElBQUksQ0FBQ2EsU0FBUyxDQUFDLEVBQUFSLE1BQUEsQ0FBR0wsSUFBSSxDQUFDc0QsSUFBSSxDQUFFO0lBQ2xFO0lBQ0EsT0FBT25JLHlGQUFVLENBQ2YsSUFBSSxFQUNKRiwyRkFBWSxDQUFDOEIsdUJBQXVCLENBQUMsS0FBQXNELE1BQUEsQ0FDbEN1QyxVQUFVLHNCQUFBdkMsTUFBQSxDQUFtQmxCLE1BQU0sQ0FBQ29FLEVBQUUsNkJBQ3pDdEMsc0JBQ0YsQ0FBQyxDQUFDOEIsTUFBTSxDQUFDLENBQUNqRSxRQUFRLENBQUMsQ0FDaEIwRSxJQUFJLENBQUMsTUFBTTtNQUNWMUUsUUFBUSxDQUFDeEQsMEZBQVcsQ0FBQyxDQUFDLENBQUM7SUFDekIsQ0FBQyxDQUFDLENBQ0RtSSxLQUFLLENBQUVDLENBQUMsSUFBSztNQUNaNUUsUUFBUSxDQUFDeEQsMEZBQVcsQ0FBQyxDQUFDLENBQUM7TUFDdkIsT0FBT29JLENBQUM7SUFDVixDQUFDLENBQUM7RUFDTixDQUFDO0FBQUE7QUFFSSxNQUFNYSxpQkFBaUIsR0FDNUJDLEtBQUE7RUFBQSxJQUFDO0lBQ0NaLE9BQU87SUFDUHBCLElBQUksR0FBR3ZHLHdEQUFVO0lBQ2pCd0csT0FBTyxHQUFHM0csb0VBQXNCO0lBQ2hDZ0UsTUFBTTtJQUNORTtFQUNGLENBQUMsR0FBQXdFLEtBQUE7RUFBQSxPQUNELE9BQU8xRixRQUFRLEVBQUU0RCxRQUFRLEVBQUErQixLQUFBLEtBQXFCO0lBQUEsSUFBbkI7TUFBRTdCO0lBQVcsQ0FBQyxHQUFBNkIsS0FBQTtJQUN2QzNGLFFBQVEsQ0FBQ3pELDJGQUFZLENBQUMsQ0FBQyxDQUFDO0lBQ3hCLE1BQU15SCxXQUFXLEdBQUcsTUFBTWpILGlFQUFvQixDQUFDLENBQUM7SUFFaEQsSUFBSSxDQUFDaUgsV0FBVyxFQUFFLE9BQU9sSCw4REFBaUIsQ0FBQyxDQUFDO0lBRTVDLE1BQU1tSCxNQUFNLEdBQUc7TUFDYkMsWUFBWSxFQUFFRixXQUFXO01BQ3pCLFVBQVUsRUFBRSxFQUFFO01BQ2RzQixNQUFNLEVBQUUsWUFBWTtNQUNwQkMsTUFBTSxFQUNKLGdKQUFnSjtNQUNsSnBCLEtBQUssRUFBRSxLQUFLO01BQ1pDLFNBQVMsRUFBRSxxQkFBcUI7TUFDaENWLElBQUk7TUFDSlcsUUFBUSxFQUFFVjtJQUNaLENBQUM7SUFDRCxJQUFJZixNQUFNLENBQUMwQixJQUFJLENBQUN0RCxNQUFNLENBQUMsQ0FBQ1UsTUFBTSxHQUFHLENBQUMsRUFBRTtNQUNsQyxNQUFNNkMsT0FBTyxHQUFHcEQsV0FBVyxDQUFDSCxNQUFNLEVBQUUzRCxrREFBSSxDQUFDbUksT0FBTyxDQUFDO01BQ2pEdkIsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBR0EsTUFBTSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEdBQUdNLE9BQU8sQ0FBQztJQUMxRDtJQUNBLElBQUkzQixNQUFNLENBQUMwQixJQUFJLENBQUNwRCxJQUFJLENBQUMsQ0FBQ1EsTUFBTSxHQUFHLENBQUMsRUFBRTtNQUNoQ3VDLE1BQU0sQ0FBQ0UsS0FBSyxNQUFBNUMsTUFBQSxDQUFNTyxnQkFBZ0IsQ0FBQ1osSUFBSSxDQUFDYSxTQUFTLENBQUMsRUFBQVIsTUFBQSxDQUFHTCxJQUFJLENBQUNzRCxJQUFJLENBQUU7SUFDbEU7SUFDQSxPQUFPbkkseUZBQVUsQ0FDZixJQUFJLEVBQ0pGLDJGQUFZLENBQUN1QyxvQkFBb0IsQ0FBQyxLQUFBNkMsTUFBQSxDQUMvQnVDLFVBQVUsaUNBQUF2QyxNQUFBLENBQThCdUQsT0FBTyxlQUNsRDNDLHNCQUNGLENBQUMsQ0FBQzhCLE1BQU0sQ0FBQyxDQUFDakUsUUFBUSxDQUFDLENBQ2hCMEUsSUFBSSxDQUFFekMsT0FBTyxJQUFLO01BQ2pCakMsUUFBUSxDQUFDeEQsMEZBQVcsQ0FBQyxDQUFDLENBQUM7TUFDdkIsT0FBT3lGLE9BQU87SUFDaEIsQ0FBQyxDQUFDLENBQ0QwQyxLQUFLLENBQUVDLENBQUMsSUFBSztNQUNaNUUsUUFBUSxDQUFDeEQsMEZBQVcsQ0FBQyxDQUFDLENBQUM7TUFDdkJ3RCxRQUFRLENBQUM3RCwyRkFBWSxDQUFDd0MsMEJBQTBCLENBQUMsQ0FBQztNQUNsRCxPQUFPaUcsQ0FBQztJQUNWLENBQUMsQ0FBQztFQUNOLENBQUM7QUFBQTtBQUVJLE1BQU1nQixrQkFBa0IsR0FDNUJDLE1BQU0sSUFDUCxPQUFPN0YsUUFBUSxFQUFFNEQsUUFBUSxFQUFBa0MsS0FBQSxLQUFxQjtFQUFBLElBQW5CO0lBQUVoQztFQUFXLENBQUMsR0FBQWdDLEtBQUE7RUFDdkMsTUFBTTlCLFdBQVcsR0FBRyxNQUFNakgsaUVBQW9CLENBQUMsQ0FBQztFQUVoRCxJQUFJLENBQUNpSCxXQUFXLEVBQUUsT0FBT2xILDhEQUFpQixDQUFDLENBQUM7RUFFNUMsTUFBTTtJQUFFaUo7RUFBUSxDQUFDLEdBQUdGLE1BQU07RUFFMUI3RixRQUFRLENBQUN6RCwyRkFBWSxDQUFDLENBQUMsQ0FBQztFQUV4QixNQUFNdUksT0FBTyxHQUFHZSxNQUFNLENBQUMxQixLQUFLLEdBQUcwQixNQUFNLENBQUMxQixLQUFLLENBQUNNLEVBQUUsR0FBR29CLE1BQU0sQ0FBQ0csUUFBUTtFQUVoRSxNQUFNL0IsTUFBTSxHQUFHO0lBQ2JDLFlBQVksRUFBRUY7RUFDaEIsQ0FBQztFQUVELE9BQU8xSCx5RkFBVSxDQUNmLElBQUksRUFDSkgsMkZBQVksQ0FBQ3NDLG1CQUFtQixDQUFDLEtBQUE4QyxNQUFBLENBQzlCdUMsVUFBVSxpQ0FBQXZDLE1BQUEsQ0FBOEJ1RCxPQUFPLGVBQUF2RCxNQUFBLENBQVlzRSxNQUFNLENBQUNwQixFQUFFLHlCQUN2RTtJQUFFc0I7RUFBUSxDQUFDLEVBQ1g1RCxzQkFDRixDQUFDLENBQUM4QixNQUFNLENBQUMsQ0FBQ2pFLFFBQVEsQ0FBQyxDQUNoQjBFLElBQUksQ0FBQyxNQUFNO0lBQ1YxRSxRQUFRLENBQUN4RCwwRkFBVyxDQUFDLENBQUMsQ0FBQztFQUN6QixDQUFDLENBQUMsQ0FDRG1JLEtBQUssQ0FBRUMsQ0FBQyxJQUFLO0lBQ1o1RSxRQUFRLENBQUN4RCwwRkFBVyxDQUFDLENBQUMsQ0FBQztJQUN2QixPQUFPb0ksQ0FBQztFQUNWLENBQUMsQ0FBQztBQUNOLENBQUM7QUFFSSxNQUFNcUIsWUFBWSxHQUN2QkMsS0FBQTtFQUFBLElBQUM7SUFBRUw7RUFBTyxDQUFDLEdBQUFLLEtBQUE7RUFBQTtJQUNYO0lBQ0EsT0FBT2xHLFFBQVEsRUFBRTRELFFBQVEsRUFBQXVDLE1BQUEsS0FBcUI7TUFBQSxJQUFuQjtRQUFFckM7TUFBVyxDQUFDLEdBQUFxQyxNQUFBO01BQ3ZDLE1BQU1uQyxXQUFXLEdBQUcsTUFBTWpILGlFQUFvQixDQUFDLENBQUM7TUFFaEQsSUFBSSxDQUFDaUgsV0FBVyxFQUFFLE9BQU9sSCw4REFBaUIsQ0FBQyxDQUFDO01BRTVDa0QsUUFBUSxDQUFDekQsMkZBQVksQ0FBQyxDQUFDLENBQUM7TUFFeEIsTUFBTXVJLE9BQU8sR0FBR2UsTUFBTSxDQUFDMUIsS0FBSyxHQUFHMEIsTUFBTSxDQUFDMUIsS0FBSyxDQUFDTSxFQUFFLEdBQUdvQixNQUFNLENBQUNHLFFBQVE7TUFFaEUsTUFBTS9CLE1BQU0sR0FBRztRQUNiQyxZQUFZLEVBQUVGLFdBQVc7UUFDekJ1QixNQUFNLEVBQUUsNkJBQTZCO1FBQ3JDRCxNQUFNLEVBQUU7TUFDVixDQUFDO01BRUQsT0FBT2xKLDRGQUFhLENBQ2xCLElBQUksRUFDSkQsMkZBQVksQ0FBQ3FDLGFBQWEsQ0FBQyxLQUFBK0MsTUFBQSxDQUN4QnVDLFVBQVUsaUNBQUF2QyxNQUFBLENBQThCdUQsT0FBTyxlQUFBdkQsTUFBQSxDQUFZc0UsTUFBTSxDQUFDcEIsRUFBRSxjQUN2RSxDQUFDLENBQUMsRUFDRnRDLHNCQUNGLENBQUMsQ0FBQzhCLE1BQU0sQ0FBQyxDQUFDakUsUUFBUSxDQUFDLENBQ2hCMEUsSUFBSSxDQUFFekMsT0FBTyxJQUFLO1FBQ2pCakMsUUFBUSxDQUFDeEQsMEZBQVcsQ0FBQyxDQUFDLENBQUM7UUFDdkIsT0FBT3lGLE9BQU87TUFDaEIsQ0FBQyxDQUFDLENBQ0QwQyxLQUFLLENBQUVDLENBQUMsSUFBSztRQUNaNUUsUUFBUSxDQUFDeEQsMEZBQVcsQ0FBQyxDQUFDLENBQUM7UUFDdkIsT0FBT29JLENBQUM7TUFDVixDQUFDLENBQUM7SUFDTjtFQUFDO0FBQUE7QUFFSSxNQUFNd0IsaUJBQWlCLEdBQzVCQyxNQUFBO0VBQUEsSUFBQztJQUFFQztFQUFRLENBQUMsR0FBQUQsTUFBQTtFQUFBLE9BQ1osTUFBT3JHLFFBQVEsSUFBSztJQUNsQixNQUFNdUcsS0FBSyxHQUFHOUosOENBQU0sQ0FBQ1csaUVBQW1CLENBQUM7SUFDekMsTUFBTW9KLG9CQUFvQixHQUFHRixPQUFPLENBQUNHLEdBQUcsQ0FBRVosTUFBTSxJQUM5Q1UsS0FBSyxDQUFDLE1BQU12RyxRQUFRLENBQUNpRyxZQUFZLENBQUM7TUFBRUo7SUFBTyxDQUFDLENBQUMsQ0FBQyxDQUNoRCxDQUFDO0lBQ0QsT0FBT1QsT0FBTyxDQUFDc0IsR0FBRyxDQUFDLENBQUMsR0FBR0Ysb0JBQW9CLENBQUMsQ0FBQyxDQUMxQzlCLElBQUksQ0FBRXJDLEdBQUcsSUFBSztNQUNiLE1BQU1zRSxxQkFBcUIsR0FBR3RFLEdBQUcsQ0FDOUJyQixNQUFNLENBQUU0RixDQUFDO1FBQUEsSUFBQUMsV0FBQTtRQUFBLFFBQUFBLFdBQUEsR0FBS0QsQ0FBQyxDQUFDckUsUUFBUSxjQUFBc0UsV0FBQSxnQkFBQUEsV0FBQSxHQUFWQSxXQUFBLENBQVlDLGVBQWUsY0FBQUQsV0FBQSx1QkFBM0JBLFdBQUEsQ0FBNkJuRixNQUFNO01BQUEsRUFBQyxDQUNsRCtFLEdBQUcsQ0FBRUcsQ0FBQyxJQUFLQSxDQUFDLENBQUNyRSxRQUFRLENBQUM7TUFDekIsT0FBT29FLHFCQUFxQjtJQUM5QixDQUFDLENBQUMsQ0FDRGhDLEtBQUssQ0FBRUMsQ0FBQyxJQUFLQSxDQUFDLENBQUM7RUFDcEIsQ0FBQztBQUFBOztBQUVIO0FBQ08sTUFBTW1DLDRCQUE0QixHQUN0Q0Msc0JBQXNCLElBQU1oSCxRQUFRLElBQ25DQSxRQUFRLENBQ043RCwyRkFBWSxDQUFDbUQsK0JBQStCLENBQUMsQ0FBQzBILHNCQUFzQixDQUN0RSxDQUFDOztBQUVMOztBQUVPLE1BQU1DLGlCQUFpQixHQUMzQkMsVUFBVSxJQUNYLE9BQU9sSCxRQUFRLEVBQUU0RCxRQUFRLEVBQUF1RCxNQUFBLEtBQXFCO0VBQUEsSUFBbkI7SUFBRXJEO0VBQVcsQ0FBQyxHQUFBcUQsTUFBQTtFQUN2QyxNQUFNO0lBQ0pwRCxXQUFXLEVBQUU7TUFBRTFEO0lBQU87RUFDeEIsQ0FBQyxHQUFHdUQsUUFBUSxDQUFDLENBQUM7RUFFZCxNQUFNSSxXQUFXLEdBQUcsTUFBTWpILGlFQUFvQixDQUFDLENBQUM7RUFFaEQsSUFBSSxDQUFDaUgsV0FBVyxFQUFFLE9BQU9sSCw4REFBaUIsQ0FBQyxDQUFDO0VBRTVDLE1BQU1tSCxNQUFNLEdBQUc7SUFDYlAsSUFBSSxFQUFFLENBQUM7SUFDUFcsUUFBUSxFQUFFbkgsNERBQWM7SUFDeEJxSSxNQUFNLEVBQUUsMkNBQTJDO0lBQ25EckIsWUFBWSxFQUFFRixXQUFXO0lBQ3pCLFVBQVUsRUFBRTtFQUNkLENBQUM7RUFFRCxNQUFNb0QsUUFBUSxNQUFBN0YsTUFBQSxDQUFNdUMsVUFBVSxzQkFBQXZDLE1BQUEsQ0FBbUJsQixNQUFNLENBQUNvRSxFQUFFLGlCQUFBbEQsTUFBQSxDQUFjMkYsVUFBVSw2QkFBMEI7RUFFNUcsT0FBTzdLLHlGQUFVLENBQ2YsSUFBSSxFQUNKRiwyRkFBWSxDQUFDMkMsdUJBQXVCLENBQUMsRUFDckNzSSxRQUFRLEVBQ1JqRixzQkFDRixDQUFDLENBQUM4QixNQUFNLENBQUMsQ0FBQ2pFLFFBQVEsQ0FBQyxDQUFDMEUsSUFBSSxDQUFDLE1BQU07SUFDN0IxRSxRQUFRLENBQUN4RCwwRkFBVyxDQUFDLENBQUMsQ0FBQztFQUN6QixDQUFDLENBQUM7QUFDSixDQUFDO0FBRUksTUFBTTZLLFNBQVMsR0FDcEJBLENBQUNDLFFBQVEsRUFBRXhDLE9BQU8sS0FDbEIsT0FBTzlFLFFBQVEsRUFBRTRELFFBQVEsRUFBQTJELE1BQUEsS0FBcUI7RUFBQSxJQUFuQjtJQUFFekQ7RUFBVyxDQUFDLEdBQUF5RCxNQUFBO0VBQ3ZDLE1BQU12RCxXQUFXLEdBQUcsTUFBTWpILGlFQUFvQixDQUFDLENBQUM7RUFFaEQsSUFBSSxDQUFDaUgsV0FBVyxFQUFFLE9BQU9sSCw4REFBaUIsQ0FBQyxDQUFDO0VBRTVDa0QsUUFBUSxDQUFDekQsMkZBQVksQ0FBQyxDQUFDLENBQUM7RUFFeEIsTUFBTTBILE1BQU0sR0FBRztJQUNiQyxZQUFZLEVBQUVGLFdBQVc7SUFDekJ1QixNQUFNLEVBQ0oseUZBQXlGO0lBQzNGbkIsU0FBUyxFQUNQLDRGQUE0RjtJQUM5RmtCLE1BQU0sRUFDSjtFQUNKLENBQUM7RUFFRCxNQUFNOEIsUUFBUSxNQUFBN0YsTUFBQSxDQUFNdUMsVUFBVSxpQ0FBQXZDLE1BQUEsQ0FBOEJ1RCxPQUFPLGVBQUF2RCxNQUFBLENBQVkrRixRQUFRLENBQUU7RUFFekYsT0FBT2pMLHlGQUFVLENBQ2ZGLDJGQUFZLENBQUNnQyxZQUFZLENBQUMsRUFDMUJoQywyRkFBWSxDQUFDaUMsY0FBYyxDQUFDLEVBQzVCZ0osUUFBUSxFQUNSakYsc0JBQ0YsQ0FBQyxDQUFDOEIsTUFBTSxDQUFDLENBQUNqRSxRQUFRLENBQUMsQ0FBQ3dILE9BQU8sQ0FBQyxNQUFNO0lBQ2hDeEgsUUFBUSxDQUFDeEQsMEZBQVcsQ0FBQyxDQUFDLENBQUM7RUFDekIsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUVILE1BQU1pTCxlQUFlLEdBQUlDLE1BQU0sSUFBSztFQUNsQyxNQUFNQyxnQkFBZ0IsR0FBQUMsYUFBQSxLQUFRRixNQUFNLENBQUU7RUFFdEMsSUFBSSxDQUFDQSxNQUFNLENBQUNHLGdCQUFnQixDQUFDcEQsRUFBRSxFQUFFO0lBQy9Ca0QsZ0JBQWdCLENBQUNFLGdCQUFnQixHQUFHSCxNQUFNLENBQUNHLGdCQUFnQjtFQUM3RCxDQUFDLE1BQU07SUFDTCxPQUFPRixnQkFBZ0IsQ0FBQ0UsZ0JBQWdCO0lBQ3hDRixnQkFBZ0IsQ0FBQ0csbUJBQW1CLEdBQUdKLE1BQU0sQ0FBQ0csZ0JBQWdCLENBQUNwRCxFQUFFO0VBQ25FO0VBRUEsT0FBT2tELGdCQUFnQjtBQUN6QixDQUFDO0FBRU0sTUFBTUksY0FBYyxHQUN6QkEsQ0FBQ0MsSUFBSSxFQUFFN0ksT0FBTyxFQUFFOEksV0FBVyxLQUMzQixDQUFDakksUUFBUSxFQUFFNEQsUUFBUSxFQUFBc0UsTUFBQSxLQUF3QjtFQUFBLElBQUFDLG9CQUFBO0VBQUEsSUFBdEI7SUFBRUM7RUFBYyxDQUFDLEdBQUFGLE1BQUE7RUFDcEMsTUFBTTtJQUNKbkUsV0FBVyxFQUFFO01BQUV6RDtJQUFLO0VBQ3RCLENBQUMsR0FBR3NELFFBQVEsQ0FBQyxDQUFDO0VBQ2QsTUFBTTtJQUFFdUI7RUFBWSxDQUFDLEdBQUc3RSxJQUFJOztFQUU1QjtFQUNBO0VBQ0E7RUFDQSxNQUFNO0lBQ0orSCxjQUFjO0lBQ2RDLG1CQUFtQjtJQUNuQkMsa0JBQWtCO0lBQ2xCVjtFQUNGLENBQUMsR0FBR0csSUFBSTtFQUNSLE1BQU1RLFVBQVUsR0FBRyxDQUFBUCxXQUFXLGFBQVhBLFdBQVcsZ0JBQUFFLG9CQUFBLEdBQVhGLFdBQVcsQ0FBRVEsT0FBTyxjQUFBTixvQkFBQSx1QkFBcEJBLG9CQUFBLENBQXNCMUQsRUFBRSxNQUFJd0QsV0FBVyxhQUFYQSxXQUFXLHVCQUFYQSxXQUFXLENBQUVTLFVBQVU7RUFDdEUsTUFBTUMsS0FBSyxHQUFHeEQsV0FBVyxDQUFDbkcsS0FBSyxLQUFLcUosY0FBYztFQUNsRCxNQUFNTyxjQUFjLEdBQ2xCZixnQkFBZ0IsQ0FBQ3JELElBQUksS0FBS3JGLE9BQU8sSUFDakNtSixtQkFBbUIsS0FBS25ELFdBQVcsQ0FBQzBELFVBQVUsSUFDOUNOLGtCQUFrQixLQUFLcEQsV0FBVyxDQUFDMkQsU0FBUztFQUU5QyxJQUFJSCxLQUFLLElBQUksQ0FBQ0gsVUFBVSxJQUFJSSxjQUFjLEVBQUU7SUFDMUMsTUFBTUcsVUFBVSxHQUFHO01BQ2pCRixVQUFVLEVBQUVQLG1CQUFtQjtNQUMvQlEsU0FBUyxFQUFFUCxrQkFBa0I7TUFDN0JwSixPQUFPLEVBQUUwSSxnQkFBZ0IsQ0FBQ3JELElBQUksSUFBSXFEO0lBQ3BDLENBQUM7O0lBRUQ7SUFDQU8sYUFBYSxDQUFDVyxVQUFVLENBQUM7RUFDM0I7QUFDRixDQUFDO0FBRUksTUFBTUMsaUJBQWlCLEdBQzVCQSxDQUFDbkQsTUFBTSxFQUFFb0QsT0FBTyxLQUNoQixPQUFPakosUUFBUSxFQUFFNEQsUUFBUSxFQUFBc0YsTUFBQSxLQUFxQjtFQUFBLElBQW5CO0lBQUVwRjtFQUFXLENBQUMsR0FBQW9GLE1BQUE7RUFDdkMsTUFBTWxGLFdBQVcsR0FBRyxNQUFNakgsaUVBQW9CLENBQUMsQ0FBQztFQUVoRCxJQUFJLENBQUNpSCxXQUFXLEVBQUUsT0FBT2xILDhEQUFpQixDQUFDLENBQUM7RUFFNUNrRCxRQUFRLENBQUN6RCwyRkFBWSxDQUFDLENBQUMsQ0FBQztFQUV4QixNQUFNMEgsTUFBTSxHQUFHO0lBQ2JDLFlBQVksRUFBRUYsV0FBVztJQUN6QnVCLE1BQU0sRUFDSjtFQUNKLENBQUM7RUFFRCxNQUFNNEQsT0FBTyxHQUFHek0sNEZBQVUsQ0FBQyxDQUFDO0VBQzVCLElBQUl5QyxPQUFPLEdBQUcsRUFBRTtFQUNoQixJQUFJZ0ssT0FBTyxFQUFFO0lBQ1gsSUFBSTtNQUNGLE1BQU1DLFFBQVEsR0FBRyxJQUFJeE0seURBQWUsQ0FBQyxDQUFDO01BQ3RDLE1BQU15TSxHQUFHLEdBQUdELFFBQVEsQ0FBQ0UsTUFBTSxDQUFDSCxPQUFPLENBQUM7TUFDcENoSyxPQUFPLEdBQUdrSyxHQUFHLENBQUNwSCxPQUFPLENBQUM5QyxPQUFPO0lBQy9CLENBQUMsQ0FBQyxPQUFPeUYsQ0FBQyxFQUFFO01BQ1YyRSxPQUFPLENBQUNDLEdBQUcsQ0FBQyxPQUFPLEVBQUU1RSxDQUFDLENBQUM7TUFDdkIsT0FBT1EsT0FBTyxDQUFDQyxNQUFNLENBQUMsQ0FBQztJQUN6QjtFQUNGO0VBRUEsTUFBTXNDLGdCQUFnQixHQUFHRixlQUFlLENBQUN3QixPQUFPLENBQUM7RUFFakQsT0FBTzNNLHlGQUFVLENBQ2YsSUFBSSxFQUNKSCwyRkFBWSxDQUFDK0IsYUFBYSxDQUFDLEtBQUFxRCxNQUFBLENBQ3hCdUMsVUFBVSw2Q0FBQXZDLE1BQUEsQ0FBMENzRSxNQUFNLENBQUNwQixFQUFFLEdBQ2hFa0QsZ0JBQWdCLEVBQ2hCeEYsc0JBQ0YsQ0FBQyxDQUFDOEIsTUFBTSxDQUFDLENBQUNqRSxRQUFRLENBQUMsQ0FDaEIwRSxJQUFJLENBQUMsWUFBWTtJQUNoQjFFLFFBQVEsQ0FBQytILGNBQWMsQ0FBQ2tCLE9BQU8sRUFBRTlKLE9BQU8sRUFBRTBHLE1BQU0sQ0FBQzRELEtBQUssQ0FBQyxDQUFDO0lBQ3hEekosUUFBUSxDQUFDeEQsMEZBQVcsQ0FBQyxDQUFDLENBQUM7RUFDekIsQ0FBQyxDQUFDLENBQ0RtSSxLQUFLLENBQUVDLENBQUMsSUFBSztJQUNaNUUsUUFBUSxDQUFDeEQsMEZBQVcsQ0FBQyxDQUFDLENBQUM7SUFDdkIsT0FBT29JLENBQUM7RUFDVixDQUFDLENBQUM7QUFDTixDQUFDO0FBRUksTUFBTThFLGNBQWMsR0FDekIsU0FBQUEsQ0FBQzVFLE9BQU8sRUFBRXdDLFFBQVEsRUFBRWUsY0FBYztFQUFBLElBQUV0QyxPQUFPLEdBQUE0RCxTQUFBLENBQUFqSSxNQUFBLFFBQUFpSSxTQUFBLFFBQUFDLFNBQUEsR0FBQUQsU0FBQSxNQUFHLElBQUk7RUFBQSxPQUNsRCxPQUFPM0osUUFBUSxFQUFFNEQsUUFBUSxFQUFBaUcsTUFBQSxLQUFxQjtJQUFBLElBQW5CO01BQUUvRjtJQUFXLENBQUMsR0FBQStGLE1BQUE7SUFDdkMsTUFBTTdGLFdBQVcsR0FBRyxNQUFNakgsaUVBQW9CLENBQUMsQ0FBQztJQUVoRCxNQUFNa0YsT0FBTyxHQUFHO01BQUVvRztJQUFlLENBQUM7SUFDbEMsSUFBSXRDLE9BQU8sRUFBRTlELE9BQU8sQ0FBQzhELE9BQU8sR0FBR0EsT0FBTztJQUV0QyxJQUFJLENBQUMvQixXQUFXLEVBQUUsT0FBT2xILDhEQUFpQixDQUFDLENBQUM7SUFFNUNrRCxRQUFRLENBQUN6RCwyRkFBWSxDQUFDLENBQUMsQ0FBQztJQUV4QixNQUFNMEgsTUFBTSxHQUFHO01BQ2JDLFlBQVksRUFBRUYsV0FBVztNQUN6QnVCLE1BQU0sRUFDSiw4RUFBOEU7TUFDaEZuQixTQUFTLEVBQUUscUNBQXFDO01BQ2hEa0IsTUFBTSxFQUNKO0lBQ0osQ0FBQztJQUVELE9BQU9oSix5RkFBVSxDQUNmLElBQUksRUFDSkgsMkZBQVksQ0FBQ21DLGFBQWEsQ0FBQyxLQUFBaUQsTUFBQSxDQUN4QnVDLFVBQVUsaUNBQUF2QyxNQUFBLENBQThCdUQsT0FBTyxlQUFBdkQsTUFBQSxDQUFZK0YsUUFBUSxnQkFDdEVyRixPQUFPLEVBQ1BFLHNCQUNGLENBQUMsQ0FBQzhCLE1BQU0sQ0FBQyxDQUFDakUsUUFBUSxDQUFDLENBQUN3SCxPQUFPLENBQUMsTUFBTTtNQUNoQ3hILFFBQVEsQ0FBQ3hELDBGQUFXLENBQUMsQ0FBQyxDQUFDO0lBQ3pCLENBQUMsQ0FBQztFQUNKLENBQUM7QUFBQTtBQUVJLE1BQU1zTixjQUFjLEdBQ3pCQSxDQUFDaEYsT0FBTyxFQUFFd0MsUUFBUSxFQUFFdEksS0FBSyxFQUFFK0csT0FBTyxLQUNsQyxPQUFPL0YsUUFBUSxFQUFFNEQsUUFBUSxFQUFBbUcsTUFBQSxLQUFxQjtFQUFBLElBQW5CO0lBQUVqRztFQUFXLENBQUMsR0FBQWlHLE1BQUE7RUFDdkMsTUFBTS9GLFdBQVcsR0FBRyxNQUFNakgsaUVBQW9CLENBQUMsQ0FBQztFQUVoRCxJQUFJLENBQUNpSCxXQUFXLEVBQUUsT0FBT2xILDhEQUFpQixDQUFDLENBQUM7RUFFNUNrRCxRQUFRLENBQUN6RCwyRkFBWSxDQUFDLENBQUMsQ0FBQztFQUV4QixNQUFNMEgsTUFBTSxHQUFHO0lBQ2JDLFlBQVksRUFBRUYsV0FBVztJQUN6QnVCLE1BQU0sRUFBRTtFQUNWLENBQUM7RUFFRCxPQUFPbkosNEZBQWEsQ0FDbEIsSUFBSSxFQUNKRCwyRkFBWSxDQUFDa0Msc0JBQXNCLENBQUMsS0FBQWtELE1BQUEsQ0FDakN1QyxVQUFVLGlDQUFBdkMsTUFBQSxDQUE4QnVELE9BQU8sZUFBQXZELE1BQUEsQ0FBWStGLFFBQVEsZ0JBQ3RFLENBQUMsQ0FBQyxFQUNGbkYsc0JBQ0YsQ0FBQyxDQUFDOEIsTUFBTSxDQUFDLENBQUNqRSxRQUFRLENBQUMsQ0FBQzBFLElBQUksQ0FBQyxNQUN2QjFFLFFBQVEsQ0FBQzBKLGNBQWMsQ0FBQzVFLE9BQU8sRUFBRXdDLFFBQVEsRUFBRXRJLEtBQUssRUFBRStHLE9BQU8sQ0FBQyxDQUM1RCxDQUFDO0FBQ0gsQ0FBQztBQUVJLE1BQU1pRSxjQUFjLEdBQ3pCQSxDQUFDbEYsT0FBTyxFQUFFd0MsUUFBUSxFQUFFckksU0FBUyxFQUFFQyxRQUFRLEVBQUVGLEtBQUssS0FDOUMsT0FBT2dCLFFBQVEsRUFBRTRELFFBQVEsRUFBQXFHLE1BQUEsS0FBcUI7RUFBQSxJQUFuQjtJQUFFbkc7RUFBVyxDQUFDLEdBQUFtRyxNQUFBO0VBQ3ZDLE1BQU1qRyxXQUFXLEdBQUcsTUFBTWpILGlFQUFvQixDQUFDLENBQUM7RUFDaEQsTUFBTTtJQUNKZ0gsV0FBVyxFQUFFO01BQUUxRDtJQUFPO0VBQ3hCLENBQUMsR0FBR3VELFFBQVEsQ0FBQyxDQUFDO0VBQ2QsTUFBTTNCLE9BQU8sR0FBRztJQUNkcUcsbUJBQW1CLEVBQUVySixTQUFTO0lBQzlCc0osa0JBQWtCLEVBQUVySixRQUFRO0lBQzVCbUosY0FBYyxFQUFFcko7RUFDbEIsQ0FBQztFQUVELElBQUksQ0FBQ2dGLFdBQVcsRUFBRSxPQUFPbEgsOERBQWlCLENBQUMsQ0FBQztFQUU1Q2tELFFBQVEsQ0FBQ3pELDJGQUFZLENBQUMsQ0FBQyxDQUFDO0VBRXhCLE1BQU0wSCxNQUFNLEdBQUc7SUFDYkMsWUFBWSxFQUFFRixXQUFXO0lBQ3pCdUIsTUFBTSxFQUNKLDhFQUE4RTtJQUNoRm5CLFNBQVMsRUFBRSxxQ0FBcUM7SUFDaERrQixNQUFNLEVBQ0o7RUFDSixDQUFDO0VBRUQsT0FBT2hKLHlGQUFVLENBQ2YsSUFBSSxFQUNKSCwyRkFBWSxDQUFDb0MsZUFBZSxDQUFDLEtBQUFnRCxNQUFBLENBQzFCdUMsVUFBVSxzQkFBQXZDLE1BQUEsQ0FBbUJsQixNQUFNLENBQUNvRSxFQUFFLGNBQUFsRCxNQUFBLENBQVd1RCxPQUFPLGVBQUF2RCxNQUFBLENBQVkrRixRQUFRLGdCQUMvRXJGLE9BQU8sRUFDUEUsc0JBQ0YsQ0FBQyxDQUFDOEIsTUFBTSxDQUFDLENBQUNqRSxRQUFRLENBQUMsQ0FBQ3dILE9BQU8sQ0FBQyxNQUFNO0lBQ2hDeEgsUUFBUSxDQUFDeEQsMEZBQVcsQ0FBQyxDQUFDLENBQUM7RUFDekIsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUVJLE1BQU0wTixrQkFBa0IsR0FDN0JBLENBQUNyRSxNQUFNLEVBQUVvRCxPQUFPLEtBQ2hCLE9BQU9qSixRQUFRLEVBQUU0RCxRQUFRLEVBQUF1RyxNQUFBLEtBQXFCO0VBQUEsSUFBbkI7SUFBRXJHO0VBQVcsQ0FBQyxHQUFBcUcsTUFBQTtFQUN2QyxNQUFNbkcsV0FBVyxHQUFHLE1BQU1qSCxpRUFBb0IsQ0FBQyxDQUFDO0VBRWhELElBQUksQ0FBQ2lILFdBQVcsRUFBRSxPQUFPbEgsOERBQWlCLENBQUMsQ0FBQztFQUU1Q2tELFFBQVEsQ0FBQ3pELDJGQUFZLENBQUMsQ0FBQyxDQUFDO0VBRXhCLE1BQU0wSCxNQUFNLEdBQUc7SUFDYkMsWUFBWSxFQUFFRixXQUFXO0lBQ3pCdUIsTUFBTSxFQUNKLG1IQUFtSDtJQUNySG5CLFNBQVMsRUFBRSxxQ0FBcUM7SUFDaERrQixNQUFNLEVBQ0o7RUFDSixDQUFDO0VBRUQsT0FBT2hKLHlGQUFVLENBQ2YsSUFBSSxFQUNKSCwyRkFBWSxDQUFDK0IsYUFBYSxDQUFDLEtBQUFxRCxNQUFBLENBQ3hCdUMsVUFBVSw2Q0FBQXZDLE1BQUEsQ0FBMENzRSxNQUFNLENBQUNwQixFQUFFLEdBQ2hFd0UsT0FBTyxFQUNQOUcsc0JBQ0YsQ0FBQyxDQUFDOEIsTUFBTSxDQUFDLENBQUNqRSxRQUFRLENBQUMsQ0FDaEIwRSxJQUFJLENBQUMsWUFBWTtJQUNoQjFFLFFBQVEsQ0FBQ3hELDBGQUFXLENBQUMsQ0FBQyxDQUFDO0VBQ3pCLENBQUMsQ0FBQyxDQUNEbUksS0FBSyxDQUFFQyxDQUFDLElBQUs7SUFDWjVFLFFBQVEsQ0FBQ3hELDBGQUFXLENBQUMsQ0FBQyxDQUFDO0lBQ3ZCLE9BQU9vSSxDQUFDO0VBQ1YsQ0FBQyxDQUFDO0FBQ04sQ0FBQztBQUVJLE1BQU13RixZQUFZLEdBQ3RCdkUsTUFBTSxJQUNQLE9BQU83RixRQUFRLEVBQUU0RCxRQUFRLEVBQUF5RyxNQUFBLEtBQXFCO0VBQUEsSUFBbkI7SUFBRXZHO0VBQVcsQ0FBQyxHQUFBdUcsTUFBQTtFQUN2QyxNQUFNckcsV0FBVyxHQUFHLE1BQU1qSCxpRUFBb0IsQ0FBQyxDQUFDO0VBRWhELElBQUksQ0FBQ2lILFdBQVcsRUFBRSxPQUFPbEgsOERBQWlCLENBQUMsQ0FBQztFQUU1Q2tELFFBQVEsQ0FBQ3pELDJGQUFZLENBQUMsQ0FBQyxDQUFDO0VBRXhCLE1BQU0wSCxNQUFNLEdBQUc7SUFDYkMsWUFBWSxFQUFFRjtFQUNoQixDQUFDO0VBRUQsTUFBTWMsT0FBTyxHQUFHZSxNQUFNLENBQUMxQixLQUFLLEdBQUcwQixNQUFNLENBQUMxQixLQUFLLENBQUNNLEVBQUUsR0FBR29CLE1BQU0sQ0FBQ0csUUFBUTtFQUVoRSxNQUFNc0UsV0FBVyxHQUFHM04sa0dBQW1CLENBQUNzSCxNQUFNLENBQUM7RUFDL0MsTUFBTXNHLE1BQU0sTUFBQWhKLE1BQUEsQ0FBTXVDLFVBQVUsaUNBQUF2QyxNQUFBLENBQThCdUQsT0FBTyxlQUFBdkQsTUFBQSxDQUFZc0UsTUFBTSxDQUFDcEIsRUFBRSxXQUFBbEQsTUFBQSxDQUFRK0ksV0FBVyxDQUFFO0VBRTNHLE9BQU9FLEtBQUssQ0FBQ0QsTUFBTSxFQUFFO0lBQ25CRSxZQUFZLEVBQUUsTUFBTTtJQUNwQkMsT0FBTyxFQUFFO01BQUUsY0FBYyxFQUFFO0lBQWtCO0VBQy9DLENBQUMsQ0FBQyxDQUNDaEcsSUFBSSxDQUFFbkMsUUFBUSxJQUFLO0lBQ2xCLElBQUksQ0FBQ0EsUUFBUSxDQUFDb0ksRUFBRSxFQUFFO01BQ2hCM0ssUUFBUSxDQUFDeEQsMEZBQVcsQ0FBQyxDQUFDLENBQUM7TUFDdkIsTUFBTStGLFFBQVE7SUFDaEIsQ0FBQyxNQUFNO01BQ0wsT0FBT0EsUUFBUSxDQUFDcUksSUFBSSxDQUFDLENBQUM7SUFDeEI7RUFDRixDQUFDLENBQUMsQ0FDRGxHLElBQUksQ0FBRW1HLEdBQUcsSUFBSztJQUNiN0ssUUFBUSxDQUFDeEQsMEZBQVcsQ0FBQyxDQUFDLENBQUM7SUFDdkIsTUFBTXNPLElBQUksR0FBR0MsUUFBUSxDQUFDQyxhQUFhLENBQUMsR0FBRyxDQUFDO0lBQ3hDLE1BQU1DLEdBQUcsR0FBR0MsTUFBTSxDQUFDQyxHQUFHLENBQUNDLGVBQWUsQ0FBQ1AsR0FBRyxDQUFDO0lBQzNDQyxJQUFJLENBQUNPLElBQUksR0FBR0osR0FBRztJQUNmSCxJQUFJLENBQUNRLFFBQVEsR0FBRyxZQUFZO0lBQzVCUixJQUFJLENBQUNTLGFBQWEsQ0FBQyxJQUFJQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7RUFDN0MsQ0FBQyxDQUFDLENBQ0Q3RyxLQUFLLENBQUNyQyx1QkFBdUIsQ0FBQztBQUNuQyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDcHlCSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRTBCO0FBQ1M7QUFDWTtBQUNYO0FBQ0Q7QUFDd0I7QUFDcEI7QUFDcUI7QUFDa0Q7QUFDaEM7QUFBQTtBQUU5RSxNQUFNa0ssWUFBWSxHQUFHeEosSUFBQSxJQU1mO0VBQUEsSUFOZ0I7SUFDcEI2QyxNQUFNO0lBQ054RixNQUFNO0lBQ05oQixjQUFjO0lBQ2RvTixRQUFRO0lBQ1JDO0VBQ0YsQ0FBQyxHQUFBMUosSUFBQTtFQUNDLE1BQU07SUFBRUw7RUFBRSxDQUFDLEdBQUdnSiw2REFBYyxDQUFDLENBQUM7RUFFOUIsTUFBTWdCLE1BQU0sR0FBR2QsaURBQVMsQ0FBQztJQUN2QmUsYUFBYSxFQUFFVCxnRUFBWSxDQUFDdEcsTUFBTSxDQUFDNEQsS0FBSyxFQUFFcEssY0FBYyxFQUFFLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUM7SUFDMUV3TixnQkFBZ0IsRUFBRVgseUVBQXFCLENBQ3JDN00sY0FBYyxFQUNkLEtBQUssRUFDTGdCLE1BQU0sQ0FBQ3lNLGlDQUNULENBQUM7SUFDREwsUUFBUSxFQUFHTSxNQUFNLElBQUs7TUFDcEIsTUFBTUMsZUFBZSxHQUFHYixnRUFBWSxDQUNsQ3RHLE1BQU0sQ0FBQzRELEtBQUssRUFDWnBLLGNBQWMsRUFDZDBOLE1BQU0sRUFDTixLQUFLLEVBQ0wsSUFBSSxFQUNKLElBQ0YsQ0FBQztNQUNELE9BQU9OLFFBQVEsQ0FBQ08sZUFBZSxDQUFDO0lBQ2xDLENBQUM7SUFDREMsa0JBQWtCLEVBQUU7RUFDdEIsQ0FBQyxDQUFDOztFQUVGO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0VBRUE7RUFDQWpCLG1FQUFnQixDQUFDVyxNQUFNLEVBQUUsZ0JBQWdCLENBQUM7RUFFMUMsSUFBSSxDQUFBdE4sY0FBYyxhQUFkQSxjQUFjLHVCQUFkQSxjQUFjLENBQUVxQyxNQUFNLE1BQUssQ0FBQyxFQUFFLE9BQU8sSUFBSTtFQUU3QyxvQkFDRTZLLHdEQUFBO0lBQU1FLFFBQVEsRUFBRUUsTUFBTSxDQUFDTyxZQUFhO0lBQUNDLFVBQVU7SUFBQUMsUUFBQSxnQkFDN0NiLHdEQUFBLENBQUNYLDhDQUFHO01BQUF3QixRQUFBLGdCQUNGZix1REFBQSxDQUFDUCw2REFBb0I7UUFBQ3pNLGNBQWMsRUFBRUEsY0FBZTtRQUFDc04sTUFBTSxFQUFFQTtNQUFPLENBQUUsQ0FBQyxFQUN2RXRNLE1BQU0sQ0FBQ2dOLCtCQUErQixpQkFDckNoQix1REFBQSxDQUFDSiw4R0FBc0I7UUFDckJVLE1BQU0sRUFBRUEsTUFBTztRQUNmVyxVQUFVLEVBQUVqTixNQUFNLENBQUNnTiwrQkFBZ0M7UUFDbkRFLFVBQVUsRUFBRWxOLE1BQU0sQ0FBQ3lNO01BQWtDLENBQ3RELENBQ0Y7SUFBQSxDQUNFLENBQUMsZUFDTlQsdURBQUEsQ0FBQ04sbURBQVU7TUFDVHlCLFNBQVMsRUFBRTdLLENBQUMsQ0FBQyx5Q0FBeUMsQ0FBRTtNQUN4RDhLLFdBQVcsRUFBRTlLLENBQUMsQ0FBQywyQ0FBMkMsQ0FBRTtNQUM1RCtKLE9BQU8sRUFBRUEsT0FBUTtNQUNqQmdCLFFBQVEsRUFBRWYsTUFBTSxDQUFDZ0I7SUFBYSxDQUMvQixDQUFDO0VBQUEsQ0FDRSxDQUFDO0FBRVgsQ0FBQztBQUVEbkIsWUFBWSxDQUFDb0IsU0FBUyxHQUFHO0VBQ3ZCL0gsTUFBTSxFQUFFNkYsMERBQWdCLENBQUM2QixVQUFVO0VBQ25DbE4sTUFBTSxFQUFFcUwsMERBQWdCLENBQUM2QixVQUFVO0VBQ25DbE8sY0FBYyxFQUFFcU0seURBQWUsQ0FBQzZCLFVBQVU7RUFDMUNkLFFBQVEsRUFBRWYsd0RBQWMsQ0FBQzZCLFVBQVU7RUFDbkNiLE9BQU8sRUFBRWhCLHdEQUFjLENBQUM2QjtBQUMxQixDQUFDO0FBRUQsaUVBQWVmLFlBQVk7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNsR0Q7QUFDUztBQUMyQjtBQUN0QjtBQUNPO0FBQ1M7QUFFVDtBQUFBO0FBRS9DLE1BQU00QixZQUFZLEdBQUcsRUFBRTtBQUV2QixNQUFNQyxRQUFRLEdBQUdyTCxJQUFBLElBT1g7RUFBQSxJQVBZO0lBQ2hCc0wsSUFBSTtJQUNKQyxXQUFXO0lBQ1hDLFFBQVEsR0FBRyxLQUFLO0lBQ2hCQyxTQUFTLEdBQUcsSUFBSTtJQUNoQkMsUUFBUSxHQUFHLEtBQUs7SUFDaEJDLEtBQUssR0FBR1A7RUFDVixDQUFDLEdBQUFwTCxJQUFBO0VBQ0MsTUFBTTtJQUFFTDtFQUFFLENBQUMsR0FBR2dKLDZEQUFjLENBQUMsQ0FBQztFQUM5QixNQUFNaUQsZ0JBQWdCLEdBQUdMLFdBQVcsSUFBSTVMLENBQUMsQ0FBQywyQkFBMkIsQ0FBQztFQUN0RSxNQUFNLENBQUNrTSxPQUFPLEVBQUVDLFVBQVUsQ0FBQyxHQUFHckQscURBQWMsQ0FBQ21ELGdCQUFnQixDQUFDO0VBQzlELE1BQU1JLFVBQVUsTUFBQXpOLE1BQUEsQ0FBTWtOLFNBQVMsSUFBSU4sMERBQWdCLE9BQUE1TSxNQUFBLENBQ2pEbU4sUUFBUSxJQUFJUCx5REFBZSxDQUMzQjtFQUVGLE1BQU1jLFVBQVUsR0FBR0EsQ0FBQSxLQUFNO0lBQ3ZCQyxTQUFTLENBQUNDLFNBQVMsQ0FBQ0MsU0FBUyxDQUFDZCxJQUFJLENBQUM7SUFDbkNRLFVBQVUsQ0FBQ25NLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQy9CME0sVUFBVSxDQUFDLE1BQU07TUFDZlAsVUFBVSxDQUFDRixnQkFBZ0IsQ0FBQztJQUM5QixDQUFDLEVBQUVWLDZEQUFlLENBQUM7RUFDckIsQ0FBQztFQUVELG9CQUNFM0IsdURBQUE7SUFBSytDLFNBQVMsRUFBRW5CLHdEQUFlO0lBQUFmLFFBQUEsZ0JBQzdCZixzREFBQTtNQUFNaUQsU0FBUyxFQUFFTixVQUFXO01BQUNRLEtBQUssRUFBRTtRQUFFYjtNQUFNLENBQUU7TUFBQXZCLFFBQUEsRUFDM0NrQjtJQUFJLENBQ0QsQ0FBQyxFQUNOLENBQUNFLFFBQVEsaUJBQ1JuQyxzREFBQSxDQUFDNEIsa0RBQU87TUFBQzNLLEtBQUssRUFBRXVMLE9BQVE7TUFBQXpCLFFBQUEsZUFDdEJmLHNEQUFBLENBQUMyQix3RUFBZTtRQUNkc0IsU0FBUyxFQUFFbkIseURBQWdCO1FBQzNCdUIsT0FBTyxFQUFFVCxVQUFXO1FBQ3BCLGVBQVk7TUFBb0IsQ0FDakM7SUFBQyxDQUNLLENBQ1Y7RUFBQSxDQUNFLENBQUM7QUFFVixDQUFDO0FBRURaLFFBQVEsQ0FBQ1QsU0FBUyxHQUFHO0VBQ25CVSxJQUFJLEVBQUU1QywwREFBZ0I7RUFDdEI2QyxXQUFXLEVBQUU3QywwREFBZ0I7RUFDN0I4QyxRQUFRLEVBQUU5Qyx3REFBYztFQUN4QitDLFNBQVMsRUFBRS9DLHdEQUFjO0VBQ3pCZ0QsUUFBUSxFQUFFaEQsd0RBQWM7RUFDeEJpRCxLQUFLLEVBQUVqRCwwREFBZ0JtRTtBQUN6QixDQUFDO0FBRUQsaUVBQWV4QixRQUFROzs7Ozs7Ozs7Ozs7Ozs7O0FDN0RlO0FBRXRDLE1BQU0wQixtQkFBbUIsR0FBRztFQUMxQkMsVUFBVSxFQUFFQSxDQUFBLEtBQU0sQ0FBQyxDQUFDO0VBQ3BCQyxrQkFBa0IsRUFBRUEsQ0FBQSxLQUFNLENBQUM7QUFDN0IsQ0FBQztBQUVELE1BQU1DLG1CQUFtQixnQkFBR0osb0RBQWEsQ0FBQ0MsbUJBQW1CLENBQUM7QUFFOUQsaUVBQWVHLG1CQUFtQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ1RSO0FBQ1M7QUFNWjtBQUFBO0FBRXZCLE1BQU1LLFlBQVksR0FBR3ZOLElBQUE7RUFBQSxJQUFDO0lBQUV3TixJQUFJO0lBQUU5RCxPQUFPO0lBQUVwSixLQUFLO0lBQUVtTjtFQUFLLENBQUMsR0FBQXpOLElBQUE7RUFBQSxvQkFDbER1Six1REFBQSxDQUFDNEQsaURBQU07SUFDTEssSUFBSSxFQUFFQSxJQUFLO0lBQ1g5RCxPQUFPLEVBQUVBLE9BQVE7SUFDakIsbUJBQWdCLG9CQUFvQjtJQUNwQyxvQkFBaUIsMEJBQTBCO0lBQUFVLFFBQUEsZ0JBRTNDZixzREFBQSxDQUFDaUUsc0RBQVc7TUFBQzdMLEVBQUUsRUFBQyxvQkFBb0I7TUFBQTJJLFFBQUEsRUFBRTlKO0lBQUssQ0FBYyxDQUFDLGVBQzFEK0ksc0RBQUEsQ0FBQytELHdEQUFhO01BQUFoRCxRQUFBLGVBQ1pmLHNEQUFBLENBQUNnRSw0REFBaUI7UUFDaEI1TCxFQUFFLEVBQUMsMEJBQTBCO1FBQzdCaU0sdUJBQXVCLEVBQUU7VUFBRUMsTUFBTSxFQUFFRjtRQUFLO01BQUUsQ0FDM0M7SUFBQyxDQUNXLENBQUM7RUFBQSxDQUNWLENBQUM7QUFBQSxDQUNWO0FBRURGLFlBQVksQ0FBQzNDLFNBQVMsR0FBRztFQUN2QjRDLElBQUksRUFBRTlFLHdEQUFjO0VBQ3BCZ0IsT0FBTyxFQUFFaEIsd0RBQWM7RUFDdkJwSSxLQUFLLEVBQUVvSSwwREFBZ0I7RUFDdkIrRSxJQUFJLEVBQUUvRSwwREFBZ0JpRTtBQUN4QixDQUFDO0FBRUQsaUVBQWVZLFlBQVk7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ2pDRDtBQUNvQjtBQUNLO0FBQ2hCO0FBQUE7QUFFbkMsSUFBSU8sU0FBUyxHQUFHLEVBQUU7QUFDbEIsSUFBSSxPQUFPNUYsTUFBTSxLQUFLLFdBQVcsRUFBRTtFQUNqQztFQUNBLE1BQU02RixJQUFJLEdBQUdoRyxRQUFRLENBQUNpRyxlQUFlOztFQUVyQztFQUNBRixTQUFTLEdBQUdHLGdCQUFnQixDQUFDRixJQUFJLENBQUMsQ0FBQ0csZ0JBQWdCLENBQ2pELHlCQUNGLENBQUM7QUFDSDtBQUVBLE1BQU1DLEtBQUssR0FBR04saUVBQVcsQ0FBQztFQUN4Qk8sT0FBTyxFQUFFO0lBQ1BDLE9BQU8sRUFBRTtNQUNQQyxJQUFJLEVBQUVSO0lBQ1IsQ0FBQztJQUNEeEMsSUFBSSxFQUFFO01BQ0orQyxPQUFPLEVBQUUsV0FBVztNQUNwQkUsU0FBUyxFQUFFO0lBQ2I7RUFDRixDQUFDO0VBQ0RDLFVBQVUsRUFBRTtJQUNWQyxLQUFLLEVBQUU7TUFDTEMsUUFBUSxFQUFFO0lBQ1osQ0FBQztJQUNEQyxFQUFFLEVBQUU7TUFDRkQsUUFBUSxFQUFFLE9BQU87TUFDakJFLFVBQVUsRUFBRSxHQUFHO01BQ2YsOEJBQThCLEVBQUU7UUFDOUJDLFlBQVksRUFBRTtNQUNoQjtJQUNGLENBQUM7SUFDREMsRUFBRSxFQUFFO01BQ0ZKLFFBQVEsRUFBRSxPQUFPO01BQ2pCRSxVQUFVLEVBQUUsR0FBRztNQUNmLDhCQUE4QixFQUFFO1FBQzlCQyxZQUFZLEVBQUU7TUFDaEI7SUFDRjtFQUNGLENBQUM7RUFDREUsVUFBVSxFQUFFO0lBQ1ZDLGlCQUFpQixFQUFFO01BQ2pCQyxjQUFjLEVBQUU7UUFDZGxCLElBQUksRUFBRTtVQUNKVyxRQUFRLEVBQUU7UUFDWjtNQUNGO0lBQ0YsQ0FBQztJQUNEUSxTQUFTLEVBQUU7TUFDVEQsY0FBYyxFQUFFO1FBQ2RsQixJQUFJLEVBQUU7VUFDSlcsUUFBUSxFQUFFLEtBQUs7VUFDZkUsVUFBVSxFQUFFLEdBQUc7VUFDZk8sVUFBVSxFQUFFO1FBQ2Q7TUFDRjtJQUNGLENBQUM7SUFDREMsTUFBTSxFQUFFO01BQ05ILGNBQWMsRUFBRTtRQUNkbEIsSUFBSSxFQUFFO1VBQ0pXLFFBQVEsRUFBRSxNQUFNO1VBQ2hCVyxLQUFLLEVBQUUsV0FBVztVQUNsQixnQkFBZ0IsRUFBRTtZQUNoQkEsS0FBSyxFQUFFO1VBQ1Q7UUFDRjtNQUNGO0lBQ0YsQ0FBQztJQUNEQyxPQUFPLEVBQUU7TUFDUEwsY0FBYyxFQUFFO1FBQ2RNLFNBQVMsRUFBRTtVQUNUQyxlQUFlLEVBQUU7UUFDbkI7TUFDRjtJQUNGO0VBQ0Y7QUFDRixDQUFDLENBQUM7QUFFRixNQUFNQyxXQUFXLEdBQUd6UCxJQUFBO0VBQUEsSUFBQztJQUFFb0s7RUFBUyxDQUFDLEdBQUFwSyxJQUFBO0VBQUEsb0JBQy9CcUosc0RBQUEsQ0FBQ3VFLHdEQUFhO0lBQUNPLEtBQUssRUFBRUEsS0FBTTtJQUFBL0QsUUFBQSxFQUFFQTtFQUFRLENBQWdCLENBQUM7QUFBQSxDQUN4RDtBQUVEcUYsV0FBVyxDQUFDN0UsU0FBUyxHQUFHO0VBQ3RCUixRQUFRLEVBQUUxQix3REFBYyxDQUFDNkI7QUFDM0IsQ0FBQztBQUVELGlFQUFla0YsV0FBVzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUMzRkE7QUFDUztBQVFaO0FBQ29CO0FBQUE7QUFFM0MsTUFBTVUseUJBQXlCLEdBQUduUSxJQUFBLElBVzVCO0VBQUEsSUFBQW9RLGdCQUFBO0VBQUEsSUFYNkI7TUFDakNDLFFBQVE7TUFDUkMsaUJBQWlCLEdBQUcsRUFBRTtNQUN0QkMsVUFBVSxHQUFHLEtBQUs7TUFDbEJuRyxRQUFRO01BQ1JsSyxLQUFLO01BQ0xzUSxRQUFRO01BQ1JDLGFBQWE7TUFDYkMsS0FBSztNQUNMQztJQUVGLENBQUMsR0FBQTNRLElBQUE7SUFESTRRLElBQUksR0FBQUMscUZBQUEsQ0FBQTdRLElBQUEsRUFBQThRLFNBQUE7RUFFUCxNQUFNQyxZQUFZLEdBQUdiLDhDQUFNLENBQUNHLFFBQVEsQ0FBQzdPLElBQUksRUFBRTZPLFFBQVEsQ0FBQzVPLEVBQUUsQ0FBQztFQUN2RCxNQUFNdVAsYUFBYSxHQUFHZixnREFBUSxDQUFDSSxRQUFRLENBQUM7RUFDeEMsTUFBTTlGLFVBQVUsR0FBRzhGLFFBQVEsQ0FBQ1ksU0FBUztFQUNyQyxNQUFNQyxpQkFBaUIsR0FBR2IsUUFBUSxDQUFDYyxtQkFBbUI7RUFFdEQsTUFBTUMsZUFBZSxHQUNuQixFQUFBaEIsZ0JBQUEsR0FBQUMsUUFBUSxDQUFDdEcsTUFBTSxjQUFBcUcsZ0JBQUEsdUJBQWZBLGdCQUFBLENBQWlCM00sR0FBRyxDQUFFNE4sR0FBRyxLQUFNO0lBQzdCQyxLQUFLLEVBQUVELEdBQUcsQ0FBQ0MsS0FBSztJQUNoQnBSLEtBQUssRUFBRW1SLEdBQUcsQ0FBQzVQLEVBQUUsQ0FBQzhQLFFBQVEsQ0FBQztFQUN6QixDQUFDLENBQUMsQ0FBQyxLQUFJLEVBQUU7RUFFWCxNQUFNQyx3QkFBd0IsR0FBR0EsQ0FBQ0MsT0FBTyxFQUFFSixHQUFHLEtBQUs7SUFDakQsTUFBTUssVUFBVSxHQUFHeFIsS0FBSyxJQUFJLEVBQUU7SUFDOUIsTUFBTXlSLG1CQUFtQixHQUN2QlQsaUJBQWlCLEtBQUssQ0FBQyxJQUFJUSxVQUFVLENBQUNoVCxNQUFNLEtBQUt3UyxpQkFBaUI7SUFDcEUsSUFBSVUsUUFBUTtJQUVaLElBQUlILE9BQU8sRUFBRTtNQUNYRyxRQUFRLEdBQUdELG1CQUFtQixHQUFHRCxVQUFVLEdBQUcsQ0FBQyxHQUFHQSxVQUFVLEVBQUVMLEdBQUcsQ0FBQztJQUNwRSxDQUFDLE1BQU07TUFDTE8sUUFBUSxHQUFHRixVQUFVLENBQUMxVCxNQUFNLENBQUU2VCxDQUFDLElBQUtBLENBQUMsS0FBS1IsR0FBRyxDQUFDO0lBQ2hEO0lBRUFaLGFBQWEsQ0FBQ00sWUFBWSxFQUFFYSxRQUFRLENBQUM7RUFDdkMsQ0FBQztFQUVELG9CQUNFdkksc0RBQUE7SUFFRTVILEVBQUUsS0FBQWxELE1BQUEsQ0FBS3dTLFlBQVksZUFBYTtJQUNoQ3pFLFNBQVMsRUFBRWdFLGlCQUFrQjtJQUFBbEcsUUFBQSxlQUU3QmIsdURBQUEsQ0FBQ3FHLHNEQUFXO01BQ1ZsRixRQUFRLEVBQUU2RixVQUFXO01BQ3JCdUIsUUFBUSxFQUFFdkgsVUFBVztNQUNyQndILFNBQVM7TUFDVEMsTUFBTSxFQUFDLFFBQVE7TUFDZnRCLEtBQUssRUFBRUEsS0FBTTtNQUFBdEcsUUFBQSxnQkFFYmYsc0RBQUEsQ0FBQzJHLG9EQUFTO1FBQUE1RixRQUFBLEVBQUU0RztNQUFhLENBQVksQ0FBQyxFQUNyQ04sS0FBSyxpQkFBSXJILHNEQUFBLENBQUMwRyx5REFBYztRQUFBM0YsUUFBQSxFQUFFdUcsVUFBVSxhQUFWQSxVQUFVLGNBQVZBLFVBQVUsR0FBSTtNQUFHLENBQWlCLENBQUMsZUFDOUR0SCxzREFBQSxDQUFDeUcsb0RBQVM7UUFBQTFGLFFBQUEsRUFDUGdILGVBQWUsQ0FBQzNOLEdBQUcsQ0FBRXdPLEVBQUUsaUJBQ3RCNUksc0RBQUEsQ0FBQ3dHLDJEQUFnQjtVQUVmck8sSUFBSSxFQUFFdVAsWUFBYTtVQUNuQm1CLE9BQU8sZUFDTDdJLHNEQUFBLENBQUNzRyxtREFBUSxFQUFBL0ssYUFBQTtZQUNQNk0sT0FBTyxFQUFFdlIsS0FBSyxhQUFMQSxLQUFLLHVCQUFMQSxLQUFLLENBQUVpUyxRQUFRLENBQUNGLEVBQUUsQ0FBQy9SLEtBQUssQ0FBRTtZQUNuQ3NRLFFBQVEsRUFBRzRCLEVBQUUsSUFDWFosd0JBQXdCLENBQUNZLEVBQUUsQ0FBQ0MsTUFBTSxDQUFDWixPQUFPLEVBQUVRLEVBQUUsQ0FBQy9SLEtBQUs7WUFFdEQ7VUFBQSxHQUNJMFEsSUFBSSxDQUNULENBQ0Y7VUFDRFUsS0FBSyxFQUFFVyxFQUFFLENBQUNYO1FBQU0sR0FaWFcsRUFBRSxDQUFDWCxLQWFULENBQ0Y7TUFBQyxDQUNPLENBQUMsRUFDWGxILFFBQVE7SUFBQSxDQUNFO0VBQUMsR0FqQ1QyRyxZQWtDRixDQUFDO0FBRVYsQ0FBQztBQUVEWix5QkFBeUIsQ0FBQ3ZGLFNBQVMsR0FBRztFQUNwQ3lGLFFBQVEsRUFBRTNILDBEQUFnQixDQUFDNkIsVUFBVTtFQUNyQ3JLLEtBQUssRUFBRXdJLHlEQUFlO0VBQ3RCNEgsaUJBQWlCLEVBQUU1SCwwREFBZ0I7RUFDbkM2SCxVQUFVLEVBQUU3SCx3REFBYztFQUMxQjhILFFBQVEsRUFBRTlILHdEQUFjLENBQUM2QixVQUFVO0VBQ25DSCxRQUFRLEVBQUUxQix3REFBYztFQUN4QitILGFBQWEsRUFBRS9ILHdEQUFjO0VBQzdCZ0ksS0FBSyxFQUFFaEksd0RBQWM7RUFDckJpSSxVQUFVLEVBQUVqSSwwREFBZ0JpRTtBQUM5QixDQUFDO0FBRUQsaUVBQWV3RCx5QkFBeUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUN0R2Q7QUFDUztBQU1aO0FBQ21EO0FBQy9CO0FBQUE7QUFFM0MsTUFBTW9DLHFCQUFxQixHQUFHdlMsSUFBQSxJQVV4QjtFQUFBLElBVnlCO01BQzdCcVEsUUFBUTtNQUNSQyxpQkFBaUIsR0FBRyxFQUFFO01BQ3RCQyxVQUFVLEdBQUcsS0FBSztNQUNsQm5HLFFBQVE7TUFDUmxLLEtBQUs7TUFDTHdRLEtBQUs7TUFDTEMsVUFBVTtNQUNWRjtJQUVGLENBQUMsR0FBQXpRLElBQUE7SUFESTRRLElBQUksR0FBQUMscUZBQUEsQ0FBQTdRLElBQUEsRUFBQThRLFNBQUE7RUFFUCxNQUFNQyxZQUFZLEdBQUdiLDhDQUFNLENBQUNHLFFBQVEsQ0FBQzdPLElBQUksRUFBRTZPLFFBQVEsQ0FBQzVPLEVBQUUsQ0FBQztFQUN2RCxNQUFNdVAsYUFBYSxHQUFHZixnREFBUSxDQUFDSSxRQUFRLENBQUM7RUFDeEMsTUFBTTlGLFVBQVUsR0FBRzhGLFFBQVEsQ0FBQ1ksU0FBUztFQUVyQyxvQkFDRTVILHNEQUFBO0lBRUU1SCxFQUFFLEtBQUFsRCxNQUFBLENBQUt3UyxZQUFZLGVBQWE7SUFDaEN6RSxTQUFTLEVBQUVnRSxpQkFBa0I7SUFBQWxHLFFBQUEsZUFFN0JiLHVEQUFBLENBQUNxRyxzREFBVztNQUFDbUMsU0FBUztNQUFDQyxNQUFNLEVBQUMsUUFBUTtNQUFDdEIsS0FBSyxFQUFFQSxLQUFNO01BQUF0RyxRQUFBLGdCQUNsRGYsc0RBQUEsQ0FBQ3dHLDJEQUFnQjtRQUNmMkMsRUFBRSxFQUFFO1VBQUVDLFVBQVUsRUFBRTtRQUFhLENBQUU7UUFDakNQLE9BQU8sZUFDTDdJLHNEQUFBLENBQUNzRyxtREFBUSxFQUFBL0ssYUFBQTtVQUNQcEQsSUFBSSxFQUFFdVAsWUFBYTtVQUNuQlUsT0FBTyxFQUFFLENBQUMsQ0FBQ3ZSLEtBQU07VUFDakJvUixLQUFLLGVBQUVqSSxzREFBQSxDQUFDaUosNEZBQU87WUFBQWxJLFFBQUEsRUFBRTRHO1VBQWEsQ0FBVSxDQUFFO1VBQzFDd0IsRUFBRSxFQUFFO1lBQUVFLFNBQVMsRUFBRSxDQUFDO1VBQUU7VUFDcEI7UUFBQSxHQUNJOUIsSUFBSSxDQUNULENBQ0Y7UUFDRFUsS0FBSyxlQUFFakksc0RBQUEsQ0FBQ2lKLDRGQUFPO1VBQUFsSSxRQUFBLEVBQUU0RztRQUFhLENBQVUsQ0FBRTtRQUMxQ3RHLFFBQVEsRUFBRTZGLFVBQVc7UUFDckJ1QixRQUFRLEVBQUV2SDtNQUFXLENBQ3RCLENBQUMsRUFDREgsUUFBUSxFQUNSc0csS0FBSyxpQkFBSXJILHNEQUFBLENBQUMwRyx5REFBYztRQUFBM0YsUUFBQSxFQUFFdUcsVUFBVSxhQUFWQSxVQUFVLGNBQVZBLFVBQVUsR0FBSTtNQUFHLENBQWlCLENBQUM7SUFBQSxDQUNuRDtFQUFDLEdBdkJUSSxZQXdCRixDQUFDO0FBRVYsQ0FBQztBQUVEd0IscUJBQXFCLENBQUMzSCxTQUFTLEdBQUc7RUFDaEN5RixRQUFRLEVBQUUzSCwwREFBZ0IsQ0FBQzZCLFVBQVU7RUFDckNySyxLQUFLLEVBQUV3SSx3REFBYztFQUNyQjRILGlCQUFpQixFQUFFNUgsMERBQWdCO0VBQ25DNkgsVUFBVSxFQUFFN0gsd0RBQWM7RUFDMUIwQixRQUFRLEVBQUUxQix3REFBYztFQUN4QitILGFBQWEsRUFBRS9ILHdEQUFjO0VBQzdCZ0ksS0FBSyxFQUFFaEksd0RBQWM7RUFDckJpSSxVQUFVLEVBQUVqSSwwREFBZ0JpRTtBQUM5QixDQUFDO0FBRUQsaUVBQWU0RixxQkFBcUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDbkVWO0FBQ1M7QUFDdUM7QUFDL0I7QUFBQTtBQUUzQyxNQUFNTyxxQkFBcUIsR0FBRzlTLElBQUEsSUFTeEI7RUFBQSxJQUFBb1EsZ0JBQUE7RUFBQSxJQVR5QjtNQUM3QkMsUUFBUTtNQUNSQyxpQkFBaUIsR0FBRyxFQUFFO01BQ3RCQyxVQUFVLEdBQUcsS0FBSztNQUNsQkUsYUFBYTtNQUNickcsUUFBUTtNQUNSc0csS0FBSztNQUNMQztJQUVGLENBQUMsR0FBQTNRLElBQUE7SUFESTRRLElBQUksR0FBQUMscUZBQUEsQ0FBQTdRLElBQUEsRUFBQThRLFNBQUE7RUFFUCxNQUFNQyxZQUFZLEdBQUdiLDhDQUFNLENBQUNHLFFBQVEsQ0FBQzdPLElBQUksRUFBRTZPLFFBQVEsQ0FBQzVPLEVBQUUsQ0FBQztFQUN2RCxNQUFNdVAsYUFBYSxHQUFHZixnREFBUSxDQUFDSSxRQUFRLENBQUM7RUFDeEMsTUFBTTlGLFVBQVUsR0FBRzhGLFFBQVEsQ0FBQ1ksU0FBUztFQUVyQyxNQUFNRyxlQUFlLEdBQ25CLEVBQUFoQixnQkFBQSxHQUFBQyxRQUFRLENBQUN0RyxNQUFNLGNBQUFxRyxnQkFBQSx1QkFBZkEsZ0JBQUEsQ0FBaUIzTSxHQUFHLENBQUU0TixHQUFHLEtBQU07SUFDN0JDLEtBQUssRUFBRUQsR0FBRyxDQUFDQyxLQUFLO0lBQ2hCcFIsS0FBSyxFQUFFbVIsR0FBRyxDQUFDNVA7RUFDYixDQUFDLENBQUMsQ0FBQyxLQUFJLEVBQUU7RUFFWCxvQkFDRTRILHNEQUFBO0lBRUU1SCxFQUFFLEtBQUFsRCxNQUFBLENBQUt3UyxZQUFZLGVBQWE7SUFDaEN6RSxTQUFTLEVBQUVnRSxpQkFBa0I7SUFBQWxHLFFBQUEsZUFFN0JiLHVEQUFBLENBQUNxRyxzREFBVztNQUNWbEYsUUFBUSxFQUFFNkYsVUFBVztNQUNyQnVCLFFBQVEsRUFBRXZILFVBQVc7TUFDckJ3SCxTQUFTO01BQ1RDLE1BQU0sRUFBQyxRQUFRO01BQ2Z0QixLQUFLLEVBQUVBLEtBQU07TUFBQXRHLFFBQUEsZ0JBRWJmLHNEQUFBLENBQUNzSixxREFBVTtRQUFDbFIsRUFBRSxLQUFBbEQsTUFBQSxDQUFLd1MsWUFBWSxXQUFTO1FBQUEzRyxRQUFBLEVBQUU0RztNQUFhLENBQWEsQ0FBQyxlQUNyRTNILHNEQUFBLENBQUN3SixpREFBTSxFQUFBak8sYUFBQSxDQUFBQSxhQUFBO1FBQ0xtTyxPQUFPLEtBQUF4VSxNQUFBLENBQUt3UyxZQUFZLFdBQVM7UUFDakN2UCxJQUFJLEVBQUV1UCxZQUFhO1FBQ25CdFAsRUFBRSxFQUFFc1AsWUFBYTtRQUNqQk8sS0FBSyxFQUFFTjtRQUNQO01BQUEsR0FDSUosSUFBSTtRQUNScEUsS0FBSyxFQUFFO1VBQUVxQyxZQUFZLEVBQUU7UUFBRyxDQUFFO1FBQUF6RSxRQUFBLEVBRTNCZ0gsZUFBZSxDQUFDM04sR0FBRyxDQUFFd08sRUFBRSxpQkFDdEI1SSxzREFBQSxDQUFDdUosbURBQVE7VUFBZ0IxUyxLQUFLLEVBQUUrUixFQUFFLENBQUMvUixLQUFNO1VBQUFrSyxRQUFBLEVBQ3RDNkgsRUFBRSxDQUFDWDtRQUFLLEdBRElXLEVBQUUsQ0FBQ1gsS0FFUixDQUNYO01BQUMsRUFDSSxDQUFDLEVBQ1JsSCxRQUFRO0lBQUEsQ0FDRTtFQUFDLEdBNUJUMkcsWUE2QkYsQ0FBQztBQUVWLENBQUM7QUFFRCtCLHFCQUFxQixDQUFDbEksU0FBUyxHQUFHO0VBQ2hDeUYsUUFBUSxFQUFFM0gsMERBQWdCLENBQUM2QixVQUFVO0VBQ3JDK0YsaUJBQWlCLEVBQUU1SCwwREFBZ0I7RUFDbkM2SCxVQUFVLEVBQUU3SCx3REFBYztFQUMxQjBCLFFBQVEsRUFBRTFCLHdEQUFjO0VBQ3hCZ0ksS0FBSyxFQUFFaEksd0RBQWM7RUFDckJpSSxVQUFVLEVBQUVqSSwwREFBZ0I7RUFDNUIrSCxhQUFhLEVBQUUvSCx3REFBY3FDO0FBQy9CLENBQUM7QUFFRCxpRUFBZStILHFCQUFxQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUN0RVY7QUFDUztBQVFaO0FBQ29CO0FBQUE7QUFFM0MsTUFBTUksc0JBQXNCLEdBQUdsVCxJQUFBLElBU3pCO0VBQUEsSUFBQW9RLGdCQUFBO0VBQUEsSUFUMEI7TUFDOUJDLFFBQVE7TUFDUkMsaUJBQWlCLEdBQUcsRUFBRTtNQUN0QkMsVUFBVSxHQUFHLEtBQUs7TUFDbEJuRyxRQUFRO01BQ1JzRyxLQUFLO01BQ0xDLFVBQVU7TUFDVkY7SUFFRixDQUFDLEdBQUF6USxJQUFBO0lBREk0USxJQUFJLEdBQUFDLHFGQUFBLENBQUE3USxJQUFBLEVBQUE4USxTQUFBO0VBRVAsTUFBTUMsWUFBWSxHQUFHYiw4Q0FBTSxDQUFDRyxRQUFRLENBQUM3TyxJQUFJLEVBQUU2TyxRQUFRLENBQUM1TyxFQUFFLENBQUM7RUFDdkQsTUFBTXVQLGFBQWEsR0FBR2YsZ0RBQVEsQ0FBQ0ksUUFBUSxDQUFDO0VBQ3hDLE1BQU05RixVQUFVLEdBQUc4RixRQUFRLENBQUNZLFNBQVM7RUFFckMsTUFBTUcsZUFBZSxHQUNuQixFQUFBaEIsZ0JBQUEsR0FBQUMsUUFBUSxDQUFDdEcsTUFBTSxjQUFBcUcsZ0JBQUEsdUJBQWZBLGdCQUFBLENBQWlCM00sR0FBRyxDQUFFNE4sR0FBRyxLQUFNO0lBQzdCQyxLQUFLLEVBQUVELEdBQUcsQ0FBQ0MsS0FBSztJQUNoQnBSLEtBQUssRUFBRW1SLEdBQUcsQ0FBQzVQLEVBQUUsQ0FBQzhQLFFBQVEsQ0FBQztFQUN6QixDQUFDLENBQUMsQ0FBQyxLQUFJLEVBQUU7RUFFWCxvQkFDRWxJLHNEQUFBO0lBRUU1SCxFQUFFLEtBQUFsRCxNQUFBLENBQUt3UyxZQUFZLGVBQWE7SUFDaEN6RSxTQUFTLEVBQUVnRSxpQkFBa0I7SUFBQWxHLFFBQUEsZUFFN0JiLHVEQUFBLENBQUNxRyxzREFBVztNQUNWbEYsUUFBUSxFQUFFNkYsVUFBVztNQUNyQnVCLFFBQVEsRUFBRXZILFVBQVc7TUFDckJ3SCxTQUFTO01BQ1RDLE1BQU0sRUFBQyxRQUFRO01BQ2Z0QixLQUFLLEVBQUVBLEtBQU07TUFBQXRHLFFBQUEsZ0JBRWJmLHNEQUFBLENBQUMyRyxvREFBUztRQUFDdk8sRUFBRSxLQUFBbEQsTUFBQSxDQUFLd1MsWUFBWSxXQUFTO1FBQUEzRyxRQUFBLEVBQUU0RztNQUFhLENBQVksQ0FBQyxFQUNsRU4sS0FBSyxpQkFBSXJILHNEQUFBLENBQUMwRyx5REFBYztRQUFBM0YsUUFBQSxFQUFFdUcsVUFBVSxhQUFWQSxVQUFVLGNBQVZBLFVBQVUsR0FBSTtNQUFHLENBQWlCLENBQUMsZUFDOUR0SCxzREFBQSxDQUFDNEoscURBQVUsRUFBQXJPLGFBQUEsQ0FBQUEsYUFBQTtRQUNULHNCQUFBckcsTUFBQSxDQUFvQndTLFlBQVksV0FBUztRQUN6Q3ZQLElBQUksRUFBRXVQO1FBQ047TUFBQSxHQUNJSCxJQUFJO1FBQUF4RyxRQUFBLEVBRVBnSCxlQUFlLENBQUMzTixHQUFHLENBQUV3TyxFQUFFLGlCQUN0QjVJLHNEQUFBLENBQUN3RywyREFBZ0I7VUFFZjNQLEtBQUssRUFBRStSLEVBQUUsQ0FBQy9SLEtBQU07VUFDaEJnUyxPQUFPLGVBQUU3SSxzREFBQSxDQUFDMkosZ0RBQUssSUFBRSxDQUFFO1VBQ25CMUIsS0FBSyxFQUFFVyxFQUFFLENBQUNYO1FBQU0sR0FIWFcsRUFBRSxDQUFDWCxLQUlULENBQ0Y7TUFBQyxFQUNRLENBQUMsRUFDWmxILFFBQVE7SUFBQSxDQUNFO0VBQUMsR0E3QlQyRyxZQThCRixDQUFDO0FBRVYsQ0FBQztBQUVEbUMsc0JBQXNCLENBQUN0SSxTQUFTLEdBQUc7RUFDakN5RixRQUFRLEVBQUUzSCwwREFBZ0IsQ0FBQzZCLFVBQVU7RUFDckMrRixpQkFBaUIsRUFBRTVILDBEQUFnQjtFQUNuQzZILFVBQVUsRUFBRTdILHdEQUFjO0VBQzFCMEIsUUFBUSxFQUFFMUIsd0RBQWM7RUFDeEJnSSxLQUFLLEVBQUVoSSx3REFBYztFQUNyQmlJLFVBQVUsRUFBRWpJLDBEQUFnQjtFQUM1QitILGFBQWEsRUFBRS9ILHdEQUFjcUM7QUFDL0IsQ0FBQztBQUVELGlFQUFlbUksc0JBQXNCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQzlFWDtBQUNTO0FBQ2tCO0FBQ1Y7QUFBQTtBQUUzQyxNQUFNRSxpQkFBaUIsR0FBR3BULElBQUEsSUFPcEI7RUFBQSxJQVBxQjtNQUN6QnFRLFFBQVE7TUFDUkMsaUJBQWlCLEdBQUcsRUFBRTtNQUN0QkMsVUFBVSxHQUFHLEtBQUs7TUFDbEJuRyxRQUFRO01BQ1JxRztJQUVGLENBQUMsR0FBQXpRLElBQUE7SUFESTRRLElBQUksR0FBQUMscUZBQUEsQ0FBQTdRLElBQUEsRUFBQThRLFNBQUE7RUFFUCxNQUFNQyxZQUFZLEdBQUdiLDhDQUFNLENBQUNHLFFBQVEsQ0FBQzdPLElBQUksRUFBRTZPLFFBQVEsQ0FBQzVPLEVBQUUsQ0FBQztFQUN2RCxNQUFNdVAsYUFBYSxHQUFHZixnREFBUSxDQUFDSSxRQUFRLENBQUM7RUFDeEMsTUFBTTlGLFVBQVUsR0FBRzhGLFFBQVEsQ0FBQ1ksU0FBUztFQUVyQyxvQkFDRTVILHNEQUFBO0lBRUU1SCxFQUFFLEtBQUFsRCxNQUFBLENBQUt3UyxZQUFZLGVBQWE7SUFDaEN6RSxTQUFTLEVBQUVnRSxpQkFBa0I7SUFBQWxHLFFBQUEsZUFFN0JiLHVEQUFBLENBQUN1RyxvREFBUztNQUFBMUYsUUFBQSxnQkFDUmYsc0RBQUEsQ0FBQzhKLG9EQUFTLEVBQUF2TyxhQUFBO1FBQ1JwRCxJQUFJLEVBQUV1UCxZQUFhO1FBQ25CTyxLQUFLLEVBQUVOLGFBQWM7UUFDckJ0RyxRQUFRLEVBQUU2RixVQUFXO1FBQ3JCdUIsUUFBUSxFQUFFdkgsVUFBVztRQUNyQndILFNBQVM7UUFDVEMsTUFBTSxFQUFDO1FBQ1A7TUFBQSxHQUNJcEIsSUFBSSxDQUNULENBQUMsRUFDRHhHLFFBQVE7SUFBQSxDQUNBO0VBQUMsR0FoQlAyRyxZQWlCRixDQUFDO0FBRVYsQ0FBQztBQUVEcUMsaUJBQWlCLENBQUN4SSxTQUFTLEdBQUc7RUFDNUJ5RixRQUFRLEVBQUUzSCwwREFBZ0IsQ0FBQzZCLFVBQVU7RUFDckMrRixpQkFBaUIsRUFBRTVILDBEQUFnQjtFQUNuQzZILFVBQVUsRUFBRTdILHdEQUFjO0VBQzFCMEIsUUFBUSxFQUFFMUIsd0RBQWM7RUFDeEIrSCxhQUFhLEVBQUUvSCx3REFBY3FDO0FBQy9CLENBQUM7QUFFRCxpRUFBZXFJLGlCQUFpQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDMUNWO0FBRWYsTUFBTU0sU0FBUyxHQUFHQSxDQUFDeFQsS0FBSyxFQUFFeVQsSUFBSSxLQUFLO0VBQ3hDLE1BQU01SixNQUFNLEdBQUc0SixJQUFJLENBQUNDLGFBQWE7RUFFakMsSUFBSSxDQUFDMVQsS0FBSyxFQUFFLE9BQU8sS0FBSztFQUV4QixJQUFJMlQsS0FBSyxDQUFDQyxPQUFPLENBQUM1VCxLQUFLLENBQUMsRUFBRTtJQUN4QixJQUFJLENBQUNBLEtBQUssQ0FBQ3hCLE1BQU0sRUFBRSxPQUFPLEtBQUs7SUFDL0IsSUFBSVcsR0FBRyxHQUFHc1UsSUFBSSxDQUFDSSxzQkFBc0IsS0FBSyxLQUFLO0lBQy9DaEssTUFBTSxDQUFDaEssT0FBTyxDQUFFOFIsQ0FBQyxJQUFLO01BQ3BCLElBQUk4QixJQUFJLENBQUNJLHNCQUFzQixLQUFLLEtBQUssRUFBRTtRQUN6QzFVLEdBQUcsR0FBR0EsR0FBRyxJQUFJYSxLQUFLLENBQUNpUyxRQUFRLENBQUNOLENBQUMsQ0FBQztNQUNoQyxDQUFDLE1BQU07UUFDTDtRQUNBeFMsR0FBRyxHQUFHQSxHQUFHLElBQUlhLEtBQUssQ0FBQ2lTLFFBQVEsQ0FBQ04sQ0FBQyxDQUFDO01BQ2hDO0lBQ0YsQ0FBQyxDQUFDO0lBQ0YsT0FBT3hTLEdBQUc7RUFDWjtFQUNBLE9BQU8wSyxNQUFNLENBQUNvSSxRQUFRLENBQUNqUyxLQUFLLGFBQUxBLEtBQUssdUJBQUxBLEtBQUssQ0FBRXFSLFFBQVEsQ0FBQyxDQUFDLENBQUM7QUFDM0MsQ0FBQztBQUVNLE1BQU15QyxlQUFlLEdBQUdBLENBQUNMLElBQUksRUFBRU0sVUFBVSxLQUFLO0VBQ25ELElBQUlOLElBQUksQ0FBQ08sVUFBVSxLQUFLLFNBQVMsRUFBRTtJQUNqQyxJQUFJUCxJQUFJLENBQUNRLG9CQUFvQixLQUFLLE9BQU8sRUFBRTtNQUN6QyxPQUFPLENBQUMsQ0FBQ0YsVUFBVTtJQUNyQjtJQUNBO0lBQ0EsT0FBTyxDQUFDQSxVQUFVO0VBQ3BCO0VBQ0E7RUFDQSxJQUFJTixJQUFJLENBQUNRLG9CQUFvQixLQUFLLE9BQU8sRUFBRTtJQUN6QyxPQUFPLENBQUNGLFVBQVU7RUFDcEI7RUFDQSxPQUFPLENBQUMsQ0FBQ0EsVUFBVTtBQUNyQixDQUFDO0FBRU0sTUFBTS9ELE1BQU0sR0FBR0EsQ0FBQzVFLElBQUksRUFBRThJLFVBQVUsS0FBSztFQUMxQyxNQUFNQyxNQUFNLEdBQUcvSSxJQUFJLENBQUNnSixXQUFXLENBQUMsQ0FBQztFQUNqQyxVQUFBL1YsTUFBQSxDQUFVOFYsTUFBTSxDQUFDRSxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsR0FBRyxDQUFDLE9BQUFoVyxNQUFBLENBQUk2VixVQUFVO0FBQy9ELENBQUM7QUFFTSxNQUFNbkUsUUFBUSxHQUFJdUUsQ0FBQztFQUFBLElBQUFDLFFBQUE7RUFBQSxRQUN4QjtJQUNBRCxDQUFDLGFBQURBLENBQUMsZ0JBQUFDLFFBQUEsR0FBREQsQ0FBQyxDQUFFbEQsS0FBSyxjQUFBbUQsUUFBQSx1QkFBUkEsUUFBQSxDQUFVRixPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDQSxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsSUFBSTtFQUFDO0FBQUE7QUFFeEQsTUFBTUcsVUFBVSxHQUFJQyxNQUFNLElBQUs7RUFDcEMsSUFBSSxDQUFDQSxNQUFNLEVBQUUsT0FBTyxLQUFLO0VBQ3pCO0VBQ0EsSUFBSWQsS0FBSyxDQUFDQyxPQUFPLENBQUNhLE1BQU0sQ0FBQyxFQUFFLE9BQU9BLE1BQU0sQ0FBQ2pXLE1BQU0sR0FBRyxDQUFDO0VBQ25ELElBQUksT0FBT2lXLE1BQU0sS0FBSyxRQUFRLEVBQUUsT0FBT0EsTUFBTSxDQUFDalcsTUFBTSxHQUFHLENBQUM7RUFDeEQsSUFBSSxPQUFPaVcsTUFBTSxLQUFLLFFBQVEsRUFBRSxPQUFPQSxNQUFNLEdBQUcsQ0FBQztFQUNqRCxJQUFJLE9BQU9BLE1BQU0sS0FBSyxTQUFTLEVBQUUsT0FBT0EsTUFBTTtFQUM5QyxPQUFPLEtBQUs7QUFDZCxDQUFDO0FBRU0sTUFBTUMsaUJBQWlCLEdBQUdBLENBQUNELE1BQU0sRUFBRUUsVUFBVSxLQUFLO0VBQ3ZELE1BQU1DLFdBQVcsR0FBR2pCLEtBQUssQ0FBQ0MsT0FBTyxDQUFDYSxNQUFNLENBQUMsR0FBR0EsTUFBTSxHQUFHLENBQUNBLE1BQU0sQ0FBQztFQUU3RCxPQUFPRyxXQUFXLENBQUNDLElBQUksQ0FBRWxELENBQUMsSUFBSztJQUM3QixJQUFJZ0MsS0FBSyxDQUFDQyxPQUFPLENBQUNlLFVBQVUsQ0FBQyxFQUFFO01BQzdCLE9BQU9BLFVBQVUsQ0FBQzFDLFFBQVEsQ0FBQ04sQ0FBQyxDQUFDO0lBQy9CO0lBQ0EsT0FBT0EsQ0FBQyxLQUFLZ0QsVUFBVTtFQUN6QixDQUFDLENBQUM7QUFDSixDQUFDO0FBRU0sTUFBTUcsbUJBQW1CLEdBQUlSLENBQUMsSUFBSztFQUN4QyxRQUFRQSxDQUFDLENBQUNTLElBQUk7SUFDWixLQUFLNUIsNkRBQXFCO01BQ3hCLE9BQU8sS0FBSztJQUNkLEtBQUtJLG9FQUE0QjtNQUMvQixPQUFPLElBQUk7SUFDYixLQUFLSCxpRUFBeUI7TUFDNUIsT0FBTyxFQUFFO0lBQ1gsS0FBS0Usb0VBQTRCO0lBQ2pDLEtBQUtELDZEQUFxQjtNQUN4QixPQUFPLEVBQUU7SUFDWDtNQUNFLE9BQU8sRUFBRTtFQUNiO0FBQ0YsQ0FBQztBQUVNLE1BQU0yQixZQUFZLEdBQUdBLENBQUNDLEdBQUcsRUFBRUYsSUFBSSxLQUFLO0VBQ3pDLFFBQVFBLElBQUk7SUFDVixLQUFLNUIsNkRBQXFCO01BQ3hCLE9BQU84QixHQUFHLEtBQUssTUFBTTtJQUN2QixLQUFLN0IsaUVBQXlCO01BQzVCLE9BQU8sQ0FBQTZCLEdBQUcsYUFBSEEsR0FBRyx1QkFBSEEsR0FBRyxDQUFFQyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUksRUFBRTtJQUM5QixLQUFLNUIsb0VBQTRCO0lBQ2pDLEtBQUtELDZEQUFxQjtNQUN4QixPQUFPNEIsR0FBRyxJQUFJLEVBQUU7SUFDbEIsS0FBSzFCLG9FQUE0QjtNQUMvQixPQUFPMEIsR0FBRyxJQUFJLElBQUk7SUFDcEI7TUFDRSxPQUFPQSxHQUFHO0VBQ2Q7QUFDRixDQUFDO0FBRU0sTUFBTUUscUJBQXFCLEdBQUlwUCxPQUFPLElBQUs7RUFDaEQsTUFBTTtNQUNKWixjQUFjO01BQ2RDLG1CQUFtQjtNQUNuQkMsa0JBQWtCO01BQ2xCVixnQkFBZ0I7TUFDaEJ5UTtJQUVGLENBQUMsR0FBR3JQLE9BQU87SUFETnNQLGVBQWUsR0FBQTFFLHFGQUFBLENBQ2hCNUssT0FBTyxFQUFBNkssU0FBQTtFQUVYLE1BQU0wRSxXQUFXLEdBQUc1VixNQUFNLENBQUNDLE9BQU8sQ0FBQzBWLGVBQWUsQ0FBQyxDQUFDOVIsR0FBRyxDQUFDekQsSUFBQTtJQUFBLElBQUMsQ0FBQ0MsR0FBRyxFQUFFQyxLQUFLLENBQUMsR0FBQUYsSUFBQTtJQUFBLE9BQU07TUFDekV5VixXQUFXLEVBQUVDLFFBQVEsQ0FBQ3pWLEdBQUcsQ0FBQ21WLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQ08sR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7TUFDL0NoQixNQUFNLEVBQUUsQ0FBQXpVLEtBQUssYUFBTEEsS0FBSyx1QkFBTEEsS0FBSyxDQUFFcVIsUUFBUSxDQUFDLENBQUMsS0FBSTtJQUMvQixDQUFDO0VBQUEsQ0FBQyxDQUFDO0VBRUgsT0FBTztJQUNMbE0sY0FBYztJQUNkQyxtQkFBbUI7SUFDbkJDLGtCQUFrQjtJQUNsQlYsZ0JBQWdCO0lBQ2hCeVEsbUJBQW1CO0lBQ25CQyxlQUFlLEVBQUVDO0VBQ25CLENBQUM7QUFDSCxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNqSU0sTUFBTUksaUJBQWlCLEdBQUcsTUFBTTtBQUNoQyxNQUFNQyxxQkFBcUIsR0FBRyxVQUFVO0FBQ3hDLE1BQU14QyxxQkFBcUIsR0FBRyxVQUFVO0FBQ3hDLE1BQU1JLDRCQUE0QixHQUFHLGlCQUFpQjtBQUN0RCxNQUFNRixxQkFBcUIsR0FBRyxVQUFVO0FBQ3hDLE1BQU1ELHlCQUF5QixHQUFHLGNBQWM7QUFDaEQsTUFBTUUsNEJBQTRCLEdBQUcsaUJBQWlCO0FBQ3RELE1BQU1zQyx3QkFBd0IsR0FBRyxhQUFhOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ1ByRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRTBCO0FBQ1M7QUFPUDtBQVNQO0FBQzBDO0FBQ1E7QUFDRTtBQUNNO0FBQ1I7QUFBQTtBQUV2RSxNQUFNQyx5QkFBeUIsR0FBSUMsWUFBWSxJQUFLO0VBQ2xELFFBQVFBLFlBQVk7SUFDbEIsS0FBS0gsNkRBQXFCO0lBQzFCLEtBQUtELHlEQUFpQjtNQUFFO1FBQ3RCLE9BQU94QyxxRUFBaUI7TUFDMUI7SUFDQSxLQUFLQyw2REFBcUI7TUFBRTtRQUMxQixPQUFPZCx5RUFBcUI7TUFDOUI7SUFDQSxLQUFLa0Isb0VBQTRCO01BQUU7UUFDakMsT0FBT1AsMEVBQXNCO01BQy9CO0lBQ0EsS0FBS0ksaUVBQXlCO01BQUU7UUFDOUIsT0FBT25ELDZFQUF5QjtNQUNsQztJQUNBLEtBQUtxRCxvRUFBNEI7SUFDakMsS0FBS0QsNkRBQXFCO01BQUU7UUFDMUIsT0FBT1QseUVBQXFCO01BQzlCO0lBQ0E7TUFBUztRQUNQLE9BQU9ySyx1REFBYztNQUN2QjtFQUNGO0FBQ0YsQ0FBQztBQUVELE1BQU1LLG9CQUFvQixHQUFHOUksSUFBQSxJQU92QjtFQUFBLElBUHdCO0lBQzVCM0QsY0FBYztJQUNkaVEsU0FBUyxHQUFHLGdCQUFnQjtJQUM1QmdFLGlCQUFpQixHQUFHLGVBQWU7SUFDbkM0RixRQUFRLEdBQUcsS0FBSztJQUNoQkMsU0FBUyxHQUFHLElBQUk7SUFDaEJ4TTtFQUNGLENBQUMsR0FBQTNKLElBQUE7RUFDQyxNQUFNb1csVUFBVSxHQUFHQSxDQUFDekMsSUFBSSxFQUFFNUMsWUFBWSxLQUFLO0lBQ3pDLE1BQU1rRCxVQUFVLEdBQUdQLDREQUFTLENBQUMvSixNQUFNLENBQUNJLE1BQU0sQ0FBQ2dILFlBQVksQ0FBQyxFQUFFNEMsSUFBSSxDQUFDO0lBQy9ELE1BQU0wQyxTQUFTLEdBQUdyQyxrRUFBZSxDQUFDTCxJQUFJLEVBQUVNLFVBQVUsQ0FBQztJQUVuRCxJQUFJb0MsU0FBUyxFQUFFO01BQ2I7TUFDQSxPQUFPQyxjQUFjLENBQUMzQyxJQUFJLENBQUM0QyxZQUFZLENBQUM7SUFDMUM7SUFFQSxPQUFPLElBQUk7RUFDYixDQUFDO0VBRUQsTUFBTUQsY0FBYyxHQUFJOUIsQ0FBQyxJQUFLO0lBQUEsSUFBQWdDLHFCQUFBO0lBQzVCLE1BQU16RixZQUFZLEdBQUdiLHlEQUFNLENBQUNzRSxDQUFDLENBQUNoVCxJQUFJLEVBQUVnVCxDQUFDLENBQUMvUyxFQUFFLENBQUM7SUFDekM7SUFDQSxNQUFNOE8sVUFBVSxHQUNiLENBQUM0RixTQUFTLElBQUl6Qiw2REFBVSxDQUFDL0ssTUFBTSxDQUFDSSxNQUFNLENBQUNnSCxZQUFZLENBQUMsQ0FBQyxJQUFLbUYsUUFBUTtJQUNyRSxNQUFNTyxzQkFBc0IsR0FBR1YseUJBQXlCLENBQUN2QixDQUFDLENBQUNTLElBQUksQ0FBQztJQUVoRSxNQUFNeUIsV0FBVyxHQUFHO01BQ2xCeFcsS0FBSyxFQUFFeUosTUFBTSxDQUFDSSxNQUFNLENBQUNnSCxZQUFZLENBQUM7TUFDbENQLFFBQVEsRUFBRTdHLE1BQU0sQ0FBQ2dOLFlBQVk7TUFDN0JDLE1BQU0sRUFBRWpOLE1BQU0sQ0FBQ2tOLFVBQVU7TUFDekJuRyxLQUFLLEVBQ0gvRyxNQUFNLENBQUNtTixPQUFPLENBQUMvRixZQUFZLENBQUMsSUFBSWdHLE9BQU8sQ0FBQ3BOLE1BQU0sQ0FBQzdKLE1BQU0sQ0FBQ2lSLFlBQVksQ0FBQyxDQUFDO01BQ3RFSixVQUFVLEVBQUVoSCxNQUFNLENBQUNtTixPQUFPLENBQUMvRixZQUFZLENBQUMsSUFBSXBILE1BQU0sQ0FBQzdKLE1BQU0sQ0FBQ2lSLFlBQVksQ0FBQztNQUN2RU4sYUFBYSxFQUFFOUcsTUFBTSxDQUFDOEc7SUFDeEIsQ0FBQztJQUVELG9CQUNFcEgsdURBQUEsQ0FBQ29OLHNCQUFzQixFQUFBN1IsYUFBQSxDQUFBQSxhQUFBO01BRXJCeUwsUUFBUSxFQUFFbUUsQ0FBRTtNQUNabEUsaUJBQWlCLEVBQUVBLGlCQUFrQjtNQUNyQ0MsVUFBVSxFQUFFQTtNQUNaO0lBQUEsR0FDSW1HLFdBQVc7TUFBQXRNLFFBQUEsR0FBQW9NLHFCQUFBLEdBRWRoQyxDQUFDLENBQUN3QyxrQkFBa0IsY0FBQVIscUJBQUEsdUJBQXBCQSxxQkFBQSxDQUFzQi9TLEdBQUcsQ0FBRWtRLElBQUksSUFBS3lDLFVBQVUsQ0FBQ3pDLElBQUksRUFBRTVDLFlBQVksQ0FBQztJQUFDLElBUC9EQSxZQVFpQixDQUFDO0VBRTdCLENBQUM7RUFFRCxvQkFBTzFILHVEQUFBO0lBQUtpRCxTQUFTLEVBQUVBLFNBQVU7SUFBQWxDLFFBQUEsRUFBRS9OLGNBQWMsQ0FBQ29ILEdBQUcsQ0FBQzZTLGNBQWM7RUFBQyxDQUFNLENBQUM7QUFDOUUsQ0FBQztBQUVEeE4sb0JBQW9CLENBQUM4QixTQUFTLEdBQUc7RUFDL0J2TyxjQUFjLEVBQUVxTSx5REFBZSxDQUFDNkIsVUFBVTtFQUMxQytCLFNBQVMsRUFBRTVELDBEQUFnQjtFQUMzQjRILGlCQUFpQixFQUFFNUgsMERBQWdCO0VBQ25DeU4sU0FBUyxFQUFFek4sd0RBQWM7RUFDekJ3TixRQUFRLEVBQUV4Tix3REFBY2tFO0FBQzFCLENBQUM7QUFFRCxpRUFBZTlELG9CQUFvQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQzVISztBQUNnQjtBQUNyQjtBQVVaO0FBQ3FDO0FBQ2I7QUFDWTtBQUFBO0FBRTNELE1BQU0wTyxjQUFjLEdBQUd4WCxJQUFBLElBQWtCO0VBQUEsSUFBakI7SUFBRXlYO0VBQVMsQ0FBQyxHQUFBelgsSUFBQTtFQUNsQyxNQUFNO0lBQ0poQyxNQUFNLEVBQUU7TUFBRU4sMEJBQTBCLEVBQUVnYTtJQUFhO0VBQ3JELENBQUMsR0FBR1Qsd0RBQVcsQ0FBRVUsS0FBSyxJQUFLQSxLQUFLLENBQUM1VyxXQUFXLElBQUksQ0FBQyxDQUFDLEVBQUVtVyxxREFBWSxDQUFDO0VBRWpFLE1BQU0sQ0FBQ1UsVUFBVSxFQUFFQyxhQUFhLENBQUMsR0FBRzlMLCtDQUFRLENBQUMsQ0FBQyxDQUFDMkwsWUFBWSxDQUFDO0VBRTVELE1BQU1JLGNBQWMsR0FBRyxDQUNyQjtJQUFFNVgsS0FBSyxFQUFFLElBQUk7SUFBRW9SLEtBQUssRUFBRTtFQUFLLENBQUMsRUFDNUI7SUFBRXBSLEtBQUssRUFBRSxhQUFhO0lBQUVvUixLQUFLLEVBQUU7RUFBZSxDQUFDLEVBQy9DO0lBQUVwUixLQUFLLEVBQUUsUUFBUTtJQUFFb1IsS0FBSyxFQUFFO0VBQVMsQ0FBQyxDQUNyQztFQUVELE1BQU15RyxrQkFBa0IsR0FBR0EsQ0FBQzNGLEVBQUUsRUFBRWxTLEtBQUssS0FBSztJQUN4QyxNQUFNOFgsU0FBUyxHQUFHOVgsS0FBSztJQUN2QnVYLFFBQVEsQ0FBQztNQUNQLENBQUMvWixnRUFBMEIsR0FBR3NhO0lBQ2hDLENBQUMsQ0FBQztFQUNKLENBQUM7RUFFRCxvQkFDRXpPLHVEQUFBLENBQUNYLDhDQUFHO0lBQUF3QixRQUFBLGdCQUNGZixzREFBQSxDQUFDOE4scURBQVU7TUFDVDdXLEtBQUssRUFBQyxVQUFVO01BQ2hCZ00sU0FBUyxFQUFFbkIsNkRBQW9CO01BQy9CdUIsT0FBTyxFQUFFQSxDQUFBLEtBQU1tTCxhQUFhLENBQUMsQ0FBQ0QsVUFBVSxDQUFFO01BQzFDTSxNQUFNLGVBQ0o3TyxzREFBQSxDQUFDK04scURBQVU7UUFBQyxjQUFXLFFBQVE7UUFBQ2UsYUFBYTtRQUFBL04sUUFBQSxlQUMzQ2Ysc0RBQUEsQ0FBQ2tPLHVFQUFjO1VBQ2IvSyxLQUFLLEVBQUU7WUFDTDRMLFNBQVMsRUFBRVIsVUFBVSxHQUFHLGdCQUFnQixHQUFHLGNBQWM7WUFDekRTLFVBQVUsRUFBRTtVQUNkO1FBQUUsQ0FDSDtNQUFDLENBQ1E7SUFDYixDQUNGLENBQUMsZUFDRmhQLHNEQUFBLENBQUNnTyxtREFBUTtNQUFDaUIsRUFBRSxFQUFFVixVQUFXO01BQUNXLE9BQU8sRUFBQyxNQUFNO01BQUNDLGFBQWE7TUFBQXBPLFFBQUEsZUFDcERmLHNEQUFBLENBQUNpTyxzREFBVztRQUNWOUUsRUFBRSxFQUFFO1VBQ0ZpRyxFQUFFLEVBQUUsQ0FBQztVQUNMakosZUFBZSxFQUFFLFdBQVc7VUFDNUIsY0FBYyxFQUFFO1lBQ2RrSixFQUFFLEVBQUU7VUFDTjtRQUNGLENBQUU7UUFBQXRPLFFBQUEsZUFFRmYsc0RBQUEsQ0FBQzRKLHFEQUFVO1VBQUMvUyxLQUFLLEVBQUV3WCxZQUFhO1VBQUNsSCxRQUFRLEVBQUV1SCxrQkFBbUI7VUFBQTNOLFFBQUEsRUFDM0QwTixjQUFjLENBQUNyVSxHQUFHLENBQUVrVixRQUFRLGlCQUMzQnRQLHNEQUFBLENBQUNULDhDQUFHO1lBQ0Y0SixFQUFFLEVBQUU7Y0FBRWlHLEVBQUUsRUFBRTtZQUFFLENBQUU7WUFBQXJPLFFBQUEsZUFHZGYsc0RBQUEsQ0FBQ3dHLDJEQUFnQjtjQUNmcUMsT0FBTyxlQUNMN0ksc0RBQUEsQ0FBQzJKLGdEQUFLO2dCQUNKOVMsS0FBSyxFQUFFeVksUUFBUSxDQUFDelksS0FBTTtnQkFDdEJzUyxFQUFFLEVBQUU7a0JBQ0Ysb0JBQW9CLEVBQUU7b0JBQUU5RCxRQUFRLEVBQUU7a0JBQUcsQ0FBQztrQkFDdEMsZUFBZSxFQUFFO29CQUFFVyxLQUFLLEVBQUU7a0JBQVU7Z0JBQ3RDO2NBQUUsQ0FDSCxDQUNGO2NBQ0RpQyxLQUFLLEVBQUVxSCxRQUFRLENBQUNySCxLQUFNO2NBQ3RCa0IsRUFBRSxFQUFFO2dCQUNGLDhCQUE4QixFQUFFO2tCQUM5QjlELFFBQVEsRUFBRTtnQkFDWjtjQUNGO1lBQUUsQ0FDSDtVQUFDLDJCQUFBblEsTUFBQSxDQWxCMkJvYSxRQUFRLENBQUNySCxLQUFLLE1BbUJ4QyxDQUNOO1FBQUMsQ0FDUTtNQUFDLENBQ0Y7SUFBQyxDQUNOLENBQUM7RUFBQSxDQUNSLENBQUM7QUFFVixDQUFDO0FBRURrRyxjQUFjLENBQUM1TSxTQUFTLEdBQUc7RUFDekI2TSxRQUFRLEVBQUUvTyx3REFBY3FDO0FBQzFCLENBQUM7QUFFRCxpRUFBZXlNLGNBQWM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNwR3NCO0FBQ0s7QUFDckI7QUFTWjtBQUNxQztBQUNiO0FBQ1U7QUFBQTtBQUV6RCxNQUFNcUIsa0JBQWtCLEdBQUc3WSxJQUFBLElBQWtCO0VBQUEsSUFBakI7SUFBRXlYO0VBQVMsQ0FBQyxHQUFBelgsSUFBQTtFQUN0QyxNQUFNO0lBQ0ozQyxNQUFNLEVBQUU7TUFBRXliO0lBQXFCLENBQUM7SUFDaEM5YSxNQUFNLEVBQUU7TUFBRVIsd0JBQXdCLEVBQUVrYTtJQUFhO0VBQ25ELENBQUMsR0FBR1Qsd0RBQVcsQ0FBRVUsS0FBSyxJQUFLQSxLQUFLLENBQUM1VyxXQUFXLElBQUksQ0FBQyxDQUFDLEVBQUVtVyxxREFBWSxDQUFDO0VBRWpFLE1BQU0sQ0FBQ1UsVUFBVSxFQUFFQyxhQUFhLENBQUMsR0FBRzlMLCtDQUFRLENBQUMsQ0FBQyxDQUFDMkwsWUFBWSxDQUFDaFosTUFBTSxDQUFDO0VBRW5FLE1BQU1xWixrQkFBa0IsR0FBSTdYLEtBQUssSUFBSztJQUNwQyxNQUFNNlksVUFBVSxHQUFHckIsWUFBWSxhQUFaQSxZQUFZLGVBQVpBLFlBQVksQ0FBRXZGLFFBQVEsQ0FBQ2pTLEtBQUssQ0FBQyxHQUM1Q3dYLFlBQVksQ0FBQzFaLE1BQU0sQ0FBRWdiLENBQUMsSUFBS0EsQ0FBQyxLQUFLOVksS0FBSyxDQUFDLEdBQ3ZDLENBQUMsR0FBR3dYLFlBQVksRUFBRXhYLEtBQUssQ0FBQztJQUM1QnVYLFFBQVEsQ0FBQztNQUNQLENBQUNqYSw4REFBd0IsR0FBR3ViO0lBQzlCLENBQUMsQ0FBQztFQUNKLENBQUM7RUFFREgsZ0RBQVMsQ0FBQyxNQUFNO0lBQ2RmLGFBQWEsQ0FBQyxDQUFDLENBQUNILFlBQVksQ0FBQ2haLE1BQU0sQ0FBQztFQUN0QyxDQUFDLEVBQUUsQ0FBQ2daLFlBQVksQ0FBQyxDQUFDO0VBRWxCLG9CQUNFbk8sdURBQUEsQ0FBQ1gsOENBQUc7SUFBQXdCLFFBQUEsZ0JBQ0ZmLHNEQUFBLENBQUM4TixxREFBVTtNQUNUN1csS0FBSyxFQUFDLGVBQWU7TUFDckJnTSxTQUFTLEVBQUVuQiw2REFBb0I7TUFDL0J1QixPQUFPLEVBQUVBLENBQUEsS0FBTW1MLGFBQWEsQ0FBQyxDQUFDRCxVQUFVLENBQUU7TUFDMUNNLE1BQU0sZUFDSjdPLHNEQUFBLENBQUMrTixxREFBVTtRQUFDLGNBQVcsUUFBUTtRQUFDZSxhQUFhO1FBQUEvTixRQUFBLGVBQzNDZixzREFBQSxDQUFDa08sdUVBQWM7VUFDYi9LLEtBQUssRUFBRTtZQUNMNEwsU0FBUyxFQUFFUixVQUFVLEdBQUcsZ0JBQWdCLEdBQUcsY0FBYztZQUN6RFMsVUFBVSxFQUFFO1VBQ2Q7UUFBRSxDQUNIO01BQUMsQ0FDUTtJQUNiLENBQ0YsQ0FBQyxlQUNGaFAsc0RBQUEsQ0FBQ2dPLG1EQUFRO01BQUNpQixFQUFFLEVBQUVWLFVBQVc7TUFBQ1csT0FBTyxFQUFDLE1BQU07TUFBQ0MsYUFBYTtNQUFBcE8sUUFBQSxlQUNwRGYsc0RBQUEsQ0FBQ2lPLHNEQUFXO1FBQ1Y5RSxFQUFFLEVBQUU7VUFDRmlHLEVBQUUsRUFBRSxDQUFDO1VBQ0xqSixlQUFlLEVBQUUsV0FBVztVQUM1QixjQUFjLEVBQUU7WUFDZGtKLEVBQUUsRUFBRTtVQUNOO1FBQ0YsQ0FBRTtRQUFBdE8sUUFBQSxFQUVEME8sb0JBQW9CLENBQUNyVixHQUFHLENBQUV3VixFQUFFLGlCQUMzQjVQLHNEQUFBLENBQUNULDhDQUFHO1VBQUM0SixFQUFFLEVBQUU7WUFBRWlHLEVBQUUsRUFBRTtVQUFFLENBQUU7VUFBQXJPLFFBQUEsZUFDakJmLHNEQUFBLENBQUN3RywyREFBZ0I7WUFDZnFDLE9BQU8sZUFDTDdJLHNEQUFBLENBQUNzRyxtREFBUTtjQUNQYSxRQUFRLEVBQUVBLENBQUEsS0FBTXVILGtCQUFrQixDQUFDa0IsRUFBRSxDQUFDeFgsRUFBRSxDQUFFO2NBQzFDZ1EsT0FBTyxFQUFFaUcsWUFBWSxDQUFDdkYsUUFBUSxDQUFDOEcsRUFBRSxDQUFDeFgsRUFBRSxDQUFFO2NBQ3RDK1EsRUFBRSxFQUFFO2dCQUNGLG9CQUFvQixFQUFFO2tCQUFFOUQsUUFBUSxFQUFFO2dCQUFHLENBQUM7Z0JBQ3RDLGVBQWUsRUFBRTtrQkFDZlcsS0FBSyxFQUFFO2dCQUNUO2NBQ0Y7WUFBRSxDQUNILENBQ0Y7WUFDRGlDLEtBQUssRUFBRTJILEVBQUUsQ0FBQ3pYLElBQUs7WUFDZmdSLEVBQUUsRUFBRTtjQUNGLDhCQUE4QixFQUFFO2dCQUM5QjlELFFBQVEsRUFBRTtjQUNaO1lBQ0Y7VUFBRSxDQUNIO1FBQUMsMkJBQUFuUSxNQUFBLENBcEI2QzBhLEVBQUUsQ0FBQ3pYLElBQUksTUFxQm5ELENBQ047TUFBQyxDQUNTO0lBQUMsQ0FDTixDQUFDO0VBQUEsQ0FDUixDQUFDO0FBRVYsQ0FBQztBQUVEcVgsa0JBQWtCLENBQUNqTyxTQUFTLEdBQUc7RUFDN0I2TSxRQUFRLEVBQUUvTyx3REFBY3FDO0FBQzFCLENBQUM7QUFFRCxpRUFBZThOLGtCQUFrQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNsRzBCO0FBQ3hCO0FBQ0s7QUFDb0I7QUFTckM7QUFDd0I7QUFDVDtBQUNTO0FBQ087QUFRL0I7QUFDMkI7QUFDSjtBQUNKO0FBQ0k7QUFDRTtBQUFBO0FBRWhELE1BQU1rQixNQUFNLEdBQUcvWixJQUFBLElBQW1DO0VBQUEsSUFBbEM7SUFBRXlYLFFBQVE7SUFBRXVDLE9BQU87SUFBRWhjO0VBQU8sQ0FBQyxHQUFBZ0MsSUFBQTtFQUMzQyxNQUFNO0lBQUVMO0VBQUUsQ0FBQyxHQUFHZ0osNkRBQWMsQ0FBQyxDQUFDO0VBQzlCLE1BQU0sQ0FBQ3NSLGNBQWMsRUFBRUMsaUJBQWlCLENBQUMsR0FBR25PLCtDQUFRLENBQUMsS0FBSyxDQUFDO0VBQzNELE1BQU0sQ0FBQ29PLGNBQWMsRUFBRUMsaUJBQWlCLENBQUMsR0FBR3JPLCtDQUFRLENBQUMsS0FBSyxDQUFDO0VBQzNELE1BQU0sQ0FBQ3NPLGVBQWUsRUFBRUMsa0JBQWtCLENBQUMsR0FBR3ZPLCtDQUFRLENBQUMsSUFBSSxDQUFDO0VBQzVELE1BQU13TyxTQUFTLEdBQUdyQiw2Q0FBTSxDQUFDLElBQUksQ0FBQztFQUM5QixNQUFNc0Isd0JBQXdCLEdBQUlDLEtBQUssSUFBSztJQUMxQyxJQUFJRixTQUFTLENBQUNHLE9BQU8sSUFBSSxDQUFDSCxTQUFTLENBQUNHLE9BQU8sQ0FBQ0MsUUFBUSxDQUFDRixLQUFLLENBQUNwSSxNQUFNLENBQUMsRUFBRTtNQUNsRSxJQUFJNEgsY0FBYyxFQUFFO1FBQ2xCQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUM7UUFDeEJFLGlCQUFpQixDQUFDLEtBQUssQ0FBQztNQUMxQjtJQUNGO0VBQ0YsQ0FBQztFQUNEeEIsZ0RBQVMsQ0FBQyxNQUFNO0lBQ2Q3USxRQUFRLENBQUM2UyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUVKLHdCQUF3QixFQUFFLEtBQUssQ0FBQztJQUNuRSxPQUFPLE1BQU07TUFDWHpTLFFBQVEsQ0FBQzhTLG1CQUFtQixDQUFDLE9BQU8sRUFBRUwsd0JBQXdCLEVBQUUsS0FBSyxDQUFDO0lBQ3hFLENBQUM7RUFDSCxDQUFDLEVBQUUsQ0FBQ1AsY0FBYyxDQUFDLENBQUM7RUFFcEIsTUFBTWEsdUJBQXVCLEdBQUcsQ0FBQztFQUNqQyxNQUFNQyxpQkFBaUIsR0FBRyxDQUFDO0VBRTNCLE1BQU1DLHNCQUFzQixHQUFJelosT0FBTyxJQUFLO0lBQzFDLElBQUkwWixLQUFLLEdBQUcsQ0FBQztJQUNicmIsTUFBTSxDQUFDQyxPQUFPLENBQUMwQixPQUFPLENBQUMsQ0FBQ3hCLE9BQU8sQ0FBQ1UsS0FBQSxJQUFlO01BQUEsSUFBZCxHQUFHUCxLQUFLLENBQUMsR0FBQU8sS0FBQTtNQUN4QyxJQUFJb1QsS0FBSyxDQUFDQyxPQUFPLENBQUM1VCxLQUFLLENBQUMsRUFBRTtRQUN4QithLEtBQUssSUFBSS9hLEtBQUssQ0FBQ3hCLE1BQU07TUFDdkIsQ0FBQyxNQUFNLElBQUksT0FBT3dCLEtBQUssS0FBSyxRQUFRLElBQUlBLEtBQUssQ0FBQ2diLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1FBQzNERCxLQUFLLElBQUlGLGlCQUFpQjtNQUM1QixDQUFDLE1BQU0sSUFBSSxPQUFPN2EsS0FBSyxLQUFLLFFBQVEsSUFBSUEsS0FBSyxHQUFHLENBQUMsRUFBRTtRQUNqRCthLEtBQUssSUFBSUYsaUJBQWlCO01BQzVCO0lBQ0YsQ0FBQyxDQUFDO0lBQ0YsT0FBT0UsS0FBSztFQUNkLENBQUM7RUFFRHJDLGdEQUFTLENBQUMsTUFBTTtJQUNkMEIsa0JBQWtCLENBQUNVLHNCQUFzQixDQUFDaGQsTUFBTSxDQUFDLENBQUM7RUFDcEQsQ0FBQyxFQUFFLENBQUNBLE1BQU0sQ0FBQyxDQUFDO0VBRVosTUFBTW1kLE1BQU0sR0FBR0EsQ0FBQSxLQUFNO0lBQ25CakIsaUJBQWlCLENBQUMsQ0FBQ0QsY0FBYyxDQUFDO0lBQ2xDRyxpQkFBaUIsQ0FBQyxDQUFDRCxjQUFjLENBQUM7RUFDcEMsQ0FBQztFQUVELE1BQU1pQixpQkFBaUIsR0FBR0EsQ0FBQSxLQUFNO0lBQzlCZCxrQkFBa0IsQ0FBQyxDQUFDLENBQUM7SUFDckJOLE9BQU8sQ0FBQyxDQUFDO0lBQ1RtQixNQUFNLENBQUMsQ0FBQztFQUNWLENBQUM7RUFFRCxvQkFDRTVSLHdEQUFBLENBQUNYLDhDQUFHO0lBQUMwRCxTQUFTLEVBQUVuQixnRUFBdUI7SUFBQ21RLEdBQUcsRUFBRWYsU0FBVTtJQUFBblEsUUFBQSxnQkFDckRiLHdEQUFBLENBQUM0UCw0REFBSztNQUNKMUcsVUFBVSxFQUFDLFFBQVE7TUFDbkIxVCxTQUFTLEVBQUMsS0FBSztNQUNmeVQsRUFBRSxFQUFFO1FBQUUrSSxFQUFFLEVBQUUsQ0FBQztRQUFFN0MsRUFBRSxFQUFFO01BQUUsQ0FBRTtNQUNyQmhNLE9BQU8sRUFBRXlPLE1BQU87TUFBQS9RLFFBQUEsZ0JBRWhCZix1REFBQSxDQUFDZ1EsZ0RBQUs7UUFDSm1DLFlBQVksRUFBRW5CLGVBQWdCO1FBQzlCaEwsS0FBSyxFQUFDLFNBQVM7UUFDZm1ELEVBQUUsRUFBRTtVQUFFaUosRUFBRSxFQUFFcEIsZUFBZSxHQUFHLENBQUMsR0FBR1MsdUJBQXVCLEdBQUc7UUFBRyxDQUFFO1FBQUExUSxRQUFBLGVBRS9EZix1REFBQSxDQUFDK1AsdUVBQWM7VUFBQzFLLFFBQVEsRUFBQyxPQUFPO1VBQUNwQyxTQUFTLEVBQUVuQiwyREFBaUJ1UTtRQUFDLENBQUU7TUFBQyxDQUM1RCxDQUFDLGVBQ1JyUyx1REFBQTtRQUFNaUQsU0FBUyxFQUFFbkIsNERBQW1CO1FBQUFmLFFBQUEsRUFBRXpLLENBQUMsQ0FBQyxlQUFlO01BQUMsQ0FBTyxDQUFDO0lBQUEsQ0FDM0QsQ0FBQyxlQUNSMEosdURBQUEsQ0FBQ1QsOENBQUc7TUFDRjBELFNBQVMsS0FBQS9OLE1BQUEsQ0FBSzRNLG9FQUEwQixPQUFBNU0sTUFBQSxDQUFJNE0sMERBQWdCLE9BQUE1TSxNQUFBLENBQzFEMGIsY0FBYyxHQUFHOU8sK0RBQXFCLEdBQUcsRUFBRSxDQUMxQztNQUFBZixRQUFBLGVBRUhmLHVEQUFBLENBQUNvUSxnREFBSztRQUFDcUMsU0FBUyxFQUFFLENBQUU7UUFBQ3hQLFNBQVMsRUFBRW5CLHdFQUErQjtRQUFBZixRQUFBLGVBQzdEYix3REFBQSxDQUFDZ1EsK0NBQUk7VUFBQ3lDLE9BQU8sRUFBQyxVQUFVO1VBQUE1UixRQUFBLGdCQUN0QmYsdURBQUEsQ0FBQzhOLHFEQUFVO1lBQ1Q3VyxLQUFLLEVBQUMsU0FBUztZQUNmNFgsTUFBTSxlQUNKN08sdURBQUEsQ0FBQ2lRLGlEQUFNO2NBQ0xuQixhQUFhO2NBQ2I2RCxPQUFPLEVBQUMsTUFBTTtjQUNkdFAsT0FBTyxFQUFFME8saUJBQWtCO2NBQzNCOU8sU0FBUyxFQUFFbkIsNERBQW1CO2NBQUFmLFFBQUEsRUFFN0J6SyxDQUFDLENBQUMsY0FBYztZQUFDLENBQ1o7VUFDVCxDQUNGLENBQUMsZUFDRjBKLHVEQUFBLENBQUNtUSxrREFBTyxJQUFFLENBQUMsZUFDWG5RLHVEQUFBLENBQUN3UCwyREFBa0I7WUFDakI5TyxNQUFNLEVBQUUvTCxNQUFNLENBQUNSLDhEQUF3QixDQUFFO1lBQ3pDaWEsUUFBUSxFQUFHTyxTQUFTLElBQUtQLFFBQVEsQ0FBQ08sU0FBUztVQUFFLENBQzlDLENBQUMsZUFDRjNPLHVEQUFBLENBQUNtTyx3REFBYztZQUNiek4sTUFBTSxFQUFFL0wsTUFBTSxDQUFDTixnRUFBMEIsQ0FBRTtZQUMzQytaLFFBQVEsRUFBR08sU0FBUyxJQUFLUCxRQUFRLENBQUNPLFNBQVM7VUFBRSxDQUM5QyxDQUFDLGVBQ0YzTyx1REFBQSxDQUFDdVEsc0RBQVk7WUFDWDdQLE1BQU0sRUFBRS9MLE1BQU0sQ0FBQ0wsNkRBQXVCLENBQUU7WUFDeEM4WixRQUFRLEVBQUdPLFNBQVMsSUFBS1AsUUFBUSxDQUFDTyxTQUFTO1VBQUUsQ0FDOUMsQ0FBQyxlQUNGM08sdURBQUEsQ0FBQ3NRLDBEQUFnQjtZQUNmNVAsTUFBTSxFQUFFL0wsTUFBTSxDQUFDUCw0REFBc0IsQ0FBRTtZQUN2Q2dhLFFBQVEsRUFBR08sU0FBUyxJQUFLUCxRQUFRLENBQUNPLFNBQVM7VUFBRSxDQUM5QyxDQUFDLGVBQ0YzTyx1REFBQSxDQUFDeVEseURBQWU7WUFDZC9QLE1BQU0sRUFBRS9MLE1BQU0sQ0FBQ0osMERBQW9CLENBQUU7WUFDckM2WixRQUFRLEVBQUdPLFNBQVMsSUFBS1AsUUFBUSxDQUFDTyxTQUFTO1VBQUUsQ0FDOUMsQ0FBQyxlQUNGM08sdURBQUEsQ0FBQ3dRLHdEQUFjO1lBQ2I5UCxNQUFNLEVBQUUvTCxNQUFNLENBQUNILDBEQUFvQixDQUFFO1lBQ3JDNFosUUFBUSxFQUFHTyxTQUFTLElBQUtQLFFBQVEsQ0FBQ08sU0FBUztVQUFFLENBQzlDLENBQUM7UUFBQSxDQUNFO01BQUMsQ0FDRjtJQUFDLENBQ0wsQ0FBQztFQUFBLENBQ0gsQ0FBQztBQUVWLENBQUM7QUFFRCtCLE1BQU0sQ0FBQ25QLFNBQVMsR0FBRztFQUNqQjZNLFFBQVEsRUFBRS9PLHdEQUFjcUM7QUFDMUIsQ0FBQztBQUVELE1BQU1tUixlQUFlLEdBQUdyYixLQUFBO0VBQUEsSUFBQztJQUFFRTtFQUFZLENBQUMsR0FBQUYsS0FBQTtFQUFBLE9BQU07SUFDNUMzQyxJQUFJLEVBQUU2QyxXQUFXLENBQUM3QyxJQUFJO0lBQ3RCRixNQUFNLEVBQUUrQyxXQUFXLENBQUMvQztFQUN0QixDQUFDO0FBQUEsQ0FBQztBQUVGLGlFQUFlMGIsb0RBQU8sQ0FBQ3dDLGVBQWUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDbkMsTUFBTSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDbEtYO0FBQ2dCO0FBQ3JCO0FBVVo7QUFDcUM7QUFDYjtBQUNNO0FBQUE7QUFFckQsTUFBTUYsY0FBYyxHQUFHN1osSUFBQSxJQUFrQjtFQUFBLElBQWpCO0lBQUV5WDtFQUFTLENBQUMsR0FBQXpYLElBQUE7RUFDbEMsTUFBTTtJQUNKaEMsTUFBTSxFQUFFO01BQUVILG9CQUFvQixFQUFFNlo7SUFBYTtFQUMvQyxDQUFDLEdBQUdULHdEQUFXLENBQUVVLEtBQUssSUFBS0EsS0FBSyxDQUFDNVcsV0FBVyxJQUFJLENBQUMsQ0FBQyxFQUFFbVcscURBQVksQ0FBQztFQUVqRSxNQUFNLENBQUNVLFVBQVUsRUFBRUMsYUFBYSxDQUFDLEdBQUc5TCwrQ0FBUSxDQUFDLENBQUMsQ0FBQzJMLFlBQVksQ0FBQztFQUU1RCxNQUFNSSxjQUFjLEdBQUcsQ0FDckI7SUFBRTVYLEtBQUssRUFBRSxNQUFNO0lBQUVvUixLQUFLLEVBQUU7RUFBTyxDQUFDLEVBQ2hDO0lBQUVwUixLQUFLLEVBQUUsTUFBTTtJQUFFb1IsS0FBSyxFQUFFO0VBQU8sQ0FBQyxDQUNqQztFQUVELE1BQU15RyxrQkFBa0IsR0FBR0EsQ0FBQzNGLEVBQUUsRUFBRWxTLEtBQUssS0FBSztJQUN4QyxNQUFNOFgsU0FBUyxHQUFHOVgsS0FBSztJQUN2QnVYLFFBQVEsQ0FBQztNQUNQLENBQUM1WiwwREFBb0IsR0FBR21hO0lBQzFCLENBQUMsQ0FBQztFQUNKLENBQUM7RUFFRCxvQkFDRXpPLHVEQUFBLENBQUNYLDhDQUFHO0lBQUF3QixRQUFBLGdCQUNGZixzREFBQSxDQUFDOE4scURBQVU7TUFDVDdXLEtBQUssRUFBQyxhQUFhO01BQ25CZ00sU0FBUyxFQUFFbkIsNkRBQW9CO01BQy9CdUIsT0FBTyxFQUFFQSxDQUFBLEtBQU1tTCxhQUFhLENBQUMsQ0FBQ0QsVUFBVSxDQUFFO01BQzFDTSxNQUFNLGVBQ0o3TyxzREFBQSxDQUFDK04scURBQVU7UUFBQyxjQUFXLFFBQVE7UUFBQ2UsYUFBYTtRQUFBL04sUUFBQSxlQUMzQ2Ysc0RBQUEsQ0FBQ2tPLHVFQUFjO1VBQ2IvSyxLQUFLLEVBQUU7WUFDTDRMLFNBQVMsRUFBRVIsVUFBVSxHQUFHLGdCQUFnQixHQUFHLGNBQWM7WUFDekRTLFVBQVUsRUFBRTtVQUNkO1FBQUUsQ0FDSDtNQUFDLENBQ1E7SUFDYixDQUNGLENBQUMsZUFDRmhQLHNEQUFBLENBQUNnTyxtREFBUTtNQUFDaUIsRUFBRSxFQUFFVixVQUFXO01BQUNXLE9BQU8sRUFBQyxNQUFNO01BQUNDLGFBQWE7TUFBQXBPLFFBQUEsZUFDcERmLHNEQUFBLENBQUNpTyxzREFBVztRQUNWOUUsRUFBRSxFQUFFO1VBQ0ZpRyxFQUFFLEVBQUUsQ0FBQztVQUNMakosZUFBZSxFQUFFLFdBQVc7VUFDNUIsY0FBYyxFQUFFO1lBQ2RrSixFQUFFLEVBQUU7VUFDTjtRQUNGLENBQUU7UUFBQXRPLFFBQUEsZUFFRmYsc0RBQUEsQ0FBQzRKLHFEQUFVO1VBQUMvUyxLQUFLLEVBQUV3WCxZQUFhO1VBQUNsSCxRQUFRLEVBQUV1SCxrQkFBbUI7VUFBQTNOLFFBQUEsRUFDM0QwTixjQUFjLENBQUNyVSxHQUFHLENBQUVrVixRQUFRLGlCQUMzQnRQLHNEQUFBLENBQUNULDhDQUFHO1lBQ0Y0SixFQUFFLEVBQUU7Y0FBRWlHLEVBQUUsRUFBRTtZQUFFLENBQUU7WUFBQXJPLFFBQUEsZUFHZGYsc0RBQUEsQ0FBQ3dHLDJEQUFnQjtjQUNmcUMsT0FBTyxlQUNMN0ksc0RBQUEsQ0FBQzJKLGdEQUFLO2dCQUNKOVMsS0FBSyxFQUFFeVksUUFBUSxDQUFDelksS0FBTTtnQkFDdEJzUyxFQUFFLEVBQUU7a0JBQ0Ysb0JBQW9CLEVBQUU7b0JBQUU5RCxRQUFRLEVBQUU7a0JBQUcsQ0FBQztrQkFDdEMsZUFBZSxFQUFFO29CQUFFVyxLQUFLLEVBQUU7a0JBQVU7Z0JBQ3RDO2NBQUUsQ0FDSCxDQUNGO2NBQ0RpQyxLQUFLLEVBQUVxSCxRQUFRLENBQUNySCxLQUFNO2NBQ3RCa0IsRUFBRSxFQUFFO2dCQUNGLDhCQUE4QixFQUFFO2tCQUM5QjlELFFBQVEsRUFBRTtnQkFDWjtjQUNGO1lBQUUsQ0FDSDtVQUFDLDJCQUFBblEsTUFBQSxDQWxCMkJvYSxRQUFRLENBQUNySCxLQUFLLE1BbUJ4QyxDQUNOO1FBQUMsQ0FDUTtNQUFDLENBQ0Y7SUFBQyxDQUNOLENBQUM7RUFBQSxDQUNSLENBQUM7QUFFVixDQUFDO0FBRUR1SSxjQUFjLENBQUNqUCxTQUFTLEdBQUc7RUFDekI2TSxRQUFRLEVBQUUvTyx3REFBY3FDO0FBQzFCLENBQUM7QUFFRCxpRUFBZThPLGNBQWM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNuRzhCO0FBQ0g7QUFDckI7QUFRWjtBQUNxQztBQUNiO0FBQ007QUFBQTtBQUVyRCxNQUFNQyxlQUFlLEdBQUc5WixJQUFBLElBQWtCO0VBQUEsSUFBakI7SUFBRXlYO0VBQVMsQ0FBQyxHQUFBelgsSUFBQTtFQUNuQyxNQUFNO0lBQ0poQyxNQUFNLEVBQUU7TUFBRUosb0JBQW9CLEVBQUU4WjtJQUFhO0VBQy9DLENBQUMsR0FBR1Qsd0RBQVcsQ0FBRVUsS0FBSyxJQUFLQSxLQUFLLENBQUM1VyxXQUFXLElBQUksQ0FBQyxDQUFDLEVBQUVtVyxxREFBWSxDQUFDO0VBRWpFLE1BQU0sQ0FBQ1UsVUFBVSxFQUFFQyxhQUFhLENBQUMsR0FBRzlMLCtDQUFRLENBQUMsQ0FBQyxDQUFDMkwsWUFBWSxDQUFDO0VBQzVELE1BQU0sQ0FBQ3lFLFNBQVMsRUFBRUMsWUFBWSxDQUFDLEdBQUdyUSwrQ0FBUSxDQUFDMkwsWUFBWSxJQUFJLEVBQUUsQ0FBQztFQUU5RCxNQUFNMkUsYUFBYSxHQUFHbkQsNkNBQU0sQ0FBQyxJQUFJLENBQUM7RUFDbEMsTUFBTW9ELGNBQWMsR0FBRyxHQUFHO0VBRTFCMUQsZ0RBQVMsQ0FBQyxNQUFNO0lBQ2R3RCxZQUFZLENBQUMxRSxZQUFZLElBQUksRUFBRSxDQUFDO0lBQ2hDRyxhQUFhLENBQUMsQ0FBQyxDQUFDSCxZQUFZLENBQUM7RUFDL0IsQ0FBQyxFQUFFLENBQUNBLFlBQVksQ0FBQyxDQUFDO0VBRWxCLE1BQU1LLGtCQUFrQixHQUFJM0YsRUFBRSxJQUFLO0lBQ2pDLE1BQU1tSyxZQUFZLEdBQUduSyxFQUFFLENBQUNDLE1BQU0sQ0FBQ25TLEtBQUs7SUFDcEM7SUFDQWtjLFlBQVksQ0FBQ0csWUFBWSxDQUFDOztJQUUxQjtJQUNBLElBQUlGLGFBQWEsQ0FBQzNCLE9BQU8sRUFBRTtNQUN6QjhCLFlBQVksQ0FBQ0gsYUFBYSxDQUFDM0IsT0FBTyxDQUFDO0lBQ3JDOztJQUVBO0lBQ0EyQixhQUFhLENBQUMzQixPQUFPLEdBQUdyTyxVQUFVLENBQUMsTUFBTTtNQUN2Q29MLFFBQVEsQ0FBQztRQUNQLENBQUM3WiwwREFBb0IsR0FBRzJlO01BQzFCLENBQUMsQ0FBQztJQUNKLENBQUMsRUFBRUQsY0FBYyxDQUFDO0VBQ3BCLENBQUM7RUFFRDFELGdEQUFTLENBQUMsTUFBTTtJQUNkO0lBQ0EsSUFBSXlELGFBQWEsQ0FBQzNCLE9BQU8sRUFBRTtNQUN6QjhCLFlBQVksQ0FBQ0gsYUFBYSxDQUFDM0IsT0FBTyxDQUFDO0lBQ3JDO0VBQ0YsQ0FBQyxFQUFFLEVBQUUsQ0FBQztFQUVOLG9CQUNFblIsdURBQUEsQ0FBQ1gsOENBQUc7SUFBQXdCLFFBQUEsZ0JBQ0ZmLHNEQUFBLENBQUM4TixxREFBVTtNQUNUN1csS0FBSyxFQUFDLFlBQVk7TUFDbEJnTSxTQUFTLEVBQUVuQiw2REFBb0I7TUFDL0J1QixPQUFPLEVBQUVBLENBQUEsS0FBTW1MLGFBQWEsQ0FBQyxDQUFDRCxVQUFVLENBQUU7TUFDMUNNLE1BQU0sZUFDSjdPLHNEQUFBLENBQUMrTixxREFBVTtRQUFDLGNBQVcsUUFBUTtRQUFDZSxhQUFhO1FBQUEvTixRQUFBLGVBQzNDZixzREFBQSxDQUFDa08sdUVBQWM7VUFDYi9LLEtBQUssRUFBRTtZQUNMNEwsU0FBUyxFQUFFUixVQUFVLEdBQUcsZ0JBQWdCLEdBQUcsY0FBYztZQUN6RFMsVUFBVSxFQUFFO1VBQ2Q7UUFBRSxDQUNIO01BQUMsQ0FDUTtJQUNiLENBQ0YsQ0FBQyxlQUNGaFAsc0RBQUEsQ0FBQ2dPLG1EQUFRO01BQUNpQixFQUFFLEVBQUVWLFVBQVc7TUFBQ1csT0FBTyxFQUFDLE1BQU07TUFBQ0MsYUFBYTtNQUFBcE8sUUFBQSxlQUNwRGYsc0RBQUEsQ0FBQ2lPLHNEQUFXO1FBQ1Y5RSxFQUFFLEVBQUU7VUFDRmhELGVBQWUsRUFBRSxXQUFXO1VBQzVCLGNBQWMsRUFBRTtZQUNkaUosRUFBRSxFQUFFO1VBQ047UUFDRixDQUFFO1FBQUFyTyxRQUFBLGVBRUZmLHNEQUFBLENBQUM4SixvREFBUztVQUNSNkksT0FBTyxFQUFDLFVBQVU7VUFDbEJTLFdBQVcsRUFBQyxrQkFBa0I7VUFDOUJ2YyxLQUFLLEVBQUVpYyxTQUFVO1VBQ2pCM0wsUUFBUSxFQUFFdUgsa0JBQW1CO1VBQzdCaEcsU0FBUztRQUFBLENBQ1Y7TUFBQyxDQUNTO0lBQUMsQ0FDTixDQUFDO0VBQUEsQ0FDUixDQUFDO0FBRVYsQ0FBQztBQUVEK0gsZUFBZSxDQUFDbFAsU0FBUyxHQUFHO0VBQzFCNk0sUUFBUSxFQUFFL08sd0RBQWNxQztBQUMxQixDQUFDO0FBRUQsaUVBQWUrTyxlQUFlOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNuR1U7QUFDTDtBQUNXO0FBQ007QUFDRjtBQUNGO0FBQ1o7QUFDVztBQUNTO0FBQUE7QUFFeEQsTUFBTWdELGVBQWUsR0FBR0osNERBQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPO0VBQzNDSyxRQUFRLEVBQUUsVUFBVTtFQUNwQkMsV0FBVyxFQUFFLEdBQUc7RUFDaEJDLFVBQVUsRUFBRSxHQUFHO0VBQ2Z0UixLQUFLLEVBQUUsTUFBTTtFQUNidVIsT0FBTyxFQUFFO0FBQ1gsQ0FBQyxDQUFDLENBQUM7QUFDSCxNQUFNQyxpQkFBaUIsR0FBR1QsNERBQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPO0VBQzdDVSxNQUFNLEVBQUUsTUFBTTtFQUNkTCxRQUFRLEVBQUUsVUFBVTtFQUNwQkcsT0FBTyxFQUFFLE1BQU07RUFDZnpLLFVBQVUsRUFBRSxRQUFRO0VBQ3BCNEssY0FBYyxFQUFFO0FBQ2xCLENBQUMsQ0FBQyxDQUFDO0FBQ0gsTUFBTUMsZUFBZSxHQUFHWiw0REFBTSxDQUFDRyxnRUFBUyxDQUFDLENBQUMsT0FBTztFQUMvQ3hOLEtBQUssRUFBRSxTQUFTO0VBQ2hCa08sWUFBWSxFQUFFLCtCQUErQjtFQUM3Q0MsV0FBVyxFQUFFLE1BQU07RUFDbkJDLFlBQVksRUFBRSxNQUFNO0VBQ3BCL08sUUFBUSxFQUFFO0FBQ1osQ0FBQyxDQUFDLENBQUM7QUFDSCxNQUFNZ1AsZ0JBQWdCLEdBQUdoQiw0REFBTSxDQUFDRSxrRUFBUyxDQUFDLENBQUMsT0FBTztFQUNoRGUsT0FBTyxFQUFFLEtBQUs7RUFDZGpQLFFBQVEsRUFBRSxPQUFPO0VBQ2pCME8sTUFBTSxFQUFFLE1BQU07RUFDZEwsUUFBUSxFQUFFLFVBQVU7RUFDcEJhLEdBQUcsRUFBRSxHQUFHO0VBQ1JDLEtBQUssRUFBRSxHQUFHO0VBQ1ZYLE9BQU8sRUFBRSxNQUFNO0VBQ2Z6SyxVQUFVLEVBQUUsUUFBUTtFQUNwQjRLLGNBQWMsRUFBRSxRQUFRO0VBQ3hCUyxNQUFNLEVBQUUsU0FBUztFQUNqQkMsTUFBTSxFQUFFO0FBQ1YsQ0FBQyxDQUFDLENBQUM7QUFFSCxNQUFNQyxNQUFNLEdBQUdoZSxJQUFBLElBQWtCO0VBQUEsSUFBakI7SUFBRWllO0VBQVMsQ0FBQyxHQUFBamUsSUFBQTtFQUMxQixNQUFNO0lBQUVMO0VBQUUsQ0FBQyxHQUFHZ0osNkRBQWMsQ0FBQyxDQUFDO0VBQzlCLE1BQU0sQ0FBQ3VWLFNBQVMsRUFBRUMsWUFBWSxDQUFDLEdBQUdwUywrQ0FBUSxDQUFDLEtBQUssQ0FBQztFQUNqRCxNQUFNLENBQUNxUyxXQUFXLEVBQUVDLGNBQWMsQ0FBQyxHQUFHdFMsK0NBQVEsQ0FBQyxFQUFFLENBQUM7RUFDbEQsTUFBTXVTLFNBQVMsR0FBSTdELEtBQUssSUFBSztJQUMzQixNQUFNO01BQ0p4YSxHQUFHO01BQ0hzZSxXQUFXLEVBQUU7UUFDWGxNLE1BQU0sRUFBRTtVQUFFblM7UUFBTTtNQUNsQjtJQUNGLENBQUMsR0FBR3VhLEtBQUs7SUFDVCxJQUFJeGEsR0FBRyxLQUFLLE9BQU8sRUFBRTtNQUNuQmdlLFFBQVEsQ0FBQztRQUNQLENBQUNuZ0IsNkRBQXVCLEdBQUdvQztNQUM3QixDQUFDLENBQUM7TUFDRmllLFlBQVksQ0FBQyxJQUFJLENBQUM7SUFDcEI7RUFDRixDQUFDO0VBQ0QsTUFBTUssV0FBVyxHQUFHQSxDQUFBLEtBQU07SUFDeEJILGNBQWMsQ0FBQyxFQUFFLENBQUM7SUFDbEJKLFFBQVEsQ0FBQztNQUNQLENBQUNuZ0IsNkRBQXVCLEdBQUc7SUFDN0IsQ0FBQyxDQUFDO0lBQ0ZxZ0IsWUFBWSxDQUFDLElBQUksQ0FBQztJQUNsQkEsWUFBWSxDQUFDLEtBQUssQ0FBQztFQUNyQixDQUFDO0VBQ0Qsb0JBQ0U5VSxzREFBQSxDQUFDVCw4Q0FBRztJQUFBd0IsUUFBQSxlQUNGYix1REFBQSxDQUFDdVQsZUFBZTtNQUFBMVMsUUFBQSxHQUNiOFQsU0FBUyxpQkFDUjdVLHNEQUFBLENBQUNxVSxnQkFBZ0I7UUFBQ2hSLE9BQU8sRUFBRThSLFdBQVk7UUFBQXBVLFFBQUEsZUFDckNmLHNEQUFBLENBQUN1VCxrRUFBUyxJQUFFO01BQUMsQ0FDRyxDQUNuQixlQUNEdlQsc0RBQUEsQ0FBQzhULGlCQUFpQjtRQUFBL1MsUUFBQSxlQUNoQmYsc0RBQUEsQ0FBQ3NULG1FQUFVLElBQUU7TUFBQyxDQUNHLENBQUMsZUFDcEJ0VCxzREFBQSxDQUFDaVUsZUFBZTtRQUNkYixXQUFXLEVBQUU5YyxDQUFDLENBQUMsMkJBQTJCLENBQUU7UUFDNUM4ZSxVQUFVLEVBQUU7VUFBRSxZQUFZLEVBQUU7UUFBUyxDQUFFO1FBQ3ZDdmUsS0FBSyxFQUFFa2UsV0FBWTtRQUNuQjVOLFFBQVEsRUFBRzVPLENBQUMsSUFBS3ljLGNBQWMsQ0FBQ3pjLENBQUMsQ0FBQ3lRLE1BQU0sQ0FBQ25TLEtBQUssQ0FBRTtRQUNoRG9lLFNBQVMsRUFBRUE7TUFBVSxDQUN0QixDQUFDO0lBQUEsQ0FDYTtFQUFDLENBQ2YsQ0FBQztBQUVWLENBQUM7QUFFRE4sTUFBTSxDQUFDcFQsU0FBUyxHQUFHO0VBQ2pCcVQsUUFBUSxFQUFFdlYsd0RBQWNxQztBQUMxQixDQUFDO0FBRUQsaUVBQWVpVCxNQUFNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNsR3NDO0FBQ25CO0FBQ1c7QUFDYTtBQUNqQjtBQUNBO0FBQUE7QUFFL0MsTUFBTVcsSUFBSSxHQUFHM2UsSUFBQSxJQUFnQjtFQUFBLElBQWY7SUFBRTRlO0VBQU8sQ0FBQyxHQUFBNWUsSUFBQTtFQUN0QixNQUFNO0lBQUVMO0VBQUUsQ0FBQyxHQUFHZ0osNkRBQWMsQ0FBQyxDQUFDO0VBQzlCLE1BQU0sQ0FBQ2tXLFFBQVEsRUFBRUMsV0FBVyxDQUFDLEdBQUcvUywrQ0FBUSxDQUFDLEtBQUssQ0FBQztFQUMvQyxNQUFNZ1QsT0FBTyxHQUFHN0YsNkNBQU0sQ0FBQyxJQUFJLENBQUM7RUFDNUIsTUFBTThGLHNCQUFzQixHQUFJdkUsS0FBSyxJQUFLO0lBQ3hDLElBQUlzRSxPQUFPLENBQUNyRSxPQUFPLElBQUksQ0FBQ3FFLE9BQU8sQ0FBQ3JFLE9BQU8sQ0FBQ0MsUUFBUSxDQUFDRixLQUFLLENBQUNwSSxNQUFNLENBQUMsRUFBRTtNQUM5RHlNLFdBQVcsQ0FBQyxLQUFLLENBQUM7SUFDcEI7RUFDRixDQUFDO0VBQ0RsRyxnREFBUyxDQUFDLE1BQU07SUFDZDdRLFFBQVEsQ0FBQzZTLGdCQUFnQixDQUFDLE9BQU8sRUFBRW9FLHNCQUFzQixFQUFFLEtBQUssQ0FBQztJQUNqRSxPQUFPLE1BQU07TUFDWGpYLFFBQVEsQ0FBQzhTLG1CQUFtQixDQUFDLE9BQU8sRUFBRW1FLHNCQUFzQixFQUFFLEtBQUssQ0FBQztJQUN0RSxDQUFDO0VBQ0gsQ0FBQyxFQUFFLENBQUNILFFBQVEsQ0FBQyxDQUFDO0VBRWQsTUFBTTFELE1BQU0sR0FBR0EsQ0FBQSxLQUFNO0lBQ25CMkQsV0FBVyxDQUFDLENBQUNELFFBQVEsQ0FBQztFQUN4QixDQUFDO0VBQ0Qsb0JBQ0V0Vix1REFBQSxDQUFDWCw4Q0FBRztJQUFDMEQsU0FBUyxFQUFFbkIsOERBQXFCO0lBQUN1QixPQUFPLEVBQUV5TyxNQUFPO0lBQUEvUSxRQUFBLGdCQUNwRGIsdURBQUEsQ0FBQzRQLDREQUFLO01BQ0ptQyxHQUFHLEVBQUV5RCxPQUFRO01BQ2J0TSxVQUFVLEVBQUMsUUFBUTtNQUNuQjFULFNBQVMsRUFBQyxLQUFLO01BQ2Z5VCxFQUFFLEVBQUU7UUFBRStJLEVBQUUsRUFBRSxDQUFDO1FBQUU3QyxFQUFFLEVBQUU7TUFBRSxDQUFFO01BQUF0TyxRQUFBLGdCQUVyQmYsc0RBQUEsQ0FBQ3FWLHlFQUFnQjtRQUFDaFEsUUFBUSxFQUFDLE9BQU87UUFBQ3BDLFNBQVMsRUFBRW5CLHlEQUFlK1Q7TUFBQyxDQUFFLENBQUMsZUFDakU3VixzREFBQTtRQUFNaUQsU0FBUyxFQUFFbkIsMERBQWlCO1FBQUFmLFFBQUEsRUFBRXpLLENBQUMsQ0FBQyxXQUFXO01BQUMsQ0FBTyxDQUFDO0lBQUEsQ0FDckQsQ0FBQyxFQUNQa2YsUUFBUSxpQkFDUHRWLHVEQUFBLENBQUNrUSxnREFBSztNQUNKcUMsU0FBUyxFQUFFLENBQUU7TUFDYnhQLFNBQVMsS0FBQS9OLE1BQUEsQ0FBSzRNLGtFQUF3QixPQUFBNU0sTUFBQSxDQUFJNE0sMERBQWdCLENBQUc7TUFBQWYsUUFBQSxnQkFFN0RmLHNEQUFBLENBQUNpUSxpREFBTTtRQUNMbkIsYUFBYTtRQUNiNkQsT0FBTyxFQUFDLE1BQU07UUFDZDFQLFNBQVMsRUFBRW5CLHNEQUFhO1FBQ3hCdUIsT0FBTyxFQUFFQSxDQUFBLEtBQU1rUyxNQUFNLENBQUM7VUFBRTdmLFNBQVMsRUFBRSxNQUFNO1VBQUV5QyxJQUFJLEVBQUU7UUFBVSxDQUFDLENBQUU7UUFBQTRJLFFBQUEsRUFFN0R6SyxDQUFDLENBQUMsZ0JBQWdCO01BQUMsQ0FDZCxDQUFDLGVBQ1QwSixzREFBQSxDQUFDaVEsaURBQU07UUFDTG5CLGFBQWE7UUFDYjZELE9BQU8sRUFBQyxNQUFNO1FBQ2QxUCxTQUFTLEVBQUVuQixzREFBYTtRQUN4QnVCLE9BQU8sRUFBRUEsQ0FBQSxLQUFNa1MsTUFBTSxDQUFDO1VBQUU3ZixTQUFTLEVBQUUsS0FBSztVQUFFeUMsSUFBSSxFQUFFO1FBQVUsQ0FBQyxDQUFFO1FBQUE0SSxRQUFBLEVBRTVEekssQ0FBQyxDQUFDLGdCQUFnQjtNQUFDLENBQ2QsQ0FBQztJQUFBLENBQ0osQ0FDUjtFQUFBLENBQ0UsQ0FBQztBQUVWLENBQUM7QUFFRCxpRUFBZWdmLElBQUk7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNoRXFCO0FBQ2dCO0FBQ3JCO0FBVVo7QUFDcUM7QUFDYjtBQUNTO0FBQUE7QUFFeEQsTUFBTS9FLFlBQVksR0FBRzVaLElBQUEsSUFBa0I7RUFBQSxJQUFqQjtJQUFFeVg7RUFBUyxDQUFDLEdBQUF6WCxJQUFBO0VBQ2hDLE1BQU07SUFDSmhDLE1BQU0sRUFBRTtNQUFFTCx1QkFBdUIsRUFBRStaO0lBQWE7RUFDbEQsQ0FBQyxHQUFHVCx3REFBVyxDQUFFVSxLQUFLLElBQUtBLEtBQUssQ0FBQzVXLFdBQVcsSUFBSSxDQUFDLENBQUMsRUFBRW1XLHFEQUFZLENBQUM7RUFFakUsTUFBTSxDQUFDVSxVQUFVLEVBQUVDLGFBQWEsQ0FBQyxHQUFHOUwsK0NBQVEsQ0FBQyxDQUFDLENBQUMyTCxZQUFZLENBQUM7RUFFNUQsTUFBTUksY0FBYyxHQUFHLENBQ3JCO0lBQUU1WCxLQUFLLEVBQUUsWUFBWTtJQUFFb1IsS0FBSyxFQUFFO0VBQWEsQ0FBQyxFQUM1QztJQUFFcFIsS0FBSyxFQUFFLFVBQVU7SUFBRW9SLEtBQUssRUFBRTtFQUFXLENBQUMsQ0FDekM7RUFFRCxNQUFNeUcsa0JBQWtCLEdBQUdBLENBQUMzRixFQUFFLEVBQUVsUyxLQUFLLEtBQUs7SUFDeEMsTUFBTThYLFNBQVMsR0FBRzlYLEtBQUs7SUFDdkJ1WCxRQUFRLENBQUM7TUFDUCxDQUFDOVosNkRBQXVCLEdBQUdxYTtJQUM3QixDQUFDLENBQUM7RUFDSixDQUFDO0VBRUQsb0JBQ0V6Tyx1REFBQSxDQUFDWCw4Q0FBRztJQUFBd0IsUUFBQSxnQkFDRmYsc0RBQUEsQ0FBQzhOLHFEQUFVO01BQ1Q3VyxLQUFLLEVBQUMsUUFBUTtNQUNkZ00sU0FBUyxFQUFFbkIsNkRBQW9CO01BQy9CdUIsT0FBTyxFQUFFQSxDQUFBLEtBQU1tTCxhQUFhLENBQUMsQ0FBQ0QsVUFBVSxDQUFFO01BQzFDTSxNQUFNLGVBQ0o3TyxzREFBQSxDQUFDK04scURBQVU7UUFBQyxjQUFXLFFBQVE7UUFBQ2UsYUFBYTtRQUFBL04sUUFBQSxlQUMzQ2Ysc0RBQUEsQ0FBQ2tPLHVFQUFjO1VBQ2IvSyxLQUFLLEVBQUU7WUFDTDRMLFNBQVMsRUFBRVIsVUFBVSxHQUFHLGdCQUFnQixHQUFHLGNBQWM7WUFDekRTLFVBQVUsRUFBRTtVQUNkO1FBQUUsQ0FDSDtNQUFDLENBQ1E7SUFDYixDQUNGLENBQUMsZUFDRmhQLHNEQUFBLENBQUNnTyxtREFBUTtNQUFDaUIsRUFBRSxFQUFFVixVQUFXO01BQUNXLE9BQU8sRUFBQyxNQUFNO01BQUNDLGFBQWE7TUFBQXBPLFFBQUEsZUFDcERmLHNEQUFBLENBQUNpTyxzREFBVztRQUNWOUUsRUFBRSxFQUFFO1VBQ0ZpRyxFQUFFLEVBQUUsQ0FBQztVQUNMakosZUFBZSxFQUFFLFdBQVc7VUFDNUIsY0FBYyxFQUFFO1lBQ2RrSixFQUFFLEVBQUU7VUFDTjtRQUNGLENBQUU7UUFBQXRPLFFBQUEsZUFFRmYsc0RBQUEsQ0FBQzRKLHFEQUFVO1VBQUMvUyxLQUFLLEVBQUV3WCxZQUFhO1VBQUNsSCxRQUFRLEVBQUV1SCxrQkFBbUI7VUFBQTNOLFFBQUEsRUFDM0QwTixjQUFjLENBQUNyVSxHQUFHLENBQUVrVixRQUFRLGlCQUMzQnRQLHNEQUFBLENBQUNULDhDQUFHO1lBQ0Y0SixFQUFFLEVBQUU7Y0FBRWlHLEVBQUUsRUFBRTtZQUFFLENBQUU7WUFBQXJPLFFBQUEsZUFHZGYsc0RBQUEsQ0FBQ3dHLDJEQUFnQjtjQUNmcUMsT0FBTyxlQUNMN0ksc0RBQUEsQ0FBQzJKLGdEQUFLO2dCQUNKOVMsS0FBSyxFQUFFeVksUUFBUSxDQUFDelksS0FBTTtnQkFDdEJzUyxFQUFFLEVBQUU7a0JBQ0Ysb0JBQW9CLEVBQUU7b0JBQUU5RCxRQUFRLEVBQUU7a0JBQUcsQ0FBQztrQkFDdEMsZUFBZSxFQUFFO29CQUFFVyxLQUFLLEVBQUU7a0JBQVU7Z0JBQ3RDO2NBQUUsQ0FDSCxDQUNGO2NBQ0RpQyxLQUFLLEVBQUVxSCxRQUFRLENBQUNySCxLQUFNO2NBQ3RCa0IsRUFBRSxFQUFFO2dCQUNGLDhCQUE4QixFQUFFO2tCQUM5QjlELFFBQVEsRUFBRTtnQkFDWjtjQUNGO1lBQUUsQ0FDSDtVQUFDLDJCQUFBblEsTUFBQSxDQWxCMkJvYSxRQUFRLENBQUNySCxLQUFLLE1BbUJ4QyxDQUNOO1FBQUMsQ0FDUTtNQUFDLENBQ0Y7SUFBQyxDQUNOLENBQUM7RUFBQSxDQUNSLENBQUM7QUFFVixDQUFDO0FBRURzSSxZQUFZLENBQUNoUCxTQUFTLEdBQUc7RUFDdkI2TSxRQUFRLEVBQUUvTyx3REFBY3FDO0FBQzFCLENBQUM7QUFFRCxpRUFBZTZPLFlBQVk7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNuR3dCO0FBQ0s7QUFDckI7QUFTWjtBQUNxQztBQUNiO0FBQ1E7QUFBQTtBQUV2RCxNQUFNRCxnQkFBZ0IsR0FBRzNaLElBQUEsSUFBa0I7RUFBQSxJQUFqQjtJQUFFeVg7RUFBUyxDQUFDLEdBQUF6WCxJQUFBO0VBQ3BDLE1BQU07SUFDSjNDLE1BQU0sRUFBRTtNQUFFZ2lCO0lBQWEsQ0FBQztJQUN4QnJoQixNQUFNLEVBQUU7TUFBRVAsc0JBQXNCLEVBQUVpYTtJQUFhO0VBQ2pELENBQUMsR0FBR1Qsd0RBQVcsQ0FBRVUsS0FBSyxJQUFLQSxLQUFLLENBQUM1VyxXQUFXLElBQUksQ0FBQyxDQUFDLEVBQUVtVyxxREFBWSxDQUFDO0VBRWpFLE1BQU0sQ0FBQ1UsVUFBVSxFQUFFQyxhQUFhLENBQUMsR0FBRzlMLCtDQUFRLENBQUMsQ0FBQyxDQUFDMkwsWUFBWSxDQUFDaFosTUFBTSxDQUFDO0VBRW5FLE1BQU1xWixrQkFBa0IsR0FBSTdYLEtBQUssSUFBSztJQUNwQyxNQUFNNlksVUFBVSxHQUFHckIsWUFBWSxhQUFaQSxZQUFZLGVBQVpBLFlBQVksQ0FBRXZGLFFBQVEsQ0FBQ2pTLEtBQUssQ0FBQyxHQUM1Q3dYLFlBQVksQ0FBQzFaLE1BQU0sQ0FBRWdiLENBQUMsSUFBS0EsQ0FBQyxLQUFLOVksS0FBSyxDQUFDLEdBQ3ZDLENBQUMsR0FBR3dYLFlBQVksRUFBRXhYLEtBQUssQ0FBQztJQUM1QnVYLFFBQVEsQ0FBQztNQUNQLENBQUNoYSw0REFBc0IsR0FBR3NiO0lBQzVCLENBQUMsQ0FBQztFQUNKLENBQUM7RUFFREgsZ0RBQVMsQ0FBQyxNQUFNO0lBQ2RmLGFBQWEsQ0FBQyxDQUFDLENBQUNILFlBQVksQ0FBQ2haLE1BQU0sQ0FBQztFQUN0QyxDQUFDLEVBQUUsQ0FBQ2daLFlBQVksQ0FBQyxDQUFDO0VBRWxCLG9CQUNFbk8sdURBQUEsQ0FBQ1gsOENBQUc7SUFBQXdCLFFBQUEsZ0JBQ0ZmLHNEQUFBLENBQUM4TixxREFBVTtNQUNUN1csS0FBSyxFQUFDLGFBQWE7TUFDbkJnTSxTQUFTLEVBQUVuQiw2REFBb0I7TUFDL0J1QixPQUFPLEVBQUVBLENBQUEsS0FBTW1MLGFBQWEsQ0FBQyxDQUFDRCxVQUFVLENBQUU7TUFDMUNNLE1BQU0sZUFDSjdPLHNEQUFBLENBQUMrTixxREFBVTtRQUFDLGNBQVcsUUFBUTtRQUFDZSxhQUFhO1FBQUEvTixRQUFBLGVBQzNDZixzREFBQSxDQUFDa08sdUVBQWM7VUFDYi9LLEtBQUssRUFBRTtZQUNMNEwsU0FBUyxFQUFFUixVQUFVLEdBQUcsZ0JBQWdCLEdBQUcsY0FBYztZQUN6RFMsVUFBVSxFQUFFO1VBQ2Q7UUFBRSxDQUNIO01BQUMsQ0FDUTtJQUNiLENBQ0YsQ0FBQyxlQUNGaFAsc0RBQUEsQ0FBQ2dPLG1EQUFRO01BQUNpQixFQUFFLEVBQUVWLFVBQVc7TUFBQ1csT0FBTyxFQUFDLE1BQU07TUFBQ0MsYUFBYTtNQUFBcE8sUUFBQSxlQUNwRGYsc0RBQUEsQ0FBQ2lPLHNEQUFXO1FBQ1Y5RSxFQUFFLEVBQUU7VUFDRmlHLEVBQUUsRUFBRSxDQUFDO1VBQ0xqSixlQUFlLEVBQUUsV0FBVztVQUM1QixjQUFjLEVBQUU7WUFDZGtKLEVBQUUsRUFBRTtVQUNOO1FBQ0YsQ0FBRTtRQUFBdE8sUUFBQSxFQUVEaVYsWUFBWSxDQUFDNWIsR0FBRyxDQUFFd1YsRUFBRSxpQkFDbkI1UCxzREFBQSxDQUFDVCw4Q0FBRztVQUFDNEosRUFBRSxFQUFFO1lBQUVpRyxFQUFFLEVBQUU7VUFBRSxDQUFFO1VBQUFyTyxRQUFBLGVBQ2pCZixzREFBQSxDQUFDd0csMkRBQWdCO1lBQ2ZxQyxPQUFPLGVBQ0w3SSxzREFBQSxDQUFDc0csbURBQVE7Y0FDUGEsUUFBUSxFQUFFQSxDQUFBLEtBQU11SCxrQkFBa0IsQ0FBQ2tCLEVBQUUsQ0FBQ3hYLEVBQUUsQ0FBRTtjQUMxQ2dRLE9BQU8sRUFBRWlHLFlBQVksQ0FBQ3ZGLFFBQVEsQ0FBQzhHLEVBQUUsQ0FBQ3hYLEVBQUUsQ0FBRTtjQUN0QytRLEVBQUUsRUFBRTtnQkFDRixvQkFBb0IsRUFBRTtrQkFBRTlELFFBQVEsRUFBRTtnQkFBRyxDQUFDO2dCQUN0QyxlQUFlLEVBQUU7a0JBQ2ZXLEtBQUssRUFBRTtnQkFDVDtjQUNGO1lBQUUsQ0FDSCxDQUNGO1lBQ0RpQyxLQUFLLEVBQUUySCxFQUFFLENBQUN6WCxJQUFLO1lBQ2ZnUixFQUFFLEVBQUU7Y0FDRiw4QkFBOEIsRUFBRTtnQkFDOUI5RCxRQUFRLEVBQUU7Y0FDWjtZQUNGO1VBQUUsQ0FDSDtRQUFDLDJCQUFBblEsTUFBQSxDQXBCNkMwYSxFQUFFLENBQUN6WCxJQUFJLE1BcUJuRCxDQUNOO01BQUMsQ0FDUztJQUFDLENBQ04sQ0FBQztFQUFBLENBQ1IsQ0FBQztBQUVWLENBQUM7QUFFRG1ZLGdCQUFnQixDQUFDL08sU0FBUyxHQUFHO0VBQzNCNk0sUUFBUSxFQUFFL08sd0RBQWNxQztBQUMxQixDQUFDO0FBRUQsaUVBQWU0TyxnQkFBZ0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDbEdMO0FBQ1M7QUFDRTtBQUNQO0FBQ0o7QUFDSTtBQUNpQjtBQUFBO0FBRS9DLE1BQU00RixPQUFPLEdBQUd2ZixJQUFBO0VBQUEsSUFBQztJQUFFeVgsUUFBUTtJQUFFbUgsTUFBTTtJQUFFWCxRQUFRO0lBQUVqRTtFQUFRLENBQUMsR0FBQWhhLElBQUE7RUFBQSxvQkFDdER1Six1REFBQSxDQUFDK1YsK0NBQUk7SUFBQ3pELFNBQVM7SUFBQzJELE9BQU8sRUFBQyxVQUFVO0lBQUMvTSxVQUFVLEVBQUMsUUFBUTtJQUFBckksUUFBQSxnQkFDcERiLHVEQUFBLENBQUMrViwrQ0FBSTtNQUNIRyxJQUFJO01BQ0pDLEVBQUUsRUFBRSxDQUFFO01BQ043RCxTQUFTO01BQ1Q4QixPQUFPLEVBQUUsQ0FBRTtNQUNYZ0MsR0FBRyxFQUFFLENBQUU7TUFDUHJULFNBQVMsRUFBRW5CLG9FQUEyQjtNQUN0Q3FILEVBQUUsRUFBRTtRQUFFK0ksRUFBRSxFQUFFLENBQUM7UUFBRTdDLEVBQUUsRUFBRTtNQUFFLENBQUU7TUFBQXRPLFFBQUEsZ0JBRXJCZixzREFBQSxDQUFDaVcsK0NBQUk7UUFBQ0csSUFBSTtRQUFBclYsUUFBQSxlQUNSZixzREFBQSxDQUFDMFEsK0NBQU07VUFBQ3RDLFFBQVEsRUFBRUEsUUFBUztVQUFDdUMsT0FBTyxFQUFFQTtRQUFRLENBQUU7TUFBQyxDQUM1QyxDQUFDLGVBQ1AzUSxzREFBQSxDQUFDaVcsK0NBQUk7UUFBQ0csSUFBSTtRQUFBclYsUUFBQSxlQUNSZixzREFBQSxDQUFDc1YsNkNBQUk7VUFBQ0MsTUFBTSxFQUFFQTtRQUFPLENBQUU7TUFBQyxDQUNwQixDQUFDO0lBQUEsQ0FDSCxDQUFDLGVBQ1B2VixzREFBQSxDQUFDaVcsK0NBQUk7TUFBQ0csSUFBSTtNQUFDQyxFQUFFLEVBQUUsQ0FBRTtNQUFDN0QsU0FBUztNQUFDd0IsY0FBYyxFQUFDLFVBQVU7TUFBQWpULFFBQUEsZUFDbkRmLHNEQUFBLENBQUMyVSwrQ0FBTTtRQUFDQyxRQUFRLEVBQUVBO01BQVMsQ0FBRTtJQUFDLENBQzFCLENBQUM7RUFBQSxDQUNILENBQUM7QUFBQSxDQUNSO0FBRURzQixPQUFPLENBQUMzVSxTQUFTLEdBQUc7RUFDbEI2TSxRQUFRLEVBQUUvTyx3REFBYztFQUN4QmtXLE1BQU0sRUFBRWxXLHdEQUFjO0VBQ3RCdVYsUUFBUSxFQUFFdlYsd0RBQWM7RUFDeEJzUixPQUFPLEVBQUV0Uix3REFBY3FDO0FBQ3pCLENBQUM7QUFFRCxpRUFBZXdVLE9BQU87Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDdkN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRTBCO0FBQ1M7QUFDUztBQUVHO0FBQUE7QUFFL0MsTUFBTXhXLFVBQVUsR0FBRy9JLElBQUE7RUFBQSxJQUFDO0lBQUV3SyxTQUFTO0lBQUVDLFdBQVc7SUFBRWYsT0FBTztJQUFFZ0I7RUFBUyxDQUFDLEdBQUExSyxJQUFBO0VBQUEsb0JBQy9EdUosdURBQUEsQ0FBQ1gsOENBQUc7SUFBQzBELFNBQVMsRUFBRW5CLHVEQUFjO0lBQUFmLFFBQUEsZ0JBQzVCZixzREFBQSxDQUFDaVEsaURBQU07TUFDTGhOLFNBQVMsRUFBRW5CLDBEQUFpQjtNQUM1QmtFLEtBQUssRUFBQyxTQUFTO01BQ2YwUSxJQUFJLEVBQUMsT0FBTztNQUNaL0QsT0FBTyxFQUFDLFVBQVU7TUFDbEJ0UCxPQUFPLEVBQUVoRCxPQUFRO01BQ2pCZ0IsUUFBUSxFQUFFQSxRQUFTO01BQUFOLFFBQUEsRUFFbEJLO0lBQVcsQ0FDTixDQUFDLGVBQ1RwQixzREFBQSxDQUFDaVEsaURBQU07TUFDTHJFLElBQUksRUFBQyxRQUFRO01BQ2IzSSxTQUFTLEVBQUVuQix3REFBZTtNQUMxQjZRLE9BQU8sRUFBQyxXQUFXO01BQ25CM00sS0FBSyxFQUFDLFNBQVM7TUFDZjBRLElBQUksRUFBQyxPQUFPO01BQ1pyVixRQUFRLEVBQUVBLFFBQVM7TUFBQU4sUUFBQSxFQUVsQkk7SUFBUyxDQUNKLENBQUM7RUFBQSxDQUNOLENBQUM7QUFBQSxDQUNQO0FBRUR6QixVQUFVLENBQUM2QixTQUFTLEdBQUc7RUFDckJKLFNBQVMsRUFBRTlCLDBEQUFnQjtFQUMzQitCLFdBQVcsRUFBRS9CLDBEQUFnQjtFQUM3QmdCLE9BQU8sRUFBRWhCLHdEQUFjO0VBQ3ZCZ0MsUUFBUSxFQUFFaEMsd0RBQWNrRTtBQUMxQixDQUFDO0FBRUQsaUVBQWU3RCxVQUFVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNuREM7QUFDd0I7QUFDSDtBQUFBO0FBRS9DLFNBQVNtWCxVQUFVQSxDQUFBbGdCLElBQUEsRUFBNkM7RUFBQSxJQUE1QztJQUFFK0MsT0FBTztJQUFFc00sS0FBSztJQUFFckQsVUFBVTtJQUFFbVU7RUFBVyxDQUFDLEdBQUFuZ0IsSUFBQTtFQUM1RCxvQkFDRXVKLHVEQUFBO0lBQ0UrQyxTQUFTLEtBQUEvTixNQUFBLENBQUs0TSwyREFBaUIsT0FBQTVNLE1BQUEsQ0FBSXlOLFVBQVUsSUFBSUEsVUFBVSxDQUFHO0lBQzlEUSxLQUFLLEVBQUU7TUFBRTZDO0lBQU0sQ0FBRTtJQUNqQixlQUFhOFEsVUFBVztJQUFBL1YsUUFBQSxnQkFFeEJmLHNEQUFBLENBQUM0VyxrRUFBUztNQUFDek4sRUFBRSxFQUFFO1FBQUVuRDtNQUFNO0lBQUUsQ0FBRSxDQUFDLEVBQzNCdE0sT0FBTztFQUFBLENBQ0osQ0FBQztBQUVYO0FBRUEsaUVBQWVtZCxVQUFVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDakJDO0FBQ1M7QUFDd0I7QUFBQTtBQUUzRCxNQUFNSyxNQUFNLEdBQUd2Z0IsSUFBQTtFQUFBLElBQUM7SUFBRXdOO0VBQUssQ0FBQyxHQUFBeE4sSUFBQTtFQUFBO0lBQUE7SUFDdEI7SUFDQXFKLHNEQUFBLENBQUNnWCxtREFBUTtNQUFDN1MsSUFBSSxFQUFFQSxJQUFLO01BQUNnRixFQUFFLEVBQUdyRSxLQUFLLEtBQU07UUFBRTRQLE1BQU0sRUFBRTVQLEtBQUssQ0FBQzRQLE1BQU0sQ0FBQ3lDLE1BQU0sR0FBRztNQUFFLENBQUMsQ0FBRTtNQUFBcFcsUUFBQSxlQUN6RWYsc0RBQUEsQ0FBQ2lYLDJEQUFnQjtRQUFDalIsS0FBSyxFQUFDO01BQVMsQ0FBRTtJQUFDLENBQzVCO0VBQUM7QUFBQSxDQUNaO0FBRURrUixNQUFNLENBQUMzVixTQUFTLEdBQUc7RUFDakI0QyxJQUFJLEVBQUU5RSx3REFBY2tFO0FBQ3RCLENBQUM7QUFFRCxpRUFBZTJULE1BQU07Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ2ZLO0FBQzhCO0FBQ1Q7QUFDWDtBQUNnQjtBQUNGO0FBQ1c7QUFDdEI7QUFDZTtBQUVQO0FBQUE7QUFFL0MsTUFBTUssZUFBZSxHQUFHNWdCLElBQUEsSUFBbUI7RUFBQSxJQUFsQjtJQUFFNmdCO0VBQVUsQ0FBQyxHQUFBN2dCLElBQUE7RUFDcEMsTUFBTTtJQUFFTDtFQUFFLENBQUMsR0FBR2dKLDZEQUFjLENBQUMsQ0FBQztFQUM5QixNQUFNO0lBQUV0TCxNQUFNO0lBQUV5akIsWUFBWTtJQUFFQyxtQkFBbUI7SUFBRUM7RUFBaUIsQ0FBQyxHQUNuRS9KLHdEQUFXLENBQUVVLEtBQUssSUFBS0EsS0FBSyxDQUFDNVcsV0FBVyxJQUFJLENBQUMsQ0FBQyxFQUFFbVcscURBQVksQ0FBQztFQUUvRCxvQkFDRTNOLHdEQUFBO0lBQUs5SCxFQUFFLEVBQUMsaUJBQWlCO0lBQUM2SyxTQUFTLEVBQUVuQixnRUFBdUI7SUFBQWYsUUFBQSxHQUN6RCxHQUFHLEVBQ0gwVyxZQUFZLGFBQVpBLFlBQVksZUFBWkEsWUFBWSxDQUFFcGlCLE1BQU0sZ0JBQ25CMkssdURBQUEsQ0FBQ29YLHdFQUFjO01BQ2JTLFVBQVUsRUFBRUosWUFBWSxhQUFaQSxZQUFZLHVCQUFaQSxZQUFZLENBQUVwaUIsTUFBTztNQUNqQ3lpQixJQUFJLEVBQUVBLENBQUEsS0FBTU4sU0FBUyxDQUFDRSxtQkFBbUIsR0FBR0osMkRBQWEsQ0FBRTtNQUMzRFMsT0FBTyxFQUFFTCxtQkFBbUIsR0FBR0MsZ0JBQWlCO01BQ2hESyxlQUFlLEVBQUUsQ0FBRTtNQUFBalgsUUFBQSxFQUVsQjBXLFlBQVksYUFBWkEsWUFBWSx1QkFBWkEsWUFBWSxDQUFFcmQsR0FBRyxDQUFFdEMsS0FBSyxpQkFDdkJrSSx1REFBQSxDQUFDcVgsbURBQVU7UUFFVHZmLEtBQUssRUFBRUEsS0FBTTtRQUNiOUQsTUFBTSxFQUFFQTtNQUFPLEdBRlY4RCxLQUFLLENBQUMwTCxNQUFNLEdBQUcxTCxLQUFLLENBQUNNLEVBRzNCLENBQ0Y7SUFBQyxDQUNZLENBQUMsZ0JBRWpCOEgsd0RBQUEsQ0FBQ1gsOENBQUc7TUFBQzBELFNBQVMsRUFBRW5CLDhEQUFxQjtNQUFBZixRQUFBLGdCQUNuQ2Isd0RBQUEsQ0FBQ1gsOENBQUc7UUFBQzBELFNBQVMsRUFBRW5CLG9FQUEyQjtRQUFBZixRQUFBLGdCQUN6Q2YsdURBQUEsQ0FBQ3NULG1FQUFVO1VBQUNuSyxFQUFFLEVBQUU7WUFBRTlELFFBQVEsRUFBRSxFQUFFO1lBQUVXLEtBQUssRUFBRTtVQUFZO1FBQUUsQ0FBRSxDQUFDLGVBQ3hEaEcsdURBQUEsQ0FBQ3VULGtFQUFTO1VBQ1JwSyxFQUFFLEVBQUU7WUFDRjlELFFBQVEsRUFBRSxFQUFFO1lBQ1pxTyxRQUFRLEVBQUUsVUFBVTtZQUNwQmEsR0FBRyxFQUFFLENBQUM7WUFDTkMsS0FBSyxFQUFFLENBQUM7WUFDUnhPLEtBQUssRUFBRTtVQUNUO1FBQUUsQ0FDSCxDQUFDO01BQUEsQ0FDQyxDQUFDLEVBQ0wxUCxDQUFDLENBQUMsa0JBQWtCLENBQUM7SUFBQSxDQUNuQixDQUNOO0VBQUEsQ0FDRSxDQUFDO0FBRVYsQ0FBQztBQUVELGlFQUFlaWhCLGVBQWU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUN4REo7QUFDUztBQUNZO0FBQ0w7QUFDRTtBQUN1QjtBQUNwQjtBQUFBO0FBRS9DLE1BQU1lLGlCQUFpQixHQUFHM2hCLElBQUEsSUFBdUI7RUFBQSxJQUF0QjtJQUFFbUIsS0FBSztJQUFFOUQ7RUFBTyxDQUFDLEdBQUEyQyxJQUFBO0VBQzFDLE1BQU07SUFBRUw7RUFBRSxDQUFDLEdBQUdnSiw2REFBYyxDQUFDLENBQUM7RUFDOUIsTUFBTTtJQUFFaVosYUFBYTtJQUFFQyxXQUFXO0lBQUVDLFVBQVU7SUFBRUMsV0FBVztJQUFFQztFQUFjLENBQUMsR0FDMUVSLDREQUFvQixDQUFDO0lBQUVyZ0IsS0FBSztJQUFFOUQ7RUFBTyxDQUFDLENBQUM7RUFDekMsTUFBTTRrQixPQUFPLEdBQUcsR0FBRztFQUVuQixvQkFDRTFZLHVEQUFBLENBQUNYLDhDQUFHO0lBQUMwRCxTQUFTLEVBQUVuQixrRUFBeUI7SUFBQWYsUUFBQSxHQUN0QyxDQUFBNFgsYUFBYSxhQUFiQSxhQUFhLHVCQUFiQSxhQUFhLENBQUV0akIsTUFBTSxJQUFHLENBQUMsaUJBQ3hCMkssc0RBQUEsQ0FBQXFZLHVEQUFBO01BQUF0WCxRQUFBLEVBQ0c0WCxhQUFhLENBQUN2ZSxHQUFHLENBQUVaLE1BQU0sSUFBSztRQUM3QixNQUFNc2YsV0FBVyxHQUNkdGYsTUFBTSxDQUFDdWYsR0FBRyxJQUFJdmYsTUFBTSxDQUFDd2YsV0FBVyxDQUFDQyxJQUFJLEdBQUdMLE9BQU8sQ0FBQyxHQUFJQSxPQUFPO1FBRTlELG9CQUNFMVksdURBQUEsQ0FBQytWLCtDQUFJO1VBQ0h6RCxTQUFTO1VBRVRySixFQUFFLEVBQUU7WUFBRWtHLEVBQUUsRUFBRTtVQUFFLENBQUU7VUFDZCxlQUFZLHdCQUF3QjtVQUFBdE8sUUFBQSxnQkFFcENmLHNEQUFBLENBQUNpVywrQ0FBSTtZQUFDSSxFQUFFLEVBQUUsQ0FBRTtZQUFDRCxJQUFJO1lBQUFyVixRQUFBLGVBQ2ZiLHVEQUFBO2NBQUFhLFFBQUEsR0FBTSxHQUNILEVBQUN2SCxNQUFNLENBQUN1ZixHQUFHLEVBQUMsR0FBQyxFQUFDdmYsTUFBTSxDQUFDd2YsV0FBVyxDQUFDN2dCLElBQUk7WUFBQSxDQUNsQztVQUFDLENBQ0gsQ0FBQyxlQUNQNkgsc0RBQUEsQ0FBQ2lXLCtDQUFJO1lBQUNJLEVBQUUsRUFBRSxDQUFFO1lBQUNELElBQUk7WUFBQzhDLEtBQUssRUFBQyxPQUFPO1lBQUFuWSxRQUFBLEVBQzVCcVgsc0RBQWMsQ0FBQ1UsV0FBVyxFQUFFO2NBQUVLLFFBQVEsRUFBRXJoQixLQUFLLENBQUNxaEI7WUFBUyxDQUFDO1VBQUMsQ0FDdEQsQ0FBQztRQUFBLGVBQUFqa0IsTUFBQSxDQVhVc0UsTUFBTSxDQUFDd2YsV0FBVyxDQUFDSSxPQUFPLENBWXZDLENBQUM7TUFFWCxDQUFDO0lBQUMsQ0FDRixDQUNILEVBQ0F0aEIsS0FBSyxDQUFDdWhCLGVBQWUsR0FBRyxDQUFDLGlCQUN4Qm5aLHVEQUFBLENBQUMrViwrQ0FBSTtNQUFDekQsU0FBUztNQUFDckosRUFBRSxFQUFFO1FBQUVrRyxFQUFFLEVBQUU7TUFBRSxDQUFFO01BQUF0TyxRQUFBLGdCQUM1QmYsc0RBQUEsQ0FBQ2lXLCtDQUFJO1FBQUNJLEVBQUUsRUFBRSxDQUFFO1FBQUNELElBQUk7UUFBQXJWLFFBQUEsRUFDZHpLLENBQUMsQ0FBQyx5QkFBeUI7TUFBQyxDQUN6QixDQUFDLGVBQ1A0Six1REFBQSxDQUFDK1YsK0NBQUk7UUFBQ0ksRUFBRSxFQUFFLENBQUU7UUFBQ0QsSUFBSTtRQUFDOEMsS0FBSyxFQUFDLE9BQU87UUFBQW5ZLFFBQUEsR0FBQyxHQUM3QixFQUFDd1gsYUFBYTtNQUFBLENBQ1gsQ0FBQztJQUFBLENBQ0gsQ0FDUCxFQUNBemdCLEtBQUssQ0FBQ3doQixZQUFZLEdBQUcsQ0FBQyxpQkFDckJwWix1REFBQSxDQUFDK1YsK0NBQUk7TUFBQ3pELFNBQVM7TUFBQ3JKLEVBQUUsRUFBRTtRQUFFa0csRUFBRSxFQUFFO01BQUUsQ0FBRTtNQUFBdE8sUUFBQSxnQkFDNUJmLHNEQUFBLENBQUNpVywrQ0FBSTtRQUFDSSxFQUFFLEVBQUUsQ0FBRTtRQUFDRCxJQUFJO1FBQUFyVixRQUFBLEVBQ2R6SyxDQUFDLENBQUMscUJBQXFCO01BQUMsQ0FDckIsQ0FBQyxlQUNQMEosc0RBQUEsQ0FBQ2lXLCtDQUFJO1FBQUNJLEVBQUUsRUFBRSxDQUFFO1FBQUNELElBQUk7UUFBQzhDLEtBQUssRUFBQyxPQUFPO1FBQUFuWSxRQUFBLEVBQzVCMFg7TUFBVSxDQUNQLENBQUM7SUFBQSxDQUNILENBQ1AsRUFDQTNnQixLQUFLLENBQUMxQixNQUFNLEtBQUssTUFBTSxpQkFDdEI4Six1REFBQSxDQUFDK1YsK0NBQUk7TUFBQ3pELFNBQVM7TUFBQ3JKLEVBQUUsRUFBRTtRQUFFa0csRUFBRSxFQUFFO01BQUUsQ0FBRTtNQUFBdE8sUUFBQSxnQkFDNUJmLHNEQUFBLENBQUNpVywrQ0FBSTtRQUFDSSxFQUFFLEVBQUUsQ0FBRTtRQUFDRCxJQUFJO1FBQUFyVixRQUFBLEVBQ2R6SyxDQUFDLENBQUMsMkJBQTJCO01BQUMsQ0FDM0IsQ0FBQyxlQUNQNEosdURBQUEsQ0FBQytWLCtDQUFJO1FBQUNJLEVBQUUsRUFBRSxDQUFFO1FBQUNELElBQUk7UUFBQzhDLEtBQUssRUFBQyxPQUFPO1FBQUFuWSxRQUFBLEdBQUMsR0FDN0IsRUFBQzJYLFdBQVc7TUFBQSxDQUNULENBQUM7SUFBQSxDQUNILENBQ1AsRUFDQUYsV0FBVyxHQUFHLENBQUMsaUJBQ2R0WSx1REFBQSxDQUFDK1YsK0NBQUk7TUFBQ3pELFNBQVM7TUFBQ3JKLEVBQUUsRUFBRTtRQUFFa0csRUFBRSxFQUFFO01BQUUsQ0FBRTtNQUFBdE8sUUFBQSxnQkFDNUJmLHNEQUFBLENBQUNpVywrQ0FBSTtRQUFDSSxFQUFFLEVBQUUsQ0FBRTtRQUFDRCxJQUFJO1FBQUFyVixRQUFBLEVBQ2R6SyxDQUFDLENBQUMsdUJBQXVCO01BQUMsQ0FDdkIsQ0FBQyxlQUNQMEosc0RBQUEsQ0FBQ2lXLCtDQUFJO1FBQUNJLEVBQUUsRUFBRSxDQUFFO1FBQUNELElBQUk7UUFBQzhDLEtBQUssRUFBQyxPQUFPO1FBQUFuWSxRQUFBLEVBQzVCeVg7TUFBVyxDQUNSLENBQUM7SUFBQSxDQUNILENBQ1AsZUFDRHhZLHNEQUFBLENBQUNtUSw4REFBTyxJQUFFLENBQUMsZUFDWGpRLHVEQUFBLENBQUMrViwrQ0FBSTtNQUFDekQsU0FBUztNQUFDckosRUFBRSxFQUFFO1FBQUUrSSxFQUFFLEVBQUUsQ0FBQztRQUFFN0MsRUFBRSxFQUFFO01BQUUsQ0FBRTtNQUFBdE8sUUFBQSxnQkFDbkNmLHNEQUFBLENBQUNpVywrQ0FBSTtRQUFDSSxFQUFFLEVBQUUsQ0FBRTtRQUFDRCxJQUFJO1FBQUFyVixRQUFBLEVBQ2R6SyxDQUFDLENBQUMscUJBQXFCO01BQUMsQ0FDckIsQ0FBQyxlQUNQMEosc0RBQUEsQ0FBQ2lXLCtDQUFJO1FBQUNJLEVBQUUsRUFBRSxDQUFFO1FBQUNELElBQUk7UUFBQzhDLEtBQUssRUFBQyxPQUFPO1FBQUFuWSxRQUFBLEVBQzVCakosS0FBSyxDQUFDMUIsTUFBTSxLQUFLLE1BQU0sR0FBRyxPQUFPLEdBQUdzaUI7TUFBVyxDQUM1QyxDQUFDO0lBQUEsQ0FDSCxDQUFDO0VBQUEsQ0FDSixDQUFDO0FBRVYsQ0FBQztBQUVESixpQkFBaUIsQ0FBQy9XLFNBQVMsR0FBRztFQUM1QnpKLEtBQUssRUFBRXVILHVEQUFlLENBQUM7SUFDckI4WixRQUFRLEVBQUU5WiwwREFBZ0I7SUFDMUJnYSxlQUFlLEVBQUVoYSwwREFBZ0I7SUFDakNpYSxZQUFZLEVBQUVqYSwwREFBZ0I7SUFDOUJqSixNQUFNLEVBQUVpSiwwREFBZ0JpRTtFQUMxQixDQUFDLENBQUM7RUFDRnRQLE1BQU0sRUFBRXFMLDBEQUFnQm1DO0FBQzFCLENBQUM7QUFFRCxpRUFBZThXLGlCQUFpQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDekdOO0FBQ1M7QUFDWTtBQUNSO0FBQ0Y7QUFDdUI7QUFDYjtBQUFBO0FBRS9DLE1BQU1vQixrQkFBa0IsR0FBRy9pQixJQUFBLElBTXJCO0VBQUEsSUFOc0I7SUFDMUIzQyxNQUFNO0lBQ05pRyxPQUFPO0lBQ1AwZixhQUFhO0lBQ2JDLGFBQWE7SUFDYkM7RUFDRixDQUFDLEdBQUFsakIsSUFBQTtFQUNDLE1BQU07SUFBRUw7RUFBRSxDQUFDLEdBQUdnSiw2REFBYyxDQUFDLENBQUM7RUFDOUIsTUFBTXdhLEdBQUcsR0FBR04sOENBQU0sQ0FBQyxDQUFDO0VBQ3BCLE1BQU1PLG9CQUFvQixHQUN4Qi9sQixNQUFNLENBQUNnbUIsNkNBQTZDLEdBQUdGLEdBQUc7RUFDNUQsTUFBTUcsMEJBQTBCLEdBQUdSLHFFQUFpQixDQUFDeGYsT0FBTyxDQUFDO0VBQzdELE1BQU1pZ0IsWUFBWSxHQUFHLENBQUMsRUFBRUgsb0JBQW9CLElBQUlFLDBCQUEwQixDQUFDO0VBQzNFLE1BQU1FLGlCQUFpQixHQUFHbGdCLE9BQU8sYUFBUEEsT0FBTyx1QkFBUEEsT0FBTyxDQUFFeVIsSUFBSSxDQUFFcFYsQ0FBQyxJQUFLQSxDQUFDLENBQUNtRSxlQUFlLENBQUNwRixNQUFNLEdBQUcsQ0FBQyxDQUFDO0VBQzVFLG9CQUNFNkssdURBQUEsQ0FBQW1ZLHVEQUFBO0lBQUF0WCxRQUFBLEdBQ0dtWixZQUFZLGlCQUNYbGEsc0RBQUEsQ0FBQ2lRLGlEQUFNO01BQ0wsY0FBVyx1QkFBdUI7TUFDbENtSyxJQUFJLEVBQUMsUUFBUTtNQUNiblgsU0FBUyxLQUFBL04sTUFBQSxDQUFLNE0sbUVBQXlCLGtCQUFBNU0sTUFBQSxDQUNyQ3lrQixhQUFhLEdBQUc3WCwrREFBcUIsR0FBRyxFQUFFLENBQUc7TUFDL0M2USxPQUFPLEVBQUMsVUFBVTtNQUNsQitELElBQUksRUFBQyxPQUFPO01BQ1pyVCxPQUFPLEVBQUV1VyxhQUFjO01BQ3ZCdlksUUFBUSxFQUFFc1ksYUFBYztNQUFBNVksUUFBQSxFQUV2QnpLLENBQUMsQ0FBQyw4QkFBOEI7SUFBQyxDQUM1QixDQUNULEVBQ0E2akIsaUJBQWlCLGlCQUNoQm5hLHNEQUFBLENBQUNpUSxpREFBTTtNQUNMLGNBQVcsdUJBQXVCO01BQ2xDbUssSUFBSSxFQUFDLFFBQVE7TUFDYm5YLFNBQVMsRUFBRW5CLG1FQUEwQjtNQUNyQzZRLE9BQU8sRUFBQyxVQUFVO01BQ2xCK0QsSUFBSSxFQUFDLE9BQU87TUFDWnJULE9BQU8sRUFBRXdXLG1CQUFvQjtNQUFBOVksUUFBQSxFQUU1QnpLLENBQUMsQ0FBQyw4QkFBOEI7SUFBQyxDQUM1QixDQUNULGVBQ0QwSixzREFBQSxDQUFDaVEsaURBQU07TUFDTCxjQUFXLHNCQUFzQjtNQUNqQ21LLElBQUksRUFBQyxRQUFRO01BQ2JuWCxTQUFTLEVBQUVuQixtRUFBMEI7TUFDckM2USxPQUFPLEVBQUMsVUFBVTtNQUNsQitELElBQUksRUFBQyxPQUFPO01BQ1oxTixNQUFNLEVBQUMsTUFBTTtNQUNidVIsR0FBRyxFQUFDLHFCQUFxQjtNQUN6QnZiLElBQUksWUFBQTlKLE1BQUEsQ0FBWWxCLE1BQU0sQ0FBQ3dtQixhQUFhLENBQUc7TUFBQXpaLFFBQUEsRUFFdEN6SyxDQUFDLENBQUMsMEJBQTBCO0lBQUMsQ0FDeEIsQ0FBQztFQUFBLENBQ1QsQ0FBQztBQUVQLENBQUM7QUFFRG9qQixrQkFBa0IsQ0FBQ25ZLFNBQVMsR0FBRztFQUM3QnZOLE1BQU0sRUFBRXFMLDBEQUFnQjtFQUN4QnBGLE9BQU8sRUFBRW9GLHlEQUFpQixDQUFDOUksTUFBTSxDQUFDO0VBQ2xDcWpCLGFBQWEsRUFBRXZhLHdEQUFjO0VBQzdCd2EsbUJBQW1CLEVBQUV4YSx3REFBYztFQUNuQ3NhLGFBQWEsRUFBRXRhLHdEQUFja0U7QUFDL0IsQ0FBQztBQUVELGlFQUFlbVcsa0JBQWtCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUMxRVA7QUFDUztBQUNPO0FBQ0s7QUFDSztBQUNFO0FBQ1A7QUFBQTtBQUUvQyxNQUFNZ0IsWUFBWSxHQUFHL2pCLElBQUEsSUFNZjtFQUFBLElBTmdCO0lBQ3BCbUIsS0FBSztJQUNMOUQsTUFBTTtJQUNONGxCLGFBQWE7SUFDYkQsYUFBYTtJQUNiRTtFQUNGLENBQUMsR0FBQWxqQixJQUFBO0VBQ0MsTUFBTTtJQUFFTDtFQUFFLENBQUMsR0FBR2dKLDZEQUFjLENBQUMsQ0FBQztFQUM5QixvQkFDRVksdURBQUEsQ0FBQW1ZLHVEQUFBO0lBQUF0WCxRQUFBLGdCQUNFYix1REFBQSxDQUFDWCw4Q0FBRztNQUNGMEQsU0FBUyxFQUFFbkIsb0VBQTJCO01BQ3RDcUgsRUFBRSxFQUFFO1FBQUUrSSxFQUFFLEVBQUUsQ0FBQztRQUFFMEksRUFBRSxFQUFFO01BQUUsQ0FBRTtNQUNyQixlQUFZLHlCQUF5QjtNQUFBN1osUUFBQSxnQkFFckNmLHNEQUFBO1FBQUFlLFFBQUEsRUFBS3pLLENBQUMsQ0FBQyw2QkFBNkI7TUFBQyxDQUFLLENBQUMsZUFDM0MwSixzREFBQSxDQUFDaVcsK0NBQUk7UUFBQ3pELFNBQVM7UUFBQXpSLFFBQUEsZUFDYmYsc0RBQUEsQ0FBQ2lXLCtDQUFJO1VBQ0hJLEVBQUUsRUFBRSxFQUFHO1VBQ1BwVCxTQUFTLEVBQUVuQiwwRUFBaUM7VUFDNUNxSCxFQUFFLEVBQUU7WUFBRWtHLEVBQUUsRUFBRTtVQUFFLENBQUU7VUFDZCtHLElBQUk7VUFBQXJWLFFBQUEsZUFFSmYsc0RBQUEsQ0FBQ3NZLDBEQUFpQjtZQUFDeGdCLEtBQUssRUFBRUEsS0FBTTtZQUFDOUQsTUFBTSxFQUFFQTtVQUFPLENBQUU7UUFBQyxDQUMvQztNQUFDLENBQ0gsQ0FBQztJQUFBLENBQ0osQ0FBQyxlQUNOZ00sc0RBQUEsQ0FBQ1QsOENBQUc7TUFBQzhXLEVBQUUsRUFBRSxFQUFHO01BQUNsTixFQUFFLEVBQUU7UUFBRWtHLEVBQUUsRUFBRTtNQUFFLENBQUU7TUFBQXRPLFFBQUEsZUFDekJmLHNEQUFBLENBQUMwWiwyREFBa0I7UUFDakIxbEIsTUFBTSxFQUFFQSxNQUFPO1FBQ2ZpRyxPQUFPLEVBQUVuQyxLQUFLLGFBQUxBLEtBQUssdUJBQUxBLEtBQUssQ0FBRWdqQixhQUFjO1FBQzlCbkIsYUFBYSxFQUFFQSxhQUFjO1FBQzdCQyxhQUFhLEVBQUVBLGFBQWM7UUFDN0JDLG1CQUFtQixFQUFFQTtNQUFvQixDQUMxQztJQUFDLENBQ0MsQ0FBQztFQUFBLENBQ04sQ0FBQztBQUVQLENBQUM7QUFDRGEsWUFBWSxDQUFDblosU0FBUyxHQUFHO0VBQ3ZCdk4sTUFBTSxFQUFFcUwsMERBQWdCO0VBQ3hCdkgsS0FBSyxFQUFFdUgsdURBQWUsQ0FBQztJQUNyQnliLGFBQWEsRUFBRXpiLHlEQUFpQixDQUFDOUksTUFBTTtFQUN6QyxDQUFDLENBQUM7RUFDRnFqQixhQUFhLEVBQUV2YSx3REFBYztFQUM3QnNhLGFBQWEsRUFBRXRhLHdEQUFja0U7QUFDL0IsQ0FBQztBQUVELGlFQUFlbVgsWUFBWTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDeEREO0FBQzhCO0FBQ0s7QUFDZDtBQUNYO0FBQ2dCO0FBQ0Y7QUFDQTtBQUNJO0FBQ1A7QUFBQTtBQUUvQyxNQUFNTSxVQUFVLEdBQUdya0IsSUFBQSxJQUFtQjtFQUFBLElBQWxCO0lBQUU2Z0I7RUFBVSxDQUFDLEdBQUE3Z0IsSUFBQTtFQUMvQixNQUFNO0lBQUVMO0VBQUUsQ0FBQyxHQUFHZ0osNkRBQWMsQ0FBQyxDQUFDO0VBQzlCLE1BQU07SUFDSnRMLE1BQU07SUFDTmluQixXQUFXO0lBQ1hDLHlCQUF5QjtJQUN6QkM7RUFDRixDQUFDLEdBQUd2Tix3REFBVyxDQUFFVSxLQUFLLElBQUtBLEtBQUssQ0FBQzVXLFdBQVcsSUFBSSxDQUFDLENBQUMsRUFBRW1XLHFEQUFZLENBQUM7RUFFakUsb0JBQ0U3Tix1REFBQTtJQUFLaUQsU0FBUyxFQUFFbkIscUVBQTRCO0lBQUFmLFFBQUEsZUFDMUNmLHVEQUFBO01BQUs1SCxFQUFFLEVBQUMscUJBQXFCO01BQUM2SyxTQUFTLEVBQUVuQixvRUFBMkI7TUFBQWYsUUFBQSxFQUNqRWthLFdBQVcsYUFBWEEsV0FBVyxlQUFYQSxXQUFXLENBQUU1bEIsTUFBTSxnQkFDbEIySyx1REFBQSxDQUFDb1gsd0VBQWM7UUFDYlMsVUFBVSxFQUFFb0QsV0FBVyxhQUFYQSxXQUFXLHVCQUFYQSxXQUFXLENBQUU1bEIsTUFBTztRQUNoQ3lpQixJQUFJLEVBQUVBLENBQUEsS0FBTU4sU0FBUyxDQUFDMEQseUJBQXlCLEdBQUc1RCwyREFBYSxDQUFFO1FBQ2pFUyxPQUFPLEVBQUVtRCx5QkFBeUIsR0FBR0Msc0JBQXVCO1FBQzVEbkQsZUFBZSxFQUFFLENBQUU7UUFBQWpYLFFBQUEsZUFFbkJmLHVEQUFBO1VBQUtpRCxTQUFTLEVBQUVuQixvRUFBMkI7VUFBQWYsUUFBQSxFQUN4Q2thLFdBQVcsQ0FBQzdnQixHQUFHLENBQUVaLE1BQU0saUJBQ3RCd0csdURBQUEsQ0FBQythLHlEQUFnQjtZQUVmdmhCLE1BQU0sRUFBRUEsTUFBTztZQUNmeEYsTUFBTSxFQUFFQSxNQUFPO1lBQ2Z1bkIsYUFBYSxFQUFFLEtBQU07WUFDckJDLGtCQUFrQixFQUFFLEVBQUc7WUFDdkJDLGNBQWMsRUFBRSxLQUFNO1lBQ3RCQyx3QkFBd0I7VUFBQSxHQU5uQmxpQixNQUFNLENBQUNwQixFQU9iLENBQ0Y7UUFBQyxDQUNDO01BQUMsQ0FDUSxDQUFDLGdCQUVqQjhILHdEQUFBLENBQUNYLDhDQUFHO1FBQUMwRCxTQUFTLEVBQUVuQiwrREFBc0I7UUFBQWYsUUFBQSxnQkFDcENiLHdEQUFBLENBQUNYLDhDQUFHO1VBQUMwRCxTQUFTLEVBQUVuQixvRUFBMkI7VUFBQWYsUUFBQSxnQkFDekNmLHVEQUFBLENBQUNzVCxtRUFBVTtZQUFDbkssRUFBRSxFQUFFO2NBQUU5RCxRQUFRLEVBQUUsRUFBRTtjQUFFVyxLQUFLLEVBQUU7WUFBWTtVQUFFLENBQUUsQ0FBQyxlQUN4RGhHLHVEQUFBLENBQUN1VCxrRUFBUztZQUNScEssRUFBRSxFQUFFO2NBQ0Y5RCxRQUFRLEVBQUUsRUFBRTtjQUNacU8sUUFBUSxFQUFFLFVBQVU7Y0FDcEJhLEdBQUcsRUFBRSxDQUFDO2NBQ05DLEtBQUssRUFBRSxDQUFDO2NBQ1J4TyxLQUFLLEVBQUU7WUFDVDtVQUFFLENBQ0gsQ0FBQztRQUFBLENBQ0MsQ0FBQyxFQUNMMVAsQ0FBQyxDQUFDLG9CQUFvQixDQUFDO01BQUEsQ0FDckI7SUFDTixDQUNFO0VBQUMsQ0FDSCxDQUFDO0FBRVYsQ0FBQztBQUVELGlFQUFlMGtCLFVBQVU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNsRUM7QUFDUztBQUNZO0FBQ087QUFDUDtBQUFBO0FBRS9DLE1BQU1hLFVBQVUsR0FBR2xsQixJQUFBLElBQWU7RUFBQSxJQUFkO0lBQUVoRTtFQUFNLENBQUMsR0FBQWdFLElBQUE7RUFDM0IsTUFBTTtJQUFFTDtFQUFFLENBQUMsR0FBR2dKLDZEQUFjLENBQUMsQ0FBQztFQUU5QixvQkFDRVksdURBQUEsQ0FBQ1gsOENBQUc7SUFBQXdCLFFBQUEsZ0JBQ0ZiLHVEQUFBLENBQUNYLDhDQUFHO01BQUMwRCxTQUFTLEVBQUVuQixzREFBYTtNQUFBZixRQUFBLEdBQUV6SyxDQUFDLENBQUMsMkJBQTJCLENBQUMsRUFBQyxHQUFDO0lBQUEsQ0FBSyxDQUFDLGVBQ3JFMEosc0RBQUEsQ0FBQzRiLHFEQUFVO01BQUNqSixPQUFPLEVBQUMsT0FBTztNQUFDLGVBQVksMEJBQTBCO01BQUE1UixRQUFBLEVBQy9EcE87SUFBSyxDQUNJLENBQUM7RUFBQSxDQUNWLENBQUM7QUFFVixDQUFDO0FBRUQsTUFBTW1wQixrQkFBa0IsR0FBRzFrQixLQUFBLElBQTZCO0VBQUEsSUFBNUI7SUFBRXhFLFNBQVM7SUFBRUM7RUFBUyxDQUFDLEdBQUF1RSxLQUFBO0VBQ2pELE1BQU07SUFBRWQ7RUFBRSxDQUFDLEdBQUdnSiw2REFBYyxDQUFDLENBQUM7RUFFOUIsb0JBQ0VZLHVEQUFBLENBQUNYLDhDQUFHO0lBQUF3QixRQUFBLGdCQUNGYix1REFBQSxDQUFDWCw4Q0FBRztNQUFDMEQsU0FBUyxFQUFFbkIsc0RBQWE7TUFBQWYsUUFBQSxHQUFFekssQ0FBQyxDQUFDLDJCQUEyQixDQUFDLEVBQUMsR0FBQztJQUFBLENBQUssQ0FBQyxlQUNyRTRKLHVEQUFBLENBQUMwYixxREFBVTtNQUFDakosT0FBTyxFQUFDLE9BQU87TUFBQTVSLFFBQUEsR0FDeEJuTyxTQUFTLEVBQUMsR0FBQyxFQUFDQyxRQUFRO0lBQUEsQ0FDWCxDQUFDO0VBQUEsQ0FDVixDQUFDO0FBRVYsQ0FBQztBQUVELE1BQU1rcEIsU0FBUyxHQUFHdmtCLEtBQUEsSUFBNkI7RUFBQSxJQUE1QjtJQUFFNUUsU0FBUztJQUFFQztFQUFTLENBQUMsR0FBQTJFLEtBQUE7RUFDeEMsTUFBTTtJQUFFbEI7RUFBRSxDQUFDLEdBQUdnSiw2REFBYyxDQUFDLENBQUM7RUFFOUIsb0JBQ0VZLHVEQUFBLENBQUNYLDhDQUFHO0lBQUF3QixRQUFBLGdCQUNGYix1REFBQSxDQUFDWCw4Q0FBRztNQUFDMEQsU0FBUyxFQUFFbkIsc0RBQWE7TUFBQWYsUUFBQSxHQUFFekssQ0FBQyxDQUFDLDBCQUEwQixDQUFDLEVBQUMsR0FBQztJQUFBLENBQUssQ0FBQyxlQUNwRTRKLHVEQUFBLENBQUMwYixxREFBVTtNQUFDakosT0FBTyxFQUFDLE9BQU87TUFBQTVSLFFBQUEsR0FDeEJuTyxTQUFTLEVBQUMsR0FBQyxFQUFDQyxRQUFRO0lBQUEsQ0FDWCxDQUFDO0VBQUEsQ0FDVixDQUFDO0FBRVYsQ0FBQztBQUVELE1BQU1tcEIsY0FBYyxHQUFHcGpCLEtBQUEsSUFBMEM7RUFBQSxJQUFBcWpCLGFBQUEsRUFBQUMsY0FBQSxFQUFBQyxjQUFBO0VBQUEsSUFBekM7SUFBRTNpQixNQUFNO0lBQUVraUI7RUFBeUIsQ0FBQyxHQUFBOWlCLEtBQUE7RUFDMUQsTUFBTTtJQUFFdEM7RUFBRSxDQUFDLEdBQUdnSiw2REFBYyxDQUFDLENBQUM7RUFDOUIsTUFBTThjLFlBQVksR0FBRyxHQUFBSCxhQUFBLEdBQUN6aUIsTUFBTSxDQUFDNEQsS0FBSyxjQUFBNmUsYUFBQSxlQUFaQSxhQUFBLENBQWN0cEIsS0FBSyxLQUFJNkcsTUFBTSxDQUFDNmlCLFNBQVM7RUFDN0QsTUFBTUMsV0FBVyxHQUFHLENBQUMsR0FBQUosY0FBQSxHQUFDMWlCLE1BQU0sQ0FBQzRELEtBQUssY0FBQThlLGNBQUEsZUFBWkEsY0FBQSxDQUFjN2YsVUFBVTtFQUU5QyxJQUFJK2YsWUFBWSxFQUFFO0lBQ2hCLG9CQUNFcGMsc0RBQUE7TUFDRWlELFNBQVMsRUFBRW5CLGlFQUF3QjtNQUNuQyxlQUFZLDRCQUE0QjtNQUFBZixRQUFBLEVBRXZDekssQ0FBQyxDQUFDLDBDQUEwQztJQUFDLENBQzFDLENBQUM7RUFFWDtFQUVBLEtBQUE2bEIsY0FBQSxHQUFJM2lCLE1BQU0sQ0FBQzRELEtBQUssY0FBQStlLGNBQUEsZUFBWkEsY0FBQSxDQUFjeHBCLEtBQUssRUFBRTtJQUFBLElBQUE2cEIsYUFBQSxFQUFBQyxjQUFBLEVBQUFDLGNBQUEsRUFBQUMsY0FBQTtJQUN2QixvQkFDRXpjLHVEQUFBLENBQUMrViwrQ0FBSTtNQUFDekQsU0FBUztNQUFBelIsUUFBQSxnQkFDYmYsc0RBQUEsQ0FBQ2lXLCtDQUFJO1FBQUNHLElBQUk7UUFBQXJWLFFBQUEsZUFDUmYsc0RBQUEsQ0FBQzZiLFVBQVU7VUFBQ2xwQixLQUFLLEVBQUU2RyxNQUFNLENBQUM0RCxLQUFLLENBQUN6SztRQUFNLENBQUU7TUFBQyxDQUNyQyxDQUFDLEVBQ04rb0Isd0JBQXdCLGlCQUN2QjFiLHNEQUFBLENBQUNpVywrQ0FBSTtRQUFDRyxJQUFJO1FBQUNuVCxTQUFTLEVBQUVuQiwrREFBc0I7UUFBQWYsUUFBQSxlQUMxQ2Ysc0RBQUEsQ0FBQzhiLGtCQUFrQjtVQUNqQmxwQixTQUFTLEdBQUE0cEIsYUFBQSxHQUFFaGpCLE1BQU0sQ0FBQzFCLEtBQUssY0FBQTBrQixhQUFBLHVCQUFaQSxhQUFBLENBQWNLLGdCQUFpQjtVQUMxQ2hxQixRQUFRLEdBQUE0cEIsY0FBQSxHQUFFampCLE1BQU0sQ0FBQzFCLEtBQUssY0FBQTJrQixjQUFBLHVCQUFaQSxjQUFBLENBQWNLO1FBQWdCLENBQ3pDO01BQUMsQ0FDRSxDQUNQLEVBQ0FSLFdBQVcsaUJBQ1Z0YyxzREFBQSxDQUFDaVcsK0NBQUk7UUFBQ0csSUFBSTtRQUFDblQsU0FBUyxFQUFFbkIsK0RBQXNCO1FBQUFmLFFBQUEsZUFDMUNmLHNEQUFBLENBQUMrYixTQUFTO1VBQ1JucEIsU0FBUyxHQUFBOHBCLGNBQUEsR0FBRWxqQixNQUFNLENBQUM0RCxLQUFLLGNBQUFzZixjQUFBLHVCQUFaQSxjQUFBLENBQWNsZ0IsVUFBVztVQUNwQzNKLFFBQVEsR0FBQThwQixjQUFBLEdBQUVuakIsTUFBTSxDQUFDNEQsS0FBSyxjQUFBdWYsY0FBQSx1QkFBWkEsY0FBQSxDQUFjbGdCO1FBQVUsQ0FDbkM7TUFBQyxDQUNFLENBQ1A7SUFBQSxDQUNHLENBQUM7RUFFWDtFQUVBLE9BQU8sSUFBSTtBQUNiLENBQUM7QUFFRHVmLGNBQWMsQ0FBQ3phLFNBQVMsR0FBRztFQUN6Qi9ILE1BQU0sRUFBRTZGLHVEQUFlLENBQUM7SUFDdEJqQyxLQUFLLEVBQUVpQyx1REFBZSxDQUFDO01BQ3JCMU0sS0FBSyxFQUFFME0sMERBQWdCaUU7SUFDekIsQ0FBQyxDQUFDO0lBQ0YrWSxTQUFTLEVBQUVoZCx3REFBY2tFO0VBQzNCLENBQUMsQ0FBQztFQUNGbVksd0JBQXdCLEVBQUVyYyx3REFBY2tFO0FBQzFDLENBQUM7QUFFRCxpRUFBZXlZLGNBQWM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3BHVztBQUNMO0FBQ1k7QUFDUjtBQUNXO0FBQ2U7QUFDbEI7QUFBQTtBQUUvQyxNQUFNZ0IsYUFBYSxHQUFHcm1CLElBQUEsSUFNaEI7RUFBQSxJQUFBc21CLG9CQUFBLEVBQUFDLHFCQUFBO0VBQUEsSUFOaUI7SUFDckJscEIsTUFBTTtJQUNOOEQsS0FBSztJQUNMcWxCLGVBQWU7SUFDZkMsZUFBZTtJQUNmM0I7RUFDRixDQUFDLEdBQUE5a0IsSUFBQTtFQUNDLE1BQU07SUFBRUw7RUFBRSxDQUFDLEdBQUdnSiw2REFBYyxDQUFDLENBQUM7RUFDOUIsTUFBTSxDQUFDK2QsY0FBYyxFQUFFQyxpQkFBaUIsQ0FBQyxHQUFHNWEsK0NBQVEsQ0FDbERxYSxzRUFDRixDQUFDO0VBRUQsSUFBSSxFQUFDamxCLEtBQUssYUFBTEEsS0FBSyxnQkFBQW1sQixvQkFBQSxHQUFMbmxCLEtBQUssQ0FBRWdqQixhQUFhLGNBQUFtQyxvQkFBQSxlQUFwQkEsb0JBQUEsQ0FBc0I1bkIsTUFBTSxHQUFFLE9BQU8sSUFBSTtFQUM5QyxNQUFNa29CLGFBQWEsR0FBR3psQixLQUFLLGFBQUxBLEtBQUssZ0JBQUFvbEIscUJBQUEsR0FBTHBsQixLQUFLLENBQUVnakIsYUFBYSxjQUFBb0MscUJBQUEsdUJBQXBCQSxxQkFBQSxDQUFzQk0sS0FBSyxDQUFDLENBQUMsRUFBRUgsY0FBYyxDQUFDO0VBRXBFLE1BQU1JLFVBQVUsR0FBR0EsQ0FBQSxLQUFNO0lBQ3ZCLElBQUksQ0FBQTNsQixLQUFLLGFBQUxBLEtBQUssdUJBQUxBLEtBQUssQ0FBRTRsQixhQUFhLEtBQUc1bEIsS0FBSyxhQUFMQSxLQUFLLHVCQUFMQSxLQUFLLENBQUVnakIsYUFBYSxDQUFDemxCLE1BQU0sR0FBRTtNQUN0RDhuQixlQUFlLENBQUMsQ0FBQztJQUNuQjtJQUNBRyxpQkFBaUIsQ0FBQ0QsY0FBYyxHQUFHTixzRUFBd0IsQ0FBQztFQUM5RCxDQUFDO0VBRUQsTUFBTVksVUFBVSxHQUFHQSxDQUFBLEtBQU1MLGlCQUFpQixDQUFDUCxzRUFBd0IsQ0FBQztFQUVwRSxvQkFDRTdjLHVEQUFBLENBQUFtWSx1REFBQTtJQUFBdFgsUUFBQSxHQUNHd2MsYUFBYSxhQUFiQSxhQUFhLHVCQUFiQSxhQUFhLENBQUVuakIsR0FBRyxDQUFFWixNQUFNLGlCQUN6QndHLHNEQUFBLENBQUMrYSx5REFBZ0I7TUFFZnZoQixNQUFNLEVBQUVBLE1BQU87TUFDZnhGLE1BQU0sRUFBRUEsTUFBTztNQUNmdW5CLGFBQWEsRUFBRSxLQUFNO01BQ3JCQyxrQkFBa0IsRUFBRSxDQUFDLENBQUM0QixlQUFlLENBQUNRLElBQUksQ0FBRXRuQixDQUFDLElBQUtBLENBQUMsQ0FBQzhCLEVBQUUsS0FBS29CLE1BQU0sQ0FBQ3BCLEVBQUUsQ0FBRTtNQUN0RXFqQixjQUFjLEVBQUVBO0lBQWUsR0FMMUJqaUIsTUFBTSxDQUFDcEIsRUFNYixDQUNGLENBQUMsRUFDRCxDQUFBTixLQUFLLGFBQUxBLEtBQUssdUJBQUxBLEtBQUssQ0FBRTRsQixhQUFhLElBQUdMLGNBQWMsZ0JBQ3BDcmQsc0RBQUEsQ0FBQ2lRLGlEQUFNO01BQ0wsY0FBVyxrQkFBa0I7TUFDN0JtSyxJQUFJLEVBQUMsUUFBUTtNQUNiblgsU0FBUyxFQUFFbkIsK0RBQXNCO01BQ2pDdUIsT0FBTyxFQUFFb2EsVUFBVztNQUFBMWMsUUFBQSxFQUVuQnpLLENBQUMsQ0FBQywwQkFBMEI7SUFBQyxDQUN4QixDQUFDLEdBRVQsRUFDRCxFQUNBLENBQUFpbkIsYUFBYSxhQUFiQSxhQUFhLHVCQUFiQSxhQUFhLENBQUVsb0IsTUFBTSxJQUFHMG5CLHNFQUF3QixJQUNqRCxDQUFBUSxhQUFhLGFBQWJBLGFBQWEsdUJBQWJBLGFBQWEsQ0FBRWxvQixNQUFNLE9BQUt5QyxLQUFLLGFBQUxBLEtBQUssdUJBQUxBLEtBQUssQ0FBRTRsQixhQUFhLGlCQUM1QzFkLHNEQUFBLENBQUNpUSxpREFBTTtNQUNMLGNBQVcsa0JBQWtCO01BQzdCbUssSUFBSSxFQUFDLFFBQVE7TUFDYm5YLFNBQVMsRUFBRW5CLCtEQUFzQjtNQUNqQ3VCLE9BQU8sRUFBRXNhLFVBQVc7TUFBQTVjLFFBQUEsRUFFbkJ6SyxDQUFDLENBQUMsMEJBQTBCO0lBQUMsQ0FDeEIsQ0FBQyxHQUVULEVBQ0Q7RUFBQSxDQUNELENBQUM7QUFFUCxDQUFDO0FBRUQwbUIsYUFBYSxDQUFDemIsU0FBUyxHQUFHO0VBQ3hCekosS0FBSyxFQUFFdUgsMERBQWdCO0VBQ3ZCckwsTUFBTSxFQUFFcUwsMERBQWdCbUM7QUFDMUIsQ0FBQztBQUVELGlFQUFld2IsYUFBYTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQzlFNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUV3QztBQUNMO0FBQ1k7QUFDRztBQUNWO0FBQ007QUFDSjtBQUNDO0FBQ3FCO0FBQzNCO0FBQ1M7QUFDSDtBQUNxQjtBQUM3QjtBQUNRO0FBQ0M7QUFDRztBQUFBO0FBRS9DLE1BQU1vQixVQUFVLEdBQUc7RUFDakJDLE1BQU0sRUFBRSxRQUFRO0VBQ2hCQyxRQUFRLEVBQUUsVUFBVTtFQUNwQkMsTUFBTSxFQUFFO0FBQ1YsQ0FBQztBQUVELE1BQU1DLFVBQVUsR0FBRzduQixJQUFBLElBS2I7RUFBQSxJQUxjO0lBQ2xCOG5CLFlBQVk7SUFDWnJDLFlBQVk7SUFDWnNDLGNBQWM7SUFDZEM7RUFDRixDQUFDLEdBQUFob0IsSUFBQTtFQUNDLE1BQU07SUFBRUw7RUFBRSxDQUFDLEdBQUdnSiw2REFBYyxDQUFDLENBQUM7RUFFOUIsSUFBSThjLFlBQVksRUFBRTtJQUNoQixvQkFDRXBjLHVEQUFBLENBQUNpUSxpREFBTTtNQUNMaE4sU0FBUyxFQUFFbkIsb0VBQTBCO01BQ3JDdUIsT0FBTyxFQUFFQSxDQUFBLEtBQU1zYixXQUFXLENBQUNQLFVBQVUsQ0FBQ0csTUFBTSxDQUFFO01BQUF4ZCxRQUFBLEVBRTdDekssQ0FBQyxDQUFDLDZCQUE2QjtJQUFDLENBQzNCLENBQUM7RUFFYjtFQUVBLG9CQUNFNEosd0RBQUEsQ0FBQzRQLDREQUFLO0lBQ0ozRyxFQUFFLEVBQUU7TUFDRjZLLGNBQWMsRUFBRSxLQUFLO01BQ3JCMVIsS0FBSyxFQUFFO0lBQ1QsQ0FBRTtJQUNGOEcsVUFBVSxFQUFDLFFBQVE7SUFDbkIxVCxTQUFTLEVBQUMsS0FBSztJQUFBcUwsUUFBQSxnQkFFZmYsdURBQUEsQ0FBQ2lRLGlEQUFNO01BQ0xoTixTQUFTLEVBQUVuQix3RUFBOEI7TUFDekN1QixPQUFPLEVBQUVBLENBQUEsS0FBTXNiLFdBQVcsQ0FBQ1AsVUFBVSxDQUFDQyxNQUFNLENBQUU7TUFBQXRkLFFBQUEsRUFFN0MwZCxZQUFZLEdBQ1Rub0IsQ0FBQyxDQUFDLDZCQUE2QixDQUFDLEdBQ2hDQSxDQUFDLENBQUMsMkJBQTJCO0lBQUMsQ0FDNUIsQ0FBQyxFQUNSb29CLGNBQWMsaUJBQ2IxZSx1REFBQSxDQUFDaVEsaURBQU07TUFDTCxjQUFXLHdCQUF3QjtNQUNuQ21LLElBQUksRUFBQyxRQUFRO01BQ2JuWCxTQUFTLEVBQUVuQixnRUFBc0I7TUFDakN1QixPQUFPLEVBQUVBLENBQUEsS0FBTXNiLFdBQVcsQ0FBQ1AsVUFBVSxDQUFDRSxRQUFRLENBQUU7TUFBQXZkLFFBQUEsRUFFL0N6SyxDQUFDLENBQUMsK0JBQStCO0lBQUMsQ0FDN0IsQ0FDVDtFQUFBLENBQ0ksQ0FBQztBQUVaLENBQUM7QUFFRGtvQixVQUFVLENBQUNqZCxTQUFTLEdBQUc7RUFDckJrZCxZQUFZLEVBQUVwZix3REFBYyxDQUFDNkIsVUFBVTtFQUN2Q2tiLFlBQVksRUFBRS9jLHdEQUFjLENBQUM2QixVQUFVO0VBQ3ZDd2QsY0FBYyxFQUFFcmYsd0RBQWMsQ0FBQzZCLFVBQVU7RUFDekN5ZCxXQUFXLEVBQUV0Zix3REFBYyxDQUFDNkI7QUFDOUIsQ0FBQztBQUVELE1BQU02WixnQkFBZ0IsR0FBRzNqQixLQUFBLElBT25CO0VBQUEsSUFBQTJuQixtQkFBQSxFQUFBQyxhQUFBLEVBQUF4QyxhQUFBLEVBQUFQLGFBQUEsRUFBQVEsY0FBQSxFQUFBUCxjQUFBO0VBQUEsSUFQb0I7SUFDeEIxaUIsTUFBTTtJQUNOeEYsTUFBTTtJQUNOdW5CLGFBQWE7SUFDYkMsa0JBQWtCO0lBQ2xCQyxjQUFjO0lBQ2RDO0VBQ0YsQ0FBQyxHQUFBdGtCLEtBQUE7RUFDQyxNQUFNO0lBQUVkO0VBQUUsQ0FBQyxHQUFHZ0osNkRBQWMsQ0FBQyxDQUFDO0VBQzlCLE1BQU0zTCxRQUFRLEdBQUdtcUIsd0RBQVcsQ0FBQyxDQUFDO0VBQzlCLE1BQU1oRSxHQUFHLEdBQUdOLDhDQUFNLENBQUMsQ0FBQztFQUNwQixNQUFNO0lBQUVVLFlBQVk7SUFBRWtDLFlBQVk7SUFBRXFDLFlBQVk7SUFBRVE7RUFBWSxDQUFDLEdBQzdEZiwwRUFBZ0IsQ0FBQzFrQixNQUFNLENBQUM7RUFDMUIsTUFBTSxDQUFDMGxCLFNBQVMsRUFBRUMsWUFBWSxDQUFDLEdBQUd6YywrQ0FBUSxDQUFDLElBQUksQ0FBQztFQUNoRCxNQUFNMGMsWUFBWSxHQUFHcEIseUVBQXFCLENBQUNocUIsTUFBTSxDQUFDO0VBQ2xELE1BQU1xckIsb0JBQW9CLEdBQUdELFlBQVksR0FBR3RGLEdBQUc7RUFDL0MsTUFBTTRFLGNBQWMsR0FDbEJXLG9CQUFvQixJQUFJSixXQUFXLElBQUksQ0FBQ3ZELHdCQUF3QjtFQUVsRSxNQUFNNEQsZ0JBQWdCLEdBQUdBLENBQUEsS0FBTTtJQUM3QjNyQixRQUFRLENBQUNELHNEQUFXLENBQUMsQ0FBQyxDQUFDO0lBQ3ZCeXJCLFlBQVksQ0FBQyxJQUFJLENBQUM7RUFDcEIsQ0FBQztFQUVELE1BQU1JLGVBQWUsR0FBSUMsSUFBSSxJQUFLO0lBQ2hDN3JCLFFBQVEsQ0FBQ0Qsc0RBQVcsQ0FBQyxDQUFDLENBQUM7SUFDdkJ5ckIsWUFBWSxDQUFDSyxJQUFJLENBQUM7RUFDcEIsQ0FBQztFQUVELG9CQUNFdGYsd0RBQUEsQ0FBQytWLCtDQUFJO0lBQ0h6RCxTQUFTO0lBRVR2UCxTQUFTLEtBQUEvTixNQUFBLENBQUs0TSw4REFBbUIsT0FBQTVNLE1BQUEsQ0FDL0JxbUIsYUFBYSxHQUFHelosNkRBQWtCLEdBQUcsRUFBRSxPQUFBNU0sTUFBQSxDQUNyQ3FtQixhQUFhLElBQUksQ0FBQ3JCLFlBQVksR0FBR3BZLGdFQUFxQixHQUFHLEVBQUUsT0FBQTVNLE1BQUEsQ0FDN0RzbUIsa0JBQWtCLEdBQUcxWiwwREFBZSxHQUFHLEVBQUUsQ0FDeEM7SUFBQWYsUUFBQSxHQUVGd2EsYUFBYSxpQkFDWnZiLHVEQUFBLENBQUNpVywrQ0FBSTtNQUFDRyxJQUFJO01BQUNDLEVBQUUsRUFBRSxDQUFFO01BQUMvQixPQUFPLEVBQUUsQ0FBRTtNQUFDclIsU0FBUyxFQUFFbkIsMERBQWdCO01BQUFmLFFBQUEsZUFDdkRmLHVEQUFBLENBQUNzRywrREFBUTtRQUNQLGNBQVcsd0JBQXdCO1FBQ25DOFQsSUFBSSxFQUFDLFVBQVU7UUFDZmhTLE9BQU8sRUFBRW9ULGtCQUFtQjtRQUM1QnJVLFFBQVEsRUFBRzVPLENBQUMsSUFBS2tqQixjQUFjLENBQUNsakIsQ0FBQyxFQUFFaUIsTUFBTSxDQUFFO1FBQzNDMlAsRUFBRSxFQUFFO1VBQ0Ysb0JBQW9CLEVBQUU7WUFDcEI5RCxRQUFRLEVBQUU7VUFDWjtRQUNGLENBQUU7UUFDRmhFLFFBQVEsRUFBRSxDQUFDNlk7TUFBYSxDQUN6QjtJQUFDLENBQ0UsQ0FDUCxlQUNEaGEsd0RBQUEsQ0FBQytWLCtDQUFJO01BQ0hHLElBQUk7TUFDSjVELFNBQVM7TUFDVCxlQUFZO01BQ1o7TUFBQTtNQUNBNkQsRUFBRSxFQUFFa0YsYUFBYSxHQUFHLEVBQUUsR0FBRyxFQUFHO01BQUF4YSxRQUFBLGdCQUU1QmYsdURBQUEsQ0FBQ2lXLCtDQUFJO1FBQ0hJLEVBQUUsRUFBRSxDQUFFO1FBQ05qSCxFQUFFLEVBQUUsQ0FBRTtRQUNOMFEsRUFBRSxFQUFFLENBQUU7UUFDTjFKLElBQUk7UUFDSm5ULFNBQVMsRUFBRW5CLGtFQUF3QjtRQUNuQ3FVLE9BQU8sRUFBQyxlQUFlO1FBQUFwVixRQUFBLGVBRXZCZix1REFBQSxDQUFDOFAsNERBQUs7VUFDSjNHLEVBQUUsRUFBRTtZQUNGNkssY0FBYyxFQUFFO1VBQ2xCLENBQUU7VUFDRnRlLFNBQVMsRUFBQyxLQUFLO1VBQUFxTCxRQUFBLGVBRWZmLHVEQUFBO1lBQUFlLFFBQUEsR0FBQWdlLG1CQUFBLEdBQUt2bEIsTUFBTSxDQUFDd2YsV0FBVyxjQUFBK0YsbUJBQUEsdUJBQWxCQSxtQkFBQSxDQUFvQjVtQjtVQUFJLENBQUs7UUFBQyxDQUM5QjtNQUFDLENBQ0osQ0FBQyxlQUNQNkgsdURBQUEsQ0FBQ2lXLCtDQUFJO1FBQUNoVCxTQUFTLEVBQUVuQixxRUFBMkI7UUFBQ3VVLEVBQUUsRUFBRSxDQUFFO1FBQUNqSCxFQUFFLEVBQUUsQ0FBRTtRQUFDNlEsRUFBRSxFQUFFLENBQUU7UUFBQzdKLElBQUk7UUFBQXJWLFFBQUEsR0FBQWllLGFBQUEsR0FFbkV4bEIsTUFBTSxDQUFDMG1CLEtBQUssY0FBQWxCLGFBQUEsdUJBQVpBLGFBQUEsQ0FBY21CLFFBQVEsQ0FBQy9sQixHQUFHLENBQUV3VixFQUFFLGlCQUM3QjVQLHVEQUFBO1VBQ0VpRCxTQUFTLEVBQUVuQiw4REFBb0I7VUFDL0J1ZSxHQUFHLEVBQUV6USxFQUFFLENBQUMwUSxLQUFNO1VBQ2RDLEdBQUcsRUFBRTNRLEVBQUUsQ0FBQ3pYO1FBQUssR0FDUnlYLEVBQUUsQ0FBQ3pYLElBQ1QsQ0FDRjtNQUFDLENBQ0UsQ0FBQyxlQUNQK0gsd0RBQUEsQ0FBQytWLCtDQUFJO1FBQUNJLEVBQUUsRUFBRSxFQUFHO1FBQUNsTixFQUFFLEVBQUU7VUFBRXlSLEVBQUUsRUFBRSxDQUFDO1VBQUV2TCxFQUFFLEVBQUU7UUFBRSxDQUFFO1FBQUMrRyxJQUFJO1FBQUFyVixRQUFBLGdCQUN0Q2YsdURBQUEsQ0FBQ2djLHdEQUFjO1VBQ2J4aUIsTUFBTSxFQUFFQSxNQUFPO1VBQ2ZraUIsd0JBQXdCLEVBQUUsQ0FBQyxDQUFDQTtRQUF5QixDQUN0RCxDQUFDLGVBQ0Z4Yix3REFBQTtVQUFNK0MsU0FBUyxFQUFFbkIsMERBQWdCO1VBQUFmLFFBQUEsR0FDOUJ6SyxDQUFDLENBQUMseUJBQXlCLENBQUMsRUFBQyxHQUFDLEVBQUMsR0FBRyxlQUNuQzBKLHVEQUFBLENBQUNnQyxrREFBUTtZQUNQQyxJQUFJLEVBQUV6SSxNQUFNLENBQUNnSyxNQUFPO1lBQ3BCdEIsV0FBVyxFQUFFNUwsQ0FBQyxDQUFDLGtDQUFrQztVQUFFLENBQ3BELENBQUM7UUFBQSxDQUNFLENBQUM7TUFBQSxDQUNILENBQUMsZUFDUDRKLHdEQUFBLENBQUNYLDhDQUFHO1FBQUM0SixFQUFFLEVBQUU7VUFBRTBLLE9BQU8sRUFBRSxNQUFNO1VBQUU0TSxRQUFRLEVBQUUsTUFBTTtVQUFFbmUsS0FBSyxFQUFFO1FBQU8sQ0FBRTtRQUFBdkIsUUFBQSxnQkFDNURmLHVEQUFBLENBQUNULDhDQUFHO1VBQUM0SixFQUFFLEVBQUU7WUFBRXVYLFFBQVEsRUFBRTtVQUFRLENBQUU7VUFBQTNmLFFBQUEsZUFDN0JmLHVEQUFBLENBQUMrZCxxREFBWTtZQUFDdmtCLE1BQU0sRUFBRUE7VUFBTyxDQUFFO1FBQUMsQ0FDN0IsQ0FBQyxlQUNOd0csdURBQUEsQ0FBQ1QsOENBQUc7VUFBQzBELFNBQVMsRUFBRW5CLHFFQUEyQjtVQUFBZixRQUFBLEVBQ3hDdkgsTUFBTSxDQUFDNmlCLFNBQVMsSUFBSSxDQUFDZCxhQUFhLGlCQUNqQ3ZiLHVEQUFBLENBQUN3ZSxVQUFVO1lBQ1RwQyxZQUFZLEVBQUVBLFlBQWE7WUFDM0JxQyxZQUFZLEVBQUVBLFlBQWE7WUFDM0JDLGNBQWMsRUFBRUEsY0FBYyxJQUFJLENBQUNoRCx3QkFBeUI7WUFDNURpRCxXQUFXLEVBQUVZO1VBQWdCLENBQzlCO1FBQ0YsQ0FDRSxDQUFDO01BQUEsQ0FDSCxDQUFDLGVBQ052Zix1REFBQSxDQUFDaWUsc0RBQVk7UUFDWGpxQixNQUFNLEVBQUVBLE1BQU87UUFDZmlILFFBQVEsRUFBRXpCLE1BQU0sYUFBTkEsTUFBTSx1QkFBTkEsTUFBTSxDQUFFcEIsRUFBRztRQUNyQkssT0FBTyxFQUFFLENBQUFlLE1BQU0sYUFBTkEsTUFBTSx1QkFBTkEsTUFBTSxDQUFFRyxRQUFRLE1BQUlILE1BQU0sYUFBTkEsTUFBTSxnQkFBQWdqQixhQUFBLEdBQU5oakIsTUFBTSxDQUFFMUIsS0FBSyxjQUFBMGtCLGFBQUEsdUJBQWJBLGFBQUEsQ0FBZXBrQixFQUFFLENBQUM7UUFDL0N3b0IsT0FBTyxFQUFFcG5CLE1BQU0sYUFBTkEsTUFBTSxnQkFBQXlpQixhQUFBLEdBQU56aUIsTUFBTSxDQUFFNEQsS0FBSyxjQUFBNmUsYUFBQSx1QkFBYkEsYUFBQSxDQUFlN2pCLEVBQUc7UUFDM0IrTCxJQUFJLEVBQUUrYSxTQUFTLEtBQUtkLFVBQVUsQ0FBQ0MsTUFBTztRQUN0Q2hlLE9BQU8sRUFBRWlmO01BQWlCLENBQzNCLENBQUMsZUFDRnRmLHVEQUFBLENBQUNtZSxzREFBWTtRQUNYbGpCLFFBQVEsRUFBRXpCLE1BQU0sYUFBTkEsTUFBTSx1QkFBTkEsTUFBTSxDQUFFcEIsRUFBRztRQUNyQkssT0FBTyxFQUFFLENBQUFlLE1BQU0sYUFBTkEsTUFBTSx1QkFBTkEsTUFBTSxDQUFFRyxRQUFRLE1BQUlILE1BQU0sYUFBTkEsTUFBTSxnQkFBQWlqQixjQUFBLEdBQU5qakIsTUFBTSxDQUFFMUIsS0FBSyxjQUFBMmtCLGNBQUEsdUJBQWJBLGNBQUEsQ0FBZXJrQixFQUFFLENBQUM7UUFDL0N3b0IsT0FBTyxFQUFFcG5CLE1BQU0sYUFBTkEsTUFBTSxnQkFBQTBpQixjQUFBLEdBQU4xaUIsTUFBTSxDQUFFNEQsS0FBSyxjQUFBOGUsY0FBQSx1QkFBYkEsY0FBQSxDQUFlOWpCLEVBQUc7UUFDM0IrTCxJQUFJLEVBQUUsQ0FBQ2lhLFVBQVUsQ0FBQ0UsUUFBUSxFQUFFRixVQUFVLENBQUNHLE1BQU0sQ0FBQyxDQUFDelYsUUFBUSxDQUFDb1csU0FBUyxDQUFFO1FBQ25FN2UsT0FBTyxFQUFFaWY7TUFBaUIsQ0FDM0IsQ0FBQztJQUFBLENBQ0UsQ0FBQztFQUFBLEdBckdGOWxCLE1BQU0sQ0FBQ3BCLEVBc0dSLENBQUM7QUFFWCxDQUFDO0FBRUQyaUIsZ0JBQWdCLENBQUN4WixTQUFTLEdBQUc7RUFDM0IvSCxNQUFNLEVBQUU2Rix1REFBZSxDQUFDO0lBQ3RCakgsRUFBRSxFQUFFaUgsMERBQWdCO0lBQ3BCMUYsUUFBUSxFQUFFMEYsMERBQWdCO0lBQzFCakMsS0FBSyxFQUFFaUMsdURBQWUsQ0FBQztNQUNyQmpILEVBQUUsRUFBRWlILDBEQUFnQjtNQUNwQjFNLEtBQUssRUFBRTBNLDBEQUFnQmlFO0lBQ3pCLENBQUMsQ0FBQztJQUNGRSxNQUFNLEVBQUVuRSwwREFBZ0I7SUFDeEJ3aEIscUJBQXFCLEVBQUV4aEIsMERBQWdCO0lBQ3ZDMlosV0FBVyxFQUFFM1osdURBQWUsQ0FBQztNQUMzQmxILElBQUksRUFBRWtILDBEQUFnQmlFO0lBQ3hCLENBQUMsQ0FBQztJQUNGK1ksU0FBUyxFQUFFaGQsd0RBQWNrRTtFQUMzQixDQUFDLENBQUM7RUFDRnZQLE1BQU0sRUFBRXFMLDBEQUFnQjtFQUN4QmtjLGFBQWEsRUFBRWxjLHdEQUFjO0VBQzdCbWMsa0JBQWtCLEVBQUVuYyx3REFBYztFQUNsQ29jLGNBQWMsRUFBRXBjLHdEQUFjO0VBQzlCcWMsd0JBQXdCLEVBQUVyYyx3REFBY2tFO0FBQzFDLENBQUM7QUFFRCxpRUFBZXdYLGdCQUFnQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQzlQUztBQUNMO0FBQ1k7QUFDTDtBQUNKO0FBQ0Y7QUFDUTtBQUNEO0FBQ1M7QUFDTjtBQUNDO0FBQ2E7QUFBQTtBQUU1RCxNQUFNbUcsUUFBUSxHQUFJQyxLQUFLLElBQUs7RUFDMUIsTUFBTTtJQUFFcGdCLFFBQVE7SUFBRWxLLEtBQUs7SUFBRXVxQjtFQUFNLENBQUMsR0FBR0QsS0FBSztFQUN4QyxvQkFDRW5oQix1REFBQTtJQUNFb2EsSUFBSSxFQUFDLFVBQVU7SUFDZmlILE1BQU0sRUFBRXhxQixLQUFLLEtBQUt1cUIsS0FBTTtJQUN4QmhwQixFQUFFLGNBQUFsRCxNQUFBLENBQWNrc0IsS0FBSyxDQUFHO0lBQ3hCLDBCQUFBbHNCLE1BQUEsQ0FBd0Jrc0IsS0FBSyxDQUFHO0lBQUFyZ0IsUUFBQSxFQUUvQmxLLEtBQUssS0FBS3VxQixLQUFLLElBQUlyZ0I7RUFBUSxDQUN6QixDQUFDO0FBRVYsQ0FBQztBQUVELE1BQU11Z0IsdUJBQXVCLEdBQUczcUIsSUFBQSxJQU0xQjtFQUFBLElBTjJCO0lBQy9CNHFCLFFBQVE7SUFDUnZ0QixNQUFNO0lBQ044RCxLQUFLO0lBQ0wwcEIsZUFBZTtJQUNmckU7RUFDRixDQUFDLEdBQUF4bUIsSUFBQTtFQUNDLE1BQU07SUFBRUw7RUFBRSxDQUFDLEdBQUdnSiw2REFBYyxDQUFDLENBQUM7RUFDOUIsTUFBTSxDQUFDekksS0FBSyxFQUFFNHFCLFFBQVEsQ0FBQyxHQUFHL2UsK0NBQVEsQ0FBQyxDQUFDLENBQUM7RUFDckMsTUFBTTRLLFlBQVksR0FBR0EsQ0FBQ29VLENBQUMsRUFBRW5aLFFBQVEsS0FBSztJQUNwQ2taLFFBQVEsQ0FBQ2xaLFFBQVEsQ0FBQztFQUNwQixDQUFDO0VBQ0QsTUFBTSxDQUFDNlUsZUFBZSxFQUFFdUUsa0JBQWtCLENBQUMsR0FBR2pmLCtDQUFRLENBQUMsRUFBRSxDQUFDO0VBQzFELE1BQU0sQ0FBQ2lYLGFBQWEsRUFBRWlJLGdCQUFnQixDQUFDLEdBQUdsZiwrQ0FBUSxDQUFDLEtBQUssQ0FBQztFQUN6RCxNQUFNLENBQUNtZixpQkFBaUIsRUFBRUMsb0JBQW9CLENBQUMsR0FBR3BmLCtDQUFRLENBQUMsS0FBSyxDQUFDO0VBRWpFLE1BQU1rWCxhQUFhLEdBQUdBLENBQUEsS0FBTTtJQUMxQmdJLGdCQUFnQixDQUFDLElBQUksQ0FBQztFQUN4QixDQUFDO0VBQ0QsTUFBTUcscUJBQXFCLEdBQUl2b0IsTUFBTSxJQUFLO0lBQ3hDLE1BQU13b0IsY0FBYyxHQUFHNUUsZUFBZSxDQUFDem9CLE1BQU0sQ0FBRTJCLENBQUMsSUFBS0EsQ0FBQyxDQUFDOEIsRUFBRSxLQUFLb0IsTUFBTSxDQUFDcEIsRUFBRSxDQUFDO0lBQ3hFdXBCLGtCQUFrQixDQUFDSyxjQUFjLENBQUM7RUFDcEMsQ0FBQztFQUNELE1BQU12RyxjQUFjLEdBQUdBLENBQUNsakIsQ0FBQyxFQUFFaUIsTUFBTSxLQUFLO0lBQ3BDLE1BQU07TUFBRTRPO0lBQVEsQ0FBQyxHQUFHN1AsQ0FBQyxDQUFDeVEsTUFBTTtJQUM1QixJQUFJWixPQUFPLEVBQUU7TUFBQSxJQUFBNlUsb0JBQUE7TUFDWCxNQUFNZ0YsY0FBYyxHQUFHbnFCLEtBQUssYUFBTEEsS0FBSyxnQkFBQW1sQixvQkFBQSxHQUFMbmxCLEtBQUssQ0FBRWdqQixhQUFhLGNBQUFtQyxvQkFBQSx1QkFBcEJBLG9CQUFBLENBQXNCVyxJQUFJLENBQzlDdG5CLENBQUMsSUFBS0EsQ0FBQyxDQUFDOEIsRUFBRSxLQUFLb0IsTUFBTSxDQUFDcEIsRUFDekIsQ0FBQztNQUNEdXBCLGtCQUFrQixDQUFDLENBQUMsR0FBR3ZFLGVBQWUsRUFBRTZFLGNBQWMsQ0FBQyxDQUFDO0lBQzFELENBQUMsTUFBTTtNQUNMRixxQkFBcUIsQ0FBQ3ZvQixNQUFNLENBQUM7SUFDL0I7RUFDRixDQUFDO0VBRUQsTUFBTTBvQixrQkFBa0IsR0FBR0EsQ0FBQSxLQUFNO0lBQy9CTixnQkFBZ0IsQ0FBQyxLQUFLLENBQUM7SUFDdkJELGtCQUFrQixDQUFDLEVBQUUsQ0FBQztFQUN4QixDQUFDO0VBRUQsTUFBTVEsc0JBQXNCLEdBQUdBLENBQUEsS0FBTTtJQUNuQ1AsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO0lBQ3ZCRCxrQkFBa0IsQ0FBQyxFQUFFLENBQUM7RUFDeEIsQ0FBQztFQUVELE1BQU1TLFdBQVcsR0FBR0EsQ0FBQSxLQUNsQlosZUFBZSxpQkFDYnhoQix1REFBQSxDQUFDNlcsMERBQVU7SUFDVG5kLE9BQU8sRUFBRXBELENBQUMsQ0FBQyx1Q0FBdUMsQ0FBRTtJQUNwRDBQLEtBQUssRUFBQyxTQUFTO0lBQ2Y4USxVQUFVLEVBQUM7RUFBb0IsQ0FDaEMsQ0FDRjtFQUVILE9BQU95SyxRQUFRLGdCQUNicmhCLHdEQUFBLENBQUNYLDhDQUFHO0lBQ0YwRCxTQUFTLEVBQUVuQixxRUFBMkI7SUFDdEMsZUFBWSw4QkFBOEI7SUFBQWYsUUFBQSxnQkFFMUNmLHVEQUFBLENBQUNULDhDQUFHO01BQUM0SixFQUFFLEVBQUU7UUFBRWtaLFdBQVcsRUFBRSxTQUFTO1FBQUVoVCxFQUFFLEVBQUU7TUFBRSxDQUFFO01BQUF0TyxRQUFBLGVBQ3pDYix3REFBQSxDQUFDNGdCLDJEQUFJO1FBQ0hqcUIsS0FBSyxFQUFFQSxLQUFNO1FBQ2JzUSxRQUFRLEVBQUVtRyxZQUFhO1FBQ3ZCLGNBQVcsbUJBQW1CO1FBQUF2TSxRQUFBLGdCQUU5QmYsdURBQUEsQ0FBQytnQiwwREFBRztVQUFDOVksS0FBSyxFQUFFM1IsQ0FBQyxDQUFDLGdCQUFnQixDQUFFO1VBQUMyTSxTQUFTLEVBQUVuQiw0REFBaUJ3Z0I7UUFBQyxDQUFFLENBQUMsZUFDakV0aUIsdURBQUEsQ0FBQytnQiwwREFBRztVQUFDOVksS0FBSyxFQUFFM1IsQ0FBQyxDQUFDLGdCQUFnQixDQUFFO1VBQUMyTSxTQUFTLEVBQUVuQiw0REFBaUJ3Z0I7UUFBQyxDQUFFLENBQUM7TUFBQSxDQUM3RDtJQUFDLENBQ0osQ0FBQyxFQUNMRixXQUFXLENBQUMsQ0FBQyxlQUNkcGlCLHVEQUFBLENBQUNraEIsUUFBUTtNQUFDcnFCLEtBQUssRUFBRUEsS0FBTTtNQUFDdXFCLEtBQUssRUFBRSxDQUFFO01BQUFyZ0IsUUFBQSxlQUMvQmYsdURBQUEsQ0FBQ2dkLHNEQUFhO1FBQ1pocEIsTUFBTSxFQUFFQSxNQUFPO1FBQ2Y4RCxLQUFLLEVBQUVBLEtBQU07UUFDYnFsQixlQUFlLEVBQUVBLGVBQWdCO1FBQ2pDQyxlQUFlLEVBQUVBLGVBQWdCO1FBQ2pDM0IsY0FBYyxFQUFFQSxjQUFlO1FBQy9COUIsYUFBYSxFQUFFQSxhQUFjO1FBQzdCb0kscUJBQXFCLEVBQUVBO01BQXNCLENBQzlDO0lBQUMsQ0FDTSxDQUFDLGVBQ1gvaEIsdURBQUEsQ0FBQ2toQixRQUFRO01BQUNycUIsS0FBSyxFQUFFQSxLQUFNO01BQUN1cUIsS0FBSyxFQUFFLENBQUU7TUFBQXJnQixRQUFBLGVBQy9CZix1REFBQSxDQUFDMGEscURBQVk7UUFDWDVpQixLQUFLLEVBQUVBLEtBQU07UUFDYjlELE1BQU0sRUFBRUEsTUFBTztRQUNmNGxCLGFBQWEsRUFBRUEsYUFBYztRQUM3QkQsYUFBYSxFQUFFQTtNQUFjLENBQzlCO0lBQUMsQ0FDTSxDQUFDO0VBQUEsQ0FDUixDQUFDLGdCQUVOelosd0RBQUEsQ0FBQW1ZLHdEQUFBO0lBQUF0WCxRQUFBLGdCQUNFZix1REFBQSxDQUFDaVcsK0NBQUk7TUFBQ0csSUFBSTtNQUFDbU0sRUFBRSxFQUFFLEVBQUc7TUFBQXhoQixRQUFBLEVBQ2ZxaEIsV0FBVyxDQUFDO0lBQUMsQ0FDVixDQUFDLGVBQ1BwaUIsdURBQUEsQ0FBQ2lXLCtDQUFJO01BQ0gzQixPQUFPLEVBQUUsQ0FBRTtNQUNYOEIsSUFBSTtNQUNKbU0sRUFBRSxFQUFFLENBQUU7TUFDTnpxQixLQUFLLEVBQUU7UUFBRXlxQixFQUFFLEVBQUU7TUFBRSxDQUFFO01BQ2pCdGYsU0FBUyxFQUFFbkIscUVBQTJCO01BQ3RDLGVBQVksK0JBQStCO01BQUFmLFFBQUEsZUFFM0NmLHVEQUFBLENBQUNnZCxzREFBYTtRQUNaaHBCLE1BQU0sRUFBRUEsTUFBTztRQUNmOEQsS0FBSyxFQUFFQSxLQUFNO1FBQ2JxbEIsZUFBZSxFQUFFQSxlQUFnQjtRQUNqQ0MsZUFBZSxFQUFFQSxlQUFnQjtRQUNqQzNCLGNBQWMsRUFBRUEsY0FBZTtRQUMvQjlCLGFBQWEsRUFBRUEsYUFBYztRQUM3Qm9JLHFCQUFxQixFQUFFQTtNQUFzQixDQUM5QztJQUFDLENBQ0UsQ0FBQyxlQUNQL2hCLHVEQUFBLENBQUNpVywrQ0FBSTtNQUFDM0IsT0FBTyxFQUFFLENBQUU7TUFBQzhCLElBQUk7TUFBQ21NLEVBQUUsRUFBRSxDQUFFO01BQUN6cUIsS0FBSyxFQUFFO1FBQUV5cUIsRUFBRSxFQUFFO01BQUUsQ0FBRTtNQUFBeGhCLFFBQUEsZUFDN0NmLHVEQUFBLENBQUMwYSxxREFBWTtRQUNYMW1CLE1BQU0sRUFBRUEsTUFBTztRQUNmOEQsS0FBSyxFQUFFQSxLQUFNO1FBQ2I4aEIsYUFBYSxFQUFFQSxhQUFjO1FBQzdCRCxhQUFhLEVBQUVBLGFBQWM7UUFDN0JFLG1CQUFtQixFQUFFQSxDQUFBLEtBQU1pSSxvQkFBb0IsQ0FBQyxJQUFJO01BQUUsQ0FDdkQ7SUFBQyxDQUNFLENBQUMsZUFDUDloQix1REFBQSxDQUFDZ2hCLHVEQUFtQjtNQUNsQi9tQixPQUFPLEVBQUUsQ0FBQW5DLEtBQUssYUFBTEEsS0FBSyx1QkFBTEEsS0FBSyxDQUFFZ2pCLGFBQWEsS0FBSSxFQUFHO01BQ3BDM1csSUFBSSxFQUFFd1YsYUFBYztNQUNwQjZJLG9CQUFvQixFQUFFQSxDQUFBLEtBQU1MLHNCQUFzQixDQUFDLENBQUU7TUFDckRNLGFBQWEsRUFBRUEsQ0FBQSxLQUFNUCxrQkFBa0IsQ0FBQyxDQUFFO01BQzFDOUUsZUFBZSxFQUFFQSxlQUFnQjtNQUNqQzNCLGNBQWMsRUFBRUEsY0FBZTtNQUMvQnNHLHFCQUFxQixFQUFFQTtJQUFzQixDQUM5QyxDQUFDLGVBQ0YvaEIsdURBQUEsQ0FBQ2loQixzRUFBYTtNQUNaaG5CLE9BQU8sRUFBRW5DLEtBQUssYUFBTEEsS0FBSyx1QkFBTEEsS0FBSyxDQUFFZ2pCLGFBQWM7TUFDOUIzQixRQUFRLEVBQUVyaEIsS0FBSyxDQUFDcWhCLFFBQVM7TUFDekJoVixJQUFJLEVBQUUwZCxpQkFBa0I7TUFDeEJZLGFBQWEsRUFBRUEsQ0FBQSxLQUFNWCxvQkFBb0IsQ0FBQyxLQUFLO0lBQUUsQ0FDbEQsQ0FBQztFQUFBLENBQ0YsQ0FDSDtBQUNILENBQUM7QUFFRFIsdUJBQXVCLENBQUMvZixTQUFTLEdBQUc7RUFDbEN2TixNQUFNLEVBQUVxTCwwREFBZ0I7RUFDeEJ2SCxLQUFLLEVBQUV1SCx1REFBZSxDQUFDO0lBQ3JCeWIsYUFBYSxFQUFFemIseURBQWlCLENBQUM5SSxNQUFNO0VBQ3pDLENBQUMsQ0FBQztFQUNGZ3JCLFFBQVEsRUFBRWxpQix3REFBYztFQUN4Qm1pQixlQUFlLEVBQUVuaUIsd0RBQWM7RUFDL0I4ZCxlQUFlLEVBQUU5ZCx3REFBY3FDO0FBQ2pDLENBQUM7QUFFRCxpRUFBZTRmLHVCQUF1Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDbExFO0FBQ0w7QUFDa0M7QUFDdEI7QUFDRztBQUNGO0FBQ1E7QUFDTjtBQUNIO0FBQ087QUFDVTtBQUM3QjtBQUNZO0FBQUE7QUFFL0MsTUFBTWpLLFVBQVUsR0FBRzFnQixJQUFBLElBQXVCO0VBQUEsSUFBQXNtQixvQkFBQTtFQUFBLElBQXRCO0lBQUVqcEIsTUFBTTtJQUFFOEQ7RUFBTSxDQUFDLEdBQUFuQixJQUFBO0VBQ25DLE1BQU07SUFBRUw7RUFBRSxDQUFDLEdBQUdnSiw2REFBYyxDQUFDLENBQUM7RUFDOUIsTUFBTTNMLFFBQVEsR0FBR21xQix3REFBVyxDQUFDLENBQUM7RUFDOUIsTUFBTTtJQUFFK0UsZUFBZTtJQUFFbHVCLE1BQU07SUFBRUU7RUFBSyxDQUFDLEdBQUcrWSx3REFBVyxDQUNsRFUsS0FBSyxJQUFLQSxLQUFLLENBQUM1VyxXQUFXLElBQUksQ0FBQyxDQUFDLEVBQ2xDbVcscURBQ0YsQ0FBQztFQUNELE1BQU0vSSxLQUFLLEdBQUc0ZCw4REFBUSxDQUFDLENBQUM7RUFDeEIsTUFBTW5CLFFBQVEsR0FBR29CLGtFQUFhLENBQUM3ZCxLQUFLLENBQUNnZSxXQUFXLENBQUNDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztFQUM1RCxNQUFNLENBQUNDLGdCQUFnQixFQUFFQyxpQkFBaUIsQ0FBQyxHQUFHdmdCLCtDQUFRLENBQUMsS0FBSyxDQUFDO0VBQzdELE1BQU04ZSxlQUFlLElBQUF2RSxvQkFBQSxHQUFHbmxCLEtBQUssQ0FBQ2dqQixhQUFhLGNBQUFtQyxvQkFBQSx1QkFBbkJBLG9CQUFBLENBQXFCVyxJQUFJLENBQzlDcGtCLE1BQU07SUFBQSxJQUFBeWlCLGFBQUE7SUFBQSxPQUFLLEVBQUFBLGFBQUEsR0FBQXppQixNQUFNLENBQUM0RCxLQUFLLGNBQUE2ZSxhQUFBLHVCQUFaQSxhQUFBLENBQWM3bEIsTUFBTSxNQUFLLFlBQVk7RUFBQSxDQUNuRCxDQUFDO0VBRUQsTUFBTSttQixlQUFlLEdBQUdBLENBQUEsS0FDdEJ4cEIsUUFBUSxDQUNOeUYsMkRBQWlCLENBQUM7SUFDaEJYLE9BQU8sRUFBRVgsS0FBSyxDQUFDTSxFQUFFO0lBQ2pCZixJQUFJLEVBQUVTLEtBQUssQ0FBQ29yQixvQkFBb0IsR0FBRzVMLDJEQUFhO0lBQ2hEaGdCLE9BQU8sRUFBRXVyQixlQUFlO0lBQ3hCbHVCLE1BQU07SUFDTkU7RUFDRixDQUFDLENBQ0gsQ0FBQztFQUVILG9CQUNFcUwsd0RBQUEsQ0FBQW1ZLHdEQUFBO0lBQUF0WCxRQUFBLGdCQUNFYix3REFBQSxDQUFDWCw4Q0FBRztNQUNGNEosRUFBRSxFQUFFO1FBQ0ZtTCxPQUFPLEVBQUU7VUFDUCtCLEVBQUUsRUFBRSxDQUFDO1VBQ0xrTSxFQUFFLEVBQUUsQ0FBQztVQUNMWSxFQUFFLEVBQUU7UUFDTjtNQUNGLENBQUU7TUFDRmxnQixTQUFTLEVBQUVuQiwwRUFBZ0M7TUFBQWYsUUFBQSxnQkFFM0NiLHdEQUFBO1FBQ0UrQyxTQUFTLEVBQUVuQixpRUFBdUI7UUFDbEMsZUFBWSw2QkFBNkI7UUFBQWYsUUFBQSxHQUV4Q3pLLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFDLElBQUUsRUFBQ3NzQix3REFBZ0IsQ0FBQzlxQixLQUFLLENBQUNzaEIsT0FBTyxDQUFDLEVBQUMsSUFBRSxFQUFDLEdBQUcsRUFDL0Q5aUIsQ0FBQyxDQUFDLHdCQUF3QixDQUFDLEVBQUMsR0FBQyxFQUFDLEdBQUcsZUFDbEMwSix1REFBQSxDQUFDZ0Msa0RBQVE7VUFDUEMsSUFBSSxFQUFFbkssS0FBSyxDQUFDMEwsTUFBTztVQUNuQnRCLFdBQVcsRUFBRTVMLENBQUMsQ0FBQyxpQ0FBaUM7UUFBRSxDQUNuRCxDQUFDO01BQUEsQ0FDRSxDQUFDLEVBQ05pckIsUUFBUSxpQkFDUHZoQix1REFBQSxDQUFDaVEsaURBQU07UUFDTDlHLEVBQUUsRUFBRTtVQUFFbUwsT0FBTyxFQUFFO1FBQVcsQ0FBRTtRQUM1QjNCLE9BQU8sRUFBQyxXQUFXO1FBQ25CM00sS0FBSyxFQUFDLFNBQVM7UUFDZjBRLElBQUksRUFBQyxPQUFPO1FBQ1poTyxTQUFTO1FBQ1RyRixPQUFPLEVBQUVBLENBQUEsS0FBTTRmLGlCQUFpQixDQUFDLENBQUNELGdCQUFnQixDQUFFO1FBQUFqaUIsUUFBQSxFQUVuRGlpQixnQkFBZ0IsR0FDYjFzQixDQUFDLENBQUMsNEJBQTRCLENBQUMsR0FDL0JBLENBQUMsQ0FBQyw0QkFBNEI7TUFBQyxDQUM3QixDQUNUO0lBQUEsQ0FDRSxDQUFDLGVBQ04wSix1REFBQSxDQUFDaVcsK0NBQUk7TUFFSHpELFNBQVM7TUFDVDhRLFVBQVUsRUFBRSxDQUFFO01BQ2RDLGFBQWEsRUFBRTtRQUFFbE4sRUFBRSxFQUFFLENBQUM7UUFBRW1OLEVBQUUsRUFBRSxDQUFDO1FBQUVqQixFQUFFLEVBQUU7TUFBRSxDQUFFO01BQ3ZDdGYsU0FBUyxLQUFBL04sTUFBQSxDQUFLNE0sc0VBQTJCLE9BQUE1TSxNQUFBLENBQ3ZDcXNCLFFBQVEsSUFBSSxDQUFDeUIsZ0JBQWdCLEdBQUdsaEIsOERBQW1CLEdBQUcsRUFBRSxDQUN2RDtNQUNIcUgsRUFBRSxFQUFFO1FBQ0Z1YSxhQUFhLEVBQUU7VUFDYm5CLEVBQUUsRUFBRSxLQUFLO1VBQ1RZLEVBQUUsRUFBRTtRQUNOLENBQUM7UUFDRDdPLE9BQU8sRUFBRTtVQUNQK0IsRUFBRSxFQUFFLENBQUM7VUFDTGtNLEVBQUUsRUFBRSxDQUFDO1VBQ0xZLEVBQUUsRUFBRTtRQUNOO01BQ0YsQ0FBRTtNQUFBcGlCLFFBQUEsZUFFRmYsdURBQUEsQ0FBQ3NoQixpRUFBdUI7UUFDdEJDLFFBQVEsRUFBRUEsUUFBUztRQUNuQnZ0QixNQUFNLEVBQUVBLE1BQU87UUFDZjhELEtBQUssRUFBRUEsS0FBTTtRQUNiMHBCLGVBQWUsRUFBRSxDQUFDLENBQUNBLGVBQWdCO1FBQ25DckUsZUFBZSxFQUFFQTtNQUFnQixDQUNsQztJQUFDLEdBekJHcmxCLEtBQUssQ0FBQ00sRUEwQlAsQ0FBQztFQUFBLENBQ1AsQ0FBQztBQUVQLENBQUM7QUFFRGlmLFVBQVUsQ0FBQzlWLFNBQVMsR0FBRztFQUNyQnZOLE1BQU0sRUFBRXFMLDBEQUFnQjtFQUN4QnZILEtBQUssRUFBRXVILDBEQUFnQm1DO0FBQ3pCLENBQUM7QUFFRCxpRUFBZTZWLFVBQVU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ2xIYztBQUNKO0FBQ1k7QUFDWDtBQUNLO0FBQ21CO0FBQ1c7QUFBQTtBQUV2RSxNQUFNNEosYUFBYSxHQUFHdHFCLElBQUEsSUFBZ0Q7RUFBQSxJQUEvQztJQUFFc0QsT0FBTztJQUFFa2YsUUFBUTtJQUFFaFYsSUFBSTtJQUFFc2U7RUFBYyxDQUFDLEdBQUE5ckIsSUFBQTtFQUMvRCxNQUFNO0lBQUVMO0VBQUUsQ0FBQyxHQUFHZ0osNkRBQWMsQ0FBQyxDQUFDO0VBQzlCLE1BQU15a0IsZ0JBQWdCLEdBQUdKLDhDQUFPLENBQzlCLE1BQU1HLGdGQUE0QixDQUFDN3BCLE9BQU8sQ0FBQyxFQUMzQyxDQUFDQSxPQUFPLENBQ1YsQ0FBQztFQUNELE1BQU0rcEIsV0FBVyxHQUFHQSxDQUFBLEtBQU07SUFDeEJ2QixhQUFhLENBQUMsQ0FBQztFQUNqQixDQUFDO0VBQ0Qsb0JBQ0V6aUIsc0RBQUEsQ0FBQzRqQixvREFBVztJQUNWeHJCLEVBQUUsRUFBQyxnQkFBZ0I7SUFDbkIrTCxJQUFJLEVBQUVBLElBQUs7SUFDWDlELE9BQU8sRUFBRTJqQixXQUFZO0lBQ3JCL3NCLEtBQUssRUFBRVgsQ0FBQyxDQUFDLDhCQUE4QixDQUFFO0lBQUF5SyxRQUFBLGVBRXpDZixzREFBQSxDQUFDVCw4Q0FBRztNQUNGNEosRUFBRSxFQUFFO1FBQ0YwSyxPQUFPLEVBQUUsTUFBTTtRQUNmNlAsYUFBYSxFQUFFLFFBQVE7UUFDdkJ0YSxVQUFVLEVBQUUsUUFBUTtRQUNwQmtMLE9BQU8sRUFBRTtNQUNYLENBQUU7TUFBQXZULFFBQUEsRUFFRGdqQixnQkFBZ0IsYUFBaEJBLGdCQUFnQix1QkFBaEJBLGdCQUFnQixDQUFFM3BCLEdBQUcsQ0FBRVosTUFBTSxpQkFDNUJ3RyxzREFBQSxDQUFDNmpCLDhEQUFxQjtRQUVwQnJxQixNQUFNLEVBQUVBLE1BQU87UUFDZjJmLFFBQVEsRUFBRUEsUUFBUztRQUNuQjhLLGFBQWE7TUFBQSxpQkFBQS91QixNQUFBLENBSE1zRSxNQUFNLGFBQU5BLE1BQU0sdUJBQU5BLE1BQU0sQ0FBRXBCLEVBQUUsQ0FJOUIsQ0FDRjtJQUFDLENBQ0M7RUFBQyxDQUNLLENBQUM7QUFFbEIsQ0FBQztBQUVENm9CLGFBQWEsQ0FBQzFmLFNBQVMsR0FBRztFQUN4QnRILE9BQU8sRUFBRW9GLHlEQUFpQixDQUFDOUksTUFBTSxDQUFDO0VBQ2xDNE4sSUFBSSxFQUFFOUUsd0RBQWM7RUFDcEJvakIsYUFBYSxFQUFFcGpCLHdEQUFjcUM7QUFDL0IsQ0FBQztBQUVELGlFQUFldWYsYUFBYTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNuREY7QUFDUztBQUNZO0FBQ1c7QUFDSDtBQUNUO0FBQ0U7QUFDUjtBQUNIO0FBQ3FCO0FBQ2hCO0FBQ1A7QUFFWTtBQUNKO0FBQ2E7QUFDWDtBQUFBO0FBRTdDLE1BQU00QyxxQkFBcUIsR0FBR2x0QixJQUFBLElBQXlDO0VBQUEsSUFBQW9vQixtQkFBQSxFQUFBQyxhQUFBO0VBQUEsSUFBeEM7SUFBRXhsQixNQUFNO0lBQUUyZixRQUFRO0lBQUU4SztFQUFjLENBQUMsR0FBQXR0QixJQUFBO0VBQ2hFLE1BQU07SUFBRUw7RUFBRSxDQUFDLEdBQUdnSiw2REFBYyxDQUFDLENBQUM7RUFFOUIsTUFBTWdsQixNQUFNLEdBQUcsQ0FBQztFQUNoQixNQUFNQyxPQUFPLEdBQUcsRUFBRTtFQUVsQixNQUFNQyxTQUFTLEdBQUcsQ0FBQztFQUVuQixNQUFNQyxlQUFlLEdBQUdqckIsTUFBTSxDQUFDaUIsZUFBZSxDQUFDOUYsTUFBTSxDQUNsRCt2QixNQUFNLElBQUtBLE1BQU0sQ0FBQ3R1QixNQUFNLEtBQUssVUFDaEMsQ0FBQztFQUVELE1BQU11dUIsc0JBQXNCLEdBQUcsQ0FBQyxDQUFDO0VBRWpDRixlQUFlLENBQUMvdEIsT0FBTyxDQUFFZ3VCLE1BQU0sSUFBSztJQUNsQ0EsTUFBTSxDQUFDRSxjQUFjLENBQUNsdUIsT0FBTyxDQUFFbXVCLEVBQUUsSUFBSztNQUNwQyxNQUFNQyxLQUFLLEdBQUdELEVBQUUsQ0FBQ0UsR0FBRyxDQUFDM3NCLEVBQUU7TUFDdkIsSUFBSSxDQUFDdXNCLHNCQUFzQixDQUFDRyxLQUFLLENBQUMsRUFBRTtRQUNsQ0gsc0JBQXNCLENBQUNHLEtBQUssQ0FBQyxHQUFHO1VBQzlCM3NCLElBQUksRUFBRTBzQixFQUFFLENBQUNFLEdBQUcsQ0FBQzVzQixJQUFJO1VBQ2pCNnNCLHNCQUFzQixFQUFFO1FBQzFCLENBQUM7TUFDSDtNQUNBTCxzQkFBc0IsQ0FBQ0csS0FBSyxDQUFDLENBQUNFLHNCQUFzQixJQUNsREgsRUFBRSxDQUFDSSxlQUFlO0lBQ3RCLENBQUMsQ0FBQztFQUNKLENBQUMsQ0FBQztFQUVGLE1BQU1DLFdBQVcsR0FBRzdSLDREQUFNLENBQUNqYyxLQUFBO0lBQUEsSUFBQztRQUFFNkw7TUFBb0IsQ0FBQyxHQUFBN0wsS0FBQTtNQUFQK3BCLEtBQUssR0FBQTNaLHFGQUFBLENBQUFwUSxLQUFBLEVBQUFxUSxTQUFBO0lBQUE7TUFBQTtNQUMvQztNQUNBekgsdURBQUEsQ0FBQzRCLGtEQUFPLEVBQUFyRyxhQUFBLENBQUFBLGFBQUEsS0FBSzRsQixLQUFLO1FBQUVnRSxPQUFPLEVBQUU7VUFBRUMsTUFBTSxFQUFFbmlCO1FBQVU7TUFBRSxFQUFFO0lBQUM7RUFBQSxDQUN2RCxDQUFDLENBQUMsT0FBTztJQUNSLE9BQUEvTixNQUFBLENBQU9ndkIsaUVBQWMsQ0FBQzFoQixPQUFPLElBQUs7TUFDaEMyRCxlQUFlLEVBQUUsU0FBUztNQUMxQkgsS0FBSyxFQUFFLHFCQUFxQjtNQUM1QnFmLFFBQVEsRUFBRSxHQUFHO01BQ2JoZ0IsUUFBUSxFQUFFLEtBQUs7TUFDZmlnQixNQUFNLEVBQUU7SUFDVjtFQUNGLENBQUMsQ0FBQyxDQUFDO0VBRUgsb0JBQ0VwbEIsd0RBQUEsQ0FBQytWLCtDQUFJO0lBQ0h6RCxTQUFTO0lBQ1R2UCxTQUFTLEtBQUEvTixNQUFBLENBQUs0TSwwRUFBK0IsT0FBQTVNLE1BQUEsQ0FDM0MrdUIsYUFBYSxHQUFHbmlCLDhEQUFtQixHQUFHLEVBQUUsTUFDdEM7SUFDSixlQUFZLG1DQUFtQztJQUFBZixRQUFBLGdCQUUvQ2YsdURBQUEsQ0FBQ2lXLCtDQUFJO01BQ0hJLEVBQUUsRUFBRTROLGFBQWEsR0FBR0ssTUFBTSxHQUFHQyxPQUFRO01BQ3JDbk8sSUFBSTtNQUNKRCxPQUFPLEVBQUMsZUFBZTtNQUN2QmpFLEVBQUUsRUFBRSxDQUFFO01BQ04wSSxFQUFFLEVBQUUsQ0FBRTtNQUFBN1osUUFBQSxlQUVOYix3REFBQSxDQUFDNFAsNERBQUs7UUFDSjNHLEVBQUUsRUFBRTtVQUNGNkssY0FBYyxFQUFFLGVBQWU7VUFDL0I1SyxVQUFVLEVBQUU7UUFDZCxDQUFFO1FBQ0YxVCxTQUFTLEVBQUMsS0FBSztRQUFBcUwsUUFBQSxnQkFFZmYsdURBQUE7VUFBQWUsUUFBQSxHQUFBZ2UsbUJBQUEsR0FBS3ZsQixNQUFNLENBQUN3ZixXQUFXLGNBQUErRixtQkFBQSx1QkFBbEJBLG1CQUFBLENBQW9CNW1CO1FBQUksQ0FBSyxDQUFDLGVBQ25DNkgsdURBQUEsQ0FBQ2lXLCtDQUFJO1VBQUNoVCxTQUFTLEVBQUVuQixxRUFBMkI7VUFBQ3VVLEVBQUUsRUFBRSxDQUFFO1VBQUNELElBQUk7VUFBQXJWLFFBQUEsR0FBQWllLGFBQUEsR0FDckR4bEIsTUFBTSxDQUFDMG1CLEtBQUssY0FBQWxCLGFBQUEsdUJBQVpBLGFBQUEsQ0FBY21CLFFBQVEsQ0FBQy9sQixHQUFHLENBQUV3VixFQUFFLGlCQUM3QjVQLHVEQUFBO1lBQ0VpRCxTQUFTLEVBQUVuQiw4REFBb0I7WUFDL0J1ZSxHQUFHLEVBQUV6USxFQUFFLENBQUMwUSxLQUFNO1lBQ2RDLEdBQUcsRUFBRTNRLEVBQUUsQ0FBQ3pYO1VBQUssR0FDUnlYLEVBQUUsQ0FBQ3pYLElBQ1QsQ0FDRjtRQUFDLENBQ0UsQ0FBQztNQUFBLENBQ0Y7SUFBQyxDQUNKLENBQUMsRUFDTjhyQixhQUFhLGlCQUNaamtCLHVEQUFBLENBQUNpVywrQ0FBSTtNQUFDSSxFQUFFLEVBQUUsQ0FBRTtNQUFDL0IsT0FBTyxFQUFFLENBQUU7TUFBQzhCLElBQUk7TUFBQXJWLFFBQUEsZUFDM0JmLHVEQUFBLENBQUNxa0Isc0RBQVk7UUFBQzdxQixNQUFNLEVBQUVBO01BQU8sQ0FBRTtJQUFDLENBQzVCLENBQ1AsZUFDRDBHLHdEQUFBLENBQUMrViwrQ0FBSTtNQUFDSSxFQUFFLEVBQUUsRUFBRztNQUFDRCxJQUFJO01BQUN3RSxFQUFFLEVBQUUsQ0FBRTtNQUFDdkwsRUFBRSxFQUFFNFUsYUFBYSxHQUFHTyxTQUFTLEdBQUcsQ0FBRTtNQUFDaFMsU0FBUztNQUFBelIsUUFBQSxnQkFDcEViLHdEQUFBLENBQUMrViwrQ0FBSTtRQUFDSSxFQUFFLEVBQUUsQ0FBRTtRQUFDcFQsU0FBUyxFQUFFbkIsc0VBQTRCO1FBQUFmLFFBQUEsZ0JBQ2xEZix1REFBQSxDQUFDZ2MsbUVBQWM7VUFBQ3hpQixNQUFNLEVBQUVBO1FBQU8sQ0FBRSxDQUFDLGVBQ2xDMEcsd0RBQUE7VUFBTStDLFNBQVMsRUFBRW5CLDBEQUFnQjtVQUFBZixRQUFBLEdBQzlCekssQ0FBQyxDQUFDLHlCQUF5QixDQUFDLEVBQUMsSUFBRSxlQUFBMEosdURBQUEsQ0FBQ2dDLGtEQUFRO1lBQUNDLElBQUksRUFBRXpJLE1BQU0sQ0FBQ2dLO1VBQU8sQ0FBRSxDQUFDO1FBQUEsQ0FDN0QsQ0FBQztNQUFBLENBQ0gsQ0FBQyxFQUNOeWdCLGFBQWEsSUFBSXpxQixNQUFNLENBQUNxbkIscUJBQXFCLEdBQUcsQ0FBQyxpQkFDaEQzZ0Isd0RBQUEsQ0FBQytWLCtDQUFJO1FBQUNJLEVBQUUsRUFBRSxDQUFFO1FBQUN5SixFQUFFLEVBQUUsQ0FBRTtRQUFBL2UsUUFBQSxHQUNoQnFYLHVEQUFjLENBQUM1ZSxNQUFNLENBQUNxbkIscUJBQXFCLEVBQUU7VUFBRTFIO1FBQVMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFDLFVBRWpFLEVBQUNzTCxlQUFlLENBQUMvWSxJQUFJLENBQUVuUixDQUFDLElBQUtBLENBQUMsQ0FBQ3FxQixjQUFjLENBQUN2dkIsTUFBTSxHQUFHLENBQUMsQ0FBQyxpQkFDdkQySyx1REFBQSxDQUFDa2xCLFdBQVc7VUFDVmp1QixLQUFLLGVBQ0hpSix3REFBQSxDQUFBbVksd0RBQUE7WUFBQXRYLFFBQUEsZ0JBQ0ViLHdEQUFBO2NBQUFhLFFBQUEsR0FDR3FYLHVEQUFjLENBQUM1ZSxNQUFNLENBQUN5ckIsZUFBZSxFQUFFO2dCQUFFOUw7Y0FBUyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUMsZUFFN0Q7WUFBQSxDQUFHLENBQUMsZUFDSm5aLHVEQUFBO2NBQUFlLFFBQUEsRUFBRztZQUFLLENBQUcsQ0FBQyxFQUNYeEssTUFBTSxDQUFDMEIsSUFBSSxDQUFDMHNCLHNCQUFzQixDQUFDLENBQUN2cUIsR0FBRyxDQUFFMHFCLEtBQUssSUFBSztjQUNsRCxNQUFNO2dCQUFFRSxzQkFBc0I7Z0JBQUU3c0I7Y0FBSyxDQUFDLEdBQ3BDd3NCLHNCQUFzQixDQUFDRyxLQUFLLENBQUM7Y0FDL0Isb0JBQ0U5a0IsdURBQUE7Z0JBQUFlLFFBQUEsS0FBQTdMLE1BQUEsQ0FBbUJpRCxJQUFJLFNBQUFqRCxNQUFBLENBQU1rakIsdURBQWMsQ0FDekM0TSxzQkFBc0IsRUFDdEI7a0JBQUU3TDtnQkFBUyxDQUNiLENBQUM7Y0FBQSxHQUhPMkwsS0FHRCxDQUFDO1lBRVosQ0FBQyxDQUFDO1VBQUEsQ0FDRixDQUNIO1VBQUEvakIsUUFBQSxlQUVEZix1REFBQSxDQUFDK04scURBQVU7WUFBQWhOLFFBQUEsZUFDVGYsdURBQUEsQ0FBQ21rQixpRUFBUSxJQUFFO1VBQUMsQ0FDRjtRQUFDLENBQ0YsQ0FDZCxlQUNEbmtCLHVEQUFBLFNBQUssQ0FBQyxFQUNMb2tCLHVEQUFNLENBQ0w1cUIsTUFBTSxDQUFDaUIsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDaXJCLFdBQVcsR0FBRzdqQiw4REFDMUMsQ0FBQyxDQUFDOGpCLE1BQU0sQ0FBQyxjQUFjLENBQUM7TUFBQSxDQUNwQixDQUNQO0lBQUEsQ0FDRyxDQUFDLEVBQ04sQ0FBQzFCLGFBQWEsaUJBQ2Jqa0IsdURBQUEsQ0FBQ2lXLCtDQUFJO01BQUNJLEVBQUUsRUFBRSxFQUFHO01BQUM0SixFQUFFLEVBQUUsQ0FBRTtNQUFDNVEsRUFBRSxFQUFFLENBQUU7TUFBQXRPLFFBQUEsZUFDekJmLHVEQUFBLENBQUNpVywrQ0FBSTtRQUFDSSxFQUFFLEVBQUUsRUFBRztRQUFDRCxJQUFJO1FBQUFyVixRQUFBLGVBQ2hCZix1REFBQSxDQUFDK2Qsc0RBQVk7VUFBQ3ZrQixNQUFNLEVBQUVBO1FBQU8sQ0FBRTtNQUFDLENBQzVCO0lBQUMsQ0FDSCxDQUNQO0VBQUEsQ0FDRyxDQUFDO0FBRVgsQ0FBQztBQUVEcXFCLHFCQUFxQixDQUFDdGlCLFNBQVMsR0FBRztFQUNoQy9ILE1BQU0sRUFBRTZGLDBEQUFnQjtFQUN4QjRrQixhQUFhLEVBQUU1a0Isd0RBQWNrRTtBQUMvQixDQUFDO0FBRUQsaUVBQWVzZ0IscUJBQXFCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ2hLRztBQUNKO0FBQ1k7QUFDVjtBQUNtQztBQUV6QjtBQUFBO0FBRS9DLE1BQU1RLFlBQVksR0FBRzF0QixJQUFBLElBQWdCO0VBQUEsSUFBZjtJQUFFNkM7RUFBTyxDQUFDLEdBQUE3QyxJQUFBO0VBQzlCLE1BQU07SUFBRUw7RUFBRSxDQUFDLEdBQUdnSiw2REFBYyxDQUFDLENBQUM7RUFDOUIsTUFBTXdtQixXQUFXLEdBQUduQyw4Q0FBTyxDQUN6QixNQUFNa0MsaUZBQTZCLENBQUNyc0IsTUFBTSxDQUFDLEVBQzNDLENBQUNBLE1BQU0sQ0FDVCxDQUFDO0VBQ0Qsb0JBQ0V3RyxzREFBQSxDQUFDNGxCLCtDQUFJO0lBQ0gsY0FBVyw0QkFBNEI7SUFDdkMzZCxLQUFLLEVBQUUzUixDQUFDLGlDQUFBcEIsTUFBQSxDQUFpQzR3QixXQUFXLENBQUUsQ0FBRTtJQUN4RDdpQixTQUFTLEtBQUEvTixNQUFBLENBQUs0TSwyREFBaUIsT0FBQTVNLE1BQUEsQ0FBSTRNLGdEQUFNLENBQUNna0IsV0FBVyxDQUFDO0VBQUcsQ0FDMUQsQ0FBQztBQUVOLENBQUM7QUFFRHpCLFlBQVksQ0FBQzlpQixTQUFTLEdBQUc7RUFDdkIvSCxNQUFNLEVBQUU2RiwwREFBZ0JtQztBQUMxQixDQUFDO0FBRUQsaUVBQWU2aUIsWUFBWTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUMzQmE7QUFDTDtBQUNZO0FBQ0w7QUFDd0I7QUFDSjtBQUNyQjtBQUNLO0FBQ2tDO0FBQ1Q7QUFDeEI7QUFDZTtBQUNGO0FBQUE7QUFFNUQsTUFBTXJELG1CQUFtQixHQUFHcnFCLElBQUEsSUFTdEI7RUFBQSxJQVR1QjtJQUMzQnNELE9BQU87SUFDUGpHLE1BQU07SUFDTm1RLElBQUk7SUFDSnFlLG9CQUFvQjtJQUNwQkMsYUFBYTtJQUNickYsZUFBZTtJQUNmM0IsY0FBYztJQUNkc0c7RUFDRixDQUFDLEdBQUFwckIsSUFBQTtFQUNDLE1BQU07SUFBRUw7RUFBRSxDQUFDLEdBQUdnSiw2REFBYyxDQUFDLENBQUM7RUFDOUIsTUFBTTNMLFFBQVEsR0FBR21xQix3REFBVyxDQUFDLENBQUM7RUFDOUIsTUFBTSxDQUFDdUksSUFBSSxFQUFFQyxPQUFPLENBQUMsR0FBRzVqQiwrQ0FBUSxDQUFDd2pCLHNEQUFRLENBQUM7RUFDMUMsTUFBTSxDQUFDSyxRQUFRLEVBQUVDLFdBQVcsQ0FBQyxHQUFHOWpCLCtDQUFRLENBQUMsRUFBRSxDQUFDO0VBQzVDLE1BQU0sQ0FBQytqQixhQUFhLEVBQUVDLGdCQUFnQixDQUFDLEdBQUdoa0IsK0NBQVEsQ0FBQyxLQUFLLENBQUM7RUFFekQsTUFBTXNoQixXQUFXLEdBQUdBLENBQUEsS0FBTTtJQUN4QndDLFdBQVcsQ0FBQyxFQUFFLENBQUM7SUFDZi9ELGFBQWEsQ0FBQyxDQUFDO0lBQ2Y2RCxPQUFPLENBQUNKLHNEQUFRLENBQUM7SUFDakIsSUFBSU8sYUFBYSxFQUFFO01BQ2pCakUsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLENBQUM7TUFDeEJrRSxnQkFBZ0IsQ0FBQyxLQUFLLENBQUM7SUFDekI7RUFDRixDQUFDO0VBRUQsTUFBTUMsYUFBYSxHQUFHQSxDQUFBLEtBQU07SUFDMUJMLE9BQU8sQ0FBQ0Ysc0RBQVEsQ0FBQztFQUNuQixDQUFDO0VBRUQsTUFBTVEsY0FBYyxHQUFHQSxDQUFBLEtBQU07SUFDM0JOLE9BQU8sQ0FBQ0osc0RBQVEsQ0FBQztFQUNuQixDQUFDO0VBRUQsTUFBTVcsYUFBYSxHQUFHLE1BQUFBLENBQUEsS0FBWTtJQUNoQ2x6QixRQUFRLENBQUNvRywyREFBaUIsQ0FBQztNQUFFRSxPQUFPLEVBQUVtakI7SUFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQy9rQixJQUFJLENBQUVyQyxHQUFHLElBQUs7TUFDdEVyQyxRQUFRLENBQUMrRyxzRUFBNEIsQ0FBQzFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztNQUM3QyxJQUFJLENBQUFBLEdBQUcsYUFBSEEsR0FBRyx1QkFBSEEsR0FBRyxDQUFFWCxNQUFNLE1BQUsrbkIsZUFBZSxDQUFDL25CLE1BQU0sRUFBRTtRQUMxQ2l4QixPQUFPLENBQUNILHdEQUFVLENBQUMsQ0FBQyxDQUFDO1FBQ3JCTyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUM7TUFDeEIsQ0FBQyxNQUFNO1FBQ0xGLFdBQVcsQ0FBQ2x3QixDQUFDLENBQUMsNEJBQTRCLENBQUMsQ0FBQztNQUM5QztJQUNGLENBQUMsQ0FBQztJQUNGa3dCLFdBQVcsQ0FBQyxFQUFFLENBQUM7RUFDakIsQ0FBQztFQUVELE1BQU1NLGFBQWEsR0FBR0EsQ0FBQSxrQkFDcEI1bUIsd0RBQUEsQ0FBQW1ZLHdEQUFBO0lBQUF0WCxRQUFBLGdCQUNFZix1REFBQTtNQUFJaUQsU0FBUyxFQUFFbkIsMERBQWdCO01BQUFmLFFBQUEsRUFDNUJ6SyxDQUFDLENBQUMsMkNBQTJDO0lBQUMsQ0FDN0MsQ0FBQyxlQUNMMEosdURBQUEsQ0FBQ1QsOENBQUc7TUFBQzBELFNBQVMsRUFBRW5CLDREQUFrQjtNQUFBZixRQUFBLEVBQy9COUcsT0FBTyxDQUFDRyxHQUFHLENBQUVaLE1BQU0saUJBQ2xCd0csdURBQUEsQ0FBQythLHFFQUFnQjtRQUVmdmhCLE1BQU0sRUFBRUEsTUFBTztRQUNmeEYsTUFBTSxFQUFFQSxNQUFPO1FBQ2Z3bkIsa0JBQWtCLEVBQ2hCLENBQUMsQ0FBQzRCLGVBQWUsQ0FBQ1EsSUFBSSxDQUFFdG5CLENBQUMsSUFBS0EsQ0FBQyxDQUFDOEIsRUFBRSxLQUFLb0IsTUFBTSxDQUFDcEIsRUFBRSxDQUNqRDtRQUNEcWpCLGNBQWMsRUFBRUEsY0FBZTtRQUMvQnNHLHFCQUFxQixFQUFFQSxxQkFBc0I7UUFDN0N4RyxhQUFhO01BQUEsYUFBQXJtQixNQUFBLENBUkVzRSxNQUFNLENBQUNwQixFQUFFLENBU3pCLENBQ0Y7SUFBQyxDQUNDLENBQUMsZUFDTjhILHdEQUFBLENBQUNYLDhDQUFHO01BQUMwRCxTQUFTLEVBQUVuQiwrREFBcUI7TUFBQWYsUUFBQSxnQkFDbkNmLHVEQUFBLENBQUNpUSxpREFBTTtRQUNMLGNBQVcsc0JBQXNCO1FBQ2pDbUssSUFBSSxFQUFDLFFBQVE7UUFDYm5YLFNBQVMsRUFBRW5CLDhEQUFvQjtRQUMvQnVCLE9BQU8sRUFBRTJnQixXQUFZO1FBQUFqakIsUUFBQSxFQUVwQnpLLENBQUMsQ0FBQyxnQkFBZ0I7TUFBQyxDQUNkLENBQUMsZUFDVDBKLHVEQUFBLENBQUNpUSxpREFBTTtRQUNMLGNBQVcsd0JBQXdCO1FBQ25DbUssSUFBSSxFQUFDLFFBQVE7UUFDYm5YLFNBQVMsRUFBRW5CLGdFQUFzQjtRQUNqQ3VCLE9BQU8sRUFBRXNqQixhQUFjO1FBQ3ZCdGxCLFFBQVEsRUFBRStiLGVBQWUsQ0FBQy9uQixNQUFNLEtBQUssQ0FBRTtRQUFBMEwsUUFBQSxFQUV0Q3pLLENBQUMsQ0FBQyxrQkFBa0I7TUFBQyxDQUNoQixDQUFDO0lBQUEsQ0FDTixDQUFDO0VBQUEsQ0FDTixDQUNIO0VBRUQsTUFBTTh3QixhQUFhLEdBQUdBLENBQUEsa0JBQ3BCbG5CLHdEQUFBLENBQUNYLDhDQUFHO0lBQUMsZUFBWSwyQkFBMkI7SUFBQXdCLFFBQUEsZ0JBQzFDZix1REFBQTtNQUFJaUQsU0FBUyxFQUFFbkIsMERBQWdCO01BQUFmLFFBQUEsRUFDNUJ6SyxDQUFDLENBQUMsNENBQTRDO0lBQUMsQ0FDOUMsQ0FBQyxFQUNKaXdCLFFBQVEsaUJBQ1B2bUIsdURBQUEsQ0FBQzZXLDBEQUFVO01BQ1RsVSxVQUFVLEVBQUViLGdFQUFzQjtNQUNsQ2tFLEtBQUssRUFBQyxTQUFTO01BQ2Y4USxVQUFVLEVBQUMsdUJBQXVCO01BQ2xDcGQsT0FBTyxFQUFFNnNCO0lBQVMsQ0FDbkIsQ0FDRixlQUNEdm1CLHVEQUFBLENBQUNULDhDQUFHO01BQUMwRCxTQUFTLEVBQUVuQiw0REFBa0I7TUFBQWYsUUFBQSxFQUMvQnFjLGVBQWUsQ0FBQ2hqQixHQUFHLENBQUVaLE1BQU0saUJBQzFCd0csdURBQUEsQ0FBQzZqQiwrREFBcUI7UUFFcEJycUIsTUFBTSxFQUFFQTtNQUFPLGlCQUFBdEUsTUFBQSxDQURJc0UsTUFBTSxhQUFOQSxNQUFNLHVCQUFOQSxNQUFNLENBQUVwQixFQUFFLENBRTlCLENBQ0Y7SUFBQyxDQUNDLENBQUMsZUFDTjhILHdEQUFBLENBQUNYLDhDQUFHO01BQUMwRCxTQUFTLEVBQUVuQixrRUFBd0I7TUFBQWYsUUFBQSxnQkFDdENmLHVEQUFBLENBQUNpUSxpREFBTTtRQUNMLGNBQVcsc0JBQXNCO1FBQ2pDbUssSUFBSSxFQUFDLFFBQVE7UUFDYm5YLFNBQVMsRUFBRW5CLDhEQUFvQjtRQUMvQnVCLE9BQU8sRUFBRXVqQixjQUFlO1FBQUE3bEIsUUFBQSxFQUV2QnpLLENBQUMsQ0FBQyxjQUFjO01BQUMsQ0FDWixDQUFDLGVBQ1QwSix1REFBQSxDQUFDaVEsaURBQU07UUFDTCxjQUFXLHdCQUF3QjtRQUNuQ21LLElBQUksRUFBQyxRQUFRO1FBQ2JuWCxTQUFTLEVBQUVuQixnRUFBc0I7UUFDakN1QixPQUFPLEVBQUV3akIsYUFBYztRQUFBOWxCLFFBQUEsRUFFdEJ6SyxDQUFDLENBQUMsa0JBQWtCO01BQUMsQ0FDaEIsQ0FBQztJQUFBLENBQ04sQ0FBQztFQUFBLENBQ0gsQ0FDTjtFQUVELE1BQU1peEIsZUFBZSxHQUFHQSxDQUFBLGtCQUN0QnJuQix3REFBQSxDQUFDWCw4Q0FBRztJQUNGMEQsU0FBUyxFQUFFbkIsa0VBQXdCO0lBQ25DLGVBQVksMkJBQTJCO0lBQUFmLFFBQUEsZ0JBRXZDZix1REFBQSxDQUFDaW1CLHdFQUFlO01BQUM5YyxFQUFFLEVBQUU7UUFBRW5ELEtBQUssRUFBRTtNQUFVO0lBQUUsQ0FBRSxDQUFDLGVBQzdDaEcsdURBQUE7TUFBTWlELFNBQVMsRUFBRW5CLDREQUFrQjtNQUFBZixRQUFBLEVBQ2hDekssQ0FBQyxDQUFDLGtDQUFrQztJQUFDLENBQ2xDLENBQUMsZUFDUDBKLHVEQUFBO01BQU1pRCxTQUFTLEVBQUVuQiw2REFBbUI7TUFBQWYsUUFBQSxFQUNqQ3pLLENBQUMsQ0FBQyxrQ0FBa0M7SUFBQyxDQUNsQyxDQUFDLGVBQ1AwSix1REFBQSxDQUFDaVEsaURBQU07TUFDTCxjQUFXLHNCQUFzQjtNQUNqQ21LLElBQUksRUFBQyxRQUFRO01BQ2JuWCxTQUFTLEVBQUVuQixnRUFBc0I7TUFDakN1QixPQUFPLEVBQUUyZ0IsV0FBWTtNQUFBampCLFFBQUEsRUFFcEJ6SyxDQUFDLENBQUMsZ0JBQWdCO0lBQUMsQ0FDZCxDQUFDO0VBQUEsQ0FDTixDQUNOO0VBRUQsTUFBTXF4QixXQUFXLEdBQUdBLENBQUEsS0FBTTtJQUN4QixRQUFRdEIsSUFBSTtNQUNWLEtBQUtILHNEQUFRO1FBQ1gsT0FBT1ksYUFBYSxDQUFDLENBQUM7TUFDeEIsS0FBS1Ysc0RBQVE7UUFDWCxPQUFPZ0IsYUFBYSxDQUFDLENBQUM7TUFDeEIsS0FBS2pCLHdEQUFVO1FBQ2IsT0FBT29CLGVBQWUsQ0FBQyxDQUFDO01BQzFCO1FBQ0UsT0FBT1QsYUFBYSxDQUFDLENBQUM7SUFDMUI7RUFDRixDQUFDO0VBQ0Qsb0JBQ0U5bUIsdURBQUEsQ0FBQ2dtQiwrREFBb0I7SUFBQzRCLFdBQVc7SUFBQTdtQixRQUFBLGVBQy9CZix1REFBQSxDQUFDNGpCLG9EQUFXO01BQ1Z4ckIsRUFBRSxFQUFDLGlCQUFpQjtNQUNwQitMLElBQUksRUFBRUEsSUFBSztNQUNYOUQsT0FBTyxFQUFFMmpCLFdBQVk7TUFDckIvc0IsS0FBSyxFQUFFWCxDQUFDLENBQUMsOEJBQThCLENBQUU7TUFDekMsZUFBWSxzQkFBc0I7TUFBQXlLLFFBQUEsRUFFakM0bUIsV0FBVyxDQUFDO0lBQUMsQ0FDSDtFQUFDLENBQ00sQ0FBQztBQUUzQixDQUFDO0FBRUQzRyxtQkFBbUIsQ0FBQ3pmLFNBQVMsR0FBRztFQUM5QnRILE9BQU8sRUFBRW9GLHlEQUFpQixDQUFDOUksTUFBTSxDQUFDO0VBQ2xDNE4sSUFBSSxFQUFFOUUsd0RBQWM7RUFDcEJtakIsb0JBQW9CLEVBQUVuakIsd0RBQWM7RUFDcENvakIsYUFBYSxFQUFFcGpCLHdEQUFjcUM7QUFDL0IsQ0FBQztBQUVELGlFQUFlc2YsbUJBQW1COzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDMU1sQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRTBCO0FBQ1M7QUFDaUM7QUFDWDtBQUNWO0FBQUE7QUFFL0MsTUFBTTRDLFdBQVcsR0FBR2p0QixJQUFBO0VBQUEsSUFBQztJQUFFeUIsRUFBRTtJQUFFbkIsS0FBSztJQUFFOEosUUFBUTtJQUFFb0QsSUFBSTtJQUFFOUQsT0FBTztJQUFFNEM7RUFBVSxDQUFDLEdBQUF0TSxJQUFBO0VBQUEsb0JBQ3BFdUosdURBQUEsQ0FBQzJuQixpREFBTTtJQUNMenZCLEVBQUUsRUFBRUEsRUFBRztJQUNQK0wsSUFBSSxFQUFFQSxJQUFLO0lBQ1g5RCxPQUFPLEVBQUVBLE9BQVE7SUFDakIwbkIsTUFBTSxFQUFDLE9BQU87SUFDZEMsVUFBVSxFQUFFO01BQUVDLFdBQVcsRUFBRTtJQUFNLENBQUU7SUFDbkNobEIsU0FBUyxLQUFBL04sTUFBQSxDQUFLNE0sd0RBQWMsT0FBQTVNLE1BQUEsQ0FBSStOLFNBQVMsQ0FBRztJQUFBbEMsUUFBQSxnQkFFNUNiLHVEQUFBLENBQUNYLDhDQUFHO01BQUMwRCxTQUFTLEVBQUVuQix1REFBYztNQUFBZixRQUFBLGdCQUM1QmYsc0RBQUEsQ0FBQytOLHFEQUFVO1FBQ1QsZUFBWSxjQUFjO1FBQzFCOUssU0FBUyxFQUFFbkIseURBQWdCO1FBQzNCdUIsT0FBTyxFQUFFaEQsT0FBUTtRQUNqQjhJLEVBQUUsRUFBRTtVQUFFaWYsS0FBSyxFQUFFO1FBQVEsQ0FBRTtRQUN2Qi9pQixRQUFRLEVBQUMsT0FBTztRQUFBdEUsUUFBQSxlQUVoQmYsc0RBQUEsQ0FBQ3VULHNEQUFTLElBQUU7TUFBQyxDQUNILENBQUMsZUFDYnZULHNEQUFBLENBQUM0YixxREFBVTtRQUFDakosT0FBTyxFQUFDLElBQUk7UUFBQzBWLFlBQVk7UUFBQ3BsQixTQUFTLEVBQUVuQixzREFBYTtRQUFBZixRQUFBLEVBQzNEOUo7TUFBSyxDQUNJLENBQUM7SUFBQSxDQUNWLENBQUMsRUFDTDhKLFFBQVE7RUFBQSxDQUNILENBQUM7QUFBQSxDQUNWO0FBRUQ2aUIsV0FBVyxDQUFDcmlCLFNBQVMsR0FBRztFQUN0Qm5KLEVBQUUsRUFBRWlILDBEQUFnQixDQUFDNkIsVUFBVTtFQUMvQmpLLEtBQUssRUFBRW9JLDJEQUFtQixDQUFDLENBQUNBLDBEQUFnQixFQUFFQSx3REFBYyxDQUFDLENBQUM7RUFDOUQwQixRQUFRLEVBQUUxQix3REFBYztFQUN4QjhFLElBQUksRUFBRTlFLHdEQUFjO0VBQ3BCZ0IsT0FBTyxFQUFFaEIsd0RBQWM7RUFDdkI0RCxTQUFTLEVBQUU1RCwwREFBZ0JpRTtBQUM3QixDQUFDO0FBRUQsaUVBQWVzZ0IsV0FBVzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDdkRBO0FBQzhCO0FBQ3BCO0FBRTZCO0FBQ2xCO0FBQUE7QUFFL0MsTUFBTTRFLFlBQVksR0FBR0EsQ0FBQSxLQUFNO0VBQ3pCLE1BQU07SUFBRXgwQjtFQUFPLENBQUMsR0FBRzRaLHdEQUFXLENBQzNCVSxLQUFLLElBQUtBLEtBQUssQ0FBQzVXLFdBQVcsSUFBSSxDQUFDLENBQUMsRUFDbENtVyxxREFDRixDQUFDO0VBQ0Qsb0JBQ0UzTix1REFBQSxDQUFDWCw4Q0FBRztJQUNGMEQsU0FBUyxFQUFFbkIsNkRBQW9CO0lBQy9CcUgsRUFBRSxFQUFFO01BQUVtTCxPQUFPLEVBQUU7UUFBRStCLEVBQUUsRUFBRSxDQUFDO1FBQUVrTSxFQUFFLEVBQUUsQ0FBQztRQUFFWSxFQUFFLEVBQUU7TUFBRTtJQUFFLENBQUU7SUFDekMsZUFBWSx5QkFBeUI7SUFBQXBpQixRQUFBLGdCQUVyQ2Ysc0RBQUE7TUFBSWlELFNBQVMsRUFBRW5CLGdFQUF1QjtNQUFBZixRQUFBLEVBQUUvTSxNQUFNLGFBQU5BLE1BQU0sdUJBQU5BLE1BQU0sQ0FBRW1FO0lBQUksQ0FBSyxDQUFDLGVBQzFENkgsc0RBQUE7TUFBSWlELFNBQVMsRUFBRW5CLGdFQUF1QjtNQUFBZixRQUFBLEVBQ25Dd25CLDBFQUFzQixDQUFDdjBCLE1BQU07SUFBQyxDQUM3QixDQUFDO0VBQUEsQ0FDRixDQUFDO0FBRVYsQ0FBQztBQUVELGlFQUFldzBCLFlBQVk7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDMUIzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRTBCO0FBQ1M7QUFDWTtBQUNPO0FBQ25CO0FBQ1I7QUFFa0I7QUFBQTtBQUU3QyxNQUFNSSxZQUFZLEdBQUdqeUIsSUFBQSxJQUEyQjtFQUFBLElBQTFCO0lBQUV5SixRQUFRO0lBQUVDO0VBQVEsQ0FBQyxHQUFBMUosSUFBQTtFQUN6QyxNQUFNO0lBQUVMO0VBQUUsQ0FBQyxHQUFHZ0osNkRBQWMsQ0FBQyxDQUFDO0VBRTlCLE1BQU1nQixNQUFNLEdBQUdkLGlEQUFTLENBQUM7SUFDdkJlLGFBQWEsRUFBRTtNQUNic29CLG1CQUFtQixFQUFFLEVBQUU7TUFDdkJDLGtCQUFrQixFQUFFLEVBQUU7TUFDdEJDLGNBQWMsRUFBRTtJQUNsQixDQUFDO0lBQ0R2b0IsZ0JBQWdCLEVBQUVtb0IsdUNBQVUsQ0FBQztNQUMzQkUsbUJBQW1CLEVBQUVGLHVDQUNaLENBQUNyeUIsQ0FBQyxDQUFDLDhCQUE4QixDQUFDLENBQUMsQ0FDekNtUyxRQUFRLENBQUNuUyxDQUFDLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztNQUNoRHd5QixrQkFBa0IsRUFBRUgsdUNBQ1gsQ0FBQ3J5QixDQUFDLENBQUMsNkJBQTZCLENBQUMsQ0FBQyxDQUN4Q21TLFFBQVEsQ0FBQ25TLENBQUMsQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO01BQy9DeXlCLGNBQWMsRUFBRUosdUNBQ1AsQ0FBQ3J5QixDQUFDLENBQUMseUJBQXlCLENBQUMsQ0FBQyxDQUNwQzNELEtBQUssQ0FBQzJELENBQUMsQ0FBQyx5QkFBeUIsQ0FBQztJQUN2QyxDQUFDLENBQUM7SUFDRjhKLFFBQVEsRUFBRUEsQ0FBQ00sTUFBTSxFQUFBdEosS0FBQSxLQUFvQjtNQUFBLElBQWxCO1FBQUU0eEI7TUFBVSxDQUFDLEdBQUE1eEIsS0FBQTtNQUM5QmdKLFFBQVEsQ0FBQ00sTUFBTSxDQUFDO01BQ2hCc29CLFNBQVMsQ0FBQyxDQUFDO0lBQ2I7RUFDRixDQUFDLENBQUM7RUFFRixNQUFNQyxZQUFZLEdBQUdBLENBQUEsS0FBTTtJQUN6QjNvQixNQUFNLENBQUMwb0IsU0FBUyxDQUFDLENBQUM7SUFDbEIzb0IsT0FBTyxDQUFDLENBQUM7RUFDWCxDQUFDO0VBRUQsb0JBQ0VILHVEQUFBLENBQUFtWSx1REFBQTtJQUFBdFgsUUFBQSxnQkFDRWYsc0RBQUEsQ0FBQzRiLHFEQUFVO01BQUNqSixPQUFPLEVBQUMsSUFBSTtNQUFDMFYsWUFBWTtNQUFBdG5CLFFBQUEsRUFDbEN6SyxDQUFDLENBQUMsbUNBQW1DO0lBQUMsQ0FDN0IsQ0FBQyxlQUNiMEosc0RBQUEsQ0FBQzRiLHFEQUFVO01BQUNqSixPQUFPLEVBQUMsT0FBTztNQUFDMFYsWUFBWTtNQUFDbGYsRUFBRSxFQUFFO1FBQUVuRCxLQUFLLEVBQUU7TUFBaUIsQ0FBRTtNQUFBakYsUUFBQSxFQUN0RXpLLENBQUMsQ0FBQyxrQ0FBa0M7SUFBQyxDQUM1QixDQUFDLGVBQ2I0Six1REFBQTtNQUFNRSxRQUFRLEVBQUVFLE1BQU0sQ0FBQ08sWUFBYTtNQUFDQyxVQUFVO01BQUFDLFFBQUEsZ0JBQzdDZixzREFBQSxDQUFDOEosb0RBQVM7UUFDUnBCLFNBQVM7UUFDVHZRLElBQUksRUFBQyxxQkFBcUI7UUFDMUJ3USxNQUFNLEVBQUMsUUFBUTtRQUNmVixLQUFLLEVBQUUzUixDQUFDLENBQUMsd0NBQXdDLENBQUU7UUFDbkRPLEtBQUssRUFBRXlKLE1BQU0sQ0FBQ0ksTUFBTSxDQUFDbW9CLG1CQUFvQjtRQUN6QzFoQixRQUFRLEVBQUU3RyxNQUFNLENBQUNnTixZQUFhO1FBQzlCQyxNQUFNLEVBQUVqTixNQUFNLENBQUNrTixVQUFXO1FBQzFCbkcsS0FBSyxFQUNIL0csTUFBTSxDQUFDbU4sT0FBTyxDQUFDb2IsbUJBQW1CLElBQ2xDbmIsT0FBTyxDQUFDcE4sTUFBTSxDQUFDN0osTUFBTSxDQUFDb3lCLG1CQUFtQixDQUMxQztRQUNEdmhCLFVBQVUsRUFDUmhILE1BQU0sQ0FBQ21OLE9BQU8sQ0FBQ29iLG1CQUFtQixJQUNsQ3ZvQixNQUFNLENBQUM3SixNQUFNLENBQUNveUIsbUJBQ2Y7UUFDRHBnQixRQUFRO01BQUEsQ0FDVCxDQUFDLGVBQ0Z6SSxzREFBQSxDQUFDOEosb0RBQVM7UUFDUnBCLFNBQVM7UUFDVHZRLElBQUksRUFBQyxvQkFBb0I7UUFDekJ3USxNQUFNLEVBQUMsUUFBUTtRQUNmVixLQUFLLEVBQUUzUixDQUFDLENBQUMsdUNBQXVDLENBQUU7UUFDbERPLEtBQUssRUFBRXlKLE1BQU0sQ0FBQ0ksTUFBTSxDQUFDb29CLGtCQUFtQjtRQUN4QzNoQixRQUFRLEVBQUU3RyxNQUFNLENBQUNnTixZQUFhO1FBQzlCQyxNQUFNLEVBQUVqTixNQUFNLENBQUNrTixVQUFXO1FBQzFCbkcsS0FBSyxFQUNIL0csTUFBTSxDQUFDbU4sT0FBTyxDQUFDcWIsa0JBQWtCLElBQ2pDcGIsT0FBTyxDQUFDcE4sTUFBTSxDQUFDN0osTUFBTSxDQUFDcXlCLGtCQUFrQixDQUN6QztRQUNEeGhCLFVBQVUsRUFDUmhILE1BQU0sQ0FBQ21OLE9BQU8sQ0FBQ3FiLGtCQUFrQixJQUNqQ3hvQixNQUFNLENBQUM3SixNQUFNLENBQUNxeUI7TUFDZixDQUNGLENBQUMsZUFDRjlvQixzREFBQSxDQUFDOEosb0RBQVM7UUFDUnBCLFNBQVM7UUFDVHZRLElBQUksRUFBQyxnQkFBZ0I7UUFDckI4UCxLQUFLLEVBQUUzUixDQUFDLENBQUMsbUNBQW1DLENBQUU7UUFDOUNxUyxNQUFNLEVBQUMsUUFBUTtRQUNmOVIsS0FBSyxFQUFFeUosTUFBTSxDQUFDSSxNQUFNLENBQUNxb0IsY0FBZTtRQUNwQzVoQixRQUFRLEVBQUU3RyxNQUFNLENBQUNnTixZQUFhO1FBQzlCQyxNQUFNLEVBQUVqTixNQUFNLENBQUNrTixVQUFXO1FBQzFCbkcsS0FBSyxFQUNIL0csTUFBTSxDQUFDbU4sT0FBTyxDQUFDc2IsY0FBYyxJQUM3QnJiLE9BQU8sQ0FBQ3BOLE1BQU0sQ0FBQzdKLE1BQU0sQ0FBQ3N5QixjQUFjLENBQ3JDO1FBQ0R6aEIsVUFBVSxFQUNSaEgsTUFBTSxDQUFDbU4sT0FBTyxDQUFDc2IsY0FBYyxJQUFJem9CLE1BQU0sQ0FBQzdKLE1BQU0sQ0FBQ3N5QjtNQUNoRCxDQUNGLENBQUMsZUFDRi9vQixzREFBQSxDQUFDTixtREFBVTtRQUNUeUIsU0FBUyxFQUFFN0ssQ0FBQyxDQUFDLGtDQUFrQyxDQUFFO1FBQ2pEOEssV0FBVyxFQUFFOUssQ0FBQyxDQUFDLG9DQUFvQyxDQUFFO1FBQ3JEK0osT0FBTyxFQUFFNG9CLFlBQWE7UUFDdEI1bkIsUUFBUSxFQUFFZixNQUFNLENBQUNnQjtNQUFhLENBQy9CLENBQUM7SUFBQSxDQUNFLENBQUM7RUFBQSxDQUNQLENBQUM7QUFFUCxDQUFDO0FBRURzbkIsWUFBWSxDQUFDcm5CLFNBQVMsR0FBRztFQUN2Qm5CLFFBQVEsRUFBRWYsd0RBQWMsQ0FBQzZCLFVBQVU7RUFDbkNiLE9BQU8sRUFBRWhCLHdEQUFjLENBQUM2QjtBQUMxQixDQUFDO0FBRUQsaUVBQWUwbkIsWUFBWTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNqSUQ7QUFDUztBQUNZO0FBQ087QUFDYjtBQUNNO0FBQUE7QUFFL0MsTUFBTU8sWUFBWSxHQUFHeHlCLElBQUEsSUFBZ0Q7RUFBQSxJQUFBc2xCLGFBQUEsRUFBQU8sYUFBQSxFQUFBQyxjQUFBO0VBQUEsSUFBL0M7SUFBRTJNLFVBQVU7SUFBRTV2QixNQUFNO0lBQUU2dkIsU0FBUztJQUFFaHBCO0VBQVEsQ0FBQyxHQUFBMUosSUFBQTtFQUM5RCxNQUFNO0lBQUVMO0VBQUUsQ0FBQyxHQUFHZ0osNkRBQWMsQ0FBQyxDQUFDO0VBQzlCLE1BQU1ncUIsYUFBYSxHQUFHLENBQUE5dkIsTUFBTSxhQUFOQSxNQUFNLGdCQUFBeWlCLGFBQUEsR0FBTnppQixNQUFNLENBQUU0RCxLQUFLLGNBQUE2ZSxhQUFBLHVCQUFiQSxhQUFBLENBQWV0cEIsS0FBSyxNQUFLMDJCLFNBQVM7RUFFeEQsTUFBTUUsaUJBQWlCLEdBQUdBLENBQUEsS0FBTTtJQUM5QixJQUFJSCxVQUFVLEtBQUssUUFBUSxFQUFFO01BQzNCLFVBQUFsMEIsTUFBQSxDQUFVb0IsQ0FBQyxDQUFDLHVDQUF1QyxDQUFDLE9BQUFwQixNQUFBLENBQ2xEc0UsTUFBTSxDQUFDNEQsS0FBSyxDQUFDWixVQUFVLE9BQUF0SCxNQUFBLENBQ3JCc0UsTUFBTSxDQUFDNEQsS0FBSyxDQUFDWCxTQUFTO0lBQzVCO0lBRUEsSUFBSTJzQixVQUFVLEVBQUU7TUFBQSxJQUFBbE4sY0FBQTtNQUNkLE1BQU1qb0IsSUFBSSxHQUFHcTFCLGFBQWEsR0FBRyxLQUFLLEdBQUc5dkIsTUFBTSxhQUFOQSxNQUFNLGdCQUFBMGlCLGNBQUEsR0FBTjFpQixNQUFNLENBQUU0RCxLQUFLLGNBQUE4ZSxjQUFBLHVCQUFiQSxjQUFBLENBQWV2cEIsS0FBSztNQUN6RCxVQUFBdUMsTUFBQSxDQUFVb0IsQ0FBQyxDQUFDLHlDQUF5QyxDQUFDLE9BQUFwQixNQUFBLENBQUlqQixJQUFJO0lBQ2hFO0lBRUEsT0FBT3VGLE1BQU0sQ0FBQ3dmLFdBQVcsQ0FBQzdnQixJQUFJO0VBQ2hDLENBQUM7RUFFRCxNQUFNcXhCLGFBQWEsR0FBR0EsQ0FBQSxLQUFNO0lBQzFCLElBQUlKLFVBQVUsRUFBRTtNQUNkLE1BQU1LLFFBQVEsR0FBR0gsYUFBYSxHQUMxQiw0Q0FBNEMsR0FDNUMsOENBQThDO01BRWxELG9CQUNFcHBCLHVEQUFBLENBQUFtWSx1REFBQTtRQUFBdFgsUUFBQSxHQUNHekssQ0FBQyxDQUFDbXpCLFFBQVEsQ0FBQyxlQUNaenBCLHNEQUFBLFNBQUssQ0FBQyxlQUVOQSxzREFBQSxDQUFDa3BCLCtDQUFJO1VBQ0hRLFNBQVMsRUFBQyxRQUFRO1VBQ2xCL1csT0FBTyxFQUFDLE9BQU87VUFDZnRQLE9BQU8sRUFBRWhELE9BQVE7VUFDakI4SSxFQUFFLEVBQUU7WUFBRTVELFVBQVUsRUFBRSxHQUFHO1lBQUVvRCxNQUFNLEVBQUU7VUFBYyxDQUFFO1VBQUE1SCxRQUFBLEVBRTlDekssQ0FBQyxDQUFDLDRDQUE0QztRQUFDLENBQzVDLENBQUM7TUFBQSxDQUNQLENBQUM7SUFFUDtJQUVBLE9BQU8sRUFBRTtFQUNYLENBQUM7RUFFRCxvQkFDRTRKLHVEQUFBLENBQUNYLDhDQUFHO0lBQUMwRCxTQUFTLEVBQUVuQix3REFBZTtJQUFBZixRQUFBLGdCQUM3QmIsdURBQUEsQ0FBQ1gsOENBQUc7TUFBQzBELFNBQVMsRUFBRW5CLG1FQUEwQjtNQUFBZixRQUFBLGdCQUN4Q2IsdURBQUEsQ0FBQzBiLHFEQUFVO1FBQUNqSixPQUFPLEVBQUMsT0FBTztRQUFDMFYsWUFBWTtRQUFDcGxCLFNBQVMsRUFBRW5CLDREQUFtQjtRQUFBZixRQUFBLEdBQ3BFekssQ0FBQyxDQUFDLDBDQUEwQyxDQUFDLEVBQUUsR0FBRyxFQUNsRGtELE1BQU0sYUFBTkEsTUFBTSxnQkFBQWdqQixhQUFBLEdBQU5oakIsTUFBTSxDQUFFMUIsS0FBSyxjQUFBMGtCLGFBQUEsdUJBQWJBLGFBQUEsQ0FBZXFOLFdBQVc7TUFBQSxDQUNqQixDQUFDLGVBQ2I3cEIsc0RBQUEsQ0FBQzRiLHFEQUFVO1FBQUNqSixPQUFPLEVBQUMsT0FBTztRQUFDMFYsWUFBWTtRQUFDcGxCLFNBQVMsRUFBRW5CLHdEQUFlO1FBQUFmLFFBQUEsZUFDakVmLHNEQUFBLENBQUNnQyxpREFBUTtVQUNQQyxJQUFJLEVBQUV6SSxNQUFNLGFBQU5BLE1BQU0sZ0JBQUFpakIsY0FBQSxHQUFOampCLE1BQU0sQ0FBRTFCLEtBQUssY0FBQTJrQixjQUFBLHVCQUFiQSxjQUFBLENBQWVqWixNQUFPO1VBQzVCbkIsUUFBUTtVQUNSQyxLQUFLLEVBQUUsR0FBSTtVQUNYSixXQUFXLEVBQUU1TCxDQUFDLENBQUMsaUNBQWlDO1FBQUUsQ0FDbkQ7TUFBQyxDQUNRLENBQUM7SUFBQSxDQUNWLENBQUMsZUFDTjBKLHNEQUFBLENBQUM0YixxREFBVTtNQUFDakosT0FBTyxFQUFDLElBQUk7TUFBQzBWLFlBQVk7TUFBQXRuQixRQUFBLEVBQ2xDd29CLGlCQUFpQixDQUFDO0lBQUMsQ0FDVixDQUFDLGVBQ2J2cEIsc0RBQUEsQ0FBQzRiLHFEQUFVO01BQ1RqSixPQUFPLEVBQUMsT0FBTztNQUNmMFYsWUFBWTtNQUNacGxCLFNBQVMsRUFBRW5CLDJEQUFrQjtNQUM3QnFILEVBQUUsRUFBRTtRQUFFbkQsS0FBSyxFQUFFO01BQWlCLENBQUU7TUFBQWpGLFFBQUEsRUFFL0J5b0IsYUFBYSxDQUFDO0lBQUMsQ0FDTixDQUFDO0VBQUEsQ0FDVixDQUFDO0FBRVYsQ0FBQzs7QUFFRDtBQUNBTCxZQUFZLENBQUM1bkIsU0FBUyxHQUFHO0VBQ3ZCNm5CLFVBQVUsRUFBRS9wQiwwREFBZ0IsQ0FBQzZCLFVBQVU7RUFDdkMxSCxNQUFNLEVBQUU2RiwwREFBZ0IsQ0FBQzZCLFVBQVU7RUFDbkNtb0IsU0FBUyxFQUFFaHFCLDBEQUFnQixDQUFDNkI7QUFDOUIsQ0FBQztBQUVELGlFQUFlaW9CLFlBQVk7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUMxRkQ7QUFDUztBQUNZO0FBQ087QUFDUDtBQUFBO0FBRS9DLE1BQU1hLGNBQWMsR0FBR3J6QixJQUFBLElBTWpCO0VBQUEsSUFBQXNsQixhQUFBO0VBQUEsSUFOa0I7SUFDdEJtTixVQUFVO0lBQ1ZhLGNBQWM7SUFDZHp3QixNQUFNO0lBQ042dkIsU0FBUztJQUNUaHBCO0VBQ0YsQ0FBQyxHQUFBMUosSUFBQTtFQUNDLE1BQU07SUFBRUw7RUFBRSxDQUFDLEdBQUdnSiw2REFBYyxDQUFDLENBQUM7RUFDOUIsTUFBTWdxQixhQUFhLEdBQUcsQ0FBQTl2QixNQUFNLGFBQU5BLE1BQU0sZ0JBQUF5aUIsYUFBQSxHQUFOemlCLE1BQU0sQ0FBRTRELEtBQUssY0FBQTZlLGFBQUEsdUJBQWJBLGFBQUEsQ0FBZXRwQixLQUFLLE1BQUswMkIsU0FBUztFQUV4RCxNQUFNRSxpQkFBaUIsR0FBR0EsQ0FBQSxLQUFNO0lBQUEsSUFBQXJOLGNBQUE7SUFDOUIsTUFBTWpvQixJQUFJLEdBQUdxMUIsYUFBYSxHQUN0Qmh6QixDQUFDLENBQUMsd0NBQXdDLENBQUMsR0FDM0NrRCxNQUFNLGFBQU5BLE1BQU0sZ0JBQUEwaUIsY0FBQSxHQUFOMWlCLE1BQU0sQ0FBRTRELEtBQUssY0FBQThlLGNBQUEsdUJBQWJBLGNBQUEsQ0FBZXZwQixLQUFLO0lBRXhCLElBQUl5MkIsVUFBVSxLQUFLLFFBQVEsRUFBRTtNQUMzQixVQUFBbDBCLE1BQUEsQ0FBVW9CLENBQUMsQ0FBQyx5Q0FBeUMsQ0FBQyxPQUFBcEIsTUFBQSxDQUNwRHNFLE1BQU0sQ0FBQzRELEtBQUssQ0FBQ1osVUFBVSxPQUFBdEgsTUFBQSxDQUNyQnNFLE1BQU0sQ0FBQzRELEtBQUssQ0FBQ1gsU0FBUztJQUM1QjtJQUVBLElBQUksQ0FBQzJzQixVQUFVLEVBQUU7TUFDZixVQUFBbDBCLE1BQUEsQ0FBVW9CLENBQUMsQ0FBQywyQ0FBMkMsQ0FBQyxPQUFBcEIsTUFBQSxDQUFJakIsSUFBSTtJQUNsRTtJQUVBLFVBQUFpQixNQUFBLENBQVVvQixDQUFDLENBQUMsNkNBQTZDLENBQUMsT0FBQXBCLE1BQUEsQ0FBSWpCLElBQUk7RUFDcEUsQ0FBQztFQUVELE1BQU11MUIsYUFBYSxHQUFHQSxDQUFBLEtBQU07SUFDMUIsSUFBSSxDQUFDSixVQUFVLEVBQUU7TUFDZixPQUFPYSxjQUFjLEdBQ2pCM3pCLENBQUMsQ0FBQyw2Q0FBNkMsQ0FBQyxHQUNoREEsQ0FBQyxDQUFDLHlEQUF5RCxDQUFDO0lBQ2xFO0lBRUEsTUFBTW16QixRQUFRLEdBQUdILGFBQWEsR0FDMUIsOENBQThDLEdBQzlDLGdEQUFnRDtJQUVwRCxvQkFDRXBwQix1REFBQSxDQUFBbVksdURBQUE7TUFBQXRYLFFBQUEsR0FDR3pLLENBQUMsQ0FBQ216QixRQUFRLENBQUMsZUFDWnpwQixzREFBQSxTQUFLLENBQUMsZUFFTkEsc0RBQUEsQ0FBQ2twQiwrQ0FBSTtRQUNIUSxTQUFTLEVBQUMsUUFBUTtRQUNsQi9XLE9BQU8sRUFBQyxPQUFPO1FBQ2Z0UCxPQUFPLEVBQUVoRCxPQUFRO1FBQ2pCOEksRUFBRSxFQUFFO1VBQUU1RCxVQUFVLEVBQUUsR0FBRztVQUFFb0QsTUFBTSxFQUFFO1FBQWMsQ0FBRTtRQUFBNUgsUUFBQSxFQUU5Q3pLLENBQUMsQ0FBQyw4Q0FBOEM7TUFBQyxDQUM5QyxDQUFDO0lBQUEsQ0FDUCxDQUFDO0VBRVAsQ0FBQztFQUVELG9CQUNFNEosdURBQUEsQ0FBQ1gsOENBQUc7SUFBQzBELFNBQVMsRUFBRW5CLHdEQUFlO0lBQUFmLFFBQUEsZ0JBQzdCZixzREFBQSxDQUFDNGIscURBQVU7TUFBQ2pKLE9BQU8sRUFBQyxJQUFJO01BQUMwVixZQUFZO01BQUF0bkIsUUFBQSxFQUNsQ3dvQixpQkFBaUIsQ0FBQztJQUFDLENBQ1YsQ0FBQyxlQUNidnBCLHNEQUFBLENBQUM0YixxREFBVTtNQUNUakosT0FBTyxFQUFDLE9BQU87TUFDZjBWLFlBQVk7TUFDWnBsQixTQUFTLEVBQUVuQiwyREFBa0I7TUFDN0JxSCxFQUFFLEVBQUU7UUFBRW5ELEtBQUssRUFBRTtNQUFpQixDQUFFO01BQUFqRixRQUFBLEVBRS9CeW9CLGFBQWEsQ0FBQztJQUFDLENBQ04sQ0FBQztFQUFBLENBQ1YsQ0FBQztBQUVWLENBQUM7O0FBRUQ7QUFDQVEsY0FBYyxDQUFDem9CLFNBQVMsR0FBRztFQUN6QjZuQixVQUFVLEVBQUUvcEIsMERBQWdCLENBQUM2QixVQUFVO0VBQ3ZDMUgsTUFBTSxFQUFFNkYsMERBQWdCLENBQUM2QixVQUFVO0VBQ25DbW9CLFNBQVMsRUFBRWhxQiwwREFBZ0IsQ0FBQzZCO0FBQzlCLENBQUM7QUFFRCxpRUFBZThvQixjQUFjOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3RGN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUUwQjtBQUNTO0FBQ1k7QUFDTztBQUNuQjtBQUNSO0FBRWtCO0FBQUE7QUFFN0MsTUFBTUUsWUFBWSxHQUFHdnpCLElBQUEsSUFBMkI7RUFBQSxJQUExQjtJQUFFeUosUUFBUTtJQUFFQztFQUFRLENBQUMsR0FBQTFKLElBQUE7RUFDekMsTUFBTTtJQUFFTDtFQUFFLENBQUMsR0FBR2dKLDZEQUFjLENBQUMsQ0FBQztFQUU5QixNQUFNZ0IsTUFBTSxHQUFHZCxpREFBUyxDQUFDO0lBQ3ZCZSxhQUFhLEVBQUU7TUFDYjRwQixrQkFBa0IsRUFBRSxFQUFFO01BQ3RCQyxnQkFBZ0IsRUFBRTtJQUNwQixDQUFDO0lBQ0Q1cEIsZ0JBQWdCLEVBQUVtb0IsdUNBQVUsQ0FBQztNQUMzQndCLGtCQUFrQixFQUFFeEIsdUNBQ1gsQ0FBQ3J5QixDQUFDLENBQUMseUJBQXlCLENBQUMsQ0FBQyxDQUNwQzNELEtBQUssQ0FBQzJELENBQUMsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDLENBQ25DbVMsUUFBUSxDQUFDblMsQ0FBQyxDQUFDLDJCQUEyQixDQUFDLENBQUM7TUFDM0M4ekIsZ0JBQWdCLEVBQUV6Qix1Q0FBVSxDQUFDcnlCLENBQUMsQ0FBQyx3QkFBd0IsQ0FBQztJQUMxRCxDQUFDLENBQUM7SUFDRjhKLFFBQVEsRUFBRUEsQ0FBQ00sTUFBTSxFQUFBdEosS0FBQSxLQUFvQjtNQUFBLElBQWxCO1FBQUU0eEI7TUFBVSxDQUFDLEdBQUE1eEIsS0FBQTtNQUM5QmdKLFFBQVEsQ0FBQ00sTUFBTSxDQUFDO01BQ2hCc29CLFNBQVMsQ0FBQyxDQUFDO0lBQ2I7RUFDRixDQUFDLENBQUM7RUFFRixNQUFNQyxZQUFZLEdBQUdBLENBQUEsS0FBTTtJQUN6QjNvQixNQUFNLENBQUMwb0IsU0FBUyxDQUFDLENBQUM7SUFDbEIzb0IsT0FBTyxDQUFDLENBQUM7RUFDWCxDQUFDO0VBRUQsb0JBQ0VILHVEQUFBLENBQUFtWSx1REFBQTtJQUFBdFgsUUFBQSxnQkFDRWYsc0RBQUEsQ0FBQzRiLHFEQUFVO01BQUNqSixPQUFPLEVBQUMsSUFBSTtNQUFDMFYsWUFBWTtNQUFBdG5CLFFBQUEsRUFDbEN6SyxDQUFDLENBQUMsbUNBQW1DO0lBQUMsQ0FDN0IsQ0FBQyxlQUNiMEosc0RBQUEsQ0FBQzRiLHFEQUFVO01BQUNqSixPQUFPLEVBQUMsT0FBTztNQUFDMFYsWUFBWTtNQUFDbGYsRUFBRSxFQUFFO1FBQUVuRCxLQUFLLEVBQUU7TUFBaUIsQ0FBRTtNQUFBakYsUUFBQSxFQUN0RXpLLENBQUMsQ0FBQyxrQ0FBa0M7SUFBQyxDQUM1QixDQUFDLGVBQ2I0Six1REFBQTtNQUFNRSxRQUFRLEVBQUVFLE1BQU0sQ0FBQ08sWUFBYTtNQUFDQyxVQUFVO01BQUFDLFFBQUEsZ0JBQzdDZixzREFBQSxDQUFDOEosb0RBQVM7UUFDUnBCLFNBQVM7UUFDVHZRLElBQUksRUFBQyxvQkFBb0I7UUFDekI4UCxLQUFLLEVBQUUzUixDQUFDLENBQUMsZ0RBQWdELENBQUU7UUFDM0RxUyxNQUFNLEVBQUMsUUFBUTtRQUNmOVIsS0FBSyxFQUFFeUosTUFBTSxDQUFDSSxNQUFNLENBQUN5cEIsa0JBQW1CO1FBQ3hDaGpCLFFBQVEsRUFBRTdHLE1BQU0sQ0FBQ2dOLFlBQWE7UUFDOUJDLE1BQU0sRUFBRWpOLE1BQU0sQ0FBQ2tOLFVBQVc7UUFDMUJuRyxLQUFLLEVBQ0gvRyxNQUFNLENBQUNtTixPQUFPLENBQUMwYyxrQkFBa0IsSUFDakN6YyxPQUFPLENBQUNwTixNQUFNLENBQUM3SixNQUFNLENBQUMwekIsa0JBQWtCLENBQ3pDO1FBQ0Q3aUIsVUFBVSxFQUNSaEgsTUFBTSxDQUFDbU4sT0FBTyxDQUFDMGMsa0JBQWtCLElBQ2pDN3BCLE1BQU0sQ0FBQzdKLE1BQU0sQ0FBQzB6QixrQkFDZjtRQUNEMWhCLFFBQVE7TUFBQSxDQUNULENBQUMsZUFDRnpJLHNEQUFBLENBQUM4SixvREFBUztRQUNScEIsU0FBUztRQUNUdlEsSUFBSSxFQUFDLGtCQUFrQjtRQUN2QjhQLEtBQUssRUFBRTNSLENBQUMsQ0FBQyw4Q0FBOEMsQ0FBRTtRQUN6RE8sS0FBSyxFQUFFeUosTUFBTSxDQUFDSSxNQUFNLENBQUMwcEIsZ0JBQWlCO1FBQ3RDemhCLE1BQU0sRUFBQyxRQUFRO1FBQ2YwaEIsU0FBUztRQUNUQyxPQUFPLEVBQUUsQ0FBRTtRQUNYbmpCLFFBQVEsRUFBRTdHLE1BQU0sQ0FBQ2dOLFlBQWE7UUFDOUJDLE1BQU0sRUFBRWpOLE1BQU0sQ0FBQ2tOLFVBQVc7UUFDMUJuRyxLQUFLLEVBQ0gvRyxNQUFNLENBQUNtTixPQUFPLENBQUMyYyxnQkFBZ0IsSUFDL0IxYyxPQUFPLENBQUNwTixNQUFNLENBQUM3SixNQUFNLENBQUMyekIsZ0JBQWdCLENBQ3ZDO1FBQ0Q5aUIsVUFBVSxFQUNSaEgsTUFBTSxDQUFDbU4sT0FBTyxDQUFDMmMsZ0JBQWdCLElBQUk5cEIsTUFBTSxDQUFDN0osTUFBTSxDQUFDMnpCO01BQ2xELENBQ0YsQ0FBQyxlQUNGcHFCLHNEQUFBLENBQUNOLG1EQUFVO1FBQ1R5QixTQUFTLEVBQUU3SyxDQUFDLENBQUMsa0NBQWtDLENBQUU7UUFDakQ4SyxXQUFXLEVBQUU5SyxDQUFDLENBQUMsb0NBQW9DLENBQUU7UUFDckQrSixPQUFPLEVBQUU0b0IsWUFBYTtRQUN0QjVuQixRQUFRLEVBQUVmLE1BQU0sQ0FBQ2dCO01BQWEsQ0FDL0IsQ0FBQztJQUFBLENBQ0UsQ0FBQztFQUFBLENBQ1AsQ0FBQztBQUVQLENBQUM7QUFFRDRvQixZQUFZLENBQUMzb0IsU0FBUyxHQUFHO0VBQ3ZCbkIsUUFBUSxFQUFFZix3REFBYyxDQUFDNkIsVUFBVTtFQUNuQ2IsT0FBTyxFQUFFaEIsd0RBQWMsQ0FBQzZCO0FBQzFCLENBQUM7QUFFRCxpRUFBZWdwQixZQUFZOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUM3R2E7QUFDTDtBQUNvQjtBQUNSO0FBQ2dCO0FBTXhDO0FBQzhCO0FBQ1o7QUFDRTtBQUNzQztBQUN0QztBQUNTO0FBQ0k7QUFDSDtBQUNPO0FBQ0k7QUFDakI7QUFDaUI7QUFBQTtBQUVoRSxNQUFNL0wsWUFBWSxHQUFHeG5CLElBQUEsSUFBbUQ7RUFBQSxJQUFBc2xCLGFBQUE7RUFBQSxJQUFsRDtJQUFFaGhCLFFBQVE7SUFBRXhDLE9BQU87SUFBRW1vQixPQUFPO0lBQUV6YyxJQUFJO0lBQUU5RDtFQUFRLENBQUMsR0FBQTFKLElBQUE7RUFDakUsTUFBTTtJQUFFTDtFQUFFLENBQUMsR0FBR2dKLDZEQUFjLENBQUMsQ0FBQztFQUM5QixNQUFNM0wsUUFBUSxHQUFHbXFCLHdEQUFXLENBQUMsQ0FBQztFQUM5QixNQUFNLENBQUMwTSxXQUFXLEVBQUVDLGNBQWMsQ0FBQyxHQUFHL25CLCtDQUFRLENBQUMsSUFBSSxDQUFDO0VBQ3BELE1BQU0sQ0FBQ2dvQixZQUFZLEVBQUVDLGVBQWUsQ0FBQyxHQUFHam9CLCtDQUFRLENBQUMsSUFBSSxDQUFDO0VBQ3RELE1BQU0sQ0FBQ2tvQixxQkFBcUIsRUFBRUMsd0JBQXdCLENBQUMsR0FBR25vQiwrQ0FBUSxDQUFDLEVBQUUsQ0FBQztFQUN0RSxNQUFNO0lBQ0oxTyxNQUFNO0lBQ05DLElBQUksRUFBRTtNQUFFNkU7SUFBWTtFQUN0QixDQUFDLEdBQUc4VSx3REFBVyxDQUFFVSxLQUFLLElBQUtBLEtBQUssQ0FBQzVXLFdBQVcsQ0FBQztFQUM3QyxNQUFNO0lBQUU4QixNQUFNO0lBQUV4RztFQUFlLENBQUMsR0FBR3UzQixnRUFBWSxDQUM3Q3R2QixRQUFRLEVBQ1J4QyxPQUFPLEVBQ1Btb0IsT0FBTyxFQUNQemMsSUFDRixDQUFDO0VBQ0QsTUFBTTJtQixjQUFjLEdBQUcsQ0FBQWh5QixXQUFXLGFBQVhBLFdBQVcsdUJBQVhBLFdBQVcsQ0FBRW5HLEtBQUssT0FBSzZHLE1BQU0sYUFBTkEsTUFBTSxnQkFBQXlpQixhQUFBLEdBQU56aUIsTUFBTSxDQUFFNEQsS0FBSyxjQUFBNmUsYUFBQSx1QkFBYkEsYUFBQSxDQUFldHBCLEtBQUs7RUFDbEUsTUFBTTtJQUFFczNCO0VBQWUsQ0FBQyxHQUFHL0wsMEVBQWdCLENBQUMxa0IsTUFBTSxDQUFDO0VBRW5ELE1BQU11eEIsUUFBUSxHQUFHLFNBQUFBLENBQUNwNEIsS0FBSyxFQUFtQjtJQUFBLElBQWpCK0csT0FBTyxHQUFBNEQsU0FBQSxDQUFBakksTUFBQSxRQUFBaUksU0FBQSxRQUFBQyxTQUFBLEdBQUFELFNBQUEsTUFBRyxFQUFFO0lBQ25DLElBQUlzakIsT0FBTyxFQUFFO01BQ1hqdEIsUUFBUSxDQUFDOEosd0RBQWMsQ0FBQ2hGLE9BQU8sRUFBRXdDLFFBQVEsRUFBRXRJLEtBQUssRUFBRStHLE9BQU8sQ0FBQyxDQUFDLENBQUNyQixJQUFJLENBQUMsTUFBTTtRQUNyRXd5Qix3QkFBd0IsSUFBQTMxQixNQUFBLENBQUl3MUIsWUFBWSxDQUFFLENBQUM7UUFDM0NDLGVBQWUsQ0FBQyxJQUFJLENBQUM7TUFDdkIsQ0FBQyxDQUFDO0lBQ0osQ0FBQyxNQUFNO01BQ0xoM0IsUUFBUSxDQUFDMEosd0RBQWMsQ0FBQzVFLE9BQU8sRUFBRXdDLFFBQVEsRUFBRXRJLEtBQUssQ0FBQyxDQUFDLENBQUMwRixJQUFJLENBQUMsTUFBTTtRQUM1RHd5Qix3QkFBd0IsSUFBQTMxQixNQUFBLENBQUl3MUIsWUFBWSxDQUFFLENBQUM7UUFDM0NDLGVBQWUsQ0FBQyxJQUFJLENBQUM7TUFDdkIsQ0FBQyxDQUFDO0lBQ0o7RUFDRixDQUFDO0VBRUQsTUFBTUssVUFBVSxHQUFHQSxDQUFDcDRCLFNBQVMsRUFBRUMsUUFBUSxFQUFFRixLQUFLLEtBQUs7SUFDakRnQixRQUFRLENBQ05nSyx3REFBYyxDQUFDbEYsT0FBTyxFQUFFd0MsUUFBUSxFQUFFckksU0FBUyxFQUFFQyxRQUFRLEVBQUVGLEtBQUssQ0FDOUQsQ0FBQyxDQUFDMEYsSUFBSSxDQUFDLE1BQU07TUFDWHd5Qix3QkFBd0IsSUFBQTMxQixNQUFBLENBQUl3MUIsWUFBWSxDQUFFLENBQUM7TUFDM0NDLGVBQWUsQ0FBQyxJQUFJLENBQUM7SUFDdkIsQ0FBQyxDQUFDO0VBQ0osQ0FBQztFQUVELE1BQU1NLGFBQWEsR0FBR0EsQ0FBQSxLQUFNO0lBQzFCSix3QkFBd0IsQ0FBQyxFQUFFLENBQUM7SUFDNUJ4cUIsT0FBTyxDQUFDLENBQUM7RUFDWCxDQUFDO0VBRUQsTUFBTTZxQixrQkFBa0IsR0FBR0EsQ0FBQSxLQUFNO0lBQy9CVCxjQUFjLENBQUMsSUFBSSxDQUFDO0lBQ3BCSSx3QkFBd0IsQ0FBQyxFQUFFLENBQUM7SUFDNUI3bkIsVUFBVSxDQUFDM0MsT0FBTyxFQUFFd0IsOERBQWUsQ0FBQztFQUN0QyxDQUFDO0VBRUQsTUFBTXNwQixRQUFRLEdBQUluakIsR0FBRyxJQUFLO0lBQ3hCLE1BQU1wTCxPQUFPLEdBQUdvUCw2RkFBcUIsQ0FBQ2hFLEdBQUcsQ0FBQztJQUUxQyxPQUFPclUsUUFBUSxDQUFDa0ssNERBQWtCLENBQUNyRSxNQUFNLEVBQUVvRCxPQUFPLENBQUMsQ0FBQyxDQUNqRHZFLElBQUksQ0FBQyxNQUFNO01BQ1ZveUIsY0FBYyxDQUFDO1FBQ2J4ekIsS0FBSyxFQUFFWCxDQUFDLENBQUMsOEJBQThCLENBQUM7UUFDeEM4MEIsV0FBVyxFQUFFOTBCLENBQUMsQ0FBQywwQ0FBMEM7TUFDM0QsQ0FBQyxDQUFDO01BQ0YsT0FBT3lDLE9BQU8sQ0FBQ3N5QixPQUFPLENBQUMsQ0FBQztJQUMxQixDQUFDLENBQUMsQ0FDRC95QixLQUFLLENBQUV2QyxHQUFHLElBQUs7TUFDZDAwQixjQUFjLENBQUM7UUFDYnh6QixLQUFLLEVBQUVYLENBQUMsQ0FBQyw0QkFBNEIsQ0FBQztRQUN0QzgwQixXQUFXLEVBQUVyMUIsR0FBRyxDQUFDbVMsUUFBUSxDQUFDO01BQzVCLENBQUMsQ0FBQztNQUNGLE9BQU9uUCxPQUFPLENBQUNDLE1BQU0sQ0FBQyxDQUFDO0lBQ3pCLENBQUMsQ0FBQztFQUNOLENBQUM7RUFFRCxNQUFNL0IsS0FBSyxHQUFHMnBCLE9BQU8sR0FDakJ0cUIsQ0FBQyxDQUFDLHFDQUFxQyxDQUFDLEdBQ3hDQSxDQUFDLENBQUMsbUNBQW1DLENBQUM7RUFDMUMsTUFBTWcxQixNQUFNLEdBQUcxSyxPQUFPLEdBQUdvSiwwRUFBYyxHQUFHYix3RUFBWTtFQUV0RCxvQkFDRWpwQix3REFBQSxDQUFBbVksd0RBQUE7SUFBQXRYLFFBQUEsZ0JBQ0VmLHVEQUFBLENBQUM0akIsb0RBQVc7TUFDVnhyQixFQUFFLEVBQUMsZ0JBQWdCO01BQ25CbkIsS0FBSyxFQUFFQSxLQUFNO01BQ2JrTixJQUFJLEVBQUVBLElBQUs7TUFDWDlELE9BQU8sRUFBRTRxQixhQUFjO01BQUFscUIsUUFBQSxFQUV0QnZILE1BQU0sSUFBSXhHLGNBQWMsaUJBQ3ZCa04sd0RBQUEsQ0FBQ1gsOENBQUc7UUFBQzBELFNBQVMsRUFBRW5CLHlFQUErQjtRQUFBZixRQUFBLGdCQUM3Q2YsdURBQUEsQ0FBQ3NyQixNQUFNO1VBQ0xsQyxVQUFVLEVBQUV3QixxQkFBc0I7VUFDbENYLGNBQWMsRUFBRUEsY0FBZTtVQUMvQnp3QixNQUFNLEVBQUVBLE1BQU87VUFDZjZ2QixTQUFTLEVBQUV2d0IsV0FBVyxDQUFDbkcsS0FBTTtVQUM3QjBOLE9BQU8sRUFBRTRxQjtRQUFjLENBQ3hCLENBQUMsRUFFREwscUJBQXFCLGdCQUNwQjVxQix1REFBQSxDQUFDRyxxREFBWTtVQUNYM0csTUFBTSxFQUFFQSxNQUFPO1VBQ2Z4RixNQUFNLEVBQUVBLE1BQU87VUFDZmhCLGNBQWMsRUFBRUEsY0FBZTtVQUMvQm9OLFFBQVEsRUFBRStxQixRQUFTO1VBQ25COXFCLE9BQU8sRUFBRTRxQjtRQUFjLENBQ3hCLENBQUMsZ0JBRUYvcUIsd0RBQUEsQ0FBQ1gsOENBQUc7VUFBQzBELFNBQVMsRUFBRW5CLHNFQUE0QjtVQUFBZixRQUFBLGdCQUMxQ2YsdURBQUEsQ0FBQ2lRLGlEQUFNO1lBQ0wwQyxPQUFPLEVBQUMsV0FBVztZQUNuQjNNLEtBQUssRUFBQyxTQUFTO1lBQ2YwUSxJQUFJLEVBQUMsT0FBTztZQUNaclYsUUFBUSxFQUFFeXBCLGNBQWU7WUFDekJ6bkIsT0FBTyxFQUFFQSxDQUFBLEtBQU0wbkIsUUFBUSxDQUFDanlCLFdBQVcsQ0FBQ25HLEtBQUssRUFBRSxFQUFFLENBQUU7WUFBQW9PLFFBQUEsRUFFOUN6SyxDQUFDLENBQUMsNEJBQTRCO1VBQUMsQ0FDMUIsQ0FBQyxlQUNUMEosdURBQUEsQ0FBQ21RLGtEQUFPO1lBQUN3QyxPQUFPLEVBQUMsUUFBUTtZQUFDeEosRUFBRSxFQUFFO2NBQUVzaUIsRUFBRSxFQUFFLENBQUM7Y0FBRTdRLEVBQUUsRUFBRTtZQUFFLENBQUU7WUFBQTdaLFFBQUEsRUFBQztVQUVoRCxDQUFTLENBQUMsZUFDVmIsd0RBQUEsQ0FBQ1gsOENBQUc7WUFBQXdCLFFBQUEsZ0JBQ0ZmLHVEQUFBLENBQUNnTyxtREFBUTtjQUFDaUIsRUFBRSxFQUFFeWIsWUFBWSxLQUFLLE9BQVE7Y0FBQ3hiLE9BQU8sRUFBRSxHQUFJO2NBQUFuTyxRQUFBLGVBQ25EZix1REFBQSxDQUFDa3FCLGdFQUFZO2dCQUNYMXdCLE1BQU0sRUFBRUEsTUFBTztnQkFDZnhGLE1BQU0sRUFBRUEsTUFBTztnQkFDZm9NLFFBQVEsRUFBRzRILEdBQUcsSUFDWitpQixRQUFRLENBQUMvaUIsR0FBRyxDQUFDbWlCLGtCQUFrQixFQUFFbmlCLEdBQUcsQ0FBQ29pQixnQkFBZ0IsQ0FDdEQ7Z0JBQ0QvcEIsT0FBTyxFQUFFQSxDQUFBLEtBQU1zcUIsZUFBZSxDQUFDLElBQUk7Y0FBRSxDQUN0QztZQUFDLENBQ00sQ0FBQyxFQUNWRCxZQUFZLEtBQUssT0FBTyxpQkFDdkIxcUIsdURBQUEsQ0FBQ2lRLGlEQUFNO2NBQ0wwQyxPQUFPLEVBQUMsV0FBVztjQUNuQjNNLEtBQUssRUFBQyxTQUFTO2NBQ2YwUSxJQUFJLEVBQUMsT0FBTztjQUNaclQsT0FBTyxFQUFFQSxDQUFBLEtBQU1zbkIsZUFBZSxDQUFDLE9BQU8sQ0FBRTtjQUFBNXBCLFFBQUEsRUFFdkN6SyxDQUFDLENBQUMsK0JBQStCO1lBQUMsQ0FDN0IsQ0FDVDtVQUFBLENBQ0UsQ0FBQyxFQUNMMnpCLGNBQWMsaUJBQ2IvcEIsd0RBQUEsQ0FBQW1ZLHdEQUFBO1lBQUF0WCxRQUFBLGdCQUNFZix1REFBQSxDQUFDbVEsa0RBQU87Y0FBQ3dDLE9BQU8sRUFBQyxRQUFRO2NBQUN4SixFQUFFLEVBQUU7Z0JBQUVzaUIsRUFBRSxFQUFFLENBQUM7Z0JBQUU3USxFQUFFLEVBQUU7Y0FBRSxDQUFFO2NBQUE3WixRQUFBLEVBQUM7WUFFaEQsQ0FBUyxDQUFDLGVBQ1ZmLHVEQUFBLENBQUNnTyxtREFBUTtjQUFDaUIsRUFBRSxFQUFFeWIsWUFBWSxLQUFLLFFBQVM7Y0FBQ3hiLE9BQU8sRUFBRSxHQUFJO2NBQUFuTyxRQUFBLGVBQ3BEZix1REFBQSxDQUFDNG9CLGlFQUFZO2dCQUNYcHZCLE1BQU0sRUFBRUEsTUFBTztnQkFDZnhGLE1BQU0sRUFBRUEsTUFBTztnQkFDZm9NLFFBQVEsRUFBRzRILEdBQUcsSUFDWmdqQixVQUFVLENBQ1JoakIsR0FBRyxDQUFDNmdCLG1CQUFtQixFQUN2QjdnQixHQUFHLENBQUM4Z0Isa0JBQWtCLEVBQ3RCOWdCLEdBQUcsQ0FBQytnQixjQUNOLENBQ0Q7Z0JBQ0Qxb0IsT0FBTyxFQUFFQSxDQUFBLEtBQU1zcUIsZUFBZSxDQUFDLElBQUk7Y0FBRSxDQUN0QztZQUFDLENBQ00sQ0FBQyxFQUNWRCxZQUFZLEtBQUssUUFBUSxpQkFDeEIxcUIsdURBQUEsQ0FBQ2lRLGlEQUFNO2NBQ0wwQyxPQUFPLEVBQUMsV0FBVztjQUNuQjNNLEtBQUssRUFBQyxTQUFTO2NBQ2YwUSxJQUFJLEVBQUMsT0FBTztjQUNaclQsT0FBTyxFQUFFQSxDQUFBLEtBQU1zbkIsZUFBZSxDQUFDLFFBQVEsQ0FBRTtjQUFBNXBCLFFBQUEsRUFFeEN6SyxDQUFDLENBQUMsNkJBQTZCO1lBQUMsQ0FDM0IsQ0FDVDtVQUFBLENBQ0QsQ0FDSDtRQUFBLENBQ0UsQ0FDTjtNQUFBLENBQ0U7SUFDTixDQUNVLENBQUMsZUFDZDBKLHVEQUFBLENBQUNrRSxzREFBWTtNQUNYQyxJQUFJLEVBQUUsQ0FBQyxDQUFDcW1CLFdBQVk7TUFDcEJucUIsT0FBTyxFQUFFNnFCLGtCQUFtQjtNQUM1QmowQixLQUFLLEVBQUV1ekIsV0FBVyxhQUFYQSxXQUFXLHVCQUFYQSxXQUFXLENBQUV2ekIsS0FBTTtNQUMxQm0wQixXQUFXLEVBQUVaLFdBQVcsYUFBWEEsV0FBVyx1QkFBWEEsV0FBVyxDQUFFWTtJQUFZLENBQ3ZDLENBQUM7RUFBQSxDQUNGLENBQUM7QUFFUCxDQUFDO0FBRURqTixZQUFZLENBQUM1YyxTQUFTLEdBQUc7RUFDdkJ0RyxRQUFRLEVBQUVvRSwwREFBZ0I7RUFDMUI1RyxPQUFPLEVBQUU0RywwREFBZ0I7RUFDekJ1aEIsT0FBTyxFQUFFdmhCLDBEQUFnQjtFQUN6QjhFLElBQUksRUFBRTlFLHdEQUFjO0VBQ3BCZ0IsT0FBTyxFQUFFaEIsd0RBQWNxQztBQUN6QixDQUFDO0FBRUQsaUVBQWV5YyxZQUFZOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUMxTjNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFMEI7QUFDUztBQUNZO0FBQ3FCO0FBQzZCO0FBQzFDO0FBQUE7QUFFdkQsTUFBTXlOLFlBQVksR0FBR2oxQixJQUFBLElBQXNDO0VBQUEsSUFBckM7SUFBRTJKLE1BQU07SUFBRXVyQixRQUFRO0lBQUUzcUI7RUFBVyxDQUFDLEdBQUF2SyxJQUFBO0VBQ3BELE1BQU07SUFBRUw7RUFBRSxDQUFDLEdBQUdnSiw2REFBYyxDQUFDLENBQUM7RUFDOUIsTUFBTSxDQUFDd3NCLFVBQVUsRUFBRUMsYUFBYSxDQUFDLEdBQUczc0IscURBQWMsQ0FBQyxFQUFFLENBQUM7RUFDdEQsTUFBTSxDQUFDNHNCLE9BQU8sRUFBRUMsVUFBVSxDQUFDLEdBQUc3c0IscURBQWMsQ0FBQyxFQUFFLENBQUM7RUFDaEQsTUFBTTtJQUNKM0ksTUFBTTtJQUNOaUssTUFBTTtJQUNOK00sT0FBTztJQUNQeWUsZUFBZTtJQUNmOWtCLGFBQWE7SUFDYjdHO0VBQ0YsQ0FBQyxHQUFHRCxNQUFNO0VBQ1YsTUFBTW5JLElBQUksR0FBR3pGLDREQUFvQixDQUFDSSxPQUFPO0VBQ3pDLE1BQU0rRCxLQUFLLEdBQUc2SixNQUFNLENBQUN2SSxJQUFJLENBQUM7RUFDMUIsTUFBTWtKLFFBQVEsR0FBRyxDQUFDLENBQUNkLGFBQWEsQ0FBQ3BJLElBQUksQ0FBQztFQUN0QyxNQUFNa1AsS0FBSyxHQUFHb0csT0FBTyxDQUFDdFYsSUFBSSxDQUFDLElBQUl1VixPQUFPLENBQUNqWCxNQUFNLENBQUMwQixJQUFJLENBQUMsQ0FBQztFQUNwRCxNQUFNbVAsVUFBVSxHQUFHbUcsT0FBTyxDQUFDdFYsSUFBSSxDQUFDLElBQUkxQixNQUFNLENBQUMwQixJQUFJLENBQUM7RUFFaERpSCxzREFBZSxDQUFDLE1BQU07SUFDcEIsSUFBSTBzQixVQUFVLEtBQUssRUFBRSxFQUFFO01BQ3JCRyxVQUFVLENBQUNwMUIsS0FBSyxHQUFHLENBQUNBLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQztNQUNoQyxPQUFPMEcsU0FBUztJQUNsQjtJQUVBb3VCLCtHQUEwQixDQUFDRSxRQUFRLEVBQUVDLFVBQVUsRUFBR0ssT0FBTyxJQUFLO01BQzVELElBQUlDLFVBQVUsR0FBRyxFQUFFO01BRW5CLElBQUl2MUIsS0FBSyxFQUFFO1FBQ1R1MUIsVUFBVSxHQUFHLENBQUN2MUIsS0FBSyxDQUFDO01BQ3RCO01BRUEsSUFBSXMxQixPQUFPLEVBQUU7UUFDWEMsVUFBVSxHQUFHLENBQUMsR0FBR0EsVUFBVSxFQUFFLEdBQUdELE9BQU8sQ0FBQztNQUMxQztNQUVBRixVQUFVLENBQUNHLFVBQVUsQ0FBQztJQUN4QixDQUFDLENBQUM7SUFDRixPQUFPN3VCLFNBQVM7RUFDbEIsQ0FBQyxFQUFFLENBQUMxRyxLQUFLLEVBQUVpMUIsVUFBVSxDQUFDLENBQUM7RUFFdkIsb0JBQ0U5ckIsc0RBQUEsQ0FBQzByQix1REFBWTtJQUNYdnpCLElBQUksRUFBRUEsSUFBSztJQUNYNnpCLE9BQU8sRUFBRUEsT0FBUTtJQUNqQkssWUFBWTtJQUNaQyxRQUFRO0lBQ1JDLGtCQUFrQjtJQUNsQkMscUJBQXFCO0lBQ3JCbnJCLFFBQVEsRUFBRUEsUUFBUztJQUNuQnhLLEtBQUssRUFBRUEsS0FBTTtJQUNiMFcsTUFBTSxFQUFFQSxDQUFBLEtBQU0yZSxlQUFlLENBQUMvekIsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUU7SUFDaERzMEIsY0FBYyxFQUFHQyxNQUFNLElBQUs7TUFDMUI7TUFDQSxJQUFJLE9BQU9BLE1BQU0sS0FBSyxRQUFRLEVBQUU7UUFDOUIsT0FBT0EsTUFBTTtNQUNmO01BQ0E7TUFDQSxJQUFJQSxNQUFNLENBQUNaLFVBQVUsRUFBRTtRQUNyQixPQUFPWSxNQUFNLENBQUNaLFVBQVU7TUFDMUI7TUFDQTtNQUNBLE9BQU9ZLE1BQU0sQ0FBQ3YwQixJQUFJO0lBQ3BCLENBQUU7SUFDRmdQLFFBQVEsRUFBRUEsQ0FBQ2lLLEtBQUssRUFBRTdJLFFBQVEsS0FBSztNQUM3QixNQUFNb2tCLFFBQVEsR0FBRyxDQUFBcGtCLFFBQVEsYUFBUkEsUUFBUSx1QkFBUkEsUUFBUSxDQUFFdWpCLFVBQVUsS0FBSXZqQixRQUFRO01BQ2pEMGpCLFVBQVUsQ0FBQ1UsUUFBUSxHQUFHLENBQUNBLFFBQVEsRUFBRSxHQUFHWCxPQUFPLENBQUMsR0FBR0EsT0FBTyxDQUFDO01BQ3ZENWtCLGFBQWEsQ0FBQ2pQLElBQUksRUFBRXcwQixRQUFRLENBQUM7SUFDL0IsQ0FBRTtJQUNGQyxhQUFhLEVBQUVBLENBQUN4YixLQUFLLEVBQUV5YixhQUFhLEtBQUs7TUFDdkNkLGFBQWEsQ0FBQ2MsYUFBYSxDQUFDO0lBQzlCLENBQUU7SUFDRkMsYUFBYSxFQUFFQSxDQUFDZCxPQUFPLEVBQUVwMEIsTUFBTSxLQUFLO01BQ2xDLE1BQU07UUFBRWswQjtNQUFXLENBQUMsR0FBR2wwQixNQUFNO01BQzdCLE1BQU1tMUIsUUFBUSxHQUFHLENBQUMsR0FBR2YsT0FBTyxDQUFDO01BQzdCO01BQ0EsTUFBTWdCLFVBQVUsR0FBR2hCLE9BQU8sQ0FBQ3RnQixJQUFJLENBQzVCZ2hCLE1BQU0sSUFBS1osVUFBVSxLQUFLWSxNQUFNLENBQUN6MUIsS0FDcEMsQ0FBQztNQUNELElBQUk2MEIsVUFBVSxLQUFLLEVBQUUsSUFBSSxDQUFDa0IsVUFBVSxFQUFFO1FBQ3BDRCxRQUFRLENBQUM5M0IsSUFBSSxDQUFDO1VBQ1o2MkIsVUFBVTtVQUNWM3pCLElBQUksY0FBQWpELE1BQUEsQ0FBYTQyQixVQUFVO1FBQzdCLENBQUMsQ0FBQztNQUNKO01BRUEsT0FBT2lCLFFBQVE7SUFDakIsQ0FBRTtJQUNGRSxXQUFXLEVBQUdyMUIsTUFBTSxpQkFDbEJvSSxzREFBQSxDQUFDOEosb0RBQVNBO0lBQ1IsNkRBQUF2TyxhQUFBLENBQUFBLGFBQUEsS0FDSTNELE1BQU07TUFDVnFRLEtBQUssRUFBRTNSLENBQUMsQ0FBQyxnQ0FBZ0MsQ0FBRTtNQUMzQ29TLFNBQVM7TUFDVEQsUUFBUSxFQUFFdkgsVUFBVztNQUNyQm9HLFVBQVUsRUFBRUEsVUFBVztNQUN2QkQsS0FBSyxFQUFFQSxLQUFNO01BQ2JzQixNQUFNLEVBQUM7SUFBUSxFQUNoQixDQUNEO0lBQ0Z1a0IsWUFBWSxFQUFFQSxDQUFDL0wsS0FBSyxFQUFFdUwsTUFBTSxLQUFLO01BQy9CLE1BQU07VUFBRTkxQjtRQUFvQixDQUFDLEdBQUd1cUIsS0FBSztRQUFyQmdNLFdBQVcsR0FBQTNsQixxRkFBQSxDQUFLMlosS0FBSyxFQUFBMVosU0FBQTtNQUNyQztRQUFBO1FBQ0U7UUFDQXpILHNEQUFBLE9BQUF6RSxhQUFBLENBQUFBLGFBQUEsS0FBa0I0eEIsV0FBVztVQUFBcHNCLFFBQUEsZUFDM0JmLHNEQUFBLENBQUM0YixxREFBVTtZQUNUakosT0FBTyxFQUFDLE9BQU87WUFDZnhKLEVBQUUsRUFBRTtjQUFFOUQsUUFBUSxFQUFFLEtBQUs7Y0FBRVcsS0FBSyxFQUFFO1lBQWlCLENBQUU7WUFBQWpGLFFBQUEsRUFFaEQyckIsTUFBTSxDQUFDdjBCO1VBQUksQ0FDRjtRQUFDLElBTk52QixHQU9MO01BQUM7SUFFVDtFQUFFLENBQ0gsQ0FBQztBQUVOLENBQUM7QUFFRGcxQixZQUFZLENBQUNycUIsU0FBUyxHQUFHO0VBQ3ZCakIsTUFBTSxFQUFFakIsMERBQWdCLENBQUM2QixVQUFVO0VBQ25DMnFCLFFBQVEsRUFBRXhzQiwwREFBZ0IsQ0FBQzZCO0FBQzdCLENBQUM7QUFFRCxpRUFBZTBxQixZQUFZOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDOUlEO0FBQ1M7QUFPWjtBQUNtRDtBQUMzQjtBQUNRO0FBRVI7QUFBQTtBQUUvQyxNQUFNaHNCLHNCQUFzQixHQUFHakosSUFBQSxJQUt6QjtFQUFBLElBTDBCO0lBQzlCc0ssVUFBVTtJQUNWWCxNQUFNO0lBQ040RyxVQUFVLEdBQUcsS0FBSztJQUNsQmhHLFVBQVUsR0FBRztFQUNmLENBQUMsR0FBQXZLLElBQUE7RUFDQyxNQUFNO0lBQUVMO0VBQUUsQ0FBQyxHQUFHZ0osNkRBQWMsQ0FBQyxDQUFDO0VBQzlCLE1BQU1uSCxJQUFJLEdBQUd6Riw0REFBb0IsQ0FBQ0ssa0JBQWtCO0VBQ3BELE1BQU07SUFBRTBELE1BQU07SUFBRWlLLE1BQU07SUFBRStNLE9BQU87SUFBRUgsWUFBWTtJQUFFRTtFQUFXLENBQUMsR0FBR2xOLE1BQU07RUFDcEUsTUFBTXpKLEtBQUssR0FBRzZKLE1BQU0sQ0FBQ3ZJLElBQUksQ0FBQztFQUMxQixNQUFNa1AsS0FBSyxHQUFHb0csT0FBTyxDQUFDdFYsSUFBSSxDQUFDLElBQUl1VixPQUFPLENBQUNqWCxNQUFNLENBQUMwQixJQUFJLENBQUMsQ0FBQztFQUNwRCxNQUFNbVAsVUFBVSxHQUFHbUcsT0FBTyxDQUFDdFYsSUFBSSxDQUFDLElBQUkxQixNQUFNLENBQUMwQixJQUFJLENBQUM7RUFFaEQsb0JBQ0UrSCx1REFBQSxDQUFDWCw4Q0FBRztJQUFDMEQsU0FBUyxFQUFFbkIsd0RBQWU7SUFBQWYsUUFBQSxnQkFDN0JmLHNEQUFBLENBQUNpSiw0RkFBTztNQUFBbEksUUFBQSxFQUFFRTtJQUFVLENBQVUsQ0FBQyxlQUMvQmYsdURBQUEsQ0FBQ3FHLHNEQUFXO01BQUNtQyxTQUFTO01BQUNyQixLQUFLLEVBQUVBLEtBQU07TUFBQXRHLFFBQUEsZ0JBQ2xDZixzREFBQSxDQUFDd0csMkRBQWdCO1FBQ2ZxQyxPQUFPLGVBQ0w3SSxzREFBQSxDQUFDc0csbURBQVE7VUFDUG5PLElBQUksRUFBRUEsSUFBSztVQUNYaVEsT0FBTyxFQUFFLENBQUMsQ0FBQ3ZSLEtBQU07VUFDakJvUixLQUFLLEVBQUUzUixDQUFDLENBQUMscURBQXFELENBQUU7VUFDaEU2USxRQUFRLEVBQUVtRyxZQUFhO1VBQ3ZCQyxNQUFNLEVBQUVDO1FBQVcsQ0FDcEIsQ0FDRjtRQUNEdkYsS0FBSyxFQUFFM1IsQ0FBQyxDQUFDLHFEQUFxRCxDQUFFO1FBQ2hFK0ssUUFBUSxFQUFFNkYsVUFBVztRQUNyQnVCLFFBQVEsRUFBRXZIO01BQVcsQ0FDdEIsQ0FBQyxFQUNEbUcsS0FBSyxpQkFBSXJILHNEQUFBLENBQUMwRyx5REFBYztRQUFBM0YsUUFBQSxFQUFFdUcsVUFBVSxhQUFWQSxVQUFVLGNBQVZBLFVBQVUsR0FBSTtNQUFHLENBQWlCLENBQUM7SUFBQSxDQUNuRCxDQUFDO0VBQUEsQ0FDWCxDQUFDO0FBRVYsQ0FBQztBQUVEMUgsc0JBQXNCLENBQUMyQixTQUFTLEdBQUc7RUFDakNOLFVBQVUsRUFBRTVCLDBEQUFnQixDQUFDNkIsVUFBVTtFQUN2Q1osTUFBTSxFQUFFakIsMERBQWdCLENBQUM2QixVQUFVO0VBQ25DZ0csVUFBVSxFQUFFN0gsd0RBQWM7RUFDMUI2QixVQUFVLEVBQUU3Qix3REFBY2tFO0FBQzVCLENBQUM7QUFFRCxpRUFBZTNELHNCQUFzQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQzNEckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUUwQjtBQUNTO0FBQ1k7QUFDQztBQUNiO0FBQzhCO0FBS1Q7QUFFSDtBQUNpQztBQUN6QztBQUNxQjtBQUkzQjtBQUVZO0FBQUE7QUFFbkQsTUFBTXl0QixVQUFVLEdBQUcxMkIsSUFBQSxJQU9iO0VBQUEsSUFBQXNsQixhQUFBLEVBQUFDLGNBQUE7RUFBQSxJQVBjO0lBQ2xCMWlCLE1BQU07SUFDTnhHLGNBQWM7SUFDZGdCLE1BQU07SUFDTnM1QixPQUFPO0lBQ1BsdEIsUUFBUTtJQUNSQztFQUNGLENBQUMsR0FBQTFKLElBQUE7RUFDQyxNQUFNO0lBQUVMO0VBQUUsQ0FBQyxHQUFHZ0osNkRBQWMsQ0FBQyxDQUFDO0VBQzlCLE1BQU0xQyxPQUFPLEdBQUdwRCxNQUFNLGFBQU5BLE1BQU0sZ0JBQUF5aUIsYUFBQSxHQUFOemlCLE1BQU0sQ0FBRTRELEtBQUssY0FBQTZlLGFBQUEsdUJBQWJBLGFBQUEsQ0FBZS9QLGVBQWUsQ0FBQ3FoQixNQUFNLENBQUMsQ0FBQ3YzQixHQUFHLEVBQUU4VixHQUFHLEtBQUs7SUFDbEUsTUFBTXBFLFlBQVksR0FBR2IsOEVBQU0sQ0FBQ2lGLEdBQUcsQ0FBQzlFLFFBQVEsQ0FBQzdPLElBQUksRUFBRTJULEdBQUcsQ0FBQzlFLFFBQVEsQ0FBQzVPLEVBQUUsQ0FBQztJQUMvRHBDLEdBQUcsQ0FBQzBSLFlBQVksQ0FBQyxHQUFHbUUsb0ZBQVksQ0FBQ0MsR0FBRyxDQUFDalYsS0FBSyxFQUFFaVYsR0FBRyxDQUFDOUUsUUFBUSxDQUFDNEUsSUFBSSxDQUFDO0lBQzlELE9BQU81VixHQUFHO0VBQ1osQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0VBRU4sTUFBTXNLLE1BQU0sR0FBR2QsaURBQVMsQ0FBQztJQUN2QmUsYUFBYSxFQUFFVCxpRUFBWSxDQUN6QnRHLE1BQU0sQ0FBQzRELEtBQUssRUFDWnBLLGNBQWMsRUFDZDRKLE9BQU8sRUFDUCxJQUFJLEVBQ0osSUFDRixDQUFDO0lBQ0Q0RCxnQkFBZ0IsRUFBRVgsMEVBQXFCLENBQ3JDN00sY0FBYyxFQUNkLElBQUksRUFDSmdCLE1BQU0sQ0FBQ3lNLGlDQUNULENBQUM7SUFDREwsUUFBUSxFQUFHTSxNQUFNLElBQUs7TUFDcEIsTUFBTUMsZUFBZSxHQUFHYixpRUFBWSxDQUNsQ3RHLE1BQU0sQ0FBQzRELEtBQUssRUFDWnBLLGNBQWMsRUFDZDBOLE1BQU0sRUFDTixJQUFJLEVBQ0osSUFBSSxFQUNKLElBQ0YsQ0FBQztNQUVELE9BQU9OLFFBQVEsQ0FBQ08sZUFBZSxDQUFDO0lBQ2xDLENBQUM7SUFDREMsa0JBQWtCLEVBQUU7RUFDdEIsQ0FBQyxDQUFDOztFQUVGO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0VBRUE7RUFDQWpCLG9FQUFnQixDQUFDVyxNQUFNLEVBQUUsZUFBZSxDQUFDO0VBRXpDLG9CQUNFSix3REFBQTtJQUFNRSxRQUFRLEVBQUVFLE1BQU0sQ0FBQ08sWUFBYTtJQUFDQyxVQUFVO0lBQUFDLFFBQUEsZ0JBQzdDZix1REFBQSxDQUFDb3RCLDBEQUFpQjtNQUNoQjlzQixNQUFNLEVBQUVBLE1BQU87TUFDZmdjLFdBQVcsRUFBRSxDQUFDLEdBQUFKLGNBQUEsR0FBQzFpQixNQUFNLENBQUM0RCxLQUFLLGNBQUE4ZSxjQUFBLGVBQVpBLGNBQUEsQ0FBYzdmLFVBQVUsQ0FBQztNQUN4Q3d2QixRQUFRLEVBQUU3M0IsTUFBTSxDQUFDb0UsRUFBRztNQUNwQmlKLFFBQVEsRUFBRSxDQUFDaXNCO0lBQVEsQ0FDcEIsQ0FBQyxFQUVELENBQUF0NkIsY0FBYyxhQUFkQSxjQUFjLHVCQUFkQSxjQUFjLENBQUVxQyxNQUFNLElBQUcsQ0FBQyxpQkFDekI2Syx3REFBQSxDQUFDWCw4Q0FBRztNQUFBd0IsUUFBQSxnQkFDRmYsdURBQUEsQ0FBQzRiLHFEQUFVO1FBQUNqSixPQUFPLEVBQUMsT0FBTztRQUFDMVAsU0FBUyxFQUFFbkIsbUVBQXlCO1FBQUFmLFFBQUEsRUFDN0R6SyxDQUFDLENBQUMsaUNBQWlDO01BQUMsQ0FDM0IsQ0FBQyxlQUNiMEosdURBQUEsQ0FBQ1AsNkRBQW9CO1FBQ25Cek0sY0FBYyxFQUFFQSxjQUFlO1FBQy9COFosU0FBUyxFQUFFd2dCLE9BQVE7UUFDbkJodEIsTUFBTSxFQUFFQTtNQUFPLENBQ2hCLENBQUM7SUFBQSxDQUNDLENBQ04sRUFFQXRNLE1BQU0sQ0FBQ2dOLCtCQUErQixpQkFDckNoQix1REFBQSxDQUFDSixzRkFBc0I7TUFDckJVLE1BQU0sRUFBRUEsTUFBTztNQUNmVyxVQUFVLEVBQUVqTixNQUFNLENBQUNnTiwrQkFBZ0M7TUFDbkRFLFVBQVUsRUFBRWxOLE1BQU0sQ0FBQ3lNLGlDQUFrQztNQUNyRHlHLFVBQVUsRUFBRSxDQUFDb21CO0lBQVEsQ0FDdEIsQ0FDRixlQUNEdHRCLHVEQUFBLENBQUNOLG1EQUFVO01BQ1R5QixTQUFTLEVBQUU3SyxDQUFDLENBQUMsb0JBQW9CLENBQUU7TUFDbkM4SyxXQUFXLEVBQUU5SyxDQUFDLENBQUMsc0JBQXNCLENBQUU7TUFDdkMrSixPQUFPLEVBQUVBLE9BQVE7TUFDakJnQixRQUFRLEVBQUVmLE1BQU0sQ0FBQ2dCO0lBQWEsQ0FDL0IsQ0FBQztFQUFBLENBQ0UsQ0FBQztBQUVYLENBQUM7QUFFRCtyQixVQUFVLENBQUM5ckIsU0FBUyxHQUFHO0VBQ3JCL0gsTUFBTSxFQUFFNkYsMERBQWdCO0VBQ3hCck0sY0FBYyxFQUFFcU0seURBQWUsQ0FBQzZCLFVBQVU7RUFDMUNsTixNQUFNLEVBQUVxTCwwREFBZ0IsQ0FBQzZCLFVBQVU7RUFDbkNvc0IsT0FBTyxFQUFFanVCLHdEQUFjO0VBQ3ZCZSxRQUFRLEVBQUVmLHdEQUFjLENBQUM2QixVQUFVO0VBQ25DYixPQUFPLEVBQUVoQix3REFBYyxDQUFDNkI7QUFDMUIsQ0FBQztBQUVELGlFQUFlbXNCLFVBQVU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQzVJekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUUwQjtBQUNTO0FBQ3dCO0FBQ1o7QUFFQTtBQUNRO0FBQ1o7QUFBQTtBQUUzQyxNQUFNRCxpQkFBaUIsR0FBR3oyQixJQUFBLElBQWlEO0VBQUEsSUFBaEQ7SUFBRTJKLE1BQU07SUFBRXVyQixRQUFRO0lBQUV4cUIsUUFBUTtJQUFFaWI7RUFBWSxDQUFDLEdBQUEzbEIsSUFBQTtFQUNwRSxNQUFNO0lBQUVMO0VBQUUsQ0FBQyxHQUFHZ0osNkRBQWMsQ0FBQyxDQUFDO0VBQzlCLE1BQU07SUFBRTdJLE1BQU07SUFBRWlLLE1BQU07SUFBRStNLE9BQU87SUFBRUgsWUFBWTtJQUFFRSxVQUFVO0lBQUVqTjtFQUFjLENBQUMsR0FDeEVELE1BQU07RUFFUixvQkFDRUosdURBQUEsQ0FBQ1gsOENBQUc7SUFBQzBELFNBQVMsRUFBRW5CLHdEQUFlO0lBQUFmLFFBQUEsZ0JBQzdCZixzREFBQSxDQUFDOEosb0RBQVM7TUFDUnBCLFNBQVM7TUFDVHZRLElBQUksRUFBRXpGLDREQUFvQixDQUFDQyxLQUFNO01BQ2pDc1YsS0FBSyxFQUFFM1IsQ0FBQyxDQUFDLHFCQUFxQixDQUFFO01BQ2hDK0ssUUFBUTtNQUNSeEssS0FBSyxFQUFFNkosTUFBTSxDQUFDaE8sNERBQW9CLENBQUNDLEtBQUssQ0FBRTtNQUMxQ2dXLE1BQU0sRUFBQztJQUFRLENBQ2hCLENBQUMsRUFDRDJULFdBQVcsaUJBQ1Z0YyxzREFBQSxDQUFDNGIscURBQVU7TUFBQ2pKLE9BQU8sRUFBQyxPQUFPO01BQUN4SixFQUFFLEVBQUU7UUFBRTVELFVBQVUsRUFBRSxHQUFHO1FBQUVvRCxNQUFNLEVBQUU7TUFBUyxDQUFFO01BQUE1SCxRQUFBLEVBQ25FekssQ0FBQyxDQUFDLDBCQUEwQjtJQUFDLENBQ3BCLENBQ2IsRUFDQSxDQUFDNUQsNERBQW9CLENBQUNFLFNBQVMsRUFBRUYsNERBQW9CLENBQUNHLFFBQVEsQ0FBQyxDQUFDdUgsR0FBRyxDQUNqRWpDLElBQUksaUJBQ0g2SCxzREFBQSxDQUFDOEosb0RBQVM7TUFDUnBCLFNBQVM7TUFFVHZRLElBQUksRUFBRUEsSUFBSztNQUNYOFAsS0FBSyxFQUFFM1IsQ0FBQyxrQkFBQXBCLE1BQUEsQ0FBa0JpRCxJQUFJLENBQUUsQ0FBRTtNQUNsQ3RCLEtBQUssRUFBRTZKLE1BQU0sQ0FBQ3ZJLElBQUksQ0FBRTtNQUNwQmtKLFFBQVEsRUFBRUEsUUFBUSxJQUFJaWIsV0FBVyxJQUFJLENBQUMsQ0FBQy9iLGFBQWEsQ0FBQ3BJLElBQUksQ0FBRTtNQUMzRGdQLFFBQVEsRUFBRW1HLFlBQWE7TUFDdkJDLE1BQU0sRUFBRUMsVUFBVztNQUNuQm5HLEtBQUssRUFBRW9HLE9BQU8sQ0FBQ3RWLElBQUksQ0FBQyxJQUFJdVYsT0FBTyxDQUFDalgsTUFBTSxDQUFDMEIsSUFBSSxDQUFDLENBQUU7TUFDOUNtUCxVQUFVLEVBQUVoSCxNQUFNLENBQUNtTixPQUFPLENBQUN0VixJQUFJLENBQUMsSUFBSW1JLE1BQU0sQ0FBQzdKLE1BQU0sQ0FBQzBCLElBQUksQ0FBRTtNQUN4RHNRLFFBQVE7TUFDUkUsTUFBTSxFQUFDO0lBQVEsR0FWVnhRLElBV04sQ0FFTCxDQUFDLGVBQ0Q2SCxzREFBQSxDQUFDNHJCLHFEQUFZO01BQUN0ckIsTUFBTSxFQUFFQSxNQUFPO01BQUN1ckIsUUFBUSxFQUFFQSxRQUFTO01BQUMzcUIsVUFBVTtJQUFBLENBQUUsQ0FBQyxlQUMvRGxCLHNEQUFBLENBQUNULDhDQUFHO01BQUMwRCxTQUFTLEVBQUVuQix5REFBZ0I7TUFBQWYsUUFBQSxFQUFFekssQ0FBQyxDQUFDLHlCQUF5QjtJQUFDLENBQU0sQ0FBQztFQUFBLENBQ2xFLENBQUM7QUFFVixDQUFDO0FBRUQ4MkIsaUJBQWlCLENBQUM3ckIsU0FBUyxHQUFHO0VBQzVCakIsTUFBTSxFQUFFakIsMERBQWdCLENBQUM2QixVQUFVO0VBQ25DMnFCLFFBQVEsRUFBRXhzQiwwREFBZ0IsQ0FBQzZCLFVBQVU7RUFDckNHLFFBQVEsRUFBRWhDLHdEQUFjO0VBQ3hCaWQsV0FBVyxFQUFFamQsd0RBQWNrRTtBQUM3QixDQUFDO0FBRUQsaUVBQWU2cEIsaUJBQWlCOzs7Ozs7Ozs7Ozs7OztBQ3pFekIsTUFBTTE2QixvQkFBb0IsR0FBRztFQUNsQ0MsS0FBSyxFQUFFLGdCQUFnQjtFQUN2QkMsU0FBUyxFQUFFLHFCQUFxQjtFQUNoQ0MsUUFBUSxFQUFFLG9CQUFvQjtFQUM5QkMsT0FBTyxFQUFFLGtCQUFrQjtFQUMzQkMsa0JBQWtCLEVBQUU7QUFDdEIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDTnVDO0FBQ0w7QUFDb0I7QUFDUjtBQUNaO0FBQ3lDO0FBSy9DO0FBQ21DO0FBQzdCO0FBQ2lCO0FBQzZCO0FBQ3RDO0FBQ3VCO0FBQ2pCO0FBSzFCO0FBRXdCO0FBQUE7QUFFL0MsTUFBTWtyQixZQUFZLEdBQUd0bkIsSUFBQSxJQU9mO0VBQUEsSUFBQTZsQixhQUFBLEVBQUFQLGFBQUEsRUFBQThDLG1CQUFBLEVBQUF0QyxjQUFBLEVBQUF1UixjQUFBO0VBQUEsSUFQZ0I7SUFDcEJoNkIsTUFBTTtJQUNOaUgsUUFBUTtJQUNSeEMsT0FBTztJQUNQbW9CLE9BQU87SUFDUHpjLElBQUk7SUFDSjlEO0VBQ0YsQ0FBQyxHQUFBMUosSUFBQTtFQUNDLE1BQU07SUFBRUw7RUFBRSxDQUFDLEdBQUdnSiw2REFBYyxDQUFDLENBQUM7RUFDOUIsTUFBTTNMLFFBQVEsR0FBR21xQix3REFBVyxDQUFDLENBQUM7RUFDOUIsTUFBTTtJQUNKN3BCLElBQUksRUFBRTtNQUFFNkU7SUFBWTtFQUN0QixDQUFDLEdBQUc4VSx3REFBVyxDQUFFVSxLQUFLLElBQUtBLEtBQUssQ0FBQzVXLFdBQVcsQ0FBQztFQUM3QyxNQUFNO0lBQUU4QixNQUFNO0lBQUV4RztFQUFlLENBQUMsR0FBR3UzQiwrREFBWSxDQUM3Q3R2QixRQUFRLEVBQ1J4QyxPQUFPLEVBQ1Btb0IsT0FBTyxFQUNQemMsSUFDRixDQUFDO0VBQ0QsTUFBTSxDQUFDcW1CLFdBQVcsRUFBRUMsY0FBYyxDQUFDLEdBQUcvbkIsK0NBQVEsQ0FBQyxJQUFJLENBQUM7RUFDcEQsTUFBTSxDQUFDdXJCLGdCQUFnQixFQUFFQyxtQkFBbUIsQ0FBQyxHQUFHeHJCLCtDQUFRLENBQUMsS0FBSyxDQUFDO0VBQy9ELE1BQU15ckIsZ0JBQWdCLEdBQUcsQ0FBQTMwQixNQUFNLGFBQU5BLE1BQU0sZ0JBQUFnakIsYUFBQSxHQUFOaGpCLE1BQU0sQ0FBRTFCLEtBQUssY0FBQTBrQixhQUFBLHVCQUFiQSxhQUFBLENBQWU0UixRQUFRLE9BQUt0MUIsV0FBVyxhQUFYQSxXQUFXLHVCQUFYQSxXQUFXLENBQUVWLEVBQUU7RUFDcEUsTUFBTWkyQixpQkFBaUIsR0FBRyxDQUFBNzBCLE1BQU0sYUFBTkEsTUFBTSxnQkFBQXlpQixhQUFBLEdBQU56aUIsTUFBTSxDQUFFNEQsS0FBSyxjQUFBNmUsYUFBQSx1QkFBYkEsYUFBQSxDQUFldHBCLEtBQUssT0FBS21HLFdBQVcsYUFBWEEsV0FBVyx1QkFBWEEsV0FBVyxDQUFFbkcsS0FBSztFQUNyRSxNQUFNMjdCLGlCQUFpQixHQUNyQixDQUFDRCxpQkFBaUIsSUFBSUYsZ0JBQWdCLEtBQ3RDbjZCLE1BQU0sQ0FBQ3U2QixxQ0FBcUM7RUFDOUMsTUFBTTtJQUFFQztFQUFXLENBQUMsR0FBR3RRLHlFQUFnQixDQUFDMWtCLE1BQU0sQ0FBQztFQUUvQyxNQUFNaTFCLE1BQU0sR0FBSXptQixHQUFHLElBQUs7SUFDdEIsTUFBTXBMLE9BQU8sR0FBR29QLDhGQUFxQixDQUFDaEUsR0FBRyxDQUFDO0lBRTFDLE9BQU9yVSxRQUFRLENBQUNnSiw0REFBaUIsQ0FBQ25ELE1BQU0sRUFBRW9ELE9BQU8sQ0FBQyxDQUFDLENBQ2hEdkUsSUFBSSxDQUFDLE1BQU07TUFDVm95QixjQUFjLENBQUM7UUFDYnh6QixLQUFLLEVBQUVYLENBQUMsQ0FBQyw4QkFBOEIsQ0FBQztRQUN4QzgwQixXQUFXLEVBQUU5MEIsQ0FBQyxDQUFDLDBDQUEwQztNQUMzRCxDQUFDLENBQUM7TUFDRixPQUFPeUMsT0FBTyxDQUFDc3lCLE9BQU8sQ0FBQyxDQUFDO0lBQzFCLENBQUMsQ0FBQyxDQUNEL3lCLEtBQUssQ0FBRXZDLEdBQUcsSUFBSztNQUNkMDBCLGNBQWMsQ0FBQztRQUNieHpCLEtBQUssRUFBRVgsQ0FBQyxDQUFDLDRCQUE0QixDQUFDO1FBQ3RDODBCLFdBQVcsRUFBRXIxQixHQUFHLENBQUNtUyxRQUFRLENBQUM7TUFDNUIsQ0FBQyxDQUFDO01BQ0YsT0FBT25QLE9BQU8sQ0FBQ0MsTUFBTSxDQUFDLENBQUM7SUFDekIsQ0FBQyxDQUFDO0VBQ04sQ0FBQztFQUVELE1BQU1reUIsa0JBQWtCLEdBQUdBLENBQUEsS0FBTTtJQUMvQlQsY0FBYyxDQUFDLElBQUksQ0FBQztJQUNwQnpuQixVQUFVLENBQUMzQyxPQUFPLEVBQUV3Qiw4REFBZSxDQUFDO0VBQ3RDLENBQUM7RUFFRCxNQUFNNnNCLGlCQUFpQixHQUFHQSxDQUFBLEtBQU07SUFDOUIvNkIsUUFBUSxDQUFDb0ssdURBQVksQ0FBQ3ZFLE1BQU0sQ0FBQyxDQUFDO0VBQ2hDLENBQUM7RUFFRCxNQUFNbTFCLFdBQVcsR0FBR0EsQ0FBQSxLQUFNO0lBQ3hCaDdCLFFBQVEsQ0FBQzRGLDZEQUFrQixDQUFDQyxNQUFNLENBQUMsQ0FBQyxDQUFDbkIsSUFBSSxDQUFDLE1BQU07TUFDOUM2MUIsbUJBQW1CLENBQUMsSUFBSSxDQUFDO01BQ3pCbHJCLFVBQVUsQ0FBQyxNQUFNO1FBQ2ZrckIsbUJBQW1CLENBQUMsS0FBSyxDQUFDO01BQzVCLENBQUMsRUFBRXJzQiw4REFBZSxHQUFHa3NCLHVEQUFRLENBQUM7SUFDaEMsQ0FBQyxDQUFDO0VBQ0osQ0FBQztFQUVELG9CQUNFN3RCLHdEQUFBLENBQUFtWSx3REFBQTtJQUFBdFgsUUFBQSxnQkFDRWYsdURBQUEsQ0FBQzZuQixpREFBTTtNQUNMenZCLEVBQUUsRUFBQyxlQUFlO01BQ2xCK0wsSUFBSSxFQUFFQSxJQUFLO01BQ1g5RCxPQUFPLEVBQUVBLE9BQVE7TUFDakIwbkIsTUFBTSxFQUFDLE9BQU87TUFDZEMsVUFBVSxFQUFFO1FBQUVDLFdBQVcsRUFBRTtNQUFNLENBQUU7TUFDbkNobEIsU0FBUyxFQUFFbkIsdUVBQTZCO01BQUFmLFFBQUEsRUFFdkN2SCxNQUFNLElBQUl4RyxjQUFjLGlCQUN2QmtOLHdEQUFBLENBQUFtWSx3REFBQTtRQUFBdFgsUUFBQSxnQkFDRWIsd0RBQUEsQ0FBQ1gsOENBQUc7VUFBQzBELFNBQVMsRUFBRW5CLHdEQUFjO1VBQUFmLFFBQUEsZ0JBQzVCZix1REFBQSxDQUFDK04scURBQVU7WUFDVDlLLFNBQVMsRUFBRW5CLDBEQUFnQjtZQUMzQnVCLE9BQU8sRUFBRWhELE9BQVE7WUFDakI4SSxFQUFFLEVBQUU7Y0FBRWlmLEtBQUssRUFBRTtZQUFRLENBQUU7WUFDdkIvaUIsUUFBUSxFQUFDLE9BQU87WUFBQXRFLFFBQUEsZUFFaEJmLHVEQUFBLENBQUN1VCxzREFBUyxJQUFFO1VBQUMsQ0FDSCxDQUFDLGVBQ2J2VCx1REFBQSxDQUFDNGIscURBQVU7WUFBQ2pKLE9BQU8sRUFBQyxJQUFJO1lBQUMwVixZQUFZO1lBQUNwbEIsU0FBUyxFQUFFbkIsdURBQWE7WUFBQWYsUUFBQSxFQUMzRHZILE1BQU0sYUFBTkEsTUFBTSxnQkFBQXVsQixtQkFBQSxHQUFOdmxCLE1BQU0sQ0FBRXdmLFdBQVcsY0FBQStGLG1CQUFBLHVCQUFuQkEsbUJBQUEsQ0FBcUI1bUI7VUFBSSxDQUNoQixDQUFDLGVBQ2IrSCx3REFBQSxDQUFDMGIscURBQVU7WUFDVGpKLE9BQU8sRUFBQyxPQUFPO1lBQ2YwVixZQUFZO1lBQ1pwbEIsU0FBUyxFQUFFbkIsMERBQWdCO1lBQUFmLFFBQUEsR0FFMUJ6SyxDQUFDLENBQUMsNEJBQTRCLENBQUMsRUFBQyxHQUFDLEVBQUNrRCxNQUFNLGFBQU5BLE1BQU0sZ0JBQUFpakIsY0FBQSxHQUFOampCLE1BQU0sQ0FBRTFCLEtBQUssY0FBQTJrQixjQUFBLHVCQUFiQSxjQUFBLENBQWVvTixXQUFXO1VBQUEsQ0FDbkQsQ0FBQyxFQUVaMkUsVUFBVSxpQkFDVHR1Qix3REFBQSxDQUFBbVksd0RBQUE7WUFBQXRYLFFBQUEsZ0JBQ0VmLHVEQUFBLENBQUNULDhDQUFHO2NBQUMwRCxTQUFTLEVBQUVuQix3REFBYztjQUFBZixRQUFBLGVBQzVCZix1REFBQSxDQUFDMHRCLHNEQUFNO2dCQUNMaFgsSUFBSSxFQUFFLEdBQUk7Z0JBQ1Z2VCxLQUFLLEVBQUU7a0JBQ0w0USxNQUFNLEVBQUUsTUFBTTtrQkFDZHNSLFFBQVEsRUFBRSxNQUFNO2tCQUNoQi9pQixLQUFLLEVBQUU7Z0JBQ1QsQ0FBRTtnQkFDRnpMLEtBQUssRUFBRTJDLE1BQU0sQ0FBQ3MxQixPQUFRO2dCQUN0QkMsT0FBTyxFQUFDO2NBQWEsQ0FDdEI7WUFBQyxDQUNDLENBQUMsZUFDTi91Qix1REFBQTtjQUFHaUQsU0FBUyxFQUFFbkIsd0RBQWM7Y0FBQWYsUUFBQSxFQUFFekssQ0FBQyxDQUFDLHNCQUFzQjtZQUFDLENBQUksQ0FBQyxlQUM1RDBKLHVEQUFBLENBQUM0YixxREFBVTtjQUNUakosT0FBTyxFQUFDLE9BQU87Y0FDZjBWLFlBQVk7Y0FDWnBsQixTQUFTLEVBQUVuQix3REFBYztjQUFBZixRQUFBLEVBRXhCekssQ0FBQyxDQUFDLHVCQUF1QjtZQUFDLENBQ2pCLENBQUM7VUFBQSxDQUNiLENBQ0gsRUFFQSxFQUFDdEMsTUFBTSxhQUFOQSxNQUFNLGVBQU5BLE1BQU0sQ0FBRWk3QixVQUFVLEtBQUlULFVBQVUsaUJBQ2hDdHVCLHdEQUFBLENBQUNYLDhDQUFHO1lBQUMwRCxTQUFTLEVBQUVuQix3RUFBOEI7WUFBQWYsUUFBQSxnQkFDNUNiLHdEQUFBLENBQUMrUCxpREFBTTtjQUNMaE4sU0FBUyxFQUFFbkIsNkRBQW1CO2NBQzlCNlEsT0FBTyxFQUFDLFdBQVc7Y0FDbkIzTSxLQUFLLEVBQUMsU0FBUztjQUNmM0MsT0FBTyxFQUFFcXJCLGlCQUFrQjtjQUFBM3RCLFFBQUEsZ0JBRTNCZix1REFBQSxDQUFDNHRCLHFFQUFZO2dCQUFDdm9CLFFBQVEsRUFBQztjQUFPLENBQUUsQ0FBQyxFQUNoQy9PLENBQUMsQ0FBQyx3QkFBd0IsQ0FBQztZQUFBLENBQ3RCLENBQUMsZUFDVDRKLHdEQUFBLENBQUMrUCxpREFBTTtjQUNMaE4sU0FBUyxLQUFBL04sTUFBQSxDQUFLNE0seURBQWMsT0FBQTVNLE1BQUEsQ0FDMUIrNEIsZ0JBQWdCLEdBQUduc0Isc0RBQVcsR0FBRyxFQUFFLENBQ2xDO2NBQ0h1QixPQUFPLEVBQUVzckIsV0FBWTtjQUNyQnR0QixRQUFRLEVBQUU0c0IsZ0JBQWlCO2NBQUFsdEIsUUFBQSxnQkFFM0JmLHVEQUFBLENBQUM4dEIsOERBQVM7Z0JBQUN6b0IsUUFBUSxFQUFDO2NBQU8sQ0FBRSxDQUFDLEVBQzdCNG9CLGdCQUFnQixHQUNiMzNCLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxHQUN2QkEsQ0FBQyxDQUFDLG9CQUFvQixDQUFDO1lBQUEsQ0FDckIsQ0FBQztVQUFBLENBQ04sQ0FDTixlQUVEMEosdURBQUE7WUFBS2lELFNBQVMsRUFBRW5CLDZEQUFtQjtZQUFBZixRQUFBLGVBQ2pDZix1REFBQSxDQUFDZ0MsaURBQVE7Y0FDUEMsSUFBSSxFQUFFekksTUFBTSxhQUFOQSxNQUFNLGdCQUFBdzBCLGNBQUEsR0FBTngwQixNQUFNLENBQUUxQixLQUFLLGNBQUFrMkIsY0FBQSx1QkFBYkEsY0FBQSxDQUFleHFCLE1BQU87Y0FDNUJuQixRQUFRO2NBQ1JDLEtBQUssRUFBRSxHQUFJO2NBQ1hKLFdBQVcsRUFBRTVMLENBQUMsQ0FBQyxpQ0FBaUM7WUFBRSxDQUNuRDtVQUFDLENBQ0MsQ0FBQztRQUFBLENBQ0gsQ0FBQyxlQUNONEosd0RBQUEsQ0FBQ1gsOENBQUc7VUFBQzBELFNBQVMsRUFBRW5CLG1FQUF5QjtVQUFBZixRQUFBLGdCQUN2Q2YsdURBQUEsQ0FBQzRiLHFEQUFVO1lBQ1RqSixPQUFPLEVBQUMsSUFBSTtZQUNaMFYsWUFBWTtZQUNacGxCLFNBQVMsRUFBRW5CLG1FQUF5QjtZQUFBZixRQUFBLEVBRW5DekssQ0FBQyxDQUFDLG9DQUFvQztVQUFDLENBQzlCLENBQUMsRUFDWmtELE1BQU0saUJBQ0x3Ryx1REFBQSxDQUFDcXRCLCtEQUFVO1lBQ1Q3ekIsTUFBTSxFQUFFQSxNQUFPO1lBQ2Z4RyxjQUFjLEVBQUVBLGNBQWU7WUFDL0JnQixNQUFNLEVBQUVBLE1BQU87WUFDZnM1QixPQUFPLEVBQUVnQixpQkFBa0I7WUFDM0JsdUIsUUFBUSxFQUFFcXVCLE1BQU87WUFDakJwdUIsT0FBTyxFQUFFQTtVQUFRLENBQ2xCLENBQ0Y7UUFBQSxDQUNFLENBQUM7TUFBQSxDQUNOO0lBQ0gsQ0FDSyxDQUFDLGVBQ1RMLHVEQUFBLENBQUNrRSxzREFBWTtNQUNYQyxJQUFJLEVBQUUsQ0FBQyxDQUFDcW1CLFdBQVk7TUFDcEJucUIsT0FBTyxFQUFFNnFCLGtCQUFtQjtNQUM1QmowQixLQUFLLEVBQUV1ekIsV0FBVyxhQUFYQSxXQUFXLHVCQUFYQSxXQUFXLENBQUV2ekIsS0FBTTtNQUMxQm0wQixXQUFXLEVBQUVaLFdBQVcsYUFBWEEsV0FBVyx1QkFBWEEsV0FBVyxDQUFFWTtJQUFZLENBQ3ZDLENBQUM7RUFBQSxDQUNGLENBQUM7QUFFUCxDQUFDO0FBRURuTixZQUFZLENBQUMxYyxTQUFTLEdBQUc7RUFDdkJ2TixNQUFNLEVBQUVxTCwwREFBZ0I7RUFDeEJwRSxRQUFRLEVBQUVvRSwwREFBZ0I7RUFDMUI1RyxPQUFPLEVBQUU0RywwREFBZ0I7RUFDekJ1aEIsT0FBTyxFQUFFdmhCLDBEQUFnQjtFQUN6QmdCLE9BQU8sRUFBRWhCLHdEQUFjO0VBQ3ZCOEUsSUFBSSxFQUFFOUUsd0RBQWNrRTtBQUN0QixDQUFDO0FBRUQsaUVBQWUwYSxZQUFZOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ2pPRDtBQUNTO0FBQ1k7QUFDRztBQUNjO0FBRWpCO0FBQUE7QUFFL0MsTUFBTUYsWUFBWSxHQUFHcG5CLElBQUEsSUFBZ0I7RUFBQSxJQUFBKzRCLHFCQUFBO0VBQUEsSUFBZjtJQUFFbDJCO0VBQU8sQ0FBQyxHQUFBN0MsSUFBQTtFQUM5QixNQUFNO0lBQUVMO0VBQUUsQ0FBQyxHQUFHZ0osNkRBQWMsQ0FBQyxDQUFDO0VBQzlCLE1BQU1xd0IsUUFBUSxHQUFHbjJCLE1BQU0sQ0FBQzZpQixTQUFTO0VBQ2pDLE1BQU11VCxjQUFjLElBQUFGLHFCQUFBLEdBQUdsMkIsTUFBTSxDQUFDaUIsZUFBZSxjQUFBaTFCLHFCQUFBLHVCQUF0QkEscUJBQUEsQ0FBd0I5UixJQUFJLENBQ2hEcmpCLENBQUMsSUFBS0EsQ0FBQyxDQUFDbkUsTUFBTSxLQUFLLFdBQ3RCLENBQUM7RUFDRCxNQUFNO0lBQUVxb0IsWUFBWTtJQUFFckMsWUFBWTtJQUFFb1M7RUFBVyxDQUFDLEdBQUd0USx5RUFBZ0IsQ0FBQzFrQixNQUFNLENBQUM7RUFFM0Usb0JBQ0V3RyxzREFBQSxDQUFDeXZCLG9EQUFTO0lBQUN4c0IsU0FBUyxFQUFFbkIsc0VBQTZCO0lBQUFmLFFBQUEsRUFDaEQ0dUIsUUFBUSxnQkFDUHp2Qix1REFBQSxDQUFBbVksdURBQUE7TUFBQXRYLFFBQUEsR0FDRyxDQUFDLENBQUM2dUIsY0FBYyxpQkFDZjV2QixzREFBQSxDQUFDaVEsaURBQU07UUFDTG1LLElBQUksRUFBQyxRQUFRO1FBQ2IsY0FBVyxnQ0FBZ0M7UUFDM0NuWCxTQUFTLEtBQUEvTixNQUFBLENBQUs0TSwyREFBaUIsT0FBQTVNLE1BQUEsQ0FBSTRNLHNFQUE0QixDQUFHO1FBQUFmLFFBQUEsRUFFakV6SyxDQUFDLENBQUMsdUNBQXVDO01BQUMsQ0FDckMsQ0FDVCxFQUNBbW9CLFlBQVksaUJBQ1h6ZSxzREFBQSxDQUFDaVEsaURBQU07UUFDTG1LLElBQUksRUFBQyxRQUFRO1FBQ2IsY0FBVywwQkFBMEI7UUFDckNuWCxTQUFTLEtBQUEvTixNQUFBLENBQUs0TSwyREFBaUIsT0FBQTVNLE1BQUEsQ0FBSTRNLGlFQUF1QixDQUFHO1FBQUFmLFFBQUEsRUFFNUR6SyxDQUFDLENBQUMsaUNBQWlDO01BQUMsQ0FDL0IsQ0FDVCxFQUNBOGxCLFlBQVksaUJBQ1hwYyxzREFBQSxDQUFDaVEsaURBQU07UUFDTG1LLElBQUksRUFBQyxRQUFRO1FBQ2IsY0FBVywwQkFBMEI7UUFDckNuWCxTQUFTLEtBQUEvTixNQUFBLENBQUs0TSwyREFBaUIsT0FBQTVNLE1BQUEsQ0FBSTRNLGlFQUF1QixDQUFHO1FBQUFmLFFBQUEsRUFFNUR6SyxDQUFDLENBQUMsaUNBQWlDO01BQUMsQ0FDL0IsQ0FDVCxFQUNBazRCLFVBQVUsaUJBQ1R4dUIsc0RBQUEsQ0FBQ2lRLGlEQUFNO1FBQ0xtSyxJQUFJLEVBQUMsUUFBUTtRQUNiLGNBQVcsd0JBQXdCO1FBQ25DblgsU0FBUyxLQUFBL04sTUFBQSxDQUFLNE0sMkRBQWlCLE9BQUE1TSxNQUFBLENBQUk0TSwrREFBcUIsQ0FBRztRQUFBZixRQUFBLEVBRTFEekssQ0FBQyxDQUFDLCtCQUErQjtNQUFDLENBQzdCLENBQ1Q7SUFBQSxDQUNELENBQUMsZ0JBRUgwSixzREFBQSxDQUFDaVEsaURBQU07TUFDTG1LLElBQUksRUFBQyxRQUFRO01BQ2IsY0FBVyx5QkFBeUI7TUFDcENuWCxTQUFTLEtBQUEvTixNQUFBLENBQUs0TSwyREFBaUIsT0FBQTVNLE1BQUEsQ0FBSTRNLGdFQUFzQixDQUFHO01BQUFmLFFBQUEsRUFFM0R6SyxDQUFDLENBQUMsZ0NBQWdDO0lBQUMsQ0FDOUI7RUFDVCxDQUNRLENBQUM7QUFFaEIsQ0FBQztBQUVEeW5CLFlBQVksQ0FBQ3hjLFNBQVMsR0FBRztFQUN2Qi9ILE1BQU0sRUFBRTZGLHVEQUFlLENBQUM7SUFDdEJqQyxLQUFLLEVBQUVpQyx1REFBZSxDQUFDO01BQ3JCakosTUFBTSxFQUFFaUosMERBQWdCaUU7SUFDMUIsQ0FBQyxDQUFDO0lBQ0Zzc0IsY0FBYyxFQUFFdndCLHlEQUFpQixDQUFDOUksTUFBTTtFQUMxQyxDQUFDO0FBQ0gsQ0FBQztBQUVELGlFQUFld25CLFlBQVk7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDL0V3QjtBQUNKO0FBQ1E7QUFRaEM7QUFLUTtBQUNnQjtBQUNFO0FBQ0s7QUFLL0I7QUFBQTtBQUV2QixNQUFNcVMsVUFBVSxHQUFHejVCLElBQUEsSUFBZTtFQUFBLElBQWQ7SUFBRU07RUFBTSxDQUFDLEdBQUFOLElBQUE7RUFDM0IsTUFBTTtJQUFFTDtFQUFFLENBQUMsR0FBR2dKLDZEQUFjLENBQUMsQ0FBQztFQUM5QixNQUFNLENBQUMrd0IsR0FBRyxFQUFFQyxNQUFNLENBQUMsR0FBRzV0QiwrQ0FBUSxDQUFDMVIsa0RBQUksQ0FBQ3VFLE1BQU0sQ0FBQztFQUMzQyxNQUFNLENBQUNnN0Isa0JBQWtCLEVBQUVDLHFCQUFxQixDQUFDLEdBQUc5dEIsK0NBQVEsQ0FBQyxLQUFLLENBQUM7RUFDbkUsTUFBTS9PLFFBQVEsR0FBR21xQix3REFBVyxDQUFDLENBQUM7RUFDOUIsTUFBTTtJQUNKbnBCLE1BQU07SUFDTkUsSUFBSTtJQUNKNDdCLGVBQWUsRUFBRUMsYUFBYTtJQUM5QjdOLGVBQWUsRUFBRThOLGFBQWE7SUFDOUIxVixXQUFXO0lBQ1h4RDtFQUNGLENBQUMsR0FBRzdKLHdEQUFXLENBQUVVLEtBQUssSUFBS0EsS0FBSyxDQUFDNVcsV0FBVyxDQUFDO0VBQzdDLE1BQU1vTixLQUFLLEdBQUc0ZCx1REFBUSxDQUFDLENBQUM7RUFDeEIsTUFBTW5CLFFBQVEsR0FBR29CLDREQUFhLENBQUM3ZCxLQUFLLENBQUNnZSxXQUFXLENBQUNDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztFQUU1RCxNQUFNNk4sZUFBZSxHQUFHQSxDQUFDbFAsQ0FBQyxFQUFFbVAsTUFBTSxLQUFLO0lBQ3JDUCxNQUFNLENBQUNPLE1BQU0sQ0FBQztFQUNoQixDQUFDO0VBRUQsTUFBTUMsb0JBQW9CLEdBQUl6NUIsSUFBSSxJQUNoQzFELFFBQVEsQ0FDTmdGLHdEQUFjLENBQUM7SUFBRXRCLElBQUk7SUFBRUMsT0FBTyxFQUFFM0csb0VBQXNCO0lBQUVnRSxNQUFNO0lBQUVFO0VBQUssQ0FBQyxDQUN4RSxDQUFDO0VBRUgsTUFBTWs4QixpQkFBaUIsR0FBSTE1QixJQUFJLElBQzdCMUQsUUFBUSxDQUNOd0QsdURBQWEsQ0FBQztJQUNaRSxJQUFJO0lBQ0pDLE9BQU8sRUFBRW81QixhQUFhO0lBQ3RCLzdCLE1BQU07SUFDTkU7RUFDRixDQUFDLENBQ0gsQ0FBQyxDQUFDd0QsSUFBSSxDQUFFekMsT0FBTyxJQUFLO0lBQ2xCLE1BQU07TUFBRStGO0lBQUssQ0FBQyxHQUFHL0YsT0FBTyxDQUFDTSxRQUFRO0lBQ2pDLE1BQU04NkIsb0JBQW9CLEdBQUdyMUIsSUFBSSxDQUFDdkIsR0FBRyxDQUFFdEMsS0FBSyxJQUMxQ25FLFFBQVEsQ0FDTnlGLDJEQUFpQixDQUFDO01BQ2hCWCxPQUFPLEVBQUVYLEtBQUssQ0FBQ00sRUFBRTtNQUNqQjY0QixZQUFZLEVBQUVuZ0Msd0RBQVU7TUFDeEJ3RyxPQUFPLEVBQUVxNUIsYUFBYTtNQUN0Qmg4QixNQUFNO01BQ05FO0lBQ0YsQ0FBQyxDQUNILENBQ0YsQ0FBQztJQUVELE9BQU9rRSxPQUFPLENBQUNzQixHQUFHLENBQUMyMkIsb0JBQW9CLENBQUM7RUFDMUMsQ0FBQyxDQUFDO0VBRUp6aEIsZ0RBQVMsQ0FBQyxNQUFNO0lBQ2QsTUFBTTJoQixhQUFhLEdBQUcsQ0FDcEJKLG9CQUFvQixDQUFDaGdDLHdEQUFVLENBQUMsRUFDaENpZ0MsaUJBQWlCLENBQUNqZ0Msd0RBQVUsQ0FBQyxDQUM5QjtJQUNEaUksT0FBTyxDQUFDc0IsR0FBRyxDQUFDNjJCLGFBQWEsQ0FBQyxDQUFDNzRCLElBQUksQ0FBQyxNQUFNbTRCLHFCQUFxQixDQUFDLElBQUksQ0FBQyxDQUFDO0VBQ3BFLENBQUMsRUFBRSxDQUFDNzdCLE1BQU0sRUFBRUUsSUFBSSxDQUFDLENBQUM7RUFFbEIwYSxnREFBUyxDQUFDLE1BQU07SUFDZCxJQUFJZ2hCLGtCQUFrQixFQUFFO01BQ3RCLElBQUksQ0FBQTlZLFlBQVksYUFBWkEsWUFBWSx1QkFBWkEsWUFBWSxDQUFFcGlCLE1BQU0sTUFBSyxDQUFDLElBQUksQ0FBQTRsQixXQUFXLGFBQVhBLFdBQVcsdUJBQVhBLFdBQVcsQ0FBRTVsQixNQUFNLElBQUcsQ0FBQyxFQUFFO1FBQ3pEaTdCLE1BQU0sQ0FBQ3QvQixrREFBSSxDQUFDbUksT0FBTyxDQUFDO01BQ3RCO0lBQ0Y7RUFDRixDQUFDLEVBQUUsQ0FBQ28zQixrQkFBa0IsQ0FBQyxDQUFDO0VBRXhCLG9CQUNFcndCLHVEQUFBLENBQUNYLDhDQUFHO0lBQUMwRCxTQUFTLEVBQUVuQiwyREFBa0I7SUFBQWYsUUFBQSxnQkFDaENiLHVEQUFBLENBQUM0Z0IsK0NBQUk7TUFDSGpxQixLQUFLLEVBQUV3NUIsR0FBSTtNQUNYbHBCLFFBQVEsRUFBRXlwQixlQUFnQjtNQUMxQmplLE9BQU8sRUFBRTRPLFFBQVEsR0FBRyxXQUFXLEdBQUcsVUFBVztNQUFBeGdCLFFBQUEsZ0JBRTdDZixzREFBQSxDQUFDK2dCLDhDQUFHO1FBQUM5WSxLQUFLLEVBQUUzUixDQUFDLENBQUMsY0FBYyxDQUFFO1FBQUNPLEtBQUssRUFBRTdGLGtEQUFJLENBQUN1RTtNQUFPLENBQUUsQ0FBQyxlQUNyRHlLLHNEQUFBLENBQUMrZ0IsOENBQUc7UUFBQzlZLEtBQUssRUFBRTNSLENBQUMsQ0FBQyx1QkFBdUIsQ0FBRTtRQUFDTyxLQUFLLEVBQUU3RixrREFBSSxDQUFDbUk7TUFBUSxDQUFFLENBQUM7SUFBQSxDQUMzRCxDQUFDLGVBQ1A2RyxzREFBQSxDQUFDbVEsa0RBQU8sSUFBRSxDQUFDLGVBQ1huUSxzREFBQSxDQUFDVCw4Q0FBRztNQUFDNEosRUFBRSxFQUFFO1FBQUUrSSxFQUFFLEVBQUUsQ0FBQztRQUFFN0MsRUFBRSxFQUFFO01BQUUsQ0FBRTtNQUFBdE8sUUFBQSxFQUFFOUo7SUFBSyxDQUFNLENBQUMsRUFDdkNvNUIsR0FBRyxLQUFLci9CLGtEQUFJLENBQUN1RSxNQUFNLGlCQUFJeUssc0RBQUEsQ0FBQ3VYLHdEQUFlO01BQUNDLFNBQVMsRUFBRXVaO0lBQWtCLENBQUUsQ0FBQyxFQUN4RVYsR0FBRyxLQUFLci9CLGtEQUFJLENBQUNtSSxPQUFPLGlCQUNuQjZHLHNEQUFBLENBQUNtd0IsZ0VBQVk7TUFBQzNZLFNBQVMsRUFBRXNaO0lBQXFCLENBQUUsQ0FDakQ7RUFBQSxDQUNFLENBQUM7QUFFVixDQUFDO0FBRUQsaUVBQWVWLFVBQVU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQy9HekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ21EO0FBQ0o7QUFDK0I7QUFDMUM7QUFNYjtBQUNrQjtBQUNWO0FBQzJCO0FBQ2Y7QUFFVjtBQUNjO0FBQ1I7QUFDSTtBQUFBO0FBRTNDLE1BQU1nQixhQUFhLEdBQUdBLENBQUEsS0FBTTtFQUMxQixNQUFNO0lBQUU5NkI7RUFBRSxDQUFDLEdBQUdnSiw2REFBYyxDQUFDLENBQUM7RUFDOUIsTUFBTTNMLFFBQVEsR0FBR21xQix3REFBVyxDQUFDLENBQUM7RUFDOUIsTUFBTSxDQUFDcGtCLE9BQU8sRUFBRWlLLFVBQVUsQ0FBQyxHQUFHakIsK0NBQVEsQ0FBQyxFQUFFLENBQUM7RUFDMUMsTUFBTSxDQUFDMnVCLGVBQWUsRUFBRXp0QixrQkFBa0IsQ0FBQyxHQUFHbEIsK0NBQVEsQ0FBQyxJQUFJLENBQUM7RUFDNUQsTUFBTTtJQUNKNHVCLE9BQU87SUFDUEMsUUFBUTtJQUNSNThCLE1BQU0sRUFBRTtNQUFFRix1QkFBdUIsRUFBRTRaO0lBQWE7RUFDbEQsQ0FBQyxHQUFHVCx3REFBVyxDQUFFVSxLQUFLLElBQUtBLEtBQUssQ0FBQzVXLFdBQVcsSUFBSSxDQUFDLENBQUMsRUFBRW1XLHFEQUFZLENBQUM7RUFFakUsTUFBTThDLE9BQU8sR0FBR0EsQ0FBQSxLQUFNO0lBQ3BCaGQsUUFBUSxDQUFDRSxxREFBVyxDQUFDLENBQUMsQ0FBQztFQUN6QixDQUFDO0VBRUQsTUFBTTI5QixhQUFhLEdBQUdBLENBQUEsS0FBTTtJQUMxQjc5QixRQUFRLENBQUNHLG9EQUFVLENBQUMsQ0FBQyxDQUFDO0VBQ3hCLENBQUM7RUFFRHliLGdEQUFTLENBQUMsTUFBTTtJQUNkLElBQUlnaUIsUUFBUSxFQUFFO01BQ1o1dEIsVUFBVSxDQUFDNHRCLFFBQVEsQ0FBQztNQUNwQjN0QixrQkFBa0IsQ0FBQzR0QixhQUFhLENBQUM7SUFDbkM7RUFDRixDQUFDLEVBQUUsQ0FBQ0QsUUFBUSxDQUFDLENBQUM7RUFFZCxNQUFNbmpCLFFBQVEsR0FBSXFqQixXQUFXLElBQUs7SUFDaEM5OUIsUUFBUSxDQUFDZSxzREFBWSxDQUFDKzhCLFdBQVcsQ0FBQyxDQUFDO0VBQ3JDLENBQUM7RUFFRCxNQUFNbGMsTUFBTSxHQUFJbWMsU0FBUyxJQUFLO0lBQzVCLzlCLFFBQVEsQ0FBQ2lCLG9EQUFVLENBQUM4OEIsU0FBUyxDQUFDLENBQUM7RUFDakMsQ0FBQztFQUVELG9CQUNFeHhCLHdEQUFBLENBQUNrRyxvREFBVztJQUFBckYsUUFBQSxnQkFDVmYsdURBQUEsQ0FBQ2tYLCtDQUFNO01BQUMvUyxJQUFJLEVBQUVtdEI7SUFBUSxDQUFFLENBQUMsZUFDekJ0eEIsdURBQUEsQ0FBQ2tFLHFEQUFZO01BQ1hDLElBQUksRUFBRSxDQUFDLENBQUN6SyxPQUFRO01BQ2hCMkcsT0FBTyxFQUFFQSxDQUFBLEtBQU07UUFDYnNELFVBQVUsQ0FBQyxJQUFJLENBQUM7UUFDaEIsSUFBSTB0QixlQUFlLEVBQUVBLGVBQWUsQ0FBQyxDQUFDO01BQ3hDLENBQUU7TUFDRmp0QixJQUFJLEVBQUUxSyxPQUFPLGFBQVBBLE9BQU8sdUJBQVBBLE9BQU8sQ0FBRTBLLElBQUs7TUFDcEJuTixLQUFLLEVBQUV5QyxPQUFPLGFBQVBBLE9BQU8sdUJBQVBBLE9BQU8sQ0FBRXpDO0lBQU0sQ0FDdkIsQ0FBQyxlQUNGK0ksdURBQUEsQ0FBQ2tXLGdEQUFPO01BQ045SCxRQUFRLEVBQUVBLFFBQVM7TUFDbkJtSCxNQUFNLEVBQUVBLE1BQU87TUFDZlgsUUFBUSxFQUFFeEcsUUFBUztNQUNuQnVDLE9BQU8sRUFBRUE7SUFBUSxDQUNsQixDQUFDLGVBQ0YzUSx1REFBQSxDQUFDVCw4Q0FBRztNQUFDNEosRUFBRSxFQUFFO1FBQUVtTCxPQUFPLEVBQUU7VUFBRStCLEVBQUUsRUFBRSxDQUFDO1VBQUVrTSxFQUFFLEVBQUUsQ0FBQztVQUFFWSxFQUFFLEVBQUU7UUFBRTtNQUFFLENBQUU7TUFBQXBpQixRQUFBLGVBQzVDZix1REFBQTtRQUFJaUQsU0FBUyxFQUFFbkIsa0VBQXdCO1FBQUFmLFFBQUEsRUFDcENzTixZQUFZLEdBQ1QvWCxDQUFDLENBQUMsdUJBQXVCLEVBQUU7VUFBRTNCLE1BQU0sRUFBRTBaO1FBQWEsQ0FBQyxDQUFDLEdBQ3BEL1gsQ0FBQyxDQUFDLGdCQUFnQjtNQUFDLENBQ3JCO0lBQUMsQ0FDRixDQUFDLGVBQ04wSix1REFBQSxDQUFDNkQsNkRBQW1CLENBQUMrdEIsUUFBUTtNQUFDLzZCLEtBQUssR0FBRzhNLFVBQVUsRUFBRUMsa0JBQWtCLENBQUU7TUFBQTdDLFFBQUEsZUFDcEVmLHVEQUFBLENBQUNvd0Isb0RBQVU7UUFBQ241QixLQUFLLGVBQUUrSSx1REFBQSxDQUFDd29CLHNEQUFZLElBQUU7TUFBRSxDQUFFO0lBQUMsQ0FDWCxDQUFDO0VBQUEsQ0FDcEIsQ0FBQztBQUVsQixDQUFDO0FBRUQsTUFBTTNWLGVBQWUsR0FBR2xjLElBQUE7RUFBQSxJQUFDO0lBQUVlO0VBQVksQ0FBQyxHQUFBZixJQUFBO0VBQUEsT0FBTTtJQUM1QzlCLElBQUksRUFBRTZDLFdBQVcsQ0FBQzdDLElBQUk7SUFDdEJGLE1BQU0sRUFBRStDLFdBQVcsQ0FBQy9DO0VBQ3RCLENBQUM7QUFBQSxDQUFDO0FBRUYsaUVBQWUwYixvREFBTyxDQUFDd0MsZUFBZSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUN1ZSxhQUFhLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUN2R3hCO0FBQ3FCO0FBQ0c7QUFFMUQsTUFBTTdHLFlBQVksR0FBR0EsQ0FBQ3R2QixRQUFRLEVBQUV4QyxPQUFPLEVBQUVtb0IsT0FBTyxFQUFFaVIsR0FBRyxLQUFLO0VBQ3hELE1BQU1sK0IsUUFBUSxHQUFHbXFCLHdEQUFXLENBQUMsQ0FBQztFQUU5QnZPLGdEQUFTLENBQUMsTUFBTTtJQUNkLElBQUlzaUIsR0FBRyxFQUFFO01BQ1AsSUFBSTUyQixRQUFRLElBQUl4QyxPQUFPLEVBQUU7UUFDdkI5RSxRQUFRLENBQUNxSCxtREFBUyxDQUFDQyxRQUFRLEVBQUV4QyxPQUFPLENBQUMsQ0FBQztNQUN4QztNQUVBLElBQUltb0IsT0FBTyxFQUFFO1FBQ1hqdEIsUUFBUSxDQUFDaUgsMkRBQWlCLENBQUNnbUIsT0FBTyxDQUFDLENBQUM7TUFDdEM7SUFDRjtFQUNGLENBQUMsRUFBRSxDQUFDM2xCLFFBQVEsRUFBRXhDLE9BQU8sRUFBRW1vQixPQUFPLEVBQUVpUixHQUFHLENBQUMsQ0FBQztFQUVyQyxNQUFNO0lBQUU3K0IsY0FBYztJQUFFOCtCLGFBQWEsRUFBRXQ0QjtFQUFPLENBQUMsR0FBR29VLHdEQUFXLENBQzFEVSxLQUFLLElBQUtBLEtBQUssQ0FBQzVXLFdBQ25CLENBQUM7RUFFRCxPQUFPO0lBQUU4QixNQUFNO0lBQUV4RztFQUFlLENBQUM7QUFDbkMsQ0FBQztBQUVELGlFQUFldTNCLFlBQVk7Ozs7Ozs7Ozs7Ozs7Ozs7QUMxQk87O0FBRWxDO0FBQ0EsU0FBU3dILGNBQWNBLENBQUN2ZixTQUFTLEVBQUV3ZixlQUFlLEVBQUVDLFFBQVEsRUFBRTtFQUM1RCxNQUFNQyxjQUFjLEdBQUcxZixTQUFTLENBQUMyZixTQUFTO0VBQzFDLE1BQU1DLFFBQVEsR0FBR0osZUFBZSxHQUFHRSxjQUFjO0VBQ2pELElBQUlHLFNBQVMsR0FBRyxJQUFJO0VBRXBCLFNBQVNDLGFBQWFBLENBQUNDLFNBQVMsRUFBRTtJQUNoQyxJQUFJLENBQUNGLFNBQVMsRUFBRUEsU0FBUyxHQUFHRSxTQUFTO0lBQ3JDLE1BQU1DLE9BQU8sR0FBR0QsU0FBUyxHQUFHRixTQUFTOztJQUVyQztJQUNBLE1BQU1JLFFBQVEsR0FBR0MsSUFBSSxDQUFDQyxHQUFHLENBQUNILE9BQU8sR0FBR1AsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUNoRCxNQUFNVyxhQUFhO0lBQ2pCO0lBQ0FILFFBQVEsR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHQSxRQUFRLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHQSxRQUFRLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDO0lBRXZFamdCLFNBQVMsQ0FBQzJmLFNBQVMsR0FBR0QsY0FBYyxHQUFHRSxRQUFRLEdBQUdRLGFBQWE7SUFFL0QsSUFBSUosT0FBTyxHQUFHUCxRQUFRLEVBQUU7TUFDdEJZLHFCQUFxQixDQUFDUCxhQUFhLENBQUM7SUFDdEM7RUFDRjtFQUVBTyxxQkFBcUIsQ0FBQ1AsYUFBYSxDQUFDO0FBQ3RDO0FBRUEsTUFBTTN5QixnQkFBZ0IsR0FBR0EsQ0FBQ1csTUFBTSxFQUFFd3lCLFdBQVcsS0FBSztFQUNoRCxNQUFNO0lBQUVyOEIsTUFBTTtJQUFFczhCLE9BQU87SUFBRXp4QjtFQUFhLENBQUMsR0FBR2hCLE1BQU07RUFDaEQsTUFBTTB5QixVQUFVLEdBQUd6OEIsTUFBTSxDQUFDMEIsSUFBSSxDQUFDeEIsTUFBTSxDQUFDO0VBQ3RDLE1BQU13OEIsVUFBVSxHQUFHRCxVQUFVLENBQUMzOUIsTUFBTTtFQUVwQ2thLGdEQUFTLENBQUMsTUFBTTtJQUNkLElBQUl3akIsT0FBTyxJQUFJRSxVQUFVLEtBQUssQ0FBQyxFQUFFOztJQUVqQztJQUNBLE1BQU1DLGNBQWMsR0FBR0YsVUFBVSxDQUM5QnpGLE1BQU0sQ0FBQyxDQUFDNEYsTUFBTSxFQUFFOXJCLEtBQUssS0FBSztNQUN6QixNQUFNK3JCLE9BQU8sR0FBRzEwQixRQUFRLENBQUMyMEIsYUFBYSxXQUFBbitCLE1BQUEsQ0FBV21TLEtBQUssT0FBSSxDQUFDO01BQzNELElBQUksQ0FBQytyQixPQUFPLEVBQUUsT0FBT0QsTUFBTTtNQUUzQixNQUFNRyxNQUFNLEdBQUdGLE9BQU8sQ0FBQ0cscUJBQXFCLENBQUMsQ0FBQztNQUM5Q0osTUFBTSxDQUFDbCtCLElBQUksQ0FBQztRQUFFbStCLE9BQU87UUFBRS9yQixLQUFLO1FBQUVrTixHQUFHLEVBQUUrZSxNQUFNLENBQUMvZTtNQUFJLENBQUMsQ0FBQztNQUVoRCxPQUFPNGUsTUFBTTtJQUNmLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FDTHQrQixJQUFJLENBQUMsQ0FBQzIrQixDQUFDLEVBQUVDLENBQUMsS0FBS0QsQ0FBQyxDQUFDamYsR0FBRyxHQUFHa2YsQ0FBQyxDQUFDbGYsR0FBRyxDQUFDO0lBRWhDLElBQUkyZSxjQUFjLENBQUM3OUIsTUFBTSxLQUFLLENBQUMsRUFBRTtJQUVqQyxNQUFNbWQsU0FBUyxHQUFHOVQsUUFBUSxDQUN2QmcxQixjQUFjLENBQUNaLFdBQVcsQ0FBQyxDQUMzQk8sYUFBYSxDQUFDLGtCQUFrQixDQUFDO0lBQ3BDLE1BQU1ycUIsTUFBTSxHQUFHa3FCLGNBQWMsQ0FBQyxDQUFDLENBQUM7SUFFaEMsSUFBSTFnQixTQUFTLGFBQVRBLFNBQVMsZUFBVEEsU0FBUyxDQUFFbEIsUUFBUSxDQUFDdEksTUFBTSxDQUFDb3FCLE9BQU8sQ0FBQyxFQUFFO01BQ3ZDLE1BQU1PLGFBQWEsR0FBR25oQixTQUFTLENBQUMrZ0IscUJBQXFCLENBQUMsQ0FBQzs7TUFFdkQ7TUFDQSxNQUFNSyxVQUFVLEdBQUcsR0FBRztNQUN0QixNQUFNQyxpQkFBaUIsR0FBRyxHQUFHO01BQzdCLE1BQU0xQixTQUFTLEdBQ2JucEIsTUFBTSxDQUFDdUwsR0FBRyxHQUFHb2YsYUFBYSxDQUFDcGYsR0FBRyxHQUFHL0IsU0FBUyxDQUFDMmYsU0FBUyxHQUFHeUIsVUFBVTs7TUFFbkU7TUFDQTdCLGNBQWMsQ0FBQ3ZmLFNBQVMsRUFBRTJmLFNBQVMsRUFBRTBCLGlCQUFpQixDQUFDLENBQUMsQ0FBQztJQUMzRDtFQUNGLENBQUMsRUFBRSxDQUFDdnlCLFlBQVksQ0FBQyxDQUFDO0FBQ3BCLENBQUM7QUFFRCxpRUFBZTNCLGdCQUFnQjs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3ZFMkI7QUFFbkQsTUFBTW8wQixlQUFlLEdBQUcsVUFBVTtBQUNsQyxNQUFNQyxpQkFBaUIsR0FBRyxZQUFZO0FBQ3RDLE1BQU1DLGdCQUFnQixHQUFHLFdBQVc7QUFDcEMsTUFBTUMsaUJBQWlCLEdBQUcsWUFBWTtBQUV0QyxNQUFNaFcsZ0JBQWdCLEdBQUkxa0IsTUFBTSxJQUFLO0VBQUEsSUFBQXVsQixtQkFBQSxFQUFBb1Ysa0JBQUEsRUFBQUMsb0JBQUEsRUFBQUMsbUJBQUE7RUFDMUMsTUFBTUMsU0FBUyxHQUFHQSxDQUFBLEtBQU07SUFBQSxJQUFBclksYUFBQSxFQUFBQyxjQUFBO0lBQ3RCLElBQUksQ0FBQzFpQixNQUFNLENBQUM2aUIsU0FBUyxFQUFFLE9BQU80WCxnQkFBZ0I7SUFDOUMsSUFBSXo2QixNQUFNLENBQUM0MEIsUUFBUSxLQUFLLENBQUMsRUFBRSxPQUFPOEYsaUJBQWlCO0lBQ25ELElBQUksR0FBQWpZLGFBQUEsR0FBQ3ppQixNQUFNLENBQUM0RCxLQUFLLGNBQUE2ZSxhQUFBLGVBQVpBLGFBQUEsQ0FBY3pmLFVBQVUsS0FBSSxHQUFBMGYsY0FBQSxHQUFDMWlCLE1BQU0sQ0FBQzRELEtBQUssY0FBQThlLGNBQUEsZUFBWkEsY0FBQSxDQUFjemYsU0FBUyxHQUN2RCxPQUFPdTNCLGlCQUFpQjtJQUMxQixPQUFPeDZCLE1BQU0sQ0FBQzRELEtBQUssQ0FBQ2hILE1BQU07RUFDNUIsQ0FBQztFQUVELElBQUksQ0FBQ29ELE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztFQUV0QixNQUFNcEQsTUFBTSxHQUFHaytCLFNBQVMsQ0FBQyxDQUFDO0VBQzFCLE1BQU0zRSxRQUFRLEdBQUduMkIsTUFBTSxDQUFDNmlCLFNBQVMsSUFBSWptQixNQUFNLEtBQUs2OUIsZ0JBQWdCO0VBQ2hFLE1BQU0vWixZQUFZLEdBQUc0WixzRUFBa0IsQ0FBQ3Q2QixNQUFNLENBQUM7RUFDL0MsTUFBTXl3QixjQUFjLEdBQ2xCLENBQUF6d0IsTUFBTSxhQUFOQSxNQUFNLGdCQUFBdWxCLG1CQUFBLEdBQU52bEIsTUFBTSxDQUFFd2YsV0FBVyxjQUFBK0YsbUJBQUEsdUJBQW5CQSxtQkFBQSxDQUFxQndWLGtCQUFrQixNQUN2Qy82QixNQUFNLGFBQU5BLE1BQU0sZ0JBQUEyNkIsa0JBQUEsR0FBTjM2QixNQUFNLENBQUVnN0IsVUFBVSxjQUFBTCxrQkFBQSx1QkFBbEJBLGtCQUFBLENBQW9CSSxrQkFBa0I7RUFDeEMsTUFBTS9GLFVBQVUsR0FBR3A0QixNQUFNLEtBQUsyOUIsZUFBZTtFQUM3QyxNQUFNM1gsWUFBWSxHQUFHaG1CLE1BQU0sS0FBSzg5QixpQkFBaUI7RUFDakQsTUFBTXpWLFlBQVksR0FBR3JvQixNQUFNLEtBQUs0OUIsaUJBQWlCO0VBQ2pELE1BQU0vVSxXQUFXLEdBQ2YsQ0FBQzdDLFlBQVksTUFBQWdZLG9CQUFBLEdBQ2I1NkIsTUFBTSxDQUFDd2YsV0FBVyxjQUFBb2Isb0JBQUEsdUJBQWxCQSxvQkFBQSxDQUFvQkssa0JBQWtCLE1BQ3JDLENBQUNqN0IsTUFBTSxDQUFDZzdCLFVBQVUsTUFBQUgsbUJBQUEsR0FBSTc2QixNQUFNLENBQUNnN0IsVUFBVSxjQUFBSCxtQkFBQSx1QkFBakJBLG1CQUFBLENBQW1CSSxrQkFBa0IsRUFBQztFQUUvRCxPQUFPO0lBQ0xyK0IsTUFBTTtJQUNObzRCLFVBQVU7SUFDVnBTLFlBQVk7SUFDWnFDLFlBQVk7SUFDWmtSLFFBQVE7SUFDUnpWLFlBQVk7SUFDWitQLGNBQWM7SUFDZGhMO0VBQ0YsQ0FBQztBQUNILENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUMxQzBCO0FBQ3NCO0FBQ2U7QUFDN0I7QUFDQTs7QUFFbkM7QUFDQTtBQUNBO0FBQ0E7O0FBRUF6dUIsa0RBT00sQ0FBQ21rQyx5RUFBZ0I7QUFDckI7QUFBQSxDQUNDRyxHQUFHLENBQUNKLDJEQUFnQjtBQUNyQjtBQUNBO0FBQUEsQ0FDQ0ssSUFBSSxDQUFDO0VBQ0pDLFdBQVcsRUFBRSxJQUFJO0VBQ2pCQyxLQUFLLEVBQUUsS0FBSztFQUNaQyxTQUFTLEVBQUU7SUFDVE4sRUFBRSxFQUFFO01BQUVPLFdBQVcsRUFBRVAsNkNBQUVBO0lBQUMsQ0FBQztJQUN2QkMsRUFBRSxFQUFFO01BQUVNLFdBQVcsRUFBRU4sNkNBQUVBO0lBQUM7RUFDeEIsQ0FBQztFQUNETyxhQUFhLEVBQUU7SUFDYkMsV0FBVyxFQUFFLEtBQUssQ0FBQztFQUNyQjtBQUNGLENBQUMsQ0FBQztBQUVKLGlFQUFlN2tDLGdEQUFJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNuQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUMrRTtBQUt4QjtBQTRCcEM7QUFDa0M7QUFDVjtBQUNrQjtBQUU3RCxNQUFNb2xDLG9CQUFvQixHQUFHO0VBQzNCLENBQUN6aEMsOERBQXdCLEdBQUcsRUFBRTtFQUM5QixDQUFDQyw0REFBc0IsR0FBRyxFQUFFO0VBQzVCLENBQUNJLDBEQUFvQixHQUFHLEVBQUU7RUFDMUIsQ0FBQ0YsNkRBQXVCLEdBQUcsRUFBRTtFQUM3QixDQUFDRCxnRUFBMEIsR0FBRyxFQUFFO0VBQ2hDLENBQUNFLDBEQUFvQixHQUFHLEVBQUU7RUFDMUIsQ0FBQ0UsNkRBQXVCLEdBQUcsRUFBRTtFQUM3QixDQUFDUCxxREFBZSxHQUFHO0FBQ3JCLENBQUM7QUFFRCxNQUFNMmhDLGFBQWEsR0FBRztFQUNwQjdoQyxNQUFNLEVBQUUsSUFBSTtFQUNaQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0VBQ1I2aEMsYUFBYSxFQUFFLEtBQUs7RUFDcEJyZSxZQUFZLEVBQUUsRUFBRTtFQUNoQndELFdBQVcsRUFBRSxFQUFFO0VBQ2Zqb0IsY0FBYyxFQUFFLEVBQUU7RUFDbEI4K0IsYUFBYSxFQUFFLElBQUk7RUFDbkJyN0IsTUFBTSxFQUFFLENBQUMsQ0FBQztFQUNWNjZCLE9BQU8sRUFBRSxLQUFLO0VBQ2R5RSxXQUFXLEVBQUUva0Msa0RBQUksQ0FBQ3VFLE1BQU07RUFDeEJWLElBQUksRUFBRSxDQUFDLENBQUM7RUFDUkYsTUFBTSxFQUFFaWhDLG9CQUFvQjtFQUM1QmxlLG1CQUFtQixFQUFFLENBQUM7RUFDdEJDLGdCQUFnQixFQUFFLENBQUM7RUFDbkI4WSxlQUFlLEVBQUUsQ0FBQztFQUNsQnVGLFlBQVksRUFBRSxDQUFDO0VBQ2ZDLG1CQUFtQixFQUFFLENBQUM7RUFDdEJDLGdCQUFnQixFQUFFLENBQUM7RUFDbkJyVCxlQUFlLEVBQUUsQ0FBQztFQUNsQnNULFlBQVksRUFBRSxDQUFDO0VBQ2ZDLGtCQUFrQixFQUFFLENBQUM7RUFDckJsYix5QkFBeUIsRUFBRSxDQUFDO0VBQzVCQyxzQkFBc0IsRUFBRSxDQUFDO0VBQ3pCb1csUUFBUSxFQUFFO0FBQ1osQ0FBQztBQUVELE1BQU04RSxhQUFhLEdBQUcsU0FBQUEsQ0FBQSxFQUFtRDtFQUFBLElBQWxEL25CLEtBQUssR0FBQWhSLFNBQUEsQ0FBQWpJLE1BQUEsUUFBQWlJLFNBQUEsUUFBQUMsU0FBQSxHQUFBRCxTQUFBLE1BQUd1NEIsYUFBYTtFQUFBLElBQUU7SUFBRWpxQixJQUFJO0lBQUVoVztFQUFRLENBQUMsR0FBQTBILFNBQUEsQ0FBQWpJLE1BQUEsUUFBQWlJLFNBQUEsUUFBQUMsU0FBQSxHQUFBRCxTQUFBLE1BQUcsQ0FBQyxDQUFDO0VBQ2xFLFFBQVFzTyxJQUFJO0lBQ1YsS0FBSzBwQix5RkFBVztJQUNoQixLQUFLcmtDLGlEQUFXO01BQ2QsT0FBTzRrQyxhQUFhO0lBQ3RCLEtBQUtOLHdGQUFhO01BQ2hCLE9BQUFoNkIsYUFBQSxDQUFBQSxhQUFBLEtBQVkrUyxLQUFLO1FBQUVnakIsT0FBTyxFQUFFO01BQUk7SUFDbEMsS0FBS2tFLHVGQUFZO0lBQ2pCLEtBQUtDLHdGQUFhO01BQ2hCLE9BQUFsNkIsYUFBQSxDQUFBQSxhQUFBLEtBQVkrUyxLQUFLO1FBQUVnakIsT0FBTyxFQUFFO01BQUs7SUFDbkMsS0FBS25nQyxxREFBZTtNQUNsQixPQUFBb0ssYUFBQSxDQUFBQSxhQUFBLEtBQVkrUyxLQUFLO1FBQUVpakIsUUFBUSxFQUFFO01BQUk7SUFDbkMsS0FBS3JnQyxrREFBWTtNQUNmLE9BQUFxSyxhQUFBLENBQUFBLGFBQUEsS0FDSytTLEtBQUs7UUFDUjNaLE1BQU0sRUFBRWloQyxvQkFBb0I7UUFDNUIvZ0MsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNSNmlCLG1CQUFtQixFQUFFLENBQUM7UUFDdEJDLGdCQUFnQixFQUFFO01BQUM7SUFFdkIsS0FBS3ZtQiwrQ0FBUztNQUNaLE9BQUFtSyxhQUFBLENBQUFBLGFBQUEsS0FBWStTLEtBQUssR0FBSzFZLE9BQU87SUFDL0IsS0FBS3ZFLG1EQUFhO01BQUU7UUFDbEIsTUFBTTtVQUFFNEYsS0FBSztVQUFFQyxJQUFJLEVBQUVrTjtRQUFLLENBQUMsR0FBR3hPLE9BQU87UUFDckMsT0FBQTJGLGFBQUEsQ0FBQUEsYUFBQSxLQUFZK1MsS0FBSztVQUFFaWpCLFFBQVEsRUFBRTtZQUFFdDZCLEtBQUs7WUFBRW1OO1VBQUs7UUFBQztNQUM5QztJQUNBLEtBQUsvUSw4Q0FBUTtNQUNYLE9BQUFrSSxhQUFBLENBQUFBLGFBQUEsS0FBWStTLEtBQUs7UUFBRXJhLElBQUksRUFBRTJCO01BQU87SUFDbEMsS0FBS3RFLG1EQUFhO01BQUU7UUFDbEIsT0FBQWlLLGFBQUEsQ0FBQUEsYUFBQSxLQUFZK1MsS0FBSztVQUFFM1osTUFBTSxFQUFBNEcsYUFBQSxDQUFBQSxhQUFBLEtBQU8rUyxLQUFLLENBQUMzWixNQUFNLEdBQUtpQixPQUFPO1FBQUU7TUFDNUQ7SUFDQSxLQUFLckUsaURBQVc7TUFBRTtRQUNoQixPQUFBZ0ssYUFBQSxDQUFBQSxhQUFBLEtBQVkrUyxLQUFLO1VBQUV6WixJQUFJLEVBQUEwRyxhQUFBLEtBQU8zRixPQUFPO1FBQUU7TUFDekM7SUFDQSxLQUFLcEUscURBQWU7TUFBRTtRQUNwQixNQUFNO1VBQUVtSyxJQUFJO1VBQUUyNkIsS0FBSztVQUFFckYsWUFBWTtVQUFFc0Y7UUFBVSxDQUFDLEdBQUczZ0MsT0FBTyxDQUFDTSxRQUFRO1FBRWpFLElBQUl3L0Isd0RBQWdCLENBQUN6RSxZQUFZLEVBQUUzaUIsS0FBSyxDQUFDbUosWUFBWSxFQUFFNmUsS0FBSyxDQUFDLEVBQzNELE9BQU9ob0IsS0FBSztRQUVkLE1BQU1tSixZQUFZLEdBQ2hCd1osWUFBWSxLQUFLbmdDLHdEQUFVLEdBQUc2SyxJQUFJLEdBQUcsQ0FBQyxHQUFHMlMsS0FBSyxDQUFDbUosWUFBWSxFQUFFLEdBQUc5YixJQUFJLENBQUM7UUFFdkUsT0FBQUosYUFBQSxDQUFBQSxhQUFBLEtBQ0srUyxLQUFLO1VBQ1JtSixZQUFZO1VBQ1p1ZSxZQUFZLEVBQUVNLEtBQUs7VUFDbkI1ZSxtQkFBbUIsRUFBRXVaLFlBQVk7VUFDakN0WixnQkFBZ0IsRUFBRTRlO1FBQVM7TUFFL0I7SUFDQSxLQUFLM2tDLDZEQUF1QjtNQUFFO1FBQzVCLE1BQU07VUFBRStKLElBQUk7VUFBRTI2QixLQUFLO1VBQUVyRixZQUFZO1VBQUVzRjtRQUFVLENBQUMsR0FBRzNnQyxPQUFPLENBQUNNLFFBQVE7UUFFakUsSUFBSXcvQix3REFBZ0IsQ0FBQ3pFLFlBQVksRUFBRTNpQixLQUFLLENBQUMyTSxXQUFXLEVBQUVxYixLQUFLLENBQUMsRUFDMUQsT0FBT2hvQixLQUFLO1FBRWQsTUFBTTJNLFdBQVcsR0FDZmdXLFlBQVksS0FBS25nQyx3REFBVSxHQUFHNkssSUFBSSxHQUFHLENBQUMsR0FBRzJTLEtBQUssQ0FBQzJNLFdBQVcsRUFBRSxHQUFHdGYsSUFBSSxDQUFDO1FBRXRFLE9BQUFKLGFBQUEsQ0FBQUEsYUFBQSxLQUNLK1MsS0FBSztVQUNSMk0sV0FBVztVQUNYbWIsa0JBQWtCLEVBQUVFLEtBQUs7VUFDekJwYix5QkFBeUIsRUFBRStWLFlBQVk7VUFDdkM5VixzQkFBc0IsRUFBRW9iO1FBQVM7TUFFckM7SUFDQSxLQUFLbGtDLDBEQUFvQjtNQUFFO1FBQ3pCLE1BQU07VUFBRW9sQjtRQUFhLENBQUMsR0FBR25KLEtBQUs7UUFDOUIsTUFBTTtVQUFFM1MsSUFBSTtVQUFFMjZCLEtBQUs7VUFBRXJGLFlBQVk7VUFBRXNGO1FBQVUsQ0FBQyxHQUFHM2dDLE9BQU8sQ0FBQ00sUUFBUTtRQUNqRSxNQUFNc2dDLFdBQVcsR0FBRy9lLFlBQVksQ0FBQ21HLElBQUksQ0FBRTZZLENBQUM7VUFBQSxJQUFBQyxNQUFBO1VBQUEsT0FBS0QsQ0FBQyxDQUFDcitCLEVBQUUsT0FBQXMrQixNQUFBLEdBQUsvNkIsSUFBSSxDQUFDLENBQUMsQ0FBQyxjQUFBKzZCLE1BQUEsdUJBQVBBLE1BQUEsQ0FBUy84QixRQUFRO1FBQUEsRUFBQztRQUV4RSxJQUFJKzdCLHdEQUFnQixDQUFDekUsWUFBWSxFQUFFdUYsV0FBVyxhQUFYQSxXQUFXLHVCQUFYQSxXQUFXLENBQUUxYixhQUFhLEVBQUV3YixLQUFLLENBQUMsRUFDbkUsT0FBT2hvQixLQUFLO1FBRWQsTUFBTXFvQixZQUFZLEdBQUFwN0IsYUFBQSxDQUFBQSxhQUFBLEtBQ2JpN0IsV0FBVztVQUNkMWIsYUFBYSxFQUNYbVcsWUFBWSxLQUFLbmdDLHdEQUFVLEdBQ3ZCNkssSUFBSSxHQUNKLENBQUMsR0FBRzY2QixXQUFXLENBQUMxYixhQUFhLEVBQUUsR0FBR25mLElBQUksQ0FBQztVQUM3Q3VuQixvQkFBb0IsRUFBRStOLFlBQVk7VUFDbEMyRixpQkFBaUIsRUFBRUwsU0FBUztVQUM1QjdZLGFBQWEsRUFBRTRZO1FBQUssRUFDckI7UUFDRCxPQUFBLzZCLGFBQUEsQ0FBQUEsYUFBQSxLQUNLK1MsS0FBSztVQUNSbUosWUFBWSxFQUFFQSxZQUFZLENBQUNyZCxHQUFHLENBQUV5OEIsRUFBRSxJQUNoQ0EsRUFBRSxDQUFDeitCLEVBQUUsS0FBS3UrQixZQUFZLENBQUN2K0IsRUFBRSxHQUFHdStCLFlBQVksR0FBR0UsRUFDN0M7UUFBQztNQUVMO0lBQ0EsS0FBSzVqQyxxRUFBK0I7TUFBRTtRQUNwQyxNQUFNO1VBQUV3a0I7UUFBYSxDQUFDLEdBQUduSixLQUFLO1FBQzlCLE1BQU0zVCxzQkFBc0IsR0FBRy9FLE9BQU87UUFDdEMsTUFBTWtDLEtBQUssR0FBRzJmLFlBQVksQ0FBQ21HLElBQUksQ0FDNUI2WSxDQUFDO1VBQUEsSUFBQUsscUJBQUE7VUFBQSxPQUFLTCxDQUFDLENBQUNyK0IsRUFBRSxPQUFBMCtCLHFCQUFBLEdBQUtuOEIsc0JBQXNCLENBQUMsQ0FBQyxDQUFDLGNBQUFtOEIscUJBQUEsdUJBQXpCQSxxQkFBQSxDQUEyQm45QixRQUFRO1FBQUEsQ0FDckQsQ0FBQztRQUNELE1BQU1vOUIsY0FBYyxHQUFHai9CLEtBQUssYUFBTEEsS0FBSyx1QkFBTEEsS0FBSyxDQUFFZ2pCLGFBQWEsQ0FBQzFnQixHQUFHLENBQzVDWixNQUFNLElBQ0xtQixzQkFBc0IsQ0FBQ2lqQixJQUFJLENBQUVvWixHQUFHLElBQUtBLEdBQUcsQ0FBQzUrQixFQUFFLEtBQUtvQixNQUFNLENBQUNwQixFQUFFLENBQUMsSUFBSW9CLE1BQ2xFLENBQUM7UUFDRCxNQUFNbTlCLFlBQVksR0FBQXA3QixhQUFBLENBQUFBLGFBQUEsS0FDYnpELEtBQUs7VUFDUmdqQixhQUFhLEVBQUVpYztRQUFjLEVBQzlCO1FBQ0QsT0FBQXg3QixhQUFBLENBQUFBLGFBQUEsS0FDSytTLEtBQUs7VUFDUm1KLFlBQVksRUFBRUEsWUFBWSxDQUFDcmQsR0FBRyxDQUFFeThCLEVBQUUsSUFDaENBLEVBQUUsQ0FBQ3orQixFQUFFLEtBQUt1K0IsWUFBWSxDQUFDditCLEVBQUUsR0FBR3UrQixZQUFZLEdBQUdFLEVBQzdDO1FBQUM7TUFFTDtJQUNBLEtBQUsva0Msa0RBQVk7TUFBRTtRQUNqQixPQUFBeUosYUFBQSxDQUFBQSxhQUFBLEtBQVkrUyxLQUFLO1VBQUV3akIsYUFBYSxFQUFFO1FBQUk7TUFDeEM7SUFDQSxLQUFLLy9CLG9EQUFjO01BQUU7UUFDbkIsTUFBTXlILE1BQU0sR0FBRzVELE9BQU8sQ0FBQ00sUUFBUTtRQUMvQixPQUFBcUYsYUFBQSxDQUFBQSxhQUFBLEtBQVkrUyxLQUFLO1VBQUV3akIsYUFBYSxFQUFFdDRCO1FBQU07TUFDMUM7SUFDQSxLQUFLL0csNkRBQXVCO01BQUU7UUFDNUIsTUFBTTtVQUFFa0o7UUFBSyxDQUFDLEdBQUcvRixPQUFPLENBQUNNLFFBQVE7UUFDakMsT0FBQXFGLGFBQUEsQ0FBQUEsYUFBQSxLQUFZK1MsS0FBSztVQUFFdGIsY0FBYyxFQUFFMkk7UUFBSTtNQUN6QztJQUNBLEtBQUs5SixtREFBYTtNQUFFO1FBQ2xCLE1BQU1vbEMsVUFBVSxHQUFHcmhDLE9BQU8sQ0FBQ00sUUFBUTtRQUVuQyxNQUFNZ2hDLFNBQVMsR0FBRzVvQixLQUFLLENBQUNtSixZQUFZLENBQUNyZCxHQUFHLENBQUV0QyxLQUFLLElBQUs7VUFDbEQsTUFBTXEvQixVQUFVLEdBQUd4QiwwRUFBc0IsQ0FDdkM3OUIsS0FBSyxDQUFDZ2pCLGFBQWEsRUFDbkJtYyxVQUNGLENBQUM7VUFDRCxPQUFBMTdCLGFBQUEsQ0FBQUEsYUFBQSxLQUFZekQsS0FBSztZQUFFZ2pCLGFBQWEsRUFBRXFjO1VBQVU7UUFDOUMsQ0FBQyxDQUFDO1FBRUYsTUFBTUMsY0FBYyxHQUFHekIsMEVBQXNCLENBQzNDcm5CLEtBQUssQ0FBQzJNLFdBQVcsRUFDakJnYyxVQUNGLENBQUM7UUFFRCxPQUFBMTdCLGFBQUEsQ0FBQUEsYUFBQSxLQUFZK1MsS0FBSztVQUFFbUosWUFBWSxFQUFFeWYsU0FBUztVQUFFamMsV0FBVyxFQUFFbWM7UUFBYztNQUN6RTtJQUNBLEtBQUtsbEMscURBQWU7SUFDcEIsS0FBS0QsbURBQWE7TUFBRTtRQUNsQixNQUFNZ2xDLFVBQVUsR0FBR3JoQyxPQUFPLENBQUNNLFFBQVE7UUFDbkMsTUFBTWdoQyxTQUFTLEdBQUc1b0IsS0FBSyxDQUFDbUosWUFBWSxDQUFDcmQsR0FBRyxDQUFFdEMsS0FBSyxJQUFLO1VBQ2xELE1BQU1xL0IsVUFBVSxHQUFHci9CLEtBQUssQ0FBQ2dqQixhQUFhLENBQUMxZ0IsR0FBRyxDQUFFOUQsQ0FBQyxJQUMzQ0EsQ0FBQyxDQUFDOEIsRUFBRSxLQUFLNitCLFVBQVUsQ0FBQzcrQixFQUFFLEdBQUc2K0IsVUFBVSxHQUFHM2dDLENBQ3hDLENBQUM7VUFFRCxPQUFBaUYsYUFBQSxDQUFBQSxhQUFBLEtBQVl6RCxLQUFLO1lBQUVnakIsYUFBYSxFQUFFcWM7VUFBVTtRQUM5QyxDQUFDLENBQUM7UUFFRixPQUFBNTdCLGFBQUEsQ0FBQUEsYUFBQSxLQUFZK1MsS0FBSztVQUFFd2pCLGFBQWEsRUFBRW1GLFVBQVU7VUFBRXhmLFlBQVksRUFBRXlmO1FBQVM7TUFDdkU7SUFDQTtNQUNFLE9BQU81b0IsS0FBSztFQUNoQjtBQUNGLENBQUM7QUFFRCxpRUFBZStuQixhQUFhOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3pQSTtBQUNrQjtBQVUzQjtBQUN5QjtBQUNSO0FBQ0Y7QUFFL0IsTUFBTTJCLFFBQVEsR0FBR3JoQyxJQUFBLElBTWxCO0VBQUEsSUFObUI7SUFDdkJzaEMsUUFBUTtJQUNSQyxRQUFRO0lBQ1Jsa0MsTUFBTTtJQUNOeUQsVUFBVTtJQUNWc0U7RUFDRixDQUFDLEdBQUFwRixJQUFBO0VBQ0M7RUFDQSxNQUFNd2hDLFFBQVEsR0FBR0osc0RBQWUsQ0FBQztJQUMvQnJnQyxXQUFXLEVBQUUyK0IsZ0RBQWFBO0VBQzVCLENBQUMsQ0FBQztFQUVGLE1BQU0rQixLQUFLLEdBQUdmLGdFQUFjLENBQUM7SUFDM0JnQixPQUFPLEVBQUVkLDZEQUFjLENBQ3JCO01BQ0UzZ0MsR0FBRyw0QkFBQTFCLE1BQUEsQ0FBNEIraUMsUUFBUSxDQUFFO01BQ3pDSCxPQUFPQSxvRUFBQUE7SUFDVCxDQUFDLEVBQ0RLLFFBQ0YsQ0FBQztJQUNERyxVQUFVLEVBQUdDLG9CQUFvQixJQUMvQkEsb0JBQW9CLENBQUM7TUFDbkJDLEtBQUssRUFBRTtRQUNMQyxhQUFhLEVBQUU7VUFDYlIsUUFBUTtVQUNSeGdDLFVBQVU7VUFDVnpELE1BQU07VUFDTmtrQyxRQUFRO1VBQ1JuOEI7UUFDRjtNQUNGLENBQUM7TUFDRDI4QixjQUFjLEVBQUUsS0FBSztNQUNyQkMsaUJBQWlCLEVBQUU7UUFDakJDLGNBQWMsRUFBRSxDQUFDcEIsZ0RBQUssRUFBRUMsb0RBQVMsRUFBRUMsZ0RBQUssRUFBRUMsa0RBQU8sRUFBRUMsZ0RBQUssRUFBRUMsbURBQVE7TUFDcEU7SUFDRixDQUFDO0VBQ0wsQ0FBQyxDQUFDO0VBRUYsT0FBT08sS0FBSztBQUNkLENBQUM7QUFFTSxNQUFNUyxZQUFZLEdBQUlDLE1BQU0sSUFBSztFQUN0QyxNQUFNVixLQUFLLEdBQUd6VSw4Q0FBTyxDQUFDLE1BQU1xVSxRQUFRLENBQUNjLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQztFQUNqRCxNQUFNQyxTQUFTLEdBQUdwViw4Q0FBTyxDQUFDLE1BQU0yVCwyREFBWSxDQUFDYyxLQUFLLENBQUMsRUFBRSxDQUFDQSxLQUFLLENBQUMsQ0FBQztFQUU3RCxPQUFPO0lBQ0xBLEtBQUs7SUFDTFc7RUFDRixDQUFDO0FBQ0gsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQzlEeUQ7QUFDbEI7O0FBRXhDO0FBQ0EsTUFBTUksa0JBQWtCLEdBQUdBLENBQUEsS0FBTTtFQUMvQixNQUFNLElBQUlDLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQztFQUNyQztBQUNGLENBQUM7QUFFTSxNQUFNMW9DLG9CQUFvQixHQUFHLE1BQUFBLENBQUEsS0FBWTtFQUM5QyxJQUFJO0lBQ0YsT0FBTyxNQUFNdW9DLGdHQUFjLENBQUMsQ0FBQyxDQUFDM2dDLEtBQUssQ0FBRUMsQ0FBQyxJQUFLO01BQ3pDMkUsT0FBTyxDQUFDQyxHQUFHLENBQUMsd0RBQXdELEVBQUU1RSxDQUFDLENBQUM7TUFDeEUyZ0MsMkRBQXVCLENBQUMzZ0MsQ0FBQyxDQUFDO01BQzFCeWdDLDRGQUFVLENBQUMsQ0FBQztNQUNaLE9BQU8sSUFBSTtJQUNiLENBQUMsQ0FBQztFQUNKLENBQUMsQ0FBQyxPQUFPemdDLENBQUMsRUFBRTtJQUNWMkUsT0FBTyxDQUFDQyxHQUFHLENBQUMsd0RBQXdELEVBQUU1RSxDQUFDLENBQUM7SUFDeEUyZ0MsMkRBQXVCLENBQUMzZ0MsQ0FBQyxDQUFDO0lBQzFCeWdDLDRGQUFVLENBQUMsQ0FBQztJQUNaLE9BQU8sSUFBSTtFQUNiO0FBQ0YsQ0FBQztBQUVNLE1BQU12b0MsaUJBQWlCLEdBQUcsTUFBQUEsQ0FBQSxLQUMvQnNJLE9BQU8sQ0FBQ0MsTUFBTSxDQUFDLElBQUlvZ0MsS0FBSyxDQUFDLGtCQUFrQixDQUFDLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUM3QnhDLE1BQU1FLG9CQUFvQixHQUFHLEVBQUU7QUFDL0IsTUFBTUMsbUJBQW1CLEdBQUcsRUFBRTtBQUM5QixNQUFNamlCLGFBQWEsR0FBRyxDQUFDO0FBQ3ZCLE1BQU16VixlQUFlLEdBQUcsSUFBSTtBQUM1QixNQUFNMjNCLE9BQU8sR0FBRyxDQUFDO0FBQ2pCLE1BQU03b0Msc0JBQXNCLEdBQUcsQ0FBQztBQUNoQyxNQUFNRyxVQUFVLEdBQUcsQ0FBQztBQUNwQixNQUFNaXNCLHdCQUF3QixHQUFHLENBQUM7QUFDbEMsTUFBTW1KLFFBQVEsR0FBRyxDQUFDO0FBQ2xCLE1BQU1FLFFBQVEsR0FBRyxDQUFDO0FBQ2xCLE1BQU1ELFVBQVUsR0FBRyxDQUFDO0FBRXBCLE1BQU00TixlQUFlLEdBQUcsaUJBQWlCO0FBQ3pDLE1BQU1DLGlCQUFpQixHQUFHLG1CQUFtQjtBQUM3QyxNQUFNeUYsY0FBYyxHQUFHLGdCQUFnQjtBQUN2QyxNQUFNeEYsZ0JBQWdCLEdBQUcsa0JBQWtCO0FBQzNDLE1BQU15RixZQUFZLEdBQUcsY0FBYztBQUNuQyxNQUFNQyxpQkFBaUIsR0FBRyxtQkFBbUI7QUFDN0MsTUFBTXpGLGlCQUFpQixHQUFHLG1CQUFtQjtBQUU3QyxNQUFNMEYscUJBQXFCLEdBQUcsdUJBQXVCO0FBQ3JELE1BQU1DLHNCQUFzQixHQUFHLHdCQUF3QjtBQUN2RCxNQUFNQyxzQkFBc0IsR0FBRyx3QkFBd0I7QUFDdkQsTUFBTUMsd0JBQXdCLEdBQUcsV0FBVztBQUM1QyxNQUFNQyx5QkFBeUIsR0FBRyxVQUFVO0FBQzVDLE1BQU1DLHlCQUF5QixHQUFHLFVBQVU7QUFFNUMsTUFBTUMsd0JBQXdCLEdBQUcsS0FBSztBQUV0QyxNQUFNQyxRQUFRLEdBQUcsQ0FBQztBQUNsQixNQUFNcE0sUUFBUSxHQUFHLENBQUM7QUFDbEIsTUFBTXFNLFNBQVMsR0FBRyxDQUFDO0FBQ25CLE1BQU1DLFFBQVEsR0FBRyxDQUFDO0FBRWxCLE1BQU10cEMsbUJBQW1CLEdBQUcsRUFBRTtBQUM5QixNQUFNRixjQUFjLEdBQUcsRUFBRTtBQUV6QixNQUFNRCxXQUFXLEdBQUc7RUFDekIsR0FBRyxFQUFFLEdBQUc7RUFDUixHQUFHLEVBQUUsR0FBRztFQUNSLEdBQUcsRUFBRSxHQUFHO0VBQ1IsR0FBRyxFQUFFO0FBQ1AsQ0FBQztBQUVNLE1BQU1JLElBQUksR0FBRztFQUNsQnVFLE1BQU0sRUFBRSxRQUFRO0VBQ2hCNEQsT0FBTyxFQUFFO0FBQ1gsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDL0NvQztBQUNLO0FBTXJCO0FBRWQsTUFBTWlmLGNBQWMsR0FBR0EsQ0FBQ3ZoQixLQUFLLEVBQUFGLElBQUEsS0FBdUM7RUFBQSxJQUFyQztNQUFFMmpDLE1BQU0sR0FBRztJQUFvQixDQUFDLEdBQUEzakMsSUFBQTtJQUFUcTFCLE9BQU8sR0FBQXhrQixxRkFBQSxDQUFBN1EsSUFBQSxFQUFBOFEsU0FBQTtFQUNsRSxNQUFNOHlCLGNBQWMsR0FBRztJQUNyQnBoQixRQUFRLEVBQUUsS0FBSztJQUNmcWhCLHFCQUFxQixFQUFFLENBQUM7SUFDeEJDLHFCQUFxQixFQUFFO0VBQ3pCLENBQUM7RUFFRCxNQUFNQyxTQUFTLEdBQUcsSUFBSUMsSUFBSSxDQUFDQyxZQUFZLENBQUNOLE1BQU0sRUFBQS8rQixhQUFBLENBQUFBLGFBQUE7SUFDNUM0SCxLQUFLLEVBQUU7RUFBVSxHQUNkbzNCLGNBQWMsR0FDZHZPLE9BQU8sQ0FDWCxDQUFDO0VBRUYsT0FBTzBPLFNBQVMsQ0FBQy9VLE1BQU0sQ0FBQzl1QixLQUFLLENBQUM7QUFDaEMsQ0FBQztBQUVNLE1BQU0rckIsZ0JBQWdCLEdBQUdBLENBQUNpWSxRQUFRLEVBQUVDLFFBQVEsS0FBSztFQUN0RCxJQUFJQSxRQUFRLEVBQ1YsT0FBTzFXLHlEQUNGLENBQUN5VyxRQUFRLEdBQUdoNUIsdURBQWUsRUFBRWk1QixRQUFRLENBQUMsQ0FDeENuVixNQUFNLENBQUMsZUFBZSxDQUFDO0VBRTVCLE9BQU92QiwyREFBVyxDQUFDeVcsUUFBUSxDQUFDLENBQUNsVixNQUFNLENBQUMsZUFBZSxDQUFDO0FBQ3RELENBQUM7QUFFTSxNQUFNeE4sb0JBQW9CLEdBQUcvZ0IsS0FBQSxJQUF1QjtFQUFBLElBQXRCO0lBQUVVLEtBQUs7SUFBRTlEO0VBQU8sQ0FBQyxHQUFBb0QsS0FBQTtFQUNwRCxJQUFJLENBQUNVLEtBQUssSUFBSSxDQUFDOUQsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0VBQ2hDLE1BQU1pRyxPQUFPLEdBQUduQyxLQUFLLGFBQUxBLEtBQUssdUJBQUxBLEtBQUssQ0FBRWdqQixhQUFhO0VBQ3BDLElBQUksQ0FBQzdnQixPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7RUFFdkIsTUFBTTtJQUFFZ3JCLGVBQWU7SUFBRTVMLGVBQWU7SUFBRUMsWUFBWTtJQUFFMmhCO0VBQU8sQ0FBQyxHQUFHbmpDLEtBQUs7RUFDeEUsTUFBTTtJQUFFa2U7RUFBYSxDQUFDLEdBQUdoaUIsTUFBTTtFQUUvQixNQUFNMmtCLGFBQWEsR0FBRyxFQUFFO0VBQ3hCLElBQUl1aUIsbUJBQW1CLEdBQUcsQ0FBQztFQUUzQixNQUFNQyxjQUFjLEdBQUc7SUFBRWhpQixRQUFRLEVBQUVyaEIsS0FBSyxDQUFDcWhCO0VBQVMsQ0FBQztFQUVuRDVpQixNQUFNLENBQUMwQixJQUFJLENBQUNILEtBQUssQ0FBQ3NqQyw4QkFBOEIsQ0FBQyxDQUFDaGhDLEdBQUcsQ0FBRVosTUFBTSxJQUFLO0lBQ2hFLE1BQU02aEMsVUFBVSxHQUFHcmxCLFlBQVksYUFBWkEsWUFBWSx1QkFBWkEsWUFBWSxDQUFFNEgsSUFBSSxDQUFFMGQsRUFBRSxJQUFLQSxFQUFFLENBQUNuakMsSUFBSSxLQUFLcUIsTUFBTSxDQUFDO0lBQ2pFLElBQUksQ0FBQzZoQyxVQUFVLEVBQUUsT0FBTyxJQUFJO0lBQzVCMWlCLGFBQWEsQ0FBQzFqQixJQUFJLENBQUM7TUFDakJzbUMsY0FBYyxFQUFFRixVQUFVLENBQUNqakMsRUFBRTtNQUM3QjRnQixXQUFXLEVBQUVxaUIsVUFBVTtNQUN2QmxqQyxJQUFJLEVBQUVxQixNQUFNO01BQ1p1ZixHQUFHLEVBQUVqaEIsS0FBSyxDQUFDc2pDLDhCQUE4QixDQUFDNWhDLE1BQU07SUFDbEQsQ0FBQyxDQUFDO0lBQ0YwaEMsbUJBQW1CLElBQ2pCRyxVQUFVLENBQUNwaUIsSUFBSSxHQUFHbmhCLEtBQUssQ0FBQ3NqQyw4QkFBOEIsQ0FBQzVoQyxNQUFNLENBQUM7SUFFaEUsT0FBT21mLGFBQWE7RUFDdEIsQ0FBQyxDQUFDO0VBRUYsTUFBTTZpQixhQUFhLEdBQUdwakIsY0FBYyxDQUFDOGlCLG1CQUFtQixFQUFFQyxjQUFjLENBQUM7RUFFekUsTUFBTTVpQixhQUFhLEdBQUdILGNBQWMsQ0FBQ2lCLGVBQWUsRUFBRThoQixjQUFjLENBQUM7RUFDckUsTUFBTTNpQixXQUFXLEdBQUdKLGNBQWMsQ0FBQzZNLGVBQWUsRUFBRWtXLGNBQWMsQ0FBQztFQUNuRSxNQUFNMWlCLFVBQVUsR0FBR0wsY0FBYyxDQUFDa0IsWUFBWSxFQUFFNmhCLGNBQWMsQ0FBQztFQUMvRCxNQUFNemlCLFdBQVcsR0FBR25pQixNQUFNLENBQUNrbEMsU0FBUyxDQUFDQyxjQUFjLENBQUNDLElBQUksQ0FBQzdqQyxLQUFLLEVBQUUsUUFBUSxDQUFDLEdBQ3JFc2dCLGNBQWMsQ0FBQzZpQixNQUFNLEVBQUVFLGNBQWMsQ0FBQyxHQUN0Qy9pQixjQUFjLENBQUNvakIsYUFBYSxFQUFFTCxjQUFjLENBQUM7RUFFakQsT0FBTztJQUNMNWlCLGFBQWE7SUFDYkMsV0FBVztJQUNYQyxVQUFVO0lBQ1ZDLFdBQVc7SUFDWEM7RUFDRixDQUFDO0FBQ0gsQ0FBQztBQUVNLE1BQU1pakIsZUFBZSxHQUFHQSxDQUFDbmtCLFlBQVksRUFBRWhmLE9BQU8sS0FBSztFQUFBLElBQUFvakMsUUFBQTtFQUN4RCxNQUFNQyxNQUFNLEdBQUdya0IsWUFBWSxDQUFDOWlCLE1BQU0sQ0FBRThoQyxDQUFDLElBQUtBLENBQUMsQ0FBQ3IrQixFQUFFLEtBQUtLLE9BQU8sQ0FBQztFQUMzRCxRQUFBb2pDLFFBQUEsR0FBT0MsTUFBTSxDQUFDLENBQUMsQ0FBQyxjQUFBRCxRQUFBLHVCQUFUQSxRQUFBLENBQVcvZ0IsYUFBYTtBQUNqQyxDQUFDO0FBRU0sTUFBTWloQiwyQkFBMkIsR0FBSUMsRUFBRSxJQUFLO0VBQ2pELE1BQU03bUMsS0FBSyxHQUFHNm1DLEVBQUUsQ0FBQ0MsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHcDZCLHVEQUFlO0VBQ3ZELE1BQU16TSxLQUFLLEdBQ1Q0bUMsRUFBRSxDQUFDQyxRQUFRLENBQUMzQyw0REFBb0IsRUFBRUMsMkRBQW1CLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUM1RDEzQix1REFBZTtFQUNqQixPQUFPO0lBQ0wxTSxLQUFLO0lBQ0xDO0VBQ0YsQ0FBQztBQUNILENBQUM7QUFFTSxNQUFNOG1DLGtCQUFrQixHQUFHQSxDQUFBLEtBQ2hDeEosSUFBSSxDQUFDeUosS0FBSyxDQUFDLENBQUMsSUFBSUMsSUFBSSxDQUFDLENBQUMsR0FBR3Y2Qix1REFBZSxDQUFDO0FBRXBDLE1BQU13NkIsTUFBTSxHQUFHQSxDQUFBLEtBQU0sQ0FBQzFvQyxRQUFRLEVBQUU0RCxRQUFRLEtBQUs7RUFDbEQsTUFBTTtJQUFFK2tDO0VBQVcsQ0FBQyxHQUFHL2tDLFFBQVEsQ0FBQyxDQUFDO0VBQ2pDLE9BQU8sQ0FBQStrQyxVQUFVLGFBQVZBLFVBQVUsdUJBQVZBLFVBQVUsQ0FBRUMsTUFBTSxLQUFJLElBQUksR0FBR0wsa0JBQWtCLENBQUMsQ0FBQyxHQUFHSSxVQUFVLGFBQVZBLFVBQVUsdUJBQVZBLFVBQVUsQ0FBRUMsTUFBTTtBQUMvRSxDQUFDO0FBRU0sTUFBTS9pQixNQUFNLEdBQUdBLENBQUEsS0FBTTtFQUMxQixNQUFNN2xCLFFBQVEsR0FBR21xQix3REFBVyxDQUFDLENBQUM7RUFFOUIsT0FBT25xQixRQUFRLENBQUMwb0MsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUMzQixDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLE1BQU0zRyxnQkFBZ0IsR0FBR0EsQ0FBQzhHLFdBQVcsRUFBRTdnQyxJQUFJLEVBQUUyNkIsS0FBSyxLQUFLO0VBQzVELElBQUl0Z0MsR0FBRyxHQUFHLEtBQUs7RUFDZixNQUFNNmhCLFVBQVUsR0FBR3JOLEtBQUssQ0FBQ0MsT0FBTyxDQUFDOU8sSUFBSSxDQUFDLEdBQUdBLElBQUksQ0FBQ3RHLE1BQU0sR0FBRyxDQUFDO0VBQ3hEO0VBQ0EsSUFBSW1uQyxXQUFXLEdBQUcxckMsa0RBQVUsSUFBSSttQixVQUFVLEdBQUcsQ0FBQyxJQUFJQSxVQUFVLEtBQUt5ZSxLQUFLLEVBQ3BFdGdDLEdBQUcsR0FBRyxJQUFJO0VBQ1osT0FBT0EsR0FBRztBQUNaLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQzNIb0M7QUFDa0I7QUFDNUI7QUFFcEIsTUFBTXltQyxlQUFlLEdBQUdBLENBQUN6b0MsTUFBTSxFQUFFOGxCLEdBQUcsS0FBSztFQUM5QyxJQUFJLENBQUM5bEIsTUFBTSxFQUFFLE9BQU8sSUFBSTtFQUV4QixNQUFNMG9DLGFBQWEsR0FDakIxb0MsTUFBTSxhQUFOQSxNQUFNLGVBQU5BLE1BQU0sQ0FBRTJvQyx5QkFBeUIsSUFDakMzb0MsTUFBTSxDQUFDMm9DLHlCQUF5QixHQUFHM29DLE1BQU0sQ0FBQzRvQyxRQUFRLEdBQzlDNW9DLE1BQU0sQ0FBQzJvQyx5QkFBeUIsR0FDaEMzb0MsTUFBTSxDQUFDNG9DLFFBQVE7RUFFckIsT0FBTzlpQixHQUFHLEdBQUc0aUIsYUFBYTtBQUM1QixDQUFDO0FBRU0sTUFBTUcsa0JBQWtCLEdBQUdBLENBQUM3b0MsTUFBTSxFQUFFOGxCLEdBQUcsS0FBSztFQUNqRCxJQUFJLENBQUM5bEIsTUFBTSxFQUFFLE9BQU8sSUFBSTtFQUV4QixPQUFPQSxNQUFNLENBQUM4b0MsVUFBVSxHQUFHaGpCLEdBQUc7QUFDaEMsQ0FBQztBQUVNLE1BQU1pakIsaUJBQWlCLEdBQUkvb0MsTUFBTSxJQUFLO0VBQzNDLElBQUksQ0FBQ0EsTUFBTSxFQUFFLE9BQU8sSUFBSTtFQUN4QixNQUFNZ3BDLFFBQVEsR0FBRzVZLHNEQUFNLENBQUNwd0IsTUFBTSxDQUFDOG9DLFVBQVUsR0FBR2o3Qix1REFBZSxDQUFDLENBQUNrNUIsRUFBRSxDQUM3RC9tQyxNQUFNLENBQUNpcEMsWUFDVCxDQUFDO0VBQ0QsTUFBTUMsTUFBTSxHQUFHOVksc0RBQU0sQ0FBQ3B3QixNQUFNLENBQUM0b0MsUUFBUSxHQUFHLzZCLHVEQUFlLENBQUMsQ0FBQ2s1QixFQUFFLENBQ3pEL21DLE1BQU0sQ0FBQ2lwQyxZQUNULENBQUM7RUFDRCxNQUFNRSxJQUFJLEdBQUdELE1BQU0sYUFBTkEsTUFBTSx1QkFBTkEsTUFBTSxDQUFFRSxJQUFJLENBQUNKLFFBQVEsRUFBRSxNQUFNLENBQUM7RUFDM0MsT0FBTztJQUNMQSxRQUFRO0lBQ1JFLE1BQU07SUFDTkM7RUFDRixDQUFDO0FBQ0gsQ0FBQztBQUVNLE1BQU01VSxzQkFBc0IsR0FBSXYwQixNQUFNLElBQUs7RUFDaEQsSUFBSSxDQUFDQSxNQUFNLEVBQUUsT0FBTyxJQUFJO0VBQ3hCLE1BQU07SUFBRWdwQyxRQUFRO0lBQUVFLE1BQU07SUFBRUM7RUFBSyxDQUFDLEdBQUdKLGlCQUFpQixDQUFDL29DLE1BQU0sQ0FBQztFQUM1RCxJQUFJLENBQUNncEMsUUFBUSxJQUFJLENBQUNFLE1BQU0sRUFBRSxPQUFPLElBQUk7RUFDckMsSUFBSUcsZUFBZSxHQUFHLGVBQWU7RUFDckMsSUFBSUMsYUFBYSxHQUFHLGVBQWU7RUFDbkMsSUFBSU4sUUFBUSxDQUFDTyxJQUFJLENBQUMsQ0FBQyxLQUFLTCxNQUFNLENBQUNLLElBQUksQ0FBQyxDQUFDLEVBQUVGLGVBQWUsR0FBRyxTQUFTO0VBQ2xFLElBQUlMLFFBQVEsQ0FBQ1EsS0FBSyxDQUFDLENBQUMsS0FBS04sTUFBTSxDQUFDTSxLQUFLLENBQUMsQ0FBQyxFQUFFRixhQUFhLEdBQUcsVUFBVTtFQUVuRSxNQUFNRyxTQUFTLEdBQUdULFFBQVEsQ0FBQ3JYLE1BQU0sQ0FBQzBYLGVBQWUsQ0FBQztFQUNsRCxNQUFNSyxPQUFPLEdBQUdSLE1BQU0sQ0FBQ3ZYLE1BQU0sQ0FBQzJYLGFBQWEsQ0FBQztFQUU1QyxJQUFJSCxJQUFJLEdBQUczRCwrQ0FBTyxFQUFFLFVBQUF0a0MsTUFBQSxDQUFVdW9DLFNBQVMsU0FBQXZvQyxNQUFBLENBQU13b0MsT0FBTztFQUVwRCxPQUFPRCxTQUFTO0FBQ2xCLENBQUM7QUFFTSxNQUFNRSxpQkFBaUIsR0FBSTNwQyxNQUFNLElBQUs7RUFBQSxJQUFBNHBDLGlCQUFBO0VBQzNDLElBQUksQ0FBQzVwQyxNQUFNLEVBQUUsT0FBTyxJQUFJO0VBRXhCLE1BQU02cEMsUUFBUSxJQUFBRCxpQkFBQSxHQUFHNXBDLE1BQU0sQ0FBQzhwQyxTQUFTLGNBQUFGLGlCQUFBLHVCQUFoQkEsaUJBQUEsQ0FBa0JoZ0IsSUFBSSxDQUNwQ21nQixDQUFDLElBQUtBLENBQUMsQ0FBQ0MsVUFBVSxLQUFLLGFBQWEsSUFBSUQsQ0FBQyxDQUFDRSxPQUFPLEtBQUssSUFDekQsQ0FBQztFQUVELElBQUksQ0FBQ0osUUFBUSxFQUFFLE9BQU8sSUFBSTtFQUUxQixVQUFBM29DLE1BQUEsQ0FBVTJvQyxRQUFRLENBQUNLLElBQUksUUFBQWhwQyxNQUFBLENBQUsyb0MsUUFBUSxDQUFDTSxPQUFPO0FBQzlDLENBQUM7QUFFTSxNQUFNbmdCLHFCQUFxQixHQUFJaHFCLE1BQU0sSUFBSztFQUMvQyxJQUFJLENBQUNBLE1BQU0sRUFBRSxPQUFPLElBQUk7RUFFeEIsT0FBT0EsTUFBTSxDQUFDMm9DLHlCQUF5QixJQUNyQzNvQyxNQUFNLENBQUMyb0MseUJBQXlCLEdBQUczb0MsTUFBTSxDQUFDNG9DLFFBQVEsR0FDaEQ1b0MsTUFBTSxDQUFDMm9DLHlCQUF5QixHQUNoQzNvQyxNQUFNLENBQUM0b0MsUUFBUTtBQUNyQixDQUFDO0FBRU0sTUFBTXdCLGdCQUFnQixHQUFHem5DLElBQUEsSUFBZ0I7RUFBQSxJQUFBMG5DLGlCQUFBLEVBQUFDLGtCQUFBO0VBQUEsSUFBZjtJQUFFdHFDO0VBQU8sQ0FBQyxHQUFBMkMsSUFBQTtFQUN6QyxNQUFNbWpCLEdBQUcsR0FBR04seUNBQU0sQ0FBQyxDQUFDO0VBRXBCLElBQUksQ0FBQ3hsQixNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7RUFFdEIsTUFBTTZwQyxRQUFRLEdBQUdGLGlCQUFpQixDQUFDM3BDLE1BQU0sQ0FBQztFQUMxQyxNQUFNdXFDLGFBQWEsR0FBR2hXLHNCQUFzQixDQUFDdjBCLE1BQU0sQ0FBQztFQUNwRCxNQUFNb3JCLFlBQVksR0FBR3BCLHFCQUFxQixDQUFDaHFCLE1BQU0sQ0FBQztFQUNsRCxNQUFNd3FDLHFCQUFxQixHQUFHcGEseURBQVMsQ0FDckNoRixZQUFZLEdBQUFpZixpQkFBQSxHQUNacnFDLE1BQU0sQ0FBQ3lxQyxTQUFTLGNBQUFKLGlCQUFBLHVCQUFoQkEsaUJBQUEsQ0FBa0JwQixZQUNwQixDQUFDO0VBQ0QsTUFBTXlCLHlCQUF5QixHQUFHM0IsaUJBQWlCLENBQ2pEampCLEdBQUcsRUFDSHNGLFlBQVksR0FBQWtmLGtCQUFBLEdBQ1p0cUMsTUFBTSxDQUFDeXFDLFNBQVMsY0FBQUgsa0JBQUEsdUJBQWhCQSxrQkFBQSxDQUFrQm5tQyxJQUNwQixDQUFDO0VBRUQsTUFBTXdtQyxNQUFNLEdBQUdsQyxlQUFlLENBQUN6b0MsTUFBTSxFQUFFOGxCLEdBQUcsQ0FBQztFQUMzQyxNQUFNOGtCLFNBQVMsR0FBRy9CLGtCQUFrQixDQUFDN29DLE1BQU0sRUFBRThsQixHQUFHLENBQUM7RUFDakQsTUFBTTRFLGNBQWMsR0FBR1UsWUFBWSxHQUFHdEYsR0FBRztFQUV6QyxPQUFPO0lBQ0wzaEIsSUFBSSxFQUFFbkUsTUFBTSxhQUFOQSxNQUFNLHVCQUFOQSxNQUFNLENBQUVtRSxJQUFJO0lBQ2xCMmhCLEdBQUc7SUFDSCtqQixRQUFRO0lBQ1JVLGFBQWE7SUFDYm5mLFlBQVk7SUFDWm9mLHFCQUFxQjtJQUNyQkUseUJBQXlCO0lBQ3pCQyxNQUFNO0lBQ05DLFNBQVM7SUFDVGxnQjtFQUNGLENBQUM7QUFDSCxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDOUcwQjtBQUNBO0FBWU47QUFDdUQ7QUFLZjtBQU9QO0FBRS9DLE1BQU1tZ0IsVUFBVSxHQUFHO0VBQ3hCLENBQUMzSyx5REFBaUIsR0FBRztJQUNuQnRvQixJQUFJLEVBQUVzb0IseURBQWlCO0lBQ3ZCanlCLElBQUksRUFBRXpSLDZDQUFJLENBQUM4RixDQUFDLENBQUMsMEJBQTBCO0VBQ3pDLENBQUM7RUFDRCxDQUFDMDlCLHlEQUFpQixHQUFHO0lBQ25CcG9CLElBQUksRUFBRW9vQix5REFBaUI7SUFDdkIveEIsSUFBSSxFQUFFelIsNkNBQUksQ0FBQzhGLENBQUMsQ0FBQywwQkFBMEI7RUFDekMsQ0FBQztFQUNELENBQUN5OUIsdURBQWUsR0FBRztJQUNqQm5vQixJQUFJLEVBQUVtb0IsdURBQWU7SUFDckI5eEIsSUFBSSxFQUFFelIsNkNBQUksQ0FBQzhGLENBQUMsQ0FBQyx3QkFBd0I7RUFDdkMsQ0FBQztFQUNELENBQUMyOUIsd0RBQWdCLEdBQUc7SUFDbEJyb0IsSUFBSSxFQUFFcW9CLHdEQUFnQjtJQUN0Qmh5QixJQUFJLEVBQUV6Uiw2Q0FBSSxDQUFDOEYsQ0FBQyxDQUFDLHlCQUF5QjtFQUN4QztBQUNGLENBQUM7QUFDTSxNQUFNd29DLGtCQUFrQixHQUFJdGxDLE1BQU0sSUFBSztFQUFBLElBQUF5aUIsYUFBQSxFQUFBQyxjQUFBLEVBQUFDLGNBQUEsRUFBQU8sY0FBQTtFQUM1QyxJQUFJLENBQUNsakIsTUFBTSxDQUFDNmlCLFNBQVMsRUFBRSxPQUFPNFgsd0RBQWdCO0VBRTlDLElBQUl6NkIsTUFBTSxDQUFDNDBCLFFBQVEsS0FBSyxDQUFDLEVBQUUsT0FBTzhGLHlEQUFpQjtFQUVuRCxJQUFJLEdBQUFqWSxhQUFBLEdBQUN6aUIsTUFBTSxDQUFDNEQsS0FBSyxjQUFBNmUsYUFBQSxlQUFaQSxhQUFBLENBQWN6ZixVQUFVLEtBQUksR0FBQTBmLGNBQUEsR0FBQzFpQixNQUFNLENBQUM0RCxLQUFLLGNBQUE4ZSxjQUFBLGVBQVpBLGNBQUEsQ0FBY3pmLFNBQVMsR0FDdkQsT0FBT3UzQix5REFBaUI7RUFFMUIsSUFBSXg2QixNQUFNLENBQUM0RCxLQUFLLElBQUksRUFBQStlLGNBQUEsR0FBQTNpQixNQUFNLENBQUM0RCxLQUFLLGNBQUErZSxjQUFBLHVCQUFaQSxjQUFBLENBQWMvbEIsTUFBTSxNQUFLLFlBQVksRUFDdkQsT0FBTzQ5Qix5REFBaUI7RUFFMUIsSUFBSXg2QixNQUFNLENBQUM0RCxLQUFLLElBQUksRUFBQXNmLGNBQUEsR0FBQWxqQixNQUFNLENBQUM0RCxLQUFLLGNBQUFzZixjQUFBLHVCQUFaQSxjQUFBLENBQWN0bUIsTUFBTSxNQUFLLFVBQVUsRUFDckQsT0FBTzI5Qix1REFBZTtFQUV4QixPQUFPQyx5REFBaUI7QUFDMUIsQ0FBQztBQUVNLE1BQU0rSyxtQkFBbUIsR0FBR0EsQ0FBQ3ZsQyxNQUFNLEVBQUV3bEMsWUFBWSxLQUN0REgsVUFBVSxDQUFDQyxrQkFBa0IsQ0FBQ3RsQyxNQUFNLEVBQUV3bEMsWUFBWSxDQUFDLENBQUM7QUFFL0MsTUFBTUMsYUFBYSxHQUFJemxDLE1BQU0sSUFBSztFQUN2QyxJQUFJLENBQUNBLE1BQU0sQ0FBQzBtQixLQUFLLEVBQUUsT0FBTyxJQUFJO0VBRTlCLE1BQU07SUFBRUM7RUFBUyxDQUFDLEdBQUczbUIsTUFBTSxDQUFDMG1CLEtBQUs7RUFFakMsSUFBSUMsUUFBUSxDQUFDOXFCLE1BQU0sR0FBRyxDQUFDLEVBQ3JCLE9BQU84cUIsUUFBUSxDQUFDL2xCLEdBQUcsQ0FBRThrQyxPQUFPLElBQUtBLE9BQU8sQ0FBQy9tQyxJQUFJLENBQUMsQ0FBQzNDLElBQUksQ0FBQyxJQUFJLENBQUM7RUFFM0QsT0FBTyxJQUFJO0FBQ2IsQ0FBQztBQUVNLE1BQU0ycEMsYUFBYSxHQUFHQSxDQUFDM2xDLE1BQU0sRUFBRXhGLE1BQU0sS0FDMUNBLE1BQU0sQ0FBQ2dpQixZQUFZLENBQUM0SCxJQUFJLENBQUVoUyxJQUFJLElBQUtBLElBQUksQ0FBQ3hULEVBQUUsS0FBS29CLE1BQU0sQ0FBQytoQyxjQUFjLENBQUM7QUFFaEUsTUFBTXpILGtCQUFrQixHQUFJdDZCLE1BQU07RUFBQSxJQUFBazJCLHFCQUFBO0VBQUEsT0FDdkMsQ0FBQWwyQixNQUFNLGFBQU5BLE1BQU0sdUJBQU5BLE1BQU0sQ0FBRTRsQyxZQUFZLElBQUcsQ0FBQyxJQUN4QixDQUFBNWxDLE1BQU0sYUFBTkEsTUFBTSx1QkFBTkEsTUFBTSxDQUFFNmxDLGdCQUFnQixJQUFHN2xDLE1BQU0sQ0FBQ3lyQixlQUFlLElBQ2pELEVBQUN6ckIsTUFBTSxhQUFOQSxNQUFNLGdCQUFBazJCLHFCQUFBLEdBQU5sMkIsTUFBTSxDQUFFaUIsZUFBZSxjQUFBaTFCLHFCQUFBLGVBQXZCQSxxQkFBQSxDQUF5QmhrQixJQUFJLENBQzNCNHpCLEVBQUUsSUFBS0EsRUFBRSxDQUFDbHBDLE1BQU0sS0FBSzJqQyxnRUFDeEIsQ0FBQztBQUFBO0FBRUksTUFBTXRnQixpQkFBaUIsR0FBSXhmLE9BQU8sSUFDdkMsQ0FBQUEsT0FBTyxhQUFQQSxPQUFPLHVCQUFQQSxPQUFPLENBQUV0RixNQUFNLENBQUU2RSxNQUFNLElBQUtzNkIsa0JBQWtCLENBQUN0NkIsTUFBTSxDQUFDLENBQUMsQ0FBQ25FLE1BQU0sS0FBSSxDQUFDO0FBRTlELE1BQU1rcUMsMkJBQTJCLEdBQUl0bEMsT0FBTyxJQUNqREEsT0FBTyxhQUFQQSxPQUFPLHVCQUFQQSxPQUFPLENBQUV0RixNQUFNLENBQUU2RSxNQUFNO0VBQUEsSUFBQWdtQyxzQkFBQTtFQUFBLFFBQUFBLHNCQUFBLEdBQ3JCaG1DLE1BQU0sQ0FBQ2lCLGVBQWUsY0FBQStrQyxzQkFBQSx1QkFBdEJBLHNCQUFBLENBQXdCOXpCLElBQUksQ0FBRTR6QixFQUFFLElBQUtBLEVBQUUsQ0FBQ2xwQyxNQUFNLEtBQUsyakMsZ0VBQXdCLENBQUM7QUFBQSxDQUM5RSxDQUFDO0FBQ0ksTUFBTWpXLDRCQUE0QixHQUFJN3BCLE9BQU8sSUFBSztFQUN2RCxNQUFNd2xDLFVBQVUsR0FBRyxFQUFFO0VBQ3JCeGxDLE9BQU8sYUFBUEEsT0FBTyxlQUFQQSxPQUFPLENBQUVHLEdBQUcsQ0FBRVosTUFBTSxJQUFLO0lBQUEsSUFBQWttQyxzQkFBQSxFQUFBQyxzQkFBQSxFQUFBQyxzQkFBQTtJQUN2QixJQUNFLENBQUFGLHNCQUFBLEdBQUFsbUMsTUFBTSxDQUFDaUIsZUFBZSxjQUFBaWxDLHNCQUFBLGVBQXRCQSxzQkFBQSxDQUF3QmgwQixJQUFJLENBQ3pCNHpCLEVBQUUsSUFBS0EsRUFBRSxDQUFDbHBDLE1BQU0sS0FBSzJqQyxnRUFDeEIsQ0FBQyxLQUFBNEYsc0JBQUEsR0FDRG5tQyxNQUFNLENBQUNpQixlQUFlLGNBQUFrbEMsc0JBQUEsZUFBdEJBLHNCQUFBLENBQXdCajBCLElBQUksQ0FDekI0ekIsRUFBRSxJQUFLQSxFQUFFLENBQUNscEMsTUFBTSxLQUFLNGpDLGlFQUN4QixDQUFDLEtBQUE0RixzQkFBQSxHQUNEcG1DLE1BQU0sQ0FBQ2lCLGVBQWUsY0FBQW1sQyxzQkFBQSxlQUF0QkEsc0JBQUEsQ0FBd0JsMEIsSUFBSSxDQUN6QjR6QixFQUFFLElBQUtBLEVBQUUsQ0FBQ2xwQyxNQUFNLEtBQUs2akMsaUVBQ3hCLENBQUMsRUFDRDtNQUNBd0YsVUFBVSxDQUFDeHFDLElBQUksQ0FBQ3VFLE1BQU0sQ0FBQztJQUN6QjtJQUNBLE9BQU9BLE1BQU07RUFDZixDQUFDLENBQUM7RUFDRixPQUFPaW1DLFVBQVU7QUFDbkIsQ0FBQztBQUVNLE1BQU1JLDBCQUEwQixHQUFJcm1DLE1BQU0sSUFBSztFQUFBLElBQUFzbUMsc0JBQUEsRUFBQUMsc0JBQUEsRUFBQUMsc0JBQUE7RUFDcEQsS0FBQUYsc0JBQUEsR0FDRXRtQyxNQUFNLENBQUNpQixlQUFlLGNBQUFxbEMsc0JBQUEsZUFBdEJBLHNCQUFBLENBQXdCcDBCLElBQUksQ0FBRTR6QixFQUFFLElBQUtBLEVBQUUsQ0FBQ2xwQyxNQUFNLEtBQUsyakMsZ0VBQXdCLENBQUMsRUFFNUUsT0FBT0gsNkRBQXFCO0VBQzlCLEtBQUFtRyxzQkFBQSxHQUNFdm1DLE1BQU0sQ0FBQ2lCLGVBQWUsY0FBQXNsQyxzQkFBQSxlQUF0QkEsc0JBQUEsQ0FBd0JyMEIsSUFBSSxDQUN6QjR6QixFQUFFLElBQUtBLEVBQUUsQ0FBQ2xwQyxNQUFNLEtBQUs0akMsaUVBQ3hCLENBQUMsRUFFRCxPQUFPSCw4REFBc0I7RUFDL0IsS0FBQW1HLHNCQUFBLEdBQ0V4bUMsTUFBTSxDQUFDaUIsZUFBZSxjQUFBdWxDLHNCQUFBLGVBQXRCQSxzQkFBQSxDQUF3QnQwQixJQUFJLENBQ3pCNHpCLEVBQUUsSUFBS0EsRUFBRSxDQUFDbHBDLE1BQU0sS0FBSzZqQyxpRUFDeEIsQ0FBQyxFQUVELE9BQU9ILDhEQUFzQjtFQUMvQixPQUFPRiw2REFBcUI7QUFDOUIsQ0FBQztBQUVNLE1BQU0vVCw2QkFBNkIsR0FBSXJzQixNQUFNLElBQUs7RUFDdkQsTUFBTXBELE1BQU0sR0FBR3lwQywwQkFBMEIsQ0FBQ3JtQyxNQUFNLENBQUM7RUFDakQsSUFBSXNzQixXQUFXLEdBQUcsRUFBRTtFQUNwQixRQUFRMXZCLE1BQU07SUFDWixLQUFLd2pDLDZEQUFxQjtNQUN4QjlULFdBQVcsR0FBRyxTQUFTO01BQ3ZCO0lBQ0YsS0FBSytULDhEQUFzQjtNQUN6Qi9ULFdBQVcsR0FBRyxVQUFVO01BQ3hCO0lBQ0YsS0FBS2dVLDhEQUFzQjtNQUN6QmhVLFdBQVcsR0FBRyxVQUFVO01BQ3hCO0lBQ0Y7TUFDRUEsV0FBVyxHQUFHLFNBQVM7RUFDM0I7RUFDQSxPQUFPQSxXQUFXO0FBQ3BCLENBQUM7QUFFTSxNQUFNbWEsaUJBQWlCLEdBQUdBLENBQUNyMEIsSUFBSSxFQUFFelQsSUFBSSxFQUFFK0ksVUFBVSxLQUFLO0VBQzNELElBQUlnL0IsTUFBTTtFQUNWLFFBQVF0MEIsSUFBSTtJQUNWLEtBQUs1Qiw2RkFBcUI7TUFDeEJrMkIsTUFBTSxHQUFHdlgscUNBQVEsQ0FBQyxDQUFDLENBQUN3WCxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRTN2Qyw2Q0FBSSxDQUFDOEYsQ0FBQyxDQUFDLDhCQUE4QixDQUFDLENBQUM7TUFDekU7SUFDRixLQUFLOFQsb0dBQTRCO01BQy9CODFCLE1BQU0sR0FBR3ZYLHVDQUFVLFVBQUF6ekIsTUFBQSxDQUFVaUQsSUFBSSxDQUFFLENBQUM7TUFDcEM7SUFDRixLQUFLOFIsaUdBQXlCO01BQzVCaTJCLE1BQU0sR0FBR3ZYLHNDQUFTLENBQUMsQ0FBQyxDQUFDeVgsRUFBRSxDQUFDelgsdUNBQVUsQ0FBQyxDQUFDLENBQUM7TUFDckM7TUFDQSxJQUFJem5CLFVBQVUsRUFBRWcvQixNQUFNLEdBQUdBLE1BQU0sQ0FBQ3ZOLEdBQUcsQ0FBQyxDQUFDLEtBQUF6OUIsTUFBQSxDQUFLaUQsSUFBSSxpQkFBYyxDQUFDO01BQzdEO0lBQ0YsS0FBS2dTLG9HQUE0QjtJQUNqQyxLQUFLRCw2RkFBcUI7TUFDeEJnMkIsTUFBTSxHQUFHdlgsdUNBQVUsVUFBQXp6QixNQUFBLENBQVVpRCxJQUFJLENBQUUsQ0FBQztNQUNwQztJQUNGO01BQ0UrbkMsTUFBTSxHQUFHdlgsdUNBQVUsVUFBQXp6QixNQUFBLENBQVVpRCxJQUFJLENBQUUsQ0FBQztNQUNwQztFQUNKO0VBRUEsSUFBSStJLFVBQVUsRUFBRTtJQUNkZy9CLE1BQU0sR0FBR0EsTUFBTSxDQUFDejNCLFFBQVEsSUFBQXZULE1BQUEsQ0FBSWlELElBQUksaUJBQWMsQ0FBQztFQUNqRDtFQUVBLE9BQU8rbkMsTUFBTTtBQUNmLENBQUM7QUFFRCxNQUFNRyxzQkFBc0IsR0FBR0EsQ0FDN0JsMUIsQ0FBQyxFQUNEdk8sT0FBTyxFQUNQME8sTUFBTSxFQUNOL0ssYUFBYSxFQUNiKy9CLFlBQVksS0FDVDtFQUFBLElBQUFuekIscUJBQUE7RUFDSCxJQUFJLEVBQUFBLHFCQUFBLEdBQUFoQyxDQUFDLENBQUN3QyxrQkFBa0IsY0FBQVIscUJBQUEsdUJBQXBCQSxxQkFBQSxDQUFzQjlYLE1BQU0sSUFBRyxDQUFDLEVBQUU7SUFDcEM4VixDQUFDLENBQUN3QyxrQkFBa0IsQ0FBQ2pYLE9BQU8sQ0FBRTRULElBQUksSUFBSztNQUNyQyxNQUFNO1FBQUU0QyxZQUFZO1FBQUUzQztNQUFjLENBQUMsR0FBR0QsSUFBSTtNQUM1QyxNQUFNaTJCLGVBQWUsR0FBRzE1Qix5RkFBTSxDQUFDcUcsWUFBWSxDQUFDL1UsSUFBSSxFQUFFK1UsWUFBWSxDQUFDOVUsRUFBRSxDQUFDO01BQ2xFLE1BQU1vb0MsU0FBUyxHQUFHNWpDLE9BQU8sQ0FBQzJqQyxlQUFlLENBQUM7TUFDMUMsTUFBTUUsS0FBSyxHQUFHbDFCLG9HQUFpQixDQUFDRCxNQUFNLEVBQUVmLGFBQWEsQ0FBQztNQUV0RCxJQUFJLENBQUMrMUIsWUFBWSxJQUFJRyxLQUFLLEVBQUU7UUFDMUJsZ0MsYUFBYSxDQUFDZ2dDLGVBQWUsQ0FBQyxHQUM1QkMsU0FBUyxJQUFJNzBCLHNHQUFtQixDQUFDdUIsWUFBWSxDQUFDO01BQ2xEO01BRUFtekIsc0JBQXNCLENBQ3BCbnpCLFlBQVksRUFDWnRRLE9BQU8sRUFDUDRqQyxTQUFTLEVBQ1RqZ0MsYUFBYSxFQUNiKy9CLFlBQ0YsQ0FBQztJQUNILENBQUMsQ0FBQztFQUNKO0FBQ0YsQ0FBQztBQUVNLE1BQU14Z0MsWUFBWSxHQUFHLFNBQUFBLENBQzFCMUMsS0FBSyxFQUNMcEssY0FBYyxFQUNkNEosT0FBTyxFQUNQOGpDLG1CQUFtQixFQUNuQkMsaUJBQWlCLEVBRWQ7RUFBQSxJQURITCxZQUFZLEdBQUFoakMsU0FBQSxDQUFBakksTUFBQSxRQUFBaUksU0FBQSxRQUFBQyxTQUFBLEdBQUFELFNBQUEsTUFBRyxLQUFLO0VBRXBCLE1BQU1pRCxhQUFhLEdBQUcsQ0FBQyxDQUFDO0VBRXhCLElBQUltZ0MsbUJBQW1CLEVBQUU7SUFDdkJuZ0MsYUFBYSxDQUFDN04sb0ZBQW9CLENBQUNDLEtBQUssQ0FBQyxHQUN2Q2lLLE9BQU8sQ0FBQ2xLLG9GQUFvQixDQUFDQyxLQUFLLENBQUMsSUFBSXlLLEtBQUssQ0FBQ3pLLEtBQUssSUFBSSxFQUFFO0lBQzFENE4sYUFBYSxDQUFDN04sb0ZBQW9CLENBQUNFLFNBQVMsQ0FBQyxHQUMzQ2dLLE9BQU8sQ0FBQ2xLLG9GQUFvQixDQUFDRSxTQUFTLENBQUMsSUFBSXdLLEtBQUssQ0FBQ1osVUFBVSxJQUFJLEVBQUU7SUFDbkUrRCxhQUFhLENBQUM3TixvRkFBb0IsQ0FBQ0csUUFBUSxDQUFDLEdBQzFDK0osT0FBTyxDQUFDbEssb0ZBQW9CLENBQUNHLFFBQVEsQ0FBQyxJQUFJdUssS0FBSyxDQUFDWCxTQUFTLElBQUksRUFBRTtJQUNqRThELGFBQWEsQ0FBQzdOLG9GQUFvQixDQUFDSSxPQUFPLENBQUMsR0FDekM4SixPQUFPLENBQUNsSyxvRkFBb0IsQ0FBQ0ksT0FBTyxDQUFDLElBQUlzSyxLQUFLLENBQUN0SyxPQUFPO0VBQzFEO0VBRUEsSUFBSTZ0QyxpQkFBaUIsRUFBRTtJQUNyQnBnQyxhQUFhLENBQUM3TixvRkFBb0IsQ0FBQ0ssa0JBQWtCLENBQUMsR0FDcEQ2SixPQUFPLENBQUNsSyxvRkFBb0IsQ0FBQ0ssa0JBQWtCLENBQUMsSUFDaERxSyxLQUFLLENBQUM2TyxtQkFBbUI7RUFDN0I7RUFFQWpaLGNBQWMsQ0FBQzBELE9BQU8sQ0FBRXlVLENBQUMsSUFBSztJQUM1QixNQUFNekQsWUFBWSxHQUFHYix5RkFBTSxDQUFDc0UsQ0FBQyxDQUFDaFQsSUFBSSxFQUFFZ1QsQ0FBQyxDQUFDL1MsRUFBRSxDQUFDO0lBQ3pDLE1BQU1rVCxNQUFNLEdBQUcxTyxPQUFPLENBQUM4SyxZQUFZLENBQUM7SUFDcENuSCxhQUFhLENBQUNtSCxZQUFZLENBQUMsR0FBRzRELE1BQU0sSUFBSUssc0dBQW1CLENBQUNSLENBQUMsQ0FBQztJQUU5RGsxQixzQkFBc0IsQ0FBQ2wxQixDQUFDLEVBQUV2TyxPQUFPLEVBQUUwTyxNQUFNLEVBQUUvSyxhQUFhLEVBQUUrL0IsWUFBWSxDQUFDO0VBQ3pFLENBQUMsQ0FBQztFQUVGLE9BQU8vL0IsYUFBYTtBQUN0QixDQUFDO0FBRUQsTUFBTXFnQyxnQ0FBZ0MsR0FBR0EsQ0FBQ2w1QixZQUFZLEVBQUU0QyxJQUFJLEVBQUU0MUIsTUFBTSxLQUFLO0VBQUEsSUFBQVcscUJBQUE7RUFDdkUsTUFBTUMsV0FBVyxHQUFHeDJCLElBQUksQ0FBQzRDLFlBQVk7RUFDckMsTUFBTXF6QixlQUFlLEdBQUcxNUIseUZBQU0sQ0FBQ2k2QixXQUFXLENBQUMzb0MsSUFBSSxFQUFFMm9DLFdBQVcsQ0FBQzFvQyxFQUFFLENBQUM7RUFFaEU4bkMsTUFBTSxDQUFDSyxlQUFlLENBQUMsR0FBR04saUJBQWlCLENBQ3pDYSxXQUFXLENBQUNsMUIsSUFBSSxFQUNoQmsxQixXQUFXLENBQUMzb0MsSUFBSSxFQUNoQixLQUNGLENBQUMsQ0FDRTRvQyxRQUFRLENBQUMsQ0FBQyxDQUNWQyxJQUFJLENBQUN0NUIsWUFBWSxFQUFFO0lBQ2xCdTVCLEVBQUUsRUFBR0MsV0FBVyxJQUFLO01BQ25CLE1BQU1DLGFBQWEsR0FBRzUxQixvR0FBaUIsQ0FDckMyMUIsV0FBVyxFQUNYNTJCLElBQUksQ0FBQ0MsYUFDUCxDQUFDO01BQ0Q7TUFDQSxNQUFNeUMsU0FBUyxHQUFHLENBQUMsQ0FBQ3RPLFFBQVEsQ0FBQ2cxQixjQUFjLElBQUF4K0IsTUFBQSxDQUN0Q3dTLFlBQVksZUFDakIsQ0FBQztNQUNELE9BQU95NUIsYUFBYSxJQUFJbjBCLFNBQVM7SUFDbkMsQ0FBQztJQUNEM1UsSUFBSSxFQUFHK29DLEdBQUcsSUFBSztNQUNiLElBQUlOLFdBQVcsQ0FBQ2wxQixJQUFJLEtBQUszQixpR0FBeUIsRUFBRTtRQUNsRDtRQUNBLE9BQU9tM0IsR0FBRyxDQUFDek8sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDbHFCLFFBQVEsQ0FBQ2pZLDZDQUFJLENBQUM4RixDQUFDLENBQUMsOEJBQThCLENBQUMsQ0FBQztNQUNwRTtNQUNBLE9BQU84cUMsR0FBRyxDQUFDMzRCLFFBQVEsQ0FBQ2pZLDZDQUFJLENBQUM4RixDQUFDLENBQUMsOEJBQThCLENBQUMsQ0FBQztJQUM3RDtFQUNGLENBQUMsQ0FBQztFQUVKLElBQUksRUFBQXVxQyxxQkFBQSxHQUFBQyxXQUFXLENBQUNuekIsa0JBQWtCLGNBQUFrekIscUJBQUEsdUJBQTlCQSxxQkFBQSxDQUFnQ3hyQyxNQUFNLElBQUcsQ0FBQyxFQUFFO0lBQzlDeXJDLFdBQVcsQ0FBQ256QixrQkFBa0IsQ0FBQ2pYLE9BQU8sQ0FBRTJxQyxPQUFPLElBQUs7TUFDbERULGdDQUFnQyxDQUFDTCxlQUFlLEVBQUVjLE9BQU8sRUFBRW5CLE1BQU0sQ0FBQztJQUNwRSxDQUFDLENBQUM7RUFDSjtBQUNGLENBQUM7QUFFTSxNQUFNcmdDLHFCQUFxQixHQUFHQSxDQUNuQzdNLGNBQWMsRUFDZDB0QyxtQkFBbUIsRUFDbkJZLG1CQUFtQixLQUNoQjtFQUNILE1BQU1wQixNQUFNLEdBQUcsQ0FBQyxDQUFDO0VBRWpCLElBQUlRLG1CQUFtQixFQUFFO0lBQ3ZCUixNQUFNLENBQUN4dEMsb0ZBQW9CLENBQUNDLEtBQUssQ0FBQyxHQUFHZzJCLHVDQUM1QixDQUFDbjRCLDZDQUFJLENBQUM4RixDQUFDLENBQUMseUJBQXlCLENBQUMsQ0FBQyxDQUN6QzNELEtBQUssQ0FBQ25DLDZDQUFJLENBQUM4RixDQUFDLENBQUMseUJBQXlCLENBQUMsQ0FBQyxDQUN4Q21TLFFBQVEsQ0FBQ2pZLDZDQUFJLENBQUM4RixDQUFDLENBQUMsMkJBQTJCLENBQUMsQ0FBQztJQUNoRDRwQyxNQUFNLENBQUN4dEMsb0ZBQW9CLENBQUNFLFNBQVMsQ0FBQyxHQUFHKzFCLHVDQUNoQyxDQUFDbjRCLDZDQUFJLENBQUM4RixDQUFDLENBQUMsOEJBQThCLENBQUMsQ0FBQyxDQUM5Q21TLFFBQVEsQ0FBQ2pZLDZDQUFJLENBQUM4RixDQUFDLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztJQUNyRDRwQyxNQUFNLENBQUN4dEMsb0ZBQW9CLENBQUNHLFFBQVEsQ0FBQyxHQUFHODFCLHVDQUMvQixDQUFDbjRCLDZDQUFJLENBQUM4RixDQUFDLENBQUMsNkJBQTZCLENBQUMsQ0FBQyxDQUM3Q21TLFFBQVEsQ0FBQ2pZLDZDQUFJLENBQUM4RixDQUFDLENBQUMsK0JBQStCLENBQUMsQ0FBQztJQUNwRDRwQyxNQUFNLENBQUN4dEMsb0ZBQW9CLENBQUNJLE9BQU8sQ0FBQyxHQUFHNjFCLHFDQUFRLENBQUU5eEIsS0FBSyxJQUNwRCxPQUFPQSxLQUFLLEtBQUssUUFBUSxHQUNyQjh4Qix1Q0FDUyxDQUFDLENBQUMsQ0FDUmxnQixRQUFRLENBQUNqWSw2Q0FBSSxDQUFDOEYsQ0FBQyxDQUFDLDZCQUE2QixDQUFDLENBQUMsQ0FDL0NrckMsU0FBUyxDQUFDaHhDLDZDQUFJLENBQUM4RixDQUFDLENBQUMsMkJBQTJCLENBQUMsQ0FBQyxHQUNqRHF5Qix1Q0FBVSxDQUFDLENBQUMsQ0FBQ2xnQixRQUFRLENBQUNqWSw2Q0FBSSxDQUFDOEYsQ0FBQyxDQUFDLDZCQUE2QixDQUFDLENBQ2pFLENBQUM7RUFDSDtFQUVBLElBQUlnckMsbUJBQW1CLEVBQUU7SUFDdkJwQixNQUFNLENBQUN4dEMsb0ZBQW9CLENBQUNLLGtCQUFrQixDQUFDLEdBQUc0MUIscUNBQzNDLENBQUMsQ0FBQyxDQUNOd1gsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUzdkMsNkNBQUksQ0FBQzhGLENBQUMsQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO0VBQzFEO0VBRUF0RCxjQUFjLENBQUMwRCxPQUFPLENBQUV5VSxDQUFDLElBQUs7SUFDNUIsTUFBTTtNQUFFL1MsRUFBRTtNQUFFRCxJQUFJO01BQUV5VCxJQUFJO01BQUVoRSxTQUFTO01BQUUrRjtJQUFtQixDQUFDLEdBQUd4QyxDQUFDO0lBQzNELE1BQU16RCxZQUFZLEdBQUdiLHlGQUFNLENBQUMxTyxJQUFJLEVBQUVDLEVBQUUsQ0FBQztJQUNyQzhuQyxNQUFNLENBQUN4NEIsWUFBWSxDQUFDLEdBQUd1NEIsaUJBQWlCLENBQUNyMEIsSUFBSSxFQUFFelQsSUFBSSxFQUFFeVAsU0FBUyxDQUFDO0lBRS9ELElBQUksQ0FBQStGLGtCQUFrQixhQUFsQkEsa0JBQWtCLHVCQUFsQkEsa0JBQWtCLENBQUV0WSxNQUFNLElBQUcsQ0FBQyxFQUFFO01BQ2xDc1ksa0JBQWtCLENBQUNqWCxPQUFPLENBQUU0VCxJQUFJLElBQUs7UUFDbkNzMkIsZ0NBQWdDLENBQUNsNUIsWUFBWSxFQUFFNEMsSUFBSSxFQUFFNDFCLE1BQU0sQ0FBQztNQUM5RCxDQUFDLENBQUM7SUFDSjtFQUNGLENBQUMsQ0FBQztFQUVGLE9BQU92WCx1Q0FBVSxDQUFDdVgsTUFBTSxDQUFDO0FBQzNCLENBQUM7QUFFTSxNQUFNdkssc0JBQXNCLEdBQUdBLENBQUMxN0IsT0FBTyxFQUFFVCxNQUFNLEtBQ3BEUyxPQUFPLENBQUNHLEdBQUcsQ0FBRTlELENBQUMsSUFBSztFQUFBLElBQUFtckMsUUFBQSxFQUFBOWtCLGNBQUEsRUFBQStrQixTQUFBLEVBQUFDLGNBQUE7RUFDakIsTUFBTUMsU0FBUyxHQUFBcm1DLGFBQUEsS0FBUWpGLENBQUMsQ0FBRTtFQUMxQjtFQUNBLElBQ0UsRUFBQW1yQyxRQUFBLEdBQUFuckMsQ0FBQyxDQUFDOEcsS0FBSyxjQUFBcWtDLFFBQUEsdUJBQVBBLFFBQUEsQ0FBU3JwQyxFQUFFLFFBQUF1a0IsY0FBQSxHQUFLbmpCLE1BQU0sQ0FBQzRELEtBQUssY0FBQXVmLGNBQUEsdUJBQVpBLGNBQUEsQ0FBY3ZrQixFQUFFLEtBQ2hDLEVBQUFzcEMsU0FBQSxHQUFBcHJDLENBQUMsQ0FBQzhHLEtBQUssY0FBQXNrQyxTQUFBLHVCQUFQQSxTQUFBLENBQVN0ckMsTUFBTSxRQUFBdXJDLGNBQUEsR0FBS25vQyxNQUFNLENBQUM0RCxLQUFLLGNBQUF1a0MsY0FBQSx1QkFBWkEsY0FBQSxDQUFjdnJDLE1BQU0sR0FDeEM7SUFDQXdyQyxTQUFTLENBQUN4a0MsS0FBSyxHQUFHNUQsTUFBTSxDQUFDNEQsS0FBSztFQUNoQztFQUNBLE9BQU85RyxDQUFDLENBQUM4QixFQUFFLEtBQUtvQixNQUFNLENBQUNwQixFQUFFLEdBQUdvQixNQUFNLEdBQUdvb0MsU0FBUztBQUNoRCxDQUFDLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDOVZKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDaUY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0xqRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ29rQjs7Ozs7Ozs7Ozs7Ozs7Ozs7QUN2QnBrQjtBQUNBO0FBQ0E7QUFDQTtBQUM2RDs7Ozs7Ozs7Ozs7Ozs7O0FDSjdEO0FBQ0E7QUFDNkI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDRjdCO0FBQ0E7QUFDQTtBQUNBO0FBQ3NGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNKdEY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNpTjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ1JqTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDaXVCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUM5Qmp1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQzRmOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUN2QjVmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDMkU7Ozs7Ozs7Ozs7Ozs7Ozs7QUNMM0U7QUFDQTtBQUNBO0FBQ3dEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDSHhEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNnSDs7Ozs7Ozs7Ozs7Ozs7OztBQ05oSDtBQUNBO0FBQ0E7QUFDd0U7Ozs7Ozs7Ozs7Ozs7OztBQ0h4RTtBQUNBO0FBQzBCOzs7Ozs7Ozs7Ozs7Ozs7O0FDRjFCO0FBQ0E7QUFDQTtBQUM0Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNINUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDOFg7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ25COVg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNnTTs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNSaE07QUFDQTtBQUNBO0FBQ0E7QUFDZ0U7Ozs7Ozs7Ozs7Ozs7OztBQ0poRTtBQUNBO0FBQ21DOzs7Ozs7Ozs7OztBQ0ZuQzs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7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QixpRUFBYSxJQUFFO01BQUMsQ0FDRztJQUFDLENBQ1o7RUFBQyxDQUNOLENBQUM7QUFFZixDQUFDO0FBRUQwUSx1QkFBdUIsQ0FBQ3ZnQyxTQUFTLEdBQUc7RUFDbEMyMkIsUUFBUSxFQUFFNzRCLDBEQUFnQjtFQUMxQjBpQyxZQUFZLEVBQUUxaUMsMERBQWdCO0VBQzlCckwsTUFBTSxFQUFFcUwsMERBQWdCO0VBQ3hCNUgsVUFBVSxFQUFFNEgsMERBQWdCO0VBQzVCcEwsSUFBSSxFQUFFb0wsMERBQWdCO0VBQ3RCNDRCLFFBQVEsRUFBRTU0QiwwREFBZ0I7RUFDMUJ0RCxhQUFhLEVBQUVzRCx3REFBY3FDO0FBQy9CLENBQUM7QUFFRCxpRUFBZW9nQyx1QkFBdUIsRSIsInNvdXJjZXMiOlsid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC93ZWJwYWNrL3VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24iLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2FjdGlvbnMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvQXNzaWduRVFGb3JtL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0NvcHlUZXh0L2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0N1c3RvbURpYWxvZy9Db250ZXh0LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0N1c3RvbURpYWxvZy9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9DdXN0b21UaGVtZS5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL0NoZWNrYm94TGlzdFF1ZXN0aW9uRmllbGQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy9DaGVja2JveFF1ZXN0aW9uRmllbGQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy9Ecm9wZG93blF1ZXN0aW9uRmllbGQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy9SYWRpb0xpc3RRdWVzdGlvbkZpZWxkLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvVGV4dFF1ZXN0aW9uRmllbGQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy91dGlscy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb25zdGFudHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVycy9Bc3NpZ25lZEZpbHRlci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJzL0JhZGdlRmVhdHVyZUZpbHRlci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJzL0ZpbHRlci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJzL0ZyZWVQYWlkRmlsdGVyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlcnMvUHJvbW9Db2RlRmlsdGVyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlcnMvU2VhcmNoLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlcnMvU29ydC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJzL1N0YXR1c0ZpbHRlci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJzL1RpY2tldFR5cGVGaWx0ZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVycy9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9Gb3JtRm9vdGVyL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0xhYmVscy9FcnJvckxhYmVsLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0xvYWRlci9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9NeU9yZGVyc1RpY2tldHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJTdW1tYXJ5L09yZGVyU3VtbWFyeVRhYmxlLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyU3VtbWFyeS9SZWZ1bmRFbWFpbFN1cHBvcnQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJTdW1tYXJ5L2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyc0xpc3QvQXNzaWduZWRUb01lLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyc0xpc3QvQXR0ZW5kZWVTdGF0dXMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJzTGlzdC9PcmRlckxpc3RJdGVtLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyc0xpc3QvT3JkZXJMaXN0VGlja2V0cy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlcnNMaXN0L09yZGVyc0xpc3REZXNrdG9wTW9iaWxlLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyc0xpc3QvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvUmVmdW5kUmVxdWVzdHMvUmVmdW5kRGV0YWlscy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9SZWZ1bmRSZXF1ZXN0cy9SZWZ1bmRSZXF1ZXN0ZWRUaWNrZXQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvUmVmdW5kUmVxdWVzdHMvUmVmdW5kU3RhdHVzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1JlZnVuZFJlcXVlc3RzL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1JpZ2h0RHJhd2VyL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1N1bW1pdEhlYWRlci9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXRBc3NpZ24vY29tcG9uZW50cy9EZWxlZ2F0ZUZvcm0vaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0QXNzaWduL2NvbXBvbmVudHMvSGVhZGVyL0Fzc2lnbkhlYWRlci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXRBc3NpZ24vY29tcG9uZW50cy9IZWFkZXIvUmVhc3NpZ25IZWFkZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0QXNzaWduL2NvbXBvbmVudHMvUmVhc3NpZ25Gb3JtL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldEFzc2lnbi9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9Db21wYW55RmllbGQvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvUmVnaXN0cmF0aW9uRGlzY2xhaW1lci9SZWdpc3RyYXRpb25EaXNjbGFpbWVyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL1RpY2tldEZvcm0vaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvVGlja2V0T3duZXJGaWVsZHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbnN0YW50cy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0U3RhdHVzL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1dpZGdldFRhYnMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvV2lkZ2V0V3JhcHBlci9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvaG9va3MvdXNlR2V0VGlja2V0LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9ob29rcy91c2VTY3JvbGxUb0Vycm9yLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9ob29rcy91c2VUaWNrZXREZXRhaWxzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9pMThuL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9yZWR1Y2VyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9zdG9yZS5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvdXRpbHMvYXV0aC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvdXRpbHMvY29uc3RhbnRzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy91dGlscy9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvdXRpbHMvc3VtbWl0VXRpbHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL3V0aWxzL3RpY2tldFV0aWxzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0NvcHlUZXh0L3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJzL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9Gb3JtRm9vdGVyL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9MYWJlbHMvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL015T3JkZXJzVGlja2V0cy9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJTdW1tYXJ5L3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlcnNMaXN0L3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9SZWZ1bmRSZXF1ZXN0cy9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvUmlnaHREcmF3ZXIvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1N1bW1pdEhlYWRlci9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0QXNzaWduL2NvbXBvbmVudHMvSGVhZGVyL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXRBc3NpZ24vc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL1JlZ2lzdHJhdGlvbkRpc2NsYWltZXIvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL1RpY2tldE93bmVyRmllbGRzL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldFN0YXR1cy9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvV2lkZ2V0VGFicy9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvV2lkZ2V0V3JhcHBlci9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvb2JqZWN0V2l0aG91dFByb3BlcnRpZXNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbC9DaGVja0NpcmNsZVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ2xvc2VcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0NvbnRlbnRDb3B5XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbC9FcnJvclwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRXhwYW5kTW9yZVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRmlsdGVyTGlzdFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvSW1wb3J0RXhwb3J0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbC9JbmZvXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbC9TZWFyY2hcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9DaGVja2JveFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvRGl2aWRlclwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvSW5wdXRCYXNlXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9TdGFja1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvVGFiXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9UYWJzXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9Ub29sdGlwXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9zdHlsZXNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL3VzZU1lZGlhUXVlcnlcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAcmVkdXhqcy90b29sa2l0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQHNlbnRyeS9yZWFjdFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcImZvcm1pa1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcImkxOG5leHRcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJpMThuZXh0LWJyb3dzZXItbGFuZ3VhZ2VkZXRlY3RvclwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcImlkdG9rZW4tdmVyaWZpZXJcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJtb21lbnQtdGltZXpvbmVcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL2NvbXBvbmVudHMvcmF3LWh0bWxcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3NlY3VyaXR5L2FjdGlvbnNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3NlY3VyaXR5L21ldGhvZHNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL2FjdGlvbnNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL21ldGhvZHNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL3F1ZXJ5LWFjdGlvbnNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJwLWxpbWl0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicHJvcC10eXBlc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlYWN0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3QtaTE4bmV4dFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlYWN0LWluZmluaXRlLXNjcm9sbC1jb21wb25lbnRcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWFjdC1xci1jb2RlXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3QtcmVkdXhcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWFjdC9qc3gtcnVudGltZVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlZHV4XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVkdXgtcGVyc2lzdFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlZHV4LXBlcnNpc3QvaW50ZWdyYXRpb24vcmVhY3RcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWR1eC1wZXJzaXN0L2xpYi9zdG9yYWdlXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwieXVwXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC93ZWJwYWNrL3J1bnRpbWUvY29tcGF0IGdldCBkZWZhdWx0IGV4cG9ydCIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvd2VicGFjay9ydW50aW1lL2RlZmluZSBwcm9wZXJ0eSBnZXR0ZXJzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC93ZWJwYWNrL3J1bnRpbWUvaGFzT3duUHJvcGVydHkgc2hvcnRoYW5kIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC93ZWJwYWNrL3J1bnRpbWUvbWFrZSBuYW1lc3BhY2Ugb2JqZWN0Iiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uIHdlYnBhY2tVbml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uKHJvb3QsIGZhY3RvcnkpIHtcblx0aWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnKVxuXHRcdG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeSgpO1xuXHRlbHNlIGlmKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZClcblx0XHRkZWZpbmUoXCJteS1vcmRlcnMtdGlja2V0cy13aWRnZXRcIiwgW10sIGZhY3RvcnkpO1xuXHRlbHNlIGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0Jylcblx0XHRleHBvcnRzW1wibXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0XCJdID0gZmFjdG9yeSgpO1xuXHRlbHNlXG5cdFx0cm9vdFtcIm15LW9yZGVycy10aWNrZXRzLXdpZGdldFwiXSA9IGZhY3RvcnkoKTtcbn0pKHRoaXMsICgpID0+IHtcbnJldHVybiAiLCJpbXBvcnQge1xuICBhdXRoRXJyb3JIYW5kbGVyLFxuICBjcmVhdGVBY3Rpb24sXG4gIGRlbGV0ZVJlcXVlc3QsXG4gIGdldFJlcXVlc3QsXG4gIHB1dFJlcXVlc3QsXG4gIHN0YXJ0TG9hZGluZyxcbiAgc3RvcExvYWRpbmdcbn0gZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvYWN0aW9uc1wiO1xuaW1wb3J0IHBMaW1pdCBmcm9tIFwicC1saW1pdFwiO1xuaW1wb3J0IHsgZ2V0SWRUb2tlbiB9IGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3NlY3VyaXR5L21ldGhvZHNcIjtcbmltcG9ydCB7IG9iamVjdFRvUXVlcnlTdHJpbmcgfSBmcm9tIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9tZXRob2RzXCI7XG5pbXBvcnQgSWRUb2tlblZlcmlmaWVyIGZyb20gXCJpZHRva2VuLXZlcmlmaWVyXCI7XG5pbXBvcnQgaTE4biBmcm9tIFwiaTE4bmV4dFwiO1xuaW1wb3J0IHsgYXV0aFByb21pc2VSZWplY3QsIGdldEFjY2Vzc1Rva2VuU2FmZWx5IH0gZnJvbSBcIi4vdXRpbHMvYXV0aFwiO1xuaW1wb3J0IHtcbiAgREVGQVVMVF9JVEVNU19QRVJfUEFHRSxcbiAgRVJST1JfQ09ERVMsXG4gIEZJRlRZX1BFUl9QQUdFLFxuICBGSVJTVF9QQUdFLFxuICBQUk9NSVNFX0JBVENIX0xJTUlULFxuICBUQUJTXG59IGZyb20gXCIuL3V0aWxzL2NvbnN0YW50c1wiO1xuXG5leHBvcnQgY29uc3QgUkVTRVRfU1RBVEUgPSBcIlJFU0VUX1NUQVRFXCI7XG5leHBvcnQgY29uc3QgUkVTRVRfRklMVEVSID0gXCJSRVNFVF9GSUxURVJcIjtcbmV4cG9ydCBjb25zdCBSRVNFVF9BUElfRVJST1IgPSBcIlJFU0VUX0FQSV9FUlJPUlwiO1xuZXhwb3J0IGNvbnN0IFNFVF9TVEFURSA9IFwiU0VUX1NUQVRFXCI7XG5leHBvcnQgY29uc3QgU0VUX0FQSV9FUlJPUiA9IFwiU0VUX0FQSV9FUlJPUlwiO1xuZXhwb3J0IGNvbnN0IENIQU5HRV9GSUxURVIgPSBcIkNIQU5HRV9GSUxURVJcIjtcbmV4cG9ydCBjb25zdCBDSEFOR0VfU09SVCA9IFwiQ0hBTkdFX1NPUlRcIjtcblxuLy8gT1JERVJTIENPTlNUU1xuZXhwb3J0IGNvbnN0IEdFVF9VU0VSX09SREVSUyA9IFwiR0VUX09SREVSU1wiO1xuZXhwb3J0IGNvbnN0IFJFRlVORF9PUkRFUiA9IFwiUkVGVU5EX09SREVSXCI7XG5leHBvcnQgY29uc3QgU0VUX0FDVElWRV9PUkRFUl9JRCA9IFwiU0VUX0FDVElWRV9PUkRFUl9JRFwiO1xuZXhwb3J0IGNvbnN0IEZJTFRFUl9VU0VSX09SREVSUyA9IFwiRklMVEVSX1VTRVJfT1JERVJTXCI7XG5cbi8vIFRJQ0tFVFMgQ09OU1RTXG5leHBvcnQgY29uc3QgR0VUX01ZX0FTU0lHTkVEX1RJQ0tFVFMgPSBcIkdFVF9NWV9BU1NJR05FRF9USUNLRVRTXCI7XG5leHBvcnQgY29uc3QgVVBEQVRFX1RJQ0tFVCA9IFwiVVBEQVRFX1RJQ0tFVFwiO1xuZXhwb3J0IGNvbnN0IFJFU0VUX1RJQ0tFVCA9IFwiUkVTRVRfVElDS0VUXCI7XG5leHBvcnQgY29uc3QgUkVDRUlWRV9USUNLRVQgPSBcIlJFQ0VJVkVfVElDS0VUXCI7XG5leHBvcnQgY29uc3QgUkVNT1ZFX1RJQ0tFVF9BVFRFTkRFRSA9IFwiUkVNT1ZFX1RJQ0tFVF9BVFRFTkRFRVwiO1xuZXhwb3J0IGNvbnN0IEFTU0lHTl9USUNLRVQgPSBcIkFTU0lHTl9USUNLRVRcIjtcbmV4cG9ydCBjb25zdCBERUxFR0FURV9USUNLRVQgPSBcIkRFTEVHQVRFX1RJQ0tFVFwiO1xuZXhwb3J0IGNvbnN0IFJFRlVORF9USUNLRVQgPSBcIlJFRlVORF9USUNLRVRcIjtcbmV4cG9ydCBjb25zdCBSRVNFTkRfTk9USUZJQ0FUSU9OID0gXCJSRVNFTkRfTk9USUZJQ0FUSU9OXCI7XG5leHBvcnQgY29uc3QgR0VUX1RJQ0tFVFNfQllfT1JERVIgPSBcIkdFVF9USUNLRVRTX0JZX09SREVSXCI7XG5leHBvcnQgY29uc3QgR0VUX1RJQ0tFVFNfQllfT1JERVJfRVJST1IgPSBcIkdFVF9USUNLRVRTX0JZX09SREVSX0VSUk9SXCI7XG5leHBvcnQgY29uc3QgR0VUX09SREVSX1RJQ0tFVF9ERVRBSUxTID0gXCJHRVRfT1JERVJfVElDS0VUX0RFVEFJTFNcIjtcbmV4cG9ydCBjb25zdCBHRVRfVElDS0VUX0RFVEFJTFMgPSBcIkdFVF9USUNLRVRfREVUQUlMU1wiO1xuZXhwb3J0IGNvbnN0IFJFQ0VJVkVfRVhUUkFfUVVFU1RJT05TID0gXCJSRUNFSVZFX0VYVFJBX1FVRVNUSU9OU1wiO1xuZXhwb3J0IGNvbnN0IFRJQ0tFVF9BVFRFTkRFRV9LRVlTID0ge1xuICBlbWFpbDogXCJhdHRlbmRlZV9lbWFpbFwiLFxuICBmaXJzdE5hbWU6IFwiYXR0ZW5kZWVfZmlyc3RfbmFtZVwiLFxuICBsYXN0TmFtZTogXCJhdHRlbmRlZV9sYXN0X25hbWVcIixcbiAgY29tcGFueTogXCJhdHRlbmRlZV9jb21wYW55XCIsXG4gIGRpc2NsYWltZXJBY2NlcHRlZDogXCJkaXNjbGFpbWVyX2FjY2VwdGVkXCIsXG4gIGV4dHJhUXVlc3Rpb25zOiBcImV4dHJhX3F1ZXN0aW9uc1wiXG59O1xuZXhwb3J0IGNvbnN0IFVQREFURV9USUNLRVRTX1JFRlVORF9SRVFVRVNURUQgPVxuICBcIlVQREFURV9USUNLRVRTX1JFRlVORF9SRVFVRVNURURcIjtcblxuLy8gVVNFUiBDT05UU1xuZXhwb3J0IGNvbnN0IFNUQVJUX0xPQURJTkdfSURQX1BST0ZJTEUgPSBcIlNUQVJUX0xPQURJTkdfSURQX1BST0ZJTEVcIjtcbmV4cG9ydCBjb25zdCBTVE9QX0xPQURJTkdfSURQX1BST0ZJTEUgPSBcIlNUT1BfTE9BRElOR19JRFBfUFJPRklMRVwiO1xuZXhwb3J0IGNvbnN0IFVQREFURV9JRFBfUFJPRklMRSA9IFwiVVBEQVRFX0lEUF9QUk9GSUxFXCI7XG5leHBvcnQgY29uc3QgU0VUX1VTRVIgPSBcIlNFVF9VU0VSXCI7XG5cbi8vIFNVTU1JVCBDT05TVFNcbmV4cG9ydCBjb25zdCBTRVRfU1VNTUlUID0gXCJTRVRfU1VNTUlUXCI7XG5leHBvcnQgY29uc3QgR0VUX01BSU5fRVhUUkFfUVVFU1RJT05TID0gXCJHRVRfTUFJTl9FWFRSQV9RVUVTVElPTlNcIjtcbmV4cG9ydCBjb25zdCBSRUNFSVZFX01BUktFVElOR19TRVRUSU5HUyA9IFwiUkVDRUlWRV9NQVJLRVRJTkdfU0VUVElOR1NcIjtcbmV4cG9ydCBjb25zdCBDTEVBUl9NQVJLRVRJTkdfU0VUVElOR1MgPSBcIkNMRUFSX01BUktFVElOR19TRVRUSU5HU1wiO1xuXG5leHBvcnQgY29uc3QgcmVzZXRUaWNrZXQgPSAoKSA9PiAoZGlzcGF0Y2gpID0+IHtcbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKFJFU0VUX1RJQ0tFVCkoe30pKTtcbn07XG5cbmV4cG9ydCBjb25zdCByZXNldFN0YXRlID0gKCkgPT4gKGRpc3BhdGNoKSA9PiB7XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihSRVNFVF9TVEFURSkoe30pKTtcbn07XG5cbmV4cG9ydCBjb25zdCByZXNldEZpbHRlciA9ICgpID0+IChkaXNwYXRjaCkgPT4ge1xuICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oUkVTRVRfRklMVEVSKSh7fSkpO1xufTtcblxuZXhwb3J0IGNvbnN0IHJlc2V0RXJyb3IgPSAoKSA9PiAoZGlzcGF0Y2gpID0+IHtcbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKFJFU0VUX0FQSV9FUlJPUikoe30pKTtcbn07XG5cbmV4cG9ydCBjb25zdCBzZXRSZWR1Y2VyU3RhdGUgPSAoc3VtbWl0LCB1c2VyKSA9PiAoZGlzcGF0Y2gpID0+IHtcbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKFNFVF9TVEFURSkoeyBzdW1taXQsIHVzZXIgfSkpO1xufTtcblxuLy8gRklMVEVSIC8gU09SVCBDT05TVEFOVFNcbmV4cG9ydCBjb25zdCBGSUxURVJfVkFSX0RBVEUgPSBcIkZJTFRFUl9WQVJfREFURVwiO1xuZXhwb3J0IGNvbnN0IEZJTFRFUl9WQVJfQkFER0VfRkVBVFVSRSA9IFwiRklMVEVSX1ZBUl9CQURHRV9GRUFUVVJFXCI7XG5leHBvcnQgY29uc3QgRklMVEVSX1ZBUl9USUNLRVRfVFlQRSA9IFwiRklMVEVSX1ZBUl9USUNLRVRfVFlQRVwiO1xuZXhwb3J0IGNvbnN0IEZJTFRFUl9WQVJfVElDS0VUX0FTU0lHTkVEID0gXCJGSUxURVJfVkFSX1RJQ0tFVF9BU1NJR05FRFwiO1xuZXhwb3J0IGNvbnN0IEZJTFRFUl9WQVJfT1dORVJfU1RBVFVTID0gXCJGSUxURVJfVkFSX09XTkVSX1NUQVRVU1wiO1xuZXhwb3J0IGNvbnN0IEZJTFRFUl9WQVJfUFJPTU9DT0RFID0gXCJGSUxURVJfVkFSX1BST01PQ09ERVwiO1xuZXhwb3J0IGNvbnN0IEZJTFRFUl9WQVJfRlJFRV9QQUlEID0gXCJGSUxURVJfVkFSX0ZSRUVfUEFJRFwiO1xuZXhwb3J0IGNvbnN0IEZJTFRFUl9WQVJfT1JERVJfTlVNQkVSID0gXCJGSUxURVJfVkFSX09SREVSX05VTUJFUlwiO1xuXG4vLyBGSUxURVIgLyBTT1JUIEFDVElPTlNcbmV4cG9ydCBjb25zdCBjaGFuZ2VGaWx0ZXIgPSAoZmlsdGVyKSA9PiAoZGlzcGF0Y2gpID0+IHtcbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKENIQU5HRV9GSUxURVIpKGZpbHRlcikpO1xufTtcblxuZXhwb3J0IGNvbnN0IGNoYW5nZVNvcnQgPSAoc29ydCkgPT4gKGRpc3BhdGNoKSA9PiB7XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihDSEFOR0VfU09SVCkoc29ydCkpO1xufTtcblxuLy8gRklMVEVSL1NPUlQgUEFSU0VcbmNvbnN0IHBhcnNlRmlsdGVyID0gKGZpbHRlck9iaiwgY3VycmVudFRhYikgPT4ge1xuICBjb25zdCBmaWx0ZXIgPSBbXTtcbiAgaWYgKGZpbHRlck9iai5GSUxURVJfVkFSX0RBVEUpIHtcbiAgICBmaWx0ZXIucHVzaChgY3JlYXRlZFtdJHtmaWx0ZXJPYmoubG93ZXJ9JiYke2ZpbHRlck9iai51cHBlcn1gKTtcbiAgfVxuICBpZiAoXG4gICAgZmlsdGVyT2JqLkZJTFRFUl9WQVJfQkFER0VfRkVBVFVSRSAmJlxuICAgIGZpbHRlck9iai5GSUxURVJfVkFSX0JBREdFX0ZFQVRVUkUubGVuZ3RoID4gMFxuICApIHtcbiAgICBjb25zdCBmaWx0ZXJOYW1lID1cbiAgICAgIGN1cnJlbnRUYWIgPT09IFRBQlMuT1JERVJTXG4gICAgICAgID8gXCJ0aWNrZXRzX2JhZGdlX2ZlYXR1cmVzX2lkXCJcbiAgICAgICAgOiBcImJhZGdlX2ZlYXR1cmVzX2lkXCI7XG4gICAgZmlsdGVyLnB1c2goXG4gICAgICBgJHtmaWx0ZXJOYW1lfT09JHtmaWx0ZXJPYmouRklMVEVSX1ZBUl9CQURHRV9GRUFUVVJFLmpvaW4oXCJ8fFwiKX1gXG4gICAgKTtcbiAgfVxuICBpZiAoXG4gICAgZmlsdGVyT2JqLkZJTFRFUl9WQVJfVElDS0VUX1RZUEUgJiZcbiAgICBmaWx0ZXJPYmouRklMVEVSX1ZBUl9USUNLRVRfVFlQRS5sZW5ndGggPiAwXG4gICkge1xuICAgIGNvbnN0IGZpbHRlck5hbWUgPVxuICAgICAgY3VycmVudFRhYiA9PT0gVEFCUy5PUkRFUlMgPyBcInRpY2tldHNfdHlwZV9pZFwiIDogXCJ0aWNrZXRfdHlwZV9pZFwiO1xuICAgIGZpbHRlci5wdXNoKFxuICAgICAgYCR7ZmlsdGVyTmFtZX09PSR7ZmlsdGVyT2JqLkZJTFRFUl9WQVJfVElDS0VUX1RZUEUuam9pbihcInx8XCIpfWBcbiAgICApO1xuICB9XG4gIGlmIChmaWx0ZXJPYmouRklMVEVSX1ZBUl9USUNLRVRfQVNTSUdORUQpIHtcbiAgICBjb25zdCBmaWx0ZXJOYW1lID1cbiAgICAgIGN1cnJlbnRUYWIgPT09IFRBQlMuT1JERVJTID8gXCJ0aWNrZXRzX2Fzc2lnbmVkX3RvXCIgOiBcImFzc2lnbmVkX3RvXCI7XG4gICAgZmlsdGVyLnB1c2goYCR7ZmlsdGVyTmFtZX09PSR7ZmlsdGVyT2JqLkZJTFRFUl9WQVJfVElDS0VUX0FTU0lHTkVEfWApO1xuICB9XG4gIGlmIChmaWx0ZXJPYmouRklMVEVSX1ZBUl9PV05FUl9TVEFUVVMpIHtcbiAgICBjb25zdCBmaWx0ZXJOYW1lID1cbiAgICAgIGN1cnJlbnRUYWIgPT09IFRBQlMuT1JERVJTID8gXCJ0aWNrZXRzX293bmVyX3N0YXR1c1wiIDogXCJvd25lcl9zdGF0dXNcIjtcbiAgICBmaWx0ZXIucHVzaChgJHtmaWx0ZXJOYW1lfT09JHtmaWx0ZXJPYmouRklMVEVSX1ZBUl9PV05FUl9TVEFUVVN9YCk7XG4gIH1cbiAgaWYgKGZpbHRlck9iai5GSUxURVJfVkFSX0ZSRUVfUEFJRCkge1xuICAgIGNvbnN0IGZpbHRlck5hbWUgPSBjdXJyZW50VGFiID09PSBUQUJTLk9SREVSUyA/IFwiYW1vdW50XCIgOiBcImZpbmFsX2Ftb3VudFwiO1xuICAgIGZpbHRlci5wdXNoKFxuICAgICAgYCR7ZmlsdGVyTmFtZX0ke2ZpbHRlck9iai5GSUxURVJfVkFSX0ZSRUVfUEFJRCA9PT0gXCJGcmVlXCIgPyBcIj09MFwiIDogXCI+MFwifWBcbiAgICApO1xuICB9XG4gIGlmIChmaWx0ZXJPYmouRklMVEVSX1ZBUl9QUk9NT0NPREUpIHtcbiAgICBjb25zdCBmaWx0ZXJOYW1lID1cbiAgICAgIGN1cnJlbnRUYWIgPT09IFRBQlMuT1JERVJTID8gXCJ0aWNrZXRzX3Byb21vX2NvZGVcIiA6IFwicHJvbW9fY29kZVwiO1xuICAgIGZpbHRlci5wdXNoKGAke2ZpbHRlck5hbWV9PUAke2ZpbHRlck9iai5GSUxURVJfVkFSX1BST01PQ09ERX1gKTtcbiAgfVxuICBpZiAoZmlsdGVyT2JqLkZJTFRFUl9WQVJfT1JERVJfTlVNQkVSKSB7XG4gICAgZmlsdGVyLnB1c2goYG51bWJlcj1AJHtmaWx0ZXJPYmouRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVJ9YCk7XG4gIH1cbiAgcmV0dXJuIGZpbHRlcjtcbn07XG5cbmNvbnN0IGdldFNvcnREaXJlY3Rpb24gPSAoZGlyZWN0aW9uKSA9PiAoZGlyZWN0aW9uID09PSBcImFzY1wiID8gXCIrXCIgOiBcIi1cIik7XG5cbi8vIHBheWxvYWQ6IHsgaHR0cENvZGUsIHRpdGxlLCBodG1sOiBjb250ZW50LCB0eXBlIH1cbmNvbnN0IGVycm9ySGFuZGxlck5vdGlmeSA9IChwYXlsb2FkLCBjYWxsYmFjaykgPT4gKGRpc3BhdGNoKSA9PiB7XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihTRVRfQVBJX0VSUk9SKShwYXlsb2FkKSk7XG4gIGlmIChjYWxsYmFjaykgY2FsbGJhY2soKTtcbn07XG5cbmNvbnN0IGN1c3RvbUF1dGhFcnJvckhhbmRsZXIgPSAoZXJyLCByZXMpID0+IChkaXNwYXRjaCkgPT4ge1xuICBkaXNwYXRjaChhdXRoRXJyb3JIYW5kbGVyKGVyciwgcmVzLCBlcnJvckhhbmRsZXJOb3RpZnkpKTtcbn07XG5cbmNvbnN0IGN1c3RvbUZldGNoRXJyb3JIYW5kbGVyID0gKHJlc3BvbnNlKSA9PiAoZGlzcGF0Y2gpID0+IHtcbiAgY29uc3QgY29kZSA9IHJlc3BvbnNlLnN0YXR1cztcbiAgbGV0IG1zZztcbiAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gIHN3aXRjaCAoY29kZSkge1xuICAgIGNhc2UgRVJST1JfQ09ERVNbXCI0MDNcIl06XG4gICAgICBtc2cgPSBpMThuLnQoXCJlcnJvcnMudXNlcl9ub3RfYXV0aHpcIik7XG4gICAgICBicmVhaztcbiAgICBjYXNlIEVSUk9SX0NPREVTW1wiNDAxXCJdOlxuICAgICAgbXNnID0gaTE4bi50KFwiZXJyb3JzLnNlc3Npb25fZXhwaXJlZFwiKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgRVJST1JfQ09ERVNbXCI0MTJcIl06XG4gICAgICBtc2cgPSBcIlwiO1xuICAgICAgT2JqZWN0LmVudHJpZXMocmVzcG9uc2UuZXJyb3JzKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgICAgaWYgKE51bWJlci5pc05hTihrZXkpKSB7XG4gICAgICAgICAgbXNnID0gYCR7bXNnfSAke2tleX06IGA7XG4gICAgICAgIH1cblxuICAgICAgICBtc2cgPSBgJHttc2d9ICR7dmFsdWV9IDxicj5gO1xuICAgICAgfSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIEVSUk9SX0NPREVTW1wiNTAwXCJdOlxuICAgICAgbXNnID0gaTE4bi50KFwiZXJyb3JzLnNlcnZlcl9lcnJvclwiKTtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICBtc2cgPSByZXNwb25zZS5zdGF0dXNUZXh0O1xuICB9XG5cbiAgZGlzcGF0Y2goZXJyb3JIYW5kbGVyTm90aWZ5KHsgdGl0bGU6IGkxOG4udChcImVycm9ycy5lcnJvclwiKSwgaHRtbDogbXNnIH0pKTtcbn07XG5cbi8vIE9SREVSUyBBQ1RJT05TXG5leHBvcnQgY29uc3QgZ2V0VXNlck9yZGVycyA9XG4gICh7XG4gICAgcGFnZSA9IEZJUlNUX1BBR0UsXG4gICAgcGVyUGFnZSA9IERFRkFVTFRfSVRFTVNfUEVSX1BBR0UsXG4gICAgZmlsdGVyID0ge30sXG4gICAgc29ydCA9IHt9XG4gIH0pID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgd2lkZ2V0U3RhdGU6IHsgc3VtbWl0IH1cbiAgICB9ID0gZ2V0U3RhdGUoKTtcblxuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKTtcblxuICAgIGlmICghYWNjZXNzVG9rZW4pIHJldHVybiBhdXRoUHJvbWlzZVJlamVjdCgpO1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBvcmRlcjogXCItY3JlYXRlZFwiLFxuICAgICAgXCJmaWx0ZXJbXVwiOiBbXCJzdGF0dXM9PVBhaWRcIl0sXG4gICAgICByZWxhdGlvbnM6IFwibm9uZVwiLFxuICAgICAgcGFnZSxcbiAgICAgIHBlcl9wYWdlOiBwZXJQYWdlXG4gICAgfTtcblxuICAgIGlmIChPYmplY3Qua2V5cyhmaWx0ZXIpLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGZpbHRlcnMgPSBwYXJzZUZpbHRlcihmaWx0ZXIsIFRBQlMuT1JERVJTKTtcbiAgICAgIHBhcmFtc1tcImZpbHRlcltdXCJdID0gWy4uLnBhcmFtc1tcImZpbHRlcltdXCJdLCAuLi5maWx0ZXJzXTtcbiAgICB9XG4gICAgaWYgKE9iamVjdC5rZXlzKHNvcnQpLmxlbmd0aCA+IDApIHtcbiAgICAgIHBhcmFtcy5vcmRlciA9IGAke2dldFNvcnREaXJlY3Rpb24oc29ydC5kaXJlY3Rpb24pfSR7c29ydC5uYW1lfWA7XG4gICAgfVxuXG4gICAgcmV0dXJuIGdldFJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKEdFVF9VU0VSX09SREVSUyksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy8ke3N1bW1pdC5pZH0vb3JkZXJzL21lYCxcbiAgICAgIGN1c3RvbUF1dGhFcnJvckhhbmRsZXIsXG4gICAgICB7IGZpbHRlciwgc29ydCB9XG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKVxuICAgICAgLnRoZW4oKHBheWxvYWQpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgcmV0dXJuIGU7XG4gICAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IHNldEFjdGl2ZU9yZGVySWQgPSAob3JkZXJJZCkgPT4gYXN5bmMgKGRpc3BhdGNoKSA9PlxuICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oU0VUX0FDVElWRV9PUkRFUl9JRCkob3JkZXJJZCkpO1xuXG4vLyBVU0VSIEFDVElPTlNcbmV4cG9ydCBjb25zdCBzZXRVc2VyID0gKHVzZXIpID0+IChkaXNwYXRjaCkgPT5cbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKFNFVF9VU0VSKSh1c2VyKSk7XG5cbi8vIFRJQ0tFVCBBQ1RJT05TXG5cbmV4cG9ydCBjb25zdCBnZXRVc2VyVGlja2V0cyA9XG4gICh7XG4gICAgcGFnZSA9IEZJUlNUX1BBR0UsXG4gICAgcGVyUGFnZSA9IERFRkFVTFRfSVRFTVNfUEVSX1BBR0UsXG4gICAgZmlsdGVyID0ge30sXG4gICAgc29ydCA9IHt9XG4gIH0pID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgd2lkZ2V0U3RhdGU6IHsgc3VtbWl0LCB1c2VyIH1cbiAgICB9ID0gZ2V0U3RhdGUoKTtcbiAgICBjb25zdCB7IHVzZXJQcm9maWxlIH0gPSB1c2VyO1xuICAgIGlmICghc3VtbWl0KSByZXR1cm4gUHJvbWlzZS5yZWplY3QoKTtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCk7XG5cbiAgICBpZiAoIWFjY2Vzc1Rva2VuKSByZXR1cm4gYXV0aFByb21pc2VSZWplY3QoKTtcblxuICAgIGNvbnN0IGZpZWxkcyA9IFtcbiAgICAgIFwib3JkZXIuaWRcIixcbiAgICAgIFwib3JkZXIub3duZXJfZmlyc3RfbmFtZVwiLFxuICAgICAgXCJvcmRlci5vd25lcl9sYXN0X25hbWVcIixcbiAgICAgIFwib3JkZXIub3duZXJfZW1haWxcIixcbiAgICAgIFwib3duZXIuaWRcIixcbiAgICAgIFwib3duZXIuZW1haWxcIixcbiAgICAgIFwib3duZXIuZmlyc3RfbmFtZVwiLFxuICAgICAgXCJvd25lci5sYXN0X25hbWVcIixcbiAgICAgIFwib3duZXIuc3RhdHVzXCIsXG4gICAgICBcImJhZGdlLm5vbmVcIlxuICAgIF07XG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBcImZpbHRlcltdXCI6IFtcInN0YXR1cz09UGFpZFwiLCBgb3JkZXJfb3duZXJfaWQ8PiR7dXNlclByb2ZpbGUuaWR9YF0sXG4gICAgICBleHBhbmQ6IFwib3JkZXIsb3duZXIsdGlja2V0X3R5cGUsYmFkZ2UsYmFkZ2UuZmVhdHVyZXNcIixcbiAgICAgIG9yZGVyOiBcIi1pZFwiLFxuICAgICAgZmllbGRzOiBmaWVsZHMuam9pbihcIixcIiksXG4gICAgICByZWxhdGlvbnM6IFwibm9uZSxiYWRnZS5mZWF0dXJlc1wiLFxuICAgICAgcGFnZSxcbiAgICAgIHBlcl9wYWdlOiBwZXJQYWdlXG4gICAgfTtcbiAgICBpZiAoT2JqZWN0LmtleXMoZmlsdGVyKS5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBmaWx0ZXJzID0gcGFyc2VGaWx0ZXIoZmlsdGVyLCBUQUJTLlRJQ0tFVFMpO1xuICAgICAgcGFyYW1zW1wiZmlsdGVyW11cIl0gPSBbLi4ucGFyYW1zW1wiZmlsdGVyW11cIl0sIC4uLmZpbHRlcnNdO1xuICAgIH1cbiAgICBpZiAoT2JqZWN0LmtleXMoc29ydCkubGVuZ3RoID4gMCkge1xuICAgICAgcGFyYW1zLm9yZGVyID0gYCR7Z2V0U29ydERpcmVjdGlvbihzb3J0LmRpcmVjdGlvbil9JHtzb3J0Lm5hbWV9YDtcbiAgICB9XG4gICAgcmV0dXJuIGdldFJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKEdFVF9NWV9BU1NJR05FRF9USUNLRVRTKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzLyR7c3VtbWl0LmlkfS9vcmRlcnMvYWxsL3RpY2tldHMvbWVgLFxuICAgICAgY3VzdG9tQXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaClcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICByZXR1cm4gZTtcbiAgICAgIH0pO1xuICB9O1xuXG5leHBvcnQgY29uc3QgZ2V0VGlja2V0c0J5T3JkZXIgPVxuICAoe1xuICAgIG9yZGVySWQsXG4gICAgcGFnZSA9IEZJUlNUX1BBR0UsXG4gICAgcGVyUGFnZSA9IERFRkFVTFRfSVRFTVNfUEVSX1BBR0UsXG4gICAgZmlsdGVyLFxuICAgIHNvcnRcbiAgfSkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpO1xuXG4gICAgaWYgKCFhY2Nlc3NUb2tlbikgcmV0dXJuIGF1dGhQcm9taXNlUmVqZWN0KCk7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgXCJmaWx0ZXJbXVwiOiBbXSxcbiAgICAgIGZpZWxkczogXCJiYWRnZS5ub25lXCIsXG4gICAgICBleHBhbmQ6XG4gICAgICAgIFwicmVmdW5kX3JlcXVlc3RzLHJlZnVuZF9yZXF1ZXN0cy5yZWZ1bmRlZF90YXhlcyxyZWZ1bmRfcmVxdWVzdHMucmVmdW5kZWRfdGF4ZXMudGF4LG93bmVyLG93bmVyLmV4dHJhX3F1ZXN0aW9ucyxiYWRnZSxiYWRnZS5mZWF0dXJlcyx0aWNrZXRfdHlwZVwiLFxuICAgICAgb3JkZXI6IFwiK2lkXCIsXG4gICAgICByZWxhdGlvbnM6IFwibm9uZSxiYWRnZS5mZWF0dXJlc1wiLFxuICAgICAgcGFnZSxcbiAgICAgIHBlcl9wYWdlOiBwZXJQYWdlXG4gICAgfTtcbiAgICBpZiAoT2JqZWN0LmtleXMoZmlsdGVyKS5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBmaWx0ZXJzID0gcGFyc2VGaWx0ZXIoZmlsdGVyLCBUQUJTLlRJQ0tFVFMpO1xuICAgICAgcGFyYW1zW1wiZmlsdGVyW11cIl0gPSBbLi4ucGFyYW1zW1wiZmlsdGVyW11cIl0sIC4uLmZpbHRlcnNdO1xuICAgIH1cbiAgICBpZiAoT2JqZWN0LmtleXMoc29ydCkubGVuZ3RoID4gMCkge1xuICAgICAgcGFyYW1zLm9yZGVyID0gYCR7Z2V0U29ydERpcmVjdGlvbihzb3J0LmRpcmVjdGlvbil9JHtzb3J0Lm5hbWV9YDtcbiAgICB9XG4gICAgcmV0dXJuIGdldFJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKEdFVF9USUNLRVRTX0JZX09SREVSKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzL2FsbC9vcmRlcnMvJHtvcmRlcklkfS90aWNrZXRzYCxcbiAgICAgIGN1c3RvbUF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpXG4gICAgICAudGhlbigocGF5bG9hZCkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oR0VUX1RJQ0tFVFNfQllfT1JERVJfRVJST1IpKTtcbiAgICAgICAgcmV0dXJuIGU7XG4gICAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IHJlc2VuZE5vdGlmaWNhdGlvbiA9XG4gICh0aWNrZXQpID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpO1xuXG4gICAgaWYgKCFhY2Nlc3NUb2tlbikgcmV0dXJuIGF1dGhQcm9taXNlUmVqZWN0KCk7XG5cbiAgICBjb25zdCB7IG1lc3NhZ2UgfSA9IHRpY2tldDtcblxuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcblxuICAgIGNvbnN0IG9yZGVySWQgPSB0aWNrZXQub3JkZXIgPyB0aWNrZXQub3JkZXIuaWQgOiB0aWNrZXQub3JkZXJfaWQ7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuXG4gICAgfTtcblxuICAgIHJldHVybiBwdXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihSRVNFTkRfTk9USUZJQ0FUSU9OKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzL2FsbC9vcmRlcnMvJHtvcmRlcklkfS90aWNrZXRzLyR7dGlja2V0LmlkfS9hdHRlbmRlZS9yZWludml0ZWAsXG4gICAgICB7IG1lc3NhZ2UgfSxcbiAgICAgIGN1c3RvbUF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpXG4gICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgcmV0dXJuIGU7XG4gICAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IHJlZnVuZFRpY2tldCA9XG4gICh7IHRpY2tldCB9KSA9PlxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCk7XG5cbiAgICBpZiAoIWFjY2Vzc1Rva2VuKSByZXR1cm4gYXV0aFByb21pc2VSZWplY3QoKTtcblxuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcblxuICAgIGNvbnN0IG9yZGVySWQgPSB0aWNrZXQub3JkZXIgPyB0aWNrZXQub3JkZXIuaWQgOiB0aWNrZXQub3JkZXJfaWQ7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgZXhwYW5kOiBcInJlZnVuZF9yZXF1ZXN0cyx0aWNrZXRfdHlwZVwiLFxuICAgICAgZmllbGRzOiBcInJlZnVuZF9yZXF1ZXN0cy5zdGF0dXNcIlxuICAgIH07XG5cbiAgICByZXR1cm4gZGVsZXRlUmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oUkVGVU5EX1RJQ0tFVCksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzLyR7b3JkZXJJZH0vdGlja2V0cy8ke3RpY2tldC5pZH0vcmVmdW5kYCxcbiAgICAgIHt9LFxuICAgICAgY3VzdG9tQXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaClcbiAgICAgIC50aGVuKChwYXlsb2FkKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIHJldHVybiBlO1xuICAgICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCByZWZ1bmRCdWxrVGlja2V0cyA9XG4gICh7IHRpY2tldHMgfSkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoKSA9PiB7XG4gICAgY29uc3QgbGltaXQgPSBwTGltaXQoUFJPTUlTRV9CQVRDSF9MSU1JVCk7XG4gICAgY29uc3QgYWxsUmVmdW5kVGlja2V0Q2FsbHMgPSB0aWNrZXRzLm1hcCgodGlja2V0KSA9PlxuICAgICAgbGltaXQoKCkgPT4gZGlzcGF0Y2gocmVmdW5kVGlja2V0KHsgdGlja2V0IH0pKSlcbiAgICApO1xuICAgIHJldHVybiBQcm9taXNlLmFsbChbLi4uYWxsUmVmdW5kVGlja2V0Q2FsbHNdKVxuICAgICAgLnRoZW4oKHJlcykgPT4ge1xuICAgICAgICBjb25zdCBzdWNjZXNzZnVsbHlSZXF1ZXN0ZWQgPSByZXNcbiAgICAgICAgICAuZmlsdGVyKChyKSA9PiByLnJlc3BvbnNlPy5yZWZ1bmRfcmVxdWVzdHM/Lmxlbmd0aClcbiAgICAgICAgICAubWFwKChyKSA9PiByLnJlc3BvbnNlKTtcbiAgICAgICAgcmV0dXJuIHN1Y2Nlc3NmdWxseVJlcXVlc3RlZDtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGUpID0+IGUpO1xuICB9O1xuXG4vLyB1cGRhdGUgdGhlIHRpY2tldHMgdGhhdCBoYXZlIGJlZW4gc3VjZXNzZnVsbHkgcmVmdW5kZWRcbmV4cG9ydCBjb25zdCB1cGRhdGVUaWNrZXRzUmVmdW5kUmVxdWVzdGVkID1cbiAgKHRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQpID0+IChkaXNwYXRjaCkgPT5cbiAgICBkaXNwYXRjaChcbiAgICAgIGNyZWF0ZUFjdGlvbihVUERBVEVfVElDS0VUU19SRUZVTkRfUkVRVUVTVEVEKSh0aWNrZXRzUmVmdW5kUmVxdWVzdGVkKVxuICAgICk7XG5cbi8vIFNVTU1JVCBBQ1RJT05TXG5cbmV4cG9ydCBjb25zdCBnZXRFeHRyYVF1ZXN0aW9ucyA9XG4gIChhdHRlbmRlZUlkKSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIHdpZGdldFN0YXRlOiB7IHN1bW1pdCB9XG4gICAgfSA9IGdldFN0YXRlKCk7XG5cbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCk7XG5cbiAgICBpZiAoIWFjY2Vzc1Rva2VuKSByZXR1cm4gYXV0aFByb21pc2VSZWplY3QoKTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIHBhZ2U6IDEsXG4gICAgICBwZXJfcGFnZTogRklGVFlfUEVSX1BBR0UsXG4gICAgICBleHBhbmQ6IFwiKnN1Yl9xdWVzdGlvbl9ydWxlcywqc3ViX3F1ZXN0aW9uLCp2YWx1ZXNcIixcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBcImZpbHRlcltdXCI6IFwidGlja2V0c19leGNsdWRlX2luYWN0aXZlcz09dHJ1ZVwiXG4gICAgfTtcblxuICAgIGNvbnN0IGVuZHBvaW50ID0gYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvJHtzdW1taXQuaWR9L2F0dGVuZGVlcy8ke2F0dGVuZGVlSWR9L2FsbG93ZWQtZXh0cmEtcXVlc3Rpb25zYDtcblxuICAgIHJldHVybiBnZXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihSRUNFSVZFX0VYVFJBX1FVRVNUSU9OUyksXG4gICAgICBlbmRwb2ludCxcbiAgICAgIGN1c3RvbUF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpLnRoZW4oKCkgPT4ge1xuICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCBnZXRUaWNrZXQgPVxuICAodGlja2V0SWQsIG9yZGVySWQpID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpO1xuXG4gICAgaWYgKCFhY2Nlc3NUb2tlbikgcmV0dXJuIGF1dGhQcm9taXNlUmVqZWN0KCk7XG5cbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgZXhwYW5kOlxuICAgICAgICBcIm93bmVyLG93bmVyLmV4dHJhX3F1ZXN0aW9ucyxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24sdGlja2V0X3R5cGUsb3JkZXIscHJvbW9fY29kZVwiLFxuICAgICAgcmVsYXRpb25zOlxuICAgICAgICBcIm93bmVyLmV4dHJhX3F1ZXN0aW9ucyxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24ubm9uZSxwcm9tb19jb2RlLm5vbmUsdGlja2V0X3R5cGUubm9uZVwiLFxuICAgICAgZmllbGRzOlxuICAgICAgICBcIm93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi5pZCxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24ubmFtZSxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24udHlwZSxwcm9tb19jb2RlLmlkLHByb21vX2NvZGUuY29kZSxwcm9tb19jb2RlLmFsbG93c190b19kZWxlZ2F0ZSxwcm9tb19jb2RlLmFsbG93c190b19yZWFzc2lnbix0aWNrZXRfdHlwZS5pZCx0aWNrZXRfdHlwZS5uYW1lLHRpY2tldF90eXBlLmFsbG93c190b19kZWxlZ2F0ZSx0aWNrZXRfdHlwZS5hbGxvd3NfdG9fcmVhc3NpZ24sdGlja2V0X3R5cGUuY29zdCx0aWNrZXRfdHlwZS5jcmVhdGVkXCJcbiAgICB9O1xuXG4gICAgY29uc3QgZW5kcG9pbnQgPSBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzLyR7b3JkZXJJZH0vdGlja2V0cy8ke3RpY2tldElkfWA7XG5cbiAgICByZXR1cm4gZ2V0UmVxdWVzdChcbiAgICAgIGNyZWF0ZUFjdGlvbihSRVNFVF9USUNLRVQpLFxuICAgICAgY3JlYXRlQWN0aW9uKFJFQ0VJVkVfVElDS0VUKSxcbiAgICAgIGVuZHBvaW50LFxuICAgICAgY3VzdG9tQXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaCkuZmluYWxseSgoKSA9PiB7XG4gICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICB9KTtcbiAgfTtcblxuY29uc3Qgbm9ybWFsaXplVGlja2V0ID0gKGVudGl0eSkgPT4ge1xuICBjb25zdCBub3JtYWxpemVkRW50aXR5ID0geyAuLi5lbnRpdHkgfTtcblxuICBpZiAoIWVudGl0eS5hdHRlbmRlZV9jb21wYW55LmlkKSB7XG4gICAgbm9ybWFsaXplZEVudGl0eS5hdHRlbmRlZV9jb21wYW55ID0gZW50aXR5LmF0dGVuZGVlX2NvbXBhbnk7XG4gIH0gZWxzZSB7XG4gICAgZGVsZXRlIG5vcm1hbGl6ZWRFbnRpdHkuYXR0ZW5kZWVfY29tcGFueTtcbiAgICBub3JtYWxpemVkRW50aXR5LmF0dGVuZGVlX2NvbXBhbnlfaWQgPSBlbnRpdHkuYXR0ZW5kZWVfY29tcGFueS5pZDtcbiAgfVxuXG4gIHJldHVybiBub3JtYWxpemVkRW50aXR5O1xufTtcblxuZXhwb3J0IGNvbnN0IHJlZnJlc2hQcm9maWxlID1cbiAgKGRhdGEsIGNvbXBhbnksIHRpY2tldE93bmVyKSA9PlxuICAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IHVwZGF0ZVByb2ZpbGUgfSkgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIHdpZGdldFN0YXRlOiB7IHVzZXIgfVxuICAgIH0gPSBnZXRTdGF0ZSgpO1xuICAgIGNvbnN0IHsgdXNlclByb2ZpbGUgfSA9IHVzZXI7XG5cbiAgICAvLyBlbWFpbCBzaG91bGQgbWF0Y2ggKCBvbmx5IHVwZGF0ZSBteSBwcm9maWxlIGlzIHRpY2tldCBiZWxvbmdzIHRvIG1lISlcbiAgICAvLyBhbmQgaWYgdGhlIHRpY2tldCBkb2Vzbid0IGhhdmUgYSBtYW5hZ2VyXG4gICAgLy8gQ2hlY2sgaWYgdGhlcmUncyBjaGFuZ2VzIGluIHRoZSB0aWNrZXQgZGF0YSB0byB1cGRhdGUgdGhlIHByb2ZpbGVcbiAgICBjb25zdCB7XG4gICAgICBhdHRlbmRlZV9lbWFpbCxcbiAgICAgIGF0dGVuZGVlX2ZpcnN0X25hbWUsXG4gICAgICBhdHRlbmRlZV9sYXN0X25hbWUsXG4gICAgICBhdHRlbmRlZV9jb21wYW55XG4gICAgfSA9IGRhdGE7XG4gICAgY29uc3QgaGFzTWFuYWdlciA9IHRpY2tldE93bmVyPy5tYW5hZ2VyPy5pZCB8fCB0aWNrZXRPd25lcj8ubWFuYWdlcl9pZDtcbiAgICBjb25zdCBpdHNNZSA9IHVzZXJQcm9maWxlLmVtYWlsID09PSBhdHRlbmRlZV9lbWFpbDtcbiAgICBjb25zdCBwcm9maWxlQ2hhbmdlZCA9XG4gICAgICBhdHRlbmRlZV9jb21wYW55Lm5hbWUgIT09IGNvbXBhbnkgfHxcbiAgICAgIGF0dGVuZGVlX2ZpcnN0X25hbWUgIT09IHVzZXJQcm9maWxlLmZpcnN0X25hbWUgfHxcbiAgICAgIGF0dGVuZGVlX2xhc3RfbmFtZSAhPT0gdXNlclByb2ZpbGUubGFzdF9uYW1lO1xuXG4gICAgaWYgKGl0c01lICYmICFoYXNNYW5hZ2VyICYmIHByb2ZpbGVDaGFuZ2VkKSB7XG4gICAgICBjb25zdCBuZXdQcm9maWxlID0ge1xuICAgICAgICBmaXJzdF9uYW1lOiBhdHRlbmRlZV9maXJzdF9uYW1lLFxuICAgICAgICBsYXN0X25hbWU6IGF0dGVuZGVlX2xhc3RfbmFtZSxcbiAgICAgICAgY29tcGFueTogYXR0ZW5kZWVfY29tcGFueS5uYW1lIHx8IGF0dGVuZGVlX2NvbXBhbnlcbiAgICAgIH07XG5cbiAgICAgIC8vIHRoaXMgaXMgYSBjYWxsYmFjayBtZXRob2QgdGhhdCB1cGRhdGVzIHVzZXJQcm9maWxlIGluIEFQSSBhbmQgZXZlbnQtc2l0ZVxuICAgICAgdXBkYXRlUHJvZmlsZShuZXdQcm9maWxlKTtcbiAgICB9XG4gIH07XG5cbmV4cG9ydCBjb25zdCBzYXZlVGlja2V0RGV0YWlscyA9XG4gICh0aWNrZXQsIGFuc3dlcnMpID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpO1xuXG4gICAgaWYgKCFhY2Nlc3NUb2tlbikgcmV0dXJuIGF1dGhQcm9taXNlUmVqZWN0KCk7XG5cbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgZXhwYW5kOlxuICAgICAgICBcInJlZnVuZF9yZXF1ZXN0cyxvd25lcixvd25lci5leHRyYV9xdWVzdGlvbnMsYmFkZ2UsYmFkZ2UuZmVhdHVyZXMsdGlja2V0X3R5cGVcIlxuICAgIH07XG5cbiAgICBjb25zdCBpZFRva2VuID0gZ2V0SWRUb2tlbigpO1xuICAgIGxldCBjb21wYW55ID0gXCJcIjtcbiAgICBpZiAoaWRUb2tlbikge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgdmVyaWZpZXIgPSBuZXcgSWRUb2tlblZlcmlmaWVyKCk7XG4gICAgICAgIGNvbnN0IGp3dCA9IHZlcmlmaWVyLmRlY29kZShpZFRva2VuKTtcbiAgICAgICAgY29tcGFueSA9IGp3dC5wYXlsb2FkLmNvbXBhbnk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiZXJyb3JcIiwgZSk7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IG5vcm1hbGl6ZWRFbnRpdHkgPSBub3JtYWxpemVUaWNrZXQoYW5zd2Vycyk7XG5cbiAgICByZXR1cm4gcHV0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oVVBEQVRFX1RJQ0tFVCksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzL2FsbC90aWNrZXRzLyR7dGlja2V0LmlkfWAsXG4gICAgICBub3JtYWxpemVkRW50aXR5LFxuICAgICAgY3VzdG9tQXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaClcbiAgICAgIC50aGVuKGFzeW5jICgpID0+IHtcbiAgICAgICAgZGlzcGF0Y2gocmVmcmVzaFByb2ZpbGUoYW5zd2VycywgY29tcGFueSwgdGlja2V0Lm93bmVyKSk7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgcmV0dXJuIGU7XG4gICAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IGFzc2lnbkF0dGVuZGVlID1cbiAgKG9yZGVySWQsIHRpY2tldElkLCBhdHRlbmRlZV9lbWFpbCwgbWVzc2FnZSA9IG51bGwpID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpO1xuXG4gICAgY29uc3QgcGF5bG9hZCA9IHsgYXR0ZW5kZWVfZW1haWwgfTtcbiAgICBpZiAobWVzc2FnZSkgcGF5bG9hZC5tZXNzYWdlID0gbWVzc2FnZTtcblxuICAgIGlmICghYWNjZXNzVG9rZW4pIHJldHVybiBhdXRoUHJvbWlzZVJlamVjdCgpO1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIGV4cGFuZDpcbiAgICAgICAgXCJvd25lcixvd25lci5leHRyYV9xdWVzdGlvbnMsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLHRpY2tldF90eXBlLG9yZGVyXCIsXG4gICAgICByZWxhdGlvbnM6IFwib3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLm5vbmVcIixcbiAgICAgIGZpZWxkczpcbiAgICAgICAgXCJvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24uaWQsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLm5hbWUsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLnR5cGVcIlxuICAgIH07XG5cbiAgICByZXR1cm4gcHV0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oQVNTSUdOX1RJQ0tFVCksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzLyR7b3JkZXJJZH0vdGlja2V0cy8ke3RpY2tldElkfS9hdHRlbmRlZWAsXG4gICAgICBwYXlsb2FkLFxuICAgICAgY3VzdG9tQXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaCkuZmluYWxseSgoKSA9PiB7XG4gICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IHJlYXNzaWduVGlja2V0ID1cbiAgKG9yZGVySWQsIHRpY2tldElkLCBlbWFpbCwgbWVzc2FnZSkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCk7XG5cbiAgICBpZiAoIWFjY2Vzc1Rva2VuKSByZXR1cm4gYXV0aFByb21pc2VSZWplY3QoKTtcblxuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBleHBhbmQ6IFwib3JkZXIsIG93bmVyLCBvd25lci5leHRyYV9xdWVzdGlvbnMsIG9yZGVyLnN1bW1pdFwiXG4gICAgfTtcblxuICAgIHJldHVybiBkZWxldGVSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihSRU1PVkVfVElDS0VUX0FUVEVOREVFKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzL2FsbC9vcmRlcnMvJHtvcmRlcklkfS90aWNrZXRzLyR7dGlja2V0SWR9L2F0dGVuZGVlYCxcbiAgICAgIHt9LFxuICAgICAgY3VzdG9tQXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaCkudGhlbigoKSA9PlxuICAgICAgZGlzcGF0Y2goYXNzaWduQXR0ZW5kZWUob3JkZXJJZCwgdGlja2V0SWQsIGVtYWlsLCBtZXNzYWdlKSlcbiAgICApO1xuICB9O1xuXG5leHBvcnQgY29uc3QgZGVsZWdhdGVUaWNrZXQgPVxuICAob3JkZXJJZCwgdGlja2V0SWQsIGZpcnN0TmFtZSwgbGFzdE5hbWUsIGVtYWlsKSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKTtcbiAgICBjb25zdCB7XG4gICAgICB3aWRnZXRTdGF0ZTogeyBzdW1taXQgfVxuICAgIH0gPSBnZXRTdGF0ZSgpO1xuICAgIGNvbnN0IHBheWxvYWQgPSB7XG4gICAgICBhdHRlbmRlZV9maXJzdF9uYW1lOiBmaXJzdE5hbWUsXG4gICAgICBhdHRlbmRlZV9sYXN0X25hbWU6IGxhc3ROYW1lLFxuICAgICAgYXR0ZW5kZWVfZW1haWw6IGVtYWlsXG4gICAgfTtcblxuICAgIGlmICghYWNjZXNzVG9rZW4pIHJldHVybiBhdXRoUHJvbWlzZVJlamVjdCgpO1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIGV4cGFuZDpcbiAgICAgICAgXCJvd25lcixvd25lci5leHRyYV9xdWVzdGlvbnMsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLHRpY2tldF90eXBlLG9yZGVyXCIsXG4gICAgICByZWxhdGlvbnM6IFwib3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLm5vbmVcIixcbiAgICAgIGZpZWxkczpcbiAgICAgICAgXCJvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24uaWQsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLm5hbWUsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLnR5cGVcIlxuICAgIH07XG5cbiAgICByZXR1cm4gcHV0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oREVMRUdBVEVfVElDS0VUKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzLyR7c3VtbWl0LmlkfS9vcmRlcnMvJHtvcmRlcklkfS90aWNrZXRzLyR7dGlja2V0SWR9L2RlbGVnYXRlYCxcbiAgICAgIHBheWxvYWQsXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKS5maW5hbGx5KCgpID0+IHtcbiAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgIH0pO1xuICB9O1xuXG5leHBvcnQgY29uc3Qgc2F2ZUV4dHJhUXVlc3Rpb25zID1cbiAgKHRpY2tldCwgYW5zd2VycykgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCk7XG5cbiAgICBpZiAoIWFjY2Vzc1Rva2VuKSByZXR1cm4gYXV0aFByb21pc2VSZWplY3QoKTtcblxuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBleHBhbmQ6XG4gICAgICAgIFwicmVmdW5kX3JlcXVlc3RzLG93bmVyLG93bmVyLmV4dHJhX3F1ZXN0aW9ucyxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24sYmFkZ2UsYmFkZ2UuZmVhdHVyZXMsdGlja2V0X3R5cGUsb3JkZXJcIixcbiAgICAgIHJlbGF0aW9uczogXCJvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24ubm9uZVwiLFxuICAgICAgZmllbGRzOlxuICAgICAgICBcIm93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi5pZCxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24ubmFtZSxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24udHlwZVwiXG4gICAgfTtcblxuICAgIHJldHVybiBwdXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihVUERBVEVfVElDS0VUKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzL2FsbC9vcmRlcnMvYWxsL3RpY2tldHMvJHt0aWNrZXQuaWR9YCxcbiAgICAgIGFuc3dlcnMsXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKVxuICAgICAgLnRoZW4oYXN5bmMgKCkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIHJldHVybiBlO1xuICAgICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCBnZXRUaWNrZXRQREYgPVxuICAodGlja2V0KSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKTtcblxuICAgIGlmICghYWNjZXNzVG9rZW4pIHJldHVybiBhdXRoUHJvbWlzZVJlamVjdCgpO1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlblxuICAgIH07XG5cbiAgICBjb25zdCBvcmRlcklkID0gdGlja2V0Lm9yZGVyID8gdGlja2V0Lm9yZGVyLmlkIDogdGlja2V0Lm9yZGVyX2lkO1xuXG4gICAgY29uc3QgcXVlcnlTdHJpbmcgPSBvYmplY3RUb1F1ZXJ5U3RyaW5nKHBhcmFtcyk7XG4gICAgY29uc3QgYXBpVXJsID0gYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvYWxsL29yZGVycy8ke29yZGVySWR9L3RpY2tldHMvJHt0aWNrZXQuaWR9L3BkZj8ke3F1ZXJ5U3RyaW5nfWA7XG5cbiAgICByZXR1cm4gZmV0Y2goYXBpVXJsLCB7XG4gICAgICByZXNwb25zZVR5cGU6IFwiQmxvYlwiLFxuICAgICAgaGVhZGVyczogeyBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL3BkZlwiIH1cbiAgICB9KVxuICAgICAgLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgICB0aHJvdyByZXNwb25zZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gcmVzcG9uc2UuYmxvYigpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICAgLnRoZW4oKHBkZikgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgY29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJhXCIpO1xuICAgICAgICBjb25zdCB1cmwgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChwZGYpO1xuICAgICAgICBsaW5rLmhyZWYgPSB1cmw7XG4gICAgICAgIGxpbmsuZG93bmxvYWQgPSBcInRpY2tldC5wZGZcIjtcbiAgICAgICAgbGluay5kaXNwYXRjaEV2ZW50KG5ldyBNb3VzZUV2ZW50KFwiY2xpY2tcIikpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaChjdXN0b21GZXRjaEVycm9ySGFuZGxlcik7XG4gIH07XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlRm9ybWlrIH0gZnJvbSBcImZvcm1pa1wiO1xuaW1wb3J0IEV4dHJhUXVlc3Rpb25zRmllbGRzIGZyb20gXCIuLi9FeHRyYVF1ZXN0aW9uc0ZpZWxkc1wiO1xuaW1wb3J0IEZvcm1Gb290ZXIgZnJvbSBcIi4uL0Zvcm1Gb290ZXJcIjtcbmltcG9ydCB1c2VTY3JvbGxUb0Vycm9yIGZyb20gXCIuLi8uLi9ob29rcy91c2VTY3JvbGxUb0Vycm9yXCI7XG5pbXBvcnQgUmVnaXN0cmF0aW9uRGlzY2xhaW1lciBmcm9tIFwiLi4vVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvUmVnaXN0cmF0aW9uRGlzY2xhaW1lci9SZWdpc3RyYXRpb25EaXNjbGFpbWVyXCI7XG5pbXBvcnQgeyBidWlsZFZhbGlkYXRpb25TY2hlbWEsIHBhcnNlQW5zd2VycyB9IGZyb20gXCIuLi8uLi91dGlscy90aWNrZXRVdGlsc1wiO1xuXG5jb25zdCBBc3NpZ25FUUZvcm0gPSAoe1xuICB0aWNrZXQsXG4gIHN1bW1pdCxcbiAgZXh0cmFRdWVzdGlvbnMsXG4gIG9uU3VibWl0LFxuICBvbkNsb3NlXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcblxuICBjb25zdCBmb3JtaWsgPSB1c2VGb3JtaWsoe1xuICAgIGluaXRpYWxWYWx1ZXM6IHBhcnNlQW5zd2Vycyh0aWNrZXQub3duZXIsIGV4dHJhUXVlc3Rpb25zLCB7fSwgZmFsc2UsIHRydWUpLFxuICAgIHZhbGlkYXRpb25TY2hlbWE6IGJ1aWxkVmFsaWRhdGlvblNjaGVtYShcbiAgICAgIGV4dHJhUXVlc3Rpb25zLFxuICAgICAgZmFsc2UsXG4gICAgICBzdW1taXQucmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfbWFuZGF0b3J5XG4gICAgKSxcbiAgICBvblN1Ym1pdDogKHZhbHVlcykgPT4ge1xuICAgICAgY29uc3QgcmVsZXZhbnRBbnN3ZXJzID0gcGFyc2VBbnN3ZXJzKFxuICAgICAgICB0aWNrZXQub3duZXIsXG4gICAgICAgIGV4dHJhUXVlc3Rpb25zLFxuICAgICAgICB2YWx1ZXMsXG4gICAgICAgIGZhbHNlLFxuICAgICAgICB0cnVlLFxuICAgICAgICB0cnVlXG4gICAgICApO1xuICAgICAgcmV0dXJuIG9uU3VibWl0KHJlbGV2YW50QW5zd2Vycyk7XG4gICAgfSxcbiAgICBlbmFibGVSZWluaXRpYWxpemU6IHRydWVcbiAgfSk7XG5cbiAgLy8gY29uc29sZS5sb2coXCJTVU1NSVQ6IFwiLCBzdW1taXQpO1xuICAvLyBjb25zb2xlLmxvZyhcIlRJQ0tFVDogXCIsIHRpY2tldCk7XG4gIC8vIGNvbnNvbGUubG9nKFwiUVVFU1RJVU9OczogXCIsIGV4dHJhUXVlc3Rpb25zKTtcbiAgLy8gY29uc29sZS5sb2coXCJBTlNXRVJTOiBcIiwgYW5zd2Vycyk7XG4gIC8vIGNvbnNvbGUubG9nKFwiRVJST1JzOiBcIiwgZm9ybWlrLmVycm9ycyk7XG4gIC8vIGNvbnNvbGUubG9nKFwiVkFMVUVTOiBcIiwgZm9ybWlrLnZhbHVlcyk7XG4gIC8vIGNvbnNvbGUubG9nKFwiSU5JVElBTDogXCIsIGZvcm1pay5pbml0aWFsVmFsdWVzKTtcbiAgLy8gY29uc29sZS5sb2coXCJUT1VDSEVEOiBcIiwgZm9ybWlrLnRvdWNoZWQpO1xuXG4gIC8vIFNDUk9MTCBUTyBFUlJPUlxuICB1c2VTY3JvbGxUb0Vycm9yKGZvcm1paywgXCJyZWFzc2lnbkRyYXdlclwiKTtcblxuICBpZiAoZXh0cmFRdWVzdGlvbnM/Lmxlbmd0aCA9PT0gMCkgcmV0dXJuIG51bGw7XG5cbiAgcmV0dXJuIChcbiAgICA8Zm9ybSBvblN1Ym1pdD17Zm9ybWlrLmhhbmRsZVN1Ym1pdH0gbm9WYWxpZGF0ZT5cbiAgICAgIDxCb3g+XG4gICAgICAgIDxFeHRyYVF1ZXN0aW9uc0ZpZWxkcyBleHRyYVF1ZXN0aW9ucz17ZXh0cmFRdWVzdGlvbnN9IGZvcm1paz17Zm9ybWlrfSAvPlxuICAgICAgICB7c3VtbWl0LnJlZ2lzdHJhdGlvbl9kaXNjbGFpbWVyX2NvbnRlbnQgJiYgKFxuICAgICAgICAgIDxSZWdpc3RyYXRpb25EaXNjbGFpbWVyXG4gICAgICAgICAgICBmb3JtaWs9e2Zvcm1pa31cbiAgICAgICAgICAgIGRpc2NsYWltZXI9e3N1bW1pdC5yZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9jb250ZW50fVxuICAgICAgICAgICAgaXNSZXF1aXJlZD17c3VtbWl0LnJlZ2lzdHJhdGlvbl9kaXNjbGFpbWVyX21hbmRhdG9yeX1cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgPC9Cb3g+XG4gICAgICA8Rm9ybUZvb3RlclxuICAgICAgICBzYXZlTGFiZWw9e3QoXCJ0aWNrZXRfYXNzaWduLmV4dHJhX3F1ZXN0aW9uc19mb3JtLnNhdmVcIil9XG4gICAgICAgIGNhbmNlbExhYmVsPXt0KFwidGlja2V0X2Fzc2lnbi5leHRyYV9xdWVzdGlvbnNfZm9ybS5jYW5jZWxcIil9XG4gICAgICAgIG9uQ2xvc2U9e29uQ2xvc2V9XG4gICAgICAgIGRpc2FibGVkPXtmb3JtaWsuaXNTdWJtaXR0aW5nfVxuICAgICAgLz5cbiAgICA8L2Zvcm0+XG4gICk7XG59O1xuXG5Bc3NpZ25FUUZvcm0ucHJvcFR5cGVzID0ge1xuICB0aWNrZXQ6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIGV4dHJhUXVlc3Rpb25zOiBQcm9wVHlwZXMuYXJyYXkuaXNSZXF1aXJlZCxcbiAgb25TdWJtaXQ6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIG9uQ2xvc2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWRcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEFzc2lnbkVRRm9ybTtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCBDb250ZW50Q29weUljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ29udGVudENvcHlcIjtcbmltcG9ydCB7IFRvb2x0aXAgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgTUlMTElTRUNfVE9fU0VDIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnN0YW50c1wiO1xuXG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IGRlZmF1bHRXaWR0aCA9IDkwO1xuXG5jb25zdCBDb3B5VGV4dCA9ICh7XG4gIHRleHQsXG4gIHRvb2x0aXBUZXh0LFxuICBoaWRlQ29weSA9IGZhbHNlLFxuICB0cnVuY2F0ZWQgPSB0cnVlLFxuICByZXZlcnNlZCA9IGZhbHNlLFxuICB3aWR0aCA9IGRlZmF1bHRXaWR0aFxufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IHRvb2x0aXBUZXh0VG9Vc2UgPSB0b29sdGlwVGV4dCB8fCB0KFwiZ2VuZXJhbC5jb3B5X3RvX2NsaXBib2FyZFwiKTtcbiAgY29uc3QgW3Rvb2x0aXAsIHNldFRvb2x0aXBdID0gUmVhY3QudXNlU3RhdGUodG9vbHRpcFRleHRUb1VzZSk7XG4gIGNvbnN0IGNsYXNzTmFtZXMgPSBgJHt0cnVuY2F0ZWQgJiYgc3R5bGVzLnRydW5jYXRlZH0gJHtcbiAgICByZXZlcnNlZCAmJiBzdHlsZXMucmV2ZXJzZWRcbiAgfWA7XG5cbiAgY29uc3QgaGFuZGxlQ29weSA9ICgpID0+IHtcbiAgICBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dCh0ZXh0KTtcbiAgICBzZXRUb29sdGlwKHQoXCJnZW5lcmFsLmNvcGllZFwiKSk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBzZXRUb29sdGlwKHRvb2x0aXBUZXh0VG9Vc2UpO1xuICAgIH0sIE1JTExJU0VDX1RPX1NFQyk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLndyYXBwZXJ9PlxuICAgICAgPHNwYW4gY2xhc3NOYW1lPXtjbGFzc05hbWVzfSBzdHlsZT17eyB3aWR0aCB9fT5cbiAgICAgICAge3RleHR9XG4gICAgICA8L3NwYW4+XG4gICAgICB7IWhpZGVDb3B5ICYmIChcbiAgICAgICAgPFRvb2x0aXAgdGl0bGU9e3Rvb2x0aXB9PlxuICAgICAgICAgIDxDb250ZW50Q29weUljb25cbiAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNvcHlJY29ufVxuICAgICAgICAgICAgb25DbGljaz17aGFuZGxlQ29weX1cbiAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwiY29weS1udW1iZXItYnV0dG9uXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICApfVxuICAgIDwvZGl2PlxuICApO1xufTtcblxuQ29weVRleHQucHJvcFR5cGVzID0ge1xuICB0ZXh0OiBQcm9wVHlwZXMuc3RyaW5nLFxuICB0b29sdGlwVGV4dDogUHJvcFR5cGVzLnN0cmluZyxcbiAgaGlkZUNvcHk6IFByb3BUeXBlcy5ib29sLFxuICB0cnVuY2F0ZWQ6IFByb3BUeXBlcy5ib29sLFxuICByZXZlcnNlZDogUHJvcFR5cGVzLmJvb2wsXG4gIHdpZHRoOiBQcm9wVHlwZXMubnVtYmVyXG59O1xuXG5leHBvcnQgZGVmYXVsdCBDb3B5VGV4dDtcbiIsImltcG9ydCB7IGNyZWF0ZUNvbnRleHQgfSBmcm9tIFwicmVhY3RcIjtcblxuY29uc3QgZGVmYXVsdENvbnRleHRWYWx1ZSA9IHtcbiAgc2V0TWVzc2FnZTogKCkgPT4ge30sXG4gIHNldE1lc3NhZ2VDYWxsYmFjazogKCkgPT4ge31cbn07XG5cbmNvbnN0IEN1c3RvbURpYWxvZ0NvbnRleHQgPSBjcmVhdGVDb250ZXh0KGRlZmF1bHRDb250ZXh0VmFsdWUpO1xuXG5leHBvcnQgZGVmYXVsdCBDdXN0b21EaWFsb2dDb250ZXh0O1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHtcbiAgRGlhbG9nLFxuICBEaWFsb2dDb250ZW50LFxuICBEaWFsb2dDb250ZW50VGV4dCxcbiAgRGlhbG9nVGl0bGVcbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcblxuY29uc3QgQ3VzdG9tRGlhbG9nID0gKHsgb3Blbiwgb25DbG9zZSwgdGl0bGUsIGJvZHkgfSkgPT4gKFxuICA8RGlhbG9nXG4gICAgb3Blbj17b3Blbn1cbiAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgIGFyaWEtbGFiZWxsZWRieT1cImFsZXJ0LWRpYWxvZy10aXRsZVwiXG4gICAgYXJpYS1kZXNjcmliZWRieT1cImFsZXJ0LWRpYWxvZy1kZXNjcmlwdGlvblwiXG4gID5cbiAgICA8RGlhbG9nVGl0bGUgaWQ9XCJhbGVydC1kaWFsb2ctdGl0bGVcIj57dGl0bGV9PC9EaWFsb2dUaXRsZT5cbiAgICA8RGlhbG9nQ29udGVudD5cbiAgICAgIDxEaWFsb2dDb250ZW50VGV4dFxuICAgICAgICBpZD1cImFsZXJ0LWRpYWxvZy1kZXNjcmlwdGlvblwiXG4gICAgICAgIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MPXt7IF9faHRtbDogYm9keSB9fVxuICAgICAgLz5cbiAgICA8L0RpYWxvZ0NvbnRlbnQ+XG4gIDwvRGlhbG9nPlxuKTtcblxuQ3VzdG9tRGlhbG9nLnByb3BUeXBlcyA9IHtcbiAgb3BlbjogUHJvcFR5cGVzLmJvb2wsXG4gIG9uQ2xvc2U6IFByb3BUeXBlcy5mdW5jLFxuICB0aXRsZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgYm9keTogUHJvcFR5cGVzLnN0cmluZ1xufTtcblxuZXhwb3J0IGRlZmF1bHQgQ3VzdG9tRGlhbG9nO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgVGhlbWVQcm92aWRlciB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBjcmVhdGVUaGVtZSB9IGZyb20gXCJAbXVpL21hdGVyaWFsL3N0eWxlc1wiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuXG5sZXQgZGFya0NvbG9yID0gXCJcIjtcbmlmICh0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gIC8vIEdldCB0aGUgcm9vdCBlbGVtZW50XG4gIGNvbnN0IHJvb3QgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG5cbiAgLy8gUmV0cmlldmUgdGhlIGN1cnJlbnQgdmFsdWUgb2YgYSBDU1MgdmFyaWFibGVcbiAgZGFya0NvbG9yID0gZ2V0Q29tcHV0ZWRTdHlsZShyb290KS5nZXRQcm9wZXJ0eVZhbHVlKFxuICAgIFwiLS1jb2xvcl9iYWNrZ3JvdW5kX2RhcmtcIlxuICApO1xufVxuXG5jb25zdCB0aGVtZSA9IGNyZWF0ZVRoZW1lKHtcbiAgcGFsZXR0ZToge1xuICAgIHByaW1hcnk6IHtcbiAgICAgIG1haW46IGRhcmtDb2xvclxuICAgIH0sXG4gICAgdGV4dDoge1xuICAgICAgcHJpbWFyeTogXCIjMDAwMDAwREVcIixcbiAgICAgIHNlY29uZGFyeTogXCIjMDAwMDAwOTlcIlxuICAgIH1cbiAgfSxcbiAgdHlwb2dyYXBoeToge1xuICAgIGJvZHkxOiB7XG4gICAgICBmb250U2l6ZTogXCIxZW1cIlxuICAgIH0sXG4gICAgaDU6IHtcbiAgICAgIGZvbnRTaXplOiBcIjEuNmVtXCIsXG4gICAgICBmb250V2VpZ2h0OiA0MDAsXG4gICAgICBcIiYuTXVpVHlwb2dyYXBoeS1ndXR0ZXJCb3R0b21cIjoge1xuICAgICAgICBtYXJnaW5Cb3R0b206IFwiMjBweFwiXG4gICAgICB9XG4gICAgfSxcbiAgICBoNjoge1xuICAgICAgZm9udFNpemU6IFwiMS40ZW1cIixcbiAgICAgIGZvbnRXZWlnaHQ6IDUwMCxcbiAgICAgIFwiJi5NdWlUeXBvZ3JhcGh5LWd1dHRlckJvdHRvbVwiOiB7XG4gICAgICAgIG1hcmdpbkJvdHRvbTogXCIyMHB4XCJcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGNvbXBvbmVudHM6IHtcbiAgICBNdWlGb3JtSGVscGVyVGV4dDoge1xuICAgICAgc3R5bGVPdmVycmlkZXM6IHtcbiAgICAgICAgcm9vdDoge1xuICAgICAgICAgIGZvbnRTaXplOiBcIi44ZW1cIlxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBNdWlCdXR0b246IHtcbiAgICAgIHN0eWxlT3ZlcnJpZGVzOiB7XG4gICAgICAgIHJvb3Q6IHtcbiAgICAgICAgICBmb250U2l6ZTogXCIxZW1cIixcbiAgICAgICAgICBmb250V2VpZ2h0OiA1MDAsXG4gICAgICAgICAgbGluZUhlaWdodDogXCIyMnB4XCJcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgTXVpVGFiOiB7XG4gICAgICBzdHlsZU92ZXJyaWRlczoge1xuICAgICAgICByb290OiB7XG4gICAgICAgICAgZm9udFNpemU6IFwiMTRweFwiLFxuICAgICAgICAgIGNvbG9yOiBcIiMwMDAwMDA5OVwiLFxuICAgICAgICAgIFwiJi5NdWktc2VsZWN0ZWRcIjoge1xuICAgICAgICAgICAgY29sb3I6IFwiIzIxOTZmM1wiXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBNdWlUYWJzOiB7XG4gICAgICBzdHlsZU92ZXJyaWRlczoge1xuICAgICAgICBpbmRpY2F0b3I6IHtcbiAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IFwiIzIxOTZmM1wiXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn0pO1xuXG5jb25zdCBDdXN0b21UaGVtZSA9ICh7IGNoaWxkcmVuIH0pID0+IChcbiAgPFRoZW1lUHJvdmlkZXIgdGhlbWU9e3RoZW1lfT57Y2hpbGRyZW59PC9UaGVtZVByb3ZpZGVyPlxuKTtcblxuQ3VzdG9tVGhlbWUucHJvcFR5cGVzID0ge1xuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUuaXNSZXF1aXJlZFxufTtcblxuZXhwb3J0IGRlZmF1bHQgQ3VzdG9tVGhlbWU7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQge1xuICBDaGVja2JveCxcbiAgRm9ybUNvbnRyb2wsXG4gIEZvcm1Db250cm9sTGFiZWwsXG4gIEZvcm1Hcm91cCxcbiAgRm9ybUhlbHBlclRleHQsXG4gIEZvcm1MYWJlbFxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgZ2V0TGFiZWwsIHRvU2x1ZyB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmNvbnN0IENoZWNrYm94TGlzdFF1ZXN0aW9uRmllbGQgPSAoe1xuICBxdWVzdGlvbixcbiAgcXVlc3Rpb25DbGFzc05hbWUgPSBcIlwiLFxuICBpc0Rpc2FibGVkID0gZmFsc2UsXG4gIGNoaWxkcmVuLFxuICB2YWx1ZSxcbiAgb25DaGFuZ2UsXG4gIHNldEZpZWxkVmFsdWUsXG4gIGVycm9yLFxuICBoZWxwZXJUZXh0LFxuICAuLi5yZXN0XG59KSA9PiB7XG4gIGNvbnN0IHF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhxdWVzdGlvbi5uYW1lLCBxdWVzdGlvbi5pZCk7XG4gIGNvbnN0IHF1ZXN0aW9uTGFiZWwgPSBnZXRMYWJlbChxdWVzdGlvbik7XG4gIGNvbnN0IGlzUmVxdWlyZWQgPSBxdWVzdGlvbi5tYW5kYXRvcnk7XG4gIGNvbnN0IHF1ZXN0aW9uTWF4VmFsdWVzID0gcXVlc3Rpb24ubWF4X3NlbGVjdGVkX3ZhbHVlcztcblxuICBjb25zdCBxdWVzdGlvbk9wdGlvbnMgPVxuICAgIHF1ZXN0aW9uLnZhbHVlcz8ubWFwKCh2YWwpID0+ICh7XG4gICAgICBsYWJlbDogdmFsLmxhYmVsLFxuICAgICAgdmFsdWU6IHZhbC5pZC50b1N0cmluZygpXG4gICAgfSkpIHx8IFtdO1xuXG4gIGNvbnN0IGhhbmRsZUNoZWNrYm94TGlzdENoYW5nZSA9IChjaGVja2VkLCB2YWwpID0+IHtcbiAgICBjb25zdCBjdXJyZW50QW5zID0gdmFsdWUgfHwgW107XG4gICAgY29uc3QgbWF4U2VsZWN0aW9uUmVhY2hlZCA9XG4gICAgICBxdWVzdGlvbk1heFZhbHVlcyAhPT0gMCAmJiBjdXJyZW50QW5zLmxlbmd0aCA9PT0gcXVlc3Rpb25NYXhWYWx1ZXM7XG4gICAgbGV0IG5ld1ZhbHVlO1xuXG4gICAgaWYgKGNoZWNrZWQpIHtcbiAgICAgIG5ld1ZhbHVlID0gbWF4U2VsZWN0aW9uUmVhY2hlZCA/IGN1cnJlbnRBbnMgOiBbLi4uY3VycmVudEFucywgdmFsXTtcbiAgICB9IGVsc2Uge1xuICAgICAgbmV3VmFsdWUgPSBjdXJyZW50QW5zLmZpbHRlcigodikgPT4gdiAhPT0gdmFsKTtcbiAgICB9XG5cbiAgICBzZXRGaWVsZFZhbHVlKHF1ZXN0aW9uU2x1ZywgbmV3VmFsdWUpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAga2V5PXtxdWVzdGlvblNsdWd9XG4gICAgICBpZD17YCR7cXVlc3Rpb25TbHVnfV9jb250YWluZXJgfVxuICAgICAgY2xhc3NOYW1lPXtxdWVzdGlvbkNsYXNzTmFtZX1cbiAgICA+XG4gICAgICA8Rm9ybUNvbnRyb2xcbiAgICAgICAgZGlzYWJsZWQ9e2lzRGlzYWJsZWR9XG4gICAgICAgIHJlcXVpcmVkPXtpc1JlcXVpcmVkfVxuICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgbWFyZ2luPVwibm9ybWFsXCJcbiAgICAgICAgZXJyb3I9e2Vycm9yfVxuICAgICAgPlxuICAgICAgICA8Rm9ybUxhYmVsPntxdWVzdGlvbkxhYmVsfTwvRm9ybUxhYmVsPlxuICAgICAgICB7ZXJyb3IgJiYgPEZvcm1IZWxwZXJUZXh0PntoZWxwZXJUZXh0ID8/IFwiIFwifTwvRm9ybUhlbHBlclRleHQ+fVxuICAgICAgICA8Rm9ybUdyb3VwPlxuICAgICAgICAgIHtxdWVzdGlvbk9wdGlvbnMubWFwKChvcCkgPT4gKFxuICAgICAgICAgICAgPEZvcm1Db250cm9sTGFiZWxcbiAgICAgICAgICAgICAga2V5PXtvcC5sYWJlbH1cbiAgICAgICAgICAgICAgbmFtZT17cXVlc3Rpb25TbHVnfVxuICAgICAgICAgICAgICBjb250cm9sPXtcbiAgICAgICAgICAgICAgICA8Q2hlY2tib3hcbiAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e3ZhbHVlPy5pbmNsdWRlcyhvcC52YWx1ZSl9XG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGV2KSA9PlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVDaGVja2JveExpc3RDaGFuZ2UoZXYudGFyZ2V0LmNoZWNrZWQsIG9wLnZhbHVlKVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmcgKi9cbiAgICAgICAgICAgICAgICAgIHsuLi5yZXN0fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgbGFiZWw9e29wLmxhYmVsfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9Gb3JtR3JvdXA+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvRm9ybUNvbnRyb2w+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5DaGVja2JveExpc3RRdWVzdGlvbkZpZWxkLnByb3BUeXBlcyA9IHtcbiAgcXVlc3Rpb246IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgdmFsdWU6IFByb3BUeXBlcy5hcnJheSxcbiAgcXVlc3Rpb25DbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGlzRGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICBvbkNoYW5nZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICBzZXRGaWVsZFZhbHVlOiBQcm9wVHlwZXMuZnVuYyxcbiAgZXJyb3I6IFByb3BUeXBlcy5ib29sLFxuICBoZWxwZXJUZXh0OiBQcm9wVHlwZXMuc3RyaW5nXG59O1xuXG5leHBvcnQgZGVmYXVsdCBDaGVja2JveExpc3RRdWVzdGlvbkZpZWxkO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHtcbiAgQ2hlY2tib3gsXG4gIEZvcm1Db250cm9sLFxuICBGb3JtQ29udHJvbExhYmVsLFxuICBGb3JtSGVscGVyVGV4dFxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IFJhd0hUTUwgZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvY29tcG9uZW50cy9yYXctaHRtbFwiO1xuaW1wb3J0IHsgZ2V0TGFiZWwsIHRvU2x1ZyB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmNvbnN0IENoZWNrYm94UXVlc3Rpb25GaWVsZCA9ICh7XG4gIHF1ZXN0aW9uLFxuICBxdWVzdGlvbkNsYXNzTmFtZSA9IFwiXCIsXG4gIGlzRGlzYWJsZWQgPSBmYWxzZSxcbiAgY2hpbGRyZW4sXG4gIHZhbHVlLFxuICBlcnJvcixcbiAgaGVscGVyVGV4dCxcbiAgc2V0RmllbGRWYWx1ZSxcbiAgLi4ucmVzdFxufSkgPT4ge1xuICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocXVlc3Rpb24ubmFtZSwgcXVlc3Rpb24uaWQpO1xuICBjb25zdCBxdWVzdGlvbkxhYmVsID0gZ2V0TGFiZWwocXVlc3Rpb24pO1xuICBjb25zdCBpc1JlcXVpcmVkID0gcXVlc3Rpb24ubWFuZGF0b3J5O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAga2V5PXtxdWVzdGlvblNsdWd9XG4gICAgICBpZD17YCR7cXVlc3Rpb25TbHVnfV9jb250YWluZXJgfVxuICAgICAgY2xhc3NOYW1lPXtxdWVzdGlvbkNsYXNzTmFtZX1cbiAgICA+XG4gICAgICA8Rm9ybUNvbnRyb2wgZnVsbFdpZHRoIG1hcmdpbj1cIm5vcm1hbFwiIGVycm9yPXtlcnJvcn0+XG4gICAgICAgIDxGb3JtQ29udHJvbExhYmVsXG4gICAgICAgICAgc3g9e3sgYWxpZ25JdGVtczogXCJmbGV4LXN0YXJ0XCIgfX1cbiAgICAgICAgICBjb250cm9sPXtcbiAgICAgICAgICAgIDxDaGVja2JveFxuICAgICAgICAgICAgICBuYW1lPXtxdWVzdGlvblNsdWd9XG4gICAgICAgICAgICAgIGNoZWNrZWQ9eyEhdmFsdWV9XG4gICAgICAgICAgICAgIGxhYmVsPXs8UmF3SFRNTD57cXVlc3Rpb25MYWJlbH08L1Jhd0hUTUw+fVxuICAgICAgICAgICAgICBzeD17eyBtYXJnaW5Ub3A6IC0xIH19XG4gICAgICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nICovXG4gICAgICAgICAgICAgIHsuLi5yZXN0fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICB9XG4gICAgICAgICAgbGFiZWw9ezxSYXdIVE1MPntxdWVzdGlvbkxhYmVsfTwvUmF3SFRNTD59XG4gICAgICAgICAgZGlzYWJsZWQ9e2lzRGlzYWJsZWR9XG4gICAgICAgICAgcmVxdWlyZWQ9e2lzUmVxdWlyZWR9XG4gICAgICAgIC8+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAge2Vycm9yICYmIDxGb3JtSGVscGVyVGV4dD57aGVscGVyVGV4dCA/PyBcIiBcIn08L0Zvcm1IZWxwZXJUZXh0Pn1cbiAgICAgIDwvRm9ybUNvbnRyb2w+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5DaGVja2JveFF1ZXN0aW9uRmllbGQucHJvcFR5cGVzID0ge1xuICBxdWVzdGlvbjogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICB2YWx1ZTogUHJvcFR5cGVzLmJvb2wsXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBpc0Rpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICBzZXRGaWVsZFZhbHVlOiBQcm9wVHlwZXMuZnVuYyxcbiAgZXJyb3I6IFByb3BUeXBlcy5ib29sLFxuICBoZWxwZXJUZXh0OiBQcm9wVHlwZXMuc3RyaW5nXG59O1xuXG5leHBvcnQgZGVmYXVsdCBDaGVja2JveFF1ZXN0aW9uRmllbGQ7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgSW5wdXRMYWJlbCwgTWVudUl0ZW0sIFNlbGVjdCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBnZXRMYWJlbCwgdG9TbHVnIH0gZnJvbSBcIi4vdXRpbHNcIjtcblxuY29uc3QgRHJvcGRvd25RdWVzdGlvbkZpZWxkID0gKHtcbiAgcXVlc3Rpb24sXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lID0gXCJcIixcbiAgaXNEaXNhYmxlZCA9IGZhbHNlLFxuICBzZXRGaWVsZFZhbHVlLFxuICBjaGlsZHJlbixcbiAgZXJyb3IsXG4gIGhlbHBlclRleHQsXG4gIC4uLnJlc3Rcbn0pID0+IHtcbiAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKHF1ZXN0aW9uLm5hbWUsIHF1ZXN0aW9uLmlkKTtcbiAgY29uc3QgcXVlc3Rpb25MYWJlbCA9IGdldExhYmVsKHF1ZXN0aW9uKTtcbiAgY29uc3QgaXNSZXF1aXJlZCA9IHF1ZXN0aW9uLm1hbmRhdG9yeTtcblxuICBjb25zdCBxdWVzdGlvbk9wdGlvbnMgPVxuICAgIHF1ZXN0aW9uLnZhbHVlcz8ubWFwKCh2YWwpID0+ICh7XG4gICAgICBsYWJlbDogdmFsLmxhYmVsLFxuICAgICAgdmFsdWU6IHZhbC5pZFxuICAgIH0pKSB8fCBbXTtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGtleT17cXVlc3Rpb25TbHVnfVxuICAgICAgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fY29udGFpbmVyYH1cbiAgICAgIGNsYXNzTmFtZT17cXVlc3Rpb25DbGFzc05hbWV9XG4gICAgPlxuICAgICAgPEZvcm1Db250cm9sXG4gICAgICAgIGRpc2FibGVkPXtpc0Rpc2FibGVkfVxuICAgICAgICByZXF1aXJlZD17aXNSZXF1aXJlZH1cbiAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgIG1hcmdpbj1cIm5vcm1hbFwiXG4gICAgICAgIGVycm9yPXtlcnJvcn1cbiAgICAgID5cbiAgICAgICAgPElucHV0TGFiZWwgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fbGFiZWxgfT57cXVlc3Rpb25MYWJlbH08L0lucHV0TGFiZWw+XG4gICAgICAgIDxTZWxlY3RcbiAgICAgICAgICBsYWJlbElkPXtgJHtxdWVzdGlvblNsdWd9X2xhYmVsYH1cbiAgICAgICAgICBuYW1lPXtxdWVzdGlvblNsdWd9XG4gICAgICAgICAgaWQ9e3F1ZXN0aW9uU2x1Z31cbiAgICAgICAgICBsYWJlbD17cXVlc3Rpb25MYWJlbH1cbiAgICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvanN4LXByb3BzLW5vLXNwcmVhZGluZyAqL1xuICAgICAgICAgIHsuLi5yZXN0fVxuICAgICAgICAgIHN0eWxlPXt7IG1hcmdpbkJvdHRvbTogMjAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIHtxdWVzdGlvbk9wdGlvbnMubWFwKChvcCkgPT4gKFxuICAgICAgICAgICAgPE1lbnVJdGVtIGtleT17b3AubGFiZWx9IHZhbHVlPXtvcC52YWx1ZX0+XG4gICAgICAgICAgICAgIHtvcC5sYWJlbH1cbiAgICAgICAgICAgIDwvTWVudUl0ZW0+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvU2VsZWN0PlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L0Zvcm1Db250cm9sPlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuRHJvcGRvd25RdWVzdGlvbkZpZWxkLnByb3BUeXBlcyA9IHtcbiAgcXVlc3Rpb246IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgcXVlc3Rpb25DbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGlzRGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gIGVycm9yOiBQcm9wVHlwZXMuYm9vbCxcbiAgaGVscGVyVGV4dDogUHJvcFR5cGVzLnN0cmluZyxcbiAgc2V0RmllbGRWYWx1ZTogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IERyb3Bkb3duUXVlc3Rpb25GaWVsZDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIEZvcm1Db250cm9sLFxuICBGb3JtQ29udHJvbExhYmVsLFxuICBGb3JtSGVscGVyVGV4dCxcbiAgRm9ybUxhYmVsLFxuICBSYWRpbyxcbiAgUmFkaW9Hcm91cFxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgZ2V0TGFiZWwsIHRvU2x1ZyB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmNvbnN0IFJhZGlvTGlzdFF1ZXN0aW9uRmllbGQgPSAoe1xuICBxdWVzdGlvbixcbiAgcXVlc3Rpb25DbGFzc05hbWUgPSBcIlwiLFxuICBpc0Rpc2FibGVkID0gZmFsc2UsXG4gIGNoaWxkcmVuLFxuICBlcnJvcixcbiAgaGVscGVyVGV4dCxcbiAgc2V0RmllbGRWYWx1ZSxcbiAgLi4ucmVzdFxufSkgPT4ge1xuICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocXVlc3Rpb24ubmFtZSwgcXVlc3Rpb24uaWQpO1xuICBjb25zdCBxdWVzdGlvbkxhYmVsID0gZ2V0TGFiZWwocXVlc3Rpb24pO1xuICBjb25zdCBpc1JlcXVpcmVkID0gcXVlc3Rpb24ubWFuZGF0b3J5O1xuXG4gIGNvbnN0IHF1ZXN0aW9uT3B0aW9ucyA9XG4gICAgcXVlc3Rpb24udmFsdWVzPy5tYXAoKHZhbCkgPT4gKHtcbiAgICAgIGxhYmVsOiB2YWwubGFiZWwsXG4gICAgICB2YWx1ZTogdmFsLmlkLnRvU3RyaW5nKClcbiAgICB9KSkgfHwgW107XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBrZXk9e3F1ZXN0aW9uU2x1Z31cbiAgICAgIGlkPXtgJHtxdWVzdGlvblNsdWd9X2NvbnRhaW5lcmB9XG4gICAgICBjbGFzc05hbWU9e3F1ZXN0aW9uQ2xhc3NOYW1lfVxuICAgID5cbiAgICAgIDxGb3JtQ29udHJvbFxuICAgICAgICBkaXNhYmxlZD17aXNEaXNhYmxlZH1cbiAgICAgICAgcmVxdWlyZWQ9e2lzUmVxdWlyZWR9XG4gICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICBtYXJnaW49XCJub3JtYWxcIlxuICAgICAgICBlcnJvcj17ZXJyb3J9XG4gICAgICA+XG4gICAgICAgIDxGb3JtTGFiZWwgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fbGFiZWxgfT57cXVlc3Rpb25MYWJlbH08L0Zvcm1MYWJlbD5cbiAgICAgICAge2Vycm9yICYmIDxGb3JtSGVscGVyVGV4dD57aGVscGVyVGV4dCA/PyBcIiBcIn08L0Zvcm1IZWxwZXJUZXh0Pn1cbiAgICAgICAgPFJhZGlvR3JvdXBcbiAgICAgICAgICBhcmlhLWxhYmVsbGVkYnk9e2Ake3F1ZXN0aW9uU2x1Z31fbGFiZWxgfVxuICAgICAgICAgIG5hbWU9e3F1ZXN0aW9uU2x1Z31cbiAgICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvanN4LXByb3BzLW5vLXNwcmVhZGluZyAqL1xuICAgICAgICAgIHsuLi5yZXN0fVxuICAgICAgICA+XG4gICAgICAgICAge3F1ZXN0aW9uT3B0aW9ucy5tYXAoKG9wKSA9PiAoXG4gICAgICAgICAgICA8Rm9ybUNvbnRyb2xMYWJlbFxuICAgICAgICAgICAgICBrZXk9e29wLmxhYmVsfVxuICAgICAgICAgICAgICB2YWx1ZT17b3AudmFsdWV9XG4gICAgICAgICAgICAgIGNvbnRyb2w9ezxSYWRpbyAvPn1cbiAgICAgICAgICAgICAgbGFiZWw9e29wLmxhYmVsfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9SYWRpb0dyb3VwPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L0Zvcm1Db250cm9sPlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuUmFkaW9MaXN0UXVlc3Rpb25GaWVsZC5wcm9wVHlwZXMgPSB7XG4gIHF1ZXN0aW9uOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBpc0Rpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICBlcnJvcjogUHJvcFR5cGVzLmJvb2wsXG4gIGhlbHBlclRleHQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHNldEZpZWxkVmFsdWU6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBSYWRpb0xpc3RRdWVzdGlvbkZpZWxkO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgRm9ybUdyb3VwLCBUZXh0RmllbGQgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgZ2V0TGFiZWwsIHRvU2x1ZyB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmNvbnN0IFRleHRRdWVzdGlvbkZpZWxkID0gKHtcbiAgcXVlc3Rpb24sXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lID0gXCJcIixcbiAgaXNEaXNhYmxlZCA9IGZhbHNlLFxuICBjaGlsZHJlbixcbiAgc2V0RmllbGRWYWx1ZSxcbiAgLi4ucmVzdFxufSkgPT4ge1xuICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocXVlc3Rpb24ubmFtZSwgcXVlc3Rpb24uaWQpO1xuICBjb25zdCBxdWVzdGlvbkxhYmVsID0gZ2V0TGFiZWwocXVlc3Rpb24pO1xuICBjb25zdCBpc1JlcXVpcmVkID0gcXVlc3Rpb24ubWFuZGF0b3J5O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAga2V5PXtxdWVzdGlvblNsdWd9XG4gICAgICBpZD17YCR7cXVlc3Rpb25TbHVnfV9jb250YWluZXJgfVxuICAgICAgY2xhc3NOYW1lPXtxdWVzdGlvbkNsYXNzTmFtZX1cbiAgICA+XG4gICAgICA8Rm9ybUdyb3VwPlxuICAgICAgICA8VGV4dEZpZWxkXG4gICAgICAgICAgbmFtZT17cXVlc3Rpb25TbHVnfVxuICAgICAgICAgIGxhYmVsPXtxdWVzdGlvbkxhYmVsfVxuICAgICAgICAgIGRpc2FibGVkPXtpc0Rpc2FibGVkfVxuICAgICAgICAgIHJlcXVpcmVkPXtpc1JlcXVpcmVkfVxuICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgIG1hcmdpbj1cIm5vcm1hbFwiXG4gICAgICAgICAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmcgKi9cbiAgICAgICAgICB7Li4ucmVzdH1cbiAgICAgICAgLz5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgPC9Gb3JtR3JvdXA+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5UZXh0UXVlc3Rpb25GaWVsZC5wcm9wVHlwZXMgPSB7XG4gIHF1ZXN0aW9uOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBpc0Rpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICBzZXRGaWVsZFZhbHVlOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgVGV4dFF1ZXN0aW9uRmllbGQ7XG4iLCJpbXBvcnQge1xuICBRdWVzdGlvblR5cGVfQ2hlY2tib3gsXG4gIFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3QsXG4gIFF1ZXN0aW9uVHlwZV9Db21ib0JveCxcbiAgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveCxcbiAgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdFxufSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XG5cbmV4cG9ydCBjb25zdCBjaGVja1J1bGUgPSAodmFsdWUsIHJ1bGUpID0+IHtcbiAgY29uc3QgdmFsdWVzID0gcnVsZS5hbnN3ZXJfdmFsdWVzO1xuXG4gIGlmICghdmFsdWUpIHJldHVybiBmYWxzZTtcblxuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICBpZiAoIXZhbHVlLmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xuICAgIGxldCByZXMgPSBydWxlLmFuc3dlcl92YWx1ZXNfb3BlcmF0b3IgPT09IFwiQW5kXCI7XG4gICAgdmFsdWVzLmZvckVhY2goKHYpID0+IHtcbiAgICAgIGlmIChydWxlLmFuc3dlcl92YWx1ZXNfb3BlcmF0b3IgPT09IFwiQW5kXCIpIHtcbiAgICAgICAgcmVzID0gcmVzICYmIHZhbHVlLmluY2x1ZGVzKHYpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gT3JcbiAgICAgICAgcmVzID0gcmVzIHx8IHZhbHVlLmluY2x1ZGVzKHYpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiByZXM7XG4gIH1cbiAgcmV0dXJuIHZhbHVlcy5pbmNsdWRlcyh2YWx1ZT8udG9TdHJpbmcoKSk7XG59O1xuXG5leHBvcnQgY29uc3QgY2hlY2tWaXNpYmlsaXR5ID0gKHJ1bGUsIHJ1bGVSZXN1bHQpID0+IHtcbiAgaWYgKHJ1bGUudmlzaWJpbGl0eSA9PT0gXCJWaXNpYmxlXCIpIHtcbiAgICBpZiAocnVsZS52aXNpYmlsaXR5X2NvbmRpdGlvbiA9PT0gXCJFcXVhbFwiKSB7XG4gICAgICByZXR1cm4gISFydWxlUmVzdWx0O1xuICAgIH1cbiAgICAvLyBOb24gRXF1YWxcbiAgICByZXR1cm4gIXJ1bGVSZXN1bHQ7XG4gIH1cbiAgLy8gbm90IHZpc2libGVcbiAgaWYgKHJ1bGUudmlzaWJpbGl0eV9jb25kaXRpb24gPT09IFwiRXF1YWxcIikge1xuICAgIHJldHVybiAhcnVsZVJlc3VsdDtcbiAgfVxuICByZXR1cm4gISFydWxlUmVzdWx0O1xufTtcblxuZXhwb3J0IGNvbnN0IHRvU2x1ZyA9ICh0ZXh0LCBxdWVzdGlvbklkKSA9PiB7XG4gIGNvbnN0IHRleHRMQyA9IHRleHQudG9Mb3dlckNhc2UoKTtcbiAgcmV0dXJuIGAke3RleHRMQy5yZXBsYWNlKC9bXmEtekEtWjAtOV0rL2csIFwiX1wiKX1fJHtxdWVzdGlvbklkfWA7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0TGFiZWwgPSAocSkgPT5cbiAgLy8gcmVwbGFjZSBsaW5lIGJyZWFrcyBhbmQgcmVtb3ZlIG91dGVyIDxwPlxuICBxPy5sYWJlbD8ucmVwbGFjZSgvXFxuL2csIFwiIFwiKS5yZXBsYWNlKC88cD4oLiopPFxcL3A+L2dpLCBcIiQxXCIpO1xuXG5leHBvcnQgY29uc3QgaXNBbnN3ZXJlZCA9IChhbnN3ZXIpID0+IHtcbiAgaWYgKCFhbnN3ZXIpIHJldHVybiBmYWxzZTtcbiAgLy8gY2hlY2sgdHlwZVxuICBpZiAoQXJyYXkuaXNBcnJheShhbnN3ZXIpKSByZXR1cm4gYW5zd2VyLmxlbmd0aCA+IDA7XG4gIGlmICh0eXBlb2YgYW5zd2VyID09PSBcInN0cmluZ1wiKSByZXR1cm4gYW5zd2VyLmxlbmd0aCA+IDA7XG4gIGlmICh0eXBlb2YgYW5zd2VyID09PSBcIm51bWJlclwiKSByZXR1cm4gYW5zd2VyID4gMDtcbiAgaWYgKHR5cGVvZiBhbnN3ZXIgPT09IFwiYm9vbGVhblwiKSByZXR1cm4gYW5zd2VyO1xuICByZXR1cm4gZmFsc2U7XG59O1xuXG5leHBvcnQgY29uc3QgY2hlY2tJZlZhbHVlTWF0Y2ggPSAoYW5zd2VyLCBjb21wYXJlVmFsKSA9PiB7XG4gIGNvbnN0IGFuc3dlckFycmF5ID0gQXJyYXkuaXNBcnJheShhbnN3ZXIpID8gYW5zd2VyIDogW2Fuc3dlcl07XG5cbiAgcmV0dXJuIGFuc3dlckFycmF5LnNvbWUoKHYpID0+IHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShjb21wYXJlVmFsKSkge1xuICAgICAgcmV0dXJuIGNvbXBhcmVWYWwuaW5jbHVkZXModik7XG4gICAgfVxuICAgIHJldHVybiB2ID09PSBjb21wYXJlVmFsO1xuICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRUeXBlSW5pdGlhbFZhbHVlID0gKHEpID0+IHtcbiAgc3dpdGNoIChxLnR5cGUpIHtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja2JveDpcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbkxpc3Q6XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3Q6XG4gICAgICByZXR1cm4gW107XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94OlxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvbWJvQm94OlxuICAgICAgcmV0dXJuIFwiXCI7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBcIlwiO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VHlwZVZhbHVlID0gKGFucywgdHlwZSkgPT4ge1xuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja2JveDpcbiAgICAgIHJldHVybiBhbnMgPT09IFwidHJ1ZVwiO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdDpcbiAgICAgIHJldHVybiBhbnM/LnNwbGl0KFwiLFwiKSB8fCBbXTtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9Db3VudHJ5Q29tYm9Cb3g6XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ29tYm9Cb3g6XG4gICAgICByZXR1cm4gYW5zIHx8IFwiXCI7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0OlxuICAgICAgcmV0dXJuIGFucyB8fCBudWxsO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gYW5zO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgdHJhbnNmb3JtQW53ZXJzRm9ybWF0ID0gKGFuc3dlcnMpID0+IHtcbiAgY29uc3Qge1xuICAgIGF0dGVuZGVlX2VtYWlsLFxuICAgIGF0dGVuZGVlX2ZpcnN0X25hbWUsXG4gICAgYXR0ZW5kZWVfbGFzdF9uYW1lLFxuICAgIGF0dGVuZGVlX2NvbXBhbnksXG4gICAgZGlzY2xhaW1lcl9hY2NlcHRlZCxcbiAgICAuLi5leHRyYV9xdWVzdGlvbnNcbiAgfSA9IGFuc3dlcnM7XG5cbiAgY29uc3QgZm9ybWF0dGVkRVEgPSBPYmplY3QuZW50cmllcyhleHRyYV9xdWVzdGlvbnMpLm1hcCgoW2tleSwgdmFsdWVdKSA9PiAoe1xuICAgIHF1ZXN0aW9uX2lkOiBwYXJzZUludChrZXkuc3BsaXQoXCJfXCIpLnBvcCgpLCAxMCksXG4gICAgYW5zd2VyOiB2YWx1ZT8udG9TdHJpbmcoKSB8fCBudWxsXG4gIH0pKTtcblxuICByZXR1cm4ge1xuICAgIGF0dGVuZGVlX2VtYWlsLFxuICAgIGF0dGVuZGVlX2ZpcnN0X25hbWUsXG4gICAgYXR0ZW5kZWVfbGFzdF9uYW1lLFxuICAgIGF0dGVuZGVlX2NvbXBhbnksXG4gICAgZGlzY2xhaW1lcl9hY2NlcHRlZCxcbiAgICBleHRyYV9xdWVzdGlvbnM6IGZvcm1hdHRlZEVRXG4gIH07XG59O1xuIiwiZXhwb3J0IGNvbnN0IFF1ZXN0aW9uVHlwZV9UZXh0ID0gXCJUZXh0XCI7XG5leHBvcnQgY29uc3QgUXVlc3Rpb25UeXBlX1RleHRBcmVhID0gXCJUZXh0QXJlYVwiO1xuZXhwb3J0IGNvbnN0IFF1ZXN0aW9uVHlwZV9DaGVja2JveCA9IFwiQ2hlY2tCb3hcIjtcbmV4cG9ydCBjb25zdCBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0ID0gXCJSYWRpb0J1dHRvbkxpc3RcIjtcbmV4cG9ydCBjb25zdCBRdWVzdGlvblR5cGVfQ29tYm9Cb3ggPSBcIkNvbWJvQm94XCI7XG5leHBvcnQgY29uc3QgUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdCA9IFwiQ2hlY2tCb3hMaXN0XCI7XG5leHBvcnQgY29uc3QgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveCA9IFwiQ291bnRyeUNvbWJvQm94XCI7XG5leHBvcnQgY29uc3QgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uID0gXCJSYWRpb0J1dHRvblwiO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuXG5pbXBvcnQge1xuICB0b1NsdWcsXG4gIGlzQW5zd2VyZWQsXG4gIGNoZWNrVmlzaWJpbGl0eSxcbiAgY2hlY2tSdWxlXG59IGZyb20gXCIuL2NvbXBvbmVudHMvdXRpbHNcIjtcbmltcG9ydCB7XG4gIFF1ZXN0aW9uVHlwZV9DaGVja2JveCxcbiAgUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdCxcbiAgUXVlc3Rpb25UeXBlX0NvbWJvQm94LFxuICBRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94LFxuICBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0LFxuICBRdWVzdGlvblR5cGVfVGV4dCxcbiAgUXVlc3Rpb25UeXBlX1RleHRBcmVhXG59IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuaW1wb3J0IFRleHRRdWVzdGlvbkZpZWxkIGZyb20gXCIuL2NvbXBvbmVudHMvVGV4dFF1ZXN0aW9uRmllbGRcIjtcbmltcG9ydCBDaGVja2JveFF1ZXN0aW9uRmllbGQgZnJvbSBcIi4vY29tcG9uZW50cy9DaGVja2JveFF1ZXN0aW9uRmllbGRcIjtcbmltcG9ydCBSYWRpb0xpc3RRdWVzdGlvbkZpZWxkIGZyb20gXCIuL2NvbXBvbmVudHMvUmFkaW9MaXN0UXVlc3Rpb25GaWVsZFwiO1xuaW1wb3J0IENoZWNrYm94TGlzdFF1ZXN0aW9uRmllbGQgZnJvbSBcIi4vY29tcG9uZW50cy9DaGVja2JveExpc3RRdWVzdGlvbkZpZWxkXCI7XG5pbXBvcnQgRHJvcGRvd25RdWVzdGlvbkZpZWxkIGZyb20gXCIuL2NvbXBvbmVudHMvRHJvcGRvd25RdWVzdGlvbkZpZWxkXCI7XG5cbmNvbnN0IGdldFF1ZXN0aW9uRmllbGRDb21wb25lbnQgPSAocXVlc3Rpb25UeXBlKSA9PiB7XG4gIHN3aXRjaCAocXVlc3Rpb25UeXBlKSB7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfVGV4dEFyZWE6XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfVGV4dDoge1xuICAgICAgcmV0dXJuIFRleHRRdWVzdGlvbkZpZWxkO1xuICAgIH1cbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja2JveDoge1xuICAgICAgcmV0dXJuIENoZWNrYm94UXVlc3Rpb25GaWVsZDtcbiAgICB9XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0OiB7XG4gICAgICByZXR1cm4gUmFkaW9MaXN0UXVlc3Rpb25GaWVsZDtcbiAgICB9XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0OiB7XG4gICAgICByZXR1cm4gQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZDtcbiAgICB9XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94OlxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvbWJvQm94OiB7XG4gICAgICByZXR1cm4gRHJvcGRvd25RdWVzdGlvbkZpZWxkO1xuICAgIH1cbiAgICBkZWZhdWx0OiB7XG4gICAgICByZXR1cm4gUmVhY3QuRnJhZ21lbnQ7XG4gICAgfVxuICB9XG59O1xuXG5jb25zdCBFeHRyYVF1ZXN0aW9uc0ZpZWxkcyA9ICh7XG4gIGV4dHJhUXVlc3Rpb25zLFxuICBjbGFzc05hbWUgPSBcImV4dHJhUXVlc3Rpb25zXCIsXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lID0gXCJleHRyYVF1ZXN0aW9uXCIsXG4gIHJlYWRPbmx5ID0gZmFsc2UsXG4gIGFsbG93RWRpdCA9IHRydWUsXG4gIGZvcm1pa1xufSkgPT4ge1xuICBjb25zdCByZW5kZXJSdWxlID0gKHJ1bGUsIHF1ZXN0aW9uU2x1ZykgPT4ge1xuICAgIGNvbnN0IHJ1bGVSZXN1bHQgPSBjaGVja1J1bGUoZm9ybWlrLnZhbHVlc1txdWVzdGlvblNsdWddLCBydWxlKTtcbiAgICBjb25zdCBpc1Zpc2libGUgPSBjaGVja1Zpc2liaWxpdHkocnVsZSwgcnVsZVJlc3VsdCk7XG5cbiAgICBpZiAoaXNWaXNpYmxlKSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdXNlLWJlZm9yZS1kZWZpbmVcbiAgICAgIHJldHVybiByZW5kZXJRdWVzdGlvbihydWxlLnN1Yl9xdWVzdGlvbik7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH07XG5cbiAgY29uc3QgcmVuZGVyUXVlc3Rpb24gPSAocSkgPT4ge1xuICAgIGNvbnN0IHF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhxLm5hbWUsIHEuaWQpO1xuICAgIC8vIGRpc2FibGUgZmllbGQgaWYgZWRpdCBpc24ndCBhbGxvd2VkIGFuZCB0aGUgcXVlc3Rpb25zIGlzIGFuc3dlcmVkXG4gICAgY29uc3QgaXNEaXNhYmxlZCA9XG4gICAgICAoIWFsbG93RWRpdCAmJiBpc0Fuc3dlcmVkKGZvcm1pay52YWx1ZXNbcXVlc3Rpb25TbHVnXSkpIHx8IHJlYWRPbmx5O1xuICAgIGNvbnN0IFF1ZXN0aW9uRmllbGRDb21wb25lbnQgPSBnZXRRdWVzdGlvbkZpZWxkQ29tcG9uZW50KHEudHlwZSk7XG5cbiAgICBjb25zdCBmb3JtaWtQcm9wcyA9IHtcbiAgICAgIHZhbHVlOiBmb3JtaWsudmFsdWVzW3F1ZXN0aW9uU2x1Z10sXG4gICAgICBvbkNoYW5nZTogZm9ybWlrLmhhbmRsZUNoYW5nZSxcbiAgICAgIG9uQmx1cjogZm9ybWlrLmhhbmRsZUJsdXIsXG4gICAgICBlcnJvcjpcbiAgICAgICAgZm9ybWlrLnRvdWNoZWRbcXVlc3Rpb25TbHVnXSAmJiBCb29sZWFuKGZvcm1pay5lcnJvcnNbcXVlc3Rpb25TbHVnXSksXG4gICAgICBoZWxwZXJUZXh0OiBmb3JtaWsudG91Y2hlZFtxdWVzdGlvblNsdWddICYmIGZvcm1pay5lcnJvcnNbcXVlc3Rpb25TbHVnXSxcbiAgICAgIHNldEZpZWxkVmFsdWU6IGZvcm1pay5zZXRGaWVsZFZhbHVlXG4gICAgfTtcblxuICAgIHJldHVybiAoXG4gICAgICA8UXVlc3Rpb25GaWVsZENvbXBvbmVudFxuICAgICAgICBrZXk9e3F1ZXN0aW9uU2x1Z31cbiAgICAgICAgcXVlc3Rpb249e3F9XG4gICAgICAgIHF1ZXN0aW9uQ2xhc3NOYW1lPXtxdWVzdGlvbkNsYXNzTmFtZX1cbiAgICAgICAgaXNEaXNhYmxlZD17aXNEaXNhYmxlZH1cbiAgICAgICAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmcgKi9cbiAgICAgICAgey4uLmZvcm1pa1Byb3BzfVxuICAgICAgPlxuICAgICAgICB7cS5zdWJfcXVlc3Rpb25fcnVsZXM/Lm1hcCgocnVsZSkgPT4gcmVuZGVyUnVsZShydWxlLCBxdWVzdGlvblNsdWcpKX1cbiAgICAgIDwvUXVlc3Rpb25GaWVsZENvbXBvbmVudD5cbiAgICApO1xuICB9O1xuXG4gIHJldHVybiA8ZGl2IGNsYXNzTmFtZT17Y2xhc3NOYW1lfT57ZXh0cmFRdWVzdGlvbnMubWFwKHJlbmRlclF1ZXN0aW9uKX08L2Rpdj47XG59O1xuXG5FeHRyYVF1ZXN0aW9uc0ZpZWxkcy5wcm9wVHlwZXMgPSB7XG4gIGV4dHJhUXVlc3Rpb25zOiBQcm9wVHlwZXMuYXJyYXkuaXNSZXF1aXJlZCxcbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBxdWVzdGlvbkNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgYWxsb3dFZGl0OiBQcm9wVHlwZXMuYm9vbCxcbiAgcmVhZE9ubHk6IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBFeHRyYVF1ZXN0aW9uc0ZpZWxkcztcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlU2VsZWN0b3IsIHNoYWxsb3dFcXVhbCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHtcbiAgQm94LFxuICBGb3JtQ29udHJvbExhYmVsLFxuICBDYXJkSGVhZGVyLFxuICBJY29uQnV0dG9uLFxuICBDb2xsYXBzZSxcbiAgQ2FyZENvbnRlbnQsXG4gIFJhZGlvR3JvdXAsXG4gIFJhZGlvXG59IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgRXhwYW5kTW9yZUljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRXhwYW5kTW9yZVwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHsgRklMVEVSX1ZBUl9USUNLRVRfQVNTSUdORUQgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuXG5jb25zdCBBc3NpZ25lZEZpbHRlciA9ICh7IG9uRmlsdGVyIH0pID0+IHtcbiAgY29uc3Qge1xuICAgIGZpbHRlcjogeyBGSUxURVJfVkFSX1RJQ0tFVF9BU1NJR05FRDogZmlsdGVyVmFsdWVzIH1cbiAgfSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30sIHNoYWxsb3dFcXVhbCk7XG5cbiAgY29uc3QgW2lzRXhwYW5kZWQsIHNldElzRXhwYW5kZWRdID0gdXNlU3RhdGUoISFmaWx0ZXJWYWx1ZXMpO1xuXG4gIGNvbnN0IGFzc2lnbmVkVmFsdWVzID0gW1xuICAgIHsgdmFsdWU6IFwiTWVcIiwgbGFiZWw6IFwiTWVcIiB9LFxuICAgIHsgdmFsdWU6IFwiU29tZW9uZUVsc2VcIiwgbGFiZWw6IFwiU29tZW9uZSBFbHNlXCIgfSxcbiAgICB7IHZhbHVlOiBcIk5vYm9keVwiLCBsYWJlbDogXCJOb2JvZHlcIiB9XG4gIF07XG5cbiAgY29uc3QgaGFuZGxlRmlsdGVyQ2hhbmdlID0gKGV2LCB2YWx1ZSkgPT4ge1xuICAgIGNvbnN0IG5ld0ZpbHRlciA9IHZhbHVlO1xuICAgIG9uRmlsdGVyKHtcbiAgICAgIFtGSUxURVJfVkFSX1RJQ0tFVF9BU1NJR05FRF06IG5ld0ZpbHRlclxuICAgIH0pO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPEJveD5cbiAgICAgIDxDYXJkSGVhZGVyXG4gICAgICAgIHRpdGxlPVwiQXNzaWduZWRcIlxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aXRsZVdyYXBwZXJ9XG4gICAgICAgIG9uQ2xpY2s9eygpID0+IHNldElzRXhwYW5kZWQoIWlzRXhwYW5kZWQpfVxuICAgICAgICBhY3Rpb249e1xuICAgICAgICAgIDxJY29uQnV0dG9uIGFyaWEtbGFiZWw9XCJleHBhbmRcIiBkaXNhYmxlUmlwcGxlPlxuICAgICAgICAgICAgPEV4cGFuZE1vcmVJY29uXG4gICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiBpc0V4cGFuZGVkID8gXCJyb3RhdGUoMTgwZGVnKVwiIDogXCJyb3RhdGUoMGRlZylcIixcbiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uOiBcInRyYW5zZm9ybSAwLjNzXCJcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICB9XG4gICAgICAvPlxuICAgICAgPENvbGxhcHNlIGluPXtpc0V4cGFuZGVkfSB0aW1lb3V0PVwiYXV0b1wiIHVubW91bnRPbkV4aXQ+XG4gICAgICAgIDxDYXJkQ29udGVudFxuICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICBweTogMCxcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogXCIjMDAwMDAwMEFcIixcbiAgICAgICAgICAgIFwiJjpsYXN0LWNoaWxkXCI6IHtcbiAgICAgICAgICAgICAgcGI6IDBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9fVxuICAgICAgICA+XG4gICAgICAgICAgPFJhZGlvR3JvdXAgdmFsdWU9e2ZpbHRlclZhbHVlc30gb25DaGFuZ2U9e2hhbmRsZUZpbHRlckNoYW5nZX0+XG4gICAgICAgICAgICB7YXNzaWduZWRWYWx1ZXMubWFwKChhc3NpZ25lZCkgPT4gKFxuICAgICAgICAgICAgICA8Qm94XG4gICAgICAgICAgICAgICAgc3g9e3sgcHk6IDEgfX1cbiAgICAgICAgICAgICAgICBrZXk9e2BmaWx0ZXItYmFkZ2UtZmVhdHVyZS0ke2Fzc2lnbmVkLmxhYmVsfX1gfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPEZvcm1Db250cm9sTGFiZWxcbiAgICAgICAgICAgICAgICAgIGNvbnRyb2w9e1xuICAgICAgICAgICAgICAgICAgICA8UmFkaW9cbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17YXNzaWduZWQudmFsdWV9XG4gICAgICAgICAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiJiAuTXVpU3ZnSWNvbi1yb290XCI6IHsgZm9udFNpemU6IDE4IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBcIiYuTXVpLWNoZWNrZWRcIjogeyBjb2xvcjogXCIjMjE5NkYzXCIgfVxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBsYWJlbD17YXNzaWduZWQubGFiZWx9XG4gICAgICAgICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICAgICAgICBcIiYgLk11aUZvcm1Db250cm9sTGFiZWwtbGFiZWxcIjoge1xuICAgICAgICAgICAgICAgICAgICAgIGZvbnRTaXplOiBcIjFlbVwiXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICApKX1cbiAgICAgICAgICA8L1JhZGlvR3JvdXA+XG4gICAgICAgIDwvQ2FyZENvbnRlbnQ+XG4gICAgICA8L0NvbGxhcHNlPlxuICAgIDwvQm94PlxuICApO1xufTtcblxuQXNzaWduZWRGaWx0ZXIucHJvcFR5cGVzID0ge1xuICBvbkZpbHRlcjogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEFzc2lnbmVkRmlsdGVyO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZVNlbGVjdG9yLCBzaGFsbG93RXF1YWwgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIEJveCxcbiAgRm9ybUNvbnRyb2xMYWJlbCxcbiAgQ2hlY2tib3gsXG4gIENhcmRIZWFkZXIsXG4gIEljb25CdXR0b24sXG4gIENvbGxhcHNlLFxuICBDYXJkQ29udGVudFxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IEV4cGFuZE1vcmVJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0V4cGFuZE1vcmVcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB7IEZJTFRFUl9WQVJfQkFER0VfRkVBVFVSRSB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5cbmNvbnN0IEJhZGdlRmVhdHVyZUZpbHRlciA9ICh7IG9uRmlsdGVyIH0pID0+IHtcbiAgY29uc3Qge1xuICAgIHN1bW1pdDogeyBiYWRnZV9mZWF0dXJlc190eXBlcyB9LFxuICAgIGZpbHRlcjogeyBGSUxURVJfVkFSX0JBREdFX0ZFQVRVUkU6IGZpbHRlclZhbHVlcyB9XG4gIH0gPSB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlIHx8IHt9LCBzaGFsbG93RXF1YWwpO1xuXG4gIGNvbnN0IFtpc0V4cGFuZGVkLCBzZXRJc0V4cGFuZGVkXSA9IHVzZVN0YXRlKCEhZmlsdGVyVmFsdWVzLmxlbmd0aCk7XG5cbiAgY29uc3QgaGFuZGxlRmlsdGVyQ2hhbmdlID0gKHZhbHVlKSA9PiB7XG4gICAgY29uc3QgbmV3RmlsdGVycyA9IGZpbHRlclZhbHVlcz8uaW5jbHVkZXModmFsdWUpXG4gICAgICA/IGZpbHRlclZhbHVlcy5maWx0ZXIoKGYpID0+IGYgIT09IHZhbHVlKVxuICAgICAgOiBbLi4uZmlsdGVyVmFsdWVzLCB2YWx1ZV07XG4gICAgb25GaWx0ZXIoe1xuICAgICAgW0ZJTFRFUl9WQVJfQkFER0VfRkVBVFVSRV06IG5ld0ZpbHRlcnNcbiAgICB9KTtcbiAgfTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHNldElzRXhwYW5kZWQoISFmaWx0ZXJWYWx1ZXMubGVuZ3RoKTtcbiAgfSwgW2ZpbHRlclZhbHVlc10pO1xuXG4gIHJldHVybiAoXG4gICAgPEJveD5cbiAgICAgIDxDYXJkSGVhZGVyXG4gICAgICAgIHRpdGxlPVwiQmFkZ2UgRmVhdHVyZVwiXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpdGxlV3JhcHBlcn1cbiAgICAgICAgb25DbGljaz17KCkgPT4gc2V0SXNFeHBhbmRlZCghaXNFeHBhbmRlZCl9XG4gICAgICAgIGFjdGlvbj17XG4gICAgICAgICAgPEljb25CdXR0b24gYXJpYS1sYWJlbD1cImV4cGFuZFwiIGRpc2FibGVSaXBwbGU+XG4gICAgICAgICAgICA8RXhwYW5kTW9yZUljb25cbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IGlzRXhwYW5kZWQgPyBcInJvdGF0ZSgxODBkZWcpXCIgOiBcInJvdGF0ZSgwZGVnKVwiLFxuICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IFwidHJhbnNmb3JtIDAuM3NcIlxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgIH1cbiAgICAgIC8+XG4gICAgICA8Q29sbGFwc2UgaW49e2lzRXhwYW5kZWR9IHRpbWVvdXQ9XCJhdXRvXCIgdW5tb3VudE9uRXhpdD5cbiAgICAgICAgPENhcmRDb250ZW50XG4gICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgIHB5OiAwLFxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBcIiMwMDAwMDAwQVwiLFxuICAgICAgICAgICAgXCImOmxhc3QtY2hpbGRcIjoge1xuICAgICAgICAgICAgICBwYjogMFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICB7YmFkZ2VfZmVhdHVyZXNfdHlwZXMubWFwKChiZikgPT4gKFxuICAgICAgICAgICAgPEJveCBzeD17eyBweTogMSB9fSBrZXk9e2BmaWx0ZXItYmFkZ2UtZmVhdHVyZS0ke2JmLm5hbWV9fWB9PlxuICAgICAgICAgICAgICA8Rm9ybUNvbnRyb2xMYWJlbFxuICAgICAgICAgICAgICAgIGNvbnRyb2w9e1xuICAgICAgICAgICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoKSA9PiBoYW5kbGVGaWx0ZXJDaGFuZ2UoYmYuaWQpfVxuICAgICAgICAgICAgICAgICAgICBjaGVja2VkPXtmaWx0ZXJWYWx1ZXMuaW5jbHVkZXMoYmYuaWQpfVxuICAgICAgICAgICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICAgICAgICAgIFwiJiAuTXVpU3ZnSWNvbi1yb290XCI6IHsgZm9udFNpemU6IDE4IH0sXG4gICAgICAgICAgICAgICAgICAgICAgXCImLk11aS1jaGVja2VkXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBcIiMyMTk2RjNcIlxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGxhYmVsPXtiZi5uYW1lfVxuICAgICAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgICAgICBcIiYgLk11aUZvcm1Db250cm9sTGFiZWwtbGFiZWxcIjoge1xuICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTogXCIxZW1cIlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9DYXJkQ29udGVudD5cbiAgICAgIDwvQ29sbGFwc2U+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5CYWRnZUZlYXR1cmVGaWx0ZXIucHJvcFR5cGVzID0ge1xuICBvbkZpbHRlcjogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEJhZGdlRmVhdHVyZUZpbHRlcjtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSwgdXNlUmVmLCB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCBTdGFjayBmcm9tIFwiQG11aS9tYXRlcmlhbC9TdGFja1wiO1xuaW1wb3J0IEZpbHRlckxpc3RJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0ZpbHRlckxpc3RcIjtcbmltcG9ydCB7XG4gIEJhZGdlLFxuICBCb3gsXG4gIEJ1dHRvbixcbiAgQ2FyZCxcbiAgQ2FyZEhlYWRlcixcbiAgRGl2aWRlcixcbiAgUGFwZXJcbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IGNvbm5lY3QgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCBCYWRnZUZlYXR1cmVGaWx0ZXIgZnJvbSBcIi4vQmFkZ2VGZWF0dXJlRmlsdGVyXCI7XG5pbXBvcnQge1xuICBGSUxURVJfVkFSX0JBREdFX0ZFQVRVUkUsXG4gIEZJTFRFUl9WQVJfRlJFRV9QQUlELFxuICBGSUxURVJfVkFSX09XTkVSX1NUQVRVUyxcbiAgRklMVEVSX1ZBUl9QUk9NT0NPREUsXG4gIEZJTFRFUl9WQVJfVElDS0VUX0FTU0lHTkVELFxuICBGSUxURVJfVkFSX1RJQ0tFVF9UWVBFXG59IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5pbXBvcnQgVGlja2V0VHlwZUZpbHRlciBmcm9tIFwiLi9UaWNrZXRUeXBlRmlsdGVyXCI7XG5pbXBvcnQgQXNzaWduZWRGaWx0ZXIgZnJvbSBcIi4vQXNzaWduZWRGaWx0ZXJcIjtcbmltcG9ydCBTdGF0dXNGaWx0ZXIgZnJvbSBcIi4vU3RhdHVzRmlsdGVyXCI7XG5pbXBvcnQgRnJlZVBhaWRGaWx0ZXIgZnJvbSBcIi4vRnJlZVBhaWRGaWx0ZXJcIjtcbmltcG9ydCBQcm9tb0NvZGVGaWx0ZXIgZnJvbSBcIi4vUHJvbW9Db2RlRmlsdGVyXCI7XG5cbmNvbnN0IEZpbHRlciA9ICh7IG9uRmlsdGVyLCBvblJlc2V0LCBmaWx0ZXIgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IFtzaG93RmlsdGVyTGlzdCwgc2V0U2hvd0ZpbHRlckxpc3RdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbc2hvd0RhdGVwaWNrZXIsIHNldFNob3dEYXRlcGlja2VyXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW2ZpbHRlck51bUFjdGl2ZSwgc2V0RmlsdGVyTnVtQWN0aXZlXSA9IHVzZVN0YXRlKG51bGwpO1xuICBjb25zdCBmaWx0ZXJSZWYgPSB1c2VSZWYobnVsbCk7XG4gIGNvbnN0IGhhbmRsZUZpbHRlckNsaWNrT3V0c2lkZSA9IChldmVudCkgPT4ge1xuICAgIGlmIChmaWx0ZXJSZWYuY3VycmVudCAmJiAhZmlsdGVyUmVmLmN1cnJlbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xuICAgICAgaWYgKHNob3dGaWx0ZXJMaXN0KSB7XG4gICAgICAgIHNldFNob3dGaWx0ZXJMaXN0KGZhbHNlKTtcbiAgICAgICAgc2V0U2hvd0RhdGVwaWNrZXIoZmFsc2UpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgaGFuZGxlRmlsdGVyQ2xpY2tPdXRzaWRlLCBmYWxzZSk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBoYW5kbGVGaWx0ZXJDbGlja091dHNpZGUsIGZhbHNlKTtcbiAgICB9O1xuICB9LCBbc2hvd0ZpbHRlckxpc3RdKTtcblxuICBjb25zdCBNQVJHSU5fUklHSFRfV0lUSF9CQURHRSA9IDE7XG4gIGNvbnN0IEFERF9GSUxURVJfTlVNQkVSID0gMTtcblxuICBjb25zdCBjYWxjdWxhdGVBY3RpdmVGaWx0ZXJzID0gKGZpbHRlcnMpID0+IHtcbiAgICBsZXQgY291bnQgPSAwO1xuICAgIE9iamVjdC5lbnRyaWVzKGZpbHRlcnMpLmZvckVhY2goKFssIHZhbHVlXSkgPT4ge1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgIGNvdW50ICs9IHZhbHVlLmxlbmd0aDtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiICYmIHZhbHVlLnRyaW0oKSAhPT0gXCJcIikge1xuICAgICAgICBjb3VudCArPSBBRERfRklMVEVSX05VTUJFUjtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSBcIm51bWJlclwiICYmIHZhbHVlID4gMCkge1xuICAgICAgICBjb3VudCArPSBBRERfRklMVEVSX05VTUJFUjtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gY291bnQ7XG4gIH07XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRGaWx0ZXJOdW1BY3RpdmUoY2FsY3VsYXRlQWN0aXZlRmlsdGVycyhmaWx0ZXIpKTtcbiAgfSwgW2ZpbHRlcl0pO1xuXG4gIGNvbnN0IHRvZ2dsZSA9ICgpID0+IHtcbiAgICBzZXRTaG93RmlsdGVyTGlzdCghc2hvd0ZpbHRlckxpc3QpO1xuICAgIHNldFNob3dEYXRlcGlja2VyKCFzaG93RGF0ZXBpY2tlcik7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRmlsdGVyUmVzZXQgPSAoKSA9PiB7XG4gICAgc2V0RmlsdGVyTnVtQWN0aXZlKDApO1xuICAgIG9uUmVzZXQoKTtcbiAgICB0b2dnbGUoKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuZmlsdGVyQ29udGFpbmVyfSByZWY9e2ZpbHRlclJlZn0+XG4gICAgICA8U3RhY2tcbiAgICAgICAgYWxpZ25JdGVtcz1cImNlbnRlclwiXG4gICAgICAgIGRpcmVjdGlvbj1cInJvd1wiXG4gICAgICAgIHN4PXt7IHB0OiAyLCBwYjogMiB9fVxuICAgICAgICBvbkNsaWNrPXt0b2dnbGV9XG4gICAgICA+XG4gICAgICAgIDxCYWRnZVxuICAgICAgICAgIGJhZGdlQ29udGVudD17ZmlsdGVyTnVtQWN0aXZlfVxuICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgc3g9e3sgbXI6IGZpbHRlck51bUFjdGl2ZSA+IDAgPyBNQVJHSU5fUklHSFRfV0lUSF9CQURHRSA6IFwiXCIgfX1cbiAgICAgICAgPlxuICAgICAgICAgIDxGaWx0ZXJMaXN0SWNvbiBmb250U2l6ZT1cImxhcmdlXCIgY2xhc3NOYW1lPXtzdHlsZXMuZmlsdGVySWNvbn0gLz5cbiAgICAgICAgPC9CYWRnZT5cbiAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXMuZmlsdGVyTGFiZWx9Pnt0KFwiZmlsdGVyLmZpbHRlclwiKX08L3NwYW4+XG4gICAgICA8L1N0YWNrPlxuICAgICAgPEJveFxuICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5maWx0ZXJMaXN0Q29udGFpbmVyfSAke3N0eWxlcy5jb250YWluZXJ9ICR7XG4gICAgICAgICAgc2hvd0ZpbHRlckxpc3QgPyBzdHlsZXMuc2hvd0ZpbHRlckxpc3QgOiBcIlwiXG4gICAgICAgIH1gfVxuICAgICAgPlxuICAgICAgICA8UGFwZXIgZWxldmF0aW9uPXs4fSBjbGFzc05hbWU9e3N0eWxlcy5maWx0ZXJDaGVja2JveENvbnRhaW5lcn0+XG4gICAgICAgICAgPENhcmQgdmFyaWFudD1cIm91dGxpbmVkXCI+XG4gICAgICAgICAgICA8Q2FyZEhlYWRlclxuICAgICAgICAgICAgICB0aXRsZT1cIkZpbHRlcnNcIlxuICAgICAgICAgICAgICBhY3Rpb249e1xuICAgICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICAgIGRpc2FibGVSaXBwbGVcbiAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZUZpbHRlclJlc2V0fVxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuY2xlYW5CdXR0b259XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge3QoXCJmaWx0ZXIuY2xlYXJcIil9XG4gICAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8RGl2aWRlciAvPlxuICAgICAgICAgICAgPEJhZGdlRmVhdHVyZUZpbHRlclxuICAgICAgICAgICAgICB2YWx1ZXM9e2ZpbHRlcltGSUxURVJfVkFSX0JBREdFX0ZFQVRVUkVdfVxuICAgICAgICAgICAgICBvbkZpbHRlcj17KG5ld0ZpbHRlcikgPT4gb25GaWx0ZXIobmV3RmlsdGVyKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8QXNzaWduZWRGaWx0ZXJcbiAgICAgICAgICAgICAgdmFsdWVzPXtmaWx0ZXJbRklMVEVSX1ZBUl9USUNLRVRfQVNTSUdORURdfVxuICAgICAgICAgICAgICBvbkZpbHRlcj17KG5ld0ZpbHRlcikgPT4gb25GaWx0ZXIobmV3RmlsdGVyKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8U3RhdHVzRmlsdGVyXG4gICAgICAgICAgICAgIHZhbHVlcz17ZmlsdGVyW0ZJTFRFUl9WQVJfT1dORVJfU1RBVFVTXX1cbiAgICAgICAgICAgICAgb25GaWx0ZXI9eyhuZXdGaWx0ZXIpID0+IG9uRmlsdGVyKG5ld0ZpbHRlcil9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPFRpY2tldFR5cGVGaWx0ZXJcbiAgICAgICAgICAgICAgdmFsdWVzPXtmaWx0ZXJbRklMVEVSX1ZBUl9USUNLRVRfVFlQRV19XG4gICAgICAgICAgICAgIG9uRmlsdGVyPXsobmV3RmlsdGVyKSA9PiBvbkZpbHRlcihuZXdGaWx0ZXIpfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxQcm9tb0NvZGVGaWx0ZXJcbiAgICAgICAgICAgICAgdmFsdWVzPXtmaWx0ZXJbRklMVEVSX1ZBUl9QUk9NT0NPREVdfVxuICAgICAgICAgICAgICBvbkZpbHRlcj17KG5ld0ZpbHRlcikgPT4gb25GaWx0ZXIobmV3RmlsdGVyKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8RnJlZVBhaWRGaWx0ZXJcbiAgICAgICAgICAgICAgdmFsdWVzPXtmaWx0ZXJbRklMVEVSX1ZBUl9GUkVFX1BBSURdfVxuICAgICAgICAgICAgICBvbkZpbHRlcj17KG5ld0ZpbHRlcikgPT4gb25GaWx0ZXIobmV3RmlsdGVyKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9DYXJkPlxuICAgICAgICA8L1BhcGVyPlxuICAgICAgPC9Cb3g+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5GaWx0ZXIucHJvcFR5cGVzID0ge1xuICBvbkZpbHRlcjogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmNvbnN0IG1hcFN0YXRlVG9Qcm9wcyA9ICh7IHdpZGdldFN0YXRlIH0pID0+ICh7XG4gIHNvcnQ6IHdpZGdldFN0YXRlLnNvcnQsXG4gIGZpbHRlcjogd2lkZ2V0U3RhdGUuZmlsdGVyXG59KTtcblxuZXhwb3J0IGRlZmF1bHQgY29ubmVjdChtYXBTdGF0ZVRvUHJvcHMsIHt9KShGaWx0ZXIpO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VTZWxlY3Rvciwgc2hhbGxvd0VxdWFsIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQge1xuICBCb3gsXG4gIEZvcm1Db250cm9sTGFiZWwsXG4gIENhcmRIZWFkZXIsXG4gIEljb25CdXR0b24sXG4gIENvbGxhcHNlLFxuICBDYXJkQ29udGVudCxcbiAgUmFkaW9Hcm91cCxcbiAgUmFkaW9cbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBFeHBhbmRNb3JlSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9FeHBhbmRNb3JlXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgeyBGSUxURVJfVkFSX0ZSRUVfUEFJRCB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5cbmNvbnN0IEZyZWVQYWlkRmlsdGVyID0gKHsgb25GaWx0ZXIgfSkgPT4ge1xuICBjb25zdCB7XG4gICAgZmlsdGVyOiB7IEZJTFRFUl9WQVJfRlJFRV9QQUlEOiBmaWx0ZXJWYWx1ZXMgfVxuICB9ID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSB8fCB7fSwgc2hhbGxvd0VxdWFsKTtcblxuICBjb25zdCBbaXNFeHBhbmRlZCwgc2V0SXNFeHBhbmRlZF0gPSB1c2VTdGF0ZSghIWZpbHRlclZhbHVlcyk7XG5cbiAgY29uc3QgYXNzaWduZWRWYWx1ZXMgPSBbXG4gICAgeyB2YWx1ZTogXCJGcmVlXCIsIGxhYmVsOiBcIkZyZWVcIiB9LFxuICAgIHsgdmFsdWU6IFwiUGFpZFwiLCBsYWJlbDogXCJQYWlkXCIgfVxuICBdO1xuXG4gIGNvbnN0IGhhbmRsZUZpbHRlckNoYW5nZSA9IChldiwgdmFsdWUpID0+IHtcbiAgICBjb25zdCBuZXdGaWx0ZXIgPSB2YWx1ZTtcbiAgICBvbkZpbHRlcih7XG4gICAgICBbRklMVEVSX1ZBUl9GUkVFX1BBSURdOiBuZXdGaWx0ZXJcbiAgICB9KTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxCb3g+XG4gICAgICA8Q2FyZEhlYWRlclxuICAgICAgICB0aXRsZT1cIkZyZWUgLyBQYWlkXCJcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGl0bGVXcmFwcGVyfVxuICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRJc0V4cGFuZGVkKCFpc0V4cGFuZGVkKX1cbiAgICAgICAgYWN0aW9uPXtcbiAgICAgICAgICA8SWNvbkJ1dHRvbiBhcmlhLWxhYmVsPVwiZXhwYW5kXCIgZGlzYWJsZVJpcHBsZT5cbiAgICAgICAgICAgIDxFeHBhbmRNb3JlSWNvblxuICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogaXNFeHBhbmRlZCA/IFwicm90YXRlKDE4MGRlZylcIiA6IFwicm90YXRlKDBkZWcpXCIsXG4gICAgICAgICAgICAgICAgdHJhbnNpdGlvbjogXCJ0cmFuc2Zvcm0gMC4zc1wiXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgfVxuICAgICAgLz5cbiAgICAgIDxDb2xsYXBzZSBpbj17aXNFeHBhbmRlZH0gdGltZW91dD1cImF1dG9cIiB1bm1vdW50T25FeGl0PlxuICAgICAgICA8Q2FyZENvbnRlbnRcbiAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgcHk6IDAsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IFwiIzAwMDAwMDBBXCIsXG4gICAgICAgICAgICBcIiY6bGFzdC1jaGlsZFwiOiB7XG4gICAgICAgICAgICAgIHBiOiAwXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIDxSYWRpb0dyb3VwIHZhbHVlPXtmaWx0ZXJWYWx1ZXN9IG9uQ2hhbmdlPXtoYW5kbGVGaWx0ZXJDaGFuZ2V9PlxuICAgICAgICAgICAge2Fzc2lnbmVkVmFsdWVzLm1hcCgoYXNzaWduZWQpID0+IChcbiAgICAgICAgICAgICAgPEJveFxuICAgICAgICAgICAgICAgIHN4PXt7IHB5OiAxIH19XG4gICAgICAgICAgICAgICAga2V5PXtgZmlsdGVyLWJhZGdlLWZlYXR1cmUtJHthc3NpZ25lZC5sYWJlbH19YH1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxGb3JtQ29udHJvbExhYmVsXG4gICAgICAgICAgICAgICAgICBjb250cm9sPXtcbiAgICAgICAgICAgICAgICAgICAgPFJhZGlvXG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2Fzc2lnbmVkLnZhbHVlfVxuICAgICAgICAgICAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgICAgICAgICAgICBcIiYgLk11aVN2Z0ljb24tcm9vdFwiOiB7IGZvbnRTaXplOiAxOCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgXCImLk11aS1jaGVja2VkXCI6IHsgY29sb3I6IFwiIzIxOTZGM1wiIH1cbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgbGFiZWw9e2Fzc2lnbmVkLmxhYmVsfVxuICAgICAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICAgICAgXCImIC5NdWlGb3JtQ29udHJvbExhYmVsLWxhYmVsXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTogXCIxZW1cIlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgKSl9XG4gICAgICAgICAgPC9SYWRpb0dyb3VwPlxuICAgICAgICA8L0NhcmRDb250ZW50PlxuICAgICAgPC9Db2xsYXBzZT5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbkZyZWVQYWlkRmlsdGVyLnByb3BUeXBlcyA9IHtcbiAgb25GaWx0ZXI6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBGcmVlUGFpZEZpbHRlcjtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZVNlbGVjdG9yLCBzaGFsbG93RXF1YWwgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIEJveCxcbiAgQ2FyZEhlYWRlcixcbiAgSWNvbkJ1dHRvbixcbiAgQ29sbGFwc2UsXG4gIENhcmRDb250ZW50LFxuICBUZXh0RmllbGRcbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBFeHBhbmRNb3JlSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9FeHBhbmRNb3JlXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgeyBGSUxURVJfVkFSX1BST01PQ09ERSB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5cbmNvbnN0IFByb21vQ29kZUZpbHRlciA9ICh7IG9uRmlsdGVyIH0pID0+IHtcbiAgY29uc3Qge1xuICAgIGZpbHRlcjogeyBGSUxURVJfVkFSX1BST01PQ09ERTogZmlsdGVyVmFsdWVzIH1cbiAgfSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30sIHNoYWxsb3dFcXVhbCk7XG5cbiAgY29uc3QgW2lzRXhwYW5kZWQsIHNldElzRXhwYW5kZWRdID0gdXNlU3RhdGUoISFmaWx0ZXJWYWx1ZXMpO1xuICBjb25zdCBbcHJvbW9Db2RlLCBzZXRQcm9tb0NvZGVdID0gdXNlU3RhdGUoZmlsdGVyVmFsdWVzIHx8IFwiXCIpO1xuXG4gIGNvbnN0IGRlYm91bmNlVGltZXIgPSB1c2VSZWYobnVsbCk7XG4gIGNvbnN0IERFQk9VTkNFX1ZBTFVFID0gNTAwO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0UHJvbW9Db2RlKGZpbHRlclZhbHVlcyB8fCBcIlwiKTtcbiAgICBzZXRJc0V4cGFuZGVkKCEhZmlsdGVyVmFsdWVzKTtcbiAgfSwgW2ZpbHRlclZhbHVlc10pO1xuXG4gIGNvbnN0IGhhbmRsZUZpbHRlckNoYW5nZSA9IChldikgPT4ge1xuICAgIGNvbnN0IG5ld1Byb21vQ29kZSA9IGV2LnRhcmdldC52YWx1ZTtcbiAgICAvLyB1cGRhdGUgbG9jYWwgc3RhdGUgc28gdGhlIGlucHV0IHJlZmxlY3RzIGNoYW5nZXNcbiAgICBzZXRQcm9tb0NvZGUobmV3UHJvbW9Db2RlKTtcblxuICAgIC8vIHJlbW92ZSBjdXJyZW50IGRlYm91bmNlXG4gICAgaWYgKGRlYm91bmNlVGltZXIuY3VycmVudCkge1xuICAgICAgY2xlYXJUaW1lb3V0KGRlYm91bmNlVGltZXIuY3VycmVudCk7XG4gICAgfVxuXG4gICAgLy8gZGVib3VuY2Ugc2V0IHRvIDUwMCBtc1xuICAgIGRlYm91bmNlVGltZXIuY3VycmVudCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgb25GaWx0ZXIoe1xuICAgICAgICBbRklMVEVSX1ZBUl9QUk9NT0NPREVdOiBuZXdQcm9tb0NvZGVcbiAgICAgIH0pO1xuICAgIH0sIERFQk9VTkNFX1ZBTFVFKTtcbiAgfTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIC8vIHJlbW92ZSBkZWJvdW5jZSBvbiByZWxvYWRcbiAgICBpZiAoZGVib3VuY2VUaW1lci5jdXJyZW50KSB7XG4gICAgICBjbGVhclRpbWVvdXQoZGVib3VuY2VUaW1lci5jdXJyZW50KTtcbiAgICB9XG4gIH0sIFtdKTtcblxuICByZXR1cm4gKFxuICAgIDxCb3g+XG4gICAgICA8Q2FyZEhlYWRlclxuICAgICAgICB0aXRsZT1cIlByb21vIENvZGVcIlxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aXRsZVdyYXBwZXJ9XG4gICAgICAgIG9uQ2xpY2s9eygpID0+IHNldElzRXhwYW5kZWQoIWlzRXhwYW5kZWQpfVxuICAgICAgICBhY3Rpb249e1xuICAgICAgICAgIDxJY29uQnV0dG9uIGFyaWEtbGFiZWw9XCJleHBhbmRcIiBkaXNhYmxlUmlwcGxlPlxuICAgICAgICAgICAgPEV4cGFuZE1vcmVJY29uXG4gICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiBpc0V4cGFuZGVkID8gXCJyb3RhdGUoMTgwZGVnKVwiIDogXCJyb3RhdGUoMGRlZylcIixcbiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uOiBcInRyYW5zZm9ybSAwLjNzXCJcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICB9XG4gICAgICAvPlxuICAgICAgPENvbGxhcHNlIGluPXtpc0V4cGFuZGVkfSB0aW1lb3V0PVwiYXV0b1wiIHVubW91bnRPbkV4aXQ+XG4gICAgICAgIDxDYXJkQ29udGVudFxuICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IFwiIzAwMDAwMDBBXCIsXG4gICAgICAgICAgICBcIiY6bGFzdC1jaGlsZFwiOiB7XG4gICAgICAgICAgICAgIHB5OiAxXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lZFwiXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkVudGVyIHByb21vIGNvZGVcIlxuICAgICAgICAgICAgdmFsdWU9e3Byb21vQ29kZX1cbiAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVGaWx0ZXJDaGFuZ2V9XG4gICAgICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgICAvPlxuICAgICAgICA8L0NhcmRDb250ZW50PlxuICAgICAgPC9Db2xsYXBzZT5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cblByb21vQ29kZUZpbHRlci5wcm9wVHlwZXMgPSB7XG4gIG9uRmlsdGVyOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgUHJvbW9Db2RlRmlsdGVyO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBzdHlsZWQgfSBmcm9tIFwiQG11aS9tYXRlcmlhbC9zdHlsZXNcIjtcbmltcG9ydCBTZWFyY2hJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL1NlYXJjaFwiO1xuaW1wb3J0IENsb3NlSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9DbG9zZVwiO1xuaW1wb3J0IElucHV0QmFzZSBmcm9tIFwiQG11aS9tYXRlcmlhbC9JbnB1dEJhc2VcIjtcbmltcG9ydCB7IEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBGSUxURVJfVkFSX09SREVSX05VTUJFUiB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5cbmNvbnN0IFNlYXJjaENvbnRhaW5lciA9IHN0eWxlZChcImRpdlwiKSgoKSA9PiAoe1xuICBwb3NpdGlvbjogXCJyZWxhdGl2ZVwiLFxuICBtYXJnaW5SaWdodDogXCIwXCIsXG4gIG1hcmdpbkxlZnQ6IFwiMFwiLFxuICB3aWR0aDogXCIxMDAlXCIsXG4gIGRpc3BsYXk6IFwiYmxvY2tcIlxufSkpO1xuY29uc3QgU2VhcmNoSWNvbldyYXBwZXIgPSBzdHlsZWQoXCJkaXZcIikoKCkgPT4gKHtcbiAgaGVpZ2h0OiBcIjEwMCVcIixcbiAgcG9zaXRpb246IFwiYWJzb2x1dGVcIixcbiAgZGlzcGxheTogXCJmbGV4XCIsXG4gIGFsaWduSXRlbXM6IFwiY2VudGVyXCIsXG4gIGp1c3RpZnlDb250ZW50OiBcImNlbnRlclwiXG59KSk7XG5jb25zdCBTdHlsZWRJbnB1dEJhc2UgPSBzdHlsZWQoSW5wdXRCYXNlKSgoKSA9PiAoe1xuICBjb2xvcjogXCJpbmhlcml0XCIsXG4gIGJvcmRlckJvdHRvbTogXCIxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjQyKVwiLFxuICBwYWRkaW5nTGVmdDogXCIyNXB4XCIsXG4gIHBhZGRpbmdSaWdodDogXCIyNXB4XCIsXG4gIGZvbnRTaXplOiBcIjFlbVwiXG59KSk7XG5jb25zdCBDbG9zZUljb25XcmFwcGVyID0gc3R5bGVkKENsb3NlSWNvbikoKCkgPT4gKHtcbiAgcGFkZGluZzogXCIycHhcIixcbiAgZm9udFNpemU6IFwiMS41ZW1cIixcbiAgaGVpZ2h0OiBcIjEwMCVcIixcbiAgcG9zaXRpb246IFwiYWJzb2x1dGVcIixcbiAgdG9wOiBcIjBcIixcbiAgcmlnaHQ6IFwiMFwiLFxuICBkaXNwbGF5OiBcImZsZXhcIixcbiAgYWxpZ25JdGVtczogXCJjZW50ZXJcIixcbiAganVzdGlmeUNvbnRlbnQ6IFwiY2VudGVyXCIsXG4gIGN1cnNvcjogXCJwb2ludGVyXCIsXG4gIHpJbmRleDogXCIxMDAwXCJcbn0pKTtcblxuY29uc3QgU2VhcmNoID0gKHsgb25TZWFyY2ggfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IFtzaG93Q2xvc2UsIHNldFNob3dDbG9zZV0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtzZWFyY2hWYWx1ZSwgc2V0U2VhcmNoVmFsdWVdID0gdXNlU3RhdGUoXCJcIik7XG4gIGNvbnN0IG9uS2V5RG93biA9IChldmVudCkgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIGtleSxcbiAgICAgIG5hdGl2ZUV2ZW50OiB7XG4gICAgICAgIHRhcmdldDogeyB2YWx1ZSB9XG4gICAgICB9XG4gICAgfSA9IGV2ZW50O1xuICAgIGlmIChrZXkgPT09IFwiRW50ZXJcIikge1xuICAgICAgb25TZWFyY2goe1xuICAgICAgICBbRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVJdOiB2YWx1ZVxuICAgICAgfSk7XG4gICAgICBzZXRTaG93Q2xvc2UodHJ1ZSk7XG4gICAgfVxuICB9O1xuICBjb25zdCByZXNldFNlYXJjaCA9ICgpID0+IHtcbiAgICBzZXRTZWFyY2hWYWx1ZShcIlwiKTtcbiAgICBvblNlYXJjaCh7XG4gICAgICBbRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVJdOiBcIlwiXG4gICAgfSk7XG4gICAgc2V0U2hvd0Nsb3NlKHRydWUpO1xuICAgIHNldFNob3dDbG9zZShmYWxzZSk7XG4gIH07XG4gIHJldHVybiAoXG4gICAgPEJveD5cbiAgICAgIDxTZWFyY2hDb250YWluZXI+XG4gICAgICAgIHtzaG93Q2xvc2UgJiYgKFxuICAgICAgICAgIDxDbG9zZUljb25XcmFwcGVyIG9uQ2xpY2s9e3Jlc2V0U2VhcmNofT5cbiAgICAgICAgICAgIDxDbG9zZUljb24gLz5cbiAgICAgICAgICA8L0Nsb3NlSWNvbldyYXBwZXI+XG4gICAgICAgICl9XG4gICAgICAgIDxTZWFyY2hJY29uV3JhcHBlcj5cbiAgICAgICAgICA8U2VhcmNoSWNvbiAvPlxuICAgICAgICA8L1NlYXJjaEljb25XcmFwcGVyPlxuICAgICAgICA8U3R5bGVkSW5wdXRCYXNlXG4gICAgICAgICAgcGxhY2Vob2xkZXI9e3QoXCJvcmRlcl9zZWFyY2gub3JkZXJfbnVtYmVyXCIpfVxuICAgICAgICAgIGlucHV0UHJvcHM9e3sgXCJhcmlhLWxhYmVsXCI6IFwic2VhcmNoXCIgfX1cbiAgICAgICAgICB2YWx1ZT17c2VhcmNoVmFsdWV9XG4gICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBzZXRTZWFyY2hWYWx1ZShlLnRhcmdldC52YWx1ZSl9XG4gICAgICAgICAgb25LZXlEb3duPXtvbktleURvd259XG4gICAgICAgIC8+XG4gICAgICA8L1NlYXJjaENvbnRhaW5lcj5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cblNlYXJjaC5wcm9wVHlwZXMgPSB7XG4gIG9uU2VhcmNoOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgU2VhcmNoO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCB1c2VSZWYsIHVzZUVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFN0YWNrIGZyb20gXCJAbXVpL21hdGVyaWFsL1N0YWNrXCI7XG5pbXBvcnQgeyBCb3gsIEJ1dHRvbiwgUGFwZXIgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IEltcG9ydEV4cG9ydEljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvSW1wb3J0RXhwb3J0XCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IFNvcnQgPSAoeyBvblNvcnQgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IFtzaG93U29ydCwgc2V0U2hvd1NvcnRdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBzb3J0UmVmID0gdXNlUmVmKG51bGwpO1xuICBjb25zdCBoYW5kbGVTb3J0Q2xpY2tPdXRzaWRlID0gKGV2ZW50KSA9PiB7XG4gICAgaWYgKHNvcnRSZWYuY3VycmVudCAmJiAhc29ydFJlZi5jdXJyZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpIHtcbiAgICAgIHNldFNob3dTb3J0KGZhbHNlKTtcbiAgICB9XG4gIH07XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGhhbmRsZVNvcnRDbGlja091dHNpZGUsIGZhbHNlKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGhhbmRsZVNvcnRDbGlja091dHNpZGUsIGZhbHNlKTtcbiAgICB9O1xuICB9LCBbc2hvd1NvcnRdKTtcblxuICBjb25zdCB0b2dnbGUgPSAoKSA9PiB7XG4gICAgc2V0U2hvd1NvcnQoIXNob3dTb3J0KTtcbiAgfTtcbiAgcmV0dXJuIChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLnNvcnRDb250YWluZXJ9IG9uQ2xpY2s9e3RvZ2dsZX0+XG4gICAgICA8U3RhY2tcbiAgICAgICAgcmVmPXtzb3J0UmVmfVxuICAgICAgICBhbGlnbkl0ZW1zPVwiY2VudGVyXCJcbiAgICAgICAgZGlyZWN0aW9uPVwicm93XCJcbiAgICAgICAgc3g9e3sgcHQ6IDIsIHBiOiAyIH19XG4gICAgICA+XG4gICAgICAgIDxJbXBvcnRFeHBvcnRJY29uIGZvbnRTaXplPVwibGFyZ2VcIiBjbGFzc05hbWU9e3N0eWxlcy5zb3J0SWNvbn0gLz5cbiAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXMuc29ydExhYmVsfT57dChcInNvcnQuc29ydFwiKX08L3NwYW4+XG4gICAgICA8L1N0YWNrPlxuICAgICAge3Nob3dTb3J0ICYmIChcbiAgICAgICAgPFBhcGVyXG4gICAgICAgICAgZWxldmF0aW9uPXs4fVxuICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLnNvcnRMaXN0Q29udGFpbmVyfSAke3N0eWxlcy5jb250YWluZXJ9YH1cbiAgICAgICAgPlxuICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgIGRpc2FibGVSaXBwbGVcbiAgICAgICAgICAgIHZhcmlhbnQ9XCJ0ZXh0XCJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmxhYmVsfVxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4gb25Tb3J0KHsgZGlyZWN0aW9uOiBcImRlc2NcIiwgbmFtZTogXCJjcmVhdGVkXCIgfSl9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3QoXCJzb3J0Lm5ld19maXJzdFwiKX1cbiAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICBkaXNhYmxlUmlwcGxlXG4gICAgICAgICAgICB2YXJpYW50PVwidGV4dFwiXG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5sYWJlbH1cbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG9uU29ydCh7IGRpcmVjdGlvbjogXCJhc2NcIiwgbmFtZTogXCJjcmVhdGVkXCIgfSl9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3QoXCJzb3J0Lm9sZF9maXJzdFwiKX1cbiAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgPC9QYXBlcj5cbiAgICAgICl9XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBTb3J0O1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VTZWxlY3Rvciwgc2hhbGxvd0VxdWFsIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQge1xuICBCb3gsXG4gIEZvcm1Db250cm9sTGFiZWwsXG4gIENhcmRIZWFkZXIsXG4gIEljb25CdXR0b24sXG4gIENvbGxhcHNlLFxuICBDYXJkQ29udGVudCxcbiAgUmFkaW9Hcm91cCxcbiAgUmFkaW9cbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBFeHBhbmRNb3JlSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9FeHBhbmRNb3JlXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgeyBGSUxURVJfVkFSX09XTkVSX1NUQVRVUyB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5cbmNvbnN0IFN0YXR1c0ZpbHRlciA9ICh7IG9uRmlsdGVyIH0pID0+IHtcbiAgY29uc3Qge1xuICAgIGZpbHRlcjogeyBGSUxURVJfVkFSX09XTkVSX1NUQVRVUzogZmlsdGVyVmFsdWVzIH1cbiAgfSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30sIHNoYWxsb3dFcXVhbCk7XG5cbiAgY29uc3QgW2lzRXhwYW5kZWQsIHNldElzRXhwYW5kZWRdID0gdXNlU3RhdGUoISFmaWx0ZXJWYWx1ZXMpO1xuXG4gIGNvbnN0IGFzc2lnbmVkVmFsdWVzID0gW1xuICAgIHsgdmFsdWU6IFwiSW5jb21wbGV0ZVwiLCBsYWJlbDogXCJJbmNvbXBsZXRlXCIgfSxcbiAgICB7IHZhbHVlOiBcIkNvbXBsZXRlXCIsIGxhYmVsOiBcIkNvbXBsZXRlXCIgfVxuICBdO1xuXG4gIGNvbnN0IGhhbmRsZUZpbHRlckNoYW5nZSA9IChldiwgdmFsdWUpID0+IHtcbiAgICBjb25zdCBuZXdGaWx0ZXIgPSB2YWx1ZTtcbiAgICBvbkZpbHRlcih7XG4gICAgICBbRklMVEVSX1ZBUl9PV05FUl9TVEFUVVNdOiBuZXdGaWx0ZXJcbiAgICB9KTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxCb3g+XG4gICAgICA8Q2FyZEhlYWRlclxuICAgICAgICB0aXRsZT1cIlN0YXR1c1wiXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpdGxlV3JhcHBlcn1cbiAgICAgICAgb25DbGljaz17KCkgPT4gc2V0SXNFeHBhbmRlZCghaXNFeHBhbmRlZCl9XG4gICAgICAgIGFjdGlvbj17XG4gICAgICAgICAgPEljb25CdXR0b24gYXJpYS1sYWJlbD1cImV4cGFuZFwiIGRpc2FibGVSaXBwbGU+XG4gICAgICAgICAgICA8RXhwYW5kTW9yZUljb25cbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IGlzRXhwYW5kZWQgPyBcInJvdGF0ZSgxODBkZWcpXCIgOiBcInJvdGF0ZSgwZGVnKVwiLFxuICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IFwidHJhbnNmb3JtIDAuM3NcIlxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgIH1cbiAgICAgIC8+XG4gICAgICA8Q29sbGFwc2UgaW49e2lzRXhwYW5kZWR9IHRpbWVvdXQ9XCJhdXRvXCIgdW5tb3VudE9uRXhpdD5cbiAgICAgICAgPENhcmRDb250ZW50XG4gICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgIHB5OiAwLFxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBcIiMwMDAwMDAwQVwiLFxuICAgICAgICAgICAgXCImOmxhc3QtY2hpbGRcIjoge1xuICAgICAgICAgICAgICBwYjogMFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICA8UmFkaW9Hcm91cCB2YWx1ZT17ZmlsdGVyVmFsdWVzfSBvbkNoYW5nZT17aGFuZGxlRmlsdGVyQ2hhbmdlfT5cbiAgICAgICAgICAgIHthc3NpZ25lZFZhbHVlcy5tYXAoKGFzc2lnbmVkKSA9PiAoXG4gICAgICAgICAgICAgIDxCb3hcbiAgICAgICAgICAgICAgICBzeD17eyBweTogMSB9fVxuICAgICAgICAgICAgICAgIGtleT17YGZpbHRlci1iYWRnZS1mZWF0dXJlLSR7YXNzaWduZWQubGFiZWx9fWB9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8Rm9ybUNvbnRyb2xMYWJlbFxuICAgICAgICAgICAgICAgICAgY29udHJvbD17XG4gICAgICAgICAgICAgICAgICAgIDxSYWRpb1xuICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXthc3NpZ25lZC52YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICAgICAgICAgICAgXCImIC5NdWlTdmdJY29uLXJvb3RcIjogeyBmb250U2l6ZTogMTggfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiJi5NdWktY2hlY2tlZFwiOiB7IGNvbG9yOiBcIiMyMTk2RjNcIiB9XG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIGxhYmVsPXthc3NpZ25lZC5sYWJlbH1cbiAgICAgICAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgICAgICAgIFwiJiAuTXVpRm9ybUNvbnRyb2xMYWJlbC1sYWJlbFwiOiB7XG4gICAgICAgICAgICAgICAgICAgICAgZm9udFNpemU6IFwiMWVtXCJcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgICkpfVxuICAgICAgICAgIDwvUmFkaW9Hcm91cD5cbiAgICAgICAgPC9DYXJkQ29udGVudD5cbiAgICAgIDwvQ29sbGFwc2U+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5TdGF0dXNGaWx0ZXIucHJvcFR5cGVzID0ge1xuICBvbkZpbHRlcjogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFN0YXR1c0ZpbHRlcjtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSwgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VTZWxlY3Rvciwgc2hhbGxvd0VxdWFsIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQge1xuICBCb3gsXG4gIEZvcm1Db250cm9sTGFiZWwsXG4gIENoZWNrYm94LFxuICBDYXJkSGVhZGVyLFxuICBJY29uQnV0dG9uLFxuICBDb2xsYXBzZSxcbiAgQ2FyZENvbnRlbnRcbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBFeHBhbmRNb3JlSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9FeHBhbmRNb3JlXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgeyBGSUxURVJfVkFSX1RJQ0tFVF9UWVBFIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcblxuY29uc3QgVGlja2V0VHlwZUZpbHRlciA9ICh7IG9uRmlsdGVyIH0pID0+IHtcbiAgY29uc3Qge1xuICAgIHN1bW1pdDogeyB0aWNrZXRfdHlwZXMgfSxcbiAgICBmaWx0ZXI6IHsgRklMVEVSX1ZBUl9USUNLRVRfVFlQRTogZmlsdGVyVmFsdWVzIH1cbiAgfSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30sIHNoYWxsb3dFcXVhbCk7XG5cbiAgY29uc3QgW2lzRXhwYW5kZWQsIHNldElzRXhwYW5kZWRdID0gdXNlU3RhdGUoISFmaWx0ZXJWYWx1ZXMubGVuZ3RoKTtcblxuICBjb25zdCBoYW5kbGVGaWx0ZXJDaGFuZ2UgPSAodmFsdWUpID0+IHtcbiAgICBjb25zdCBuZXdGaWx0ZXJzID0gZmlsdGVyVmFsdWVzPy5pbmNsdWRlcyh2YWx1ZSlcbiAgICAgID8gZmlsdGVyVmFsdWVzLmZpbHRlcigoZikgPT4gZiAhPT0gdmFsdWUpXG4gICAgICA6IFsuLi5maWx0ZXJWYWx1ZXMsIHZhbHVlXTtcbiAgICBvbkZpbHRlcih7XG4gICAgICBbRklMVEVSX1ZBUl9USUNLRVRfVFlQRV06IG5ld0ZpbHRlcnNcbiAgICB9KTtcbiAgfTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHNldElzRXhwYW5kZWQoISFmaWx0ZXJWYWx1ZXMubGVuZ3RoKTtcbiAgfSwgW2ZpbHRlclZhbHVlc10pO1xuXG4gIHJldHVybiAoXG4gICAgPEJveD5cbiAgICAgIDxDYXJkSGVhZGVyXG4gICAgICAgIHRpdGxlPVwiVGlja2V0IFR5cGVcIlxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aXRsZVdyYXBwZXJ9XG4gICAgICAgIG9uQ2xpY2s9eygpID0+IHNldElzRXhwYW5kZWQoIWlzRXhwYW5kZWQpfVxuICAgICAgICBhY3Rpb249e1xuICAgICAgICAgIDxJY29uQnV0dG9uIGFyaWEtbGFiZWw9XCJleHBhbmRcIiBkaXNhYmxlUmlwcGxlPlxuICAgICAgICAgICAgPEV4cGFuZE1vcmVJY29uXG4gICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiBpc0V4cGFuZGVkID8gXCJyb3RhdGUoMTgwZGVnKVwiIDogXCJyb3RhdGUoMGRlZylcIixcbiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uOiBcInRyYW5zZm9ybSAwLjNzXCJcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICB9XG4gICAgICAvPlxuICAgICAgPENvbGxhcHNlIGluPXtpc0V4cGFuZGVkfSB0aW1lb3V0PVwiYXV0b1wiIHVubW91bnRPbkV4aXQ+XG4gICAgICAgIDxDYXJkQ29udGVudFxuICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICBweTogMCxcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogXCIjMDAwMDAwMEFcIixcbiAgICAgICAgICAgIFwiJjpsYXN0LWNoaWxkXCI6IHtcbiAgICAgICAgICAgICAgcGI6IDBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9fVxuICAgICAgICA+XG4gICAgICAgICAge3RpY2tldF90eXBlcy5tYXAoKGJmKSA9PiAoXG4gICAgICAgICAgICA8Qm94IHN4PXt7IHB5OiAxIH19IGtleT17YGZpbHRlci1iYWRnZS1mZWF0dXJlLSR7YmYubmFtZX19YH0+XG4gICAgICAgICAgICAgIDxGb3JtQ29udHJvbExhYmVsXG4gICAgICAgICAgICAgICAgY29udHJvbD17XG4gICAgICAgICAgICAgICAgICA8Q2hlY2tib3hcbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eygpID0+IGhhbmRsZUZpbHRlckNoYW5nZShiZi5pZCl9XG4gICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e2ZpbHRlclZhbHVlcy5pbmNsdWRlcyhiZi5pZCl9XG4gICAgICAgICAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgICAgICAgICAgXCImIC5NdWlTdmdJY29uLXJvb3RcIjogeyBmb250U2l6ZTogMTggfSxcbiAgICAgICAgICAgICAgICAgICAgICBcIiYuTXVpLWNoZWNrZWRcIjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IFwiIzIxOTZGM1wiXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbGFiZWw9e2JmLm5hbWV9XG4gICAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICAgIFwiJiAuTXVpRm9ybUNvbnRyb2xMYWJlbC1sYWJlbFwiOiB7XG4gICAgICAgICAgICAgICAgICAgIGZvbnRTaXplOiBcIjFlbVwiXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICkpfVxuICAgICAgICA8L0NhcmRDb250ZW50PlxuICAgICAgPC9Db2xsYXBzZT5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cblRpY2tldFR5cGVGaWx0ZXIucHJvcFR5cGVzID0ge1xuICBvbkZpbHRlcjogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRpY2tldFR5cGVGaWx0ZXI7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBHcmlkIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBGaWx0ZXIgZnJvbSBcIi4vRmlsdGVyXCI7XG5pbXBvcnQgU29ydCBmcm9tIFwiLi9Tb3J0XCI7XG5pbXBvcnQgU2VhcmNoIGZyb20gXCIuL1NlYXJjaFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBGaWx0ZXJzID0gKHsgb25GaWx0ZXIsIG9uU29ydCwgb25TZWFyY2gsIG9uUmVzZXQgfSkgPT4gKFxuICA8R3JpZCBjb250YWluZXIganVzdGlmeT1cImZsZXgtZW5kXCIgYWxpZ25JdGVtcz1cImNlbnRlclwiPlxuICAgIDxHcmlkXG4gICAgICBpdGVtXG4gICAgICB4cz17Nn1cbiAgICAgIGNvbnRhaW5lclxuICAgICAgcGFkZGluZz17MX1cbiAgICAgIGdhcD17Mn1cbiAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmZpbHRlclNvcnRDb250YWluZXJ9XG4gICAgICBzeD17eyBwdDogMiwgcGI6IDIgfX1cbiAgICA+XG4gICAgICA8R3JpZCBpdGVtPlxuICAgICAgICA8RmlsdGVyIG9uRmlsdGVyPXtvbkZpbHRlcn0gb25SZXNldD17b25SZXNldH0gLz5cbiAgICAgIDwvR3JpZD5cbiAgICAgIDxHcmlkIGl0ZW0+XG4gICAgICAgIDxTb3J0IG9uU29ydD17b25Tb3J0fSAvPlxuICAgICAgPC9HcmlkPlxuICAgIDwvR3JpZD5cbiAgICA8R3JpZCBpdGVtIHhzPXs2fSBjb250YWluZXIganVzdGlmeUNvbnRlbnQ9XCJmbGV4LWVuZFwiPlxuICAgICAgPFNlYXJjaCBvblNlYXJjaD17b25TZWFyY2h9IC8+XG4gICAgPC9HcmlkPlxuICA8L0dyaWQ+XG4pO1xuXG5GaWx0ZXJzLnByb3BUeXBlcyA9IHtcbiAgb25GaWx0ZXI6IFByb3BUeXBlcy5mdW5jLFxuICBvblNvcnQ6IFByb3BUeXBlcy5mdW5jLFxuICBvblNlYXJjaDogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uUmVzZXQ6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBGaWx0ZXJzO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgQm94LCBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuXG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IEZvcm1Gb290ZXIgPSAoeyBzYXZlTGFiZWwsIGNhbmNlbExhYmVsLCBvbkNsb3NlLCBkaXNhYmxlZCB9KSA9PiAoXG4gIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuZm9vdGVyfT5cbiAgICA8QnV0dG9uXG4gICAgICBjbGFzc05hbWU9e3N0eWxlcy5jYW5jZWxCdG59XG4gICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lZFwiXG4gICAgICBvbkNsaWNrPXtvbkNsb3NlfVxuICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgID5cbiAgICAgIHtjYW5jZWxMYWJlbH1cbiAgICA8L0J1dHRvbj5cbiAgICA8QnV0dG9uXG4gICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnNhdmVCdG59XG4gICAgICB2YXJpYW50PVwiY29udGFpbmVkXCJcbiAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgID5cbiAgICAgIHtzYXZlTGFiZWx9XG4gICAgPC9CdXR0b24+XG4gIDwvQm94PlxuKTtcblxuRm9ybUZvb3Rlci5wcm9wVHlwZXMgPSB7XG4gIHNhdmVMYWJlbDogUHJvcFR5cGVzLnN0cmluZyxcbiAgY2FuY2VsTGFiZWw6IFByb3BUeXBlcy5zdHJpbmcsXG4gIG9uQ2xvc2U6IFByb3BUeXBlcy5mdW5jLFxuICBkaXNhYmxlZDogUHJvcFR5cGVzLmJvb2xcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEZvcm1Gb290ZXI7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgRXJyb3JJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0Vycm9yXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmZ1bmN0aW9uIEVycm9yTGFiZWwoeyBtZXNzYWdlLCBjb2xvciwgY2xhc3NOYW1lcywgZGF0YVRlc3RJZCB9KSB7XG4gIHJldHVybiAoXG4gICAgPHNwYW5cbiAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLmVycm9yTGFiZWx9ICR7Y2xhc3NOYW1lcyAmJiBjbGFzc05hbWVzfWB9XG4gICAgICBzdHlsZT17eyBjb2xvciB9fVxuICAgICAgZGF0YS10ZXN0aWQ9e2RhdGFUZXN0SWR9XG4gICAgPlxuICAgICAgPEVycm9ySWNvbiBzeD17eyBjb2xvciB9fSAvPlxuICAgICAge21lc3NhZ2V9XG4gICAgPC9zcGFuPlxuICApO1xufVxuXG5leHBvcnQgZGVmYXVsdCBFcnJvckxhYmVsO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgQmFja2Ryb3AsIENpcmN1bGFyUHJvZ3Jlc3MgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuXG5jb25zdCBMb2FkZXIgPSAoeyBvcGVuIH0pID0+IChcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW1hZ2ljLW51bWJlcnNcbiAgPEJhY2tkcm9wIG9wZW49e29wZW59IHN4PXsodGhlbWUpID0+ICh7IHpJbmRleDogdGhlbWUuekluZGV4LmRyYXdlciArIDEgfSl9PlxuICAgIDxDaXJjdWxhclByb2dyZXNzIGNvbG9yPVwiaW5oZXJpdFwiIC8+XG4gIDwvQmFja2Ryb3A+XG4pO1xuXG5Mb2FkZXIucHJvcFR5cGVzID0ge1xuICBvcGVuOiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgTG9hZGVyO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlU2VsZWN0b3IsIHNoYWxsb3dFcXVhbCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQm94IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBTZWFyY2hJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL1NlYXJjaFwiO1xuaW1wb3J0IENsb3NlSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9DbG9zZVwiO1xuaW1wb3J0IEluZmluaXRlU2Nyb2xsIGZyb20gXCJyZWFjdC1pbmZpbml0ZS1zY3JvbGwtY29tcG9uZW50XCI7XG5pbXBvcnQgT3JkZXJzTGlzdCBmcm9tIFwiLi4vT3JkZXJzTGlzdFwiO1xuaW1wb3J0IHsgT05FX1BBR0VfTkVYVCB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBNeU9yZGVyc1RpY2tldHMgPSAoeyBmZXRjaERhdGEgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IHsgc3VtbWl0LCBtZW1iZXJPcmRlcnMsIG9yZGVyc19jdXJyZW50X3BhZ2UsIG9yZGVyc19sYXN0X3BhZ2UgfSA9XG4gICAgdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSB8fCB7fSwgc2hhbGxvd0VxdWFsKTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgaWQ9XCJpbmZpbml0ZVdyYXBwZXJcIiBjbGFzc05hbWU9e3N0eWxlcy5teU9yZGVyc1dyYXBwZXJ9PlxuICAgICAge1wiIFwifVxuICAgICAge21lbWJlck9yZGVycz8ubGVuZ3RoID8gKFxuICAgICAgICA8SW5maW5pdGVTY3JvbGxcbiAgICAgICAgICBkYXRhTGVuZ3RoPXttZW1iZXJPcmRlcnM/Lmxlbmd0aH1cbiAgICAgICAgICBuZXh0PXsoKSA9PiBmZXRjaERhdGEob3JkZXJzX2N1cnJlbnRfcGFnZSArIE9ORV9QQUdFX05FWFQpfVxuICAgICAgICAgIGhhc01vcmU9e29yZGVyc19jdXJyZW50X3BhZ2UgPCBvcmRlcnNfbGFzdF9wYWdlfVxuICAgICAgICAgIHNjcm9sbFRocmVzaG9sZD17MX1cbiAgICAgICAgPlxuICAgICAgICAgIHttZW1iZXJPcmRlcnM/Lm1hcCgob3JkZXIpID0+IChcbiAgICAgICAgICAgIDxPcmRlcnNMaXN0XG4gICAgICAgICAgICAgIGtleT17b3JkZXIubnVtYmVyICsgb3JkZXIuaWR9XG4gICAgICAgICAgICAgIG9yZGVyPXtvcmRlcn1cbiAgICAgICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICkpfVxuICAgICAgICA8L0luZmluaXRlU2Nyb2xsPlxuICAgICAgKSA6IChcbiAgICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5ub09yZGVyc0ZvdW5kfT5cbiAgICAgICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLm5vT3JkZXJzSWNvbldyYXBwZXJ9PlxuICAgICAgICAgICAgPFNlYXJjaEljb24gc3g9e3sgZm9udFNpemU6IDQ0LCBjb2xvcjogXCIjMDAwMDAwOEZcIiB9fSAvPlxuICAgICAgICAgICAgPENsb3NlSWNvblxuICAgICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICAgIGZvbnRTaXplOiAxOCxcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogXCJhYnNvbHV0ZVwiLFxuICAgICAgICAgICAgICAgIHRvcDogMCxcbiAgICAgICAgICAgICAgICByaWdodDogMCxcbiAgICAgICAgICAgICAgICBjb2xvcjogXCIjMDAwMDAwOEZcIlxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0JveD5cbiAgICAgICAgICB7dChcIm9yZGVycy5ub19vcmRlcnNcIil9XG4gICAgICAgIDwvQm94PlxuICAgICAgKX1cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE15T3JkZXJzVGlja2V0cztcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEdyaWQsIEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgRGl2aWRlciBmcm9tIFwiQG11aS9tYXRlcmlhbC9EaXZpZGVyXCI7XG5pbXBvcnQgeyBjYWxjdWxhdGVPcmRlclRvdGFscywgZm9ybWF0Q3VycmVuY3kgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgT3JkZXJTdW1tYXJ5VGFibGUgPSAoeyBvcmRlciwgc3VtbWl0IH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCB7IGRpc2NvdW50VG90YWwsIHJlZnVuZFRvdGFsLCB0YXhlc1RvdGFsLCBhbW91bnRUb3RhbCwgdGlja2V0U3VtbWFyeSB9ID1cbiAgICBjYWxjdWxhdGVPcmRlclRvdGFscyh7IG9yZGVyLCBzdW1taXQgfSk7XG4gIGNvbnN0IGh1bmRyZWQgPSAxMDA7XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyU3VtbWFyeVRhYmxlfT5cbiAgICAgIHt0aWNrZXRTdW1tYXJ5Py5sZW5ndGggPiAwICYmIChcbiAgICAgICAgPD5cbiAgICAgICAgICB7dGlja2V0U3VtbWFyeS5tYXAoKHRpY2tldCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdGlja2V0VG90YWwgPVxuICAgICAgICAgICAgICAodGlja2V0LnF0eSAqICh0aWNrZXQudGlja2V0X3R5cGUuY29zdCAqIGh1bmRyZWQpKSAvIGh1bmRyZWQ7XG5cbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgIDxHcmlkXG4gICAgICAgICAgICAgICAgY29udGFpbmVyXG4gICAgICAgICAgICAgICAga2V5PXtgdGl4b3JkZXJfJHt0aWNrZXQudGlja2V0X3R5cGUuY3JlYXRlZH1gfVxuICAgICAgICAgICAgICAgIHN4PXt7IHBiOiAxIH19XG4gICAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJvcmRlci1zdW1tYXJ5LWl0ZW1pemVkXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxHcmlkIHhzPXs4fSBpdGVtPlxuICAgICAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgICAgIHh7dGlja2V0LnF0eX0ge3RpY2tldC50aWNrZXRfdHlwZS5uYW1lfVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICAgICAgICA8R3JpZCB4cz17NH0gaXRlbSBhbGlnbj1cInJpZ2h0XCI+XG4gICAgICAgICAgICAgICAgICB7Zm9ybWF0Q3VycmVuY3kodGlja2V0VG90YWwsIHsgY3VycmVuY3k6IG9yZGVyLmN1cnJlbmN5IH0pfVxuICAgICAgICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KX1cbiAgICAgICAgPC8+XG4gICAgICApfVxuICAgICAge29yZGVyLmRpc2NvdW50X2Ftb3VudCA+IDAgJiYgKFxuICAgICAgICA8R3JpZCBjb250YWluZXIgc3g9e3sgcGI6IDEgfX0+XG4gICAgICAgICAgPEdyaWQgeHM9ezh9IGl0ZW0+XG4gICAgICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkuZGlzY291bnRzXCIpfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICA8R3JpZCB4cz17NH0gaXRlbSBhbGlnbj1cInJpZ2h0XCI+XG4gICAgICAgICAgICAte2Rpc2NvdW50VG90YWx9XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICApfVxuICAgICAge29yZGVyLnRheGVzX2Ftb3VudCA+IDAgJiYgKFxuICAgICAgICA8R3JpZCBjb250YWluZXIgc3g9e3sgcGI6IDEgfX0+XG4gICAgICAgICAgPEdyaWQgeHM9ezh9IGl0ZW0+XG4gICAgICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkudGF4ZXNcIil9XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgIDxHcmlkIHhzPXs0fSBpdGVtIGFsaWduPVwicmlnaHRcIj5cbiAgICAgICAgICAgIHt0YXhlc1RvdGFsfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgKX1cbiAgICAgIHtvcmRlci5zdGF0dXMgPT09IFwiUGFpZFwiICYmIChcbiAgICAgICAgPEdyaWQgY29udGFpbmVyIHN4PXt7IHBiOiAxIH19PlxuICAgICAgICAgIDxHcmlkIHhzPXs4fSBpdGVtPlxuICAgICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LmFtb3VudF9wYWlkXCIpfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICA8R3JpZCB4cz17NH0gaXRlbSBhbGlnbj1cInJpZ2h0XCI+XG4gICAgICAgICAgICAte2Ftb3VudFRvdGFsfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgKX1cbiAgICAgIHtyZWZ1bmRUb3RhbCA+IDAgJiYgKFxuICAgICAgICA8R3JpZCBjb250YWluZXIgc3g9e3sgcGI6IDEgfX0+XG4gICAgICAgICAgPEdyaWQgeHM9ezh9IGl0ZW0+XG4gICAgICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkucmVmdW5kc1wiKX1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgPEdyaWQgeHM9ezR9IGl0ZW0gYWxpZ249XCJyaWdodFwiPlxuICAgICAgICAgICAge3JlZnVuZFRvdGFsfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgKX1cbiAgICAgIDxEaXZpZGVyIC8+XG4gICAgICA8R3JpZCBjb250YWluZXIgc3g9e3sgcHQ6IDEsIHBiOiAxIH19PlxuICAgICAgICA8R3JpZCB4cz17OH0gaXRlbT5cbiAgICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkudG90YWxcIil9XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICAgPEdyaWQgeHM9ezR9IGl0ZW0gYWxpZ249XCJyaWdodFwiPlxuICAgICAgICAgIHtvcmRlci5zdGF0dXMgPT09IFwiUGFpZFwiID8gXCIkMC4wMFwiIDogYW1vdW50VG90YWx9XG4gICAgICAgIDwvR3JpZD5cbiAgICAgIDwvR3JpZD5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbk9yZGVyU3VtbWFyeVRhYmxlLnByb3BUeXBlcyA9IHtcbiAgb3JkZXI6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgY3VycmVuY3k6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgZGlzY291bnRfYW1vdW50OiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIHRheGVzX2Ftb3VudDogUHJvcFR5cGVzLm51bWJlcixcbiAgICBzdGF0dXM6IFByb3BUeXBlcy5zdHJpbmdcbiAgfSksXG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdFxufTtcblxuZXhwb3J0IGRlZmF1bHQgT3JkZXJTdW1tYXJ5VGFibGU7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlTm93IH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XG5pbXBvcnQgeyB0aWNrZXRzUmVmdW5kYWJsZSB9IGZyb20gXCIuLi8uLi91dGlscy90aWNrZXRVdGlsc1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBSZWZ1bmRFbWFpbFN1cHBvcnQgPSAoe1xuICBzdW1taXQsXG4gIHRpY2tldHMsXG4gIHN1Ym1pdFJlcXVlc3QsXG4gIG9uUmVmdW5kQ2xpY2ssXG4gIG9uUmVmdW5kRGV0YWlsQ2xpY2tcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBub3cgPSB1c2VOb3coKTtcbiAgY29uc3QgaXNJblJlZnVuZGFibGVQZXJpb2QgPVxuICAgIHN1bW1pdC5yZWdpc3RyYXRpb25fYWxsb3dlZF9yZWZ1bmRfcmVxdWVzdF90aWxsX2RhdGUgPiBub3c7XG4gIGNvbnN0IGF0TGVhc3RPbmVSZWZ1bmRhYmxlVGlja2V0ID0gdGlja2V0c1JlZnVuZGFibGUodGlja2V0cyk7XG4gIGNvbnN0IGlzUmVmdW5kYWJsZSA9ICEhKGlzSW5SZWZ1bmRhYmxlUGVyaW9kICYmIGF0TGVhc3RPbmVSZWZ1bmRhYmxlVGlja2V0KTtcbiAgY29uc3QgaGFzUmVmdW5kUmVxdWVzdHMgPSB0aWNrZXRzPy5zb21lKCh0KSA9PiB0LnJlZnVuZF9yZXF1ZXN0cy5sZW5ndGggPiAwKTtcbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAge2lzUmVmdW5kYWJsZSAmJiAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBhcmlhLWxhYmVsPVwicmVmdW5kIHJlcXVlc3QgYnV0dG9uXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5vcmRlclN1bW1hcnlCdXR0b259XG4gICAgICAgICAgJHtzdWJtaXRSZXF1ZXN0ID8gc3R5bGVzLnJlZnVuZERpc2FibGVkIDogXCJcIn1gfVxuICAgICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lZFwiXG4gICAgICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgICBvbkNsaWNrPXtvblJlZnVuZENsaWNrfVxuICAgICAgICAgIGRpc2FibGVkPXtzdWJtaXRSZXF1ZXN0fVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LnJlcXVlc3RfcmVmdW5kXCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgICl9XG4gICAgICB7aGFzUmVmdW5kUmVxdWVzdHMgJiYgKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgYXJpYS1sYWJlbD1cInJlZnVuZCBkZXRhaWxzIGJ1dHRvblwiXG4gICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJTdW1tYXJ5QnV0dG9ufVxuICAgICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lZFwiXG4gICAgICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgICBvbkNsaWNrPXtvblJlZnVuZERldGFpbENsaWNrfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LnJlZnVuZF9kZXRhaWxzXCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgICl9XG4gICAgICA8QnV0dG9uXG4gICAgICAgIGFyaWEtbGFiZWw9XCJlbWFpbCBzdXBwb3J0IGJ1dHRvblwiXG4gICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclN1bW1hcnlCdXR0b259XG4gICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lZFwiXG4gICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgIHRhcmdldD1cIl90b3BcIlxuICAgICAgICByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCJcbiAgICAgICAgaHJlZj17YG1haWx0bzoke3N1bW1pdC5zdXBwb3J0X2VtYWlsfWB9XG4gICAgICA+XG4gICAgICAgIHt0KFwib3JkZXJfaW5mby5lbWFpbF9zdXBwb3J0XCIpfVxuICAgICAgPC9CdXR0b24+XG4gICAgPC8+XG4gICk7XG59O1xuXG5SZWZ1bmRFbWFpbFN1cHBvcnQucHJvcFR5cGVzID0ge1xuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIHRpY2tldHM6IFByb3BUeXBlcy5hcnJheU9mKE9iamVjdCksXG4gIG9uUmVmdW5kQ2xpY2s6IFByb3BUeXBlcy5mdW5jLFxuICBvblJlZnVuZERldGFpbENsaWNrOiBQcm9wVHlwZXMuZnVuYyxcbiAgc3VibWl0UmVxdWVzdDogUHJvcFR5cGVzLmJvb2xcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJlZnVuZEVtYWlsU3VwcG9ydDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IEdyaWQsIEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgT3JkZXJTdW1tYXJ5VGFibGUgZnJvbSBcIi4vT3JkZXJTdW1tYXJ5VGFibGVcIjtcbmltcG9ydCBSZWZ1bmRFbWFpbFN1cHBvcnQgZnJvbSBcIi4vUmVmdW5kRW1haWxTdXBwb3J0XCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IE9yZGVyU3VtbWFyeSA9ICh7XG4gIG9yZGVyLFxuICBzdW1taXQsXG4gIG9uUmVmdW5kQ2xpY2ssXG4gIHN1Ym1pdFJlcXVlc3QsXG4gIG9uUmVmdW5kRGV0YWlsQ2xpY2tcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8Qm94XG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyU3VtbWFyeVdyYXBwZXJ9XG4gICAgICAgIHN4PXt7IHB0OiA0LCBweDogNCB9fVxuICAgICAgICBkYXRhLXRlc3RpZD1cIm9yZGVyLXN1bW1hcnktY29udGFpbmVyXCJcbiAgICAgID5cbiAgICAgICAgPGgzPnt0KFwib3JkZXJfc3VtbWFyeS5vcmRlcl9zdW1tYXJ5XCIpfTwvaDM+XG4gICAgICAgIDxHcmlkIGNvbnRhaW5lcj5cbiAgICAgICAgICA8R3JpZFxuICAgICAgICAgICAgeHM9ezEyfVxuICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJTdW1tYXJ5UHVyY2hhc2VkSW5mb31cbiAgICAgICAgICAgIHN4PXt7IHBiOiAzIH19XG4gICAgICAgICAgICBpdGVtXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPE9yZGVyU3VtbWFyeVRhYmxlIG9yZGVyPXtvcmRlcn0gc3VtbWl0PXtzdW1taXR9IC8+XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICA8L0JveD5cbiAgICAgIDxCb3ggeHM9ezEyfSBzeD17eyBwYjogMyB9fT5cbiAgICAgICAgPFJlZnVuZEVtYWlsU3VwcG9ydFxuICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgIHRpY2tldHM9e29yZGVyPy5tZW1iZXJUaWNrZXRzfVxuICAgICAgICAgIHN1Ym1pdFJlcXVlc3Q9e3N1Ym1pdFJlcXVlc3R9XG4gICAgICAgICAgb25SZWZ1bmRDbGljaz17b25SZWZ1bmRDbGlja31cbiAgICAgICAgICBvblJlZnVuZERldGFpbENsaWNrPXtvblJlZnVuZERldGFpbENsaWNrfVxuICAgICAgICAvPlxuICAgICAgPC9Cb3g+XG4gICAgPC8+XG4gICk7XG59O1xuT3JkZXJTdW1tYXJ5LnByb3BUeXBlcyA9IHtcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LFxuICBvcmRlcjogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBtZW1iZXJUaWNrZXRzOiBQcm9wVHlwZXMuYXJyYXlPZihPYmplY3QpXG4gIH0pLFxuICBvblJlZnVuZENsaWNrOiBQcm9wVHlwZXMuZnVuYyxcbiAgc3VibWl0UmVxdWVzdDogUHJvcFR5cGVzLmJvb2xcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE9yZGVyU3VtbWFyeTtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZVNlbGVjdG9yLCBzaGFsbG93RXF1YWwgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCBJbmZpbml0ZVNjcm9sbCBmcm9tIFwicmVhY3QtaW5maW5pdGUtc2Nyb2xsLWNvbXBvbmVudFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQm94IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBTZWFyY2hJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL1NlYXJjaFwiO1xuaW1wb3J0IENsb3NlSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9DbG9zZVwiO1xuaW1wb3J0IE9yZGVyTGlzdFRpY2tldHMgZnJvbSBcIi4vT3JkZXJMaXN0VGlja2V0c1wiO1xuaW1wb3J0IHsgT05FX1BBR0VfTkVYVCB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgQXNzaWduVG9NZSA9ICh7IGZldGNoRGF0YSB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3Qge1xuICAgIHN1bW1pdCxcbiAgICB1c2VyVGlja2V0cyxcbiAgICB1c2VyX3RpY2tldHNfY3VycmVudF9wYWdlLFxuICAgIHVzZXJfdGlja2V0c19sYXN0X3BhZ2VcbiAgfSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30sIHNoYWxsb3dFcXVhbCk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyVGlja2V0Q29udGFpbmVyfT5cbiAgICAgIDxkaXYgaWQ9XCJhc3NpZ25lZFRvTWVXcmFwcGVyXCIgY2xhc3NOYW1lPXtzdHlsZXMuYXNzaWduZWRUb01lV3JhcHBlcn0+XG4gICAgICAgIHt1c2VyVGlja2V0cz8ubGVuZ3RoID8gKFxuICAgICAgICAgIDxJbmZpbml0ZVNjcm9sbFxuICAgICAgICAgICAgZGF0YUxlbmd0aD17dXNlclRpY2tldHM/Lmxlbmd0aH1cbiAgICAgICAgICAgIG5leHQ9eygpID0+IGZldGNoRGF0YSh1c2VyX3RpY2tldHNfY3VycmVudF9wYWdlICsgT05FX1BBR0VfTkVYVCl9XG4gICAgICAgICAgICBoYXNNb3JlPXt1c2VyX3RpY2tldHNfY3VycmVudF9wYWdlIDwgdXNlcl90aWNrZXRzX2xhc3RfcGFnZX1cbiAgICAgICAgICAgIHNjcm9sbFRocmVzaG9sZD17MX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldExpc3RDb250YWluZXJ9PlxuICAgICAgICAgICAgICB7dXNlclRpY2tldHMubWFwKCh0aWNrZXQpID0+IChcbiAgICAgICAgICAgICAgICA8T3JkZXJMaXN0VGlja2V0c1xuICAgICAgICAgICAgICAgICAga2V5PXt0aWNrZXQuaWR9XG4gICAgICAgICAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgICAgICAgICAgaXNSZWZ1bmRNb2RhbD17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICBpc1NlbGVjdGVkVG9SZWZ1bmQ9e1tdfVxuICAgICAgICAgICAgICAgICAgc2VsZWN0VG9SZWZ1bmQ9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgaXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L0luZmluaXRlU2Nyb2xsPlxuICAgICAgICApIDogKFxuICAgICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMubm9UaWNrZXRzRm91bmR9PlxuICAgICAgICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5ub09yZGVyc0ljb25XcmFwcGVyfT5cbiAgICAgICAgICAgICAgPFNlYXJjaEljb24gc3g9e3sgZm9udFNpemU6IDQ0LCBjb2xvcjogXCIjMDAwMDAwOEZcIiB9fSAvPlxuICAgICAgICAgICAgICA8Q2xvc2VJY29uXG4gICAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICAgIGZvbnRTaXplOiAxOCxcbiAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gICAgICAgICAgICAgICAgICB0b3A6IDAsXG4gICAgICAgICAgICAgICAgICByaWdodDogMCxcbiAgICAgICAgICAgICAgICAgIGNvbG9yOiBcIiMwMDAwMDA4RlwiXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAge3QoXCJ0aWNrZXRzLm5vX3RpY2tldHNcIil9XG4gICAgICAgICAgPC9Cb3g+XG4gICAgICAgICl9XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEFzc2lnblRvTWU7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCb3gsIEdyaWQsIFR5cG9ncmFwaHkgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBBc3NpZ25lZFRvID0gKHsgZW1haWwgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94PlxuICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5sYWJlbH0+e3QoXCJ0aWNrZXRfc3RhdHVzLmFzc2lnbmVkX3RvXCIpfTo8L0JveD5cbiAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJib2R5MVwiIGRhdGEtdGVzdGlkPVwiYXR0ZW5kZWUtc3RhdHVzLWFzc2lnbmVkXCI+XG4gICAgICAgIHtlbWFpbH1cbiAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbmNvbnN0IEV4dGVybmFsQXNzaWduZWRUbyA9ICh7IGZpcnN0TmFtZSwgbGFzdE5hbWUgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94PlxuICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5sYWJlbH0+e3QoXCJ0aWNrZXRfc3RhdHVzLmFzc2lnbmVkX2J5XCIpfTo8L0JveD5cbiAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJib2R5MVwiPlxuICAgICAgICB7Zmlyc3ROYW1lfSB7bGFzdE5hbWV9XG4gICAgICA8L1R5cG9ncmFwaHk+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5jb25zdCBNYW5hZ2VGb3IgPSAoeyBmaXJzdE5hbWUsIGxhc3ROYW1lIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuXG4gIHJldHVybiAoXG4gICAgPEJveD5cbiAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMubGFiZWx9Pnt0KFwidGlja2V0X3N0YXR1cy5tYW5hZ2VfZm9yXCIpfTo8L0JveD5cbiAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJib2R5MVwiPlxuICAgICAgICB7Zmlyc3ROYW1lfSB7bGFzdE5hbWV9XG4gICAgICA8L1R5cG9ncmFwaHk+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5jb25zdCBBdHRlbmRlZVN0YXR1cyA9ICh7IHRpY2tldCwgaXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0IH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBpc1VuYXNzaWduZWQgPSAhdGlja2V0Lm93bmVyPy5lbWFpbCAmJiB0aWNrZXQuaXNfYWN0aXZlO1xuICBjb25zdCBpc0RlbGVnYXRlZCA9ICEhdGlja2V0Lm93bmVyPy5tYW5hZ2VyX2lkO1xuXG4gIGlmIChpc1VuYXNzaWduZWQpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPHNwYW5cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0T3duZXJFbWFpbH1cbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJhdHRlbmRlZS1zdGF0dXMtdW5hc3NpZ25lZFwiXG4gICAgICA+XG4gICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5hdHRlbmRlZV9zdGF0dXNfdW5hc3NpZ25lZFwiKX1cbiAgICAgIDwvc3Bhbj5cbiAgICApO1xuICB9XG5cbiAgaWYgKHRpY2tldC5vd25lcj8uZW1haWwpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPEdyaWQgY29udGFpbmVyPlxuICAgICAgICA8R3JpZCBpdGVtPlxuICAgICAgICAgIDxBc3NpZ25lZFRvIGVtYWlsPXt0aWNrZXQub3duZXIuZW1haWx9IC8+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICAge2lzRXh0ZXJuYWxBc3NpZ25lZFRpY2tldCAmJiAoXG4gICAgICAgICAgPEdyaWQgaXRlbSBjbGFzc05hbWU9e3N0eWxlcy5hc3NpZ25lZEJ5VGV4dH0+XG4gICAgICAgICAgICA8RXh0ZXJuYWxBc3NpZ25lZFRvXG4gICAgICAgICAgICAgIGZpcnN0TmFtZT17dGlja2V0Lm9yZGVyPy5vd25lcl9maXJzdF9uYW1lfVxuICAgICAgICAgICAgICBsYXN0TmFtZT17dGlja2V0Lm9yZGVyPy5vd25lcl9sYXN0X25hbWV9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgKX1cbiAgICAgICAge2lzRGVsZWdhdGVkICYmIChcbiAgICAgICAgICA8R3JpZCBpdGVtIGNsYXNzTmFtZT17c3R5bGVzLmFzc2lnbmVkQnlUZXh0fT5cbiAgICAgICAgICAgIDxNYW5hZ2VGb3JcbiAgICAgICAgICAgICAgZmlyc3ROYW1lPXt0aWNrZXQub3duZXI/LmZpcnN0X25hbWV9XG4gICAgICAgICAgICAgIGxhc3ROYW1lPXt0aWNrZXQub3duZXI/Lmxhc3RfbmFtZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICApfVxuICAgICAgPC9HcmlkPlxuICAgICk7XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn07XG5cbkF0dGVuZGVlU3RhdHVzLnByb3BUeXBlcyA9IHtcbiAgdGlja2V0OiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIG93bmVyOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgICAgZW1haWw6IFByb3BUeXBlcy5zdHJpbmdcbiAgICB9KSxcbiAgICBpc19hY3RpdmU6IFByb3BUeXBlcy5ib29sXG4gIH0pLFxuICBpc0V4dGVybmFsQXNzaWduZWRUaWNrZXQ6IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBBdHRlbmRlZVN0YXR1cztcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBPcmRlckxpc3RUaWNrZXRzIGZyb20gXCIuL09yZGVyTGlzdFRpY2tldHNcIjtcbmltcG9ydCB7IFBBR0lOQVRJT05fRElTUExBWV9DT1VOVCB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgT3JkZXJMaXN0SXRlbSA9ICh7XG4gIHN1bW1pdCxcbiAgb3JkZXIsXG4gIG9uUGFnaW5hdGVDbGljayxcbiAgdGlja2V0c1RvUmVmdW5kLFxuICBzZWxlY3RUb1JlZnVuZFxufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IFtpdGVtc1RvRGlzcGxheSwgc2V0SXRlbXNUb0Rpc3BsYXldID0gdXNlU3RhdGUoXG4gICAgUEFHSU5BVElPTl9ESVNQTEFZX0NPVU5UXG4gICk7XG5cbiAgaWYgKCFvcmRlcj8ubWVtYmVyVGlja2V0cz8ubGVuZ3RoKSByZXR1cm4gbnVsbDtcbiAgY29uc3Qgc2xpY2VkVGlja2V0cyA9IG9yZGVyPy5tZW1iZXJUaWNrZXRzPy5zbGljZSgwLCBpdGVtc1RvRGlzcGxheSk7XG5cbiAgY29uc3Qgb25WaWV3TW9yZSA9ICgpID0+IHtcbiAgICBpZiAob3JkZXI/LnRpY2tldHNfdG90YWwgPiBvcmRlcj8ubWVtYmVyVGlja2V0cy5sZW5ndGgpIHtcbiAgICAgIG9uUGFnaW5hdGVDbGljaygpO1xuICAgIH1cbiAgICBzZXRJdGVtc1RvRGlzcGxheShpdGVtc1RvRGlzcGxheSArIFBBR0lOQVRJT05fRElTUExBWV9DT1VOVCk7XG4gIH07XG5cbiAgY29uc3Qgb25WaWV3TGVzcyA9ICgpID0+IHNldEl0ZW1zVG9EaXNwbGF5KFBBR0lOQVRJT05fRElTUExBWV9DT1VOVCk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAge3NsaWNlZFRpY2tldHM/Lm1hcCgodGlja2V0KSA9PiAoXG4gICAgICAgIDxPcmRlckxpc3RUaWNrZXRzXG4gICAgICAgICAga2V5PXt0aWNrZXQuaWR9XG4gICAgICAgICAgdGlja2V0PXt0aWNrZXR9XG4gICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgaXNSZWZ1bmRNb2RhbD17ZmFsc2V9XG4gICAgICAgICAgaXNTZWxlY3RlZFRvUmVmdW5kPXshIXRpY2tldHNUb1JlZnVuZC5maW5kKCh0KSA9PiB0LmlkID09PSB0aWNrZXQuaWQpfVxuICAgICAgICAgIHNlbGVjdFRvUmVmdW5kPXtzZWxlY3RUb1JlZnVuZH1cbiAgICAgICAgLz5cbiAgICAgICkpfVxuICAgICAge29yZGVyPy50aWNrZXRzX3RvdGFsID4gaXRlbXNUb0Rpc3BsYXkgPyAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBhcmlhLWxhYmVsPVwidmlldyBtb3JlIGJ1dHRvblwiXG4gICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudmlld01vcmVCdXR0b259XG4gICAgICAgICAgb25DbGljaz17b25WaWV3TW9yZX1cbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwib3JkZXJzLXRpY2tldHMudmlld19tb3JlXCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgICkgOiAoXG4gICAgICAgIFwiXCJcbiAgICAgICl9XG4gICAgICB7c2xpY2VkVGlja2V0cz8ubGVuZ3RoID4gUEFHSU5BVElPTl9ESVNQTEFZX0NPVU5UICYmXG4gICAgICBzbGljZWRUaWNrZXRzPy5sZW5ndGggPT09IG9yZGVyPy50aWNrZXRzX3RvdGFsID8gKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgYXJpYS1sYWJlbD1cInZpZXcgbGVzcyBidXR0b25cIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnZpZXdNb3JlQnV0dG9ufVxuICAgICAgICAgIG9uQ2xpY2s9e29uVmlld0xlc3N9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcIm9yZGVycy10aWNrZXRzLnZpZXdfbGVzc1wiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApIDogKFxuICAgICAgICBcIlwiXG4gICAgICApfVxuICAgIDwvPlxuICApO1xufTtcblxuT3JkZXJMaXN0SXRlbS5wcm9wVHlwZXMgPSB7XG4gIG9yZGVyOiBQcm9wVHlwZXMub2JqZWN0LFxuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3Rcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE9yZGVyTGlzdEl0ZW07XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEdyaWQsIEJ1dHRvbiwgQm94IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBTdGFjayBmcm9tIFwiQG11aS9tYXRlcmlhbC9TdGFja1wiO1xuaW1wb3J0IENoZWNrYm94IGZyb20gXCJAbXVpL21hdGVyaWFsL0NoZWNrYm94XCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IFRpY2tldFN0YXR1cyBmcm9tIFwiLi4vVGlja2V0U3RhdHVzXCI7XG5pbXBvcnQgeyBnZXRTdW1taXRSZWFzc2lnbkRhdGUgfSBmcm9tIFwiLi4vLi4vdXRpbHMvc3VtbWl0VXRpbHNcIjtcbmltcG9ydCB7IHVzZU5vdyB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuaW1wb3J0IEF0dGVuZGVlU3RhdHVzIGZyb20gXCIuL0F0dGVuZGVlU3RhdHVzXCI7XG5pbXBvcnQgVGlja2V0RGV0YWlsIGZyb20gXCIuLi9UaWNrZXREZXRhaWxcIjtcbmltcG9ydCB7IHVzZVRpY2tldERldGFpbHMgfSBmcm9tIFwiLi4vLi4vaG9va3MvdXNlVGlja2V0RGV0YWlsc1wiO1xuaW1wb3J0IENvcHlUZXh0IGZyb20gXCIuLi9Db3B5VGV4dFwiO1xuaW1wb3J0IFRpY2tldEFzc2lnbiBmcm9tIFwiLi4vVGlja2V0QXNzaWduXCI7XG5pbXBvcnQgeyByZXNldFRpY2tldCB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IG1vZGFsVmlld3MgPSB7XG4gIGRldGFpbDogXCJERVRBSUxcIixcbiAgcmVhc3NpZ246IFwiUkVBU1NJR05cIixcbiAgYXNzaWduOiBcIkFTU0lHTlwiXG59O1xuXG5jb25zdCBUaWNrZXRDVEFzID0gKHtcbiAgaXNJbmNvbXBsZXRlLFxuICBpc1VuYXNzaWduZWQsXG4gIGlzUmVhc3NpZ25hYmxlLFxuICBvbk9wZW5DbGlja1xufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG5cbiAgaWYgKGlzVW5hc3NpZ25lZCkge1xuICAgIHJldHVybiAoXG4gICAgICA8QnV0dG9uXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmFzc2lnblRpY2tldEJ1dHRvbn1cbiAgICAgICAgb25DbGljaz17KCkgPT4gb25PcGVuQ2xpY2sobW9kYWxWaWV3cy5hc3NpZ24pfVxuICAgICAgPlxuICAgICAgICB7dChcInRpY2tldF9zdGF0dXMuYXNzaWduX3RpY2tldFwiKX1cbiAgICAgIDwvQnV0dG9uPlxuICAgICk7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxTdGFja1xuICAgICAgc3g9e3tcbiAgICAgICAganVzdGlmeUNvbnRlbnQ6IFwiZW5kXCIsXG4gICAgICAgIHdpZHRoOiBcIjEwMCVcIlxuICAgICAgfX1cbiAgICAgIGFsaWduSXRlbXM9XCJjZW50ZXJcIlxuICAgICAgZGlyZWN0aW9uPVwicm93XCJcbiAgICA+XG4gICAgICA8QnV0dG9uXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnZpZXdGaW5pc2hUaWNrZXRCdXR0b259XG4gICAgICAgIG9uQ2xpY2s9eygpID0+IG9uT3BlbkNsaWNrKG1vZGFsVmlld3MuZGV0YWlsKX1cbiAgICAgID5cbiAgICAgICAge2lzSW5jb21wbGV0ZVxuICAgICAgICAgID8gdChcInRpY2tldF9zdGF0dXMuZmluaXNoX3RpY2tldFwiKVxuICAgICAgICAgIDogdChcInRpY2tldF9zdGF0dXMudmlld190aWNrZXRcIil9XG4gICAgICA8L0J1dHRvbj5cbiAgICAgIHtpc1JlYXNzaWduYWJsZSAmJiAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBhcmlhLWxhYmVsPVwicmVhc3NpZ24gdGlja2V0IGJ1dHRvblwiXG4gICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMucmVhc3NpZ25CdXR0b259XG4gICAgICAgICAgb25DbGljaz17KCkgPT4gb25PcGVuQ2xpY2sobW9kYWxWaWV3cy5yZWFzc2lnbil9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMucmVhc3NpZ25fdGlja2V0XCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgICl9XG4gICAgPC9TdGFjaz5cbiAgKTtcbn07XG5cblRpY2tldENUQXMucHJvcFR5cGVzID0ge1xuICBpc0luY29tcGxldGU6IFByb3BUeXBlcy5ib29sLmlzUmVxdWlyZWQsXG4gIGlzVW5hc3NpZ25lZDogUHJvcFR5cGVzLmJvb2wuaXNSZXF1aXJlZCxcbiAgaXNSZWFzc2lnbmFibGU6IFByb3BUeXBlcy5ib29sLmlzUmVxdWlyZWQsXG4gIG9uT3BlbkNsaWNrOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkXG59O1xuXG5jb25zdCBPcmRlckxpc3RUaWNrZXRzID0gKHtcbiAgdGlja2V0LFxuICBzdW1taXQsXG4gIGlzUmVmdW5kTW9kYWwsXG4gIGlzU2VsZWN0ZWRUb1JlZnVuZCxcbiAgc2VsZWN0VG9SZWZ1bmQsXG4gIGlzRXh0ZXJuYWxBc3NpZ25lZFRpY2tldFxufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3Qgbm93ID0gdXNlTm93KCk7XG4gIGNvbnN0IHsgaXNSZWZ1bmRhYmxlLCBpc1VuYXNzaWduZWQsIGlzSW5jb21wbGV0ZSwgY2FuUmVhc3NpZ24gfSA9XG4gICAgdXNlVGlja2V0RGV0YWlscyh0aWNrZXQpO1xuICBjb25zdCBbbW9kYWxPcGVuLCBzZXRNb2RhbE9wZW5dID0gdXNlU3RhdGUobnVsbCk7XG4gIGNvbnN0IHJlYXNzaWduRGF0ZSA9IGdldFN1bW1pdFJlYXNzaWduRGF0ZShzdW1taXQpO1xuICBjb25zdCBvblJlYXNzaWduYWJsZVBlcmlvZCA9IHJlYXNzaWduRGF0ZSA+IG5vdztcbiAgY29uc3QgaXNSZWFzc2lnbmFibGUgPVxuICAgIG9uUmVhc3NpZ25hYmxlUGVyaW9kICYmIGNhblJlYXNzaWduICYmICFpc0V4dGVybmFsQXNzaWduZWRUaWNrZXQ7XG5cbiAgY29uc3QgaGFuZGxlQ2xvc2VNb2RhbCA9ICgpID0+IHtcbiAgICBkaXNwYXRjaChyZXNldFRpY2tldCgpKTtcbiAgICBzZXRNb2RhbE9wZW4obnVsbCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlT3Blbk1vZGFsID0gKHZpZXcpID0+IHtcbiAgICBkaXNwYXRjaChyZXNldFRpY2tldCgpKTtcbiAgICBzZXRNb2RhbE9wZW4odmlldyk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8R3JpZFxuICAgICAgY29udGFpbmVyXG4gICAgICBrZXk9e3RpY2tldC5pZH1cbiAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLm9yZGVyV3JhcHBlcn0gJHtcbiAgICAgICAgaXNSZWZ1bmRNb2RhbCA/IHN0eWxlcy5yZWZ1bmRNb2RhbCA6IFwiXCJcbiAgICAgIH0gJHtpc1JlZnVuZE1vZGFsICYmICFpc1JlZnVuZGFibGUgPyBzdHlsZXMuZGlzYWJsZWRSZWZ1bmQgOiBcIlwifSAke1xuICAgICAgICBpc1NlbGVjdGVkVG9SZWZ1bmQgPyBzdHlsZXMuc2VsZWN0ZWQgOiBcIlwiXG4gICAgICB9YH1cbiAgICA+XG4gICAgICB7aXNSZWZ1bmRNb2RhbCAmJiAoXG4gICAgICAgIDxHcmlkIGl0ZW0geHM9ezF9IHBhZGRpbmc9ezJ9IGNsYXNzTmFtZT17c3R5bGVzLmNoZWNrYm94fT5cbiAgICAgICAgICA8Q2hlY2tib3hcbiAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJyZWZ1bmQgdGlja2V0IGNoZWNrYm94XCJcbiAgICAgICAgICAgIHJvbGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICBjaGVja2VkPXtpc1NlbGVjdGVkVG9SZWZ1bmR9XG4gICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHNlbGVjdFRvUmVmdW5kKGUsIHRpY2tldCl9XG4gICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICBcIiYgLk11aVN2Z0ljb24tcm9vdFwiOiB7XG4gICAgICAgICAgICAgICAgZm9udFNpemU6IDE4XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICBkaXNhYmxlZD17IWlzUmVmdW5kYWJsZX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICApfVxuICAgICAgPEdyaWRcbiAgICAgICAgaXRlbVxuICAgICAgICBjb250YWluZXJcbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJvcmRlci1saXN0LXRpY2tldFwiXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgICAgICB4cz17aXNSZWZ1bmRNb2RhbCA/IDExIDogMTJ9XG4gICAgICA+XG4gICAgICAgIDxHcmlkXG4gICAgICAgICAgeHM9ezh9XG4gICAgICAgICAgcHk9ezJ9XG4gICAgICAgICAgcGw9ezR9XG4gICAgICAgICAgaXRlbVxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldFRpY2tldFR5cGV9XG4gICAgICAgICAganVzdGlmeT1cInNwYWNlLWJldHdlZW5cIlxuICAgICAgICA+XG4gICAgICAgICAgPFN0YWNrXG4gICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogXCJmbGV4LXN0YXJ0XCJcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICBkaXJlY3Rpb249XCJyb3dcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxoND57dGlja2V0LnRpY2tldF90eXBlPy5uYW1lfTwvaDQ+XG4gICAgICAgICAgPC9TdGFjaz5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgICA8R3JpZCBjbGFzc05hbWU9e3N0eWxlcy5iYWRnZUZlYXR1cmVXcmFwcGVyfSB4cz17NH0gcHk9ezJ9IHByPXs0fSBpdGVtPlxuICAgICAgICAgIHsvKiBUbyBhZGQgYmFkZ2UgZmVhdHVyZXMgKi99XG4gICAgICAgICAge3RpY2tldC5iYWRnZT8uZmVhdHVyZXMubWFwKChiZikgPT4gKFxuICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5iYWRnZUZlYXR1cmV9XG4gICAgICAgICAgICAgIHNyYz17YmYuaW1hZ2V9XG4gICAgICAgICAgICAgIGFsdD17YmYubmFtZX1cbiAgICAgICAgICAgICAga2V5PXtiZi5uYW1lfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9HcmlkPlxuICAgICAgICA8R3JpZCB4cz17MTJ9IHN4PXt7IHB4OiA0LCBwYjogMiB9fSBpdGVtPlxuICAgICAgICAgIDxBdHRlbmRlZVN0YXR1c1xuICAgICAgICAgICAgdGlja2V0PXt0aWNrZXR9XG4gICAgICAgICAgICBpc0V4dGVybmFsQXNzaWduZWRUaWNrZXQ9eyEhaXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0fVxuICAgICAgICAgIC8+XG4gICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0Tm99PlxuICAgICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnRpY2tldF9ub1wiKX06e1wiIFwifVxuICAgICAgICAgICAgPENvcHlUZXh0XG4gICAgICAgICAgICAgIHRleHQ9e3RpY2tldC5udW1iZXJ9XG4gICAgICAgICAgICAgIHRvb2x0aXBUZXh0PXt0KFwidGlja2V0X3N0YXR1cy5jb3B5X3RpY2tldF9udW1iZXJcIil9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgICA8Qm94IHN4PXt7IGRpc3BsYXk6IFwiZmxleFwiLCBmbGV4V3JhcDogXCJ3cmFwXCIsIHdpZHRoOiBcIjEwMCVcIiB9fT5cbiAgICAgICAgICA8Qm94IHN4PXt7IG1pbldpZHRoOiBcIjMwMHB4XCIgfX0+XG4gICAgICAgICAgICA8VGlja2V0U3RhdHVzIHRpY2tldD17dGlja2V0fSAvPlxuICAgICAgICAgIDwvQm94PlxuICAgICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0QWN0aW9uQnV0dG9uc30+XG4gICAgICAgICAgICB7dGlja2V0LmlzX2FjdGl2ZSAmJiAhaXNSZWZ1bmRNb2RhbCAmJiAoXG4gICAgICAgICAgICAgIDxUaWNrZXRDVEFzXG4gICAgICAgICAgICAgICAgaXNVbmFzc2lnbmVkPXtpc1VuYXNzaWduZWR9XG4gICAgICAgICAgICAgICAgaXNJbmNvbXBsZXRlPXtpc0luY29tcGxldGV9XG4gICAgICAgICAgICAgICAgaXNSZWFzc2lnbmFibGU9e2lzUmVhc3NpZ25hYmxlICYmICFpc0V4dGVybmFsQXNzaWduZWRUaWNrZXR9XG4gICAgICAgICAgICAgICAgb25PcGVuQ2xpY2s9e2hhbmRsZU9wZW5Nb2RhbH1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9Cb3g+XG4gICAgICAgIDwvQm94PlxuICAgICAgICA8VGlja2V0RGV0YWlsXG4gICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgdGlja2V0SWQ9e3RpY2tldD8uaWR9XG4gICAgICAgICAgb3JkZXJJZD17dGlja2V0Py5vcmRlcl9pZCB8fCB0aWNrZXQ/Lm9yZGVyPy5pZH1cbiAgICAgICAgICBvd25lcklkPXt0aWNrZXQ/Lm93bmVyPy5pZH1cbiAgICAgICAgICBvcGVuPXttb2RhbE9wZW4gPT09IG1vZGFsVmlld3MuZGV0YWlsfVxuICAgICAgICAgIG9uQ2xvc2U9e2hhbmRsZUNsb3NlTW9kYWx9XG4gICAgICAgIC8+XG4gICAgICAgIDxUaWNrZXRBc3NpZ25cbiAgICAgICAgICB0aWNrZXRJZD17dGlja2V0Py5pZH1cbiAgICAgICAgICBvcmRlcklkPXt0aWNrZXQ/Lm9yZGVyX2lkIHx8IHRpY2tldD8ub3JkZXI/LmlkfVxuICAgICAgICAgIG93bmVySWQ9e3RpY2tldD8ub3duZXI/LmlkfVxuICAgICAgICAgIG9wZW49e1ttb2RhbFZpZXdzLnJlYXNzaWduLCBtb2RhbFZpZXdzLmFzc2lnbl0uaW5jbHVkZXMobW9kYWxPcGVuKX1cbiAgICAgICAgICBvbkNsb3NlPXtoYW5kbGVDbG9zZU1vZGFsfVxuICAgICAgICAvPlxuICAgICAgPC9HcmlkPlxuICAgIDwvR3JpZD5cbiAgKTtcbn07XG5cbk9yZGVyTGlzdFRpY2tldHMucHJvcFR5cGVzID0ge1xuICB0aWNrZXQ6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgaWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgb3JkZXJfaWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgb3duZXI6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICBpZDogUHJvcFR5cGVzLm51bWJlcixcbiAgICAgIGVtYWlsOiBQcm9wVHlwZXMuc3RyaW5nXG4gICAgfSksXG4gICAgbnVtYmVyOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIHRvdGFsX3JlZnVuZGVkX2Ftb3VudDogUHJvcFR5cGVzLm51bWJlcixcbiAgICB0aWNrZXRfdHlwZTogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAgIG5hbWU6IFByb3BUeXBlcy5zdHJpbmdcbiAgICB9KSxcbiAgICBpc19hY3RpdmU6IFByb3BUeXBlcy5ib29sXG4gIH0pLFxuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIGlzUmVmdW5kTW9kYWw6IFByb3BUeXBlcy5ib29sLFxuICBpc1NlbGVjdGVkVG9SZWZ1bmQ6IFByb3BUeXBlcy5ib29sLFxuICBzZWxlY3RUb1JlZnVuZDogUHJvcFR5cGVzLmZ1bmMsXG4gIGlzRXh0ZXJuYWxBc3NpZ25lZFRpY2tldDogUHJvcFR5cGVzLmJvb2xcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE9yZGVyTGlzdFRpY2tldHM7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEdyaWQsIEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgVGFicyBmcm9tIFwiQG11aS9tYXRlcmlhbC9UYWJzXCI7XG5pbXBvcnQgVGFiIGZyb20gXCJAbXVpL21hdGVyaWFsL1RhYlwiO1xuaW1wb3J0IE9yZGVyTGlzdEl0ZW0gZnJvbSBcIi4vT3JkZXJMaXN0SXRlbVwiO1xuaW1wb3J0IE9yZGVyU3VtbWFyeSBmcm9tIFwiLi4vT3JkZXJTdW1tYXJ5XCI7XG5pbXBvcnQgUmVmdW5kUmVxdWVzdHNNb2RhbCBmcm9tIFwiLi4vUmVmdW5kUmVxdWVzdHNcIjtcbmltcG9ydCBFcnJvckxhYmVsIGZyb20gXCIuLi9MYWJlbHMvRXJyb3JMYWJlbFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IFJlZnVuZERldGFpbHMgZnJvbSBcIi4uL1JlZnVuZFJlcXVlc3RzL1JlZnVuZERldGFpbHNcIjtcblxuY29uc3QgVGFiUGFuZWwgPSAocHJvcHMpID0+IHtcbiAgY29uc3QgeyBjaGlsZHJlbiwgdmFsdWUsIGluZGV4IH0gPSBwcm9wcztcbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICByb2xlPVwidGFicGFuZWxcIlxuICAgICAgaGlkZGVuPXt2YWx1ZSAhPT0gaW5kZXh9XG4gICAgICBpZD17YHRhYnBhbmVsLSR7aW5kZXh9YH1cbiAgICAgIGFyaWEtbGFiZWxsZWRieT17YHRhYi0ke2luZGV4fWB9XG4gICAgPlxuICAgICAge3ZhbHVlID09PSBpbmRleCAmJiBjaGlsZHJlbn1cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbmNvbnN0IE9yZGVyc0xpc3REZXNrdG9wTW9iaWxlID0gKHtcbiAgaXNNb2JpbGUsXG4gIHN1bW1pdCxcbiAgb3JkZXIsXG4gIGRldGFpbHNSZXF1aXJlZCxcbiAgb25QYWdpbmF0ZUNsaWNrXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgW3ZhbHVlLCBzZXRWYWx1ZV0gPSB1c2VTdGF0ZSgwKTtcbiAgY29uc3QgaGFuZGxlQ2hhbmdlID0gKF8sIG5ld1ZhbHVlKSA9PiB7XG4gICAgc2V0VmFsdWUobmV3VmFsdWUpO1xuICB9O1xuICBjb25zdCBbdGlja2V0c1RvUmVmdW5kLCBzZXRUaWNrZXRzVG9SZWZ1bmRdID0gdXNlU3RhdGUoW10pO1xuICBjb25zdCBbc3VibWl0UmVxdWVzdCwgc2V0U3VibWl0UmVxdWVzdF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtyZWZ1bmREZXRhaWxzT3Blbiwgc2V0UmVmdW5kRGV0YWlsc09wZW5dID0gdXNlU3RhdGUoZmFsc2UpO1xuXG4gIGNvbnN0IG9uUmVmdW5kQ2xpY2sgPSAoKSA9PiB7XG4gICAgc2V0U3VibWl0UmVxdWVzdCh0cnVlKTtcbiAgfTtcbiAgY29uc3QgdW5zZWxlY3RSZWZ1bmRUaWNrZXRzID0gKHRpY2tldCkgPT4ge1xuICAgIGNvbnN0IGZpbHRlclNlbGVjdGVkID0gdGlja2V0c1RvUmVmdW5kLmZpbHRlcigodCkgPT4gdC5pZCAhPT0gdGlja2V0LmlkKTtcbiAgICBzZXRUaWNrZXRzVG9SZWZ1bmQoZmlsdGVyU2VsZWN0ZWQpO1xuICB9O1xuICBjb25zdCBzZWxlY3RUb1JlZnVuZCA9IChlLCB0aWNrZXQpID0+IHtcbiAgICBjb25zdCB7IGNoZWNrZWQgfSA9IGUudGFyZ2V0O1xuICAgIGlmIChjaGVja2VkKSB7XG4gICAgICBjb25zdCBzZWxlY3RlZFRpY2tldCA9IG9yZGVyPy5tZW1iZXJUaWNrZXRzPy5maW5kKFxuICAgICAgICAodCkgPT4gdC5pZCA9PT0gdGlja2V0LmlkXG4gICAgICApO1xuICAgICAgc2V0VGlja2V0c1RvUmVmdW5kKFsuLi50aWNrZXRzVG9SZWZ1bmQsIHNlbGVjdGVkVGlja2V0XSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHVuc2VsZWN0UmVmdW5kVGlja2V0cyh0aWNrZXQpO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBjbG9zZVN1Ym1pdFJlcXVlc3QgPSAoKSA9PiB7XG4gICAgc2V0U3VibWl0UmVxdWVzdChmYWxzZSk7XG4gICAgc2V0VGlja2V0c1RvUmVmdW5kKFtdKTtcbiAgfTtcblxuICBjb25zdCByZXNldEFsbFJlZnVuZFN0YXR1c2VzID0gKCkgPT4ge1xuICAgIHNldFN1Ym1pdFJlcXVlc3QoZmFsc2UpO1xuICAgIHNldFRpY2tldHNUb1JlZnVuZChbXSk7XG4gIH07XG5cbiAgY29uc3QgbW9yZURldGFpbHMgPSAoKSA9PlxuICAgIGRldGFpbHNSZXF1aXJlZCAmJiAoXG4gICAgICA8RXJyb3JMYWJlbFxuICAgICAgICBtZXNzYWdlPXt0KFwidGlja2V0X3N0YXR1cy5zdGF0dXNfZGV0YWlsc19yZXF1aXJlZFwiKX1cbiAgICAgICAgY29sb3I9XCIjZmY5ODAwXCJcbiAgICAgICAgZGF0YVRlc3RJZD1cIm1vcmUtZGV0YWlscy1sYWJlbFwiXG4gICAgICAvPlxuICAgICk7XG5cbiAgcmV0dXJuIGlzTW9iaWxlID8gKFxuICAgIDxCb3hcbiAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldExpc3RDb250YWluZXJ9XG4gICAgICBkYXRhLXRlc3RpZD1cIm1vYmlsZS1vcmRlcnMtbGlzdC1jb250YWluZXJcIlxuICAgID5cbiAgICAgIDxCb3ggc3g9e3sgYm9yZGVyQ29sb3I6IFwiZGl2aWRlclwiLCBwYjogMiB9fT5cbiAgICAgICAgPFRhYnNcbiAgICAgICAgICB2YWx1ZT17dmFsdWV9XG4gICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgICBhcmlhLWxhYmVsPVwiVGlja2V0cyAmIFN1bW1hcnlcIlxuICAgICAgICA+XG4gICAgICAgICAgPFRhYiBsYWJlbD17dChcImxhYmVscy50aWNrZXRzXCIpfSBjbGFzc05hbWU9e3N0eWxlcy50YWJCdXR0b25zfSAvPlxuICAgICAgICAgIDxUYWIgbGFiZWw9e3QoXCJsYWJlbHMuc3VtbWFyeVwiKX0gY2xhc3NOYW1lPXtzdHlsZXMudGFiQnV0dG9uc30gLz5cbiAgICAgICAgPC9UYWJzPlxuICAgICAgPC9Cb3g+XG4gICAgICB7bW9yZURldGFpbHMoKX1cbiAgICAgIDxUYWJQYW5lbCB2YWx1ZT17dmFsdWV9IGluZGV4PXswfT5cbiAgICAgICAgPE9yZGVyTGlzdEl0ZW1cbiAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICBvcmRlcj17b3JkZXJ9XG4gICAgICAgICAgb25QYWdpbmF0ZUNsaWNrPXtvblBhZ2luYXRlQ2xpY2t9XG4gICAgICAgICAgdGlja2V0c1RvUmVmdW5kPXt0aWNrZXRzVG9SZWZ1bmR9XG4gICAgICAgICAgc2VsZWN0VG9SZWZ1bmQ9e3NlbGVjdFRvUmVmdW5kfVxuICAgICAgICAgIHN1Ym1pdFJlcXVlc3Q9e3N1Ym1pdFJlcXVlc3R9XG4gICAgICAgICAgdW5zZWxlY3RSZWZ1bmRUaWNrZXRzPXt1bnNlbGVjdFJlZnVuZFRpY2tldHN9XG4gICAgICAgIC8+XG4gICAgICA8L1RhYlBhbmVsPlxuICAgICAgPFRhYlBhbmVsIHZhbHVlPXt2YWx1ZX0gaW5kZXg9ezF9PlxuICAgICAgICA8T3JkZXJTdW1tYXJ5XG4gICAgICAgICAgb3JkZXI9e29yZGVyfVxuICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgIG9uUmVmdW5kQ2xpY2s9e29uUmVmdW5kQ2xpY2t9XG4gICAgICAgICAgc3VibWl0UmVxdWVzdD17c3VibWl0UmVxdWVzdH1cbiAgICAgICAgLz5cbiAgICAgIDwvVGFiUGFuZWw+XG4gICAgPC9Cb3g+XG4gICkgOiAoXG4gICAgPD5cbiAgICAgIDxHcmlkIGl0ZW0gbWQ9ezEyfT5cbiAgICAgICAge21vcmVEZXRhaWxzKCl9XG4gICAgICA8L0dyaWQ+XG4gICAgICA8R3JpZFxuICAgICAgICBwYWRkaW5nPXsxfVxuICAgICAgICBpdGVtXG4gICAgICAgIG1kPXs3fVxuICAgICAgICBvcmRlcj17eyBtZDogMSB9fVxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRMaXN0Q29udGFpbmVyfVxuICAgICAgICBkYXRhLXRlc3RpZD1cImRlc2t0b3Atb3JkZXJzLWxpc3QtY29udGFpbmVyXCJcbiAgICAgID5cbiAgICAgICAgPE9yZGVyTGlzdEl0ZW1cbiAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICBvcmRlcj17b3JkZXJ9XG4gICAgICAgICAgb25QYWdpbmF0ZUNsaWNrPXtvblBhZ2luYXRlQ2xpY2t9XG4gICAgICAgICAgdGlja2V0c1RvUmVmdW5kPXt0aWNrZXRzVG9SZWZ1bmR9XG4gICAgICAgICAgc2VsZWN0VG9SZWZ1bmQ9e3NlbGVjdFRvUmVmdW5kfVxuICAgICAgICAgIHN1Ym1pdFJlcXVlc3Q9e3N1Ym1pdFJlcXVlc3R9XG4gICAgICAgICAgdW5zZWxlY3RSZWZ1bmRUaWNrZXRzPXt1bnNlbGVjdFJlZnVuZFRpY2tldHN9XG4gICAgICAgIC8+XG4gICAgICA8L0dyaWQ+XG4gICAgICA8R3JpZCBwYWRkaW5nPXsxfSBpdGVtIG1kPXs1fSBvcmRlcj17eyBtZDogMSB9fT5cbiAgICAgICAgPE9yZGVyU3VtbWFyeVxuICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgIG9yZGVyPXtvcmRlcn1cbiAgICAgICAgICBvblJlZnVuZENsaWNrPXtvblJlZnVuZENsaWNrfVxuICAgICAgICAgIHN1Ym1pdFJlcXVlc3Q9e3N1Ym1pdFJlcXVlc3R9XG4gICAgICAgICAgb25SZWZ1bmREZXRhaWxDbGljaz17KCkgPT4gc2V0UmVmdW5kRGV0YWlsc09wZW4odHJ1ZSl9XG4gICAgICAgIC8+XG4gICAgICA8L0dyaWQ+XG4gICAgICA8UmVmdW5kUmVxdWVzdHNNb2RhbFxuICAgICAgICB0aWNrZXRzPXtvcmRlcj8ubWVtYmVyVGlja2V0cyB8fCBbXX1cbiAgICAgICAgb3Blbj17c3VibWl0UmVxdWVzdH1cbiAgICAgICAgb25SZWZ1bmRTdWNjZXNzQ2xvc2U9eygpID0+IHJlc2V0QWxsUmVmdW5kU3RhdHVzZXMoKX1cbiAgICAgICAgb25DbG9zZVNsaWRlcj17KCkgPT4gY2xvc2VTdWJtaXRSZXF1ZXN0KCl9XG4gICAgICAgIHRpY2tldHNUb1JlZnVuZD17dGlja2V0c1RvUmVmdW5kfVxuICAgICAgICBzZWxlY3RUb1JlZnVuZD17c2VsZWN0VG9SZWZ1bmR9XG4gICAgICAgIHVuc2VsZWN0UmVmdW5kVGlja2V0cz17dW5zZWxlY3RSZWZ1bmRUaWNrZXRzfVxuICAgICAgLz5cbiAgICAgIDxSZWZ1bmREZXRhaWxzXG4gICAgICAgIHRpY2tldHM9e29yZGVyPy5tZW1iZXJUaWNrZXRzfVxuICAgICAgICBjdXJyZW5jeT17b3JkZXIuY3VycmVuY3l9XG4gICAgICAgIG9wZW49e3JlZnVuZERldGFpbHNPcGVufVxuICAgICAgICBvbkNsb3NlU2xpZGVyPXsoKSA9PiBzZXRSZWZ1bmREZXRhaWxzT3BlbihmYWxzZSl9XG4gICAgICAvPlxuICAgIDwvPlxuICApO1xufTtcblxuT3JkZXJzTGlzdERlc2t0b3BNb2JpbGUucHJvcFR5cGVzID0ge1xuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIG9yZGVyOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIG1lbWJlclRpY2tldHM6IFByb3BUeXBlcy5hcnJheU9mKE9iamVjdClcbiAgfSksXG4gIGlzTW9iaWxlOiBQcm9wVHlwZXMuYm9vbCxcbiAgZGV0YWlsc1JlcXVpcmVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgb25QYWdpbmF0ZUNsaWNrOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgT3JkZXJzTGlzdERlc2t0b3BNb2JpbGU7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoLCB1c2VTZWxlY3Rvciwgc2hhbGxvd0VxdWFsIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBHcmlkLCBCb3gsIEJ1dHRvbiB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VUaGVtZSB9IGZyb20gXCJAbXVpL21hdGVyaWFsL3N0eWxlc1wiO1xuaW1wb3J0IHVzZU1lZGlhUXVlcnkgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvdXNlTWVkaWFRdWVyeVwiO1xuaW1wb3J0IHsgZ2V0VGlja2V0c0J5T3JkZXIgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuaW1wb3J0IHsgZ2V0Rm9ybWF0dGVkRGF0ZSB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuaW1wb3J0IHsgT05FX1BBR0VfTkVYVCB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCBPcmRlcnNMaXN0RGVza3RvcE1vYmlsZSBmcm9tIFwiLi9PcmRlcnNMaXN0RGVza3RvcE1vYmlsZVwiO1xuaW1wb3J0IENvcHlUZXh0IGZyb20gXCIuLi9Db3B5VGV4dFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBPcmRlcnNMaXN0ID0gKHsgc3VtbWl0LCBvcmRlciB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCB7IHRpY2tldF9wZXJfcGFnZSwgZmlsdGVyLCBzb3J0IH0gPSB1c2VTZWxlY3RvcihcbiAgICAoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlIHx8IHt9LFxuICAgIHNoYWxsb3dFcXVhbFxuICApO1xuICBjb25zdCB0aGVtZSA9IHVzZVRoZW1lKCk7XG4gIGNvbnN0IGlzTW9iaWxlID0gdXNlTWVkaWFRdWVyeSh0aGVtZS5icmVha3BvaW50cy5kb3duKFwibGdcIikpO1xuICBjb25zdCBbaXNNb2JpbGVWaWV3YWJsZSwgc2V0TW9iaWxlVmlld2FibGVdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBkZXRhaWxzUmVxdWlyZWQgPSBvcmRlci5tZW1iZXJUaWNrZXRzPy5maW5kKFxuICAgICh0aWNrZXQpID0+IHRpY2tldC5vd25lcj8uc3RhdHVzID09PSBcIkluY29tcGxldGVcIlxuICApO1xuXG4gIGNvbnN0IG9uUGFnaW5hdGVDbGljayA9ICgpID0+XG4gICAgZGlzcGF0Y2goXG4gICAgICBnZXRUaWNrZXRzQnlPcmRlcih7XG4gICAgICAgIG9yZGVySWQ6IG9yZGVyLmlkLFxuICAgICAgICBwYWdlOiBvcmRlci50aWNrZXRzX3BhZ2VfY3VycmVudCArIE9ORV9QQUdFX05FWFQsXG4gICAgICAgIHBlclBhZ2U6IHRpY2tldF9wZXJfcGFnZSxcbiAgICAgICAgZmlsdGVyLFxuICAgICAgICBzb3J0XG4gICAgICB9KVxuICAgICk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPEJveFxuICAgICAgICBzeD17e1xuICAgICAgICAgIHBhZGRpbmc6IHtcbiAgICAgICAgICAgIHhzOiAyLFxuICAgICAgICAgICAgbWQ6IDEsXG4gICAgICAgICAgICBsZzogMFxuICAgICAgICAgIH1cbiAgICAgICAgfX1cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJUaWNrZXRJbmZvQ29udGFpbmVyfVxuICAgICAgPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyVGlja2V0SW5mb31cbiAgICAgICAgICBkYXRhLXRlc3RpZD1cIm9yZGVyLXRpY2tldC1pbmZvLWNvbnRhaW5lclwiXG4gICAgICAgID5cbiAgICAgICAgICB7dChcIm9yZGVycy5wdXJjaGFzZWRcIil9OiB7Z2V0Rm9ybWF0dGVkRGF0ZShvcmRlci5jcmVhdGVkKX0gfHtcIiBcIn1cbiAgICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkub3JkZXJfbm9cIil9OntcIiBcIn1cbiAgICAgICAgICA8Q29weVRleHRcbiAgICAgICAgICAgIHRleHQ9e29yZGVyLm51bWJlcn1cbiAgICAgICAgICAgIHRvb2x0aXBUZXh0PXt0KFwib3JkZXJfc3VtbWFyeS5jb3B5X29yZGVyX251bWJlclwiKX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIHtpc01vYmlsZSAmJiAoXG4gICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgc3g9e3sgcGFkZGluZzogXCI1cHggMTBweFwiIH19XG4gICAgICAgICAgICB2YXJpYW50PVwiY29udGFpbmVkXCJcbiAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRNb2JpbGVWaWV3YWJsZSghaXNNb2JpbGVWaWV3YWJsZSl9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge2lzTW9iaWxlVmlld2FibGVcbiAgICAgICAgICAgICAgPyB0KFwidGlja2V0X3N0YXR1cy5oaWRlX3RpY2tldHNcIilcbiAgICAgICAgICAgICAgOiB0KFwidGlja2V0X3N0YXR1cy52aWV3X3RpY2tldHNcIil9XG4gICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICl9XG4gICAgICA8L0JveD5cbiAgICAgIDxHcmlkXG4gICAgICAgIGtleT17b3JkZXIuaWR9XG4gICAgICAgIGNvbnRhaW5lclxuICAgICAgICByb3dTcGFjaW5nPXsxfVxuICAgICAgICBjb2x1bW5TcGFjaW5nPXt7IHhzOiAxLCBzbTogMiwgbWQ6IDMgfX1cbiAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMub3JkZXJUaWNrZXRDb250YWluZXJ9ICR7XG4gICAgICAgICAgaXNNb2JpbGUgJiYgIWlzTW9iaWxlVmlld2FibGUgPyBzdHlsZXMuZGlzcGxheV9ub25lIDogXCJcIlxuICAgICAgICB9YH1cbiAgICAgICAgc3g9e3tcbiAgICAgICAgICBmbGV4RGlyZWN0aW9uOiB7XG4gICAgICAgICAgICBtZDogXCJyb3dcIixcbiAgICAgICAgICAgIGxnOiBcInJvd1wiXG4gICAgICAgICAgfSxcbiAgICAgICAgICBwYWRkaW5nOiB7XG4gICAgICAgICAgICB4czogMixcbiAgICAgICAgICAgIG1kOiA0LFxuICAgICAgICAgICAgbGc6IDBcbiAgICAgICAgICB9XG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIDxPcmRlcnNMaXN0RGVza3RvcE1vYmlsZVxuICAgICAgICAgIGlzTW9iaWxlPXtpc01vYmlsZX1cbiAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICBvcmRlcj17b3JkZXJ9XG4gICAgICAgICAgZGV0YWlsc1JlcXVpcmVkPXshIWRldGFpbHNSZXF1aXJlZH1cbiAgICAgICAgICBvblBhZ2luYXRlQ2xpY2s9e29uUGFnaW5hdGVDbGlja31cbiAgICAgICAgLz5cbiAgICAgIDwvR3JpZD5cbiAgICA8Lz5cbiAgKTtcbn07XG5cbk9yZGVyc0xpc3QucHJvcFR5cGVzID0ge1xuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIG9yZGVyOiBQcm9wVHlwZXMub2JqZWN0XG59O1xuXG5leHBvcnQgZGVmYXVsdCBPcmRlcnNMaXN0O1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZU1lbW8gfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgUmlnaHREcmF3ZXIgZnJvbSBcIi4uL1JpZ2h0RHJhd2VyXCI7XG5pbXBvcnQgUmVmdW5kUmVxdWVzdGVkVGlja2V0IGZyb20gXCIuL1JlZnVuZFJlcXVlc3RlZFRpY2tldFwiO1xuaW1wb3J0IHsgZ2V0QWxsUmVmdW5kUmVxdWVzdGVkVGlja2V0cyB9IGZyb20gXCIuLi8uLi91dGlscy90aWNrZXRVdGlsc1wiO1xuXG5jb25zdCBSZWZ1bmREZXRhaWxzID0gKHsgdGlja2V0cywgY3VycmVuY3ksIG9wZW4sIG9uQ2xvc2VTbGlkZXIgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IHJlcXVlc3RlZFRpY2tldHMgPSB1c2VNZW1vKFxuICAgICgpID0+IGdldEFsbFJlZnVuZFJlcXVlc3RlZFRpY2tldHModGlja2V0cyksXG4gICAgW3RpY2tldHNdXG4gICk7XG4gIGNvbnN0IGNsb3NlU2xpZGVyID0gKCkgPT4ge1xuICAgIG9uQ2xvc2VTbGlkZXIoKTtcbiAgfTtcbiAgcmV0dXJuIChcbiAgICA8UmlnaHREcmF3ZXJcbiAgICAgIGlkPVwicmVmdW5kLWRldGFpbHNcIlxuICAgICAgb3Blbj17b3Blbn1cbiAgICAgIG9uQ2xvc2U9e2Nsb3NlU2xpZGVyfVxuICAgICAgdGl0bGU9e3QoXCJvcmRlcl9zdW1tYXJ5LnJlZnVuZF9kZXRhaWxzXCIpfVxuICAgID5cbiAgICAgIDxCb3hcbiAgICAgICAgc3g9e3tcbiAgICAgICAgICBkaXNwbGF5OiBcImZsZXhcIixcbiAgICAgICAgICBmbGV4RGlyZWN0aW9uOiBcImNvbHVtblwiLFxuICAgICAgICAgIGFsaWduSXRlbXM6IFwiY2VudGVyXCIsXG4gICAgICAgICAgcGFkZGluZzogXCIwIDVyZW1cIlxuICAgICAgICB9fVxuICAgICAgPlxuICAgICAgICB7cmVxdWVzdGVkVGlja2V0cz8ubWFwKCh0aWNrZXQpID0+IChcbiAgICAgICAgICA8UmVmdW5kUmVxdWVzdGVkVGlja2V0XG4gICAgICAgICAgICBrZXk9e2ByZWZ1bmRfcmVxXyR7dGlja2V0Py5pZH1gfVxuICAgICAgICAgICAgdGlja2V0PXt0aWNrZXR9XG4gICAgICAgICAgICBjdXJyZW5jeT17Y3VycmVuY3l9XG4gICAgICAgICAgICByZWZ1bmREZXRhaWxzXG4gICAgICAgICAgLz5cbiAgICAgICAgKSl9XG4gICAgICA8L0JveD5cbiAgICA8L1JpZ2h0RHJhd2VyPlxuICApO1xufTtcblxuUmVmdW5kRGV0YWlscy5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldHM6IFByb3BUeXBlcy5hcnJheU9mKE9iamVjdCksXG4gIG9wZW46IFByb3BUeXBlcy5ib29sLFxuICBvbkNsb3NlU2xpZGVyOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgUmVmdW5kRGV0YWlscztcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEdyaWQsIEljb25CdXR0b24sIFRvb2x0aXAgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdG9vbHRpcENsYXNzZXMgfSBmcm9tIFwiQG11aS9tYXRlcmlhbC9Ub29sdGlwXCI7XG5pbXBvcnQgeyBzdHlsZWQgfSBmcm9tIFwiQG11aS9tYXRlcmlhbC9zdHlsZXNcIjtcbmltcG9ydCBJbmZvSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9JbmZvXCI7XG5pbXBvcnQgU3RhY2sgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvU3RhY2tcIjtcbmltcG9ydCBtb21lbnQgZnJvbSBcIm1vbWVudC10aW1lem9uZVwiO1xuaW1wb3J0IEF0dGVuZGVlU3RhdHVzIGZyb20gXCIuLi9PcmRlcnNMaXN0L0F0dGVuZGVlU3RhdHVzXCI7XG5pbXBvcnQgUmVmdW5kU3RhdHVzIGZyb20gXCIuL1JlZnVuZFN0YXR1c1wiO1xuaW1wb3J0IENvcHlUZXh0IGZyb20gXCIuLi9Db3B5VGV4dFwiO1xuXG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgVGlja2V0U3RhdHVzIGZyb20gXCIuLi9UaWNrZXRTdGF0dXNcIjtcbmltcG9ydCB7IE1JTExJU0VDX1RPX1NFQyB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCB7IGZvcm1hdEN1cnJlbmN5IH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XG5cbmNvbnN0IFJlZnVuZFJlcXVlc3RlZFRpY2tldCA9ICh7IHRpY2tldCwgY3VycmVuY3ksIHJlZnVuZERldGFpbHMgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG5cbiAgY29uc3QgR1JJRF84ID0gODtcbiAgY29uc3QgR1JJRF8xMiA9IDEyO1xuXG4gIGNvbnN0IFBBRERJTkdfMiA9IDI7XG5cbiAgY29uc3QgYXBwcm92ZWRSZWZ1bmRzID0gdGlja2V0LnJlZnVuZF9yZXF1ZXN0cy5maWx0ZXIoXG4gICAgKHJlZnVuZCkgPT4gcmVmdW5kLnN0YXR1cyA9PT0gXCJBcHByb3ZlZFwiXG4gICk7XG5cbiAgY29uc3QgcmVmdW5kZWRUYXhlc1N1bW1hdG9yeSA9IHt9O1xuXG4gIGFwcHJvdmVkUmVmdW5kcy5mb3JFYWNoKChyZWZ1bmQpID0+IHtcbiAgICByZWZ1bmQucmVmdW5kZWRfdGF4ZXMuZm9yRWFjaCgocnQpID0+IHtcbiAgICAgIGNvbnN0IHRheElkID0gcnQudGF4LmlkO1xuICAgICAgaWYgKCFyZWZ1bmRlZFRheGVzU3VtbWF0b3J5W3RheElkXSkge1xuICAgICAgICByZWZ1bmRlZFRheGVzU3VtbWF0b3J5W3RheElkXSA9IHtcbiAgICAgICAgICBuYW1lOiBydC50YXgubmFtZSxcbiAgICAgICAgICB0b3RhbFJlZnVuZGVkVGF4QW1vdW50OiAwXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICByZWZ1bmRlZFRheGVzU3VtbWF0b3J5W3RheElkXS50b3RhbFJlZnVuZGVkVGF4QW1vdW50ICs9XG4gICAgICAgIHJ0LnJlZnVuZGVkX2Ftb3VudDtcbiAgICB9KTtcbiAgfSk7XG5cbiAgY29uc3QgSHRtbFRvb2x0aXAgPSBzdHlsZWQoKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9KSA9PiAoXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgPFRvb2x0aXAgey4uLnByb3BzfSBjbGFzc2VzPXt7IHBvcHBlcjogY2xhc3NOYW1lIH19IC8+XG4gICkpKCgpID0+ICh7XG4gICAgW2AmIC4ke3Rvb2x0aXBDbGFzc2VzLnRvb2x0aXB9YF06IHtcbiAgICAgIGJhY2tncm91bmRDb2xvcjogXCIjZjVmNWY5XCIsXG4gICAgICBjb2xvcjogXCJyZ2JhKDAsIDAsIDAsIDAuODcpXCIsXG4gICAgICBtYXhXaWR0aDogMjIwLFxuICAgICAgZm9udFNpemU6IFwiMWVtXCIsXG4gICAgICBib3JkZXI6IFwiMXB4IHNvbGlkICNkYWRkZTlcIlxuICAgIH1cbiAgfSkpO1xuXG4gIHJldHVybiAoXG4gICAgPEdyaWRcbiAgICAgIGNvbnRhaW5lclxuICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMucmVmdW5kVGlja2V0Qm94Q29udGFpbmVyfSAke1xuICAgICAgICByZWZ1bmREZXRhaWxzID8gc3R5bGVzLnJlZnVuZERldGFpbCA6IFwiXCJcbiAgICAgIH0gYH1cbiAgICAgIGRhdGEtdGVzdGlkPVwicmVmdW5kLXJlcXVlc3RlZC10aWNrZXQtY29udGFpbmVyXCJcbiAgICA+XG4gICAgICA8R3JpZFxuICAgICAgICB4cz17cmVmdW5kRGV0YWlscyA/IEdSSURfOCA6IEdSSURfMTJ9XG4gICAgICAgIGl0ZW1cbiAgICAgICAganVzdGlmeT1cInNwYWNlLWJldHdlZW5cIlxuICAgICAgICBwdD17Mn1cbiAgICAgICAgcHg9ezR9XG4gICAgICA+XG4gICAgICAgIDxTdGFja1xuICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogXCJzcGFjZS1iZXR3ZWVuXCIsXG4gICAgICAgICAgICBhbGlnbkl0ZW1zOiBcImNlbnRlclwiXG4gICAgICAgICAgfX1cbiAgICAgICAgICBkaXJlY3Rpb249XCJyb3dcIlxuICAgICAgICA+XG4gICAgICAgICAgPGg0Pnt0aWNrZXQudGlja2V0X3R5cGU/Lm5hbWV9PC9oND5cbiAgICAgICAgICA8R3JpZCBjbGFzc05hbWU9e3N0eWxlcy5iYWRnZUZlYXR1cmVXcmFwcGVyfSB4cz17NH0gaXRlbT5cbiAgICAgICAgICAgIHt0aWNrZXQuYmFkZ2U/LmZlYXR1cmVzLm1hcCgoYmYpID0+IChcbiAgICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmJhZGdlRmVhdHVyZX1cbiAgICAgICAgICAgICAgICBzcmM9e2JmLmltYWdlfVxuICAgICAgICAgICAgICAgIGFsdD17YmYubmFtZX1cbiAgICAgICAgICAgICAgICBrZXk9e2JmLm5hbWV9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApKX1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDwvU3RhY2s+XG4gICAgICA8L0dyaWQ+XG4gICAgICB7cmVmdW5kRGV0YWlscyAmJiAoXG4gICAgICAgIDxHcmlkIHhzPXs0fSBwYWRkaW5nPXsyfSBpdGVtPlxuICAgICAgICAgIDxSZWZ1bmRTdGF0dXMgdGlja2V0PXt0aWNrZXR9IC8+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICl9XG4gICAgICA8R3JpZCB4cz17MTJ9IGl0ZW0gcHg9ezR9IHBiPXtyZWZ1bmREZXRhaWxzID8gUEFERElOR18yIDogMH0gY29udGFpbmVyPlxuICAgICAgICA8R3JpZCB4cz17OH0gY2xhc3NOYW1lPXtzdHlsZXMucmVmdW5kVGlja2V0QXR0ZW5kZWV9PlxuICAgICAgICAgIDxBdHRlbmRlZVN0YXR1cyB0aWNrZXQ9e3RpY2tldH0gLz5cbiAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXROb30+XG4gICAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMudGlja2V0X25vXCIpfTogPENvcHlUZXh0IHRleHQ9e3RpY2tldC5udW1iZXJ9IC8+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICAgIHtyZWZ1bmREZXRhaWxzICYmIHRpY2tldC50b3RhbF9yZWZ1bmRlZF9hbW91bnQgPiAwICYmIChcbiAgICAgICAgICA8R3JpZCB4cz17NH0gcGw9ezR9PlxuICAgICAgICAgICAge2Zvcm1hdEN1cnJlbmN5KHRpY2tldC50b3RhbF9yZWZ1bmRlZF9hbW91bnQsIHsgY3VycmVuY3kgfSl9e1wiIFwifVxuICAgICAgICAgICAgUmVmdW5kZWRcbiAgICAgICAgICAgIHthcHByb3ZlZFJlZnVuZHMuc29tZSgocikgPT4gci5yZWZ1bmRlZF90YXhlcy5sZW5ndGggPiAwKSAmJiAoXG4gICAgICAgICAgICAgIDxIdG1sVG9vbHRpcFxuICAgICAgICAgICAgICAgIHRpdGxlPXtcbiAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICAgICAgICAgIHtmb3JtYXRDdXJyZW5jeSh0aWNrZXQucmVmdW5kZWRfYW1vdW50LCB7IGN1cnJlbmN5IH0pfXtcIiBcIn1cbiAgICAgICAgICAgICAgICAgICAgICBUaWNrZXQgQW1vdW50XG4gICAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICAgICAgPGI+VGF4ZXM8L2I+XG4gICAgICAgICAgICAgICAgICAgIHtPYmplY3Qua2V5cyhyZWZ1bmRlZFRheGVzU3VtbWF0b3J5KS5tYXAoKHRheElkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgY29uc3QgeyB0b3RhbFJlZnVuZGVkVGF4QW1vdW50LCBuYW1lIH0gPVxuICAgICAgICAgICAgICAgICAgICAgICAgcmVmdW5kZWRUYXhlc1N1bW1hdG9yeVt0YXhJZF07XG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGtleT17dGF4SWR9PntgJHtuYW1lfSAtICR7Zm9ybWF0Q3VycmVuY3koXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFsUmVmdW5kZWRUYXhBbW91bnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHsgY3VycmVuY3kgfVxuICAgICAgICAgICAgICAgICAgICAgICAgKX1gfTwvcD5cbiAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPEluZm9JY29uIC8+XG4gICAgICAgICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICAgICAgICA8L0h0bWxUb29sdGlwPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDxiciAvPlxuICAgICAgICAgICAge21vbWVudChcbiAgICAgICAgICAgICAgdGlja2V0LnJlZnVuZF9yZXF1ZXN0c1swXS5hY3Rpb25fZGF0ZSAqIE1JTExJU0VDX1RPX1NFQ1xuICAgICAgICAgICAgKS5mb3JtYXQoXCJNTU0gREQsIFlZWVlcIil9XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICApfVxuICAgICAgPC9HcmlkPlxuICAgICAgeyFyZWZ1bmREZXRhaWxzICYmIChcbiAgICAgICAgPEdyaWQgeHM9ezEyfSBwcj17NH0gcGI9ezJ9PlxuICAgICAgICAgIDxHcmlkIHhzPXsxMn0gaXRlbT5cbiAgICAgICAgICAgIDxUaWNrZXRTdGF0dXMgdGlja2V0PXt0aWNrZXR9IC8+XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICApfVxuICAgIDwvR3JpZD5cbiAgKTtcbn07XG5cblJlZnVuZFJlcXVlc3RlZFRpY2tldC5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldDogUHJvcFR5cGVzLm9iamVjdCxcbiAgcmVmdW5kRGV0YWlsczogUHJvcFR5cGVzLmJvb2xcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJlZnVuZFJlcXVlc3RlZFRpY2tldDtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VNZW1vIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBDaGlwIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IGdldFJlZnVuZFJlcXVlc3RlZFN0YXR1c0NvbG9yIH0gZnJvbSBcIi4uLy4uL3V0aWxzL3RpY2tldFV0aWxzXCI7XG5cbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgUmVmdW5kU3RhdHVzID0gKHsgdGlja2V0IH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBzdGF0dXNDb2xvciA9IHVzZU1lbW8oXG4gICAgKCkgPT4gZ2V0UmVmdW5kUmVxdWVzdGVkU3RhdHVzQ29sb3IodGlja2V0KSxcbiAgICBbdGlja2V0XVxuICApO1xuICByZXR1cm4gKFxuICAgIDxDaGlwXG4gICAgICBhcmlhLWxhYmVsPVwidGlja2V0IHJlZnVuZCBzdGF0dXMgbGFiZWxcIlxuICAgICAgbGFiZWw9e3QoYHRpY2tldF9zdGF0dXMucmVmdW5kX3JlcXVlc3RfJHtzdGF0dXNDb2xvcn1gKX1cbiAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLmJ1dHRvblBpbGx9ICR7c3R5bGVzW3N0YXR1c0NvbG9yXX1gfVxuICAgIC8+XG4gICk7XG59O1xuXG5SZWZ1bmRTdGF0dXMucHJvcFR5cGVzID0ge1xuICB0aWNrZXQ6IFByb3BUeXBlcy5vYmplY3Rcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJlZnVuZFN0YXR1cztcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2ggfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IEJveCwgQnV0dG9uLCBTdHlsZWRFbmdpbmVQcm92aWRlciB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgQ2hlY2tDaXJjbGVJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0NoZWNrQ2lyY2xlXCI7XG5pbXBvcnQgUmlnaHREcmF3ZXIgZnJvbSBcIi4uL1JpZ2h0RHJhd2VyXCI7XG5pbXBvcnQgRXJyb3JMYWJlbCBmcm9tIFwiLi4vTGFiZWxzL0Vycm9yTGFiZWxcIjtcbmltcG9ydCB7IHJlZnVuZEJ1bGtUaWNrZXRzLCB1cGRhdGVUaWNrZXRzUmVmdW5kUmVxdWVzdGVkIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcbmltcG9ydCB7IFNURVBfT05FLCBTVEVQX1RIUkVFLCBTVEVQX1RXTyB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCBPcmRlckxpc3RUaWNrZXRzIGZyb20gXCIuLi9PcmRlcnNMaXN0L09yZGVyTGlzdFRpY2tldHNcIjtcbmltcG9ydCBSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXQgZnJvbSBcIi4vUmVmdW5kUmVxdWVzdGVkVGlja2V0XCI7XG5cbmNvbnN0IFJlZnVuZFJlcXVlc3RzTW9kYWwgPSAoe1xuICB0aWNrZXRzLFxuICBzdW1taXQsXG4gIG9wZW4sXG4gIG9uUmVmdW5kU3VjY2Vzc0Nsb3NlLFxuICBvbkNsb3NlU2xpZGVyLFxuICB0aWNrZXRzVG9SZWZ1bmQsXG4gIHNlbGVjdFRvUmVmdW5kLFxuICB1bnNlbGVjdFJlZnVuZFRpY2tldHNcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG4gIGNvbnN0IFtzdGVwLCBzZXRTdGVwXSA9IHVzZVN0YXRlKFNURVBfT05FKTtcbiAgY29uc3QgW2Vycm9yTXNnLCBzZXRFcnJvck1zZ10gPSB1c2VTdGF0ZShcIlwiKTtcbiAgY29uc3QgW3JlZnVuZFN1Y2Nlc3MsIHNldFJlZnVuZFN1Y2Nlc3NdID0gdXNlU3RhdGUoZmFsc2UpO1xuXG4gIGNvbnN0IGNsb3NlU2xpZGVyID0gKCkgPT4ge1xuICAgIHNldEVycm9yTXNnKFwiXCIpO1xuICAgIG9uQ2xvc2VTbGlkZXIoKTtcbiAgICBzZXRTdGVwKFNURVBfT05FKTtcbiAgICBpZiAocmVmdW5kU3VjY2Vzcykge1xuICAgICAgb25SZWZ1bmRTdWNjZXNzQ2xvc2UoKTsgLy8gaWYgdGhlIHJlZnVuZCBpcyBhIHN1Y2Nlc3MsIHRyaWdnZXIgYW5kIHJlLXJldHJpZXZlIHRpY2tldHMgYnkgb3JkZXJcbiAgICAgIHNldFJlZnVuZFN1Y2Nlc3MoZmFsc2UpO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBjb25maXJtUmVmdW5kID0gKCkgPT4ge1xuICAgIHNldFN0ZXAoU1RFUF9UV08pO1xuICB9O1xuXG4gIGNvbnN0IGdvQmFja1RvUmVmdW5kID0gKCkgPT4ge1xuICAgIHNldFN0ZXAoU1RFUF9PTkUpO1xuICB9O1xuXG4gIGNvbnN0IHJlZnVuZFRpY2tldHMgPSBhc3luYyAoKSA9PiB7XG4gICAgZGlzcGF0Y2gocmVmdW5kQnVsa1RpY2tldHMoeyB0aWNrZXRzOiB0aWNrZXRzVG9SZWZ1bmQgfSkpLnRoZW4oKHJlcykgPT4ge1xuICAgICAgZGlzcGF0Y2godXBkYXRlVGlja2V0c1JlZnVuZFJlcXVlc3RlZChyZXMpKTsgLy8gcmV0dXJuaW5nIHdoaWNoIHRpY2tldHMgd2VyZSBzdWNjZXNzZnVsXG4gICAgICBpZiAocmVzPy5sZW5ndGggPT09IHRpY2tldHNUb1JlZnVuZC5sZW5ndGgpIHtcbiAgICAgICAgc2V0U3RlcChTVEVQX1RIUkVFKTsgLy8gc3VjY2VzcywgYWxsIHJlZnVuZHMgd2VyZSByZXF1ZXN0ZWRcbiAgICAgICAgc2V0UmVmdW5kU3VjY2Vzcyh0cnVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldEVycm9yTXNnKHQoXCJlcnJvcnMucmVmdW5kX3Vuc3VjY2Vzc2Z1bFwiKSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgc2V0RXJyb3JNc2coXCJcIik7XG4gIH07XG5cbiAgY29uc3QgcmVmdW5kU3RlcE9uZSA9ICgpID0+IChcbiAgICA8PlxuICAgICAgPGgyIGNsYXNzTmFtZT17c3R5bGVzLnN1YnRpdGxlfT5cbiAgICAgICAge3QoXCJjb25maXJtX3BvcHVwLnF1ZXN0aW9uX3RleHRfc2VsZWN0X3JlZnVuZFwiKX1cbiAgICAgIDwvaDI+XG4gICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldExpc3R9PlxuICAgICAgICB7dGlja2V0cy5tYXAoKHRpY2tldCkgPT4gKFxuICAgICAgICAgIDxPcmRlckxpc3RUaWNrZXRzXG4gICAgICAgICAgICBrZXk9e2B0aWNrZXQtJHt0aWNrZXQuaWR9YH1cbiAgICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgICBpc1NlbGVjdGVkVG9SZWZ1bmQ9e1xuICAgICAgICAgICAgICAhIXRpY2tldHNUb1JlZnVuZC5maW5kKCh0KSA9PiB0LmlkID09PSB0aWNrZXQuaWQpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzZWxlY3RUb1JlZnVuZD17c2VsZWN0VG9SZWZ1bmR9XG4gICAgICAgICAgICB1bnNlbGVjdFJlZnVuZFRpY2tldHM9e3Vuc2VsZWN0UmVmdW5kVGlja2V0c31cbiAgICAgICAgICAgIGlzUmVmdW5kTW9kYWxcbiAgICAgICAgICAvPlxuICAgICAgICApKX1cbiAgICAgIDwvQm94PlxuICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5hY3Rpb25CdXR0b25zfT5cbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJyZWZ1bmQtY2FuY2VsLWJ1dHRvblwiXG4gICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuY2FuY2VsQnV0dG9ufVxuICAgICAgICAgIG9uQ2xpY2s9e2Nsb3NlU2xpZGVyfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJnZW5lcmFsLmNhbmNlbFwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBhcmlhLWxhYmVsPVwicmVmdW5kLWNvbnRpbnVlLWJ1dHRvblwiXG4gICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuY29udGludWVCdXR0b259XG4gICAgICAgICAgb25DbGljaz17Y29uZmlybVJlZnVuZH1cbiAgICAgICAgICBkaXNhYmxlZD17dGlja2V0c1RvUmVmdW5kLmxlbmd0aCA9PT0gMH1cbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwiZ2VuZXJhbC5jb250aW51ZVwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICA8L0JveD5cbiAgICA8Lz5cbiAgKTtcblxuICBjb25zdCByZWZ1bmRTdGVwVHdvID0gKCkgPT4gKFxuICAgIDxCb3ggZGF0YS10ZXN0aWQ9XCJyZWZ1bmQtcmVxdWVzdC1zdWNjZXNzZnVsXCI+XG4gICAgICA8aDMgY2xhc3NOYW1lPXtzdHlsZXMuc3VidGl0bGV9PlxuICAgICAgICB7dChcImNvbmZpcm1fcG9wdXAucXVlc3Rpb25fdGV4dF9jb25maXJtX3JlZnVuZFwiKX1cbiAgICAgIDwvaDM+XG4gICAgICB7ZXJyb3JNc2cgJiYgKFxuICAgICAgICA8RXJyb3JMYWJlbFxuICAgICAgICAgIGNsYXNzTmFtZXM9e3N0eWxlcy5yZWZ1bmRFcnJvck1zZ31cbiAgICAgICAgICBjb2xvcj1cIiNGRjAwMDBcIlxuICAgICAgICAgIGRhdGFUZXN0SWQ9XCJmYWlsZWQtcmVmdW5kLW1lc3NhZ2VcIlxuICAgICAgICAgIG1lc3NhZ2U9e2Vycm9yTXNnfVxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0TGlzdH0+XG4gICAgICAgIHt0aWNrZXRzVG9SZWZ1bmQubWFwKCh0aWNrZXQpID0+IChcbiAgICAgICAgICA8UmVmdW5kUmVxdWVzdGVkVGlja2V0XG4gICAgICAgICAgICBrZXk9e2ByZWZ1bmRfcmVxXyR7dGlja2V0Py5pZH1gfVxuICAgICAgICAgICAgdGlja2V0PXt0aWNrZXR9XG4gICAgICAgICAgLz5cbiAgICAgICAgKSl9XG4gICAgICA8L0JveD5cbiAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuQ1RBQnV0dG9uV3JhcHBlcn0+XG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBhcmlhLWxhYmVsPVwicmVmdW5kLXJldHVybi1idXR0b25cIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNhbmNlbEJ1dHRvbn1cbiAgICAgICAgICBvbkNsaWNrPXtnb0JhY2tUb1JlZnVuZH1cbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwiZ2VuZXJhbC5iYWNrXCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJyZWZ1bmQtY29udGludWUtYnV0dG9uXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5jb250aW51ZUJ1dHRvbn1cbiAgICAgICAgICBvbkNsaWNrPXtyZWZ1bmRUaWNrZXRzfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJnZW5lcmFsLmNvbnRpbnVlXCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgIDwvQm94PlxuICAgIDwvQm94PlxuICApO1xuXG4gIGNvbnN0IHJlZnVuZFN0ZXBUaHJlZSA9ICgpID0+IChcbiAgICA8Qm94XG4gICAgICBjbGFzc05hbWU9e3N0eWxlcy5yZWZ1bmRTdWNjZXNzZnVsfVxuICAgICAgZGF0YS10ZXN0aWQ9XCJyZWZ1bmQtcmVxdWVzdC1zdWNjZXNzZnVsXCJcbiAgICA+XG4gICAgICA8Q2hlY2tDaXJjbGVJY29uIHN4PXt7IGNvbG9yOiBcIiM0Y2FmNTBcIiB9fSAvPlxuICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXMuc3VjY2Vzc01zZ30+XG4gICAgICAgIHt0KFwidGlja2V0cy5yZWZ1bmRfcmVxdWVzdF9zdWNjZXNzXzFcIil9XG4gICAgICA8L3NwYW4+XG4gICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlcy5zdWNjZXNzTXNnMn0+XG4gICAgICAgIHt0KFwidGlja2V0cy5yZWZ1bmRfcmVxdWVzdF9zdWNjZXNzXzJcIil9XG4gICAgICA8L3NwYW4+XG4gICAgICA8QnV0dG9uXG4gICAgICAgIGFyaWEtbGFiZWw9XCJyZWZ1bmQtZmluaXNoLWJ1dHRvblwiXG4gICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5jb250aW51ZUJ1dHRvbn1cbiAgICAgICAgb25DbGljaz17Y2xvc2VTbGlkZXJ9XG4gICAgICA+XG4gICAgICAgIHt0KFwiZ2VuZXJhbC5maW5pc2hcIil9XG4gICAgICA8L0J1dHRvbj5cbiAgICA8L0JveD5cbiAgKTtcblxuICBjb25zdCByZW5kZXJTdGVwcyA9ICgpID0+IHtcbiAgICBzd2l0Y2ggKHN0ZXApIHtcbiAgICAgIGNhc2UgU1RFUF9PTkU6XG4gICAgICAgIHJldHVybiByZWZ1bmRTdGVwT25lKCk7XG4gICAgICBjYXNlIFNURVBfVFdPOlxuICAgICAgICByZXR1cm4gcmVmdW5kU3RlcFR3bygpO1xuICAgICAgY2FzZSBTVEVQX1RIUkVFOlxuICAgICAgICByZXR1cm4gcmVmdW5kU3RlcFRocmVlKCk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gcmVmdW5kU3RlcE9uZSgpO1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIChcbiAgICA8U3R5bGVkRW5naW5lUHJvdmlkZXIgaW5qZWN0Rmlyc3Q+XG4gICAgICA8UmlnaHREcmF3ZXJcbiAgICAgICAgaWQ9XCJyZWZ1bmQtcmVxdWVzdHNcIlxuICAgICAgICBvcGVuPXtvcGVufVxuICAgICAgICBvbkNsb3NlPXtjbG9zZVNsaWRlcn1cbiAgICAgICAgdGl0bGU9e3QoXCJvcmRlcl9zdW1tYXJ5LnJlcXVlc3RfcmVmdW5kXCIpfVxuICAgICAgICBkYXRhLXRlc3RpZD1cInJlZnVuZC1yZXF1ZXN0LW1vZGFsXCJcbiAgICAgID5cbiAgICAgICAge3JlbmRlclN0ZXBzKCl9XG4gICAgICA8L1JpZ2h0RHJhd2VyPlxuICAgIDwvU3R5bGVkRW5naW5lUHJvdmlkZXI+XG4gICk7XG59O1xuXG5SZWZ1bmRSZXF1ZXN0c01vZGFsLnByb3BUeXBlcyA9IHtcbiAgdGlja2V0czogUHJvcFR5cGVzLmFycmF5T2YoT2JqZWN0KSxcbiAgb3BlbjogUHJvcFR5cGVzLmJvb2wsXG4gIG9uUmVmdW5kU3VjY2Vzc0Nsb3NlOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25DbG9zZVNsaWRlcjogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJlZnVuZFJlcXVlc3RzTW9kYWw7XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBCb3gsIEljb25CdXR0b24sIFR5cG9ncmFwaHksIERyYXdlciB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBDbG9zZSBhcyBDbG9zZUljb24gfSBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBSaWdodERyYXdlciA9ICh7IGlkLCB0aXRsZSwgY2hpbGRyZW4sIG9wZW4sIG9uQ2xvc2UsIGNsYXNzTmFtZSB9KSA9PiAoXG4gIDxEcmF3ZXJcbiAgICBpZD17aWR9XG4gICAgb3Blbj17b3Blbn1cbiAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgIGFuY2hvcj1cInJpZ2h0XCJcbiAgICBNb2RhbFByb3BzPXt7IGtlZXBNb3VudGVkOiBmYWxzZSB9fVxuICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLndyYXBwZXJ9ICR7Y2xhc3NOYW1lfWB9XG4gID5cbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmhlYWRlcn0+XG4gICAgICA8SWNvbkJ1dHRvblxuICAgICAgICBkYXRhLXRlc3RpZD1cImNsb3NlLWRyYXdlclwiXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNsb3NlQnRufVxuICAgICAgICBvbkNsaWNrPXtvbkNsb3NlfVxuICAgICAgICBzeD17eyBmbG9hdDogXCJyaWdodFwiIH19XG4gICAgICAgIGZvbnRTaXplPVwibGFyZ2VcIlxuICAgICAgPlxuICAgICAgICA8Q2xvc2VJY29uIC8+XG4gICAgICA8L0ljb25CdXR0b24+XG4gICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiaDZcIiBndXR0ZXJCb3R0b20gY2xhc3NOYW1lPXtzdHlsZXMudGl0bGV9PlxuICAgICAgICB7dGl0bGV9XG4gICAgICA8L1R5cG9ncmFwaHk+XG4gICAgPC9Cb3g+XG4gICAge2NoaWxkcmVufVxuICA8L0RyYXdlcj5cbik7XG5cblJpZ2h0RHJhd2VyLnByb3BUeXBlcyA9IHtcbiAgaWQ6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgdGl0bGU6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5zdHJpbmcsIFByb3BUeXBlcy5ub2RlXSksXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgb3BlbjogUHJvcFR5cGVzLmJvb2wsXG4gIG9uQ2xvc2U6IFByb3BUeXBlcy5mdW5jLFxuICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmdcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJpZ2h0RHJhd2VyO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgc2hhbGxvd0VxdWFsLCB1c2VTZWxlY3RvciB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgQm94IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcblxuaW1wb3J0IHsgZ2V0U3VtbWl0Rm9ybWF0dGVkRGF0ZSB9IGZyb20gXCIuLi8uLi91dGlscy9zdW1taXRVdGlsc1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBTdW1taXRIZWFkZXIgPSAoKSA9PiB7XG4gIGNvbnN0IHsgc3VtbWl0IH0gPSB1c2VTZWxlY3RvcihcbiAgICAoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlIHx8IHt9LFxuICAgIHNoYWxsb3dFcXVhbFxuICApO1xuICByZXR1cm4gKFxuICAgIDxCb3hcbiAgICAgIGNsYXNzTmFtZT17c3R5bGVzLndpZGdldEhlYWRlcn1cbiAgICAgIHN4PXt7IHBhZGRpbmc6IHsgeHM6IDIsIG1kOiAwLCBsZzogMCB9IH19XG4gICAgICBkYXRhLXRlc3RpZD1cIm15LW9yZGVycy10aWNrZXQtaGVhZGVyXCJcbiAgICA+XG4gICAgICA8aDIgY2xhc3NOYW1lPXtzdHlsZXMuc3VtbWl0VGl0bGVEYXRlfT57c3VtbWl0Py5uYW1lfTwvaDI+XG4gICAgICA8aDIgY2xhc3NOYW1lPXtzdHlsZXMuc3VtbWl0VGl0bGVEYXRlfT5cbiAgICAgICAge2dldFN1bW1pdEZvcm1hdHRlZERhdGUoc3VtbWl0KX1cbiAgICAgIDwvaDI+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBTdW1taXRIZWFkZXI7XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBUZXh0RmllbGQsIFR5cG9ncmFwaHkgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlRm9ybWlrIH0gZnJvbSBcImZvcm1pa1wiO1xuaW1wb3J0ICogYXMgeXVwIGZyb20gXCJ5dXBcIjtcblxuaW1wb3J0IEZvcm1Gb290ZXIgZnJvbSBcIi4uLy4uLy4uL0Zvcm1Gb290ZXJcIjtcblxuY29uc3QgRGVsZWdhdGVGb3JtID0gKHsgb25TdWJtaXQsIG9uQ2xvc2UgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG5cbiAgY29uc3QgZm9ybWlrID0gdXNlRm9ybWlrKHtcbiAgICBpbml0aWFsVmFsdWVzOiB7XG4gICAgICBkZWxlZ2F0ZV9maXJzdF9uYW1lOiBcIlwiLFxuICAgICAgZGVsZWdhdGVfbGFzdF9uYW1lOiBcIlwiLFxuICAgICAgZGVsZWdhdGVfZW1haWw6IFwiXCJcbiAgICB9LFxuICAgIHZhbGlkYXRpb25TY2hlbWE6IHl1cC5vYmplY3Qoe1xuICAgICAgZGVsZWdhdGVfZmlyc3RfbmFtZTogeXVwXG4gICAgICAgIC5zdHJpbmcodChcInZhbGlkYXRpb24uZmlyc3RfbmFtZS5zdHJpbmdcIikpXG4gICAgICAgIC5yZXF1aXJlZCh0KFwidmFsaWRhdGlvbi5maXJzdF9uYW1lLnJlcXVpcmVkXCIpKSxcbiAgICAgIGRlbGVnYXRlX2xhc3RfbmFtZTogeXVwXG4gICAgICAgIC5zdHJpbmcodChcInZhbGlkYXRpb24ubGFzdF9uYW1lLnN0cmluZ1wiKSlcbiAgICAgICAgLnJlcXVpcmVkKHQoXCJ2YWxpZGF0aW9uLmxhc3RfbmFtZS5yZXF1aXJlZFwiKSksXG4gICAgICBkZWxlZ2F0ZV9lbWFpbDogeXVwXG4gICAgICAgIC5zdHJpbmcodChcInZhbGlkYXRpb24uZW1haWwuc3RyaW5nXCIpKVxuICAgICAgICAuZW1haWwodChcInZhbGlkYXRpb24uZW1haWwuZm9ybWF0XCIpKVxuICAgIH0pLFxuICAgIG9uU3VibWl0OiAodmFsdWVzLCB7IHJlc2V0Rm9ybSB9KSA9PiB7XG4gICAgICBvblN1Ym1pdCh2YWx1ZXMpO1xuICAgICAgcmVzZXRGb3JtKCk7XG4gICAgfVxuICB9KTtcblxuICBjb25zdCBoYW5kbGVDYW5jZWwgPSAoKSA9PiB7XG4gICAgZm9ybWlrLnJlc2V0Rm9ybSgpO1xuICAgIG9uQ2xvc2UoKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiaDZcIiBndXR0ZXJCb3R0b20+XG4gICAgICAgIHt0KFwidGlja2V0X2Fzc2lnbi5kZWxlZ2F0ZV9mb3JtLnRpdGxlXCIpfVxuICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImJvZHkxXCIgZ3V0dGVyQm90dG9tIHN4PXt7IGNvbG9yOiBcInRleHQuc2Vjb25kYXJ5XCIgfX0+XG4gICAgICAgIHt0KFwidGlja2V0X2Fzc2lnbi5kZWxlZ2F0ZV9mb3JtLmJvZHlcIil9XG4gICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICA8Zm9ybSBvblN1Ym1pdD17Zm9ybWlrLmhhbmRsZVN1Ym1pdH0gbm9WYWxpZGF0ZT5cbiAgICAgICAgPFRleHRGaWVsZFxuICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgIG5hbWU9XCJkZWxlZ2F0ZV9maXJzdF9uYW1lXCJcbiAgICAgICAgICBtYXJnaW49XCJub3JtYWxcIlxuICAgICAgICAgIGxhYmVsPXt0KFwidGlja2V0X2Fzc2lnbi5kZWxlZ2F0ZV9mb3JtLmZpcnN0X25hbWVcIil9XG4gICAgICAgICAgdmFsdWU9e2Zvcm1pay52YWx1ZXMuZGVsZWdhdGVfZmlyc3RfbmFtZX1cbiAgICAgICAgICBvbkNoYW5nZT17Zm9ybWlrLmhhbmRsZUNoYW5nZX1cbiAgICAgICAgICBvbkJsdXI9e2Zvcm1pay5oYW5kbGVCbHVyfVxuICAgICAgICAgIGVycm9yPXtcbiAgICAgICAgICAgIGZvcm1pay50b3VjaGVkLmRlbGVnYXRlX2ZpcnN0X25hbWUgJiZcbiAgICAgICAgICAgIEJvb2xlYW4oZm9ybWlrLmVycm9ycy5kZWxlZ2F0ZV9maXJzdF9uYW1lKVxuICAgICAgICAgIH1cbiAgICAgICAgICBoZWxwZXJUZXh0PXtcbiAgICAgICAgICAgIGZvcm1pay50b3VjaGVkLmRlbGVnYXRlX2ZpcnN0X25hbWUgJiZcbiAgICAgICAgICAgIGZvcm1pay5lcnJvcnMuZGVsZWdhdGVfZmlyc3RfbmFtZVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAvPlxuICAgICAgICA8VGV4dEZpZWxkXG4gICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgbmFtZT1cImRlbGVnYXRlX2xhc3RfbmFtZVwiXG4gICAgICAgICAgbWFyZ2luPVwibm9ybWFsXCJcbiAgICAgICAgICBsYWJlbD17dChcInRpY2tldF9hc3NpZ24uZGVsZWdhdGVfZm9ybS5sYXN0X25hbWVcIil9XG4gICAgICAgICAgdmFsdWU9e2Zvcm1pay52YWx1ZXMuZGVsZWdhdGVfbGFzdF9uYW1lfVxuICAgICAgICAgIG9uQ2hhbmdlPXtmb3JtaWsuaGFuZGxlQ2hhbmdlfVxuICAgICAgICAgIG9uQmx1cj17Zm9ybWlrLmhhbmRsZUJsdXJ9XG4gICAgICAgICAgZXJyb3I9e1xuICAgICAgICAgICAgZm9ybWlrLnRvdWNoZWQuZGVsZWdhdGVfbGFzdF9uYW1lICYmXG4gICAgICAgICAgICBCb29sZWFuKGZvcm1pay5lcnJvcnMuZGVsZWdhdGVfbGFzdF9uYW1lKVxuICAgICAgICAgIH1cbiAgICAgICAgICBoZWxwZXJUZXh0PXtcbiAgICAgICAgICAgIGZvcm1pay50b3VjaGVkLmRlbGVnYXRlX2xhc3RfbmFtZSAmJlxuICAgICAgICAgICAgZm9ybWlrLmVycm9ycy5kZWxlZ2F0ZV9sYXN0X25hbWVcbiAgICAgICAgICB9XG4gICAgICAgIC8+XG4gICAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgICBuYW1lPVwiZGVsZWdhdGVfZW1haWxcIlxuICAgICAgICAgIGxhYmVsPXt0KFwidGlja2V0X2Fzc2lnbi5kZWxlZ2F0ZV9mb3JtLmVtYWlsXCIpfVxuICAgICAgICAgIG1hcmdpbj1cIm5vcm1hbFwiXG4gICAgICAgICAgdmFsdWU9e2Zvcm1pay52YWx1ZXMuZGVsZWdhdGVfZW1haWx9XG4gICAgICAgICAgb25DaGFuZ2U9e2Zvcm1pay5oYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgb25CbHVyPXtmb3JtaWsuaGFuZGxlQmx1cn1cbiAgICAgICAgICBlcnJvcj17XG4gICAgICAgICAgICBmb3JtaWsudG91Y2hlZC5kZWxlZ2F0ZV9lbWFpbCAmJlxuICAgICAgICAgICAgQm9vbGVhbihmb3JtaWsuZXJyb3JzLmRlbGVnYXRlX2VtYWlsKVxuICAgICAgICAgIH1cbiAgICAgICAgICBoZWxwZXJUZXh0PXtcbiAgICAgICAgICAgIGZvcm1pay50b3VjaGVkLmRlbGVnYXRlX2VtYWlsICYmIGZvcm1pay5lcnJvcnMuZGVsZWdhdGVfZW1haWxcbiAgICAgICAgICB9XG4gICAgICAgIC8+XG4gICAgICAgIDxGb3JtRm9vdGVyXG4gICAgICAgICAgc2F2ZUxhYmVsPXt0KFwidGlja2V0X2Fzc2lnbi5kZWxlZ2F0ZV9mb3JtLnNhdmVcIil9XG4gICAgICAgICAgY2FuY2VsTGFiZWw9e3QoXCJ0aWNrZXRfYXNzaWduLmRlbGVnYXRlX2Zvcm0uY2FuY2VsXCIpfVxuICAgICAgICAgIG9uQ2xvc2U9e2hhbmRsZUNhbmNlbH1cbiAgICAgICAgICBkaXNhYmxlZD17Zm9ybWlrLmlzU3VibWl0dGluZ31cbiAgICAgICAgLz5cbiAgICAgIDwvZm9ybT5cbiAgICA8Lz5cbiAgKTtcbn07XG5cbkRlbGVnYXRlRm9ybS5wcm9wVHlwZXMgPSB7XG4gIG9uU3VibWl0OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkXG59O1xuXG5leHBvcnQgZGVmYXVsdCBEZWxlZ2F0ZUZvcm07XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCb3gsIExpbmssIFR5cG9ncmFwaHkgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IENvcHlUZXh0IGZyb20gXCIuLi8uLi8uLi9Db3B5VGV4dFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBBc3NpZ25IZWFkZXIgPSAoeyBpblByb2dyZXNzLCB0aWNrZXQsIHVzZXJFbWFpbCwgb25DbG9zZSB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgYXNzaWduZWRUb1lvdSA9IHRpY2tldD8ub3duZXI/LmVtYWlsID09PSB1c2VyRW1haWw7XG5cbiAgY29uc3QgZ2V0U2Vjb25kYXJ5VGl0bGUgPSAoKSA9PiB7XG4gICAgaWYgKGluUHJvZ3Jlc3MgPT09IFwibWFuYWdlXCIpIHtcbiAgICAgIHJldHVybiBgJHt0KFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfYXNzaWduLmRlbGVnYXRlZFwiKX0gJHtcbiAgICAgICAgdGlja2V0Lm93bmVyLmZpcnN0X25hbWVcbiAgICAgIH0gJHt0aWNrZXQub3duZXIubGFzdF9uYW1lfS5gO1xuICAgIH1cblxuICAgIGlmIChpblByb2dyZXNzKSB7XG4gICAgICBjb25zdCB1c2VyID0gYXNzaWduZWRUb1lvdSA/IFwieW91XCIgOiB0aWNrZXQ/Lm93bmVyPy5lbWFpbDtcbiAgICAgIHJldHVybiBgJHt0KFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfYXNzaWduLmFzc2lnbmVkX3RvXCIpfSAke3VzZXJ9YDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGlja2V0LnRpY2tldF90eXBlLm5hbWU7XG4gIH07XG5cbiAgY29uc3QgZ2V0SGVhZGVyTm90ZSA9ICgpID0+IHtcbiAgICBpZiAoaW5Qcm9ncmVzcykge1xuICAgICAgY29uc3QgdHJhbnNLZXkgPSBhc3NpZ25lZFRvWW91XG4gICAgICAgID8gXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9hc3NpZ24uYW5zd2VyX3lvdXJfZXFcIlxuICAgICAgICA6IFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfYXNzaWduLmFuc3dlcl9vdGhlcnNfZXFcIjtcblxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPD5cbiAgICAgICAgICB7dCh0cmFuc0tleSl9XG4gICAgICAgICAgPGJyIC8+XG4gICAgICAgICAgey8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc3gtYTExeS9hbmNob3ItaXMtdmFsaWQgKi99XG4gICAgICAgICAgPExpbmtcbiAgICAgICAgICAgIGNvbXBvbmVudD1cImJ1dHRvblwiXG4gICAgICAgICAgICB2YXJpYW50PVwiYm9keTFcIlxuICAgICAgICAgICAgb25DbGljaz17b25DbG9zZX1cbiAgICAgICAgICAgIHN4PXt7IGZvbnRXZWlnaHQ6IDcwMCwgbWFyZ2luOiBcIjIwcHggMCAxMHB4XCIgfX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7dChcInRpY2tldF9hc3NpZ24uaGVhZGVyX2Fzc2lnbi5jb21wbGV0ZV9sYXRlclwiKX1cbiAgICAgICAgICA8L0xpbms+XG4gICAgICAgIDwvPlxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gXCJcIjtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMud3JhcHBlcn0+XG4gICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLnB1cmNoYXNlZEJ5V3JhcHBlcn0+XG4gICAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJib2R5MVwiIGd1dHRlckJvdHRvbSBjbGFzc05hbWU9e3N0eWxlcy5wdXJjaGFzZWRCeX0+XG4gICAgICAgICAge3QoXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9hc3NpZ24ucHVyY2hhc2VkX2J5XCIpfXtcIiBcIn1cbiAgICAgICAgICB7dGlja2V0Py5vcmRlcj8ub3duZXJfZW1haWx9XG4gICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImJvZHkxXCIgZ3V0dGVyQm90dG9tIGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyTm99PlxuICAgICAgICAgIDxDb3B5VGV4dFxuICAgICAgICAgICAgdGV4dD17dGlja2V0Py5vcmRlcj8ubnVtYmVyfVxuICAgICAgICAgICAgcmV2ZXJzZWRcbiAgICAgICAgICAgIHdpZHRoPXsyNTB9XG4gICAgICAgICAgICB0b29sdGlwVGV4dD17dChcIm9yZGVyX3N1bW1hcnkuY29weV9vcmRlcl9udW1iZXJcIil9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgPC9Cb3g+XG4gICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiaDVcIiBndXR0ZXJCb3R0b20+XG4gICAgICAgIHtnZXRTZWNvbmRhcnlUaXRsZSgpfVxuICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgPFR5cG9ncmFwaHlcbiAgICAgICAgdmFyaWFudD1cImJvZHkxXCJcbiAgICAgICAgZ3V0dGVyQm90dG9tXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmhlYWRlck5vdGV9XG4gICAgICAgIHN4PXt7IGNvbG9yOiBcInRleHQuc2Vjb25kYXJ5XCIgfX1cbiAgICAgID5cbiAgICAgICAge2dldEhlYWRlck5vdGUoKX1cbiAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbi8vIEFkZGluZyBwcm9wLXR5cGVzIGZvciB0eXBlLWNoZWNraW5nXG5Bc3NpZ25IZWFkZXIucHJvcFR5cGVzID0ge1xuICBpblByb2dyZXNzOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIHRpY2tldDogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICB1c2VyRW1haWw6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZFxufTtcblxuZXhwb3J0IGRlZmF1bHQgQXNzaWduSGVhZGVyO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQm94LCBMaW5rLCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgUmVhc3NpZ25IZWFkZXIgPSAoe1xuICBpblByb2dyZXNzLFxuICBhbGxvd3NEZWxlZ2F0ZSxcbiAgdGlja2V0LFxuICB1c2VyRW1haWwsXG4gIG9uQ2xvc2Vcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBhc3NpZ25lZFRvWW91ID0gdGlja2V0Py5vd25lcj8uZW1haWwgPT09IHVzZXJFbWFpbDtcblxuICBjb25zdCBnZXRTZWNvbmRhcnlUaXRsZSA9ICgpID0+IHtcbiAgICBjb25zdCB1c2VyID0gYXNzaWduZWRUb1lvdVxuICAgICAgPyB0KFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfcmVhc3NpZ24ueW91cnNlbGZcIilcbiAgICAgIDogdGlja2V0Py5vd25lcj8uZW1haWw7XG5cbiAgICBpZiAoaW5Qcm9ncmVzcyA9PT0gXCJtYW5hZ2VcIikge1xuICAgICAgcmV0dXJuIGAke3QoXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9yZWFzc2lnbi5kZWxlZ2F0ZWRcIil9ICR7XG4gICAgICAgIHRpY2tldC5vd25lci5maXJzdF9uYW1lXG4gICAgICB9ICR7dGlja2V0Lm93bmVyLmxhc3RfbmFtZX0uYDtcbiAgICB9XG5cbiAgICBpZiAoIWluUHJvZ3Jlc3MpIHtcbiAgICAgIHJldHVybiBgJHt0KFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfcmVhc3NpZ24uYXNzaWduZWRfdG9cIil9ICR7dXNlcn1gO1xuICAgIH1cblxuICAgIHJldHVybiBgJHt0KFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfcmVhc3NpZ24ucmVhc3NpZ25lZF90b1wiKX0gJHt1c2VyfWA7XG4gIH07XG5cbiAgY29uc3QgZ2V0SGVhZGVyTm90ZSA9ICgpID0+IHtcbiAgICBpZiAoIWluUHJvZ3Jlc3MpIHtcbiAgICAgIHJldHVybiBhbGxvd3NEZWxlZ2F0ZVxuICAgICAgICA/IHQoXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9yZWFzc2lnbi5jaG9vc2Vfb3B0aW9uXCIpXG4gICAgICAgIDogdChcInRpY2tldF9hc3NpZ24uaGVhZGVyX3JlYXNzaWduLmNob29zZV9vcHRpb25fbm9fZGVsZWdhdGVcIik7XG4gICAgfVxuXG4gICAgY29uc3QgdHJhbnNLZXkgPSBhc3NpZ25lZFRvWW91XG4gICAgICA/IFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfcmVhc3NpZ24uYW5zd2VyX3lvdXJfZXFcIlxuICAgICAgOiBcInRpY2tldF9hc3NpZ24uaGVhZGVyX3JlYXNzaWduLmFuc3dlcl9vdGhlcnNfZXFcIjtcblxuICAgIHJldHVybiAoXG4gICAgICA8PlxuICAgICAgICB7dCh0cmFuc0tleSl9XG4gICAgICAgIDxiciAvPlxuICAgICAgICB7LyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzeC1hMTF5L2FuY2hvci1pcy12YWxpZCAqL31cbiAgICAgICAgPExpbmtcbiAgICAgICAgICBjb21wb25lbnQ9XCJidXR0b25cIlxuICAgICAgICAgIHZhcmlhbnQ9XCJib2R5MVwiXG4gICAgICAgICAgb25DbGljaz17b25DbG9zZX1cbiAgICAgICAgICBzeD17eyBmb250V2VpZ2h0OiA3MDAsIG1hcmdpbjogXCIyMHB4IDAgMTBweFwiIH19XG4gICAgICAgID5cbiAgICAgICAgICB7dChcInRpY2tldF9hc3NpZ24uaGVhZGVyX3JlYXNzaWduLmNvbXBsZXRlX2xhdGVyXCIpfVxuICAgICAgICA8L0xpbms+XG4gICAgICA8Lz5cbiAgICApO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy53cmFwcGVyfT5cbiAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJoNVwiIGd1dHRlckJvdHRvbT5cbiAgICAgICAge2dldFNlY29uZGFyeVRpdGxlKCl9XG4gICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICA8VHlwb2dyYXBoeVxuICAgICAgICB2YXJpYW50PVwiYm9keTFcIlxuICAgICAgICBndXR0ZXJCb3R0b21cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuaGVhZGVyTm90ZX1cbiAgICAgICAgc3g9e3sgY29sb3I6IFwidGV4dC5zZWNvbmRhcnlcIiB9fVxuICAgICAgPlxuICAgICAgICB7Z2V0SGVhZGVyTm90ZSgpfVxuICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgIDwvQm94PlxuICApO1xufTtcblxuLy8gQWRkaW5nIHByb3AtdHlwZXMgZm9yIHR5cGUtY2hlY2tpbmdcblJlYXNzaWduSGVhZGVyLnByb3BUeXBlcyA9IHtcbiAgaW5Qcm9ncmVzczogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICB0aWNrZXQ6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgdXNlckVtYWlsOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWRcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJlYXNzaWduSGVhZGVyO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgVGV4dEZpZWxkLCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZUZvcm1payB9IGZyb20gXCJmb3JtaWtcIjtcbmltcG9ydCAqIGFzIHl1cCBmcm9tIFwieXVwXCI7XG5cbmltcG9ydCBGb3JtRm9vdGVyIGZyb20gXCIuLi8uLi8uLi9Gb3JtRm9vdGVyXCI7XG5cbmNvbnN0IFJlYXNzaWduRm9ybSA9ICh7IG9uU3VibWl0LCBvbkNsb3NlIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuXG4gIGNvbnN0IGZvcm1payA9IHVzZUZvcm1payh7XG4gICAgaW5pdGlhbFZhbHVlczoge1xuICAgICAgbmV3X2F0dGVuZGVlX2VtYWlsOiBcIlwiLFxuICAgICAgcGVyc29uYWxfbWVzc2FnZTogXCJcIlxuICAgIH0sXG4gICAgdmFsaWRhdGlvblNjaGVtYTogeXVwLm9iamVjdCh7XG4gICAgICBuZXdfYXR0ZW5kZWVfZW1haWw6IHl1cFxuICAgICAgICAuc3RyaW5nKHQoXCJ2YWxpZGF0aW9uLmVtYWlsLnN0cmluZ1wiKSlcbiAgICAgICAgLmVtYWlsKHQoXCJ2YWxpZGF0aW9uLmVtYWlsLmZvcm1hdFwiKSlcbiAgICAgICAgLnJlcXVpcmVkKHQoXCJ2YWxpZGF0aW9uLmVtYWlsLnJlcXVpcmVkXCIpKSxcbiAgICAgIHBlcnNvbmFsX21lc3NhZ2U6IHl1cC5zdHJpbmcodChcInZhbGlkYXRpb24udGV4dC5zdHJpbmdcIikpXG4gICAgfSksXG4gICAgb25TdWJtaXQ6ICh2YWx1ZXMsIHsgcmVzZXRGb3JtIH0pID0+IHtcbiAgICAgIG9uU3VibWl0KHZhbHVlcyk7XG4gICAgICByZXNldEZvcm0oKTtcbiAgICB9XG4gIH0pO1xuXG4gIGNvbnN0IGhhbmRsZUNhbmNlbCA9ICgpID0+IHtcbiAgICBmb3JtaWsucmVzZXRGb3JtKCk7XG4gICAgb25DbG9zZSgpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJoNlwiIGd1dHRlckJvdHRvbT5cbiAgICAgICAge3QoXCJ0aWNrZXRfYXNzaWduLnJlYXNzaWduX2Zvcm0udGl0bGVcIil9XG4gICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiYm9keTFcIiBndXR0ZXJCb3R0b20gc3g9e3sgY29sb3I6IFwidGV4dC5zZWNvbmRhcnlcIiB9fT5cbiAgICAgICAge3QoXCJ0aWNrZXRfYXNzaWduLnJlYXNzaWduX2Zvcm0uYm9keVwiKX1cbiAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgIDxmb3JtIG9uU3VibWl0PXtmb3JtaWsuaGFuZGxlU3VibWl0fSBub1ZhbGlkYXRlPlxuICAgICAgICA8VGV4dEZpZWxkXG4gICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgbmFtZT1cIm5ld19hdHRlbmRlZV9lbWFpbFwiXG4gICAgICAgICAgbGFiZWw9e3QoXCJ0aWNrZXRfYXNzaWduLnJlYXNzaWduX2Zvcm0ubmV3X2F0dGVuZGVlX2VtYWlsXCIpfVxuICAgICAgICAgIG1hcmdpbj1cIm5vcm1hbFwiXG4gICAgICAgICAgdmFsdWU9e2Zvcm1pay52YWx1ZXMubmV3X2F0dGVuZGVlX2VtYWlsfVxuICAgICAgICAgIG9uQ2hhbmdlPXtmb3JtaWsuaGFuZGxlQ2hhbmdlfVxuICAgICAgICAgIG9uQmx1cj17Zm9ybWlrLmhhbmRsZUJsdXJ9XG4gICAgICAgICAgZXJyb3I9e1xuICAgICAgICAgICAgZm9ybWlrLnRvdWNoZWQubmV3X2F0dGVuZGVlX2VtYWlsICYmXG4gICAgICAgICAgICBCb29sZWFuKGZvcm1pay5lcnJvcnMubmV3X2F0dGVuZGVlX2VtYWlsKVxuICAgICAgICAgIH1cbiAgICAgICAgICBoZWxwZXJUZXh0PXtcbiAgICAgICAgICAgIGZvcm1pay50b3VjaGVkLm5ld19hdHRlbmRlZV9lbWFpbCAmJlxuICAgICAgICAgICAgZm9ybWlrLmVycm9ycy5uZXdfYXR0ZW5kZWVfZW1haWxcbiAgICAgICAgICB9XG4gICAgICAgICAgcmVxdWlyZWRcbiAgICAgICAgLz5cbiAgICAgICAgPFRleHRGaWVsZFxuICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgIG5hbWU9XCJwZXJzb25hbF9tZXNzYWdlXCJcbiAgICAgICAgICBsYWJlbD17dChcInRpY2tldF9hc3NpZ24ucmVhc3NpZ25fZm9ybS5wZXJzb25hbF9tZXNzYWdlXCIpfVxuICAgICAgICAgIHZhbHVlPXtmb3JtaWsudmFsdWVzLnBlcnNvbmFsX21lc3NhZ2V9XG4gICAgICAgICAgbWFyZ2luPVwibm9ybWFsXCJcbiAgICAgICAgICBtdWx0aWxpbmVcbiAgICAgICAgICBtaW5Sb3dzPXs0fVxuICAgICAgICAgIG9uQ2hhbmdlPXtmb3JtaWsuaGFuZGxlQ2hhbmdlfVxuICAgICAgICAgIG9uQmx1cj17Zm9ybWlrLmhhbmRsZUJsdXJ9XG4gICAgICAgICAgZXJyb3I9e1xuICAgICAgICAgICAgZm9ybWlrLnRvdWNoZWQucGVyc29uYWxfbWVzc2FnZSAmJlxuICAgICAgICAgICAgQm9vbGVhbihmb3JtaWsuZXJyb3JzLnBlcnNvbmFsX21lc3NhZ2UpXG4gICAgICAgICAgfVxuICAgICAgICAgIGhlbHBlclRleHQ9e1xuICAgICAgICAgICAgZm9ybWlrLnRvdWNoZWQucGVyc29uYWxfbWVzc2FnZSAmJiBmb3JtaWsuZXJyb3JzLnBlcnNvbmFsX21lc3NhZ2VcbiAgICAgICAgICB9XG4gICAgICAgIC8+XG4gICAgICAgIDxGb3JtRm9vdGVyXG4gICAgICAgICAgc2F2ZUxhYmVsPXt0KFwidGlja2V0X2Fzc2lnbi5yZWFzc2lnbl9mb3JtLnNhdmVcIil9XG4gICAgICAgICAgY2FuY2VsTGFiZWw9e3QoXCJ0aWNrZXRfYXNzaWduLnJlYXNzaWduX2Zvcm0uY2FuY2VsXCIpfVxuICAgICAgICAgIG9uQ2xvc2U9e2hhbmRsZUNhbmNlbH1cbiAgICAgICAgICBkaXNhYmxlZD17Zm9ybWlrLmlzU3VibWl0dGluZ31cbiAgICAgICAgLz5cbiAgICAgIDwvZm9ybT5cbiAgICA8Lz5cbiAgKTtcbn07XG5cblJlYXNzaWduRm9ybS5wcm9wVHlwZXMgPSB7XG4gIG9uU3VibWl0OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkXG59O1xuXG5leHBvcnQgZGVmYXVsdCBSZWFzc2lnbkZvcm07XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoLCB1c2VTZWxlY3RvciB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQm94LCBCdXR0b24sIENvbGxhcHNlLCBEaXZpZGVyIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7XG4gIGFzc2lnbkF0dGVuZGVlLFxuICBkZWxlZ2F0ZVRpY2tldCxcbiAgcmVhc3NpZ25UaWNrZXQsXG4gIHNhdmVFeHRyYVF1ZXN0aW9uc1xufSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuaW1wb3J0IFJlYXNzaWduRm9ybSBmcm9tIFwiLi9jb21wb25lbnRzL1JlYXNzaWduRm9ybVwiO1xuaW1wb3J0IFJpZ2h0RHJhd2VyIGZyb20gXCIuLi9SaWdodERyYXdlclwiO1xuaW1wb3J0IEFzc2lnbkVRRm9ybSBmcm9tIFwiLi4vQXNzaWduRVFGb3JtXCI7XG5pbXBvcnQgeyB0cmFuc2Zvcm1BbndlcnNGb3JtYXQgfSBmcm9tIFwiLi4vRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy91dGlsc1wiO1xuaW1wb3J0IEN1c3RvbURpYWxvZyBmcm9tIFwiLi4vQ3VzdG9tRGlhbG9nXCI7XG5pbXBvcnQgdXNlR2V0VGlja2V0IGZyb20gXCIuLi8uLi9ob29rcy91c2VHZXRUaWNrZXRcIjtcbmltcG9ydCB7IE1JTExJU0VDX1RPX1NFQyB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCBEZWxlZ2F0ZUZvcm0gZnJvbSBcIi4vY29tcG9uZW50cy9EZWxlZ2F0ZUZvcm1cIjtcbmltcG9ydCBBc3NpZ25IZWFkZXIgZnJvbSBcIi4vY29tcG9uZW50cy9IZWFkZXIvQXNzaWduSGVhZGVyXCI7XG5pbXBvcnQgUmVhc3NpZ25IZWFkZXIgZnJvbSBcIi4vY29tcG9uZW50cy9IZWFkZXIvUmVhc3NpZ25IZWFkZXJcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB7IHVzZVRpY2tldERldGFpbHMgfSBmcm9tIFwiLi4vLi4vaG9va3MvdXNlVGlja2V0RGV0YWlsc1wiO1xuXG5jb25zdCBUaWNrZXRBc3NpZ24gPSAoeyB0aWNrZXRJZCwgb3JkZXJJZCwgb3duZXJJZCwgb3Blbiwgb25DbG9zZSB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCBbc2F2ZU1lc3NhZ2UsIHNldFNhdmVNZXNzYWdlXSA9IHVzZVN0YXRlKG51bGwpO1xuICBjb25zdCBbYXNzaWduT3B0aW9uLCBzZXRBc3NpZ25PcHRpb25dID0gdXNlU3RhdGUobnVsbCk7XG4gIGNvbnN0IFthc3NpZ25hdGlvbkluUHJvZ3Jlc3MsIHNldEFzc2lnbmF0aW9uSW5Qcm9ncmVzc10gPSB1c2VTdGF0ZShcIlwiKTtcbiAgY29uc3Qge1xuICAgIHN1bW1pdCxcbiAgICB1c2VyOiB7IHVzZXJQcm9maWxlIH1cbiAgfSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUpO1xuICBjb25zdCB7IHRpY2tldCwgZXh0cmFRdWVzdGlvbnMgfSA9IHVzZUdldFRpY2tldChcbiAgICB0aWNrZXRJZCxcbiAgICBvcmRlcklkLFxuICAgIG93bmVySWQsXG4gICAgb3BlblxuICApO1xuICBjb25zdCBpc0Fzc2lnbmVkVG9NZSA9IHVzZXJQcm9maWxlPy5lbWFpbCA9PT0gdGlja2V0Py5vd25lcj8uZW1haWw7XG4gIGNvbnN0IHsgYWxsb3dzRGVsZWdhdGUgfSA9IHVzZVRpY2tldERldGFpbHModGlja2V0KTtcblxuICBjb25zdCBvbkFzc2lnbiA9IChlbWFpbCwgbWVzc2FnZSA9IFwiXCIpID0+IHtcbiAgICBpZiAob3duZXJJZCkge1xuICAgICAgZGlzcGF0Y2gocmVhc3NpZ25UaWNrZXQob3JkZXJJZCwgdGlja2V0SWQsIGVtYWlsLCBtZXNzYWdlKSkudGhlbigoKSA9PiB7XG4gICAgICAgIHNldEFzc2lnbmF0aW9uSW5Qcm9ncmVzcyhgJHthc3NpZ25PcHRpb259YCk7XG4gICAgICAgIHNldEFzc2lnbk9wdGlvbihudWxsKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBkaXNwYXRjaChhc3NpZ25BdHRlbmRlZShvcmRlcklkLCB0aWNrZXRJZCwgZW1haWwpKS50aGVuKCgpID0+IHtcbiAgICAgICAgc2V0QXNzaWduYXRpb25JblByb2dyZXNzKGAke2Fzc2lnbk9wdGlvbn1gKTtcbiAgICAgICAgc2V0QXNzaWduT3B0aW9uKG51bGwpO1xuICAgICAgfSk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IG9uRGVsZWdhdGUgPSAoZmlyc3ROYW1lLCBsYXN0TmFtZSwgZW1haWwpID0+IHtcbiAgICBkaXNwYXRjaChcbiAgICAgIGRlbGVnYXRlVGlja2V0KG9yZGVySWQsIHRpY2tldElkLCBmaXJzdE5hbWUsIGxhc3ROYW1lLCBlbWFpbClcbiAgICApLnRoZW4oKCkgPT4ge1xuICAgICAgc2V0QXNzaWduYXRpb25JblByb2dyZXNzKGAke2Fzc2lnbk9wdGlvbn1gKTtcbiAgICAgIHNldEFzc2lnbk9wdGlvbihudWxsKTtcbiAgICB9KTtcbiAgfTtcblxuICBjb25zdCBvbkNsb3NlRVFGb3JtID0gKCkgPT4ge1xuICAgIHNldEFzc2lnbmF0aW9uSW5Qcm9ncmVzcyhcIlwiKTtcbiAgICBvbkNsb3NlKCk7XG4gIH07XG5cbiAgY29uc3Qgb25DbG9zZVNhdmVNZXNzYWdlID0gKCkgPT4ge1xuICAgIHNldFNhdmVNZXNzYWdlKG51bGwpO1xuICAgIHNldEFzc2lnbmF0aW9uSW5Qcm9ncmVzcyhcIlwiKTtcbiAgICBzZXRUaW1lb3V0KG9uQ2xvc2UsIE1JTExJU0VDX1RPX1NFQyk7XG4gIH07XG5cbiAgY29uc3Qgb25TYXZlRVEgPSAodmFsKSA9PiB7XG4gICAgY29uc3QgYW5zd2VycyA9IHRyYW5zZm9ybUFud2Vyc0Zvcm1hdCh2YWwpO1xuXG4gICAgcmV0dXJuIGRpc3BhdGNoKHNhdmVFeHRyYVF1ZXN0aW9ucyh0aWNrZXQsIGFuc3dlcnMpKVxuICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICBzZXRTYXZlTWVzc2FnZSh7XG4gICAgICAgICAgdGl0bGU6IHQoXCJ0aWNrZXRfYXNzaWduLnNhdmluZ19zdWNjZXNzXCIpLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiB0KFwidGlja2V0X2Fzc2lnbi5zYXZpbmdfc3VjY2Vzc19kZXNjcmlwdGlvblwiKVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZXJyKSA9PiB7XG4gICAgICAgIHNldFNhdmVNZXNzYWdlKHtcbiAgICAgICAgICB0aXRsZTogdChcInRpY2tldF9hc3NpZ24uc2F2aW5nX2Vycm9yXCIpLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiBlcnIudG9TdHJpbmcoKVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7XG4gICAgICB9KTtcbiAgfTtcblxuICBjb25zdCB0aXRsZSA9IG93bmVySWRcbiAgICA/IHQoXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9yZWFzc2lnbi50aXRsZVwiKVxuICAgIDogdChcInRpY2tldF9hc3NpZ24uaGVhZGVyX2Fzc2lnbi50aXRsZVwiKTtcbiAgY29uc3QgSGVhZGVyID0gb3duZXJJZCA/IFJlYXNzaWduSGVhZGVyIDogQXNzaWduSGVhZGVyO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxSaWdodERyYXdlclxuICAgICAgICBpZD1cInJlYXNzaWduRHJhd2VyXCJcbiAgICAgICAgdGl0bGU9e3RpdGxlfVxuICAgICAgICBvcGVuPXtvcGVufVxuICAgICAgICBvbkNsb3NlPXtvbkNsb3NlRVFGb3JtfVxuICAgICAgPlxuICAgICAgICB7dGlja2V0ICYmIGV4dHJhUXVlc3Rpb25zICYmIChcbiAgICAgICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldFJlYXNzaWduQ29udGFpbmVyfT5cbiAgICAgICAgICAgIDxIZWFkZXJcbiAgICAgICAgICAgICAgaW5Qcm9ncmVzcz17YXNzaWduYXRpb25JblByb2dyZXNzfVxuICAgICAgICAgICAgICBhbGxvd3NEZWxlZ2F0ZT17YWxsb3dzRGVsZWdhdGV9XG4gICAgICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgICAgICB1c2VyRW1haWw9e3VzZXJQcm9maWxlLmVtYWlsfVxuICAgICAgICAgICAgICBvbkNsb3NlPXtvbkNsb3NlRVFGb3JtfVxuICAgICAgICAgICAgLz5cblxuICAgICAgICAgICAge2Fzc2lnbmF0aW9uSW5Qcm9ncmVzcyA/IChcbiAgICAgICAgICAgICAgPEFzc2lnbkVRRm9ybVxuICAgICAgICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgICAgICAgIGV4dHJhUXVlc3Rpb25zPXtleHRyYVF1ZXN0aW9uc31cbiAgICAgICAgICAgICAgICBvblN1Ym1pdD17b25TYXZlRVF9XG4gICAgICAgICAgICAgICAgb25DbG9zZT17b25DbG9zZUVRRm9ybX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuYXNzaWduT3B0aW9uc1dyYXBwZXJ9PlxuICAgICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJjb250YWluZWRcIlxuICAgICAgICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgICAgICAgICBkaXNhYmxlZD17aXNBc3NpZ25lZFRvTWV9XG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBvbkFzc2lnbih1c2VyUHJvZmlsZS5lbWFpbCwgXCJcIil9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfYXNzaWduLmFzc2lnbl90b19tZVwiKX1cbiAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgICA8RGl2aWRlciB2YXJpYW50PVwibWlkZGxlXCIgc3g9e3sgbXk6IDMsIHB4OiA0IH19PlxuICAgICAgICAgICAgICAgICAgb3JcbiAgICAgICAgICAgICAgICA8L0RpdmlkZXI+XG4gICAgICAgICAgICAgICAgPEJveD5cbiAgICAgICAgICAgICAgICAgIDxDb2xsYXBzZSBpbj17YXNzaWduT3B0aW9uID09PSBcIm90aGVyXCJ9IHRpbWVvdXQ9ezUwMH0+XG4gICAgICAgICAgICAgICAgICAgIDxSZWFzc2lnbkZvcm1cbiAgICAgICAgICAgICAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICAgICAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICAgICAgICAgICAgICBvblN1Ym1pdD17KHZhbCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQXNzaWduKHZhbC5uZXdfYXR0ZW5kZWVfZW1haWwsIHZhbC5wZXJzb25hbF9tZXNzYWdlKVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNsb3NlPXsoKSA9PiBzZXRBc3NpZ25PcHRpb24obnVsbCl9XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICA8L0NvbGxhcHNlPlxuICAgICAgICAgICAgICAgICAge2Fzc2lnbk9wdGlvbiAhPT0gXCJvdGhlclwiICYmIChcbiAgICAgICAgICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJjb250YWluZWRcIlxuICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRBc3NpZ25PcHRpb24oXCJvdGhlclwiKX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIHt0KFwidGlja2V0X2Fzc2lnbi5hc3NpZ25fdG9fb3RoZXJcIil9XG4gICAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgICAgICB7YWxsb3dzRGVsZWdhdGUgJiYgKFxuICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgPERpdmlkZXIgdmFyaWFudD1cIm1pZGRsZVwiIHN4PXt7IG15OiAzLCBweDogNCB9fT5cbiAgICAgICAgICAgICAgICAgICAgICBvclxuICAgICAgICAgICAgICAgICAgICA8L0RpdmlkZXI+XG4gICAgICAgICAgICAgICAgICAgIDxDb2xsYXBzZSBpbj17YXNzaWduT3B0aW9uID09PSBcIm1hbmFnZVwifSB0aW1lb3V0PXs1MDB9PlxuICAgICAgICAgICAgICAgICAgICAgIDxEZWxlZ2F0ZUZvcm1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgICAgICAgICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgICAgICAgICAgICAgICBvblN1Ym1pdD17KHZhbCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgb25EZWxlZ2F0ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwuZGVsZWdhdGVfZmlyc3RfbmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwuZGVsZWdhdGVfbGFzdF9uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbC5kZWxlZ2F0ZV9lbWFpbFxuICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsb3NlPXsoKSA9PiBzZXRBc3NpZ25PcHRpb24obnVsbCl9XG4gICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9Db2xsYXBzZT5cbiAgICAgICAgICAgICAgICAgICAge2Fzc2lnbk9wdGlvbiAhPT0gXCJtYW5hZ2VcIiAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cImNvbnRhaW5lZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldEFzc2lnbk9wdGlvbihcIm1hbmFnZVwiKX1cbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICB7dChcInRpY2tldF9hc3NpZ24ubWFuYWdlX3RpY2tldFwiKX1cbiAgICAgICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L0JveD5cbiAgICAgICAgKX1cbiAgICAgIDwvUmlnaHREcmF3ZXI+XG4gICAgICA8Q3VzdG9tRGlhbG9nXG4gICAgICAgIG9wZW49eyEhc2F2ZU1lc3NhZ2V9XG4gICAgICAgIG9uQ2xvc2U9e29uQ2xvc2VTYXZlTWVzc2FnZX1cbiAgICAgICAgdGl0bGU9e3NhdmVNZXNzYWdlPy50aXRsZX1cbiAgICAgICAgZGVzY3JpcHRpb249e3NhdmVNZXNzYWdlPy5kZXNjcmlwdGlvbn1cbiAgICAgIC8+XG4gICAgPC8+XG4gICk7XG59O1xuXG5UaWNrZXRBc3NpZ24ucHJvcFR5cGVzID0ge1xuICB0aWNrZXRJZDogUHJvcFR5cGVzLm51bWJlcixcbiAgb3JkZXJJZDogUHJvcFR5cGVzLm51bWJlcixcbiAgb3duZXJJZDogUHJvcFR5cGVzLm51bWJlcixcbiAgb3BlbjogUHJvcFR5cGVzLmJvb2wsXG4gIG9uQ2xvc2U6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBUaWNrZXRBc3NpZ247XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBUZXh0RmllbGQsIEF1dG9jb21wbGV0ZSwgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBxdWVyeVJlZ2lzdHJhdGlvbkNvbXBhbmllcyB9IGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL3F1ZXJ5LWFjdGlvbnNcIjtcbmltcG9ydCB7IFRJQ0tFVF9BVFRFTkRFRV9LRVlTIH0gZnJvbSBcIi4uLy4uL2NvbnN0YW50c1wiO1xuXG5jb25zdCBDb21wYW55RmllbGQgPSAoeyBmb3JtaWssIHN1bW1pdElkLCBpc1JlcXVpcmVkIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBbaW5wdXRWYWx1ZSwgc2V0SW5wdXRWYWx1ZV0gPSBSZWFjdC51c2VTdGF0ZShcIlwiKTtcbiAgY29uc3QgW29wdGlvbnMsIHNldE9wdGlvbnNdID0gUmVhY3QudXNlU3RhdGUoW10pO1xuICBjb25zdCB7XG4gICAgZXJyb3JzLFxuICAgIHZhbHVlcyxcbiAgICB0b3VjaGVkLFxuICAgIHNldEZpZWxkVG91Y2hlZCxcbiAgICBzZXRGaWVsZFZhbHVlLFxuICAgIGluaXRpYWxWYWx1ZXNcbiAgfSA9IGZvcm1paztcbiAgY29uc3QgbmFtZSA9IFRJQ0tFVF9BVFRFTkRFRV9LRVlTLmNvbXBhbnk7XG4gIGNvbnN0IHZhbHVlID0gdmFsdWVzW25hbWVdO1xuICBjb25zdCBkaXNhYmxlZCA9ICEhaW5pdGlhbFZhbHVlc1tuYW1lXTtcbiAgY29uc3QgZXJyb3IgPSB0b3VjaGVkW25hbWVdICYmIEJvb2xlYW4oZXJyb3JzW25hbWVdKTtcbiAgY29uc3QgaGVscGVyVGV4dCA9IHRvdWNoZWRbbmFtZV0gJiYgZXJyb3JzW25hbWVdO1xuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGlucHV0VmFsdWUgPT09IFwiXCIpIHtcbiAgICAgIHNldE9wdGlvbnModmFsdWUgPyBbdmFsdWVdIDogW10pO1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBxdWVyeVJlZ2lzdHJhdGlvbkNvbXBhbmllcyhzdW1taXRJZCwgaW5wdXRWYWx1ZSwgKHJlc3VsdHMpID0+IHtcbiAgICAgIGxldCBuZXdPcHRpb25zID0gW107XG5cbiAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICBuZXdPcHRpb25zID0gW3ZhbHVlXTtcbiAgICAgIH1cblxuICAgICAgaWYgKHJlc3VsdHMpIHtcbiAgICAgICAgbmV3T3B0aW9ucyA9IFsuLi5uZXdPcHRpb25zLCAuLi5yZXN1bHRzXTtcbiAgICAgIH1cblxuICAgICAgc2V0T3B0aW9ucyhuZXdPcHRpb25zKTtcbiAgICB9KTtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9LCBbdmFsdWUsIGlucHV0VmFsdWVdKTtcblxuICByZXR1cm4gKFxuICAgIDxBdXRvY29tcGxldGVcbiAgICAgIG5hbWU9e25hbWV9XG4gICAgICBvcHRpb25zPXtvcHRpb25zfVxuICAgICAgYXV0b0NvbXBsZXRlXG4gICAgICBmcmVlU29sb1xuICAgICAgaW5jbHVkZUlucHV0SW5MaXN0XG4gICAgICBmaWx0ZXJTZWxlY3RlZE9wdGlvbnNcbiAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgIG9uQmx1cj17KCkgPT4gc2V0RmllbGRUb3VjaGVkKG5hbWUsIHRydWUsIHRydWUpfVxuICAgICAgZ2V0T3B0aW9uTGFiZWw9eyhvcHRpb24pID0+IHtcbiAgICAgICAgLy8gVmFsdWUgc2VsZWN0ZWQgd2l0aCBlbnRlciwgcmlnaHQgZnJvbSB0aGUgaW5wdXRcbiAgICAgICAgaWYgKHR5cGVvZiBvcHRpb24gPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICByZXR1cm4gb3B0aW9uO1xuICAgICAgICB9XG4gICAgICAgIC8vIEFkZCBcInh4eFwiIG9wdGlvbiBjcmVhdGVkIGR5bmFtaWNhbGx5XG4gICAgICAgIGlmIChvcHRpb24uaW5wdXRWYWx1ZSkge1xuICAgICAgICAgIHJldHVybiBvcHRpb24uaW5wdXRWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgICAvLyBSZWd1bGFyIG9wdGlvblxuICAgICAgICByZXR1cm4gb3B0aW9uLm5hbWU7XG4gICAgICB9fVxuICAgICAgb25DaGFuZ2U9eyhldmVudCwgbmV3VmFsdWUpID0+IHtcbiAgICAgICAgY29uc3QgdG1wVmFsdWUgPSBuZXdWYWx1ZT8uaW5wdXRWYWx1ZSB8fCBuZXdWYWx1ZTtcbiAgICAgICAgc2V0T3B0aW9ucyh0bXBWYWx1ZSA/IFt0bXBWYWx1ZSwgLi4ub3B0aW9uc10gOiBvcHRpb25zKTtcbiAgICAgICAgc2V0RmllbGRWYWx1ZShuYW1lLCB0bXBWYWx1ZSk7XG4gICAgICB9fVxuICAgICAgb25JbnB1dENoYW5nZT17KGV2ZW50LCBuZXdJbnB1dFZhbHVlKSA9PiB7XG4gICAgICAgIHNldElucHV0VmFsdWUobmV3SW5wdXRWYWx1ZSk7XG4gICAgICB9fVxuICAgICAgZmlsdGVyT3B0aW9ucz17KG9wdGlvbnMsIHBhcmFtcykgPT4ge1xuICAgICAgICBjb25zdCB7IGlucHV0VmFsdWUgfSA9IHBhcmFtcztcbiAgICAgICAgY29uc3QgZmlsdGVyZWQgPSBbLi4ub3B0aW9uc107XG4gICAgICAgIC8vIFN1Z2dlc3QgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHZhbHVlXG4gICAgICAgIGNvbnN0IGlzRXhpc3RpbmcgPSBvcHRpb25zLnNvbWUoXG4gICAgICAgICAgKG9wdGlvbikgPT4gaW5wdXRWYWx1ZSA9PT0gb3B0aW9uLnRpdGxlXG4gICAgICAgICk7XG4gICAgICAgIGlmIChpbnB1dFZhbHVlICE9PSBcIlwiICYmICFpc0V4aXN0aW5nKSB7XG4gICAgICAgICAgZmlsdGVyZWQucHVzaCh7XG4gICAgICAgICAgICBpbnB1dFZhbHVlLFxuICAgICAgICAgICAgbmFtZTogYFNlbGVjdCBcIiR7aW5wdXRWYWx1ZX1cImBcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmaWx0ZXJlZDtcbiAgICAgIH19XG4gICAgICByZW5kZXJJbnB1dD17KHBhcmFtcykgPT4gKFxuICAgICAgICA8VGV4dEZpZWxkXG4gICAgICAgICAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmcgKi9cbiAgICAgICAgICB7Li4ucGFyYW1zfVxuICAgICAgICAgIGxhYmVsPXt0KFwidGlja2V0X2RldGFpbC5hdHRlbmRlZV9jb21wYW55XCIpfVxuICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgIHJlcXVpcmVkPXtpc1JlcXVpcmVkfVxuICAgICAgICAgIGhlbHBlclRleHQ9e2hlbHBlclRleHR9XG4gICAgICAgICAgZXJyb3I9e2Vycm9yfVxuICAgICAgICAgIG1hcmdpbj1cIm5vcm1hbFwiXG4gICAgICAgIC8+XG4gICAgICApfVxuICAgICAgcmVuZGVyT3B0aW9uPXsocHJvcHMsIG9wdGlvbikgPT4ge1xuICAgICAgICBjb25zdCB7IGtleSwgLi4ub3B0aW9uUHJvcHMgfSA9IHByb3BzO1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nXG4gICAgICAgICAgPGxpIGtleT17a2V5fSB7Li4ub3B0aW9uUHJvcHN9PlxuICAgICAgICAgICAgPFR5cG9ncmFwaHlcbiAgICAgICAgICAgICAgdmFyaWFudD1cImJvZHkyXCJcbiAgICAgICAgICAgICAgc3g9e3sgZm9udFNpemU6IFwiMWVtXCIsIGNvbG9yOiBcInRleHQuc2Vjb25kYXJ5XCIgfX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge29wdGlvbi5uYW1lfVxuICAgICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgICAgIDwvbGk+XG4gICAgICAgICk7XG4gICAgICB9fVxuICAgIC8+XG4gICk7XG59O1xuXG5Db21wYW55RmllbGQucHJvcFR5cGVzID0ge1xuICBmb3JtaWs6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgc3VtbWl0SWQ6IFByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZFxufTtcblxuZXhwb3J0IGRlZmF1bHQgQ29tcGFueUZpZWxkO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHtcbiAgQm94LFxuICBDaGVja2JveCxcbiAgRm9ybUNvbnRyb2wsXG4gIEZvcm1Db250cm9sTGFiZWwsXG4gIEZvcm1IZWxwZXJUZXh0XG59IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgUmF3SFRNTCBmcm9tIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9jb21wb25lbnRzL3Jhdy1odG1sXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBUSUNLRVRfQVRURU5ERUVfS0VZUyB9IGZyb20gXCIuLi8uLi9jb25zdGFudHNcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBSZWdpc3RyYXRpb25EaXNjbGFpbWVyID0gKHtcbiAgZGlzY2xhaW1lcixcbiAgZm9ybWlrLFxuICBpc0Rpc2FibGVkID0gZmFsc2UsXG4gIGlzUmVxdWlyZWQgPSB0cnVlXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgbmFtZSA9IFRJQ0tFVF9BVFRFTkRFRV9LRVlTLmRpc2NsYWltZXJBY2NlcHRlZDtcbiAgY29uc3QgeyBlcnJvcnMsIHZhbHVlcywgdG91Y2hlZCwgaGFuZGxlQ2hhbmdlLCBoYW5kbGVCbHVyIH0gPSBmb3JtaWs7XG4gIGNvbnN0IHZhbHVlID0gdmFsdWVzW25hbWVdO1xuICBjb25zdCBlcnJvciA9IHRvdWNoZWRbbmFtZV0gJiYgQm9vbGVhbihlcnJvcnNbbmFtZV0pO1xuICBjb25zdCBoZWxwZXJUZXh0ID0gdG91Y2hlZFtuYW1lXSAmJiBlcnJvcnNbbmFtZV07XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLndyYXBwZXJ9PlxuICAgICAgPFJhd0hUTUw+e2Rpc2NsYWltZXJ9PC9SYXdIVE1MPlxuICAgICAgPEZvcm1Db250cm9sIGZ1bGxXaWR0aCBlcnJvcj17ZXJyb3J9PlxuICAgICAgICA8Rm9ybUNvbnRyb2xMYWJlbFxuICAgICAgICAgIGNvbnRyb2w9e1xuICAgICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICAgIG5hbWU9e25hbWV9XG4gICAgICAgICAgICAgIGNoZWNrZWQ9eyEhdmFsdWV9XG4gICAgICAgICAgICAgIGxhYmVsPXt0KFwidGlja2V0X2Fzc2lnbi5leHRyYV9xdWVzdGlvbnNfZm9ybS5kaXNjbGFpbWVyX2xhYmVsXCIpfVxuICAgICAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlQ2hhbmdlfVxuICAgICAgICAgICAgICBvbkJsdXI9e2hhbmRsZUJsdXJ9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIH1cbiAgICAgICAgICBsYWJlbD17dChcInRpY2tldF9hc3NpZ24uZXh0cmFfcXVlc3Rpb25zX2Zvcm0uZGlzY2xhaW1lcl9sYWJlbFwiKX1cbiAgICAgICAgICBkaXNhYmxlZD17aXNEaXNhYmxlZH1cbiAgICAgICAgICByZXF1aXJlZD17aXNSZXF1aXJlZH1cbiAgICAgICAgLz5cbiAgICAgICAge2Vycm9yICYmIDxGb3JtSGVscGVyVGV4dD57aGVscGVyVGV4dCA/PyBcIiBcIn08L0Zvcm1IZWxwZXJUZXh0Pn1cbiAgICAgIDwvRm9ybUNvbnRyb2w+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5SZWdpc3RyYXRpb25EaXNjbGFpbWVyLnByb3BUeXBlcyA9IHtcbiAgZGlzY2xhaW1lcjogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICBmb3JtaWs6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgaXNEaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gIGlzUmVxdWlyZWQ6IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBSZWdpc3RyYXRpb25EaXNjbGFpbWVyO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQm94LCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZUZvcm1payB9IGZyb20gXCJmb3JtaWtcIjtcbmltcG9ydCBFeHRyYVF1ZXN0aW9uc0ZpZWxkcyBmcm9tIFwiLi4vLi4vLi4vRXh0cmFRdWVzdGlvbnNGaWVsZHNcIjtcblxuaW1wb3J0IHtcbiAgZ2V0VHlwZVZhbHVlLFxuICB0b1NsdWdcbn0gZnJvbSBcIi4uLy4uLy4uL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvdXRpbHNcIjtcblxuaW1wb3J0IFRpY2tldE93bmVyRmllbGRzIGZyb20gXCIuLi9UaWNrZXRPd25lckZpZWxkc1wiO1xuaW1wb3J0IFJlZ2lzdHJhdGlvbkRpc2NsYWltZXIgZnJvbSBcIi4uL1JlZ2lzdHJhdGlvbkRpc2NsYWltZXIvUmVnaXN0cmF0aW9uRGlzY2xhaW1lclwiO1xuaW1wb3J0IEZvcm1Gb290ZXIgZnJvbSBcIi4uLy4uLy4uL0Zvcm1Gb290ZXJcIjtcbmltcG9ydCB1c2VTY3JvbGxUb0Vycm9yIGZyb20gXCIuLi8uLi8uLi8uLi9ob29rcy91c2VTY3JvbGxUb0Vycm9yXCI7XG5pbXBvcnQge1xuICBwYXJzZUFuc3dlcnMsXG4gIGJ1aWxkVmFsaWRhdGlvblNjaGVtYVxufSBmcm9tIFwiLi4vLi4vLi4vLi4vdXRpbHMvdGlja2V0VXRpbHNcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuLi8uLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgVGlja2V0Rm9ybSA9ICh7XG4gIHRpY2tldCxcbiAgZXh0cmFRdWVzdGlvbnMsXG4gIHN1bW1pdCxcbiAgY2FuRWRpdCxcbiAgb25TdWJtaXQsXG4gIG9uQ2xvc2Vcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBhbnN3ZXJzID0gdGlja2V0Py5vd25lcj8uZXh0cmFfcXVlc3Rpb25zLnJlZHVjZSgocmVzLCBhbnMpID0+IHtcbiAgICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcoYW5zLnF1ZXN0aW9uLm5hbWUsIGFucy5xdWVzdGlvbi5pZCk7XG4gICAgcmVzW3F1ZXN0aW9uU2x1Z10gPSBnZXRUeXBlVmFsdWUoYW5zLnZhbHVlLCBhbnMucXVlc3Rpb24udHlwZSk7XG4gICAgcmV0dXJuIHJlcztcbiAgfSwge30pO1xuXG4gIGNvbnN0IGZvcm1payA9IHVzZUZvcm1payh7XG4gICAgaW5pdGlhbFZhbHVlczogcGFyc2VBbnN3ZXJzKFxuICAgICAgdGlja2V0Lm93bmVyLFxuICAgICAgZXh0cmFRdWVzdGlvbnMsXG4gICAgICBhbnN3ZXJzLFxuICAgICAgdHJ1ZSxcbiAgICAgIHRydWVcbiAgICApLFxuICAgIHZhbGlkYXRpb25TY2hlbWE6IGJ1aWxkVmFsaWRhdGlvblNjaGVtYShcbiAgICAgIGV4dHJhUXVlc3Rpb25zLFxuICAgICAgdHJ1ZSxcbiAgICAgIHN1bW1pdC5yZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9tYW5kYXRvcnlcbiAgICApLFxuICAgIG9uU3VibWl0OiAodmFsdWVzKSA9PiB7XG4gICAgICBjb25zdCByZWxldmFudEFuc3dlcnMgPSBwYXJzZUFuc3dlcnMoXG4gICAgICAgIHRpY2tldC5vd25lcixcbiAgICAgICAgZXh0cmFRdWVzdGlvbnMsXG4gICAgICAgIHZhbHVlcyxcbiAgICAgICAgdHJ1ZSxcbiAgICAgICAgdHJ1ZSxcbiAgICAgICAgdHJ1ZVxuICAgICAgKTtcblxuICAgICAgcmV0dXJuIG9uU3VibWl0KHJlbGV2YW50QW5zd2Vycyk7XG4gICAgfSxcbiAgICBlbmFibGVSZWluaXRpYWxpemU6IHRydWVcbiAgfSk7XG5cbiAgLy8gY29uc29sZS5sb2coXCJTVU1NSVQ6IFwiLCBzdW1taXQpO1xuICAvLyBjb25zb2xlLmxvZyhcIlRJQ0tFVDogXCIsIHRpY2tldCk7XG4gIC8vIGNvbnNvbGUubG9nKFwiUVVFU1RJVU9OczogXCIsIGV4dHJhUXVlc3Rpb25zKTtcbiAgLy8gY29uc29sZS5sb2coXCJBTlNXRVJTOiBcIiwgYW5zd2Vycyk7XG4gIC8vIGNvbnNvbGUubG9nKFwiRVJST1JzOiBcIiwgZm9ybWlrLmVycm9ycyk7XG4gIC8vIGNvbnNvbGUubG9nKFwiVkFMVUVTOiBcIiwgZm9ybWlrLnZhbHVlcyk7XG4gIC8vIGNvbnNvbGUubG9nKFwiSU5JVElBTDogXCIsIGZvcm1pay5pbml0aWFsVmFsdWVzKTtcbiAgLy8gY29uc29sZS5sb2coXCJUT1VDSEVEOiBcIiwgZm9ybWlrLnRvdWNoZWQpO1xuXG4gIC8vIFNDUk9MTCBUTyBFUlJPUlxuICB1c2VTY3JvbGxUb0Vycm9yKGZvcm1paywgXCJkZXRhaWxzRHJhd2VyXCIpO1xuXG4gIHJldHVybiAoXG4gICAgPGZvcm0gb25TdWJtaXQ9e2Zvcm1pay5oYW5kbGVTdWJtaXR9IG5vVmFsaWRhdGU+XG4gICAgICA8VGlja2V0T3duZXJGaWVsZHNcbiAgICAgICAgZm9ybWlrPXtmb3JtaWt9XG4gICAgICAgIGlzRGVsZWdhdGVkPXshIXRpY2tldC5vd25lcj8ubWFuYWdlcl9pZH1cbiAgICAgICAgc3VtbWl0SWQ9e3N1bW1pdC5pZH1cbiAgICAgICAgZGlzYWJsZWQ9eyFjYW5FZGl0fVxuICAgICAgLz5cblxuICAgICAge2V4dHJhUXVlc3Rpb25zPy5sZW5ndGggPiAwICYmIChcbiAgICAgICAgPEJveD5cbiAgICAgICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiYm9keTJcIiBjbGFzc05hbWU9e3N0eWxlcy5hZGRpdGlvbmFsRGV0YWlsc30+XG4gICAgICAgICAgICB7dChcInRpY2tldF9kZXRhaWwuYWRpdGlvbmFsX2RldGFpbHNcIil9XG4gICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgICAgIDxFeHRyYVF1ZXN0aW9uc0ZpZWxkc1xuICAgICAgICAgICAgZXh0cmFRdWVzdGlvbnM9e2V4dHJhUXVlc3Rpb25zfVxuICAgICAgICAgICAgYWxsb3dFZGl0PXtjYW5FZGl0fVxuICAgICAgICAgICAgZm9ybWlrPXtmb3JtaWt9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9Cb3g+XG4gICAgICApfVxuXG4gICAgICB7c3VtbWl0LnJlZ2lzdHJhdGlvbl9kaXNjbGFpbWVyX2NvbnRlbnQgJiYgKFxuICAgICAgICA8UmVnaXN0cmF0aW9uRGlzY2xhaW1lclxuICAgICAgICAgIGZvcm1paz17Zm9ybWlrfVxuICAgICAgICAgIGRpc2NsYWltZXI9e3N1bW1pdC5yZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9jb250ZW50fVxuICAgICAgICAgIGlzUmVxdWlyZWQ9e3N1bW1pdC5yZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9tYW5kYXRvcnl9XG4gICAgICAgICAgaXNEaXNhYmxlZD17IWNhbkVkaXR9XG4gICAgICAgIC8+XG4gICAgICApfVxuICAgICAgPEZvcm1Gb290ZXJcbiAgICAgICAgc2F2ZUxhYmVsPXt0KFwidGlja2V0X2RldGFpbC5zYXZlXCIpfVxuICAgICAgICBjYW5jZWxMYWJlbD17dChcInRpY2tldF9kZXRhaWwuY2FuY2VsXCIpfVxuICAgICAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgICAgICBkaXNhYmxlZD17Zm9ybWlrLmlzU3VibWl0dGluZ31cbiAgICAgIC8+XG4gICAgPC9mb3JtPlxuICApO1xufTtcblxuVGlja2V0Rm9ybS5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldDogUHJvcFR5cGVzLm9iamVjdCxcbiAgZXh0cmFRdWVzdGlvbnM6IFByb3BUeXBlcy5hcnJheS5pc1JlcXVpcmVkLFxuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgY2FuRWRpdDogUHJvcFR5cGVzLmJvb2wsXG4gIG9uU3VibWl0OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkXG59O1xuXG5leHBvcnQgZGVmYXVsdCBUaWNrZXRGb3JtO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgQm94LCBUZXh0RmllbGQsIFR5cG9ncmFwaHkgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuXG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgeyBUSUNLRVRfQVRURU5ERUVfS0VZUyB9IGZyb20gXCIuLi8uLi9jb25zdGFudHNcIjtcbmltcG9ydCBDb21wYW55RmllbGQgZnJvbSBcIi4uL0NvbXBhbnlGaWVsZFwiO1xuXG5jb25zdCBUaWNrZXRPd25lckZpZWxkcyA9ICh7IGZvcm1paywgc3VtbWl0SWQsIGRpc2FibGVkLCBpc0RlbGVnYXRlZCB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgeyBlcnJvcnMsIHZhbHVlcywgdG91Y2hlZCwgaGFuZGxlQ2hhbmdlLCBoYW5kbGVCbHVyLCBpbml0aWFsVmFsdWVzIH0gPVxuICAgIGZvcm1paztcblxuICByZXR1cm4gKFxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMud3JhcHBlcn0+XG4gICAgICA8VGV4dEZpZWxkXG4gICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICBuYW1lPXtUSUNLRVRfQVRURU5ERUVfS0VZUy5lbWFpbH1cbiAgICAgICAgbGFiZWw9e3QoXCJ0aWNrZXRfZGV0YWlsLmVtYWlsXCIpfVxuICAgICAgICBkaXNhYmxlZFxuICAgICAgICB2YWx1ZT17dmFsdWVzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmVtYWlsXX1cbiAgICAgICAgbWFyZ2luPVwibm9ybWFsXCJcbiAgICAgIC8+XG4gICAgICB7aXNEZWxlZ2F0ZWQgJiYgKFxuICAgICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiYm9keTFcIiBzeD17eyBmb250V2VpZ2h0OiA1MDAsIG1hcmdpbjogXCIxMHB4IDBcIiB9fT5cbiAgICAgICAgICB7dChcInRpY2tldF9kZXRhaWwubWFuYWdlX2ZvclwiKX1cbiAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgKX1cbiAgICAgIHtbVElDS0VUX0FUVEVOREVFX0tFWVMuZmlyc3ROYW1lLCBUSUNLRVRfQVRURU5ERUVfS0VZUy5sYXN0TmFtZV0ubWFwKFxuICAgICAgICAobmFtZSkgPT4gKFxuICAgICAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgICAga2V5PXtuYW1lfVxuICAgICAgICAgICAgbmFtZT17bmFtZX1cbiAgICAgICAgICAgIGxhYmVsPXt0KGB0aWNrZXRfZGV0YWlsLiR7bmFtZX1gKX1cbiAgICAgICAgICAgIHZhbHVlPXt2YWx1ZXNbbmFtZV19XG4gICAgICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWQgfHwgaXNEZWxlZ2F0ZWQgfHwgISFpbml0aWFsVmFsdWVzW25hbWVdfVxuICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgICAgIG9uQmx1cj17aGFuZGxlQmx1cn1cbiAgICAgICAgICAgIGVycm9yPXt0b3VjaGVkW25hbWVdICYmIEJvb2xlYW4oZXJyb3JzW25hbWVdKX1cbiAgICAgICAgICAgIGhlbHBlclRleHQ9e2Zvcm1pay50b3VjaGVkW25hbWVdICYmIGZvcm1pay5lcnJvcnNbbmFtZV19XG4gICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgICAgbWFyZ2luPVwibm9ybWFsXCJcbiAgICAgICAgICAvPlxuICAgICAgICApXG4gICAgICApfVxuICAgICAgPENvbXBhbnlGaWVsZCBmb3JtaWs9e2Zvcm1pa30gc3VtbWl0SWQ9e3N1bW1pdElkfSBpc1JlcXVpcmVkIC8+XG4gICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmluZm9Ob3RlfT57dChcInRpY2tldF9kZXRhaWwuaW5mb19ub3RlXCIpfTwvQm94PlxuICAgIDwvQm94PlxuICApO1xufTtcblxuVGlja2V0T3duZXJGaWVsZHMucHJvcFR5cGVzID0ge1xuICBmb3JtaWs6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgc3VtbWl0SWQ6IFByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZCxcbiAgZGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICBpc0RlbGVnYXRlZDogUHJvcFR5cGVzLmJvb2xcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRpY2tldE93bmVyRmllbGRzO1xuIiwiZXhwb3J0IGNvbnN0IFRJQ0tFVF9BVFRFTkRFRV9LRVlTID0ge1xuICBlbWFpbDogXCJhdHRlbmRlZV9lbWFpbFwiLFxuICBmaXJzdE5hbWU6IFwiYXR0ZW5kZWVfZmlyc3RfbmFtZVwiLFxuICBsYXN0TmFtZTogXCJhdHRlbmRlZV9sYXN0X25hbWVcIixcbiAgY29tcGFueTogXCJhdHRlbmRlZV9jb21wYW55XCIsXG4gIGRpc2NsYWltZXJBY2NlcHRlZDogXCJkaXNjbGFpbWVyX2FjY2VwdGVkXCJcbn07XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoLCB1c2VTZWxlY3RvciB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IFFSQ29kZSBmcm9tIFwicmVhY3QtcXItY29kZVwiO1xuaW1wb3J0IHsgQm94LCBCdXR0b24sIERyYXdlciwgSWNvbkJ1dHRvbiwgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQge1xuICBDbG9zZSBhcyBDbG9zZUljb24sXG4gIEZpbGVEb3dubG9hZE91dGxpbmVkIGFzIERvd25sb2FkSWNvbixcbiAgRW1haWxPdXRsaW5lZCBhcyBFbWFpbEljb25cbn0gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRpY2tldERldGFpbHMgfSBmcm9tIFwiLi4vLi4vaG9va3MvdXNlVGlja2V0RGV0YWlsc1wiO1xuaW1wb3J0IENvcHlUZXh0IGZyb20gXCIuLi9Db3B5VGV4dFwiO1xuaW1wb3J0IHVzZUdldFRpY2tldCBmcm9tIFwiLi4vLi4vaG9va3MvdXNlR2V0VGlja2V0XCI7XG5pbXBvcnQgeyB0cmFuc2Zvcm1BbndlcnNGb3JtYXQgfSBmcm9tIFwiLi4vRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy91dGlsc1wiO1xuaW1wb3J0IEN1c3RvbURpYWxvZyBmcm9tIFwiLi4vQ3VzdG9tRGlhbG9nXCI7XG5pbXBvcnQgeyBNSUxMSVNFQ19UT19TRUMsIFRXT19JVEVNIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnN0YW50c1wiO1xuaW1wb3J0IFRpY2tldEZvcm0gZnJvbSBcIi4vY29tcG9uZW50cy9UaWNrZXRGb3JtXCI7XG5pbXBvcnQge1xuICBnZXRUaWNrZXRQREYsXG4gIHNhdmVUaWNrZXREZXRhaWxzLFxuICByZXNlbmROb3RpZmljYXRpb25cbn0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBUaWNrZXREZXRhaWwgPSAoe1xuICBzdW1taXQsXG4gIHRpY2tldElkLFxuICBvcmRlcklkLFxuICBvd25lcklkLFxuICBvcGVuLFxuICBvbkNsb3NlXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCB7XG4gICAgdXNlcjogeyB1c2VyUHJvZmlsZSB9XG4gIH0gPSB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlKTtcbiAgY29uc3QgeyB0aWNrZXQsIGV4dHJhUXVlc3Rpb25zIH0gPSB1c2VHZXRUaWNrZXQoXG4gICAgdGlja2V0SWQsXG4gICAgb3JkZXJJZCxcbiAgICBvd25lcklkLFxuICAgIG9wZW5cbiAgKTtcbiAgY29uc3QgW3NhdmVNZXNzYWdlLCBzZXRTYXZlTWVzc2FnZV0gPSB1c2VTdGF0ZShudWxsKTtcbiAgY29uc3QgW3NlbnRDb25maXJtYXRpb24sIHNldFNlbnRDb25maXJtYXRpb25dID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBpc1VzZXJPcmRlck93bmVyID0gdGlja2V0Py5vcmRlcj8ub3duZXJfaWQgPT09IHVzZXJQcm9maWxlPy5pZDtcbiAgY29uc3QgaXNVc2VyVGlja2V0T3duZXIgPSB0aWNrZXQ/Lm93bmVyPy5lbWFpbCA9PT0gdXNlclByb2ZpbGU/LmVtYWlsO1xuICBjb25zdCBjYW5FZGl0VGlja2V0RGF0YSA9XG4gICAgKGlzVXNlclRpY2tldE93bmVyIHx8IGlzVXNlck9yZGVyT3duZXIpICYmXG4gICAgc3VtbWl0LmFsbG93X3VwZGF0ZV9hdHRlbmRlZV9leHRyYV9xdWVzdGlvbnM7XG4gIGNvbnN0IHsgaXNDb21wbGV0ZSB9ID0gdXNlVGlja2V0RGV0YWlscyh0aWNrZXQpO1xuXG4gIGNvbnN0IG9uU2F2ZSA9ICh2YWwpID0+IHtcbiAgICBjb25zdCBhbnN3ZXJzID0gdHJhbnNmb3JtQW53ZXJzRm9ybWF0KHZhbCk7XG5cbiAgICByZXR1cm4gZGlzcGF0Y2goc2F2ZVRpY2tldERldGFpbHModGlja2V0LCBhbnN3ZXJzKSlcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgc2V0U2F2ZU1lc3NhZ2Uoe1xuICAgICAgICAgIHRpdGxlOiB0KFwidGlja2V0X2RldGFpbC5zYXZpbmdfc3VjY2Vzc1wiKSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogdChcInRpY2tldF9kZXRhaWwuc2F2aW5nX3N1Y2Nlc3NfZGVzY3JpcHRpb25cIilcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGVycikgPT4ge1xuICAgICAgICBzZXRTYXZlTWVzc2FnZSh7XG4gICAgICAgICAgdGl0bGU6IHQoXCJ0aWNrZXRfZGV0YWlsLnNhdmluZ19lcnJvclwiKSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogZXJyLnRvU3RyaW5nKClcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xuICAgICAgfSk7XG4gIH07XG5cbiAgY29uc3Qgb25DbG9zZVNhdmVNZXNzYWdlID0gKCkgPT4ge1xuICAgIHNldFNhdmVNZXNzYWdlKG51bGwpO1xuICAgIHNldFRpbWVvdXQob25DbG9zZSwgTUlMTElTRUNfVE9fU0VDKTtcbiAgfTtcblxuICBjb25zdCBkb3dubG9hZFRpY2tldFBkZiA9ICgpID0+IHtcbiAgICBkaXNwYXRjaChnZXRUaWNrZXRQREYodGlja2V0KSk7XG4gIH07XG5cbiAgY29uc3Qgb25TZW5kRW1haWwgPSAoKSA9PiB7XG4gICAgZGlzcGF0Y2gocmVzZW5kTm90aWZpY2F0aW9uKHRpY2tldCkpLnRoZW4oKCkgPT4ge1xuICAgICAgc2V0U2VudENvbmZpcm1hdGlvbih0cnVlKTtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBzZXRTZW50Q29uZmlybWF0aW9uKGZhbHNlKTtcbiAgICAgIH0sIE1JTExJU0VDX1RPX1NFQyAqIFRXT19JVEVNKTtcbiAgICB9KTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8RHJhd2VyXG4gICAgICAgIGlkPVwiZGV0YWlsc0RyYXdlclwiXG4gICAgICAgIG9wZW49e29wZW59XG4gICAgICAgIG9uQ2xvc2U9e29uQ2xvc2V9XG4gICAgICAgIGFuY2hvcj1cInJpZ2h0XCJcbiAgICAgICAgTW9kYWxQcm9wcz17eyBrZWVwTW91bnRlZDogZmFsc2UgfX1cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0RGV0YWlsQ29udGFpbmVyfVxuICAgICAgPlxuICAgICAgICB7dGlja2V0ICYmIGV4dHJhUXVlc3Rpb25zICYmIChcbiAgICAgICAgICA8PlxuICAgICAgICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5oZWFkZXJ9PlxuICAgICAgICAgICAgICA8SWNvbkJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNsb3NlQnRufVxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9e29uQ2xvc2V9XG4gICAgICAgICAgICAgICAgc3g9e3sgZmxvYXQ6IFwicmlnaHRcIiB9fVxuICAgICAgICAgICAgICAgIGZvbnRTaXplPVwibGFyZ2VcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPENsb3NlSWNvbiAvPlxuICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJoNFwiIGd1dHRlckJvdHRvbSBjbGFzc05hbWU9e3N0eWxlcy50aXRsZX0+XG4gICAgICAgICAgICAgICAge3RpY2tldD8udGlja2V0X3R5cGU/Lm5hbWV9XG4gICAgICAgICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgICAgICAgPFR5cG9ncmFwaHlcbiAgICAgICAgICAgICAgICB2YXJpYW50PVwiYm9keTJcIlxuICAgICAgICAgICAgICAgIGd1dHRlckJvdHRvbVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnN1YnRpdGxlfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfZGV0YWlsLnB1cmNoYXNlZF9ieVwiKX0ge3RpY2tldD8ub3JkZXI/Lm93bmVyX2VtYWlsfVxuICAgICAgICAgICAgICA8L1R5cG9ncmFwaHk+XG5cbiAgICAgICAgICAgICAge2lzQ29tcGxldGUgJiYgKFxuICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLnFyQ29kZX0+XG4gICAgICAgICAgICAgICAgICAgIDxRUkNvZGVcbiAgICAgICAgICAgICAgICAgICAgICBzaXplPXsyNTZ9XG4gICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogXCJhdXRvXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXhXaWR0aDogXCIxMDAlXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogXCIxMDAlXCJcbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXt0aWNrZXQucXJfY29kZX1cbiAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI1NiAyNTZcIlxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9e3N0eWxlcy5zdGF0dXN9Pnt0KFwidGlja2V0X2RldGFpbC5zdGF0dXNcIil9PC9wPlxuICAgICAgICAgICAgICAgICAgPFR5cG9ncmFwaHlcbiAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cImJvZHkyXCJcbiAgICAgICAgICAgICAgICAgICAgZ3V0dGVyQm90dG9tXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnFyTm90ZX1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfZGV0YWlsLnFyX25vdGVcIil9XG4gICAgICAgICAgICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgICAgeyFzdW1taXQ/LmlzX3ZpcnR1YWwgJiYgaXNDb21wbGV0ZSAmJiAoXG4gICAgICAgICAgICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5hY3Rpb25CdXR0b25zQ29udGFpbmVyfT5cbiAgICAgICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuZG93bmxvYWRCdG59XG4gICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJjb250YWluZWRcIlxuICAgICAgICAgICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtkb3dubG9hZFRpY2tldFBkZn1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPERvd25sb2FkSWNvbiBmb250U2l6ZT1cImxhcmdlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfZGV0YWlsLmRvd25sb2FkXCIpfVxuICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLnNlbmRCdG59ICR7XG4gICAgICAgICAgICAgICAgICAgICAgc2VudENvbmZpcm1hdGlvbiA/IHN0eWxlcy5zZW50IDogXCJcIlxuICAgICAgICAgICAgICAgICAgICB9YH1cbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17b25TZW5kRW1haWx9XG4gICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtzZW50Q29uZmlybWF0aW9ufVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8RW1haWxJY29uIGZvbnRTaXplPVwibGFyZ2VcIiAvPlxuICAgICAgICAgICAgICAgICAgICB7c2VudENvbmZpcm1hdGlvblxuICAgICAgICAgICAgICAgICAgICAgID8gdChcInRpY2tldF9kZXRhaWwuc2VudFwiKVxuICAgICAgICAgICAgICAgICAgICAgIDogdChcInRpY2tldF9kZXRhaWwuc2VuZFwiKX1cbiAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgICApfVxuXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJOdW1iZXJ9PlxuICAgICAgICAgICAgICAgIDxDb3B5VGV4dFxuICAgICAgICAgICAgICAgICAgdGV4dD17dGlja2V0Py5vcmRlcj8ubnVtYmVyfVxuICAgICAgICAgICAgICAgICAgcmV2ZXJzZWRcbiAgICAgICAgICAgICAgICAgIHdpZHRoPXsxNTB9XG4gICAgICAgICAgICAgICAgICB0b29sdGlwVGV4dD17dChcIm9yZGVyX3N1bW1hcnkuY29weV9vcmRlcl9udW1iZXJcIil9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuYXR0ZW5kZWVDb250YWluZXJ9PlxuICAgICAgICAgICAgICA8VHlwb2dyYXBoeVxuICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJoNFwiXG4gICAgICAgICAgICAgICAgZ3V0dGVyQm90dG9tXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuYXR0ZW5kZWVJbmZvVGl0bGV9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7dChcInRpY2tldF9kZXRhaWwuYXR0ZW5kZWVfaW5mb3JtYXRpb25cIil9XG4gICAgICAgICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgICAgICAge3RpY2tldCAmJiAoXG4gICAgICAgICAgICAgICAgPFRpY2tldEZvcm1cbiAgICAgICAgICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgICAgICAgICAgZXh0cmFRdWVzdGlvbnM9e2V4dHJhUXVlc3Rpb25zfVxuICAgICAgICAgICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgICAgICAgICBjYW5FZGl0PXtjYW5FZGl0VGlja2V0RGF0YX1cbiAgICAgICAgICAgICAgICAgIG9uU3VibWl0PXtvblNhdmV9XG4gICAgICAgICAgICAgICAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICA8Lz5cbiAgICAgICAgKX1cbiAgICAgIDwvRHJhd2VyPlxuICAgICAgPEN1c3RvbURpYWxvZ1xuICAgICAgICBvcGVuPXshIXNhdmVNZXNzYWdlfVxuICAgICAgICBvbkNsb3NlPXtvbkNsb3NlU2F2ZU1lc3NhZ2V9XG4gICAgICAgIHRpdGxlPXtzYXZlTWVzc2FnZT8udGl0bGV9XG4gICAgICAgIGRlc2NyaXB0aW9uPXtzYXZlTWVzc2FnZT8uZGVzY3JpcHRpb259XG4gICAgICAvPlxuICAgIDwvPlxuICApO1xufTtcblxuVGlja2V0RGV0YWlsLnByb3BUeXBlcyA9IHtcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LFxuICB0aWNrZXRJZDogUHJvcFR5cGVzLm51bWJlcixcbiAgb3JkZXJJZDogUHJvcFR5cGVzLm51bWJlcixcbiAgb3duZXJJZDogUHJvcFR5cGVzLm51bWJlcixcbiAgb25DbG9zZTogUHJvcFR5cGVzLmZ1bmMsXG4gIG9wZW46IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBUaWNrZXREZXRhaWw7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBDb250YWluZXIsIEJ1dHRvbiB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VUaWNrZXREZXRhaWxzIH0gZnJvbSBcIi4uLy4uL2hvb2tzL3VzZVRpY2tldERldGFpbHNcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBUaWNrZXRTdGF0dXMgPSAoeyB0aWNrZXQgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGlzQWN0aXZlID0gdGlja2V0LmlzX2FjdGl2ZTtcbiAgY29uc3QgcmVmdW5kUmVxdWVzdHMgPSB0aWNrZXQucmVmdW5kX3JlcXVlc3RzPy5maW5kKFxuICAgIChyKSA9PiByLnN0YXR1cyA9PT0gXCJSZXF1ZXN0ZWRcIlxuICApO1xuICBjb25zdCB7IGlzSW5jb21wbGV0ZSwgaXNVbmFzc2lnbmVkLCBpc0NvbXBsZXRlIH0gPSB1c2VUaWNrZXREZXRhaWxzKHRpY2tldCk7XG5cbiAgcmV0dXJuIChcbiAgICA8Q29udGFpbmVyIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldFN0YXR1c0NvbnRhaW5lcn0+XG4gICAgICB7aXNBY3RpdmUgPyAoXG4gICAgICAgIDw+XG4gICAgICAgICAgeyEhcmVmdW5kUmVxdWVzdHMgJiYgKFxuICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cInRpY2tldCBzdGF0dXMgcmVmdW5kIHJlcXVlc3RlZFwiXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLmJ1dHRvblBpbGx9ICR7c3R5bGVzLmJ1dHRvblJlZnVuZFJlcXVlc3RlZH1gfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMuc3RhdHVzX3JlZnVuZF9yZXF1ZXN0ZWRcIil9XG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICApfVxuICAgICAgICAgIHtpc0luY29tcGxldGUgJiYgKFxuICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cInRpY2tldCBzdGF0dXMgaW5jb21wbGV0ZVwiXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLmJ1dHRvblBpbGx9ICR7c3R5bGVzLmJ1dHRvbkluY29tcGxldGV9YH1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnN0YXR1c19pbmNvbXBsZXRlXCIpfVxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgKX1cbiAgICAgICAgICB7aXNVbmFzc2lnbmVkICYmIChcbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJ0aWNrZXQgc3RhdHVzIHVuYXNzaWduZWRcIlxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5idXR0b25QaWxsfSAke3N0eWxlcy5idXR0b25VbmFzc2lnbmVkfWB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5zdGF0dXNfdW5hc3NpZ25lZFwiKX1cbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICl9XG4gICAgICAgICAge2lzQ29tcGxldGUgJiYgKFxuICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cInRpY2tldCBzdGF0dXMgY29tcGxldGVcIlxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5idXR0b25QaWxsfSAke3N0eWxlcy5idXR0b25Db21wbGV0ZX1gfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMuc3RhdHVzX2NvbXBsZXRlXCIpfVxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC8+XG4gICAgICApIDogKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgYXJpYS1sYWJlbD1cInRpY2tldCBzdGF0dXMgY2FuY2VsbGVkXCJcbiAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5idXR0b25QaWxsfSAke3N0eWxlcy5idXR0b25DYW5jZWxsZWR9YH1cbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5zdGF0dXNfY2FuY2VsbGVkXCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgICl9XG4gICAgPC9Db250YWluZXI+XG4gICk7XG59O1xuXG5UaWNrZXRTdGF0dXMucHJvcFR5cGVzID0ge1xuICB0aWNrZXQ6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgb3duZXI6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICBzdGF0dXM6IFByb3BUeXBlcy5zdHJpbmdcbiAgICB9KSxcbiAgICByZWZ1bmRSZXF1ZXN0czogUHJvcFR5cGVzLmFycmF5T2YoT2JqZWN0KVxuICB9KVxufTtcblxuZXhwb3J0IGRlZmF1bHQgVGlja2V0U3RhdHVzO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoLCB1c2VTZWxlY3RvciB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHtcbiAgQm94LFxuICBEaXZpZGVyLFxuICBUYWIsXG4gIFRhYnMsXG4gIHVzZU1lZGlhUXVlcnksXG4gIHVzZVRoZW1lXG59IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQge1xuICBERUZBVUxUX0lURU1TX1BFUl9QQUdFLFxuICBGSVJTVF9QQUdFLFxuICBUQUJTXG59IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCBNeU9yZGVyc1RpY2tldHMgZnJvbSBcIi4uL015T3JkZXJzVGlja2V0c1wiO1xuaW1wb3J0IEFzc2lnbmVkVG9NZSBmcm9tIFwiLi4vT3JkZXJzTGlzdC9Bc3NpZ25lZFRvTWVcIjtcbmltcG9ydCB7XG4gIGdldFRpY2tldHNCeU9yZGVyLFxuICBnZXRVc2VyT3JkZXJzLFxuICBnZXRVc2VyVGlja2V0c1xufSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuXG5jb25zdCBXaWRnZXRUYWJzID0gKHsgdGl0bGUgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IFt0YWIsIHNldFRhYl0gPSB1c2VTdGF0ZShUQUJTLk9SREVSUyk7XG4gIGNvbnN0IFt0aWNrZXRzRnVsbHlMb2FkZWQsIHNldFRpY2tldHNGdWxseUxvYWRlZF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3Qge1xuICAgIGZpbHRlcixcbiAgICBzb3J0LFxuICAgIG9yZGVyc19wZXJfcGFnZTogb3JkZXJzUGVyUGFnZSxcbiAgICB0aWNrZXRfcGVyX3BhZ2U6IHRpY2tldFBlclBhZ2UsXG4gICAgdXNlclRpY2tldHMsXG4gICAgbWVtYmVyT3JkZXJzXG4gIH0gPSB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlKTtcbiAgY29uc3QgdGhlbWUgPSB1c2VUaGVtZSgpO1xuICBjb25zdCBpc01vYmlsZSA9IHVzZU1lZGlhUXVlcnkodGhlbWUuYnJlYWtwb2ludHMuZG93bihcImxnXCIpKTtcblxuICBjb25zdCBoYW5kbGVUYWJDaGFuZ2UgPSAoXywgbmV3VGFiKSA9PiB7XG4gICAgc2V0VGFiKG5ld1RhYik7XG4gIH07XG5cbiAgY29uc3QgZmV0Y2hBc3NpZ25lZFRpY2tldHMgPSAocGFnZSkgPT5cbiAgICBkaXNwYXRjaChcbiAgICAgIGdldFVzZXJUaWNrZXRzKHsgcGFnZSwgcGVyUGFnZTogREVGQVVMVF9JVEVNU19QRVJfUEFHRSwgZmlsdGVyLCBzb3J0IH0pXG4gICAgKTtcblxuICBjb25zdCBmZXRjaE9yZGVyVGlja2V0cyA9IChwYWdlKSA9PlxuICAgIGRpc3BhdGNoKFxuICAgICAgZ2V0VXNlck9yZGVycyh7XG4gICAgICAgIHBhZ2UsXG4gICAgICAgIHBlclBhZ2U6IG9yZGVyc1BlclBhZ2UsXG4gICAgICAgIGZpbHRlcixcbiAgICAgICAgc29ydFxuICAgICAgfSlcbiAgICApLnRoZW4oKHBheWxvYWQpID0+IHtcbiAgICAgIGNvbnN0IHsgZGF0YSB9ID0gcGF5bG9hZC5yZXNwb25zZTtcbiAgICAgIGNvbnN0IG9yZGVyVGlja2V0c1Byb21pc2VzID0gZGF0YS5tYXAoKG9yZGVyKSA9PlxuICAgICAgICBkaXNwYXRjaChcbiAgICAgICAgICBnZXRUaWNrZXRzQnlPcmRlcih7XG4gICAgICAgICAgICBvcmRlcklkOiBvcmRlci5pZCxcbiAgICAgICAgICAgIGN1cnJlbnRfcGFnZTogRklSU1RfUEFHRSxcbiAgICAgICAgICAgIHBlclBhZ2U6IHRpY2tldFBlclBhZ2UsXG4gICAgICAgICAgICBmaWx0ZXIsXG4gICAgICAgICAgICBzb3J0XG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgKTtcblxuICAgICAgcmV0dXJuIFByb21pc2UuYWxsKG9yZGVyVGlja2V0c1Byb21pc2VzKTtcbiAgICB9KTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGZldGNoUHJvbWlzZXMgPSBbXG4gICAgICBmZXRjaEFzc2lnbmVkVGlja2V0cyhGSVJTVF9QQUdFKSxcbiAgICAgIGZldGNoT3JkZXJUaWNrZXRzKEZJUlNUX1BBR0UpXG4gICAgXTtcbiAgICBQcm9taXNlLmFsbChmZXRjaFByb21pc2VzKS50aGVuKCgpID0+IHNldFRpY2tldHNGdWxseUxvYWRlZCh0cnVlKSk7XG4gIH0sIFtmaWx0ZXIsIHNvcnRdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICh0aWNrZXRzRnVsbHlMb2FkZWQpIHtcbiAgICAgIGlmIChtZW1iZXJPcmRlcnM/Lmxlbmd0aCA9PT0gMCAmJiB1c2VyVGlja2V0cz8ubGVuZ3RoID4gMCkge1xuICAgICAgICBzZXRUYWIoVEFCUy5USUNLRVRTKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIFt0aWNrZXRzRnVsbHlMb2FkZWRdKTtcblxuICByZXR1cm4gKFxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMudGFiV3JhcHBlcn0+XG4gICAgICA8VGFic1xuICAgICAgICB2YWx1ZT17dGFifVxuICAgICAgICBvbkNoYW5nZT17aGFuZGxlVGFiQ2hhbmdlfVxuICAgICAgICB2YXJpYW50PXtpc01vYmlsZSA/IFwiZnVsbFdpZHRoXCIgOiBcInN0YW5kYXJkXCJ9XG4gICAgICA+XG4gICAgICAgIDxUYWIgbGFiZWw9e3QoXCJvcmRlcnMudGl0bGVcIil9IHZhbHVlPXtUQUJTLk9SREVSU30gLz5cbiAgICAgICAgPFRhYiBsYWJlbD17dChcImxhYmVscy5hc3NpZ25lZF90b19tZVwiKX0gdmFsdWU9e1RBQlMuVElDS0VUU30gLz5cbiAgICAgIDwvVGFicz5cbiAgICAgIDxEaXZpZGVyIC8+XG4gICAgICA8Qm94IHN4PXt7IHB0OiA2LCBwYjogMyB9fT57dGl0bGV9PC9Cb3g+XG4gICAgICB7dGFiID09PSBUQUJTLk9SREVSUyAmJiA8TXlPcmRlcnNUaWNrZXRzIGZldGNoRGF0YT17ZmV0Y2hPcmRlclRpY2tldHN9IC8+fVxuICAgICAge3RhYiA9PT0gVEFCUy5USUNLRVRTICYmIChcbiAgICAgICAgPEFzc2lnbmVkVG9NZSBmZXRjaERhdGE9e2ZldGNoQXNzaWduZWRUaWNrZXRzfSAvPlxuICAgICAgKX1cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFdpZGdldFRhYnM7XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoLCB1c2VTZWxlY3Rvciwgc2hhbGxvd0VxdWFsLCBjb25uZWN0IH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHtcbiAgcmVzZXRGaWx0ZXIsXG4gIHJlc2V0RXJyb3IsXG4gIGNoYW5nZVNvcnQsXG4gIGNoYW5nZUZpbHRlclxufSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuaW1wb3J0IEN1c3RvbVRoZW1lIGZyb20gXCIuLi9DdXN0b21UaGVtZVwiO1xuaW1wb3J0IExvYWRlciBmcm9tIFwiLi4vTG9hZGVyXCI7XG5pbXBvcnQgQ3VzdG9tRGlhbG9nQ29udGV4dCBmcm9tIFwiLi4vQ3VzdG9tRGlhbG9nL0NvbnRleHRcIjtcbmltcG9ydCBDdXN0b21EaWFsb2cgZnJvbSBcIi4uL0N1c3RvbURpYWxvZ1wiO1xuXG5pbXBvcnQgRmlsdGVycyBmcm9tIFwiLi4vRmlsdGVyc1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IFdpZGdldFRhYnMgZnJvbSBcIi4uL1dpZGdldFRhYnNcIjtcbmltcG9ydCBTdW1taXRIZWFkZXIgZnJvbSBcIi4uL1N1bW1pdEhlYWRlclwiO1xuXG5jb25zdCBXaWRnZXRXcmFwcGVyID0gKCkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3QgW21lc3NhZ2UsIHNldE1lc3NhZ2VdID0gdXNlU3RhdGUoXCJcIik7XG4gIGNvbnN0IFttZXNzYWdlQ2FsbGJhY2ssIHNldE1lc3NhZ2VDYWxsYmFja10gPSB1c2VTdGF0ZShudWxsKTtcbiAgY29uc3Qge1xuICAgIGxvYWRpbmcsXG4gICAgYXBpRXJyb3IsXG4gICAgZmlsdGVyOiB7IEZJTFRFUl9WQVJfT1JERVJfTlVNQkVSOiBmaWx0ZXJWYWx1ZXMgfVxuICB9ID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSB8fCB7fSwgc2hhbGxvd0VxdWFsKTtcblxuICBjb25zdCBvblJlc2V0ID0gKCkgPT4ge1xuICAgIGRpc3BhdGNoKHJlc2V0RmlsdGVyKCkpO1xuICB9O1xuXG4gIGNvbnN0IHJlc2V0QXBpRXJyb3IgPSAoKSA9PiB7XG4gICAgZGlzcGF0Y2gocmVzZXRFcnJvcigpKTtcbiAgfTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChhcGlFcnJvcikge1xuICAgICAgc2V0TWVzc2FnZShhcGlFcnJvcik7XG4gICAgICBzZXRNZXNzYWdlQ2FsbGJhY2socmVzZXRBcGlFcnJvcik7XG4gICAgfVxuICB9LCBbYXBpRXJyb3JdKTtcblxuICBjb25zdCBvbkZpbHRlciA9IChmaWx0ZXJWYWx1ZSkgPT4ge1xuICAgIGRpc3BhdGNoKGNoYW5nZUZpbHRlcihmaWx0ZXJWYWx1ZSkpO1xuICB9O1xuXG4gIGNvbnN0IG9uU29ydCA9IChzb3J0VmFsdWUpID0+IHtcbiAgICBkaXNwYXRjaChjaGFuZ2VTb3J0KHNvcnRWYWx1ZSkpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPEN1c3RvbVRoZW1lPlxuICAgICAgPExvYWRlciBvcGVuPXtsb2FkaW5nfSAvPlxuICAgICAgPEN1c3RvbURpYWxvZ1xuICAgICAgICBvcGVuPXshIW1lc3NhZ2V9XG4gICAgICAgIG9uQ2xvc2U9eygpID0+IHtcbiAgICAgICAgICBzZXRNZXNzYWdlKG51bGwpO1xuICAgICAgICAgIGlmIChtZXNzYWdlQ2FsbGJhY2spIG1lc3NhZ2VDYWxsYmFjaygpO1xuICAgICAgICB9fVxuICAgICAgICBib2R5PXttZXNzYWdlPy5ib2R5fVxuICAgICAgICB0aXRsZT17bWVzc2FnZT8udGl0bGV9XG4gICAgICAvPlxuICAgICAgPEZpbHRlcnNcbiAgICAgICAgb25GaWx0ZXI9e29uRmlsdGVyfVxuICAgICAgICBvblNvcnQ9e29uU29ydH1cbiAgICAgICAgb25TZWFyY2g9e29uRmlsdGVyfVxuICAgICAgICBvblJlc2V0PXtvblJlc2V0fVxuICAgICAgLz5cbiAgICAgIDxCb3ggc3g9e3sgcGFkZGluZzogeyB4czogMiwgbWQ6IDAsIGxnOiAwIH0gfX0+XG4gICAgICAgIDxoMyBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRzVGl0bGVUZXh0fT5cbiAgICAgICAgICB7ZmlsdGVyVmFsdWVzXG4gICAgICAgICAgICA/IHQoXCJsYWJlbHMuc2VhcmNoX3Jlc3VsdHNcIiwgeyBmaWx0ZXI6IGZpbHRlclZhbHVlcyB9KVxuICAgICAgICAgICAgOiB0KFwibGFiZWxzLnRpY2tldHNcIil9XG4gICAgICAgIDwvaDM+XG4gICAgICA8L0JveD5cbiAgICAgIDxDdXN0b21EaWFsb2dDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXsoc2V0TWVzc2FnZSwgc2V0TWVzc2FnZUNhbGxiYWNrKX0+XG4gICAgICAgIDxXaWRnZXRUYWJzIHRpdGxlPXs8U3VtbWl0SGVhZGVyIC8+fSAvPlxuICAgICAgPC9DdXN0b21EaWFsb2dDb250ZXh0LlByb3ZpZGVyPlxuICAgIDwvQ3VzdG9tVGhlbWU+XG4gICk7XG59O1xuXG5jb25zdCBtYXBTdGF0ZVRvUHJvcHMgPSAoeyB3aWRnZXRTdGF0ZSB9KSA9PiAoe1xuICBzb3J0OiB3aWRnZXRTdGF0ZS5zb3J0LFxuICBmaWx0ZXI6IHdpZGdldFN0YXRlLmZpbHRlclxufSk7XG5cbmV4cG9ydCBkZWZhdWx0IGNvbm5lY3QobWFwU3RhdGVUb1Byb3BzLCB7fSkoV2lkZ2V0V3JhcHBlcik7XG4iLCJpbXBvcnQgeyB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoLCB1c2VTZWxlY3RvciB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgZ2V0RXh0cmFRdWVzdGlvbnMsIGdldFRpY2tldCB9IGZyb20gXCIuLi9hY3Rpb25zXCI7XG5cbmNvbnN0IHVzZUdldFRpY2tldCA9ICh0aWNrZXRJZCwgb3JkZXJJZCwgb3duZXJJZCwgcnVuKSA9PiB7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChydW4pIHtcbiAgICAgIGlmICh0aWNrZXRJZCAmJiBvcmRlcklkKSB7XG4gICAgICAgIGRpc3BhdGNoKGdldFRpY2tldCh0aWNrZXRJZCwgb3JkZXJJZCkpO1xuICAgICAgfVxuXG4gICAgICBpZiAob3duZXJJZCkge1xuICAgICAgICBkaXNwYXRjaChnZXRFeHRyYVF1ZXN0aW9ucyhvd25lcklkKSk7XG4gICAgICB9XG4gICAgfVxuICB9LCBbdGlja2V0SWQsIG9yZGVySWQsIG93bmVySWQsIHJ1bl0pO1xuXG4gIGNvbnN0IHsgZXh0cmFRdWVzdGlvbnMsIGN1cnJlbnRUaWNrZXQ6IHRpY2tldCB9ID0gdXNlU2VsZWN0b3IoXG4gICAgKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZVxuICApO1xuXG4gIHJldHVybiB7IHRpY2tldCwgZXh0cmFRdWVzdGlvbnMgfTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IHVzZUdldFRpY2tldDtcbiIsImltcG9ydCB7IHVzZUVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xuXG4vLyBTbW9vdGggc2Nyb2xsaW5nIGZ1bmN0aW9uIHVzaW5nIHJlcXVlc3RBbmltYXRpb25GcmFtZVxuZnVuY3Rpb24gc21vb3RoU2Nyb2xsVG8oY29udGFpbmVyLCB0YXJnZXRTY3JvbGxUb3AsIGR1cmF0aW9uKSB7XG4gIGNvbnN0IHN0YXJ0U2Nyb2xsVG9wID0gY29udGFpbmVyLnNjcm9sbFRvcDtcbiAgY29uc3QgZGlzdGFuY2UgPSB0YXJnZXRTY3JvbGxUb3AgLSBzdGFydFNjcm9sbFRvcDtcbiAgbGV0IHN0YXJ0VGltZSA9IG51bGw7XG5cbiAgZnVuY3Rpb24gYW5pbWF0aW9uU3RlcCh0aW1lc3RhbXApIHtcbiAgICBpZiAoIXN0YXJ0VGltZSkgc3RhcnRUaW1lID0gdGltZXN0YW1wO1xuICAgIGNvbnN0IGVsYXBzZWQgPSB0aW1lc3RhbXAgLSBzdGFydFRpbWU7XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbWFnaWMtbnVtYmVyc1xuICAgIGNvbnN0IHByb2dyZXNzID0gTWF0aC5taW4oZWxhcHNlZCAvIGR1cmF0aW9uLCAxKTtcbiAgICBjb25zdCBlYXNlSW5PdXRRdWFkID1cbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1tYWdpYy1udW1iZXJzXG4gICAgICBwcm9ncmVzcyA8IDAuNSA/IDIgKiBwcm9ncmVzcyAqKiAyIDogMSAtICgtMiAqIHByb2dyZXNzICsgMikgKiogMiAvIDI7XG5cbiAgICBjb250YWluZXIuc2Nyb2xsVG9wID0gc3RhcnRTY3JvbGxUb3AgKyBkaXN0YW5jZSAqIGVhc2VJbk91dFF1YWQ7XG5cbiAgICBpZiAoZWxhcHNlZCA8IGR1cmF0aW9uKSB7XG4gICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoYW5pbWF0aW9uU3RlcCk7XG4gICAgfVxuICB9XG5cbiAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGFuaW1hdGlvblN0ZXApO1xufVxuXG5jb25zdCB1c2VTY3JvbGxUb0Vycm9yID0gKGZvcm1paywgY29udGFpbmVySWQpID0+IHtcbiAgY29uc3QgeyBlcnJvcnMsIGlzVmFsaWQsIGlzU3VibWl0dGluZyB9ID0gZm9ybWlrO1xuICBjb25zdCBlcnJvckFycmF5ID0gT2JqZWN0LmtleXMoZXJyb3JzKTtcbiAgY29uc3QgZXJyb3JDb3VudCA9IGVycm9yQXJyYXkubGVuZ3RoO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGlzVmFsaWQgfHwgZXJyb3JDb3VudCA9PT0gMCkgcmV0dXJuO1xuXG4gICAgLy8gc29ydCBlbGVtZW50cyBieSBwb3NpdGlvblxuICAgIGNvbnN0IGVsZW1lbnRzU29ydGVkID0gZXJyb3JBcnJheVxuICAgICAgLnJlZHVjZSgocmVzdWx0LCBlcnJvcikgPT4ge1xuICAgICAgICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgW25hbWU9JyR7ZXJyb3J9J11gKTtcbiAgICAgICAgaWYgKCFlbGVtZW50KSByZXR1cm4gcmVzdWx0O1xuXG4gICAgICAgIGNvbnN0IGVsUmVjdCA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIHJlc3VsdC5wdXNoKHsgZWxlbWVudCwgZXJyb3IsIHRvcDogZWxSZWN0LnRvcCB9KTtcblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfSwgW10pXG4gICAgICAuc29ydCgoYSwgYikgPT4gYS50b3AgLSBiLnRvcCk7XG5cbiAgICBpZiAoZWxlbWVudHNTb3J0ZWQubGVuZ3RoID09PSAwKSByZXR1cm47XG5cbiAgICBjb25zdCBjb250YWluZXIgPSBkb2N1bWVudFxuICAgICAgLmdldEVsZW1lbnRCeUlkKGNvbnRhaW5lcklkKVxuICAgICAgLnF1ZXJ5U2VsZWN0b3IoXCIuTXVpRHJhd2VyLXBhcGVyXCIpO1xuICAgIGNvbnN0IHRhcmdldCA9IGVsZW1lbnRzU29ydGVkWzBdO1xuXG4gICAgaWYgKGNvbnRhaW5lcj8uY29udGFpbnModGFyZ2V0LmVsZW1lbnQpKSB7XG4gICAgICBjb25zdCBjb250YWluZXJSZWN0ID0gY29udGFpbmVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgICAvLyBDYWxjdWxhdGUgdGhlIG9mZnNldCBvZiB0aGUgdGFyZ2V0IGVsZW1lbnQgcmVsYXRpdmUgdG8gdGhlIGNvbnRhaW5lclxuICAgICAgY29uc3QgZWxlbU9mZmVzdCA9IDEwMDtcbiAgICAgIGNvbnN0IGFuaW1hdGlvbkR1cmF0aW9uID0gNTAwO1xuICAgICAgY29uc3Qgc2Nyb2xsVG9wID1cbiAgICAgICAgdGFyZ2V0LnRvcCAtIGNvbnRhaW5lclJlY3QudG9wICsgY29udGFpbmVyLnNjcm9sbFRvcCAtIGVsZW1PZmZlc3Q7XG5cbiAgICAgIC8vIFNjcm9sbCB0aGUgY29udGFpbmVyIHRvIHRoZSB0YXJnZXQgZWxlbWVudCdzIHBvc2l0aW9uXG4gICAgICBzbW9vdGhTY3JvbGxUbyhjb250YWluZXIsIHNjcm9sbFRvcCwgYW5pbWF0aW9uRHVyYXRpb24pOyAvLyA1MDBtcyBkdXJhdGlvblxuICAgIH1cbiAgfSwgW2lzU3VibWl0dGluZ10pO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgdXNlU2Nyb2xsVG9FcnJvcjtcbiIsImltcG9ydCB7IGlzVGlja2V0UmVmdW5kYWJsZSB9IGZyb20gXCIuLi91dGlscy90aWNrZXRVdGlsc1wiO1xuXG5leHBvcnQgY29uc3QgU1RBVFVTX0NPTVBMRVRFID0gXCJDb21wbGV0ZVwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19JTkNPTVBMRVRFID0gXCJJbmNvbXBsZXRlXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX0NBTkNFTExFRCA9IFwiQ2FuY2VsbGVkXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1VOQVNTSUdORUQgPSBcIlVuYXNzaWduZWRcIjtcblxuZXhwb3J0IGNvbnN0IHVzZVRpY2tldERldGFpbHMgPSAodGlja2V0KSA9PiB7XG4gIGNvbnN0IGdldFN0YXR1cyA9ICgpID0+IHtcbiAgICBpZiAoIXRpY2tldC5pc19hY3RpdmUpIHJldHVybiBTVEFUVVNfQ0FOQ0VMTEVEO1xuICAgIGlmICh0aWNrZXQub3duZXJfaWQgPT09IDApIHJldHVybiBTVEFUVVNfVU5BU1NJR05FRDtcbiAgICBpZiAoIXRpY2tldC5vd25lcj8uZmlyc3RfbmFtZSB8fCAhdGlja2V0Lm93bmVyPy5sYXN0X25hbWUpXG4gICAgICByZXR1cm4gU1RBVFVTX0lOQ09NUExFVEU7XG4gICAgcmV0dXJuIHRpY2tldC5vd25lci5zdGF0dXM7XG4gIH07XG5cbiAgaWYgKCF0aWNrZXQpIHJldHVybiB7fTtcblxuICBjb25zdCBzdGF0dXMgPSBnZXRTdGF0dXMoKTtcbiAgY29uc3QgaXNBY3RpdmUgPSB0aWNrZXQuaXNfYWN0aXZlICYmIHN0YXR1cyAhPT0gU1RBVFVTX0NBTkNFTExFRDtcbiAgY29uc3QgaXNSZWZ1bmRhYmxlID0gaXNUaWNrZXRSZWZ1bmRhYmxlKHRpY2tldCk7XG4gIGNvbnN0IGFsbG93c0RlbGVnYXRlID1cbiAgICB0aWNrZXQ/LnRpY2tldF90eXBlPy5hbGxvd3NfdG9fZGVsZWdhdGUgfHxcbiAgICB0aWNrZXQ/LnByb21vX2NvZGU/LmFsbG93c190b19kZWxlZ2F0ZTtcbiAgY29uc3QgaXNDb21wbGV0ZSA9IHN0YXR1cyA9PT0gU1RBVFVTX0NPTVBMRVRFO1xuICBjb25zdCBpc1VuYXNzaWduZWQgPSBzdGF0dXMgPT09IFNUQVRVU19VTkFTU0lHTkVEO1xuICBjb25zdCBpc0luY29tcGxldGUgPSBzdGF0dXMgPT09IFNUQVRVU19JTkNPTVBMRVRFO1xuICBjb25zdCBjYW5SZWFzc2lnbiA9XG4gICAgIWlzVW5hc3NpZ25lZCAmJlxuICAgIHRpY2tldC50aWNrZXRfdHlwZT8uYWxsb3dzX3RvX3JlYXNzaWduICYmXG4gICAgKCF0aWNrZXQucHJvbW9fY29kZSB8fCB0aWNrZXQucHJvbW9fY29kZT8uYWxsb3dzX3RvX3JlYXNzaWduKTtcblxuICByZXR1cm4ge1xuICAgIHN0YXR1cyxcbiAgICBpc0NvbXBsZXRlLFxuICAgIGlzVW5hc3NpZ25lZCxcbiAgICBpc0luY29tcGxldGUsXG4gICAgaXNBY3RpdmUsXG4gICAgaXNSZWZ1bmRhYmxlLFxuICAgIGFsbG93c0RlbGVnYXRlLFxuICAgIGNhblJlYXNzaWduXG4gIH07XG59O1xuIiwiaW1wb3J0IGkxOG4gZnJvbSBcImkxOG5leHRcIjtcbmltcG9ydCB7IGluaXRSZWFjdEkxOG5leHQgfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IExhbmd1YWdlRGV0ZWN0b3IgZnJvbSBcImkxOG5leHQtYnJvd3Nlci1sYW5ndWFnZWRldGVjdG9yXCI7XG5pbXBvcnQgZW4gZnJvbSBcIi4vbG9jYWxlcy9lbi5qc29uXCI7XG5pbXBvcnQgZXMgZnJvbSBcIi4vbG9jYWxlcy9lcy5qc29uXCI7XG5cbi8vIGltcG9ydCBCYWNrZW5kIGZyb20gJ2kxOG5leHQtaHR0cC1iYWNrZW5kJztcbi8vIGRvbid0IHdhbnQgdG8gdXNlIHRoaXM/XG4vLyBoYXZlIGEgbG9vayBhdCB0aGUgUXVpY2sgc3RhcnQgZ3VpZGVcbi8vIGZvciBwYXNzaW5nIGluIGxuZyBhbmQgdHJhbnNsYXRpb25zIG9uIGluaXRcblxuaTE4blxuICAvLyBsb2FkIHRyYW5zbGF0aW9uIHVzaW5nIGh0dHAgLT4gc2VlIC9wdWJsaWMvbG9jYWxlcyAoaS5lLiBodHRwczovL2dpdGh1Yi5jb20vaTE4bmV4dC9yZWFjdC1pMThuZXh0L3RyZWUvbWFzdGVyL2V4YW1wbGUvcmVhY3QvcHVibGljL2xvY2FsZXMpXG4gIC8vIGxlYXJuIG1vcmU6IGh0dHBzOi8vZ2l0aHViLmNvbS9pMThuZXh0L2kxOG5leHQtaHR0cC1iYWNrZW5kXG4gIC8vIHdhbnQgeW91ciB0cmFuc2xhdGlvbnMgdG8gYmUgbG9hZGVkIGZyb20gYSBwcm9mZXNzaW9uYWwgQ0ROPyA9PiBodHRwczovL2dpdGh1Yi5jb20vbG9jaXplL3JlYWN0LXR1dG9yaWFsI3N0ZXAtMi0tLXVzZS10aGUtbG9jaXplLWNkblxuICAvLyAudXNlKEJhY2tlbmQpXG4gIC8vIGRldGVjdCB1c2VyIGxhbmd1YWdlXG4gIC8vIGxlYXJuIG1vcmU6IGh0dHBzOi8vZ2l0aHViLmNvbS9pMThuZXh0L2kxOG5leHQtYnJvd3Nlci1sYW5ndWFnZURldGVjdG9yXG4gIC51c2UoTGFuZ3VhZ2VEZXRlY3RvcilcbiAgLy8gcGFzcyB0aGUgaTE4biBpbnN0YW5jZSB0byByZWFjdC1pMThuZXh0LlxuICAudXNlKGluaXRSZWFjdEkxOG5leHQpXG4gIC8vIGluaXQgaTE4bmV4dFxuICAvLyBmb3IgYWxsIG9wdGlvbnMgcmVhZDogaHR0cHM6Ly93d3cuaTE4bmV4dC5jb20vb3ZlcnZpZXcvY29uZmlndXJhdGlvbi1vcHRpb25zXG4gIC5pbml0KHtcbiAgICBmYWxsYmFja0xuZzogXCJlblwiLFxuICAgIGRlYnVnOiBmYWxzZSxcbiAgICByZXNvdXJjZXM6IHtcbiAgICAgIGVuOiB7IHRyYW5zbGF0aW9uOiBlbiB9LFxuICAgICAgZXM6IHsgdHJhbnNsYXRpb246IGVzIH1cbiAgICB9LFxuICAgIGludGVycG9sYXRpb246IHtcbiAgICAgIGVzY2FwZVZhbHVlOiBmYWxzZSAvLyBub3QgbmVlZGVkIGZvciByZWFjdCBhcyBpdCBlc2NhcGVzIGJ5IGRlZmF1bHRcbiAgICB9XG4gIH0pO1xuXG5leHBvcnQgZGVmYXVsdCBpMThuO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cbmltcG9ydCB7IExPR09VVF9VU0VSIH0gZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvc2VjdXJpdHkvYWN0aW9uc1wiO1xuaW1wb3J0IHtcbiAgU1RBUlRfTE9BRElORyxcbiAgU1RPUF9MT0FESU5HLFxuICBSRVNFVF9MT0FESU5HXG59IGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL2FjdGlvbnNcIjtcbmltcG9ydCB7XG4gIFJFU0VUX1NUQVRFLFxuICBSRVNFVF9GSUxURVIsXG4gIFNFVF9TVEFURSxcbiAgU0VUX1VTRVIsXG4gIEdFVF9VU0VSX09SREVSUyxcbiAgR0VUX01ZX0FTU0lHTkVEX1RJQ0tFVFMsXG4gIEdFVF9USUNLRVRTX0JZX09SREVSLFxuICBVUERBVEVfVElDS0VUU19SRUZVTkRfUkVRVUVTVEVELFxuICBSRUNFSVZFX1RJQ0tFVCxcbiAgUkVDRUlWRV9FWFRSQV9RVUVTVElPTlMsXG4gIFVQREFURV9USUNLRVQsXG4gIEFTU0lHTl9USUNLRVQsXG4gIFJFU0VUX0FQSV9FUlJPUixcbiAgU0VUX0FQSV9FUlJPUixcbiAgUkVTRVRfVElDS0VULFxuICBDSEFOR0VfRklMVEVSLFxuICBDSEFOR0VfU09SVCxcbiAgRklMVEVSX1ZBUl9CQURHRV9GRUFUVVJFLFxuICBGSUxURVJfVkFSX09SREVSX05VTUJFUixcbiAgRklMVEVSX1ZBUl9EQVRFLFxuICBGSUxURVJfVkFSX1RJQ0tFVF9UWVBFLFxuICBGSUxURVJfVkFSX0ZSRUVfUEFJRCxcbiAgRklMVEVSX1ZBUl9PV05FUl9TVEFUVVMsXG4gIEZJTFRFUl9WQVJfVElDS0VUX0FTU0lHTkVELFxuICBGSUxURVJfVkFSX1BST01PQ09ERSxcbiAgREVMRUdBVEVfVElDS0VUXG59IGZyb20gXCIuL2FjdGlvbnNcIjtcbmltcG9ydCB7IEZJUlNUX1BBR0UsIFRBQlMgfSBmcm9tIFwiLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCB7IGhhc0xvYWRlZEFsbERhdGEgfSBmcm9tIFwiLi91dGlsc1wiO1xuaW1wb3J0IHsgdXBkYXRlVGlja2V0Q29sbGVjdGlvbiB9IGZyb20gXCIuL3V0aWxzL3RpY2tldFV0aWxzXCI7XG5cbmNvbnN0IERFRkFVTFRfRklMVEVSX1NUQVRFID0ge1xuICBbRklMVEVSX1ZBUl9CQURHRV9GRUFUVVJFXTogW10sXG4gIFtGSUxURVJfVkFSX1RJQ0tFVF9UWVBFXTogW10sXG4gIFtGSUxURVJfVkFSX0ZSRUVfUEFJRF06IFwiXCIsXG4gIFtGSUxURVJfVkFSX09XTkVSX1NUQVRVU106IFwiXCIsXG4gIFtGSUxURVJfVkFSX1RJQ0tFVF9BU1NJR05FRF06IFwiXCIsXG4gIFtGSUxURVJfVkFSX1BST01PQ09ERV06IFwiXCIsXG4gIFtGSUxURVJfVkFSX09SREVSX05VTUJFUl06IFwiXCIsXG4gIFtGSUxURVJfVkFSX0RBVEVdOiBudWxsXG59O1xuXG5jb25zdCBERUZBVUxUX1NUQVRFID0ge1xuICBzdW1taXQ6IG51bGwsXG4gIHVzZXI6IHt9LFxuICB3aWRnZXRMb2FkaW5nOiBmYWxzZSxcbiAgbWVtYmVyT3JkZXJzOiBbXSxcbiAgdXNlclRpY2tldHM6IFtdLFxuICBleHRyYVF1ZXN0aW9uczogW10sXG4gIGN1cnJlbnRUaWNrZXQ6IG51bGwsXG4gIGVycm9yczoge30sXG4gIGxvYWRpbmc6IGZhbHNlLFxuICBjdXJyZW50X3RhYjogVEFCUy5PUkRFUlMsXG4gIHNvcnQ6IHt9LFxuICBmaWx0ZXI6IERFRkFVTFRfRklMVEVSX1NUQVRFLFxuICBvcmRlcnNfY3VycmVudF9wYWdlOiAwLFxuICBvcmRlcnNfbGFzdF9wYWdlOiAwLFxuICBvcmRlcnNfcGVyX3BhZ2U6IDUsXG4gIG9yZGVyc190b3RhbDogMCxcbiAgdGlja2V0X2N1cnJlbnRfcGFnZTogMCxcbiAgdGlja2V0X2xhc3RfcGFnZTogMCxcbiAgdGlja2V0X3Blcl9wYWdlOiA1LFxuICB0aWNrZXRfdG90YWw6IDAsXG4gIHVzZXJfdGlja2V0c190b3RhbDogMCxcbiAgdXNlcl90aWNrZXRzX2N1cnJlbnRfcGFnZTogMCxcbiAgdXNlcl90aWNrZXRzX2xhc3RfcGFnZTogMCxcbiAgYXBpRXJyb3I6IG51bGxcbn07XG5cbmNvbnN0IFdpZGdldFJlZHVjZXIgPSAoc3RhdGUgPSBERUZBVUxUX1NUQVRFLCB7IHR5cGUsIHBheWxvYWQgfSA9IHt9KSA9PiB7XG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgTE9HT1VUX1VTRVI6XG4gICAgY2FzZSBSRVNFVF9TVEFURTpcbiAgICAgIHJldHVybiBERUZBVUxUX1NUQVRFO1xuICAgIGNhc2UgU1RBUlRfTE9BRElORzpcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBsb2FkaW5nOiB0cnVlIH07XG4gICAgY2FzZSBTVE9QX0xPQURJTkc6XG4gICAgY2FzZSBSRVNFVF9MT0FESU5HOlxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIGxvYWRpbmc6IGZhbHNlIH07XG4gICAgY2FzZSBSRVNFVF9BUElfRVJST1I6XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgYXBpRXJyb3I6IG51bGwgfTtcbiAgICBjYXNlIFJFU0VUX0ZJTFRFUjpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBmaWx0ZXI6IERFRkFVTFRfRklMVEVSX1NUQVRFLFxuICAgICAgICBzb3J0OiB7fSxcbiAgICAgICAgb3JkZXJzX2N1cnJlbnRfcGFnZTogMSxcbiAgICAgICAgb3JkZXJzX2xhc3RfcGFnZTogMVxuICAgICAgfTtcbiAgICBjYXNlIFNFVF9TVEFURTpcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCAuLi5wYXlsb2FkIH07XG4gICAgY2FzZSBTRVRfQVBJX0VSUk9SOiB7XG4gICAgICBjb25zdCB7IHRpdGxlLCBodG1sOiBib2R5IH0gPSBwYXlsb2FkO1xuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIGFwaUVycm9yOiB7IHRpdGxlLCBib2R5IH0gfTtcbiAgICB9XG4gICAgY2FzZSBTRVRfVVNFUjpcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCB1c2VyOiBwYXlsb2FkIH07XG4gICAgY2FzZSBDSEFOR0VfRklMVEVSOiB7XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgZmlsdGVyOiB7IC4uLnN0YXRlLmZpbHRlciwgLi4ucGF5bG9hZCB9IH07XG4gICAgfVxuICAgIGNhc2UgQ0hBTkdFX1NPUlQ6IHtcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBzb3J0OiB7IC4uLnBheWxvYWQgfSB9O1xuICAgIH1cbiAgICBjYXNlIEdFVF9VU0VSX09SREVSUzoge1xuICAgICAgY29uc3QgeyBkYXRhLCB0b3RhbCwgY3VycmVudF9wYWdlLCBsYXN0X3BhZ2UgfSA9IHBheWxvYWQucmVzcG9uc2U7XG5cbiAgICAgIGlmIChoYXNMb2FkZWRBbGxEYXRhKGN1cnJlbnRfcGFnZSwgc3RhdGUubWVtYmVyT3JkZXJzLCB0b3RhbCkpXG4gICAgICAgIHJldHVybiBzdGF0ZTtcblxuICAgICAgY29uc3QgbWVtYmVyT3JkZXJzID1cbiAgICAgICAgY3VycmVudF9wYWdlID09PSBGSVJTVF9QQUdFID8gZGF0YSA6IFsuLi5zdGF0ZS5tZW1iZXJPcmRlcnMsIC4uLmRhdGFdO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgbWVtYmVyT3JkZXJzLFxuICAgICAgICBvcmRlcnNfdG90YWw6IHRvdGFsLFxuICAgICAgICBvcmRlcnNfY3VycmVudF9wYWdlOiBjdXJyZW50X3BhZ2UsXG4gICAgICAgIG9yZGVyc19sYXN0X3BhZ2U6IGxhc3RfcGFnZVxuICAgICAgfTtcbiAgICB9XG4gICAgY2FzZSBHRVRfTVlfQVNTSUdORURfVElDS0VUUzoge1xuICAgICAgY29uc3QgeyBkYXRhLCB0b3RhbCwgY3VycmVudF9wYWdlLCBsYXN0X3BhZ2UgfSA9IHBheWxvYWQucmVzcG9uc2U7XG5cbiAgICAgIGlmIChoYXNMb2FkZWRBbGxEYXRhKGN1cnJlbnRfcGFnZSwgc3RhdGUudXNlclRpY2tldHMsIHRvdGFsKSlcbiAgICAgICAgcmV0dXJuIHN0YXRlO1xuXG4gICAgICBjb25zdCB1c2VyVGlja2V0cyA9XG4gICAgICAgIGN1cnJlbnRfcGFnZSA9PT0gRklSU1RfUEFHRSA/IGRhdGEgOiBbLi4uc3RhdGUudXNlclRpY2tldHMsIC4uLmRhdGFdO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgdXNlclRpY2tldHMsXG4gICAgICAgIHVzZXJfdGlja2V0c190b3RhbDogdG90YWwsXG4gICAgICAgIHVzZXJfdGlja2V0c19jdXJyZW50X3BhZ2U6IGN1cnJlbnRfcGFnZSxcbiAgICAgICAgdXNlcl90aWNrZXRzX2xhc3RfcGFnZTogbGFzdF9wYWdlXG4gICAgICB9O1xuICAgIH1cbiAgICBjYXNlIEdFVF9USUNLRVRTX0JZX09SREVSOiB7XG4gICAgICBjb25zdCB7IG1lbWJlck9yZGVycyB9ID0gc3RhdGU7XG4gICAgICBjb25zdCB7IGRhdGEsIHRvdGFsLCBjdXJyZW50X3BhZ2UsIGxhc3RfcGFnZSB9ID0gcGF5bG9hZC5yZXNwb25zZTtcbiAgICAgIGNvbnN0IGZvcm1lck9yZGVyID0gbWVtYmVyT3JkZXJzLmZpbmQoKG8pID0+IG8uaWQgPT09IGRhdGFbMF0/Lm9yZGVyX2lkKTtcblxuICAgICAgaWYgKGhhc0xvYWRlZEFsbERhdGEoY3VycmVudF9wYWdlLCBmb3JtZXJPcmRlcj8ubWVtYmVyVGlja2V0cywgdG90YWwpKVxuICAgICAgICByZXR1cm4gc3RhdGU7XG5cbiAgICAgIGNvbnN0IHVwZGF0ZWRPcmRlciA9IHtcbiAgICAgICAgLi4uZm9ybWVyT3JkZXIsXG4gICAgICAgIG1lbWJlclRpY2tldHM6XG4gICAgICAgICAgY3VycmVudF9wYWdlID09PSBGSVJTVF9QQUdFXG4gICAgICAgICAgICA/IGRhdGFcbiAgICAgICAgICAgIDogWy4uLmZvcm1lck9yZGVyLm1lbWJlclRpY2tldHMsIC4uLmRhdGFdLFxuICAgICAgICB0aWNrZXRzX3BhZ2VfY3VycmVudDogY3VycmVudF9wYWdlLFxuICAgICAgICB0aWNrZXRzX3BhZ2VfbGFzdDogbGFzdF9wYWdlLFxuICAgICAgICB0aWNrZXRzX3RvdGFsOiB0b3RhbFxuICAgICAgfTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBtZW1iZXJPcmRlcnM6IG1lbWJlck9yZGVycy5tYXAoKG1vKSA9PlxuICAgICAgICAgIG1vLmlkID09PSB1cGRhdGVkT3JkZXIuaWQgPyB1cGRhdGVkT3JkZXIgOiBtb1xuICAgICAgICApXG4gICAgICB9O1xuICAgIH1cbiAgICBjYXNlIFVQREFURV9USUNLRVRTX1JFRlVORF9SRVFVRVNURUQ6IHtcbiAgICAgIGNvbnN0IHsgbWVtYmVyT3JkZXJzIH0gPSBzdGF0ZTtcbiAgICAgIGNvbnN0IHRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQgPSBwYXlsb2FkO1xuICAgICAgY29uc3Qgb3JkZXIgPSBtZW1iZXJPcmRlcnMuZmluZChcbiAgICAgICAgKG8pID0+IG8uaWQgPT09IHRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWRbMF0/Lm9yZGVyX2lkXG4gICAgICApO1xuICAgICAgY29uc3QgdXBkYXRlZFRpY2tldHMgPSBvcmRlcj8ubWVtYmVyVGlja2V0cy5tYXAoXG4gICAgICAgICh0aWNrZXQpID0+XG4gICAgICAgICAgdGlja2V0c1JlZnVuZFJlcXVlc3RlZC5maW5kKCh0cnIpID0+IHRyci5pZCA9PT0gdGlja2V0LmlkKSB8fCB0aWNrZXRcbiAgICAgICk7XG4gICAgICBjb25zdCB1cGRhdGVkT3JkZXIgPSB7XG4gICAgICAgIC4uLm9yZGVyLFxuICAgICAgICBtZW1iZXJUaWNrZXRzOiB1cGRhdGVkVGlja2V0c1xuICAgICAgfTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBtZW1iZXJPcmRlcnM6IG1lbWJlck9yZGVycy5tYXAoKG1vKSA9PlxuICAgICAgICAgIG1vLmlkID09PSB1cGRhdGVkT3JkZXIuaWQgPyB1cGRhdGVkT3JkZXIgOiBtb1xuICAgICAgICApXG4gICAgICB9O1xuICAgIH1cbiAgICBjYXNlIFJFU0VUX1RJQ0tFVDoge1xuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIGN1cnJlbnRUaWNrZXQ6IG51bGwgfTtcbiAgICB9XG4gICAgY2FzZSBSRUNFSVZFX1RJQ0tFVDoge1xuICAgICAgY29uc3QgdGlja2V0ID0gcGF5bG9hZC5yZXNwb25zZTtcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBjdXJyZW50VGlja2V0OiB0aWNrZXQgfTtcbiAgICB9XG4gICAgY2FzZSBSRUNFSVZFX0VYVFJBX1FVRVNUSU9OUzoge1xuICAgICAgY29uc3QgeyBkYXRhIH0gPSBwYXlsb2FkLnJlc3BvbnNlO1xuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIGV4dHJhUXVlc3Rpb25zOiBkYXRhIH07XG4gICAgfVxuICAgIGNhc2UgVVBEQVRFX1RJQ0tFVDoge1xuICAgICAgY29uc3QgdGlja2V0RGF0YSA9IHBheWxvYWQucmVzcG9uc2U7XG5cbiAgICAgIGNvbnN0IG5ld09yZGVycyA9IHN0YXRlLm1lbWJlck9yZGVycy5tYXAoKG9yZGVyKSA9PiB7XG4gICAgICAgIGNvbnN0IG5ld1RpY2tldHMgPSB1cGRhdGVUaWNrZXRDb2xsZWN0aW9uKFxuICAgICAgICAgIG9yZGVyLm1lbWJlclRpY2tldHMsXG4gICAgICAgICAgdGlja2V0RGF0YVxuICAgICAgICApO1xuICAgICAgICByZXR1cm4geyAuLi5vcmRlciwgbWVtYmVyVGlja2V0czogbmV3VGlja2V0cyB9O1xuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IG5ld1VzZXJUaWNrZXRzID0gdXBkYXRlVGlja2V0Q29sbGVjdGlvbihcbiAgICAgICAgc3RhdGUudXNlclRpY2tldHMsXG4gICAgICAgIHRpY2tldERhdGFcbiAgICAgICk7XG5cbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBtZW1iZXJPcmRlcnM6IG5ld09yZGVycywgdXNlclRpY2tldHM6IG5ld1VzZXJUaWNrZXRzIH07XG4gICAgfVxuICAgIGNhc2UgREVMRUdBVEVfVElDS0VUOlxuICAgIGNhc2UgQVNTSUdOX1RJQ0tFVDoge1xuICAgICAgY29uc3QgdGlja2V0RGF0YSA9IHBheWxvYWQucmVzcG9uc2U7XG4gICAgICBjb25zdCBuZXdPcmRlcnMgPSBzdGF0ZS5tZW1iZXJPcmRlcnMubWFwKChvcmRlcikgPT4ge1xuICAgICAgICBjb25zdCBuZXdUaWNrZXRzID0gb3JkZXIubWVtYmVyVGlja2V0cy5tYXAoKHQpID0+XG4gICAgICAgICAgdC5pZCA9PT0gdGlja2V0RGF0YS5pZCA/IHRpY2tldERhdGEgOiB0XG4gICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuIHsgLi4ub3JkZXIsIG1lbWJlclRpY2tldHM6IG5ld1RpY2tldHMgfTtcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgY3VycmVudFRpY2tldDogdGlja2V0RGF0YSwgbWVtYmVyT3JkZXJzOiBuZXdPcmRlcnMgfTtcbiAgICB9XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBzdGF0ZTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgV2lkZ2V0UmVkdWNlcjtcbiIsImltcG9ydCB7IHVzZU1lbW8gfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IGNvbmZpZ3VyZVN0b3JlIH0gZnJvbSBcIkByZWR1eGpzL3Rvb2xraXRcIjtcbmltcG9ydCB7XG4gIHBlcnNpc3RTdG9yZSxcbiAgcGVyc2lzdFJlZHVjZXIsXG4gIEZMVVNILFxuICBSRUhZRFJBVEUsXG4gIFBBVVNFLFxuICBQRVJTSVNULFxuICBQVVJHRSxcbiAgUkVHSVNURVJcbn0gZnJvbSBcInJlZHV4LXBlcnNpc3RcIjtcbmltcG9ydCBzdG9yYWdlIGZyb20gXCJyZWR1eC1wZXJzaXN0L2xpYi9zdG9yYWdlXCI7XG5pbXBvcnQgeyBjb21iaW5lUmVkdWNlcnMgfSBmcm9tIFwicmVkdXhcIjtcbmltcG9ydCBXaWRnZXRSZWR1Y2VyIGZyb20gXCIuL3JlZHVjZXJcIjtcblxuZXhwb3J0IGNvbnN0IGdldFN0b3JlID0gKHtcbiAgY2xpZW50SWQsXG4gIGxvZ2luVXJsLFxuICBzdW1taXQsXG4gIGFwaUJhc2VVcmwsXG4gIHVwZGF0ZVByb2ZpbGVcbn0pID0+IHtcbiAgLy8gdG8gYWRkIG90aGVyIHJlZHVjZXJzIGxhdGVyXG4gIGNvbnN0IHJlZHVjZXJzID0gY29tYmluZVJlZHVjZXJzKHtcbiAgICB3aWRnZXRTdGF0ZTogV2lkZ2V0UmVkdWNlclxuICB9KTtcblxuICBjb25zdCBzdG9yZSA9IGNvbmZpZ3VyZVN0b3JlKHtcbiAgICByZWR1Y2VyOiBwZXJzaXN0UmVkdWNlcihcbiAgICAgIHtcbiAgICAgICAga2V5OiBgcm9vdF9teV9vcmRlcnNfdGlja2V0c18ke2NsaWVudElkfWAsXG4gICAgICAgIHN0b3JhZ2VcbiAgICAgIH0sXG4gICAgICByZWR1Y2Vyc1xuICAgICksXG4gICAgbWlkZGxld2FyZTogKGdldERlZmF1bHRNaWRkbGV3YXJlKSA9PlxuICAgICAgZ2V0RGVmYXVsdE1pZGRsZXdhcmUoe1xuICAgICAgICB0aHVuazoge1xuICAgICAgICAgIGV4dHJhQXJndW1lbnQ6IHtcbiAgICAgICAgICAgIGNsaWVudElkLFxuICAgICAgICAgICAgYXBpQmFzZVVybCxcbiAgICAgICAgICAgIHN1bW1pdCxcbiAgICAgICAgICAgIGxvZ2luVXJsLFxuICAgICAgICAgICAgdXBkYXRlUHJvZmlsZVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgaW1tdXRhYmxlQ2hlY2s6IGZhbHNlLFxuICAgICAgICBzZXJpYWxpemFibGVDaGVjazoge1xuICAgICAgICAgIGlnbm9yZWRBY3Rpb25zOiBbRkxVU0gsIFJFSFlEUkFURSwgUEFVU0UsIFBFUlNJU1QsIFBVUkdFLCBSRUdJU1RFUl1cbiAgICAgICAgfVxuICAgICAgfSlcbiAgfSk7XG5cbiAgcmV0dXJuIHN0b3JlO1xufTtcblxuZXhwb3J0IGNvbnN0IHVzZUluaXRTdG9yZSA9IChjb25maWcpID0+IHtcbiAgY29uc3Qgc3RvcmUgPSB1c2VNZW1vKCgpID0+IGdldFN0b3JlKGNvbmZpZyksIFtdKTtcbiAgY29uc3QgcGVyc2lzdG9yID0gdXNlTWVtbygoKSA9PiBwZXJzaXN0U3RvcmUoc3RvcmUpLCBbc3RvcmVdKTtcblxuICByZXR1cm4ge1xuICAgIHN0b3JlLFxuICAgIHBlcnNpc3RvclxuICB9O1xufTtcbiIsImltcG9ydCB7XG4gIGluaXRMb2dPdXQsXG4gIGdldEFjY2Vzc1Rva2VuXG59IGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3NlY3VyaXR5L21ldGhvZHNcIjtcbmltcG9ydCAqIGFzIFNlbnRyeSBmcm9tIFwiQHNlbnRyeS9yZWFjdFwiO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcbmNvbnN0IGdldEFjY2Vzc1Rva2VuTW9jayA9ICgpID0+IHtcbiAgdGhyb3cgbmV3IEVycm9yKFwiQWNjZXNzIHRva2VuIGVycm9yXCIpO1xuICAvLyByZXR1cm4gYXV0aFByb21pc2VSZWplY3QoKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRBY2Nlc3NUb2tlblNhZmVseSA9IGFzeW5jICgpID0+IHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gYXdhaXQgZ2V0QWNjZXNzVG9rZW4oKS5jYXRjaCgoZSkgPT4ge1xuICAgICAgY29uc29sZS5sb2coXCJteS1vcmRlcnMtdGlja2V0cy13aWRnZXQ6OmdldEFjY2Vzc1Rva2VuU2FmZWx5IGVycm9yOiBcIiwgZSk7XG4gICAgICBTZW50cnkuY2FwdHVyZUV4Y2VwdGlvbihlKTtcbiAgICAgIGluaXRMb2dPdXQoKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH0pO1xuICB9IGNhdGNoIChlKSB7XG4gICAgY29uc29sZS5sb2coXCJteS1vcmRlcnMtdGlja2V0cy13aWRnZXQ6OmdldEFjY2Vzc1Rva2VuU2FmZWx5IGVycm9yOiBcIiwgZSk7XG4gICAgU2VudHJ5LmNhcHR1cmVFeGNlcHRpb24oZSk7XG4gICAgaW5pdExvZ091dCgpO1xuICAgIHJldHVybiBudWxsO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgYXV0aFByb21pc2VSZWplY3QgPSBhc3luYyAoKSA9PlxuICBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoXCJBdXRoIFRva2VuIGVycm9yXCIpKTtcbiIsImV4cG9ydCBjb25zdCBMQVNUX0hPVVJfT0ZfMjRfSE9VUiA9IDIzO1xuZXhwb3J0IGNvbnN0IExBU1RfTUlOVVRFX09GX0hPVVIgPSA1OTtcbmV4cG9ydCBjb25zdCBPTkVfUEFHRV9ORVhUID0gMTtcbmV4cG9ydCBjb25zdCBNSUxMSVNFQ19UT19TRUMgPSAxMDAwO1xuZXhwb3J0IGNvbnN0IE9ORV9EQVkgPSAxO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfSVRFTVNfUEVSX1BBR0UgPSA1O1xuZXhwb3J0IGNvbnN0IEZJUlNUX1BBR0UgPSAxO1xuZXhwb3J0IGNvbnN0IFBBR0lOQVRJT05fRElTUExBWV9DT1VOVCA9IDU7XG5leHBvcnQgY29uc3QgU1RFUF9PTkUgPSAxO1xuZXhwb3J0IGNvbnN0IFNURVBfVFdPID0gMjtcbmV4cG9ydCBjb25zdCBTVEVQX1RIUkVFID0gMztcblxuZXhwb3J0IGNvbnN0IFNUQVRVU19DT01QTEVURSA9IFwiU1RBVFVTX0NPTVBMRVRFXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX0lOQ09NUExFVEUgPSBcIlNUQVRVU19JTkNPTVBMRVRFXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1BFTkRJTkcgPSBcIlNUQVRVU19QRU5ESU5HXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX0NBTkNFTExFRCA9IFwiU1RBVFVTX0NBTkNFTExFRFwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19FUlJPUiA9IFwiU1RBVFVTX0VSUk9SXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1BST0NFU1NJTkcgPSBcIlNUQVRVU19QUk9DRVNTSU5HXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1VOQVNTSUdORUQgPSBcIlNUQVRVU19VTkFTU0lHTkVEXCI7XG5cbmV4cG9ydCBjb25zdCBTVEFUVVNfUkVGVU5EX1BFTkRJTkcgPSBcIlNUQVRVU19SRUZVTkRfUEVORElOR1wiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19SRUZVTkRfQVBQUk9WRUQgPSBcIlNUQVRVU19SRUZVTkRfQVBQUk9WRURcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfUkVGVU5EX1JFSkVDVEVEID0gXCJTVEFUVVNfUkVGVU5EX1JFSkVDVEVEXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1JFRlVORF9QRU5ESU5HX0xDID0gXCJSZXF1ZXN0ZWRcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfUkVGVU5EX0FQUFJPVkVEX0xDID0gXCJBcHByb3ZlZFwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19SRUZVTkRfUkVKRUNURURfTEMgPSBcIlJlamVjdGVkXCI7XG5cbmV4cG9ydCBjb25zdCBKRVNUX1RJTUVPVVRfSU5fTUlMTElTRUMgPSAxMDAwMDtcblxuZXhwb3J0IGNvbnN0IE9ORV9JVEVNID0gMTtcbmV4cG9ydCBjb25zdCBUV09fSVRFTSA9IDI7XG5leHBvcnQgY29uc3QgRklWRV9JVEVNID0gNTtcbmV4cG9ydCBjb25zdCBTSVhfSVRFTSA9IDY7XG5cbmV4cG9ydCBjb25zdCBQUk9NSVNFX0JBVENIX0xJTUlUID0gMTA7XG5leHBvcnQgY29uc3QgRklGVFlfUEVSX1BBR0UgPSA1MDtcblxuZXhwb3J0IGNvbnN0IEVSUk9SX0NPREVTID0ge1xuICA0MDE6IDQwMSxcbiAgNDAzOiA0MDEsXG4gIDQxMjogNDAxLFxuICA1MDA6IDUwMFxufTtcblxuZXhwb3J0IGNvbnN0IFRBQlMgPSB7XG4gIE9SREVSUzogXCJPUkRFUlNcIixcbiAgVElDS0VUUzogXCJUSUNLRVRTXCJcbn07XG4iLCJpbXBvcnQgbW9tZW50IGZyb20gXCJtb21lbnQtdGltZXpvbmVcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQge1xuICBMQVNUX0hPVVJfT0ZfMjRfSE9VUixcbiAgTEFTVF9NSU5VVEVfT0ZfSE9VUixcbiAgTUlMTElTRUNfVE9fU0VDLFxuICBGSVJTVF9QQUdFXG59IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuXG5leHBvcnQgY29uc3QgZm9ybWF0Q3VycmVuY3kgPSAodmFsdWUsIHsgbG9jYWxlID0gXCJlbi1VU1wiLCAuLi5vcHRpb25zIH0pID0+IHtcbiAgY29uc3QgZGVmYXVsdE9wdGlvbnMgPSB7XG4gICAgY3VycmVuY3k6IFwiVVNEXCIsXG4gICAgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAyLFxuICAgIG1heGltdW1GcmFjdGlvbkRpZ2l0czogMlxuICB9O1xuXG4gIGNvbnN0IGZvcm1hdHRlciA9IG5ldyBJbnRsLk51bWJlckZvcm1hdChsb2NhbGUsIHtcbiAgICBzdHlsZTogXCJjdXJyZW5jeVwiLFxuICAgIC4uLmRlZmF1bHRPcHRpb25zLFxuICAgIC4uLm9wdGlvbnNcbiAgfSk7XG5cbiAgcmV0dXJuIGZvcm1hdHRlci5mb3JtYXQodmFsdWUpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEZvcm1hdHRlZERhdGUgPSAoZGF0ZXRpbWUsIHRpbWVab25lKSA9PiB7XG4gIGlmICh0aW1lWm9uZSlcbiAgICByZXR1cm4gbW9tZW50XG4gICAgICAudHooZGF0ZXRpbWUgKiBNSUxMSVNFQ19UT19TRUMsIHRpbWVab25lKVxuICAgICAgLmZvcm1hdChcIk1NTU0gREQsIFlZWVlcIik7XG5cbiAgcmV0dXJuIG1vbWVudC51bml4KGRhdGV0aW1lKS5mb3JtYXQoXCJNTU1NIERELCBZWVlZXCIpO1xufTtcblxuZXhwb3J0IGNvbnN0IGNhbGN1bGF0ZU9yZGVyVG90YWxzID0gKHsgb3JkZXIsIHN1bW1pdCB9KSA9PiB7XG4gIGlmICghb3JkZXIgfHwgIXN1bW1pdCkgcmV0dXJuIHt9O1xuICBjb25zdCB0aWNrZXRzID0gb3JkZXI/Lm1lbWJlclRpY2tldHM7XG4gIGlmICghdGlja2V0cykgcmV0dXJuIHt9O1xuXG4gIGNvbnN0IHsgcmVmdW5kZWRfYW1vdW50LCBkaXNjb3VudF9hbW91bnQsIHRheGVzX2Ftb3VudCwgYW1vdW50IH0gPSBvcmRlcjtcbiAgY29uc3QgeyB0aWNrZXRfdHlwZXMgfSA9IHN1bW1pdDtcblxuICBjb25zdCB0aWNrZXRTdW1tYXJ5ID0gW107XG4gIGxldCBwdXJjaGFzZVRpY2tldFRvdGFsID0gMDtcblxuICBjb25zdCBjdXJyZW5jeU9iamVjdCA9IHsgY3VycmVuY3k6IG9yZGVyLmN1cnJlbmN5IH07XG5cbiAgT2JqZWN0LmtleXMob3JkZXIudGlja2V0c19leGNlcnB0X2J5X3RpY2tldF90eXBlKS5tYXAoKHRpY2tldCkgPT4ge1xuICAgIGNvbnN0IHRpY2tldFR5cGUgPSB0aWNrZXRfdHlwZXM/LmZpbmQoKHR0KSA9PiB0dC5uYW1lID09PSB0aWNrZXQpO1xuICAgIGlmICghdGlja2V0VHlwZSkgcmV0dXJuIG51bGw7XG4gICAgdGlja2V0U3VtbWFyeS5wdXNoKHtcbiAgICAgIHRpY2tldF90eXBlX2lkOiB0aWNrZXRUeXBlLmlkLFxuICAgICAgdGlja2V0X3R5cGU6IHRpY2tldFR5cGUsXG4gICAgICBuYW1lOiB0aWNrZXQsXG4gICAgICBxdHk6IG9yZGVyLnRpY2tldHNfZXhjZXJwdF9ieV90aWNrZXRfdHlwZVt0aWNrZXRdXG4gICAgfSk7XG4gICAgcHVyY2hhc2VUaWNrZXRUb3RhbCArPVxuICAgICAgdGlja2V0VHlwZS5jb3N0ICogb3JkZXIudGlja2V0c19leGNlcnB0X2J5X3RpY2tldF90eXBlW3RpY2tldF07XG5cbiAgICByZXR1cm4gdGlja2V0U3VtbWFyeTtcbiAgfSk7XG5cbiAgY29uc3QgcHVyY2hhc2VUb3RhbCA9IGZvcm1hdEN1cnJlbmN5KHB1cmNoYXNlVGlja2V0VG90YWwsIGN1cnJlbmN5T2JqZWN0KTtcblxuICBjb25zdCBkaXNjb3VudFRvdGFsID0gZm9ybWF0Q3VycmVuY3koZGlzY291bnRfYW1vdW50LCBjdXJyZW5jeU9iamVjdCk7XG4gIGNvbnN0IHJlZnVuZFRvdGFsID0gZm9ybWF0Q3VycmVuY3kocmVmdW5kZWRfYW1vdW50LCBjdXJyZW5jeU9iamVjdCk7XG4gIGNvbnN0IHRheGVzVG90YWwgPSBmb3JtYXRDdXJyZW5jeSh0YXhlc19hbW91bnQsIGN1cnJlbmN5T2JqZWN0KTtcbiAgY29uc3QgYW1vdW50VG90YWwgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob3JkZXIsIFwiYW1vdW50XCIpXG4gICAgPyBmb3JtYXRDdXJyZW5jeShhbW91bnQsIGN1cnJlbmN5T2JqZWN0KVxuICAgIDogZm9ybWF0Q3VycmVuY3kocHVyY2hhc2VUb3RhbCwgY3VycmVuY3lPYmplY3QpO1xuXG4gIHJldHVybiB7XG4gICAgZGlzY291bnRUb3RhbCxcbiAgICByZWZ1bmRUb3RhbCxcbiAgICB0YXhlc1RvdGFsLFxuICAgIGFtb3VudFRvdGFsLFxuICAgIHRpY2tldFN1bW1hcnlcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRPcmRlclRpY2tldHMgPSAobWVtYmVyT3JkZXJzLCBvcmRlcklkKSA9PiB7XG4gIGNvbnN0IG9yZGVycyA9IG1lbWJlck9yZGVycy5maWx0ZXIoKG8pID0+IG8uaWQgPT09IG9yZGVySWQpO1xuICByZXR1cm4gb3JkZXJzWzBdPy5tZW1iZXJUaWNrZXRzO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEVwb2NoTG93ZXJVcHBlckluU2Vjb25kcyA9ICh0cykgPT4ge1xuICBjb25zdCBsb3dlciA9IHRzLnNldEhvdXJzKDAsIDAsIDAsIDApIC8gTUlMTElTRUNfVE9fU0VDO1xuICBjb25zdCB1cHBlciA9XG4gICAgdHMuc2V0SG91cnMoTEFTVF9IT1VSX09GXzI0X0hPVVIsIExBU1RfTUlOVVRFX09GX0hPVVIsIDAsIDApIC9cbiAgICBNSUxMSVNFQ19UT19TRUM7XG4gIHJldHVybiB7XG4gICAgbG93ZXIsXG4gICAgdXBwZXJcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0Q3VycmVudFRpbWUgPSAoKSA9PlxuICBNYXRoLnJvdW5kKCtuZXcgRGF0ZSgpIC8gTUlMTElTRUNfVE9fU0VDKTtcblxuZXhwb3J0IGNvbnN0IGdldE5vdyA9ICgpID0+IChkaXNwYXRjaCwgZ2V0U3RhdGUpID0+IHtcbiAgY29uc3QgeyB0aW1lclN0YXRlIH0gPSBnZXRTdGF0ZSgpO1xuICByZXR1cm4gdGltZXJTdGF0ZT8ubm93VXRjID09IG51bGwgPyBkZWZhdWx0Q3VycmVudFRpbWUoKSA6IHRpbWVyU3RhdGU/Lm5vd1V0Yztcbn07XG5cbmV4cG9ydCBjb25zdCB1c2VOb3cgPSAoKSA9PiB7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcblxuICByZXR1cm4gZGlzcGF0Y2goZ2V0Tm93KCkpO1xufTtcblxuLyoqXG4gKiBAcGFyYW0gY3VycmVudFBhZ2VcbiAqIEBwYXJhbSBkYXRhXG4gKiBAcGFyYW0gdG90YWxcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5leHBvcnQgY29uc3QgaGFzTG9hZGVkQWxsRGF0YSA9IChjdXJyZW50UGFnZSwgZGF0YSwgdG90YWwpID0+IHtcbiAgbGV0IHJlcyA9IGZhbHNlO1xuICBjb25zdCBkYXRhTGVuZ3RoID0gQXJyYXkuaXNBcnJheShkYXRhKSA/IGRhdGEubGVuZ3RoIDogMDtcbiAgLy8gd2UgYWxyZWFkeSBsb2FkZWQgYWxsICBkYXRhICggZmlyc3QgcGFnZSBpcyBhbHdheXMgcmVsb2FkZWQgaXQgKVxuICBpZiAoY3VycmVudFBhZ2UgPiBGSVJTVF9QQUdFICYmIGRhdGFMZW5ndGggPiAwICYmIGRhdGFMZW5ndGggPT09IHRvdGFsKVxuICAgIHJlcyA9IHRydWU7XG4gIHJldHVybiByZXM7XG59O1xuIiwiaW1wb3J0IG1vbWVudCBmcm9tIFwibW9tZW50LXRpbWV6b25lXCI7XG5pbXBvcnQgeyBNSUxMSVNFQ19UT19TRUMsIE9ORV9EQVkgfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IHVzZU5vdyB9IGZyb20gXCIuXCI7XG5cbmV4cG9ydCBjb25zdCBjaGVja1N1bW1pdFBhc3QgPSAoc3VtbWl0LCBub3cpID0+IHtcbiAgaWYgKCFzdW1taXQpIHJldHVybiBudWxsO1xuXG4gIGNvbnN0IHJlYXNzaWduX2RhdGUgPVxuICAgIHN1bW1pdD8ucmVhc3NpZ25fdGlja2V0X3RpbGxfZGF0ZSAmJlxuICAgIHN1bW1pdC5yZWFzc2lnbl90aWNrZXRfdGlsbF9kYXRlIDwgc3VtbWl0LmVuZF9kYXRlXG4gICAgICA/IHN1bW1pdC5yZWFzc2lnbl90aWNrZXRfdGlsbF9kYXRlXG4gICAgICA6IHN1bW1pdC5lbmRfZGF0ZTtcblxuICByZXR1cm4gbm93ID4gcmVhc3NpZ25fZGF0ZTtcbn07XG5cbmV4cG9ydCBjb25zdCBjaGVja1N1bW1pdFN0YXJ0ZWQgPSAoc3VtbWl0LCBub3cpID0+IHtcbiAgaWYgKCFzdW1taXQpIHJldHVybiBudWxsO1xuXG4gIHJldHVybiBzdW1taXQuc3RhcnRfZGF0ZSA8IG5vdztcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTdW1taXREYXlzRGlmZiA9IChzdW1taXQpID0+IHtcbiAgaWYgKCFzdW1taXQpIHJldHVybiBudWxsO1xuICBjb25zdCBzdGFydERheSA9IG1vbWVudChzdW1taXQuc3RhcnRfZGF0ZSAqIE1JTExJU0VDX1RPX1NFQykudHooXG4gICAgc3VtbWl0LnRpbWVfem9uZV9pZFxuICApO1xuICBjb25zdCBlbmREYXkgPSBtb21lbnQoc3VtbWl0LmVuZF9kYXRlICogTUlMTElTRUNfVE9fU0VDKS50eihcbiAgICBzdW1taXQudGltZV96b25lX2lkXG4gICk7XG4gIGNvbnN0IGRheXMgPSBlbmREYXk/LmRpZmYoc3RhcnREYXksIFwiZGF5c1wiKTtcbiAgcmV0dXJuIHtcbiAgICBzdGFydERheSxcbiAgICBlbmREYXksXG4gICAgZGF5c1xuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFN1bW1pdEZvcm1hdHRlZERhdGUgPSAoc3VtbWl0KSA9PiB7XG4gIGlmICghc3VtbWl0KSByZXR1cm4gbnVsbDtcbiAgY29uc3QgeyBzdGFydERheSwgZW5kRGF5LCBkYXlzIH0gPSBnZXRTdW1taXREYXlzRGlmZihzdW1taXQpO1xuICBpZiAoIXN0YXJ0RGF5IHx8ICFlbmREYXkpIHJldHVybiBudWxsO1xuICBsZXQgZm9ybWF0U3RhcnREYXRlID0gXCJNTU1NIERELCBZWVlZXCI7XG4gIGxldCBmb3JtYXRFbmREYXRlID0gXCJNTU1NIERELCBZWVlZXCI7XG4gIGlmIChzdGFydERheS55ZWFyKCkgPT09IGVuZERheS55ZWFyKCkpIGZvcm1hdFN0YXJ0RGF0ZSA9IFwiTU1NTSBERFwiO1xuICBpZiAoc3RhcnREYXkubW9udGgoKSA9PT0gZW5kRGF5Lm1vbnRoKCkpIGZvcm1hdEVuZERhdGUgPSBcIkRELCBZWVlZXCI7XG5cbiAgY29uc3Qgc3RhcnREYXRlID0gc3RhcnREYXkuZm9ybWF0KGZvcm1hdFN0YXJ0RGF0ZSk7XG4gIGNvbnN0IGVuZERhdGUgPSBlbmREYXkuZm9ybWF0KGZvcm1hdEVuZERhdGUpO1xuXG4gIGlmIChkYXlzID4gT05FX0RBWSkgcmV0dXJuIGAke3N0YXJ0RGF0ZX0gLSAke2VuZERhdGV9YDtcblxuICByZXR1cm4gc3RhcnREYXRlO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFN1bW1pdExvY2F0aW9uID0gKHN1bW1pdCkgPT4ge1xuICBpZiAoIXN1bW1pdCkgcmV0dXJuIG51bGw7XG5cbiAgY29uc3QgbG9jYXRpb24gPSBzdW1taXQubG9jYXRpb25zPy5maW5kKFxuICAgIChsKSA9PiBsLmNsYXNzX25hbWUgPT09IFwiU3VtbWl0VmVudWVcIiAmJiBsLmlzX21haW4gPT09IHRydWVcbiAgKTtcblxuICBpZiAoIWxvY2F0aW9uKSByZXR1cm4gbnVsbDtcblxuICByZXR1cm4gYCR7bG9jYXRpb24uY2l0eX0sICR7bG9jYXRpb24uY291bnRyeX1gO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFN1bW1pdFJlYXNzaWduRGF0ZSA9IChzdW1taXQpID0+IHtcbiAgaWYgKCFzdW1taXQpIHJldHVybiBudWxsO1xuXG4gIHJldHVybiBzdW1taXQucmVhc3NpZ25fdGlja2V0X3RpbGxfZGF0ZSAmJlxuICAgIHN1bW1pdC5yZWFzc2lnbl90aWNrZXRfdGlsbF9kYXRlIDwgc3VtbWl0LmVuZF9kYXRlXG4gICAgPyBzdW1taXQucmVhc3NpZ25fdGlja2V0X3RpbGxfZGF0ZVxuICAgIDogc3VtbWl0LmVuZF9kYXRlO1xufTtcblxuZXhwb3J0IGNvbnN0IHVzZVN1bW1pdERldGFpbHMgPSAoeyBzdW1taXQgfSkgPT4ge1xuICBjb25zdCBub3cgPSB1c2VOb3coKTtcblxuICBpZiAoIXN1bW1pdCkgcmV0dXJuIHt9O1xuXG4gIGNvbnN0IGxvY2F0aW9uID0gZ2V0U3VtbWl0TG9jYXRpb24oc3VtbWl0KTtcbiAgY29uc3QgZm9ybWF0dGVkRGF0ZSA9IGdldFN1bW1pdEZvcm1hdHRlZERhdGUoc3VtbWl0KTtcbiAgY29uc3QgcmVhc3NpZ25EYXRlID0gZ2V0U3VtbWl0UmVhc3NpZ25EYXRlKHN1bW1pdCk7XG4gIGNvbnN0IGZvcm1hdHRlZFJlYXNzaWduRGF0ZSA9IG1vbWVudC50eihcbiAgICByZWFzc2lnbkRhdGUsXG4gICAgc3VtbWl0LnRpbWVfem9uZT8udGltZV96b25lX2lkXG4gICk7XG4gIGNvbnN0IGRheXNVbnRpbFJlYXNzaWduRGVhZGxpbmUgPSBnZXRTdW1taXREYXlzRGlmZihcbiAgICBub3csXG4gICAgcmVhc3NpZ25EYXRlLFxuICAgIHN1bW1pdC50aW1lX3pvbmU/Lm5hbWVcbiAgKTtcblxuICBjb25zdCBpc1Bhc3QgPSBjaGVja1N1bW1pdFBhc3Qoc3VtbWl0LCBub3cpO1xuICBjb25zdCBpc1N0YXJ0ZWQgPSBjaGVja1N1bW1pdFN0YXJ0ZWQoc3VtbWl0LCBub3cpO1xuICBjb25zdCBpc1JlYXNzaWduYWJsZSA9IHJlYXNzaWduRGF0ZSA+IG5vdztcblxuICByZXR1cm4ge1xuICAgIG5hbWU6IHN1bW1pdD8ubmFtZSxcbiAgICBub3csXG4gICAgbG9jYXRpb24sXG4gICAgZm9ybWF0dGVkRGF0ZSxcbiAgICByZWFzc2lnbkRhdGUsXG4gICAgZm9ybWF0dGVkUmVhc3NpZ25EYXRlLFxuICAgIGRheXNVbnRpbFJlYXNzaWduRGVhZGxpbmUsXG4gICAgaXNQYXN0LFxuICAgIGlzU3RhcnRlZCxcbiAgICBpc1JlYXNzaWduYWJsZVxuICB9O1xufTtcbiIsImltcG9ydCAqIGFzIHl1cCBmcm9tIFwieXVwXCI7XG5pbXBvcnQgaTE4biBmcm9tIFwiLi4vaTE4blwiO1xuaW1wb3J0IHtcbiAgU1RBVFVTX0NBTkNFTExFRCxcbiAgU1RBVFVTX0NPTVBMRVRFLFxuICBTVEFUVVNfSU5DT01QTEVURSxcbiAgU1RBVFVTX1JFRlVORF9BUFBST1ZFRCxcbiAgU1RBVFVTX1JFRlVORF9BUFBST1ZFRF9MQyxcbiAgU1RBVFVTX1JFRlVORF9QRU5ESU5HLFxuICBTVEFUVVNfUkVGVU5EX1BFTkRJTkdfTEMsXG4gIFNUQVRVU19SRUZVTkRfUkVKRUNURUQsXG4gIFNUQVRVU19SRUZVTkRfUkVKRUNURURfTEMsXG4gIFNUQVRVU19VTkFTU0lHTkVEXG59IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgVElDS0VUX0FUVEVOREVFX0tFWVMgfSBmcm9tIFwiLi4vY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29uc3RhbnRzXCI7XG5pbXBvcnQge1xuICBjaGVja0lmVmFsdWVNYXRjaCxcbiAgZ2V0VHlwZUluaXRpYWxWYWx1ZSxcbiAgdG9TbHVnXG59IGZyb20gXCIuLi9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvdXRpbHNcIjtcbmltcG9ydCB7XG4gIFF1ZXN0aW9uVHlwZV9DaGVja2JveCxcbiAgUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdCxcbiAgUXVlc3Rpb25UeXBlX0NvbWJvQm94LFxuICBRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94LFxuICBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0XG59IGZyb20gXCIuLi9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbnN0YW50c1wiO1xuXG5leHBvcnQgY29uc3Qgc3RhdHVzRGF0YSA9IHtcbiAgW1NUQVRVU19VTkFTU0lHTkVEXToge1xuICAgIHR5cGU6IFNUQVRVU19VTkFTU0lHTkVELFxuICAgIHRleHQ6IGkxOG4udChcInRpY2tldF9zdGF0dXMudW5hc3NpZ25lZFwiKVxuICB9LFxuICBbU1RBVFVTX0lOQ09NUExFVEVdOiB7XG4gICAgdHlwZTogU1RBVFVTX0lOQ09NUExFVEUsXG4gICAgdGV4dDogaTE4bi50KFwidGlja2V0X3N0YXR1cy5pbmNvbXBsZXRlXCIpXG4gIH0sXG4gIFtTVEFUVVNfQ09NUExFVEVdOiB7XG4gICAgdHlwZTogU1RBVFVTX0NPTVBMRVRFLFxuICAgIHRleHQ6IGkxOG4udChcInRpY2tldF9zdGF0dXMuY29tcGxldGVcIilcbiAgfSxcbiAgW1NUQVRVU19DQU5DRUxMRURdOiB7XG4gICAgdHlwZTogU1RBVFVTX0NBTkNFTExFRCxcbiAgICB0ZXh0OiBpMThuLnQoXCJ0aWNrZXRfc3RhdHVzLmNhbmNlbGxlZFwiKVxuICB9XG59O1xuZXhwb3J0IGNvbnN0IGdldFRpY2tldFN0YXR1c0tleSA9ICh0aWNrZXQpID0+IHtcbiAgaWYgKCF0aWNrZXQuaXNfYWN0aXZlKSByZXR1cm4gU1RBVFVTX0NBTkNFTExFRDtcblxuICBpZiAodGlja2V0Lm93bmVyX2lkID09PSAwKSByZXR1cm4gU1RBVFVTX1VOQVNTSUdORUQ7XG5cbiAgaWYgKCF0aWNrZXQub3duZXI/LmZpcnN0X25hbWUgfHwgIXRpY2tldC5vd25lcj8ubGFzdF9uYW1lKVxuICAgIHJldHVybiBTVEFUVVNfSU5DT01QTEVURTtcblxuICBpZiAodGlja2V0Lm93bmVyICYmIHRpY2tldC5vd25lcj8uc3RhdHVzID09PSBcIkluY29tcGxldGVcIilcbiAgICByZXR1cm4gU1RBVFVTX0lOQ09NUExFVEU7XG5cbiAgaWYgKHRpY2tldC5vd25lciAmJiB0aWNrZXQub3duZXI/LnN0YXR1cyA9PT0gXCJDb21wbGV0ZVwiKVxuICAgIHJldHVybiBTVEFUVVNfQ09NUExFVEU7XG5cbiAgcmV0dXJuIFNUQVRVU19JTkNPTVBMRVRFO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFRpY2tldFN0YXR1c0RhdGEgPSAodGlja2V0LCBpc1N1bW1pdFBhc3QpID0+XG4gIHN0YXR1c0RhdGFbZ2V0VGlja2V0U3RhdHVzS2V5KHRpY2tldCwgaXNTdW1taXRQYXN0KV07XG5cbmV4cG9ydCBjb25zdCBnZXRUaWNrZXRSb2xlID0gKHRpY2tldCkgPT4ge1xuICBpZiAoIXRpY2tldC5iYWRnZSkgcmV0dXJuIG51bGw7XG5cbiAgY29uc3QgeyBmZWF0dXJlcyB9ID0gdGlja2V0LmJhZGdlO1xuXG4gIGlmIChmZWF0dXJlcy5sZW5ndGggPiAwKVxuICAgIHJldHVybiBmZWF0dXJlcy5tYXAoKGZlYXR1cmUpID0+IGZlYXR1cmUubmFtZSkuam9pbihcIiwgXCIpO1xuXG4gIHJldHVybiBudWxsO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFRpY2tldFR5cGUgPSAodGlja2V0LCBzdW1taXQpID0+XG4gIHN1bW1pdC50aWNrZXRfdHlwZXMuZmluZCgodHlwZSkgPT4gdHlwZS5pZCA9PT0gdGlja2V0LnRpY2tldF90eXBlX2lkKTtcblxuZXhwb3J0IGNvbnN0IGlzVGlja2V0UmVmdW5kYWJsZSA9ICh0aWNrZXQpID0+XG4gIHRpY2tldD8uZmluYWxfYW1vdW50ID4gMCAmJlxuICB0aWNrZXQ/Lm5ldF9zZWxsaW5nX2Nvc3QgPiB0aWNrZXQucmVmdW5kZWRfYW1vdW50ICYmXG4gICF0aWNrZXQ/LnJlZnVuZF9yZXF1ZXN0cz8uc29tZShcbiAgICAocnIpID0+IHJyLnN0YXR1cyA9PT0gU1RBVFVTX1JFRlVORF9QRU5ESU5HX0xDXG4gICk7XG5cbmV4cG9ydCBjb25zdCB0aWNrZXRzUmVmdW5kYWJsZSA9ICh0aWNrZXRzKSA9PlxuICB0aWNrZXRzPy5maWx0ZXIoKHRpY2tldCkgPT4gaXNUaWNrZXRSZWZ1bmRhYmxlKHRpY2tldCkpLmxlbmd0aCB8fCAwO1xuXG5leHBvcnQgY29uc3QgZ2V0UmVmdW5kZWRSZXF1ZXN0ZWRUaWNrZXRzID0gKHRpY2tldHMpID0+XG4gIHRpY2tldHM/LmZpbHRlcigodGlja2V0KSA9PlxuICAgIHRpY2tldC5yZWZ1bmRfcmVxdWVzdHM/LnNvbWUoKHJyKSA9PiByci5zdGF0dXMgPT09IFNUQVRVU19SRUZVTkRfUEVORElOR19MQylcbiAgKTtcbmV4cG9ydCBjb25zdCBnZXRBbGxSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXRzID0gKHRpY2tldHMpID0+IHtcbiAgY29uc3QgYWxsVGlja2V0cyA9IFtdO1xuICB0aWNrZXRzPy5tYXAoKHRpY2tldCkgPT4ge1xuICAgIGlmIChcbiAgICAgIHRpY2tldC5yZWZ1bmRfcmVxdWVzdHM/LnNvbWUoXG4gICAgICAgIChycikgPT4gcnIuc3RhdHVzID09PSBTVEFUVVNfUkVGVU5EX1BFTkRJTkdfTENcbiAgICAgICkgfHxcbiAgICAgIHRpY2tldC5yZWZ1bmRfcmVxdWVzdHM/LnNvbWUoXG4gICAgICAgIChycikgPT4gcnIuc3RhdHVzID09PSBTVEFUVVNfUkVGVU5EX0FQUFJPVkVEX0xDXG4gICAgICApIHx8XG4gICAgICB0aWNrZXQucmVmdW5kX3JlcXVlc3RzPy5zb21lKFxuICAgICAgICAocnIpID0+IHJyLnN0YXR1cyA9PT0gU1RBVFVTX1JFRlVORF9SRUpFQ1RFRF9MQ1xuICAgICAgKVxuICAgICkge1xuICAgICAgYWxsVGlja2V0cy5wdXNoKHRpY2tldCk7XG4gICAgfVxuICAgIHJldHVybiB0aWNrZXQ7XG4gIH0pO1xuICByZXR1cm4gYWxsVGlja2V0cztcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRSZWZ1bmRlZFJlcXVlc3RlZFN0YXR1cyA9ICh0aWNrZXQpID0+IHtcbiAgaWYgKFxuICAgIHRpY2tldC5yZWZ1bmRfcmVxdWVzdHM/LnNvbWUoKHJyKSA9PiByci5zdGF0dXMgPT09IFNUQVRVU19SRUZVTkRfUEVORElOR19MQylcbiAgKVxuICAgIHJldHVybiBTVEFUVVNfUkVGVU5EX1BFTkRJTkc7XG4gIGlmIChcbiAgICB0aWNrZXQucmVmdW5kX3JlcXVlc3RzPy5zb21lKFxuICAgICAgKHJyKSA9PiByci5zdGF0dXMgPT09IFNUQVRVU19SRUZVTkRfQVBQUk9WRURfTENcbiAgICApXG4gIClcbiAgICByZXR1cm4gU1RBVFVTX1JFRlVORF9BUFBST1ZFRDtcbiAgaWYgKFxuICAgIHRpY2tldC5yZWZ1bmRfcmVxdWVzdHM/LnNvbWUoXG4gICAgICAocnIpID0+IHJyLnN0YXR1cyA9PT0gU1RBVFVTX1JFRlVORF9SRUpFQ1RFRF9MQ1xuICAgIClcbiAgKVxuICAgIHJldHVybiBTVEFUVVNfUkVGVU5EX1JFSkVDVEVEO1xuICByZXR1cm4gU1RBVFVTX1JFRlVORF9QRU5ESU5HO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFJlZnVuZFJlcXVlc3RlZFN0YXR1c0NvbG9yID0gKHRpY2tldCkgPT4ge1xuICBjb25zdCBzdGF0dXMgPSBnZXRSZWZ1bmRlZFJlcXVlc3RlZFN0YXR1cyh0aWNrZXQpO1xuICBsZXQgc3RhdHVzQ29sb3IgPSBcIlwiO1xuICBzd2l0Y2ggKHN0YXR1cykge1xuICAgIGNhc2UgU1RBVFVTX1JFRlVORF9QRU5ESU5HOlxuICAgICAgc3RhdHVzQ29sb3IgPSBcInBlbmRpbmdcIjtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgU1RBVFVTX1JFRlVORF9BUFBST1ZFRDpcbiAgICAgIHN0YXR1c0NvbG9yID0gXCJhcHByb3ZlZFwiO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBTVEFUVVNfUkVGVU5EX1JFSkVDVEVEOlxuICAgICAgc3RhdHVzQ29sb3IgPSBcInJlamVjdGVkXCI7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgc3RhdHVzQ29sb3IgPSBcInBlbmRpbmdcIjtcbiAgfVxuICByZXR1cm4gc3RhdHVzQ29sb3I7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VHlwZVZhbGlkYXRpb24gPSAodHlwZSwgbmFtZSwgaXNSZXF1aXJlZCkgPT4ge1xuICBsZXQgc2NoZW1hO1xuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja2JveDpcbiAgICAgIHNjaGVtYSA9IHl1cC5ib29sKCkub25lT2YoW3RydWVdLCBpMThuLnQoXCJ2YWxpZGF0aW9uLmNoZWNrYm94LnJlcXVpcmVkXCIpKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdDpcbiAgICAgIHNjaGVtYSA9IHl1cC5zdHJpbmcoYEVudGVyICR7bmFtZX1gKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdDpcbiAgICAgIHNjaGVtYSA9IHl1cC5hcnJheSgpLm9mKHl1cC5zdHJpbmcoKSk7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbWFnaWMtbnVtYmVyc1xuICAgICAgaWYgKGlzUmVxdWlyZWQpIHNjaGVtYSA9IHNjaGVtYS5taW4oMSwgYCR7bmFtZX0gaXMgcmVxdWlyZWRgKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveDpcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9Db21ib0JveDpcbiAgICAgIHNjaGVtYSA9IHl1cC5zdHJpbmcoYEVudGVyICR7bmFtZX1gKTtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICBzY2hlbWEgPSB5dXAuc3RyaW5nKGBFbnRlciAke25hbWV9YCk7XG4gICAgICBicmVhaztcbiAgfVxuXG4gIGlmIChpc1JlcXVpcmVkKSB7XG4gICAgc2NoZW1hID0gc2NoZW1hLnJlcXVpcmVkKGAke25hbWV9IGlzIHJlcXVpcmVkYCk7XG4gIH1cblxuICByZXR1cm4gc2NoZW1hO1xufTtcblxuY29uc3QgcGFyc2VTdWJRdWVzdGlvbkFuc3dlciA9IChcbiAgcSxcbiAgYW5zd2VycyxcbiAgYW5zd2VyLFxuICBpbml0aWFsVmFsdWVzLFxuICBvbmx5UmVsZXZhbnRcbikgPT4ge1xuICBpZiAocS5zdWJfcXVlc3Rpb25fcnVsZXM/Lmxlbmd0aCA+IDApIHtcbiAgICBxLnN1Yl9xdWVzdGlvbl9ydWxlcy5mb3JFYWNoKChydWxlKSA9PiB7XG4gICAgICBjb25zdCB7IHN1Yl9xdWVzdGlvbiwgYW5zd2VyX3ZhbHVlcyB9ID0gcnVsZTtcbiAgICAgIGNvbnN0IHN1YlF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhzdWJfcXVlc3Rpb24ubmFtZSwgc3ViX3F1ZXN0aW9uLmlkKTtcbiAgICAgIGNvbnN0IHN1YkFuc3dlciA9IGFuc3dlcnNbc3ViUXVlc3Rpb25TbHVnXTtcbiAgICAgIGNvbnN0IG1hdGNoID0gY2hlY2tJZlZhbHVlTWF0Y2goYW5zd2VyLCBhbnN3ZXJfdmFsdWVzKTtcblxuICAgICAgaWYgKCFvbmx5UmVsZXZhbnQgfHwgbWF0Y2gpIHtcbiAgICAgICAgaW5pdGlhbFZhbHVlc1tzdWJRdWVzdGlvblNsdWddID1cbiAgICAgICAgICBzdWJBbnN3ZXIgfHwgZ2V0VHlwZUluaXRpYWxWYWx1ZShzdWJfcXVlc3Rpb24pO1xuICAgICAgfVxuXG4gICAgICBwYXJzZVN1YlF1ZXN0aW9uQW5zd2VyKFxuICAgICAgICBzdWJfcXVlc3Rpb24sXG4gICAgICAgIGFuc3dlcnMsXG4gICAgICAgIHN1YkFuc3dlcixcbiAgICAgICAgaW5pdGlhbFZhbHVlcyxcbiAgICAgICAgb25seVJlbGV2YW50XG4gICAgICApO1xuICAgIH0pO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgcGFyc2VBbnN3ZXJzID0gKFxuICBvd25lcixcbiAgZXh0cmFRdWVzdGlvbnMsXG4gIGFuc3dlcnMsXG4gIGluY2x1ZGVBdHRlbmRlZUluZm8sXG4gIGluY2x1ZGVEaXNjbGFpbWVyLFxuICBvbmx5UmVsZXZhbnQgPSBmYWxzZVxuKSA9PiB7XG4gIGNvbnN0IGluaXRpYWxWYWx1ZXMgPSB7fTtcblxuICBpZiAoaW5jbHVkZUF0dGVuZGVlSW5mbykge1xuICAgIGluaXRpYWxWYWx1ZXNbVElDS0VUX0FUVEVOREVFX0tFWVMuZW1haWxdID1cbiAgICAgIGFuc3dlcnNbVElDS0VUX0FUVEVOREVFX0tFWVMuZW1haWxdIHx8IG93bmVyLmVtYWlsIHx8IFwiXCI7XG4gICAgaW5pdGlhbFZhbHVlc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5maXJzdE5hbWVdID1cbiAgICAgIGFuc3dlcnNbVElDS0VUX0FUVEVOREVFX0tFWVMuZmlyc3ROYW1lXSB8fCBvd25lci5maXJzdF9uYW1lIHx8IFwiXCI7XG4gICAgaW5pdGlhbFZhbHVlc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5sYXN0TmFtZV0gPVxuICAgICAgYW5zd2Vyc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5sYXN0TmFtZV0gfHwgb3duZXIubGFzdF9uYW1lIHx8IFwiXCI7XG4gICAgaW5pdGlhbFZhbHVlc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5jb21wYW55XSA9XG4gICAgICBhbnN3ZXJzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmNvbXBhbnldIHx8IG93bmVyLmNvbXBhbnk7XG4gIH1cblxuICBpZiAoaW5jbHVkZURpc2NsYWltZXIpIHtcbiAgICBpbml0aWFsVmFsdWVzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmRpc2NsYWltZXJBY2NlcHRlZF0gPVxuICAgICAgYW5zd2Vyc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5kaXNjbGFpbWVyQWNjZXB0ZWRdIHx8XG4gICAgICBvd25lci5kaXNjbGFpbWVyX2FjY2VwdGVkO1xuICB9XG5cbiAgZXh0cmFRdWVzdGlvbnMuZm9yRWFjaCgocSkgPT4ge1xuICAgIGNvbnN0IHF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhxLm5hbWUsIHEuaWQpO1xuICAgIGNvbnN0IGFuc3dlciA9IGFuc3dlcnNbcXVlc3Rpb25TbHVnXTtcbiAgICBpbml0aWFsVmFsdWVzW3F1ZXN0aW9uU2x1Z10gPSBhbnN3ZXIgfHwgZ2V0VHlwZUluaXRpYWxWYWx1ZShxKTtcblxuICAgIHBhcnNlU3ViUXVlc3Rpb25BbnN3ZXIocSwgYW5zd2VycywgYW5zd2VyLCBpbml0aWFsVmFsdWVzLCBvbmx5UmVsZXZhbnQpO1xuICB9KTtcblxuICByZXR1cm4gaW5pdGlhbFZhbHVlcztcbn07XG5cbmNvbnN0IGJ1aWxkU3ViUXVlc3Rpb25WYWxpZGF0aW9uU2NoZW1hID0gKHF1ZXN0aW9uU2x1ZywgcnVsZSwgc2NoZW1hKSA9PiB7XG4gIGNvbnN0IHN1YlF1ZXN0aW9uID0gcnVsZS5zdWJfcXVlc3Rpb247XG4gIGNvbnN0IHN1YlF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhzdWJRdWVzdGlvbi5uYW1lLCBzdWJRdWVzdGlvbi5pZCk7XG5cbiAgc2NoZW1hW3N1YlF1ZXN0aW9uU2x1Z10gPSBnZXRUeXBlVmFsaWRhdGlvbihcbiAgICBzdWJRdWVzdGlvbi50eXBlLFxuICAgIHN1YlF1ZXN0aW9uLm5hbWUsXG4gICAgZmFsc2VcbiAgKVxuICAgIC5udWxsYWJsZSgpXG4gICAgLndoZW4ocXVlc3Rpb25TbHVnLCB7XG4gICAgICBpczogKHF1ZXN0aW9uQW5zKSA9PiB7XG4gICAgICAgIGNvbnN0IGFuc1ZhbHVlTWF0Y2ggPSBjaGVja0lmVmFsdWVNYXRjaChcbiAgICAgICAgICBxdWVzdGlvbkFucyxcbiAgICAgICAgICBydWxlLmFuc3dlcl92YWx1ZXNcbiAgICAgICAgKTtcbiAgICAgICAgLy8gY2hlY2sgaWYgcXVlc3Rpb24gaXMgdmlzaWJsZSB0byBhZGQgdmFsaWRhdGlvblxuICAgICAgICBjb25zdCBpc1Zpc2libGUgPSAhIWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFxuICAgICAgICAgIGAke3F1ZXN0aW9uU2x1Z31fY29udGFpbmVyYFxuICAgICAgICApO1xuICAgICAgICByZXR1cm4gYW5zVmFsdWVNYXRjaCAmJiBpc1Zpc2libGU7XG4gICAgICB9LFxuICAgICAgdGhlbjogKHNjaCkgPT4ge1xuICAgICAgICBpZiAoc3ViUXVlc3Rpb24udHlwZSA9PT0gUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdCkge1xuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1tYWdpYy1udW1iZXJzXG4gICAgICAgICAgcmV0dXJuIHNjaC5taW4oMSkucmVxdWlyZWQoaTE4bi50KFwidmFsaWRhdGlvbi5yZXF1aXJlZF9xdWVzdGlvblwiKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHNjaC5yZXF1aXJlZChpMThuLnQoXCJ2YWxpZGF0aW9uLnJlcXVpcmVkX3F1ZXN0aW9uXCIpKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICBpZiAoc3ViUXVlc3Rpb24uc3ViX3F1ZXN0aW9uX3J1bGVzPy5sZW5ndGggPiAwKSB7XG4gICAgc3ViUXVlc3Rpb24uc3ViX3F1ZXN0aW9uX3J1bGVzLmZvckVhY2goKHN1YlJ1bGUpID0+IHtcbiAgICAgIGJ1aWxkU3ViUXVlc3Rpb25WYWxpZGF0aW9uU2NoZW1hKHN1YlF1ZXN0aW9uU2x1Zywgc3ViUnVsZSwgc2NoZW1hKTtcbiAgICB9KTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGJ1aWxkVmFsaWRhdGlvblNjaGVtYSA9IChcbiAgZXh0cmFRdWVzdGlvbnMsXG4gIGluY2x1ZGVBdHRlbmRlZUluZm8sXG4gIGRpc2NsYWltZXJNYW5kYXRvcnlcbikgPT4ge1xuICBjb25zdCBzY2hlbWEgPSB7fTtcblxuICBpZiAoaW5jbHVkZUF0dGVuZGVlSW5mbykge1xuICAgIHNjaGVtYVtUSUNLRVRfQVRURU5ERUVfS0VZUy5lbWFpbF0gPSB5dXBcbiAgICAgIC5zdHJpbmcoaTE4bi50KFwidmFsaWRhdGlvbi5lbWFpbC5zdHJpbmdcIikpXG4gICAgICAuZW1haWwoaTE4bi50KFwidmFsaWRhdGlvbi5lbWFpbC5mb3JtYXRcIikpXG4gICAgICAucmVxdWlyZWQoaTE4bi50KFwidmFsaWRhdGlvbi5lbWFpbC5yZXF1aXJlZFwiKSk7XG4gICAgc2NoZW1hW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmZpcnN0TmFtZV0gPSB5dXBcbiAgICAgIC5zdHJpbmcoaTE4bi50KFwidmFsaWRhdGlvbi5maXJzdF9uYW1lLnN0cmluZ1wiKSlcbiAgICAgIC5yZXF1aXJlZChpMThuLnQoXCJ2YWxpZGF0aW9uLmZpcnN0X25hbWUucmVxdWlyZWRcIikpO1xuICAgIHNjaGVtYVtUSUNLRVRfQVRURU5ERUVfS0VZUy5sYXN0TmFtZV0gPSB5dXBcbiAgICAgIC5zdHJpbmcoaTE4bi50KFwidmFsaWRhdGlvbi5sYXN0X25hbWUuc3RyaW5nXCIpKVxuICAgICAgLnJlcXVpcmVkKGkxOG4udChcInZhbGlkYXRpb24ubGFzdF9uYW1lLnJlcXVpcmVkXCIpKTtcbiAgICBzY2hlbWFbVElDS0VUX0FUVEVOREVFX0tFWVMuY29tcGFueV0gPSB5dXAubGF6eSgodmFsdWUpID0+XG4gICAgICB0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCJcbiAgICAgICAgPyB5dXBcbiAgICAgICAgICAgIC5vYmplY3QoKVxuICAgICAgICAgICAgLnJlcXVpcmVkKGkxOG4udChcInZhbGlkYXRpb24uY29tcGFueS5yZXF1aXJlZFwiKSlcbiAgICAgICAgICAgIC50eXBlRXJyb3IoaTE4bi50KFwidmFsaWRhdGlvbi5yZXF1aXJlZF9maWVsZFwiKSlcbiAgICAgICAgOiB5dXAuc3RyaW5nKCkucmVxdWlyZWQoaTE4bi50KFwidmFsaWRhdGlvbi5jb21wYW55LnJlcXVpcmVkXCIpKVxuICAgICk7XG4gIH1cblxuICBpZiAoZGlzY2xhaW1lck1hbmRhdG9yeSkge1xuICAgIHNjaGVtYVtUSUNLRVRfQVRURU5ERUVfS0VZUy5kaXNjbGFpbWVyQWNjZXB0ZWRdID0geXVwXG4gICAgICAuYm9vbCgpXG4gICAgICAub25lT2YoW3RydWVdLCBpMThuLnQoXCJ2YWxpZGF0aW9uLmNoZWNrYm94LnJlcXVpcmVkXCIpKTtcbiAgfVxuXG4gIGV4dHJhUXVlc3Rpb25zLmZvckVhY2goKHEpID0+IHtcbiAgICBjb25zdCB7IGlkLCBuYW1lLCB0eXBlLCBtYW5kYXRvcnksIHN1Yl9xdWVzdGlvbl9ydWxlcyB9ID0gcTtcbiAgICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcobmFtZSwgaWQpO1xuICAgIHNjaGVtYVtxdWVzdGlvblNsdWddID0gZ2V0VHlwZVZhbGlkYXRpb24odHlwZSwgbmFtZSwgbWFuZGF0b3J5KTtcblxuICAgIGlmIChzdWJfcXVlc3Rpb25fcnVsZXM/Lmxlbmd0aCA+IDApIHtcbiAgICAgIHN1Yl9xdWVzdGlvbl9ydWxlcy5mb3JFYWNoKChydWxlKSA9PiB7XG4gICAgICAgIGJ1aWxkU3ViUXVlc3Rpb25WYWxpZGF0aW9uU2NoZW1hKHF1ZXN0aW9uU2x1ZywgcnVsZSwgc2NoZW1hKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIHl1cC5vYmplY3Qoc2NoZW1hKTtcbn07XG5cbmV4cG9ydCBjb25zdCB1cGRhdGVUaWNrZXRDb2xsZWN0aW9uID0gKHRpY2tldHMsIHRpY2tldCkgPT5cbiAgdGlja2V0cy5tYXAoKHQpID0+IHtcbiAgICBjb25zdCB0bXBUaWNrZXQgPSB7IC4uLnQgfTtcbiAgICAvLyB1cGRhdGUgYXR0ZW5kZWVcbiAgICBpZiAoXG4gICAgICB0Lm93bmVyPy5pZCA9PT0gdGlja2V0Lm93bmVyPy5pZCAmJlxuICAgICAgdC5vd25lcj8uc3RhdHVzICE9PSB0aWNrZXQub3duZXI/LnN0YXR1c1xuICAgICkge1xuICAgICAgdG1wVGlja2V0Lm93bmVyID0gdGlja2V0Lm93bmVyO1xuICAgIH1cbiAgICByZXR1cm4gdC5pZCA9PT0gdGlja2V0LmlkID8gdGlja2V0IDogdG1wVGlja2V0O1xuICB9KTtcbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJjb3B5SWNvbl9fX2xJM2VRXCI7XG52YXIgXzIgPSBcInJldmVyc2VkX19fekp6bURcIjtcbnZhciBfMyA9IFwidHJ1bmNhdGVkX19faldTblVcIjtcbnZhciBfNCA9IFwid3JhcHBlcl9fX21WUGlSXCI7XG5leHBvcnQgeyBfMSBhcyBcImNvcHlJY29uXCIsIF8yIGFzIFwicmV2ZXJzZWRcIiwgXzMgYXMgXCJ0cnVuY2F0ZWRcIiwgXzQgYXMgXCJ3cmFwcGVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcIk11aU91dGxpbmVkSW5wdXQtbm90Y2hlZE91dGxpbmVfX19teEVLV1wiO1xudmFyIF8yID0gXCJNdWlQaWNrZXJzQ2FsZW5kYXJIZWFkZXItbGFiZWxDb250YWluZXJfX19PNHNTc1wiO1xudmFyIF8zID0gXCJjYWxlbmRhckRpc3BsYXlfX19GM251S1wiO1xudmFyIF80ID0gXCJjbGVhbkJ1dHRvbl9fX3FxRHZVXCI7XG52YXIgXzUgPSBcImNvbnRhaW5lcl9fX1FlUVlfXCI7XG52YXIgXzYgPSBcImRhdGVQaWNrZXJDb250YWluZXJfX19aNDJtd1wiO1xudmFyIF83ID0gXCJkYXRlcGlja2VyQ2xvc2VfX19UWjdrSlwiO1xudmFyIF84ID0gXCJmaWx0ZXJDaGVja2JveENvbnRhaW5lcl9fX2tVblc5XCI7XG52YXIgXzkgPSBcImZpbHRlckNvbnRhaW5lcl9fX3JycXA5XCI7XG52YXIgX2EgPSBcImZpbHRlckRhdGVMYWJlbF9fX0pnYmNzXCI7XG52YXIgX2IgPSBcImZpbHRlckljb25fX19paU96b1wiO1xudmFyIF9jID0gXCJmaWx0ZXJMYWJlbF9fX3NrWlA3XCI7XG52YXIgX2QgPSBcImZpbHRlckxpc3RDb250YWluZXJfX19JRHJsU1wiO1xudmFyIF9lID0gXCJmaWx0ZXJOdW1BY3RpdmVfX19rbUVFS1wiO1xudmFyIF9mID0gXCJmaWx0ZXJTb3J0Q29udGFpbmVyX19fbmhOSnNcIjtcbnZhciBfMTAgPSBcImxhYmVsX19fTEFtZV9cIjtcbnZhciBfMTEgPSBcInNob3dGaWx0ZXJMaXN0X19fSVc0eEdcIjtcbnZhciBfMTIgPSBcInNvcnRDb250YWluZXJfX19zYjVCZFwiO1xudmFyIF8xMyA9IFwic29ydEljb25fX19jX1haaVwiO1xudmFyIF8xNCA9IFwic29ydExhYmVsX19fZFhpTXlcIjtcbnZhciBfMTUgPSBcInNvcnRMaXN0Q29udGFpbmVyX19fUHAyWGdcIjtcbnZhciBfMTYgPSBcInRpdGxlV3JhcHBlcl9fX1A2bVB1XCI7XG5leHBvcnQgeyBfMSBhcyBcIk11aU91dGxpbmVkSW5wdXQtbm90Y2hlZE91dGxpbmVcIiwgXzIgYXMgXCJNdWlQaWNrZXJzQ2FsZW5kYXJIZWFkZXItbGFiZWxDb250YWluZXJcIiwgXzMgYXMgXCJjYWxlbmRhckRpc3BsYXlcIiwgXzQgYXMgXCJjbGVhbkJ1dHRvblwiLCBfNSBhcyBcImNvbnRhaW5lclwiLCBfNiBhcyBcImRhdGVQaWNrZXJDb250YWluZXJcIiwgXzcgYXMgXCJkYXRlcGlja2VyQ2xvc2VcIiwgXzggYXMgXCJmaWx0ZXJDaGVja2JveENvbnRhaW5lclwiLCBfOSBhcyBcImZpbHRlckNvbnRhaW5lclwiLCBfYSBhcyBcImZpbHRlckRhdGVMYWJlbFwiLCBfYiBhcyBcImZpbHRlckljb25cIiwgX2MgYXMgXCJmaWx0ZXJMYWJlbFwiLCBfZCBhcyBcImZpbHRlckxpc3RDb250YWluZXJcIiwgX2UgYXMgXCJmaWx0ZXJOdW1BY3RpdmVcIiwgX2YgYXMgXCJmaWx0ZXJTb3J0Q29udGFpbmVyXCIsIF8xMCBhcyBcImxhYmVsXCIsIF8xMSBhcyBcInNob3dGaWx0ZXJMaXN0XCIsIF8xMiBhcyBcInNvcnRDb250YWluZXJcIiwgXzEzIGFzIFwic29ydEljb25cIiwgXzE0IGFzIFwic29ydExhYmVsXCIsIF8xNSBhcyBcInNvcnRMaXN0Q29udGFpbmVyXCIsIF8xNiBhcyBcInRpdGxlV3JhcHBlclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJjYW5jZWxCdG5fX19xRGV4aFwiO1xudmFyIF8yID0gXCJmb290ZXJfX19TTjcweVwiO1xudmFyIF8zID0gXCJzYXZlQnRuX19fbmJVNmNcIjtcbmV4cG9ydCB7IF8xIGFzIFwiY2FuY2VsQnRuXCIsIF8yIGFzIFwiZm9vdGVyXCIsIF8zIGFzIFwic2F2ZUJ0blwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJlcnJvckxhYmVsX19fbm9jeVhcIjtcbmV4cG9ydCB7IF8xIGFzIFwiZXJyb3JMYWJlbFwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJteU9yZGVyc1dyYXBwZXJfX19ISm15c1wiO1xudmFyIF8yID0gXCJub09yZGVyc0ZvdW5kX19fRFJ3Z29cIjtcbnZhciBfMyA9IFwibm9PcmRlcnNJY29uV3JhcHBlcl9fX3RQVG1ZXCI7XG5leHBvcnQgeyBfMSBhcyBcIm15T3JkZXJzV3JhcHBlclwiLCBfMiBhcyBcIm5vT3JkZXJzRm91bmRcIiwgXzMgYXMgXCJub09yZGVyc0ljb25XcmFwcGVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcIm9yZGVyRGV0YWlsc01tb3VudF9fX3Iza1JBXCI7XG52YXIgXzIgPSBcIm9yZGVyRGV0YWlsc1RpY2tldHNfX19tNElqS1wiO1xudmFyIF8zID0gXCJvcmRlclN1bW1hcnlCdXR0b25fX191eGpodFwiO1xudmFyIF80ID0gXCJvcmRlclN1bW1hcnlQdXJjaGFzZWRJbmZvX19fX1JCWEVcIjtcbnZhciBfNSA9IFwib3JkZXJTdW1tYXJ5VGFibGVfX19ZRG54VlwiO1xudmFyIF82ID0gXCJvcmRlclN1bW1hcnlXcmFwcGVyX19fUndJRVJcIjtcbnZhciBfNyA9IFwicmVmdW5kRGlzYWJsZWRfX19qdnJrM1wiO1xuZXhwb3J0IHsgXzEgYXMgXCJvcmRlckRldGFpbHNNbW91bnRcIiwgXzIgYXMgXCJvcmRlckRldGFpbHNUaWNrZXRzXCIsIF8zIGFzIFwib3JkZXJTdW1tYXJ5QnV0dG9uXCIsIF80IGFzIFwib3JkZXJTdW1tYXJ5UHVyY2hhc2VkSW5mb1wiLCBfNSBhcyBcIm9yZGVyU3VtbWFyeVRhYmxlXCIsIF82IGFzIFwib3JkZXJTdW1tYXJ5V3JhcHBlclwiLCBfNyBhcyBcInJlZnVuZERpc2FibGVkXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImFzc2lnblRpY2tldEJ1dHRvbl9fX3p6THNjXCI7XG52YXIgXzIgPSBcImFzc2lnblRvTWVUZXh0X19fWlBhZXhcIjtcbnZhciBfMyA9IFwiYXNzaWduZWRCeVRleHRfX19iTlo3elwiO1xudmFyIF80ID0gXCJhc3NpZ25lZFRvTWVEZXNfX19HakZrVlwiO1xudmFyIF81ID0gXCJhc3NpZ25lZFRvTWVXcmFwcGVyX19fVXhjMnlcIjtcbnZhciBfNiA9IFwiYmFkZ2VGZWF0dXJlX19fQTJMTVZcIjtcbnZhciBfNyA9IFwiYmFkZ2VGZWF0dXJlV3JhcHBlcl9fX0lRTE5QXCI7XG52YXIgXzggPSBcImNoZWNrYm94X19fWFpKcGJcIjtcbnZhciBfOSA9IFwiZGlzYWJsZWRSZWZ1bmRfX19TZmZsN1wiO1xudmFyIF9hID0gXCJkaXNwbGF5X25vbmVfX19DcXBMM1wiO1xudmFyIF9iID0gXCJsYWJlbF9fX3pYRFd6XCI7XG52YXIgX2MgPSBcIm5vT3JkZXJzSWNvbldyYXBwZXJfX19lZnlycFwiO1xudmFyIF9kID0gXCJub1RpY2tldHNGb3VuZF9fX2pMb2NvXCI7XG52YXIgX2UgPSBcIm9yZGVyVGlja2V0Q29udGFpbmVyX19fWkpMemtcIjtcbnZhciBfZiA9IFwib3JkZXJUaWNrZXRJbmZvX19fZ2VtcUJcIjtcbnZhciBfMTAgPSBcIm9yZGVyVGlja2V0SW5mb0NvbnRhaW5lcl9fX19wNjZWXCI7XG52YXIgXzExID0gXCJvcmRlcldyYXBwZXJfX195REJBb1wiO1xudmFyIF8xMiA9IFwicmVhc3NpZ25CdXR0b25fX19Sb2pNNVwiO1xudmFyIF8xMyA9IFwicmVmdW5kQnV0dG9uc19fX2pEbDRIXCI7XG52YXIgXzE0ID0gXCJyZWZ1bmRNb2RhbF9fX0VxZ1BGXCI7XG52YXIgXzE1ID0gXCJzZWxlY3RlZF9fX0hXR05jXCI7XG52YXIgXzE2ID0gXCJ0YWJCdXR0b25zX19feFR5SkFcIjtcbnZhciBfMTcgPSBcInRpY2tldEFjdGlvbkJ1dHRvbnNfX19ycFNNUVwiO1xudmFyIF8xOCA9IFwidGlja2V0TGlzdENvbnRhaW5lcl9fX2NmbXJyXCI7XG52YXIgXzE5ID0gXCJ0aWNrZXROb19fX2EyaU05XCI7XG52YXIgXzFhID0gXCJ0aWNrZXRPd25lckVtYWlsX19fWnQ0T0VcIjtcbnZhciBfMWIgPSBcInRpY2tldFRpY2tldFR5cGVfX19acV9mMFwiO1xudmFyIF8xYyA9IFwidmlld0ZpbmlzaFRpY2tldEJ1dHRvbl9fX0hGNkltXCI7XG52YXIgXzFkID0gXCJ2aWV3TW9yZUJ1dHRvbl9fX0tfMXpUXCI7XG5leHBvcnQgeyBfMSBhcyBcImFzc2lnblRpY2tldEJ1dHRvblwiLCBfMiBhcyBcImFzc2lnblRvTWVUZXh0XCIsIF8zIGFzIFwiYXNzaWduZWRCeVRleHRcIiwgXzQgYXMgXCJhc3NpZ25lZFRvTWVEZXNcIiwgXzUgYXMgXCJhc3NpZ25lZFRvTWVXcmFwcGVyXCIsIF82IGFzIFwiYmFkZ2VGZWF0dXJlXCIsIF83IGFzIFwiYmFkZ2VGZWF0dXJlV3JhcHBlclwiLCBfOCBhcyBcImNoZWNrYm94XCIsIF85IGFzIFwiZGlzYWJsZWRSZWZ1bmRcIiwgX2EgYXMgXCJkaXNwbGF5X25vbmVcIiwgX2IgYXMgXCJsYWJlbFwiLCBfYyBhcyBcIm5vT3JkZXJzSWNvbldyYXBwZXJcIiwgX2QgYXMgXCJub1RpY2tldHNGb3VuZFwiLCBfZSBhcyBcIm9yZGVyVGlja2V0Q29udGFpbmVyXCIsIF9mIGFzIFwib3JkZXJUaWNrZXRJbmZvXCIsIF8xMCBhcyBcIm9yZGVyVGlja2V0SW5mb0NvbnRhaW5lclwiLCBfMTEgYXMgXCJvcmRlcldyYXBwZXJcIiwgXzEyIGFzIFwicmVhc3NpZ25CdXR0b25cIiwgXzEzIGFzIFwicmVmdW5kQnV0dG9uc1wiLCBfMTQgYXMgXCJyZWZ1bmRNb2RhbFwiLCBfMTUgYXMgXCJzZWxlY3RlZFwiLCBfMTYgYXMgXCJ0YWJCdXR0b25zXCIsIF8xNyBhcyBcInRpY2tldEFjdGlvbkJ1dHRvbnNcIiwgXzE4IGFzIFwidGlja2V0TGlzdENvbnRhaW5lclwiLCBfMTkgYXMgXCJ0aWNrZXROb1wiLCBfMWEgYXMgXCJ0aWNrZXRPd25lckVtYWlsXCIsIF8xYiBhcyBcInRpY2tldFRpY2tldFR5cGVcIiwgXzFjIGFzIFwidmlld0ZpbmlzaFRpY2tldEJ1dHRvblwiLCBfMWQgYXMgXCJ2aWV3TW9yZUJ1dHRvblwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJDVEFCdXR0b25XcmFwcGVyX19fS2dxNmdcIjtcbnZhciBfMiA9IFwiYWN0aW9uQnV0dG9uc19fX3U3bVBTXCI7XG52YXIgXzMgPSBcImFwcHJvdmVkX19fc3hFSldcIjtcbnZhciBfNCA9IFwiYmFkZ2VGZWF0dXJlX19fdExoRXBcIjtcbnZhciBfNSA9IFwiYmFkZ2VGZWF0dXJlV3JhcHBlcl9fX185R2JEXCI7XG52YXIgXzYgPSBcImJ1dHRvblBpbGxfX19MZXNhelwiO1xudmFyIF83ID0gXCJjYW5jZWxCdXR0b25fX195ZmhZYlwiO1xudmFyIF84ID0gXCJjb250aW51ZUJ1dHRvbl9fX055WDNzXCI7XG52YXIgXzkgPSBcImRlbGV0ZUljb25fX19GU3d5ZVwiO1xudmFyIF9hID0gXCJwZW5kaW5nX19fYUViV3dcIjtcbnZhciBfYiA9IFwicmVmdW5kRGV0YWlsX19fY1EyOFZcIjtcbnZhciBfYyA9IFwicmVmdW5kRXJyb3JNc2dfX19BYWh6clwiO1xudmFyIF9kID0gXCJyZWZ1bmRTdWNjZXNzZnVsX19fenJEUVlcIjtcbnZhciBfZSA9IFwicmVmdW5kVGV4dF9fX2FFbkw5XCI7XG52YXIgX2YgPSBcInJlZnVuZFRpY2tldEF0dGVuZGVlX19fUVhDak1cIjtcbnZhciBfMTAgPSBcInJlZnVuZFRpY2tldEJveENvbnRhaW5lcl9fX3lhNjEzXCI7XG52YXIgXzExID0gXCJyZWplY3RlZF9fX05KRTRaXCI7XG52YXIgXzEyID0gXCJzdWJ0aXRsZV9fX1B0RGUyXCI7XG52YXIgXzEzID0gXCJzdWNjZXNzTXNnX19fSHRNc2VcIjtcbnZhciBfMTQgPSBcInN1Y2Nlc3NNc2cyX19fUTZ6bmFcIjtcbnZhciBfMTUgPSBcInRpY2tldExpc3RfX19lRFFSM1wiO1xudmFyIF8xNiA9IFwidGlja2V0Tm9fX19fRUFENFwiO1xuZXhwb3J0IHsgXzEgYXMgXCJDVEFCdXR0b25XcmFwcGVyXCIsIF8yIGFzIFwiYWN0aW9uQnV0dG9uc1wiLCBfMyBhcyBcImFwcHJvdmVkXCIsIF80IGFzIFwiYmFkZ2VGZWF0dXJlXCIsIF81IGFzIFwiYmFkZ2VGZWF0dXJlV3JhcHBlclwiLCBfNiBhcyBcImJ1dHRvblBpbGxcIiwgXzcgYXMgXCJjYW5jZWxCdXR0b25cIiwgXzggYXMgXCJjb250aW51ZUJ1dHRvblwiLCBfOSBhcyBcImRlbGV0ZUljb25cIiwgX2EgYXMgXCJwZW5kaW5nXCIsIF9iIGFzIFwicmVmdW5kRGV0YWlsXCIsIF9jIGFzIFwicmVmdW5kRXJyb3JNc2dcIiwgX2QgYXMgXCJyZWZ1bmRTdWNjZXNzZnVsXCIsIF9lIGFzIFwicmVmdW5kVGV4dFwiLCBfZiBhcyBcInJlZnVuZFRpY2tldEF0dGVuZGVlXCIsIF8xMCBhcyBcInJlZnVuZFRpY2tldEJveENvbnRhaW5lclwiLCBfMTEgYXMgXCJyZWplY3RlZFwiLCBfMTIgYXMgXCJzdWJ0aXRsZVwiLCBfMTMgYXMgXCJzdWNjZXNzTXNnXCIsIF8xNCBhcyBcInN1Y2Nlc3NNc2cyXCIsIF8xNSBhcyBcInRpY2tldExpc3RcIiwgXzE2IGFzIFwidGlja2V0Tm9cIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiY2xvc2VCdG5fX195U1FDT1wiO1xudmFyIF8yID0gXCJoZWFkZXJfX19mQlhHOVwiO1xudmFyIF8zID0gXCJ0aXRsZV9fX3R5WmVRXCI7XG52YXIgXzQgPSBcIndyYXBwZXJfX19ST0pHc1wiO1xuZXhwb3J0IHsgXzEgYXMgXCJjbG9zZUJ0blwiLCBfMiBhcyBcImhlYWRlclwiLCBfMyBhcyBcInRpdGxlXCIsIF80IGFzIFwid3JhcHBlclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJzdW1taXRUaXRsZURhdGVfX19YbnJwRlwiO1xudmFyIF8yID0gXCJ3aWRnZXRIZWFkZXJfX19nZ0x0TVwiO1xuZXhwb3J0IHsgXzEgYXMgXCJzdW1taXRUaXRsZURhdGVcIiwgXzIgYXMgXCJ3aWRnZXRIZWFkZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiaGVhZGVyTm90ZV9fX0FlNUVBXCI7XG52YXIgXzIgPSBcIm9yZGVyTm9fX19WT1BSd1wiO1xudmFyIF8zID0gXCJwdXJjaGFzZWRCeV9fX01OaUhUXCI7XG52YXIgXzQgPSBcInB1cmNoYXNlZEJ5V3JhcHBlcl9fX0RoNkhVXCI7XG52YXIgXzUgPSBcIndyYXBwZXJfX19tVnVpWlwiO1xuZXhwb3J0IHsgXzEgYXMgXCJoZWFkZXJOb3RlXCIsIF8yIGFzIFwib3JkZXJOb1wiLCBfMyBhcyBcInB1cmNoYXNlZEJ5XCIsIF80IGFzIFwicHVyY2hhc2VkQnlXcmFwcGVyXCIsIF81IGFzIFwid3JhcHBlclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJhc3NpZ25PcHRpb25zV3JhcHBlcl9fX29qRl83XCI7XG52YXIgXzIgPSBcInRpY2tldFJlYXNzaWduQ29udGFpbmVyX19fZ090YUpcIjtcbmV4cG9ydCB7IF8xIGFzIFwiYXNzaWduT3B0aW9uc1dyYXBwZXJcIiwgXzIgYXMgXCJ0aWNrZXRSZWFzc2lnbkNvbnRhaW5lclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJ3cmFwcGVyX19fRXdPUnpcIjtcbmV4cG9ydCB7IF8xIGFzIFwid3JhcHBlclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJpbmZvTm90ZV9fX2kxWFk5XCI7XG52YXIgXzIgPSBcIndyYXBwZXJfX19NQXVOU1wiO1xuZXhwb3J0IHsgXzEgYXMgXCJpbmZvTm90ZVwiLCBfMiBhcyBcIndyYXBwZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiYWN0aW9uQnV0dG9uc0NvbnRhaW5lcl9fX0F1dnJuXCI7XG52YXIgXzIgPSBcImFkZGl0aW9uYWxEZXRhaWxzX19fbVAxaUpcIjtcbnZhciBfMyA9IFwiYXR0ZW5kZWVDb250YWluZXJfX19RMFZVelwiO1xudmFyIF80ID0gXCJhdHRlbmRlZUluZm9UaXRsZV9fX0xtcm00XCI7XG52YXIgXzUgPSBcImNsb3NlQnRuX19fV05KbEVcIjtcbnZhciBfNiA9IFwiY29weUJ0bl9fX191dEE2XCI7XG52YXIgXzcgPSBcImRlbGVnYXRlZFRvX19fU0dWUUlcIjtcbnZhciBfOCA9IFwiZG93bmxvYWRCdG5fX19xalloelwiO1xudmFyIF85ID0gXCJoZWFkZXJfX19BdWduelwiO1xudmFyIF9hID0gXCJvcmRlck51bWJlcl9fX0w1UTVhXCI7XG52YXIgX2IgPSBcInFyQ29kZV9fX2Z3cVpxXCI7XG52YXIgX2MgPSBcInFyTm90ZV9fX0djN0tuXCI7XG52YXIgX2QgPSBcInNlbmRCdG5fX19rb1dNMlwiO1xudmFyIF9lID0gXCJzZW50X19fazZXS3hcIjtcbnZhciBfZiA9IFwic3RhdHVzX19fa3dDOHlcIjtcbnZhciBfMTAgPSBcInN1YnRpdGxlX19feV9OdU9cIjtcbnZhciBfMTEgPSBcInRpY2tldERldGFpbENvbnRhaW5lcl9fX2IyVExSXCI7XG52YXIgXzEyID0gXCJ0aXRsZV9fX3dRelVOXCI7XG5leHBvcnQgeyBfMSBhcyBcImFjdGlvbkJ1dHRvbnNDb250YWluZXJcIiwgXzIgYXMgXCJhZGRpdGlvbmFsRGV0YWlsc1wiLCBfMyBhcyBcImF0dGVuZGVlQ29udGFpbmVyXCIsIF80IGFzIFwiYXR0ZW5kZWVJbmZvVGl0bGVcIiwgXzUgYXMgXCJjbG9zZUJ0blwiLCBfNiBhcyBcImNvcHlCdG5cIiwgXzcgYXMgXCJkZWxlZ2F0ZWRUb1wiLCBfOCBhcyBcImRvd25sb2FkQnRuXCIsIF85IGFzIFwiaGVhZGVyXCIsIF9hIGFzIFwib3JkZXJOdW1iZXJcIiwgX2IgYXMgXCJxckNvZGVcIiwgX2MgYXMgXCJxck5vdGVcIiwgX2QgYXMgXCJzZW5kQnRuXCIsIF9lIGFzIFwic2VudFwiLCBfZiBhcyBcInN0YXR1c1wiLCBfMTAgYXMgXCJzdWJ0aXRsZVwiLCBfMTEgYXMgXCJ0aWNrZXREZXRhaWxDb250YWluZXJcIiwgXzEyIGFzIFwidGl0bGVcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiYnV0dG9uQ2FuY2VsbGVkX19fRXJsRFpcIjtcbnZhciBfMiA9IFwiYnV0dG9uQ29tcGxldGVfX19sbFdrWlwiO1xudmFyIF8zID0gXCJidXR0b25JbmNvbXBsZXRlX19fVG9sSGdcIjtcbnZhciBfNCA9IFwiYnV0dG9uUGlsbF9fX3pxMnRjXCI7XG52YXIgXzUgPSBcImJ1dHRvblJlZnVuZFJlcXVlc3RlZF9fX3BXdDMwXCI7XG52YXIgXzYgPSBcImJ1dHRvblVuYXNzaWduZWRfX19ZRGQ4WFwiO1xudmFyIF83ID0gXCJ0aWNrZXRTdGF0dXNDb250YWluZXJfX19xajZmYlwiO1xuZXhwb3J0IHsgXzEgYXMgXCJidXR0b25DYW5jZWxsZWRcIiwgXzIgYXMgXCJidXR0b25Db21wbGV0ZVwiLCBfMyBhcyBcImJ1dHRvbkluY29tcGxldGVcIiwgXzQgYXMgXCJidXR0b25QaWxsXCIsIF81IGFzIFwiYnV0dG9uUmVmdW5kUmVxdWVzdGVkXCIsIF82IGFzIFwiYnV0dG9uVW5hc3NpZ25lZFwiLCBfNyBhcyBcInRpY2tldFN0YXR1c0NvbnRhaW5lclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJhY3RpdmVfX190THlXWlwiO1xudmFyIF8yID0gXCJ0YWJPcHRpb25fX19INEgxdVwiO1xudmFyIF8zID0gXCJ0YWJXcmFwcGVyX19fdTIxc0dcIjtcbmV4cG9ydCB7IF8xIGFzIFwiYWN0aXZlXCIsIF8yIGFzIFwidGFiT3B0aW9uXCIsIF8zIGFzIFwidGFiV3JhcHBlclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJ0aWNrZXRzVGl0bGVUZXh0X19fVERQbXBcIjtcbmV4cG9ydCB7IF8xIGFzIFwidGlja2V0c1RpdGxlVGV4dFwiIH1cbiIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHlcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9vYmplY3RXaXRob3V0UHJvcGVydGllc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ2hlY2tDaXJjbGVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9DbG9zZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL0NvbnRlbnRDb3B5XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRXJyb3JcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9FeHBhbmRNb3JlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRmlsdGVyTGlzdFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL0ltcG9ydEV4cG9ydFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL0luZm9cIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9TZWFyY2hcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL0NoZWNrYm94XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvRGl2aWRlclwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL0lucHV0QmFzZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL1N0YWNrXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvVGFiXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvVGFic1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL1Rvb2x0aXBcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9zdHlsZXNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC91c2VNZWRpYVF1ZXJ5XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkByZWR1eGpzL3Rvb2xraXRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQHNlbnRyeS9yZWFjdFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJmb3JtaWtcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiaTE4bmV4dFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJpMThuZXh0LWJyb3dzZXItbGFuZ3VhZ2VkZXRlY3RvclwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJpZHRva2VuLXZlcmlmaWVyXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm1vbWVudC10aW1lem9uZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL2NvbXBvbmVudHMvcmF3LWh0bWxcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9zZWN1cml0eS9hY3Rpb25zXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvc2VjdXJpdHkvbWV0aG9kc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL2FjdGlvbnNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9tZXRob2RzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvcXVlcnktYWN0aW9uc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJwLWxpbWl0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInByb3AtdHlwZXNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3RcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3QtaTE4bmV4dFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWFjdC1pbmZpbml0ZS1zY3JvbGwtY29tcG9uZW50XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0LXFyLWNvZGVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3QtcmVkdXhcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3QvanN4LXJ1bnRpbWVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVkdXhcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVkdXgtcGVyc2lzdFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWR1eC1wZXJzaXN0L2ludGVncmF0aW9uL3JlYWN0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlZHV4LXBlcnNpc3QvbGliL3N0b3JhZ2VcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwieXVwXCIpOyIsIi8vIFRoZSBtb2R1bGUgY2FjaGVcbnZhciBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18gPSB7fTtcblxuLy8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbmZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG5cdHZhciBjYWNoZWRNb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdO1xuXHRpZiAoY2FjaGVkTW9kdWxlICE9PSB1bmRlZmluZWQpIHtcblx0XHRyZXR1cm4gY2FjaGVkTW9kdWxlLmV4cG9ydHM7XG5cdH1cblx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcblx0dmFyIG1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF0gPSB7XG5cdFx0Ly8gbm8gbW9kdWxlLmlkIG5lZWRlZFxuXHRcdC8vIG5vIG1vZHVsZS5sb2FkZWQgbmVlZGVkXG5cdFx0ZXhwb3J0czoge31cblx0fTtcblxuXHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cblx0X193ZWJwYWNrX21vZHVsZXNfX1ttb2R1bGVJZF0obW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cblx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcblx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xufVxuXG4iLCIvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuX193ZWJwYWNrX3JlcXVpcmVfXy5uID0gKG1vZHVsZSkgPT4ge1xuXHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cblx0XHQoKSA9PiAobW9kdWxlWydkZWZhdWx0J10pIDpcblx0XHQoKSA9PiAobW9kdWxlKTtcblx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgeyBhOiBnZXR0ZXIgfSk7XG5cdHJldHVybiBnZXR0ZXI7XG59OyIsIi8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb25zIGZvciBoYXJtb255IGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uZCA9IChleHBvcnRzLCBkZWZpbml0aW9uKSA9PiB7XG5cdGZvcih2YXIga2V5IGluIGRlZmluaXRpb24pIHtcblx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZGVmaW5pdGlvbiwga2V5KSAmJiAhX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIGtleSkpIHtcblx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBkZWZpbml0aW9uW2tleV0gfSk7XG5cdFx0fVxuXHR9XG59OyIsIl9fd2VicGFja19yZXF1aXJlX18ubyA9IChvYmosIHByb3ApID0+IChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKSkiLCIvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSAoZXhwb3J0cykgPT4ge1xuXHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcblx0fVxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xufTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgUHJvdmlkZXIgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IFBlcnNpc3RHYXRlIH0gZnJvbSBcInJlZHV4LXBlcnNpc3QvaW50ZWdyYXRpb24vcmVhY3RcIjtcbmltcG9ydCB7IFN0eWxlZEVuZ2luZVByb3ZpZGVyIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZUluaXRTdG9yZSB9IGZyb20gXCIuL3N0b3JlXCI7XG5pbXBvcnQgeyBSRVNFVF9TVEFURSwgc2V0UmVkdWNlclN0YXRlIH0gZnJvbSBcIi4vYWN0aW9uc1wiO1xuXG5pbXBvcnQgV2lkZ2V0V3JhcHBlciBmcm9tIFwiLi9jb21wb25lbnRzL1dpZGdldFdyYXBwZXJcIjtcblxuY29uc3QgTXlPcmRlcnNNeVRpY2tldHNXaWRnZXQgPSAocHJvcHMpID0+IHtcbiAgY29uc3Qge1xuICAgIGxvZ2luVXJsLFxuICAgIHN1cHBvcnRFbWFpbCxcbiAgICBzdW1taXQsXG4gICAgYXBpQmFzZVVybCxcbiAgICB1c2VyLFxuICAgIGNsaWVudElkLFxuICAgIHVwZGF0ZVByb2ZpbGVcbiAgfSA9IHByb3BzO1xuXG4gIGNvbnN0IHsgc3RvcmUsIHBlcnNpc3RvciB9ID0gdXNlSW5pdFN0b3JlKHtcbiAgICBsb2dpblVybCxcbiAgICBzdXBwb3J0RW1haWwsXG4gICAgc3VtbWl0LFxuICAgIHVzZXIsXG4gICAgYXBpQmFzZVVybCxcbiAgICBjbGllbnRJZCxcbiAgICB1cGRhdGVQcm9maWxlXG4gIH0pO1xuXG4gIGNvbnN0IGhhbmRsZUJlZm9yZUxpZnQgPSAoKSA9PiB7XG4gICAgY29uc3QgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyh3aW5kb3cubG9jYXRpb24uc2VhcmNoKTtcbiAgICBjb25zdCBmbHVzaCA9IHBhcmFtcy5oYXMoXCJmbHVzaFN0YXRlXCIpO1xuICAgIGlmIChmbHVzaCkgc3RvcmUuZGlzcGF0Y2goeyB0eXBlOiBSRVNFVF9TVEFURSwgcGF5bG9hZDogbnVsbCB9KTtcbiAgfTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHN0b3JlLmRpc3BhdGNoKHNldFJlZHVjZXJTdGF0ZShzdW1taXQsIHVzZXIpKTtcbiAgfSwgW3N1bW1pdCwgdXNlcl0pO1xuXG4gIHJldHVybiAoXG4gICAgPFByb3ZpZGVyIHN0b3JlPXtzdG9yZX0+XG4gICAgICA8UGVyc2lzdEdhdGVcbiAgICAgICAgb25CZWZvcmVMaWZ0PXtoYW5kbGVCZWZvcmVMaWZ0fVxuICAgICAgICBsb2FkaW5nPXtudWxsfVxuICAgICAgICBwZXJzaXN0b3I9e3BlcnNpc3Rvcn1cbiAgICAgID5cbiAgICAgICAgPFN0eWxlZEVuZ2luZVByb3ZpZGVyIGluamVjdEZpcnN0PlxuICAgICAgICAgIDxXaWRnZXRXcmFwcGVyIC8+XG4gICAgICAgIDwvU3R5bGVkRW5naW5lUHJvdmlkZXI+XG4gICAgICA8L1BlcnNpc3RHYXRlPlxuICAgIDwvUHJvdmlkZXI+XG4gICk7XG59O1xuXG5NeU9yZGVyc015VGlja2V0c1dpZGdldC5wcm9wVHlwZXMgPSB7XG4gIGxvZ2luVXJsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBzdXBwb3J0RW1haWw6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdCxcbiAgYXBpQmFzZVVybDogUHJvcFR5cGVzLnN0cmluZyxcbiAgdXNlcjogUHJvcFR5cGVzLm9iamVjdCxcbiAgY2xpZW50SWQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHVwZGF0ZVByb2ZpbGU6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBNeU9yZGVyc015VGlja2V0c1dpZGdldDtcbiJdLCJuYW1lcyI6WyJhdXRoRXJyb3JIYW5kbGVyIiwiY3JlYXRlQWN0aW9uIiwiZGVsZXRlUmVxdWVzdCIsImdldFJlcXVlc3QiLCJwdXRSZXF1ZXN0Iiwic3RhcnRMb2FkaW5nIiwic3RvcExvYWRpbmciLCJwTGltaXQiLCJnZXRJZFRva2VuIiwib2JqZWN0VG9RdWVyeVN0cmluZyIsIklkVG9rZW5WZXJpZmllciIsImkxOG4iLCJhdXRoUHJvbWlzZVJlamVjdCIsImdldEFjY2Vzc1Rva2VuU2FmZWx5IiwiREVGQVVMVF9JVEVNU19QRVJfUEFHRSIsIkVSUk9SX0NPREVTIiwiRklGVFlfUEVSX1BBR0UiLCJGSVJTVF9QQUdFIiwiUFJPTUlTRV9CQVRDSF9MSU1JVCIsIlRBQlMiLCJSRVNFVF9TVEFURSIsIlJFU0VUX0ZJTFRFUiIsIlJFU0VUX0FQSV9FUlJPUiIsIlNFVF9TVEFURSIsIlNFVF9BUElfRVJST1IiLCJDSEFOR0VfRklMVEVSIiwiQ0hBTkdFX1NPUlQiLCJHRVRfVVNFUl9PUkRFUlMiLCJSRUZVTkRfT1JERVIiLCJTRVRfQUNUSVZFX09SREVSX0lEIiwiRklMVEVSX1VTRVJfT1JERVJTIiwiR0VUX01ZX0FTU0lHTkVEX1RJQ0tFVFMiLCJVUERBVEVfVElDS0VUIiwiUkVTRVRfVElDS0VUIiwiUkVDRUlWRV9USUNLRVQiLCJSRU1PVkVfVElDS0VUX0FUVEVOREVFIiwiQVNTSUdOX1RJQ0tFVCIsIkRFTEVHQVRFX1RJQ0tFVCIsIlJFRlVORF9USUNLRVQiLCJSRVNFTkRfTk9USUZJQ0FUSU9OIiwiR0VUX1RJQ0tFVFNfQllfT1JERVIiLCJHRVRfVElDS0VUU19CWV9PUkRFUl9FUlJPUiIsIkdFVF9PUkRFUl9USUNLRVRfREVUQUlMUyIsIkdFVF9USUNLRVRfREVUQUlMUyIsIlJFQ0VJVkVfRVhUUkFfUVVFU1RJT05TIiwiVElDS0VUX0FUVEVOREVFX0tFWVMiLCJlbWFpbCIsImZpcnN0TmFtZSIsImxhc3ROYW1lIiwiY29tcGFueSIsImRpc2NsYWltZXJBY2NlcHRlZCIsImV4dHJhUXVlc3Rpb25zIiwiVVBEQVRFX1RJQ0tFVFNfUkVGVU5EX1JFUVVFU1RFRCIsIlNUQVJUX0xPQURJTkdfSURQX1BST0ZJTEUiLCJTVE9QX0xPQURJTkdfSURQX1BST0ZJTEUiLCJVUERBVEVfSURQX1BST0ZJTEUiLCJTRVRfVVNFUiIsIlNFVF9TVU1NSVQiLCJHRVRfTUFJTl9FWFRSQV9RVUVTVElPTlMiLCJSRUNFSVZFX01BUktFVElOR19TRVRUSU5HUyIsIkNMRUFSX01BUktFVElOR19TRVRUSU5HUyIsInJlc2V0VGlja2V0IiwiZGlzcGF0Y2giLCJyZXNldFN0YXRlIiwicmVzZXRGaWx0ZXIiLCJyZXNldEVycm9yIiwic2V0UmVkdWNlclN0YXRlIiwic3VtbWl0IiwidXNlciIsIkZJTFRFUl9WQVJfREFURSIsIkZJTFRFUl9WQVJfQkFER0VfRkVBVFVSRSIsIkZJTFRFUl9WQVJfVElDS0VUX1RZUEUiLCJGSUxURVJfVkFSX1RJQ0tFVF9BU1NJR05FRCIsIkZJTFRFUl9WQVJfT1dORVJfU1RBVFVTIiwiRklMVEVSX1ZBUl9QUk9NT0NPREUiLCJGSUxURVJfVkFSX0ZSRUVfUEFJRCIsIkZJTFRFUl9WQVJfT1JERVJfTlVNQkVSIiwiY2hhbmdlRmlsdGVyIiwiZmlsdGVyIiwiY2hhbmdlU29ydCIsInNvcnQiLCJwYXJzZUZpbHRlciIsImZpbHRlck9iaiIsImN1cnJlbnRUYWIiLCJwdXNoIiwiY29uY2F0IiwibG93ZXIiLCJ1cHBlciIsImxlbmd0aCIsImZpbHRlck5hbWUiLCJPUkRFUlMiLCJqb2luIiwiZ2V0U29ydERpcmVjdGlvbiIsImRpcmVjdGlvbiIsImVycm9ySGFuZGxlck5vdGlmeSIsInBheWxvYWQiLCJjYWxsYmFjayIsImN1c3RvbUF1dGhFcnJvckhhbmRsZXIiLCJlcnIiLCJyZXMiLCJjdXN0b21GZXRjaEVycm9ySGFuZGxlciIsInJlc3BvbnNlIiwiY29kZSIsInN0YXR1cyIsIm1zZyIsInQiLCJPYmplY3QiLCJlbnRyaWVzIiwiZXJyb3JzIiwiZm9yRWFjaCIsIl9yZWYiLCJrZXkiLCJ2YWx1ZSIsIk51bWJlciIsImlzTmFOIiwic3RhdHVzVGV4dCIsInRpdGxlIiwiaHRtbCIsImdldFVzZXJPcmRlcnMiLCJfcmVmMiIsInBhZ2UiLCJwZXJQYWdlIiwiZ2V0U3RhdGUiLCJfcmVmMyIsImFwaUJhc2VVcmwiLCJ3aWRnZXRTdGF0ZSIsImFjY2Vzc1Rva2VuIiwicGFyYW1zIiwiYWNjZXNzX3Rva2VuIiwib3JkZXIiLCJyZWxhdGlvbnMiLCJwZXJfcGFnZSIsImtleXMiLCJmaWx0ZXJzIiwibmFtZSIsImlkIiwidGhlbiIsImNhdGNoIiwiZSIsInNldEFjdGl2ZU9yZGVySWQiLCJvcmRlcklkIiwic2V0VXNlciIsImdldFVzZXJUaWNrZXRzIiwiX3JlZjQiLCJfcmVmNSIsInVzZXJQcm9maWxlIiwiUHJvbWlzZSIsInJlamVjdCIsImZpZWxkcyIsImV4cGFuZCIsIlRJQ0tFVFMiLCJnZXRUaWNrZXRzQnlPcmRlciIsIl9yZWY2IiwiX3JlZjciLCJyZXNlbmROb3RpZmljYXRpb24iLCJ0aWNrZXQiLCJfcmVmOCIsIm1lc3NhZ2UiLCJvcmRlcl9pZCIsInJlZnVuZFRpY2tldCIsIl9yZWY5IiwiX3JlZjEwIiwicmVmdW5kQnVsa1RpY2tldHMiLCJfcmVmMTEiLCJ0aWNrZXRzIiwibGltaXQiLCJhbGxSZWZ1bmRUaWNrZXRDYWxscyIsIm1hcCIsImFsbCIsInN1Y2Nlc3NmdWxseVJlcXVlc3RlZCIsInIiLCJfciRyZXNwb25zZSIsInJlZnVuZF9yZXF1ZXN0cyIsInVwZGF0ZVRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQiLCJ0aWNrZXRzUmVmdW5kUmVxdWVzdGVkIiwiZ2V0RXh0cmFRdWVzdGlvbnMiLCJhdHRlbmRlZUlkIiwiX3JlZjEyIiwiZW5kcG9pbnQiLCJnZXRUaWNrZXQiLCJ0aWNrZXRJZCIsIl9yZWYxMyIsImZpbmFsbHkiLCJub3JtYWxpemVUaWNrZXQiLCJlbnRpdHkiLCJub3JtYWxpemVkRW50aXR5IiwiX29iamVjdFNwcmVhZCIsImF0dGVuZGVlX2NvbXBhbnkiLCJhdHRlbmRlZV9jb21wYW55X2lkIiwicmVmcmVzaFByb2ZpbGUiLCJkYXRhIiwidGlja2V0T3duZXIiLCJfcmVmMTQiLCJfdGlja2V0T3duZXIkbWFuYWdlciIsInVwZGF0ZVByb2ZpbGUiLCJhdHRlbmRlZV9lbWFpbCIsImF0dGVuZGVlX2ZpcnN0X25hbWUiLCJhdHRlbmRlZV9sYXN0X25hbWUiLCJoYXNNYW5hZ2VyIiwibWFuYWdlciIsIm1hbmFnZXJfaWQiLCJpdHNNZSIsInByb2ZpbGVDaGFuZ2VkIiwiZmlyc3RfbmFtZSIsImxhc3RfbmFtZSIsIm5ld1Byb2ZpbGUiLCJzYXZlVGlja2V0RGV0YWlscyIsImFuc3dlcnMiLCJfcmVmMTUiLCJpZFRva2VuIiwidmVyaWZpZXIiLCJqd3QiLCJkZWNvZGUiLCJjb25zb2xlIiwibG9nIiwib3duZXIiLCJhc3NpZ25BdHRlbmRlZSIsImFyZ3VtZW50cyIsInVuZGVmaW5lZCIsIl9yZWYxNiIsInJlYXNzaWduVGlja2V0IiwiX3JlZjE3IiwiZGVsZWdhdGVUaWNrZXQiLCJfcmVmMTgiLCJzYXZlRXh0cmFRdWVzdGlvbnMiLCJfcmVmMTkiLCJnZXRUaWNrZXRQREYiLCJfcmVmMjAiLCJxdWVyeVN0cmluZyIsImFwaVVybCIsImZldGNoIiwicmVzcG9uc2VUeXBlIiwiaGVhZGVycyIsIm9rIiwiYmxvYiIsInBkZiIsImxpbmsiLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJ1cmwiLCJ3aW5kb3ciLCJVUkwiLCJjcmVhdGVPYmplY3RVUkwiLCJocmVmIiwiZG93bmxvYWQiLCJkaXNwYXRjaEV2ZW50IiwiTW91c2VFdmVudCIsIlJlYWN0IiwiUHJvcFR5cGVzIiwidXNlVHJhbnNsYXRpb24iLCJCb3giLCJ1c2VGb3JtaWsiLCJFeHRyYVF1ZXN0aW9uc0ZpZWxkcyIsIkZvcm1Gb290ZXIiLCJ1c2VTY3JvbGxUb0Vycm9yIiwiUmVnaXN0cmF0aW9uRGlzY2xhaW1lciIsImJ1aWxkVmFsaWRhdGlvblNjaGVtYSIsInBhcnNlQW5zd2VycyIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJBc3NpZ25FUUZvcm0iLCJvblN1Ym1pdCIsIm9uQ2xvc2UiLCJmb3JtaWsiLCJpbml0aWFsVmFsdWVzIiwidmFsaWRhdGlvblNjaGVtYSIsInJlZ2lzdHJhdGlvbl9kaXNjbGFpbWVyX21hbmRhdG9yeSIsInZhbHVlcyIsInJlbGV2YW50QW5zd2VycyIsImVuYWJsZVJlaW5pdGlhbGl6ZSIsImhhbmRsZVN1Ym1pdCIsIm5vVmFsaWRhdGUiLCJjaGlsZHJlbiIsInJlZ2lzdHJhdGlvbl9kaXNjbGFpbWVyX2NvbnRlbnQiLCJkaXNjbGFpbWVyIiwiaXNSZXF1aXJlZCIsInNhdmVMYWJlbCIsImNhbmNlbExhYmVsIiwiZGlzYWJsZWQiLCJpc1N1Ym1pdHRpbmciLCJwcm9wVHlwZXMiLCJvYmplY3QiLCJhcnJheSIsImZ1bmMiLCJDb250ZW50Q29weUljb24iLCJUb29sdGlwIiwiTUlMTElTRUNfVE9fU0VDIiwic3R5bGVzIiwiZGVmYXVsdFdpZHRoIiwiQ29weVRleHQiLCJ0ZXh0IiwidG9vbHRpcFRleHQiLCJoaWRlQ29weSIsInRydW5jYXRlZCIsInJldmVyc2VkIiwid2lkdGgiLCJ0b29sdGlwVGV4dFRvVXNlIiwidG9vbHRpcCIsInNldFRvb2x0aXAiLCJ1c2VTdGF0ZSIsImNsYXNzTmFtZXMiLCJoYW5kbGVDb3B5IiwibmF2aWdhdG9yIiwiY2xpcGJvYXJkIiwid3JpdGVUZXh0Iiwic2V0VGltZW91dCIsImNsYXNzTmFtZSIsIndyYXBwZXIiLCJzdHlsZSIsImNvcHlJY29uIiwib25DbGljayIsInN0cmluZyIsImJvb2wiLCJudW1iZXIiLCJjcmVhdGVDb250ZXh0IiwiZGVmYXVsdENvbnRleHRWYWx1ZSIsInNldE1lc3NhZ2UiLCJzZXRNZXNzYWdlQ2FsbGJhY2siLCJDdXN0b21EaWFsb2dDb250ZXh0IiwiRGlhbG9nIiwiRGlhbG9nQ29udGVudCIsIkRpYWxvZ0NvbnRlbnRUZXh0IiwiRGlhbG9nVGl0bGUiLCJDdXN0b21EaWFsb2ciLCJvcGVuIiwiYm9keSIsImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIiwiX19odG1sIiwiVGhlbWVQcm92aWRlciIsImNyZWF0ZVRoZW1lIiwiZGFya0NvbG9yIiwicm9vdCIsImRvY3VtZW50RWxlbWVudCIsImdldENvbXB1dGVkU3R5bGUiLCJnZXRQcm9wZXJ0eVZhbHVlIiwidGhlbWUiLCJwYWxldHRlIiwicHJpbWFyeSIsIm1haW4iLCJzZWNvbmRhcnkiLCJ0eXBvZ3JhcGh5IiwiYm9keTEiLCJmb250U2l6ZSIsImg1IiwiZm9udFdlaWdodCIsIm1hcmdpbkJvdHRvbSIsImg2IiwiY29tcG9uZW50cyIsIk11aUZvcm1IZWxwZXJUZXh0Iiwic3R5bGVPdmVycmlkZXMiLCJNdWlCdXR0b24iLCJsaW5lSGVpZ2h0IiwiTXVpVGFiIiwiY29sb3IiLCJNdWlUYWJzIiwiaW5kaWNhdG9yIiwiYmFja2dyb3VuZENvbG9yIiwiQ3VzdG9tVGhlbWUiLCJub2RlIiwiQ2hlY2tib3giLCJGb3JtQ29udHJvbCIsIkZvcm1Db250cm9sTGFiZWwiLCJGb3JtR3JvdXAiLCJGb3JtSGVscGVyVGV4dCIsIkZvcm1MYWJlbCIsImdldExhYmVsIiwidG9TbHVnIiwiQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZCIsIl9xdWVzdGlvbiR2YWx1ZXMiLCJxdWVzdGlvbiIsInF1ZXN0aW9uQ2xhc3NOYW1lIiwiaXNEaXNhYmxlZCIsIm9uQ2hhbmdlIiwic2V0RmllbGRWYWx1ZSIsImVycm9yIiwiaGVscGVyVGV4dCIsInJlc3QiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJfZXhjbHVkZWQiLCJxdWVzdGlvblNsdWciLCJxdWVzdGlvbkxhYmVsIiwibWFuZGF0b3J5IiwicXVlc3Rpb25NYXhWYWx1ZXMiLCJtYXhfc2VsZWN0ZWRfdmFsdWVzIiwicXVlc3Rpb25PcHRpb25zIiwidmFsIiwibGFiZWwiLCJ0b1N0cmluZyIsImhhbmRsZUNoZWNrYm94TGlzdENoYW5nZSIsImNoZWNrZWQiLCJjdXJyZW50QW5zIiwibWF4U2VsZWN0aW9uUmVhY2hlZCIsIm5ld1ZhbHVlIiwidiIsInJlcXVpcmVkIiwiZnVsbFdpZHRoIiwibWFyZ2luIiwib3AiLCJjb250cm9sIiwiaW5jbHVkZXMiLCJldiIsInRhcmdldCIsIlJhd0hUTUwiLCJDaGVja2JveFF1ZXN0aW9uRmllbGQiLCJzeCIsImFsaWduSXRlbXMiLCJtYXJnaW5Ub3AiLCJJbnB1dExhYmVsIiwiTWVudUl0ZW0iLCJTZWxlY3QiLCJEcm9wZG93blF1ZXN0aW9uRmllbGQiLCJsYWJlbElkIiwiUmFkaW8iLCJSYWRpb0dyb3VwIiwiUmFkaW9MaXN0UXVlc3Rpb25GaWVsZCIsIlRleHRGaWVsZCIsIlRleHRRdWVzdGlvbkZpZWxkIiwiUXVlc3Rpb25UeXBlX0NoZWNrYm94IiwiUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdCIsIlF1ZXN0aW9uVHlwZV9Db21ib0JveCIsIlF1ZXN0aW9uVHlwZV9Db3VudHJ5Q29tYm9Cb3giLCJRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0IiwiY2hlY2tSdWxlIiwicnVsZSIsImFuc3dlcl92YWx1ZXMiLCJBcnJheSIsImlzQXJyYXkiLCJhbnN3ZXJfdmFsdWVzX29wZXJhdG9yIiwiY2hlY2tWaXNpYmlsaXR5IiwicnVsZVJlc3VsdCIsInZpc2liaWxpdHkiLCJ2aXNpYmlsaXR5X2NvbmRpdGlvbiIsInF1ZXN0aW9uSWQiLCJ0ZXh0TEMiLCJ0b0xvd2VyQ2FzZSIsInJlcGxhY2UiLCJxIiwiX3EkbGFiZWwiLCJpc0Fuc3dlcmVkIiwiYW5zd2VyIiwiY2hlY2tJZlZhbHVlTWF0Y2giLCJjb21wYXJlVmFsIiwiYW5zd2VyQXJyYXkiLCJzb21lIiwiZ2V0VHlwZUluaXRpYWxWYWx1ZSIsInR5cGUiLCJnZXRUeXBlVmFsdWUiLCJhbnMiLCJzcGxpdCIsInRyYW5zZm9ybUFud2Vyc0Zvcm1hdCIsImRpc2NsYWltZXJfYWNjZXB0ZWQiLCJleHRyYV9xdWVzdGlvbnMiLCJmb3JtYXR0ZWRFUSIsInF1ZXN0aW9uX2lkIiwicGFyc2VJbnQiLCJwb3AiLCJRdWVzdGlvblR5cGVfVGV4dCIsIlF1ZXN0aW9uVHlwZV9UZXh0QXJlYSIsIlF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbiIsImdldFF1ZXN0aW9uRmllbGRDb21wb25lbnQiLCJxdWVzdGlvblR5cGUiLCJGcmFnbWVudCIsInJlYWRPbmx5IiwiYWxsb3dFZGl0IiwicmVuZGVyUnVsZSIsImlzVmlzaWJsZSIsInJlbmRlclF1ZXN0aW9uIiwic3ViX3F1ZXN0aW9uIiwiX3Ekc3ViX3F1ZXN0aW9uX3J1bGVzIiwiUXVlc3Rpb25GaWVsZENvbXBvbmVudCIsImZvcm1pa1Byb3BzIiwiaGFuZGxlQ2hhbmdlIiwib25CbHVyIiwiaGFuZGxlQmx1ciIsInRvdWNoZWQiLCJCb29sZWFuIiwic3ViX3F1ZXN0aW9uX3J1bGVzIiwidXNlU2VsZWN0b3IiLCJzaGFsbG93RXF1YWwiLCJDYXJkSGVhZGVyIiwiSWNvbkJ1dHRvbiIsIkNvbGxhcHNlIiwiQ2FyZENvbnRlbnQiLCJFeHBhbmRNb3JlSWNvbiIsIkFzc2lnbmVkRmlsdGVyIiwib25GaWx0ZXIiLCJmaWx0ZXJWYWx1ZXMiLCJzdGF0ZSIsImlzRXhwYW5kZWQiLCJzZXRJc0V4cGFuZGVkIiwiYXNzaWduZWRWYWx1ZXMiLCJoYW5kbGVGaWx0ZXJDaGFuZ2UiLCJuZXdGaWx0ZXIiLCJ0aXRsZVdyYXBwZXIiLCJhY3Rpb24iLCJkaXNhYmxlUmlwcGxlIiwidHJhbnNmb3JtIiwidHJhbnNpdGlvbiIsImluIiwidGltZW91dCIsInVubW91bnRPbkV4aXQiLCJweSIsInBiIiwiYXNzaWduZWQiLCJ1c2VFZmZlY3QiLCJCYWRnZUZlYXR1cmVGaWx0ZXIiLCJiYWRnZV9mZWF0dXJlc190eXBlcyIsIm5ld0ZpbHRlcnMiLCJmIiwiYmYiLCJ1c2VSZWYiLCJTdGFjayIsIkZpbHRlckxpc3RJY29uIiwiQmFkZ2UiLCJCdXR0b24iLCJDYXJkIiwiRGl2aWRlciIsIlBhcGVyIiwiY29ubmVjdCIsIlRpY2tldFR5cGVGaWx0ZXIiLCJTdGF0dXNGaWx0ZXIiLCJGcmVlUGFpZEZpbHRlciIsIlByb21vQ29kZUZpbHRlciIsIkZpbHRlciIsIm9uUmVzZXQiLCJzaG93RmlsdGVyTGlzdCIsInNldFNob3dGaWx0ZXJMaXN0Iiwic2hvd0RhdGVwaWNrZXIiLCJzZXRTaG93RGF0ZXBpY2tlciIsImZpbHRlck51bUFjdGl2ZSIsInNldEZpbHRlck51bUFjdGl2ZSIsImZpbHRlclJlZiIsImhhbmRsZUZpbHRlckNsaWNrT3V0c2lkZSIsImV2ZW50IiwiY3VycmVudCIsImNvbnRhaW5zIiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJNQVJHSU5fUklHSFRfV0lUSF9CQURHRSIsIkFERF9GSUxURVJfTlVNQkVSIiwiY2FsY3VsYXRlQWN0aXZlRmlsdGVycyIsImNvdW50IiwidHJpbSIsInRvZ2dsZSIsImhhbmRsZUZpbHRlclJlc2V0IiwiZmlsdGVyQ29udGFpbmVyIiwicmVmIiwicHQiLCJiYWRnZUNvbnRlbnQiLCJtciIsImZpbHRlckljb24iLCJmaWx0ZXJMYWJlbCIsImZpbHRlckxpc3RDb250YWluZXIiLCJjb250YWluZXIiLCJlbGV2YXRpb24iLCJmaWx0ZXJDaGVja2JveENvbnRhaW5lciIsInZhcmlhbnQiLCJjbGVhbkJ1dHRvbiIsIm1hcFN0YXRlVG9Qcm9wcyIsInByb21vQ29kZSIsInNldFByb21vQ29kZSIsImRlYm91bmNlVGltZXIiLCJERUJPVU5DRV9WQUxVRSIsIm5ld1Byb21vQ29kZSIsImNsZWFyVGltZW91dCIsInBsYWNlaG9sZGVyIiwic3R5bGVkIiwiU2VhcmNoSWNvbiIsIkNsb3NlSWNvbiIsIklucHV0QmFzZSIsIlNlYXJjaENvbnRhaW5lciIsInBvc2l0aW9uIiwibWFyZ2luUmlnaHQiLCJtYXJnaW5MZWZ0IiwiZGlzcGxheSIsIlNlYXJjaEljb25XcmFwcGVyIiwiaGVpZ2h0IiwianVzdGlmeUNvbnRlbnQiLCJTdHlsZWRJbnB1dEJhc2UiLCJib3JkZXJCb3R0b20iLCJwYWRkaW5nTGVmdCIsInBhZGRpbmdSaWdodCIsIkNsb3NlSWNvbldyYXBwZXIiLCJwYWRkaW5nIiwidG9wIiwicmlnaHQiLCJjdXJzb3IiLCJ6SW5kZXgiLCJTZWFyY2giLCJvblNlYXJjaCIsInNob3dDbG9zZSIsInNldFNob3dDbG9zZSIsInNlYXJjaFZhbHVlIiwic2V0U2VhcmNoVmFsdWUiLCJvbktleURvd24iLCJuYXRpdmVFdmVudCIsInJlc2V0U2VhcmNoIiwiaW5wdXRQcm9wcyIsIkltcG9ydEV4cG9ydEljb24iLCJTb3J0Iiwib25Tb3J0Iiwic2hvd1NvcnQiLCJzZXRTaG93U29ydCIsInNvcnRSZWYiLCJoYW5kbGVTb3J0Q2xpY2tPdXRzaWRlIiwic29ydENvbnRhaW5lciIsInNvcnRJY29uIiwic29ydExhYmVsIiwic29ydExpc3RDb250YWluZXIiLCJ0aWNrZXRfdHlwZXMiLCJHcmlkIiwiRmlsdGVycyIsImp1c3RpZnkiLCJpdGVtIiwieHMiLCJnYXAiLCJmaWx0ZXJTb3J0Q29udGFpbmVyIiwiZm9vdGVyIiwiY2FuY2VsQnRuIiwic2l6ZSIsInNhdmVCdG4iLCJFcnJvckljb24iLCJFcnJvckxhYmVsIiwiZGF0YVRlc3RJZCIsImVycm9yTGFiZWwiLCJCYWNrZHJvcCIsIkNpcmN1bGFyUHJvZ3Jlc3MiLCJMb2FkZXIiLCJkcmF3ZXIiLCJJbmZpbml0ZVNjcm9sbCIsIk9yZGVyc0xpc3QiLCJPTkVfUEFHRV9ORVhUIiwiTXlPcmRlcnNUaWNrZXRzIiwiZmV0Y2hEYXRhIiwibWVtYmVyT3JkZXJzIiwib3JkZXJzX2N1cnJlbnRfcGFnZSIsIm9yZGVyc19sYXN0X3BhZ2UiLCJteU9yZGVyc1dyYXBwZXIiLCJkYXRhTGVuZ3RoIiwibmV4dCIsImhhc01vcmUiLCJzY3JvbGxUaHJlc2hvbGQiLCJub09yZGVyc0ZvdW5kIiwibm9PcmRlcnNJY29uV3JhcHBlciIsImNhbGN1bGF0ZU9yZGVyVG90YWxzIiwiZm9ybWF0Q3VycmVuY3kiLCJfRnJhZ21lbnQiLCJPcmRlclN1bW1hcnlUYWJsZSIsImRpc2NvdW50VG90YWwiLCJyZWZ1bmRUb3RhbCIsInRheGVzVG90YWwiLCJhbW91bnRUb3RhbCIsInRpY2tldFN1bW1hcnkiLCJodW5kcmVkIiwib3JkZXJTdW1tYXJ5VGFibGUiLCJ0aWNrZXRUb3RhbCIsInF0eSIsInRpY2tldF90eXBlIiwiY29zdCIsImFsaWduIiwiY3VycmVuY3kiLCJjcmVhdGVkIiwiZGlzY291bnRfYW1vdW50IiwidGF4ZXNfYW1vdW50Iiwic2hhcGUiLCJ1c2VOb3ciLCJ0aWNrZXRzUmVmdW5kYWJsZSIsIlJlZnVuZEVtYWlsU3VwcG9ydCIsInN1Ym1pdFJlcXVlc3QiLCJvblJlZnVuZENsaWNrIiwib25SZWZ1bmREZXRhaWxDbGljayIsIm5vdyIsImlzSW5SZWZ1bmRhYmxlUGVyaW9kIiwicmVnaXN0cmF0aW9uX2FsbG93ZWRfcmVmdW5kX3JlcXVlc3RfdGlsbF9kYXRlIiwiYXRMZWFzdE9uZVJlZnVuZGFibGVUaWNrZXQiLCJpc1JlZnVuZGFibGUiLCJoYXNSZWZ1bmRSZXF1ZXN0cyIsInJvbGUiLCJvcmRlclN1bW1hcnlCdXR0b24iLCJyZWZ1bmREaXNhYmxlZCIsInJlbCIsInN1cHBvcnRfZW1haWwiLCJhcnJheU9mIiwiT3JkZXJTdW1tYXJ5Iiwib3JkZXJTdW1tYXJ5V3JhcHBlciIsInB4Iiwib3JkZXJTdW1tYXJ5UHVyY2hhc2VkSW5mbyIsIm1lbWJlclRpY2tldHMiLCJPcmRlckxpc3RUaWNrZXRzIiwiQXNzaWduVG9NZSIsInVzZXJUaWNrZXRzIiwidXNlcl90aWNrZXRzX2N1cnJlbnRfcGFnZSIsInVzZXJfdGlja2V0c19sYXN0X3BhZ2UiLCJvcmRlclRpY2tldENvbnRhaW5lciIsImFzc2lnbmVkVG9NZVdyYXBwZXIiLCJ0aWNrZXRMaXN0Q29udGFpbmVyIiwiaXNSZWZ1bmRNb2RhbCIsImlzU2VsZWN0ZWRUb1JlZnVuZCIsInNlbGVjdFRvUmVmdW5kIiwiaXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0Iiwibm9UaWNrZXRzRm91bmQiLCJUeXBvZ3JhcGh5IiwiQXNzaWduZWRUbyIsIkV4dGVybmFsQXNzaWduZWRUbyIsIk1hbmFnZUZvciIsIkF0dGVuZGVlU3RhdHVzIiwiX3RpY2tldCRvd25lciIsIl90aWNrZXQkb3duZXIyIiwiX3RpY2tldCRvd25lcjMiLCJpc1VuYXNzaWduZWQiLCJpc19hY3RpdmUiLCJpc0RlbGVnYXRlZCIsInRpY2tldE93bmVyRW1haWwiLCJfdGlja2V0JG9yZGVyIiwiX3RpY2tldCRvcmRlcjIiLCJfdGlja2V0JG93bmVyNCIsIl90aWNrZXQkb3duZXI1IiwiYXNzaWduZWRCeVRleHQiLCJvd25lcl9maXJzdF9uYW1lIiwib3duZXJfbGFzdF9uYW1lIiwiUEFHSU5BVElPTl9ESVNQTEFZX0NPVU5UIiwiT3JkZXJMaXN0SXRlbSIsIl9vcmRlciRtZW1iZXJUaWNrZXRzIiwiX29yZGVyJG1lbWJlclRpY2tldHMyIiwib25QYWdpbmF0ZUNsaWNrIiwidGlja2V0c1RvUmVmdW5kIiwiaXRlbXNUb0Rpc3BsYXkiLCJzZXRJdGVtc1RvRGlzcGxheSIsInNsaWNlZFRpY2tldHMiLCJzbGljZSIsIm9uVmlld01vcmUiLCJ0aWNrZXRzX3RvdGFsIiwib25WaWV3TGVzcyIsImZpbmQiLCJ2aWV3TW9yZUJ1dHRvbiIsInVzZURpc3BhdGNoIiwiVGlja2V0U3RhdHVzIiwiZ2V0U3VtbWl0UmVhc3NpZ25EYXRlIiwiVGlja2V0RGV0YWlsIiwidXNlVGlja2V0RGV0YWlscyIsIlRpY2tldEFzc2lnbiIsIm1vZGFsVmlld3MiLCJkZXRhaWwiLCJyZWFzc2lnbiIsImFzc2lnbiIsIlRpY2tldENUQXMiLCJpc0luY29tcGxldGUiLCJpc1JlYXNzaWduYWJsZSIsIm9uT3BlbkNsaWNrIiwiYXNzaWduVGlja2V0QnV0dG9uIiwidmlld0ZpbmlzaFRpY2tldEJ1dHRvbiIsInJlYXNzaWduQnV0dG9uIiwiX3RpY2tldCR0aWNrZXRfdHlwZSIsIl90aWNrZXQkYmFkZ2UiLCJjYW5SZWFzc2lnbiIsIm1vZGFsT3BlbiIsInNldE1vZGFsT3BlbiIsInJlYXNzaWduRGF0ZSIsIm9uUmVhc3NpZ25hYmxlUGVyaW9kIiwiaGFuZGxlQ2xvc2VNb2RhbCIsImhhbmRsZU9wZW5Nb2RhbCIsInZpZXciLCJvcmRlcldyYXBwZXIiLCJyZWZ1bmRNb2RhbCIsImRpc2FibGVkUmVmdW5kIiwic2VsZWN0ZWQiLCJjaGVja2JveCIsInBsIiwidGlja2V0VGlja2V0VHlwZSIsImJhZGdlRmVhdHVyZVdyYXBwZXIiLCJwciIsImJhZGdlIiwiZmVhdHVyZXMiLCJiYWRnZUZlYXR1cmUiLCJzcmMiLCJpbWFnZSIsImFsdCIsInRpY2tldE5vIiwiZmxleFdyYXAiLCJtaW5XaWR0aCIsInRpY2tldEFjdGlvbkJ1dHRvbnMiLCJvd25lcklkIiwidG90YWxfcmVmdW5kZWRfYW1vdW50IiwiVGFicyIsIlRhYiIsIlJlZnVuZFJlcXVlc3RzTW9kYWwiLCJSZWZ1bmREZXRhaWxzIiwiVGFiUGFuZWwiLCJwcm9wcyIsImluZGV4IiwiaGlkZGVuIiwiT3JkZXJzTGlzdERlc2t0b3BNb2JpbGUiLCJpc01vYmlsZSIsImRldGFpbHNSZXF1aXJlZCIsInNldFZhbHVlIiwiXyIsInNldFRpY2tldHNUb1JlZnVuZCIsInNldFN1Ym1pdFJlcXVlc3QiLCJyZWZ1bmREZXRhaWxzT3BlbiIsInNldFJlZnVuZERldGFpbHNPcGVuIiwidW5zZWxlY3RSZWZ1bmRUaWNrZXRzIiwiZmlsdGVyU2VsZWN0ZWQiLCJzZWxlY3RlZFRpY2tldCIsImNsb3NlU3VibWl0UmVxdWVzdCIsInJlc2V0QWxsUmVmdW5kU3RhdHVzZXMiLCJtb3JlRGV0YWlscyIsImJvcmRlckNvbG9yIiwidGFiQnV0dG9ucyIsIm1kIiwib25SZWZ1bmRTdWNjZXNzQ2xvc2UiLCJvbkNsb3NlU2xpZGVyIiwidXNlVGhlbWUiLCJ1c2VNZWRpYVF1ZXJ5IiwiZ2V0Rm9ybWF0dGVkRGF0ZSIsInRpY2tldF9wZXJfcGFnZSIsImJyZWFrcG9pbnRzIiwiZG93biIsImlzTW9iaWxlVmlld2FibGUiLCJzZXRNb2JpbGVWaWV3YWJsZSIsInRpY2tldHNfcGFnZV9jdXJyZW50IiwibGciLCJvcmRlclRpY2tldEluZm9Db250YWluZXIiLCJvcmRlclRpY2tldEluZm8iLCJyb3dTcGFjaW5nIiwiY29sdW1uU3BhY2luZyIsInNtIiwiZGlzcGxheV9ub25lIiwiZmxleERpcmVjdGlvbiIsInVzZU1lbW8iLCJSaWdodERyYXdlciIsIlJlZnVuZFJlcXVlc3RlZFRpY2tldCIsImdldEFsbFJlZnVuZFJlcXVlc3RlZFRpY2tldHMiLCJyZXF1ZXN0ZWRUaWNrZXRzIiwiY2xvc2VTbGlkZXIiLCJyZWZ1bmREZXRhaWxzIiwidG9vbHRpcENsYXNzZXMiLCJJbmZvSWNvbiIsIm1vbWVudCIsIlJlZnVuZFN0YXR1cyIsIkdSSURfOCIsIkdSSURfMTIiLCJQQURESU5HXzIiLCJhcHByb3ZlZFJlZnVuZHMiLCJyZWZ1bmQiLCJyZWZ1bmRlZFRheGVzU3VtbWF0b3J5IiwicmVmdW5kZWRfdGF4ZXMiLCJydCIsInRheElkIiwidGF4IiwidG90YWxSZWZ1bmRlZFRheEFtb3VudCIsInJlZnVuZGVkX2Ftb3VudCIsIkh0bWxUb29sdGlwIiwiY2xhc3NlcyIsInBvcHBlciIsIm1heFdpZHRoIiwiYm9yZGVyIiwicmVmdW5kVGlja2V0Qm94Q29udGFpbmVyIiwicmVmdW5kRGV0YWlsIiwicmVmdW5kVGlja2V0QXR0ZW5kZWUiLCJhY3Rpb25fZGF0ZSIsImZvcm1hdCIsIkNoaXAiLCJnZXRSZWZ1bmRSZXF1ZXN0ZWRTdGF0dXNDb2xvciIsInN0YXR1c0NvbG9yIiwiYnV0dG9uUGlsbCIsIlN0eWxlZEVuZ2luZVByb3ZpZGVyIiwiQ2hlY2tDaXJjbGVJY29uIiwiU1RFUF9PTkUiLCJTVEVQX1RIUkVFIiwiU1RFUF9UV08iLCJzdGVwIiwic2V0U3RlcCIsImVycm9yTXNnIiwic2V0RXJyb3JNc2ciLCJyZWZ1bmRTdWNjZXNzIiwic2V0UmVmdW5kU3VjY2VzcyIsImNvbmZpcm1SZWZ1bmQiLCJnb0JhY2tUb1JlZnVuZCIsInJlZnVuZFRpY2tldHMiLCJyZWZ1bmRTdGVwT25lIiwic3VidGl0bGUiLCJ0aWNrZXRMaXN0IiwiYWN0aW9uQnV0dG9ucyIsImNhbmNlbEJ1dHRvbiIsImNvbnRpbnVlQnV0dG9uIiwicmVmdW5kU3RlcFR3byIsInJlZnVuZEVycm9yTXNnIiwiQ1RBQnV0dG9uV3JhcHBlciIsInJlZnVuZFN0ZXBUaHJlZSIsInJlZnVuZFN1Y2Nlc3NmdWwiLCJzdWNjZXNzTXNnIiwic3VjY2Vzc01zZzIiLCJyZW5kZXJTdGVwcyIsImluamVjdEZpcnN0IiwiRHJhd2VyIiwiQ2xvc2UiLCJhbmNob3IiLCJNb2RhbFByb3BzIiwia2VlcE1vdW50ZWQiLCJoZWFkZXIiLCJjbG9zZUJ0biIsImZsb2F0IiwiZ3V0dGVyQm90dG9tIiwib25lT2ZUeXBlIiwiZ2V0U3VtbWl0Rm9ybWF0dGVkRGF0ZSIsIlN1bW1pdEhlYWRlciIsIndpZGdldEhlYWRlciIsInN1bW1pdFRpdGxlRGF0ZSIsInl1cCIsIkRlbGVnYXRlRm9ybSIsImRlbGVnYXRlX2ZpcnN0X25hbWUiLCJkZWxlZ2F0ZV9sYXN0X25hbWUiLCJkZWxlZ2F0ZV9lbWFpbCIsInJlc2V0Rm9ybSIsImhhbmRsZUNhbmNlbCIsIkxpbmsiLCJBc3NpZ25IZWFkZXIiLCJpblByb2dyZXNzIiwidXNlckVtYWlsIiwiYXNzaWduZWRUb1lvdSIsImdldFNlY29uZGFyeVRpdGxlIiwiZ2V0SGVhZGVyTm90ZSIsInRyYW5zS2V5IiwiY29tcG9uZW50IiwicHVyY2hhc2VkQnlXcmFwcGVyIiwicHVyY2hhc2VkQnkiLCJvd25lcl9lbWFpbCIsIm9yZGVyTm8iLCJoZWFkZXJOb3RlIiwiUmVhc3NpZ25IZWFkZXIiLCJhbGxvd3NEZWxlZ2F0ZSIsIlJlYXNzaWduRm9ybSIsIm5ld19hdHRlbmRlZV9lbWFpbCIsInBlcnNvbmFsX21lc3NhZ2UiLCJtdWx0aWxpbmUiLCJtaW5Sb3dzIiwidXNlR2V0VGlja2V0Iiwic2F2ZU1lc3NhZ2UiLCJzZXRTYXZlTWVzc2FnZSIsImFzc2lnbk9wdGlvbiIsInNldEFzc2lnbk9wdGlvbiIsImFzc2lnbmF0aW9uSW5Qcm9ncmVzcyIsInNldEFzc2lnbmF0aW9uSW5Qcm9ncmVzcyIsImlzQXNzaWduZWRUb01lIiwib25Bc3NpZ24iLCJvbkRlbGVnYXRlIiwib25DbG9zZUVRRm9ybSIsIm9uQ2xvc2VTYXZlTWVzc2FnZSIsIm9uU2F2ZUVRIiwiZGVzY3JpcHRpb24iLCJyZXNvbHZlIiwiSGVhZGVyIiwidGlja2V0UmVhc3NpZ25Db250YWluZXIiLCJhc3NpZ25PcHRpb25zV3JhcHBlciIsIm15IiwiQXV0b2NvbXBsZXRlIiwicXVlcnlSZWdpc3RyYXRpb25Db21wYW5pZXMiLCJDb21wYW55RmllbGQiLCJzdW1taXRJZCIsImlucHV0VmFsdWUiLCJzZXRJbnB1dFZhbHVlIiwib3B0aW9ucyIsInNldE9wdGlvbnMiLCJzZXRGaWVsZFRvdWNoZWQiLCJyZXN1bHRzIiwibmV3T3B0aW9ucyIsImF1dG9Db21wbGV0ZSIsImZyZWVTb2xvIiwiaW5jbHVkZUlucHV0SW5MaXN0IiwiZmlsdGVyU2VsZWN0ZWRPcHRpb25zIiwiZ2V0T3B0aW9uTGFiZWwiLCJvcHRpb24iLCJ0bXBWYWx1ZSIsIm9uSW5wdXRDaGFuZ2UiLCJuZXdJbnB1dFZhbHVlIiwiZmlsdGVyT3B0aW9ucyIsImZpbHRlcmVkIiwiaXNFeGlzdGluZyIsInJlbmRlcklucHV0IiwicmVuZGVyT3B0aW9uIiwib3B0aW9uUHJvcHMiLCJUaWNrZXRPd25lckZpZWxkcyIsIlRpY2tldEZvcm0iLCJjYW5FZGl0IiwicmVkdWNlIiwiYWRkaXRpb25hbERldGFpbHMiLCJpbmZvTm90ZSIsIlFSQ29kZSIsIkZpbGVEb3dubG9hZE91dGxpbmVkIiwiRG93bmxvYWRJY29uIiwiRW1haWxPdXRsaW5lZCIsIkVtYWlsSWNvbiIsIlRXT19JVEVNIiwiX3RpY2tldCRvcmRlcjMiLCJzZW50Q29uZmlybWF0aW9uIiwic2V0U2VudENvbmZpcm1hdGlvbiIsImlzVXNlck9yZGVyT3duZXIiLCJvd25lcl9pZCIsImlzVXNlclRpY2tldE93bmVyIiwiY2FuRWRpdFRpY2tldERhdGEiLCJhbGxvd191cGRhdGVfYXR0ZW5kZWVfZXh0cmFfcXVlc3Rpb25zIiwiaXNDb21wbGV0ZSIsIm9uU2F2ZSIsImRvd25sb2FkVGlja2V0UGRmIiwib25TZW5kRW1haWwiLCJ0aWNrZXREZXRhaWxDb250YWluZXIiLCJxckNvZGUiLCJxcl9jb2RlIiwidmlld0JveCIsInFyTm90ZSIsImlzX3ZpcnR1YWwiLCJhY3Rpb25CdXR0b25zQ29udGFpbmVyIiwiZG93bmxvYWRCdG4iLCJzZW5kQnRuIiwic2VudCIsIm9yZGVyTnVtYmVyIiwiYXR0ZW5kZWVDb250YWluZXIiLCJhdHRlbmRlZUluZm9UaXRsZSIsIkNvbnRhaW5lciIsIl90aWNrZXQkcmVmdW5kX3JlcXVlcyIsImlzQWN0aXZlIiwicmVmdW5kUmVxdWVzdHMiLCJ0aWNrZXRTdGF0dXNDb250YWluZXIiLCJidXR0b25SZWZ1bmRSZXF1ZXN0ZWQiLCJidXR0b25JbmNvbXBsZXRlIiwiYnV0dG9uVW5hc3NpZ25lZCIsImJ1dHRvbkNvbXBsZXRlIiwiYnV0dG9uQ2FuY2VsbGVkIiwiQXNzaWduZWRUb01lIiwiV2lkZ2V0VGFicyIsInRhYiIsInNldFRhYiIsInRpY2tldHNGdWxseUxvYWRlZCIsInNldFRpY2tldHNGdWxseUxvYWRlZCIsIm9yZGVyc19wZXJfcGFnZSIsIm9yZGVyc1BlclBhZ2UiLCJ0aWNrZXRQZXJQYWdlIiwiaGFuZGxlVGFiQ2hhbmdlIiwibmV3VGFiIiwiZmV0Y2hBc3NpZ25lZFRpY2tldHMiLCJmZXRjaE9yZGVyVGlja2V0cyIsIm9yZGVyVGlja2V0c1Byb21pc2VzIiwiY3VycmVudF9wYWdlIiwiZmV0Y2hQcm9taXNlcyIsInRhYldyYXBwZXIiLCJXaWRnZXRXcmFwcGVyIiwibWVzc2FnZUNhbGxiYWNrIiwibG9hZGluZyIsImFwaUVycm9yIiwicmVzZXRBcGlFcnJvciIsImZpbHRlclZhbHVlIiwic29ydFZhbHVlIiwidGlja2V0c1RpdGxlVGV4dCIsIlByb3ZpZGVyIiwicnVuIiwiY3VycmVudFRpY2tldCIsInNtb290aFNjcm9sbFRvIiwidGFyZ2V0U2Nyb2xsVG9wIiwiZHVyYXRpb24iLCJzdGFydFNjcm9sbFRvcCIsInNjcm9sbFRvcCIsImRpc3RhbmNlIiwic3RhcnRUaW1lIiwiYW5pbWF0aW9uU3RlcCIsInRpbWVzdGFtcCIsImVsYXBzZWQiLCJwcm9ncmVzcyIsIk1hdGgiLCJtaW4iLCJlYXNlSW5PdXRRdWFkIiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwiY29udGFpbmVySWQiLCJpc1ZhbGlkIiwiZXJyb3JBcnJheSIsImVycm9yQ291bnQiLCJlbGVtZW50c1NvcnRlZCIsInJlc3VsdCIsImVsZW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwiZWxSZWN0IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwiYSIsImIiLCJnZXRFbGVtZW50QnlJZCIsImNvbnRhaW5lclJlY3QiLCJlbGVtT2ZmZXN0IiwiYW5pbWF0aW9uRHVyYXRpb24iLCJpc1RpY2tldFJlZnVuZGFibGUiLCJTVEFUVVNfQ09NUExFVEUiLCJTVEFUVVNfSU5DT01QTEVURSIsIlNUQVRVU19DQU5DRUxMRUQiLCJTVEFUVVNfVU5BU1NJR05FRCIsIl90aWNrZXQkcHJvbW9fY29kZSIsIl90aWNrZXQkdGlja2V0X3R5cGUyIiwiX3RpY2tldCRwcm9tb19jb2RlMiIsImdldFN0YXR1cyIsImFsbG93c190b19kZWxlZ2F0ZSIsInByb21vX2NvZGUiLCJhbGxvd3NfdG9fcmVhc3NpZ24iLCJpbml0UmVhY3RJMThuZXh0IiwiTGFuZ3VhZ2VEZXRlY3RvciIsImVuIiwiZXMiLCJ1c2UiLCJpbml0IiwiZmFsbGJhY2tMbmciLCJkZWJ1ZyIsInJlc291cmNlcyIsInRyYW5zbGF0aW9uIiwiaW50ZXJwb2xhdGlvbiIsImVzY2FwZVZhbHVlIiwiTE9HT1VUX1VTRVIiLCJTVEFSVF9MT0FESU5HIiwiU1RPUF9MT0FESU5HIiwiUkVTRVRfTE9BRElORyIsImhhc0xvYWRlZEFsbERhdGEiLCJ1cGRhdGVUaWNrZXRDb2xsZWN0aW9uIiwiREVGQVVMVF9GSUxURVJfU1RBVEUiLCJERUZBVUxUX1NUQVRFIiwid2lkZ2V0TG9hZGluZyIsImN1cnJlbnRfdGFiIiwib3JkZXJzX3RvdGFsIiwidGlja2V0X2N1cnJlbnRfcGFnZSIsInRpY2tldF9sYXN0X3BhZ2UiLCJ0aWNrZXRfdG90YWwiLCJ1c2VyX3RpY2tldHNfdG90YWwiLCJXaWRnZXRSZWR1Y2VyIiwidG90YWwiLCJsYXN0X3BhZ2UiLCJmb3JtZXJPcmRlciIsIm8iLCJfZGF0YSQiLCJ1cGRhdGVkT3JkZXIiLCJ0aWNrZXRzX3BhZ2VfbGFzdCIsIm1vIiwiX3RpY2tldHNSZWZ1bmRSZXF1ZXN0IiwidXBkYXRlZFRpY2tldHMiLCJ0cnIiLCJ0aWNrZXREYXRhIiwibmV3T3JkZXJzIiwibmV3VGlja2V0cyIsIm5ld1VzZXJUaWNrZXRzIiwiY29uZmlndXJlU3RvcmUiLCJwZXJzaXN0U3RvcmUiLCJwZXJzaXN0UmVkdWNlciIsIkZMVVNIIiwiUkVIWURSQVRFIiwiUEFVU0UiLCJQRVJTSVNUIiwiUFVSR0UiLCJSRUdJU1RFUiIsInN0b3JhZ2UiLCJjb21iaW5lUmVkdWNlcnMiLCJnZXRTdG9yZSIsImNsaWVudElkIiwibG9naW5VcmwiLCJyZWR1Y2VycyIsInN0b3JlIiwicmVkdWNlciIsIm1pZGRsZXdhcmUiLCJnZXREZWZhdWx0TWlkZGxld2FyZSIsInRodW5rIiwiZXh0cmFBcmd1bWVudCIsImltbXV0YWJsZUNoZWNrIiwic2VyaWFsaXphYmxlQ2hlY2siLCJpZ25vcmVkQWN0aW9ucyIsInVzZUluaXRTdG9yZSIsImNvbmZpZyIsInBlcnNpc3RvciIsImluaXRMb2dPdXQiLCJnZXRBY2Nlc3NUb2tlbiIsIlNlbnRyeSIsImdldEFjY2Vzc1Rva2VuTW9jayIsIkVycm9yIiwiY2FwdHVyZUV4Y2VwdGlvbiIsIkxBU1RfSE9VUl9PRl8yNF9IT1VSIiwiTEFTVF9NSU5VVEVfT0ZfSE9VUiIsIk9ORV9EQVkiLCJTVEFUVVNfUEVORElORyIsIlNUQVRVU19FUlJPUiIsIlNUQVRVU19QUk9DRVNTSU5HIiwiU1RBVFVTX1JFRlVORF9QRU5ESU5HIiwiU1RBVFVTX1JFRlVORF9BUFBST1ZFRCIsIlNUQVRVU19SRUZVTkRfUkVKRUNURUQiLCJTVEFUVVNfUkVGVU5EX1BFTkRJTkdfTEMiLCJTVEFUVVNfUkVGVU5EX0FQUFJPVkVEX0xDIiwiU1RBVFVTX1JFRlVORF9SRUpFQ1RFRF9MQyIsIkpFU1RfVElNRU9VVF9JTl9NSUxMSVNFQyIsIk9ORV9JVEVNIiwiRklWRV9JVEVNIiwiU0lYX0lURU0iLCJsb2NhbGUiLCJkZWZhdWx0T3B0aW9ucyIsIm1pbmltdW1GcmFjdGlvbkRpZ2l0cyIsIm1heGltdW1GcmFjdGlvbkRpZ2l0cyIsImZvcm1hdHRlciIsIkludGwiLCJOdW1iZXJGb3JtYXQiLCJkYXRldGltZSIsInRpbWVab25lIiwidHoiLCJ1bml4IiwiYW1vdW50IiwicHVyY2hhc2VUaWNrZXRUb3RhbCIsImN1cnJlbmN5T2JqZWN0IiwidGlja2V0c19leGNlcnB0X2J5X3RpY2tldF90eXBlIiwidGlja2V0VHlwZSIsInR0IiwidGlja2V0X3R5cGVfaWQiLCJwdXJjaGFzZVRvdGFsIiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiZ2V0T3JkZXJUaWNrZXRzIiwiX29yZGVycyQiLCJvcmRlcnMiLCJnZXRFcG9jaExvd2VyVXBwZXJJblNlY29uZHMiLCJ0cyIsInNldEhvdXJzIiwiZGVmYXVsdEN1cnJlbnRUaW1lIiwicm91bmQiLCJEYXRlIiwiZ2V0Tm93IiwidGltZXJTdGF0ZSIsIm5vd1V0YyIsImN1cnJlbnRQYWdlIiwiY2hlY2tTdW1taXRQYXN0IiwicmVhc3NpZ25fZGF0ZSIsInJlYXNzaWduX3RpY2tldF90aWxsX2RhdGUiLCJlbmRfZGF0ZSIsImNoZWNrU3VtbWl0U3RhcnRlZCIsInN0YXJ0X2RhdGUiLCJnZXRTdW1taXREYXlzRGlmZiIsInN0YXJ0RGF5IiwidGltZV96b25lX2lkIiwiZW5kRGF5IiwiZGF5cyIsImRpZmYiLCJmb3JtYXRTdGFydERhdGUiLCJmb3JtYXRFbmREYXRlIiwieWVhciIsIm1vbnRoIiwic3RhcnREYXRlIiwiZW5kRGF0ZSIsImdldFN1bW1pdExvY2F0aW9uIiwiX3N1bW1pdCRsb2NhdGlvbnMiLCJsb2NhdGlvbiIsImxvY2F0aW9ucyIsImwiLCJjbGFzc19uYW1lIiwiaXNfbWFpbiIsImNpdHkiLCJjb3VudHJ5IiwidXNlU3VtbWl0RGV0YWlscyIsIl9zdW1taXQkdGltZV96b25lIiwiX3N1bW1pdCR0aW1lX3pvbmUyIiwiZm9ybWF0dGVkRGF0ZSIsImZvcm1hdHRlZFJlYXNzaWduRGF0ZSIsInRpbWVfem9uZSIsImRheXNVbnRpbFJlYXNzaWduRGVhZGxpbmUiLCJpc1Bhc3QiLCJpc1N0YXJ0ZWQiLCJzdGF0dXNEYXRhIiwiZ2V0VGlja2V0U3RhdHVzS2V5IiwiZ2V0VGlja2V0U3RhdHVzRGF0YSIsImlzU3VtbWl0UGFzdCIsImdldFRpY2tldFJvbGUiLCJmZWF0dXJlIiwiZ2V0VGlja2V0VHlwZSIsImZpbmFsX2Ftb3VudCIsIm5ldF9zZWxsaW5nX2Nvc3QiLCJyciIsImdldFJlZnVuZGVkUmVxdWVzdGVkVGlja2V0cyIsIl90aWNrZXQkcmVmdW5kX3JlcXVlczIiLCJhbGxUaWNrZXRzIiwiX3RpY2tldCRyZWZ1bmRfcmVxdWVzMyIsIl90aWNrZXQkcmVmdW5kX3JlcXVlczQiLCJfdGlja2V0JHJlZnVuZF9yZXF1ZXM1IiwiZ2V0UmVmdW5kZWRSZXF1ZXN0ZWRTdGF0dXMiLCJfdGlja2V0JHJlZnVuZF9yZXF1ZXM2IiwiX3RpY2tldCRyZWZ1bmRfcmVxdWVzNyIsIl90aWNrZXQkcmVmdW5kX3JlcXVlczgiLCJnZXRUeXBlVmFsaWRhdGlvbiIsInNjaGVtYSIsIm9uZU9mIiwib2YiLCJwYXJzZVN1YlF1ZXN0aW9uQW5zd2VyIiwib25seVJlbGV2YW50Iiwic3ViUXVlc3Rpb25TbHVnIiwic3ViQW5zd2VyIiwibWF0Y2giLCJpbmNsdWRlQXR0ZW5kZWVJbmZvIiwiaW5jbHVkZURpc2NsYWltZXIiLCJidWlsZFN1YlF1ZXN0aW9uVmFsaWRhdGlvblNjaGVtYSIsIl9zdWJRdWVzdGlvbiRzdWJfcXVlcyIsInN1YlF1ZXN0aW9uIiwibnVsbGFibGUiLCJ3aGVuIiwiaXMiLCJxdWVzdGlvbkFucyIsImFuc1ZhbHVlTWF0Y2giLCJzY2giLCJzdWJSdWxlIiwiZGlzY2xhaW1lck1hbmRhdG9yeSIsImxhenkiLCJ0eXBlRXJyb3IiLCJfdCRvd25lciIsIl90JG93bmVyMiIsIl90aWNrZXQkb3duZXI2IiwidG1wVGlja2V0IiwiUGVyc2lzdEdhdGUiLCJNeU9yZGVyc015VGlja2V0c1dpZGdldCIsInN1cHBvcnRFbWFpbCIsImhhbmRsZUJlZm9yZUxpZnQiLCJVUkxTZWFyY2hQYXJhbXMiLCJzZWFyY2giLCJmbHVzaCIsImhhcyIsIm9uQmVmb3JlTGlmdCJdLCJzb3VyY2VSb290IjoiIn0=
|